<?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>72626</bug_id>
          
          <creation_ts>2011-11-17 09:50:17 -0800</creation_ts>
          <short_desc>[GTK] Integrate build-gtkdoc into build-webkit and make</short_desc>
          <delta_ts>2011-11-25 12:28:30 -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>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>72627</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Martin Robinson">mrobinson</reporter>
          <assigned_to name="Martin Robinson">mrobinson</assigned_to>
          <cc>cgarcia</cc>
    
    <cc>gustavo</cc>
    
    <cc>pnormand</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>504931</commentid>
    <comment_count>0</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-11-17 09:50:17 -0800</bug_when>
    <thetext>build-gtkdoc is currently for WebKit1 only and does not integrate into build-webkit and &quot;make docs&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504939</commentid>
    <comment_count>1</comment_count>
      <attachid>115609</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-11-17 09:55:21 -0800</bug_when>
    <thetext>Created attachment 115609
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505445</commentid>
    <comment_count>2</comment_count>
      <attachid>115729</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-11-17 20:12:49 -0800</bug_when>
    <thetext>Created attachment 115729
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505447</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-17 20:16:24 -0800</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505451</commentid>
    <comment_count>4</comment_count>
      <attachid>115729</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2011-11-17 20:24:00 -0800</bug_when>
    <thetext>Comment on attachment 115729
Patch

Attachment 115729 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/10508494</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505452</commentid>
    <comment_count>5</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-11-17 20:31:37 -0800</bug_when>
    <thetext>This patch fails to build because the bots need a clean build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505565</commentid>
    <comment_count>6</comment_count>
      <attachid>115729</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-11-18 00:24:54 -0800</bug_when>
    <thetext>Comment on attachment 115729
Patch

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

Does this unconditionally run gtk-doc without generating the html for every build?

&gt; Source/WebCore/GNUmakefile.list.am:-2379
&gt; -	Source/WebCore/page/MouseLockable.h \

This looks unrelated, is it a distcheck build fix?

&gt; Source/WebCore/GNUmakefile.list.am:2404
&gt; +	Source/WebCore/page/PointerLock.h \

Ditto.

&gt; Source/WebKit/gtk/docs/GNUmakefile.am:-105
&gt; -include $(top_srcdir)/Source/WebKit/gtk/GNUmakefile.gtk-doc.am

I guess you should remove GNUmakefile.gtk-doc.am too.

&gt; Tools/GNUmakefile.am:235
&gt; +docs: $(BUILT_SOURCES) \
&gt; +	libwebkitgtk-@WEBKITGTK_API_MAJOR_VERSION@.@WEBKITGTK_API_MINOR_VERSION@.la \
&gt; +	libwebkit2gtk-@WEBKITGTK_API_MAJOR_VERSION@.@WEBKITGTK_API_MINOR_VERSION@.la
&gt; +	$(srcdir)/Tools/gtk/generate-gtkdoc
&gt; +

Does this only happen when using make docs? We should generate the docs when running make distcheck to include the html docs in the tarball, so I guess we should add doc-dist-hook. And also rules to clean it up. We still have GTK_DOC_CHECK macro in configure, which adds --enable-gtk-doc, --enable-gtk-doc-html and --enable-gtk-doc-pdf, I think we should respect them, at least --enable-gtk-doc, because everybody expects it to work in a project using gtk-doc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505590</commentid>
    <comment_count>7</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-11-18 01:05:47 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 115729 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=115729&amp;action=review
&gt; 
&gt; Does this unconditionally run gtk-doc without generating the html for every build?

This happens for builds run via build-webkit. This is so that the EWS will fail if a patch introduces documentation warnings.

&gt; 
&gt; &gt; Source/WebCore/GNUmakefile.list.am:-2379
&gt; &gt; -	Source/WebCore/page/MouseLockable.h \
&gt; 
&gt; This looks unrelated, is it a distcheck build fix?
&gt; 
&gt; &gt; Source/WebCore/GNUmakefile.list.am:2404
&gt; &gt; +	Source/WebCore/page/PointerLock.h \
&gt; 
&gt; Ditto.

Oops. webkit-patch snuck those in. These were make distcheck fixes I needed to test &apos;make dist&apos;.
&gt; 
&gt; &gt; Source/WebKit/gtk/docs/GNUmakefile.am:-105
&gt; &gt; -include $(top_srcdir)/Source/WebKit/gtk/GNUmakefile.gtk-doc.am
&gt; 
&gt; I guess you should remove GNUmakefile.gtk-doc.am too.

Yep!

&gt; 
&gt; &gt; Tools/GNUmakefile.am:235
&gt; &gt; +docs: $(BUILT_SOURCES) \
&gt; &gt; +	libwebkitgtk-@WEBKITGTK_API_MAJOR_VERSION@.@WEBKITGTK_API_MINOR_VERSION@.la \
&gt; &gt; +	libwebkit2gtk-@WEBKITGTK_API_MAJOR_VERSION@.@WEBKITGTK_API_MINOR_VERSION@.la
&gt; &gt; +	$(srcdir)/Tools/gtk/generate-gtkdoc
&gt; &gt; +
&gt; 
&gt; Does this only happen when using make docs? We should generate the docs when running make distcheck to include the html docs in the tarball, so I guess we should add doc-dist-hook. And also rules to clean it up. We still have GTK_DOC_CHECK macro in configure, which adds --enable-gtk-doc, --enable-gtk-doc-html and --enable-gtk-doc-pdf, I think we should respect them, at least --enable-gtk-doc, because everybody expects it to work in a project using gtk-doc.

After talking with Carlos via IRC, it seems that adding --enable-gtk-doc is quite useful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505906</commentid>
    <comment_count>8</comment_count>
      <attachid>115835</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-11-18 10:49:21 -0800</bug_when>
    <thetext>Created attachment 115835
Properly handle --enable-gtk-doc</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505917</commentid>
    <comment_count>9</comment_count>
      <attachid>115835</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2011-11-18 11:00:34 -0800</bug_when>
    <thetext>Comment on attachment 115835
Properly handle --enable-gtk-doc

Attachment 115835 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/10519167</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508463</commentid>
    <comment_count>10</comment_count>
      <attachid>116444</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-11-23 15:33:33 -0800</bug_when>
    <thetext>Created attachment 116444
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508693</commentid>
    <comment_count>11</comment_count>
      <attachid>116493</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-11-24 03:09:18 -0800</bug_when>
    <thetext>Created attachment 116493
Updated patch based on Carlos&apos; comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508717</commentid>
    <comment_count>12</comment_count>
      <attachid>116498</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-11-24 04:45:59 -0800</bug_when>
    <thetext>Created attachment 116498
Fix a couple bugs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508729</commentid>
    <comment_count>13</comment_count>
      <attachid>116498</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2011-11-24 05:31:33 -0800</bug_when>
    <thetext>Comment on attachment 116498
Fix a couple bugs

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

Nice patch! r- mostly because of the webkit-build-directory issue

&gt; Tools/GNUmakefile.am:260
&gt; +	@rm -rf Documentation/webkitgtk Documentation/webkit2gtk
&gt; +	-@rmdir Documentation

Can that be replaced with rm -rf Documentation?

&gt; Tools/gtk/generate-gtkdoc:58
&gt; +    process = subprocess.Popen([&apos;perl&apos;, script_path(&apos;webkit-build-directory&apos;), &apos;--configuration&apos;, &apos;gtk&apos;],
&gt; +                               stdout=subprocess.PIPE)

This will always return the path to a Release build because we never call set-webkit-configuration :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508793</commentid>
    <comment_count>14</comment_count>
      <attachid>116516</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-11-24 08:14:59 -0800</bug_when>
    <thetext>Created attachment 116516
No longer use webkit-build-directory, work with _build, move utilities to common.py</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508813</commentid>
    <comment_count>15</comment_count>
      <attachid>116519</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-11-24 09:03:48 -0800</bug_when>
    <thetext>Created attachment 116519
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508814</commentid>
    <comment_count>16</comment_count>
      <attachid>116520</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-11-24 09:18:13 -0800</bug_when>
    <thetext>Created attachment 116520
Correct patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508818</commentid>
    <comment_count>17</comment_count>
      <attachid>116519</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2011-11-24 09:39:05 -0800</bug_when>
    <thetext>Comment on attachment 116519
Patch

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508819</commentid>
    <comment_count>18</comment_count>
      <attachid>116519</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2011-11-24 09:39:46 -0800</bug_when>
    <thetext>Comment on attachment 116519
Patch

Oops</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508821</commentid>
    <comment_count>19</comment_count>
      <attachid>116520</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2011-11-24 09:43:57 -0800</bug_when>
    <thetext>Comment on attachment 116520
Correct patch

Thanks :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509056</commentid>
    <comment_count>20</comment_count>
      <attachid>116520</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-11-25 02:37:56 -0800</bug_when>
    <thetext>Comment on attachment 116520
Correct patch

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

&gt; Tools/gtk/common.py:57
&gt; +    build_dir = top_level_path()

This should be build_dir = top_level_path(&apos;WebKitBuild&apos;) for the cases where webkit-build is not used and there isn&apos;t Release nor Debug dirs

&gt; Tools/gtk/common.py:62
&gt; +    sys.exit(1)

There&apos;s no import sys in this file, this will fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509178</commentid>
    <comment_count>21</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-11-25 08:19:58 -0800</bug_when>
    <thetext>Committed r101174: &lt;http://trac.webkit.org/changeset/101174&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509247</commentid>
    <comment_count>22</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-11-25 12:28:30 -0800</bug_when>
    <thetext>It appears that this patch broke GTK build:
http://build.webkit.org/builders/GTK%20Linux%2064-bit%20Debug/builds/27884

http://build.webkit.org/builders/GTK%20Linux%2064-bit%20Debug/builds/27884/steps/compile-webkit/logs/stdio
make: *** No rule to make target `../../Source/WebKit/gtk/docs/GNUmakefile.am&apos;, needed by `../../GNUmakefile.in&apos;.  Stop.

Failed to build WebKit using &apos;make&apos;!
program finished with exit code 2
elapsedTime=6.273611</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115609</attachid>
            <date>2011-11-17 09:55:21 -0800</date>
            <delta_ts>2011-11-17 09:56:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72626-20111117095520.patch</filename>
            <type>text/plain</type>
            <size>7591</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwMDgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0
ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggNmYwZGQ1MTIz
OGEzMmE0NmE0ODFhZGJkYTM3ODIzNjU4MDYwYmYwNC4uMGNhYjFkMDMyZjdmNmZmN2NmZjU4NDU0
ZjMxMzc0Njg4YTkxZDg5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEx
LTExLTE3ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAg
ICBbR1RLXSBJbnRlZ3JhdGUgYnVpbGQtZ3RrZG9jIGludG8gYnVpbGQtd2Via2l0IGFuZCBtYWtl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjYyNgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2Via2l0
L3dlYmtpdGRvd25sb2FkLmg6IEFkZCBtaXNzaW5nIGVudW0gZG9jdW1lbnRhdGlvbi4KKyAgICAg
ICAgKiB3ZWJraXQvd2Via2l0ZXJyb3IuaDogRGl0dG8uCisgICAgICAgICogd2Via2l0L3dlYmtp
dHdlYnZpZXcuaDogRGl0dG8uCisKIDIwMTEtMTEtMDkgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9y
bWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdW0RSVF0gd2luZG93IGludGVybmFscyBv
YmplY3QgaXMgbm90IHJlc2V0IGFmdGVyIGVhY2ggdGVzdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9ndGsvd2Via2l0L3dlYmtpdGRvd25sb2FkLmggYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0ZG93bmxvYWQuaAppbmRleCBhNzMyYTU3YzAxOGYyOGVmYmFlNzg0ZmU1OTdjYTk4
N2M0ZWNlM2EwLi44MjBlMDgzMzVjMjI0ZjM4OGJiNmJjMTJmZDdiZTI2MzQzZGRlMTM4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0ZG93bmxvYWQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0ZG93bmxvYWQuaApAQCAtMzQsNiArMzQsMTYg
QEAgR19CRUdJTl9ERUNMUwogI2RlZmluZSBXRUJLSVRfSVNfRE9XTkxPQURfQ0xBU1Moa2xhc3Mp
IChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfRE9XTkxPQUQp
KQogI2RlZmluZSBXRUJLSVRfRE9XTkxPQURfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5TVEFO
Q0VfR0VUX0NMQVNTKChvYmopLCAgV0VCS0lUX1RZUEVfRE9XTkxPQUQsIFdlYktpdERvd25sb2Fk
Q2xhc3MpKQogCisvKioKKyAqIFdlYktpdERvd25sb2FkU3RhdHVzOgorICogQFdFQktJVF9ET1dO
TE9BRF9TVEFUVVNfRVJST1I6IFRoZSBkb3dubG9hZCBmYWlsZWQgYmVjYXVzZSBvZiBhbiBlcnJv
ciBvdGhlciB0aGFuIHVzZXIgY2FuY2VsbGF0aW9uLgorICogQFdFQktJVF9ET1dOTE9BRF9TVEFU
VVNfQ1JFQVRFRDogVGhlIGRvd25sb2FkIGhhcyBub3Qgc3RhcnRlZCB5ZXQuCisgKiBAV0VCS0lU
X0RPV05MT0FEX1NUQVRVU19TVEFSVEVEOiBUaGUgZG93bmxvYWQgaGFzIHN0YXJ0ZWQsIGJ1dCBo
YXMgbm90IGNvbXBsZXRlZCB5ZXQuCisgKiBAV0VCS0lUX0RPV05MT0FEX1NUQVRVU19DQU5DRUxM
RUQ6IFRoZSB1c2VyIGNhbmNlbGVkIHRoZSBkb3dubG9hZC4KKyAqIEBXRUJLSVRfRE9XTkxPQURf
U1RBVFVTX0ZJTklTSEVEOiBUaGUgZG93bmxvYWQgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS4KKyAq
CisgKiBFbnVtIHZhbHVlcyB1c2VkIHRvIGRlbm90ZSB0aGUgdmFyaW91cyBzdGF0ZXMgb2YgYSBk
b3dubG9hZC4KKyAqKi8KIHR5cGVkZWYgZW51bSB7CiAgICAgV0VCS0lUX0RPV05MT0FEX1NUQVRV
U19FUlJPUiA9IC0xLAogICAgIFdFQktJVF9ET1dOTE9BRF9TVEFUVVNfQ1JFQVRFRCA9IDAsCkBA
IC00Miw2ICs1MiwxNCBAQCB0eXBlZGVmIGVudW0gewogICAgIFdFQktJVF9ET1dOTE9BRF9TVEFU
VVNfRklOSVNIRUQKIH0gV2ViS2l0RG93bmxvYWRTdGF0dXM7CiAKKy8qKgorICogV2ViS2l0RG93
bmxvYWRFcnJvcjoKKyAqIEBXRUJLSVRfRE9XTkxPQURfRVJST1JfQ0FOQ0VMTEVEX0JZX1VTRVI6
IFRoZSBkb3dubG9hZCBmYWlsZWQgZHVlIHRvIHVzZXIgY2FuY2VsbGF0aW9uLgorICogQFdFQktJ
VF9ET1dOTE9BRF9FUlJPUl9ERVNUSU5BVElPTjogVGhlIGRvd25sb2FkIGZhaWxlZCBkdWUgdG8g
ZGlzayB3cml0ZSBmYWlsdXJlLgorICogQFdFQktJVF9ET1dOTE9BRF9FUlJPUl9ORVRXT1JLOiBU
aGUgZG93bmxvYWQgZmFpbGVkIGR1ZSB0byBhIG5ldHdvcmsgZXJyb3IuCisgKgorICogRW51bSB2
YWx1ZXMgdXNlZCB0byBkZW5vdGUgdGhlIHZhcmlvdXMgZG93bmxvYWQgZXJyb3JzLgorICoqLwog
dHlwZWRlZiBlbnVtIHsKICAgICBXRUJLSVRfRE9XTkxPQURfRVJST1JfQ0FOQ0VMTEVEX0JZX1VT
RVIsCiAgICAgV0VCS0lUX0RPV05MT0FEX0VSUk9SX0RFU1RJTkFUSU9OLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGVycm9yLmggYi9Tb3VyY2UvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0ZXJyb3IuaAppbmRleCA4ZmVjOTQ5NjE4NDlmMDNiMDY4NDkwZTRkNjJm
MTBlMmIzMTUwNjUxLi40OGZjMmMzMWM1ZjlhN2VmZTVmNjVmOWQ1ZTNkN2E3Y2I0MDBiZDUzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0ZXJyb3IuaAorKysgYi9T
b3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0ZXJyb3IuaApAQCAtMzAsNiArMzAsMTggQEAg
R19CRUdJTl9ERUNMUwogI2RlZmluZSBXRUJLSVRfUE9MSUNZX0VSUk9SICAgICAgICAgd2Via2l0
X3BvbGljeV9lcnJvcl9xdWFyayAgKCkKICNkZWZpbmUgV0VCS0lUX1BMVUdJTl9FUlJPUiAgICAg
ICAgIHdlYmtpdF9wbHVnaW5fZXJyb3JfcXVhcmsgICgpCiAKKy8qIFRoZSBlbnVtIHZhbHVlcyBh
cmUgc3luY2hyb25pemVkIHdpdGggTWFjJ3MgV2ViS2l0IGVycm9yIHZhbHVlcy4gKi8KKworLyoq
CisgKiBXZWJLaXROZXR3b3JrRXJyb3I6CisgKiBAV0VCS0lUX05FVFdPUktfRVJST1JfRkFJTEVE
OiBHZW5lcmljIGxvYWQgZmFpbHVyZQorICogQFdFQktJVF9ORVRXT1JLX0VSUk9SX1RSQU5TUE9S
VDogTG9hZCBmYWlsdXJlIGR1ZSB0byB0cmFuc3BvcnQgZXJyb3IKKyAqIEBXRUJLSVRfTkVUV09S
S19FUlJPUl9VTktOT1dOX1BST1RPQ09MOiBMb2FkIGZhaWx1cmUgZHVlIHRvIHVua25vd24gcHJv
dG9jb2wKKyAqIEBXRUJLSVRfTkVUV09SS19FUlJPUl9DQU5DRUxMRUQ6IExvYWQgZmFpbHVyZSBk
dWUgdG8gY2FuY2VsbGF0aW9uCisgKiBAV0VCS0lUX05FVFdPUktfRVJST1JfRklMRV9ET0VTX05P
VF9FWElTVDogTG9hZCBmYWlsdXJlIGR1ZSB0byBtaXNzaW5nIGZpbGUKKyAqCisgKiBFbnVtIHZh
bHVlcyB1c2VkIHRvIGRlbm90ZSB0aGUgdmFyaW91cyBuZXR3b3JrIGVycm9ycy4KKyAqKi8KIHR5
cGVkZWYgZW51bSB7CiAgICAgV0VCS0lUX05FVFdPUktfRVJST1JfRkFJTEVEICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAzOTksCiAgICAgV0VCS0lUX05FVFdPUktfRVJST1JfVFJB
TlNQT1JUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAzMDAsCkBAIC0zOCw3ICs1MCwx
NiBAQCB0eXBlZGVmIGVudW0gewogICAgIFdFQktJVF9ORVRXT1JLX0VSUk9SX0ZJTEVfRE9FU19O
T1RfRVhJU1QgICAgICAgICAgICAgICAgICAgID0gMzAzLAogfSBXZWJLaXROZXR3b3JrRXJyb3I7
CiAKLS8qIFN5bmMnZCB3aXRoIE1hYydzIFdlYktpdCBFcnJvcnMgKi8KKy8qKgorICogV2ViS2l0
UG9saWN5RXJyb3I6CisgKiBAV0VCS0lUX1BPTElDWV9FUlJPUl9GQUlMRUQ6IEdlbmVyaWMgbG9h
ZCBmYWlsdXJlIGR1ZSB0byBwb2xpY3kgZXJyb3IKKyAqIEBXRUJLSVRfUE9MSUNZX0VSUk9SX0NB
Tk5PVF9TSE9XX01JTUVfVFlQRTogTG9hZCBmYWlsdXJlIGR1ZSB0byB1bnN1cHBvcnRlZCBtaW1l
IHR5cGUKKyAqIEBXRUJLSVRfUE9MSUNZX0VSUk9SX0NBTk5PVF9TSE9XX1VSTDogTG9hZCBmYWls
dXJlIGR1ZSB0byBVUkkgdGhhdCBjYW4gbm90IGJlIHNob3duCisgKiBAV0VCS0lUX1BPTElDWV9F
UlJPUl9GUkFNRV9MT0FEX0lOVEVSUlVQVEVEX0JZX1BPTElDWV9DSEFOR0U6IExvYWQgZmFpbHVy
ZSBkdWUgdG8gZnJhbWUgbG9hZCBpbnRlcnJ1cHRpb24gYnkgcG9saWN5IGNoYW5nZQorICogQFdF
QktJVF9QT0xJQ1lfRVJST1JfQ0FOTk9UX1VTRV9SRVNUUklDVEVEX1BPUlQ6IExvYWQgZmFpbHVy
ZSBkdWUgdG8gcG9ydCByZXN0cmljdGlvbgorICoKKyAqIEVudW0gdmFsdWVzIHVzZWQgdG8gZGVu
b3RlIHRoZSB2YXJpb3VzIHBvbGljeSBlcnJvcnMuCisgKiovCiB0eXBlZGVmIGVudW0gewogICAg
IFdFQktJVF9QT0xJQ1lfRVJST1JfRkFJTEVEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gMTk5LAogICAgIFdFQktJVF9QT0xJQ1lfRVJST1JfQ0FOTk9UX1NIT1dfTUlNRV9UWVBF
ICAgICAgICAgICAgICAgICAgID0gMTAwLApAQCAtNDcsNiArNjgsMTcgQEAgdHlwZWRlZiBlbnVt
IHsKICAgICBXRUJLSVRfUE9MSUNZX0VSUk9SX0NBTk5PVF9VU0VfUkVTVFJJQ1RFRF9QT1JUICAg
ICAgICAgICAgICA9IDEwMywKIH0gV2ViS2l0UG9saWN5RXJyb3I7CiAKKy8qKgorICogV2ViS2l0
UGx1Z2luRXJyb3I6CisgKiBAV0VCS0lUX1BMVUdJTl9FUlJPUl9GQUlMRUQ6IEdlbmVyaWMgcGx1
Z2luIGxvYWQgZmFpbHVyZQorICogQFdFQktJVF9QTFVHSU5fRVJST1JfQ0FOTk9UX0ZJTkRfUExV
R0lOOiBMb2FkIGZhaWx1cmUgZHVlIHRvIG1pc3NpbmcgcGx1Z2luCisgKiBAV0VCS0lUX1BMVUdJ
Tl9FUlJPUl9DQU5OT1RfTE9BRF9QTFVHSU46IExvYWQgZmFpbHVyZSBkdWUgdG8gaW5hYmlsaXR5
IHRvIGxvYWQgcGx1Z2luCisgKiBAV0VCS0lUX1BMVUdJTl9FUlJPUl9KQVZBX1VOQVZBSUxBQkxF
OiBMb2FkIGZhaWx1ZSBkdWUgdG8gbWlzc2luZyBKYXZhIHN1cHBvcnQgdGhhdCBpcyByZXF1aXJl
ZCB0byBsb2FkIHBsdWdpbgorICogQFdFQktJVF9QTFVHSU5fRVJST1JfQ09OTkVDVElPTl9DQU5D
RUxMRUQ6IExvYWQgZmFpbHVyZSBkdWUgdG8gY29ubmVjdGlvbiBjYW5jZWxsYXRpb24KKyAqIEBX
RUJLSVRfUExVR0lOX0VSUk9SX1dJTExfSEFORExFX0xPQUQ6IExvYWQgZmFpbHVyZSBzaW5jZSBw
bHVnaW4gaGFuZGxlcyB0aGUgbG9hZAorICoKKyAqIEVudW0gdmFsdWVzIHVzZWQgdG8gZGVub3Rl
IHRoZSB2YXJpb3VzIHBsdWdpbiBlcnJvcnMuCisgKiovCiB0eXBlZGVmIGVudW0gewogICAgIFdF
QktJVF9QTFVHSU5fRVJST1JfRkFJTEVEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gMjk5LAogICAgIFdFQktJVF9QTFVHSU5fRVJST1JfQ0FOTk9UX0ZJTkRfUExVR0lOICAgICAg
ICAgICAgICAgICAgICAgID0gMjAwLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHdlYnZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2
aWV3LmgKaW5kZXggODNjNzdlYTRjZjE3OWE5MjI0M2U0NjllOGI2ZDIzNWZjNTA1NGMxZi4uNjc4
ZTMyOTY2MjJlMmQwNTE2ZWM2Y2M2NWUyMDMxZmMyYjYyNGRkNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0d2Vidmlldy5oCkBAIC00NCwxMiArNDQsMzEgQEAgR19CRUdJTl9ERUNM
UwogCiB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViVmlld1ByaXZhdGUgV2ViS2l0V2ViVmlld1By
aXZhdGU7CiAKKy8qKgorICogV2ViS2l0TmF2aWdhdGlvblJlc3BvbnNlOgorICogQFdFQktJVF9O
QVZJR0FUSU9OX1JFU1BPTlNFX0FDQ0VQVDogSW5zdHJ1Y3QgV2ViS2l0IHRvIGFsbG93IHRoZSBu
YXZpZ2F0aW9uLgorICogQFdFQktJVF9OQVZJR0FUSU9OX1JFU1BPTlNFX0lHTk9SRTogSW5zdHJ1
Y3QgV2ViS2l0IHRvIGlnbm9yZSB0aGUgbmF2aWdhdGlvbi4KKyAqIEBXRUJLSVRfTkFWSUdBVElP
Tl9SRVNQT05TRV9ET1dOTE9BRDogSW5zdHJ1Y3QgV2ViS2l0IHRvIHN0YXJ0IGEgZG93bmxvYWQg
b2YgdGhlIGRlc3RpbmF0aW9uIGluc3RlYWQuCisgKgorICogRW51bSB2YWx1ZXMgdXNlZCB0byBk
ZW5vdGUgdGhlIHZhcmlvdXMgcmVzcG9uc2VzIHRvIGEgbmF2aWdhdGlvbiBwb2xpY3kgZGVjaXNp
b24uCisgKiovCiB0eXBlZGVmIGVudW0gewogICAgIFdFQktJVF9OQVZJR0FUSU9OX1JFU1BPTlNF
X0FDQ0VQVCwKICAgICBXRUJLSVRfTkFWSUdBVElPTl9SRVNQT05TRV9JR05PUkUsCiAgICAgV0VC
S0lUX05BVklHQVRJT05fUkVTUE9OU0VfRE9XTkxPQUQKIH0gV2ViS2l0TmF2aWdhdGlvblJlc3Bv
bnNlOwogCisvKioKKyAqIFdlYktpdFdlYlZpZXdUYXJnZXRJbmZvOgorICogQFdFQktJVF9XRUJf
VklFV19UQVJHRVRfSU5GT19IVE1MOiBSaWNoIG1hcmt1cCBkYXRhCisgKiBAV0VCS0lUX1dFQl9W
SUVXX1RBUkdFVF9JTkZPX1RFWFQ6IFRleHQgZGF0YQorICogQFdFQktJVF9XRUJfVklFV19UQVJH
RVRfSU5GT19JTUFHRTogSW1hZ2UgZGF0YQorICogQFdFQktJVF9XRUJfVklFV19UQVJHRVRfSU5G
T19VUklfTElTVDogVVJJIGxpc3QgZGF0YQorICogQFdFQktJVF9XRUJfVklFV19UQVJHRVRfSU5G
T19ORVRTQ0FQRV9VUkw6IEEgc2luZ2xlIFVSTCBpbiB0aGUgTmV0c2NhcGUgcHJvdG9jb2wKKyAq
CisgKiBFbnVtIHZhbHVlcyB1c2VkIHRvIGRlbm90ZSB0aGUgaW5mbyB2YWx1ZSBvZiB2YXJpb3Vz
IHNlbGVjdGlvbiB0eXBlcy4gVGhlc2UgY2FuIGJlIHVzZWQKKyAqIHRvIGludGVycHJldCB0aGUg
ZGF0YSBXZWJLaXRHVEsrIHB1Ymxpc2hlcyB2aWEgR3RrQ2xpcGJvYXJkIGFuZCBkcmFnLWFuZC1k
cm9wLgorICoqLwogdHlwZWRlZiBlbnVtCiB7CiAgICAgV0VCS0lUX1dFQl9WSUVXX1RBUkdFVF9J
TkZPX0hUTUwsCkBAIC01OSw2ICs3OCwxNyBAQCB0eXBlZGVmIGVudW0KICAgICBXRUJLSVRfV0VC
X1ZJRVdfVEFSR0VUX0lORk9fTkVUU0NBUEVfVVJMCiB9IFdlYktpdFdlYlZpZXdUYXJnZXRJbmZv
OwogCisvKioKKyAqIFdlYktpdFdlYlZpZXdWaWV3TW9kZToKKyAqIEBXRUJLSVRfV0VCX1ZJRVdf
VklFV19NT0RFX1dJTkRPV0VEOiBXaW5kb3dlZCB2aWV3IG1vZGUKKyAqIEBXRUJLSVRfV0VCX1ZJ
RVdfVklFV19NT0RFX0ZMT0FUSU5HOiBGbG9hdGluZyB2aWV3IG1vZGUKKyAqIEBXRUJLSVRfV0VC
X1ZJRVdfVklFV19NT0RFX0ZVTExTQ1JFRU46IEZ1bGxzY3JlZW4gdmlldyBtb2RlCisgKiBAV0VC
S0lUX1dFQl9WSUVXX1ZJRVdfTU9ERV9NQVhJTUlaRUQ6IE1heGltaXplZCB2aWV3IG1vZGUKKyAq
IEBXRUJLSVRfV0VCX1ZJRVdfVklFV19NT0RFX01JTklNSVpFRDogTWluaW1pemVkIHZpZXcgbW9k
ZQorICoKKyAqIEVudW0gdmFsdWVzIHVzZWQgdG8gZGVub3RlIHRoZSB2YXJpb3VzIHR5cGVzIG9m
IHZpZXcgbW9kZXMuIFNlZSB0aGUKKyAqICNXZWJLaXRXZWJWaWV3OnZpZXctbW9kZSBwcm9wZXJ0
eS4KKyAqKi8KIHR5cGVkZWYgZW51bQogewogICAgIFdFQktJVF9XRUJfVklFV19WSUVXX01PREVf
V0lORE9XRUQsCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115729</attachid>
            <date>2011-11-17 20:12:49 -0800</date>
            <delta_ts>2011-11-18 10:49:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72626-20111117201248.patch</filename>
            <type>text/plain</type>
            <size>54166</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwNjQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0
ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggY2YzNzkxNjUy
MTEwZmNhNTMwMDZjZTc1ZTZlYjU0ZmI5NDljZTEwMC4uYmYzNjYzYjZkNDE3Mzg5NzQ5MTA4OTc0
YWFkMGY0NjZiNGJjYjNlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE1IEBACiAyMDEx
LTExLTE3ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAorICAgICAg
ICBbR1RLXSBJbnRlZ3JhdGUgYnVpbGQtZ3RrZG9jIGludG8gYnVpbGQtd2Via2l0IGFuZCBtYWtl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjYyNgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZG9jcy9H
TlVtYWtlZmlsZS5hbTogUmVtb3ZlZC4KKyAgICAgICAgKiBkb2NzL3ZlcnNpb24ueG1sLmluOiBS
ZW1vdmVkLgorCisyMDExLTExLTE3ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlh
LmNvbT4KKwogICAgICAgICBbR1RLXSBSZW1vdmUgdGhlIGxhc3QgcmVtYWluaW5nIFdlYktpdDEg
Z3RrZG9jIHdhcm5pbmdzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03MjYyNwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYTI0NmU3ZDhlMmY0ZGM2NDY1ZDgzMDljYWNk
Nzk4YmY0YmI3YjM1My4uYjRkODJhNzViODVjZjk5ZDRlNzIzNjE3OWJkZDkwZmQ5Y2I4NmIyYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDExLTExLTE3ICBNYXJ0aW4gUm9iaW5zb24g
IDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBJbnRlZ3JhdGUgYnVpbGQt
Z3RrZG9jIGludG8gYnVpbGQtd2Via2l0IGFuZCBtYWtlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjYyNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06IFJlbW92ZWQgcmVmZXJl
bmNlcyB0byBidWlsZC1ndGtkb2MgYW5kIGd0a2RvYy5weS4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2d0ay9kb2NzL2J1aWxkLWd0a2RvYzogUmVtb3ZlZC4KKwogMjAxMS0xMS0xNyAgQWxleGlz
IE1lbmFyZCAgPGFsZXhpcy5tZW5hcmRAb3BlbmJvc3NhLm9yZz4KIAogICAgICAgICBbUXRdW1dL
Ml0gRG9uJ3QgZXhwb3J0IHRoZSBwcml2YXRlIFFRdWlja1ZpZXcuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbQppbmRleCA1YjQ0MTg1M2ZmN2ZmZTViZGVmMjI2ZDIxMzY0MjFhMmU0NGJlYzNm
Li5jZDY5MzgyODA2M2FlMTdlNTlhMmE3MTM3ODNhNzQ0ODA3MmJiZjU1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0KQEAgLTIzNzYsNyArMjM3Niw2IEBAIHdlYmNvcmVfc291cmNlcyAr
PSBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlJbmZvLmggXAogCVNvdXJjZS9XZWJDb3Jl
L3BhZ2UvTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cy5jcHAgXAogCVNvdXJjZS9XZWJDb3Jl
L3BhZ2UvTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cy5oIFwKLQlTb3VyY2UvV2ViQ29yZS9w
YWdlL01vdXNlTG9ja2FibGUuaCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3Bw
IFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9w
YWdlL05hdmlnYXRvckJhc2UuY3BwIFwKQEAgLTI0MDIsNiArMjQwMSw3IEBAIHdlYmNvcmVfc291
cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU5hdmlnYXRpb24uaCBc
CiAJU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVRpbWluZy5jcHAgXAogCVNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VUaW1pbmcuaCBcCisJU291cmNlL1dlYkNvcmUvcGFnZS9Q
b2ludGVyTG9jay5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL1Bvc2l0aW9uQ2FsbGJhY2suaCBc
CiAJU291cmNlL1dlYkNvcmUvcGFnZS9Qb3NpdGlvbkVycm9yLmggXAogCVNvdXJjZS9XZWJDb3Jl
L3BhZ2UvUG9zaXRpb25FcnJvckNhbGxiYWNrLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9ndGsvZG9jcy9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQvZ3RrL2RvY3MvR05VbWFr
ZWZpbGUuYW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4YzRiMjEyYmFiNWFlYmRk
MjkwYWFlMzdhMjQzZjI1NWI5YjQzYjQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvZG9jcy9HTlVtYWtlZmlsZS5hbQorKysg
L2Rldi9udWxsCkBAIC0xLDEyOCArMCwwIEBACi0jIyBQcm9jZXNzIHRoaXMgZmlsZSB3aXRoIGF1
dG9tYWtlIHRvIHByb2R1Y2UgR05VbWFrZWZpbGUuaW4KLQotIyBUaGlzIGlzIGEgYmxhbmsgTWFr
ZWZpbGUuYW0gZm9yIHVzaW5nIGd0ay1kb2MuCi0jIENvcHkgdGhpcyB0byB5b3VyIHByb2plY3Qn
cyBBUEkgZG9jcyBkaXJlY3RvcnkgYW5kIG1vZGlmeSB0aGUgdmFyaWFibGVzIHRvCi0jIHN1aXQg
eW91ciBwcm9qZWN0LiBTZWUgdGhlIEdUSysgTWFrZWZpbGVzIGluIGd0aysvZG9jcy9yZWZlcmVu
Y2UgZm9yIGV4YW1wbGVzCi0jIG9mIHVzaW5nIHRoZSB2YXJpb3VzIG9wdGlvbnMuCi0KLSMgVGhl
IG5hbWUgb2YgdGhlIG1vZHVsZSwgZS5nLiAnZ2xpYicuCi1ET0NfTU9EVUxFPXdlYmtpdGd0awot
Ci0jIFRoZSB0b3AtbGV2ZWwgU0dNTCBmaWxlLiBZb3UgY2FuIGNoYW5nZSB0aGlzIGlmIHlvdSB3
YW50IHRvLgotRE9DX01BSU5fU0dNTF9GSUxFPSQoRE9DX01PRFVMRSktZG9jcy5zZ21sCi0KLSMg
VGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBzb3VyY2UgY29kZS4gUmVsYXRpdmUgdG8gJChz
cmNkaXIpLgotIyBndGstZG9jIHdpbGwgc2VhcmNoIGFsbCAuYyAmIC5oIGZpbGVzIGJlbmVhdGgg
aGVyZSBmb3IgaW5saW5lIGNvbW1lbnRzCi0jIGRvY3VtZW50aW5nIHRoZSBmdW5jdGlvbnMgYW5k
IG1hY3Jvcy4KLSMgZS5nLiBET0NfU09VUkNFX0RJUj0uLi8uLi8uLi9ndGsKLURPQ19TT1VSQ0Vf
RElSPSQodG9wX3NyY2RpcikvU291cmNlL1dlYktpdC9ndGsvd2Via2l0Ci0KLSMgRXh0cmEgb3B0
aW9ucyB0byBwYXNzIHRvIGd0a2RvYy1zY2FuZ29iai4gTm90IG5vcm1hbGx5IG5lZWRlZC4KLVND
QU5HT0JKX09QVElPTlM9Ii0tdHlwZS1pbml0LWZ1bmM9Z190eXBlX2luaXQoKSIKLQotIyBFeHRy
YSBvcHRpb25zIHRvIHN1cHBseSB0byBndGtkb2Mtc2Nhbi4KLSMgZS5nLiBTQ0FOX09QVElPTlM9
LS1kZXByZWNhdGVkLWd1YXJkcz0iR1RLX0RJU0FCTEVfREVQUkVDQVRFRCIKLVNDQU5fT1BUSU9O
Uz0tLWRlcHJlY2F0ZWQtZ3VhcmRzPSJXRUJLSVRfRElTQUJMRV9ERVBSRUNBVEVEIiAtLWlnbm9y
ZS1kZWNvcmF0b3JzPSJXRUJLSVRfQVBJIgotCi0jIEV4dHJhIG9wdGlvbnMgdG8gc3VwcGx5IHRv
IGd0a2RvYy1ta2RiLgotIyBlLmcuIE1LREJfT1BUSU9OUz0tLXNnbWwtbW9kZSAtLW91dHB1dC1m
b3JtYXQ9eG1sCi1NS0RCX09QVElPTlM9LS1zZ21sLW1vZGUgLS1vdXRwdXQtZm9ybWF0PXhtbCAt
LXNvdXJjZS1zdWZmaXhlcz1oLGMsY3BwCi0KLSMgRXh0cmEgb3B0aW9ucyB0byBzdXBwbHkgdG8g
Z3RrZG9jLW1rdG1wbAotIyBlLmcuIE1LVE1QTF9PUFRJT05TPS0tb25seS1zZWN0aW9uLXRtcGwK
LU1LVE1QTF9PUFRJT05TPQotCi0jIEV4dHJhIG9wdGlvbnMgdG8gc3VwcGx5IHRvIGd0a2RvYy1m
aXhyZWYuIE5vdCBub3JtYWxseSBuZWVkZWQuCi0jIGUuZy4gRklYWFJFRl9PUFRJT05TPS0tZXh0
cmEtZGlyPS4uL2dkay1waXhidWYvaHRtbCAtLWV4dHJhLWRpcj0uLi9nZGsvaHRtbAotRklYWFJF
Rl9PUFRJT05TPQotCi0jIFVzZWQgZm9yIGRlcGVuZGVuY2llcy4gVGhlIGRvY3Mgd2lsbCBiZSBy
ZWJ1aWx0IGlmIGFueSBvZiB0aGVzZSBjaGFuZ2UuCi0jIGUuZy4gSEZJTEVfR0xPQj0kKHRvcF9z
cmNkaXIpL2d0ay8qLmgKLSMgZS5nLiBDRklMRV9HTE9CPSQodG9wX3NyY2RpcikvZ3RrLyouYwot
SEZJTEVfR0xPQj0kKHRvcF9zcmNkaXIpL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC8qLmgKLUNG
SUxFX0dMT0I9JCh0b3Bfc3JjZGlyKS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvKi5jcHAKLQot
IyBIZWFkZXIgZmlsZXMgdG8gaWdub3JlIHdoZW4gc2Nhbm5pbmcuCi0jIGUuZy4gSUdOT1JFX0hG
SUxFUz1ndGtkZWJ1Zy5oIGd0a2ludGwuaAotSUdOT1JFX0hGSUxFUyA9IFwKLSAgIHdlYmtpdGRv
d25sb2FkcHJpdmF0ZS5oIFwKLSAgIHdlYmtpdGdlb2xvY2F0aW9ucG9saWN5ZGVjaXNpb25wcml2
YXRlLmggXAotICAgd2Via2l0Z2xvYmFsc3ByaXZhdGUuaCBcCi0gICB3ZWJraXRoaXR0ZXN0cmVz
dWx0cHJpdmF0ZS5oIFwKLSAgIHdlYmtpdG5ldHdvcmtyZXF1ZXN0cHJpdmF0ZS5oIFwKLSAgIHdl
YmtpdG5ldHdvcmtyZXNwb25zZXByaXZhdGUuaCBcCi0gICB3ZWJraXRzZWN1cml0eW9yaWdpbnBy
aXZhdGUuaCBcCi0gICB3ZWJraXR2aWV3cG9ydGF0dHJpYnV0ZXNwcml2YXRlLmggXAotICAgd2Vi
a2l0d2ViYmFja2ZvcndhcmRsaXN0cHJpdmF0ZS5oIFwKLSAgIHdlYmtpdHdlYmRhdGFzb3VyY2Vw
cml2YXRlLmggXAotICAgd2Via2l0d2ViZnJhbWVwcml2YXRlLmggXAotICAgd2Via2l0d2ViaGlz
dG9yeWl0ZW1wcml2YXRlLmggXAotICAgd2Via2l0d2ViaW5zcGVjdG9ycHJpdmF0ZS5oIFwKLSAg
IHdlYmtpdHdlYm5hdmlnYXRpb25hY3Rpb25wcml2YXRlLmggXAotICAgd2Via2l0d2VicGx1Z2lu
ZGF0YWJhc2Vwcml2YXRlLmggXAotICAgd2Via2l0d2VicGx1Z2lucHJpdmF0ZS5oIFwKLSAgIHdl
YmtpdHdlYnBvbGljeWRlY2lzaW9ucHJpdmF0ZS5oIFwKLSAgIHdlYmtpdHdlYnJlc291cmNlcHJp
dmF0ZS5oIFwKLSAgIHdlYmtpdHdlYnNldHRpbmdzcHJpdmF0ZS5oIFwKLSAgIHdlYmtpdHdlYnZp
ZXdwcml2YXRlLmggXAotICAgd2Via2l0d2Vid2luZG93ZmVhdHVyZXNwcml2YXRlLmgKLQotIyBJ
bWFnZXMgdG8gY29weSBpbnRvIEhUTUwgZGlyZWN0b3J5LgotIyBlLmcuIEhUTUxfSU1BR0VTPSQo
dG9wX3NyY2RpcikvZ3RrL3N0b2NrLWljb25zL3N0b2NrX2Fib3V0XzI0LnBuZwotSFRNTF9JTUFH
RVM9Ci0KLSMgQ0ZMQUdTIGFuZCBMREZMQUdTIGZvciBjb21waWxpbmcgZ3RrZG9jLXNjYW5nb2Jq
IHdpdGggeW91ciBsaWJyYXJ5LgotIyBPbmx5IG5lZWRlZCBpZiB5b3UgYXJlIHVzaW5nIGd0a2Rv
Yy1zY2FuZ29iaiB0byBkeW5hbWljYWxseSBxdWVyeSB3aWRnZXQKLSMgc2lnbmFscyBhbmQgcHJv
cGVydGllcy4KLSMgZS5nLiBJTkNMVURFUz0tSSQodG9wX3NyY2RpcikgLUkkKHRvcF9idWlsZGRp
cikgJChHVEtfREVCVUdfRkxBR1MpCi0jIGUuZy4gR1RLRE9DX0xJQlM9JCh0b3BfYnVpbGRkaXIp
L2d0ay8kKGd0a3RhcmdldGxpYikKLUdUS0RPQ19JTkNMVURFUz0gXAotCS1JJChhYnNfc3JjZGly
KS9Tb3VyY2UvV2ViS2l0L2d0ayBcCi0JLUkkKGFic19idWlsZGRpcikvU291cmNlL1dlYktpdC9n
dGsgXAotCSQoZ2xvYmFsX2NwcGZsYWdzKSBcCi0JJChnbG9iYWxfY2ZsYWdzKSBcCi0JLUkkKGFi
c19zcmNkaXIpL1NvdXJjZSBcCi0JLUkkKGFic19zcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZSBcCi0JLUkkKGFic19zcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Gb3J3YXJkaW5nSGVh
ZGVycyBcCi0JLUkkKGFic19zcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIgXAot
CS1JJChhYnNfc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmIFwKLQktSSQoYWJzX2J1
aWxkZGlyKS9EZXJpdmVkU291cmNlcyBcCi0JLUkkKGFic19zcmNkaXIpL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9jYWNoZSBcCi0JJChHTE9CQUxERVBTX0NGTEFHUykgXAot
CSQoQ0FJUk9fQ0ZMQUdTKSBcCi0JJChHTElCX0NGTEFHUykgXAotCSQoR1RLX0NGTEFHUykgXAot
CSQoTElCU09VUF9DRkxBR1MpCi0KLUdUS0RPQ19MSUJTPSBcCi0JJChhYnNfYnVpbGRkaXIpL2xp
YmphdmFzY3JpcHRjb3JlZ3RrLUBXRUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05ALkBXRUJLSVRH
VEtfQVBJX01JTk9SX1ZFUlNJT05ALmxhIFwKLQkkKGFic19idWlsZGRpcikvbGlid2Via2l0Z3Rr
LUBXRUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05ALkBXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJ
T05ALmxhIFwKLQkkKEdMSUJfTElCUykgXAotCSQoR1RLX0xJQlMpIFwKLQkkKExJQlNPVVBfTElC
UykKLQotIyBUaGlzIGluY2x1ZGVzIG91ciBjdXN0b20gZ3RrLWRvYyBtYWtlIHJ1bGVzLgotaW5j
bHVkZSAkKHRvcF9zcmNkaXIpL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmd0ay1kb2Mu
YW0KLQotIyBPdGhlciBmaWxlcyB0byBkaXN0cmlidXRlCi0jIGUuZy4gRVhUUkFfRElTVCArPSB2
ZXJzaW9uLnhtbC5pbgotRVhUUkFfRElTVCArPSBcCi0JJChXZWJLaXQpL2RvY3Mvd2Via2l0ZW52
aXJvbm1lbnQueG1sIFwKLQkkKFdlYktpdCkvZG9jcy93ZWJraXRndGstZG9jcy5zZ21sIFwKLQkk
KFdlYktpdCkvZG9jcy93ZWJraXRndGstc2VjdGlvbnMudHh0IFwKLQkkKFdlYktpdCkvZG9jcy92
ZXJzaW9uLnhtbC5pbgotCi0jIEZpbGVzIG5vdCB0byBkaXN0cmlidXRlCi0jIGZvciAtLXJlYnVp
bGQtdHlwZXMgaW4gJChTQ0FOX09QVElPTlMpLCBlLmcuICQoRE9DX01PRFVMRSkudHlwZXMKLSMg
Zm9yIC0tcmVidWlsZC1zZWN0aW9ucyBpbiAkKFNDQU5fT1BUSU9OUykgZS5nLiAkKERPQ19NT0RV
TEUpLXNlY3Rpb25zLnR4dAotRElTVENMRUFORklMRVMgKz0gXAotCSQodG9wX2J1aWxkZGlyKS9T
b3VyY2UvV2ViS2l0L2d0ay9kb2NzL3ZlcnNpb24ueG1sIFwKLQkkKHRvcF9idWlsZGRpcikvdG1w
bC1idWlsZC5zdGFtcCBcCi0JJCh0b3BfYnVpbGRkaXIpL2RvYy1zZXR1cC1idWlsZC5zdGFtcCBc
Ci0JJCh0b3BfYnVpbGRkaXIpL2h0bWwtYnVpbGQuc3RhbXAgXAotCSQodG9wX2J1aWxkZGlyKS9z
Y2FuLWJ1aWxkLnN0YW1wIFwKLQkkKHRvcF9idWlsZGRpcikvc2dtbC1idWlsZC5zdGFtcAotCi0j
IENvbW1lbnQgdGhpcyBvdXQgaWYgeW91IHdhbnQgeW91ciBkb2NzLXN0YXR1cyB0ZXN0ZWQgZHVy
aW5nICdtYWtlIGNoZWNrJwotI1RFU1RTID0gJChHVEtET0NfQ0hFQ0spCi0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZ3RrL2RvY3MvdmVyc2lvbi54bWwuaW4gYi9Tb3VyY2UvV2ViS2l0L2d0
ay9kb2NzL3ZlcnNpb24ueG1sLmluCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNzhi
ZGE5MzQyMmVjYmJjYThjYWY3NzJmN2IzN2Y4ZmUzYjI1NGU5Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL2RvY3MvdmVyc2lv
bi54bWwuaW4KKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1AVkVSU0lPTkAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYktpdDIvR05VbWFr
ZWZpbGUuYW0KaW5kZXggODg1YzMxZjAyMzVjZDVjMjczZTRlNjA5MDM5ZTJlNGM0ZTU0NWYxZi4u
NThlNGY1NzI0NzcyMDJmNGVlYmRiOTQzMjVkMWI4MTEzZWFjMWVkMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZp
bGUuYW0KQEAgLTE0MDEsOCArMTQwMSw2IEBAIFByb2dyYW1zX1dlYktpdFBsdWdpblByb2Nlc3Nf
Q1hYRkxBR1MgPSBcCiBlbmRpZgogCiBFWFRSQV9ESVNUICs9IFwKLQkkKFdlYktpdDIpL1VJUHJv
Y2Vzcy9BUEkvZ3RrL2RvY3MvYnVpbGQtZ3RrZG9jIFwKLQkkKFdlYktpdDIpL1VJUHJvY2Vzcy9B
UEkvZ3RrL2RvY3MvZ3RrZG9jLnB5IFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL2Rv
Y3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWwgXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsv
ZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dCBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJ
L2d0ay9kb2NzL3dlYmtpdDJndGsudHlwZXMgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvZG9jcy9idWlsZC1ndGtkb2MgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9kb2NzL2J1aWxkLWd0a2RvYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUK
aW5kZXggZjMwNGE3ZWRmNDI3ZTFmM2JhNDJlNTg2MmZhMzM1NDViMTFjYmVkOC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9kb2NzL2J1aWxkLWd0a2RvYworKysgL2Rldi9udWxsCkBAIC0xLDkzICsw
LDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIyAgQ29weXJpZ2h0IChDKSAyMDExIElnYWxp
YSBTLkwuCi0jCi0jICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCi0jICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0jICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSMgIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSMKLSMgIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAotIyAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKLSMgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0jICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgotIwotIyAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotIyAgTGljZW5zZSBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotIyAgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBN
QSAgMDIxMTAtMTMwMSAgVVNBCi0jCi0KLWltcG9ydCBnbG9iCi1pbXBvcnQgZ3RrZG9jCi1pbXBv
cnQgbG9nZ2luZwotaW1wb3J0IG9zLnBhdGgKLWltcG9ydCBzeXMKLQotZGVmIGNvbmZpZ3VyZV9s
b2dnaW5nKCk6Ci0gICAgbGV2ZWwgPSBsb2dnaW5nLkRFQlVHIGlmICctdicgaW4gc3lzLmFyZ3Yg
ZWxzZSBsb2dnaW5nLklORk8KLSAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigiZ3RrZG9j
IikKLSAgICBsb2dnZXIuc2V0TGV2ZWwobGV2ZWwpCi0gICAgaGFuZGxlciA9IGxvZ2dpbmcuU3Ry
ZWFtSGFuZGxlcigpCi0gICAgaGFuZGxlci5zZXRMZXZlbChsZXZlbCkKLSAgICBsb2dnZXIuYWRk
SGFuZGxlcihoYW5kbGVyKQotICAgIGlmIGxldmVsID09IGxvZ2dpbmcuREVCVUc6Ci0gICAgICAg
IGhhbmRsZXIuc2V0Rm9ybWF0dGVyKGxvZ2dpbmcuRm9ybWF0dGVyKCdbJShhc2N0aW1lKXNdICAl
KG1lc3NhZ2UpcycpKQotICAgIGVsc2U6Ci0gICAgICAgIGhhbmRsZXIuc2V0Rm9ybWF0dGVyKGxv
Z2dpbmcuRm9ybWF0dGVyKCclKG1lc3NhZ2UpcycpKQotCi1kZWYgZmluZF9idWlsZF9kaXJlY3Rv
cnkodG9wX2xldmVsKToKLSAgICBkZWYgaXNfdmFsaWRfYnVpbGRfZGlyZWN0b3J5KGJ1aWxkX2Rp
cik6Ci0gICAgICAgIHJldHVybiBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oYnVpbGRfZGly
LCAiLmxpYnMiKSkKLQotICAgIGlmIGlzX3ZhbGlkX2J1aWxkX2RpcmVjdG9yeSh0b3BfbGV2ZWwp
OgotICAgICAgICByZXR1cm4gdG9wX2xldmVsCi0KLSAgICBidWlsZF9kaXIgPSBvcy5wYXRoLmpv
aW4odG9wX2xldmVsLCAnV2ViS2l0QnVpbGQnKQotICAgIGlmIGlzX3ZhbGlkX2J1aWxkX2RpcmVj
dG9yeShidWlsZF9kaXIpOgotICAgICAgICByZXR1cm4gYnVpbGRfZGlyCi0KLSAgICBidWlsZF9k
aXIgPSBvcy5wYXRoLmpvaW4odG9wX2xldmVsLCAnV2ViS2l0QnVpbGQnLCAnUmVsZWFzZScpCi0g
ICAgaWYgaXNfdmFsaWRfYnVpbGRfZGlyZWN0b3J5KGJ1aWxkX2Rpcik6Ci0gICAgICAgIHJldHVy
biBidWlsZF9kaXIKLQotICAgIGJ1aWxkX2RpciA9IG9zLnBhdGguam9pbih0b3BfbGV2ZWwsICdX
ZWJLaXRCdWlsZCcsICdEZWJ1ZycpCi0gICAgaWYgaXNfdmFsaWRfYnVpbGRfZGlyZWN0b3J5KGJ1
aWxkX2Rpcik6Ci0gICAgICAgIHJldHVybiBidWlsZF9kaXIKLSAgICBwcmludCAiQ291bGQgbm90
IGRldGVybWluZSBidWlsZCBkaXJlY3RvcnkuIgotICAgIHN5cy5leGl0KDEpCi0KLWRvY19kaXIg
PSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSkKLXRvcF9sZXZlbCA9
IG9zLnBhdGgubm9ybXBhdGgob3MucGF0aC5qb2luKGRvY19kaXIsICcuLicsICcuLicsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLi4nLCAnLi4nLCAnLi4nLCAn
Li4nKSkKLWJ1aWxkX2RpciA9IGZpbmRfYnVpbGRfZGlyZWN0b3J5KHRvcF9sZXZlbCkKLQotb3V0
cHV0X2RpciA9IG9zLnBhdGguam9pbihidWlsZF9kaXIsICJEb2N1bWVudGF0aW9uIiwgIndlYmtp
dDJndGsiKQotc3JjX2RpciA9IG9zLnBhdGguam9pbihkb2NfZGlyLCAnLi4nKQotbGlicmFyeV9w
YXRoID0gb3MucGF0aC5qb2luKGJ1aWxkX2RpciwgIi5saWJzIikKLXBrZ19jb25maWdfcGF0aCA9
IFwKLSAgICBvcy5wYXRoLmpvaW4oYnVpbGRfZGlyLCAiU291cmNlIiwgIldlYktpdDIiLCAid2Vi
a2l0Mmd0ay0zLjAucGMiKQotCi1kZXJpdmVkX3NvdXJjZXMgPSBvcy5wYXRoLmpvaW4oYnVpbGRf
ZGlyLCAiRGVyaXZlZFNvdXJjZXMiLCAiV2ViS2l0MiIpCi1jZmxhZ3MgPSBcCi0nIC1JJyArIG9z
LnBhdGguam9pbihkZXJpdmVkX3NvdXJjZXMsICd3ZWJraXQyZ3RrJywgJ2luY2x1ZGUnKSArIFwK
LScgLUknICsgb3MucGF0aC5qb2luKGRlcml2ZWRfc291cmNlcywgJ3dlYmtpdDJndGsnKSArIFwK
LScgLUknICsgb3MucGF0aC5qb2luKGRlcml2ZWRfc291cmNlcywgJ2luY2x1ZGUnKSArIFwKLScg
LUknICsgb3MucGF0aC5qb2luKHRvcF9sZXZlbCwgJ1NvdXJjZScpCi0nIC1JJyArIHNyY19kaXIK
LQotaWdub3JlZF9maWxlcyA9IGdsb2IuZ2xvYigiJXMvKlByaXZhdGUuaCIgJSBzcmNfZGlyKSAr
IFwKLSAgICAgICAgICAgICAgICBnbG9iLmdsb2IoIiVzL1BhZ2VDbGllbnRJbXBsLioiICUgc3Jj
X2RpcikgKyBcCi0gICAgICAgICAgICAgICAgZ2xvYi5nbG9iKCIlcy90ZXN0cy8qLmgiICUgc3Jj
X2RpcikKLQotY29uZmlndXJlX2xvZ2dpbmcoKQotZ2VuZXJhdG9yID0gZ3RrZG9jLlBrZ0NvbmZp
Z0dUS0RvYyhwa2dfY29uZmlnX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1vZHVsZV9uYW1lPSJ3ZWJraXQyZ3RrIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgb3V0cHV0X2Rpcj1vdXRwdXRfZGlyLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzb3VyY2VfZGlycz1bc3JjX2Rpcl0sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRvY19kaXI9ZG9jX2RpciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2ZsYWdzPWNmbGFncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbGlicmFyeV9wYXRoPWxpYnJhcnlfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGVjb3JhdG9yPSJXRUJLSVRfQVBJIiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGVwcmVjYXRpb25fZ3VhcmQ9IldFQktJVF9ESVNBQkxFX0RFUFJFQ0FURUQi
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmVkX2ZpbGVzPWlnbm9y
ZWRfZmlsZXMpCi1nZW5lcmF0b3IuZ2VuZXJhdGUoaHRtbD0nLS1za2lwLWh0bWwnIG5vdCBpbiBz
eXMuYXJndikKLXN5cy5leGl0KGdlbmVyYXRvci5zYXdfd2FybmluZ3MpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL2d0a2RvYy5weSBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3MvZ3RrZG9jLnB5CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAzMDdiNjJlNDRmYmY4NTFiZjc3NmUyZjlmMmI2OGE1ZGQxY2I3NzBmLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3MvZ3RrZG9jLnB5CisrKyAvZGV2L251bGwKQEAgLTEs
MzcyICswLDAgQEAKLSMgIENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgotIwotIyAgVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgotIyAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYwotIyAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCi0jICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0jCi0jICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSMgIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0jICBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQotIyAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KLSMKLSMgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMKLSMgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlm
IG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSMgIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVT
QQotIwotCi1pbXBvcnQgZXJybm8KLWltcG9ydCBsb2dnaW5nCi1pbXBvcnQgb3MKLWltcG9ydCBv
cy5wYXRoCi1pbXBvcnQgc3VicHJvY2VzcwotaW1wb3J0IHN5cwotCi0KLWNsYXNzIEdUS0RvYyhv
YmplY3QpOgotCi0gICAgIiIiQ2xhc3MgdGhhdCBjb250cm9scyBhIGd0a2RvYyBydW4uCi0KLSAg
ICBFYWNoIGluc3RhbmNlIG9mIHRoaXMgY2xhc3MgcmVwcmVzZW50cyBvbmUgZ3RrZG9jIGNvbmZp
Z3VyYXRpb24KLSAgICBhbmQgc2V0IG9mIGRvY3VtZW50YXRpb24uIFRoZSBndGtkb2MgcGFja2Fn
ZSBpcyBhIHNlcmllcyBvZiB0b29scwotICAgIHJ1biBjb25zZWN1dGl2ZWx5IHdoaWNoIGNvbnZl
cnRzIGlubGluZSBDL0MrKyBkb2N1bWVudGF0aW9uIGludG8KLSAgICBkb2Nib29rIGZpbGVzIGFu
ZCB0aGVuIGludG8gSFRNTC4gVGhpcyBjbGFzcyBpcyBzdWl0YWJsZSBmb3IKLSAgICBnZW5lcmF0
aW5nIGRvY3VtZW50YXRpb24gb3Igc2ltcGx5IHZlcmlmeWluZyBjb3JyZWN0bmVzcy4KLQotICAg
IEtleXdvcmQgYXJndW1lbnRzOgotICAgIG91dHB1dF9kaXIgICAgICAgICAtLSBUaGUgcGF0aCB3
aGVyZSBndGtkb2Mgb3V0cHV0IHNob3VsZCBiZSBwbGFjZWQuIEdlbmVyYXRpb24KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgbWF5IG92ZXJ3cml0ZSBmaWxlIGluIHRoaXMgZGlyZWN0b3J5LiBS
ZXF1aXJlZC4KLSAgICBtb2R1bGVfbmFtZSAgICAgICAgLS0gVGhlIG5hbWUgb2YgdGhlIGRvY3Vt
ZW50YXRpb24gbW9kdWxlLiBGb3IgbGlicmFyaWVzIHRoaXMKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgaXMgdHlwaWNhbGx5IHRoZSBsaWJyYXJ5IG5hbWUuIFJlcXVpcmVkIGlmIG5vdCBsaWJy
YXJ5IHBhdGgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgZ2l2ZW4uCi0gICAgc291cmNl
X2RpcnMgICAgICAgIC0tIEEgbGlzdCBvZiBwYXRocyB0byB0aGUgc291cmNlIGNvZGUgdG8gYmUg
c2Nhbm5lZC4gUmVxdWlyZWQuCi0gICAgaWdub3JlZF9maWxlcyAgICAgIC0tIEEgbGlzdCBvZiBm
aWxlbmFtZXMgdG8gaWdub3JlIGluIHRoZSBzb3VyY2UgZGlyZWN0b3J5LiBJdCBpcwotICAgICAg
ICAgICAgICAgICAgICAgICAgICBvbmx5IG5lY2Vzc2FyeSB0byBwcm92aWRlIHRoZSBiYXNlbmFt
ZXMgb2YgdGhlc2UgZmlsZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGljYWxseSBp
dCBpcyBpbXBvcnRhbnQgdG8gcHJvdmlkZSBhbiB1cGRhdGVkIGxpc3Qgb2YKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWdub3JlZCBmaWxlcyB0byBwcmV2ZW50IHdhcm5pbmdzIGFib3V0IHVu
ZG9jdW1lbnRlZCBzeW1ib2xzLgotICAgIGRlY29yYXRvciAgICAgICAgICAtLSBJZiBhIGRlY29y
YXRvciBpcyB1c2VkIHRvIHVuaGlkZSBjZXJ0YWluIHN5bWJvbHMgaW4gaGVhZGVyCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgIGZpbGVzIHRoaXMgcGFyYW1ldGVyIGlzIHJlcXVpcmVkIGZvciBz
dWNjZXNzZnVsIHNjYW5uaW5nLgotICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVmYXVsdCAn
JykKLSAgICBkZXByZWNhdGlvbl9ndWFyZCAgLS0gZ3RrZG9jIHRyaWVzIHRvIGVuc3VyZSB0aGF0
IHN5bWJvbHMgbWFya2VkIGFzIGRlcHJlY2F0ZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
YXJlIGVuY2FzZWQgaW4gdGhpcyBDIHByZXByb2Nlc3NvciBkZWZpbmUuIFRoaXMgaXMgcmVxdWly
ZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gYXZvaWQgZ3RrZG9jIHdhcm5pbmdzLiAo
ZGVmYXVsdCAnJykKLSAgICBjZmxhZ3MgICAgICAgICAgICAgLS0gVGhpcyBwYXJhbWV0ZXIgc3Bl
Y2lmaWVzIGFueSBwcmVwcm9jZXNzb3IgZmxhZ3MgbmVjZXNzYXJ5IGZvcgotICAgICAgICAgICAg
ICAgICAgICAgICAgICBidWlsZGluZyB0aGUgc2Nhbm5lciBiaW5hcnkgZHVyaW5nIGd0a2RvYy1z
Y2Fub2JqLiBUeXBpY2FsbHkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyBpbmNsdWRl
cyBhbGwgYWJzb2x1dGUgaW5jbHVkZSBwYXRocyBuZWNlc3NhcnkgdG8gcmVzb2x2ZQotICAgICAg
ICAgICAgICAgICAgICAgICAgICBhbGwgaGVhZGVyIGRlcGVuZGVuY2llcy4gKGRlZmF1bHQgJycp
Ci0gICAgbGRmbGFncyAgICAgICAgICAgIC0tIFRoaXMgcGFyYW1ldGVyIHNwZWNpZmllcyBhbnkg
bGlua2VyIGZsYWdzIG5lY2Vzc2FyeSBmb3IKLSAgICAgICAgICAgICAgICAgICAgICAgICAgYnVp
bGRpbmcgdGhlIHNjYW5uZXIgYmluYXJ5IGR1cmluZyBndGtkb2Mtc2Nhbm9iai4gVHlwaWNhbGx5
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgaW5jbHVkZXMgIi1seW91cmxpYnJhcnlu
YW1lIi4gKGRlZmF1bHQgJycpCi0gICAgbGlicmFyeV9wYXRoICAgICAgIC0tIFRoaXMgcGFyYW1l
dGVyIHNwZWNpZmllcyB0aGUgcGF0aCB0byB0aGUgZGlyZWN0b3J5IHdoZXJlIHlvdQotICAgICAg
ICAgICAgICAgICAgICAgICAgICBsaWJyYXJ5IHJlc2lkZXMgdXNlZCBmb3IgYnVpbGRpbmcgdGhl
IHNjYW5uZXIgYmluYXJ5IGR1cmluZwotICAgICAgICAgICAgICAgICAgICAgICAgICBndGtkb2Mt
c2Nhbm9iai4gKGRlZmF1bHQgJycpCi0KLSAgICBkb2NfZGlyICAgICAgICAgICAgLS0gVGhlIHBh
dGggdG8gb3RoZXIgZG9jdW1lbnRhdGlvbiBmaWxlcyBuZWNlc3NhcnkgdG8gYnVpbGQKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgdGhlIGRvY3VtZW50YXRpb24uIFRoaXMgZmlsZXMgaW4gdGhp
cyBkaXJlY3RvcnkgYXMgd2VsbCBhcwotICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZmls
ZXMgaW4gdGhlICdodG1sJyBzdWJkaXJlY3Rvcnkgd2lsbCBiZSBjb3BpZWQKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVjdXJzaXZlbHkgaW50byB0aGUgb3V0cHV0IGRpcmVjdG9yeS4gKGRl
ZmF1bHQgJycpCi0gICAgbWFpbl9zZ21sX2ZpbGUgICAgIC0tIFRoZSBwYXRoIG9yIG5hbWUgKGlm
IGEgZG9jX2RpciBpcyBnaXZlbikgb2YgdGhlIFNHTUwgZmlsZQotICAgICAgICAgICAgICAgICAg
ICAgICAgICB0aGF0IGlzIHRoZSBjb25zaWRlcmVkIHRoZSBtYWluIHBhZ2Ugb2YgeW91ciBkb2N1
bWVudGF0aW9uLgotICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVmYXVsdDogPG1vZHVsZV9u
YW1lPi1kb2NzLnNnbWwpCi0gICAgdmVyc2lvbiAgICAgICAgICAgIC0tIFRoZSB2ZXJzaW9uIG51
bWJlciBvZiB0aGUgbW9kdWxlLiBJZiB0aGlzIGlzIHByb3ZpZGVkLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICBhIHZlcnNpb24ueG1sIGZpbGUgY29udGFpbmluZyB0aGUgdmVyc2lvbiB3aWxs
IGJlIGNyZWF0ZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gdGhlIG91dHB1dCBkaXJl
Y3RvcnkgZHVyaW5nIGRvY3VtZW50YXRpb24gZ2VuZXJhdGlvbi4KLQotICAgIGludGVyYWN0aXZl
ICAgICAgICAtLSBXaGV0aGVyIG9yIG5vdCBlcnJvcnMgb3Igd2FybmluZ3Mgc2hvdWxkIHByb21w
dCB0aGUgdXNlcgotICAgICAgICAgICAgICAgICAgICAgICAgICB0byBjb250aW51ZSBvciBub3Qu
IFdoZW4gdGhpcyB2YWx1ZSBpcyBmYWxzZSwgZ2VuZXJhdGlvbgotICAgICAgICAgICAgICAgICAg
ICAgICAgICB3aWxsIGNvbnRpbnVlIGRlc3BpdGUgd2FybmluZ3MuIChkZWZhdWx0IEZhbHNlKQot
ICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsICoqYXJncyk6Ci0KLSAgICAgICAgIyBQ
YXJhbWV0ZXJzIHNwZWNpZmljIHRvIHNjYW5uaW5nLgotICAgICAgICBzZWxmLm1vZHVsZV9uYW1l
ID0gJycKLSAgICAgICAgc2VsZi5zb3VyY2VfZGlycyA9IFtdCi0gICAgICAgIHNlbGYuaWdub3Jl
ZF9maWxlcyA9IFtdCi0gICAgICAgIHNlbGYuZGVjb3JhdG9yID0gJycKLSAgICAgICAgc2VsZi5k
ZXByZWNhdGlvbl9ndWFyZCA9ICcnCi0KLSAgICAgICAgIyBQYXJhbWV0ZXJzIHNwZWNpZmljIHRv
IGd0a2RvYy1zY2Fub2JqLgotICAgICAgICBzZWxmLmNmbGFncyA9ICcnCi0gICAgICAgIHNlbGYu
bGRmbGFncyA9ICcnCi0gICAgICAgIHNlbGYubGlicmFyeV9wYXRoID0gJycKLQotICAgICAgICAj
IFBhcmFtZXRlcnMgc3BlY2lmaWMgdG8gZ2VuZXJhdGlvbi4KLSAgICAgICAgc2VsZi5vdXRwdXRf
ZGlyID0gJycKLSAgICAgICAgc2VsZi5kb2NfZGlyID0gJycKLSAgICAgICAgc2VsZi5tYWluX3Nn
bWxfZmlsZSA9ICcnCi0KLSAgICAgICAgc2VsZi5pbnRlcmFjdGl2ZSA9IEZhbHNlCi0KLSAgICAg
ICAgc2VsZi5sb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcignZ3RrZG9jJykKLQotICAgICAgICBm
b3Iga2V5LCB2YWx1ZSBpbiBhcmdzLml0ZXJpdGVtcygpOgotICAgICAgICAgICAgc2V0YXR0cihz
ZWxmLCBrZXksIHZhbHVlKQotCi0gICAgICAgIGRlZiByYWlzZV9lcnJvcl9pZl9ub3Rfc3BlY2lm
aWVkKGtleSk6Ci0gICAgICAgICAgICBpZiBub3QgZ2V0YXR0cihzZWxmLCBrZXkpOgotICAgICAg
ICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignJXMgbm90IHNwZWNpZmllZC4nICUga2V5KQotCi0g
ICAgICAgIHJhaXNlX2Vycm9yX2lmX25vdF9zcGVjaWZpZWQoJ291dHB1dF9kaXInKQotICAgICAg
ICByYWlzZV9lcnJvcl9pZl9ub3Rfc3BlY2lmaWVkKCdzb3VyY2VfZGlycycpCi0gICAgICAgIHJh
aXNlX2Vycm9yX2lmX25vdF9zcGVjaWZpZWQoJ21vZHVsZV9uYW1lJykKLQotICAgICAgICAjIE1h
a2UgYWxsIHBhdGhzIGFic29sdXRlIGluIGNhc2Ugd2Ugd2VyZSBwYXNzZWQgcmVsYXRpdmUgcGF0
aHMsIHNpbmNlCi0gICAgICAgICMgd2UgY2hhbmdlIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0
b3J5IHdoZW4gZXhlY3V0aW5nIHN1YmNvbW1hbmRzLgotICAgICAgICBzZWxmLm91dHB1dF9kaXIg
PSBvcy5wYXRoLmFic3BhdGgoc2VsZi5vdXRwdXRfZGlyKQotICAgICAgICBzZWxmLnNvdXJjZV9k
aXJzID0gW29zLnBhdGguYWJzcGF0aCh4KSBmb3IgeCBpbiBzZWxmLnNvdXJjZV9kaXJzXQotICAg
ICAgICBpZiBzZWxmLmxpYnJhcnlfcGF0aDoKLSAgICAgICAgICAgIHNlbGYubGlicmFyeV9wYXRo
ID0gb3MucGF0aC5hYnNwYXRoKHNlbGYubGlicmFyeV9wYXRoKQotCi0gICAgICAgIGlmIG5vdCBz
ZWxmLm1haW5fc2dtbF9maWxlOgotICAgICAgICAgICAgc2VsZi5tYWluX3NnbWxfZmlsZSA9IHNl
bGYubW9kdWxlX25hbWUgKyAiLWRvY3Muc2dtbCIKLQotICAgIGRlZiBnZW5lcmF0ZShzZWxmLCBo
dG1sPVRydWUpOgotICAgICAgICBzZWxmLnNhd193YXJuaW5ncyA9IEZhbHNlCi0KLSAgICAgICAg
c2VsZi5fY29weV9kb2NfZmlsZXNfdG9fb3V0cHV0X2RpcihodG1sKQotICAgICAgICBzZWxmLl93
cml0ZV92ZXJzaW9uX3htbCgpCi0gICAgICAgIHNlbGYuX3J1bl9ndGtkb2Nfc2NhbigpCi0gICAg
ICAgIHNlbGYuX3J1bl9ndGtkb2Nfc2NhbmdvYmooKQotICAgICAgICBzZWxmLl9ydW5fZ3RrZG9j
X21rdG1wbCgpCi0gICAgICAgIHNlbGYuX3J1bl9ndGtkb2NfbWtkYigpCi0KLSAgICAgICAgaWYg
bm90IGh0bWw6Ci0gICAgICAgICAgICByZXR1cm4KLQotICAgICAgICBzZWxmLl9ydW5fZ3RrZG9j
X21raHRtbCgpCi0gICAgICAgIHNlbGYuX3J1bl9ndGtkb2NfZml4eHJlZigpCi0KLSAgICBkZWYg
X2RlbGV0ZV9maWxlX2lmX2V4aXN0cyhzZWxmLCBwYXRoKToKLSAgICAgICAgaWYgbm90IG9zLmFj
Y2VzcyhwYXRoLCBvcy5GX09LIHwgb3MuUl9PSyk6Ci0gICAgICAgICAgICByZXR1cm4KLSAgICAg
ICAgc2VsZi5sb2dnZXIuZGVidWcoJ2RlbGV0aW5nICVzJywgcGF0aCkKLSAgICAgICAgb3MudW5s
aW5rKHBhdGgpCi0KLSAgICBkZWYgX2NyZWF0ZV9kaXJlY3RvcnlfaWZfbm9uZXhpc3RlbnQoc2Vs
ZiwgcGF0aCk6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG9zLm1ha2VkaXJzKHBhdGgpCi0g
ICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycm9yOgotICAgICAgICAgICAgaWYgZXJyb3IuZXJy
bm8gIT0gZXJybm8uRUVYSVNUOgotICAgICAgICAgICAgICAgIHJhaXNlCi0KLSAgICBkZWYgX3Jh
aXNlX2V4Y2VwdGlvbl9pZl9maWxlX2luYWNjZXNzaWJsZShzZWxmLCBwYXRoKToKLSAgICAgICAg
aWYgbm90IG9zLnBhdGguZXhpc3RzKHBhdGgpIG9yIG5vdCBvcy5hY2Nlc3MocGF0aCwgb3MuUl9P
Syk6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIkNvdWxkIG5vdCBhY2Nlc3MgZmlsZSBh
dDogJXMiICUgcGF0aCkKLQotICAgIGRlZiBfb3V0cHV0X2hhc193YXJuaW5ncyhzZWxmLCBvdXRw
dXRzKToKLSAgICAgICAgZm9yIG91dHB1dCBpbiBvdXRwdXRzOgotICAgICAgICAgICAgaWYgb3V0
cHV0IGFuZCBvdXRwdXQuZmluZCgnd2FybmluZycpOgotICAgICAgICAgICAgICAgIHJldHVybiBU
cnVlCi0gICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgZGVmIF9hc2tfeWVzX29yX25vX3F1ZXN0
aW9uKHNlbGYsIHF1ZXN0aW9uKToKLSAgICAgICAgaWYgbm90IHNlbGYuaW50ZXJhY3RpdmU6Ci0g
ICAgICAgICAgICByZXR1cm4gVHJ1ZQotCi0gICAgICAgIHF1ZXN0aW9uICs9ICcgW3kvTl0gJwot
ICAgICAgICBhbnN3ZXIgPSBOb25lCi0gICAgICAgIHdoaWxlIGFuc3dlciAhPSAneScgYW5kIGFu
c3dlciAhPSAnbicgYW5kIGFuc3dlciAhPSAnJzoKLSAgICAgICAgICAgIGFuc3dlciA9IHJhd19p
bnB1dChxdWVzdGlvbikubG93ZXIoKQotICAgICAgICByZXR1cm4gYW5zd2VyID09ICd5JwotCi0g
ICAgZGVmIF9ydW5fY29tbWFuZChzZWxmLCBhcmdzLCBlbnY9Tm9uZSwgY3dkPU5vbmUsIHByaW50
X291dHB1dD1UcnVlKToKLSAgICAgICAgc2VsZi5sb2dnZXIuaW5mbygiUnVubmluZyAlcyIsIGFy
Z3NbMF0pCi0gICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJGdWxsIGNvbW1hbmQgYXJnczogJXMi
LCBzdHIoYXJncykpCi0KLSAgICAgICAgcHJvY2VzcyA9IHN1YnByb2Nlc3MuUG9wZW4oYXJncywg
ZW52PWVudiwgY3dkPWN3ZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rk
b3V0PXN1YnByb2Nlc3MuUElQRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RkZXJyPXN1YnByb2Nlc3MuUElQRSkKLSAgICAgICAgc3Rkb3V0LCBzdGRlcnIgPSBwcm9jZXNz
LmNvbW11bmljYXRlKCkKLQotICAgICAgICBpZiBwcmludF9vdXRwdXQ6Ci0gICAgICAgICAgICBp
ZiBzdGRvdXQ6Ci0gICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZShzdGRvdXQpCi0gICAg
ICAgICAgICBpZiBzdGRlcnI6Ci0gICAgICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZShzdGRl
cnIpCi0KLSAgICAgICAgaWYgcHJvY2Vzcy5yZXR1cm5jb2RlICE9IDA6Ci0gICAgICAgICAgICBy
YWlzZSBFeGNlcHRpb24oJyVzIHByb2R1Y2VkIGEgbm9uLXplcm8gcmV0dXJuIGNvZGUgJWknCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKGFyZ3NbMF0sIHByb2Nlc3MucmV0dXJuY29k
ZSkpCi0KLSAgICAgICAgaWYgJ3dhcm5pbmcnIGluIHN0ZGVyciBvciAnd2FybmluZycgaW4gc3Rk
b3V0OgotICAgICAgICAgICAgc2VsZi5zYXdfd2FybmluZ3MgPSBUcnVlCi0gICAgICAgICAgICBp
ZiBub3Qgc2VsZi5fYXNrX3llc19vcl9ub19xdWVzdGlvbignJXMgcHJvZHVjZWQgd2FybmluZ3Ms
ICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0cnkg
dG8gY29udGludWU/JyAlIGFyZ3NbMF0pOgotICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlv
bignJXMgc3RlcCBmYWlsZWQnICUgYXJnc1swXSkKLQotICAgICAgICByZXR1cm4gc3Rkb3V0LnN0
cmlwKCkKLQotICAgIGRlZiBfY29weV9kb2NfZmlsZXNfdG9fb3V0cHV0X2RpcihzZWxmLCBodG1s
PVRydWUpOgotICAgICAgICBpZiBub3Qgc2VsZi5kb2NfZGlyOgotICAgICAgICAgICAgc2VsZi5s
b2dnZXIuaW5mbygnTm90IGNvcHlpbmcgYW55IGZpbGVzIGZyb20gZG9jIGRpcmVjdG9yeSwnCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgYmVjYXVzZSBubyBkb2MgZGlyZWN0b3J5IGdp
dmVuLicpCi0gICAgICAgICAgICByZXR1cm4KLQotICAgICAgICBkZWYgY29weV9maWxlX3JlcGxh
Y2luZ19leGlzdGluZyhzcmMsIGRlc3QpOgotICAgICAgICAgICAgaWYgb3MucGF0aC5pc2Rpcihz
cmMpOgotICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCdza2lwcGVkIGRpcmVjdG9y
eSAlcycsICBzcmMpCi0gICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICAgICBpZiBub3Qg
b3MuYWNjZXNzKHNyYywgb3MuRl9PSyB8IG9zLlJfT0spOgotICAgICAgICAgICAgICAgIHNlbGYu
bG9nZ2VyLmRlYnVnKCdza2lwcGVkIHVucmVhZGFibGUgJXMnLCBzcmMpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuCi0KLSAgICAgICAgICAgIHNlbGYuX2RlbGV0ZV9maWxlX2lmX2V4aXN0cyhkZXN0
KQotCi0gICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygnY3JlYXRlZCAlcycsIGRlc3QpCi0g
ICAgICAgICAgICBvcy5saW5rKHNyYywgZGVzdCkKLQotICAgICAgICBkZWYgY29weV9hbGxfZmls
ZXNfaW5fZGlyZWN0b3J5KHNyYywgZGVzdCk6Ci0gICAgICAgICAgICBmb3IgcGF0aCBpbiBvcy5s
aXN0ZGlyKHNyYyk6Ci0gICAgICAgICAgICAgICAgY29weV9maWxlX3JlcGxhY2luZ19leGlzdGlu
Zyhvcy5wYXRoLmpvaW4oc3JjLCBwYXRoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihkZXN0LCBwYXRoKSkKLQotICAgICAgICBzZWxm
LmxvZ2dlci5pbmZvKCdDb3B5aW5nIHRlbXBsYXRlIGZpbGVzIHRvIG91dHB1dCBkaXJlY3Rvcnku
Li4nKQotICAgICAgICBzZWxmLl9jcmVhdGVfZGlyZWN0b3J5X2lmX25vbmV4aXN0ZW50KHNlbGYu
b3V0cHV0X2RpcikKLSAgICAgICAgY29weV9hbGxfZmlsZXNfaW5fZGlyZWN0b3J5KHNlbGYuZG9j
X2Rpciwgc2VsZi5vdXRwdXRfZGlyKQotCi0gICAgICAgIGlmIG5vdCBodG1sOgotICAgICAgICAg
ICAgcmV0dXJuCi0KLSAgICAgICAgc2VsZi5sb2dnZXIuaW5mbygnQ29weWluZyBIVE1MIGZpbGVz
IHRvIG91dHB1dCBkaXJlY3RvcnkuLi4nKQotICAgICAgICBodG1sX3NyY19kaXIgPSBvcy5wYXRo
LmpvaW4oc2VsZi5kb2NfZGlyLCAnaHRtbCcpCi0gICAgICAgIGh0bWxfZGVzdF9kaXIgPSBvcy5w
YXRoLmpvaW4oc2VsZi5vdXRwdXRfZGlyLCAnaHRtbCcpCi0gICAgICAgIHNlbGYuX2NyZWF0ZV9k
aXJlY3RvcnlfaWZfbm9uZXhpc3RlbnQoaHRtbF9kZXN0X2RpcikKLQotICAgICAgICBpZiBvcy5w
YXRoLmV4aXN0cyhodG1sX3NyY19kaXIpOgotICAgICAgICAgICAgY29weV9hbGxfZmlsZXNfaW5f
ZGlyZWN0b3J5KGh0bWxfc3JjX2RpciwgaHRtbF9kZXN0X2RpcikKLQotICAgIGRlZiBfd3JpdGVf
dmVyc2lvbl94bWwoc2VsZik6Ci0gICAgICAgIGlmIG5vdCBzZWxmLnZlcnNpb246Ci0gICAgICAg
ICAgICBzZWxmLmxvZ2dlci5pbmZvKCdObyB2ZXJzaW9uIHNwZWNpZmllZCwgc28gbm90IHdyaXRp
bmcgdmVyc2lvbi54bWwnKQotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgdmVyc2lvbl94
bWxfcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLm91dHB1dF9kaXIsICd2ZXJzaW9uLnhtbCcpCi0g
ICAgICAgIHNyY192ZXJzaW9uX3htbF9wYXRoID0gb3MucGF0aC5qb2luKHNlbGYuZG9jX2Rpciwg
J3ZlcnNpb24ueG1sJykKLQotICAgICAgICAjIERvbid0IG92ZXJ3cml0ZSB2ZXJzaW9uLnhtbCBp
ZiBpdCB3YXMgaW4gdGhlIGRvYyBkaXJlY3RvcnkuCi0gICAgICAgIGlmIG9zLnBhdGguZXhpc3Rz
KHZlcnNpb25feG1sX3BhdGgpIGFuZCBcCi0gICAgICAgICAgIG9zLnBhdGguZXhpc3RzKHNyY192
ZXJzaW9uX3htbF9wYXRoKToKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgIG91dHB1dF9m
aWxlID0gb3Blbih2ZXJzaW9uX3htbF9wYXRoLCAndycpCi0gICAgICAgIG91dHB1dF9maWxlLndy
aXRlKHNlbGYudmVyc2lvbikKLSAgICAgICAgb3V0cHV0X2ZpbGUuY2xvc2UoKQotCi0gICAgZGVm
IF9ydW5fZ3RrZG9jX3NjYW4oc2VsZik6Ci0gICAgICAgIGFyZ3MgPSBbJ2d0a2RvYy1zY2FuJywK
LSAgICAgICAgICAgICAgICAnLS1tb2R1bGU9JXMnICUgc2VsZi5tb2R1bGVfbmFtZSwKLSAgICAg
ICAgICAgICAgICAnLS1yZWJ1aWxkLXR5cGVzJ10KLQotICAgICAgICAjIEVhY2ggc291cmNlIGRp
cmVjdG9yeSBzaG91bGQgYmUgaGF2ZSBpdHMgb3duICItLXNvdXJjZS1kaXI9IiBwcmVmaXguCi0g
ICAgICAgIGFyZ3MuZXh0ZW5kKFsnLS1zb3VyY2UtZGlyPSVzJyAlIHBhdGggZm9yIHBhdGggaW4g
c2VsZi5zb3VyY2VfZGlyc10pCi0KLSAgICAgICAgaWYgc2VsZi5kZWNvcmF0b3I6Ci0gICAgICAg
ICAgICBhcmdzLmFwcGVuZCgnLS1pZ25vcmUtZGVjb3JhdG9ycz0lcycgJSBzZWxmLmRlY29yYXRv
cikKLSAgICAgICAgaWYgc2VsZi5kZXByZWNhdGlvbl9ndWFyZDoKLSAgICAgICAgICAgIGFyZ3Mu
YXBwZW5kKCctLWRlcHJlY2F0ZWQtZ3VhcmRzPSVzJyAlIHNlbGYuZGVwcmVjYXRpb25fZ3VhcmQp
Ci0gICAgICAgIGlmIHNlbGYub3V0cHV0X2RpcjoKLSAgICAgICAgICAgIGFyZ3MuYXBwZW5kKCct
LW91dHB1dC1kaXI9JXMnICUgc2VsZi5vdXRwdXRfZGlyKQotCi0gICAgICAgICMgZ3RrZG9jLXNj
YW4gd2FudHMgdGhlIGJhc2VuYW1lcyBvZiBpZ25vcmVkIGhlYWRlcnMsIHNvIHN0cmlwIHRoZQot
ICAgICAgICAjIGRpcm5hbWUuIERpZmZlcmVudCBmcm9tICItLXNvdXJjZS1kaXIiLCB0aGUgaGVh
ZGVycyBzaG91bGQgYmUKLSAgICAgICAgIyBzcGVjaWZpZWQgYXMgb25lIGxvbmcgc3RyaW5nLgot
ICAgICAgICBpZiBzZWxmLmlnbm9yZWRfZmlsZXM6Ci0gICAgICAgICAgICBpZ25vcmVkX2ZpbGVz
X2Jhc2VuYW1lcyA9IFwKLSAgICAgICAgICAgICAgICBbb3MucGF0aC5iYXNlbmFtZSh4KSBmb3Ig
eCBpbiBzZWxmLmlnbm9yZWRfZmlsZXNdCi0gICAgICAgICAgICBhcmdzLmFwcGVuZCgnLS1pZ25v
cmUtaGVhZGVycz0lcycgJSAnICcuam9pbihpZ25vcmVkX2ZpbGVzX2Jhc2VuYW1lcykpCi0KLSAg
ICAgICAgc2VsZi5fcnVuX2NvbW1hbmQoYXJncykKLQotICAgIGRlZiBfcnVuX2d0a2RvY19zY2Fu
Z29iaihzZWxmKToKLSAgICAgICAgZW52ID0gb3MuZW52aXJvbgotICAgICAgICBsZGZsYWdzID0g
c2VsZi5sZGZsYWdzCi0gICAgICAgIGlmIHNlbGYubGlicmFyeV9wYXRoOgotICAgICAgICAgICAg
bGRmbGFncyA9ICcgIi1MJXMiICcgJSBzZWxmLmxpYnJhcnlfcGF0aCArIGxkZmxhZ3MKLSAgICAg
ICAgICAgIGVudlsnUlVOJ10gPSAnTERfTElCUkFSWV9QQVRIPSIlcyIgJyAlIHNlbGYubGlicmFy
eV9wYXRoCi0gICAgICAgIGlmIGxkZmxhZ3M6Ci0gICAgICAgICAgICBlbnZbJ0xERkxBR1MnXSA9
IGxkZmxhZ3MKLSAgICAgICAgaWYgc2VsZi5jZmxhZ3M6Ci0gICAgICAgICAgICBlbnZbJ0NGTEFH
UyddID0gc2VsZi5jZmxhZ3MKLQotICAgICAgICBpZiAnQ0ZMQUdTJyBpbiBlbnY6Ci0gICAgICAg
ICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygnQ0ZMQUdTPSVzJywgZW52WydDRkxBR1MnXSkKLSAgICAg
ICAgaWYgJ0xERkxBR1MnIGluIGVudjoKLSAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCdM
REZMQUdTICVzJywgZW52WydMREZMQUdTJ10pCi0gICAgICAgIGlmICdSVU4nIGluIGVudjoKLSAg
ICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCdSVU49JXMnLCBlbnZbJ1JVTiddKQotICAgICAg
ICBzZWxmLl9ydW5fY29tbWFuZChbJ2d0a2RvYy1zY2FuZ29iaicsICctLW1vZHVsZT0lcycgJSBz
ZWxmLm1vZHVsZV9uYW1lXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZW52PWVudiwgY3dk
PXNlbGYub3V0cHV0X2RpcikKLQotICAgIGRlZiBfcnVuX2d0a2RvY19ta3RtcGwoc2VsZik6Ci0g
ICAgICAgIGFyZ3MgPSBbJ2d0a2RvYy1ta3RtcGwnLCAnLS1tb2R1bGU9JXMnICUgc2VsZi5tb2R1
bGVfbmFtZV0KLSAgICAgICAgc2VsZi5fcnVuX2NvbW1hbmQoYXJncywgY3dkPXNlbGYub3V0cHV0
X2RpcikKLQotICAgIGRlZiBfcnVuX2d0a2RvY19ta2RiKHNlbGYpOgotICAgICAgICBzZ21sX2Zp
bGUgPSBvcy5wYXRoLmpvaW4oc2VsZi5vdXRwdXRfZGlyLCBzZWxmLm1haW5fc2dtbF9maWxlKQot
ICAgICAgICBzZWxmLl9yYWlzZV9leGNlcHRpb25faWZfZmlsZV9pbmFjY2Vzc2libGUoc2dtbF9m
aWxlKQotCi0gICAgICAgIGFyZ3MgPSBbJ2d0a2RvYy1ta2RiJywKLSAgICAgICAgICAgICAgICAn
LS1tb2R1bGU9JXMnICUgc2VsZi5tb2R1bGVfbmFtZSwKLSAgICAgICAgICAgICAgICAnLS1tYWlu
LXNnbWwtZmlsZT0lcycgJSBzZ21sX2ZpbGUsCi0gICAgICAgICAgICAgICAgJy0tc291cmNlLXN1
ZmZpeGVzPWgsYyxjcHAsY2MnLAotICAgICAgICAgICAgICAgICctLW91dHB1dC1mb3JtYXQ9eG1s
JywKLSAgICAgICAgICAgICAgICAnLS1zZ21sLW1vZGUnXQotCi0gICAgICAgICMgRWFjaCBkaXJl
Y3Rvcnkgc2hvdWxkIGJlIGhhdmUgaXRzIG93biAiLS1zb3VyY2UtZGlyPSIgcHJlZml4LgotICAg
ICAgICBhcmdzLmV4dGVuZChbJy0tc291cmNlLWRpcj0lcycgJSBwYXRoIGZvciBwYXRoIGluIHNl
bGYuc291cmNlX2RpcnNdKQotICAgICAgICBzZWxmLl9ydW5fY29tbWFuZChhcmdzLCBjd2Q9c2Vs
Zi5vdXRwdXRfZGlyKQotCi0gICAgZGVmIF9ydW5fZ3RrZG9jX21raHRtbChzZWxmKToKLSAgICAg
ICAgaHRtbF9kZXN0X2RpciA9IG9zLnBhdGguam9pbihzZWxmLm91dHB1dF9kaXIsICdodG1sJykK
LSAgICAgICAgaWYgbm90IG9zLnBhdGguaXNkaXIoaHRtbF9kZXN0X2Rpcik6Ci0gICAgICAgICAg
ICByYWlzZSBFeGNlcHRpb24oIiVzIGlzIG5vdCBhIGRpcmVjdG9yeSwgY291bGQgbm90IGdlbmVy
YXRlIEhUTUwiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJSBodG1sX2Rlc3RfZGlyKQot
ICAgICAgICBlbGlmIG5vdCBvcy5hY2Nlc3MoaHRtbF9kZXN0X2Rpciwgb3MuWF9PSyB8IG9zLlJf
T0sgfCBvcy5XX09LKToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiQ291bGQgbm90IGFj
Y2VzcyAlcyB0byBnZW5lcmF0ZSBIVE1MIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICUg
aHRtbF9kZXN0X2RpcikKLQotICAgICAgICAjIGd0a2RvYy1ta2h0bWwgZXhwZWN0cyB0aGUgU0dN
TCBwYXRoIHRvIGJlIGFic29sdXRlLgotICAgICAgICBzZ21sX2ZpbGUgPSBvcy5wYXRoLmpvaW4o
b3MucGF0aC5hYnNwYXRoKHNlbGYub3V0cHV0X2RpciksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZWxmLm1haW5fc2dtbF9maWxlKQotICAgICAgICBzZWxmLl9yYWlzZV9leGNl
cHRpb25faWZfZmlsZV9pbmFjY2Vzc2libGUoc2dtbF9maWxlKQotCi0gICAgICAgIHNlbGYuX3J1
bl9jb21tYW5kKFsnZ3RrZG9jLW1raHRtbCcsIHNlbGYubW9kdWxlX25hbWUsIHNnbWxfZmlsZV0s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIGN3ZD1odG1sX2Rlc3RfZGlyKQotCi0gICAgZGVm
IF9ydW5fZ3RrZG9jX2ZpeHhyZWYoc2VsZik6Ci0gICAgICAgIHNlbGYuX3J1bl9jb21tYW5kKFsn
Z3RrZG9jLWZpeHhyZWYnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tbW9kdWxlLWRp
cj1odG1sJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICctLWh0bWwtZGlyPWh0bWwnXSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgY3dkPXNlbGYub3V0cHV0X2RpcikKLQotCi1jbGFz
cyBQa2dDb25maWdHVEtEb2MoR1RLRG9jKToKLQotICAgICIiIkNsYXNzIHJlYWRzIGEgbGlicmFy
eSdzIHBrZ2NvbmZpZyBmaWxlIHRvIGd1ZXNzIGd0a2RvYyBwYXJhbWV0ZXJzLgotCi0gICAgU29t
ZSBndGtkb2MgcGFyYW1ldGVycyBjYW4gYmUgZ3Vlc3NlZCBieSByZWFkaW5nIGEgbGlicmFyeSdz
IHBrZ2NvbmZpZwotICAgIGZpbGUsIGluY2x1ZGluZyB0aGUgY2ZsYWdzLCBsZGZsYWdzIGFuZCB2
ZXJzaW9uIHBhcmFtZXRlcnMuIElmIHlvdQotICAgIHByb3ZpZGUgdGhlc2UgcGFyYW1ldGVycyBh
cyB3ZWxsLCB0aGV5IHdpbGwgYmUgYXBwZW5kZWQgdG8gdGhlIG9uZXMKLSAgICBndWVzc2VkIHZp
YSB0aGUgcGtnY29uZmlnIGZpbGUuCi0KLSAgICBLZXl3b3JkIGFyZ3VtZW50czoKLSAgICAgIHBr
Z19jb25maWdfcGF0aCAtLSBQYXRoIHRvIHRoZSBwa2djb25maWcgZmlsZSBmb3IgdGhlIGxpYnJh
cnkuIFJlcXVpcmVkLgotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHBrZ19jb25m
aWdfcGF0aCwgKiphcmdzKToKLSAgICAgICAgc3VwZXIoUGtnQ29uZmlnR1RLRG9jLCBzZWxmKS5f
X2luaXRfXygqKmFyZ3MpCi0KLSAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHBrZ19jb25m
aWdfcGF0aCk6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0NvdWxkIG5vdCBmaW5kIHBr
Zy1jb25maWcgZmlsZSBhdDogJXMnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJSBwa2df
Y29uZmlnX3BhdGgpCi0KLSAgICAgICAgc2VsZi5jZmxhZ3MgKz0gIiAiICsgc2VsZi5fcnVuX2Nv
bW1hbmQoWydwa2ctY29uZmlnJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHBrZ19jb25maWdfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICctLWNmbGFncyddLCBwcmludF9vdXRwdXQ9RmFsc2UpCi0g
ICAgICAgIHNlbGYubGRmbGFncyArPSAiICIgKyBzZWxmLl9ydW5fY29tbWFuZChbJ3BrZy1jb25m
aWcnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGtn
X2NvbmZpZ19wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJy0tbGlicyddLCBwcmludF9vdXRwdXQ9RmFsc2UpCi0gICAgICAgIHNlbGYudmVyc2lv
biA9IHNlbGYuX3J1bl9jb21tYW5kKFsncGtnLWNvbmZpZycsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwa2dfY29uZmlnX3BhdGgsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1tb2R2ZXJzaW9uJ10sIHByaW50X291dHB1dD1G
YWxzZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRl
eCBlZmMwMmZkNDYxYWUwNzkxMDk3YWM2ODg0MWI3ZTY2ZGM4NGFiNGY1Li4xODdmMTU2ZTVmYzBk
YTNjZTk5ZmUwM2UwOWJhYTMzN2E0NzQ5ZjJmIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cK
KysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMTEtMTcgIE1hcnRp
biBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIEludGVn
cmF0ZSBidWlsZC1ndGtkb2MgaW50byBidWlsZC13ZWJraXQgYW5kIG1ha2UKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyNjI2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbTogQWRk
ZWQgc3VwcG9ydCBmb3IgbmV3IHNjcmlwdHMgYW5kICJtYWtlIGRvY3MiLgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0ZGlycy5wbTogQ2FsbCBnZW5lcmF0ZS1ndGtkb2Mgd2hlbiBidWlsZGluZy4K
KyAgICAgICAgKGJ1aWxkQXV0b3Rvb2xzUHJvamVjdCk6CisgICAgICAgICogZ3RrL2dlbmVyYXRl
LWd0a2RvYzogQWRkZWQuCisgICAgICAgICogZ3RrL2d0a2RvYy5weTogUmVuYW1lZCBmcm9tIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3MvZ3RrZG9jLnB5LgorCiAyMDExLTEx
LTE3ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBV
bnJldmlld2VkLCBydW4tYmluZGluZ3MtdGVzdHMgZml4IGFmdGVyIHI5MTAyOC4KZGlmZiAtLWdp
dCBhL1Rvb2xzL0dOVW1ha2VmaWxlLmFtIGIvVG9vbHMvR05VbWFrZWZpbGUuYW0KaW5kZXggZmQ5
ZWY3MDE0M2ViY2ZhYTQ2ODEzYjEyODBiYWVjYTRkNjMwYjM0YS4uZTIyM2NjNzIxZjNmYmQxYmEw
MmVkMjM2MjUwZTI3OWY1MWRjZjk4MiAxMDA2NDQKLS0tIGEvVG9vbHMvR05VbWFrZWZpbGUuYW0K
KysrIGIvVG9vbHMvR05VbWFrZWZpbGUuYW0KQEAgLTIyNywzICsyMjcsMTQgQEAgVGVzdE5ldHNj
YXBlUGx1Z2luX2xpYnRlc3RuZXRzY2FwZXBsdWdpbl9sYV9MREZMQUdTID0gXAogCiBDTEVBTkZJ
TEVTICs9IFRlc3ROZXRzY2FwZVBsdWdpbi9saWJ0ZXN0bmV0c2NhcGVwbHVnaW4ubGEKIGVuZGlm
CisKK2RvY3M6ICQoQlVJTFRfU09VUkNFUykgXAorCWxpYndlYmtpdGd0ay1AV0VCS0lUR1RLX0FQ
SV9NQUpPUl9WRVJTSU9OQC5AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQC5sYSBcCisJbGli
d2Via2l0Mmd0ay1AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQC5AV0VCS0lUR1RLX0FQSV9N
SU5PUl9WRVJTSU9OQC5sYQorCSQoc3JjZGlyKS9Ub29scy9ndGsvZ2VuZXJhdGUtZ3RrZG9jCisK
K0VYVFJBX0RJU1QgKz0gXAorCSQoZmluZCAkKHNyY2RpcikvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eSkgXAorCVRvb2xzL2d0ay9nZW5lcmF0ZS1ndGtkb2MgXAorCVRvb2xzL2d0ay9ndGtkb2MucHkK
KwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRkaXJzLnBtIGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRkaXJzLnBtCmluZGV4IDc2Y2FlNzIzNzc5NjBmMDViY2I2YWVhNDgyYmRhMjYxZDhi
N2QwYWEuLjdjNjE5YTE4MzYyMGE1YjdmOGZmZjVkNjk0NmI2MWU2MDA2MmY2OGQgMTAwNzU1Ci0t
LSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0ZGlycy5wbQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dGRpcnMucG0KQEAgLTE2MzUsNiArMTYzNSwxNCBAQCBzdWIgYnVpbGRBdXRvdG9vbHNQcm9qZWN0
KCRAKQogICAgIH0KIAogICAgIGNoZGlyICIuLiIgb3IgZGllOworCisgICAgaWYgKGlzR3RrKCkp
IHsKKyAgICAgICAgbXkgJHJlbGF0aXZlU2NyaXB0c1BhdGggPSByZWxhdGl2ZVNjcmlwdHNEaXIo
KTsKKyAgICAgICAgaWYgKHN5c3RlbSgiJHJlbGF0aXZlU2NyaXB0c1BhdGgvLi4vZ3RrL2dlbmVy
YXRlLWd0a2RvYyAtLXNraXAtaHRtbCIpKSB7CisgICAgICAgICAgICBkaWUgIlxuIGd0a2RvYyBk
aWQgbm90IGJ1aWxkIHdpdGhvdXQgd2FybmluZ3NcbiI7CisgICAgICAgIH0KKyAgICB9CisKICAg
ICByZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvZ3RrL2dlbmVyYXRlLWd0a2RvYyBi
L1Rvb2xzL2d0ay9nZW5lcmF0ZS1ndGtkb2MKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjcwYjk4ODU2YTE5YjAyNTRm
OTJlNzBhMjYzNGJjNDM5NGJmZDk5MgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL2d0ay9nZW5l
cmF0ZS1ndGtkb2MKQEAgLTAsMCArMSwxNDQgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIyBD
b3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KKyMKKyMgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorIyBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisjIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorIyB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCisjCisjIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorIyBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisjIExpY2Vu
c2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29m
dHdhcmUKKyMgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisKK2ltcG9ydCBnbG9iCitpbXBvcnQgZ3Rr
ZG9jCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IG9zLnBhdGgKK2ltcG9ydCBzdWJwcm9jZXNzCitp
bXBvcnQgc3lzCisKK3NjcmlwdF9kaXIgPSBOb25lCitidWlsZF9kaXIgPSBOb25lCisKK2RlZiBj
b25maWd1cmVfbG9nZ2luZygpOgorICAgIGxldmVsID0gbG9nZ2luZy5ERUJVRyBpZiAnLXYnIGlu
IHN5cy5hcmd2IGVsc2UgbG9nZ2luZy5JTkZPCisgICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dn
ZXIoJ2d0a2RvYycpCisgICAgbG9nZ2VyLnNldExldmVsKGxldmVsKQorICAgIGhhbmRsZXIgPSBs
b2dnaW5nLlN0cmVhbUhhbmRsZXIoKQorICAgIGhhbmRsZXIuc2V0TGV2ZWwobGV2ZWwpCisgICAg
bG9nZ2VyLmFkZEhhbmRsZXIoaGFuZGxlcikKKyAgICBpZiBsZXZlbCA9PSBsb2dnaW5nLkRFQlVH
OgorICAgICAgICBoYW5kbGVyLnNldEZvcm1hdHRlcihsb2dnaW5nLkZvcm1hdHRlcignWyUoYXNj
dGltZSlzXSAgJShtZXNzYWdlKXMnKSkKKyAgICBlbHNlOgorICAgICAgICBoYW5kbGVyLnNldEZv
cm1hdHRlcihsb2dnaW5nLkZvcm1hdHRlcignJShtZXNzYWdlKXMnKSkKKworZGVmIHNjcmlwdF9w
YXRoKCphcmdzKToKKyAgICBnbG9iYWwgc2NyaXB0X2RpcgorICAgIGlmIG5vdCBzY3JpcHRfZGly
OgorICAgICAgICBzY3JpcHRfZGlyID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2Zp
bGVfXyksICcuLicsICdTY3JpcHRzJykKKyAgICByZXR1cm4gb3MucGF0aC5qb2luKCooc2NyaXB0
X2RpciwpICsgYXJncykKKworZGVmIHRvcF9sZXZlbF9wYXRoKCphcmdzKToKKyAgICByZXR1cm4g
b3MucGF0aC5qb2luKCooKHNjcmlwdF9wYXRoKCcuLicsICcuLicpLCkgKyBhcmdzKSkKKworZGVm
IGdldF9idWlsZF9wYXRoKCk6CisgICAgZ2xvYmFsIGJ1aWxkX2RpcgorICAgIGlmIGJ1aWxkX2Rp
cjoKKyAgICAgICAgcmV0dXJuIGJ1aWxkX2RpcgorCisgICAgZGVmIGlzX3ZhbGlkX2J1aWxkX2Rp
cmVjdG9yeShwYXRoKToKKyAgICAgICAgcmV0dXJuIG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9p
bihwYXRoLCAnLmxpYnMnKSkKKworICAgIHByb2Nlc3MgPSBzdWJwcm9jZXNzLlBvcGVuKFsncGVy
bCcsIHNjcmlwdF9wYXRoKCd3ZWJraXQtYnVpbGQtZGlyZWN0b3J5JyksICctLWNvbmZpZ3VyYXRp
b24nLCAnZ3RrJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnBy
b2Nlc3MuUElQRSkKKyAgICBidWlsZF9kaXIgPSBwcm9jZXNzLmNvbW11bmljYXRlKClbMF0uc3Ry
aXAoKQorICAgIHByaW50IGJ1aWxkX2RpcgorCisgICAgaWYgaXNfdmFsaWRfYnVpbGRfZGlyZWN0
b3J5KGJ1aWxkX2Rpcik6CisgICAgICAgIHJldHVybiBidWlsZF9kaXIKKyAgICBidWlsZF9kaXIg
PSB0b3BfbGV2ZWxfcGF0aCgpCisgICAgaWYgaXNfdmFsaWRfYnVpbGRfZGlyZWN0b3J5KGJ1aWxk
X2Rpcik6CisgICAgICAgIHJldHVybiBidWlsZF9kaXIKKworICAgIHByaW50ICdDb3VsZCBub3Qg
ZGV0ZXJtaW5lIGJ1aWxkIGRpcmVjdG9yeS4nCisgICAgc3lzLmV4aXQoMSkKKworZGVmIGJ1aWxk
X3BhdGgoKmFyZ3MpOgorICAgIHJldHVybiBvcy5wYXRoLmpvaW4oKihnZXRfYnVpbGRfcGF0aCgp
LCkgKyBhcmdzKQorCitkZWYgZ2V0X2NvbW1vbl9vcHRpb25zKCk6CisgICAgcmV0dXJuIHsKKyAg
ICAgICAgJ2RlY29yYXRvcic6ICdXRUJLSVRfQVBJJywKKyAgICAgICAgJ2RlcHJlY2F0aW9uX2d1
YXJkJzogJ1dFQktJVF9ESVNBQkxFX0RFUFJFQ0FURUQnLAorICAgICAgICAnbGlicmFyeV9wYXRo
JyA6IGJ1aWxkX3BhdGgoJy5saWJzJyksCisgICAgfQorCitkZWYgZ2V0X3dlYmtpdDJfb3B0aW9u
cygpOgorICAgIGRlZiBkZXJpdmVkX3NvdXJjZXNfcGF0aCgqYXJncyk6CisgICAgICAgIHJldHVy
biBidWlsZF9wYXRoKCooKCdEZXJpdmVkU291cmNlcycsICdXZWJLaXQyJykgKyBhcmdzKSkKKyAg
ICBkZWYgc3JjX3BhdGgoKmFyZ3MpOgorICAgICAgICByZXR1cm4gdG9wX2xldmVsX3BhdGgoKigo
J1NvdXJjZScsICdXZWJLaXQyJywgJ1VJUHJvY2VzcycsICdBUEknLCAnZ3RrJykgKyBhcmdzKSkK
KworICAgIGRlcml2ZWRfc291cmNlcyA9IGJ1aWxkX3BhdGgoJ0Rlcml2ZWRTb3VyY2VzJywgJ1dl
YktpdDInKQorICAgIG9wdGlvbnMgPSBnZXRfY29tbW9uX29wdGlvbnMoKS5jb3B5KCkKKyAgICBv
cHRpb25zLnVwZGF0ZSh7CisgICAgICAgICdtb2R1bGVfbmFtZScgOiAnd2Via2l0Mmd0aycsCisg
ICAgICAgICdkb2NfZGlyJyA6IHNyY19wYXRoKCdkb2NzJyksCisgICAgICAgICdvdXRwdXRfZGly
JyA6IGJ1aWxkX3BhdGgoJ0RvY3VtZW50YXRpb24nLCAnd2Via2l0Mmd0aycpLAorICAgICAgICAn
c291cmNlX2RpcnMnIDogW3NyY19wYXRoKCldLAorICAgICAgICAnY2ZsYWdzJyA6ICcgLUknICsg
ZGVyaXZlZF9zb3VyY2VzX3BhdGgoJ3dlYmtpdDJndGsnLCAnaW5jbHVkZScpICsgXAorICAgICAg
ICAgICAgICAgICAgICcgLUknICsgZGVyaXZlZF9zb3VyY2VzX3BhdGgoJ3dlYmtpdDJndGsnKSAr
IFwKKyAgICAgICAgICAgICAgICAgICAnIC1JJyArIGRlcml2ZWRfc291cmNlc19wYXRoKCdpbmNs
dWRlJykgKyBcCisgICAgICAgICAgICAgICAgICAgJyAtSScgKyB0b3BfbGV2ZWxfcGF0aCgnU291
cmNlJykgKyBcCisgICAgICAgICAgICAgICAgICAgJyAtSScgKyBzcmNfcGF0aCgpLAorICAgICAg
ICAnaWdub3JlZF9maWxlcyc6IGdsb2IuZ2xvYihzcmNfcGF0aCgnKlByaXZhdGUuaCcpKSArIFwK
KyAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iLmdsb2Ioc3JjX3BhdGgoJ1BhZ2VDbGllbnRJ
bXBsLionKSkgKyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYi5nbG9iKHNyY19wYXRo
KCd0ZXN0cy8qLmgnKSkKKyAgICB9KQorICAgIHJldHVybiAoYnVpbGRfcGF0aCgnU291cmNlJywg
J1dlYktpdDInLCAnd2Via2l0Mmd0ay0zLjAucGMnKSwgb3B0aW9ucykKKworZGVmIGdldF93ZWJr
aXQxX29wdGlvbnMoKToKKyAgICBkZWYgZGVyaXZlZF9zb3VyY2VzX3BhdGgoKmFyZ3MpOgorICAg
ICAgICByZXR1cm4gYnVpbGRfcGF0aCgqKCgnRGVyaXZlZFNvdXJjZXMnLCAnV2ViS2l0MicpICsg
YXJncykpCisgICAgZGVmIHNyY19wYXRoKCphcmdzKToKKyAgICAgICAgcmV0dXJuIHRvcF9sZXZl
bF9wYXRoKCooKCdTb3VyY2UnLCAnV2ViS2l0JywgJ2d0aycpICsgYXJncykpCisKKyAgICBkZXJp
dmVkX3NvdXJjZXMgPSBidWlsZF9wYXRoKCdEZXJpdmVkU291cmNlcycsICdXZWJLaXQyJykKKyAg
ICBvcHRpb25zID0gZ2V0X2NvbW1vbl9vcHRpb25zKCkuY29weSgpCisgICAgb3B0aW9ucy51cGRh
dGUoeworICAgICAgICAnbW9kdWxlX25hbWUnIDogJ3dlYmtpdGd0aycsCisgICAgICAgICdkb2Nf
ZGlyJyA6IHNyY19wYXRoKCdkb2NzJyksCisgICAgICAgICdvdXRwdXRfZGlyJyA6IGJ1aWxkX3Bh
dGgoJ0RvY3VtZW50YXRpb24nLCAnd2Via2l0Z3RrJyksCisgICAgICAgICdzb3VyY2VfZGlycycg
OiBbc3JjX3BhdGgoJ3dlYmtpdCcpLCBidWlsZF9wYXRoKCdTb3VyY2UnLCAnV2ViS2l0JywgJ2d0
aycsICd3ZWJraXQnKV0sCisgICAgICAgICdjZmxhZ3MnIDogJyAtSScgKyBidWlsZF9wYXRoKCdX
ZWJLaXQnLCAnZ3RrJykgKyBcCisgICAgICAgICAgICAgICAgICAgJyAtSScgKyBidWlsZF9wYXRo
KCdEZXJpdmVkU291cmNlcycpICsgXAorICAgICAgICAgICAgICAgICAgICcgLUknICsgc3JjX3Bh
dGgoKSArIFwKKyAgICAgICAgICAgICAgICAgICAnIC1JJyArIHRvcF9sZXZlbF9wYXRoKCdTb3Vy
Y2UnKSArIFwKKyAgICAgICAgICAgICAgICAgICAnIC1JJyArIHRvcF9sZXZlbF9wYXRoKCdTb3Vy
Y2UnLCAnSmF2YVNjcmlwdENvcmUnLCAnRm9yd2FyZGluZ0hlYWRlcnMnKSwKKyAgICAgICAgJ2ln
bm9yZWRfZmlsZXMnOiBnbG9iLmdsb2Ioc3JjX3BhdGgoJ3dlYmtpdCcsICcqcHJpdmF0ZS4qJykp
CisgICAgfSkKKyAgICByZXR1cm4gKGJ1aWxkX3BhdGgoJ1NvdXJjZScsICdXZWJLaXQnLCAnZ3Rr
JywgJ3dlYmtpdGd0ay0zLjAucGMnKSwgb3B0aW9ucykKKworY29uZmlndXJlX2xvZ2dpbmcoKQor
CisjIFdlIG5lZWQgdG8gYWRkIHRoZSBKYXZhU2NyaXB0Q29yZSBidWlsZCBkaXJlY3RvcnkgdG8g
dGhlIFBLR19DT05GSUdfUEFUSAorIyBzbyB0aGF0IHBrZ2NvbmZpZyBjYW4gcHJvcGVybHkgcmVz
b2x2ZSB0aGUgbGliamF2YXNjcmlwdGNvcmUgZGVwZW5kZW5jeS4KK29zLmVudmlyb25bJ1BLR19D
T05GSUdfUEFUSCddID0gYnVpbGRfcGF0aCgnU291cmNlJywgJ0phdmFTY3JpcHRDb3JlJykgXAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICc6JyArIG9zLmVudmlyb25bJ1BLR19D
T05GSUdfUEFUSCddCisKK3ByaW50ICJHZW5lcmF0aW5nIFdlYktpdDEgZG9jdW1lbnRhdGlvbi4u
LiIKK3BrZ19jb25maWdfcGF0aCwgb3B0aW9ucyA9IGdldF93ZWJraXQxX29wdGlvbnMoKQorZ2Vu
ZXJhdG9yID0gZ3RrZG9jLlBrZ0NvbmZpZ0dUS0RvYyhwa2dfY29uZmlnX3BhdGgsICoqb3B0aW9u
cykKK2dlbmVyYXRvci5nZW5lcmF0ZShodG1sPSctLXNraXAtaHRtbCcgbm90IGluIHN5cy5hcmd2
KQorCitwcmludCAiXG5HZW5lcmF0aW5nIFdlYktpdDIgZG9jdW1lbnRhdGlvbi4uLiIKK3BrZ19j
b25maWdfcGF0aCwgb3B0aW9ucyA9IGdldF93ZWJraXQyX29wdGlvbnMoKQorZ2VuZXJhdG9yID0g
Z3RrZG9jLlBrZ0NvbmZpZ0dUS0RvYyhwa2dfY29uZmlnX3BhdGgsICoqb3B0aW9ucykKK2dlbmVy
YXRvci5nZW5lcmF0ZShodG1sPSctLXNraXAtaHRtbCcgbm90IGluIHN5cy5hcmd2KQorCitzeXMu
ZXhpdChnZW5lcmF0b3Iuc2F3X3dhcm5pbmdzKQpkaWZmIC0tZ2l0IGEvVG9vbHMvZ3RrL2d0a2Rv
Yy5weSBiL1Rvb2xzL2d0ay9ndGtkb2MucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGJjYWY0ZWM3NzU1MmNiNTVh
NzdkMmM5OGFiODE3ZmM0YTU3YzA2NAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL2d0ay9ndGtk
b2MucHkKQEAgLTAsMCArMSwzNzIgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwu
CisjCisjIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyMgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYworIyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyMgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyMgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExl
c3NlciBHZW5lcmFsIFB1YmxpYworIyBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBp
ZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisjIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVT
QQorCitpbXBvcnQgZXJybm8KK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgb3MKK2ltcG9ydCBvcy5w
YXRoCitpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0IHN5cworCisKK2NsYXNzIEdUS0RvYyhvYmpl
Y3QpOgorCisgICAgIiIiQ2xhc3MgdGhhdCBjb250cm9scyBhIGd0a2RvYyBydW4uCisKKyAgICBF
YWNoIGluc3RhbmNlIG9mIHRoaXMgY2xhc3MgcmVwcmVzZW50cyBvbmUgZ3RrZG9jIGNvbmZpZ3Vy
YXRpb24KKyAgICBhbmQgc2V0IG9mIGRvY3VtZW50YXRpb24uIFRoZSBndGtkb2MgcGFja2FnZSBp
cyBhIHNlcmllcyBvZiB0b29scworICAgIHJ1biBjb25zZWN1dGl2ZWx5IHdoaWNoIGNvbnZlcnRz
IGlubGluZSBDL0MrKyBkb2N1bWVudGF0aW9uIGludG8KKyAgICBkb2Nib29rIGZpbGVzIGFuZCB0
aGVuIGludG8gSFRNTC4gVGhpcyBjbGFzcyBpcyBzdWl0YWJsZSBmb3IKKyAgICBnZW5lcmF0aW5n
IGRvY3VtZW50YXRpb24gb3Igc2ltcGx5IHZlcmlmeWluZyBjb3JyZWN0bmVzcy4KKworICAgIEtl
eXdvcmQgYXJndW1lbnRzOgorICAgIG91dHB1dF9kaXIgICAgICAgICAtLSBUaGUgcGF0aCB3aGVy
ZSBndGtkb2Mgb3V0cHV0IHNob3VsZCBiZSBwbGFjZWQuIEdlbmVyYXRpb24KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgbWF5IG92ZXJ3cml0ZSBmaWxlIGluIHRoaXMgZGlyZWN0b3J5LiBSZXF1
aXJlZC4KKyAgICBtb2R1bGVfbmFtZSAgICAgICAgLS0gVGhlIG5hbWUgb2YgdGhlIGRvY3VtZW50
YXRpb24gbW9kdWxlLiBGb3IgbGlicmFyaWVzIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgaXMgdHlwaWNhbGx5IHRoZSBsaWJyYXJ5IG5hbWUuIFJlcXVpcmVkIGlmIG5vdCBsaWJyYXJ5
IHBhdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgZ2l2ZW4uCisgICAgc291cmNlX2Rp
cnMgICAgICAgIC0tIEEgbGlzdCBvZiBwYXRocyB0byB0aGUgc291cmNlIGNvZGUgdG8gYmUgc2Nh
bm5lZC4gUmVxdWlyZWQuCisgICAgaWdub3JlZF9maWxlcyAgICAgIC0tIEEgbGlzdCBvZiBmaWxl
bmFtZXMgdG8gaWdub3JlIGluIHRoZSBzb3VyY2UgZGlyZWN0b3J5LiBJdCBpcworICAgICAgICAg
ICAgICAgICAgICAgICAgICBvbmx5IG5lY2Vzc2FyeSB0byBwcm92aWRlIHRoZSBiYXNlbmFtZXMg
b2YgdGhlc2UgZmlsZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGljYWxseSBpdCBp
cyBpbXBvcnRhbnQgdG8gcHJvdmlkZSBhbiB1cGRhdGVkIGxpc3Qgb2YKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWdub3JlZCBmaWxlcyB0byBwcmV2ZW50IHdhcm5pbmdzIGFib3V0IHVuZG9j
dW1lbnRlZCBzeW1ib2xzLgorICAgIGRlY29yYXRvciAgICAgICAgICAtLSBJZiBhIGRlY29yYXRv
ciBpcyB1c2VkIHRvIHVuaGlkZSBjZXJ0YWluIHN5bWJvbHMgaW4gaGVhZGVyCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZpbGVzIHRoaXMgcGFyYW1ldGVyIGlzIHJlcXVpcmVkIGZvciBzdWNj
ZXNzZnVsIHNjYW5uaW5nLgorICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVmYXVsdCAnJykK
KyAgICBkZXByZWNhdGlvbl9ndWFyZCAgLS0gZ3RrZG9jIHRyaWVzIHRvIGVuc3VyZSB0aGF0IHN5
bWJvbHMgbWFya2VkIGFzIGRlcHJlY2F0ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYXJl
IGVuY2FzZWQgaW4gdGhpcyBDIHByZXByb2Nlc3NvciBkZWZpbmUuIFRoaXMgaXMgcmVxdWlyZWQK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gYXZvaWQgZ3RrZG9jIHdhcm5pbmdzLiAoZGVm
YXVsdCAnJykKKyAgICBjZmxhZ3MgICAgICAgICAgICAgLS0gVGhpcyBwYXJhbWV0ZXIgc3BlY2lm
aWVzIGFueSBwcmVwcm9jZXNzb3IgZmxhZ3MgbmVjZXNzYXJ5IGZvcgorICAgICAgICAgICAgICAg
ICAgICAgICAgICBidWlsZGluZyB0aGUgc2Nhbm5lciBiaW5hcnkgZHVyaW5nIGd0a2RvYy1zY2Fu
b2JqLiBUeXBpY2FsbHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyBpbmNsdWRlcyBh
bGwgYWJzb2x1dGUgaW5jbHVkZSBwYXRocyBuZWNlc3NhcnkgdG8gcmVzb2x2ZQorICAgICAgICAg
ICAgICAgICAgICAgICAgICBhbGwgaGVhZGVyIGRlcGVuZGVuY2llcy4gKGRlZmF1bHQgJycpCisg
ICAgbGRmbGFncyAgICAgICAgICAgIC0tIFRoaXMgcGFyYW1ldGVyIHNwZWNpZmllcyBhbnkgbGlu
a2VyIGZsYWdzIG5lY2Vzc2FyeSBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRp
bmcgdGhlIHNjYW5uZXIgYmluYXJ5IGR1cmluZyBndGtkb2Mtc2Nhbm9iai4gVHlwaWNhbGx5Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgaW5jbHVkZXMgIi1seW91cmxpYnJhcnluYW1l
Ii4gKGRlZmF1bHQgJycpCisgICAgbGlicmFyeV9wYXRoICAgICAgIC0tIFRoaXMgcGFyYW1ldGVy
IHNwZWNpZmllcyB0aGUgcGF0aCB0byB0aGUgZGlyZWN0b3J5IHdoZXJlIHlvdQorICAgICAgICAg
ICAgICAgICAgICAgICAgICBsaWJyYXJ5IHJlc2lkZXMgdXNlZCBmb3IgYnVpbGRpbmcgdGhlIHNj
YW5uZXIgYmluYXJ5IGR1cmluZworICAgICAgICAgICAgICAgICAgICAgICAgICBndGtkb2Mtc2Nh
bm9iai4gKGRlZmF1bHQgJycpCisKKyAgICBkb2NfZGlyICAgICAgICAgICAgLS0gVGhlIHBhdGgg
dG8gb3RoZXIgZG9jdW1lbnRhdGlvbiBmaWxlcyBuZWNlc3NhcnkgdG8gYnVpbGQKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGhlIGRvY3VtZW50YXRpb24uIFRoaXMgZmlsZXMgaW4gdGhpcyBk
aXJlY3RvcnkgYXMgd2VsbCBhcworICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZmlsZXMg
aW4gdGhlICdodG1sJyBzdWJkaXJlY3Rvcnkgd2lsbCBiZSBjb3BpZWQKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVjdXJzaXZlbHkgaW50byB0aGUgb3V0cHV0IGRpcmVjdG9yeS4gKGRlZmF1
bHQgJycpCisgICAgbWFpbl9zZ21sX2ZpbGUgICAgIC0tIFRoZSBwYXRoIG9yIG5hbWUgKGlmIGEg
ZG9jX2RpciBpcyBnaXZlbikgb2YgdGhlIFNHTUwgZmlsZQorICAgICAgICAgICAgICAgICAgICAg
ICAgICB0aGF0IGlzIHRoZSBjb25zaWRlcmVkIHRoZSBtYWluIHBhZ2Ugb2YgeW91ciBkb2N1bWVu
dGF0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVmYXVsdDogPG1vZHVsZV9uYW1l
Pi1kb2NzLnNnbWwpCisgICAgdmVyc2lvbiAgICAgICAgICAgIC0tIFRoZSB2ZXJzaW9uIG51bWJl
ciBvZiB0aGUgbW9kdWxlLiBJZiB0aGlzIGlzIHByb3ZpZGVkLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICBhIHZlcnNpb24ueG1sIGZpbGUgY29udGFpbmluZyB0aGUgdmVyc2lvbiB3aWxsIGJl
IGNyZWF0ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gdGhlIG91dHB1dCBkaXJlY3Rv
cnkgZHVyaW5nIGRvY3VtZW50YXRpb24gZ2VuZXJhdGlvbi4KKworICAgIGludGVyYWN0aXZlICAg
ICAgICAtLSBXaGV0aGVyIG9yIG5vdCBlcnJvcnMgb3Igd2FybmluZ3Mgc2hvdWxkIHByb21wdCB0
aGUgdXNlcgorICAgICAgICAgICAgICAgICAgICAgICAgICB0byBjb250aW51ZSBvciBub3QuIFdo
ZW4gdGhpcyB2YWx1ZSBpcyBmYWxzZSwgZ2VuZXJhdGlvbgorICAgICAgICAgICAgICAgICAgICAg
ICAgICB3aWxsIGNvbnRpbnVlIGRlc3BpdGUgd2FybmluZ3MuIChkZWZhdWx0IEZhbHNlKQorICAg
ICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsICoqYXJncyk6CisKKyAgICAgICAgIyBQYXJh
bWV0ZXJzIHNwZWNpZmljIHRvIHNjYW5uaW5nLgorICAgICAgICBzZWxmLm1vZHVsZV9uYW1lID0g
JycKKyAgICAgICAgc2VsZi5zb3VyY2VfZGlycyA9IFtdCisgICAgICAgIHNlbGYuaWdub3JlZF9m
aWxlcyA9IFtdCisgICAgICAgIHNlbGYuZGVjb3JhdG9yID0gJycKKyAgICAgICAgc2VsZi5kZXBy
ZWNhdGlvbl9ndWFyZCA9ICcnCisKKyAgICAgICAgIyBQYXJhbWV0ZXJzIHNwZWNpZmljIHRvIGd0
a2RvYy1zY2Fub2JqLgorICAgICAgICBzZWxmLmNmbGFncyA9ICcnCisgICAgICAgIHNlbGYubGRm
bGFncyA9ICcnCisgICAgICAgIHNlbGYubGlicmFyeV9wYXRoID0gJycKKworICAgICAgICAjIFBh
cmFtZXRlcnMgc3BlY2lmaWMgdG8gZ2VuZXJhdGlvbi4KKyAgICAgICAgc2VsZi5vdXRwdXRfZGly
ID0gJycKKyAgICAgICAgc2VsZi5kb2NfZGlyID0gJycKKyAgICAgICAgc2VsZi5tYWluX3NnbWxf
ZmlsZSA9ICcnCisKKyAgICAgICAgc2VsZi5pbnRlcmFjdGl2ZSA9IEZhbHNlCisKKyAgICAgICAg
c2VsZi5sb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcignZ3RrZG9jJykKKworICAgICAgICBmb3Ig
a2V5LCB2YWx1ZSBpbiBhcmdzLml0ZXJpdGVtcygpOgorICAgICAgICAgICAgc2V0YXR0cihzZWxm
LCBrZXksIHZhbHVlKQorCisgICAgICAgIGRlZiByYWlzZV9lcnJvcl9pZl9ub3Rfc3BlY2lmaWVk
KGtleSk6CisgICAgICAgICAgICBpZiBub3QgZ2V0YXR0cihzZWxmLCBrZXkpOgorICAgICAgICAg
ICAgICAgIHJhaXNlIEV4Y2VwdGlvbignJXMgbm90IHNwZWNpZmllZC4nICUga2V5KQorCisgICAg
ICAgIHJhaXNlX2Vycm9yX2lmX25vdF9zcGVjaWZpZWQoJ291dHB1dF9kaXInKQorICAgICAgICBy
YWlzZV9lcnJvcl9pZl9ub3Rfc3BlY2lmaWVkKCdzb3VyY2VfZGlycycpCisgICAgICAgIHJhaXNl
X2Vycm9yX2lmX25vdF9zcGVjaWZpZWQoJ21vZHVsZV9uYW1lJykKKworICAgICAgICAjIE1ha2Ug
YWxsIHBhdGhzIGFic29sdXRlIGluIGNhc2Ugd2Ugd2VyZSBwYXNzZWQgcmVsYXRpdmUgcGF0aHMs
IHNpbmNlCisgICAgICAgICMgd2UgY2hhbmdlIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5
IHdoZW4gZXhlY3V0aW5nIHN1YmNvbW1hbmRzLgorICAgICAgICBzZWxmLm91dHB1dF9kaXIgPSBv
cy5wYXRoLmFic3BhdGgoc2VsZi5vdXRwdXRfZGlyKQorICAgICAgICBzZWxmLnNvdXJjZV9kaXJz
ID0gW29zLnBhdGguYWJzcGF0aCh4KSBmb3IgeCBpbiBzZWxmLnNvdXJjZV9kaXJzXQorICAgICAg
ICBpZiBzZWxmLmxpYnJhcnlfcGF0aDoKKyAgICAgICAgICAgIHNlbGYubGlicmFyeV9wYXRoID0g
b3MucGF0aC5hYnNwYXRoKHNlbGYubGlicmFyeV9wYXRoKQorCisgICAgICAgIGlmIG5vdCBzZWxm
Lm1haW5fc2dtbF9maWxlOgorICAgICAgICAgICAgc2VsZi5tYWluX3NnbWxfZmlsZSA9IHNlbGYu
bW9kdWxlX25hbWUgKyAiLWRvY3Muc2dtbCIKKworICAgIGRlZiBnZW5lcmF0ZShzZWxmLCBodG1s
PVRydWUpOgorICAgICAgICBzZWxmLnNhd193YXJuaW5ncyA9IEZhbHNlCisKKyAgICAgICAgc2Vs
Zi5fY29weV9kb2NfZmlsZXNfdG9fb3V0cHV0X2RpcihodG1sKQorICAgICAgICBzZWxmLl93cml0
ZV92ZXJzaW9uX3htbCgpCisgICAgICAgIHNlbGYuX3J1bl9ndGtkb2Nfc2NhbigpCisgICAgICAg
IHNlbGYuX3J1bl9ndGtkb2Nfc2NhbmdvYmooKQorICAgICAgICBzZWxmLl9ydW5fZ3RrZG9jX21r
dG1wbCgpCisgICAgICAgIHNlbGYuX3J1bl9ndGtkb2NfbWtkYigpCisKKyAgICAgICAgaWYgbm90
IGh0bWw6CisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBzZWxmLl9ydW5fZ3RrZG9jX21r
aHRtbCgpCisgICAgICAgIHNlbGYuX3J1bl9ndGtkb2NfZml4eHJlZigpCisKKyAgICBkZWYgX2Rl
bGV0ZV9maWxlX2lmX2V4aXN0cyhzZWxmLCBwYXRoKToKKyAgICAgICAgaWYgbm90IG9zLmFjY2Vz
cyhwYXRoLCBvcy5GX09LIHwgb3MuUl9PSyk6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAg
c2VsZi5sb2dnZXIuZGVidWcoJ2RlbGV0aW5nICVzJywgcGF0aCkKKyAgICAgICAgb3MudW5saW5r
KHBhdGgpCisKKyAgICBkZWYgX2NyZWF0ZV9kaXJlY3RvcnlfaWZfbm9uZXhpc3RlbnQoc2VsZiwg
cGF0aCk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG9zLm1ha2VkaXJzKHBhdGgpCisgICAg
ICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycm9yOgorICAgICAgICAgICAgaWYgZXJyb3IuZXJybm8g
IT0gZXJybm8uRUVYSVNUOgorICAgICAgICAgICAgICAgIHJhaXNlCisKKyAgICBkZWYgX3JhaXNl
X2V4Y2VwdGlvbl9pZl9maWxlX2luYWNjZXNzaWJsZShzZWxmLCBwYXRoKToKKyAgICAgICAgaWYg
bm90IG9zLnBhdGguZXhpc3RzKHBhdGgpIG9yIG5vdCBvcy5hY2Nlc3MocGF0aCwgb3MuUl9PSyk6
CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIkNvdWxkIG5vdCBhY2Nlc3MgZmlsZSBhdDog
JXMiICUgcGF0aCkKKworICAgIGRlZiBfb3V0cHV0X2hhc193YXJuaW5ncyhzZWxmLCBvdXRwdXRz
KToKKyAgICAgICAgZm9yIG91dHB1dCBpbiBvdXRwdXRzOgorICAgICAgICAgICAgaWYgb3V0cHV0
IGFuZCBvdXRwdXQuZmluZCgnd2FybmluZycpOgorICAgICAgICAgICAgICAgIHJldHVybiBUcnVl
CisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIF9hc2tfeWVzX29yX25vX3F1ZXN0aW9u
KHNlbGYsIHF1ZXN0aW9uKToKKyAgICAgICAgaWYgbm90IHNlbGYuaW50ZXJhY3RpdmU6CisgICAg
ICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgICAgIHF1ZXN0aW9uICs9ICcgW3kvTl0gJworICAg
ICAgICBhbnN3ZXIgPSBOb25lCisgICAgICAgIHdoaWxlIGFuc3dlciAhPSAneScgYW5kIGFuc3dl
ciAhPSAnbicgYW5kIGFuc3dlciAhPSAnJzoKKyAgICAgICAgICAgIGFuc3dlciA9IHJhd19pbnB1
dChxdWVzdGlvbikubG93ZXIoKQorICAgICAgICByZXR1cm4gYW5zd2VyID09ICd5JworCisgICAg
ZGVmIF9ydW5fY29tbWFuZChzZWxmLCBhcmdzLCBlbnY9Tm9uZSwgY3dkPU5vbmUsIHByaW50X291
dHB1dD1UcnVlKToKKyAgICAgICAgaWYgcHJpbnRfb3V0cHV0OgorICAgICAgICAgICAgc2VsZi5s
b2dnZXIuaW5mbygiUnVubmluZyAlcyIsIGFyZ3NbMF0pCisgICAgICAgIHNlbGYubG9nZ2VyLmRl
YnVnKCJGdWxsIGNvbW1hbmQgYXJnczogJXMiLCBzdHIoYXJncykpCisKKyAgICAgICAgcHJvY2Vz
cyA9IHN1YnByb2Nlc3MuUG9wZW4oYXJncywgZW52PWVudiwgY3dkPWN3ZCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSkKKyAgICAg
ICAgc3Rkb3V0LCBzdGRlcnIgPSBwcm9jZXNzLmNvbW11bmljYXRlKCkKKworICAgICAgICBpZiBw
cmludF9vdXRwdXQ6CisgICAgICAgICAgICBpZiBzdGRvdXQ6CisgICAgICAgICAgICAgICAgc3lz
LnN0ZG91dC53cml0ZShzdGRvdXQpCisgICAgICAgICAgICBpZiBzdGRlcnI6CisgICAgICAgICAg
ICAgICAgc3lzLnN0ZGVyci53cml0ZShzdGRlcnIpCisKKyAgICAgICAgaWYgcHJvY2Vzcy5yZXR1
cm5jb2RlICE9IDA6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJyVzIHByb2R1Y2VkIGEg
bm9uLXplcm8gcmV0dXJuIGNvZGUgJWknCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUg
KGFyZ3NbMF0sIHByb2Nlc3MucmV0dXJuY29kZSkpCisKKyAgICAgICAgaWYgJ3dhcm5pbmcnIGlu
IHN0ZGVyciBvciAnd2FybmluZycgaW4gc3Rkb3V0OgorICAgICAgICAgICAgc2VsZi5zYXdfd2Fy
bmluZ3MgPSBUcnVlCisgICAgICAgICAgICBpZiBub3Qgc2VsZi5fYXNrX3llc19vcl9ub19xdWVz
dGlvbignJXMgcHJvZHVjZWQgd2FybmluZ3MsICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICd0cnkgdG8gY29udGludWU/JyAlIGFyZ3NbMF0pOgorICAg
ICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignJXMgc3RlcCBmYWlsZWQnICUgYXJnc1swXSkK
KworICAgICAgICByZXR1cm4gc3Rkb3V0LnN0cmlwKCkKKworICAgIGRlZiBfY29weV9kb2NfZmls
ZXNfdG9fb3V0cHV0X2RpcihzZWxmLCBodG1sPVRydWUpOgorICAgICAgICBpZiBub3Qgc2VsZi5k
b2NfZGlyOgorICAgICAgICAgICAgc2VsZi5sb2dnZXIuaW5mbygnTm90IGNvcHlpbmcgYW55IGZp
bGVzIGZyb20gZG9jIGRpcmVjdG9yeSwnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcg
YmVjYXVzZSBubyBkb2MgZGlyZWN0b3J5IGdpdmVuLicpCisgICAgICAgICAgICByZXR1cm4KKwor
ICAgICAgICBkZWYgY29weV9maWxlX3JlcGxhY2luZ19leGlzdGluZyhzcmMsIGRlc3QpOgorICAg
ICAgICAgICAgaWYgb3MucGF0aC5pc2RpcihzcmMpOgorICAgICAgICAgICAgICAgIHNlbGYubG9n
Z2VyLmRlYnVnKCdza2lwcGVkIGRpcmVjdG9yeSAlcycsICBzcmMpCisgICAgICAgICAgICAgICAg
cmV0dXJuCisgICAgICAgICAgICBpZiBub3Qgb3MuYWNjZXNzKHNyYywgb3MuRl9PSyB8IG9zLlJf
T0spOgorICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCdza2lwcGVkIHVucmVhZGFi
bGUgJXMnLCBzcmMpCisgICAgICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgICAgIHNlbGYu
X2RlbGV0ZV9maWxlX2lmX2V4aXN0cyhkZXN0KQorCisgICAgICAgICAgICBzZWxmLmxvZ2dlci5k
ZWJ1ZygnY3JlYXRlZCAlcycsIGRlc3QpCisgICAgICAgICAgICBvcy5saW5rKHNyYywgZGVzdCkK
KworICAgICAgICBkZWYgY29weV9hbGxfZmlsZXNfaW5fZGlyZWN0b3J5KHNyYywgZGVzdCk6Cisg
ICAgICAgICAgICBmb3IgcGF0aCBpbiBvcy5saXN0ZGlyKHNyYyk6CisgICAgICAgICAgICAgICAg
Y29weV9maWxlX3JlcGxhY2luZ19leGlzdGluZyhvcy5wYXRoLmpvaW4oc3JjLCBwYXRoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihk
ZXN0LCBwYXRoKSkKKworICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCdDb3B5aW5nIHRlbXBsYXRl
IGZpbGVzIHRvIG91dHB1dCBkaXJlY3RvcnkuLi4nKQorICAgICAgICBzZWxmLl9jcmVhdGVfZGly
ZWN0b3J5X2lmX25vbmV4aXN0ZW50KHNlbGYub3V0cHV0X2RpcikKKyAgICAgICAgY29weV9hbGxf
ZmlsZXNfaW5fZGlyZWN0b3J5KHNlbGYuZG9jX2Rpciwgc2VsZi5vdXRwdXRfZGlyKQorCisgICAg
ICAgIGlmIG5vdCBodG1sOgorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgc2VsZi5sb2dn
ZXIuaW5mbygnQ29weWluZyBIVE1MIGZpbGVzIHRvIG91dHB1dCBkaXJlY3RvcnkuLi4nKQorICAg
ICAgICBodG1sX3NyY19kaXIgPSBvcy5wYXRoLmpvaW4oc2VsZi5kb2NfZGlyLCAnaHRtbCcpCisg
ICAgICAgIGh0bWxfZGVzdF9kaXIgPSBvcy5wYXRoLmpvaW4oc2VsZi5vdXRwdXRfZGlyLCAnaHRt
bCcpCisgICAgICAgIHNlbGYuX2NyZWF0ZV9kaXJlY3RvcnlfaWZfbm9uZXhpc3RlbnQoaHRtbF9k
ZXN0X2RpcikKKworICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhodG1sX3NyY19kaXIpOgorICAg
ICAgICAgICAgY29weV9hbGxfZmlsZXNfaW5fZGlyZWN0b3J5KGh0bWxfc3JjX2RpciwgaHRtbF9k
ZXN0X2RpcikKKworICAgIGRlZiBfd3JpdGVfdmVyc2lvbl94bWwoc2VsZik6CisgICAgICAgIGlm
IG5vdCBzZWxmLnZlcnNpb246CisgICAgICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCdObyB2ZXJz
aW9uIHNwZWNpZmllZCwgc28gbm90IHdyaXRpbmcgdmVyc2lvbi54bWwnKQorICAgICAgICAgICAg
cmV0dXJuCisKKyAgICAgICAgdmVyc2lvbl94bWxfcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLm91
dHB1dF9kaXIsICd2ZXJzaW9uLnhtbCcpCisgICAgICAgIHNyY192ZXJzaW9uX3htbF9wYXRoID0g
b3MucGF0aC5qb2luKHNlbGYuZG9jX2RpciwgJ3ZlcnNpb24ueG1sJykKKworICAgICAgICAjIERv
bid0IG92ZXJ3cml0ZSB2ZXJzaW9uLnhtbCBpZiBpdCB3YXMgaW4gdGhlIGRvYyBkaXJlY3Rvcnku
CisgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHZlcnNpb25feG1sX3BhdGgpIGFuZCBcCisgICAg
ICAgICAgIG9zLnBhdGguZXhpc3RzKHNyY192ZXJzaW9uX3htbF9wYXRoKToKKyAgICAgICAgICAg
IHJldHVybgorCisgICAgICAgIG91dHB1dF9maWxlID0gb3Blbih2ZXJzaW9uX3htbF9wYXRoLCAn
dycpCisgICAgICAgIG91dHB1dF9maWxlLndyaXRlKHNlbGYudmVyc2lvbikKKyAgICAgICAgb3V0
cHV0X2ZpbGUuY2xvc2UoKQorCisgICAgZGVmIF9ydW5fZ3RrZG9jX3NjYW4oc2VsZik6CisgICAg
ICAgIGFyZ3MgPSBbJ2d0a2RvYy1zY2FuJywKKyAgICAgICAgICAgICAgICAnLS1tb2R1bGU9JXMn
ICUgc2VsZi5tb2R1bGVfbmFtZSwKKyAgICAgICAgICAgICAgICAnLS1yZWJ1aWxkLXR5cGVzJ10K
KworICAgICAgICAjIEVhY2ggc291cmNlIGRpcmVjdG9yeSBzaG91bGQgYmUgaGF2ZSBpdHMgb3du
ICItLXNvdXJjZS1kaXI9IiBwcmVmaXguCisgICAgICAgIGFyZ3MuZXh0ZW5kKFsnLS1zb3VyY2Ut
ZGlyPSVzJyAlIHBhdGggZm9yIHBhdGggaW4gc2VsZi5zb3VyY2VfZGlyc10pCisKKyAgICAgICAg
aWYgc2VsZi5kZWNvcmF0b3I6CisgICAgICAgICAgICBhcmdzLmFwcGVuZCgnLS1pZ25vcmUtZGVj
b3JhdG9ycz0lcycgJSBzZWxmLmRlY29yYXRvcikKKyAgICAgICAgaWYgc2VsZi5kZXByZWNhdGlv
bl9ndWFyZDoKKyAgICAgICAgICAgIGFyZ3MuYXBwZW5kKCctLWRlcHJlY2F0ZWQtZ3VhcmRzPSVz
JyAlIHNlbGYuZGVwcmVjYXRpb25fZ3VhcmQpCisgICAgICAgIGlmIHNlbGYub3V0cHV0X2RpcjoK
KyAgICAgICAgICAgIGFyZ3MuYXBwZW5kKCctLW91dHB1dC1kaXI9JXMnICUgc2VsZi5vdXRwdXRf
ZGlyKQorCisgICAgICAgICMgZ3RrZG9jLXNjYW4gd2FudHMgdGhlIGJhc2VuYW1lcyBvZiBpZ25v
cmVkIGhlYWRlcnMsIHNvIHN0cmlwIHRoZQorICAgICAgICAjIGRpcm5hbWUuIERpZmZlcmVudCBm
cm9tICItLXNvdXJjZS1kaXIiLCB0aGUgaGVhZGVycyBzaG91bGQgYmUKKyAgICAgICAgIyBzcGVj
aWZpZWQgYXMgb25lIGxvbmcgc3RyaW5nLgorICAgICAgICBpZiBzZWxmLmlnbm9yZWRfZmlsZXM6
CisgICAgICAgICAgICBpZ25vcmVkX2ZpbGVzX2Jhc2VuYW1lcyA9IFwKKyAgICAgICAgICAgICAg
ICBbb3MucGF0aC5iYXNlbmFtZSh4KSBmb3IgeCBpbiBzZWxmLmlnbm9yZWRfZmlsZXNdCisgICAg
ICAgICAgICBhcmdzLmFwcGVuZCgnLS1pZ25vcmUtaGVhZGVycz0lcycgJSAnICcuam9pbihpZ25v
cmVkX2ZpbGVzX2Jhc2VuYW1lcykpCisKKyAgICAgICAgc2VsZi5fcnVuX2NvbW1hbmQoYXJncykK
KworICAgIGRlZiBfcnVuX2d0a2RvY19zY2FuZ29iaihzZWxmKToKKyAgICAgICAgZW52ID0gb3Mu
ZW52aXJvbgorICAgICAgICBsZGZsYWdzID0gc2VsZi5sZGZsYWdzCisgICAgICAgIGlmIHNlbGYu
bGlicmFyeV9wYXRoOgorICAgICAgICAgICAgbGRmbGFncyA9ICcgIi1MJXMiICcgJSBzZWxmLmxp
YnJhcnlfcGF0aCArIGxkZmxhZ3MKKyAgICAgICAgICAgIGVudlsnUlVOJ10gPSAnTERfTElCUkFS
WV9QQVRIPSIlcyIgJyAlIHNlbGYubGlicmFyeV9wYXRoCisgICAgICAgIGlmIGxkZmxhZ3M6Cisg
ICAgICAgICAgICBlbnZbJ0xERkxBR1MnXSA9IGxkZmxhZ3MKKyAgICAgICAgaWYgc2VsZi5jZmxh
Z3M6CisgICAgICAgICAgICBlbnZbJ0NGTEFHUyddID0gc2VsZi5jZmxhZ3MKKworICAgICAgICBp
ZiAnQ0ZMQUdTJyBpbiBlbnY6CisgICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygnQ0ZMQUdT
PSVzJywgZW52WydDRkxBR1MnXSkKKyAgICAgICAgaWYgJ0xERkxBR1MnIGluIGVudjoKKyAgICAg
ICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCdMREZMQUdTICVzJywgZW52WydMREZMQUdTJ10pCisg
ICAgICAgIGlmICdSVU4nIGluIGVudjoKKyAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCdS
VU49JXMnLCBlbnZbJ1JVTiddKQorICAgICAgICBzZWxmLl9ydW5fY29tbWFuZChbJ2d0a2RvYy1z
Y2FuZ29iaicsICctLW1vZHVsZT0lcycgJSBzZWxmLm1vZHVsZV9uYW1lXSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgZW52PWVudiwgY3dkPXNlbGYub3V0cHV0X2RpcikKKworICAgIGRlZiBf
cnVuX2d0a2RvY19ta3RtcGwoc2VsZik6CisgICAgICAgIGFyZ3MgPSBbJ2d0a2RvYy1ta3RtcGwn
LCAnLS1tb2R1bGU9JXMnICUgc2VsZi5tb2R1bGVfbmFtZV0KKyAgICAgICAgc2VsZi5fcnVuX2Nv
bW1hbmQoYXJncywgY3dkPXNlbGYub3V0cHV0X2RpcikKKworICAgIGRlZiBfcnVuX2d0a2RvY19t
a2RiKHNlbGYpOgorICAgICAgICBzZ21sX2ZpbGUgPSBvcy5wYXRoLmpvaW4oc2VsZi5vdXRwdXRf
ZGlyLCBzZWxmLm1haW5fc2dtbF9maWxlKQorICAgICAgICBzZWxmLl9yYWlzZV9leGNlcHRpb25f
aWZfZmlsZV9pbmFjY2Vzc2libGUoc2dtbF9maWxlKQorCisgICAgICAgIGFyZ3MgPSBbJ2d0a2Rv
Yy1ta2RiJywKKyAgICAgICAgICAgICAgICAnLS1tb2R1bGU9JXMnICUgc2VsZi5tb2R1bGVfbmFt
ZSwKKyAgICAgICAgICAgICAgICAnLS1tYWluLXNnbWwtZmlsZT0lcycgJSBzZ21sX2ZpbGUsCisg
ICAgICAgICAgICAgICAgJy0tc291cmNlLXN1ZmZpeGVzPWgsYyxjcHAsY2MnLAorICAgICAgICAg
ICAgICAgICctLW91dHB1dC1mb3JtYXQ9eG1sJywKKyAgICAgICAgICAgICAgICAnLS1zZ21sLW1v
ZGUnXQorCisgICAgICAgICMgRWFjaCBkaXJlY3Rvcnkgc2hvdWxkIGJlIGhhdmUgaXRzIG93biAi
LS1zb3VyY2UtZGlyPSIgcHJlZml4LgorICAgICAgICBhcmdzLmV4dGVuZChbJy0tc291cmNlLWRp
cj0lcycgJSBwYXRoIGZvciBwYXRoIGluIHNlbGYuc291cmNlX2RpcnNdKQorICAgICAgICBzZWxm
Ll9ydW5fY29tbWFuZChhcmdzLCBjd2Q9c2VsZi5vdXRwdXRfZGlyKQorCisgICAgZGVmIF9ydW5f
Z3RrZG9jX21raHRtbChzZWxmKToKKyAgICAgICAgaHRtbF9kZXN0X2RpciA9IG9zLnBhdGguam9p
bihzZWxmLm91dHB1dF9kaXIsICdodG1sJykKKyAgICAgICAgaWYgbm90IG9zLnBhdGguaXNkaXIo
aHRtbF9kZXN0X2Rpcik6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIiVzIGlzIG5vdCBh
IGRpcmVjdG9yeSwgY291bGQgbm90IGdlbmVyYXRlIEhUTUwiCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJSBodG1sX2Rlc3RfZGlyKQorICAgICAgICBlbGlmIG5vdCBvcy5hY2Nlc3MoaHRt
bF9kZXN0X2Rpciwgb3MuWF9PSyB8IG9zLlJfT0sgfCBvcy5XX09LKToKKyAgICAgICAgICAgIHJh
aXNlIEV4Y2VwdGlvbigiQ291bGQgbm90IGFjY2VzcyAlcyB0byBnZW5lcmF0ZSBIVE1MIgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICUgaHRtbF9kZXN0X2RpcikKKworICAgICAgICAjIGd0
a2RvYy1ta2h0bWwgZXhwZWN0cyB0aGUgU0dNTCBwYXRoIHRvIGJlIGFic29sdXRlLgorICAgICAg
ICBzZ21sX2ZpbGUgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5hYnNwYXRoKHNlbGYub3V0cHV0X2Rp
ciksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm1haW5fc2dtbF9maWxl
KQorICAgICAgICBzZWxmLl9yYWlzZV9leGNlcHRpb25faWZfZmlsZV9pbmFjY2Vzc2libGUoc2dt
bF9maWxlKQorCisgICAgICAgIHNlbGYuX3J1bl9jb21tYW5kKFsnZ3RrZG9jLW1raHRtbCcsIHNl
bGYubW9kdWxlX25hbWUsIHNnbWxfZmlsZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGN3
ZD1odG1sX2Rlc3RfZGlyKQorCisgICAgZGVmIF9ydW5fZ3RrZG9jX2ZpeHhyZWYoc2VsZik6Cisg
ICAgICAgIHNlbGYuX3J1bl9jb21tYW5kKFsnZ3RrZG9jLWZpeHhyZWYnLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJy0tbW9kdWxlLWRpcj1odG1sJywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICctLWh0bWwtZGlyPWh0bWwnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY3dk
PXNlbGYub3V0cHV0X2RpcikKKworCitjbGFzcyBQa2dDb25maWdHVEtEb2MoR1RLRG9jKToKKwor
ICAgICIiIkNsYXNzIHJlYWRzIGEgbGlicmFyeSdzIHBrZ2NvbmZpZyBmaWxlIHRvIGd1ZXNzIGd0
a2RvYyBwYXJhbWV0ZXJzLgorCisgICAgU29tZSBndGtkb2MgcGFyYW1ldGVycyBjYW4gYmUgZ3Vl
c3NlZCBieSByZWFkaW5nIGEgbGlicmFyeSdzIHBrZ2NvbmZpZworICAgIGZpbGUsIGluY2x1ZGlu
ZyB0aGUgY2ZsYWdzLCBsZGZsYWdzIGFuZCB2ZXJzaW9uIHBhcmFtZXRlcnMuIElmIHlvdQorICAg
IHByb3ZpZGUgdGhlc2UgcGFyYW1ldGVycyBhcyB3ZWxsLCB0aGV5IHdpbGwgYmUgYXBwZW5kZWQg
dG8gdGhlIG9uZXMKKyAgICBndWVzc2VkIHZpYSB0aGUgcGtnY29uZmlnIGZpbGUuCisKKyAgICBL
ZXl3b3JkIGFyZ3VtZW50czoKKyAgICAgIHBrZ19jb25maWdfcGF0aCAtLSBQYXRoIHRvIHRoZSBw
a2djb25maWcgZmlsZSBmb3IgdGhlIGxpYnJhcnkuIFJlcXVpcmVkLgorICAgICIiIgorCisgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIHBrZ19jb25maWdfcGF0aCwgKiphcmdzKToKKyAgICAgICAgc3Vw
ZXIoUGtnQ29uZmlnR1RLRG9jLCBzZWxmKS5fX2luaXRfXygqKmFyZ3MpCisKKyAgICAgICAgaWYg
bm90IG9zLnBhdGguZXhpc3RzKHBrZ19jb25maWdfcGF0aCk6CisgICAgICAgICAgICByYWlzZSBF
eGNlcHRpb24oJ0NvdWxkIG5vdCBmaW5kIHBrZy1jb25maWcgZmlsZSBhdDogJXMnCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJSBwa2dfY29uZmlnX3BhdGgpCisKKyAgICAgICAgc2VsZi5j
ZmxhZ3MgKz0gIiAiICsgc2VsZi5fcnVuX2NvbW1hbmQoWydwa2ctY29uZmlnJywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBrZ19jb25maWdfcGF0aCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLWNmbGFn
cyddLCBwcmludF9vdXRwdXQ9RmFsc2UpCisgICAgICAgIHNlbGYubGRmbGFncyArPSAiICIgKyBz
ZWxmLl9ydW5fY29tbWFuZChbJ3BrZy1jb25maWcnLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcGtnX2NvbmZpZ19wYXRoLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tbGlicyddLCBwcmludF9vdXRwdXQ9
RmFsc2UpCisgICAgICAgIHNlbGYudmVyc2lvbiA9IHNlbGYuX3J1bl9jb21tYW5kKFsncGtnLWNv
bmZpZycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwa2dfY29u
ZmlnX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1t
b2R2ZXJzaW9uJ10sIHByaW50X291dHB1dD1GYWxzZSkKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBi
L0NoYW5nZUxvZwppbmRleCBkZDU2NmM1YmRhOWVjYzRhMzRmMDEzOGYwMTNjN2JkZDdhZWM5Mzgz
Li41Y2Y0NmVjZDdmMjE4NTk2M2RjNzYyOWNmZDE0ZTJkYzIxODEwNTJkIDEwMDY0NAotLS0gYS9D
aGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMTEtMTcgIE1h
cnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIElu
dGVncmF0ZSBidWlsZC1ndGtkb2MgaW50byBidWlsZC13ZWJraXQgYW5kIG1ha2UKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyNjI2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbTog
UmVtb3ZlIHJlZmVyZW5jZXMgdG8gb2xkIGd0a2RvYyBmaWxlcy4KKyAgICAgICAgKiBjb25maWd1
cmUuYWM6IERpdHRvLgorCiAyMDExLTExLTE3ICBKb2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gYWRkIGd5cC1tYWMtdG9vbCB0byAuZ2l0
aWdub3JlCmRpZmYgLS1naXQgYS9HTlVtYWtlZmlsZS5hbSBiL0dOVW1ha2VmaWxlLmFtCmluZGV4
IGY5MWU4OGQ4OTZjMTE1YzRhYTNkM2I5N2QxYThlZDE2NjU1NWM1OTYuLjAyYTVhMDExYTMzN2Ix
MDc5OTdmNGQ5MmVmZGVhNjlhZDgxOTBjZWUgMTAwNjQ0Ci0tLSBhL0dOVW1ha2VmaWxlLmFtCisr
KyBiL0dOVW1ha2VmaWxlLmFtCkBAIC0yMDcsNyArMjA3LDYgQEAgaW5jbHVkZSBTb3VyY2UvV2Vi
S2l0L2d0ay9HTlVtYWtlZmlsZS5hbQogaW5jbHVkZSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9n
b2JqZWN0L0dOVW1ha2VmaWxlLmFtCiBpbmNsdWRlIFRvb2xzL0dOVW1ha2VmaWxlLmFtCiBpbmNs
dWRlIFNvdXJjZS9XZWJLaXQvZ3RrL3BvL0dOVW1ha2VmaWxlLmFtCi1pbmNsdWRlIFNvdXJjZS9X
ZWJLaXQvZ3RrL2RvY3MvR05VbWFrZWZpbGUuYW0KIGluY2x1ZGUgVG9vbHMvRHVtcFJlbmRlclRy
ZWUvZ3RrL0dOVW1ha2VmaWxlLkltYWdlRGlmZi5hbQogCiBpZiBFTkFCTEVfV0VCS0lUMgpkaWZm
IC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCmluZGV4IDNkZTIzYzc3MzUyYWEy
ZmQxMmJlYjA3YmVlNDJmNThhNjE2Njc1NjIuLmI1NGE4ZDc3MTVhODgyYmEyZTM3YmY5ZDYyNmY5
Y2I2OWUzYzA1MzUgMTAwNjQ0Ci0tLSBhL2NvbmZpZ3VyZS5hYworKysgYi9jb25maWd1cmUuYWMK
QEAgLTEyMTAsNyArMTIxMCw2IEBAIEdOVW1ha2VmaWxlCiAKIEFDX0NPTkZJR19GSUxFUyhbCiBT
b3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0dmVyc2lvbi5oCi1Eb2N1bWVudGF0aW9uL3Zl
cnNpb24ueG1sOlNvdXJjZS9XZWJLaXQvZ3RrL2RvY3MvdmVyc2lvbi54bWwuaW4KIF0pCiAKIEFD
X0NPTkZJR19GSUxFUyhbCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115835</attachid>
            <date>2011-11-18 10:49:21 -0800</date>
            <delta_ts>2011-11-23 15:33:26 -0800</delta_ts>
            <desc>Properly handle --enable-gtk-doc</desc>
            <filename>bug-72626-20111118104920.patch</filename>
            <type>text/plain</type>
            <size>63068</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwNzI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0
ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggY2YzNzkxNjUy
MTEwZmNhNTMwMDZjZTc1ZTZlYjU0ZmI5NDljZTEwMC4uYmYzNjYzYjZkNDE3Mzg5NzQ5MTA4OTc0
YWFkMGY0NjZiNGJjYjNlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE1IEBACiAyMDEx
LTExLTE3ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAorICAgICAg
ICBbR1RLXSBJbnRlZ3JhdGUgYnVpbGQtZ3RrZG9jIGludG8gYnVpbGQtd2Via2l0IGFuZCBtYWtl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjYyNgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZG9jcy9H
TlVtYWtlZmlsZS5hbTogUmVtb3ZlZC4KKyAgICAgICAgKiBkb2NzL3ZlcnNpb24ueG1sLmluOiBS
ZW1vdmVkLgorCisyMDExLTExLTE3ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlh
LmNvbT4KKwogICAgICAgICBbR1RLXSBSZW1vdmUgdGhlIGxhc3QgcmVtYWluaW5nIFdlYktpdDEg
Z3RrZG9jIHdhcm5pbmdzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03MjYyNwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZDEyZjRiZTZmNDU0NmJjZTM4ZDE3ODJjYjFi
NDA5MzZiNTE5ZjhkMy4uYTc5MmVlNjIyMTJlYzg0ZWYxZDIyYzliZTcwMzc4ZDc1YjFkZjkxNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE1IEBACiAyMDExLTExLTE3ICBNYXJ0aW4gUm9iaW5zb24g
IDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAorICAgICAgICBbR1RLXSBJbnRlZ3JhdGUgYnVpbGQt
Z3RrZG9jIGludG8gYnVpbGQtd2Via2l0IGFuZCBtYWtlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjYyNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06IFJlbW92ZWQgcmVmZXJl
bmNlcyB0byBidWlsZC1ndGtkb2MgYW5kIGd0a2RvYy5weS4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2d0ay9kb2NzL2J1aWxkLWd0a2RvYzogUmVtb3ZlZC4KKworMjAxMS0xMS0xNyAgTWFydGlu
IFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CisKICAgICAgICAgW0dUS10gVGhlIHBy
b2Nlc3MgZnJlZXplcyB3aGVuIHlvdSByaWdodCBjbGljayBvbiB3aW5kb3dsZXNzIEZsYXNoCiAg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTEyMwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJL
aXQvZ3RrL0dOVW1ha2VmaWxlLmFtCmluZGV4IDc1MmM5ZTY1MTUyNWY5ZGMyMTA5ZDFiNjMxOTA4
YzYxOTQ2NzY1ZmIuLmU5ZWUwZTY1YmUxNDY3MTEwNzQ5NjNkNTkzMmJiYTViZWZmZDJjYzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9X
ZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtCkBAIC0zODIsMTAgKzM4MiwxMCBAQCBnc2V0dGluZ3Nf
U0NIRU1BUyA9ICQodG9wX2J1aWxkZGlyKS9Tb3VyY2UvV2ViS2l0L2d0ay9vcmcud2Via2l0Z3Rr
LUBXRUJLSVRHVEtfQQogQEdTRVRUSU5HU19SVUxFU0AKIAogRVhUUkFfRElTVCArPSBcCisJJChz
aGVsbCBmaW5kICQoV2ViS2l0KS9kb2NzKSBcCiAJJChXZWJLaXQpL0NoYW5nZUxvZyBcCiAJJChX
ZWJLaXQpL05FV1MgXAogCSQoV2ViS2l0KS93ZWJraXRtYXJzaGFsLmxpc3QgXAotCSQoV2ViS2l0
KS9HTlVtYWtlZmlsZS5ndGstZG9jLmFtIFwKIAkkKFdlYktpdCkvcG8vKiBcCiAJJChXZWJLaXQp
L3Jlc291cmNlcy8qIFwKIAkkKFdlYktpdCkvdGVzdHMvcmVzb3VyY2VzLyogXApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZpbGUuZ3RrLWRvYy5hbSBiL1NvdXJjZS9XZWJL
aXQvZ3RrL0dOVW1ha2VmaWxlLmd0ay1kb2MuYW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDA1MmM3ODhkOWM5ZDNjMTU0MjIyZGU5ZmVlMDRhZGZlZmMxOGFjMjIuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvR05V
bWFrZWZpbGUuZ3RrLWRvYy5hbQorKysgL2Rldi9udWxsCkBAIC0xLDIwOCArMCwwIEBACi0jIC0q
LSBtb2RlOiBtYWtlZmlsZSAtKi0KLQotR1RLRE9DX0NDID0gJChMSUJUT09MKSAtLXRhZz1DQyAt
LW1vZGU9Y29tcGlsZSAkKENDKSAkKEdUS0RPQ19JTkNMVURFUykgJChHVEtET0NfREVQU19DRkxB
R1MpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoQU1fQ0ZMQUdTKSAkKENGTEFHUykKLUdU
S0RPQ19MRCA9ICQoTElCVE9PTCkgLS10YWc9Q0MgLS1tb2RlPWxpbmsgJChDQykgJChHVEtET0Nf
REVQU19MSUJTKSAkKEFNX0NGTEFHUykgJChDRkxBR1MpICQoQU1fTERGTEFHUykgJChMREZMQUdT
KQotR1RLRE9DX1JVTiA9ICQoTElCVE9PTCkgLS1tb2RlPWV4ZWN1dGUKLQotVEFSR0VUX0RJUj0k
KEhUTUxfRElSKS8kKERPQ19NT0RVTEUpCi0KLVNFVFVQX0ZJTEVTID0gXAotCSQoRE9DX01BSU5f
U0dNTF9GSUxFKQkJXAotCXdlYmtpdGVudmlyb25tZW50LnhtbAkJXAotCSQoRE9DX01PRFVMRSkt
c2VjdGlvbnMudHh0CVwKLQkkKERPQ19NT0RVTEUpLW92ZXJyaWRlcy50eHQKLQotRVhUUkFfRElT
VCArPSBcCi0JJChIVE1MX0lNQUdFUykJCQlcCi0JJChTRVRVUF9GSUxFUykKLQotRE9DX1NUQU1Q
Uz1kb2Mtc2V0dXAtYnVpbGQuc3RhbXAgc2Nhbi1idWlsZC5zdGFtcCB0bXBsLWJ1aWxkLnN0YW1w
IHNnbWwtYnVpbGQuc3RhbXAgXAotCWh0bWwtYnVpbGQuc3RhbXAgcGRmLWJ1aWxkLnN0YW1wIFwK
LQl0bXBsLnN0YW1wIHNnbWwuc3RhbXAgaHRtbC5zdGFtcCBwZGYuc3RhbXAKLQotU0NBTk9CSl9G
SUxFUyA9IAkJIFwKLQkkKERPQ19NT0RVTEUpLmFyZ3MgCSBcCi0JJChET0NfTU9EVUxFKS5oaWVy
YXJjaHkgIFwKLQkkKERPQ19NT0RVTEUpLmludGVyZmFjZXMgXAotCSQoRE9DX01PRFVMRSkucHJl
cmVxdWlzaXRlcyBcCi0JJChET0NfTU9EVUxFKS5zaWduYWxzCi0KLVJFUE9SVF9GSUxFUyA9IFwK
LQkkKERPQ19NT0RVTEUpLXVuZG9jdW1lbnRlZC50eHQgXAotCSQoRE9DX01PRFVMRSktdW5kZWNs
YXJlZC50eHQgXAotCSQoRE9DX01PRFVMRSktdW51c2VkLnR4dAotCi1DTEVBTkZJTEVTICs9ICQo
U0NBTk9CSl9GSUxFUykgJChSRVBPUlRfRklMRVMpICQoRE9DX1NUQU1QUykKLQotaWYgRU5BQkxF
X0dUS19ET0MKLUhUTUxfQlVJTERfU1RBTVA9aHRtbC1idWlsZC5zdGFtcAotZW5kaWYKLQotZG9j
X3NyY2RpciA6PSAkKGFic19zcmNkaXIpL1NvdXJjZS9XZWJLaXQvZ3RrL2RvY3MKLQotZG9jczog
JChIVE1MX0JVSUxEX1NUQU1QKQotCi0kKFJFUE9SVF9GSUxFUyk6IHNnbWwtYnVpbGQuc3RhbXAK
LQotIyMjIyBzZXR1cCAjIyMjCi0KLWRvYy1zZXR1cC1idWlsZC5zdGFtcDogbGlid2Via2l0Z3Rr
LUBXRUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05ALkBXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJ
T05ALmxhCi0JLUBta2RpciAtcCBEb2N1bWVudGF0aW9uCi0JLUBsbiAtZnMgLi4vZG9sdGxpYnRv
b2wgRG9jdW1lbnRhdGlvbi8KLQktQGxuIC1mcyAuLi9kb2x0Y29tcGlsZSBEb2N1bWVudGF0aW9u
LwotCS1AbG4gLWZzIC4uL2xpYnRvb2wgRG9jdW1lbnRhdGlvbi8KLQktQGlmIHRlc3QgIiQoYWJz
X3NyY2RpcikiICE9ICIkKGFic19idWlsZGRpcikiIDsgdGhlbiBcCi0JICAgIGVjaG8gJyAgRE9D
ICAgUHJlcGFyaW5nIGJ1aWxkJzsgXAotCSAgICBmaWxlcz1gZWNobyAkKFNFVFVQX0ZJTEVTKSAk
KERPQ19NT0RVTEUpLnR5cGVzYDsgXAotCSAgICBpZiB0ZXN0ICJ4JCRmaWxlcyIgIT0gIngiIDsg
dGhlbiBcCi0JICAgICAgICBmb3IgZmlsZSBpbiAkJGZpbGVzIDsgZG8gXAotCSAgICAgICAgICAg
IHRlc3QgLWYgJChkb2Nfc3JjZGlyKS8kJGZpbGUgJiYgXAotCSAgICAgICAgICAgICAgICBjcCAt
cHUgJChkb2Nfc3JjZGlyKS8kJGZpbGUgJChhYnNfYnVpbGRkaXIpL0RvY3VtZW50YXRpb24vIHx8
IHRydWU7IFwKLQkgICAgICAgIGRvbmU7IFwKLQkgICAgZmk7IFwKLQkgICAgdGVzdCAtZCAkKGRv
Y19zcmNkaXIpL3RtcGwgJiYgXAotCSAgICAgICAgeyBjcCAtcnAgJChkb2Nfc3JjZGlyKS90bXBs
ICQoYWJzX2J1aWxkZGlyKS9Eb2N1bWVudGF0aW9uLzsgXAotCSAgICAgICAgY2htb2QgLVIgdSt3
ICQoYWJzX2J1aWxkZGlyKS9Eb2N1bWVudGF0aW9uL3RtcGw7IH0gXAotCWZpCi0JQHRvdWNoIGRv
Yy1zZXR1cC1idWlsZC5zdGFtcAotCi0jIyMjIHNjYW4gIyMjIwotCi1zY2FuLWJ1aWxkLnN0YW1w
OiBkb2Mtc2V0dXAtYnVpbGQuc3RhbXAgJChIRklMRV9HTE9CKSAkKENGSUxFX0dMT0IpCi0JQGVj
aG8gJyAgRE9DICAgU2Nhbm5pbmcgaGVhZGVyIGZpbGVzJwotCUBjZCBEb2N1bWVudGF0aW9uOyBf
c291cmNlX2Rpcj0nJyA7IFwKLQlmb3IgaSBpbiAkKERPQ19TT1VSQ0VfRElSKSA7IGRvIFwKLQkg
ICAgX3NvdXJjZV9kaXI9IiQke19zb3VyY2VfZGlyfSAtLXNvdXJjZS1kaXI9Li4vJCRpIiA7IFwK
LQlkb25lIDsgXAotCWd0a2RvYy1zY2FuIC0tbW9kdWxlPSQoRE9DX01PRFVMRSkgLS1pZ25vcmUt
aGVhZGVycz0iJChJR05PUkVfSEZJTEVTKSIgJCR7X3NvdXJjZV9kaXJ9ICQoU0NBTl9PUFRJT05T
KSAkKEVYVFJBX0hGSUxFUykKLQlAY2QgRG9jdW1lbnRhdGlvbjsgaWYgZ3JlcCAtbCAnXi4uKiQk
JyAkKERPQ19NT0RVTEUpLnR5cGVzID4gL2Rldi9udWxsIDI+JjEgOyB0aGVuIFwKLQkgICAgZWNo
byAiICBET0MgICBJbnRyb3NwZWN0aW5nIGdvYmplY3RzIjsgXAotCSAgICBzY2Fub2JqX29wdGlv
bnM9IiI7IFwKLQkgICAgZ3RrZG9jLXNjYW5nb2JqIDI+JjEgLS1oZWxwIHwgZ3JlcCAgPi9kZXYv
bnVsbCAiXC1cLXZlcmJvc2UiOyBcCi0JICAgIGlmIHRlc3QgIiQoPykiID0gIjAiOyB0aGVuIFwK
LQkgICAgICAgIGlmIHRlc3QgIngkKFYpIiA9ICJ4MSI7IHRoZW4gXAotCSAgICAgICAgICAgIHNj
YW5vYmpfb3B0aW9ucz0iLS12ZXJib3NlIjsgXAotCSAgICAgICAgZmk7IFwKLQkgICAgZmk7IFwK
LQkgICAgQ0M9IiQoR1RLRE9DX0NDKSIgTEQ9IiQoR1RLRE9DX0xEKSIgUlVOPSIkKEdUS0RPQ19S
VU4pIiBDRkxBR1M9IiQoR1RLRE9DX0NGTEFHUykgJChDRkxBR1MpIiBMREZMQUdTPSIkKEdUS0RP
Q19MSUJTKSAkKExERkxBR1MpIiBcCi0JICAgIGd0a2RvYy1zY2FuZ29iaiAkKFNDQU5HT0JKX09Q
VElPTlMpICQkc2Nhbm9ial9vcHRpb25zIC0tbW9kdWxlPSQoRE9DX01PRFVMRSk7IFwKLQllbHNl
IFwKLQkgICAgZm9yIGkgaW4gJChTQ0FOT0JKX0ZJTEVTKSA7IGRvIFwKLQkgICAgICAgIHRlc3Qg
LWYgJCRpIHx8IHRvdWNoICQkaSA7IFwKLQkgICAgZG9uZSBcCi0JZmkKLQlAdG91Y2ggc2Nhbi1i
dWlsZC5zdGFtcAotCi1Eb2N1bWVudGF0aW9uLyQoRE9DX01PRFVMRSktZGVjbC50eHQgRG9jdW1l
bnRhdGlvbi8kKFNDQU5PQkpfRklMRVMpIERvY3VtZW50YXRpb24vJChET0NfTU9EVUxFKS1zZWN0
aW9ucy50eHQgRG9jdW1lbnRhdGlvbi8kKERPQ19NT0RVTEUpLW92ZXJyaWRlcy50eHQ6IHNjYW4t
YnVpbGQuc3RhbXAKLQlAdHJ1ZQotCi0jIyMjIHRlbXBsYXRlcyAjIyMjCi0KLXRtcGwtYnVpbGQu
c3RhbXA6IGRvYy1zZXR1cC1idWlsZC5zdGFtcCBEb2N1bWVudGF0aW9uLyQoRE9DX01PRFVMRSkt
ZGVjbC50eHQgRG9jdW1lbnRhdGlvbi8kKFNDQU5PQkpfRklMRVMpIERvY3VtZW50YXRpb24vJChE
T0NfTU9EVUxFKS1zZWN0aW9ucy50eHQgRG9jdW1lbnRhdGlvbi8kKERPQ19NT0RVTEUpLW92ZXJy
aWRlcy50eHQKLQlAZWNobyAnICBET0MgICBSZWJ1aWxkaW5nIHRlbXBsYXRlIGZpbGVzJwotCUBj
ZCBEb2N1bWVudGF0aW9uOyBndGtkb2MtbWt0bXBsIC0tbW9kdWxlPSQoRE9DX01PRFVMRSkgJChN
S1RNUExfT1BUSU9OUykKLQlAaWYgdGVzdCAiJChhYnNfc3JjZGlyKSIgIT0gIiQoYWJzX2J1aWxk
ZGlyKSIgOyB0aGVuIFwKLQkgIGlmIHRlc3QgLXcgJChhYnNfc3JjZGlyKSA7IHRoZW4gXAotCSAg
ICBjcCAtcnAgJChhYnNfYnVpbGRkaXIpL0RvY3VtZW50YXRpb24vdG1wbCAkKGRvY19zcmNkaXIp
OyBcCi0JICBmaSBcCi0JZmkKLQlAdG91Y2ggdG1wbC1idWlsZC5zdGFtcAotCi10bXBsLnN0YW1w
OiB0bXBsLWJ1aWxkLnN0YW1wCi0JQHRydWUKLQotJChzcmNkaXIpL3RtcGwvKi5zZ21sOgotCUB0
cnVlCi0KLSMjIyMgeG1sICMjIyMKLQotc2dtbC1idWlsZC5zdGFtcDogZG9jLXNldHVwLWJ1aWxk
LnN0YW1wIHRtcGwuc3RhbXAgRG9jdW1lbnRhdGlvbi8kKERPQ19NT0RVTEUpLXNlY3Rpb25zLnR4
dCAkKHNyY2RpcikvdG1wbC8qLnNnbWwKLQlAZWNobyAnICBET0MgICBCdWlsZGluZyBYTUwnCi0J
QC1jaG1vZCAtUiB1K3cgJChzcmNkaXIpCi0JQGNkIERvY3VtZW50YXRpb247IF9zb3VyY2VfZGly
PScnIDsgXAotCWZvciBpIGluICQoRE9DX1NPVVJDRV9ESVIpIDsgZG8gXAotCSAgICBfc291cmNl
X2Rpcj0iJCR7X3NvdXJjZV9kaXJ9IC0tc291cmNlLWRpcj0uLi8kJGkiIDsgXAotCWRvbmUgOyBc
Ci0JZ3RrZG9jLW1rZGIgLS1tb2R1bGU9JChET0NfTU9EVUxFKSAtLW91dHB1dC1mb3JtYXQ9eG1s
IC0tZXhwYW5kLWNvbnRlbnQtZmlsZXM9IiIgLS1tYWluLXNnbWwtZmlsZT0kKERPQ19NQUlOX1NH
TUxfRklMRSkgJCR7X3NvdXJjZV9kaXJ9ICQoTUtEQl9PUFRJT05TKQotCUB0b3VjaCBzZ21sLWJ1
aWxkLnN0YW1wCi0KLXNnbWwuc3RhbXA6IHNnbWwtYnVpbGQuc3RhbXAKLQlAdHJ1ZQotCi0jIyMj
IGh0bWwgIyMjIwotCi1Eb2N1bWVudGF0aW9uLyQoRE9DX01BSU5fU0dNTF9GSUxFKTogc2dtbC5z
dGFtcAotRG9jdW1lbnRhdGlvbi93ZWJraXRlbnZpcm9ubWVudC54bWw6IGRvYy1zZXR1cC1idWls
ZC5zdGFtcAotCi1odG1sLWJ1aWxkLnN0YW1wOiBzZ21sLnN0YW1wIERvY3VtZW50YXRpb24vJChE
T0NfTUFJTl9TR01MX0ZJTEUpCi0JQGVjaG8gJyAgRE9DICAgQnVpbGRpbmcgSFRNTCcKLQlAcm0g
LXJmIERvY3VtZW50YXRpb24vaHRtbAotCUBta2RpciBEb2N1bWVudGF0aW9uL2h0bWwKLQlAY2Qg
RG9jdW1lbnRhdGlvbjsgbWtodG1sX29wdGlvbnM9IiI7IFwKLQlndGtkb2MtbWtodG1sIDI+JjEg
LS1oZWxwIHwgZ3JlcCAgPi9kZXYvbnVsbCAiXC1cLXZlcmJvc2UiOyBcCi0JaWYgdGVzdCAiJCg/
KSIgPSAiMCI7IHRoZW4gXAotCSAgaWYgdGVzdCAieCQoVikiID0gIngxIjsgdGhlbiBcCi0JICAg
IG1raHRtbF9vcHRpb25zPSIkJG1raHRtbF9vcHRpb25zIC0tdmVyYm9zZSI7IFwKLQkgIGZpOyBc
Ci0JZmk7IFwKLQlndGtkb2MtbWtodG1sIDI+JjEgLS1oZWxwIHwgZ3JlcCAgPi9kZXYvbnVsbCAi
XC1cLXBhdGgiOyBcCi0JaWYgdGVzdCAiJCg/KSIgPSAiMCI7IHRoZW4gXAotCSAgbWtodG1sX29w
dGlvbnM9IiQkbWtodG1sX29wdGlvbnMgLS1wYXRoPVwiJChkb2Nfc3JjZGlyKVwiIjsgXAotCWZp
OyBcCi0JY2QgaHRtbCAmJiBndGtkb2MtbWtodG1sICQkbWtodG1sX29wdGlvbnMgJChNS0hUTUxf
T1BUSU9OUykgJChET0NfTU9EVUxFKSAuLi8kKERPQ19NQUlOX1NHTUxfRklMRSkKLQktQHRlc3Qg
IngkKEhUTUxfSU1BR0VTKSIgPSAieCIgfHwgXAotCWZvciBmaWxlIGluICQoSFRNTF9JTUFHRVMp
IDsgZG8gXAotCSAgaWYgdGVzdCAtZiAkKGFic19zcmNkaXIpLyQkZmlsZSA7IHRoZW4gXAotCSAg
ICBjcCAkKGFic19zcmNkaXIpLyQkZmlsZSAkKGFic19idWlsZGRpcikvaHRtbDsgXAotCSAgZmk7
IFwKLQkgIGlmIHRlc3QgLWYgJChhYnNfYnVpbGRkaXIpLyQkZmlsZSA7IHRoZW4gXAotCSAgICBj
cCAkKGFic19idWlsZGRpcikvJCRmaWxlICQoYWJzX2J1aWxkZGlyKS9odG1sOyBcCi0JICBmaTsg
XAotCWRvbmU7Ci0JQGVjaG8gJyAgRE9DICAgRml4aW5nIGNyb3NzLXJlZmVyZW5jZXMnCi0JQGNk
IERvY3VtZW50YXRpb247IGd0a2RvYy1maXh4cmVmIC0tbW9kdWxlPSQoRE9DX01PRFVMRSkgLS1t
b2R1bGUtZGlyPWh0bWwgLS1odG1sLWRpcj0kKEhUTUxfRElSKSAkKEZJWFhSRUZfT1BUSU9OUykK
LQlAdG91Y2ggaHRtbC1idWlsZC5zdGFtcAotCi1jbGVhbi1sb2NhbDogZG9jLWNsZWFuLWxvY2Fs
Ci0KLWRvYy1jbGVhbi1sb2NhbDoKLQlAcm0gLWYgRG9jdW1lbnRhdGlvbi8qfiBEb2N1bWVudGF0
aW9uLyouYmFrCi0JQHJtIC1yZiBEb2N1bWVudGF0aW9uLy5saWJzCi0KLWRpc3RjbGVhbi1sb2Nh
bDogZG9jLWRpc3RjbGVhbi1sb2NhbAotCi1kb2MtZGlzdGNsZWFuLWxvY2FsOgotCUBybSAtcmYg
RG9jdW1lbnRhdGlvbgotCi1tYWludGFpbmVyLWNsZWFuLWxvY2FsOiBkb2MtbWFpbnRhaW5lci1j
bGVhbi1sb2NhbAotCi1kb2MtbWFpbnRhaW5lci1jbGVhbi1sb2NhbDogY2xlYW4KLQlAcm0gLXJm
IERvY3VtZW50YXRpb24veG1sIERvY3VtZW50YXRpb24vaHRtbAotCS1Acm1kaXIgRG9jdW1lbnRh
dGlvbgotCi0jCi0jIFJlcXVpcmUgZ3RrLWRvYyB3aGVuIG1ha2luZyBkaXN0Ci0jCi1pZiBFTkFC
TEVfR1RLX0RPQwotZGlzdC1jaGVjay1ndGtkb2M6Ci0KLWFsbDogZG9jcwotZWxzZQotZGlzdC1j
aGVjay1ndGtkb2M6Ci0JQGVjaG8gIioqKiBndGstZG9jIG11c3QgYmUgaW5zdGFsbGVkIGFuZCBl
bmFibGVkIGluIG9yZGVyIHRvIG1ha2UgZGlzdCIKLQlAZmFsc2UKLWVuZGlmCi0KLWRpc3QtaG9v
azogZG9jLWRpc3QtaG9vawotCi1kb2MtZGlzdC1ob29rOiBkaXN0LWNoZWNrLWd0a2RvYyBkaXN0
LWhvb2stbG9jYWwKLQlAbWtkaXIgLXAgJChkaXN0ZGlyKS8kKERPQ19NT0RVTEUpL3RtcGwKLQlA
bWtkaXIgLXAgJChkaXN0ZGlyKS8kKERPQ19NT0RVTEUpL2h0bWwKLQlALWNwIC4vRG9jdW1lbnRh
dGlvbi90bXBsLyouc2dtbCAkKGRpc3RkaXIpLyQoRE9DX01PRFVMRSkvdG1wbAotCUBjcCAuL0Rv
Y3VtZW50YXRpb24vaHRtbC8qICQoZGlzdGRpcikvJChET0NfTU9EVUxFKS9odG1sCi0JQC1jcCAu
L0RvY3VtZW50YXRpb24vJChET0NfTU9EVUxFKS50eXBlcyAkKGRpc3RkaXIpLwotCUAtY3AgLi9E
b2N1bWVudGF0aW9uLyQoRE9DX01PRFVMRSktc2VjdGlvbnMudHh0ICQoZGlzdGRpcikvCi0JQGNk
ICQoZGlzdGRpcikgJiYgcm0gLWYgJChESVNUQ0xFQU5GSUxFUykKLQlAJChHVEtET0NfUkVCQVNF
KSAtLW9ubGluZSAtLXJlbGF0aXZlIC0taHRtbC1kaXI9JChkaXN0ZGlyKS8kKERPQ19NT0RVTEUp
L2h0bWwKLQotLlBIT05ZIDogZGlzdC1ob29rLWxvY2FsIGRvY3MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvZ3RrL2RvY3MvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViS2l0L2d0ay9kb2Nz
L0dOVW1ha2VmaWxlLmFtCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOGM0YjIxMmJh
YjVhZWJkZDI5MGFhZTM3YTI0M2YyNTViOWI0M2I0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL2RvY3MvR05VbWFrZWZpbGUu
YW0KKysrIC9kZXYvbnVsbApAQCAtMSwxMjggKzAsMCBAQAotIyMgUHJvY2VzcyB0aGlzIGZpbGUg
d2l0aCBhdXRvbWFrZSB0byBwcm9kdWNlIEdOVW1ha2VmaWxlLmluCi0KLSMgVGhpcyBpcyBhIGJs
YW5rIE1ha2VmaWxlLmFtIGZvciB1c2luZyBndGstZG9jLgotIyBDb3B5IHRoaXMgdG8geW91ciBw
cm9qZWN0J3MgQVBJIGRvY3MgZGlyZWN0b3J5IGFuZCBtb2RpZnkgdGhlIHZhcmlhYmxlcyB0bwot
IyBzdWl0IHlvdXIgcHJvamVjdC4gU2VlIHRoZSBHVEsrIE1ha2VmaWxlcyBpbiBndGsrL2RvY3Mv
cmVmZXJlbmNlIGZvciBleGFtcGxlcwotIyBvZiB1c2luZyB0aGUgdmFyaW91cyBvcHRpb25zLgot
Ci0jIFRoZSBuYW1lIG9mIHRoZSBtb2R1bGUsIGUuZy4gJ2dsaWInLgotRE9DX01PRFVMRT13ZWJr
aXRndGsKLQotIyBUaGUgdG9wLWxldmVsIFNHTUwgZmlsZS4gWW91IGNhbiBjaGFuZ2UgdGhpcyBp
ZiB5b3Ugd2FudCB0by4KLURPQ19NQUlOX1NHTUxfRklMRT0kKERPQ19NT0RVTEUpLWRvY3Muc2dt
bAotCi0jIFRoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgc291cmNlIGNvZGUuIFJlbGF0aXZl
IHRvICQoc3JjZGlyKS4KLSMgZ3RrLWRvYyB3aWxsIHNlYXJjaCBhbGwgLmMgJiAuaCBmaWxlcyBi
ZW5lYXRoIGhlcmUgZm9yIGlubGluZSBjb21tZW50cwotIyBkb2N1bWVudGluZyB0aGUgZnVuY3Rp
b25zIGFuZCBtYWNyb3MuCi0jIGUuZy4gRE9DX1NPVVJDRV9ESVI9Li4vLi4vLi4vZ3RrCi1ET0Nf
U09VUkNFX0RJUj0kKHRvcF9zcmNkaXIpL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdAotCi0jIEV4
dHJhIG9wdGlvbnMgdG8gcGFzcyB0byBndGtkb2Mtc2NhbmdvYmouIE5vdCBub3JtYWxseSBuZWVk
ZWQuCi1TQ0FOR09CSl9PUFRJT05TPSItLXR5cGUtaW5pdC1mdW5jPWdfdHlwZV9pbml0KCkiCi0K
LSMgRXh0cmEgb3B0aW9ucyB0byBzdXBwbHkgdG8gZ3RrZG9jLXNjYW4uCi0jIGUuZy4gU0NBTl9P
UFRJT05TPS0tZGVwcmVjYXRlZC1ndWFyZHM9IkdUS19ESVNBQkxFX0RFUFJFQ0FURUQiCi1TQ0FO
X09QVElPTlM9LS1kZXByZWNhdGVkLWd1YXJkcz0iV0VCS0lUX0RJU0FCTEVfREVQUkVDQVRFRCIg
LS1pZ25vcmUtZGVjb3JhdG9ycz0iV0VCS0lUX0FQSSIKLQotIyBFeHRyYSBvcHRpb25zIHRvIHN1
cHBseSB0byBndGtkb2MtbWtkYi4KLSMgZS5nLiBNS0RCX09QVElPTlM9LS1zZ21sLW1vZGUgLS1v
dXRwdXQtZm9ybWF0PXhtbAotTUtEQl9PUFRJT05TPS0tc2dtbC1tb2RlIC0tb3V0cHV0LWZvcm1h
dD14bWwgLS1zb3VyY2Utc3VmZml4ZXM9aCxjLGNwcAotCi0jIEV4dHJhIG9wdGlvbnMgdG8gc3Vw
cGx5IHRvIGd0a2RvYy1ta3RtcGwKLSMgZS5nLiBNS1RNUExfT1BUSU9OUz0tLW9ubHktc2VjdGlv
bi10bXBsCi1NS1RNUExfT1BUSU9OUz0KLQotIyBFeHRyYSBvcHRpb25zIHRvIHN1cHBseSB0byBn
dGtkb2MtZml4cmVmLiBOb3Qgbm9ybWFsbHkgbmVlZGVkLgotIyBlLmcuIEZJWFhSRUZfT1BUSU9O
Uz0tLWV4dHJhLWRpcj0uLi9nZGstcGl4YnVmL2h0bWwgLS1leHRyYS1kaXI9Li4vZ2RrL2h0bWwK
LUZJWFhSRUZfT1BUSU9OUz0KLQotIyBVc2VkIGZvciBkZXBlbmRlbmNpZXMuIFRoZSBkb2NzIHdp
bGwgYmUgcmVidWlsdCBpZiBhbnkgb2YgdGhlc2UgY2hhbmdlLgotIyBlLmcuIEhGSUxFX0dMT0I9
JCh0b3Bfc3JjZGlyKS9ndGsvKi5oCi0jIGUuZy4gQ0ZJTEVfR0xPQj0kKHRvcF9zcmNkaXIpL2d0
ay8qLmMKLUhGSUxFX0dMT0I9JCh0b3Bfc3JjZGlyKS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQv
Ki5oCi1DRklMRV9HTE9CPSQodG9wX3NyY2RpcikvU291cmNlL1dlYktpdC9ndGsvd2Via2l0Lyou
Y3BwCi0KLSMgSGVhZGVyIGZpbGVzIHRvIGlnbm9yZSB3aGVuIHNjYW5uaW5nLgotIyBlLmcuIElH
Tk9SRV9IRklMRVM9Z3RrZGVidWcuaCBndGtpbnRsLmgKLUlHTk9SRV9IRklMRVMgPSBcCi0gICB3
ZWJraXRkb3dubG9hZHByaXZhdGUuaCBcCi0gICB3ZWJraXRnZW9sb2NhdGlvbnBvbGljeWRlY2lz
aW9ucHJpdmF0ZS5oIFwKLSAgIHdlYmtpdGdsb2JhbHNwcml2YXRlLmggXAotICAgd2Via2l0aGl0
dGVzdHJlc3VsdHByaXZhdGUuaCBcCi0gICB3ZWJraXRuZXR3b3JrcmVxdWVzdHByaXZhdGUuaCBc
Ci0gICB3ZWJraXRuZXR3b3JrcmVzcG9uc2Vwcml2YXRlLmggXAotICAgd2Via2l0c2VjdXJpdHlv
cmlnaW5wcml2YXRlLmggXAotICAgd2Via2l0dmlld3BvcnRhdHRyaWJ1dGVzcHJpdmF0ZS5oIFwK
LSAgIHdlYmtpdHdlYmJhY2tmb3J3YXJkbGlzdHByaXZhdGUuaCBcCi0gICB3ZWJraXR3ZWJkYXRh
c291cmNlcHJpdmF0ZS5oIFwKLSAgIHdlYmtpdHdlYmZyYW1lcHJpdmF0ZS5oIFwKLSAgIHdlYmtp
dHdlYmhpc3RvcnlpdGVtcHJpdmF0ZS5oIFwKLSAgIHdlYmtpdHdlYmluc3BlY3RvcnByaXZhdGUu
aCBcCi0gICB3ZWJraXR3ZWJuYXZpZ2F0aW9uYWN0aW9ucHJpdmF0ZS5oIFwKLSAgIHdlYmtpdHdl
YnBsdWdpbmRhdGFiYXNlcHJpdmF0ZS5oIFwKLSAgIHdlYmtpdHdlYnBsdWdpbnByaXZhdGUuaCBc
Ci0gICB3ZWJraXR3ZWJwb2xpY3lkZWNpc2lvbnByaXZhdGUuaCBcCi0gICB3ZWJraXR3ZWJyZXNv
dXJjZXByaXZhdGUuaCBcCi0gICB3ZWJraXR3ZWJzZXR0aW5nc3ByaXZhdGUuaCBcCi0gICB3ZWJr
aXR3ZWJ2aWV3cHJpdmF0ZS5oIFwKLSAgIHdlYmtpdHdlYndpbmRvd2ZlYXR1cmVzcHJpdmF0ZS5o
Ci0KLSMgSW1hZ2VzIHRvIGNvcHkgaW50byBIVE1MIGRpcmVjdG9yeS4KLSMgZS5nLiBIVE1MX0lN
QUdFUz0kKHRvcF9zcmNkaXIpL2d0ay9zdG9jay1pY29ucy9zdG9ja19hYm91dF8yNC5wbmcKLUhU
TUxfSU1BR0VTPQotCi0jIENGTEFHUyBhbmQgTERGTEFHUyBmb3IgY29tcGlsaW5nIGd0a2RvYy1z
Y2FuZ29iaiB3aXRoIHlvdXIgbGlicmFyeS4KLSMgT25seSBuZWVkZWQgaWYgeW91IGFyZSB1c2lu
ZyBndGtkb2Mtc2NhbmdvYmogdG8gZHluYW1pY2FsbHkgcXVlcnkgd2lkZ2V0Ci0jIHNpZ25hbHMg
YW5kIHByb3BlcnRpZXMuCi0jIGUuZy4gSU5DTFVERVM9LUkkKHRvcF9zcmNkaXIpIC1JJCh0b3Bf
YnVpbGRkaXIpICQoR1RLX0RFQlVHX0ZMQUdTKQotIyBlLmcuIEdUS0RPQ19MSUJTPSQodG9wX2J1
aWxkZGlyKS9ndGsvJChndGt0YXJnZXRsaWIpCi1HVEtET0NfSU5DTFVERVM9IFwKLQktSSQoYWJz
X3NyY2RpcikvU291cmNlL1dlYktpdC9ndGsgXAotCS1JJChhYnNfYnVpbGRkaXIpL1NvdXJjZS9X
ZWJLaXQvZ3RrIFwKLQkkKGdsb2JhbF9jcHBmbGFncykgXAotCSQoZ2xvYmFsX2NmbGFncykgXAot
CS1JJChhYnNfc3JjZGlyKS9Tb3VyY2UgXAotCS1JJChhYnNfc3JjZGlyKS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUgXAotCS1JJChhYnNfc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRm9yd2Fy
ZGluZ0hlYWRlcnMgXAotCS1JJChhYnNfc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyIFwKLQktSSQoYWJzX3NyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0ZiBcCi0JLUkk
KGFic19idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMgXAotCS1JJChhYnNfc3JjZGlyKS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvY2FjaGUgXAotCSQoR0xPQkFMREVQU19DRkxB
R1MpIFwKLQkkKENBSVJPX0NGTEFHUykgXAotCSQoR0xJQl9DRkxBR1MpIFwKLQkkKEdUS19DRkxB
R1MpIFwKLQkkKExJQlNPVVBfQ0ZMQUdTKQotCi1HVEtET0NfTElCUz0gXAotCSQoYWJzX2J1aWxk
ZGlyKS9saWJqYXZhc2NyaXB0Y29yZWd0ay1AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQC5A
V0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQC5sYSBcCi0JJChhYnNfYnVpbGRkaXIpL2xpYndl
YmtpdGd0ay1AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQC5AV0VCS0lUR1RLX0FQSV9NSU5P
Ul9WRVJTSU9OQC5sYSBcCi0JJChHTElCX0xJQlMpIFwKLQkkKEdUS19MSUJTKSBcCi0JJChMSUJT
T1VQX0xJQlMpCi0KLSMgVGhpcyBpbmNsdWRlcyBvdXIgY3VzdG9tIGd0ay1kb2MgbWFrZSBydWxl
cy4KLWluY2x1ZGUgJCh0b3Bfc3JjZGlyKS9Tb3VyY2UvV2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5n
dGstZG9jLmFtCi0KLSMgT3RoZXIgZmlsZXMgdG8gZGlzdHJpYnV0ZQotIyBlLmcuIEVYVFJBX0RJ
U1QgKz0gdmVyc2lvbi54bWwuaW4KLUVYVFJBX0RJU1QgKz0gXAotCSQoV2ViS2l0KS9kb2NzL3dl
YmtpdGVudmlyb25tZW50LnhtbCBcCi0JJChXZWJLaXQpL2RvY3Mvd2Via2l0Z3RrLWRvY3Muc2dt
bCBcCi0JJChXZWJLaXQpL2RvY3Mvd2Via2l0Z3RrLXNlY3Rpb25zLnR4dCBcCi0JJChXZWJLaXQp
L2RvY3MvdmVyc2lvbi54bWwuaW4KLQotIyBGaWxlcyBub3QgdG8gZGlzdHJpYnV0ZQotIyBmb3Ig
LS1yZWJ1aWxkLXR5cGVzIGluICQoU0NBTl9PUFRJT05TKSwgZS5nLiAkKERPQ19NT0RVTEUpLnR5
cGVzCi0jIGZvciAtLXJlYnVpbGQtc2VjdGlvbnMgaW4gJChTQ0FOX09QVElPTlMpIGUuZy4gJChE
T0NfTU9EVUxFKS1zZWN0aW9ucy50eHQKLURJU1RDTEVBTkZJTEVTICs9IFwKLQkkKHRvcF9idWls
ZGRpcikvU291cmNlL1dlYktpdC9ndGsvZG9jcy92ZXJzaW9uLnhtbCBcCi0JJCh0b3BfYnVpbGRk
aXIpL3RtcGwtYnVpbGQuc3RhbXAgXAotCSQodG9wX2J1aWxkZGlyKS9kb2Mtc2V0dXAtYnVpbGQu
c3RhbXAgXAotCSQodG9wX2J1aWxkZGlyKS9odG1sLWJ1aWxkLnN0YW1wIFwKLQkkKHRvcF9idWls
ZGRpcikvc2Nhbi1idWlsZC5zdGFtcCBcCi0JJCh0b3BfYnVpbGRkaXIpL3NnbWwtYnVpbGQuc3Rh
bXAKLQotIyBDb21tZW50IHRoaXMgb3V0IGlmIHlvdSB3YW50IHlvdXIgZG9jcy1zdGF0dXMgdGVz
dGVkIGR1cmluZyAnbWFrZSBjaGVjaycKLSNURVNUUyA9ICQoR1RLRE9DX0NIRUNLKQotCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9kb2NzL3ZlcnNpb24ueG1sLmluIGIvU291cmNlL1dl
YktpdC9ndGsvZG9jcy92ZXJzaW9uLnhtbC5pbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZDc4YmRhOTM0MjJlY2JiY2E4Y2FmNzcyZjdiMzdmOGZlM2IyNTRlOS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9kb2Nz
L3ZlcnNpb24ueG1sLmluCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotQFZFUlNJT05ACmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQy
L0dOVW1ha2VmaWxlLmFtCmluZGV4IDg4NWMzMWYwMjM1Y2Q1YzI3M2U0ZTYwOTAzOWUyZTRjNGU1
NDVmMWYuLmI4MDllZmM1NTRkMzQ1NzdmOWIyYjdmM2I5ZDI5MTcyNDg2MWNkN2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJLaXQyL0dO
VW1ha2VmaWxlLmFtCkBAIC0xNDAxLDggKzE0MDEsNyBAQCBQcm9ncmFtc19XZWJLaXRQbHVnaW5Q
cm9jZXNzX0NYWEZMQUdTID0gXAogZW5kaWYKIAogRVhUUkFfRElTVCArPSBcCi0JJChXZWJLaXQy
KS9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL2J1aWxkLWd0a2RvYyBcCi0JJChXZWJLaXQyKS9VSVBy
b2Nlc3MvQVBJL2d0ay9kb2NzL2d0a2RvYy5weSBcCisJJChzaGVsbCBmaW5kICQoV2ViS2l0Mikv
VUlQcm9jZXNzL0FQSS9ndGsvZG9jcykgXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsv
ZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbCBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0
ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0IFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9B
UEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay50eXBlcyBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL2J1aWxkLWd0a2RvYyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL2RvY3MvYnVpbGQtZ3RrZG9jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1
NQppbmRleCBmMzA0YTdlZGY0MjdlMWYzYmE0MmU1ODYyZmEzMzU0NWIxMWNiZWQ4Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL2RvY3MvYnVpbGQtZ3RrZG9jCisrKyAvZGV2L251bGwKQEAgLTEsOTMg
KzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jICBDb3B5cmlnaHQgKEMpIDIwMTEgSWdh
bGlhIFMuTC4KLSMKLSMgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSMgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSMgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotIyAgdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotIwotIyAgVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCi0jICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgotIyAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSMgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCi0jCi0jICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0jICBMaWNlbnNlIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0jICBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24s
IE1BICAwMjExMC0xMzAxICBVU0EKLSMKLQotaW1wb3J0IGdsb2IKLWltcG9ydCBndGtkb2MKLWlt
cG9ydCBsb2dnaW5nCi1pbXBvcnQgb3MucGF0aAotaW1wb3J0IHN5cwotCi1kZWYgY29uZmlndXJl
X2xvZ2dpbmcoKToKLSAgICBsZXZlbCA9IGxvZ2dpbmcuREVCVUcgaWYgJy12JyBpbiBzeXMuYXJn
diBlbHNlIGxvZ2dpbmcuSU5GTwotICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJndGtk
b2MiKQotICAgIGxvZ2dlci5zZXRMZXZlbChsZXZlbCkKLSAgICBoYW5kbGVyID0gbG9nZ2luZy5T
dHJlYW1IYW5kbGVyKCkKLSAgICBoYW5kbGVyLnNldExldmVsKGxldmVsKQotICAgIGxvZ2dlci5h
ZGRIYW5kbGVyKGhhbmRsZXIpCi0gICAgaWYgbGV2ZWwgPT0gbG9nZ2luZy5ERUJVRzoKLSAgICAg
ICAgaGFuZGxlci5zZXRGb3JtYXR0ZXIobG9nZ2luZy5Gb3JtYXR0ZXIoJ1slKGFzY3RpbWUpc10g
ICUobWVzc2FnZSlzJykpCi0gICAgZWxzZToKLSAgICAgICAgaGFuZGxlci5zZXRGb3JtYXR0ZXIo
bG9nZ2luZy5Gb3JtYXR0ZXIoJyUobWVzc2FnZSlzJykpCi0KLWRlZiBmaW5kX2J1aWxkX2RpcmVj
dG9yeSh0b3BfbGV2ZWwpOgotICAgIGRlZiBpc192YWxpZF9idWlsZF9kaXJlY3RvcnkoYnVpbGRf
ZGlyKToKLSAgICAgICAgcmV0dXJuIG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihidWlsZF9k
aXIsICIubGlicyIpKQotCi0gICAgaWYgaXNfdmFsaWRfYnVpbGRfZGlyZWN0b3J5KHRvcF9sZXZl
bCk6Ci0gICAgICAgIHJldHVybiB0b3BfbGV2ZWwKLQotICAgIGJ1aWxkX2RpciA9IG9zLnBhdGgu
am9pbih0b3BfbGV2ZWwsICdXZWJLaXRCdWlsZCcpCi0gICAgaWYgaXNfdmFsaWRfYnVpbGRfZGly
ZWN0b3J5KGJ1aWxkX2Rpcik6Ci0gICAgICAgIHJldHVybiBidWlsZF9kaXIKLQotICAgIGJ1aWxk
X2RpciA9IG9zLnBhdGguam9pbih0b3BfbGV2ZWwsICdXZWJLaXRCdWlsZCcsICdSZWxlYXNlJykK
LSAgICBpZiBpc192YWxpZF9idWlsZF9kaXJlY3RvcnkoYnVpbGRfZGlyKToKLSAgICAgICAgcmV0
dXJuIGJ1aWxkX2RpcgotCi0gICAgYnVpbGRfZGlyID0gb3MucGF0aC5qb2luKHRvcF9sZXZlbCwg
J1dlYktpdEJ1aWxkJywgJ0RlYnVnJykKLSAgICBpZiBpc192YWxpZF9idWlsZF9kaXJlY3Rvcnko
YnVpbGRfZGlyKToKLSAgICAgICAgcmV0dXJuIGJ1aWxkX2RpcgotICAgIHByaW50ICJDb3VsZCBu
b3QgZGV0ZXJtaW5lIGJ1aWxkIGRpcmVjdG9yeS4iCi0gICAgc3lzLmV4aXQoMSkKLQotZG9jX2Rp
ciA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pKQotdG9wX2xldmVs
ID0gb3MucGF0aC5ub3JtcGF0aChvcy5wYXRoLmpvaW4oZG9jX2RpciwgJy4uJywgJy4uJywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcuLicsICcuLicsICcuLics
ICcuLicpKQotYnVpbGRfZGlyID0gZmluZF9idWlsZF9kaXJlY3RvcnkodG9wX2xldmVsKQotCi1v
dXRwdXRfZGlyID0gb3MucGF0aC5qb2luKGJ1aWxkX2RpciwgIkRvY3VtZW50YXRpb24iLCAid2Vi
a2l0Mmd0ayIpCi1zcmNfZGlyID0gb3MucGF0aC5qb2luKGRvY19kaXIsICcuLicpCi1saWJyYXJ5
X3BhdGggPSBvcy5wYXRoLmpvaW4oYnVpbGRfZGlyLCAiLmxpYnMiKQotcGtnX2NvbmZpZ19wYXRo
ID0gXAotICAgIG9zLnBhdGguam9pbihidWlsZF9kaXIsICJTb3VyY2UiLCAiV2ViS2l0MiIsICJ3
ZWJraXQyZ3RrLTMuMC5wYyIpCi0KLWRlcml2ZWRfc291cmNlcyA9IG9zLnBhdGguam9pbihidWls
ZF9kaXIsICJEZXJpdmVkU291cmNlcyIsICJXZWJLaXQyIikKLWNmbGFncyA9IFwKLScgLUknICsg
b3MucGF0aC5qb2luKGRlcml2ZWRfc291cmNlcywgJ3dlYmtpdDJndGsnLCAnaW5jbHVkZScpICsg
XAotJyAtSScgKyBvcy5wYXRoLmpvaW4oZGVyaXZlZF9zb3VyY2VzLCAnd2Via2l0Mmd0aycpICsg
XAotJyAtSScgKyBvcy5wYXRoLmpvaW4oZGVyaXZlZF9zb3VyY2VzLCAnaW5jbHVkZScpICsgXAot
JyAtSScgKyBvcy5wYXRoLmpvaW4odG9wX2xldmVsLCAnU291cmNlJykKLScgLUknICsgc3JjX2Rp
cgotCi1pZ25vcmVkX2ZpbGVzID0gZ2xvYi5nbG9iKCIlcy8qUHJpdmF0ZS5oIiAlIHNyY19kaXIp
ICsgXAotICAgICAgICAgICAgICAgIGdsb2IuZ2xvYigiJXMvUGFnZUNsaWVudEltcGwuKiIgJSBz
cmNfZGlyKSArIFwKLSAgICAgICAgICAgICAgICBnbG9iLmdsb2IoIiVzL3Rlc3RzLyouaCIgJSBz
cmNfZGlyKQotCi1jb25maWd1cmVfbG9nZ2luZygpCi1nZW5lcmF0b3IgPSBndGtkb2MuUGtnQ29u
ZmlnR1RLRG9jKHBrZ19jb25maWdfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbW9kdWxlX25hbWU9IndlYmtpdDJndGsiLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBvdXRwdXRfZGlyPW91dHB1dF9kaXIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNvdXJjZV9kaXJzPVtzcmNfZGlyXSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZG9jX2Rpcj1kb2NfZGlyLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjZmxhZ3M9Y2ZsYWdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBsaWJyYXJ5X3BhdGg9bGlicmFyeV9wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkZWNvcmF0b3I9IldFQktJVF9BUEkiLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkZXByZWNhdGlvbl9ndWFyZD0iV0VCS0lUX0RJU0FCTEVfREVQUkVDQVRF
RCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZWRfZmlsZXM9aWdu
b3JlZF9maWxlcykKLWdlbmVyYXRvci5nZW5lcmF0ZShodG1sPSctLXNraXAtaHRtbCcgbm90IGlu
IHN5cy5hcmd2KQotc3lzLmV4aXQoZ2VuZXJhdG9yLnNhd193YXJuaW5ncykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3MvZ3RrZG9jLnB5IGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy9ndGtkb2MucHkKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDMwN2I2MmU0NGZiZjg1MWJmNzc2ZTJmOWYyYjY4YTVkZDFjYjc3MGYu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy9ndGtkb2MucHkKKysrIC9kZXYvbnVsbApAQCAt
MSwzNzIgKzAsMCBAQAotIyAgQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCi0jCi0jICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCi0jICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVy
YWwgUHVibGljCi0jICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKLSMgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSMKLSMgIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotIyAgYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSMg
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCi0jICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgotIwotIyAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExl
c3NlciBHZW5lcmFsIFB1YmxpYwotIyAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
aWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotIyAgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAg
VVNBCi0jCi0KLWltcG9ydCBlcnJubwotaW1wb3J0IGxvZ2dpbmcKLWltcG9ydCBvcwotaW1wb3J0
IG9zLnBhdGgKLWltcG9ydCBzdWJwcm9jZXNzCi1pbXBvcnQgc3lzCi0KLQotY2xhc3MgR1RLRG9j
KG9iamVjdCk6Ci0KLSAgICAiIiJDbGFzcyB0aGF0IGNvbnRyb2xzIGEgZ3RrZG9jIHJ1bi4KLQot
ICAgIEVhY2ggaW5zdGFuY2Ugb2YgdGhpcyBjbGFzcyByZXByZXNlbnRzIG9uZSBndGtkb2MgY29u
ZmlndXJhdGlvbgotICAgIGFuZCBzZXQgb2YgZG9jdW1lbnRhdGlvbi4gVGhlIGd0a2RvYyBwYWNr
YWdlIGlzIGEgc2VyaWVzIG9mIHRvb2xzCi0gICAgcnVuIGNvbnNlY3V0aXZlbHkgd2hpY2ggY29u
dmVydHMgaW5saW5lIEMvQysrIGRvY3VtZW50YXRpb24gaW50bwotICAgIGRvY2Jvb2sgZmlsZXMg
YW5kIHRoZW4gaW50byBIVE1MLiBUaGlzIGNsYXNzIGlzIHN1aXRhYmxlIGZvcgotICAgIGdlbmVy
YXRpbmcgZG9jdW1lbnRhdGlvbiBvciBzaW1wbHkgdmVyaWZ5aW5nIGNvcnJlY3RuZXNzLgotCi0g
ICAgS2V5d29yZCBhcmd1bWVudHM6Ci0gICAgb3V0cHV0X2RpciAgICAgICAgIC0tIFRoZSBwYXRo
IHdoZXJlIGd0a2RvYyBvdXRwdXQgc2hvdWxkIGJlIHBsYWNlZC4gR2VuZXJhdGlvbgotICAgICAg
ICAgICAgICAgICAgICAgICAgICBtYXkgb3ZlcndyaXRlIGZpbGUgaW4gdGhpcyBkaXJlY3Rvcnku
IFJlcXVpcmVkLgotICAgIG1vZHVsZV9uYW1lICAgICAgICAtLSBUaGUgbmFtZSBvZiB0aGUgZG9j
dW1lbnRhdGlvbiBtb2R1bGUuIEZvciBsaWJyYXJpZXMgdGhpcwotICAgICAgICAgICAgICAgICAg
ICAgICAgICBpcyB0eXBpY2FsbHkgdGhlIGxpYnJhcnkgbmFtZS4gUmVxdWlyZWQgaWYgbm90IGxp
YnJhcnkgcGF0aAotICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBnaXZlbi4KLSAgICBzb3Vy
Y2VfZGlycyAgICAgICAgLS0gQSBsaXN0IG9mIHBhdGhzIHRvIHRoZSBzb3VyY2UgY29kZSB0byBi
ZSBzY2FubmVkLiBSZXF1aXJlZC4KLSAgICBpZ25vcmVkX2ZpbGVzICAgICAgLS0gQSBsaXN0IG9m
IGZpbGVuYW1lcyB0byBpZ25vcmUgaW4gdGhlIHNvdXJjZSBkaXJlY3RvcnkuIEl0IGlzCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgIG9ubHkgbmVjZXNzYXJ5IHRvIHByb3ZpZGUgdGhlIGJhc2Vu
YW1lcyBvZiB0aGVzZSBmaWxlcy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwaWNhbGx5
IGl0IGlzIGltcG9ydGFudCB0byBwcm92aWRlIGFuIHVwZGF0ZWQgbGlzdCBvZgotICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZ25vcmVkIGZpbGVzIHRvIHByZXZlbnQgd2FybmluZ3MgYWJvdXQg
dW5kb2N1bWVudGVkIHN5bWJvbHMuCi0gICAgZGVjb3JhdG9yICAgICAgICAgIC0tIElmIGEgZGVj
b3JhdG9yIGlzIHVzZWQgdG8gdW5oaWRlIGNlcnRhaW4gc3ltYm9scyBpbiBoZWFkZXIKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgZmlsZXMgdGhpcyBwYXJhbWV0ZXIgaXMgcmVxdWlyZWQgZm9y
IHN1Y2Nlc3NmdWwgc2Nhbm5pbmcuCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChkZWZhdWx0
ICcnKQotICAgIGRlcHJlY2F0aW9uX2d1YXJkICAtLSBndGtkb2MgdHJpZXMgdG8gZW5zdXJlIHRo
YXQgc3ltYm9scyBtYXJrZWQgYXMgZGVwcmVjYXRlZAotICAgICAgICAgICAgICAgICAgICAgICAg
ICBhcmUgZW5jYXNlZCBpbiB0aGlzIEMgcHJlcHJvY2Vzc29yIGRlZmluZS4gVGhpcyBpcyByZXF1
aXJlZAotICAgICAgICAgICAgICAgICAgICAgICAgICB0byBhdm9pZCBndGtkb2Mgd2FybmluZ3Mu
IChkZWZhdWx0ICcnKQotICAgIGNmbGFncyAgICAgICAgICAgICAtLSBUaGlzIHBhcmFtZXRlciBz
cGVjaWZpZXMgYW55IHByZXByb2Nlc3NvciBmbGFncyBuZWNlc3NhcnkgZm9yCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgIGJ1aWxkaW5nIHRoZSBzY2FubmVyIGJpbmFyeSBkdXJpbmcgZ3RrZG9j
LXNjYW5vYmouIFR5cGljYWxseQotICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzIGluY2x1
ZGVzIGFsbCBhYnNvbHV0ZSBpbmNsdWRlIHBhdGhzIG5lY2Vzc2FyeSB0byByZXNvbHZlCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgIGFsbCBoZWFkZXIgZGVwZW5kZW5jaWVzLiAoZGVmYXVsdCAn
JykKLSAgICBsZGZsYWdzICAgICAgICAgICAgLS0gVGhpcyBwYXJhbWV0ZXIgc3BlY2lmaWVzIGFu
eSBsaW5rZXIgZmxhZ3MgbmVjZXNzYXJ5IGZvcgotICAgICAgICAgICAgICAgICAgICAgICAgICBi
dWlsZGluZyB0aGUgc2Nhbm5lciBiaW5hcnkgZHVyaW5nIGd0a2RvYy1zY2Fub2JqLiBUeXBpY2Fs
bHkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyBpbmNsdWRlcyAiLWx5b3VybGlicmFy
eW5hbWUiLiAoZGVmYXVsdCAnJykKLSAgICBsaWJyYXJ5X3BhdGggICAgICAgLS0gVGhpcyBwYXJh
bWV0ZXIgc3BlY2lmaWVzIHRoZSBwYXRoIHRvIHRoZSBkaXJlY3Rvcnkgd2hlcmUgeW91Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcnkgcmVzaWRlcyB1c2VkIGZvciBidWlsZGluZyB0
aGUgc2Nhbm5lciBiaW5hcnkgZHVyaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGd0a2Rv
Yy1zY2Fub2JqLiAoZGVmYXVsdCAnJykKLQotICAgIGRvY19kaXIgICAgICAgICAgICAtLSBUaGUg
cGF0aCB0byBvdGhlciBkb2N1bWVudGF0aW9uIGZpbGVzIG5lY2Vzc2FyeSB0byBidWlsZAotICAg
ICAgICAgICAgICAgICAgICAgICAgICB0aGUgZG9jdW1lbnRhdGlvbi4gVGhpcyBmaWxlcyBpbiB0
aGlzIGRpcmVjdG9yeSBhcyB3ZWxsIGFzCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBm
aWxlcyBpbiB0aGUgJ2h0bWwnIHN1YmRpcmVjdG9yeSB3aWxsIGJlIGNvcGllZAotICAgICAgICAg
ICAgICAgICAgICAgICAgICByZWN1cnNpdmVseSBpbnRvIHRoZSBvdXRwdXQgZGlyZWN0b3J5LiAo
ZGVmYXVsdCAnJykKLSAgICBtYWluX3NnbWxfZmlsZSAgICAgLS0gVGhlIHBhdGggb3IgbmFtZSAo
aWYgYSBkb2NfZGlyIGlzIGdpdmVuKSBvZiB0aGUgU0dNTCBmaWxlCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgIHRoYXQgaXMgdGhlIGNvbnNpZGVyZWQgdGhlIG1haW4gcGFnZSBvZiB5b3VyIGRv
Y3VtZW50YXRpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChkZWZhdWx0OiA8bW9kdWxl
X25hbWU+LWRvY3Muc2dtbCkKLSAgICB2ZXJzaW9uICAgICAgICAgICAgLS0gVGhlIHZlcnNpb24g
bnVtYmVyIG9mIHRoZSBtb2R1bGUuIElmIHRoaXMgaXMgcHJvdmlkZWQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgIGEgdmVyc2lvbi54bWwgZmlsZSBjb250YWluaW5nIHRoZSB2ZXJzaW9uIHdp
bGwgYmUgY3JlYXRlZAotICAgICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUgb3V0cHV0IGRp
cmVjdG9yeSBkdXJpbmcgZG9jdW1lbnRhdGlvbiBnZW5lcmF0aW9uLgotCi0gICAgaW50ZXJhY3Rp
dmUgICAgICAgIC0tIFdoZXRoZXIgb3Igbm90IGVycm9ycyBvciB3YXJuaW5ncyBzaG91bGQgcHJv
bXB0IHRoZSB1c2VyCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGNvbnRpbnVlIG9yIG5v
dC4gV2hlbiB0aGlzIHZhbHVlIGlzIGZhbHNlLCBnZW5lcmF0aW9uCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgIHdpbGwgY29udGludWUgZGVzcGl0ZSB3YXJuaW5ncy4gKGRlZmF1bHQgRmFsc2Up
Ci0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgKiphcmdzKToKLQotICAgICAgICAj
IFBhcmFtZXRlcnMgc3BlY2lmaWMgdG8gc2Nhbm5pbmcuCi0gICAgICAgIHNlbGYubW9kdWxlX25h
bWUgPSAnJwotICAgICAgICBzZWxmLnNvdXJjZV9kaXJzID0gW10KLSAgICAgICAgc2VsZi5pZ25v
cmVkX2ZpbGVzID0gW10KLSAgICAgICAgc2VsZi5kZWNvcmF0b3IgPSAnJwotICAgICAgICBzZWxm
LmRlcHJlY2F0aW9uX2d1YXJkID0gJycKLQotICAgICAgICAjIFBhcmFtZXRlcnMgc3BlY2lmaWMg
dG8gZ3RrZG9jLXNjYW5vYmouCi0gICAgICAgIHNlbGYuY2ZsYWdzID0gJycKLSAgICAgICAgc2Vs
Zi5sZGZsYWdzID0gJycKLSAgICAgICAgc2VsZi5saWJyYXJ5X3BhdGggPSAnJwotCi0gICAgICAg
ICMgUGFyYW1ldGVycyBzcGVjaWZpYyB0byBnZW5lcmF0aW9uLgotICAgICAgICBzZWxmLm91dHB1
dF9kaXIgPSAnJwotICAgICAgICBzZWxmLmRvY19kaXIgPSAnJwotICAgICAgICBzZWxmLm1haW5f
c2dtbF9maWxlID0gJycKLQotICAgICAgICBzZWxmLmludGVyYWN0aXZlID0gRmFsc2UKLQotICAg
ICAgICBzZWxmLmxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdndGtkb2MnKQotCi0gICAgICAg
IGZvciBrZXksIHZhbHVlIGluIGFyZ3MuaXRlcml0ZW1zKCk6Ci0gICAgICAgICAgICBzZXRhdHRy
KHNlbGYsIGtleSwgdmFsdWUpCi0KLSAgICAgICAgZGVmIHJhaXNlX2Vycm9yX2lmX25vdF9zcGVj
aWZpZWQoa2V5KToKLSAgICAgICAgICAgIGlmIG5vdCBnZXRhdHRyKHNlbGYsIGtleSk6Ci0gICAg
ICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCclcyBub3Qgc3BlY2lmaWVkLicgJSBrZXkpCi0K
LSAgICAgICAgcmFpc2VfZXJyb3JfaWZfbm90X3NwZWNpZmllZCgnb3V0cHV0X2RpcicpCi0gICAg
ICAgIHJhaXNlX2Vycm9yX2lmX25vdF9zcGVjaWZpZWQoJ3NvdXJjZV9kaXJzJykKLSAgICAgICAg
cmFpc2VfZXJyb3JfaWZfbm90X3NwZWNpZmllZCgnbW9kdWxlX25hbWUnKQotCi0gICAgICAgICMg
TWFrZSBhbGwgcGF0aHMgYWJzb2x1dGUgaW4gY2FzZSB3ZSB3ZXJlIHBhc3NlZCByZWxhdGl2ZSBw
YXRocywgc2luY2UKLSAgICAgICAgIyB3ZSBjaGFuZ2UgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJl
Y3Rvcnkgd2hlbiBleGVjdXRpbmcgc3ViY29tbWFuZHMuCi0gICAgICAgIHNlbGYub3V0cHV0X2Rp
ciA9IG9zLnBhdGguYWJzcGF0aChzZWxmLm91dHB1dF9kaXIpCi0gICAgICAgIHNlbGYuc291cmNl
X2RpcnMgPSBbb3MucGF0aC5hYnNwYXRoKHgpIGZvciB4IGluIHNlbGYuc291cmNlX2RpcnNdCi0g
ICAgICAgIGlmIHNlbGYubGlicmFyeV9wYXRoOgotICAgICAgICAgICAgc2VsZi5saWJyYXJ5X3Bh
dGggPSBvcy5wYXRoLmFic3BhdGgoc2VsZi5saWJyYXJ5X3BhdGgpCi0KLSAgICAgICAgaWYgbm90
IHNlbGYubWFpbl9zZ21sX2ZpbGU6Ci0gICAgICAgICAgICBzZWxmLm1haW5fc2dtbF9maWxlID0g
c2VsZi5tb2R1bGVfbmFtZSArICItZG9jcy5zZ21sIgotCi0gICAgZGVmIGdlbmVyYXRlKHNlbGYs
IGh0bWw9VHJ1ZSk6Ci0gICAgICAgIHNlbGYuc2F3X3dhcm5pbmdzID0gRmFsc2UKLQotICAgICAg
ICBzZWxmLl9jb3B5X2RvY19maWxlc190b19vdXRwdXRfZGlyKGh0bWwpCi0gICAgICAgIHNlbGYu
X3dyaXRlX3ZlcnNpb25feG1sKCkKLSAgICAgICAgc2VsZi5fcnVuX2d0a2RvY19zY2FuKCkKLSAg
ICAgICAgc2VsZi5fcnVuX2d0a2RvY19zY2FuZ29iaigpCi0gICAgICAgIHNlbGYuX3J1bl9ndGtk
b2NfbWt0bXBsKCkKLSAgICAgICAgc2VsZi5fcnVuX2d0a2RvY19ta2RiKCkKLQotICAgICAgICBp
ZiBub3QgaHRtbDoKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgIHNlbGYuX3J1bl9ndGtk
b2NfbWtodG1sKCkKLSAgICAgICAgc2VsZi5fcnVuX2d0a2RvY19maXh4cmVmKCkKLQotICAgIGRl
ZiBfZGVsZXRlX2ZpbGVfaWZfZXhpc3RzKHNlbGYsIHBhdGgpOgotICAgICAgICBpZiBub3Qgb3Mu
YWNjZXNzKHBhdGgsIG9zLkZfT0sgfCBvcy5SX09LKToKLSAgICAgICAgICAgIHJldHVybgotICAg
ICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygnZGVsZXRpbmcgJXMnLCBwYXRoKQotICAgICAgICBvcy51
bmxpbmsocGF0aCkKLQotICAgIGRlZiBfY3JlYXRlX2RpcmVjdG9yeV9pZl9ub25leGlzdGVudChz
ZWxmLCBwYXRoKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgb3MubWFrZWRpcnMocGF0aCkK
LSAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyb3I6Ci0gICAgICAgICAgICBpZiBlcnJvci5l
cnJubyAhPSBlcnJuby5FRVhJU1Q6Ci0gICAgICAgICAgICAgICAgcmFpc2UKLQotICAgIGRlZiBf
cmFpc2VfZXhjZXB0aW9uX2lmX2ZpbGVfaW5hY2Nlc3NpYmxlKHNlbGYsIHBhdGgpOgotICAgICAg
ICBpZiBub3Qgb3MucGF0aC5leGlzdHMocGF0aCkgb3Igbm90IG9zLmFjY2VzcyhwYXRoLCBvcy5S
X09LKToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiQ291bGQgbm90IGFjY2VzcyBmaWxl
IGF0OiAlcyIgJSBwYXRoKQotCi0gICAgZGVmIF9vdXRwdXRfaGFzX3dhcm5pbmdzKHNlbGYsIG91
dHB1dHMpOgotICAgICAgICBmb3Igb3V0cHV0IGluIG91dHB1dHM6Ci0gICAgICAgICAgICBpZiBv
dXRwdXQgYW5kIG91dHB1dC5maW5kKCd3YXJuaW5nJyk6Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IFRydWUKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICBkZWYgX2Fza195ZXNfb3Jfbm9fcXVl
c3Rpb24oc2VsZiwgcXVlc3Rpb24pOgotICAgICAgICBpZiBub3Qgc2VsZi5pbnRlcmFjdGl2ZToK
LSAgICAgICAgICAgIHJldHVybiBUcnVlCi0KLSAgICAgICAgcXVlc3Rpb24gKz0gJyBbeS9OXSAn
Ci0gICAgICAgIGFuc3dlciA9IE5vbmUKLSAgICAgICAgd2hpbGUgYW5zd2VyICE9ICd5JyBhbmQg
YW5zd2VyICE9ICduJyBhbmQgYW5zd2VyICE9ICcnOgotICAgICAgICAgICAgYW5zd2VyID0gcmF3
X2lucHV0KHF1ZXN0aW9uKS5sb3dlcigpCi0gICAgICAgIHJldHVybiBhbnN3ZXIgPT0gJ3knCi0K
LSAgICBkZWYgX3J1bl9jb21tYW5kKHNlbGYsIGFyZ3MsIGVudj1Ob25lLCBjd2Q9Tm9uZSwgcHJp
bnRfb3V0cHV0PVRydWUpOgotICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCJSdW5uaW5nICVzIiwg
YXJnc1swXSkKLSAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIkZ1bGwgY29tbWFuZCBhcmdzOiAl
cyIsIHN0cihhcmdzKSkKLQotICAgICAgICBwcm9jZXNzID0gc3VicHJvY2Vzcy5Qb3Blbihhcmdz
LCBlbnY9ZW52LCBjd2Q9Y3dkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQotICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHByb2Nl
c3MuY29tbXVuaWNhdGUoKQotCi0gICAgICAgIGlmIHByaW50X291dHB1dDoKLSAgICAgICAgICAg
IGlmIHN0ZG91dDoKLSAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKHN0ZG91dCkKLSAg
ICAgICAgICAgIGlmIHN0ZGVycjoKLSAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKHN0
ZGVycikKLQotICAgICAgICBpZiBwcm9jZXNzLnJldHVybmNvZGUgIT0gMDoKLSAgICAgICAgICAg
IHJhaXNlIEV4Y2VwdGlvbignJXMgcHJvZHVjZWQgYSBub24temVybyByZXR1cm4gY29kZSAlaScK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAoYXJnc1swXSwgcHJvY2Vzcy5yZXR1cm5j
b2RlKSkKLQotICAgICAgICBpZiAnd2FybmluZycgaW4gc3RkZXJyIG9yICd3YXJuaW5nJyBpbiBz
dGRvdXQ6Ci0gICAgICAgICAgICBzZWxmLnNhd193YXJuaW5ncyA9IFRydWUKLSAgICAgICAgICAg
IGlmIG5vdCBzZWxmLl9hc2tfeWVzX29yX25vX3F1ZXN0aW9uKCclcyBwcm9kdWNlZCB3YXJuaW5n
cywgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Ry
eSB0byBjb250aW51ZT8nICUgYXJnc1swXSk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0
aW9uKCclcyBzdGVwIGZhaWxlZCcgJSBhcmdzWzBdKQotCi0gICAgICAgIHJldHVybiBzdGRvdXQu
c3RyaXAoKQotCi0gICAgZGVmIF9jb3B5X2RvY19maWxlc190b19vdXRwdXRfZGlyKHNlbGYsIGh0
bWw9VHJ1ZSk6Ci0gICAgICAgIGlmIG5vdCBzZWxmLmRvY19kaXI6Ci0gICAgICAgICAgICBzZWxm
LmxvZ2dlci5pbmZvKCdOb3QgY29weWluZyBhbnkgZmlsZXMgZnJvbSBkb2MgZGlyZWN0b3J5LCcK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyBiZWNhdXNlIG5vIGRvYyBkaXJlY3Rvcnkg
Z2l2ZW4uJykKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgIGRlZiBjb3B5X2ZpbGVfcmVw
bGFjaW5nX2V4aXN0aW5nKHNyYywgZGVzdCk6Ci0gICAgICAgICAgICBpZiBvcy5wYXRoLmlzZGly
KHNyYyk6Ci0gICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoJ3NraXBwZWQgZGlyZWN0
b3J5ICVzJywgIHNyYykKLSAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgIGlmIG5v
dCBvcy5hY2Nlc3Moc3JjLCBvcy5GX09LIHwgb3MuUl9PSyk6Ci0gICAgICAgICAgICAgICAgc2Vs
Zi5sb2dnZXIuZGVidWcoJ3NraXBwZWQgdW5yZWFkYWJsZSAlcycsIHNyYykKLSAgICAgICAgICAg
ICAgICByZXR1cm4KLQotICAgICAgICAgICAgc2VsZi5fZGVsZXRlX2ZpbGVfaWZfZXhpc3RzKGRl
c3QpCi0KLSAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCdjcmVhdGVkICVzJywgZGVzdCkK
LSAgICAgICAgICAgIG9zLmxpbmsoc3JjLCBkZXN0KQotCi0gICAgICAgIGRlZiBjb3B5X2FsbF9m
aWxlc19pbl9kaXJlY3Rvcnkoc3JjLCBkZXN0KToKLSAgICAgICAgICAgIGZvciBwYXRoIGluIG9z
Lmxpc3RkaXIoc3JjKToKLSAgICAgICAgICAgICAgICBjb3B5X2ZpbGVfcmVwbGFjaW5nX2V4aXN0
aW5nKG9zLnBhdGguam9pbihzcmMsIHBhdGgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKGRlc3QsIHBhdGgpKQotCi0gICAgICAgIHNl
bGYubG9nZ2VyLmluZm8oJ0NvcHlpbmcgdGVtcGxhdGUgZmlsZXMgdG8gb3V0cHV0IGRpcmVjdG9y
eS4uLicpCi0gICAgICAgIHNlbGYuX2NyZWF0ZV9kaXJlY3RvcnlfaWZfbm9uZXhpc3RlbnQoc2Vs
Zi5vdXRwdXRfZGlyKQotICAgICAgICBjb3B5X2FsbF9maWxlc19pbl9kaXJlY3Rvcnkoc2VsZi5k
b2NfZGlyLCBzZWxmLm91dHB1dF9kaXIpCi0KLSAgICAgICAgaWYgbm90IGh0bWw6Ci0gICAgICAg
ICAgICByZXR1cm4KLQotICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCdDb3B5aW5nIEhUTUwgZmls
ZXMgdG8gb3V0cHV0IGRpcmVjdG9yeS4uLicpCi0gICAgICAgIGh0bWxfc3JjX2RpciA9IG9zLnBh
dGguam9pbihzZWxmLmRvY19kaXIsICdodG1sJykKLSAgICAgICAgaHRtbF9kZXN0X2RpciA9IG9z
LnBhdGguam9pbihzZWxmLm91dHB1dF9kaXIsICdodG1sJykKLSAgICAgICAgc2VsZi5fY3JlYXRl
X2RpcmVjdG9yeV9pZl9ub25leGlzdGVudChodG1sX2Rlc3RfZGlyKQotCi0gICAgICAgIGlmIG9z
LnBhdGguZXhpc3RzKGh0bWxfc3JjX2Rpcik6Ci0gICAgICAgICAgICBjb3B5X2FsbF9maWxlc19p
bl9kaXJlY3RvcnkoaHRtbF9zcmNfZGlyLCBodG1sX2Rlc3RfZGlyKQotCi0gICAgZGVmIF93cml0
ZV92ZXJzaW9uX3htbChzZWxmKToKLSAgICAgICAgaWYgbm90IHNlbGYudmVyc2lvbjoKLSAgICAg
ICAgICAgIHNlbGYubG9nZ2VyLmluZm8oJ05vIHZlcnNpb24gc3BlY2lmaWVkLCBzbyBub3Qgd3Jp
dGluZyB2ZXJzaW9uLnhtbCcpCi0gICAgICAgICAgICByZXR1cm4KLQotICAgICAgICB2ZXJzaW9u
X3htbF9wYXRoID0gb3MucGF0aC5qb2luKHNlbGYub3V0cHV0X2RpciwgJ3ZlcnNpb24ueG1sJykK
LSAgICAgICAgc3JjX3ZlcnNpb25feG1sX3BhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi5kb2NfZGly
LCAndmVyc2lvbi54bWwnKQotCi0gICAgICAgICMgRG9uJ3Qgb3ZlcndyaXRlIHZlcnNpb24ueG1s
IGlmIGl0IHdhcyBpbiB0aGUgZG9jIGRpcmVjdG9yeS4KLSAgICAgICAgaWYgb3MucGF0aC5leGlz
dHModmVyc2lvbl94bWxfcGF0aCkgYW5kIFwKLSAgICAgICAgICAgb3MucGF0aC5leGlzdHMoc3Jj
X3ZlcnNpb25feG1sX3BhdGgpOgotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgb3V0cHV0
X2ZpbGUgPSBvcGVuKHZlcnNpb25feG1sX3BhdGgsICd3JykKLSAgICAgICAgb3V0cHV0X2ZpbGUu
d3JpdGUoc2VsZi52ZXJzaW9uKQotICAgICAgICBvdXRwdXRfZmlsZS5jbG9zZSgpCi0KLSAgICBk
ZWYgX3J1bl9ndGtkb2Nfc2NhbihzZWxmKToKLSAgICAgICAgYXJncyA9IFsnZ3RrZG9jLXNjYW4n
LAotICAgICAgICAgICAgICAgICctLW1vZHVsZT0lcycgJSBzZWxmLm1vZHVsZV9uYW1lLAotICAg
ICAgICAgICAgICAgICctLXJlYnVpbGQtdHlwZXMnXQotCi0gICAgICAgICMgRWFjaCBzb3VyY2Ug
ZGlyZWN0b3J5IHNob3VsZCBiZSBoYXZlIGl0cyBvd24gIi0tc291cmNlLWRpcj0iIHByZWZpeC4K
LSAgICAgICAgYXJncy5leHRlbmQoWyctLXNvdXJjZS1kaXI9JXMnICUgcGF0aCBmb3IgcGF0aCBp
biBzZWxmLnNvdXJjZV9kaXJzXSkKLQotICAgICAgICBpZiBzZWxmLmRlY29yYXRvcjoKLSAgICAg
ICAgICAgIGFyZ3MuYXBwZW5kKCctLWlnbm9yZS1kZWNvcmF0b3JzPSVzJyAlIHNlbGYuZGVjb3Jh
dG9yKQotICAgICAgICBpZiBzZWxmLmRlcHJlY2F0aW9uX2d1YXJkOgotICAgICAgICAgICAgYXJn
cy5hcHBlbmQoJy0tZGVwcmVjYXRlZC1ndWFyZHM9JXMnICUgc2VsZi5kZXByZWNhdGlvbl9ndWFy
ZCkKLSAgICAgICAgaWYgc2VsZi5vdXRwdXRfZGlyOgotICAgICAgICAgICAgYXJncy5hcHBlbmQo
Jy0tb3V0cHV0LWRpcj0lcycgJSBzZWxmLm91dHB1dF9kaXIpCi0KLSAgICAgICAgIyBndGtkb2Mt
c2NhbiB3YW50cyB0aGUgYmFzZW5hbWVzIG9mIGlnbm9yZWQgaGVhZGVycywgc28gc3RyaXAgdGhl
Ci0gICAgICAgICMgZGlybmFtZS4gRGlmZmVyZW50IGZyb20gIi0tc291cmNlLWRpciIsIHRoZSBo
ZWFkZXJzIHNob3VsZCBiZQotICAgICAgICAjIHNwZWNpZmllZCBhcyBvbmUgbG9uZyBzdHJpbmcu
Ci0gICAgICAgIGlmIHNlbGYuaWdub3JlZF9maWxlczoKLSAgICAgICAgICAgIGlnbm9yZWRfZmls
ZXNfYmFzZW5hbWVzID0gXAotICAgICAgICAgICAgICAgIFtvcy5wYXRoLmJhc2VuYW1lKHgpIGZv
ciB4IGluIHNlbGYuaWdub3JlZF9maWxlc10KLSAgICAgICAgICAgIGFyZ3MuYXBwZW5kKCctLWln
bm9yZS1oZWFkZXJzPSVzJyAlICcgJy5qb2luKGlnbm9yZWRfZmlsZXNfYmFzZW5hbWVzKSkKLQot
ICAgICAgICBzZWxmLl9ydW5fY29tbWFuZChhcmdzKQotCi0gICAgZGVmIF9ydW5fZ3RrZG9jX3Nj
YW5nb2JqKHNlbGYpOgotICAgICAgICBlbnYgPSBvcy5lbnZpcm9uCi0gICAgICAgIGxkZmxhZ3Mg
PSBzZWxmLmxkZmxhZ3MKLSAgICAgICAgaWYgc2VsZi5saWJyYXJ5X3BhdGg6Ci0gICAgICAgICAg
ICBsZGZsYWdzID0gJyAiLUwlcyIgJyAlIHNlbGYubGlicmFyeV9wYXRoICsgbGRmbGFncwotICAg
ICAgICAgICAgZW52WydSVU4nXSA9ICdMRF9MSUJSQVJZX1BBVEg9IiVzIiAnICUgc2VsZi5saWJy
YXJ5X3BhdGgKLSAgICAgICAgaWYgbGRmbGFnczoKLSAgICAgICAgICAgIGVudlsnTERGTEFHUydd
ID0gbGRmbGFncwotICAgICAgICBpZiBzZWxmLmNmbGFnczoKLSAgICAgICAgICAgIGVudlsnQ0ZM
QUdTJ10gPSBzZWxmLmNmbGFncwotCi0gICAgICAgIGlmICdDRkxBR1MnIGluIGVudjoKLSAgICAg
ICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCdDRkxBR1M9JXMnLCBlbnZbJ0NGTEFHUyddKQotICAg
ICAgICBpZiAnTERGTEFHUycgaW4gZW52OgotICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWco
J0xERkxBR1MgJXMnLCBlbnZbJ0xERkxBR1MnXSkKLSAgICAgICAgaWYgJ1JVTicgaW4gZW52Ogot
ICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoJ1JVTj0lcycsIGVudlsnUlVOJ10pCi0gICAg
ICAgIHNlbGYuX3J1bl9jb21tYW5kKFsnZ3RrZG9jLXNjYW5nb2JqJywgJy0tbW9kdWxlPSVzJyAl
IHNlbGYubW9kdWxlX25hbWVdLAotICAgICAgICAgICAgICAgICAgICAgICAgICBlbnY9ZW52LCBj
d2Q9c2VsZi5vdXRwdXRfZGlyKQotCi0gICAgZGVmIF9ydW5fZ3RrZG9jX21rdG1wbChzZWxmKToK
LSAgICAgICAgYXJncyA9IFsnZ3RrZG9jLW1rdG1wbCcsICctLW1vZHVsZT0lcycgJSBzZWxmLm1v
ZHVsZV9uYW1lXQotICAgICAgICBzZWxmLl9ydW5fY29tbWFuZChhcmdzLCBjd2Q9c2VsZi5vdXRw
dXRfZGlyKQotCi0gICAgZGVmIF9ydW5fZ3RrZG9jX21rZGIoc2VsZik6Ci0gICAgICAgIHNnbWxf
ZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLm91dHB1dF9kaXIsIHNlbGYubWFpbl9zZ21sX2ZpbGUp
Ci0gICAgICAgIHNlbGYuX3JhaXNlX2V4Y2VwdGlvbl9pZl9maWxlX2luYWNjZXNzaWJsZShzZ21s
X2ZpbGUpCi0KLSAgICAgICAgYXJncyA9IFsnZ3RrZG9jLW1rZGInLAotICAgICAgICAgICAgICAg
ICctLW1vZHVsZT0lcycgJSBzZWxmLm1vZHVsZV9uYW1lLAotICAgICAgICAgICAgICAgICctLW1h
aW4tc2dtbC1maWxlPSVzJyAlIHNnbWxfZmlsZSwKLSAgICAgICAgICAgICAgICAnLS1zb3VyY2Ut
c3VmZml4ZXM9aCxjLGNwcCxjYycsCi0gICAgICAgICAgICAgICAgJy0tb3V0cHV0LWZvcm1hdD14
bWwnLAotICAgICAgICAgICAgICAgICctLXNnbWwtbW9kZSddCi0KLSAgICAgICAgIyBFYWNoIGRp
cmVjdG9yeSBzaG91bGQgYmUgaGF2ZSBpdHMgb3duICItLXNvdXJjZS1kaXI9IiBwcmVmaXguCi0g
ICAgICAgIGFyZ3MuZXh0ZW5kKFsnLS1zb3VyY2UtZGlyPSVzJyAlIHBhdGggZm9yIHBhdGggaW4g
c2VsZi5zb3VyY2VfZGlyc10pCi0gICAgICAgIHNlbGYuX3J1bl9jb21tYW5kKGFyZ3MsIGN3ZD1z
ZWxmLm91dHB1dF9kaXIpCi0KLSAgICBkZWYgX3J1bl9ndGtkb2NfbWtodG1sKHNlbGYpOgotICAg
ICAgICBodG1sX2Rlc3RfZGlyID0gb3MucGF0aC5qb2luKHNlbGYub3V0cHV0X2RpciwgJ2h0bWwn
KQotICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2RpcihodG1sX2Rlc3RfZGlyKToKLSAgICAgICAg
ICAgIHJhaXNlIEV4Y2VwdGlvbigiJXMgaXMgbm90IGEgZGlyZWN0b3J5LCBjb3VsZCBub3QgZ2Vu
ZXJhdGUgSFRNTCIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIGh0bWxfZGVzdF9kaXIp
Ci0gICAgICAgIGVsaWYgbm90IG9zLmFjY2VzcyhodG1sX2Rlc3RfZGlyLCBvcy5YX09LIHwgb3Mu
Ul9PSyB8IG9zLldfT0spOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJDb3VsZCBub3Qg
YWNjZXNzICVzIHRvIGdlbmVyYXRlIEhUTUwiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
JSBodG1sX2Rlc3RfZGlyKQotCi0gICAgICAgICMgZ3RrZG9jLW1raHRtbCBleHBlY3RzIHRoZSBT
R01MIHBhdGggdG8gYmUgYWJzb2x1dGUuCi0gICAgICAgIHNnbWxfZmlsZSA9IG9zLnBhdGguam9p
bihvcy5wYXRoLmFic3BhdGgoc2VsZi5vdXRwdXRfZGlyKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNlbGYubWFpbl9zZ21sX2ZpbGUpCi0gICAgICAgIHNlbGYuX3JhaXNlX2V4
Y2VwdGlvbl9pZl9maWxlX2luYWNjZXNzaWJsZShzZ21sX2ZpbGUpCi0KLSAgICAgICAgc2VsZi5f
cnVuX2NvbW1hbmQoWydndGtkb2MtbWtodG1sJywgc2VsZi5tb2R1bGVfbmFtZSwgc2dtbF9maWxl
XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY3dkPWh0bWxfZGVzdF9kaXIpCi0KLSAgICBk
ZWYgX3J1bl9ndGtkb2NfZml4eHJlZihzZWxmKToKLSAgICAgICAgc2VsZi5fcnVuX2NvbW1hbmQo
WydndGtkb2MtZml4eHJlZicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1tb2R1bGUt
ZGlyPWh0bWwnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0taHRtbC1kaXI9aHRtbCdd
LAotICAgICAgICAgICAgICAgICAgICAgICAgICBjd2Q9c2VsZi5vdXRwdXRfZGlyKQotCi0KLWNs
YXNzIFBrZ0NvbmZpZ0dUS0RvYyhHVEtEb2MpOgotCi0gICAgIiIiQ2xhc3MgcmVhZHMgYSBsaWJy
YXJ5J3MgcGtnY29uZmlnIGZpbGUgdG8gZ3Vlc3MgZ3RrZG9jIHBhcmFtZXRlcnMuCi0KLSAgICBT
b21lIGd0a2RvYyBwYXJhbWV0ZXJzIGNhbiBiZSBndWVzc2VkIGJ5IHJlYWRpbmcgYSBsaWJyYXJ5
J3MgcGtnY29uZmlnCi0gICAgZmlsZSwgaW5jbHVkaW5nIHRoZSBjZmxhZ3MsIGxkZmxhZ3MgYW5k
IHZlcnNpb24gcGFyYW1ldGVycy4gSWYgeW91Ci0gICAgcHJvdmlkZSB0aGVzZSBwYXJhbWV0ZXJz
IGFzIHdlbGwsIHRoZXkgd2lsbCBiZSBhcHBlbmRlZCB0byB0aGUgb25lcwotICAgIGd1ZXNzZWQg
dmlhIHRoZSBwa2djb25maWcgZmlsZS4KLQotICAgIEtleXdvcmQgYXJndW1lbnRzOgotICAgICAg
cGtnX2NvbmZpZ19wYXRoIC0tIFBhdGggdG8gdGhlIHBrZ2NvbmZpZyBmaWxlIGZvciB0aGUgbGli
cmFyeS4gUmVxdWlyZWQuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgcGtnX2Nv
bmZpZ19wYXRoLCAqKmFyZ3MpOgotICAgICAgICBzdXBlcihQa2dDb25maWdHVEtEb2MsIHNlbGYp
Ll9faW5pdF9fKCoqYXJncykKLQotICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMocGtnX2Nv
bmZpZ19wYXRoKToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignQ291bGQgbm90IGZpbmQg
cGtnLWNvbmZpZyBmaWxlIGF0OiAlcycKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIHBr
Z19jb25maWdfcGF0aCkKLQotICAgICAgICBzZWxmLmNmbGFncyArPSAiICIgKyBzZWxmLl9ydW5f
Y29tbWFuZChbJ3BrZy1jb25maWcnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcGtnX2NvbmZpZ19wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJy0tY2ZsYWdzJ10sIHByaW50X291dHB1dD1GYWxzZSkK
LSAgICAgICAgc2VsZi5sZGZsYWdzICs9ICIgIiArIHNlbGYuX3J1bl9jb21tYW5kKFsncGtnLWNv
bmZpZycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
a2dfY29uZmlnX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnLS1saWJzJ10sIHByaW50X291dHB1dD1GYWxzZSkKLSAgICAgICAgc2VsZi52ZXJz
aW9uID0gc2VsZi5fcnVuX2NvbW1hbmQoWydwa2ctY29uZmlnJywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHBrZ19jb25maWdfcGF0aCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLW1vZHZlcnNpb24nXSwgcHJpbnRfb3V0cHV0
PUZhbHNlKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IGJiNjE5YmEwNTk3YzViZGE4YzY2NWU0NTFiMDIwOTE2MTlkYWUwNzguLmJmOTg0MjRlOThl
NTBiNDkxNWYzOWExY2FkMWFhMDgxMTJkOWMwN2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMS0xMS0xNyAgTWFy
dGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gSW50
ZWdyYXRlIGJ1aWxkLWd0a2RvYyBpbnRvIGJ1aWxkLXdlYmtpdCBhbmQgbWFrZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzI2MjYKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBB
ZGRlZCBzdXBwb3J0IGZvciBuZXcgc2NyaXB0cyBhbmQgIm1ha2UgZG9jcyIuCisgICAgICAgICog
U2NyaXB0cy93ZWJraXRkaXJzLnBtOiBDYWxsIGdlbmVyYXRlLWd0a2RvYyB3aGVuIGJ1aWxkaW5n
LgorICAgICAgICAoYnVpbGRBdXRvdG9vbHNQcm9qZWN0KToKKyAgICAgICAgKiBndGsvZ2VuZXJh
dGUtZ3RrZG9jOiBBZGRlZC4KKyAgICAgICAgKiBndGsvZ3RrZG9jLnB5OiBSZW5hbWVkIGZyb20g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy9ndGtkb2MucHkuCisKIDIwMTEt
MTEtMTcgIFJhcGhhZWwgS3VibyBkYSBDb3N0YSAgPGt1Ym9AcHJvZnVzaW9uLm1vYmk+CiAKICAg
ICAgICAgW0VGTF0gQ2xlYW4gdXAgdGhlIHVzZSBvZiBEQVRBX0RJUiBpbiB0aGUgYnVpbGRzeXN0
ZW0KZGlmZiAtLWdpdCBhL1Rvb2xzL0dOVW1ha2VmaWxlLmFtIGIvVG9vbHMvR05VbWFrZWZpbGUu
YW0KaW5kZXggZmQ5ZWY3MDE0M2ViY2ZhYTQ2ODEzYjEyODBiYWVjYTRkNjMwYjM0YS4uMDZjZDYx
Y2E4OTEyNjQ1NjdiYzliZDFjNzc3YTRhMjA3YThlY2NiNCAxMDA2NDQKLS0tIGEvVG9vbHMvR05V
bWFrZWZpbGUuYW0KKysrIGIvVG9vbHMvR05VbWFrZWZpbGUuYW0KQEAgLTIyNywzICsyMjcsMzgg
QEAgVGVzdE5ldHNjYXBlUGx1Z2luX2xpYnRlc3RuZXRzY2FwZXBsdWdpbl9sYV9MREZMQUdTID0g
XAogCiBDTEVBTkZJTEVTICs9IFRlc3ROZXRzY2FwZVBsdWdpbi9saWJ0ZXN0bmV0c2NhcGVwbHVn
aW4ubGEKIGVuZGlmCisKK0VYVFJBX0RJU1QgKz0gXAorCSQoZmluZCAkKHNyY2RpcikvVG9vbHMv
U2NyaXB0cy93ZWJraXRweSkgXAorCVRvb2xzL2d0ay9nZW5lcmF0ZS1ndGtkb2MgXAorCVRvb2xz
L2d0ay9ndGtkb2MucHkgXAorCVRvb2xzL1NjcmlwdHMvVkNTVXRpbHMucG0gXAorCVRvb2xzL1Nj
cmlwdHMvd2Via2l0LWJ1aWxkLWRpcmVjdG9yeSBcCisJVG9vbHMvU2NyaXB0cy93ZWJraXRkaXJz
LnBtCisKK2RvY3M6ICQoQlVJTFRfU09VUkNFUykgXAorCWxpYndlYmtpdGd0ay1AV0VCS0lUR1RL
X0FQSV9NQUpPUl9WRVJTSU9OQC5AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQC5sYSBcCisJ
bGlid2Via2l0Mmd0ay1AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQC5AV0VCS0lUR1RLX0FQ
SV9NSU5PUl9WRVJTSU9OQC5sYQorCSQoc3JjZGlyKS9Ub29scy9ndGsvZ2VuZXJhdGUtZ3RrZG9j
CisuUEhPTlkgOiBkb2NzCisKK2NsZWFuLWxvY2FsOiBkb2MtY2xlYW4tbG9jYWwKK2RvYy1jbGVh
bi1sb2NhbDoKKwlAcm0gLWYgRG9jdW1lbnRhdGlvbi8qfiBEb2N1bWVudGF0aW9uLyouYmFrCitk
aXN0Y2xlYW4tbG9jYWw6IGRvYy1kaXN0Y2xlYW4tbG9jYWwKK2RvYy1kaXN0Y2xlYW4tbG9jYWw6
CisJQHJtIC1yZiBEb2N1bWVudGF0aW9uCittYWludGFpbmVyLWNsZWFuLWxvY2FsOiBkb2MtbWFp
bnRhaW5lci1jbGVhbi1sb2NhbAorZG9jLW1haW50YWluZXItY2xlYW4tbG9jYWw6IGNsZWFuCisJ
QHJtIC1yZiBEb2N1bWVudGF0aW9uL3htbCBEb2N1bWVudGF0aW9uL2h0bWwKKwktQHJtZGlyIERv
Y3VtZW50YXRpb24KKworaWYgRU5BQkxFX0dUS19ET0MKK2Rpc3QtY2hlY2stZ3RrZG9jOgorYWxs
OiBkb2NzCitlbHNlCitkaXN0LWNoZWNrLWd0a2RvYzoKKwlAZWNobyAiKioqIGd0ay1kb2MgbXVz
dCBiZSBpbnN0YWxsZWQgYW5kIGVuYWJsZWQgaW4gb3JkZXIgdG8gbWFrZSBkaXN0IgorCUBmYWxz
ZQorZW5kaWYKKwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRkaXJzLnBtIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRkaXJzLnBtCmluZGV4IDc2Y2FlNzIzNzc5NjBmMDViY2I2YWVhNDgy
YmRhMjYxZDhiN2QwYWEuLjdjNjE5YTE4MzYyMGE1YjdmOGZmZjVkNjk0NmI2MWU2MDA2MmY2OGQg
MTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0ZGlycy5wbQorKysgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdGRpcnMucG0KQEAgLTE2MzUsNiArMTYzNSwxNCBAQCBzdWIgYnVpbGRBdXRvdG9v
bHNQcm9qZWN0KCRAKQogICAgIH0KIAogICAgIGNoZGlyICIuLiIgb3IgZGllOworCisgICAgaWYg
KGlzR3RrKCkpIHsKKyAgICAgICAgbXkgJHJlbGF0aXZlU2NyaXB0c1BhdGggPSByZWxhdGl2ZVNj
cmlwdHNEaXIoKTsKKyAgICAgICAgaWYgKHN5c3RlbSgiJHJlbGF0aXZlU2NyaXB0c1BhdGgvLi4v
Z3RrL2dlbmVyYXRlLWd0a2RvYyAtLXNraXAtaHRtbCIpKSB7CisgICAgICAgICAgICBkaWUgIlxu
IGd0a2RvYyBkaWQgbm90IGJ1aWxkIHdpdGhvdXQgd2FybmluZ3NcbiI7CisgICAgICAgIH0KKyAg
ICB9CisKICAgICByZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvZ3RrL2dlbmVyYXRl
LWd0a2RvYyBiL1Rvb2xzL2d0ay9nZW5lcmF0ZS1ndGtkb2MKbmV3IGZpbGUgbW9kZSAxMDA3NTUK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTFmMzkyYjE0
YjdmMzhiMGU3NmQzM2MxYTFlODFhYjQxMGNiZWE3YwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xz
L2d0ay9nZW5lcmF0ZS1ndGtkb2MKQEAgLTAsMCArMSwxNDYgQEAKKyMhL3Vzci9iaW4vZW52IHB5
dGhvbgorIyBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KKyMKKyMgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorIyBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisj
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorIyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisjCisjIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorIyBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj
CisjIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhl
IEZyZWUgU29mdHdhcmUKKyMgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisKK2ltcG9ydCBnbG9iCitp
bXBvcnQgZ3RrZG9jCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IG9zLnBhdGgKK2ltcG9ydCBzdWJw
cm9jZXNzCitpbXBvcnQgc3lzCisKK3NjcmlwdF9kaXIgPSBOb25lCitidWlsZF9kaXIgPSBOb25l
CisKK2RlZiBjb25maWd1cmVfbG9nZ2luZygpOgorICAgIGxldmVsID0gbG9nZ2luZy5ERUJVRyBp
ZiAnLXYnIGluIHN5cy5hcmd2IGVsc2UgbG9nZ2luZy5JTkZPCisgICAgbG9nZ2VyID0gbG9nZ2lu
Zy5nZXRMb2dnZXIoJ2d0a2RvYycpCisgICAgbG9nZ2VyLnNldExldmVsKGxldmVsKQorICAgIGhh
bmRsZXIgPSBsb2dnaW5nLlN0cmVhbUhhbmRsZXIoKQorICAgIGhhbmRsZXIuc2V0TGV2ZWwobGV2
ZWwpCisgICAgbG9nZ2VyLmFkZEhhbmRsZXIoaGFuZGxlcikKKyAgICBpZiBsZXZlbCA9PSBsb2dn
aW5nLkRFQlVHOgorICAgICAgICBoYW5kbGVyLnNldEZvcm1hdHRlcihsb2dnaW5nLkZvcm1hdHRl
cignWyUoYXNjdGltZSlzXSAgJShtZXNzYWdlKXMnKSkKKyAgICBlbHNlOgorICAgICAgICBoYW5k
bGVyLnNldEZvcm1hdHRlcihsb2dnaW5nLkZvcm1hdHRlcignJShtZXNzYWdlKXMnKSkKKworZGVm
IHNjcmlwdF9wYXRoKCphcmdzKToKKyAgICBnbG9iYWwgc2NyaXB0X2RpcgorICAgIGlmIG5vdCBz
Y3JpcHRfZGlyOgorICAgICAgICBzY3JpcHRfZGlyID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGly
bmFtZShfX2ZpbGVfXyksICcuLicsICdTY3JpcHRzJykKKyAgICByZXR1cm4gb3MucGF0aC5qb2lu
KCooc2NyaXB0X2RpciwpICsgYXJncykKKworZGVmIHRvcF9sZXZlbF9wYXRoKCphcmdzKToKKyAg
ICByZXR1cm4gb3MucGF0aC5qb2luKCooKHNjcmlwdF9wYXRoKCcuLicsICcuLicpLCkgKyBhcmdz
KSkKKworZGVmIGdldF9idWlsZF9wYXRoKCk6CisgICAgZ2xvYmFsIGJ1aWxkX2RpcgorICAgIGlm
IGJ1aWxkX2RpcjoKKyAgICAgICAgcmV0dXJuIGJ1aWxkX2RpcgorCisgICAgZGVmIGlzX3ZhbGlk
X2J1aWxkX2RpcmVjdG9yeShwYXRoKToKKyAgICAgICAgcmV0dXJuIG9zLnBhdGguZXhpc3RzKG9z
LnBhdGguam9pbihwYXRoLCAnLmxpYnMnKSkKKworICAgIHByb2Nlc3MgPSBzdWJwcm9jZXNzLlBv
cGVuKFsncGVybCcsIHNjcmlwdF9wYXRoKCd3ZWJraXQtYnVpbGQtZGlyZWN0b3J5JyksICctLWNv
bmZpZ3VyYXRpb24nLCAnZ3RrJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rk
b3V0PXN1YnByb2Nlc3MuUElQRSkKKyAgICBidWlsZF9kaXIgPSBwcm9jZXNzLmNvbW11bmljYXRl
KClbMF0uc3RyaXAoKQorICAgIHByaW50IGJ1aWxkX2RpcgorCisgICAgaWYgaXNfdmFsaWRfYnVp
bGRfZGlyZWN0b3J5KGJ1aWxkX2Rpcik6CisgICAgICAgIHJldHVybiBidWlsZF9kaXIKKyAgICBi
dWlsZF9kaXIgPSB0b3BfbGV2ZWxfcGF0aCgpCisgICAgaWYgaXNfdmFsaWRfYnVpbGRfZGlyZWN0
b3J5KGJ1aWxkX2Rpcik6CisgICAgICAgIHJldHVybiBidWlsZF9kaXIKKworICAgIHByaW50ICdD
b3VsZCBub3QgZGV0ZXJtaW5lIGJ1aWxkIGRpcmVjdG9yeS4nCisgICAgc3lzLmV4aXQoMSkKKwor
ZGVmIGJ1aWxkX3BhdGgoKmFyZ3MpOgorICAgIHJldHVybiBvcy5wYXRoLmpvaW4oKihnZXRfYnVp
bGRfcGF0aCgpLCkgKyBhcmdzKQorCitkZWYgZ2V0X2NvbW1vbl9vcHRpb25zKCk6CisgICAgcmV0
dXJuIHsKKyAgICAgICAgJ2RlY29yYXRvcic6ICdXRUJLSVRfQVBJJywKKyAgICAgICAgJ2RlcHJl
Y2F0aW9uX2d1YXJkJzogJ1dFQktJVF9ESVNBQkxFX0RFUFJFQ0FURUQnLAorICAgICAgICAnbGli
cmFyeV9wYXRoJyA6IGJ1aWxkX3BhdGgoJy5saWJzJyksCisgICAgfQorCitkZWYgZ2V0X3dlYmtp
dDJfb3B0aW9ucygpOgorICAgIGRlZiBkZXJpdmVkX3NvdXJjZXNfcGF0aCgqYXJncyk6CisgICAg
ICAgIHJldHVybiBidWlsZF9wYXRoKCooKCdEZXJpdmVkU291cmNlcycsICdXZWJLaXQyJykgKyBh
cmdzKSkKKyAgICBkZWYgc3JjX3BhdGgoKmFyZ3MpOgorICAgICAgICByZXR1cm4gdG9wX2xldmVs
X3BhdGgoKigoJ1NvdXJjZScsICdXZWJLaXQyJywgJ1VJUHJvY2VzcycsICdBUEknLCAnZ3RrJykg
KyBhcmdzKSkKKworICAgIGRlcml2ZWRfc291cmNlcyA9IGJ1aWxkX3BhdGgoJ0Rlcml2ZWRTb3Vy
Y2VzJywgJ1dlYktpdDInKQorICAgIG9wdGlvbnMgPSBnZXRfY29tbW9uX29wdGlvbnMoKS5jb3B5
KCkKKyAgICBvcHRpb25zLnVwZGF0ZSh7CisgICAgICAgICdtb2R1bGVfbmFtZScgOiAnd2Via2l0
Mmd0aycsCisgICAgICAgICdkb2NfZGlyJyA6IHNyY19wYXRoKCdkb2NzJyksCisgICAgICAgICdv
dXRwdXRfZGlyJyA6IGJ1aWxkX3BhdGgoJ0RvY3VtZW50YXRpb24nLCAnd2Via2l0Mmd0aycpLAor
ICAgICAgICAnc291cmNlX2RpcnMnIDogW3NyY19wYXRoKCldLAorICAgICAgICAnY2ZsYWdzJyA6
ICcgLUknICsgZGVyaXZlZF9zb3VyY2VzX3BhdGgoJ3dlYmtpdDJndGsnLCAnaW5jbHVkZScpICsg
XAorICAgICAgICAgICAgICAgICAgICcgLUknICsgZGVyaXZlZF9zb3VyY2VzX3BhdGgoJ3dlYmtp
dDJndGsnKSArIFwKKyAgICAgICAgICAgICAgICAgICAnIC1JJyArIGRlcml2ZWRfc291cmNlc19w
YXRoKCdpbmNsdWRlJykgKyBcCisgICAgICAgICAgICAgICAgICAgJyAtSScgKyB0b3BfbGV2ZWxf
cGF0aCgnU291cmNlJykgKyBcCisgICAgICAgICAgICAgICAgICAgJyAtSScgKyBzcmNfcGF0aCgp
LAorICAgICAgICAnaWdub3JlZF9maWxlcyc6IGdsb2IuZ2xvYihzcmNfcGF0aCgnKlByaXZhdGUu
aCcpKSArIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iLmdsb2Ioc3JjX3BhdGgoJ1Bh
Z2VDbGllbnRJbXBsLionKSkgKyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYi5nbG9i
KHNyY19wYXRoKCd0ZXN0cy8qLmgnKSkKKyAgICB9KQorICAgIHJldHVybiAoYnVpbGRfcGF0aCgn
U291cmNlJywgJ1dlYktpdDInLCAnd2Via2l0Mmd0ay0zLjAucGMnKSwgb3B0aW9ucykKKworZGVm
IGdldF93ZWJraXQxX29wdGlvbnMoKToKKyAgICBkZWYgZGVyaXZlZF9zb3VyY2VzX3BhdGgoKmFy
Z3MpOgorICAgICAgICByZXR1cm4gYnVpbGRfcGF0aCgqKCgnRGVyaXZlZFNvdXJjZXMnLCAnV2Vi
S2l0MicpICsgYXJncykpCisgICAgZGVmIHNyY19wYXRoKCphcmdzKToKKyAgICAgICAgcmV0dXJu
IHRvcF9sZXZlbF9wYXRoKCooKCdTb3VyY2UnLCAnV2ViS2l0JywgJ2d0aycpICsgYXJncykpCisK
KyAgICBkZXJpdmVkX3NvdXJjZXMgPSBidWlsZF9wYXRoKCdEZXJpdmVkU291cmNlcycsICdXZWJL
aXQyJykKKyAgICBvcHRpb25zID0gZ2V0X2NvbW1vbl9vcHRpb25zKCkuY29weSgpCisgICAgb3B0
aW9ucy51cGRhdGUoeworICAgICAgICAnbW9kdWxlX25hbWUnIDogJ3dlYmtpdGd0aycsCisgICAg
ICAgICdkb2NfZGlyJyA6IHNyY19wYXRoKCdkb2NzJyksCisgICAgICAgICdvdXRwdXRfZGlyJyA6
IGJ1aWxkX3BhdGgoJ0RvY3VtZW50YXRpb24nLCAnd2Via2l0Z3RrJyksCisgICAgICAgICdzb3Vy
Y2VfZGlycycgOiBbc3JjX3BhdGgoJ3dlYmtpdCcpLCBidWlsZF9wYXRoKCdTb3VyY2UnLCAnV2Vi
S2l0JywgJ2d0aycsICd3ZWJraXQnKV0sCisgICAgICAgICdjZmxhZ3MnIDogJyAtSScgKyBidWls
ZF9wYXRoKCdXZWJLaXQnLCAnZ3RrJykgKyBcCisgICAgICAgICAgICAgICAgICAgJyAtSScgKyBi
dWlsZF9wYXRoKCdEZXJpdmVkU291cmNlcycpICsgXAorICAgICAgICAgICAgICAgICAgICcgLUkn
ICsgc3JjX3BhdGgoKSArIFwKKyAgICAgICAgICAgICAgICAgICAnIC1JJyArIHRvcF9sZXZlbF9w
YXRoKCdTb3VyY2UnKSArIFwKKyAgICAgICAgICAgICAgICAgICAnIC1JJyArIHRvcF9sZXZlbF9w
YXRoKCdTb3VyY2UnLCAnSmF2YVNjcmlwdENvcmUnLCAnRm9yd2FyZGluZ0hlYWRlcnMnKSwKKyAg
ICAgICAgJ2lnbm9yZWRfZmlsZXMnOiBnbG9iLmdsb2Ioc3JjX3BhdGgoJ3dlYmtpdCcsICcqcHJp
dmF0ZS4qJykpCisgICAgfSkKKyAgICByZXR1cm4gKGJ1aWxkX3BhdGgoJ1NvdXJjZScsICdXZWJL
aXQnLCAnZ3RrJywgJ3dlYmtpdGd0ay0zLjAucGMnKSwgb3B0aW9ucykKKworY29uZmlndXJlX2xv
Z2dpbmcoKQorCisjIFdlIG5lZWQgdG8gYWRkIHRoZSBKYXZhU2NyaXB0Q29yZSBidWlsZCBkaXJl
Y3RvcnkgdG8gdGhlIFBLR19DT05GSUdfUEFUSAorIyBzbyB0aGF0IHBrZ2NvbmZpZyBjYW4gcHJv
cGVybHkgcmVzb2x2ZSB0aGUgbGliamF2YXNjcmlwdGNvcmUgZGVwZW5kZW5jeS4KK29zLmVudmly
b25bJ1BLR19DT05GSUdfUEFUSCddID0gYnVpbGRfcGF0aCgnU291cmNlJywgJ0phdmFTY3JpcHRD
b3JlJykgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICc6JyArIG9zLmVudmly
b25bJ1BLR19DT05GSUdfUEFUSCddCisKK3ByaW50ICJHZW5lcmF0aW5nIFdlYktpdDEgZG9jdW1l
bnRhdGlvbi4uLiIKK3BrZ19jb25maWdfcGF0aCwgb3B0aW9ucyA9IGdldF93ZWJraXQxX29wdGlv
bnMoKQorZ2VuZXJhdG9yID0gZ3RrZG9jLlBrZ0NvbmZpZ0dUS0RvYyhwa2dfY29uZmlnX3BhdGgs
ICoqb3B0aW9ucykKK2dlbmVyYXRvci5nZW5lcmF0ZShodG1sPSctLXNraXAtaHRtbCcgbm90IGlu
IHN5cy5hcmd2KQorCisjIFdlYktpdDIgbWlnaHQgbm90IGJlIGVuYWJsZWQsIHNvIGNoZWNrIGZv
ciB0aGUgcGtnLWNvbmZpZyBmaWxlIGJlZm9yZSBidWlsZGluZyBkb2N1bWVudGF0aW9uLgoraWYg
b3MucGF0aC5leGlzdHMoYnVpbGRfcGF0aCgnU291cmNlJywgJ1dlYktpdDInLCAnd2Via2l0Mmd0
ay0zLjAucGMnKSk6CisgICAgcHJpbnQgIlxuR2VuZXJhdGluZyBXZWJLaXQyIGRvY3VtZW50YXRp
b24uLi4iCisgICAgcGtnX2NvbmZpZ19wYXRoLCBvcHRpb25zID0gZ2V0X3dlYmtpdDJfb3B0aW9u
cygpCisgICAgZ2VuZXJhdG9yID0gZ3RrZG9jLlBrZ0NvbmZpZ0dUS0RvYyhwa2dfY29uZmlnX3Bh
dGgsICoqb3B0aW9ucykKKyAgICBnZW5lcmF0b3IuZ2VuZXJhdGUoaHRtbD0nLS1za2lwLWh0bWwn
IG5vdCBpbiBzeXMuYXJndikKKworc3lzLmV4aXQoZ2VuZXJhdG9yLnNhd193YXJuaW5ncykKZGlm
ZiAtLWdpdCBhL1Rvb2xzL2d0ay9ndGtkb2MucHkgYi9Ub29scy9ndGsvZ3RrZG9jLnB5Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjBiY2FmNGVjNzc1NTJjYjU1YTc3ZDJjOThhYjgxN2ZjNGE1N2MwNjQKLS0tIC9kZXYv
bnVsbAorKysgYi9Ub29scy9ndGsvZ3RrZG9jLnB5CkBAIC0wLDAgKzEsMzcyIEBACisjIENvcHly
aWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgorIworIyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisjIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyMgTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisjIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKyMKKyMgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisjIExlc3NlciBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyMgTGljZW5zZSBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2Fy
ZQorIyBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBC
b3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKworaW1wb3J0IGVycm5vCitpbXBvcnQgbG9nZ2lu
ZworaW1wb3J0IG9zCitpbXBvcnQgb3MucGF0aAoraW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCBz
eXMKKworCitjbGFzcyBHVEtEb2Mob2JqZWN0KToKKworICAgICIiIkNsYXNzIHRoYXQgY29udHJv
bHMgYSBndGtkb2MgcnVuLgorCisgICAgRWFjaCBpbnN0YW5jZSBvZiB0aGlzIGNsYXNzIHJlcHJl
c2VudHMgb25lIGd0a2RvYyBjb25maWd1cmF0aW9uCisgICAgYW5kIHNldCBvZiBkb2N1bWVudGF0
aW9uLiBUaGUgZ3RrZG9jIHBhY2thZ2UgaXMgYSBzZXJpZXMgb2YgdG9vbHMKKyAgICBydW4gY29u
c2VjdXRpdmVseSB3aGljaCBjb252ZXJ0cyBpbmxpbmUgQy9DKysgZG9jdW1lbnRhdGlvbiBpbnRv
CisgICAgZG9jYm9vayBmaWxlcyBhbmQgdGhlbiBpbnRvIEhUTUwuIFRoaXMgY2xhc3MgaXMgc3Vp
dGFibGUgZm9yCisgICAgZ2VuZXJhdGluZyBkb2N1bWVudGF0aW9uIG9yIHNpbXBseSB2ZXJpZnlp
bmcgY29ycmVjdG5lc3MuCisKKyAgICBLZXl3b3JkIGFyZ3VtZW50czoKKyAgICBvdXRwdXRfZGly
ICAgICAgICAgLS0gVGhlIHBhdGggd2hlcmUgZ3RrZG9jIG91dHB1dCBzaG91bGQgYmUgcGxhY2Vk
LiBHZW5lcmF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgIG1heSBvdmVyd3JpdGUgZmls
ZSBpbiB0aGlzIGRpcmVjdG9yeS4gUmVxdWlyZWQuCisgICAgbW9kdWxlX25hbWUgICAgICAgIC0t
IFRoZSBuYW1lIG9mIHRoZSBkb2N1bWVudGF0aW9uIG1vZHVsZS4gRm9yIGxpYnJhcmllcyB0aGlz
CisgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHR5cGljYWxseSB0aGUgbGlicmFyeSBuYW1l
LiBSZXF1aXJlZCBpZiBub3QgbGlicmFyeSBwYXRoCisgICAgICAgICAgICAgICAgICAgICAgICAg
IGlzIGdpdmVuLgorICAgIHNvdXJjZV9kaXJzICAgICAgICAtLSBBIGxpc3Qgb2YgcGF0aHMgdG8g
dGhlIHNvdXJjZSBjb2RlIHRvIGJlIHNjYW5uZWQuIFJlcXVpcmVkLgorICAgIGlnbm9yZWRfZmls
ZXMgICAgICAtLSBBIGxpc3Qgb2YgZmlsZW5hbWVzIHRvIGlnbm9yZSBpbiB0aGUgc291cmNlIGRp
cmVjdG9yeS4gSXQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgb25seSBuZWNlc3Nhcnkg
dG8gcHJvdmlkZSB0aGUgYmFzZW5hbWVzIG9mIHRoZXNlIGZpbGVzLgorICAgICAgICAgICAgICAg
ICAgICAgICAgICBUeXBpY2FsbHkgaXQgaXMgaW1wb3J0YW50IHRvIHByb3ZpZGUgYW4gdXBkYXRl
ZCBsaXN0IG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZWQgZmlsZXMgdG8gcHJl
dmVudCB3YXJuaW5ncyBhYm91dCB1bmRvY3VtZW50ZWQgc3ltYm9scy4KKyAgICBkZWNvcmF0b3Ig
ICAgICAgICAgLS0gSWYgYSBkZWNvcmF0b3IgaXMgdXNlZCB0byB1bmhpZGUgY2VydGFpbiBzeW1i
b2xzIGluIGhlYWRlcgorICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlcyB0aGlzIHBhcmFt
ZXRlciBpcyByZXF1aXJlZCBmb3Igc3VjY2Vzc2Z1bCBzY2FubmluZy4KKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgKGRlZmF1bHQgJycpCisgICAgZGVwcmVjYXRpb25fZ3VhcmQgIC0tIGd0a2Rv
YyB0cmllcyB0byBlbnN1cmUgdGhhdCBzeW1ib2xzIG1hcmtlZCBhcyBkZXByZWNhdGVkCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFyZSBlbmNhc2VkIGluIHRoaXMgQyBwcmVwcm9jZXNzb3Ig
ZGVmaW5lLiBUaGlzIGlzIHJlcXVpcmVkCisgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGF2
b2lkIGd0a2RvYyB3YXJuaW5ncy4gKGRlZmF1bHQgJycpCisgICAgY2ZsYWdzICAgICAgICAgICAg
IC0tIFRoaXMgcGFyYW1ldGVyIHNwZWNpZmllcyBhbnkgcHJlcHJvY2Vzc29yIGZsYWdzIG5lY2Vz
c2FyeSBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRpbmcgdGhlIHNjYW5uZXIg
YmluYXJ5IGR1cmluZyBndGtkb2Mtc2Nhbm9iai4gVHlwaWNhbGx5CisgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRoaXMgaW5jbHVkZXMgYWxsIGFic29sdXRlIGluY2x1ZGUgcGF0aHMgbmVjZXNz
YXJ5IHRvIHJlc29sdmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsIGhlYWRlciBkZXBl
bmRlbmNpZXMuIChkZWZhdWx0ICcnKQorICAgIGxkZmxhZ3MgICAgICAgICAgICAtLSBUaGlzIHBh
cmFtZXRlciBzcGVjaWZpZXMgYW55IGxpbmtlciBmbGFncyBuZWNlc3NhcnkgZm9yCisgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJ1aWxkaW5nIHRoZSBzY2FubmVyIGJpbmFyeSBkdXJpbmcgZ3Rr
ZG9jLXNjYW5vYmouIFR5cGljYWxseQorICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzIGlu
Y2x1ZGVzICItbHlvdXJsaWJyYXJ5bmFtZSIuIChkZWZhdWx0ICcnKQorICAgIGxpYnJhcnlfcGF0
aCAgICAgICAtLSBUaGlzIHBhcmFtZXRlciBzcGVjaWZpZXMgdGhlIHBhdGggdG8gdGhlIGRpcmVj
dG9yeSB3aGVyZSB5b3UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyeSByZXNpZGVz
IHVzZWQgZm9yIGJ1aWxkaW5nIHRoZSBzY2FubmVyIGJpbmFyeSBkdXJpbmcKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ3RrZG9jLXNjYW5vYmouIChkZWZhdWx0ICcnKQorCisgICAgZG9jX2Rp
ciAgICAgICAgICAgIC0tIFRoZSBwYXRoIHRvIG90aGVyIGRvY3VtZW50YXRpb24gZmlsZXMgbmVj
ZXNzYXJ5IHRvIGJ1aWxkCisgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBkb2N1bWVudGF0
aW9uLiBUaGlzIGZpbGVzIGluIHRoaXMgZGlyZWN0b3J5IGFzIHdlbGwgYXMKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgdGhlIGZpbGVzIGluIHRoZSAnaHRtbCcgc3ViZGlyZWN0b3J5IHdpbGwg
YmUgY29waWVkCisgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3Vyc2l2ZWx5IGludG8gdGhl
IG91dHB1dCBkaXJlY3RvcnkuIChkZWZhdWx0ICcnKQorICAgIG1haW5fc2dtbF9maWxlICAgICAt
LSBUaGUgcGF0aCBvciBuYW1lIChpZiBhIGRvY19kaXIgaXMgZ2l2ZW4pIG9mIHRoZSBTR01MIGZp
bGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBpcyB0aGUgY29uc2lkZXJlZCB0aGUg
bWFpbiBwYWdlIG9mIHlvdXIgZG9jdW1lbnRhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgKGRlZmF1bHQ6IDxtb2R1bGVfbmFtZT4tZG9jcy5zZ21sKQorICAgIHZlcnNpb24gICAgICAg
ICAgICAtLSBUaGUgdmVyc2lvbiBudW1iZXIgb2YgdGhlIG1vZHVsZS4gSWYgdGhpcyBpcyBwcm92
aWRlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYSB2ZXJzaW9uLnhtbCBmaWxlIGNvbnRh
aW5pbmcgdGhlIHZlcnNpb24gd2lsbCBiZSBjcmVhdGVkCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIGluIHRoZSBvdXRwdXQgZGlyZWN0b3J5IGR1cmluZyBkb2N1bWVudGF0aW9uIGdlbmVyYXRp
b24uCisKKyAgICBpbnRlcmFjdGl2ZSAgICAgICAgLS0gV2hldGhlciBvciBub3QgZXJyb3JzIG9y
IHdhcm5pbmdzIHNob3VsZCBwcm9tcHQgdGhlIHVzZXIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgdG8gY29udGludWUgb3Igbm90LiBXaGVuIHRoaXMgdmFsdWUgaXMgZmFsc2UsIGdlbmVyYXRp
b24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgd2lsbCBjb250aW51ZSBkZXNwaXRlIHdhcm5p
bmdzLiAoZGVmYXVsdCBGYWxzZSkKKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCAq
KmFyZ3MpOgorCisgICAgICAgICMgUGFyYW1ldGVycyBzcGVjaWZpYyB0byBzY2FubmluZy4KKyAg
ICAgICAgc2VsZi5tb2R1bGVfbmFtZSA9ICcnCisgICAgICAgIHNlbGYuc291cmNlX2RpcnMgPSBb
XQorICAgICAgICBzZWxmLmlnbm9yZWRfZmlsZXMgPSBbXQorICAgICAgICBzZWxmLmRlY29yYXRv
ciA9ICcnCisgICAgICAgIHNlbGYuZGVwcmVjYXRpb25fZ3VhcmQgPSAnJworCisgICAgICAgICMg
UGFyYW1ldGVycyBzcGVjaWZpYyB0byBndGtkb2Mtc2Nhbm9iai4KKyAgICAgICAgc2VsZi5jZmxh
Z3MgPSAnJworICAgICAgICBzZWxmLmxkZmxhZ3MgPSAnJworICAgICAgICBzZWxmLmxpYnJhcnlf
cGF0aCA9ICcnCisKKyAgICAgICAgIyBQYXJhbWV0ZXJzIHNwZWNpZmljIHRvIGdlbmVyYXRpb24u
CisgICAgICAgIHNlbGYub3V0cHV0X2RpciA9ICcnCisgICAgICAgIHNlbGYuZG9jX2RpciA9ICcn
CisgICAgICAgIHNlbGYubWFpbl9zZ21sX2ZpbGUgPSAnJworCisgICAgICAgIHNlbGYuaW50ZXJh
Y3RpdmUgPSBGYWxzZQorCisgICAgICAgIHNlbGYubG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIo
J2d0a2RvYycpCisKKyAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gYXJncy5pdGVyaXRlbXMoKToK
KyAgICAgICAgICAgIHNldGF0dHIoc2VsZiwga2V5LCB2YWx1ZSkKKworICAgICAgICBkZWYgcmFp
c2VfZXJyb3JfaWZfbm90X3NwZWNpZmllZChrZXkpOgorICAgICAgICAgICAgaWYgbm90IGdldGF0
dHIoc2VsZiwga2V5KToKKyAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJyVzIG5vdCBz
cGVjaWZpZWQuJyAlIGtleSkKKworICAgICAgICByYWlzZV9lcnJvcl9pZl9ub3Rfc3BlY2lmaWVk
KCdvdXRwdXRfZGlyJykKKyAgICAgICAgcmFpc2VfZXJyb3JfaWZfbm90X3NwZWNpZmllZCgnc291
cmNlX2RpcnMnKQorICAgICAgICByYWlzZV9lcnJvcl9pZl9ub3Rfc3BlY2lmaWVkKCdtb2R1bGVf
bmFtZScpCisKKyAgICAgICAgIyBNYWtlIGFsbCBwYXRocyBhYnNvbHV0ZSBpbiBjYXNlIHdlIHdl
cmUgcGFzc2VkIHJlbGF0aXZlIHBhdGhzLCBzaW5jZQorICAgICAgICAjIHdlIGNoYW5nZSB0aGUg
Y3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSB3aGVuIGV4ZWN1dGluZyBzdWJjb21tYW5kcy4KKyAg
ICAgICAgc2VsZi5vdXRwdXRfZGlyID0gb3MucGF0aC5hYnNwYXRoKHNlbGYub3V0cHV0X2RpcikK
KyAgICAgICAgc2VsZi5zb3VyY2VfZGlycyA9IFtvcy5wYXRoLmFic3BhdGgoeCkgZm9yIHggaW4g
c2VsZi5zb3VyY2VfZGlyc10KKyAgICAgICAgaWYgc2VsZi5saWJyYXJ5X3BhdGg6CisgICAgICAg
ICAgICBzZWxmLmxpYnJhcnlfcGF0aCA9IG9zLnBhdGguYWJzcGF0aChzZWxmLmxpYnJhcnlfcGF0
aCkKKworICAgICAgICBpZiBub3Qgc2VsZi5tYWluX3NnbWxfZmlsZToKKyAgICAgICAgICAgIHNl
bGYubWFpbl9zZ21sX2ZpbGUgPSBzZWxmLm1vZHVsZV9uYW1lICsgIi1kb2NzLnNnbWwiCisKKyAg
ICBkZWYgZ2VuZXJhdGUoc2VsZiwgaHRtbD1UcnVlKToKKyAgICAgICAgc2VsZi5zYXdfd2Fybmlu
Z3MgPSBGYWxzZQorCisgICAgICAgIHNlbGYuX2NvcHlfZG9jX2ZpbGVzX3RvX291dHB1dF9kaXIo
aHRtbCkKKyAgICAgICAgc2VsZi5fd3JpdGVfdmVyc2lvbl94bWwoKQorICAgICAgICBzZWxmLl9y
dW5fZ3RrZG9jX3NjYW4oKQorICAgICAgICBzZWxmLl9ydW5fZ3RrZG9jX3NjYW5nb2JqKCkKKyAg
ICAgICAgc2VsZi5fcnVuX2d0a2RvY19ta3RtcGwoKQorICAgICAgICBzZWxmLl9ydW5fZ3RrZG9j
X21rZGIoKQorCisgICAgICAgIGlmIG5vdCBodG1sOgorICAgICAgICAgICAgcmV0dXJuCisKKyAg
ICAgICAgc2VsZi5fcnVuX2d0a2RvY19ta2h0bWwoKQorICAgICAgICBzZWxmLl9ydW5fZ3RrZG9j
X2ZpeHhyZWYoKQorCisgICAgZGVmIF9kZWxldGVfZmlsZV9pZl9leGlzdHMoc2VsZiwgcGF0aCk6
CisgICAgICAgIGlmIG5vdCBvcy5hY2Nlc3MocGF0aCwgb3MuRl9PSyB8IG9zLlJfT0spOgorICAg
ICAgICAgICAgcmV0dXJuCisgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCdkZWxldGluZyAlcycs
IHBhdGgpCisgICAgICAgIG9zLnVubGluayhwYXRoKQorCisgICAgZGVmIF9jcmVhdGVfZGlyZWN0
b3J5X2lmX25vbmV4aXN0ZW50KHNlbGYsIHBhdGgpOgorICAgICAgICB0cnk6CisgICAgICAgICAg
ICBvcy5tYWtlZGlycyhwYXRoKQorICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlcnJvcjoKKyAg
ICAgICAgICAgIGlmIGVycm9yLmVycm5vICE9IGVycm5vLkVFWElTVDoKKyAgICAgICAgICAgICAg
ICByYWlzZQorCisgICAgZGVmIF9yYWlzZV9leGNlcHRpb25faWZfZmlsZV9pbmFjY2Vzc2libGUo
c2VsZiwgcGF0aCk6CisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhwYXRoKSBvciBub3Qg
b3MuYWNjZXNzKHBhdGgsIG9zLlJfT0spOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJD
b3VsZCBub3QgYWNjZXNzIGZpbGUgYXQ6ICVzIiAlIHBhdGgpCisKKyAgICBkZWYgX291dHB1dF9o
YXNfd2FybmluZ3Moc2VsZiwgb3V0cHV0cyk6CisgICAgICAgIGZvciBvdXRwdXQgaW4gb3V0cHV0
czoKKyAgICAgICAgICAgIGlmIG91dHB1dCBhbmQgb3V0cHV0LmZpbmQoJ3dhcm5pbmcnKToKKyAg
ICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRl
ZiBfYXNrX3llc19vcl9ub19xdWVzdGlvbihzZWxmLCBxdWVzdGlvbik6CisgICAgICAgIGlmIG5v
dCBzZWxmLmludGVyYWN0aXZlOgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKworICAgICAgICBx
dWVzdGlvbiArPSAnIFt5L05dICcKKyAgICAgICAgYW5zd2VyID0gTm9uZQorICAgICAgICB3aGls
ZSBhbnN3ZXIgIT0gJ3knIGFuZCBhbnN3ZXIgIT0gJ24nIGFuZCBhbnN3ZXIgIT0gJyc6CisgICAg
ICAgICAgICBhbnN3ZXIgPSByYXdfaW5wdXQocXVlc3Rpb24pLmxvd2VyKCkKKyAgICAgICAgcmV0
dXJuIGFuc3dlciA9PSAneScKKworICAgIGRlZiBfcnVuX2NvbW1hbmQoc2VsZiwgYXJncywgZW52
PU5vbmUsIGN3ZD1Ob25lLCBwcmludF9vdXRwdXQ9VHJ1ZSk6CisgICAgICAgIGlmIHByaW50X291
dHB1dDoKKyAgICAgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oIlJ1bm5pbmcgJXMiLCBhcmdzWzBd
KQorICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiRnVsbCBjb21tYW5kIGFyZ3M6ICVzIiwgc3Ry
KGFyZ3MpKQorCisgICAgICAgIHByb2Nlc3MgPSBzdWJwcm9jZXNzLlBvcGVuKGFyZ3MsIGVudj1l
bnYsIGN3ZD1jd2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1z
dWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVy
cj1zdWJwcm9jZXNzLlBJUEUpCisgICAgICAgIHN0ZG91dCwgc3RkZXJyID0gcHJvY2Vzcy5jb21t
dW5pY2F0ZSgpCisKKyAgICAgICAgaWYgcHJpbnRfb3V0cHV0OgorICAgICAgICAgICAgaWYgc3Rk
b3V0OgorICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoc3Rkb3V0KQorICAgICAgICAg
ICAgaWYgc3RkZXJyOgorICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoc3RkZXJyKQor
CisgICAgICAgIGlmIHByb2Nlc3MucmV0dXJuY29kZSAhPSAwOgorICAgICAgICAgICAgcmFpc2Ug
RXhjZXB0aW9uKCclcyBwcm9kdWNlZCBhIG5vbi16ZXJvIHJldHVybiBjb2RlICVpJworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAlIChhcmdzWzBdLCBwcm9jZXNzLnJldHVybmNvZGUpKQor
CisgICAgICAgIGlmICd3YXJuaW5nJyBpbiBzdGRlcnIgb3IgJ3dhcm5pbmcnIGluIHN0ZG91dDoK
KyAgICAgICAgICAgIHNlbGYuc2F3X3dhcm5pbmdzID0gVHJ1ZQorICAgICAgICAgICAgaWYgbm90
IHNlbGYuX2Fza195ZXNfb3Jfbm9fcXVlc3Rpb24oJyVzIHByb2R1Y2VkIHdhcm5pbmdzLCAnCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHJ5IHRvIGNv
bnRpbnVlPycgJSBhcmdzWzBdKToKKyAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJyVz
IHN0ZXAgZmFpbGVkJyAlIGFyZ3NbMF0pCisKKyAgICAgICAgcmV0dXJuIHN0ZG91dC5zdHJpcCgp
CisKKyAgICBkZWYgX2NvcHlfZG9jX2ZpbGVzX3RvX291dHB1dF9kaXIoc2VsZiwgaHRtbD1UcnVl
KToKKyAgICAgICAgaWYgbm90IHNlbGYuZG9jX2RpcjoKKyAgICAgICAgICAgIHNlbGYubG9nZ2Vy
LmluZm8oJ05vdCBjb3B5aW5nIGFueSBmaWxlcyBmcm9tIGRvYyBkaXJlY3RvcnksJworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnIGJlY2F1c2Ugbm8gZG9jIGRpcmVjdG9yeSBnaXZlbi4n
KQorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgZGVmIGNvcHlfZmlsZV9yZXBsYWNpbmdf
ZXhpc3Rpbmcoc3JjLCBkZXN0KToKKyAgICAgICAgICAgIGlmIG9zLnBhdGguaXNkaXIoc3JjKToK
KyAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1Zygnc2tpcHBlZCBkaXJlY3RvcnkgJXMn
LCAgc3JjKQorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgaWYgbm90IG9zLmFj
Y2VzcyhzcmMsIG9zLkZfT0sgfCBvcy5SX09LKToKKyAgICAgICAgICAgICAgICBzZWxmLmxvZ2dl
ci5kZWJ1Zygnc2tpcHBlZCB1bnJlYWRhYmxlICVzJywgc3JjKQorICAgICAgICAgICAgICAgIHJl
dHVybgorCisgICAgICAgICAgICBzZWxmLl9kZWxldGVfZmlsZV9pZl9leGlzdHMoZGVzdCkKKwor
ICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoJ2NyZWF0ZWQgJXMnLCBkZXN0KQorICAgICAg
ICAgICAgb3MubGluayhzcmMsIGRlc3QpCisKKyAgICAgICAgZGVmIGNvcHlfYWxsX2ZpbGVzX2lu
X2RpcmVjdG9yeShzcmMsIGRlc3QpOgorICAgICAgICAgICAgZm9yIHBhdGggaW4gb3MubGlzdGRp
cihzcmMpOgorICAgICAgICAgICAgICAgIGNvcHlfZmlsZV9yZXBsYWNpbmdfZXhpc3Rpbmcob3Mu
cGF0aC5qb2luKHNyYywgcGF0aCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBvcy5wYXRoLmpvaW4oZGVzdCwgcGF0aCkpCisKKyAgICAgICAgc2VsZi5sb2dn
ZXIuaW5mbygnQ29weWluZyB0ZW1wbGF0ZSBmaWxlcyB0byBvdXRwdXQgZGlyZWN0b3J5Li4uJykK
KyAgICAgICAgc2VsZi5fY3JlYXRlX2RpcmVjdG9yeV9pZl9ub25leGlzdGVudChzZWxmLm91dHB1
dF9kaXIpCisgICAgICAgIGNvcHlfYWxsX2ZpbGVzX2luX2RpcmVjdG9yeShzZWxmLmRvY19kaXIs
IHNlbGYub3V0cHV0X2RpcikKKworICAgICAgICBpZiBub3QgaHRtbDoKKyAgICAgICAgICAgIHJl
dHVybgorCisgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oJ0NvcHlpbmcgSFRNTCBmaWxlcyB0byBv
dXRwdXQgZGlyZWN0b3J5Li4uJykKKyAgICAgICAgaHRtbF9zcmNfZGlyID0gb3MucGF0aC5qb2lu
KHNlbGYuZG9jX2RpciwgJ2h0bWwnKQorICAgICAgICBodG1sX2Rlc3RfZGlyID0gb3MucGF0aC5q
b2luKHNlbGYub3V0cHV0X2RpciwgJ2h0bWwnKQorICAgICAgICBzZWxmLl9jcmVhdGVfZGlyZWN0
b3J5X2lmX25vbmV4aXN0ZW50KGh0bWxfZGVzdF9kaXIpCisKKyAgICAgICAgaWYgb3MucGF0aC5l
eGlzdHMoaHRtbF9zcmNfZGlyKToKKyAgICAgICAgICAgIGNvcHlfYWxsX2ZpbGVzX2luX2RpcmVj
dG9yeShodG1sX3NyY19kaXIsIGh0bWxfZGVzdF9kaXIpCisKKyAgICBkZWYgX3dyaXRlX3ZlcnNp
b25feG1sKHNlbGYpOgorICAgICAgICBpZiBub3Qgc2VsZi52ZXJzaW9uOgorICAgICAgICAgICAg
c2VsZi5sb2dnZXIuaW5mbygnTm8gdmVyc2lvbiBzcGVjaWZpZWQsIHNvIG5vdCB3cml0aW5nIHZl
cnNpb24ueG1sJykKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIHZlcnNpb25feG1sX3Bh
dGggPSBvcy5wYXRoLmpvaW4oc2VsZi5vdXRwdXRfZGlyLCAndmVyc2lvbi54bWwnKQorICAgICAg
ICBzcmNfdmVyc2lvbl94bWxfcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLmRvY19kaXIsICd2ZXJz
aW9uLnhtbCcpCisKKyAgICAgICAgIyBEb24ndCBvdmVyd3JpdGUgdmVyc2lvbi54bWwgaWYgaXQg
d2FzIGluIHRoZSBkb2MgZGlyZWN0b3J5LgorICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyh2ZXJz
aW9uX3htbF9wYXRoKSBhbmQgXAorICAgICAgICAgICBvcy5wYXRoLmV4aXN0cyhzcmNfdmVyc2lv
bl94bWxfcGF0aCk6CisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBvdXRwdXRfZmlsZSA9
IG9wZW4odmVyc2lvbl94bWxfcGF0aCwgJ3cnKQorICAgICAgICBvdXRwdXRfZmlsZS53cml0ZShz
ZWxmLnZlcnNpb24pCisgICAgICAgIG91dHB1dF9maWxlLmNsb3NlKCkKKworICAgIGRlZiBfcnVu
X2d0a2RvY19zY2FuKHNlbGYpOgorICAgICAgICBhcmdzID0gWydndGtkb2Mtc2NhbicsCisgICAg
ICAgICAgICAgICAgJy0tbW9kdWxlPSVzJyAlIHNlbGYubW9kdWxlX25hbWUsCisgICAgICAgICAg
ICAgICAgJy0tcmVidWlsZC10eXBlcyddCisKKyAgICAgICAgIyBFYWNoIHNvdXJjZSBkaXJlY3Rv
cnkgc2hvdWxkIGJlIGhhdmUgaXRzIG93biAiLS1zb3VyY2UtZGlyPSIgcHJlZml4LgorICAgICAg
ICBhcmdzLmV4dGVuZChbJy0tc291cmNlLWRpcj0lcycgJSBwYXRoIGZvciBwYXRoIGluIHNlbGYu
c291cmNlX2RpcnNdKQorCisgICAgICAgIGlmIHNlbGYuZGVjb3JhdG9yOgorICAgICAgICAgICAg
YXJncy5hcHBlbmQoJy0taWdub3JlLWRlY29yYXRvcnM9JXMnICUgc2VsZi5kZWNvcmF0b3IpCisg
ICAgICAgIGlmIHNlbGYuZGVwcmVjYXRpb25fZ3VhcmQ6CisgICAgICAgICAgICBhcmdzLmFwcGVu
ZCgnLS1kZXByZWNhdGVkLWd1YXJkcz0lcycgJSBzZWxmLmRlcHJlY2F0aW9uX2d1YXJkKQorICAg
ICAgICBpZiBzZWxmLm91dHB1dF9kaXI6CisgICAgICAgICAgICBhcmdzLmFwcGVuZCgnLS1vdXRw
dXQtZGlyPSVzJyAlIHNlbGYub3V0cHV0X2RpcikKKworICAgICAgICAjIGd0a2RvYy1zY2FuIHdh
bnRzIHRoZSBiYXNlbmFtZXMgb2YgaWdub3JlZCBoZWFkZXJzLCBzbyBzdHJpcCB0aGUKKyAgICAg
ICAgIyBkaXJuYW1lLiBEaWZmZXJlbnQgZnJvbSAiLS1zb3VyY2UtZGlyIiwgdGhlIGhlYWRlcnMg
c2hvdWxkIGJlCisgICAgICAgICMgc3BlY2lmaWVkIGFzIG9uZSBsb25nIHN0cmluZy4KKyAgICAg
ICAgaWYgc2VsZi5pZ25vcmVkX2ZpbGVzOgorICAgICAgICAgICAgaWdub3JlZF9maWxlc19iYXNl
bmFtZXMgPSBcCisgICAgICAgICAgICAgICAgW29zLnBhdGguYmFzZW5hbWUoeCkgZm9yIHggaW4g
c2VsZi5pZ25vcmVkX2ZpbGVzXQorICAgICAgICAgICAgYXJncy5hcHBlbmQoJy0taWdub3JlLWhl
YWRlcnM9JXMnICUgJyAnLmpvaW4oaWdub3JlZF9maWxlc19iYXNlbmFtZXMpKQorCisgICAgICAg
IHNlbGYuX3J1bl9jb21tYW5kKGFyZ3MpCisKKyAgICBkZWYgX3J1bl9ndGtkb2Nfc2NhbmdvYmoo
c2VsZik6CisgICAgICAgIGVudiA9IG9zLmVudmlyb24KKyAgICAgICAgbGRmbGFncyA9IHNlbGYu
bGRmbGFncworICAgICAgICBpZiBzZWxmLmxpYnJhcnlfcGF0aDoKKyAgICAgICAgICAgIGxkZmxh
Z3MgPSAnICItTCVzIiAnICUgc2VsZi5saWJyYXJ5X3BhdGggKyBsZGZsYWdzCisgICAgICAgICAg
ICBlbnZbJ1JVTiddID0gJ0xEX0xJQlJBUllfUEFUSD0iJXMiICcgJSBzZWxmLmxpYnJhcnlfcGF0
aAorICAgICAgICBpZiBsZGZsYWdzOgorICAgICAgICAgICAgZW52WydMREZMQUdTJ10gPSBsZGZs
YWdzCisgICAgICAgIGlmIHNlbGYuY2ZsYWdzOgorICAgICAgICAgICAgZW52WydDRkxBR1MnXSA9
IHNlbGYuY2ZsYWdzCisKKyAgICAgICAgaWYgJ0NGTEFHUycgaW4gZW52OgorICAgICAgICAgICAg
c2VsZi5sb2dnZXIuZGVidWcoJ0NGTEFHUz0lcycsIGVudlsnQ0ZMQUdTJ10pCisgICAgICAgIGlm
ICdMREZMQUdTJyBpbiBlbnY6CisgICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygnTERGTEFH
UyAlcycsIGVudlsnTERGTEFHUyddKQorICAgICAgICBpZiAnUlVOJyBpbiBlbnY6CisgICAgICAg
ICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygnUlVOPSVzJywgZW52WydSVU4nXSkKKyAgICAgICAgc2Vs
Zi5fcnVuX2NvbW1hbmQoWydndGtkb2Mtc2NhbmdvYmonLCAnLS1tb2R1bGU9JXMnICUgc2VsZi5t
b2R1bGVfbmFtZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGVudj1lbnYsIGN3ZD1zZWxm
Lm91dHB1dF9kaXIpCisKKyAgICBkZWYgX3J1bl9ndGtkb2NfbWt0bXBsKHNlbGYpOgorICAgICAg
ICBhcmdzID0gWydndGtkb2MtbWt0bXBsJywgJy0tbW9kdWxlPSVzJyAlIHNlbGYubW9kdWxlX25h
bWVdCisgICAgICAgIHNlbGYuX3J1bl9jb21tYW5kKGFyZ3MsIGN3ZD1zZWxmLm91dHB1dF9kaXIp
CisKKyAgICBkZWYgX3J1bl9ndGtkb2NfbWtkYihzZWxmKToKKyAgICAgICAgc2dtbF9maWxlID0g
b3MucGF0aC5qb2luKHNlbGYub3V0cHV0X2Rpciwgc2VsZi5tYWluX3NnbWxfZmlsZSkKKyAgICAg
ICAgc2VsZi5fcmFpc2VfZXhjZXB0aW9uX2lmX2ZpbGVfaW5hY2Nlc3NpYmxlKHNnbWxfZmlsZSkK
KworICAgICAgICBhcmdzID0gWydndGtkb2MtbWtkYicsCisgICAgICAgICAgICAgICAgJy0tbW9k
dWxlPSVzJyAlIHNlbGYubW9kdWxlX25hbWUsCisgICAgICAgICAgICAgICAgJy0tbWFpbi1zZ21s
LWZpbGU9JXMnICUgc2dtbF9maWxlLAorICAgICAgICAgICAgICAgICctLXNvdXJjZS1zdWZmaXhl
cz1oLGMsY3BwLGNjJywKKyAgICAgICAgICAgICAgICAnLS1vdXRwdXQtZm9ybWF0PXhtbCcsCisg
ICAgICAgICAgICAgICAgJy0tc2dtbC1tb2RlJ10KKworICAgICAgICAjIEVhY2ggZGlyZWN0b3J5
IHNob3VsZCBiZSBoYXZlIGl0cyBvd24gIi0tc291cmNlLWRpcj0iIHByZWZpeC4KKyAgICAgICAg
YXJncy5leHRlbmQoWyctLXNvdXJjZS1kaXI9JXMnICUgcGF0aCBmb3IgcGF0aCBpbiBzZWxmLnNv
dXJjZV9kaXJzXSkKKyAgICAgICAgc2VsZi5fcnVuX2NvbW1hbmQoYXJncywgY3dkPXNlbGYub3V0
cHV0X2RpcikKKworICAgIGRlZiBfcnVuX2d0a2RvY19ta2h0bWwoc2VsZik6CisgICAgICAgIGh0
bWxfZGVzdF9kaXIgPSBvcy5wYXRoLmpvaW4oc2VsZi5vdXRwdXRfZGlyLCAnaHRtbCcpCisgICAg
ICAgIGlmIG5vdCBvcy5wYXRoLmlzZGlyKGh0bWxfZGVzdF9kaXIpOgorICAgICAgICAgICAgcmFp
c2UgRXhjZXB0aW9uKCIlcyBpcyBub3QgYSBkaXJlY3RvcnksIGNvdWxkIG5vdCBnZW5lcmF0ZSBI
VE1MIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgaHRtbF9kZXN0X2RpcikKKyAgICAg
ICAgZWxpZiBub3Qgb3MuYWNjZXNzKGh0bWxfZGVzdF9kaXIsIG9zLlhfT0sgfCBvcy5SX09LIHwg
b3MuV19PSyk6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIkNvdWxkIG5vdCBhY2Nlc3Mg
JXMgdG8gZ2VuZXJhdGUgSFRNTCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIGh0bWxf
ZGVzdF9kaXIpCisKKyAgICAgICAgIyBndGtkb2MtbWtodG1sIGV4cGVjdHMgdGhlIFNHTUwgcGF0
aCB0byBiZSBhYnNvbHV0ZS4KKyAgICAgICAgc2dtbF9maWxlID0gb3MucGF0aC5qb2luKG9zLnBh
dGguYWJzcGF0aChzZWxmLm91dHB1dF9kaXIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2VsZi5tYWluX3NnbWxfZmlsZSkKKyAgICAgICAgc2VsZi5fcmFpc2VfZXhjZXB0aW9u
X2lmX2ZpbGVfaW5hY2Nlc3NpYmxlKHNnbWxfZmlsZSkKKworICAgICAgICBzZWxmLl9ydW5fY29t
bWFuZChbJ2d0a2RvYy1ta2h0bWwnLCBzZWxmLm1vZHVsZV9uYW1lLCBzZ21sX2ZpbGVdLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICBjd2Q9aHRtbF9kZXN0X2RpcikKKworICAgIGRlZiBfcnVu
X2d0a2RvY19maXh4cmVmKHNlbGYpOgorICAgICAgICBzZWxmLl9ydW5fY29tbWFuZChbJ2d0a2Rv
Yy1maXh4cmVmJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICctLW1vZHVsZS1kaXI9aHRt
bCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1odG1sLWRpcj1odG1sJ10sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIGN3ZD1zZWxmLm91dHB1dF9kaXIpCisKKworY2xhc3MgUGtn
Q29uZmlnR1RLRG9jKEdUS0RvYyk6CisKKyAgICAiIiJDbGFzcyByZWFkcyBhIGxpYnJhcnkncyBw
a2djb25maWcgZmlsZSB0byBndWVzcyBndGtkb2MgcGFyYW1ldGVycy4KKworICAgIFNvbWUgZ3Rr
ZG9jIHBhcmFtZXRlcnMgY2FuIGJlIGd1ZXNzZWQgYnkgcmVhZGluZyBhIGxpYnJhcnkncyBwa2dj
b25maWcKKyAgICBmaWxlLCBpbmNsdWRpbmcgdGhlIGNmbGFncywgbGRmbGFncyBhbmQgdmVyc2lv
biBwYXJhbWV0ZXJzLiBJZiB5b3UKKyAgICBwcm92aWRlIHRoZXNlIHBhcmFtZXRlcnMgYXMgd2Vs
bCwgdGhleSB3aWxsIGJlIGFwcGVuZGVkIHRvIHRoZSBvbmVzCisgICAgZ3Vlc3NlZCB2aWEgdGhl
IHBrZ2NvbmZpZyBmaWxlLgorCisgICAgS2V5d29yZCBhcmd1bWVudHM6CisgICAgICBwa2dfY29u
ZmlnX3BhdGggLS0gUGF0aCB0byB0aGUgcGtnY29uZmlnIGZpbGUgZm9yIHRoZSBsaWJyYXJ5LiBS
ZXF1aXJlZC4KKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwa2dfY29uZmlnX3Bh
dGgsICoqYXJncyk6CisgICAgICAgIHN1cGVyKFBrZ0NvbmZpZ0dUS0RvYywgc2VsZikuX19pbml0
X18oKiphcmdzKQorCisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhwa2dfY29uZmlnX3Bh
dGgpOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdDb3VsZCBub3QgZmluZCBwa2ctY29u
ZmlnIGZpbGUgYXQ6ICVzJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgcGtnX2NvbmZp
Z19wYXRoKQorCisgICAgICAgIHNlbGYuY2ZsYWdzICs9ICIgIiArIHNlbGYuX3J1bl9jb21tYW5k
KFsncGtnLWNvbmZpZycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwa2dfY29uZmlnX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnLS1jZmxhZ3MnXSwgcHJpbnRfb3V0cHV0PUZhbHNlKQorICAgICAg
ICBzZWxmLmxkZmxhZ3MgKz0gIiAiICsgc2VsZi5fcnVuX2NvbW1hbmQoWydwa2ctY29uZmlnJywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBrZ19jb25m
aWdfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICctLWxpYnMnXSwgcHJpbnRfb3V0cHV0PUZhbHNlKQorICAgICAgICBzZWxmLnZlcnNpb24gPSBz
ZWxmLl9ydW5fY29tbWFuZChbJ3BrZy1jb25maWcnLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcGtnX2NvbmZpZ19wYXRoLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJy0tbW9kdmVyc2lvbiddLCBwcmludF9vdXRwdXQ9RmFsc2Up
CmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggM2UwZWEzMzRkNWJhYTk4
NDE2NWI0MjI1MTVlY2Q4NzBlYzM1ZjYyOC4uZDhhOTk0MDQ3M2M4YjJiMzQ3NzA5YzNlNzJlYzNj
MmU2YjBjYjI3NyAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEzIEBACisyMDExLTExLTE3ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlh
LmNvbT4KKworICAgICAgICBbR1RLXSBJbnRlZ3JhdGUgYnVpbGQtZ3RrZG9jIGludG8gYnVpbGQt
d2Via2l0IGFuZCBtYWtlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03MjYyNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogR05VbWFrZWZpbGUuYW06IFJlbW92ZSByZWZlcmVuY2VzIHRvIG9sZCBndGtkb2Mg
ZmlsZXMuCisgICAgICAgICogY29uZmlndXJlLmFjOiBEaXR0by4KKwogMjAxMS0xMS0xNyAgUmFw
aGFlbCBLdWJvIGRhIENvc3RhICA8a3Vib0Bwcm9mdXNpb24ubW9iaT4KIAogICAgICAgICBbRUZM
XSBDbGVhbiB1cCB0aGUgdXNlIG9mIERBVEFfRElSIGluIHRoZSBidWlsZHN5c3RlbQpkaWZmIC0t
Z2l0IGEvR05VbWFrZWZpbGUuYW0gYi9HTlVtYWtlZmlsZS5hbQppbmRleCBmOTFlODhkODk2YzEx
NWM0YWEzZDNiOTdkMWE4ZWQxNjY1NTVjNTk2Li4wMmE1YTAxMWEzMzdiMTA3OTk3ZjRkOTJlZmRl
YTY5YWQ4MTkwY2VlIDEwMDY0NAotLS0gYS9HTlVtYWtlZmlsZS5hbQorKysgYi9HTlVtYWtlZmls
ZS5hbQpAQCAtMjA3LDcgKzIwNyw2IEBAIGluY2x1ZGUgU291cmNlL1dlYktpdC9ndGsvR05VbWFr
ZWZpbGUuYW0KIGluY2x1ZGUgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HTlVtYWtl
ZmlsZS5hbQogaW5jbHVkZSBUb29scy9HTlVtYWtlZmlsZS5hbQogaW5jbHVkZSBTb3VyY2UvV2Vi
S2l0L2d0ay9wby9HTlVtYWtlZmlsZS5hbQotaW5jbHVkZSBTb3VyY2UvV2ViS2l0L2d0ay9kb2Nz
L0dOVW1ha2VmaWxlLmFtCiBpbmNsdWRlIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9HTlVtYWtl
ZmlsZS5JbWFnZURpZmYuYW0KIAogaWYgRU5BQkxFX1dFQktJVDIKZGlmZiAtLWdpdCBhL2NvbmZp
Z3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwppbmRleCAzZGUyM2M3NzM1MmFhMmZkMTJiZWIwN2JlZTQy
ZjU4YTYxNjY3NTYyLi5lYmU5ZDRlZWE0NGU3ODBlZDA2YTFiNGI5OTVjNTQ4OTFkZmRlMWNjIDEw
MDY0NAotLS0gYS9jb25maWd1cmUuYWMKKysrIGIvY29uZmlndXJlLmFjCkBAIC0xMjEwLDcgKzEy
MTAsNiBAQCBHTlVtYWtlZmlsZQogCiBBQ19DT05GSUdfRklMRVMoWwogU291cmNlL1dlYktpdC9n
dGsvd2Via2l0L3dlYmtpdHZlcnNpb24uaAotRG9jdW1lbnRhdGlvbi92ZXJzaW9uLnhtbDpTb3Vy
Y2UvV2ViS2l0L2d0ay9kb2NzL3ZlcnNpb24ueG1sLmluCiBdKQogCiBBQ19DT05GSUdfRklMRVMo
WwpAQCAtMTI0Niw2ICsxMjQ1LDcgQEAgQnVpbGQgY29uZmlndXJhdGlvbjoKICBGb250IGJhY2tl
bmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICR3aXRoX2Zv
bnRfYmFja2VuZAogIE9wdGltaXplZCBtZW1vcnkgYWxsb2NhdG9yICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDogJGVuYWJsZV9mYXN0X21hbGxvYwogIEphdmFTY3JpcHQgRW5naW5lICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJHdpdGhfanNlbmdpbmUKKwog
RmVhdHVyZXM6CiAgM0QgUmVuZGVyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgOiAkZW5hYmxlXzNkX3JlbmRlcmluZwogIFdlYkdMICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJGVuYWJsZV93ZWJnbApAQCAt
MTMwNSw2ICsxMzA1LDcgQEAgR1RLKyBjb25maWd1cmF0aW9uOgogIEdESyB0YXJnZXQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJHdpdGhfdGFyZ2V0CiAg
SGlsZG9uIFVJIGV4dGVuc2lvbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
OiAkd2l0aF9oaWxkb24KICBJbnRyb3NwZWN0aW9uIHN1cHBvcnQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA6ICRlbmFibGVfaW50cm9zcGVjdGlvbgorIEdlbmVyYXRlIGRvY3Vt
ZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJGVuYWJsZV9ndGtf
ZG9jCiAiCiBpZiB0ZXN0ICIkd2l0aF91bmljb2RlX2JhY2tlbmQiID0gImdsaWIiOyB0aGVuCiAg
ICBlY2hvICIgICAgID4+IFdBUk5JTkc6IHRoZSBnbGliLWJhc2VkIHVuaWNvZGUgYmFja2VuZCBp
cyBzbG93IGFuZCBpbmNvbXBsZXRlIDw8Igo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116444</attachid>
            <date>2011-11-23 15:33:33 -0800</date>
            <delta_ts>2011-11-24 03:09:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72626-20111124003331.patch</filename>
            <type>text/plain</type>
            <size>64153</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxMDU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0
ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggZDlkMjhmOGRl
MTRmMjQ4ZjU4MjM1MmNjOGFkOTE4NDk0M2EyMTllZS4uNDM2Y2QxMmVmNzE3MmJmNThjMmY3YTgw
ZWY5NTM0MGY4NzUzYzg5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEx
LTExLTE3ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAg
ICBbR1RLXSBJbnRlZ3JhdGUgYnVpbGQtZ3RrZG9jIGludG8gYnVpbGQtd2Via2l0IGFuZCBtYWtl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjYyNgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZG9jcy9H
TlVtYWtlZmlsZS5hbTogUmVtb3ZlZC4KKyAgICAgICAgKiBkb2NzL3ZlcnNpb24ueG1sLmluOiBS
ZW1vdmVkLgorCiAyMDExLTExLTIzICBLYXVzdHViaCBBdHJhd2Fsa2FyICA8a2F1c3R1YmhAbW90
b3JvbGEuY29tPgogCiAgICAgICAgIERvY3VtZW50YXRpb24gZml4IGZvciBsb2FkLWNvbW1pdHRl
ZCBpbiB3ZWJraXR3ZWJmcmFtZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDhmZmNiMjI5NjY5YzYyMzllMWNjZDg3
ZTE3ZTUwNzIyMzhlZGVkMTAuLjQ2YTVkYjM4NGY1YmY4MWY1Nzg3ZTMzZDIyOTg0MWFjNmEwMDcx
YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0xMS0xNyAgTWFydGluIFJvYmlu
c29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gSW50ZWdyYXRlIGJ1
aWxkLWd0a2RvYyBpbnRvIGJ1aWxkLXdlYmtpdCBhbmQgbWFrZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzI2MjYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBSZW1vdmVkIHJl
ZmVyZW5jZXMgdG8gYnVpbGQtZ3RrZG9jIGFuZCBndGtkb2MucHkuCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9ndGsvZG9jcy9idWlsZC1ndGtkb2M6IFJlbW92ZWQuCisKIDIwMTEtMTEtMjMgIFJh
cGhhZWwgS3VibyBkYSBDb3N0YSAgPGt1Ym9AcHJvZnVzaW9uLm1vYmk+CiAKICAgICAgICAgW0NN
YWtlXSBNb3ZlIHRoZSB0b3AtbGV2ZWwgbG9naWMgdG8gdGhlIHRvcC1sZXZlbCBkaXJlY3Rvcnku
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9X
ZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtCmluZGV4IDc1MmM5ZTY1MTUyNWY5ZGMyMTA5ZDFiNjMx
OTA4YzYxOTQ2NzY1ZmIuLmUzNGI0NDIzNWNkZmRmNjdkOTE2ZWE3YTk2NmI5ZjI2YTE4MGNjNWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJj
ZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtCkBAIC0zODQsOCArMzg0LDEyIEBAIGdzZXR0aW5n
c19TQ0hFTUFTID0gJCh0b3BfYnVpbGRkaXIpL1NvdXJjZS9XZWJLaXQvZ3RrL29yZy53ZWJraXRn
dGstQFdFQktJVEdUS19BCiBFWFRSQV9ESVNUICs9IFwKIAkkKFdlYktpdCkvQ2hhbmdlTG9nIFwK
IAkkKFdlYktpdCkvTkVXUyBcCisJJChXZWJLaXQpL2RvY3Mvd2Via2l0Z3RrLWRvY3Muc2dtbCBc
CisJJChXZWJLaXQpL2RvY3Mvd2Via2l0Z3RrLXNlY3Rpb25zLnR4dCBcCisJJChXZWJLaXQpL2Rv
Y3Mvd2Via2l0Z3RrLnR5cGVzIFwKKwkkKFdlYktpdCkvZG9jcy93ZWJraXRlbnZpcm9ubWVudC54
bWwgXAorCSQoV2ViS2l0KS9kb2NzL3dlYmtpdGd0ay1vdmVycmlkZXMudHh0IFwKIAkkKFdlYktp
dCkvd2Via2l0bWFyc2hhbC5saXN0IFwKLQkkKFdlYktpdCkvR05VbWFrZWZpbGUuZ3RrLWRvYy5h
bSBcCiAJJChXZWJLaXQpL3BvLyogXAogCSQoV2ViS2l0KS9yZXNvdXJjZXMvKiBcCiAJJChXZWJL
aXQpL3Rlc3RzL3Jlc291cmNlcy8qIFwKQEAgLTU5Myw4ICs1OTcsNiBAQCBESVNUQ0xFQU5GSUxF
UyArPSBcCiAJJCh0b3BfYnVpbGRkaXIpL1NvdXJjZS9XZWJLaXQvZ3RrL29yZy53ZWJraXRndGst
QFdFQktJVEdUS19BUElfVkVSU0lPTkAuZ3NjaGVtYS54bWwgXAogCSQodG9wX2J1aWxkZGlyKS9T
b3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0dmVyc2lvbi5oCiAKLWRpc3QtaG9vazoKLQlj
cCAkKFdlYktpdCkvTkVXUyAkKGRpc3RkaXIpCiBpbnN0YWxsLWRhdGEtbG9jYWw6IHBvLWluc3Rh
bGwtZGF0YS1sb2NhbAogaW5zdGFsbGRpcnMtZGF0YS1sb2NhbDogcG8taW5zdGFsbGRpcnMtZGF0
YS1sb2NhbAogdW5pbnN0YWxsLWxvY2FsOiBwby11bmluc3RhbGwtbG9jYWwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmd0ay1kb2MuYW0gYi9Tb3VyY2UvV2ViS2l0
L2d0ay9HTlVtYWtlZmlsZS5ndGstZG9jLmFtCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwNTJjNzg4ZDljOWQzYzE1NDIyMmRlOWZlZTA0YWRmZWZjMThhYzIyLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1h
a2VmaWxlLmd0ay1kb2MuYW0KKysrIC9kZXYvbnVsbApAQCAtMSwyMDggKzAsMCBAQAotIyAtKi0g
bW9kZTogbWFrZWZpbGUgLSotCi0KLUdUS0RPQ19DQyA9ICQoTElCVE9PTCkgLS10YWc9Q0MgLS1t
b2RlPWNvbXBpbGUgJChDQykgJChHVEtET0NfSU5DTFVERVMpICQoR1RLRE9DX0RFUFNfQ0ZMQUdT
KSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKEFNX0NGTEFHUykgJChDRkxBR1MpCi1HVEtE
T0NfTEQgPSAkKExJQlRPT0wpIC0tdGFnPUNDIC0tbW9kZT1saW5rICQoQ0MpICQoR1RLRE9DX0RF
UFNfTElCUykgJChBTV9DRkxBR1MpICQoQ0ZMQUdTKSAkKEFNX0xERkxBR1MpICQoTERGTEFHUykK
LUdUS0RPQ19SVU4gPSAkKExJQlRPT0wpIC0tbW9kZT1leGVjdXRlCi0KLVRBUkdFVF9ESVI9JChI
VE1MX0RJUikvJChET0NfTU9EVUxFKQotCi1TRVRVUF9GSUxFUyA9IFwKLQkkKERPQ19NQUlOX1NH
TUxfRklMRSkJCVwKLQl3ZWJraXRlbnZpcm9ubWVudC54bWwJCVwKLQkkKERPQ19NT0RVTEUpLXNl
Y3Rpb25zLnR4dAlcCi0JJChET0NfTU9EVUxFKS1vdmVycmlkZXMudHh0Ci0KLUVYVFJBX0RJU1Qg
Kz0gXAotCSQoSFRNTF9JTUFHRVMpCQkJXAotCSQoU0VUVVBfRklMRVMpCi0KLURPQ19TVEFNUFM9
ZG9jLXNldHVwLWJ1aWxkLnN0YW1wIHNjYW4tYnVpbGQuc3RhbXAgdG1wbC1idWlsZC5zdGFtcCBz
Z21sLWJ1aWxkLnN0YW1wIFwKLQlodG1sLWJ1aWxkLnN0YW1wIHBkZi1idWlsZC5zdGFtcCBcCi0J
dG1wbC5zdGFtcCBzZ21sLnN0YW1wIGh0bWwuc3RhbXAgcGRmLnN0YW1wCi0KLVNDQU5PQkpfRklM
RVMgPSAJCSBcCi0JJChET0NfTU9EVUxFKS5hcmdzIAkgXAotCSQoRE9DX01PRFVMRSkuaGllcmFy
Y2h5ICBcCi0JJChET0NfTU9EVUxFKS5pbnRlcmZhY2VzIFwKLQkkKERPQ19NT0RVTEUpLnByZXJl
cXVpc2l0ZXMgXAotCSQoRE9DX01PRFVMRSkuc2lnbmFscwotCi1SRVBPUlRfRklMRVMgPSBcCi0J
JChET0NfTU9EVUxFKS11bmRvY3VtZW50ZWQudHh0IFwKLQkkKERPQ19NT0RVTEUpLXVuZGVjbGFy
ZWQudHh0IFwKLQkkKERPQ19NT0RVTEUpLXVudXNlZC50eHQKLQotQ0xFQU5GSUxFUyArPSAkKFND
QU5PQkpfRklMRVMpICQoUkVQT1JUX0ZJTEVTKSAkKERPQ19TVEFNUFMpCi0KLWlmIEVOQUJMRV9H
VEtfRE9DCi1IVE1MX0JVSUxEX1NUQU1QPWh0bWwtYnVpbGQuc3RhbXAKLWVuZGlmCi0KLWRvY19z
cmNkaXIgOj0gJChhYnNfc3JjZGlyKS9Tb3VyY2UvV2ViS2l0L2d0ay9kb2NzCi0KLWRvY3M6ICQo
SFRNTF9CVUlMRF9TVEFNUCkKLQotJChSRVBPUlRfRklMRVMpOiBzZ21sLWJ1aWxkLnN0YW1wCi0K
LSMjIyMgc2V0dXAgIyMjIwotCi1kb2Mtc2V0dXAtYnVpbGQuc3RhbXA6IGxpYndlYmtpdGd0ay1A
V0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQC5AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9O
QC5sYQotCS1AbWtkaXIgLXAgRG9jdW1lbnRhdGlvbgotCS1AbG4gLWZzIC4uL2RvbHRsaWJ0b29s
IERvY3VtZW50YXRpb24vCi0JLUBsbiAtZnMgLi4vZG9sdGNvbXBpbGUgRG9jdW1lbnRhdGlvbi8K
LQktQGxuIC1mcyAuLi9saWJ0b29sIERvY3VtZW50YXRpb24vCi0JLUBpZiB0ZXN0ICIkKGFic19z
cmNkaXIpIiAhPSAiJChhYnNfYnVpbGRkaXIpIiA7IHRoZW4gXAotCSAgICBlY2hvICcgIERPQyAg
IFByZXBhcmluZyBidWlsZCc7IFwKLQkgICAgZmlsZXM9YGVjaG8gJChTRVRVUF9GSUxFUykgJChE
T0NfTU9EVUxFKS50eXBlc2A7IFwKLQkgICAgaWYgdGVzdCAieCQkZmlsZXMiICE9ICJ4IiA7IHRo
ZW4gXAotCSAgICAgICAgZm9yIGZpbGUgaW4gJCRmaWxlcyA7IGRvIFwKLQkgICAgICAgICAgICB0
ZXN0IC1mICQoZG9jX3NyY2RpcikvJCRmaWxlICYmIFwKLQkgICAgICAgICAgICAgICAgY3AgLXB1
ICQoZG9jX3NyY2RpcikvJCRmaWxlICQoYWJzX2J1aWxkZGlyKS9Eb2N1bWVudGF0aW9uLyB8fCB0
cnVlOyBcCi0JICAgICAgICBkb25lOyBcCi0JICAgIGZpOyBcCi0JICAgIHRlc3QgLWQgJChkb2Nf
c3JjZGlyKS90bXBsICYmIFwKLQkgICAgICAgIHsgY3AgLXJwICQoZG9jX3NyY2RpcikvdG1wbCAk
KGFic19idWlsZGRpcikvRG9jdW1lbnRhdGlvbi87IFwKLQkgICAgICAgIGNobW9kIC1SIHUrdyAk
KGFic19idWlsZGRpcikvRG9jdW1lbnRhdGlvbi90bXBsOyB9IFwKLQlmaQotCUB0b3VjaCBkb2Mt
c2V0dXAtYnVpbGQuc3RhbXAKLQotIyMjIyBzY2FuICMjIyMKLQotc2Nhbi1idWlsZC5zdGFtcDog
ZG9jLXNldHVwLWJ1aWxkLnN0YW1wICQoSEZJTEVfR0xPQikgJChDRklMRV9HTE9CKQotCUBlY2hv
ICcgIERPQyAgIFNjYW5uaW5nIGhlYWRlciBmaWxlcycKLQlAY2QgRG9jdW1lbnRhdGlvbjsgX3Nv
dXJjZV9kaXI9JycgOyBcCi0JZm9yIGkgaW4gJChET0NfU09VUkNFX0RJUikgOyBkbyBcCi0JICAg
IF9zb3VyY2VfZGlyPSIkJHtfc291cmNlX2Rpcn0gLS1zb3VyY2UtZGlyPS4uLyQkaSIgOyBcCi0J
ZG9uZSA7IFwKLQlndGtkb2Mtc2NhbiAtLW1vZHVsZT0kKERPQ19NT0RVTEUpIC0taWdub3JlLWhl
YWRlcnM9IiQoSUdOT1JFX0hGSUxFUykiICQke19zb3VyY2VfZGlyfSAkKFNDQU5fT1BUSU9OUykg
JChFWFRSQV9IRklMRVMpCi0JQGNkIERvY3VtZW50YXRpb247IGlmIGdyZXAgLWwgJ14uLiokJCcg
JChET0NfTU9EVUxFKS50eXBlcyA+IC9kZXYvbnVsbCAyPiYxIDsgdGhlbiBcCi0JICAgIGVjaG8g
IiAgRE9DICAgSW50cm9zcGVjdGluZyBnb2JqZWN0cyI7IFwKLQkgICAgc2Nhbm9ial9vcHRpb25z
PSIiOyBcCi0JICAgIGd0a2RvYy1zY2FuZ29iaiAyPiYxIC0taGVscCB8IGdyZXAgID4vZGV2L251
bGwgIlwtXC12ZXJib3NlIjsgXAotCSAgICBpZiB0ZXN0ICIkKD8pIiA9ICIwIjsgdGhlbiBcCi0J
ICAgICAgICBpZiB0ZXN0ICJ4JChWKSIgPSAieDEiOyB0aGVuIFwKLQkgICAgICAgICAgICBzY2Fu
b2JqX29wdGlvbnM9Ii0tdmVyYm9zZSI7IFwKLQkgICAgICAgIGZpOyBcCi0JICAgIGZpOyBcCi0J
ICAgIENDPSIkKEdUS0RPQ19DQykiIExEPSIkKEdUS0RPQ19MRCkiIFJVTj0iJChHVEtET0NfUlVO
KSIgQ0ZMQUdTPSIkKEdUS0RPQ19DRkxBR1MpICQoQ0ZMQUdTKSIgTERGTEFHUz0iJChHVEtET0Nf
TElCUykgJChMREZMQUdTKSIgXAotCSAgICBndGtkb2Mtc2NhbmdvYmogJChTQ0FOR09CSl9PUFRJ
T05TKSAkJHNjYW5vYmpfb3B0aW9ucyAtLW1vZHVsZT0kKERPQ19NT0RVTEUpOyBcCi0JZWxzZSBc
Ci0JICAgIGZvciBpIGluICQoU0NBTk9CSl9GSUxFUykgOyBkbyBcCi0JICAgICAgICB0ZXN0IC1m
ICQkaSB8fCB0b3VjaCAkJGkgOyBcCi0JICAgIGRvbmUgXAotCWZpCi0JQHRvdWNoIHNjYW4tYnVp
bGQuc3RhbXAKLQotRG9jdW1lbnRhdGlvbi8kKERPQ19NT0RVTEUpLWRlY2wudHh0IERvY3VtZW50
YXRpb24vJChTQ0FOT0JKX0ZJTEVTKSBEb2N1bWVudGF0aW9uLyQoRE9DX01PRFVMRSktc2VjdGlv
bnMudHh0IERvY3VtZW50YXRpb24vJChET0NfTU9EVUxFKS1vdmVycmlkZXMudHh0OiBzY2FuLWJ1
aWxkLnN0YW1wCi0JQHRydWUKLQotIyMjIyB0ZW1wbGF0ZXMgIyMjIwotCi10bXBsLWJ1aWxkLnN0
YW1wOiBkb2Mtc2V0dXAtYnVpbGQuc3RhbXAgRG9jdW1lbnRhdGlvbi8kKERPQ19NT0RVTEUpLWRl
Y2wudHh0IERvY3VtZW50YXRpb24vJChTQ0FOT0JKX0ZJTEVTKSBEb2N1bWVudGF0aW9uLyQoRE9D
X01PRFVMRSktc2VjdGlvbnMudHh0IERvY3VtZW50YXRpb24vJChET0NfTU9EVUxFKS1vdmVycmlk
ZXMudHh0Ci0JQGVjaG8gJyAgRE9DICAgUmVidWlsZGluZyB0ZW1wbGF0ZSBmaWxlcycKLQlAY2Qg
RG9jdW1lbnRhdGlvbjsgZ3RrZG9jLW1rdG1wbCAtLW1vZHVsZT0kKERPQ19NT0RVTEUpICQoTUtU
TVBMX09QVElPTlMpCi0JQGlmIHRlc3QgIiQoYWJzX3NyY2RpcikiICE9ICIkKGFic19idWlsZGRp
cikiIDsgdGhlbiBcCi0JICBpZiB0ZXN0IC13ICQoYWJzX3NyY2RpcikgOyB0aGVuIFwKLQkgICAg
Y3AgLXJwICQoYWJzX2J1aWxkZGlyKS9Eb2N1bWVudGF0aW9uL3RtcGwgJChkb2Nfc3JjZGlyKTsg
XAotCSAgZmkgXAotCWZpCi0JQHRvdWNoIHRtcGwtYnVpbGQuc3RhbXAKLQotdG1wbC5zdGFtcDog
dG1wbC1idWlsZC5zdGFtcAotCUB0cnVlCi0KLSQoc3JjZGlyKS90bXBsLyouc2dtbDoKLQlAdHJ1
ZQotCi0jIyMjIHhtbCAjIyMjCi0KLXNnbWwtYnVpbGQuc3RhbXA6IGRvYy1zZXR1cC1idWlsZC5z
dGFtcCB0bXBsLnN0YW1wIERvY3VtZW50YXRpb24vJChET0NfTU9EVUxFKS1zZWN0aW9ucy50eHQg
JChzcmNkaXIpL3RtcGwvKi5zZ21sCi0JQGVjaG8gJyAgRE9DICAgQnVpbGRpbmcgWE1MJwotCUAt
Y2htb2QgLVIgdSt3ICQoc3JjZGlyKQotCUBjZCBEb2N1bWVudGF0aW9uOyBfc291cmNlX2Rpcj0n
JyA7IFwKLQlmb3IgaSBpbiAkKERPQ19TT1VSQ0VfRElSKSA7IGRvIFwKLQkgICAgX3NvdXJjZV9k
aXI9IiQke19zb3VyY2VfZGlyfSAtLXNvdXJjZS1kaXI9Li4vJCRpIiA7IFwKLQlkb25lIDsgXAot
CWd0a2RvYy1ta2RiIC0tbW9kdWxlPSQoRE9DX01PRFVMRSkgLS1vdXRwdXQtZm9ybWF0PXhtbCAt
LWV4cGFuZC1jb250ZW50LWZpbGVzPSIiIC0tbWFpbi1zZ21sLWZpbGU9JChET0NfTUFJTl9TR01M
X0ZJTEUpICQke19zb3VyY2VfZGlyfSAkKE1LREJfT1BUSU9OUykKLQlAdG91Y2ggc2dtbC1idWls
ZC5zdGFtcAotCi1zZ21sLnN0YW1wOiBzZ21sLWJ1aWxkLnN0YW1wCi0JQHRydWUKLQotIyMjIyBo
dG1sICMjIyMKLQotRG9jdW1lbnRhdGlvbi8kKERPQ19NQUlOX1NHTUxfRklMRSk6IHNnbWwuc3Rh
bXAKLURvY3VtZW50YXRpb24vd2Via2l0ZW52aXJvbm1lbnQueG1sOiBkb2Mtc2V0dXAtYnVpbGQu
c3RhbXAKLQotaHRtbC1idWlsZC5zdGFtcDogc2dtbC5zdGFtcCBEb2N1bWVudGF0aW9uLyQoRE9D
X01BSU5fU0dNTF9GSUxFKQotCUBlY2hvICcgIERPQyAgIEJ1aWxkaW5nIEhUTUwnCi0JQHJtIC1y
ZiBEb2N1bWVudGF0aW9uL2h0bWwKLQlAbWtkaXIgRG9jdW1lbnRhdGlvbi9odG1sCi0JQGNkIERv
Y3VtZW50YXRpb247IG1raHRtbF9vcHRpb25zPSIiOyBcCi0JZ3RrZG9jLW1raHRtbCAyPiYxIC0t
aGVscCB8IGdyZXAgID4vZGV2L251bGwgIlwtXC12ZXJib3NlIjsgXAotCWlmIHRlc3QgIiQoPyki
ID0gIjAiOyB0aGVuIFwKLQkgIGlmIHRlc3QgIngkKFYpIiA9ICJ4MSI7IHRoZW4gXAotCSAgICBt
a2h0bWxfb3B0aW9ucz0iJCRta2h0bWxfb3B0aW9ucyAtLXZlcmJvc2UiOyBcCi0JICBmaTsgXAot
CWZpOyBcCi0JZ3RrZG9jLW1raHRtbCAyPiYxIC0taGVscCB8IGdyZXAgID4vZGV2L251bGwgIlwt
XC1wYXRoIjsgXAotCWlmIHRlc3QgIiQoPykiID0gIjAiOyB0aGVuIFwKLQkgIG1raHRtbF9vcHRp
b25zPSIkJG1raHRtbF9vcHRpb25zIC0tcGF0aD1cIiQoZG9jX3NyY2RpcilcIiI7IFwKLQlmaTsg
XAotCWNkIGh0bWwgJiYgZ3RrZG9jLW1raHRtbCAkJG1raHRtbF9vcHRpb25zICQoTUtIVE1MX09Q
VElPTlMpICQoRE9DX01PRFVMRSkgLi4vJChET0NfTUFJTl9TR01MX0ZJTEUpCi0JLUB0ZXN0ICJ4
JChIVE1MX0lNQUdFUykiID0gIngiIHx8IFwKLQlmb3IgZmlsZSBpbiAkKEhUTUxfSU1BR0VTKSA7
IGRvIFwKLQkgIGlmIHRlc3QgLWYgJChhYnNfc3JjZGlyKS8kJGZpbGUgOyB0aGVuIFwKLQkgICAg
Y3AgJChhYnNfc3JjZGlyKS8kJGZpbGUgJChhYnNfYnVpbGRkaXIpL2h0bWw7IFwKLQkgIGZpOyBc
Ci0JICBpZiB0ZXN0IC1mICQoYWJzX2J1aWxkZGlyKS8kJGZpbGUgOyB0aGVuIFwKLQkgICAgY3Ag
JChhYnNfYnVpbGRkaXIpLyQkZmlsZSAkKGFic19idWlsZGRpcikvaHRtbDsgXAotCSAgZmk7IFwK
LQlkb25lOwotCUBlY2hvICcgIERPQyAgIEZpeGluZyBjcm9zcy1yZWZlcmVuY2VzJwotCUBjZCBE
b2N1bWVudGF0aW9uOyBndGtkb2MtZml4eHJlZiAtLW1vZHVsZT0kKERPQ19NT0RVTEUpIC0tbW9k
dWxlLWRpcj1odG1sIC0taHRtbC1kaXI9JChIVE1MX0RJUikgJChGSVhYUkVGX09QVElPTlMpCi0J
QHRvdWNoIGh0bWwtYnVpbGQuc3RhbXAKLQotY2xlYW4tbG9jYWw6IGRvYy1jbGVhbi1sb2NhbAot
Ci1kb2MtY2xlYW4tbG9jYWw6Ci0JQHJtIC1mIERvY3VtZW50YXRpb24vKn4gRG9jdW1lbnRhdGlv
bi8qLmJhawotCUBybSAtcmYgRG9jdW1lbnRhdGlvbi8ubGlicwotCi1kaXN0Y2xlYW4tbG9jYWw6
IGRvYy1kaXN0Y2xlYW4tbG9jYWwKLQotZG9jLWRpc3RjbGVhbi1sb2NhbDoKLQlAcm0gLXJmIERv
Y3VtZW50YXRpb24KLQotbWFpbnRhaW5lci1jbGVhbi1sb2NhbDogZG9jLW1haW50YWluZXItY2xl
YW4tbG9jYWwKLQotZG9jLW1haW50YWluZXItY2xlYW4tbG9jYWw6IGNsZWFuCi0JQHJtIC1yZiBE
b2N1bWVudGF0aW9uL3htbCBEb2N1bWVudGF0aW9uL2h0bWwKLQktQHJtZGlyIERvY3VtZW50YXRp
b24KLQotIwotIyBSZXF1aXJlIGd0ay1kb2Mgd2hlbiBtYWtpbmcgZGlzdAotIwotaWYgRU5BQkxF
X0dUS19ET0MKLWRpc3QtY2hlY2stZ3RrZG9jOgotCi1hbGw6IGRvY3MKLWVsc2UKLWRpc3QtY2hl
Y2stZ3RrZG9jOgotCUBlY2hvICIqKiogZ3RrLWRvYyBtdXN0IGJlIGluc3RhbGxlZCBhbmQgZW5h
YmxlZCBpbiBvcmRlciB0byBtYWtlIGRpc3QiCi0JQGZhbHNlCi1lbmRpZgotCi1kaXN0LWhvb2s6
IGRvYy1kaXN0LWhvb2sKLQotZG9jLWRpc3QtaG9vazogZGlzdC1jaGVjay1ndGtkb2MgZGlzdC1o
b29rLWxvY2FsCi0JQG1rZGlyIC1wICQoZGlzdGRpcikvJChET0NfTU9EVUxFKS90bXBsCi0JQG1r
ZGlyIC1wICQoZGlzdGRpcikvJChET0NfTU9EVUxFKS9odG1sCi0JQC1jcCAuL0RvY3VtZW50YXRp
b24vdG1wbC8qLnNnbWwgJChkaXN0ZGlyKS8kKERPQ19NT0RVTEUpL3RtcGwKLQlAY3AgLi9Eb2N1
bWVudGF0aW9uL2h0bWwvKiAkKGRpc3RkaXIpLyQoRE9DX01PRFVMRSkvaHRtbAotCUAtY3AgLi9E
b2N1bWVudGF0aW9uLyQoRE9DX01PRFVMRSkudHlwZXMgJChkaXN0ZGlyKS8KLQlALWNwIC4vRG9j
dW1lbnRhdGlvbi8kKERPQ19NT0RVTEUpLXNlY3Rpb25zLnR4dCAkKGRpc3RkaXIpLwotCUBjZCAk
KGRpc3RkaXIpICYmIHJtIC1mICQoRElTVENMRUFORklMRVMpCi0JQCQoR1RLRE9DX1JFQkFTRSkg
LS1vbmxpbmUgLS1yZWxhdGl2ZSAtLWh0bWwtZGlyPSQoZGlzdGRpcikvJChET0NfTU9EVUxFKS9o
dG1sCi0KLS5QSE9OWSA6IGRpc3QtaG9vay1sb2NhbCBkb2NzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2d0ay9kb2NzL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYktpdC9ndGsvZG9jcy9H
TlVtYWtlZmlsZS5hbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzhjNGIyMTJiYWI1
YWViZGQyOTBhYWUzN2EyNDNmMjU1YjliNDNiNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9kb2NzL0dOVW1ha2VmaWxlLmFt
CisrKyAvZGV2L251bGwKQEAgLTEsMTI4ICswLDAgQEAKLSMjIFByb2Nlc3MgdGhpcyBmaWxlIHdp
dGggYXV0b21ha2UgdG8gcHJvZHVjZSBHTlVtYWtlZmlsZS5pbgotCi0jIFRoaXMgaXMgYSBibGFu
ayBNYWtlZmlsZS5hbSBmb3IgdXNpbmcgZ3RrLWRvYy4KLSMgQ29weSB0aGlzIHRvIHlvdXIgcHJv
amVjdCdzIEFQSSBkb2NzIGRpcmVjdG9yeSBhbmQgbW9kaWZ5IHRoZSB2YXJpYWJsZXMgdG8KLSMg
c3VpdCB5b3VyIHByb2plY3QuIFNlZSB0aGUgR1RLKyBNYWtlZmlsZXMgaW4gZ3RrKy9kb2NzL3Jl
ZmVyZW5jZSBmb3IgZXhhbXBsZXMKLSMgb2YgdXNpbmcgdGhlIHZhcmlvdXMgb3B0aW9ucy4KLQot
IyBUaGUgbmFtZSBvZiB0aGUgbW9kdWxlLCBlLmcuICdnbGliJy4KLURPQ19NT0RVTEU9d2Via2l0
Z3RrCi0KLSMgVGhlIHRvcC1sZXZlbCBTR01MIGZpbGUuIFlvdSBjYW4gY2hhbmdlIHRoaXMgaWYg
eW91IHdhbnQgdG8uCi1ET0NfTUFJTl9TR01MX0ZJTEU9JChET0NfTU9EVUxFKS1kb2NzLnNnbWwK
LQotIyBUaGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIHNvdXJjZSBjb2RlLiBSZWxhdGl2ZSB0
byAkKHNyY2RpcikuCi0jIGd0ay1kb2Mgd2lsbCBzZWFyY2ggYWxsIC5jICYgLmggZmlsZXMgYmVu
ZWF0aCBoZXJlIGZvciBpbmxpbmUgY29tbWVudHMKLSMgZG9jdW1lbnRpbmcgdGhlIGZ1bmN0aW9u
cyBhbmQgbWFjcm9zLgotIyBlLmcuIERPQ19TT1VSQ0VfRElSPS4uLy4uLy4uL2d0awotRE9DX1NP
VVJDRV9ESVI9JCh0b3Bfc3JjZGlyKS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQKLQotIyBFeHRy
YSBvcHRpb25zIHRvIHBhc3MgdG8gZ3RrZG9jLXNjYW5nb2JqLiBOb3Qgbm9ybWFsbHkgbmVlZGVk
LgotU0NBTkdPQkpfT1BUSU9OUz0iLS10eXBlLWluaXQtZnVuYz1nX3R5cGVfaW5pdCgpIgotCi0j
IEV4dHJhIG9wdGlvbnMgdG8gc3VwcGx5IHRvIGd0a2RvYy1zY2FuLgotIyBlLmcuIFNDQU5fT1BU
SU9OUz0tLWRlcHJlY2F0ZWQtZ3VhcmRzPSJHVEtfRElTQUJMRV9ERVBSRUNBVEVEIgotU0NBTl9P
UFRJT05TPS0tZGVwcmVjYXRlZC1ndWFyZHM9IldFQktJVF9ESVNBQkxFX0RFUFJFQ0FURUQiIC0t
aWdub3JlLWRlY29yYXRvcnM9IldFQktJVF9BUEkiCi0KLSMgRXh0cmEgb3B0aW9ucyB0byBzdXBw
bHkgdG8gZ3RrZG9jLW1rZGIuCi0jIGUuZy4gTUtEQl9PUFRJT05TPS0tc2dtbC1tb2RlIC0tb3V0
cHV0LWZvcm1hdD14bWwKLU1LREJfT1BUSU9OUz0tLXNnbWwtbW9kZSAtLW91dHB1dC1mb3JtYXQ9
eG1sIC0tc291cmNlLXN1ZmZpeGVzPWgsYyxjcHAKLQotIyBFeHRyYSBvcHRpb25zIHRvIHN1cHBs
eSB0byBndGtkb2MtbWt0bXBsCi0jIGUuZy4gTUtUTVBMX09QVElPTlM9LS1vbmx5LXNlY3Rpb24t
dG1wbAotTUtUTVBMX09QVElPTlM9Ci0KLSMgRXh0cmEgb3B0aW9ucyB0byBzdXBwbHkgdG8gZ3Rr
ZG9jLWZpeHJlZi4gTm90IG5vcm1hbGx5IG5lZWRlZC4KLSMgZS5nLiBGSVhYUkVGX09QVElPTlM9
LS1leHRyYS1kaXI9Li4vZ2RrLXBpeGJ1Zi9odG1sIC0tZXh0cmEtZGlyPS4uL2dkay9odG1sCi1G
SVhYUkVGX09QVElPTlM9Ci0KLSMgVXNlZCBmb3IgZGVwZW5kZW5jaWVzLiBUaGUgZG9jcyB3aWxs
IGJlIHJlYnVpbHQgaWYgYW55IG9mIHRoZXNlIGNoYW5nZS4KLSMgZS5nLiBIRklMRV9HTE9CPSQo
dG9wX3NyY2RpcikvZ3RrLyouaAotIyBlLmcuIENGSUxFX0dMT0I9JCh0b3Bfc3JjZGlyKS9ndGsv
Ki5jCi1IRklMRV9HTE9CPSQodG9wX3NyY2RpcikvU291cmNlL1dlYktpdC9ndGsvd2Via2l0Lyou
aAotQ0ZJTEVfR0xPQj0kKHRvcF9zcmNkaXIpL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC8qLmNw
cAotCi0jIEhlYWRlciBmaWxlcyB0byBpZ25vcmUgd2hlbiBzY2FubmluZy4KLSMgZS5nLiBJR05P
UkVfSEZJTEVTPWd0a2RlYnVnLmggZ3RraW50bC5oCi1JR05PUkVfSEZJTEVTID0gXAotICAgd2Vi
a2l0ZG93bmxvYWRwcml2YXRlLmggXAotICAgd2Via2l0Z2VvbG9jYXRpb25wb2xpY3lkZWNpc2lv
bnByaXZhdGUuaCBcCi0gICB3ZWJraXRnbG9iYWxzcHJpdmF0ZS5oIFwKLSAgIHdlYmtpdGhpdHRl
c3RyZXN1bHRwcml2YXRlLmggXAotICAgd2Via2l0bmV0d29ya3JlcXVlc3Rwcml2YXRlLmggXAot
ICAgd2Via2l0bmV0d29ya3Jlc3BvbnNlcHJpdmF0ZS5oIFwKLSAgIHdlYmtpdHNlY3VyaXR5b3Jp
Z2lucHJpdmF0ZS5oIFwKLSAgIHdlYmtpdHZpZXdwb3J0YXR0cmlidXRlc3ByaXZhdGUuaCBcCi0g
ICB3ZWJraXR3ZWJiYWNrZm9yd2FyZGxpc3Rwcml2YXRlLmggXAotICAgd2Via2l0d2ViZGF0YXNv
dXJjZXByaXZhdGUuaCBcCi0gICB3ZWJraXR3ZWJmcmFtZXByaXZhdGUuaCBcCi0gICB3ZWJraXR3
ZWJoaXN0b3J5aXRlbXByaXZhdGUuaCBcCi0gICB3ZWJraXR3ZWJpbnNwZWN0b3Jwcml2YXRlLmgg
XAotICAgd2Via2l0d2VibmF2aWdhdGlvbmFjdGlvbnByaXZhdGUuaCBcCi0gICB3ZWJraXR3ZWJw
bHVnaW5kYXRhYmFzZXByaXZhdGUuaCBcCi0gICB3ZWJraXR3ZWJwbHVnaW5wcml2YXRlLmggXAot
ICAgd2Via2l0d2VicG9saWN5ZGVjaXNpb25wcml2YXRlLmggXAotICAgd2Via2l0d2VicmVzb3Vy
Y2Vwcml2YXRlLmggXAotICAgd2Via2l0d2Vic2V0dGluZ3Nwcml2YXRlLmggXAotICAgd2Via2l0
d2Vidmlld3ByaXZhdGUuaCBcCi0gICB3ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlc3ByaXZhdGUuaAot
Ci0jIEltYWdlcyB0byBjb3B5IGludG8gSFRNTCBkaXJlY3RvcnkuCi0jIGUuZy4gSFRNTF9JTUFH
RVM9JCh0b3Bfc3JjZGlyKS9ndGsvc3RvY2staWNvbnMvc3RvY2tfYWJvdXRfMjQucG5nCi1IVE1M
X0lNQUdFUz0KLQotIyBDRkxBR1MgYW5kIExERkxBR1MgZm9yIGNvbXBpbGluZyBndGtkb2Mtc2Nh
bmdvYmogd2l0aCB5b3VyIGxpYnJhcnkuCi0jIE9ubHkgbmVlZGVkIGlmIHlvdSBhcmUgdXNpbmcg
Z3RrZG9jLXNjYW5nb2JqIHRvIGR5bmFtaWNhbGx5IHF1ZXJ5IHdpZGdldAotIyBzaWduYWxzIGFu
ZCBwcm9wZXJ0aWVzLgotIyBlLmcuIElOQ0xVREVTPS1JJCh0b3Bfc3JjZGlyKSAtSSQodG9wX2J1
aWxkZGlyKSAkKEdUS19ERUJVR19GTEFHUykKLSMgZS5nLiBHVEtET0NfTElCUz0kKHRvcF9idWls
ZGRpcikvZ3RrLyQoZ3RrdGFyZ2V0bGliKQotR1RLRE9DX0lOQ0xVREVTPSBcCi0JLUkkKGFic19z
cmNkaXIpL1NvdXJjZS9XZWJLaXQvZ3RrIFwKLQktSSQoYWJzX2J1aWxkZGlyKS9Tb3VyY2UvV2Vi
S2l0L2d0ayBcCi0JJChnbG9iYWxfY3BwZmxhZ3MpIFwKLQkkKGdsb2JhbF9jZmxhZ3MpIFwKLQkt
SSQoYWJzX3NyY2RpcikvU291cmNlIFwKLQktSSQoYWJzX3NyY2RpcikvU291cmNlL0phdmFTY3Jp
cHRDb3JlIFwKLQktSSQoYWJzX3NyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL0ZvcndhcmRp
bmdIZWFkZXJzIFwKLQktSSQoYWJzX3NyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ciBcCi0JLUkkKGFic19zcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYgXAotCS1JJChh
YnNfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzIFwKLQktSSQoYWJzX3NyY2RpcikvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL2NhY2hlIFwKLQkkKEdMT0JBTERFUFNfQ0ZMQUdT
KSBcCi0JJChDQUlST19DRkxBR1MpIFwKLQkkKEdMSUJfQ0ZMQUdTKSBcCi0JJChHVEtfQ0ZMQUdT
KSBcCi0JJChMSUJTT1VQX0NGTEFHUykKLQotR1RLRE9DX0xJQlM9IFwKLQkkKGFic19idWlsZGRp
cikvbGliamF2YXNjcmlwdGNvcmVndGstQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkAuQFdF
QktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkAubGEgXAotCSQoYWJzX2J1aWxkZGlyKS9saWJ3ZWJr
aXRndGstQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkAuQFdFQktJVEdUS19BUElfTUlOT1Jf
VkVSU0lPTkAubGEgXAotCSQoR0xJQl9MSUJTKSBcCi0JJChHVEtfTElCUykgXAotCSQoTElCU09V
UF9MSUJTKQotCi0jIFRoaXMgaW5jbHVkZXMgb3VyIGN1c3RvbSBndGstZG9jIG1ha2UgcnVsZXMu
Ci1pbmNsdWRlICQodG9wX3NyY2RpcikvU291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZpbGUuZ3Rr
LWRvYy5hbQotCi0jIE90aGVyIGZpbGVzIHRvIGRpc3RyaWJ1dGUKLSMgZS5nLiBFWFRSQV9ESVNU
ICs9IHZlcnNpb24ueG1sLmluCi1FWFRSQV9ESVNUICs9IFwKLQkkKFdlYktpdCkvZG9jcy93ZWJr
aXRlbnZpcm9ubWVudC54bWwgXAotCSQoV2ViS2l0KS9kb2NzL3dlYmtpdGd0ay1kb2NzLnNnbWwg
XAotCSQoV2ViS2l0KS9kb2NzL3dlYmtpdGd0ay1zZWN0aW9ucy50eHQgXAotCSQoV2ViS2l0KS9k
b2NzL3ZlcnNpb24ueG1sLmluCi0KLSMgRmlsZXMgbm90IHRvIGRpc3RyaWJ1dGUKLSMgZm9yIC0t
cmVidWlsZC10eXBlcyBpbiAkKFNDQU5fT1BUSU9OUyksIGUuZy4gJChET0NfTU9EVUxFKS50eXBl
cwotIyBmb3IgLS1yZWJ1aWxkLXNlY3Rpb25zIGluICQoU0NBTl9PUFRJT05TKSBlLmcuICQoRE9D
X01PRFVMRSktc2VjdGlvbnMudHh0Ci1ESVNUQ0xFQU5GSUxFUyArPSBcCi0JJCh0b3BfYnVpbGRk
aXIpL1NvdXJjZS9XZWJLaXQvZ3RrL2RvY3MvdmVyc2lvbi54bWwgXAotCSQodG9wX2J1aWxkZGly
KS90bXBsLWJ1aWxkLnN0YW1wIFwKLQkkKHRvcF9idWlsZGRpcikvZG9jLXNldHVwLWJ1aWxkLnN0
YW1wIFwKLQkkKHRvcF9idWlsZGRpcikvaHRtbC1idWlsZC5zdGFtcCBcCi0JJCh0b3BfYnVpbGRk
aXIpL3NjYW4tYnVpbGQuc3RhbXAgXAotCSQodG9wX2J1aWxkZGlyKS9zZ21sLWJ1aWxkLnN0YW1w
Ci0KLSMgQ29tbWVudCB0aGlzIG91dCBpZiB5b3Ugd2FudCB5b3VyIGRvY3Mtc3RhdHVzIHRlc3Rl
ZCBkdXJpbmcgJ21ha2UgY2hlY2snCi0jVEVTVFMgPSAkKEdUS0RPQ19DSEVDSykKLQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9ndGsvZG9jcy92ZXJzaW9uLnhtbC5pbiBiL1NvdXJjZS9XZWJL
aXQvZ3RrL2RvY3MvdmVyc2lvbi54bWwuaW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGQ3OGJkYTkzNDIyZWNiYmNhOGNhZjc3MmY3YjM3ZjhmZTNiMjU0ZTkuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvZG9jcy92
ZXJzaW9uLnhtbC5pbgorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLUBWRVJTSU9OQApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9H
TlVtYWtlZmlsZS5hbQppbmRleCA3NWEwNDcwZjRhYzEwNDJmNDE3YjUxNDk0YzQ5ZWU1YzU4MDI5
NTNjLi4wOGNjMmIyNzg0MTk3YTNmODYxODA0NTliMjkyNWY5NmU2NzFhMGVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9HTlVt
YWtlZmlsZS5hbQpAQCAtMTQwMyw4ICsxNDAzLDYgQEAgUHJvZ3JhbXNfV2ViS2l0UGx1Z2luUHJv
Y2Vzc19DWFhGTEFHUyA9IFwKIGVuZGlmCiAKIEVYVFJBX0RJU1QgKz0gXAotCSQoV2ViS2l0Mikv
VUlQcm9jZXNzL0FQSS9ndGsvZG9jcy9idWlsZC1ndGtkb2MgXAotCSQoV2ViS2l0MikvVUlQcm9j
ZXNzL0FQSS9ndGsvZG9jcy9ndGtkb2MucHkgXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9n
dGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbCBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJ
L2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0IFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vz
cy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay50eXBlcyBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL2J1aWxkLWd0a2RvYyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3MvYnVpbGQtZ3RrZG9jCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDc1NQppbmRleCBmMzA0YTdlZGY0MjdlMWYzYmE0MmU1ODYyZmEzMzU0NWIxMWNiZWQ4Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3MvYnVpbGQtZ3RrZG9jCisrKyAvZGV2L251bGwKQEAgLTEs
OTMgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jICBDb3B5cmlnaHQgKEMpIDIwMTEg
SWdhbGlhIFMuTC4KLSMKLSMgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSMgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSMgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotIyAgdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotIwotIyAg
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCi0jICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgotIyAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSMgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0jCi0jICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0jICBMaWNlbnNlIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0j
ICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0
b24sIE1BICAwMjExMC0xMzAxICBVU0EKLSMKLQotaW1wb3J0IGdsb2IKLWltcG9ydCBndGtkb2MK
LWltcG9ydCBsb2dnaW5nCi1pbXBvcnQgb3MucGF0aAotaW1wb3J0IHN5cwotCi1kZWYgY29uZmln
dXJlX2xvZ2dpbmcoKToKLSAgICBsZXZlbCA9IGxvZ2dpbmcuREVCVUcgaWYgJy12JyBpbiBzeXMu
YXJndiBlbHNlIGxvZ2dpbmcuSU5GTwotICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJn
dGtkb2MiKQotICAgIGxvZ2dlci5zZXRMZXZlbChsZXZlbCkKLSAgICBoYW5kbGVyID0gbG9nZ2lu
Zy5TdHJlYW1IYW5kbGVyKCkKLSAgICBoYW5kbGVyLnNldExldmVsKGxldmVsKQotICAgIGxvZ2dl
ci5hZGRIYW5kbGVyKGhhbmRsZXIpCi0gICAgaWYgbGV2ZWwgPT0gbG9nZ2luZy5ERUJVRzoKLSAg
ICAgICAgaGFuZGxlci5zZXRGb3JtYXR0ZXIobG9nZ2luZy5Gb3JtYXR0ZXIoJ1slKGFzY3RpbWUp
c10gICUobWVzc2FnZSlzJykpCi0gICAgZWxzZToKLSAgICAgICAgaGFuZGxlci5zZXRGb3JtYXR0
ZXIobG9nZ2luZy5Gb3JtYXR0ZXIoJyUobWVzc2FnZSlzJykpCi0KLWRlZiBmaW5kX2J1aWxkX2Rp
cmVjdG9yeSh0b3BfbGV2ZWwpOgotICAgIGRlZiBpc192YWxpZF9idWlsZF9kaXJlY3RvcnkoYnVp
bGRfZGlyKToKLSAgICAgICAgcmV0dXJuIG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihidWls
ZF9kaXIsICIubGlicyIpKQotCi0gICAgaWYgaXNfdmFsaWRfYnVpbGRfZGlyZWN0b3J5KHRvcF9s
ZXZlbCk6Ci0gICAgICAgIHJldHVybiB0b3BfbGV2ZWwKLQotICAgIGJ1aWxkX2RpciA9IG9zLnBh
dGguam9pbih0b3BfbGV2ZWwsICdXZWJLaXRCdWlsZCcpCi0gICAgaWYgaXNfdmFsaWRfYnVpbGRf
ZGlyZWN0b3J5KGJ1aWxkX2Rpcik6Ci0gICAgICAgIHJldHVybiBidWlsZF9kaXIKLQotICAgIGJ1
aWxkX2RpciA9IG9zLnBhdGguam9pbih0b3BfbGV2ZWwsICdXZWJLaXRCdWlsZCcsICdSZWxlYXNl
JykKLSAgICBpZiBpc192YWxpZF9idWlsZF9kaXJlY3RvcnkoYnVpbGRfZGlyKToKLSAgICAgICAg
cmV0dXJuIGJ1aWxkX2RpcgotCi0gICAgYnVpbGRfZGlyID0gb3MucGF0aC5qb2luKHRvcF9sZXZl
bCwgJ1dlYktpdEJ1aWxkJywgJ0RlYnVnJykKLSAgICBpZiBpc192YWxpZF9idWlsZF9kaXJlY3Rv
cnkoYnVpbGRfZGlyKToKLSAgICAgICAgcmV0dXJuIGJ1aWxkX2RpcgotICAgIHByaW50ICJDb3Vs
ZCBub3QgZGV0ZXJtaW5lIGJ1aWxkIGRpcmVjdG9yeS4iCi0gICAgc3lzLmV4aXQoMSkKLQotZG9j
X2RpciA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pKQotdG9wX2xl
dmVsID0gb3MucGF0aC5ub3JtcGF0aChvcy5wYXRoLmpvaW4oZG9jX2RpciwgJy4uJywgJy4uJywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcuLicsICcuLicsICcu
LicsICcuLicpKQotYnVpbGRfZGlyID0gZmluZF9idWlsZF9kaXJlY3RvcnkodG9wX2xldmVsKQot
Ci1vdXRwdXRfZGlyID0gb3MucGF0aC5qb2luKGJ1aWxkX2RpciwgIkRvY3VtZW50YXRpb24iLCAi
d2Via2l0Mmd0ayIpCi1zcmNfZGlyID0gb3MucGF0aC5qb2luKGRvY19kaXIsICcuLicpCi1saWJy
YXJ5X3BhdGggPSBvcy5wYXRoLmpvaW4oYnVpbGRfZGlyLCAiLmxpYnMiKQotcGtnX2NvbmZpZ19w
YXRoID0gXAotICAgIG9zLnBhdGguam9pbihidWlsZF9kaXIsICJTb3VyY2UiLCAiV2ViS2l0MiIs
ICJ3ZWJraXQyZ3RrLTMuMC5wYyIpCi0KLWRlcml2ZWRfc291cmNlcyA9IG9zLnBhdGguam9pbihi
dWlsZF9kaXIsICJEZXJpdmVkU291cmNlcyIsICJXZWJLaXQyIikKLWNmbGFncyA9IFwKLScgLUkn
ICsgb3MucGF0aC5qb2luKGRlcml2ZWRfc291cmNlcywgJ3dlYmtpdDJndGsnLCAnaW5jbHVkZScp
ICsgXAotJyAtSScgKyBvcy5wYXRoLmpvaW4oZGVyaXZlZF9zb3VyY2VzLCAnd2Via2l0Mmd0aycp
ICsgXAotJyAtSScgKyBvcy5wYXRoLmpvaW4oZGVyaXZlZF9zb3VyY2VzLCAnaW5jbHVkZScpICsg
XAotJyAtSScgKyBvcy5wYXRoLmpvaW4odG9wX2xldmVsLCAnU291cmNlJykKLScgLUknICsgc3Jj
X2RpcgotCi1pZ25vcmVkX2ZpbGVzID0gZ2xvYi5nbG9iKCIlcy8qUHJpdmF0ZS5oIiAlIHNyY19k
aXIpICsgXAotICAgICAgICAgICAgICAgIGdsb2IuZ2xvYigiJXMvUGFnZUNsaWVudEltcGwuKiIg
JSBzcmNfZGlyKSArIFwKLSAgICAgICAgICAgICAgICBnbG9iLmdsb2IoIiVzL3Rlc3RzLyouaCIg
JSBzcmNfZGlyKQotCi1jb25maWd1cmVfbG9nZ2luZygpCi1nZW5lcmF0b3IgPSBndGtkb2MuUGtn
Q29uZmlnR1RLRG9jKHBrZ19jb25maWdfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbW9kdWxlX25hbWU9IndlYmtpdDJndGsiLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBvdXRwdXRfZGlyPW91dHB1dF9kaXIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNvdXJjZV9kaXJzPVtzcmNfZGlyXSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZG9jX2Rpcj1kb2NfZGlyLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjZmxhZ3M9Y2ZsYWdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBsaWJyYXJ5X3BhdGg9bGlicmFyeV9wYXRoLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkZWNvcmF0b3I9IldFQktJVF9BUEkiLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkZXByZWNhdGlvbl9ndWFyZD0iV0VCS0lUX0RJU0FCTEVfREVQUkVD
QVRFRCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZWRfZmlsZXM9
aWdub3JlZF9maWxlcykKLWdlbmVyYXRvci5nZW5lcmF0ZShodG1sPSctLXNraXAtaHRtbCcgbm90
IGluIHN5cy5hcmd2KQotc3lzLmV4aXQoZ2VuZXJhdG9yLnNhd193YXJuaW5ncykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3MvZ3RrZG9jLnB5IGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy9ndGtkb2MucHkKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDMwN2I2MmU0NGZiZjg1MWJmNzc2ZTJmOWYyYjY4YTVkZDFjYjc3
MGYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy9ndGtkb2MucHkKKysrIC9kZXYvbnVsbApA
QCAtMSwzNzIgKzAsMCBAQAotIyAgQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCi0jCi0j
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCi0jICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdl
bmVyYWwgUHVibGljCi0jICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSMgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSMKLSMgIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotIyAgYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
LSMgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCi0jICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgotIwotIyAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExlc3NlciBHZW5lcmFsIFB1YmxpYwotIyAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotIyAgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMw
MSAgVVNBCi0jCi0KLWltcG9ydCBlcnJubwotaW1wb3J0IGxvZ2dpbmcKLWltcG9ydCBvcwotaW1w
b3J0IG9zLnBhdGgKLWltcG9ydCBzdWJwcm9jZXNzCi1pbXBvcnQgc3lzCi0KLQotY2xhc3MgR1RL
RG9jKG9iamVjdCk6Ci0KLSAgICAiIiJDbGFzcyB0aGF0IGNvbnRyb2xzIGEgZ3RrZG9jIHJ1bi4K
LQotICAgIEVhY2ggaW5zdGFuY2Ugb2YgdGhpcyBjbGFzcyByZXByZXNlbnRzIG9uZSBndGtkb2Mg
Y29uZmlndXJhdGlvbgotICAgIGFuZCBzZXQgb2YgZG9jdW1lbnRhdGlvbi4gVGhlIGd0a2RvYyBw
YWNrYWdlIGlzIGEgc2VyaWVzIG9mIHRvb2xzCi0gICAgcnVuIGNvbnNlY3V0aXZlbHkgd2hpY2gg
Y29udmVydHMgaW5saW5lIEMvQysrIGRvY3VtZW50YXRpb24gaW50bwotICAgIGRvY2Jvb2sgZmls
ZXMgYW5kIHRoZW4gaW50byBIVE1MLiBUaGlzIGNsYXNzIGlzIHN1aXRhYmxlIGZvcgotICAgIGdl
bmVyYXRpbmcgZG9jdW1lbnRhdGlvbiBvciBzaW1wbHkgdmVyaWZ5aW5nIGNvcnJlY3RuZXNzLgot
Ci0gICAgS2V5d29yZCBhcmd1bWVudHM6Ci0gICAgb3V0cHV0X2RpciAgICAgICAgIC0tIFRoZSBw
YXRoIHdoZXJlIGd0a2RvYyBvdXRwdXQgc2hvdWxkIGJlIHBsYWNlZC4gR2VuZXJhdGlvbgotICAg
ICAgICAgICAgICAgICAgICAgICAgICBtYXkgb3ZlcndyaXRlIGZpbGUgaW4gdGhpcyBkaXJlY3Rv
cnkuIFJlcXVpcmVkLgotICAgIG1vZHVsZV9uYW1lICAgICAgICAtLSBUaGUgbmFtZSBvZiB0aGUg
ZG9jdW1lbnRhdGlvbiBtb2R1bGUuIEZvciBsaWJyYXJpZXMgdGhpcwotICAgICAgICAgICAgICAg
ICAgICAgICAgICBpcyB0eXBpY2FsbHkgdGhlIGxpYnJhcnkgbmFtZS4gUmVxdWlyZWQgaWYgbm90
IGxpYnJhcnkgcGF0aAotICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBnaXZlbi4KLSAgICBz
b3VyY2VfZGlycyAgICAgICAgLS0gQSBsaXN0IG9mIHBhdGhzIHRvIHRoZSBzb3VyY2UgY29kZSB0
byBiZSBzY2FubmVkLiBSZXF1aXJlZC4KLSAgICBpZ25vcmVkX2ZpbGVzICAgICAgLS0gQSBsaXN0
IG9mIGZpbGVuYW1lcyB0byBpZ25vcmUgaW4gdGhlIHNvdXJjZSBkaXJlY3RvcnkuIEl0IGlzCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgIG9ubHkgbmVjZXNzYXJ5IHRvIHByb3ZpZGUgdGhlIGJh
c2VuYW1lcyBvZiB0aGVzZSBmaWxlcy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwaWNh
bGx5IGl0IGlzIGltcG9ydGFudCB0byBwcm92aWRlIGFuIHVwZGF0ZWQgbGlzdCBvZgotICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZ25vcmVkIGZpbGVzIHRvIHByZXZlbnQgd2FybmluZ3MgYWJv
dXQgdW5kb2N1bWVudGVkIHN5bWJvbHMuCi0gICAgZGVjb3JhdG9yICAgICAgICAgIC0tIElmIGEg
ZGVjb3JhdG9yIGlzIHVzZWQgdG8gdW5oaWRlIGNlcnRhaW4gc3ltYm9scyBpbiBoZWFkZXIKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXMgdGhpcyBwYXJhbWV0ZXIgaXMgcmVxdWlyZWQg
Zm9yIHN1Y2Nlc3NmdWwgc2Nhbm5pbmcuCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChkZWZh
dWx0ICcnKQotICAgIGRlcHJlY2F0aW9uX2d1YXJkICAtLSBndGtkb2MgdHJpZXMgdG8gZW5zdXJl
IHRoYXQgc3ltYm9scyBtYXJrZWQgYXMgZGVwcmVjYXRlZAotICAgICAgICAgICAgICAgICAgICAg
ICAgICBhcmUgZW5jYXNlZCBpbiB0aGlzIEMgcHJlcHJvY2Vzc29yIGRlZmluZS4gVGhpcyBpcyBy
ZXF1aXJlZAotICAgICAgICAgICAgICAgICAgICAgICAgICB0byBhdm9pZCBndGtkb2Mgd2Fybmlu
Z3MuIChkZWZhdWx0ICcnKQotICAgIGNmbGFncyAgICAgICAgICAgICAtLSBUaGlzIHBhcmFtZXRl
ciBzcGVjaWZpZXMgYW55IHByZXByb2Nlc3NvciBmbGFncyBuZWNlc3NhcnkgZm9yCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgIGJ1aWxkaW5nIHRoZSBzY2FubmVyIGJpbmFyeSBkdXJpbmcgZ3Rr
ZG9jLXNjYW5vYmouIFR5cGljYWxseQotICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzIGlu
Y2x1ZGVzIGFsbCBhYnNvbHV0ZSBpbmNsdWRlIHBhdGhzIG5lY2Vzc2FyeSB0byByZXNvbHZlCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgIGFsbCBoZWFkZXIgZGVwZW5kZW5jaWVzLiAoZGVmYXVs
dCAnJykKLSAgICBsZGZsYWdzICAgICAgICAgICAgLS0gVGhpcyBwYXJhbWV0ZXIgc3BlY2lmaWVz
IGFueSBsaW5rZXIgZmxhZ3MgbmVjZXNzYXJ5IGZvcgotICAgICAgICAgICAgICAgICAgICAgICAg
ICBidWlsZGluZyB0aGUgc2Nhbm5lciBiaW5hcnkgZHVyaW5nIGd0a2RvYy1zY2Fub2JqLiBUeXBp
Y2FsbHkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyBpbmNsdWRlcyAiLWx5b3VybGli
cmFyeW5hbWUiLiAoZGVmYXVsdCAnJykKLSAgICBsaWJyYXJ5X3BhdGggICAgICAgLS0gVGhpcyBw
YXJhbWV0ZXIgc3BlY2lmaWVzIHRoZSBwYXRoIHRvIHRoZSBkaXJlY3Rvcnkgd2hlcmUgeW91Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcnkgcmVzaWRlcyB1c2VkIGZvciBidWlsZGlu
ZyB0aGUgc2Nhbm5lciBiaW5hcnkgZHVyaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGd0
a2RvYy1zY2Fub2JqLiAoZGVmYXVsdCAnJykKLQotICAgIGRvY19kaXIgICAgICAgICAgICAtLSBU
aGUgcGF0aCB0byBvdGhlciBkb2N1bWVudGF0aW9uIGZpbGVzIG5lY2Vzc2FyeSB0byBidWlsZAot
ICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZG9jdW1lbnRhdGlvbi4gVGhpcyBmaWxlcyBp
biB0aGlzIGRpcmVjdG9yeSBhcyB3ZWxsIGFzCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHRo
ZSBmaWxlcyBpbiB0aGUgJ2h0bWwnIHN1YmRpcmVjdG9yeSB3aWxsIGJlIGNvcGllZAotICAgICAg
ICAgICAgICAgICAgICAgICAgICByZWN1cnNpdmVseSBpbnRvIHRoZSBvdXRwdXQgZGlyZWN0b3J5
LiAoZGVmYXVsdCAnJykKLSAgICBtYWluX3NnbWxfZmlsZSAgICAgLS0gVGhlIHBhdGggb3IgbmFt
ZSAoaWYgYSBkb2NfZGlyIGlzIGdpdmVuKSBvZiB0aGUgU0dNTCBmaWxlCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgIHRoYXQgaXMgdGhlIGNvbnNpZGVyZWQgdGhlIG1haW4gcGFnZSBvZiB5b3Vy
IGRvY3VtZW50YXRpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChkZWZhdWx0OiA8bW9k
dWxlX25hbWU+LWRvY3Muc2dtbCkKLSAgICB2ZXJzaW9uICAgICAgICAgICAgLS0gVGhlIHZlcnNp
b24gbnVtYmVyIG9mIHRoZSBtb2R1bGUuIElmIHRoaXMgaXMgcHJvdmlkZWQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgIGEgdmVyc2lvbi54bWwgZmlsZSBjb250YWluaW5nIHRoZSB2ZXJzaW9u
IHdpbGwgYmUgY3JlYXRlZAotICAgICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUgb3V0cHV0
IGRpcmVjdG9yeSBkdXJpbmcgZG9jdW1lbnRhdGlvbiBnZW5lcmF0aW9uLgotCi0gICAgaW50ZXJh
Y3RpdmUgICAgICAgIC0tIFdoZXRoZXIgb3Igbm90IGVycm9ycyBvciB3YXJuaW5ncyBzaG91bGQg
cHJvbXB0IHRoZSB1c2VyCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGNvbnRpbnVlIG9y
IG5vdC4gV2hlbiB0aGlzIHZhbHVlIGlzIGZhbHNlLCBnZW5lcmF0aW9uCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgIHdpbGwgY29udGludWUgZGVzcGl0ZSB3YXJuaW5ncy4gKGRlZmF1bHQgRmFs
c2UpCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgKiphcmdzKToKLQotICAgICAg
ICAjIFBhcmFtZXRlcnMgc3BlY2lmaWMgdG8gc2Nhbm5pbmcuCi0gICAgICAgIHNlbGYubW9kdWxl
X25hbWUgPSAnJwotICAgICAgICBzZWxmLnNvdXJjZV9kaXJzID0gW10KLSAgICAgICAgc2VsZi5p
Z25vcmVkX2ZpbGVzID0gW10KLSAgICAgICAgc2VsZi5kZWNvcmF0b3IgPSAnJwotICAgICAgICBz
ZWxmLmRlcHJlY2F0aW9uX2d1YXJkID0gJycKLQotICAgICAgICAjIFBhcmFtZXRlcnMgc3BlY2lm
aWMgdG8gZ3RrZG9jLXNjYW5vYmouCi0gICAgICAgIHNlbGYuY2ZsYWdzID0gJycKLSAgICAgICAg
c2VsZi5sZGZsYWdzID0gJycKLSAgICAgICAgc2VsZi5saWJyYXJ5X3BhdGggPSAnJwotCi0gICAg
ICAgICMgUGFyYW1ldGVycyBzcGVjaWZpYyB0byBnZW5lcmF0aW9uLgotICAgICAgICBzZWxmLm91
dHB1dF9kaXIgPSAnJwotICAgICAgICBzZWxmLmRvY19kaXIgPSAnJwotICAgICAgICBzZWxmLm1h
aW5fc2dtbF9maWxlID0gJycKLQotICAgICAgICBzZWxmLmludGVyYWN0aXZlID0gRmFsc2UKLQot
ICAgICAgICBzZWxmLmxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdndGtkb2MnKQotCi0gICAg
ICAgIGZvciBrZXksIHZhbHVlIGluIGFyZ3MuaXRlcml0ZW1zKCk6Ci0gICAgICAgICAgICBzZXRh
dHRyKHNlbGYsIGtleSwgdmFsdWUpCi0KLSAgICAgICAgZGVmIHJhaXNlX2Vycm9yX2lmX25vdF9z
cGVjaWZpZWQoa2V5KToKLSAgICAgICAgICAgIGlmIG5vdCBnZXRhdHRyKHNlbGYsIGtleSk6Ci0g
ICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCclcyBub3Qgc3BlY2lmaWVkLicgJSBrZXkp
Ci0KLSAgICAgICAgcmFpc2VfZXJyb3JfaWZfbm90X3NwZWNpZmllZCgnb3V0cHV0X2RpcicpCi0g
ICAgICAgIHJhaXNlX2Vycm9yX2lmX25vdF9zcGVjaWZpZWQoJ3NvdXJjZV9kaXJzJykKLSAgICAg
ICAgcmFpc2VfZXJyb3JfaWZfbm90X3NwZWNpZmllZCgnbW9kdWxlX25hbWUnKQotCi0gICAgICAg
ICMgTWFrZSBhbGwgcGF0aHMgYWJzb2x1dGUgaW4gY2FzZSB3ZSB3ZXJlIHBhc3NlZCByZWxhdGl2
ZSBwYXRocywgc2luY2UKLSAgICAgICAgIyB3ZSBjaGFuZ2UgdGhlIGN1cnJlbnQgd29ya2luZyBk
aXJlY3Rvcnkgd2hlbiBleGVjdXRpbmcgc3ViY29tbWFuZHMuCi0gICAgICAgIHNlbGYub3V0cHV0
X2RpciA9IG9zLnBhdGguYWJzcGF0aChzZWxmLm91dHB1dF9kaXIpCi0gICAgICAgIHNlbGYuc291
cmNlX2RpcnMgPSBbb3MucGF0aC5hYnNwYXRoKHgpIGZvciB4IGluIHNlbGYuc291cmNlX2RpcnNd
Ci0gICAgICAgIGlmIHNlbGYubGlicmFyeV9wYXRoOgotICAgICAgICAgICAgc2VsZi5saWJyYXJ5
X3BhdGggPSBvcy5wYXRoLmFic3BhdGgoc2VsZi5saWJyYXJ5X3BhdGgpCi0KLSAgICAgICAgaWYg
bm90IHNlbGYubWFpbl9zZ21sX2ZpbGU6Ci0gICAgICAgICAgICBzZWxmLm1haW5fc2dtbF9maWxl
ID0gc2VsZi5tb2R1bGVfbmFtZSArICItZG9jcy5zZ21sIgotCi0gICAgZGVmIGdlbmVyYXRlKHNl
bGYsIGh0bWw9VHJ1ZSk6Ci0gICAgICAgIHNlbGYuc2F3X3dhcm5pbmdzID0gRmFsc2UKLQotICAg
ICAgICBzZWxmLl9jb3B5X2RvY19maWxlc190b19vdXRwdXRfZGlyKGh0bWwpCi0gICAgICAgIHNl
bGYuX3dyaXRlX3ZlcnNpb25feG1sKCkKLSAgICAgICAgc2VsZi5fcnVuX2d0a2RvY19zY2FuKCkK
LSAgICAgICAgc2VsZi5fcnVuX2d0a2RvY19zY2FuZ29iaigpCi0gICAgICAgIHNlbGYuX3J1bl9n
dGtkb2NfbWt0bXBsKCkKLSAgICAgICAgc2VsZi5fcnVuX2d0a2RvY19ta2RiKCkKLQotICAgICAg
ICBpZiBub3QgaHRtbDoKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgIHNlbGYuX3J1bl9n
dGtkb2NfbWtodG1sKCkKLSAgICAgICAgc2VsZi5fcnVuX2d0a2RvY19maXh4cmVmKCkKLQotICAg
IGRlZiBfZGVsZXRlX2ZpbGVfaWZfZXhpc3RzKHNlbGYsIHBhdGgpOgotICAgICAgICBpZiBub3Qg
b3MuYWNjZXNzKHBhdGgsIG9zLkZfT0sgfCBvcy5SX09LKToKLSAgICAgICAgICAgIHJldHVybgot
ICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygnZGVsZXRpbmcgJXMnLCBwYXRoKQotICAgICAgICBv
cy51bmxpbmsocGF0aCkKLQotICAgIGRlZiBfY3JlYXRlX2RpcmVjdG9yeV9pZl9ub25leGlzdGVu
dChzZWxmLCBwYXRoKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgb3MubWFrZWRpcnMocGF0
aCkKLSAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyb3I6Ci0gICAgICAgICAgICBpZiBlcnJv
ci5lcnJubyAhPSBlcnJuby5FRVhJU1Q6Ci0gICAgICAgICAgICAgICAgcmFpc2UKLQotICAgIGRl
ZiBfcmFpc2VfZXhjZXB0aW9uX2lmX2ZpbGVfaW5hY2Nlc3NpYmxlKHNlbGYsIHBhdGgpOgotICAg
ICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMocGF0aCkgb3Igbm90IG9zLmFjY2VzcyhwYXRoLCBv
cy5SX09LKToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiQ291bGQgbm90IGFjY2VzcyBm
aWxlIGF0OiAlcyIgJSBwYXRoKQotCi0gICAgZGVmIF9vdXRwdXRfaGFzX3dhcm5pbmdzKHNlbGYs
IG91dHB1dHMpOgotICAgICAgICBmb3Igb3V0cHV0IGluIG91dHB1dHM6Ci0gICAgICAgICAgICBp
ZiBvdXRwdXQgYW5kIG91dHB1dC5maW5kKCd3YXJuaW5nJyk6Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIFRydWUKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICBkZWYgX2Fza195ZXNfb3Jfbm9f
cXVlc3Rpb24oc2VsZiwgcXVlc3Rpb24pOgotICAgICAgICBpZiBub3Qgc2VsZi5pbnRlcmFjdGl2
ZToKLSAgICAgICAgICAgIHJldHVybiBUcnVlCi0KLSAgICAgICAgcXVlc3Rpb24gKz0gJyBbeS9O
XSAnCi0gICAgICAgIGFuc3dlciA9IE5vbmUKLSAgICAgICAgd2hpbGUgYW5zd2VyICE9ICd5JyBh
bmQgYW5zd2VyICE9ICduJyBhbmQgYW5zd2VyICE9ICcnOgotICAgICAgICAgICAgYW5zd2VyID0g
cmF3X2lucHV0KHF1ZXN0aW9uKS5sb3dlcigpCi0gICAgICAgIHJldHVybiBhbnN3ZXIgPT0gJ3kn
Ci0KLSAgICBkZWYgX3J1bl9jb21tYW5kKHNlbGYsIGFyZ3MsIGVudj1Ob25lLCBjd2Q9Tm9uZSwg
cHJpbnRfb3V0cHV0PVRydWUpOgotICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCJSdW5uaW5nICVz
IiwgYXJnc1swXSkKLSAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIkZ1bGwgY29tbWFuZCBhcmdz
OiAlcyIsIHN0cihhcmdzKSkKLQotICAgICAgICBwcm9jZXNzID0gc3VicHJvY2Vzcy5Qb3Blbihh
cmdzLCBlbnY9ZW52LCBjd2Q9Y3dkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQotICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHBy
b2Nlc3MuY29tbXVuaWNhdGUoKQotCi0gICAgICAgIGlmIHByaW50X291dHB1dDoKLSAgICAgICAg
ICAgIGlmIHN0ZG91dDoKLSAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKHN0ZG91dCkK
LSAgICAgICAgICAgIGlmIHN0ZGVycjoKLSAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRl
KHN0ZGVycikKLQotICAgICAgICBpZiBwcm9jZXNzLnJldHVybmNvZGUgIT0gMDoKLSAgICAgICAg
ICAgIHJhaXNlIEV4Y2VwdGlvbignJXMgcHJvZHVjZWQgYSBub24temVybyByZXR1cm4gY29kZSAl
aScKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAoYXJnc1swXSwgcHJvY2Vzcy5yZXR1
cm5jb2RlKSkKLQotICAgICAgICBpZiAnd2FybmluZycgaW4gc3RkZXJyIG9yICd3YXJuaW5nJyBp
biBzdGRvdXQ6Ci0gICAgICAgICAgICBzZWxmLnNhd193YXJuaW5ncyA9IFRydWUKLSAgICAgICAg
ICAgIGlmIG5vdCBzZWxmLl9hc2tfeWVzX29yX25vX3F1ZXN0aW9uKCclcyBwcm9kdWNlZCB3YXJu
aW5ncywgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J3RyeSB0byBjb250aW51ZT8nICUgYXJnc1swXSk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgRXhj
ZXB0aW9uKCclcyBzdGVwIGZhaWxlZCcgJSBhcmdzWzBdKQotCi0gICAgICAgIHJldHVybiBzdGRv
dXQuc3RyaXAoKQotCi0gICAgZGVmIF9jb3B5X2RvY19maWxlc190b19vdXRwdXRfZGlyKHNlbGYs
IGh0bWw9VHJ1ZSk6Ci0gICAgICAgIGlmIG5vdCBzZWxmLmRvY19kaXI6Ci0gICAgICAgICAgICBz
ZWxmLmxvZ2dlci5pbmZvKCdOb3QgY29weWluZyBhbnkgZmlsZXMgZnJvbSBkb2MgZGlyZWN0b3J5
LCcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyBiZWNhdXNlIG5vIGRvYyBkaXJlY3Rv
cnkgZ2l2ZW4uJykKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgIGRlZiBjb3B5X2ZpbGVf
cmVwbGFjaW5nX2V4aXN0aW5nKHNyYywgZGVzdCk6Ci0gICAgICAgICAgICBpZiBvcy5wYXRoLmlz
ZGlyKHNyYyk6Ci0gICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoJ3NraXBwZWQgZGly
ZWN0b3J5ICVzJywgIHNyYykKLSAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgIGlm
IG5vdCBvcy5hY2Nlc3Moc3JjLCBvcy5GX09LIHwgb3MuUl9PSyk6Ci0gICAgICAgICAgICAgICAg
c2VsZi5sb2dnZXIuZGVidWcoJ3NraXBwZWQgdW5yZWFkYWJsZSAlcycsIHNyYykKLSAgICAgICAg
ICAgICAgICByZXR1cm4KLQotICAgICAgICAgICAgc2VsZi5fZGVsZXRlX2ZpbGVfaWZfZXhpc3Rz
KGRlc3QpCi0KLSAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCdjcmVhdGVkICVzJywgZGVz
dCkKLSAgICAgICAgICAgIG9zLmxpbmsoc3JjLCBkZXN0KQotCi0gICAgICAgIGRlZiBjb3B5X2Fs
bF9maWxlc19pbl9kaXJlY3Rvcnkoc3JjLCBkZXN0KToKLSAgICAgICAgICAgIGZvciBwYXRoIGlu
IG9zLmxpc3RkaXIoc3JjKToKLSAgICAgICAgICAgICAgICBjb3B5X2ZpbGVfcmVwbGFjaW5nX2V4
aXN0aW5nKG9zLnBhdGguam9pbihzcmMsIHBhdGgpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKGRlc3QsIHBhdGgpKQotCi0gICAgICAg
IHNlbGYubG9nZ2VyLmluZm8oJ0NvcHlpbmcgdGVtcGxhdGUgZmlsZXMgdG8gb3V0cHV0IGRpcmVj
dG9yeS4uLicpCi0gICAgICAgIHNlbGYuX2NyZWF0ZV9kaXJlY3RvcnlfaWZfbm9uZXhpc3RlbnQo
c2VsZi5vdXRwdXRfZGlyKQotICAgICAgICBjb3B5X2FsbF9maWxlc19pbl9kaXJlY3Rvcnkoc2Vs
Zi5kb2NfZGlyLCBzZWxmLm91dHB1dF9kaXIpCi0KLSAgICAgICAgaWYgbm90IGh0bWw6Ci0gICAg
ICAgICAgICByZXR1cm4KLQotICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCdDb3B5aW5nIEhUTUwg
ZmlsZXMgdG8gb3V0cHV0IGRpcmVjdG9yeS4uLicpCi0gICAgICAgIGh0bWxfc3JjX2RpciA9IG9z
LnBhdGguam9pbihzZWxmLmRvY19kaXIsICdodG1sJykKLSAgICAgICAgaHRtbF9kZXN0X2RpciA9
IG9zLnBhdGguam9pbihzZWxmLm91dHB1dF9kaXIsICdodG1sJykKLSAgICAgICAgc2VsZi5fY3Jl
YXRlX2RpcmVjdG9yeV9pZl9ub25leGlzdGVudChodG1sX2Rlc3RfZGlyKQotCi0gICAgICAgIGlm
IG9zLnBhdGguZXhpc3RzKGh0bWxfc3JjX2Rpcik6Ci0gICAgICAgICAgICBjb3B5X2FsbF9maWxl
c19pbl9kaXJlY3RvcnkoaHRtbF9zcmNfZGlyLCBodG1sX2Rlc3RfZGlyKQotCi0gICAgZGVmIF93
cml0ZV92ZXJzaW9uX3htbChzZWxmKToKLSAgICAgICAgaWYgbm90IHNlbGYudmVyc2lvbjoKLSAg
ICAgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oJ05vIHZlcnNpb24gc3BlY2lmaWVkLCBzbyBub3Qg
d3JpdGluZyB2ZXJzaW9uLnhtbCcpCi0gICAgICAgICAgICByZXR1cm4KLQotICAgICAgICB2ZXJz
aW9uX3htbF9wYXRoID0gb3MucGF0aC5qb2luKHNlbGYub3V0cHV0X2RpciwgJ3ZlcnNpb24ueG1s
JykKLSAgICAgICAgc3JjX3ZlcnNpb25feG1sX3BhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi5kb2Nf
ZGlyLCAndmVyc2lvbi54bWwnKQotCi0gICAgICAgICMgRG9uJ3Qgb3ZlcndyaXRlIHZlcnNpb24u
eG1sIGlmIGl0IHdhcyBpbiB0aGUgZG9jIGRpcmVjdG9yeS4KLSAgICAgICAgaWYgb3MucGF0aC5l
eGlzdHModmVyc2lvbl94bWxfcGF0aCkgYW5kIFwKLSAgICAgICAgICAgb3MucGF0aC5leGlzdHMo
c3JjX3ZlcnNpb25feG1sX3BhdGgpOgotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgb3V0
cHV0X2ZpbGUgPSBvcGVuKHZlcnNpb25feG1sX3BhdGgsICd3JykKLSAgICAgICAgb3V0cHV0X2Zp
bGUud3JpdGUoc2VsZi52ZXJzaW9uKQotICAgICAgICBvdXRwdXRfZmlsZS5jbG9zZSgpCi0KLSAg
ICBkZWYgX3J1bl9ndGtkb2Nfc2NhbihzZWxmKToKLSAgICAgICAgYXJncyA9IFsnZ3RrZG9jLXNj
YW4nLAotICAgICAgICAgICAgICAgICctLW1vZHVsZT0lcycgJSBzZWxmLm1vZHVsZV9uYW1lLAot
ICAgICAgICAgICAgICAgICctLXJlYnVpbGQtdHlwZXMnXQotCi0gICAgICAgICMgRWFjaCBzb3Vy
Y2UgZGlyZWN0b3J5IHNob3VsZCBiZSBoYXZlIGl0cyBvd24gIi0tc291cmNlLWRpcj0iIHByZWZp
eC4KLSAgICAgICAgYXJncy5leHRlbmQoWyctLXNvdXJjZS1kaXI9JXMnICUgcGF0aCBmb3IgcGF0
aCBpbiBzZWxmLnNvdXJjZV9kaXJzXSkKLQotICAgICAgICBpZiBzZWxmLmRlY29yYXRvcjoKLSAg
ICAgICAgICAgIGFyZ3MuYXBwZW5kKCctLWlnbm9yZS1kZWNvcmF0b3JzPSVzJyAlIHNlbGYuZGVj
b3JhdG9yKQotICAgICAgICBpZiBzZWxmLmRlcHJlY2F0aW9uX2d1YXJkOgotICAgICAgICAgICAg
YXJncy5hcHBlbmQoJy0tZGVwcmVjYXRlZC1ndWFyZHM9JXMnICUgc2VsZi5kZXByZWNhdGlvbl9n
dWFyZCkKLSAgICAgICAgaWYgc2VsZi5vdXRwdXRfZGlyOgotICAgICAgICAgICAgYXJncy5hcHBl
bmQoJy0tb3V0cHV0LWRpcj0lcycgJSBzZWxmLm91dHB1dF9kaXIpCi0KLSAgICAgICAgIyBndGtk
b2Mtc2NhbiB3YW50cyB0aGUgYmFzZW5hbWVzIG9mIGlnbm9yZWQgaGVhZGVycywgc28gc3RyaXAg
dGhlCi0gICAgICAgICMgZGlybmFtZS4gRGlmZmVyZW50IGZyb20gIi0tc291cmNlLWRpciIsIHRo
ZSBoZWFkZXJzIHNob3VsZCBiZQotICAgICAgICAjIHNwZWNpZmllZCBhcyBvbmUgbG9uZyBzdHJp
bmcuCi0gICAgICAgIGlmIHNlbGYuaWdub3JlZF9maWxlczoKLSAgICAgICAgICAgIGlnbm9yZWRf
ZmlsZXNfYmFzZW5hbWVzID0gXAotICAgICAgICAgICAgICAgIFtvcy5wYXRoLmJhc2VuYW1lKHgp
IGZvciB4IGluIHNlbGYuaWdub3JlZF9maWxlc10KLSAgICAgICAgICAgIGFyZ3MuYXBwZW5kKCct
LWlnbm9yZS1oZWFkZXJzPSVzJyAlICcgJy5qb2luKGlnbm9yZWRfZmlsZXNfYmFzZW5hbWVzKSkK
LQotICAgICAgICBzZWxmLl9ydW5fY29tbWFuZChhcmdzKQotCi0gICAgZGVmIF9ydW5fZ3RrZG9j
X3NjYW5nb2JqKHNlbGYpOgotICAgICAgICBlbnYgPSBvcy5lbnZpcm9uCi0gICAgICAgIGxkZmxh
Z3MgPSBzZWxmLmxkZmxhZ3MKLSAgICAgICAgaWYgc2VsZi5saWJyYXJ5X3BhdGg6Ci0gICAgICAg
ICAgICBsZGZsYWdzID0gJyAiLUwlcyIgJyAlIHNlbGYubGlicmFyeV9wYXRoICsgbGRmbGFncwot
ICAgICAgICAgICAgZW52WydSVU4nXSA9ICdMRF9MSUJSQVJZX1BBVEg9IiVzIiAnICUgc2VsZi5s
aWJyYXJ5X3BhdGgKLSAgICAgICAgaWYgbGRmbGFnczoKLSAgICAgICAgICAgIGVudlsnTERGTEFH
UyddID0gbGRmbGFncwotICAgICAgICBpZiBzZWxmLmNmbGFnczoKLSAgICAgICAgICAgIGVudlsn
Q0ZMQUdTJ10gPSBzZWxmLmNmbGFncwotCi0gICAgICAgIGlmICdDRkxBR1MnIGluIGVudjoKLSAg
ICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCdDRkxBR1M9JXMnLCBlbnZbJ0NGTEFHUyddKQot
ICAgICAgICBpZiAnTERGTEFHUycgaW4gZW52OgotICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVi
dWcoJ0xERkxBR1MgJXMnLCBlbnZbJ0xERkxBR1MnXSkKLSAgICAgICAgaWYgJ1JVTicgaW4gZW52
OgotICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoJ1JVTj0lcycsIGVudlsnUlVOJ10pCi0g
ICAgICAgIHNlbGYuX3J1bl9jb21tYW5kKFsnZ3RrZG9jLXNjYW5nb2JqJywgJy0tbW9kdWxlPSVz
JyAlIHNlbGYubW9kdWxlX25hbWVdLAotICAgICAgICAgICAgICAgICAgICAgICAgICBlbnY9ZW52
LCBjd2Q9c2VsZi5vdXRwdXRfZGlyKQotCi0gICAgZGVmIF9ydW5fZ3RrZG9jX21rdG1wbChzZWxm
KToKLSAgICAgICAgYXJncyA9IFsnZ3RrZG9jLW1rdG1wbCcsICctLW1vZHVsZT0lcycgJSBzZWxm
Lm1vZHVsZV9uYW1lXQotICAgICAgICBzZWxmLl9ydW5fY29tbWFuZChhcmdzLCBjd2Q9c2VsZi5v
dXRwdXRfZGlyKQotCi0gICAgZGVmIF9ydW5fZ3RrZG9jX21rZGIoc2VsZik6Ci0gICAgICAgIHNn
bWxfZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLm91dHB1dF9kaXIsIHNlbGYubWFpbl9zZ21sX2Zp
bGUpCi0gICAgICAgIHNlbGYuX3JhaXNlX2V4Y2VwdGlvbl9pZl9maWxlX2luYWNjZXNzaWJsZShz
Z21sX2ZpbGUpCi0KLSAgICAgICAgYXJncyA9IFsnZ3RrZG9jLW1rZGInLAotICAgICAgICAgICAg
ICAgICctLW1vZHVsZT0lcycgJSBzZWxmLm1vZHVsZV9uYW1lLAotICAgICAgICAgICAgICAgICct
LW1haW4tc2dtbC1maWxlPSVzJyAlIHNnbWxfZmlsZSwKLSAgICAgICAgICAgICAgICAnLS1zb3Vy
Y2Utc3VmZml4ZXM9aCxjLGNwcCxjYycsCi0gICAgICAgICAgICAgICAgJy0tb3V0cHV0LWZvcm1h
dD14bWwnLAotICAgICAgICAgICAgICAgICctLXNnbWwtbW9kZSddCi0KLSAgICAgICAgIyBFYWNo
IGRpcmVjdG9yeSBzaG91bGQgYmUgaGF2ZSBpdHMgb3duICItLXNvdXJjZS1kaXI9IiBwcmVmaXgu
Ci0gICAgICAgIGFyZ3MuZXh0ZW5kKFsnLS1zb3VyY2UtZGlyPSVzJyAlIHBhdGggZm9yIHBhdGgg
aW4gc2VsZi5zb3VyY2VfZGlyc10pCi0gICAgICAgIHNlbGYuX3J1bl9jb21tYW5kKGFyZ3MsIGN3
ZD1zZWxmLm91dHB1dF9kaXIpCi0KLSAgICBkZWYgX3J1bl9ndGtkb2NfbWtodG1sKHNlbGYpOgot
ICAgICAgICBodG1sX2Rlc3RfZGlyID0gb3MucGF0aC5qb2luKHNlbGYub3V0cHV0X2RpciwgJ2h0
bWwnKQotICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2RpcihodG1sX2Rlc3RfZGlyKToKLSAgICAg
ICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiJXMgaXMgbm90IGEgZGlyZWN0b3J5LCBjb3VsZCBub3Qg
Z2VuZXJhdGUgSFRNTCIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIGh0bWxfZGVzdF9k
aXIpCi0gICAgICAgIGVsaWYgbm90IG9zLmFjY2VzcyhodG1sX2Rlc3RfZGlyLCBvcy5YX09LIHwg
b3MuUl9PSyB8IG9zLldfT0spOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJDb3VsZCBu
b3QgYWNjZXNzICVzIHRvIGdlbmVyYXRlIEhUTUwiCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJSBodG1sX2Rlc3RfZGlyKQotCi0gICAgICAgICMgZ3RrZG9jLW1raHRtbCBleHBlY3RzIHRo
ZSBTR01MIHBhdGggdG8gYmUgYWJzb2x1dGUuCi0gICAgICAgIHNnbWxfZmlsZSA9IG9zLnBhdGgu
am9pbihvcy5wYXRoLmFic3BhdGgoc2VsZi5vdXRwdXRfZGlyKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNlbGYubWFpbl9zZ21sX2ZpbGUpCi0gICAgICAgIHNlbGYuX3JhaXNl
X2V4Y2VwdGlvbl9pZl9maWxlX2luYWNjZXNzaWJsZShzZ21sX2ZpbGUpCi0KLSAgICAgICAgc2Vs
Zi5fcnVuX2NvbW1hbmQoWydndGtkb2MtbWtodG1sJywgc2VsZi5tb2R1bGVfbmFtZSwgc2dtbF9m
aWxlXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY3dkPWh0bWxfZGVzdF9kaXIpCi0KLSAg
ICBkZWYgX3J1bl9ndGtkb2NfZml4eHJlZihzZWxmKToKLSAgICAgICAgc2VsZi5fcnVuX2NvbW1h
bmQoWydndGtkb2MtZml4eHJlZicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1tb2R1
bGUtZGlyPWh0bWwnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0taHRtbC1kaXI9aHRt
bCddLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjd2Q9c2VsZi5vdXRwdXRfZGlyKQotCi0K
LWNsYXNzIFBrZ0NvbmZpZ0dUS0RvYyhHVEtEb2MpOgotCi0gICAgIiIiQ2xhc3MgcmVhZHMgYSBs
aWJyYXJ5J3MgcGtnY29uZmlnIGZpbGUgdG8gZ3Vlc3MgZ3RrZG9jIHBhcmFtZXRlcnMuCi0KLSAg
ICBTb21lIGd0a2RvYyBwYXJhbWV0ZXJzIGNhbiBiZSBndWVzc2VkIGJ5IHJlYWRpbmcgYSBsaWJy
YXJ5J3MgcGtnY29uZmlnCi0gICAgZmlsZSwgaW5jbHVkaW5nIHRoZSBjZmxhZ3MsIGxkZmxhZ3Mg
YW5kIHZlcnNpb24gcGFyYW1ldGVycy4gSWYgeW91Ci0gICAgcHJvdmlkZSB0aGVzZSBwYXJhbWV0
ZXJzIGFzIHdlbGwsIHRoZXkgd2lsbCBiZSBhcHBlbmRlZCB0byB0aGUgb25lcwotICAgIGd1ZXNz
ZWQgdmlhIHRoZSBwa2djb25maWcgZmlsZS4KLQotICAgIEtleXdvcmQgYXJndW1lbnRzOgotICAg
ICAgcGtnX2NvbmZpZ19wYXRoIC0tIFBhdGggdG8gdGhlIHBrZ2NvbmZpZyBmaWxlIGZvciB0aGUg
bGlicmFyeS4gUmVxdWlyZWQuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgcGtn
X2NvbmZpZ19wYXRoLCAqKmFyZ3MpOgotICAgICAgICBzdXBlcihQa2dDb25maWdHVEtEb2MsIHNl
bGYpLl9faW5pdF9fKCoqYXJncykKLQotICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMocGtn
X2NvbmZpZ19wYXRoKToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignQ291bGQgbm90IGZp
bmQgcGtnLWNvbmZpZyBmaWxlIGF0OiAlcycKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAl
IHBrZ19jb25maWdfcGF0aCkKLQotICAgICAgICBzZWxmLmNmbGFncyArPSAiICIgKyBzZWxmLl9y
dW5fY29tbWFuZChbJ3BrZy1jb25maWcnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcGtnX2NvbmZpZ19wYXRoLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tY2ZsYWdzJ10sIHByaW50X291dHB1dD1GYWxz
ZSkKLSAgICAgICAgc2VsZi5sZGZsYWdzICs9ICIgIiArIHNlbGYuX3J1bl9jb21tYW5kKFsncGtn
LWNvbmZpZycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwa2dfY29uZmlnX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnLS1saWJzJ10sIHByaW50X291dHB1dD1GYWxzZSkKLSAgICAgICAgc2VsZi52
ZXJzaW9uID0gc2VsZi5fcnVuX2NvbW1hbmQoWydwa2ctY29uZmlnJywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBrZ19jb25maWdfcGF0aCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLW1vZHZlcnNpb24nXSwgcHJpbnRfb3V0
cHV0PUZhbHNlKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IDc1ZjRlZmZjZWFiYzU0OWI2N2YxNDQzMjg2ZjYzMDE3ZjA2MzBkZWUuLjJjODM4OGVj
MWNhN2ZmODBiNTM2M2FkODNlNWFkNGQ0ZTE4ZTE0YjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMS0xMS0xNyAg
TWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10g
SW50ZWdyYXRlIGJ1aWxkLWd0a2RvYyBpbnRvIGJ1aWxkLXdlYmtpdCBhbmQgbWFrZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzI2MjYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFt
OiBBZGRlZCBzdXBwb3J0IGZvciBuZXcgc2NyaXB0cyBhbmQgIm1ha2UgZG9jcyIuCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRkaXJzLnBtOiBDYWxsIGdlbmVyYXRlLWd0a2RvYyB3aGVuIGJ1aWxk
aW5nLgorICAgICAgICAoYnVpbGRBdXRvdG9vbHNQcm9qZWN0KToKKyAgICAgICAgKiBndGsvZ2Vu
ZXJhdGUtZ3RrZG9jOiBBZGRlZC4KKyAgICAgICAgKiBndGsvZ3RrZG9jLnB5OiBSZW5hbWVkIGZy
b20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy9ndGtkb2MucHkuCisKIDIw
MTEtMTEtMjMgIFJhcGhhZWwgS3VibyBkYSBDb3N0YSAgPGt1Ym9AcHJvZnVzaW9uLm1vYmk+CiAK
ICAgICAgICAgW0NNYWtlXSBNb3ZlIHRoZSB0b3AtbGV2ZWwgbG9naWMgdG8gdGhlIHRvcC1sZXZl
bCBkaXJlY3RvcnkuCmRpZmYgLS1naXQgYS9Ub29scy9HTlVtYWtlZmlsZS5hbSBiL1Rvb2xzL0dO
VW1ha2VmaWxlLmFtCmluZGV4IGZkOWVmNzAxNDNlYmNmYWE0NjgxM2IxMjgwYmFlY2E0ZDYzMGIz
NGEuLjA1Zjg1NTFhOTRkZDZkYWE5NTNlNGNlMmViY2ZkNjI3NTE2N2I5OTkgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0dOVW1ha2VmaWxlLmFtCisrKyBiL1Rvb2xzL0dOVW1ha2VmaWxlLmFtCkBAIC0yMjcs
MyArMjI3LDM0IEBAIFRlc3ROZXRzY2FwZVBsdWdpbl9saWJ0ZXN0bmV0c2NhcGVwbHVnaW5fbGFf
TERGTEFHUyA9IFwKIAogQ0xFQU5GSUxFUyArPSBUZXN0TmV0c2NhcGVQbHVnaW4vbGlidGVzdG5l
dHNjYXBlcGx1Z2luLmxhCiBlbmRpZgorCitFWFRSQV9ESVNUICs9IFwKKwkkKGZpbmQgJChzcmNk
aXIpL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkpIFwKKwlUb29scy9ndGsvZ2VuZXJhdGUtZ3RrZG9j
IFwKKwlUb29scy9ndGsvZ3RrZG9jLnB5IFwKKwlUb29scy9TY3JpcHRzL1ZDU1V0aWxzLnBtIFwK
KwlUb29scy9TY3JpcHRzL3dlYmtpdC1idWlsZC1kaXJlY3RvcnkgXAorCVRvb2xzL1NjcmlwdHMv
d2Via2l0ZGlycy5wbQorCisuUEhPTlkgOiBkb2NzCisKK2NsZWFuLWxvY2FsOiBkb2MtY2xlYW4t
bG9jYWwKK2RvYy1jbGVhbi1sb2NhbDoKKwlAcm0gLWYgRG9jdW1lbnRhdGlvbi8qfiBEb2N1bWVu
dGF0aW9uLyouYmFrCitkaXN0Y2xlYW4tbG9jYWw6IGRvYy1kaXN0Y2xlYW4tbG9jYWwKK2RvYy1k
aXN0Y2xlYW4tbG9jYWw6CisJQHJtIC1yZiBEb2N1bWVudGF0aW9uCittYWludGFpbmVyLWNsZWFu
LWxvY2FsOiBkb2MtbWFpbnRhaW5lci1jbGVhbi1sb2NhbAorZG9jLW1haW50YWluZXItY2xlYW4t
bG9jYWw6IGNsZWFuCisJQHJtIC1yZiBEb2N1bWVudGF0aW9uL3htbCBEb2N1bWVudGF0aW9uL2h0
bWwKKwktQHJtZGlyIERvY3VtZW50YXRpb24KKworaWYgRU5BQkxFX0dUS19ET0MKK2Rpc3QtY2hl
Y2stZ3RrZG9jOgorYWxsOiBkb2NzCitlbHNlCitkaXN0LWNoZWNrLWd0a2RvYzoKKwlAZWNobyAi
KioqIGd0ay1kb2MgbXVzdCBiZSBpbnN0YWxsZWQgYW5kIGVuYWJsZWQgaW4gb3JkZXIgdG8gbWFr
ZSBkaXN0IgorCUBmYWxzZQorZW5kaWYKKwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRkaXJzLnBtIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRkaXJzLnBtCmluZGV4IDBjYTQ4OGIyZDU5
YzRkYjhiYTdlM2E0YzZjMmY0NmYyYTIxMjRlYjguLjliYTQwNTg2YTRlY2JlM2U1NWRmYzFlMDA0
ZjBlMjA2OWRkMDVlNTggMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0ZGlycy5wbQor
KysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdGRpcnMucG0KQEAgLTE2NzksNiArMTY3OSwxNCBAQCBz
dWIgYnVpbGRBdXRvdG9vbHNQcm9qZWN0KCRAKQogICAgIH0KIAogICAgIGNoZGlyICIuLiIgb3Ig
ZGllOworCisgICAgaWYgKGlzR3RrKCkpIHsKKyAgICAgICAgbXkgJHJlbGF0aXZlU2NyaXB0c1Bh
dGggPSByZWxhdGl2ZVNjcmlwdHNEaXIoKTsKKyAgICAgICAgaWYgKHN5c3RlbSgiJHJlbGF0aXZl
U2NyaXB0c1BhdGgvLi4vZ3RrL2dlbmVyYXRlLWd0a2RvYyAtLXNraXAtaHRtbCIpKSB7CisgICAg
ICAgICAgICBkaWUgIlxuIGd0a2RvYyBkaWQgbm90IGJ1aWxkIHdpdGhvdXQgd2FybmluZ3NcbiI7
CisgICAgICAgIH0KKyAgICB9CisKICAgICByZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvVG9v
bHMvZ3RrL2dlbmVyYXRlLWd0a2RvYyBiL1Rvb2xzL2d0ay9nZW5lcmF0ZS1ndGtkb2MKbmV3IGZp
bGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNTFmMzkyYjE0YjdmMzhiMGU3NmQzM2MxYTFlODFhYjQxMGNiZWE3YwotLS0gL2Rldi9u
dWxsCisrKyBiL1Rvb2xzL2d0ay9nZW5lcmF0ZS1ndGtkb2MKQEAgLTAsMCArMSwxNDYgQEAKKyMh
L3Vzci9iaW4vZW52IHB5dGhvbgorIyBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KKyMK
KyMgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorIyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdl
bmVyYWwgUHVibGljCisjIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgorIyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorIyBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2Vy
IEdlbmVyYWwgUHVibGljCisjIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5v
dCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyMgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisK
K2ltcG9ydCBnbG9iCitpbXBvcnQgZ3RrZG9jCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IG9zLnBh
dGgKK2ltcG9ydCBzdWJwcm9jZXNzCitpbXBvcnQgc3lzCisKK3NjcmlwdF9kaXIgPSBOb25lCiti
dWlsZF9kaXIgPSBOb25lCisKK2RlZiBjb25maWd1cmVfbG9nZ2luZygpOgorICAgIGxldmVsID0g
bG9nZ2luZy5ERUJVRyBpZiAnLXYnIGluIHN5cy5hcmd2IGVsc2UgbG9nZ2luZy5JTkZPCisgICAg
bG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoJ2d0a2RvYycpCisgICAgbG9nZ2VyLnNldExldmVs
KGxldmVsKQorICAgIGhhbmRsZXIgPSBsb2dnaW5nLlN0cmVhbUhhbmRsZXIoKQorICAgIGhhbmRs
ZXIuc2V0TGV2ZWwobGV2ZWwpCisgICAgbG9nZ2VyLmFkZEhhbmRsZXIoaGFuZGxlcikKKyAgICBp
ZiBsZXZlbCA9PSBsb2dnaW5nLkRFQlVHOgorICAgICAgICBoYW5kbGVyLnNldEZvcm1hdHRlcihs
b2dnaW5nLkZvcm1hdHRlcignWyUoYXNjdGltZSlzXSAgJShtZXNzYWdlKXMnKSkKKyAgICBlbHNl
OgorICAgICAgICBoYW5kbGVyLnNldEZvcm1hdHRlcihsb2dnaW5nLkZvcm1hdHRlcignJShtZXNz
YWdlKXMnKSkKKworZGVmIHNjcmlwdF9wYXRoKCphcmdzKToKKyAgICBnbG9iYWwgc2NyaXB0X2Rp
cgorICAgIGlmIG5vdCBzY3JpcHRfZGlyOgorICAgICAgICBzY3JpcHRfZGlyID0gb3MucGF0aC5q
b2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICcuLicsICdTY3JpcHRzJykKKyAgICByZXR1
cm4gb3MucGF0aC5qb2luKCooc2NyaXB0X2RpciwpICsgYXJncykKKworZGVmIHRvcF9sZXZlbF9w
YXRoKCphcmdzKToKKyAgICByZXR1cm4gb3MucGF0aC5qb2luKCooKHNjcmlwdF9wYXRoKCcuLics
ICcuLicpLCkgKyBhcmdzKSkKKworZGVmIGdldF9idWlsZF9wYXRoKCk6CisgICAgZ2xvYmFsIGJ1
aWxkX2RpcgorICAgIGlmIGJ1aWxkX2RpcjoKKyAgICAgICAgcmV0dXJuIGJ1aWxkX2RpcgorCisg
ICAgZGVmIGlzX3ZhbGlkX2J1aWxkX2RpcmVjdG9yeShwYXRoKToKKyAgICAgICAgcmV0dXJuIG9z
LnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihwYXRoLCAnLmxpYnMnKSkKKworICAgIHByb2Nlc3Mg
PSBzdWJwcm9jZXNzLlBvcGVuKFsncGVybCcsIHNjcmlwdF9wYXRoKCd3ZWJraXQtYnVpbGQtZGly
ZWN0b3J5JyksICctLWNvbmZpZ3VyYXRpb24nLCAnZ3RrJ10sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkKKyAgICBidWlsZF9kaXIgPSBwcm9j
ZXNzLmNvbW11bmljYXRlKClbMF0uc3RyaXAoKQorICAgIHByaW50IGJ1aWxkX2RpcgorCisgICAg
aWYgaXNfdmFsaWRfYnVpbGRfZGlyZWN0b3J5KGJ1aWxkX2Rpcik6CisgICAgICAgIHJldHVybiBi
dWlsZF9kaXIKKyAgICBidWlsZF9kaXIgPSB0b3BfbGV2ZWxfcGF0aCgpCisgICAgaWYgaXNfdmFs
aWRfYnVpbGRfZGlyZWN0b3J5KGJ1aWxkX2Rpcik6CisgICAgICAgIHJldHVybiBidWlsZF9kaXIK
KworICAgIHByaW50ICdDb3VsZCBub3QgZGV0ZXJtaW5lIGJ1aWxkIGRpcmVjdG9yeS4nCisgICAg
c3lzLmV4aXQoMSkKKworZGVmIGJ1aWxkX3BhdGgoKmFyZ3MpOgorICAgIHJldHVybiBvcy5wYXRo
LmpvaW4oKihnZXRfYnVpbGRfcGF0aCgpLCkgKyBhcmdzKQorCitkZWYgZ2V0X2NvbW1vbl9vcHRp
b25zKCk6CisgICAgcmV0dXJuIHsKKyAgICAgICAgJ2RlY29yYXRvcic6ICdXRUJLSVRfQVBJJywK
KyAgICAgICAgJ2RlcHJlY2F0aW9uX2d1YXJkJzogJ1dFQktJVF9ESVNBQkxFX0RFUFJFQ0FURUQn
LAorICAgICAgICAnbGlicmFyeV9wYXRoJyA6IGJ1aWxkX3BhdGgoJy5saWJzJyksCisgICAgfQor
CitkZWYgZ2V0X3dlYmtpdDJfb3B0aW9ucygpOgorICAgIGRlZiBkZXJpdmVkX3NvdXJjZXNfcGF0
aCgqYXJncyk6CisgICAgICAgIHJldHVybiBidWlsZF9wYXRoKCooKCdEZXJpdmVkU291cmNlcycs
ICdXZWJLaXQyJykgKyBhcmdzKSkKKyAgICBkZWYgc3JjX3BhdGgoKmFyZ3MpOgorICAgICAgICBy
ZXR1cm4gdG9wX2xldmVsX3BhdGgoKigoJ1NvdXJjZScsICdXZWJLaXQyJywgJ1VJUHJvY2Vzcycs
ICdBUEknLCAnZ3RrJykgKyBhcmdzKSkKKworICAgIGRlcml2ZWRfc291cmNlcyA9IGJ1aWxkX3Bh
dGgoJ0Rlcml2ZWRTb3VyY2VzJywgJ1dlYktpdDInKQorICAgIG9wdGlvbnMgPSBnZXRfY29tbW9u
X29wdGlvbnMoKS5jb3B5KCkKKyAgICBvcHRpb25zLnVwZGF0ZSh7CisgICAgICAgICdtb2R1bGVf
bmFtZScgOiAnd2Via2l0Mmd0aycsCisgICAgICAgICdkb2NfZGlyJyA6IHNyY19wYXRoKCdkb2Nz
JyksCisgICAgICAgICdvdXRwdXRfZGlyJyA6IGJ1aWxkX3BhdGgoJ0RvY3VtZW50YXRpb24nLCAn
d2Via2l0Mmd0aycpLAorICAgICAgICAnc291cmNlX2RpcnMnIDogW3NyY19wYXRoKCldLAorICAg
ICAgICAnY2ZsYWdzJyA6ICcgLUknICsgZGVyaXZlZF9zb3VyY2VzX3BhdGgoJ3dlYmtpdDJndGsn
LCAnaW5jbHVkZScpICsgXAorICAgICAgICAgICAgICAgICAgICcgLUknICsgZGVyaXZlZF9zb3Vy
Y2VzX3BhdGgoJ3dlYmtpdDJndGsnKSArIFwKKyAgICAgICAgICAgICAgICAgICAnIC1JJyArIGRl
cml2ZWRfc291cmNlc19wYXRoKCdpbmNsdWRlJykgKyBcCisgICAgICAgICAgICAgICAgICAgJyAt
SScgKyB0b3BfbGV2ZWxfcGF0aCgnU291cmNlJykgKyBcCisgICAgICAgICAgICAgICAgICAgJyAt
SScgKyBzcmNfcGF0aCgpLAorICAgICAgICAnaWdub3JlZF9maWxlcyc6IGdsb2IuZ2xvYihzcmNf
cGF0aCgnKlByaXZhdGUuaCcpKSArIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iLmds
b2Ioc3JjX3BhdGgoJ1BhZ2VDbGllbnRJbXBsLionKSkgKyBcCisgICAgICAgICAgICAgICAgICAg
ICAgICAgZ2xvYi5nbG9iKHNyY19wYXRoKCd0ZXN0cy8qLmgnKSkKKyAgICB9KQorICAgIHJldHVy
biAoYnVpbGRfcGF0aCgnU291cmNlJywgJ1dlYktpdDInLCAnd2Via2l0Mmd0ay0zLjAucGMnKSwg
b3B0aW9ucykKKworZGVmIGdldF93ZWJraXQxX29wdGlvbnMoKToKKyAgICBkZWYgZGVyaXZlZF9z
b3VyY2VzX3BhdGgoKmFyZ3MpOgorICAgICAgICByZXR1cm4gYnVpbGRfcGF0aCgqKCgnRGVyaXZl
ZFNvdXJjZXMnLCAnV2ViS2l0MicpICsgYXJncykpCisgICAgZGVmIHNyY19wYXRoKCphcmdzKToK
KyAgICAgICAgcmV0dXJuIHRvcF9sZXZlbF9wYXRoKCooKCdTb3VyY2UnLCAnV2ViS2l0JywgJ2d0
aycpICsgYXJncykpCisKKyAgICBkZXJpdmVkX3NvdXJjZXMgPSBidWlsZF9wYXRoKCdEZXJpdmVk
U291cmNlcycsICdXZWJLaXQyJykKKyAgICBvcHRpb25zID0gZ2V0X2NvbW1vbl9vcHRpb25zKCku
Y29weSgpCisgICAgb3B0aW9ucy51cGRhdGUoeworICAgICAgICAnbW9kdWxlX25hbWUnIDogJ3dl
YmtpdGd0aycsCisgICAgICAgICdkb2NfZGlyJyA6IHNyY19wYXRoKCdkb2NzJyksCisgICAgICAg
ICdvdXRwdXRfZGlyJyA6IGJ1aWxkX3BhdGgoJ0RvY3VtZW50YXRpb24nLCAnd2Via2l0Z3RrJyks
CisgICAgICAgICdzb3VyY2VfZGlycycgOiBbc3JjX3BhdGgoJ3dlYmtpdCcpLCBidWlsZF9wYXRo
KCdTb3VyY2UnLCAnV2ViS2l0JywgJ2d0aycsICd3ZWJraXQnKV0sCisgICAgICAgICdjZmxhZ3Mn
IDogJyAtSScgKyBidWlsZF9wYXRoKCdXZWJLaXQnLCAnZ3RrJykgKyBcCisgICAgICAgICAgICAg
ICAgICAgJyAtSScgKyBidWlsZF9wYXRoKCdEZXJpdmVkU291cmNlcycpICsgXAorICAgICAgICAg
ICAgICAgICAgICcgLUknICsgc3JjX3BhdGgoKSArIFwKKyAgICAgICAgICAgICAgICAgICAnIC1J
JyArIHRvcF9sZXZlbF9wYXRoKCdTb3VyY2UnKSArIFwKKyAgICAgICAgICAgICAgICAgICAnIC1J
JyArIHRvcF9sZXZlbF9wYXRoKCdTb3VyY2UnLCAnSmF2YVNjcmlwdENvcmUnLCAnRm9yd2FyZGlu
Z0hlYWRlcnMnKSwKKyAgICAgICAgJ2lnbm9yZWRfZmlsZXMnOiBnbG9iLmdsb2Ioc3JjX3BhdGgo
J3dlYmtpdCcsICcqcHJpdmF0ZS4qJykpCisgICAgfSkKKyAgICByZXR1cm4gKGJ1aWxkX3BhdGgo
J1NvdXJjZScsICdXZWJLaXQnLCAnZ3RrJywgJ3dlYmtpdGd0ay0zLjAucGMnKSwgb3B0aW9ucykK
KworY29uZmlndXJlX2xvZ2dpbmcoKQorCisjIFdlIG5lZWQgdG8gYWRkIHRoZSBKYXZhU2NyaXB0
Q29yZSBidWlsZCBkaXJlY3RvcnkgdG8gdGhlIFBLR19DT05GSUdfUEFUSAorIyBzbyB0aGF0IHBr
Z2NvbmZpZyBjYW4gcHJvcGVybHkgcmVzb2x2ZSB0aGUgbGliamF2YXNjcmlwdGNvcmUgZGVwZW5k
ZW5jeS4KK29zLmVudmlyb25bJ1BLR19DT05GSUdfUEFUSCddID0gYnVpbGRfcGF0aCgnU291cmNl
JywgJ0phdmFTY3JpcHRDb3JlJykgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAr
ICc6JyArIG9zLmVudmlyb25bJ1BLR19DT05GSUdfUEFUSCddCisKK3ByaW50ICJHZW5lcmF0aW5n
IFdlYktpdDEgZG9jdW1lbnRhdGlvbi4uLiIKK3BrZ19jb25maWdfcGF0aCwgb3B0aW9ucyA9IGdl
dF93ZWJraXQxX29wdGlvbnMoKQorZ2VuZXJhdG9yID0gZ3RrZG9jLlBrZ0NvbmZpZ0dUS0RvYyhw
a2dfY29uZmlnX3BhdGgsICoqb3B0aW9ucykKK2dlbmVyYXRvci5nZW5lcmF0ZShodG1sPSctLXNr
aXAtaHRtbCcgbm90IGluIHN5cy5hcmd2KQorCisjIFdlYktpdDIgbWlnaHQgbm90IGJlIGVuYWJs
ZWQsIHNvIGNoZWNrIGZvciB0aGUgcGtnLWNvbmZpZyBmaWxlIGJlZm9yZSBidWlsZGluZyBkb2N1
bWVudGF0aW9uLgoraWYgb3MucGF0aC5leGlzdHMoYnVpbGRfcGF0aCgnU291cmNlJywgJ1dlYktp
dDInLCAnd2Via2l0Mmd0ay0zLjAucGMnKSk6CisgICAgcHJpbnQgIlxuR2VuZXJhdGluZyBXZWJL
aXQyIGRvY3VtZW50YXRpb24uLi4iCisgICAgcGtnX2NvbmZpZ19wYXRoLCBvcHRpb25zID0gZ2V0
X3dlYmtpdDJfb3B0aW9ucygpCisgICAgZ2VuZXJhdG9yID0gZ3RrZG9jLlBrZ0NvbmZpZ0dUS0Rv
Yyhwa2dfY29uZmlnX3BhdGgsICoqb3B0aW9ucykKKyAgICBnZW5lcmF0b3IuZ2VuZXJhdGUoaHRt
bD0nLS1za2lwLWh0bWwnIG5vdCBpbiBzeXMuYXJndikKKworc3lzLmV4aXQoZ2VuZXJhdG9yLnNh
d193YXJuaW5ncykKZGlmZiAtLWdpdCBhL1Rvb2xzL2d0ay9ndGtkb2MucHkgYi9Ub29scy9ndGsv
Z3RrZG9jLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBiY2FmNGVjNzc1NTJjYjU1YTc3ZDJjOThhYjgxN2ZjNGE1
N2MwNjQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9ndGsvZ3RrZG9jLnB5CkBAIC0wLDAgKzEs
MzcyIEBACisjIENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgorIworIyBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisjIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK
KyMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisjIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisjIExl
c3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMKKyMgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0
aGUgRnJlZSBTb2Z0d2FyZQorIyBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKworaW1wb3J0IGVycm5v
CitpbXBvcnQgbG9nZ2luZworaW1wb3J0IG9zCitpbXBvcnQgb3MucGF0aAoraW1wb3J0IHN1YnBy
b2Nlc3MKK2ltcG9ydCBzeXMKKworCitjbGFzcyBHVEtEb2Mob2JqZWN0KToKKworICAgICIiIkNs
YXNzIHRoYXQgY29udHJvbHMgYSBndGtkb2MgcnVuLgorCisgICAgRWFjaCBpbnN0YW5jZSBvZiB0
aGlzIGNsYXNzIHJlcHJlc2VudHMgb25lIGd0a2RvYyBjb25maWd1cmF0aW9uCisgICAgYW5kIHNl
dCBvZiBkb2N1bWVudGF0aW9uLiBUaGUgZ3RrZG9jIHBhY2thZ2UgaXMgYSBzZXJpZXMgb2YgdG9v
bHMKKyAgICBydW4gY29uc2VjdXRpdmVseSB3aGljaCBjb252ZXJ0cyBpbmxpbmUgQy9DKysgZG9j
dW1lbnRhdGlvbiBpbnRvCisgICAgZG9jYm9vayBmaWxlcyBhbmQgdGhlbiBpbnRvIEhUTUwuIFRo
aXMgY2xhc3MgaXMgc3VpdGFibGUgZm9yCisgICAgZ2VuZXJhdGluZyBkb2N1bWVudGF0aW9uIG9y
IHNpbXBseSB2ZXJpZnlpbmcgY29ycmVjdG5lc3MuCisKKyAgICBLZXl3b3JkIGFyZ3VtZW50czoK
KyAgICBvdXRwdXRfZGlyICAgICAgICAgLS0gVGhlIHBhdGggd2hlcmUgZ3RrZG9jIG91dHB1dCBz
aG91bGQgYmUgcGxhY2VkLiBHZW5lcmF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgIG1h
eSBvdmVyd3JpdGUgZmlsZSBpbiB0aGlzIGRpcmVjdG9yeS4gUmVxdWlyZWQuCisgICAgbW9kdWxl
X25hbWUgICAgICAgIC0tIFRoZSBuYW1lIG9mIHRoZSBkb2N1bWVudGF0aW9uIG1vZHVsZS4gRm9y
IGxpYnJhcmllcyB0aGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHR5cGljYWxseSB0
aGUgbGlicmFyeSBuYW1lLiBSZXF1aXJlZCBpZiBub3QgbGlicmFyeSBwYXRoCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlzIGdpdmVuLgorICAgIHNvdXJjZV9kaXJzICAgICAgICAtLSBBIGxp
c3Qgb2YgcGF0aHMgdG8gdGhlIHNvdXJjZSBjb2RlIHRvIGJlIHNjYW5uZWQuIFJlcXVpcmVkLgor
ICAgIGlnbm9yZWRfZmlsZXMgICAgICAtLSBBIGxpc3Qgb2YgZmlsZW5hbWVzIHRvIGlnbm9yZSBp
biB0aGUgc291cmNlIGRpcmVjdG9yeS4gSXQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
b25seSBuZWNlc3NhcnkgdG8gcHJvdmlkZSB0aGUgYmFzZW5hbWVzIG9mIHRoZXNlIGZpbGVzLgor
ICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBpY2FsbHkgaXQgaXMgaW1wb3J0YW50IHRvIHBy
b3ZpZGUgYW4gdXBkYXRlZCBsaXN0IG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9y
ZWQgZmlsZXMgdG8gcHJldmVudCB3YXJuaW5ncyBhYm91dCB1bmRvY3VtZW50ZWQgc3ltYm9scy4K
KyAgICBkZWNvcmF0b3IgICAgICAgICAgLS0gSWYgYSBkZWNvcmF0b3IgaXMgdXNlZCB0byB1bmhp
ZGUgY2VydGFpbiBzeW1ib2xzIGluIGhlYWRlcgorICAgICAgICAgICAgICAgICAgICAgICAgICBm
aWxlcyB0aGlzIHBhcmFtZXRlciBpcyByZXF1aXJlZCBmb3Igc3VjY2Vzc2Z1bCBzY2FubmluZy4K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlZmF1bHQgJycpCisgICAgZGVwcmVjYXRpb25f
Z3VhcmQgIC0tIGd0a2RvYyB0cmllcyB0byBlbnN1cmUgdGhhdCBzeW1ib2xzIG1hcmtlZCBhcyBk
ZXByZWNhdGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZSBlbmNhc2VkIGluIHRoaXMg
QyBwcmVwcm9jZXNzb3IgZGVmaW5lLiBUaGlzIGlzIHJlcXVpcmVkCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRvIGF2b2lkIGd0a2RvYyB3YXJuaW5ncy4gKGRlZmF1bHQgJycpCisgICAgY2Zs
YWdzICAgICAgICAgICAgIC0tIFRoaXMgcGFyYW1ldGVyIHNwZWNpZmllcyBhbnkgcHJlcHJvY2Vz
c29yIGZsYWdzIG5lY2Vzc2FyeSBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRp
bmcgdGhlIHNjYW5uZXIgYmluYXJ5IGR1cmluZyBndGtkb2Mtc2Nhbm9iai4gVHlwaWNhbGx5Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgaW5jbHVkZXMgYWxsIGFic29sdXRlIGluY2x1
ZGUgcGF0aHMgbmVjZXNzYXJ5IHRvIHJlc29sdmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
YWxsIGhlYWRlciBkZXBlbmRlbmNpZXMuIChkZWZhdWx0ICcnKQorICAgIGxkZmxhZ3MgICAgICAg
ICAgICAtLSBUaGlzIHBhcmFtZXRlciBzcGVjaWZpZXMgYW55IGxpbmtlciBmbGFncyBuZWNlc3Nh
cnkgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkaW5nIHRoZSBzY2FubmVyIGJp
bmFyeSBkdXJpbmcgZ3RrZG9jLXNjYW5vYmouIFR5cGljYWxseQorICAgICAgICAgICAgICAgICAg
ICAgICAgICB0aGlzIGluY2x1ZGVzICItbHlvdXJsaWJyYXJ5bmFtZSIuIChkZWZhdWx0ICcnKQor
ICAgIGxpYnJhcnlfcGF0aCAgICAgICAtLSBUaGlzIHBhcmFtZXRlciBzcGVjaWZpZXMgdGhlIHBh
dGggdG8gdGhlIGRpcmVjdG9yeSB3aGVyZSB5b3UKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
bGlicmFyeSByZXNpZGVzIHVzZWQgZm9yIGJ1aWxkaW5nIHRoZSBzY2FubmVyIGJpbmFyeSBkdXJp
bmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZ3RrZG9jLXNjYW5vYmouIChkZWZhdWx0ICcn
KQorCisgICAgZG9jX2RpciAgICAgICAgICAgIC0tIFRoZSBwYXRoIHRvIG90aGVyIGRvY3VtZW50
YXRpb24gZmlsZXMgbmVjZXNzYXJ5IHRvIGJ1aWxkCisgICAgICAgICAgICAgICAgICAgICAgICAg
IHRoZSBkb2N1bWVudGF0aW9uLiBUaGlzIGZpbGVzIGluIHRoaXMgZGlyZWN0b3J5IGFzIHdlbGwg
YXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZpbGVzIGluIHRoZSAnaHRtbCcgc3Vi
ZGlyZWN0b3J5IHdpbGwgYmUgY29waWVkCisgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3Vy
c2l2ZWx5IGludG8gdGhlIG91dHB1dCBkaXJlY3RvcnkuIChkZWZhdWx0ICcnKQorICAgIG1haW5f
c2dtbF9maWxlICAgICAtLSBUaGUgcGF0aCBvciBuYW1lIChpZiBhIGRvY19kaXIgaXMgZ2l2ZW4p
IG9mIHRoZSBTR01MIGZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBpcyB0aGUg
Y29uc2lkZXJlZCB0aGUgbWFpbiBwYWdlIG9mIHlvdXIgZG9jdW1lbnRhdGlvbi4KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgKGRlZmF1bHQ6IDxtb2R1bGVfbmFtZT4tZG9jcy5zZ21sKQorICAg
IHZlcnNpb24gICAgICAgICAgICAtLSBUaGUgdmVyc2lvbiBudW1iZXIgb2YgdGhlIG1vZHVsZS4g
SWYgdGhpcyBpcyBwcm92aWRlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYSB2ZXJzaW9u
LnhtbCBmaWxlIGNvbnRhaW5pbmcgdGhlIHZlcnNpb24gd2lsbCBiZSBjcmVhdGVkCisgICAgICAg
ICAgICAgICAgICAgICAgICAgIGluIHRoZSBvdXRwdXQgZGlyZWN0b3J5IGR1cmluZyBkb2N1bWVu
dGF0aW9uIGdlbmVyYXRpb24uCisKKyAgICBpbnRlcmFjdGl2ZSAgICAgICAgLS0gV2hldGhlciBv
ciBub3QgZXJyb3JzIG9yIHdhcm5pbmdzIHNob3VsZCBwcm9tcHQgdGhlIHVzZXIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgdG8gY29udGludWUgb3Igbm90LiBXaGVuIHRoaXMgdmFsdWUgaXMg
ZmFsc2UsIGdlbmVyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgd2lsbCBjb250aW51
ZSBkZXNwaXRlIHdhcm5pbmdzLiAoZGVmYXVsdCBGYWxzZSkKKyAgICAiIiIKKworICAgIGRlZiBf
X2luaXRfXyhzZWxmLCAqKmFyZ3MpOgorCisgICAgICAgICMgUGFyYW1ldGVycyBzcGVjaWZpYyB0
byBzY2FubmluZy4KKyAgICAgICAgc2VsZi5tb2R1bGVfbmFtZSA9ICcnCisgICAgICAgIHNlbGYu
c291cmNlX2RpcnMgPSBbXQorICAgICAgICBzZWxmLmlnbm9yZWRfZmlsZXMgPSBbXQorICAgICAg
ICBzZWxmLmRlY29yYXRvciA9ICcnCisgICAgICAgIHNlbGYuZGVwcmVjYXRpb25fZ3VhcmQgPSAn
JworCisgICAgICAgICMgUGFyYW1ldGVycyBzcGVjaWZpYyB0byBndGtkb2Mtc2Nhbm9iai4KKyAg
ICAgICAgc2VsZi5jZmxhZ3MgPSAnJworICAgICAgICBzZWxmLmxkZmxhZ3MgPSAnJworICAgICAg
ICBzZWxmLmxpYnJhcnlfcGF0aCA9ICcnCisKKyAgICAgICAgIyBQYXJhbWV0ZXJzIHNwZWNpZmlj
IHRvIGdlbmVyYXRpb24uCisgICAgICAgIHNlbGYub3V0cHV0X2RpciA9ICcnCisgICAgICAgIHNl
bGYuZG9jX2RpciA9ICcnCisgICAgICAgIHNlbGYubWFpbl9zZ21sX2ZpbGUgPSAnJworCisgICAg
ICAgIHNlbGYuaW50ZXJhY3RpdmUgPSBGYWxzZQorCisgICAgICAgIHNlbGYubG9nZ2VyID0gbG9n
Z2luZy5nZXRMb2dnZXIoJ2d0a2RvYycpCisKKyAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gYXJn
cy5pdGVyaXRlbXMoKToKKyAgICAgICAgICAgIHNldGF0dHIoc2VsZiwga2V5LCB2YWx1ZSkKKwor
ICAgICAgICBkZWYgcmFpc2VfZXJyb3JfaWZfbm90X3NwZWNpZmllZChrZXkpOgorICAgICAgICAg
ICAgaWYgbm90IGdldGF0dHIoc2VsZiwga2V5KToKKyAgICAgICAgICAgICAgICByYWlzZSBFeGNl
cHRpb24oJyVzIG5vdCBzcGVjaWZpZWQuJyAlIGtleSkKKworICAgICAgICByYWlzZV9lcnJvcl9p
Zl9ub3Rfc3BlY2lmaWVkKCdvdXRwdXRfZGlyJykKKyAgICAgICAgcmFpc2VfZXJyb3JfaWZfbm90
X3NwZWNpZmllZCgnc291cmNlX2RpcnMnKQorICAgICAgICByYWlzZV9lcnJvcl9pZl9ub3Rfc3Bl
Y2lmaWVkKCdtb2R1bGVfbmFtZScpCisKKyAgICAgICAgIyBNYWtlIGFsbCBwYXRocyBhYnNvbHV0
ZSBpbiBjYXNlIHdlIHdlcmUgcGFzc2VkIHJlbGF0aXZlIHBhdGhzLCBzaW5jZQorICAgICAgICAj
IHdlIGNoYW5nZSB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSB3aGVuIGV4ZWN1dGluZyBz
dWJjb21tYW5kcy4KKyAgICAgICAgc2VsZi5vdXRwdXRfZGlyID0gb3MucGF0aC5hYnNwYXRoKHNl
bGYub3V0cHV0X2RpcikKKyAgICAgICAgc2VsZi5zb3VyY2VfZGlycyA9IFtvcy5wYXRoLmFic3Bh
dGgoeCkgZm9yIHggaW4gc2VsZi5zb3VyY2VfZGlyc10KKyAgICAgICAgaWYgc2VsZi5saWJyYXJ5
X3BhdGg6CisgICAgICAgICAgICBzZWxmLmxpYnJhcnlfcGF0aCA9IG9zLnBhdGguYWJzcGF0aChz
ZWxmLmxpYnJhcnlfcGF0aCkKKworICAgICAgICBpZiBub3Qgc2VsZi5tYWluX3NnbWxfZmlsZToK
KyAgICAgICAgICAgIHNlbGYubWFpbl9zZ21sX2ZpbGUgPSBzZWxmLm1vZHVsZV9uYW1lICsgIi1k
b2NzLnNnbWwiCisKKyAgICBkZWYgZ2VuZXJhdGUoc2VsZiwgaHRtbD1UcnVlKToKKyAgICAgICAg
c2VsZi5zYXdfd2FybmluZ3MgPSBGYWxzZQorCisgICAgICAgIHNlbGYuX2NvcHlfZG9jX2ZpbGVz
X3RvX291dHB1dF9kaXIoaHRtbCkKKyAgICAgICAgc2VsZi5fd3JpdGVfdmVyc2lvbl94bWwoKQor
ICAgICAgICBzZWxmLl9ydW5fZ3RrZG9jX3NjYW4oKQorICAgICAgICBzZWxmLl9ydW5fZ3RrZG9j
X3NjYW5nb2JqKCkKKyAgICAgICAgc2VsZi5fcnVuX2d0a2RvY19ta3RtcGwoKQorICAgICAgICBz
ZWxmLl9ydW5fZ3RrZG9jX21rZGIoKQorCisgICAgICAgIGlmIG5vdCBodG1sOgorICAgICAgICAg
ICAgcmV0dXJuCisKKyAgICAgICAgc2VsZi5fcnVuX2d0a2RvY19ta2h0bWwoKQorICAgICAgICBz
ZWxmLl9ydW5fZ3RrZG9jX2ZpeHhyZWYoKQorCisgICAgZGVmIF9kZWxldGVfZmlsZV9pZl9leGlz
dHMoc2VsZiwgcGF0aCk6CisgICAgICAgIGlmIG5vdCBvcy5hY2Nlc3MocGF0aCwgb3MuRl9PSyB8
IG9zLlJfT0spOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVn
KCdkZWxldGluZyAlcycsIHBhdGgpCisgICAgICAgIG9zLnVubGluayhwYXRoKQorCisgICAgZGVm
IF9jcmVhdGVfZGlyZWN0b3J5X2lmX25vbmV4aXN0ZW50KHNlbGYsIHBhdGgpOgorICAgICAgICB0
cnk6CisgICAgICAgICAgICBvcy5tYWtlZGlycyhwYXRoKQorICAgICAgICBleGNlcHQgT1NFcnJv
ciBhcyBlcnJvcjoKKyAgICAgICAgICAgIGlmIGVycm9yLmVycm5vICE9IGVycm5vLkVFWElTVDoK
KyAgICAgICAgICAgICAgICByYWlzZQorCisgICAgZGVmIF9yYWlzZV9leGNlcHRpb25faWZfZmls
ZV9pbmFjY2Vzc2libGUoc2VsZiwgcGF0aCk6CisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0
cyhwYXRoKSBvciBub3Qgb3MuYWNjZXNzKHBhdGgsIG9zLlJfT0spOgorICAgICAgICAgICAgcmFp
c2UgRXhjZXB0aW9uKCJDb3VsZCBub3QgYWNjZXNzIGZpbGUgYXQ6ICVzIiAlIHBhdGgpCisKKyAg
ICBkZWYgX291dHB1dF9oYXNfd2FybmluZ3Moc2VsZiwgb3V0cHV0cyk6CisgICAgICAgIGZvciBv
dXRwdXQgaW4gb3V0cHV0czoKKyAgICAgICAgICAgIGlmIG91dHB1dCBhbmQgb3V0cHV0LmZpbmQo
J3dhcm5pbmcnKToKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICByZXR1cm4g
RmFsc2UKKworICAgIGRlZiBfYXNrX3llc19vcl9ub19xdWVzdGlvbihzZWxmLCBxdWVzdGlvbik6
CisgICAgICAgIGlmIG5vdCBzZWxmLmludGVyYWN0aXZlOgorICAgICAgICAgICAgcmV0dXJuIFRy
dWUKKworICAgICAgICBxdWVzdGlvbiArPSAnIFt5L05dICcKKyAgICAgICAgYW5zd2VyID0gTm9u
ZQorICAgICAgICB3aGlsZSBhbnN3ZXIgIT0gJ3knIGFuZCBhbnN3ZXIgIT0gJ24nIGFuZCBhbnN3
ZXIgIT0gJyc6CisgICAgICAgICAgICBhbnN3ZXIgPSByYXdfaW5wdXQocXVlc3Rpb24pLmxvd2Vy
KCkKKyAgICAgICAgcmV0dXJuIGFuc3dlciA9PSAneScKKworICAgIGRlZiBfcnVuX2NvbW1hbmQo
c2VsZiwgYXJncywgZW52PU5vbmUsIGN3ZD1Ob25lLCBwcmludF9vdXRwdXQ9VHJ1ZSk6CisgICAg
ICAgIGlmIHByaW50X291dHB1dDoKKyAgICAgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oIlJ1bm5p
bmcgJXMiLCBhcmdzWzBdKQorICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiRnVsbCBjb21tYW5k
IGFyZ3M6ICVzIiwgc3RyKGFyZ3MpKQorCisgICAgICAgIHByb2Nlc3MgPSBzdWJwcm9jZXNzLlBv
cGVuKGFyZ3MsIGVudj1lbnYsIGN3ZD1jd2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpCisgICAgICAgIHN0ZG91dCwgc3RkZXJy
ID0gcHJvY2Vzcy5jb21tdW5pY2F0ZSgpCisKKyAgICAgICAgaWYgcHJpbnRfb3V0cHV0OgorICAg
ICAgICAgICAgaWYgc3Rkb3V0OgorICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoc3Rk
b3V0KQorICAgICAgICAgICAgaWYgc3RkZXJyOgorICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIu
d3JpdGUoc3RkZXJyKQorCisgICAgICAgIGlmIHByb2Nlc3MucmV0dXJuY29kZSAhPSAwOgorICAg
ICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCclcyBwcm9kdWNlZCBhIG5vbi16ZXJvIHJldHVybiBj
b2RlICVpJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChhcmdzWzBdLCBwcm9jZXNz
LnJldHVybmNvZGUpKQorCisgICAgICAgIGlmICd3YXJuaW5nJyBpbiBzdGRlcnIgb3IgJ3dhcm5p
bmcnIGluIHN0ZG91dDoKKyAgICAgICAgICAgIHNlbGYuc2F3X3dhcm5pbmdzID0gVHJ1ZQorICAg
ICAgICAgICAgaWYgbm90IHNlbGYuX2Fza195ZXNfb3Jfbm9fcXVlc3Rpb24oJyVzIHByb2R1Y2Vk
IHdhcm5pbmdzLCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAndHJ5IHRvIGNvbnRpbnVlPycgJSBhcmdzWzBdKToKKyAgICAgICAgICAgICAgICByYWlz
ZSBFeGNlcHRpb24oJyVzIHN0ZXAgZmFpbGVkJyAlIGFyZ3NbMF0pCisKKyAgICAgICAgcmV0dXJu
IHN0ZG91dC5zdHJpcCgpCisKKyAgICBkZWYgX2NvcHlfZG9jX2ZpbGVzX3RvX291dHB1dF9kaXIo
c2VsZiwgaHRtbD1UcnVlKToKKyAgICAgICAgaWYgbm90IHNlbGYuZG9jX2RpcjoKKyAgICAgICAg
ICAgIHNlbGYubG9nZ2VyLmluZm8oJ05vdCBjb3B5aW5nIGFueSBmaWxlcyBmcm9tIGRvYyBkaXJl
Y3RvcnksJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIGJlY2F1c2Ugbm8gZG9jIGRp
cmVjdG9yeSBnaXZlbi4nKQorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgZGVmIGNvcHlf
ZmlsZV9yZXBsYWNpbmdfZXhpc3Rpbmcoc3JjLCBkZXN0KToKKyAgICAgICAgICAgIGlmIG9zLnBh
dGguaXNkaXIoc3JjKToKKyAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1Zygnc2tpcHBl
ZCBkaXJlY3RvcnkgJXMnLCAgc3JjKQorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAg
ICAgaWYgbm90IG9zLmFjY2VzcyhzcmMsIG9zLkZfT0sgfCBvcy5SX09LKToKKyAgICAgICAgICAg
ICAgICBzZWxmLmxvZ2dlci5kZWJ1Zygnc2tpcHBlZCB1bnJlYWRhYmxlICVzJywgc3JjKQorICAg
ICAgICAgICAgICAgIHJldHVybgorCisgICAgICAgICAgICBzZWxmLl9kZWxldGVfZmlsZV9pZl9l
eGlzdHMoZGVzdCkKKworICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoJ2NyZWF0ZWQgJXMn
LCBkZXN0KQorICAgICAgICAgICAgb3MubGluayhzcmMsIGRlc3QpCisKKyAgICAgICAgZGVmIGNv
cHlfYWxsX2ZpbGVzX2luX2RpcmVjdG9yeShzcmMsIGRlc3QpOgorICAgICAgICAgICAgZm9yIHBh
dGggaW4gb3MubGlzdGRpcihzcmMpOgorICAgICAgICAgICAgICAgIGNvcHlfZmlsZV9yZXBsYWNp
bmdfZXhpc3Rpbmcob3MucGF0aC5qb2luKHNyYywgcGF0aCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oZGVzdCwgcGF0aCkpCisKKyAg
ICAgICAgc2VsZi5sb2dnZXIuaW5mbygnQ29weWluZyB0ZW1wbGF0ZSBmaWxlcyB0byBvdXRwdXQg
ZGlyZWN0b3J5Li4uJykKKyAgICAgICAgc2VsZi5fY3JlYXRlX2RpcmVjdG9yeV9pZl9ub25leGlz
dGVudChzZWxmLm91dHB1dF9kaXIpCisgICAgICAgIGNvcHlfYWxsX2ZpbGVzX2luX2RpcmVjdG9y
eShzZWxmLmRvY19kaXIsIHNlbGYub3V0cHV0X2RpcikKKworICAgICAgICBpZiBub3QgaHRtbDoK
KyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oJ0NvcHlpbmcg
SFRNTCBmaWxlcyB0byBvdXRwdXQgZGlyZWN0b3J5Li4uJykKKyAgICAgICAgaHRtbF9zcmNfZGly
ID0gb3MucGF0aC5qb2luKHNlbGYuZG9jX2RpciwgJ2h0bWwnKQorICAgICAgICBodG1sX2Rlc3Rf
ZGlyID0gb3MucGF0aC5qb2luKHNlbGYub3V0cHV0X2RpciwgJ2h0bWwnKQorICAgICAgICBzZWxm
Ll9jcmVhdGVfZGlyZWN0b3J5X2lmX25vbmV4aXN0ZW50KGh0bWxfZGVzdF9kaXIpCisKKyAgICAg
ICAgaWYgb3MucGF0aC5leGlzdHMoaHRtbF9zcmNfZGlyKToKKyAgICAgICAgICAgIGNvcHlfYWxs
X2ZpbGVzX2luX2RpcmVjdG9yeShodG1sX3NyY19kaXIsIGh0bWxfZGVzdF9kaXIpCisKKyAgICBk
ZWYgX3dyaXRlX3ZlcnNpb25feG1sKHNlbGYpOgorICAgICAgICBpZiBub3Qgc2VsZi52ZXJzaW9u
OgorICAgICAgICAgICAgc2VsZi5sb2dnZXIuaW5mbygnTm8gdmVyc2lvbiBzcGVjaWZpZWQsIHNv
IG5vdCB3cml0aW5nIHZlcnNpb24ueG1sJykKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAg
IHZlcnNpb25feG1sX3BhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi5vdXRwdXRfZGlyLCAndmVyc2lv
bi54bWwnKQorICAgICAgICBzcmNfdmVyc2lvbl94bWxfcGF0aCA9IG9zLnBhdGguam9pbihzZWxm
LmRvY19kaXIsICd2ZXJzaW9uLnhtbCcpCisKKyAgICAgICAgIyBEb24ndCBvdmVyd3JpdGUgdmVy
c2lvbi54bWwgaWYgaXQgd2FzIGluIHRoZSBkb2MgZGlyZWN0b3J5LgorICAgICAgICBpZiBvcy5w
YXRoLmV4aXN0cyh2ZXJzaW9uX3htbF9wYXRoKSBhbmQgXAorICAgICAgICAgICBvcy5wYXRoLmV4
aXN0cyhzcmNfdmVyc2lvbl94bWxfcGF0aCk6CisgICAgICAgICAgICByZXR1cm4KKworICAgICAg
ICBvdXRwdXRfZmlsZSA9IG9wZW4odmVyc2lvbl94bWxfcGF0aCwgJ3cnKQorICAgICAgICBvdXRw
dXRfZmlsZS53cml0ZShzZWxmLnZlcnNpb24pCisgICAgICAgIG91dHB1dF9maWxlLmNsb3NlKCkK
KworICAgIGRlZiBfcnVuX2d0a2RvY19zY2FuKHNlbGYpOgorICAgICAgICBhcmdzID0gWydndGtk
b2Mtc2NhbicsCisgICAgICAgICAgICAgICAgJy0tbW9kdWxlPSVzJyAlIHNlbGYubW9kdWxlX25h
bWUsCisgICAgICAgICAgICAgICAgJy0tcmVidWlsZC10eXBlcyddCisKKyAgICAgICAgIyBFYWNo
IHNvdXJjZSBkaXJlY3Rvcnkgc2hvdWxkIGJlIGhhdmUgaXRzIG93biAiLS1zb3VyY2UtZGlyPSIg
cHJlZml4LgorICAgICAgICBhcmdzLmV4dGVuZChbJy0tc291cmNlLWRpcj0lcycgJSBwYXRoIGZv
ciBwYXRoIGluIHNlbGYuc291cmNlX2RpcnNdKQorCisgICAgICAgIGlmIHNlbGYuZGVjb3JhdG9y
OgorICAgICAgICAgICAgYXJncy5hcHBlbmQoJy0taWdub3JlLWRlY29yYXRvcnM9JXMnICUgc2Vs
Zi5kZWNvcmF0b3IpCisgICAgICAgIGlmIHNlbGYuZGVwcmVjYXRpb25fZ3VhcmQ6CisgICAgICAg
ICAgICBhcmdzLmFwcGVuZCgnLS1kZXByZWNhdGVkLWd1YXJkcz0lcycgJSBzZWxmLmRlcHJlY2F0
aW9uX2d1YXJkKQorICAgICAgICBpZiBzZWxmLm91dHB1dF9kaXI6CisgICAgICAgICAgICBhcmdz
LmFwcGVuZCgnLS1vdXRwdXQtZGlyPSVzJyAlIHNlbGYub3V0cHV0X2RpcikKKworICAgICAgICAj
IGd0a2RvYy1zY2FuIHdhbnRzIHRoZSBiYXNlbmFtZXMgb2YgaWdub3JlZCBoZWFkZXJzLCBzbyBz
dHJpcCB0aGUKKyAgICAgICAgIyBkaXJuYW1lLiBEaWZmZXJlbnQgZnJvbSAiLS1zb3VyY2UtZGly
IiwgdGhlIGhlYWRlcnMgc2hvdWxkIGJlCisgICAgICAgICMgc3BlY2lmaWVkIGFzIG9uZSBsb25n
IHN0cmluZy4KKyAgICAgICAgaWYgc2VsZi5pZ25vcmVkX2ZpbGVzOgorICAgICAgICAgICAgaWdu
b3JlZF9maWxlc19iYXNlbmFtZXMgPSBcCisgICAgICAgICAgICAgICAgW29zLnBhdGguYmFzZW5h
bWUoeCkgZm9yIHggaW4gc2VsZi5pZ25vcmVkX2ZpbGVzXQorICAgICAgICAgICAgYXJncy5hcHBl
bmQoJy0taWdub3JlLWhlYWRlcnM9JXMnICUgJyAnLmpvaW4oaWdub3JlZF9maWxlc19iYXNlbmFt
ZXMpKQorCisgICAgICAgIHNlbGYuX3J1bl9jb21tYW5kKGFyZ3MpCisKKyAgICBkZWYgX3J1bl9n
dGtkb2Nfc2NhbmdvYmooc2VsZik6CisgICAgICAgIGVudiA9IG9zLmVudmlyb24KKyAgICAgICAg
bGRmbGFncyA9IHNlbGYubGRmbGFncworICAgICAgICBpZiBzZWxmLmxpYnJhcnlfcGF0aDoKKyAg
ICAgICAgICAgIGxkZmxhZ3MgPSAnICItTCVzIiAnICUgc2VsZi5saWJyYXJ5X3BhdGggKyBsZGZs
YWdzCisgICAgICAgICAgICBlbnZbJ1JVTiddID0gJ0xEX0xJQlJBUllfUEFUSD0iJXMiICcgJSBz
ZWxmLmxpYnJhcnlfcGF0aAorICAgICAgICBpZiBsZGZsYWdzOgorICAgICAgICAgICAgZW52WydM
REZMQUdTJ10gPSBsZGZsYWdzCisgICAgICAgIGlmIHNlbGYuY2ZsYWdzOgorICAgICAgICAgICAg
ZW52WydDRkxBR1MnXSA9IHNlbGYuY2ZsYWdzCisKKyAgICAgICAgaWYgJ0NGTEFHUycgaW4gZW52
OgorICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoJ0NGTEFHUz0lcycsIGVudlsnQ0ZMQUdT
J10pCisgICAgICAgIGlmICdMREZMQUdTJyBpbiBlbnY6CisgICAgICAgICAgICBzZWxmLmxvZ2dl
ci5kZWJ1ZygnTERGTEFHUyAlcycsIGVudlsnTERGTEFHUyddKQorICAgICAgICBpZiAnUlVOJyBp
biBlbnY6CisgICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygnUlVOPSVzJywgZW52WydSVU4n
XSkKKyAgICAgICAgc2VsZi5fcnVuX2NvbW1hbmQoWydndGtkb2Mtc2NhbmdvYmonLCAnLS1tb2R1
bGU9JXMnICUgc2VsZi5tb2R1bGVfbmFtZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGVu
dj1lbnYsIGN3ZD1zZWxmLm91dHB1dF9kaXIpCisKKyAgICBkZWYgX3J1bl9ndGtkb2NfbWt0bXBs
KHNlbGYpOgorICAgICAgICBhcmdzID0gWydndGtkb2MtbWt0bXBsJywgJy0tbW9kdWxlPSVzJyAl
IHNlbGYubW9kdWxlX25hbWVdCisgICAgICAgIHNlbGYuX3J1bl9jb21tYW5kKGFyZ3MsIGN3ZD1z
ZWxmLm91dHB1dF9kaXIpCisKKyAgICBkZWYgX3J1bl9ndGtkb2NfbWtkYihzZWxmKToKKyAgICAg
ICAgc2dtbF9maWxlID0gb3MucGF0aC5qb2luKHNlbGYub3V0cHV0X2Rpciwgc2VsZi5tYWluX3Nn
bWxfZmlsZSkKKyAgICAgICAgc2VsZi5fcmFpc2VfZXhjZXB0aW9uX2lmX2ZpbGVfaW5hY2Nlc3Np
YmxlKHNnbWxfZmlsZSkKKworICAgICAgICBhcmdzID0gWydndGtkb2MtbWtkYicsCisgICAgICAg
ICAgICAgICAgJy0tbW9kdWxlPSVzJyAlIHNlbGYubW9kdWxlX25hbWUsCisgICAgICAgICAgICAg
ICAgJy0tbWFpbi1zZ21sLWZpbGU9JXMnICUgc2dtbF9maWxlLAorICAgICAgICAgICAgICAgICct
LXNvdXJjZS1zdWZmaXhlcz1oLGMsY3BwLGNjJywKKyAgICAgICAgICAgICAgICAnLS1vdXRwdXQt
Zm9ybWF0PXhtbCcsCisgICAgICAgICAgICAgICAgJy0tc2dtbC1tb2RlJ10KKworICAgICAgICAj
IEVhY2ggZGlyZWN0b3J5IHNob3VsZCBiZSBoYXZlIGl0cyBvd24gIi0tc291cmNlLWRpcj0iIHBy
ZWZpeC4KKyAgICAgICAgYXJncy5leHRlbmQoWyctLXNvdXJjZS1kaXI9JXMnICUgcGF0aCBmb3Ig
cGF0aCBpbiBzZWxmLnNvdXJjZV9kaXJzXSkKKyAgICAgICAgc2VsZi5fcnVuX2NvbW1hbmQoYXJn
cywgY3dkPXNlbGYub3V0cHV0X2RpcikKKworICAgIGRlZiBfcnVuX2d0a2RvY19ta2h0bWwoc2Vs
Zik6CisgICAgICAgIGh0bWxfZGVzdF9kaXIgPSBvcy5wYXRoLmpvaW4oc2VsZi5vdXRwdXRfZGly
LCAnaHRtbCcpCisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZGlyKGh0bWxfZGVzdF9kaXIpOgor
ICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCIlcyBpcyBub3QgYSBkaXJlY3RvcnksIGNvdWxk
IG5vdCBnZW5lcmF0ZSBIVE1MIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgaHRtbF9k
ZXN0X2RpcikKKyAgICAgICAgZWxpZiBub3Qgb3MuYWNjZXNzKGh0bWxfZGVzdF9kaXIsIG9zLlhf
T0sgfCBvcy5SX09LIHwgb3MuV19PSyk6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIkNv
dWxkIG5vdCBhY2Nlc3MgJXMgdG8gZ2VuZXJhdGUgSFRNTCIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAlIGh0bWxfZGVzdF9kaXIpCisKKyAgICAgICAgIyBndGtkb2MtbWtodG1sIGV4cGVj
dHMgdGhlIFNHTUwgcGF0aCB0byBiZSBhYnNvbHV0ZS4KKyAgICAgICAgc2dtbF9maWxlID0gb3Mu
cGF0aC5qb2luKG9zLnBhdGguYWJzcGF0aChzZWxmLm91dHB1dF9kaXIpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2VsZi5tYWluX3NnbWxfZmlsZSkKKyAgICAgICAgc2VsZi5f
cmFpc2VfZXhjZXB0aW9uX2lmX2ZpbGVfaW5hY2Nlc3NpYmxlKHNnbWxfZmlsZSkKKworICAgICAg
ICBzZWxmLl9ydW5fY29tbWFuZChbJ2d0a2RvYy1ta2h0bWwnLCBzZWxmLm1vZHVsZV9uYW1lLCBz
Z21sX2ZpbGVdLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjd2Q9aHRtbF9kZXN0X2RpcikK
KworICAgIGRlZiBfcnVuX2d0a2RvY19maXh4cmVmKHNlbGYpOgorICAgICAgICBzZWxmLl9ydW5f
Y29tbWFuZChbJ2d0a2RvYy1maXh4cmVmJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICct
LW1vZHVsZS1kaXI9aHRtbCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1odG1sLWRp
cj1odG1sJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGN3ZD1zZWxmLm91dHB1dF9kaXIp
CisKKworY2xhc3MgUGtnQ29uZmlnR1RLRG9jKEdUS0RvYyk6CisKKyAgICAiIiJDbGFzcyByZWFk
cyBhIGxpYnJhcnkncyBwa2djb25maWcgZmlsZSB0byBndWVzcyBndGtkb2MgcGFyYW1ldGVycy4K
KworICAgIFNvbWUgZ3RrZG9jIHBhcmFtZXRlcnMgY2FuIGJlIGd1ZXNzZWQgYnkgcmVhZGluZyBh
IGxpYnJhcnkncyBwa2djb25maWcKKyAgICBmaWxlLCBpbmNsdWRpbmcgdGhlIGNmbGFncywgbGRm
bGFncyBhbmQgdmVyc2lvbiBwYXJhbWV0ZXJzLiBJZiB5b3UKKyAgICBwcm92aWRlIHRoZXNlIHBh
cmFtZXRlcnMgYXMgd2VsbCwgdGhleSB3aWxsIGJlIGFwcGVuZGVkIHRvIHRoZSBvbmVzCisgICAg
Z3Vlc3NlZCB2aWEgdGhlIHBrZ2NvbmZpZyBmaWxlLgorCisgICAgS2V5d29yZCBhcmd1bWVudHM6
CisgICAgICBwa2dfY29uZmlnX3BhdGggLS0gUGF0aCB0byB0aGUgcGtnY29uZmlnIGZpbGUgZm9y
IHRoZSBsaWJyYXJ5LiBSZXF1aXJlZC4KKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBwa2dfY29uZmlnX3BhdGgsICoqYXJncyk6CisgICAgICAgIHN1cGVyKFBrZ0NvbmZpZ0dUS0Rv
Yywgc2VsZikuX19pbml0X18oKiphcmdzKQorCisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0
cyhwa2dfY29uZmlnX3BhdGgpOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdDb3VsZCBu
b3QgZmluZCBwa2ctY29uZmlnIGZpbGUgYXQ6ICVzJworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICUgcGtnX2NvbmZpZ19wYXRoKQorCisgICAgICAgIHNlbGYuY2ZsYWdzICs9ICIgIiArIHNl
bGYuX3J1bl9jb21tYW5kKFsncGtnLWNvbmZpZycsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwa2dfY29uZmlnX3BhdGgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1jZmxhZ3MnXSwgcHJpbnRfb3V0cHV0
PUZhbHNlKQorICAgICAgICBzZWxmLmxkZmxhZ3MgKz0gIiAiICsgc2VsZi5fcnVuX2NvbW1hbmQo
Wydwa2ctY29uZmlnJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHBrZ19jb25maWdfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICctLWxpYnMnXSwgcHJpbnRfb3V0cHV0PUZhbHNlKQorICAgICAgICBz
ZWxmLnZlcnNpb24gPSBzZWxmLl9ydW5fY29tbWFuZChbJ3BrZy1jb25maWcnLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGtnX2NvbmZpZ19wYXRoLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tbW9kdmVyc2lvbiddLCBwcmlu
dF9vdXRwdXQ9RmFsc2UpCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXgg
N2RmNTlkMTBmM2Y5ZTk0YWVkY2E4OWI0OTIyNmE1MmJmZWU1NzJjNS4uNGNmOWMyOWU4MWQ3ZTNi
ODUxNzIzMTUyODgxNTE1NzA4YzM0ODcyMyAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDExLTExLTE3ICBNYXJ0aW4gUm9iaW5zb24gIDxt
cm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBJbnRlZ3JhdGUgYnVpbGQtZ3Rr
ZG9jIGludG8gYnVpbGQtd2Via2l0IGFuZCBtYWtlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjYyNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06IFJlbW92ZSByZWZlcmVuY2Vz
IHRvIG9sZCBndGtkb2MgZmlsZXMuIFVwZGF0ZQorICAgICAgICB0aGUgZGlzdC1ob29rIHRvIGlu
Y2x1ZGUgY29weWluZyBkb2N1bWVudGF0aW9uIGludG8gdGhlIGRpc3RyaWJ1dGlvbi4KKyAgICAg
ICAgVGhpcyBhbHNvIG1lYW5zIHRoYXQgdGhlIGJ1aWxkIHdpbGwgZmFpbCBpZiBkb2N1bWVudGF0
aW9uIGhhc24ndCBiZWVuCisgICAgICAgIGdlbmVyYXRlZCBiZWZvcmUgJ21ha2UgZGlzdC4nCisg
ICAgICAgICogY29uZmlndXJlLmFjOiBEaXR0by4KKwogMjAxMS0xMS0yMyAgUmFwaGFlbCBLdWJv
IGRhIENvc3RhICA8a3Vib0Bwcm9mdXNpb24ubW9iaT4KIAogICAgICAgICBbQ01ha2VdIE1vdmUg
dGhlIHRvcC1sZXZlbCBsb2dpYyB0byB0aGUgdG9wLWxldmVsIGRpcmVjdG9yeS4KZGlmZiAtLWdp
dCBhL0dOVW1ha2VmaWxlLmFtIGIvR05VbWFrZWZpbGUuYW0KaW5kZXggZjkxZTg4ZDg5NmMxMTVj
NGFhM2QzYjk3ZDFhOGVkMTY2NTU1YzU5Ni4uNWU4Zjg2NTRiOGYyMjZiZTM4YTA2ZmMzNjc1ZmFj
NTRlMDcxOGVjNiAxMDA2NDQKLS0tIGEvR05VbWFrZWZpbGUuYW0KKysrIGIvR05VbWFrZWZpbGUu
YW0KQEAgLTIwNyw3ICsyMDcsNiBAQCBpbmNsdWRlIFNvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2Vm
aWxlLmFtCiBpbmNsdWRlIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR05VbWFrZWZp
bGUuYW0KIGluY2x1ZGUgVG9vbHMvR05VbWFrZWZpbGUuYW0KIGluY2x1ZGUgU291cmNlL1dlYktp
dC9ndGsvcG8vR05VbWFrZWZpbGUuYW0KLWluY2x1ZGUgU291cmNlL1dlYktpdC9ndGsvZG9jcy9H
TlVtYWtlZmlsZS5hbQogaW5jbHVkZSBUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvR05VbWFrZWZp
bGUuSW1hZ2VEaWZmLmFtCiAKIGlmIEVOQUJMRV9XRUJLSVQyCkBAIC0yNjUsMyArMjY0LDE2IEBA
IGNsZWFuLWxvY2FsOgogbWFpbnRhaW5lci1jbGVhbi1sb2NhbDogZGlzdGNsZWFuLWxvY2FsCiBk
aXN0Y2xlYW4tbG9jYWw6CiAJLXJtIC1yZiAkKEdFTlNPVVJDRVMpICQoR0VOUFJPR1JBTVMpCisK
K2Rpc3QtaG9vazoKKwljcCAkKFdlYktpdCkvTkVXUyAkKGRpc3RkaXIpCisJQG1rZGlyIC1wICQo
ZGlzdGRpcikvRG9jdW1lbnRhdGlvbi93ZWJraXRndGsvaHRtbAorCUBta2RpciAtcCAkKGRpc3Rk
aXIpL0RvY3VtZW50YXRpb24vd2Via2l0Z3RrL3RtcGwKKwlALWNwIC4vRG9jdW1lbnRhdGlvbi93
ZWJraXRndGsvdG1wbC8qLnNnbWwgJChkaXN0ZGlyKS9Eb2N1bWVudGF0aW9uL3dlYmtpdGd0ay90
bXBsCisJQGNwIC4vRG9jdW1lbnRhdGlvbi93ZWJraXRndGsvaHRtbC8qICQoZGlzdGRpcikvRG9j
dW1lbnRhdGlvbi93ZWJraXRndGsvaHRtbAoraWYgRU5BQkxFX1dFQktJVDIKKwlAbWtkaXIgLXAg
JChkaXN0ZGlyKS9Eb2N1bWVudGF0aW9uL3dlYmtpdDJndGsvaHRtbAorCUBta2RpciAtcCAkKGRp
c3RkaXIpL0RvY3VtZW50YXRpb24vd2Via2l0Mmd0ay90bXBsCisJQC1jcCAuL0RvY3VtZW50YXRp
b24vd2Via2l0Mmd0ay90bXBsLyouc2dtbCAkKGRpc3RkaXIpL0RvY3VtZW50YXRpb24vd2Via2l0
Mmd0ay90bXBsCisJQGNwIC4vRG9jdW1lbnRhdGlvbi93ZWJraXQyZ3RrL2h0bWwvKiAkKGRpc3Rk
aXIpL0RvY3VtZW50YXRpb24vd2Via2l0Mmd0ay9odG1sCitlbmRpZgpkaWZmIC0tZ2l0IGEvY29u
ZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCmluZGV4IGZhODM5NGMwZDE4OGRkMWE4MjVmMTNhNDg2
OTQ2YjNiNzVkNmZiMGQuLmZjY2MyYzFmMjJkNzY4MTg2ODIxOTBiMGVkOTJlNmYxMmIzZTY0ZWIg
MTAwNjQ0Ci0tLSBhL2NvbmZpZ3VyZS5hYworKysgYi9jb25maWd1cmUuYWMKQEAgLTEyMTAsNyAr
MTIxMCw2IEBAIEdOVW1ha2VmaWxlCiAKIEFDX0NPTkZJR19GSUxFUyhbCiBTb3VyY2UvV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0dmVyc2lvbi5oCi1Eb2N1bWVudGF0aW9uL3ZlcnNpb24ueG1sOlNv
dXJjZS9XZWJLaXQvZ3RrL2RvY3MvdmVyc2lvbi54bWwuaW4KIF0pCiAKIEFDX0NPTkZJR19GSUxF
UyhbCkBAIC0xMjQ2LDYgKzEyNDUsNyBAQCBCdWlsZCBjb25maWd1cmF0aW9uOgogIEZvbnQgYmFj
a2VuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJHdpdGhf
Zm9udF9iYWNrZW5kCiAgT3B0aW1pemVkIG1lbW9yeSBhbGxvY2F0b3IgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgOiAkZW5hYmxlX2Zhc3RfbWFsbG9jCiAgSmF2YVNjcmlwdCBFbmdpbmUg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAkd2l0aF9qc2VuZ2luZQor
CiBGZWF0dXJlczoKICAzRCBSZW5kZXJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA6ICRlbmFibGVfM2RfcmVuZGVyaW5nCiAgV2ViR0wgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAkZW5hYmxlX3dlYmdsCkBA
IC0xMzA1LDYgKzEzMDUsNyBAQCBHVEsrIGNvbmZpZ3VyYXRpb246CiAgR0RLIHRhcmdldCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAkd2l0aF90YXJnZXQK
ICBIaWxkb24gVUkgZXh0ZW5zaW9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA6ICR3aXRoX2hpbGRvbgogIEludHJvc3BlY3Rpb24gc3VwcG9ydCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDogJGVuYWJsZV9pbnRyb3NwZWN0aW9uCisgR2VuZXJhdGUgZG9j
dW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAkZW5hYmxlX2d0
a19kb2MKICIKIGlmIHRlc3QgIiR3aXRoX3VuaWNvZGVfYmFja2VuZCIgPSAiZ2xpYiI7IHRoZW4K
ICAgIGVjaG8gIiAgICAgPj4gV0FSTklORzogdGhlIGdsaWItYmFzZWQgdW5pY29kZSBiYWNrZW5k
IGlzIHNsb3cgYW5kIGluY29tcGxldGUgPDwiCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116493</attachid>
            <date>2011-11-24 03:09:18 -0800</date>
            <delta_ts>2011-11-24 04:45:50 -0800</delta_ts>
            <desc>Updated patch based on Carlos&apos; comments</desc>
            <filename>bug-72626-20111124120916.patch</filename>
            <type>text/plain</type>
            <size>64582</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxMDU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0
ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggZDlkMjhmOGRl
MTRmMjQ4ZjU4MjM1MmNjOGFkOTE4NDk0M2EyMTllZS4uNDM2Y2QxMmVmNzE3MmJmNThjMmY3YTgw
ZWY5NTM0MGY4NzUzYzg5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEx
LTExLTE3ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAg
ICBbR1RLXSBJbnRlZ3JhdGUgYnVpbGQtZ3RrZG9jIGludG8gYnVpbGQtd2Via2l0IGFuZCBtYWtl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjYyNgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZG9jcy9H
TlVtYWtlZmlsZS5hbTogUmVtb3ZlZC4KKyAgICAgICAgKiBkb2NzL3ZlcnNpb24ueG1sLmluOiBS
ZW1vdmVkLgorCiAyMDExLTExLTIzICBLYXVzdHViaCBBdHJhd2Fsa2FyICA8a2F1c3R1YmhAbW90
b3JvbGEuY29tPgogCiAgICAgICAgIERvY3VtZW50YXRpb24gZml4IGZvciBsb2FkLWNvbW1pdHRl
ZCBpbiB3ZWJraXR3ZWJmcmFtZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDhmZmNiMjI5NjY5YzYyMzllMWNjZDg3
ZTE3ZTUwNzIyMzhlZGVkMTAuLjQ2YTVkYjM4NGY1YmY4MWY1Nzg3ZTMzZDIyOTg0MWFjNmEwMDcx
YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0xMS0xNyAgTWFydGluIFJvYmlu
c29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gSW50ZWdyYXRlIGJ1
aWxkLWd0a2RvYyBpbnRvIGJ1aWxkLXdlYmtpdCBhbmQgbWFrZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzI2MjYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBSZW1vdmVkIHJl
ZmVyZW5jZXMgdG8gYnVpbGQtZ3RrZG9jIGFuZCBndGtkb2MucHkuCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9ndGsvZG9jcy9idWlsZC1ndGtkb2M6IFJlbW92ZWQuCisKIDIwMTEtMTEtMjMgIFJh
cGhhZWwgS3VibyBkYSBDb3N0YSAgPGt1Ym9AcHJvZnVzaW9uLm1vYmk+CiAKICAgICAgICAgW0NN
YWtlXSBNb3ZlIHRoZSB0b3AtbGV2ZWwgbG9naWMgdG8gdGhlIHRvcC1sZXZlbCBkaXJlY3Rvcnku
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9X
ZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtCmluZGV4IDc1MmM5ZTY1MTUyNWY5ZGMyMTA5ZDFiNjMx
OTA4YzYxOTQ2NzY1ZmIuLmUzNGI0NDIzNWNkZmRmNjdkOTE2ZWE3YTk2NmI5ZjI2YTE4MGNjNWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJj
ZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtCkBAIC0zODQsOCArMzg0LDEyIEBAIGdzZXR0aW5n
c19TQ0hFTUFTID0gJCh0b3BfYnVpbGRkaXIpL1NvdXJjZS9XZWJLaXQvZ3RrL29yZy53ZWJraXRn
dGstQFdFQktJVEdUS19BCiBFWFRSQV9ESVNUICs9IFwKIAkkKFdlYktpdCkvQ2hhbmdlTG9nIFwK
IAkkKFdlYktpdCkvTkVXUyBcCisJJChXZWJLaXQpL2RvY3Mvd2Via2l0Z3RrLWRvY3Muc2dtbCBc
CisJJChXZWJLaXQpL2RvY3Mvd2Via2l0Z3RrLXNlY3Rpb25zLnR4dCBcCisJJChXZWJLaXQpL2Rv
Y3Mvd2Via2l0Z3RrLnR5cGVzIFwKKwkkKFdlYktpdCkvZG9jcy93ZWJraXRlbnZpcm9ubWVudC54
bWwgXAorCSQoV2ViS2l0KS9kb2NzL3dlYmtpdGd0ay1vdmVycmlkZXMudHh0IFwKIAkkKFdlYktp
dCkvd2Via2l0bWFyc2hhbC5saXN0IFwKLQkkKFdlYktpdCkvR05VbWFrZWZpbGUuZ3RrLWRvYy5h
bSBcCiAJJChXZWJLaXQpL3BvLyogXAogCSQoV2ViS2l0KS9yZXNvdXJjZXMvKiBcCiAJJChXZWJL
aXQpL3Rlc3RzL3Jlc291cmNlcy8qIFwKQEAgLTU5Myw4ICs1OTcsNiBAQCBESVNUQ0xFQU5GSUxF
UyArPSBcCiAJJCh0b3BfYnVpbGRkaXIpL1NvdXJjZS9XZWJLaXQvZ3RrL29yZy53ZWJraXRndGst
QFdFQktJVEdUS19BUElfVkVSU0lPTkAuZ3NjaGVtYS54bWwgXAogCSQodG9wX2J1aWxkZGlyKS9T
b3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0dmVyc2lvbi5oCiAKLWRpc3QtaG9vazoKLQlj
cCAkKFdlYktpdCkvTkVXUyAkKGRpc3RkaXIpCiBpbnN0YWxsLWRhdGEtbG9jYWw6IHBvLWluc3Rh
bGwtZGF0YS1sb2NhbAogaW5zdGFsbGRpcnMtZGF0YS1sb2NhbDogcG8taW5zdGFsbGRpcnMtZGF0
YS1sb2NhbAogdW5pbnN0YWxsLWxvY2FsOiBwby11bmluc3RhbGwtbG9jYWwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmd0ay1kb2MuYW0gYi9Tb3VyY2UvV2ViS2l0
L2d0ay9HTlVtYWtlZmlsZS5ndGstZG9jLmFtCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwNTJjNzg4ZDljOWQzYzE1NDIyMmRlOWZlZTA0YWRmZWZjMThhYzIyLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1h
a2VmaWxlLmd0ay1kb2MuYW0KKysrIC9kZXYvbnVsbApAQCAtMSwyMDggKzAsMCBAQAotIyAtKi0g
bW9kZTogbWFrZWZpbGUgLSotCi0KLUdUS0RPQ19DQyA9ICQoTElCVE9PTCkgLS10YWc9Q0MgLS1t
b2RlPWNvbXBpbGUgJChDQykgJChHVEtET0NfSU5DTFVERVMpICQoR1RLRE9DX0RFUFNfQ0ZMQUdT
KSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKEFNX0NGTEFHUykgJChDRkxBR1MpCi1HVEtE
T0NfTEQgPSAkKExJQlRPT0wpIC0tdGFnPUNDIC0tbW9kZT1saW5rICQoQ0MpICQoR1RLRE9DX0RF
UFNfTElCUykgJChBTV9DRkxBR1MpICQoQ0ZMQUdTKSAkKEFNX0xERkxBR1MpICQoTERGTEFHUykK
LUdUS0RPQ19SVU4gPSAkKExJQlRPT0wpIC0tbW9kZT1leGVjdXRlCi0KLVRBUkdFVF9ESVI9JChI
VE1MX0RJUikvJChET0NfTU9EVUxFKQotCi1TRVRVUF9GSUxFUyA9IFwKLQkkKERPQ19NQUlOX1NH
TUxfRklMRSkJCVwKLQl3ZWJraXRlbnZpcm9ubWVudC54bWwJCVwKLQkkKERPQ19NT0RVTEUpLXNl
Y3Rpb25zLnR4dAlcCi0JJChET0NfTU9EVUxFKS1vdmVycmlkZXMudHh0Ci0KLUVYVFJBX0RJU1Qg
Kz0gXAotCSQoSFRNTF9JTUFHRVMpCQkJXAotCSQoU0VUVVBfRklMRVMpCi0KLURPQ19TVEFNUFM9
ZG9jLXNldHVwLWJ1aWxkLnN0YW1wIHNjYW4tYnVpbGQuc3RhbXAgdG1wbC1idWlsZC5zdGFtcCBz
Z21sLWJ1aWxkLnN0YW1wIFwKLQlodG1sLWJ1aWxkLnN0YW1wIHBkZi1idWlsZC5zdGFtcCBcCi0J
dG1wbC5zdGFtcCBzZ21sLnN0YW1wIGh0bWwuc3RhbXAgcGRmLnN0YW1wCi0KLVNDQU5PQkpfRklM
RVMgPSAJCSBcCi0JJChET0NfTU9EVUxFKS5hcmdzIAkgXAotCSQoRE9DX01PRFVMRSkuaGllcmFy
Y2h5ICBcCi0JJChET0NfTU9EVUxFKS5pbnRlcmZhY2VzIFwKLQkkKERPQ19NT0RVTEUpLnByZXJl
cXVpc2l0ZXMgXAotCSQoRE9DX01PRFVMRSkuc2lnbmFscwotCi1SRVBPUlRfRklMRVMgPSBcCi0J
JChET0NfTU9EVUxFKS11bmRvY3VtZW50ZWQudHh0IFwKLQkkKERPQ19NT0RVTEUpLXVuZGVjbGFy
ZWQudHh0IFwKLQkkKERPQ19NT0RVTEUpLXVudXNlZC50eHQKLQotQ0xFQU5GSUxFUyArPSAkKFND
QU5PQkpfRklMRVMpICQoUkVQT1JUX0ZJTEVTKSAkKERPQ19TVEFNUFMpCi0KLWlmIEVOQUJMRV9H
VEtfRE9DCi1IVE1MX0JVSUxEX1NUQU1QPWh0bWwtYnVpbGQuc3RhbXAKLWVuZGlmCi0KLWRvY19z
cmNkaXIgOj0gJChhYnNfc3JjZGlyKS9Tb3VyY2UvV2ViS2l0L2d0ay9kb2NzCi0KLWRvY3M6ICQo
SFRNTF9CVUlMRF9TVEFNUCkKLQotJChSRVBPUlRfRklMRVMpOiBzZ21sLWJ1aWxkLnN0YW1wCi0K
LSMjIyMgc2V0dXAgIyMjIwotCi1kb2Mtc2V0dXAtYnVpbGQuc3RhbXA6IGxpYndlYmtpdGd0ay1A
V0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQC5AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9O
QC5sYQotCS1AbWtkaXIgLXAgRG9jdW1lbnRhdGlvbgotCS1AbG4gLWZzIC4uL2RvbHRsaWJ0b29s
IERvY3VtZW50YXRpb24vCi0JLUBsbiAtZnMgLi4vZG9sdGNvbXBpbGUgRG9jdW1lbnRhdGlvbi8K
LQktQGxuIC1mcyAuLi9saWJ0b29sIERvY3VtZW50YXRpb24vCi0JLUBpZiB0ZXN0ICIkKGFic19z
cmNkaXIpIiAhPSAiJChhYnNfYnVpbGRkaXIpIiA7IHRoZW4gXAotCSAgICBlY2hvICcgIERPQyAg
IFByZXBhcmluZyBidWlsZCc7IFwKLQkgICAgZmlsZXM9YGVjaG8gJChTRVRVUF9GSUxFUykgJChE
T0NfTU9EVUxFKS50eXBlc2A7IFwKLQkgICAgaWYgdGVzdCAieCQkZmlsZXMiICE9ICJ4IiA7IHRo
ZW4gXAotCSAgICAgICAgZm9yIGZpbGUgaW4gJCRmaWxlcyA7IGRvIFwKLQkgICAgICAgICAgICB0
ZXN0IC1mICQoZG9jX3NyY2RpcikvJCRmaWxlICYmIFwKLQkgICAgICAgICAgICAgICAgY3AgLXB1
ICQoZG9jX3NyY2RpcikvJCRmaWxlICQoYWJzX2J1aWxkZGlyKS9Eb2N1bWVudGF0aW9uLyB8fCB0
cnVlOyBcCi0JICAgICAgICBkb25lOyBcCi0JICAgIGZpOyBcCi0JICAgIHRlc3QgLWQgJChkb2Nf
c3JjZGlyKS90bXBsICYmIFwKLQkgICAgICAgIHsgY3AgLXJwICQoZG9jX3NyY2RpcikvdG1wbCAk
KGFic19idWlsZGRpcikvRG9jdW1lbnRhdGlvbi87IFwKLQkgICAgICAgIGNobW9kIC1SIHUrdyAk
KGFic19idWlsZGRpcikvRG9jdW1lbnRhdGlvbi90bXBsOyB9IFwKLQlmaQotCUB0b3VjaCBkb2Mt
c2V0dXAtYnVpbGQuc3RhbXAKLQotIyMjIyBzY2FuICMjIyMKLQotc2Nhbi1idWlsZC5zdGFtcDog
ZG9jLXNldHVwLWJ1aWxkLnN0YW1wICQoSEZJTEVfR0xPQikgJChDRklMRV9HTE9CKQotCUBlY2hv
ICcgIERPQyAgIFNjYW5uaW5nIGhlYWRlciBmaWxlcycKLQlAY2QgRG9jdW1lbnRhdGlvbjsgX3Nv
dXJjZV9kaXI9JycgOyBcCi0JZm9yIGkgaW4gJChET0NfU09VUkNFX0RJUikgOyBkbyBcCi0JICAg
IF9zb3VyY2VfZGlyPSIkJHtfc291cmNlX2Rpcn0gLS1zb3VyY2UtZGlyPS4uLyQkaSIgOyBcCi0J
ZG9uZSA7IFwKLQlndGtkb2Mtc2NhbiAtLW1vZHVsZT0kKERPQ19NT0RVTEUpIC0taWdub3JlLWhl
YWRlcnM9IiQoSUdOT1JFX0hGSUxFUykiICQke19zb3VyY2VfZGlyfSAkKFNDQU5fT1BUSU9OUykg
JChFWFRSQV9IRklMRVMpCi0JQGNkIERvY3VtZW50YXRpb247IGlmIGdyZXAgLWwgJ14uLiokJCcg
JChET0NfTU9EVUxFKS50eXBlcyA+IC9kZXYvbnVsbCAyPiYxIDsgdGhlbiBcCi0JICAgIGVjaG8g
IiAgRE9DICAgSW50cm9zcGVjdGluZyBnb2JqZWN0cyI7IFwKLQkgICAgc2Nhbm9ial9vcHRpb25z
PSIiOyBcCi0JICAgIGd0a2RvYy1zY2FuZ29iaiAyPiYxIC0taGVscCB8IGdyZXAgID4vZGV2L251
bGwgIlwtXC12ZXJib3NlIjsgXAotCSAgICBpZiB0ZXN0ICIkKD8pIiA9ICIwIjsgdGhlbiBcCi0J
ICAgICAgICBpZiB0ZXN0ICJ4JChWKSIgPSAieDEiOyB0aGVuIFwKLQkgICAgICAgICAgICBzY2Fu
b2JqX29wdGlvbnM9Ii0tdmVyYm9zZSI7IFwKLQkgICAgICAgIGZpOyBcCi0JICAgIGZpOyBcCi0J
ICAgIENDPSIkKEdUS0RPQ19DQykiIExEPSIkKEdUS0RPQ19MRCkiIFJVTj0iJChHVEtET0NfUlVO
KSIgQ0ZMQUdTPSIkKEdUS0RPQ19DRkxBR1MpICQoQ0ZMQUdTKSIgTERGTEFHUz0iJChHVEtET0Nf
TElCUykgJChMREZMQUdTKSIgXAotCSAgICBndGtkb2Mtc2NhbmdvYmogJChTQ0FOR09CSl9PUFRJ
T05TKSAkJHNjYW5vYmpfb3B0aW9ucyAtLW1vZHVsZT0kKERPQ19NT0RVTEUpOyBcCi0JZWxzZSBc
Ci0JICAgIGZvciBpIGluICQoU0NBTk9CSl9GSUxFUykgOyBkbyBcCi0JICAgICAgICB0ZXN0IC1m
ICQkaSB8fCB0b3VjaCAkJGkgOyBcCi0JICAgIGRvbmUgXAotCWZpCi0JQHRvdWNoIHNjYW4tYnVp
bGQuc3RhbXAKLQotRG9jdW1lbnRhdGlvbi8kKERPQ19NT0RVTEUpLWRlY2wudHh0IERvY3VtZW50
YXRpb24vJChTQ0FOT0JKX0ZJTEVTKSBEb2N1bWVudGF0aW9uLyQoRE9DX01PRFVMRSktc2VjdGlv
bnMudHh0IERvY3VtZW50YXRpb24vJChET0NfTU9EVUxFKS1vdmVycmlkZXMudHh0OiBzY2FuLWJ1
aWxkLnN0YW1wCi0JQHRydWUKLQotIyMjIyB0ZW1wbGF0ZXMgIyMjIwotCi10bXBsLWJ1aWxkLnN0
YW1wOiBkb2Mtc2V0dXAtYnVpbGQuc3RhbXAgRG9jdW1lbnRhdGlvbi8kKERPQ19NT0RVTEUpLWRl
Y2wudHh0IERvY3VtZW50YXRpb24vJChTQ0FOT0JKX0ZJTEVTKSBEb2N1bWVudGF0aW9uLyQoRE9D
X01PRFVMRSktc2VjdGlvbnMudHh0IERvY3VtZW50YXRpb24vJChET0NfTU9EVUxFKS1vdmVycmlk
ZXMudHh0Ci0JQGVjaG8gJyAgRE9DICAgUmVidWlsZGluZyB0ZW1wbGF0ZSBmaWxlcycKLQlAY2Qg
RG9jdW1lbnRhdGlvbjsgZ3RrZG9jLW1rdG1wbCAtLW1vZHVsZT0kKERPQ19NT0RVTEUpICQoTUtU
TVBMX09QVElPTlMpCi0JQGlmIHRlc3QgIiQoYWJzX3NyY2RpcikiICE9ICIkKGFic19idWlsZGRp
cikiIDsgdGhlbiBcCi0JICBpZiB0ZXN0IC13ICQoYWJzX3NyY2RpcikgOyB0aGVuIFwKLQkgICAg
Y3AgLXJwICQoYWJzX2J1aWxkZGlyKS9Eb2N1bWVudGF0aW9uL3RtcGwgJChkb2Nfc3JjZGlyKTsg
XAotCSAgZmkgXAotCWZpCi0JQHRvdWNoIHRtcGwtYnVpbGQuc3RhbXAKLQotdG1wbC5zdGFtcDog
dG1wbC1idWlsZC5zdGFtcAotCUB0cnVlCi0KLSQoc3JjZGlyKS90bXBsLyouc2dtbDoKLQlAdHJ1
ZQotCi0jIyMjIHhtbCAjIyMjCi0KLXNnbWwtYnVpbGQuc3RhbXA6IGRvYy1zZXR1cC1idWlsZC5z
dGFtcCB0bXBsLnN0YW1wIERvY3VtZW50YXRpb24vJChET0NfTU9EVUxFKS1zZWN0aW9ucy50eHQg
JChzcmNkaXIpL3RtcGwvKi5zZ21sCi0JQGVjaG8gJyAgRE9DICAgQnVpbGRpbmcgWE1MJwotCUAt
Y2htb2QgLVIgdSt3ICQoc3JjZGlyKQotCUBjZCBEb2N1bWVudGF0aW9uOyBfc291cmNlX2Rpcj0n
JyA7IFwKLQlmb3IgaSBpbiAkKERPQ19TT1VSQ0VfRElSKSA7IGRvIFwKLQkgICAgX3NvdXJjZV9k
aXI9IiQke19zb3VyY2VfZGlyfSAtLXNvdXJjZS1kaXI9Li4vJCRpIiA7IFwKLQlkb25lIDsgXAot
CWd0a2RvYy1ta2RiIC0tbW9kdWxlPSQoRE9DX01PRFVMRSkgLS1vdXRwdXQtZm9ybWF0PXhtbCAt
LWV4cGFuZC1jb250ZW50LWZpbGVzPSIiIC0tbWFpbi1zZ21sLWZpbGU9JChET0NfTUFJTl9TR01M
X0ZJTEUpICQke19zb3VyY2VfZGlyfSAkKE1LREJfT1BUSU9OUykKLQlAdG91Y2ggc2dtbC1idWls
ZC5zdGFtcAotCi1zZ21sLnN0YW1wOiBzZ21sLWJ1aWxkLnN0YW1wCi0JQHRydWUKLQotIyMjIyBo
dG1sICMjIyMKLQotRG9jdW1lbnRhdGlvbi8kKERPQ19NQUlOX1NHTUxfRklMRSk6IHNnbWwuc3Rh
bXAKLURvY3VtZW50YXRpb24vd2Via2l0ZW52aXJvbm1lbnQueG1sOiBkb2Mtc2V0dXAtYnVpbGQu
c3RhbXAKLQotaHRtbC1idWlsZC5zdGFtcDogc2dtbC5zdGFtcCBEb2N1bWVudGF0aW9uLyQoRE9D
X01BSU5fU0dNTF9GSUxFKQotCUBlY2hvICcgIERPQyAgIEJ1aWxkaW5nIEhUTUwnCi0JQHJtIC1y
ZiBEb2N1bWVudGF0aW9uL2h0bWwKLQlAbWtkaXIgRG9jdW1lbnRhdGlvbi9odG1sCi0JQGNkIERv
Y3VtZW50YXRpb247IG1raHRtbF9vcHRpb25zPSIiOyBcCi0JZ3RrZG9jLW1raHRtbCAyPiYxIC0t
aGVscCB8IGdyZXAgID4vZGV2L251bGwgIlwtXC12ZXJib3NlIjsgXAotCWlmIHRlc3QgIiQoPyki
ID0gIjAiOyB0aGVuIFwKLQkgIGlmIHRlc3QgIngkKFYpIiA9ICJ4MSI7IHRoZW4gXAotCSAgICBt
a2h0bWxfb3B0aW9ucz0iJCRta2h0bWxfb3B0aW9ucyAtLXZlcmJvc2UiOyBcCi0JICBmaTsgXAot
CWZpOyBcCi0JZ3RrZG9jLW1raHRtbCAyPiYxIC0taGVscCB8IGdyZXAgID4vZGV2L251bGwgIlwt
XC1wYXRoIjsgXAotCWlmIHRlc3QgIiQoPykiID0gIjAiOyB0aGVuIFwKLQkgIG1raHRtbF9vcHRp
b25zPSIkJG1raHRtbF9vcHRpb25zIC0tcGF0aD1cIiQoZG9jX3NyY2RpcilcIiI7IFwKLQlmaTsg
XAotCWNkIGh0bWwgJiYgZ3RrZG9jLW1raHRtbCAkJG1raHRtbF9vcHRpb25zICQoTUtIVE1MX09Q
VElPTlMpICQoRE9DX01PRFVMRSkgLi4vJChET0NfTUFJTl9TR01MX0ZJTEUpCi0JLUB0ZXN0ICJ4
JChIVE1MX0lNQUdFUykiID0gIngiIHx8IFwKLQlmb3IgZmlsZSBpbiAkKEhUTUxfSU1BR0VTKSA7
IGRvIFwKLQkgIGlmIHRlc3QgLWYgJChhYnNfc3JjZGlyKS8kJGZpbGUgOyB0aGVuIFwKLQkgICAg
Y3AgJChhYnNfc3JjZGlyKS8kJGZpbGUgJChhYnNfYnVpbGRkaXIpL2h0bWw7IFwKLQkgIGZpOyBc
Ci0JICBpZiB0ZXN0IC1mICQoYWJzX2J1aWxkZGlyKS8kJGZpbGUgOyB0aGVuIFwKLQkgICAgY3Ag
JChhYnNfYnVpbGRkaXIpLyQkZmlsZSAkKGFic19idWlsZGRpcikvaHRtbDsgXAotCSAgZmk7IFwK
LQlkb25lOwotCUBlY2hvICcgIERPQyAgIEZpeGluZyBjcm9zcy1yZWZlcmVuY2VzJwotCUBjZCBE
b2N1bWVudGF0aW9uOyBndGtkb2MtZml4eHJlZiAtLW1vZHVsZT0kKERPQ19NT0RVTEUpIC0tbW9k
dWxlLWRpcj1odG1sIC0taHRtbC1kaXI9JChIVE1MX0RJUikgJChGSVhYUkVGX09QVElPTlMpCi0J
QHRvdWNoIGh0bWwtYnVpbGQuc3RhbXAKLQotY2xlYW4tbG9jYWw6IGRvYy1jbGVhbi1sb2NhbAot
Ci1kb2MtY2xlYW4tbG9jYWw6Ci0JQHJtIC1mIERvY3VtZW50YXRpb24vKn4gRG9jdW1lbnRhdGlv
bi8qLmJhawotCUBybSAtcmYgRG9jdW1lbnRhdGlvbi8ubGlicwotCi1kaXN0Y2xlYW4tbG9jYWw6
IGRvYy1kaXN0Y2xlYW4tbG9jYWwKLQotZG9jLWRpc3RjbGVhbi1sb2NhbDoKLQlAcm0gLXJmIERv
Y3VtZW50YXRpb24KLQotbWFpbnRhaW5lci1jbGVhbi1sb2NhbDogZG9jLW1haW50YWluZXItY2xl
YW4tbG9jYWwKLQotZG9jLW1haW50YWluZXItY2xlYW4tbG9jYWw6IGNsZWFuCi0JQHJtIC1yZiBE
b2N1bWVudGF0aW9uL3htbCBEb2N1bWVudGF0aW9uL2h0bWwKLQktQHJtZGlyIERvY3VtZW50YXRp
b24KLQotIwotIyBSZXF1aXJlIGd0ay1kb2Mgd2hlbiBtYWtpbmcgZGlzdAotIwotaWYgRU5BQkxF
X0dUS19ET0MKLWRpc3QtY2hlY2stZ3RrZG9jOgotCi1hbGw6IGRvY3MKLWVsc2UKLWRpc3QtY2hl
Y2stZ3RrZG9jOgotCUBlY2hvICIqKiogZ3RrLWRvYyBtdXN0IGJlIGluc3RhbGxlZCBhbmQgZW5h
YmxlZCBpbiBvcmRlciB0byBtYWtlIGRpc3QiCi0JQGZhbHNlCi1lbmRpZgotCi1kaXN0LWhvb2s6
IGRvYy1kaXN0LWhvb2sKLQotZG9jLWRpc3QtaG9vazogZGlzdC1jaGVjay1ndGtkb2MgZGlzdC1o
b29rLWxvY2FsCi0JQG1rZGlyIC1wICQoZGlzdGRpcikvJChET0NfTU9EVUxFKS90bXBsCi0JQG1r
ZGlyIC1wICQoZGlzdGRpcikvJChET0NfTU9EVUxFKS9odG1sCi0JQC1jcCAuL0RvY3VtZW50YXRp
b24vdG1wbC8qLnNnbWwgJChkaXN0ZGlyKS8kKERPQ19NT0RVTEUpL3RtcGwKLQlAY3AgLi9Eb2N1
bWVudGF0aW9uL2h0bWwvKiAkKGRpc3RkaXIpLyQoRE9DX01PRFVMRSkvaHRtbAotCUAtY3AgLi9E
b2N1bWVudGF0aW9uLyQoRE9DX01PRFVMRSkudHlwZXMgJChkaXN0ZGlyKS8KLQlALWNwIC4vRG9j
dW1lbnRhdGlvbi8kKERPQ19NT0RVTEUpLXNlY3Rpb25zLnR4dCAkKGRpc3RkaXIpLwotCUBjZCAk
KGRpc3RkaXIpICYmIHJtIC1mICQoRElTVENMRUFORklMRVMpCi0JQCQoR1RLRE9DX1JFQkFTRSkg
LS1vbmxpbmUgLS1yZWxhdGl2ZSAtLWh0bWwtZGlyPSQoZGlzdGRpcikvJChET0NfTU9EVUxFKS9o
dG1sCi0KLS5QSE9OWSA6IGRpc3QtaG9vay1sb2NhbCBkb2NzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2d0ay9kb2NzL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYktpdC9ndGsvZG9jcy9H
TlVtYWtlZmlsZS5hbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzhjNGIyMTJiYWI1
YWViZGQyOTBhYWUzN2EyNDNmMjU1YjliNDNiNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9kb2NzL0dOVW1ha2VmaWxlLmFt
CisrKyAvZGV2L251bGwKQEAgLTEsMTI4ICswLDAgQEAKLSMjIFByb2Nlc3MgdGhpcyBmaWxlIHdp
dGggYXV0b21ha2UgdG8gcHJvZHVjZSBHTlVtYWtlZmlsZS5pbgotCi0jIFRoaXMgaXMgYSBibGFu
ayBNYWtlZmlsZS5hbSBmb3IgdXNpbmcgZ3RrLWRvYy4KLSMgQ29weSB0aGlzIHRvIHlvdXIgcHJv
amVjdCdzIEFQSSBkb2NzIGRpcmVjdG9yeSBhbmQgbW9kaWZ5IHRoZSB2YXJpYWJsZXMgdG8KLSMg
c3VpdCB5b3VyIHByb2plY3QuIFNlZSB0aGUgR1RLKyBNYWtlZmlsZXMgaW4gZ3RrKy9kb2NzL3Jl
ZmVyZW5jZSBmb3IgZXhhbXBsZXMKLSMgb2YgdXNpbmcgdGhlIHZhcmlvdXMgb3B0aW9ucy4KLQot
IyBUaGUgbmFtZSBvZiB0aGUgbW9kdWxlLCBlLmcuICdnbGliJy4KLURPQ19NT0RVTEU9d2Via2l0
Z3RrCi0KLSMgVGhlIHRvcC1sZXZlbCBTR01MIGZpbGUuIFlvdSBjYW4gY2hhbmdlIHRoaXMgaWYg
eW91IHdhbnQgdG8uCi1ET0NfTUFJTl9TR01MX0ZJTEU9JChET0NfTU9EVUxFKS1kb2NzLnNnbWwK
LQotIyBUaGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIHNvdXJjZSBjb2RlLiBSZWxhdGl2ZSB0
byAkKHNyY2RpcikuCi0jIGd0ay1kb2Mgd2lsbCBzZWFyY2ggYWxsIC5jICYgLmggZmlsZXMgYmVu
ZWF0aCBoZXJlIGZvciBpbmxpbmUgY29tbWVudHMKLSMgZG9jdW1lbnRpbmcgdGhlIGZ1bmN0aW9u
cyBhbmQgbWFjcm9zLgotIyBlLmcuIERPQ19TT1VSQ0VfRElSPS4uLy4uLy4uL2d0awotRE9DX1NP
VVJDRV9ESVI9JCh0b3Bfc3JjZGlyKS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQKLQotIyBFeHRy
YSBvcHRpb25zIHRvIHBhc3MgdG8gZ3RrZG9jLXNjYW5nb2JqLiBOb3Qgbm9ybWFsbHkgbmVlZGVk
LgotU0NBTkdPQkpfT1BUSU9OUz0iLS10eXBlLWluaXQtZnVuYz1nX3R5cGVfaW5pdCgpIgotCi0j
IEV4dHJhIG9wdGlvbnMgdG8gc3VwcGx5IHRvIGd0a2RvYy1zY2FuLgotIyBlLmcuIFNDQU5fT1BU
SU9OUz0tLWRlcHJlY2F0ZWQtZ3VhcmRzPSJHVEtfRElTQUJMRV9ERVBSRUNBVEVEIgotU0NBTl9P
UFRJT05TPS0tZGVwcmVjYXRlZC1ndWFyZHM9IldFQktJVF9ESVNBQkxFX0RFUFJFQ0FURUQiIC0t
aWdub3JlLWRlY29yYXRvcnM9IldFQktJVF9BUEkiCi0KLSMgRXh0cmEgb3B0aW9ucyB0byBzdXBw
bHkgdG8gZ3RrZG9jLW1rZGIuCi0jIGUuZy4gTUtEQl9PUFRJT05TPS0tc2dtbC1tb2RlIC0tb3V0
cHV0LWZvcm1hdD14bWwKLU1LREJfT1BUSU9OUz0tLXNnbWwtbW9kZSAtLW91dHB1dC1mb3JtYXQ9
eG1sIC0tc291cmNlLXN1ZmZpeGVzPWgsYyxjcHAKLQotIyBFeHRyYSBvcHRpb25zIHRvIHN1cHBs
eSB0byBndGtkb2MtbWt0bXBsCi0jIGUuZy4gTUtUTVBMX09QVElPTlM9LS1vbmx5LXNlY3Rpb24t
dG1wbAotTUtUTVBMX09QVElPTlM9Ci0KLSMgRXh0cmEgb3B0aW9ucyB0byBzdXBwbHkgdG8gZ3Rr
ZG9jLWZpeHJlZi4gTm90IG5vcm1hbGx5IG5lZWRlZC4KLSMgZS5nLiBGSVhYUkVGX09QVElPTlM9
LS1leHRyYS1kaXI9Li4vZ2RrLXBpeGJ1Zi9odG1sIC0tZXh0cmEtZGlyPS4uL2dkay9odG1sCi1G
SVhYUkVGX09QVElPTlM9Ci0KLSMgVXNlZCBmb3IgZGVwZW5kZW5jaWVzLiBUaGUgZG9jcyB3aWxs
IGJlIHJlYnVpbHQgaWYgYW55IG9mIHRoZXNlIGNoYW5nZS4KLSMgZS5nLiBIRklMRV9HTE9CPSQo
dG9wX3NyY2RpcikvZ3RrLyouaAotIyBlLmcuIENGSUxFX0dMT0I9JCh0b3Bfc3JjZGlyKS9ndGsv
Ki5jCi1IRklMRV9HTE9CPSQodG9wX3NyY2RpcikvU291cmNlL1dlYktpdC9ndGsvd2Via2l0Lyou
aAotQ0ZJTEVfR0xPQj0kKHRvcF9zcmNkaXIpL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC8qLmNw
cAotCi0jIEhlYWRlciBmaWxlcyB0byBpZ25vcmUgd2hlbiBzY2FubmluZy4KLSMgZS5nLiBJR05P
UkVfSEZJTEVTPWd0a2RlYnVnLmggZ3RraW50bC5oCi1JR05PUkVfSEZJTEVTID0gXAotICAgd2Vi
a2l0ZG93bmxvYWRwcml2YXRlLmggXAotICAgd2Via2l0Z2VvbG9jYXRpb25wb2xpY3lkZWNpc2lv
bnByaXZhdGUuaCBcCi0gICB3ZWJraXRnbG9iYWxzcHJpdmF0ZS5oIFwKLSAgIHdlYmtpdGhpdHRl
c3RyZXN1bHRwcml2YXRlLmggXAotICAgd2Via2l0bmV0d29ya3JlcXVlc3Rwcml2YXRlLmggXAot
ICAgd2Via2l0bmV0d29ya3Jlc3BvbnNlcHJpdmF0ZS5oIFwKLSAgIHdlYmtpdHNlY3VyaXR5b3Jp
Z2lucHJpdmF0ZS5oIFwKLSAgIHdlYmtpdHZpZXdwb3J0YXR0cmlidXRlc3ByaXZhdGUuaCBcCi0g
ICB3ZWJraXR3ZWJiYWNrZm9yd2FyZGxpc3Rwcml2YXRlLmggXAotICAgd2Via2l0d2ViZGF0YXNv
dXJjZXByaXZhdGUuaCBcCi0gICB3ZWJraXR3ZWJmcmFtZXByaXZhdGUuaCBcCi0gICB3ZWJraXR3
ZWJoaXN0b3J5aXRlbXByaXZhdGUuaCBcCi0gICB3ZWJraXR3ZWJpbnNwZWN0b3Jwcml2YXRlLmgg
XAotICAgd2Via2l0d2VibmF2aWdhdGlvbmFjdGlvbnByaXZhdGUuaCBcCi0gICB3ZWJraXR3ZWJw
bHVnaW5kYXRhYmFzZXByaXZhdGUuaCBcCi0gICB3ZWJraXR3ZWJwbHVnaW5wcml2YXRlLmggXAot
ICAgd2Via2l0d2VicG9saWN5ZGVjaXNpb25wcml2YXRlLmggXAotICAgd2Via2l0d2VicmVzb3Vy
Y2Vwcml2YXRlLmggXAotICAgd2Via2l0d2Vic2V0dGluZ3Nwcml2YXRlLmggXAotICAgd2Via2l0
d2Vidmlld3ByaXZhdGUuaCBcCi0gICB3ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlc3ByaXZhdGUuaAot
Ci0jIEltYWdlcyB0byBjb3B5IGludG8gSFRNTCBkaXJlY3RvcnkuCi0jIGUuZy4gSFRNTF9JTUFH
RVM9JCh0b3Bfc3JjZGlyKS9ndGsvc3RvY2staWNvbnMvc3RvY2tfYWJvdXRfMjQucG5nCi1IVE1M
X0lNQUdFUz0KLQotIyBDRkxBR1MgYW5kIExERkxBR1MgZm9yIGNvbXBpbGluZyBndGtkb2Mtc2Nh
bmdvYmogd2l0aCB5b3VyIGxpYnJhcnkuCi0jIE9ubHkgbmVlZGVkIGlmIHlvdSBhcmUgdXNpbmcg
Z3RrZG9jLXNjYW5nb2JqIHRvIGR5bmFtaWNhbGx5IHF1ZXJ5IHdpZGdldAotIyBzaWduYWxzIGFu
ZCBwcm9wZXJ0aWVzLgotIyBlLmcuIElOQ0xVREVTPS1JJCh0b3Bfc3JjZGlyKSAtSSQodG9wX2J1
aWxkZGlyKSAkKEdUS19ERUJVR19GTEFHUykKLSMgZS5nLiBHVEtET0NfTElCUz0kKHRvcF9idWls
ZGRpcikvZ3RrLyQoZ3RrdGFyZ2V0bGliKQotR1RLRE9DX0lOQ0xVREVTPSBcCi0JLUkkKGFic19z
cmNkaXIpL1NvdXJjZS9XZWJLaXQvZ3RrIFwKLQktSSQoYWJzX2J1aWxkZGlyKS9Tb3VyY2UvV2Vi
S2l0L2d0ayBcCi0JJChnbG9iYWxfY3BwZmxhZ3MpIFwKLQkkKGdsb2JhbF9jZmxhZ3MpIFwKLQkt
SSQoYWJzX3NyY2RpcikvU291cmNlIFwKLQktSSQoYWJzX3NyY2RpcikvU291cmNlL0phdmFTY3Jp
cHRDb3JlIFwKLQktSSQoYWJzX3NyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL0ZvcndhcmRp
bmdIZWFkZXJzIFwKLQktSSQoYWJzX3NyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ciBcCi0JLUkkKGFic19zcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYgXAotCS1JJChh
YnNfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzIFwKLQktSSQoYWJzX3NyY2RpcikvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL2NhY2hlIFwKLQkkKEdMT0JBTERFUFNfQ0ZMQUdT
KSBcCi0JJChDQUlST19DRkxBR1MpIFwKLQkkKEdMSUJfQ0ZMQUdTKSBcCi0JJChHVEtfQ0ZMQUdT
KSBcCi0JJChMSUJTT1VQX0NGTEFHUykKLQotR1RLRE9DX0xJQlM9IFwKLQkkKGFic19idWlsZGRp
cikvbGliamF2YXNjcmlwdGNvcmVndGstQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkAuQFdF
QktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkAubGEgXAotCSQoYWJzX2J1aWxkZGlyKS9saWJ3ZWJr
aXRndGstQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkAuQFdFQktJVEdUS19BUElfTUlOT1Jf
VkVSU0lPTkAubGEgXAotCSQoR0xJQl9MSUJTKSBcCi0JJChHVEtfTElCUykgXAotCSQoTElCU09V
UF9MSUJTKQotCi0jIFRoaXMgaW5jbHVkZXMgb3VyIGN1c3RvbSBndGstZG9jIG1ha2UgcnVsZXMu
Ci1pbmNsdWRlICQodG9wX3NyY2RpcikvU291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZpbGUuZ3Rr
LWRvYy5hbQotCi0jIE90aGVyIGZpbGVzIHRvIGRpc3RyaWJ1dGUKLSMgZS5nLiBFWFRSQV9ESVNU
ICs9IHZlcnNpb24ueG1sLmluCi1FWFRSQV9ESVNUICs9IFwKLQkkKFdlYktpdCkvZG9jcy93ZWJr
aXRlbnZpcm9ubWVudC54bWwgXAotCSQoV2ViS2l0KS9kb2NzL3dlYmtpdGd0ay1kb2NzLnNnbWwg
XAotCSQoV2ViS2l0KS9kb2NzL3dlYmtpdGd0ay1zZWN0aW9ucy50eHQgXAotCSQoV2ViS2l0KS9k
b2NzL3ZlcnNpb24ueG1sLmluCi0KLSMgRmlsZXMgbm90IHRvIGRpc3RyaWJ1dGUKLSMgZm9yIC0t
cmVidWlsZC10eXBlcyBpbiAkKFNDQU5fT1BUSU9OUyksIGUuZy4gJChET0NfTU9EVUxFKS50eXBl
cwotIyBmb3IgLS1yZWJ1aWxkLXNlY3Rpb25zIGluICQoU0NBTl9PUFRJT05TKSBlLmcuICQoRE9D
X01PRFVMRSktc2VjdGlvbnMudHh0Ci1ESVNUQ0xFQU5GSUxFUyArPSBcCi0JJCh0b3BfYnVpbGRk
aXIpL1NvdXJjZS9XZWJLaXQvZ3RrL2RvY3MvdmVyc2lvbi54bWwgXAotCSQodG9wX2J1aWxkZGly
KS90bXBsLWJ1aWxkLnN0YW1wIFwKLQkkKHRvcF9idWlsZGRpcikvZG9jLXNldHVwLWJ1aWxkLnN0
YW1wIFwKLQkkKHRvcF9idWlsZGRpcikvaHRtbC1idWlsZC5zdGFtcCBcCi0JJCh0b3BfYnVpbGRk
aXIpL3NjYW4tYnVpbGQuc3RhbXAgXAotCSQodG9wX2J1aWxkZGlyKS9zZ21sLWJ1aWxkLnN0YW1w
Ci0KLSMgQ29tbWVudCB0aGlzIG91dCBpZiB5b3Ugd2FudCB5b3VyIGRvY3Mtc3RhdHVzIHRlc3Rl
ZCBkdXJpbmcgJ21ha2UgY2hlY2snCi0jVEVTVFMgPSAkKEdUS0RPQ19DSEVDSykKLQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9ndGsvZG9jcy92ZXJzaW9uLnhtbC5pbiBiL1NvdXJjZS9XZWJL
aXQvZ3RrL2RvY3MvdmVyc2lvbi54bWwuaW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGQ3OGJkYTkzNDIyZWNiYmNhOGNhZjc3MmY3YjM3ZjhmZTNiMjU0ZTkuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvZG9jcy92
ZXJzaW9uLnhtbC5pbgorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLUBWRVJTSU9OQApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9H
TlVtYWtlZmlsZS5hbQppbmRleCA3NWEwNDcwZjRhYzEwNDJmNDE3YjUxNDk0YzQ5ZWU1YzU4MDI5
NTNjLi4wOGNjMmIyNzg0MTk3YTNmODYxODA0NTliMjkyNWY5NmU2NzFhMGVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9HTlVt
YWtlZmlsZS5hbQpAQCAtMTQwMyw4ICsxNDAzLDYgQEAgUHJvZ3JhbXNfV2ViS2l0UGx1Z2luUHJv
Y2Vzc19DWFhGTEFHUyA9IFwKIGVuZGlmCiAKIEVYVFJBX0RJU1QgKz0gXAotCSQoV2ViS2l0Mikv
VUlQcm9jZXNzL0FQSS9ndGsvZG9jcy9idWlsZC1ndGtkb2MgXAotCSQoV2ViS2l0MikvVUlQcm9j
ZXNzL0FQSS9ndGsvZG9jcy9ndGtkb2MucHkgXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9n
dGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbCBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJ
L2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0IFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vz
cy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay50eXBlcyBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL2J1aWxkLWd0a2RvYyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3MvYnVpbGQtZ3RrZG9jCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDc1NQppbmRleCBmMzA0YTdlZGY0MjdlMWYzYmE0MmU1ODYyZmEzMzU0NWIxMWNiZWQ4Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3MvYnVpbGQtZ3RrZG9jCisrKyAvZGV2L251bGwKQEAgLTEs
OTMgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jICBDb3B5cmlnaHQgKEMpIDIwMTEg
SWdhbGlhIFMuTC4KLSMKLSMgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSMgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSMgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotIyAgdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotIwotIyAg
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCi0jICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgotIyAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSMgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0jCi0jICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0jICBMaWNlbnNlIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0j
ICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0
b24sIE1BICAwMjExMC0xMzAxICBVU0EKLSMKLQotaW1wb3J0IGdsb2IKLWltcG9ydCBndGtkb2MK
LWltcG9ydCBsb2dnaW5nCi1pbXBvcnQgb3MucGF0aAotaW1wb3J0IHN5cwotCi1kZWYgY29uZmln
dXJlX2xvZ2dpbmcoKToKLSAgICBsZXZlbCA9IGxvZ2dpbmcuREVCVUcgaWYgJy12JyBpbiBzeXMu
YXJndiBlbHNlIGxvZ2dpbmcuSU5GTwotICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJn
dGtkb2MiKQotICAgIGxvZ2dlci5zZXRMZXZlbChsZXZlbCkKLSAgICBoYW5kbGVyID0gbG9nZ2lu
Zy5TdHJlYW1IYW5kbGVyKCkKLSAgICBoYW5kbGVyLnNldExldmVsKGxldmVsKQotICAgIGxvZ2dl
ci5hZGRIYW5kbGVyKGhhbmRsZXIpCi0gICAgaWYgbGV2ZWwgPT0gbG9nZ2luZy5ERUJVRzoKLSAg
ICAgICAgaGFuZGxlci5zZXRGb3JtYXR0ZXIobG9nZ2luZy5Gb3JtYXR0ZXIoJ1slKGFzY3RpbWUp
c10gICUobWVzc2FnZSlzJykpCi0gICAgZWxzZToKLSAgICAgICAgaGFuZGxlci5zZXRGb3JtYXR0
ZXIobG9nZ2luZy5Gb3JtYXR0ZXIoJyUobWVzc2FnZSlzJykpCi0KLWRlZiBmaW5kX2J1aWxkX2Rp
cmVjdG9yeSh0b3BfbGV2ZWwpOgotICAgIGRlZiBpc192YWxpZF9idWlsZF9kaXJlY3RvcnkoYnVp
bGRfZGlyKToKLSAgICAgICAgcmV0dXJuIG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihidWls
ZF9kaXIsICIubGlicyIpKQotCi0gICAgaWYgaXNfdmFsaWRfYnVpbGRfZGlyZWN0b3J5KHRvcF9s
ZXZlbCk6Ci0gICAgICAgIHJldHVybiB0b3BfbGV2ZWwKLQotICAgIGJ1aWxkX2RpciA9IG9zLnBh
dGguam9pbih0b3BfbGV2ZWwsICdXZWJLaXRCdWlsZCcpCi0gICAgaWYgaXNfdmFsaWRfYnVpbGRf
ZGlyZWN0b3J5KGJ1aWxkX2Rpcik6Ci0gICAgICAgIHJldHVybiBidWlsZF9kaXIKLQotICAgIGJ1
aWxkX2RpciA9IG9zLnBhdGguam9pbih0b3BfbGV2ZWwsICdXZWJLaXRCdWlsZCcsICdSZWxlYXNl
JykKLSAgICBpZiBpc192YWxpZF9idWlsZF9kaXJlY3RvcnkoYnVpbGRfZGlyKToKLSAgICAgICAg
cmV0dXJuIGJ1aWxkX2RpcgotCi0gICAgYnVpbGRfZGlyID0gb3MucGF0aC5qb2luKHRvcF9sZXZl
bCwgJ1dlYktpdEJ1aWxkJywgJ0RlYnVnJykKLSAgICBpZiBpc192YWxpZF9idWlsZF9kaXJlY3Rv
cnkoYnVpbGRfZGlyKToKLSAgICAgICAgcmV0dXJuIGJ1aWxkX2RpcgotICAgIHByaW50ICJDb3Vs
ZCBub3QgZGV0ZXJtaW5lIGJ1aWxkIGRpcmVjdG9yeS4iCi0gICAgc3lzLmV4aXQoMSkKLQotZG9j
X2RpciA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pKQotdG9wX2xl
dmVsID0gb3MucGF0aC5ub3JtcGF0aChvcy5wYXRoLmpvaW4oZG9jX2RpciwgJy4uJywgJy4uJywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcuLicsICcuLicsICcu
LicsICcuLicpKQotYnVpbGRfZGlyID0gZmluZF9idWlsZF9kaXJlY3RvcnkodG9wX2xldmVsKQot
Ci1vdXRwdXRfZGlyID0gb3MucGF0aC5qb2luKGJ1aWxkX2RpciwgIkRvY3VtZW50YXRpb24iLCAi
d2Via2l0Mmd0ayIpCi1zcmNfZGlyID0gb3MucGF0aC5qb2luKGRvY19kaXIsICcuLicpCi1saWJy
YXJ5X3BhdGggPSBvcy5wYXRoLmpvaW4oYnVpbGRfZGlyLCAiLmxpYnMiKQotcGtnX2NvbmZpZ19w
YXRoID0gXAotICAgIG9zLnBhdGguam9pbihidWlsZF9kaXIsICJTb3VyY2UiLCAiV2ViS2l0MiIs
ICJ3ZWJraXQyZ3RrLTMuMC5wYyIpCi0KLWRlcml2ZWRfc291cmNlcyA9IG9zLnBhdGguam9pbihi
dWlsZF9kaXIsICJEZXJpdmVkU291cmNlcyIsICJXZWJLaXQyIikKLWNmbGFncyA9IFwKLScgLUkn
ICsgb3MucGF0aC5qb2luKGRlcml2ZWRfc291cmNlcywgJ3dlYmtpdDJndGsnLCAnaW5jbHVkZScp
ICsgXAotJyAtSScgKyBvcy5wYXRoLmpvaW4oZGVyaXZlZF9zb3VyY2VzLCAnd2Via2l0Mmd0aycp
ICsgXAotJyAtSScgKyBvcy5wYXRoLmpvaW4oZGVyaXZlZF9zb3VyY2VzLCAnaW5jbHVkZScpICsg
XAotJyAtSScgKyBvcy5wYXRoLmpvaW4odG9wX2xldmVsLCAnU291cmNlJykKLScgLUknICsgc3Jj
X2RpcgotCi1pZ25vcmVkX2ZpbGVzID0gZ2xvYi5nbG9iKCIlcy8qUHJpdmF0ZS5oIiAlIHNyY19k
aXIpICsgXAotICAgICAgICAgICAgICAgIGdsb2IuZ2xvYigiJXMvUGFnZUNsaWVudEltcGwuKiIg
JSBzcmNfZGlyKSArIFwKLSAgICAgICAgICAgICAgICBnbG9iLmdsb2IoIiVzL3Rlc3RzLyouaCIg
JSBzcmNfZGlyKQotCi1jb25maWd1cmVfbG9nZ2luZygpCi1nZW5lcmF0b3IgPSBndGtkb2MuUGtn
Q29uZmlnR1RLRG9jKHBrZ19jb25maWdfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbW9kdWxlX25hbWU9IndlYmtpdDJndGsiLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBvdXRwdXRfZGlyPW91dHB1dF9kaXIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNvdXJjZV9kaXJzPVtzcmNfZGlyXSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZG9jX2Rpcj1kb2NfZGlyLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjZmxhZ3M9Y2ZsYWdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBsaWJyYXJ5X3BhdGg9bGlicmFyeV9wYXRoLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkZWNvcmF0b3I9IldFQktJVF9BUEkiLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkZXByZWNhdGlvbl9ndWFyZD0iV0VCS0lUX0RJU0FCTEVfREVQUkVD
QVRFRCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZWRfZmlsZXM9
aWdub3JlZF9maWxlcykKLWdlbmVyYXRvci5nZW5lcmF0ZShodG1sPSctLXNraXAtaHRtbCcgbm90
IGluIHN5cy5hcmd2KQotc3lzLmV4aXQoZ2VuZXJhdG9yLnNhd193YXJuaW5ncykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3MvZ3RrZG9jLnB5IGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy9ndGtkb2MucHkKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDMwN2I2MmU0NGZiZjg1MWJmNzc2ZTJmOWYyYjY4YTVkZDFjYjc3
MGYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy9ndGtkb2MucHkKKysrIC9kZXYvbnVsbApA
QCAtMSwzNzIgKzAsMCBAQAotIyAgQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCi0jCi0j
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCi0jICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdl
bmVyYWwgUHVibGljCi0jICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSMgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSMKLSMgIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotIyAgYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
LSMgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCi0jICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgotIwotIyAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExlc3NlciBHZW5lcmFsIFB1YmxpYwotIyAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotIyAgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMw
MSAgVVNBCi0jCi0KLWltcG9ydCBlcnJubwotaW1wb3J0IGxvZ2dpbmcKLWltcG9ydCBvcwotaW1w
b3J0IG9zLnBhdGgKLWltcG9ydCBzdWJwcm9jZXNzCi1pbXBvcnQgc3lzCi0KLQotY2xhc3MgR1RL
RG9jKG9iamVjdCk6Ci0KLSAgICAiIiJDbGFzcyB0aGF0IGNvbnRyb2xzIGEgZ3RrZG9jIHJ1bi4K
LQotICAgIEVhY2ggaW5zdGFuY2Ugb2YgdGhpcyBjbGFzcyByZXByZXNlbnRzIG9uZSBndGtkb2Mg
Y29uZmlndXJhdGlvbgotICAgIGFuZCBzZXQgb2YgZG9jdW1lbnRhdGlvbi4gVGhlIGd0a2RvYyBw
YWNrYWdlIGlzIGEgc2VyaWVzIG9mIHRvb2xzCi0gICAgcnVuIGNvbnNlY3V0aXZlbHkgd2hpY2gg
Y29udmVydHMgaW5saW5lIEMvQysrIGRvY3VtZW50YXRpb24gaW50bwotICAgIGRvY2Jvb2sgZmls
ZXMgYW5kIHRoZW4gaW50byBIVE1MLiBUaGlzIGNsYXNzIGlzIHN1aXRhYmxlIGZvcgotICAgIGdl
bmVyYXRpbmcgZG9jdW1lbnRhdGlvbiBvciBzaW1wbHkgdmVyaWZ5aW5nIGNvcnJlY3RuZXNzLgot
Ci0gICAgS2V5d29yZCBhcmd1bWVudHM6Ci0gICAgb3V0cHV0X2RpciAgICAgICAgIC0tIFRoZSBw
YXRoIHdoZXJlIGd0a2RvYyBvdXRwdXQgc2hvdWxkIGJlIHBsYWNlZC4gR2VuZXJhdGlvbgotICAg
ICAgICAgICAgICAgICAgICAgICAgICBtYXkgb3ZlcndyaXRlIGZpbGUgaW4gdGhpcyBkaXJlY3Rv
cnkuIFJlcXVpcmVkLgotICAgIG1vZHVsZV9uYW1lICAgICAgICAtLSBUaGUgbmFtZSBvZiB0aGUg
ZG9jdW1lbnRhdGlvbiBtb2R1bGUuIEZvciBsaWJyYXJpZXMgdGhpcwotICAgICAgICAgICAgICAg
ICAgICAgICAgICBpcyB0eXBpY2FsbHkgdGhlIGxpYnJhcnkgbmFtZS4gUmVxdWlyZWQgaWYgbm90
IGxpYnJhcnkgcGF0aAotICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBnaXZlbi4KLSAgICBz
b3VyY2VfZGlycyAgICAgICAgLS0gQSBsaXN0IG9mIHBhdGhzIHRvIHRoZSBzb3VyY2UgY29kZSB0
byBiZSBzY2FubmVkLiBSZXF1aXJlZC4KLSAgICBpZ25vcmVkX2ZpbGVzICAgICAgLS0gQSBsaXN0
IG9mIGZpbGVuYW1lcyB0byBpZ25vcmUgaW4gdGhlIHNvdXJjZSBkaXJlY3RvcnkuIEl0IGlzCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgIG9ubHkgbmVjZXNzYXJ5IHRvIHByb3ZpZGUgdGhlIGJh
c2VuYW1lcyBvZiB0aGVzZSBmaWxlcy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwaWNh
bGx5IGl0IGlzIGltcG9ydGFudCB0byBwcm92aWRlIGFuIHVwZGF0ZWQgbGlzdCBvZgotICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZ25vcmVkIGZpbGVzIHRvIHByZXZlbnQgd2FybmluZ3MgYWJv
dXQgdW5kb2N1bWVudGVkIHN5bWJvbHMuCi0gICAgZGVjb3JhdG9yICAgICAgICAgIC0tIElmIGEg
ZGVjb3JhdG9yIGlzIHVzZWQgdG8gdW5oaWRlIGNlcnRhaW4gc3ltYm9scyBpbiBoZWFkZXIKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXMgdGhpcyBwYXJhbWV0ZXIgaXMgcmVxdWlyZWQg
Zm9yIHN1Y2Nlc3NmdWwgc2Nhbm5pbmcuCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChkZWZh
dWx0ICcnKQotICAgIGRlcHJlY2F0aW9uX2d1YXJkICAtLSBndGtkb2MgdHJpZXMgdG8gZW5zdXJl
IHRoYXQgc3ltYm9scyBtYXJrZWQgYXMgZGVwcmVjYXRlZAotICAgICAgICAgICAgICAgICAgICAg
ICAgICBhcmUgZW5jYXNlZCBpbiB0aGlzIEMgcHJlcHJvY2Vzc29yIGRlZmluZS4gVGhpcyBpcyBy
ZXF1aXJlZAotICAgICAgICAgICAgICAgICAgICAgICAgICB0byBhdm9pZCBndGtkb2Mgd2Fybmlu
Z3MuIChkZWZhdWx0ICcnKQotICAgIGNmbGFncyAgICAgICAgICAgICAtLSBUaGlzIHBhcmFtZXRl
ciBzcGVjaWZpZXMgYW55IHByZXByb2Nlc3NvciBmbGFncyBuZWNlc3NhcnkgZm9yCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgIGJ1aWxkaW5nIHRoZSBzY2FubmVyIGJpbmFyeSBkdXJpbmcgZ3Rr
ZG9jLXNjYW5vYmouIFR5cGljYWxseQotICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzIGlu
Y2x1ZGVzIGFsbCBhYnNvbHV0ZSBpbmNsdWRlIHBhdGhzIG5lY2Vzc2FyeSB0byByZXNvbHZlCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgIGFsbCBoZWFkZXIgZGVwZW5kZW5jaWVzLiAoZGVmYXVs
dCAnJykKLSAgICBsZGZsYWdzICAgICAgICAgICAgLS0gVGhpcyBwYXJhbWV0ZXIgc3BlY2lmaWVz
IGFueSBsaW5rZXIgZmxhZ3MgbmVjZXNzYXJ5IGZvcgotICAgICAgICAgICAgICAgICAgICAgICAg
ICBidWlsZGluZyB0aGUgc2Nhbm5lciBiaW5hcnkgZHVyaW5nIGd0a2RvYy1zY2Fub2JqLiBUeXBp
Y2FsbHkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyBpbmNsdWRlcyAiLWx5b3VybGli
cmFyeW5hbWUiLiAoZGVmYXVsdCAnJykKLSAgICBsaWJyYXJ5X3BhdGggICAgICAgLS0gVGhpcyBw
YXJhbWV0ZXIgc3BlY2lmaWVzIHRoZSBwYXRoIHRvIHRoZSBkaXJlY3Rvcnkgd2hlcmUgeW91Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcnkgcmVzaWRlcyB1c2VkIGZvciBidWlsZGlu
ZyB0aGUgc2Nhbm5lciBiaW5hcnkgZHVyaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGd0
a2RvYy1zY2Fub2JqLiAoZGVmYXVsdCAnJykKLQotICAgIGRvY19kaXIgICAgICAgICAgICAtLSBU
aGUgcGF0aCB0byBvdGhlciBkb2N1bWVudGF0aW9uIGZpbGVzIG5lY2Vzc2FyeSB0byBidWlsZAot
ICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZG9jdW1lbnRhdGlvbi4gVGhpcyBmaWxlcyBp
biB0aGlzIGRpcmVjdG9yeSBhcyB3ZWxsIGFzCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHRo
ZSBmaWxlcyBpbiB0aGUgJ2h0bWwnIHN1YmRpcmVjdG9yeSB3aWxsIGJlIGNvcGllZAotICAgICAg
ICAgICAgICAgICAgICAgICAgICByZWN1cnNpdmVseSBpbnRvIHRoZSBvdXRwdXQgZGlyZWN0b3J5
LiAoZGVmYXVsdCAnJykKLSAgICBtYWluX3NnbWxfZmlsZSAgICAgLS0gVGhlIHBhdGggb3IgbmFt
ZSAoaWYgYSBkb2NfZGlyIGlzIGdpdmVuKSBvZiB0aGUgU0dNTCBmaWxlCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgIHRoYXQgaXMgdGhlIGNvbnNpZGVyZWQgdGhlIG1haW4gcGFnZSBvZiB5b3Vy
IGRvY3VtZW50YXRpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChkZWZhdWx0OiA8bW9k
dWxlX25hbWU+LWRvY3Muc2dtbCkKLSAgICB2ZXJzaW9uICAgICAgICAgICAgLS0gVGhlIHZlcnNp
b24gbnVtYmVyIG9mIHRoZSBtb2R1bGUuIElmIHRoaXMgaXMgcHJvdmlkZWQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgIGEgdmVyc2lvbi54bWwgZmlsZSBjb250YWluaW5nIHRoZSB2ZXJzaW9u
IHdpbGwgYmUgY3JlYXRlZAotICAgICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUgb3V0cHV0
IGRpcmVjdG9yeSBkdXJpbmcgZG9jdW1lbnRhdGlvbiBnZW5lcmF0aW9uLgotCi0gICAgaW50ZXJh
Y3RpdmUgICAgICAgIC0tIFdoZXRoZXIgb3Igbm90IGVycm9ycyBvciB3YXJuaW5ncyBzaG91bGQg
cHJvbXB0IHRoZSB1c2VyCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGNvbnRpbnVlIG9y
IG5vdC4gV2hlbiB0aGlzIHZhbHVlIGlzIGZhbHNlLCBnZW5lcmF0aW9uCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgIHdpbGwgY29udGludWUgZGVzcGl0ZSB3YXJuaW5ncy4gKGRlZmF1bHQgRmFs
c2UpCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgKiphcmdzKToKLQotICAgICAg
ICAjIFBhcmFtZXRlcnMgc3BlY2lmaWMgdG8gc2Nhbm5pbmcuCi0gICAgICAgIHNlbGYubW9kdWxl
X25hbWUgPSAnJwotICAgICAgICBzZWxmLnNvdXJjZV9kaXJzID0gW10KLSAgICAgICAgc2VsZi5p
Z25vcmVkX2ZpbGVzID0gW10KLSAgICAgICAgc2VsZi5kZWNvcmF0b3IgPSAnJwotICAgICAgICBz
ZWxmLmRlcHJlY2F0aW9uX2d1YXJkID0gJycKLQotICAgICAgICAjIFBhcmFtZXRlcnMgc3BlY2lm
aWMgdG8gZ3RrZG9jLXNjYW5vYmouCi0gICAgICAgIHNlbGYuY2ZsYWdzID0gJycKLSAgICAgICAg
c2VsZi5sZGZsYWdzID0gJycKLSAgICAgICAgc2VsZi5saWJyYXJ5X3BhdGggPSAnJwotCi0gICAg
ICAgICMgUGFyYW1ldGVycyBzcGVjaWZpYyB0byBnZW5lcmF0aW9uLgotICAgICAgICBzZWxmLm91
dHB1dF9kaXIgPSAnJwotICAgICAgICBzZWxmLmRvY19kaXIgPSAnJwotICAgICAgICBzZWxmLm1h
aW5fc2dtbF9maWxlID0gJycKLQotICAgICAgICBzZWxmLmludGVyYWN0aXZlID0gRmFsc2UKLQot
ICAgICAgICBzZWxmLmxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdndGtkb2MnKQotCi0gICAg
ICAgIGZvciBrZXksIHZhbHVlIGluIGFyZ3MuaXRlcml0ZW1zKCk6Ci0gICAgICAgICAgICBzZXRh
dHRyKHNlbGYsIGtleSwgdmFsdWUpCi0KLSAgICAgICAgZGVmIHJhaXNlX2Vycm9yX2lmX25vdF9z
cGVjaWZpZWQoa2V5KToKLSAgICAgICAgICAgIGlmIG5vdCBnZXRhdHRyKHNlbGYsIGtleSk6Ci0g
ICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCclcyBub3Qgc3BlY2lmaWVkLicgJSBrZXkp
Ci0KLSAgICAgICAgcmFpc2VfZXJyb3JfaWZfbm90X3NwZWNpZmllZCgnb3V0cHV0X2RpcicpCi0g
ICAgICAgIHJhaXNlX2Vycm9yX2lmX25vdF9zcGVjaWZpZWQoJ3NvdXJjZV9kaXJzJykKLSAgICAg
ICAgcmFpc2VfZXJyb3JfaWZfbm90X3NwZWNpZmllZCgnbW9kdWxlX25hbWUnKQotCi0gICAgICAg
ICMgTWFrZSBhbGwgcGF0aHMgYWJzb2x1dGUgaW4gY2FzZSB3ZSB3ZXJlIHBhc3NlZCByZWxhdGl2
ZSBwYXRocywgc2luY2UKLSAgICAgICAgIyB3ZSBjaGFuZ2UgdGhlIGN1cnJlbnQgd29ya2luZyBk
aXJlY3Rvcnkgd2hlbiBleGVjdXRpbmcgc3ViY29tbWFuZHMuCi0gICAgICAgIHNlbGYub3V0cHV0
X2RpciA9IG9zLnBhdGguYWJzcGF0aChzZWxmLm91dHB1dF9kaXIpCi0gICAgICAgIHNlbGYuc291
cmNlX2RpcnMgPSBbb3MucGF0aC5hYnNwYXRoKHgpIGZvciB4IGluIHNlbGYuc291cmNlX2RpcnNd
Ci0gICAgICAgIGlmIHNlbGYubGlicmFyeV9wYXRoOgotICAgICAgICAgICAgc2VsZi5saWJyYXJ5
X3BhdGggPSBvcy5wYXRoLmFic3BhdGgoc2VsZi5saWJyYXJ5X3BhdGgpCi0KLSAgICAgICAgaWYg
bm90IHNlbGYubWFpbl9zZ21sX2ZpbGU6Ci0gICAgICAgICAgICBzZWxmLm1haW5fc2dtbF9maWxl
ID0gc2VsZi5tb2R1bGVfbmFtZSArICItZG9jcy5zZ21sIgotCi0gICAgZGVmIGdlbmVyYXRlKHNl
bGYsIGh0bWw9VHJ1ZSk6Ci0gICAgICAgIHNlbGYuc2F3X3dhcm5pbmdzID0gRmFsc2UKLQotICAg
ICAgICBzZWxmLl9jb3B5X2RvY19maWxlc190b19vdXRwdXRfZGlyKGh0bWwpCi0gICAgICAgIHNl
bGYuX3dyaXRlX3ZlcnNpb25feG1sKCkKLSAgICAgICAgc2VsZi5fcnVuX2d0a2RvY19zY2FuKCkK
LSAgICAgICAgc2VsZi5fcnVuX2d0a2RvY19zY2FuZ29iaigpCi0gICAgICAgIHNlbGYuX3J1bl9n
dGtkb2NfbWt0bXBsKCkKLSAgICAgICAgc2VsZi5fcnVuX2d0a2RvY19ta2RiKCkKLQotICAgICAg
ICBpZiBub3QgaHRtbDoKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgIHNlbGYuX3J1bl9n
dGtkb2NfbWtodG1sKCkKLSAgICAgICAgc2VsZi5fcnVuX2d0a2RvY19maXh4cmVmKCkKLQotICAg
IGRlZiBfZGVsZXRlX2ZpbGVfaWZfZXhpc3RzKHNlbGYsIHBhdGgpOgotICAgICAgICBpZiBub3Qg
b3MuYWNjZXNzKHBhdGgsIG9zLkZfT0sgfCBvcy5SX09LKToKLSAgICAgICAgICAgIHJldHVybgot
ICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygnZGVsZXRpbmcgJXMnLCBwYXRoKQotICAgICAgICBv
cy51bmxpbmsocGF0aCkKLQotICAgIGRlZiBfY3JlYXRlX2RpcmVjdG9yeV9pZl9ub25leGlzdGVu
dChzZWxmLCBwYXRoKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgb3MubWFrZWRpcnMocGF0
aCkKLSAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyb3I6Ci0gICAgICAgICAgICBpZiBlcnJv
ci5lcnJubyAhPSBlcnJuby5FRVhJU1Q6Ci0gICAgICAgICAgICAgICAgcmFpc2UKLQotICAgIGRl
ZiBfcmFpc2VfZXhjZXB0aW9uX2lmX2ZpbGVfaW5hY2Nlc3NpYmxlKHNlbGYsIHBhdGgpOgotICAg
ICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMocGF0aCkgb3Igbm90IG9zLmFjY2VzcyhwYXRoLCBv
cy5SX09LKToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiQ291bGQgbm90IGFjY2VzcyBm
aWxlIGF0OiAlcyIgJSBwYXRoKQotCi0gICAgZGVmIF9vdXRwdXRfaGFzX3dhcm5pbmdzKHNlbGYs
IG91dHB1dHMpOgotICAgICAgICBmb3Igb3V0cHV0IGluIG91dHB1dHM6Ci0gICAgICAgICAgICBp
ZiBvdXRwdXQgYW5kIG91dHB1dC5maW5kKCd3YXJuaW5nJyk6Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIFRydWUKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICBkZWYgX2Fza195ZXNfb3Jfbm9f
cXVlc3Rpb24oc2VsZiwgcXVlc3Rpb24pOgotICAgICAgICBpZiBub3Qgc2VsZi5pbnRlcmFjdGl2
ZToKLSAgICAgICAgICAgIHJldHVybiBUcnVlCi0KLSAgICAgICAgcXVlc3Rpb24gKz0gJyBbeS9O
XSAnCi0gICAgICAgIGFuc3dlciA9IE5vbmUKLSAgICAgICAgd2hpbGUgYW5zd2VyICE9ICd5JyBh
bmQgYW5zd2VyICE9ICduJyBhbmQgYW5zd2VyICE9ICcnOgotICAgICAgICAgICAgYW5zd2VyID0g
cmF3X2lucHV0KHF1ZXN0aW9uKS5sb3dlcigpCi0gICAgICAgIHJldHVybiBhbnN3ZXIgPT0gJ3kn
Ci0KLSAgICBkZWYgX3J1bl9jb21tYW5kKHNlbGYsIGFyZ3MsIGVudj1Ob25lLCBjd2Q9Tm9uZSwg
cHJpbnRfb3V0cHV0PVRydWUpOgotICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCJSdW5uaW5nICVz
IiwgYXJnc1swXSkKLSAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIkZ1bGwgY29tbWFuZCBhcmdz
OiAlcyIsIHN0cihhcmdzKSkKLQotICAgICAgICBwcm9jZXNzID0gc3VicHJvY2Vzcy5Qb3Blbihh
cmdzLCBlbnY9ZW52LCBjd2Q9Y3dkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQotICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHBy
b2Nlc3MuY29tbXVuaWNhdGUoKQotCi0gICAgICAgIGlmIHByaW50X291dHB1dDoKLSAgICAgICAg
ICAgIGlmIHN0ZG91dDoKLSAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKHN0ZG91dCkK
LSAgICAgICAgICAgIGlmIHN0ZGVycjoKLSAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRl
KHN0ZGVycikKLQotICAgICAgICBpZiBwcm9jZXNzLnJldHVybmNvZGUgIT0gMDoKLSAgICAgICAg
ICAgIHJhaXNlIEV4Y2VwdGlvbignJXMgcHJvZHVjZWQgYSBub24temVybyByZXR1cm4gY29kZSAl
aScKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAoYXJnc1swXSwgcHJvY2Vzcy5yZXR1
cm5jb2RlKSkKLQotICAgICAgICBpZiAnd2FybmluZycgaW4gc3RkZXJyIG9yICd3YXJuaW5nJyBp
biBzdGRvdXQ6Ci0gICAgICAgICAgICBzZWxmLnNhd193YXJuaW5ncyA9IFRydWUKLSAgICAgICAg
ICAgIGlmIG5vdCBzZWxmLl9hc2tfeWVzX29yX25vX3F1ZXN0aW9uKCclcyBwcm9kdWNlZCB3YXJu
aW5ncywgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J3RyeSB0byBjb250aW51ZT8nICUgYXJnc1swXSk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgRXhj
ZXB0aW9uKCclcyBzdGVwIGZhaWxlZCcgJSBhcmdzWzBdKQotCi0gICAgICAgIHJldHVybiBzdGRv
dXQuc3RyaXAoKQotCi0gICAgZGVmIF9jb3B5X2RvY19maWxlc190b19vdXRwdXRfZGlyKHNlbGYs
IGh0bWw9VHJ1ZSk6Ci0gICAgICAgIGlmIG5vdCBzZWxmLmRvY19kaXI6Ci0gICAgICAgICAgICBz
ZWxmLmxvZ2dlci5pbmZvKCdOb3QgY29weWluZyBhbnkgZmlsZXMgZnJvbSBkb2MgZGlyZWN0b3J5
LCcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyBiZWNhdXNlIG5vIGRvYyBkaXJlY3Rv
cnkgZ2l2ZW4uJykKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgIGRlZiBjb3B5X2ZpbGVf
cmVwbGFjaW5nX2V4aXN0aW5nKHNyYywgZGVzdCk6Ci0gICAgICAgICAgICBpZiBvcy5wYXRoLmlz
ZGlyKHNyYyk6Ci0gICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoJ3NraXBwZWQgZGly
ZWN0b3J5ICVzJywgIHNyYykKLSAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgIGlm
IG5vdCBvcy5hY2Nlc3Moc3JjLCBvcy5GX09LIHwgb3MuUl9PSyk6Ci0gICAgICAgICAgICAgICAg
c2VsZi5sb2dnZXIuZGVidWcoJ3NraXBwZWQgdW5yZWFkYWJsZSAlcycsIHNyYykKLSAgICAgICAg
ICAgICAgICByZXR1cm4KLQotICAgICAgICAgICAgc2VsZi5fZGVsZXRlX2ZpbGVfaWZfZXhpc3Rz
KGRlc3QpCi0KLSAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCdjcmVhdGVkICVzJywgZGVz
dCkKLSAgICAgICAgICAgIG9zLmxpbmsoc3JjLCBkZXN0KQotCi0gICAgICAgIGRlZiBjb3B5X2Fs
bF9maWxlc19pbl9kaXJlY3Rvcnkoc3JjLCBkZXN0KToKLSAgICAgICAgICAgIGZvciBwYXRoIGlu
IG9zLmxpc3RkaXIoc3JjKToKLSAgICAgICAgICAgICAgICBjb3B5X2ZpbGVfcmVwbGFjaW5nX2V4
aXN0aW5nKG9zLnBhdGguam9pbihzcmMsIHBhdGgpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKGRlc3QsIHBhdGgpKQotCi0gICAgICAg
IHNlbGYubG9nZ2VyLmluZm8oJ0NvcHlpbmcgdGVtcGxhdGUgZmlsZXMgdG8gb3V0cHV0IGRpcmVj
dG9yeS4uLicpCi0gICAgICAgIHNlbGYuX2NyZWF0ZV9kaXJlY3RvcnlfaWZfbm9uZXhpc3RlbnQo
c2VsZi5vdXRwdXRfZGlyKQotICAgICAgICBjb3B5X2FsbF9maWxlc19pbl9kaXJlY3Rvcnkoc2Vs
Zi5kb2NfZGlyLCBzZWxmLm91dHB1dF9kaXIpCi0KLSAgICAgICAgaWYgbm90IGh0bWw6Ci0gICAg
ICAgICAgICByZXR1cm4KLQotICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCdDb3B5aW5nIEhUTUwg
ZmlsZXMgdG8gb3V0cHV0IGRpcmVjdG9yeS4uLicpCi0gICAgICAgIGh0bWxfc3JjX2RpciA9IG9z
LnBhdGguam9pbihzZWxmLmRvY19kaXIsICdodG1sJykKLSAgICAgICAgaHRtbF9kZXN0X2RpciA9
IG9zLnBhdGguam9pbihzZWxmLm91dHB1dF9kaXIsICdodG1sJykKLSAgICAgICAgc2VsZi5fY3Jl
YXRlX2RpcmVjdG9yeV9pZl9ub25leGlzdGVudChodG1sX2Rlc3RfZGlyKQotCi0gICAgICAgIGlm
IG9zLnBhdGguZXhpc3RzKGh0bWxfc3JjX2Rpcik6Ci0gICAgICAgICAgICBjb3B5X2FsbF9maWxl
c19pbl9kaXJlY3RvcnkoaHRtbF9zcmNfZGlyLCBodG1sX2Rlc3RfZGlyKQotCi0gICAgZGVmIF93
cml0ZV92ZXJzaW9uX3htbChzZWxmKToKLSAgICAgICAgaWYgbm90IHNlbGYudmVyc2lvbjoKLSAg
ICAgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oJ05vIHZlcnNpb24gc3BlY2lmaWVkLCBzbyBub3Qg
d3JpdGluZyB2ZXJzaW9uLnhtbCcpCi0gICAgICAgICAgICByZXR1cm4KLQotICAgICAgICB2ZXJz
aW9uX3htbF9wYXRoID0gb3MucGF0aC5qb2luKHNlbGYub3V0cHV0X2RpciwgJ3ZlcnNpb24ueG1s
JykKLSAgICAgICAgc3JjX3ZlcnNpb25feG1sX3BhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi5kb2Nf
ZGlyLCAndmVyc2lvbi54bWwnKQotCi0gICAgICAgICMgRG9uJ3Qgb3ZlcndyaXRlIHZlcnNpb24u
eG1sIGlmIGl0IHdhcyBpbiB0aGUgZG9jIGRpcmVjdG9yeS4KLSAgICAgICAgaWYgb3MucGF0aC5l
eGlzdHModmVyc2lvbl94bWxfcGF0aCkgYW5kIFwKLSAgICAgICAgICAgb3MucGF0aC5leGlzdHMo
c3JjX3ZlcnNpb25feG1sX3BhdGgpOgotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgb3V0
cHV0X2ZpbGUgPSBvcGVuKHZlcnNpb25feG1sX3BhdGgsICd3JykKLSAgICAgICAgb3V0cHV0X2Zp
bGUud3JpdGUoc2VsZi52ZXJzaW9uKQotICAgICAgICBvdXRwdXRfZmlsZS5jbG9zZSgpCi0KLSAg
ICBkZWYgX3J1bl9ndGtkb2Nfc2NhbihzZWxmKToKLSAgICAgICAgYXJncyA9IFsnZ3RrZG9jLXNj
YW4nLAotICAgICAgICAgICAgICAgICctLW1vZHVsZT0lcycgJSBzZWxmLm1vZHVsZV9uYW1lLAot
ICAgICAgICAgICAgICAgICctLXJlYnVpbGQtdHlwZXMnXQotCi0gICAgICAgICMgRWFjaCBzb3Vy
Y2UgZGlyZWN0b3J5IHNob3VsZCBiZSBoYXZlIGl0cyBvd24gIi0tc291cmNlLWRpcj0iIHByZWZp
eC4KLSAgICAgICAgYXJncy5leHRlbmQoWyctLXNvdXJjZS1kaXI9JXMnICUgcGF0aCBmb3IgcGF0
aCBpbiBzZWxmLnNvdXJjZV9kaXJzXSkKLQotICAgICAgICBpZiBzZWxmLmRlY29yYXRvcjoKLSAg
ICAgICAgICAgIGFyZ3MuYXBwZW5kKCctLWlnbm9yZS1kZWNvcmF0b3JzPSVzJyAlIHNlbGYuZGVj
b3JhdG9yKQotICAgICAgICBpZiBzZWxmLmRlcHJlY2F0aW9uX2d1YXJkOgotICAgICAgICAgICAg
YXJncy5hcHBlbmQoJy0tZGVwcmVjYXRlZC1ndWFyZHM9JXMnICUgc2VsZi5kZXByZWNhdGlvbl9n
dWFyZCkKLSAgICAgICAgaWYgc2VsZi5vdXRwdXRfZGlyOgotICAgICAgICAgICAgYXJncy5hcHBl
bmQoJy0tb3V0cHV0LWRpcj0lcycgJSBzZWxmLm91dHB1dF9kaXIpCi0KLSAgICAgICAgIyBndGtk
b2Mtc2NhbiB3YW50cyB0aGUgYmFzZW5hbWVzIG9mIGlnbm9yZWQgaGVhZGVycywgc28gc3RyaXAg
dGhlCi0gICAgICAgICMgZGlybmFtZS4gRGlmZmVyZW50IGZyb20gIi0tc291cmNlLWRpciIsIHRo
ZSBoZWFkZXJzIHNob3VsZCBiZQotICAgICAgICAjIHNwZWNpZmllZCBhcyBvbmUgbG9uZyBzdHJp
bmcuCi0gICAgICAgIGlmIHNlbGYuaWdub3JlZF9maWxlczoKLSAgICAgICAgICAgIGlnbm9yZWRf
ZmlsZXNfYmFzZW5hbWVzID0gXAotICAgICAgICAgICAgICAgIFtvcy5wYXRoLmJhc2VuYW1lKHgp
IGZvciB4IGluIHNlbGYuaWdub3JlZF9maWxlc10KLSAgICAgICAgICAgIGFyZ3MuYXBwZW5kKCct
LWlnbm9yZS1oZWFkZXJzPSVzJyAlICcgJy5qb2luKGlnbm9yZWRfZmlsZXNfYmFzZW5hbWVzKSkK
LQotICAgICAgICBzZWxmLl9ydW5fY29tbWFuZChhcmdzKQotCi0gICAgZGVmIF9ydW5fZ3RrZG9j
X3NjYW5nb2JqKHNlbGYpOgotICAgICAgICBlbnYgPSBvcy5lbnZpcm9uCi0gICAgICAgIGxkZmxh
Z3MgPSBzZWxmLmxkZmxhZ3MKLSAgICAgICAgaWYgc2VsZi5saWJyYXJ5X3BhdGg6Ci0gICAgICAg
ICAgICBsZGZsYWdzID0gJyAiLUwlcyIgJyAlIHNlbGYubGlicmFyeV9wYXRoICsgbGRmbGFncwot
ICAgICAgICAgICAgZW52WydSVU4nXSA9ICdMRF9MSUJSQVJZX1BBVEg9IiVzIiAnICUgc2VsZi5s
aWJyYXJ5X3BhdGgKLSAgICAgICAgaWYgbGRmbGFnczoKLSAgICAgICAgICAgIGVudlsnTERGTEFH
UyddID0gbGRmbGFncwotICAgICAgICBpZiBzZWxmLmNmbGFnczoKLSAgICAgICAgICAgIGVudlsn
Q0ZMQUdTJ10gPSBzZWxmLmNmbGFncwotCi0gICAgICAgIGlmICdDRkxBR1MnIGluIGVudjoKLSAg
ICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCdDRkxBR1M9JXMnLCBlbnZbJ0NGTEFHUyddKQot
ICAgICAgICBpZiAnTERGTEFHUycgaW4gZW52OgotICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVi
dWcoJ0xERkxBR1MgJXMnLCBlbnZbJ0xERkxBR1MnXSkKLSAgICAgICAgaWYgJ1JVTicgaW4gZW52
OgotICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoJ1JVTj0lcycsIGVudlsnUlVOJ10pCi0g
ICAgICAgIHNlbGYuX3J1bl9jb21tYW5kKFsnZ3RrZG9jLXNjYW5nb2JqJywgJy0tbW9kdWxlPSVz
JyAlIHNlbGYubW9kdWxlX25hbWVdLAotICAgICAgICAgICAgICAgICAgICAgICAgICBlbnY9ZW52
LCBjd2Q9c2VsZi5vdXRwdXRfZGlyKQotCi0gICAgZGVmIF9ydW5fZ3RrZG9jX21rdG1wbChzZWxm
KToKLSAgICAgICAgYXJncyA9IFsnZ3RrZG9jLW1rdG1wbCcsICctLW1vZHVsZT0lcycgJSBzZWxm
Lm1vZHVsZV9uYW1lXQotICAgICAgICBzZWxmLl9ydW5fY29tbWFuZChhcmdzLCBjd2Q9c2VsZi5v
dXRwdXRfZGlyKQotCi0gICAgZGVmIF9ydW5fZ3RrZG9jX21rZGIoc2VsZik6Ci0gICAgICAgIHNn
bWxfZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLm91dHB1dF9kaXIsIHNlbGYubWFpbl9zZ21sX2Zp
bGUpCi0gICAgICAgIHNlbGYuX3JhaXNlX2V4Y2VwdGlvbl9pZl9maWxlX2luYWNjZXNzaWJsZShz
Z21sX2ZpbGUpCi0KLSAgICAgICAgYXJncyA9IFsnZ3RrZG9jLW1rZGInLAotICAgICAgICAgICAg
ICAgICctLW1vZHVsZT0lcycgJSBzZWxmLm1vZHVsZV9uYW1lLAotICAgICAgICAgICAgICAgICct
LW1haW4tc2dtbC1maWxlPSVzJyAlIHNnbWxfZmlsZSwKLSAgICAgICAgICAgICAgICAnLS1zb3Vy
Y2Utc3VmZml4ZXM9aCxjLGNwcCxjYycsCi0gICAgICAgICAgICAgICAgJy0tb3V0cHV0LWZvcm1h
dD14bWwnLAotICAgICAgICAgICAgICAgICctLXNnbWwtbW9kZSddCi0KLSAgICAgICAgIyBFYWNo
IGRpcmVjdG9yeSBzaG91bGQgYmUgaGF2ZSBpdHMgb3duICItLXNvdXJjZS1kaXI9IiBwcmVmaXgu
Ci0gICAgICAgIGFyZ3MuZXh0ZW5kKFsnLS1zb3VyY2UtZGlyPSVzJyAlIHBhdGggZm9yIHBhdGgg
aW4gc2VsZi5zb3VyY2VfZGlyc10pCi0gICAgICAgIHNlbGYuX3J1bl9jb21tYW5kKGFyZ3MsIGN3
ZD1zZWxmLm91dHB1dF9kaXIpCi0KLSAgICBkZWYgX3J1bl9ndGtkb2NfbWtodG1sKHNlbGYpOgot
ICAgICAgICBodG1sX2Rlc3RfZGlyID0gb3MucGF0aC5qb2luKHNlbGYub3V0cHV0X2RpciwgJ2h0
bWwnKQotICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2RpcihodG1sX2Rlc3RfZGlyKToKLSAgICAg
ICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiJXMgaXMgbm90IGEgZGlyZWN0b3J5LCBjb3VsZCBub3Qg
Z2VuZXJhdGUgSFRNTCIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIGh0bWxfZGVzdF9k
aXIpCi0gICAgICAgIGVsaWYgbm90IG9zLmFjY2VzcyhodG1sX2Rlc3RfZGlyLCBvcy5YX09LIHwg
b3MuUl9PSyB8IG9zLldfT0spOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJDb3VsZCBu
b3QgYWNjZXNzICVzIHRvIGdlbmVyYXRlIEhUTUwiCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJSBodG1sX2Rlc3RfZGlyKQotCi0gICAgICAgICMgZ3RrZG9jLW1raHRtbCBleHBlY3RzIHRo
ZSBTR01MIHBhdGggdG8gYmUgYWJzb2x1dGUuCi0gICAgICAgIHNnbWxfZmlsZSA9IG9zLnBhdGgu
am9pbihvcy5wYXRoLmFic3BhdGgoc2VsZi5vdXRwdXRfZGlyKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNlbGYubWFpbl9zZ21sX2ZpbGUpCi0gICAgICAgIHNlbGYuX3JhaXNl
X2V4Y2VwdGlvbl9pZl9maWxlX2luYWNjZXNzaWJsZShzZ21sX2ZpbGUpCi0KLSAgICAgICAgc2Vs
Zi5fcnVuX2NvbW1hbmQoWydndGtkb2MtbWtodG1sJywgc2VsZi5tb2R1bGVfbmFtZSwgc2dtbF9m
aWxlXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY3dkPWh0bWxfZGVzdF9kaXIpCi0KLSAg
ICBkZWYgX3J1bl9ndGtkb2NfZml4eHJlZihzZWxmKToKLSAgICAgICAgc2VsZi5fcnVuX2NvbW1h
bmQoWydndGtkb2MtZml4eHJlZicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1tb2R1
bGUtZGlyPWh0bWwnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0taHRtbC1kaXI9aHRt
bCddLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjd2Q9c2VsZi5vdXRwdXRfZGlyKQotCi0K
LWNsYXNzIFBrZ0NvbmZpZ0dUS0RvYyhHVEtEb2MpOgotCi0gICAgIiIiQ2xhc3MgcmVhZHMgYSBs
aWJyYXJ5J3MgcGtnY29uZmlnIGZpbGUgdG8gZ3Vlc3MgZ3RrZG9jIHBhcmFtZXRlcnMuCi0KLSAg
ICBTb21lIGd0a2RvYyBwYXJhbWV0ZXJzIGNhbiBiZSBndWVzc2VkIGJ5IHJlYWRpbmcgYSBsaWJy
YXJ5J3MgcGtnY29uZmlnCi0gICAgZmlsZSwgaW5jbHVkaW5nIHRoZSBjZmxhZ3MsIGxkZmxhZ3Mg
YW5kIHZlcnNpb24gcGFyYW1ldGVycy4gSWYgeW91Ci0gICAgcHJvdmlkZSB0aGVzZSBwYXJhbWV0
ZXJzIGFzIHdlbGwsIHRoZXkgd2lsbCBiZSBhcHBlbmRlZCB0byB0aGUgb25lcwotICAgIGd1ZXNz
ZWQgdmlhIHRoZSBwa2djb25maWcgZmlsZS4KLQotICAgIEtleXdvcmQgYXJndW1lbnRzOgotICAg
ICAgcGtnX2NvbmZpZ19wYXRoIC0tIFBhdGggdG8gdGhlIHBrZ2NvbmZpZyBmaWxlIGZvciB0aGUg
bGlicmFyeS4gUmVxdWlyZWQuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgcGtn
X2NvbmZpZ19wYXRoLCAqKmFyZ3MpOgotICAgICAgICBzdXBlcihQa2dDb25maWdHVEtEb2MsIHNl
bGYpLl9faW5pdF9fKCoqYXJncykKLQotICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMocGtn
X2NvbmZpZ19wYXRoKToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignQ291bGQgbm90IGZp
bmQgcGtnLWNvbmZpZyBmaWxlIGF0OiAlcycKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAl
IHBrZ19jb25maWdfcGF0aCkKLQotICAgICAgICBzZWxmLmNmbGFncyArPSAiICIgKyBzZWxmLl9y
dW5fY29tbWFuZChbJ3BrZy1jb25maWcnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcGtnX2NvbmZpZ19wYXRoLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tY2ZsYWdzJ10sIHByaW50X291dHB1dD1GYWxz
ZSkKLSAgICAgICAgc2VsZi5sZGZsYWdzICs9ICIgIiArIHNlbGYuX3J1bl9jb21tYW5kKFsncGtn
LWNvbmZpZycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwa2dfY29uZmlnX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnLS1saWJzJ10sIHByaW50X291dHB1dD1GYWxzZSkKLSAgICAgICAgc2VsZi52
ZXJzaW9uID0gc2VsZi5fcnVuX2NvbW1hbmQoWydwa2ctY29uZmlnJywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBrZ19jb25maWdfcGF0aCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLW1vZHZlcnNpb24nXSwgcHJpbnRfb3V0
cHV0PUZhbHNlKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IDc1ZjRlZmZjZWFiYzU0OWI2N2YxNDQzMjg2ZjYzMDE3ZjA2MzBkZWUuLjJjODM4OGVj
MWNhN2ZmODBiNTM2M2FkODNlNWFkNGQ0ZTE4ZTE0YjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMS0xMS0xNyAg
TWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10g
SW50ZWdyYXRlIGJ1aWxkLWd0a2RvYyBpbnRvIGJ1aWxkLXdlYmtpdCBhbmQgbWFrZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzI2MjYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFt
OiBBZGRlZCBzdXBwb3J0IGZvciBuZXcgc2NyaXB0cyBhbmQgIm1ha2UgZG9jcyIuCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRkaXJzLnBtOiBDYWxsIGdlbmVyYXRlLWd0a2RvYyB3aGVuIGJ1aWxk
aW5nLgorICAgICAgICAoYnVpbGRBdXRvdG9vbHNQcm9qZWN0KToKKyAgICAgICAgKiBndGsvZ2Vu
ZXJhdGUtZ3RrZG9jOiBBZGRlZC4KKyAgICAgICAgKiBndGsvZ3RrZG9jLnB5OiBSZW5hbWVkIGZy
b20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy9ndGtkb2MucHkuCisKIDIw
MTEtMTEtMjMgIFJhcGhhZWwgS3VibyBkYSBDb3N0YSAgPGt1Ym9AcHJvZnVzaW9uLm1vYmk+CiAK
ICAgICAgICAgW0NNYWtlXSBNb3ZlIHRoZSB0b3AtbGV2ZWwgbG9naWMgdG8gdGhlIHRvcC1sZXZl
bCBkaXJlY3RvcnkuCmRpZmYgLS1naXQgYS9Ub29scy9HTlVtYWtlZmlsZS5hbSBiL1Rvb2xzL0dO
VW1ha2VmaWxlLmFtCmluZGV4IGZkOWVmNzAxNDNlYmNmYWE0NjgxM2IxMjgwYmFlY2E0ZDYzMGIz
NGEuLmI4ODVhYjkxOGYzZDZlYmFkM2E2ZGY0Y2Q2NjIzMzE4ODYyODIzMzggMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0dOVW1ha2VmaWxlLmFtCisrKyBiL1Rvb2xzL0dOVW1ha2VmaWxlLmFtCkBAIC0yMjcs
MyArMjI3LDQ0IEBAIFRlc3ROZXRzY2FwZVBsdWdpbl9saWJ0ZXN0bmV0c2NhcGVwbHVnaW5fbGFf
TERGTEFHUyA9IFwKIAogQ0xFQU5GSUxFUyArPSBUZXN0TmV0c2NhcGVQbHVnaW4vbGlidGVzdG5l
dHNjYXBlcGx1Z2luLmxhCiBlbmRpZgorCitFWFRSQV9ESVNUICs9IFwKKwlUb29scy9ndGsvZ2Vu
ZXJhdGUtZ3RrZG9jIFwKKwlUb29scy9ndGsvZ3RrZG9jLnB5IFwKKwlUb29scy9TY3JpcHRzL1ZD
U1V0aWxzLnBtIFwKKwlUb29scy9TY3JpcHRzL3dlYmtpdC1idWlsZC1kaXJlY3RvcnkgXAorCVRv
b2xzL1NjcmlwdHMvd2Via2l0ZGlycy5wbQorCitpZiBFTkFCTEVfV0VCS0lUMgorZG9jczogJChC
VUlMVF9TT1VSQ0VTKSBcCisJbGlid2Via2l0Z3RrLUBXRUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJ
T05ALkBXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05ALmxhIFwKKwlsaWJ3ZWJraXQyZ3RrLUBX
RUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05ALkBXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05A
LmxhCisJJChzcmNkaXIpL1Rvb2xzL2d0ay9nZW5lcmF0ZS1ndGtkb2MKK2Vsc2UKK2RvY3M6ICQo
QlVJTFRfU09VUkNFUykgXAorCWxpYndlYmtpdGd0ay1AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJT
SU9OQC5AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQC5sYQorCSQoc3JjZGlyKS9Ub29scy9n
dGsvZ2VuZXJhdGUtZ3RrZG9jCitlbmRpZgorLlBIT05ZIDogZG9jcworCitjbGVhbi1sb2NhbDog
ZG9jLWNsZWFuLWxvY2FsCitkb2MtY2xlYW4tbG9jYWw6CisJQHJtIC1mIERvY3VtZW50YXRpb24v
d2Via2l0Z3RrLyp+IERvY3VtZW50YXRpb24vd2Via2l0Z3RrKi5iYWsKKwlAcm0gLWYgRG9jdW1l
bnRhdGlvbi93ZWJraXQyZ3RrLyp+IERvY3VtZW50YXRpb24vd2Via2l0Mmd0ayouYmFrCitkaXN0
Y2xlYW4tbG9jYWw6IGRvYy1kaXN0Y2xlYW4tbG9jYWwKK2RvYy1kaXN0Y2xlYW4tbG9jYWw6CisJ
QHJtIC1yZiBEb2N1bWVudGF0aW9uCittYWludGFpbmVyLWNsZWFuLWxvY2FsOiBkb2MtbWFpbnRh
aW5lci1jbGVhbi1sb2NhbAorZG9jLW1haW50YWluZXItY2xlYW4tbG9jYWw6IGNsZWFuCisJQHJt
IC1yZiBEb2N1bWVudGF0aW9uL3dlYmtpdGd0ayBEb2N1bWVudGF0aW9uL3dlYmtpdDJndGsKKwkt
QHJtZGlyIERvY3VtZW50YXRpb24KKworaWYgRU5BQkxFX0dUS19ET0MKK2Rpc3QtY2hlY2stZ3Rr
ZG9jOgorYWxsOiBkb2NzCitlbHNlCitkaXN0LWNoZWNrLWd0a2RvYzoKKwlAZWNobyAiKioqIGd0
ay1kb2MgbXVzdCBiZSBpbnN0YWxsZWQgYW5kIGVuYWJsZWQgaW4gb3JkZXIgdG8gbWFrZSBkaXN0
IgorCUBmYWxzZQorZW5kaWYKKwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRkaXJz
LnBtIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRkaXJzLnBtCmluZGV4IDBjYTQ4OGIyZDU5YzRkYjhi
YTdlM2E0YzZjMmY0NmYyYTIxMjRlYjguLjliYTQwNTg2YTRlY2JlM2U1NWRmYzFlMDA0ZjBlMjA2
OWRkMDVlNTggMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0ZGlycy5wbQorKysgYi9U
b29scy9TY3JpcHRzL3dlYmtpdGRpcnMucG0KQEAgLTE2NzksNiArMTY3OSwxNCBAQCBzdWIgYnVp
bGRBdXRvdG9vbHNQcm9qZWN0KCRAKQogICAgIH0KIAogICAgIGNoZGlyICIuLiIgb3IgZGllOwor
CisgICAgaWYgKGlzR3RrKCkpIHsKKyAgICAgICAgbXkgJHJlbGF0aXZlU2NyaXB0c1BhdGggPSBy
ZWxhdGl2ZVNjcmlwdHNEaXIoKTsKKyAgICAgICAgaWYgKHN5c3RlbSgiJHJlbGF0aXZlU2NyaXB0
c1BhdGgvLi4vZ3RrL2dlbmVyYXRlLWd0a2RvYyAtLXNraXAtaHRtbCIpKSB7CisgICAgICAgICAg
ICBkaWUgIlxuIGd0a2RvYyBkaWQgbm90IGJ1aWxkIHdpdGhvdXQgd2FybmluZ3NcbiI7CisgICAg
ICAgIH0KKyAgICB9CisKICAgICByZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvZ3Rr
L2dlbmVyYXRlLWd0a2RvYyBiL1Rvb2xzL2d0ay9nZW5lcmF0ZS1ndGtkb2MKbmV3IGZpbGUgbW9k
ZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MGVlYTdlMmQ0YWM4NjZmMDdjYzVkNWI1NTEyZGE5M2Q3MzA4NWQwMwotLS0gL2Rldi9udWxsCisr
KyBiL1Rvb2xzL2d0ay9nZW5lcmF0ZS1ndGtkb2MKQEAgLTAsMCArMSwxNDUgQEAKKyMhL3Vzci9i
aW4vZW52IHB5dGhvbgorIyBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KKyMKKyMgVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorIyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg
UHVibGljCisjIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorIyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorIyBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIwor
IyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVy
YWwgUHVibGljCisjIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3Jp
dGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyMgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisKK2ltcG9y
dCBnbG9iCitpbXBvcnQgZ3RrZG9jCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IG9zLnBhdGgKK2lt
cG9ydCBzdWJwcm9jZXNzCitpbXBvcnQgc3lzCisKK3NjcmlwdF9kaXIgPSBOb25lCitidWlsZF9k
aXIgPSBOb25lCisKK2RlZiBjb25maWd1cmVfbG9nZ2luZygpOgorICAgIGxldmVsID0gbG9nZ2lu
Zy5ERUJVRyBpZiAnLXYnIGluIHN5cy5hcmd2IGVsc2UgbG9nZ2luZy5JTkZPCisgICAgbG9nZ2Vy
ID0gbG9nZ2luZy5nZXRMb2dnZXIoJ2d0a2RvYycpCisgICAgbG9nZ2VyLnNldExldmVsKGxldmVs
KQorICAgIGhhbmRsZXIgPSBsb2dnaW5nLlN0cmVhbUhhbmRsZXIoKQorICAgIGhhbmRsZXIuc2V0
TGV2ZWwobGV2ZWwpCisgICAgbG9nZ2VyLmFkZEhhbmRsZXIoaGFuZGxlcikKKyAgICBpZiBsZXZl
bCA9PSBsb2dnaW5nLkRFQlVHOgorICAgICAgICBoYW5kbGVyLnNldEZvcm1hdHRlcihsb2dnaW5n
LkZvcm1hdHRlcignWyUoYXNjdGltZSlzXSAgJShtZXNzYWdlKXMnKSkKKyAgICBlbHNlOgorICAg
ICAgICBoYW5kbGVyLnNldEZvcm1hdHRlcihsb2dnaW5nLkZvcm1hdHRlcignJShtZXNzYWdlKXMn
KSkKKworZGVmIHNjcmlwdF9wYXRoKCphcmdzKToKKyAgICBnbG9iYWwgc2NyaXB0X2RpcgorICAg
IGlmIG5vdCBzY3JpcHRfZGlyOgorICAgICAgICBzY3JpcHRfZGlyID0gb3MucGF0aC5qb2luKG9z
LnBhdGguZGlybmFtZShfX2ZpbGVfXyksICcuLicsICdTY3JpcHRzJykKKyAgICByZXR1cm4gb3Mu
cGF0aC5qb2luKCooc2NyaXB0X2RpciwpICsgYXJncykKKworZGVmIHRvcF9sZXZlbF9wYXRoKCph
cmdzKToKKyAgICByZXR1cm4gb3MucGF0aC5qb2luKCooKHNjcmlwdF9wYXRoKCcuLicsICcuLicp
LCkgKyBhcmdzKSkKKworZGVmIGdldF9idWlsZF9wYXRoKCk6CisgICAgZ2xvYmFsIGJ1aWxkX2Rp
cgorICAgIGlmIGJ1aWxkX2RpcjoKKyAgICAgICAgcmV0dXJuIGJ1aWxkX2RpcgorCisgICAgZGVm
IGlzX3ZhbGlkX2J1aWxkX2RpcmVjdG9yeShwYXRoKToKKyAgICAgICAgcmV0dXJuIG9zLnBhdGgu
ZXhpc3RzKG9zLnBhdGguam9pbihwYXRoLCAnLmxpYnMnKSkKKworICAgIHByb2Nlc3MgPSBzdWJw
cm9jZXNzLlBvcGVuKFsncGVybCcsIHNjcmlwdF9wYXRoKCd3ZWJraXQtYnVpbGQtZGlyZWN0b3J5
JyksICctLWNvbmZpZ3VyYXRpb24nLCAnZ3RrJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkKKyAgICBidWlsZF9kaXIgPSBwcm9jZXNzLmNv
bW11bmljYXRlKClbMF0uc3RyaXAoKQorCisgICAgaWYgaXNfdmFsaWRfYnVpbGRfZGlyZWN0b3J5
KGJ1aWxkX2Rpcik6CisgICAgICAgIHJldHVybiBidWlsZF9kaXIKKyAgICBidWlsZF9kaXIgPSB0
b3BfbGV2ZWxfcGF0aCgpCisgICAgaWYgaXNfdmFsaWRfYnVpbGRfZGlyZWN0b3J5KGJ1aWxkX2Rp
cik6CisgICAgICAgIHJldHVybiBidWlsZF9kaXIKKworICAgIHByaW50ICdDb3VsZCBub3QgZGV0
ZXJtaW5lIGJ1aWxkIGRpcmVjdG9yeS4nCisgICAgc3lzLmV4aXQoMSkKKworZGVmIGJ1aWxkX3Bh
dGgoKmFyZ3MpOgorICAgIHJldHVybiBvcy5wYXRoLmpvaW4oKihnZXRfYnVpbGRfcGF0aCgpLCkg
KyBhcmdzKQorCitkZWYgZ2V0X2NvbW1vbl9vcHRpb25zKCk6CisgICAgcmV0dXJuIHsKKyAgICAg
ICAgJ2RlY29yYXRvcic6ICdXRUJLSVRfQVBJJywKKyAgICAgICAgJ2RlcHJlY2F0aW9uX2d1YXJk
JzogJ1dFQktJVF9ESVNBQkxFX0RFUFJFQ0FURUQnLAorICAgICAgICAnbGlicmFyeV9wYXRoJyA6
IGJ1aWxkX3BhdGgoJy5saWJzJyksCisgICAgfQorCitkZWYgZ2V0X3dlYmtpdDJfb3B0aW9ucygp
OgorICAgIGRlZiBkZXJpdmVkX3NvdXJjZXNfcGF0aCgqYXJncyk6CisgICAgICAgIHJldHVybiBi
dWlsZF9wYXRoKCooKCdEZXJpdmVkU291cmNlcycsICdXZWJLaXQyJykgKyBhcmdzKSkKKyAgICBk
ZWYgc3JjX3BhdGgoKmFyZ3MpOgorICAgICAgICByZXR1cm4gdG9wX2xldmVsX3BhdGgoKigoJ1Nv
dXJjZScsICdXZWJLaXQyJywgJ1VJUHJvY2VzcycsICdBUEknLCAnZ3RrJykgKyBhcmdzKSkKKwor
ICAgIGRlcml2ZWRfc291cmNlcyA9IGJ1aWxkX3BhdGgoJ0Rlcml2ZWRTb3VyY2VzJywgJ1dlYktp
dDInKQorICAgIG9wdGlvbnMgPSBnZXRfY29tbW9uX29wdGlvbnMoKS5jb3B5KCkKKyAgICBvcHRp
b25zLnVwZGF0ZSh7CisgICAgICAgICdtb2R1bGVfbmFtZScgOiAnd2Via2l0Mmd0aycsCisgICAg
ICAgICdkb2NfZGlyJyA6IHNyY19wYXRoKCdkb2NzJyksCisgICAgICAgICdvdXRwdXRfZGlyJyA6
IGJ1aWxkX3BhdGgoJ0RvY3VtZW50YXRpb24nLCAnd2Via2l0Mmd0aycpLAorICAgICAgICAnc291
cmNlX2RpcnMnIDogW3NyY19wYXRoKCldLAorICAgICAgICAnY2ZsYWdzJyA6ICcgLUknICsgZGVy
aXZlZF9zb3VyY2VzX3BhdGgoJ3dlYmtpdDJndGsnLCAnaW5jbHVkZScpICsgXAorICAgICAgICAg
ICAgICAgICAgICcgLUknICsgZGVyaXZlZF9zb3VyY2VzX3BhdGgoJ3dlYmtpdDJndGsnKSArIFwK
KyAgICAgICAgICAgICAgICAgICAnIC1JJyArIGRlcml2ZWRfc291cmNlc19wYXRoKCdpbmNsdWRl
JykgKyBcCisgICAgICAgICAgICAgICAgICAgJyAtSScgKyB0b3BfbGV2ZWxfcGF0aCgnU291cmNl
JykgKyBcCisgICAgICAgICAgICAgICAgICAgJyAtSScgKyBzcmNfcGF0aCgpLAorICAgICAgICAn
aWdub3JlZF9maWxlcyc6IGdsb2IuZ2xvYihzcmNfcGF0aCgnKlByaXZhdGUuaCcpKSArIFwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBnbG9iLmdsb2Ioc3JjX3BhdGgoJ1BhZ2VDbGllbnRJbXBs
LionKSkgKyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYi5nbG9iKHNyY19wYXRoKCd0
ZXN0cy8qLmgnKSkKKyAgICB9KQorICAgIHJldHVybiAoYnVpbGRfcGF0aCgnU291cmNlJywgJ1dl
YktpdDInLCAnd2Via2l0Mmd0ay0zLjAucGMnKSwgb3B0aW9ucykKKworZGVmIGdldF93ZWJraXQx
X29wdGlvbnMoKToKKyAgICBkZWYgZGVyaXZlZF9zb3VyY2VzX3BhdGgoKmFyZ3MpOgorICAgICAg
ICByZXR1cm4gYnVpbGRfcGF0aCgqKCgnRGVyaXZlZFNvdXJjZXMnLCAnV2ViS2l0MicpICsgYXJn
cykpCisgICAgZGVmIHNyY19wYXRoKCphcmdzKToKKyAgICAgICAgcmV0dXJuIHRvcF9sZXZlbF9w
YXRoKCooKCdTb3VyY2UnLCAnV2ViS2l0JywgJ2d0aycpICsgYXJncykpCisKKyAgICBkZXJpdmVk
X3NvdXJjZXMgPSBidWlsZF9wYXRoKCdEZXJpdmVkU291cmNlcycsICdXZWJLaXQyJykKKyAgICBv
cHRpb25zID0gZ2V0X2NvbW1vbl9vcHRpb25zKCkuY29weSgpCisgICAgb3B0aW9ucy51cGRhdGUo
eworICAgICAgICAnbW9kdWxlX25hbWUnIDogJ3dlYmtpdGd0aycsCisgICAgICAgICdkb2NfZGly
JyA6IHNyY19wYXRoKCdkb2NzJyksCisgICAgICAgICdvdXRwdXRfZGlyJyA6IGJ1aWxkX3BhdGgo
J0RvY3VtZW50YXRpb24nLCAnd2Via2l0Z3RrJyksCisgICAgICAgICdzb3VyY2VfZGlycycgOiBb
c3JjX3BhdGgoJ3dlYmtpdCcpLCBidWlsZF9wYXRoKCdTb3VyY2UnLCAnV2ViS2l0JywgJ2d0aycs
ICd3ZWJraXQnKV0sCisgICAgICAgICdjZmxhZ3MnIDogJyAtSScgKyBidWlsZF9wYXRoKCdXZWJL
aXQnLCAnZ3RrJykgKyBcCisgICAgICAgICAgICAgICAgICAgJyAtSScgKyBidWlsZF9wYXRoKCdE
ZXJpdmVkU291cmNlcycpICsgXAorICAgICAgICAgICAgICAgICAgICcgLUknICsgc3JjX3BhdGgo
KSArIFwKKyAgICAgICAgICAgICAgICAgICAnIC1JJyArIHRvcF9sZXZlbF9wYXRoKCdTb3VyY2Un
KSArIFwKKyAgICAgICAgICAgICAgICAgICAnIC1JJyArIHRvcF9sZXZlbF9wYXRoKCdTb3VyY2Un
LCAnSmF2YVNjcmlwdENvcmUnLCAnRm9yd2FyZGluZ0hlYWRlcnMnKSwKKyAgICAgICAgJ2lnbm9y
ZWRfZmlsZXMnOiBnbG9iLmdsb2Ioc3JjX3BhdGgoJ3dlYmtpdCcsICcqcHJpdmF0ZS4qJykpCisg
ICAgfSkKKyAgICByZXR1cm4gKGJ1aWxkX3BhdGgoJ1NvdXJjZScsICdXZWJLaXQnLCAnZ3RrJywg
J3dlYmtpdGd0ay0zLjAucGMnKSwgb3B0aW9ucykKKworY29uZmlndXJlX2xvZ2dpbmcoKQorCisj
IFdlIG5lZWQgdG8gYWRkIHRoZSBKYXZhU2NyaXB0Q29yZSBidWlsZCBkaXJlY3RvcnkgdG8gdGhl
IFBLR19DT05GSUdfUEFUSAorIyBzbyB0aGF0IHBrZ2NvbmZpZyBjYW4gcHJvcGVybHkgcmVzb2x2
ZSB0aGUgbGliamF2YXNjcmlwdGNvcmUgZGVwZW5kZW5jeS4KK29zLmVudmlyb25bJ1BLR19DT05G
SUdfUEFUSCddID0gYnVpbGRfcGF0aCgnU291cmNlJywgJ0phdmFTY3JpcHRDb3JlJykgXAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICc6JyArIG9zLmVudmlyb25bJ1BLR19DT05G
SUdfUEFUSCddCisKK3ByaW50ICJHZW5lcmF0aW5nIFdlYktpdDEgZG9jdW1lbnRhdGlvbi4uLiIK
K3BrZ19jb25maWdfcGF0aCwgb3B0aW9ucyA9IGdldF93ZWJraXQxX29wdGlvbnMoKQorZ2VuZXJh
dG9yID0gZ3RrZG9jLlBrZ0NvbmZpZ0dUS0RvYyhwa2dfY29uZmlnX3BhdGgsICoqb3B0aW9ucykK
K2dlbmVyYXRvci5nZW5lcmF0ZShodG1sPSctLXNraXAtaHRtbCcgbm90IGluIHN5cy5hcmd2KQor
CisjIFdlYktpdDIgbWlnaHQgbm90IGJlIGVuYWJsZWQsIHNvIGNoZWNrIGZvciB0aGUgcGtnLWNv
bmZpZyBmaWxlIGJlZm9yZSBidWlsZGluZyBkb2N1bWVudGF0aW9uLgoraWYgb3MucGF0aC5leGlz
dHMoYnVpbGRfcGF0aCgnU291cmNlJywgJ1dlYktpdDInLCAnd2Via2l0Mmd0ay0zLjAucGMnKSk6
CisgICAgcHJpbnQgIlxuR2VuZXJhdGluZyBXZWJLaXQyIGRvY3VtZW50YXRpb24uLi4iCisgICAg
cGtnX2NvbmZpZ19wYXRoLCBvcHRpb25zID0gZ2V0X3dlYmtpdDJfb3B0aW9ucygpCisgICAgZ2Vu
ZXJhdG9yID0gZ3RrZG9jLlBrZ0NvbmZpZ0dUS0RvYyhwa2dfY29uZmlnX3BhdGgsICoqb3B0aW9u
cykKKyAgICBnZW5lcmF0b3IuZ2VuZXJhdGUoaHRtbD0nLS1za2lwLWh0bWwnIG5vdCBpbiBzeXMu
YXJndikKKworc3lzLmV4aXQoZ2VuZXJhdG9yLnNhd193YXJuaW5ncykKZGlmZiAtLWdpdCBhL1Rv
b2xzL2d0ay9ndGtkb2MucHkgYi9Ub29scy9ndGsvZ3RrZG9jLnB5Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBiY2Fm
NGVjNzc1NTJjYjU1YTc3ZDJjOThhYjgxN2ZjNGE1N2MwNjQKLS0tIC9kZXYvbnVsbAorKysgYi9U
b29scy9ndGsvZ3RrZG9jLnB5CkBAIC0wLDAgKzEsMzcyIEBACisjIENvcHlyaWdodCAoQykgMjAx
MSBJZ2FsaWEgUy5MLgorIworIyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisjIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisjIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisjIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyMgTGljZW5zZSBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorIyBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAw
MjExMC0xMzAxICBVU0EKKworaW1wb3J0IGVycm5vCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IG9z
CitpbXBvcnQgb3MucGF0aAoraW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCBzeXMKKworCitjbGFz
cyBHVEtEb2Mob2JqZWN0KToKKworICAgICIiIkNsYXNzIHRoYXQgY29udHJvbHMgYSBndGtkb2Mg
cnVuLgorCisgICAgRWFjaCBpbnN0YW5jZSBvZiB0aGlzIGNsYXNzIHJlcHJlc2VudHMgb25lIGd0
a2RvYyBjb25maWd1cmF0aW9uCisgICAgYW5kIHNldCBvZiBkb2N1bWVudGF0aW9uLiBUaGUgZ3Rr
ZG9jIHBhY2thZ2UgaXMgYSBzZXJpZXMgb2YgdG9vbHMKKyAgICBydW4gY29uc2VjdXRpdmVseSB3
aGljaCBjb252ZXJ0cyBpbmxpbmUgQy9DKysgZG9jdW1lbnRhdGlvbiBpbnRvCisgICAgZG9jYm9v
ayBmaWxlcyBhbmQgdGhlbiBpbnRvIEhUTUwuIFRoaXMgY2xhc3MgaXMgc3VpdGFibGUgZm9yCisg
ICAgZ2VuZXJhdGluZyBkb2N1bWVudGF0aW9uIG9yIHNpbXBseSB2ZXJpZnlpbmcgY29ycmVjdG5l
c3MuCisKKyAgICBLZXl3b3JkIGFyZ3VtZW50czoKKyAgICBvdXRwdXRfZGlyICAgICAgICAgLS0g
VGhlIHBhdGggd2hlcmUgZ3RrZG9jIG91dHB1dCBzaG91bGQgYmUgcGxhY2VkLiBHZW5lcmF0aW9u
CisgICAgICAgICAgICAgICAgICAgICAgICAgIG1heSBvdmVyd3JpdGUgZmlsZSBpbiB0aGlzIGRp
cmVjdG9yeS4gUmVxdWlyZWQuCisgICAgbW9kdWxlX25hbWUgICAgICAgIC0tIFRoZSBuYW1lIG9m
IHRoZSBkb2N1bWVudGF0aW9uIG1vZHVsZS4gRm9yIGxpYnJhcmllcyB0aGlzCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlzIHR5cGljYWxseSB0aGUgbGlicmFyeSBuYW1lLiBSZXF1aXJlZCBp
ZiBub3QgbGlicmFyeSBwYXRoCisgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIGdpdmVuLgor
ICAgIHNvdXJjZV9kaXJzICAgICAgICAtLSBBIGxpc3Qgb2YgcGF0aHMgdG8gdGhlIHNvdXJjZSBj
b2RlIHRvIGJlIHNjYW5uZWQuIFJlcXVpcmVkLgorICAgIGlnbm9yZWRfZmlsZXMgICAgICAtLSBB
IGxpc3Qgb2YgZmlsZW5hbWVzIHRvIGlnbm9yZSBpbiB0aGUgc291cmNlIGRpcmVjdG9yeS4gSXQg
aXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgb25seSBuZWNlc3NhcnkgdG8gcHJvdmlkZSB0
aGUgYmFzZW5hbWVzIG9mIHRoZXNlIGZpbGVzLgorICAgICAgICAgICAgICAgICAgICAgICAgICBU
eXBpY2FsbHkgaXQgaXMgaW1wb3J0YW50IHRvIHByb3ZpZGUgYW4gdXBkYXRlZCBsaXN0IG9mCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZWQgZmlsZXMgdG8gcHJldmVudCB3YXJuaW5n
cyBhYm91dCB1bmRvY3VtZW50ZWQgc3ltYm9scy4KKyAgICBkZWNvcmF0b3IgICAgICAgICAgLS0g
SWYgYSBkZWNvcmF0b3IgaXMgdXNlZCB0byB1bmhpZGUgY2VydGFpbiBzeW1ib2xzIGluIGhlYWRl
cgorICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlcyB0aGlzIHBhcmFtZXRlciBpcyByZXF1
aXJlZCBmb3Igc3VjY2Vzc2Z1bCBzY2FubmluZy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
KGRlZmF1bHQgJycpCisgICAgZGVwcmVjYXRpb25fZ3VhcmQgIC0tIGd0a2RvYyB0cmllcyB0byBl
bnN1cmUgdGhhdCBzeW1ib2xzIG1hcmtlZCBhcyBkZXByZWNhdGVkCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIGFyZSBlbmNhc2VkIGluIHRoaXMgQyBwcmVwcm9jZXNzb3IgZGVmaW5lLiBUaGlz
IGlzIHJlcXVpcmVkCisgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGF2b2lkIGd0a2RvYyB3
YXJuaW5ncy4gKGRlZmF1bHQgJycpCisgICAgY2ZsYWdzICAgICAgICAgICAgIC0tIFRoaXMgcGFy
YW1ldGVyIHNwZWNpZmllcyBhbnkgcHJlcHJvY2Vzc29yIGZsYWdzIG5lY2Vzc2FyeSBmb3IKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRpbmcgdGhlIHNjYW5uZXIgYmluYXJ5IGR1cmlu
ZyBndGtkb2Mtc2Nhbm9iai4gVHlwaWNhbGx5CisgICAgICAgICAgICAgICAgICAgICAgICAgIHRo
aXMgaW5jbHVkZXMgYWxsIGFic29sdXRlIGluY2x1ZGUgcGF0aHMgbmVjZXNzYXJ5IHRvIHJlc29s
dmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsIGhlYWRlciBkZXBlbmRlbmNpZXMuIChk
ZWZhdWx0ICcnKQorICAgIGxkZmxhZ3MgICAgICAgICAgICAtLSBUaGlzIHBhcmFtZXRlciBzcGVj
aWZpZXMgYW55IGxpbmtlciBmbGFncyBuZWNlc3NhcnkgZm9yCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJ1aWxkaW5nIHRoZSBzY2FubmVyIGJpbmFyeSBkdXJpbmcgZ3RrZG9jLXNjYW5vYmou
IFR5cGljYWxseQorICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzIGluY2x1ZGVzICItbHlv
dXJsaWJyYXJ5bmFtZSIuIChkZWZhdWx0ICcnKQorICAgIGxpYnJhcnlfcGF0aCAgICAgICAtLSBU
aGlzIHBhcmFtZXRlciBzcGVjaWZpZXMgdGhlIHBhdGggdG8gdGhlIGRpcmVjdG9yeSB3aGVyZSB5
b3UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyeSByZXNpZGVzIHVzZWQgZm9yIGJ1
aWxkaW5nIHRoZSBzY2FubmVyIGJpbmFyeSBkdXJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgZ3RrZG9jLXNjYW5vYmouIChkZWZhdWx0ICcnKQorCisgICAgZG9jX2RpciAgICAgICAgICAg
IC0tIFRoZSBwYXRoIHRvIG90aGVyIGRvY3VtZW50YXRpb24gZmlsZXMgbmVjZXNzYXJ5IHRvIGJ1
aWxkCisgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBkb2N1bWVudGF0aW9uLiBUaGlzIGZp
bGVzIGluIHRoaXMgZGlyZWN0b3J5IGFzIHdlbGwgYXMKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgdGhlIGZpbGVzIGluIHRoZSAnaHRtbCcgc3ViZGlyZWN0b3J5IHdpbGwgYmUgY29waWVkCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3Vyc2l2ZWx5IGludG8gdGhlIG91dHB1dCBkaXJl
Y3RvcnkuIChkZWZhdWx0ICcnKQorICAgIG1haW5fc2dtbF9maWxlICAgICAtLSBUaGUgcGF0aCBv
ciBuYW1lIChpZiBhIGRvY19kaXIgaXMgZ2l2ZW4pIG9mIHRoZSBTR01MIGZpbGUKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGhhdCBpcyB0aGUgY29uc2lkZXJlZCB0aGUgbWFpbiBwYWdlIG9m
IHlvdXIgZG9jdW1lbnRhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlZmF1bHQ6
IDxtb2R1bGVfbmFtZT4tZG9jcy5zZ21sKQorICAgIHZlcnNpb24gICAgICAgICAgICAtLSBUaGUg
dmVyc2lvbiBudW1iZXIgb2YgdGhlIG1vZHVsZS4gSWYgdGhpcyBpcyBwcm92aWRlZCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgYSB2ZXJzaW9uLnhtbCBmaWxlIGNvbnRhaW5pbmcgdGhlIHZl
cnNpb24gd2lsbCBiZSBjcmVhdGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgIGluIHRoZSBv
dXRwdXQgZGlyZWN0b3J5IGR1cmluZyBkb2N1bWVudGF0aW9uIGdlbmVyYXRpb24uCisKKyAgICBp
bnRlcmFjdGl2ZSAgICAgICAgLS0gV2hldGhlciBvciBub3QgZXJyb3JzIG9yIHdhcm5pbmdzIHNo
b3VsZCBwcm9tcHQgdGhlIHVzZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gY29udGlu
dWUgb3Igbm90LiBXaGVuIHRoaXMgdmFsdWUgaXMgZmFsc2UsIGdlbmVyYXRpb24KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgd2lsbCBjb250aW51ZSBkZXNwaXRlIHdhcm5pbmdzLiAoZGVmYXVs
dCBGYWxzZSkKKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqKmFyZ3MpOgorCisg
ICAgICAgICMgUGFyYW1ldGVycyBzcGVjaWZpYyB0byBzY2FubmluZy4KKyAgICAgICAgc2VsZi5t
b2R1bGVfbmFtZSA9ICcnCisgICAgICAgIHNlbGYuc291cmNlX2RpcnMgPSBbXQorICAgICAgICBz
ZWxmLmlnbm9yZWRfZmlsZXMgPSBbXQorICAgICAgICBzZWxmLmRlY29yYXRvciA9ICcnCisgICAg
ICAgIHNlbGYuZGVwcmVjYXRpb25fZ3VhcmQgPSAnJworCisgICAgICAgICMgUGFyYW1ldGVycyBz
cGVjaWZpYyB0byBndGtkb2Mtc2Nhbm9iai4KKyAgICAgICAgc2VsZi5jZmxhZ3MgPSAnJworICAg
ICAgICBzZWxmLmxkZmxhZ3MgPSAnJworICAgICAgICBzZWxmLmxpYnJhcnlfcGF0aCA9ICcnCisK
KyAgICAgICAgIyBQYXJhbWV0ZXJzIHNwZWNpZmljIHRvIGdlbmVyYXRpb24uCisgICAgICAgIHNl
bGYub3V0cHV0X2RpciA9ICcnCisgICAgICAgIHNlbGYuZG9jX2RpciA9ICcnCisgICAgICAgIHNl
bGYubWFpbl9zZ21sX2ZpbGUgPSAnJworCisgICAgICAgIHNlbGYuaW50ZXJhY3RpdmUgPSBGYWxz
ZQorCisgICAgICAgIHNlbGYubG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoJ2d0a2RvYycpCisK
KyAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gYXJncy5pdGVyaXRlbXMoKToKKyAgICAgICAgICAg
IHNldGF0dHIoc2VsZiwga2V5LCB2YWx1ZSkKKworICAgICAgICBkZWYgcmFpc2VfZXJyb3JfaWZf
bm90X3NwZWNpZmllZChrZXkpOgorICAgICAgICAgICAgaWYgbm90IGdldGF0dHIoc2VsZiwga2V5
KToKKyAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJyVzIG5vdCBzcGVjaWZpZWQuJyAl
IGtleSkKKworICAgICAgICByYWlzZV9lcnJvcl9pZl9ub3Rfc3BlY2lmaWVkKCdvdXRwdXRfZGly
JykKKyAgICAgICAgcmFpc2VfZXJyb3JfaWZfbm90X3NwZWNpZmllZCgnc291cmNlX2RpcnMnKQor
ICAgICAgICByYWlzZV9lcnJvcl9pZl9ub3Rfc3BlY2lmaWVkKCdtb2R1bGVfbmFtZScpCisKKyAg
ICAgICAgIyBNYWtlIGFsbCBwYXRocyBhYnNvbHV0ZSBpbiBjYXNlIHdlIHdlcmUgcGFzc2VkIHJl
bGF0aXZlIHBhdGhzLCBzaW5jZQorICAgICAgICAjIHdlIGNoYW5nZSB0aGUgY3VycmVudCB3b3Jr
aW5nIGRpcmVjdG9yeSB3aGVuIGV4ZWN1dGluZyBzdWJjb21tYW5kcy4KKyAgICAgICAgc2VsZi5v
dXRwdXRfZGlyID0gb3MucGF0aC5hYnNwYXRoKHNlbGYub3V0cHV0X2RpcikKKyAgICAgICAgc2Vs
Zi5zb3VyY2VfZGlycyA9IFtvcy5wYXRoLmFic3BhdGgoeCkgZm9yIHggaW4gc2VsZi5zb3VyY2Vf
ZGlyc10KKyAgICAgICAgaWYgc2VsZi5saWJyYXJ5X3BhdGg6CisgICAgICAgICAgICBzZWxmLmxp
YnJhcnlfcGF0aCA9IG9zLnBhdGguYWJzcGF0aChzZWxmLmxpYnJhcnlfcGF0aCkKKworICAgICAg
ICBpZiBub3Qgc2VsZi5tYWluX3NnbWxfZmlsZToKKyAgICAgICAgICAgIHNlbGYubWFpbl9zZ21s
X2ZpbGUgPSBzZWxmLm1vZHVsZV9uYW1lICsgIi1kb2NzLnNnbWwiCisKKyAgICBkZWYgZ2VuZXJh
dGUoc2VsZiwgaHRtbD1UcnVlKToKKyAgICAgICAgc2VsZi5zYXdfd2FybmluZ3MgPSBGYWxzZQor
CisgICAgICAgIHNlbGYuX2NvcHlfZG9jX2ZpbGVzX3RvX291dHB1dF9kaXIoaHRtbCkKKyAgICAg
ICAgc2VsZi5fd3JpdGVfdmVyc2lvbl94bWwoKQorICAgICAgICBzZWxmLl9ydW5fZ3RrZG9jX3Nj
YW4oKQorICAgICAgICBzZWxmLl9ydW5fZ3RrZG9jX3NjYW5nb2JqKCkKKyAgICAgICAgc2VsZi5f
cnVuX2d0a2RvY19ta3RtcGwoKQorICAgICAgICBzZWxmLl9ydW5fZ3RrZG9jX21rZGIoKQorCisg
ICAgICAgIGlmIG5vdCBodG1sOgorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgc2VsZi5f
cnVuX2d0a2RvY19ta2h0bWwoKQorICAgICAgICBzZWxmLl9ydW5fZ3RrZG9jX2ZpeHhyZWYoKQor
CisgICAgZGVmIF9kZWxldGVfZmlsZV9pZl9leGlzdHMoc2VsZiwgcGF0aCk6CisgICAgICAgIGlm
IG5vdCBvcy5hY2Nlc3MocGF0aCwgb3MuRl9PSyB8IG9zLlJfT0spOgorICAgICAgICAgICAgcmV0
dXJuCisgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCdkZWxldGluZyAlcycsIHBhdGgpCisgICAg
ICAgIG9zLnVubGluayhwYXRoKQorCisgICAgZGVmIF9jcmVhdGVfZGlyZWN0b3J5X2lmX25vbmV4
aXN0ZW50KHNlbGYsIHBhdGgpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBvcy5tYWtlZGly
cyhwYXRoKQorICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlcnJvcjoKKyAgICAgICAgICAgIGlm
IGVycm9yLmVycm5vICE9IGVycm5vLkVFWElTVDoKKyAgICAgICAgICAgICAgICByYWlzZQorCisg
ICAgZGVmIF9yYWlzZV9leGNlcHRpb25faWZfZmlsZV9pbmFjY2Vzc2libGUoc2VsZiwgcGF0aCk6
CisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhwYXRoKSBvciBub3Qgb3MuYWNjZXNzKHBh
dGgsIG9zLlJfT0spOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJDb3VsZCBub3QgYWNj
ZXNzIGZpbGUgYXQ6ICVzIiAlIHBhdGgpCisKKyAgICBkZWYgX291dHB1dF9oYXNfd2FybmluZ3Mo
c2VsZiwgb3V0cHV0cyk6CisgICAgICAgIGZvciBvdXRwdXQgaW4gb3V0cHV0czoKKyAgICAgICAg
ICAgIGlmIG91dHB1dCBhbmQgb3V0cHV0LmZpbmQoJ3dhcm5pbmcnKToKKyAgICAgICAgICAgICAg
ICByZXR1cm4gVHJ1ZQorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBfYXNrX3llc19v
cl9ub19xdWVzdGlvbihzZWxmLCBxdWVzdGlvbik6CisgICAgICAgIGlmIG5vdCBzZWxmLmludGVy
YWN0aXZlOgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKworICAgICAgICBxdWVzdGlvbiArPSAn
IFt5L05dICcKKyAgICAgICAgYW5zd2VyID0gTm9uZQorICAgICAgICB3aGlsZSBhbnN3ZXIgIT0g
J3knIGFuZCBhbnN3ZXIgIT0gJ24nIGFuZCBhbnN3ZXIgIT0gJyc6CisgICAgICAgICAgICBhbnN3
ZXIgPSByYXdfaW5wdXQocXVlc3Rpb24pLmxvd2VyKCkKKyAgICAgICAgcmV0dXJuIGFuc3dlciA9
PSAneScKKworICAgIGRlZiBfcnVuX2NvbW1hbmQoc2VsZiwgYXJncywgZW52PU5vbmUsIGN3ZD1O
b25lLCBwcmludF9vdXRwdXQ9VHJ1ZSk6CisgICAgICAgIGlmIHByaW50X291dHB1dDoKKyAgICAg
ICAgICAgIHNlbGYubG9nZ2VyLmluZm8oIlJ1bm5pbmcgJXMiLCBhcmdzWzBdKQorICAgICAgICBz
ZWxmLmxvZ2dlci5kZWJ1ZygiRnVsbCBjb21tYW5kIGFyZ3M6ICVzIiwgc3RyKGFyZ3MpKQorCisg
ICAgICAgIHByb2Nlc3MgPSBzdWJwcm9jZXNzLlBvcGVuKGFyZ3MsIGVudj1lbnYsIGN3ZD1jd2Qs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJ
UEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNz
LlBJUEUpCisgICAgICAgIHN0ZG91dCwgc3RkZXJyID0gcHJvY2Vzcy5jb21tdW5pY2F0ZSgpCisK
KyAgICAgICAgaWYgcHJpbnRfb3V0cHV0OgorICAgICAgICAgICAgaWYgc3Rkb3V0OgorICAgICAg
ICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoc3Rkb3V0KQorICAgICAgICAgICAgaWYgc3RkZXJy
OgorICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoc3RkZXJyKQorCisgICAgICAgIGlm
IHByb2Nlc3MucmV0dXJuY29kZSAhPSAwOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCcl
cyBwcm9kdWNlZCBhIG5vbi16ZXJvIHJldHVybiBjb2RlICVpJworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAlIChhcmdzWzBdLCBwcm9jZXNzLnJldHVybmNvZGUpKQorCisgICAgICAgIGlm
ICd3YXJuaW5nJyBpbiBzdGRlcnIgb3IgJ3dhcm5pbmcnIGluIHN0ZG91dDoKKyAgICAgICAgICAg
IHNlbGYuc2F3X3dhcm5pbmdzID0gVHJ1ZQorICAgICAgICAgICAgaWYgbm90IHNlbGYuX2Fza195
ZXNfb3Jfbm9fcXVlc3Rpb24oJyVzIHByb2R1Y2VkIHdhcm5pbmdzLCAnCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHJ5IHRvIGNvbnRpbnVlPycgJSBh
cmdzWzBdKToKKyAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJyVzIHN0ZXAgZmFpbGVk
JyAlIGFyZ3NbMF0pCisKKyAgICAgICAgcmV0dXJuIHN0ZG91dC5zdHJpcCgpCisKKyAgICBkZWYg
X2NvcHlfZG9jX2ZpbGVzX3RvX291dHB1dF9kaXIoc2VsZiwgaHRtbD1UcnVlKToKKyAgICAgICAg
aWYgbm90IHNlbGYuZG9jX2RpcjoKKyAgICAgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oJ05vdCBj
b3B5aW5nIGFueSBmaWxlcyBmcm9tIGRvYyBkaXJlY3RvcnksJworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnIGJlY2F1c2Ugbm8gZG9jIGRpcmVjdG9yeSBnaXZlbi4nKQorICAgICAgICAg
ICAgcmV0dXJuCisKKyAgICAgICAgZGVmIGNvcHlfZmlsZV9yZXBsYWNpbmdfZXhpc3Rpbmcoc3Jj
LCBkZXN0KToKKyAgICAgICAgICAgIGlmIG9zLnBhdGguaXNkaXIoc3JjKToKKyAgICAgICAgICAg
ICAgICBzZWxmLmxvZ2dlci5kZWJ1Zygnc2tpcHBlZCBkaXJlY3RvcnkgJXMnLCAgc3JjKQorICAg
ICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgaWYgbm90IG9zLmFjY2VzcyhzcmMsIG9z
LkZfT0sgfCBvcy5SX09LKToKKyAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1Zygnc2tp
cHBlZCB1bnJlYWRhYmxlICVzJywgc3JjKQorICAgICAgICAgICAgICAgIHJldHVybgorCisgICAg
ICAgICAgICBzZWxmLl9kZWxldGVfZmlsZV9pZl9leGlzdHMoZGVzdCkKKworICAgICAgICAgICAg
c2VsZi5sb2dnZXIuZGVidWcoJ2NyZWF0ZWQgJXMnLCBkZXN0KQorICAgICAgICAgICAgb3MubGlu
ayhzcmMsIGRlc3QpCisKKyAgICAgICAgZGVmIGNvcHlfYWxsX2ZpbGVzX2luX2RpcmVjdG9yeShz
cmMsIGRlc3QpOgorICAgICAgICAgICAgZm9yIHBhdGggaW4gb3MubGlzdGRpcihzcmMpOgorICAg
ICAgICAgICAgICAgIGNvcHlfZmlsZV9yZXBsYWNpbmdfZXhpc3Rpbmcob3MucGF0aC5qb2luKHNy
YywgcGF0aCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBv
cy5wYXRoLmpvaW4oZGVzdCwgcGF0aCkpCisKKyAgICAgICAgc2VsZi5sb2dnZXIuaW5mbygnQ29w
eWluZyB0ZW1wbGF0ZSBmaWxlcyB0byBvdXRwdXQgZGlyZWN0b3J5Li4uJykKKyAgICAgICAgc2Vs
Zi5fY3JlYXRlX2RpcmVjdG9yeV9pZl9ub25leGlzdGVudChzZWxmLm91dHB1dF9kaXIpCisgICAg
ICAgIGNvcHlfYWxsX2ZpbGVzX2luX2RpcmVjdG9yeShzZWxmLmRvY19kaXIsIHNlbGYub3V0cHV0
X2RpcikKKworICAgICAgICBpZiBub3QgaHRtbDoKKyAgICAgICAgICAgIHJldHVybgorCisgICAg
ICAgIHNlbGYubG9nZ2VyLmluZm8oJ0NvcHlpbmcgSFRNTCBmaWxlcyB0byBvdXRwdXQgZGlyZWN0
b3J5Li4uJykKKyAgICAgICAgaHRtbF9zcmNfZGlyID0gb3MucGF0aC5qb2luKHNlbGYuZG9jX2Rp
ciwgJ2h0bWwnKQorICAgICAgICBodG1sX2Rlc3RfZGlyID0gb3MucGF0aC5qb2luKHNlbGYub3V0
cHV0X2RpciwgJ2h0bWwnKQorICAgICAgICBzZWxmLl9jcmVhdGVfZGlyZWN0b3J5X2lmX25vbmV4
aXN0ZW50KGh0bWxfZGVzdF9kaXIpCisKKyAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoaHRtbF9z
cmNfZGlyKToKKyAgICAgICAgICAgIGNvcHlfYWxsX2ZpbGVzX2luX2RpcmVjdG9yeShodG1sX3Ny
Y19kaXIsIGh0bWxfZGVzdF9kaXIpCisKKyAgICBkZWYgX3dyaXRlX3ZlcnNpb25feG1sKHNlbGYp
OgorICAgICAgICBpZiBub3Qgc2VsZi52ZXJzaW9uOgorICAgICAgICAgICAgc2VsZi5sb2dnZXIu
aW5mbygnTm8gdmVyc2lvbiBzcGVjaWZpZWQsIHNvIG5vdCB3cml0aW5nIHZlcnNpb24ueG1sJykK
KyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIHZlcnNpb25feG1sX3BhdGggPSBvcy5wYXRo
LmpvaW4oc2VsZi5vdXRwdXRfZGlyLCAndmVyc2lvbi54bWwnKQorICAgICAgICBzcmNfdmVyc2lv
bl94bWxfcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLmRvY19kaXIsICd2ZXJzaW9uLnhtbCcpCisK
KyAgICAgICAgIyBEb24ndCBvdmVyd3JpdGUgdmVyc2lvbi54bWwgaWYgaXQgd2FzIGluIHRoZSBk
b2MgZGlyZWN0b3J5LgorICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyh2ZXJzaW9uX3htbF9wYXRo
KSBhbmQgXAorICAgICAgICAgICBvcy5wYXRoLmV4aXN0cyhzcmNfdmVyc2lvbl94bWxfcGF0aCk6
CisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBvdXRwdXRfZmlsZSA9IG9wZW4odmVyc2lv
bl94bWxfcGF0aCwgJ3cnKQorICAgICAgICBvdXRwdXRfZmlsZS53cml0ZShzZWxmLnZlcnNpb24p
CisgICAgICAgIG91dHB1dF9maWxlLmNsb3NlKCkKKworICAgIGRlZiBfcnVuX2d0a2RvY19zY2Fu
KHNlbGYpOgorICAgICAgICBhcmdzID0gWydndGtkb2Mtc2NhbicsCisgICAgICAgICAgICAgICAg
Jy0tbW9kdWxlPSVzJyAlIHNlbGYubW9kdWxlX25hbWUsCisgICAgICAgICAgICAgICAgJy0tcmVi
dWlsZC10eXBlcyddCisKKyAgICAgICAgIyBFYWNoIHNvdXJjZSBkaXJlY3Rvcnkgc2hvdWxkIGJl
IGhhdmUgaXRzIG93biAiLS1zb3VyY2UtZGlyPSIgcHJlZml4LgorICAgICAgICBhcmdzLmV4dGVu
ZChbJy0tc291cmNlLWRpcj0lcycgJSBwYXRoIGZvciBwYXRoIGluIHNlbGYuc291cmNlX2RpcnNd
KQorCisgICAgICAgIGlmIHNlbGYuZGVjb3JhdG9yOgorICAgICAgICAgICAgYXJncy5hcHBlbmQo
Jy0taWdub3JlLWRlY29yYXRvcnM9JXMnICUgc2VsZi5kZWNvcmF0b3IpCisgICAgICAgIGlmIHNl
bGYuZGVwcmVjYXRpb25fZ3VhcmQ6CisgICAgICAgICAgICBhcmdzLmFwcGVuZCgnLS1kZXByZWNh
dGVkLWd1YXJkcz0lcycgJSBzZWxmLmRlcHJlY2F0aW9uX2d1YXJkKQorICAgICAgICBpZiBzZWxm
Lm91dHB1dF9kaXI6CisgICAgICAgICAgICBhcmdzLmFwcGVuZCgnLS1vdXRwdXQtZGlyPSVzJyAl
IHNlbGYub3V0cHV0X2RpcikKKworICAgICAgICAjIGd0a2RvYy1zY2FuIHdhbnRzIHRoZSBiYXNl
bmFtZXMgb2YgaWdub3JlZCBoZWFkZXJzLCBzbyBzdHJpcCB0aGUKKyAgICAgICAgIyBkaXJuYW1l
LiBEaWZmZXJlbnQgZnJvbSAiLS1zb3VyY2UtZGlyIiwgdGhlIGhlYWRlcnMgc2hvdWxkIGJlCisg
ICAgICAgICMgc3BlY2lmaWVkIGFzIG9uZSBsb25nIHN0cmluZy4KKyAgICAgICAgaWYgc2VsZi5p
Z25vcmVkX2ZpbGVzOgorICAgICAgICAgICAgaWdub3JlZF9maWxlc19iYXNlbmFtZXMgPSBcCisg
ICAgICAgICAgICAgICAgW29zLnBhdGguYmFzZW5hbWUoeCkgZm9yIHggaW4gc2VsZi5pZ25vcmVk
X2ZpbGVzXQorICAgICAgICAgICAgYXJncy5hcHBlbmQoJy0taWdub3JlLWhlYWRlcnM9JXMnICUg
JyAnLmpvaW4oaWdub3JlZF9maWxlc19iYXNlbmFtZXMpKQorCisgICAgICAgIHNlbGYuX3J1bl9j
b21tYW5kKGFyZ3MpCisKKyAgICBkZWYgX3J1bl9ndGtkb2Nfc2NhbmdvYmooc2VsZik6CisgICAg
ICAgIGVudiA9IG9zLmVudmlyb24KKyAgICAgICAgbGRmbGFncyA9IHNlbGYubGRmbGFncworICAg
ICAgICBpZiBzZWxmLmxpYnJhcnlfcGF0aDoKKyAgICAgICAgICAgIGxkZmxhZ3MgPSAnICItTCVz
IiAnICUgc2VsZi5saWJyYXJ5X3BhdGggKyBsZGZsYWdzCisgICAgICAgICAgICBlbnZbJ1JVTidd
ID0gJ0xEX0xJQlJBUllfUEFUSD0iJXMiICcgJSBzZWxmLmxpYnJhcnlfcGF0aAorICAgICAgICBp
ZiBsZGZsYWdzOgorICAgICAgICAgICAgZW52WydMREZMQUdTJ10gPSBsZGZsYWdzCisgICAgICAg
IGlmIHNlbGYuY2ZsYWdzOgorICAgICAgICAgICAgZW52WydDRkxBR1MnXSA9IHNlbGYuY2ZsYWdz
CisKKyAgICAgICAgaWYgJ0NGTEFHUycgaW4gZW52OgorICAgICAgICAgICAgc2VsZi5sb2dnZXIu
ZGVidWcoJ0NGTEFHUz0lcycsIGVudlsnQ0ZMQUdTJ10pCisgICAgICAgIGlmICdMREZMQUdTJyBp
biBlbnY6CisgICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygnTERGTEFHUyAlcycsIGVudlsn
TERGTEFHUyddKQorICAgICAgICBpZiAnUlVOJyBpbiBlbnY6CisgICAgICAgICAgICBzZWxmLmxv
Z2dlci5kZWJ1ZygnUlVOPSVzJywgZW52WydSVU4nXSkKKyAgICAgICAgc2VsZi5fcnVuX2NvbW1h
bmQoWydndGtkb2Mtc2NhbmdvYmonLCAnLS1tb2R1bGU9JXMnICUgc2VsZi5tb2R1bGVfbmFtZV0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgIGVudj1lbnYsIGN3ZD1zZWxmLm91dHB1dF9kaXIp
CisKKyAgICBkZWYgX3J1bl9ndGtkb2NfbWt0bXBsKHNlbGYpOgorICAgICAgICBhcmdzID0gWydn
dGtkb2MtbWt0bXBsJywgJy0tbW9kdWxlPSVzJyAlIHNlbGYubW9kdWxlX25hbWVdCisgICAgICAg
IHNlbGYuX3J1bl9jb21tYW5kKGFyZ3MsIGN3ZD1zZWxmLm91dHB1dF9kaXIpCisKKyAgICBkZWYg
X3J1bl9ndGtkb2NfbWtkYihzZWxmKToKKyAgICAgICAgc2dtbF9maWxlID0gb3MucGF0aC5qb2lu
KHNlbGYub3V0cHV0X2Rpciwgc2VsZi5tYWluX3NnbWxfZmlsZSkKKyAgICAgICAgc2VsZi5fcmFp
c2VfZXhjZXB0aW9uX2lmX2ZpbGVfaW5hY2Nlc3NpYmxlKHNnbWxfZmlsZSkKKworICAgICAgICBh
cmdzID0gWydndGtkb2MtbWtkYicsCisgICAgICAgICAgICAgICAgJy0tbW9kdWxlPSVzJyAlIHNl
bGYubW9kdWxlX25hbWUsCisgICAgICAgICAgICAgICAgJy0tbWFpbi1zZ21sLWZpbGU9JXMnICUg
c2dtbF9maWxlLAorICAgICAgICAgICAgICAgICctLXNvdXJjZS1zdWZmaXhlcz1oLGMsY3BwLGNj
JywKKyAgICAgICAgICAgICAgICAnLS1vdXRwdXQtZm9ybWF0PXhtbCcsCisgICAgICAgICAgICAg
ICAgJy0tc2dtbC1tb2RlJ10KKworICAgICAgICAjIEVhY2ggZGlyZWN0b3J5IHNob3VsZCBiZSBo
YXZlIGl0cyBvd24gIi0tc291cmNlLWRpcj0iIHByZWZpeC4KKyAgICAgICAgYXJncy5leHRlbmQo
WyctLXNvdXJjZS1kaXI9JXMnICUgcGF0aCBmb3IgcGF0aCBpbiBzZWxmLnNvdXJjZV9kaXJzXSkK
KyAgICAgICAgc2VsZi5fcnVuX2NvbW1hbmQoYXJncywgY3dkPXNlbGYub3V0cHV0X2RpcikKKwor
ICAgIGRlZiBfcnVuX2d0a2RvY19ta2h0bWwoc2VsZik6CisgICAgICAgIGh0bWxfZGVzdF9kaXIg
PSBvcy5wYXRoLmpvaW4oc2VsZi5vdXRwdXRfZGlyLCAnaHRtbCcpCisgICAgICAgIGlmIG5vdCBv
cy5wYXRoLmlzZGlyKGh0bWxfZGVzdF9kaXIpOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9u
KCIlcyBpcyBub3QgYSBkaXJlY3RvcnksIGNvdWxkIG5vdCBnZW5lcmF0ZSBIVE1MIgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICUgaHRtbF9kZXN0X2RpcikKKyAgICAgICAgZWxpZiBub3Qg
b3MuYWNjZXNzKGh0bWxfZGVzdF9kaXIsIG9zLlhfT0sgfCBvcy5SX09LIHwgb3MuV19PSyk6Cisg
ICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIkNvdWxkIG5vdCBhY2Nlc3MgJXMgdG8gZ2VuZXJh
dGUgSFRNTCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIGh0bWxfZGVzdF9kaXIpCisK
KyAgICAgICAgIyBndGtkb2MtbWtodG1sIGV4cGVjdHMgdGhlIFNHTUwgcGF0aCB0byBiZSBhYnNv
bHV0ZS4KKyAgICAgICAgc2dtbF9maWxlID0gb3MucGF0aC5qb2luKG9zLnBhdGguYWJzcGF0aChz
ZWxmLm91dHB1dF9kaXIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5t
YWluX3NnbWxfZmlsZSkKKyAgICAgICAgc2VsZi5fcmFpc2VfZXhjZXB0aW9uX2lmX2ZpbGVfaW5h
Y2Nlc3NpYmxlKHNnbWxfZmlsZSkKKworICAgICAgICBzZWxmLl9ydW5fY29tbWFuZChbJ2d0a2Rv
Yy1ta2h0bWwnLCBzZWxmLm1vZHVsZV9uYW1lLCBzZ21sX2ZpbGVdLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICBjd2Q9aHRtbF9kZXN0X2RpcikKKworICAgIGRlZiBfcnVuX2d0a2RvY19maXh4
cmVmKHNlbGYpOgorICAgICAgICBzZWxmLl9ydW5fY29tbWFuZChbJ2d0a2RvYy1maXh4cmVmJywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICctLW1vZHVsZS1kaXI9aHRtbCcsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnLS1odG1sLWRpcj1odG1sJ10sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIGN3ZD1zZWxmLm91dHB1dF9kaXIpCisKKworY2xhc3MgUGtnQ29uZmlnR1RLRG9j
KEdUS0RvYyk6CisKKyAgICAiIiJDbGFzcyByZWFkcyBhIGxpYnJhcnkncyBwa2djb25maWcgZmls
ZSB0byBndWVzcyBndGtkb2MgcGFyYW1ldGVycy4KKworICAgIFNvbWUgZ3RrZG9jIHBhcmFtZXRl
cnMgY2FuIGJlIGd1ZXNzZWQgYnkgcmVhZGluZyBhIGxpYnJhcnkncyBwa2djb25maWcKKyAgICBm
aWxlLCBpbmNsdWRpbmcgdGhlIGNmbGFncywgbGRmbGFncyBhbmQgdmVyc2lvbiBwYXJhbWV0ZXJz
LiBJZiB5b3UKKyAgICBwcm92aWRlIHRoZXNlIHBhcmFtZXRlcnMgYXMgd2VsbCwgdGhleSB3aWxs
IGJlIGFwcGVuZGVkIHRvIHRoZSBvbmVzCisgICAgZ3Vlc3NlZCB2aWEgdGhlIHBrZ2NvbmZpZyBm
aWxlLgorCisgICAgS2V5d29yZCBhcmd1bWVudHM6CisgICAgICBwa2dfY29uZmlnX3BhdGggLS0g
UGF0aCB0byB0aGUgcGtnY29uZmlnIGZpbGUgZm9yIHRoZSBsaWJyYXJ5LiBSZXF1aXJlZC4KKyAg
ICAiIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwa2dfY29uZmlnX3BhdGgsICoqYXJncyk6
CisgICAgICAgIHN1cGVyKFBrZ0NvbmZpZ0dUS0RvYywgc2VsZikuX19pbml0X18oKiphcmdzKQor
CisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhwa2dfY29uZmlnX3BhdGgpOgorICAgICAg
ICAgICAgcmFpc2UgRXhjZXB0aW9uKCdDb3VsZCBub3QgZmluZCBwa2ctY29uZmlnIGZpbGUgYXQ6
ICVzJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgcGtnX2NvbmZpZ19wYXRoKQorCisg
ICAgICAgIHNlbGYuY2ZsYWdzICs9ICIgIiArIHNlbGYuX3J1bl9jb21tYW5kKFsncGtnLWNvbmZp
ZycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwa2df
Y29uZmlnX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnLS1jZmxhZ3MnXSwgcHJpbnRfb3V0cHV0PUZhbHNlKQorICAgICAgICBzZWxmLmxkZmxh
Z3MgKz0gIiAiICsgc2VsZi5fcnVuX2NvbW1hbmQoWydwa2ctY29uZmlnJywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBrZ19jb25maWdfcGF0aCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLWxpYnMnXSwg
cHJpbnRfb3V0cHV0PUZhbHNlKQorICAgICAgICBzZWxmLnZlcnNpb24gPSBzZWxmLl9ydW5fY29t
bWFuZChbJ3BrZy1jb25maWcnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcGtnX2NvbmZpZ19wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJy0tbW9kdmVyc2lvbiddLCBwcmludF9vdXRwdXQ9RmFsc2UpCmRpZmYgLS1naXQg
YS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggN2RmNTlkMTBmM2Y5ZTk0YWVkY2E4OWI0OTIy
NmE1MmJmZWU1NzJjNS4uNGNmOWMyOWU4MWQ3ZTNiODUxNzIzMTUyODgxNTE1NzA4YzM0ODcyMyAx
MDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisy
MDExLTExLTE3ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAg
ICAgICBbR1RLXSBJbnRlZ3JhdGUgYnVpbGQtZ3RrZG9jIGludG8gYnVpbGQtd2Via2l0IGFuZCBt
YWtlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjYy
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR05V
bWFrZWZpbGUuYW06IFJlbW92ZSByZWZlcmVuY2VzIHRvIG9sZCBndGtkb2MgZmlsZXMuIFVwZGF0
ZQorICAgICAgICB0aGUgZGlzdC1ob29rIHRvIGluY2x1ZGUgY29weWluZyBkb2N1bWVudGF0aW9u
IGludG8gdGhlIGRpc3RyaWJ1dGlvbi4KKyAgICAgICAgVGhpcyBhbHNvIG1lYW5zIHRoYXQgdGhl
IGJ1aWxkIHdpbGwgZmFpbCBpZiBkb2N1bWVudGF0aW9uIGhhc24ndCBiZWVuCisgICAgICAgIGdl
bmVyYXRlZCBiZWZvcmUgJ21ha2UgZGlzdC4nCisgICAgICAgICogY29uZmlndXJlLmFjOiBEaXR0
by4KKwogMjAxMS0xMS0yMyAgUmFwaGFlbCBLdWJvIGRhIENvc3RhICA8a3Vib0Bwcm9mdXNpb24u
bW9iaT4KIAogICAgICAgICBbQ01ha2VdIE1vdmUgdGhlIHRvcC1sZXZlbCBsb2dpYyB0byB0aGUg
dG9wLWxldmVsIGRpcmVjdG9yeS4KZGlmZiAtLWdpdCBhL0dOVW1ha2VmaWxlLmFtIGIvR05VbWFr
ZWZpbGUuYW0KaW5kZXggZjkxZTg4ZDg5NmMxMTVjNGFhM2QzYjk3ZDFhOGVkMTY2NTU1YzU5Ni4u
NWU4Zjg2NTRiOGYyMjZiZTM4YTA2ZmMzNjc1ZmFjNTRlMDcxOGVjNiAxMDA2NDQKLS0tIGEvR05V
bWFrZWZpbGUuYW0KKysrIGIvR05VbWFrZWZpbGUuYW0KQEAgLTIwNyw3ICsyMDcsNiBAQCBpbmNs
dWRlIFNvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtCiBpbmNsdWRlIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2dvYmplY3QvR05VbWFrZWZpbGUuYW0KIGluY2x1ZGUgVG9vbHMvR05VbWFr
ZWZpbGUuYW0KIGluY2x1ZGUgU291cmNlL1dlYktpdC9ndGsvcG8vR05VbWFrZWZpbGUuYW0KLWlu
Y2x1ZGUgU291cmNlL1dlYktpdC9ndGsvZG9jcy9HTlVtYWtlZmlsZS5hbQogaW5jbHVkZSBUb29s
cy9EdW1wUmVuZGVyVHJlZS9ndGsvR05VbWFrZWZpbGUuSW1hZ2VEaWZmLmFtCiAKIGlmIEVOQUJM
RV9XRUJLSVQyCkBAIC0yNjUsMyArMjY0LDE2IEBAIGNsZWFuLWxvY2FsOgogbWFpbnRhaW5lci1j
bGVhbi1sb2NhbDogZGlzdGNsZWFuLWxvY2FsCiBkaXN0Y2xlYW4tbG9jYWw6CiAJLXJtIC1yZiAk
KEdFTlNPVVJDRVMpICQoR0VOUFJPR1JBTVMpCisKK2Rpc3QtaG9vazoKKwljcCAkKFdlYktpdCkv
TkVXUyAkKGRpc3RkaXIpCisJQG1rZGlyIC1wICQoZGlzdGRpcikvRG9jdW1lbnRhdGlvbi93ZWJr
aXRndGsvaHRtbAorCUBta2RpciAtcCAkKGRpc3RkaXIpL0RvY3VtZW50YXRpb24vd2Via2l0Z3Rr
L3RtcGwKKwlALWNwIC4vRG9jdW1lbnRhdGlvbi93ZWJraXRndGsvdG1wbC8qLnNnbWwgJChkaXN0
ZGlyKS9Eb2N1bWVudGF0aW9uL3dlYmtpdGd0ay90bXBsCisJQGNwIC4vRG9jdW1lbnRhdGlvbi93
ZWJraXRndGsvaHRtbC8qICQoZGlzdGRpcikvRG9jdW1lbnRhdGlvbi93ZWJraXRndGsvaHRtbAor
aWYgRU5BQkxFX1dFQktJVDIKKwlAbWtkaXIgLXAgJChkaXN0ZGlyKS9Eb2N1bWVudGF0aW9uL3dl
YmtpdDJndGsvaHRtbAorCUBta2RpciAtcCAkKGRpc3RkaXIpL0RvY3VtZW50YXRpb24vd2Via2l0
Mmd0ay90bXBsCisJQC1jcCAuL0RvY3VtZW50YXRpb24vd2Via2l0Mmd0ay90bXBsLyouc2dtbCAk
KGRpc3RkaXIpL0RvY3VtZW50YXRpb24vd2Via2l0Mmd0ay90bXBsCisJQGNwIC4vRG9jdW1lbnRh
dGlvbi93ZWJraXQyZ3RrL2h0bWwvKiAkKGRpc3RkaXIpL0RvY3VtZW50YXRpb24vd2Via2l0Mmd0
ay9odG1sCitlbmRpZgpkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCmlu
ZGV4IGZhODM5NGMwZDE4OGRkMWE4MjVmMTNhNDg2OTQ2YjNiNzVkNmZiMGQuLmZjY2MyYzFmMjJk
NzY4MTg2ODIxOTBiMGVkOTJlNmYxMmIzZTY0ZWIgMTAwNjQ0Ci0tLSBhL2NvbmZpZ3VyZS5hYwor
KysgYi9jb25maWd1cmUuYWMKQEAgLTEyMTAsNyArMTIxMCw2IEBAIEdOVW1ha2VmaWxlCiAKIEFD
X0NPTkZJR19GSUxFUyhbCiBTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0dmVyc2lvbi5o
Ci1Eb2N1bWVudGF0aW9uL3ZlcnNpb24ueG1sOlNvdXJjZS9XZWJLaXQvZ3RrL2RvY3MvdmVyc2lv
bi54bWwuaW4KIF0pCiAKIEFDX0NPTkZJR19GSUxFUyhbCkBAIC0xMjQ2LDYgKzEyNDUsNyBAQCBC
dWlsZCBjb25maWd1cmF0aW9uOgogIEZvbnQgYmFja2VuZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDogJHdpdGhfZm9udF9iYWNrZW5kCiAgT3B0aW1pemVkIG1l
bW9yeSBhbGxvY2F0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAkZW5hYmxlX2Zh
c3RfbWFsbG9jCiAgSmF2YVNjcmlwdCBFbmdpbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgOiAkd2l0aF9qc2VuZ2luZQorCiBGZWF0dXJlczoKICAzRCBSZW5kZXJpbmcg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICRlbmFibGVfM2Rf
cmVuZGVyaW5nCiAgV2ViR0wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgOiAkZW5hYmxlX3dlYmdsCkBAIC0xMzA1LDYgKzEzMDUsNyBAQCBHVEsrIGNv
bmZpZ3VyYXRpb246CiAgR0RLIHRhcmdldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgOiAkd2l0aF90YXJnZXQKICBIaWxkb24gVUkgZXh0ZW5zaW9ucyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICR3aXRoX2hpbGRvbgogIEludHJvc3Bl
Y3Rpb24gc3VwcG9ydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJGVuYWJs
ZV9pbnRyb3NwZWN0aW9uCisgR2VuZXJhdGUgZG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgOiAkZW5hYmxlX2d0a19kb2MKICIKIGlmIHRlc3QgIiR3aXRoX3Vu
aWNvZGVfYmFja2VuZCIgPSAiZ2xpYiI7IHRoZW4KICAgIGVjaG8gIiAgICAgPj4gV0FSTklORzog
dGhlIGdsaWItYmFzZWQgdW5pY29kZSBiYWNrZW5kIGlzIHNsb3cgYW5kIGluY29tcGxldGUgPDwi
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116498</attachid>
            <date>2011-11-24 04:45:59 -0800</date>
            <delta_ts>2011-11-24 08:14:52 -0800</delta_ts>
            <desc>Fix a couple bugs</desc>
            <filename>bug-72626-20111124134557.patch</filename>
            <type>text/plain</type>
            <size>64822</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxMDU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0
ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggZDlkMjhmOGRl
MTRmMjQ4ZjU4MjM1MmNjOGFkOTE4NDk0M2EyMTllZS4uNDM2Y2QxMmVmNzE3MmJmNThjMmY3YTgw
ZWY5NTM0MGY4NzUzYzg5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEx
LTExLTE3ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAg
ICBbR1RLXSBJbnRlZ3JhdGUgYnVpbGQtZ3RrZG9jIGludG8gYnVpbGQtd2Via2l0IGFuZCBtYWtl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjYyNgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZG9jcy9H
TlVtYWtlZmlsZS5hbTogUmVtb3ZlZC4KKyAgICAgICAgKiBkb2NzL3ZlcnNpb24ueG1sLmluOiBS
ZW1vdmVkLgorCiAyMDExLTExLTIzICBLYXVzdHViaCBBdHJhd2Fsa2FyICA8a2F1c3R1YmhAbW90
b3JvbGEuY29tPgogCiAgICAgICAgIERvY3VtZW50YXRpb24gZml4IGZvciBsb2FkLWNvbW1pdHRl
ZCBpbiB3ZWJraXR3ZWJmcmFtZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDhmZmNiMjI5NjY5YzYyMzllMWNjZDg3
ZTE3ZTUwNzIyMzhlZGVkMTAuLjQ2YTVkYjM4NGY1YmY4MWY1Nzg3ZTMzZDIyOTg0MWFjNmEwMDcx
YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0xMS0xNyAgTWFydGluIFJvYmlu
c29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gSW50ZWdyYXRlIGJ1
aWxkLWd0a2RvYyBpbnRvIGJ1aWxkLXdlYmtpdCBhbmQgbWFrZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzI2MjYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBSZW1vdmVkIHJl
ZmVyZW5jZXMgdG8gYnVpbGQtZ3RrZG9jIGFuZCBndGtkb2MucHkuCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9ndGsvZG9jcy9idWlsZC1ndGtkb2M6IFJlbW92ZWQuCisKIDIwMTEtMTEtMjMgIFJh
cGhhZWwgS3VibyBkYSBDb3N0YSAgPGt1Ym9AcHJvZnVzaW9uLm1vYmk+CiAKICAgICAgICAgW0NN
YWtlXSBNb3ZlIHRoZSB0b3AtbGV2ZWwgbG9naWMgdG8gdGhlIHRvcC1sZXZlbCBkaXJlY3Rvcnku
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9X
ZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtCmluZGV4IDc1MmM5ZTY1MTUyNWY5ZGMyMTA5ZDFiNjMx
OTA4YzYxOTQ2NzY1ZmIuLmUzNGI0NDIzNWNkZmRmNjdkOTE2ZWE3YTk2NmI5ZjI2YTE4MGNjNWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJj
ZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtCkBAIC0zODQsOCArMzg0LDEyIEBAIGdzZXR0aW5n
c19TQ0hFTUFTID0gJCh0b3BfYnVpbGRkaXIpL1NvdXJjZS9XZWJLaXQvZ3RrL29yZy53ZWJraXRn
dGstQFdFQktJVEdUS19BCiBFWFRSQV9ESVNUICs9IFwKIAkkKFdlYktpdCkvQ2hhbmdlTG9nIFwK
IAkkKFdlYktpdCkvTkVXUyBcCisJJChXZWJLaXQpL2RvY3Mvd2Via2l0Z3RrLWRvY3Muc2dtbCBc
CisJJChXZWJLaXQpL2RvY3Mvd2Via2l0Z3RrLXNlY3Rpb25zLnR4dCBcCisJJChXZWJLaXQpL2Rv
Y3Mvd2Via2l0Z3RrLnR5cGVzIFwKKwkkKFdlYktpdCkvZG9jcy93ZWJraXRlbnZpcm9ubWVudC54
bWwgXAorCSQoV2ViS2l0KS9kb2NzL3dlYmtpdGd0ay1vdmVycmlkZXMudHh0IFwKIAkkKFdlYktp
dCkvd2Via2l0bWFyc2hhbC5saXN0IFwKLQkkKFdlYktpdCkvR05VbWFrZWZpbGUuZ3RrLWRvYy5h
bSBcCiAJJChXZWJLaXQpL3BvLyogXAogCSQoV2ViS2l0KS9yZXNvdXJjZXMvKiBcCiAJJChXZWJL
aXQpL3Rlc3RzL3Jlc291cmNlcy8qIFwKQEAgLTU5Myw4ICs1OTcsNiBAQCBESVNUQ0xFQU5GSUxF
UyArPSBcCiAJJCh0b3BfYnVpbGRkaXIpL1NvdXJjZS9XZWJLaXQvZ3RrL29yZy53ZWJraXRndGst
QFdFQktJVEdUS19BUElfVkVSU0lPTkAuZ3NjaGVtYS54bWwgXAogCSQodG9wX2J1aWxkZGlyKS9T
b3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0dmVyc2lvbi5oCiAKLWRpc3QtaG9vazoKLQlj
cCAkKFdlYktpdCkvTkVXUyAkKGRpc3RkaXIpCiBpbnN0YWxsLWRhdGEtbG9jYWw6IHBvLWluc3Rh
bGwtZGF0YS1sb2NhbAogaW5zdGFsbGRpcnMtZGF0YS1sb2NhbDogcG8taW5zdGFsbGRpcnMtZGF0
YS1sb2NhbAogdW5pbnN0YWxsLWxvY2FsOiBwby11bmluc3RhbGwtbG9jYWwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmd0ay1kb2MuYW0gYi9Tb3VyY2UvV2ViS2l0
L2d0ay9HTlVtYWtlZmlsZS5ndGstZG9jLmFtCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwNTJjNzg4ZDljOWQzYzE1NDIyMmRlOWZlZTA0YWRmZWZjMThhYzIyLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1h
a2VmaWxlLmd0ay1kb2MuYW0KKysrIC9kZXYvbnVsbApAQCAtMSwyMDggKzAsMCBAQAotIyAtKi0g
bW9kZTogbWFrZWZpbGUgLSotCi0KLUdUS0RPQ19DQyA9ICQoTElCVE9PTCkgLS10YWc9Q0MgLS1t
b2RlPWNvbXBpbGUgJChDQykgJChHVEtET0NfSU5DTFVERVMpICQoR1RLRE9DX0RFUFNfQ0ZMQUdT
KSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKEFNX0NGTEFHUykgJChDRkxBR1MpCi1HVEtE
T0NfTEQgPSAkKExJQlRPT0wpIC0tdGFnPUNDIC0tbW9kZT1saW5rICQoQ0MpICQoR1RLRE9DX0RF
UFNfTElCUykgJChBTV9DRkxBR1MpICQoQ0ZMQUdTKSAkKEFNX0xERkxBR1MpICQoTERGTEFHUykK
LUdUS0RPQ19SVU4gPSAkKExJQlRPT0wpIC0tbW9kZT1leGVjdXRlCi0KLVRBUkdFVF9ESVI9JChI
VE1MX0RJUikvJChET0NfTU9EVUxFKQotCi1TRVRVUF9GSUxFUyA9IFwKLQkkKERPQ19NQUlOX1NH
TUxfRklMRSkJCVwKLQl3ZWJraXRlbnZpcm9ubWVudC54bWwJCVwKLQkkKERPQ19NT0RVTEUpLXNl
Y3Rpb25zLnR4dAlcCi0JJChET0NfTU9EVUxFKS1vdmVycmlkZXMudHh0Ci0KLUVYVFJBX0RJU1Qg
Kz0gXAotCSQoSFRNTF9JTUFHRVMpCQkJXAotCSQoU0VUVVBfRklMRVMpCi0KLURPQ19TVEFNUFM9
ZG9jLXNldHVwLWJ1aWxkLnN0YW1wIHNjYW4tYnVpbGQuc3RhbXAgdG1wbC1idWlsZC5zdGFtcCBz
Z21sLWJ1aWxkLnN0YW1wIFwKLQlodG1sLWJ1aWxkLnN0YW1wIHBkZi1idWlsZC5zdGFtcCBcCi0J
dG1wbC5zdGFtcCBzZ21sLnN0YW1wIGh0bWwuc3RhbXAgcGRmLnN0YW1wCi0KLVNDQU5PQkpfRklM
RVMgPSAJCSBcCi0JJChET0NfTU9EVUxFKS5hcmdzIAkgXAotCSQoRE9DX01PRFVMRSkuaGllcmFy
Y2h5ICBcCi0JJChET0NfTU9EVUxFKS5pbnRlcmZhY2VzIFwKLQkkKERPQ19NT0RVTEUpLnByZXJl
cXVpc2l0ZXMgXAotCSQoRE9DX01PRFVMRSkuc2lnbmFscwotCi1SRVBPUlRfRklMRVMgPSBcCi0J
JChET0NfTU9EVUxFKS11bmRvY3VtZW50ZWQudHh0IFwKLQkkKERPQ19NT0RVTEUpLXVuZGVjbGFy
ZWQudHh0IFwKLQkkKERPQ19NT0RVTEUpLXVudXNlZC50eHQKLQotQ0xFQU5GSUxFUyArPSAkKFND
QU5PQkpfRklMRVMpICQoUkVQT1JUX0ZJTEVTKSAkKERPQ19TVEFNUFMpCi0KLWlmIEVOQUJMRV9H
VEtfRE9DCi1IVE1MX0JVSUxEX1NUQU1QPWh0bWwtYnVpbGQuc3RhbXAKLWVuZGlmCi0KLWRvY19z
cmNkaXIgOj0gJChhYnNfc3JjZGlyKS9Tb3VyY2UvV2ViS2l0L2d0ay9kb2NzCi0KLWRvY3M6ICQo
SFRNTF9CVUlMRF9TVEFNUCkKLQotJChSRVBPUlRfRklMRVMpOiBzZ21sLWJ1aWxkLnN0YW1wCi0K
LSMjIyMgc2V0dXAgIyMjIwotCi1kb2Mtc2V0dXAtYnVpbGQuc3RhbXA6IGxpYndlYmtpdGd0ay1A
V0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQC5AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9O
QC5sYQotCS1AbWtkaXIgLXAgRG9jdW1lbnRhdGlvbgotCS1AbG4gLWZzIC4uL2RvbHRsaWJ0b29s
IERvY3VtZW50YXRpb24vCi0JLUBsbiAtZnMgLi4vZG9sdGNvbXBpbGUgRG9jdW1lbnRhdGlvbi8K
LQktQGxuIC1mcyAuLi9saWJ0b29sIERvY3VtZW50YXRpb24vCi0JLUBpZiB0ZXN0ICIkKGFic19z
cmNkaXIpIiAhPSAiJChhYnNfYnVpbGRkaXIpIiA7IHRoZW4gXAotCSAgICBlY2hvICcgIERPQyAg
IFByZXBhcmluZyBidWlsZCc7IFwKLQkgICAgZmlsZXM9YGVjaG8gJChTRVRVUF9GSUxFUykgJChE
T0NfTU9EVUxFKS50eXBlc2A7IFwKLQkgICAgaWYgdGVzdCAieCQkZmlsZXMiICE9ICJ4IiA7IHRo
ZW4gXAotCSAgICAgICAgZm9yIGZpbGUgaW4gJCRmaWxlcyA7IGRvIFwKLQkgICAgICAgICAgICB0
ZXN0IC1mICQoZG9jX3NyY2RpcikvJCRmaWxlICYmIFwKLQkgICAgICAgICAgICAgICAgY3AgLXB1
ICQoZG9jX3NyY2RpcikvJCRmaWxlICQoYWJzX2J1aWxkZGlyKS9Eb2N1bWVudGF0aW9uLyB8fCB0
cnVlOyBcCi0JICAgICAgICBkb25lOyBcCi0JICAgIGZpOyBcCi0JICAgIHRlc3QgLWQgJChkb2Nf
c3JjZGlyKS90bXBsICYmIFwKLQkgICAgICAgIHsgY3AgLXJwICQoZG9jX3NyY2RpcikvdG1wbCAk
KGFic19idWlsZGRpcikvRG9jdW1lbnRhdGlvbi87IFwKLQkgICAgICAgIGNobW9kIC1SIHUrdyAk
KGFic19idWlsZGRpcikvRG9jdW1lbnRhdGlvbi90bXBsOyB9IFwKLQlmaQotCUB0b3VjaCBkb2Mt
c2V0dXAtYnVpbGQuc3RhbXAKLQotIyMjIyBzY2FuICMjIyMKLQotc2Nhbi1idWlsZC5zdGFtcDog
ZG9jLXNldHVwLWJ1aWxkLnN0YW1wICQoSEZJTEVfR0xPQikgJChDRklMRV9HTE9CKQotCUBlY2hv
ICcgIERPQyAgIFNjYW5uaW5nIGhlYWRlciBmaWxlcycKLQlAY2QgRG9jdW1lbnRhdGlvbjsgX3Nv
dXJjZV9kaXI9JycgOyBcCi0JZm9yIGkgaW4gJChET0NfU09VUkNFX0RJUikgOyBkbyBcCi0JICAg
IF9zb3VyY2VfZGlyPSIkJHtfc291cmNlX2Rpcn0gLS1zb3VyY2UtZGlyPS4uLyQkaSIgOyBcCi0J
ZG9uZSA7IFwKLQlndGtkb2Mtc2NhbiAtLW1vZHVsZT0kKERPQ19NT0RVTEUpIC0taWdub3JlLWhl
YWRlcnM9IiQoSUdOT1JFX0hGSUxFUykiICQke19zb3VyY2VfZGlyfSAkKFNDQU5fT1BUSU9OUykg
JChFWFRSQV9IRklMRVMpCi0JQGNkIERvY3VtZW50YXRpb247IGlmIGdyZXAgLWwgJ14uLiokJCcg
JChET0NfTU9EVUxFKS50eXBlcyA+IC9kZXYvbnVsbCAyPiYxIDsgdGhlbiBcCi0JICAgIGVjaG8g
IiAgRE9DICAgSW50cm9zcGVjdGluZyBnb2JqZWN0cyI7IFwKLQkgICAgc2Nhbm9ial9vcHRpb25z
PSIiOyBcCi0JICAgIGd0a2RvYy1zY2FuZ29iaiAyPiYxIC0taGVscCB8IGdyZXAgID4vZGV2L251
bGwgIlwtXC12ZXJib3NlIjsgXAotCSAgICBpZiB0ZXN0ICIkKD8pIiA9ICIwIjsgdGhlbiBcCi0J
ICAgICAgICBpZiB0ZXN0ICJ4JChWKSIgPSAieDEiOyB0aGVuIFwKLQkgICAgICAgICAgICBzY2Fu
b2JqX29wdGlvbnM9Ii0tdmVyYm9zZSI7IFwKLQkgICAgICAgIGZpOyBcCi0JICAgIGZpOyBcCi0J
ICAgIENDPSIkKEdUS0RPQ19DQykiIExEPSIkKEdUS0RPQ19MRCkiIFJVTj0iJChHVEtET0NfUlVO
KSIgQ0ZMQUdTPSIkKEdUS0RPQ19DRkxBR1MpICQoQ0ZMQUdTKSIgTERGTEFHUz0iJChHVEtET0Nf
TElCUykgJChMREZMQUdTKSIgXAotCSAgICBndGtkb2Mtc2NhbmdvYmogJChTQ0FOR09CSl9PUFRJ
T05TKSAkJHNjYW5vYmpfb3B0aW9ucyAtLW1vZHVsZT0kKERPQ19NT0RVTEUpOyBcCi0JZWxzZSBc
Ci0JICAgIGZvciBpIGluICQoU0NBTk9CSl9GSUxFUykgOyBkbyBcCi0JICAgICAgICB0ZXN0IC1m
ICQkaSB8fCB0b3VjaCAkJGkgOyBcCi0JICAgIGRvbmUgXAotCWZpCi0JQHRvdWNoIHNjYW4tYnVp
bGQuc3RhbXAKLQotRG9jdW1lbnRhdGlvbi8kKERPQ19NT0RVTEUpLWRlY2wudHh0IERvY3VtZW50
YXRpb24vJChTQ0FOT0JKX0ZJTEVTKSBEb2N1bWVudGF0aW9uLyQoRE9DX01PRFVMRSktc2VjdGlv
bnMudHh0IERvY3VtZW50YXRpb24vJChET0NfTU9EVUxFKS1vdmVycmlkZXMudHh0OiBzY2FuLWJ1
aWxkLnN0YW1wCi0JQHRydWUKLQotIyMjIyB0ZW1wbGF0ZXMgIyMjIwotCi10bXBsLWJ1aWxkLnN0
YW1wOiBkb2Mtc2V0dXAtYnVpbGQuc3RhbXAgRG9jdW1lbnRhdGlvbi8kKERPQ19NT0RVTEUpLWRl
Y2wudHh0IERvY3VtZW50YXRpb24vJChTQ0FOT0JKX0ZJTEVTKSBEb2N1bWVudGF0aW9uLyQoRE9D
X01PRFVMRSktc2VjdGlvbnMudHh0IERvY3VtZW50YXRpb24vJChET0NfTU9EVUxFKS1vdmVycmlk
ZXMudHh0Ci0JQGVjaG8gJyAgRE9DICAgUmVidWlsZGluZyB0ZW1wbGF0ZSBmaWxlcycKLQlAY2Qg
RG9jdW1lbnRhdGlvbjsgZ3RrZG9jLW1rdG1wbCAtLW1vZHVsZT0kKERPQ19NT0RVTEUpICQoTUtU
TVBMX09QVElPTlMpCi0JQGlmIHRlc3QgIiQoYWJzX3NyY2RpcikiICE9ICIkKGFic19idWlsZGRp
cikiIDsgdGhlbiBcCi0JICBpZiB0ZXN0IC13ICQoYWJzX3NyY2RpcikgOyB0aGVuIFwKLQkgICAg
Y3AgLXJwICQoYWJzX2J1aWxkZGlyKS9Eb2N1bWVudGF0aW9uL3RtcGwgJChkb2Nfc3JjZGlyKTsg
XAotCSAgZmkgXAotCWZpCi0JQHRvdWNoIHRtcGwtYnVpbGQuc3RhbXAKLQotdG1wbC5zdGFtcDog
dG1wbC1idWlsZC5zdGFtcAotCUB0cnVlCi0KLSQoc3JjZGlyKS90bXBsLyouc2dtbDoKLQlAdHJ1
ZQotCi0jIyMjIHhtbCAjIyMjCi0KLXNnbWwtYnVpbGQuc3RhbXA6IGRvYy1zZXR1cC1idWlsZC5z
dGFtcCB0bXBsLnN0YW1wIERvY3VtZW50YXRpb24vJChET0NfTU9EVUxFKS1zZWN0aW9ucy50eHQg
JChzcmNkaXIpL3RtcGwvKi5zZ21sCi0JQGVjaG8gJyAgRE9DICAgQnVpbGRpbmcgWE1MJwotCUAt
Y2htb2QgLVIgdSt3ICQoc3JjZGlyKQotCUBjZCBEb2N1bWVudGF0aW9uOyBfc291cmNlX2Rpcj0n
JyA7IFwKLQlmb3IgaSBpbiAkKERPQ19TT1VSQ0VfRElSKSA7IGRvIFwKLQkgICAgX3NvdXJjZV9k
aXI9IiQke19zb3VyY2VfZGlyfSAtLXNvdXJjZS1kaXI9Li4vJCRpIiA7IFwKLQlkb25lIDsgXAot
CWd0a2RvYy1ta2RiIC0tbW9kdWxlPSQoRE9DX01PRFVMRSkgLS1vdXRwdXQtZm9ybWF0PXhtbCAt
LWV4cGFuZC1jb250ZW50LWZpbGVzPSIiIC0tbWFpbi1zZ21sLWZpbGU9JChET0NfTUFJTl9TR01M
X0ZJTEUpICQke19zb3VyY2VfZGlyfSAkKE1LREJfT1BUSU9OUykKLQlAdG91Y2ggc2dtbC1idWls
ZC5zdGFtcAotCi1zZ21sLnN0YW1wOiBzZ21sLWJ1aWxkLnN0YW1wCi0JQHRydWUKLQotIyMjIyBo
dG1sICMjIyMKLQotRG9jdW1lbnRhdGlvbi8kKERPQ19NQUlOX1NHTUxfRklMRSk6IHNnbWwuc3Rh
bXAKLURvY3VtZW50YXRpb24vd2Via2l0ZW52aXJvbm1lbnQueG1sOiBkb2Mtc2V0dXAtYnVpbGQu
c3RhbXAKLQotaHRtbC1idWlsZC5zdGFtcDogc2dtbC5zdGFtcCBEb2N1bWVudGF0aW9uLyQoRE9D
X01BSU5fU0dNTF9GSUxFKQotCUBlY2hvICcgIERPQyAgIEJ1aWxkaW5nIEhUTUwnCi0JQHJtIC1y
ZiBEb2N1bWVudGF0aW9uL2h0bWwKLQlAbWtkaXIgRG9jdW1lbnRhdGlvbi9odG1sCi0JQGNkIERv
Y3VtZW50YXRpb247IG1raHRtbF9vcHRpb25zPSIiOyBcCi0JZ3RrZG9jLW1raHRtbCAyPiYxIC0t
aGVscCB8IGdyZXAgID4vZGV2L251bGwgIlwtXC12ZXJib3NlIjsgXAotCWlmIHRlc3QgIiQoPyki
ID0gIjAiOyB0aGVuIFwKLQkgIGlmIHRlc3QgIngkKFYpIiA9ICJ4MSI7IHRoZW4gXAotCSAgICBt
a2h0bWxfb3B0aW9ucz0iJCRta2h0bWxfb3B0aW9ucyAtLXZlcmJvc2UiOyBcCi0JICBmaTsgXAot
CWZpOyBcCi0JZ3RrZG9jLW1raHRtbCAyPiYxIC0taGVscCB8IGdyZXAgID4vZGV2L251bGwgIlwt
XC1wYXRoIjsgXAotCWlmIHRlc3QgIiQoPykiID0gIjAiOyB0aGVuIFwKLQkgIG1raHRtbF9vcHRp
b25zPSIkJG1raHRtbF9vcHRpb25zIC0tcGF0aD1cIiQoZG9jX3NyY2RpcilcIiI7IFwKLQlmaTsg
XAotCWNkIGh0bWwgJiYgZ3RrZG9jLW1raHRtbCAkJG1raHRtbF9vcHRpb25zICQoTUtIVE1MX09Q
VElPTlMpICQoRE9DX01PRFVMRSkgLi4vJChET0NfTUFJTl9TR01MX0ZJTEUpCi0JLUB0ZXN0ICJ4
JChIVE1MX0lNQUdFUykiID0gIngiIHx8IFwKLQlmb3IgZmlsZSBpbiAkKEhUTUxfSU1BR0VTKSA7
IGRvIFwKLQkgIGlmIHRlc3QgLWYgJChhYnNfc3JjZGlyKS8kJGZpbGUgOyB0aGVuIFwKLQkgICAg
Y3AgJChhYnNfc3JjZGlyKS8kJGZpbGUgJChhYnNfYnVpbGRkaXIpL2h0bWw7IFwKLQkgIGZpOyBc
Ci0JICBpZiB0ZXN0IC1mICQoYWJzX2J1aWxkZGlyKS8kJGZpbGUgOyB0aGVuIFwKLQkgICAgY3Ag
JChhYnNfYnVpbGRkaXIpLyQkZmlsZSAkKGFic19idWlsZGRpcikvaHRtbDsgXAotCSAgZmk7IFwK
LQlkb25lOwotCUBlY2hvICcgIERPQyAgIEZpeGluZyBjcm9zcy1yZWZlcmVuY2VzJwotCUBjZCBE
b2N1bWVudGF0aW9uOyBndGtkb2MtZml4eHJlZiAtLW1vZHVsZT0kKERPQ19NT0RVTEUpIC0tbW9k
dWxlLWRpcj1odG1sIC0taHRtbC1kaXI9JChIVE1MX0RJUikgJChGSVhYUkVGX09QVElPTlMpCi0J
QHRvdWNoIGh0bWwtYnVpbGQuc3RhbXAKLQotY2xlYW4tbG9jYWw6IGRvYy1jbGVhbi1sb2NhbAot
Ci1kb2MtY2xlYW4tbG9jYWw6Ci0JQHJtIC1mIERvY3VtZW50YXRpb24vKn4gRG9jdW1lbnRhdGlv
bi8qLmJhawotCUBybSAtcmYgRG9jdW1lbnRhdGlvbi8ubGlicwotCi1kaXN0Y2xlYW4tbG9jYWw6
IGRvYy1kaXN0Y2xlYW4tbG9jYWwKLQotZG9jLWRpc3RjbGVhbi1sb2NhbDoKLQlAcm0gLXJmIERv
Y3VtZW50YXRpb24KLQotbWFpbnRhaW5lci1jbGVhbi1sb2NhbDogZG9jLW1haW50YWluZXItY2xl
YW4tbG9jYWwKLQotZG9jLW1haW50YWluZXItY2xlYW4tbG9jYWw6IGNsZWFuCi0JQHJtIC1yZiBE
b2N1bWVudGF0aW9uL3htbCBEb2N1bWVudGF0aW9uL2h0bWwKLQktQHJtZGlyIERvY3VtZW50YXRp
b24KLQotIwotIyBSZXF1aXJlIGd0ay1kb2Mgd2hlbiBtYWtpbmcgZGlzdAotIwotaWYgRU5BQkxF
X0dUS19ET0MKLWRpc3QtY2hlY2stZ3RrZG9jOgotCi1hbGw6IGRvY3MKLWVsc2UKLWRpc3QtY2hl
Y2stZ3RrZG9jOgotCUBlY2hvICIqKiogZ3RrLWRvYyBtdXN0IGJlIGluc3RhbGxlZCBhbmQgZW5h
YmxlZCBpbiBvcmRlciB0byBtYWtlIGRpc3QiCi0JQGZhbHNlCi1lbmRpZgotCi1kaXN0LWhvb2s6
IGRvYy1kaXN0LWhvb2sKLQotZG9jLWRpc3QtaG9vazogZGlzdC1jaGVjay1ndGtkb2MgZGlzdC1o
b29rLWxvY2FsCi0JQG1rZGlyIC1wICQoZGlzdGRpcikvJChET0NfTU9EVUxFKS90bXBsCi0JQG1r
ZGlyIC1wICQoZGlzdGRpcikvJChET0NfTU9EVUxFKS9odG1sCi0JQC1jcCAuL0RvY3VtZW50YXRp
b24vdG1wbC8qLnNnbWwgJChkaXN0ZGlyKS8kKERPQ19NT0RVTEUpL3RtcGwKLQlAY3AgLi9Eb2N1
bWVudGF0aW9uL2h0bWwvKiAkKGRpc3RkaXIpLyQoRE9DX01PRFVMRSkvaHRtbAotCUAtY3AgLi9E
b2N1bWVudGF0aW9uLyQoRE9DX01PRFVMRSkudHlwZXMgJChkaXN0ZGlyKS8KLQlALWNwIC4vRG9j
dW1lbnRhdGlvbi8kKERPQ19NT0RVTEUpLXNlY3Rpb25zLnR4dCAkKGRpc3RkaXIpLwotCUBjZCAk
KGRpc3RkaXIpICYmIHJtIC1mICQoRElTVENMRUFORklMRVMpCi0JQCQoR1RLRE9DX1JFQkFTRSkg
LS1vbmxpbmUgLS1yZWxhdGl2ZSAtLWh0bWwtZGlyPSQoZGlzdGRpcikvJChET0NfTU9EVUxFKS9o
dG1sCi0KLS5QSE9OWSA6IGRpc3QtaG9vay1sb2NhbCBkb2NzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2d0ay9kb2NzL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYktpdC9ndGsvZG9jcy9H
TlVtYWtlZmlsZS5hbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzhjNGIyMTJiYWI1
YWViZGQyOTBhYWUzN2EyNDNmMjU1YjliNDNiNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9kb2NzL0dOVW1ha2VmaWxlLmFt
CisrKyAvZGV2L251bGwKQEAgLTEsMTI4ICswLDAgQEAKLSMjIFByb2Nlc3MgdGhpcyBmaWxlIHdp
dGggYXV0b21ha2UgdG8gcHJvZHVjZSBHTlVtYWtlZmlsZS5pbgotCi0jIFRoaXMgaXMgYSBibGFu
ayBNYWtlZmlsZS5hbSBmb3IgdXNpbmcgZ3RrLWRvYy4KLSMgQ29weSB0aGlzIHRvIHlvdXIgcHJv
amVjdCdzIEFQSSBkb2NzIGRpcmVjdG9yeSBhbmQgbW9kaWZ5IHRoZSB2YXJpYWJsZXMgdG8KLSMg
c3VpdCB5b3VyIHByb2plY3QuIFNlZSB0aGUgR1RLKyBNYWtlZmlsZXMgaW4gZ3RrKy9kb2NzL3Jl
ZmVyZW5jZSBmb3IgZXhhbXBsZXMKLSMgb2YgdXNpbmcgdGhlIHZhcmlvdXMgb3B0aW9ucy4KLQot
IyBUaGUgbmFtZSBvZiB0aGUgbW9kdWxlLCBlLmcuICdnbGliJy4KLURPQ19NT0RVTEU9d2Via2l0
Z3RrCi0KLSMgVGhlIHRvcC1sZXZlbCBTR01MIGZpbGUuIFlvdSBjYW4gY2hhbmdlIHRoaXMgaWYg
eW91IHdhbnQgdG8uCi1ET0NfTUFJTl9TR01MX0ZJTEU9JChET0NfTU9EVUxFKS1kb2NzLnNnbWwK
LQotIyBUaGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIHNvdXJjZSBjb2RlLiBSZWxhdGl2ZSB0
byAkKHNyY2RpcikuCi0jIGd0ay1kb2Mgd2lsbCBzZWFyY2ggYWxsIC5jICYgLmggZmlsZXMgYmVu
ZWF0aCBoZXJlIGZvciBpbmxpbmUgY29tbWVudHMKLSMgZG9jdW1lbnRpbmcgdGhlIGZ1bmN0aW9u
cyBhbmQgbWFjcm9zLgotIyBlLmcuIERPQ19TT1VSQ0VfRElSPS4uLy4uLy4uL2d0awotRE9DX1NP
VVJDRV9ESVI9JCh0b3Bfc3JjZGlyKS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQKLQotIyBFeHRy
YSBvcHRpb25zIHRvIHBhc3MgdG8gZ3RrZG9jLXNjYW5nb2JqLiBOb3Qgbm9ybWFsbHkgbmVlZGVk
LgotU0NBTkdPQkpfT1BUSU9OUz0iLS10eXBlLWluaXQtZnVuYz1nX3R5cGVfaW5pdCgpIgotCi0j
IEV4dHJhIG9wdGlvbnMgdG8gc3VwcGx5IHRvIGd0a2RvYy1zY2FuLgotIyBlLmcuIFNDQU5fT1BU
SU9OUz0tLWRlcHJlY2F0ZWQtZ3VhcmRzPSJHVEtfRElTQUJMRV9ERVBSRUNBVEVEIgotU0NBTl9P
UFRJT05TPS0tZGVwcmVjYXRlZC1ndWFyZHM9IldFQktJVF9ESVNBQkxFX0RFUFJFQ0FURUQiIC0t
aWdub3JlLWRlY29yYXRvcnM9IldFQktJVF9BUEkiCi0KLSMgRXh0cmEgb3B0aW9ucyB0byBzdXBw
bHkgdG8gZ3RrZG9jLW1rZGIuCi0jIGUuZy4gTUtEQl9PUFRJT05TPS0tc2dtbC1tb2RlIC0tb3V0
cHV0LWZvcm1hdD14bWwKLU1LREJfT1BUSU9OUz0tLXNnbWwtbW9kZSAtLW91dHB1dC1mb3JtYXQ9
eG1sIC0tc291cmNlLXN1ZmZpeGVzPWgsYyxjcHAKLQotIyBFeHRyYSBvcHRpb25zIHRvIHN1cHBs
eSB0byBndGtkb2MtbWt0bXBsCi0jIGUuZy4gTUtUTVBMX09QVElPTlM9LS1vbmx5LXNlY3Rpb24t
dG1wbAotTUtUTVBMX09QVElPTlM9Ci0KLSMgRXh0cmEgb3B0aW9ucyB0byBzdXBwbHkgdG8gZ3Rr
ZG9jLWZpeHJlZi4gTm90IG5vcm1hbGx5IG5lZWRlZC4KLSMgZS5nLiBGSVhYUkVGX09QVElPTlM9
LS1leHRyYS1kaXI9Li4vZ2RrLXBpeGJ1Zi9odG1sIC0tZXh0cmEtZGlyPS4uL2dkay9odG1sCi1G
SVhYUkVGX09QVElPTlM9Ci0KLSMgVXNlZCBmb3IgZGVwZW5kZW5jaWVzLiBUaGUgZG9jcyB3aWxs
IGJlIHJlYnVpbHQgaWYgYW55IG9mIHRoZXNlIGNoYW5nZS4KLSMgZS5nLiBIRklMRV9HTE9CPSQo
dG9wX3NyY2RpcikvZ3RrLyouaAotIyBlLmcuIENGSUxFX0dMT0I9JCh0b3Bfc3JjZGlyKS9ndGsv
Ki5jCi1IRklMRV9HTE9CPSQodG9wX3NyY2RpcikvU291cmNlL1dlYktpdC9ndGsvd2Via2l0Lyou
aAotQ0ZJTEVfR0xPQj0kKHRvcF9zcmNkaXIpL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC8qLmNw
cAotCi0jIEhlYWRlciBmaWxlcyB0byBpZ25vcmUgd2hlbiBzY2FubmluZy4KLSMgZS5nLiBJR05P
UkVfSEZJTEVTPWd0a2RlYnVnLmggZ3RraW50bC5oCi1JR05PUkVfSEZJTEVTID0gXAotICAgd2Vi
a2l0ZG93bmxvYWRwcml2YXRlLmggXAotICAgd2Via2l0Z2VvbG9jYXRpb25wb2xpY3lkZWNpc2lv
bnByaXZhdGUuaCBcCi0gICB3ZWJraXRnbG9iYWxzcHJpdmF0ZS5oIFwKLSAgIHdlYmtpdGhpdHRl
c3RyZXN1bHRwcml2YXRlLmggXAotICAgd2Via2l0bmV0d29ya3JlcXVlc3Rwcml2YXRlLmggXAot
ICAgd2Via2l0bmV0d29ya3Jlc3BvbnNlcHJpdmF0ZS5oIFwKLSAgIHdlYmtpdHNlY3VyaXR5b3Jp
Z2lucHJpdmF0ZS5oIFwKLSAgIHdlYmtpdHZpZXdwb3J0YXR0cmlidXRlc3ByaXZhdGUuaCBcCi0g
ICB3ZWJraXR3ZWJiYWNrZm9yd2FyZGxpc3Rwcml2YXRlLmggXAotICAgd2Via2l0d2ViZGF0YXNv
dXJjZXByaXZhdGUuaCBcCi0gICB3ZWJraXR3ZWJmcmFtZXByaXZhdGUuaCBcCi0gICB3ZWJraXR3
ZWJoaXN0b3J5aXRlbXByaXZhdGUuaCBcCi0gICB3ZWJraXR3ZWJpbnNwZWN0b3Jwcml2YXRlLmgg
XAotICAgd2Via2l0d2VibmF2aWdhdGlvbmFjdGlvbnByaXZhdGUuaCBcCi0gICB3ZWJraXR3ZWJw
bHVnaW5kYXRhYmFzZXByaXZhdGUuaCBcCi0gICB3ZWJraXR3ZWJwbHVnaW5wcml2YXRlLmggXAot
ICAgd2Via2l0d2VicG9saWN5ZGVjaXNpb25wcml2YXRlLmggXAotICAgd2Via2l0d2VicmVzb3Vy
Y2Vwcml2YXRlLmggXAotICAgd2Via2l0d2Vic2V0dGluZ3Nwcml2YXRlLmggXAotICAgd2Via2l0
d2Vidmlld3ByaXZhdGUuaCBcCi0gICB3ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlc3ByaXZhdGUuaAot
Ci0jIEltYWdlcyB0byBjb3B5IGludG8gSFRNTCBkaXJlY3RvcnkuCi0jIGUuZy4gSFRNTF9JTUFH
RVM9JCh0b3Bfc3JjZGlyKS9ndGsvc3RvY2staWNvbnMvc3RvY2tfYWJvdXRfMjQucG5nCi1IVE1M
X0lNQUdFUz0KLQotIyBDRkxBR1MgYW5kIExERkxBR1MgZm9yIGNvbXBpbGluZyBndGtkb2Mtc2Nh
bmdvYmogd2l0aCB5b3VyIGxpYnJhcnkuCi0jIE9ubHkgbmVlZGVkIGlmIHlvdSBhcmUgdXNpbmcg
Z3RrZG9jLXNjYW5nb2JqIHRvIGR5bmFtaWNhbGx5IHF1ZXJ5IHdpZGdldAotIyBzaWduYWxzIGFu
ZCBwcm9wZXJ0aWVzLgotIyBlLmcuIElOQ0xVREVTPS1JJCh0b3Bfc3JjZGlyKSAtSSQodG9wX2J1
aWxkZGlyKSAkKEdUS19ERUJVR19GTEFHUykKLSMgZS5nLiBHVEtET0NfTElCUz0kKHRvcF9idWls
ZGRpcikvZ3RrLyQoZ3RrdGFyZ2V0bGliKQotR1RLRE9DX0lOQ0xVREVTPSBcCi0JLUkkKGFic19z
cmNkaXIpL1NvdXJjZS9XZWJLaXQvZ3RrIFwKLQktSSQoYWJzX2J1aWxkZGlyKS9Tb3VyY2UvV2Vi
S2l0L2d0ayBcCi0JJChnbG9iYWxfY3BwZmxhZ3MpIFwKLQkkKGdsb2JhbF9jZmxhZ3MpIFwKLQkt
SSQoYWJzX3NyY2RpcikvU291cmNlIFwKLQktSSQoYWJzX3NyY2RpcikvU291cmNlL0phdmFTY3Jp
cHRDb3JlIFwKLQktSSQoYWJzX3NyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL0ZvcndhcmRp
bmdIZWFkZXJzIFwKLQktSSQoYWJzX3NyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ciBcCi0JLUkkKGFic19zcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYgXAotCS1JJChh
YnNfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzIFwKLQktSSQoYWJzX3NyY2RpcikvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL2NhY2hlIFwKLQkkKEdMT0JBTERFUFNfQ0ZMQUdT
KSBcCi0JJChDQUlST19DRkxBR1MpIFwKLQkkKEdMSUJfQ0ZMQUdTKSBcCi0JJChHVEtfQ0ZMQUdT
KSBcCi0JJChMSUJTT1VQX0NGTEFHUykKLQotR1RLRE9DX0xJQlM9IFwKLQkkKGFic19idWlsZGRp
cikvbGliamF2YXNjcmlwdGNvcmVndGstQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkAuQFdF
QktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkAubGEgXAotCSQoYWJzX2J1aWxkZGlyKS9saWJ3ZWJr
aXRndGstQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkAuQFdFQktJVEdUS19BUElfTUlOT1Jf
VkVSU0lPTkAubGEgXAotCSQoR0xJQl9MSUJTKSBcCi0JJChHVEtfTElCUykgXAotCSQoTElCU09V
UF9MSUJTKQotCi0jIFRoaXMgaW5jbHVkZXMgb3VyIGN1c3RvbSBndGstZG9jIG1ha2UgcnVsZXMu
Ci1pbmNsdWRlICQodG9wX3NyY2RpcikvU291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZpbGUuZ3Rr
LWRvYy5hbQotCi0jIE90aGVyIGZpbGVzIHRvIGRpc3RyaWJ1dGUKLSMgZS5nLiBFWFRSQV9ESVNU
ICs9IHZlcnNpb24ueG1sLmluCi1FWFRSQV9ESVNUICs9IFwKLQkkKFdlYktpdCkvZG9jcy93ZWJr
aXRlbnZpcm9ubWVudC54bWwgXAotCSQoV2ViS2l0KS9kb2NzL3dlYmtpdGd0ay1kb2NzLnNnbWwg
XAotCSQoV2ViS2l0KS9kb2NzL3dlYmtpdGd0ay1zZWN0aW9ucy50eHQgXAotCSQoV2ViS2l0KS9k
b2NzL3ZlcnNpb24ueG1sLmluCi0KLSMgRmlsZXMgbm90IHRvIGRpc3RyaWJ1dGUKLSMgZm9yIC0t
cmVidWlsZC10eXBlcyBpbiAkKFNDQU5fT1BUSU9OUyksIGUuZy4gJChET0NfTU9EVUxFKS50eXBl
cwotIyBmb3IgLS1yZWJ1aWxkLXNlY3Rpb25zIGluICQoU0NBTl9PUFRJT05TKSBlLmcuICQoRE9D
X01PRFVMRSktc2VjdGlvbnMudHh0Ci1ESVNUQ0xFQU5GSUxFUyArPSBcCi0JJCh0b3BfYnVpbGRk
aXIpL1NvdXJjZS9XZWJLaXQvZ3RrL2RvY3MvdmVyc2lvbi54bWwgXAotCSQodG9wX2J1aWxkZGly
KS90bXBsLWJ1aWxkLnN0YW1wIFwKLQkkKHRvcF9idWlsZGRpcikvZG9jLXNldHVwLWJ1aWxkLnN0
YW1wIFwKLQkkKHRvcF9idWlsZGRpcikvaHRtbC1idWlsZC5zdGFtcCBcCi0JJCh0b3BfYnVpbGRk
aXIpL3NjYW4tYnVpbGQuc3RhbXAgXAotCSQodG9wX2J1aWxkZGlyKS9zZ21sLWJ1aWxkLnN0YW1w
Ci0KLSMgQ29tbWVudCB0aGlzIG91dCBpZiB5b3Ugd2FudCB5b3VyIGRvY3Mtc3RhdHVzIHRlc3Rl
ZCBkdXJpbmcgJ21ha2UgY2hlY2snCi0jVEVTVFMgPSAkKEdUS0RPQ19DSEVDSykKLQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9ndGsvZG9jcy92ZXJzaW9uLnhtbC5pbiBiL1NvdXJjZS9XZWJL
aXQvZ3RrL2RvY3MvdmVyc2lvbi54bWwuaW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGQ3OGJkYTkzNDIyZWNiYmNhOGNhZjc3MmY3YjM3ZjhmZTNiMjU0ZTkuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvZG9jcy92
ZXJzaW9uLnhtbC5pbgorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLUBWRVJTSU9OQApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9H
TlVtYWtlZmlsZS5hbQppbmRleCA3NWEwNDcwZjRhYzEwNDJmNDE3YjUxNDk0YzQ5ZWU1YzU4MDI5
NTNjLi4wOGNjMmIyNzg0MTk3YTNmODYxODA0NTliMjkyNWY5NmU2NzFhMGVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9HTlVt
YWtlZmlsZS5hbQpAQCAtMTQwMyw4ICsxNDAzLDYgQEAgUHJvZ3JhbXNfV2ViS2l0UGx1Z2luUHJv
Y2Vzc19DWFhGTEFHUyA9IFwKIGVuZGlmCiAKIEVYVFJBX0RJU1QgKz0gXAotCSQoV2ViS2l0Mikv
VUlQcm9jZXNzL0FQSS9ndGsvZG9jcy9idWlsZC1ndGtkb2MgXAotCSQoV2ViS2l0MikvVUlQcm9j
ZXNzL0FQSS9ndGsvZG9jcy9ndGtkb2MucHkgXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9n
dGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbCBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJ
L2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0IFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vz
cy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay50eXBlcyBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL2J1aWxkLWd0a2RvYyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3MvYnVpbGQtZ3RrZG9jCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDc1NQppbmRleCBmMzA0YTdlZGY0MjdlMWYzYmE0MmU1ODYyZmEzMzU0NWIxMWNiZWQ4Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3MvYnVpbGQtZ3RrZG9jCisrKyAvZGV2L251bGwKQEAgLTEs
OTMgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jICBDb3B5cmlnaHQgKEMpIDIwMTEg
SWdhbGlhIFMuTC4KLSMKLSMgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSMgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSMgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotIyAgdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotIwotIyAg
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCi0jICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgotIyAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSMgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0jCi0jICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0jICBMaWNlbnNlIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0j
ICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0
b24sIE1BICAwMjExMC0xMzAxICBVU0EKLSMKLQotaW1wb3J0IGdsb2IKLWltcG9ydCBndGtkb2MK
LWltcG9ydCBsb2dnaW5nCi1pbXBvcnQgb3MucGF0aAotaW1wb3J0IHN5cwotCi1kZWYgY29uZmln
dXJlX2xvZ2dpbmcoKToKLSAgICBsZXZlbCA9IGxvZ2dpbmcuREVCVUcgaWYgJy12JyBpbiBzeXMu
YXJndiBlbHNlIGxvZ2dpbmcuSU5GTwotICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJn
dGtkb2MiKQotICAgIGxvZ2dlci5zZXRMZXZlbChsZXZlbCkKLSAgICBoYW5kbGVyID0gbG9nZ2lu
Zy5TdHJlYW1IYW5kbGVyKCkKLSAgICBoYW5kbGVyLnNldExldmVsKGxldmVsKQotICAgIGxvZ2dl
ci5hZGRIYW5kbGVyKGhhbmRsZXIpCi0gICAgaWYgbGV2ZWwgPT0gbG9nZ2luZy5ERUJVRzoKLSAg
ICAgICAgaGFuZGxlci5zZXRGb3JtYXR0ZXIobG9nZ2luZy5Gb3JtYXR0ZXIoJ1slKGFzY3RpbWUp
c10gICUobWVzc2FnZSlzJykpCi0gICAgZWxzZToKLSAgICAgICAgaGFuZGxlci5zZXRGb3JtYXR0
ZXIobG9nZ2luZy5Gb3JtYXR0ZXIoJyUobWVzc2FnZSlzJykpCi0KLWRlZiBmaW5kX2J1aWxkX2Rp
cmVjdG9yeSh0b3BfbGV2ZWwpOgotICAgIGRlZiBpc192YWxpZF9idWlsZF9kaXJlY3RvcnkoYnVp
bGRfZGlyKToKLSAgICAgICAgcmV0dXJuIG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihidWls
ZF9kaXIsICIubGlicyIpKQotCi0gICAgaWYgaXNfdmFsaWRfYnVpbGRfZGlyZWN0b3J5KHRvcF9s
ZXZlbCk6Ci0gICAgICAgIHJldHVybiB0b3BfbGV2ZWwKLQotICAgIGJ1aWxkX2RpciA9IG9zLnBh
dGguam9pbih0b3BfbGV2ZWwsICdXZWJLaXRCdWlsZCcpCi0gICAgaWYgaXNfdmFsaWRfYnVpbGRf
ZGlyZWN0b3J5KGJ1aWxkX2Rpcik6Ci0gICAgICAgIHJldHVybiBidWlsZF9kaXIKLQotICAgIGJ1
aWxkX2RpciA9IG9zLnBhdGguam9pbih0b3BfbGV2ZWwsICdXZWJLaXRCdWlsZCcsICdSZWxlYXNl
JykKLSAgICBpZiBpc192YWxpZF9idWlsZF9kaXJlY3RvcnkoYnVpbGRfZGlyKToKLSAgICAgICAg
cmV0dXJuIGJ1aWxkX2RpcgotCi0gICAgYnVpbGRfZGlyID0gb3MucGF0aC5qb2luKHRvcF9sZXZl
bCwgJ1dlYktpdEJ1aWxkJywgJ0RlYnVnJykKLSAgICBpZiBpc192YWxpZF9idWlsZF9kaXJlY3Rv
cnkoYnVpbGRfZGlyKToKLSAgICAgICAgcmV0dXJuIGJ1aWxkX2RpcgotICAgIHByaW50ICJDb3Vs
ZCBub3QgZGV0ZXJtaW5lIGJ1aWxkIGRpcmVjdG9yeS4iCi0gICAgc3lzLmV4aXQoMSkKLQotZG9j
X2RpciA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pKQotdG9wX2xl
dmVsID0gb3MucGF0aC5ub3JtcGF0aChvcy5wYXRoLmpvaW4oZG9jX2RpciwgJy4uJywgJy4uJywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcuLicsICcuLicsICcu
LicsICcuLicpKQotYnVpbGRfZGlyID0gZmluZF9idWlsZF9kaXJlY3RvcnkodG9wX2xldmVsKQot
Ci1vdXRwdXRfZGlyID0gb3MucGF0aC5qb2luKGJ1aWxkX2RpciwgIkRvY3VtZW50YXRpb24iLCAi
d2Via2l0Mmd0ayIpCi1zcmNfZGlyID0gb3MucGF0aC5qb2luKGRvY19kaXIsICcuLicpCi1saWJy
YXJ5X3BhdGggPSBvcy5wYXRoLmpvaW4oYnVpbGRfZGlyLCAiLmxpYnMiKQotcGtnX2NvbmZpZ19w
YXRoID0gXAotICAgIG9zLnBhdGguam9pbihidWlsZF9kaXIsICJTb3VyY2UiLCAiV2ViS2l0MiIs
ICJ3ZWJraXQyZ3RrLTMuMC5wYyIpCi0KLWRlcml2ZWRfc291cmNlcyA9IG9zLnBhdGguam9pbihi
dWlsZF9kaXIsICJEZXJpdmVkU291cmNlcyIsICJXZWJLaXQyIikKLWNmbGFncyA9IFwKLScgLUkn
ICsgb3MucGF0aC5qb2luKGRlcml2ZWRfc291cmNlcywgJ3dlYmtpdDJndGsnLCAnaW5jbHVkZScp
ICsgXAotJyAtSScgKyBvcy5wYXRoLmpvaW4oZGVyaXZlZF9zb3VyY2VzLCAnd2Via2l0Mmd0aycp
ICsgXAotJyAtSScgKyBvcy5wYXRoLmpvaW4oZGVyaXZlZF9zb3VyY2VzLCAnaW5jbHVkZScpICsg
XAotJyAtSScgKyBvcy5wYXRoLmpvaW4odG9wX2xldmVsLCAnU291cmNlJykKLScgLUknICsgc3Jj
X2RpcgotCi1pZ25vcmVkX2ZpbGVzID0gZ2xvYi5nbG9iKCIlcy8qUHJpdmF0ZS5oIiAlIHNyY19k
aXIpICsgXAotICAgICAgICAgICAgICAgIGdsb2IuZ2xvYigiJXMvUGFnZUNsaWVudEltcGwuKiIg
JSBzcmNfZGlyKSArIFwKLSAgICAgICAgICAgICAgICBnbG9iLmdsb2IoIiVzL3Rlc3RzLyouaCIg
JSBzcmNfZGlyKQotCi1jb25maWd1cmVfbG9nZ2luZygpCi1nZW5lcmF0b3IgPSBndGtkb2MuUGtn
Q29uZmlnR1RLRG9jKHBrZ19jb25maWdfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbW9kdWxlX25hbWU9IndlYmtpdDJndGsiLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBvdXRwdXRfZGlyPW91dHB1dF9kaXIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNvdXJjZV9kaXJzPVtzcmNfZGlyXSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZG9jX2Rpcj1kb2NfZGlyLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjZmxhZ3M9Y2ZsYWdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBsaWJyYXJ5X3BhdGg9bGlicmFyeV9wYXRoLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkZWNvcmF0b3I9IldFQktJVF9BUEkiLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkZXByZWNhdGlvbl9ndWFyZD0iV0VCS0lUX0RJU0FCTEVfREVQUkVD
QVRFRCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZWRfZmlsZXM9
aWdub3JlZF9maWxlcykKLWdlbmVyYXRvci5nZW5lcmF0ZShodG1sPSctLXNraXAtaHRtbCcgbm90
IGluIHN5cy5hcmd2KQotc3lzLmV4aXQoZ2VuZXJhdG9yLnNhd193YXJuaW5ncykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3MvZ3RrZG9jLnB5IGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy9ndGtkb2MucHkKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDMwN2I2MmU0NGZiZjg1MWJmNzc2ZTJmOWYyYjY4YTVkZDFjYjc3
MGYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy9ndGtkb2MucHkKKysrIC9kZXYvbnVsbApA
QCAtMSwzNzIgKzAsMCBAQAotIyAgQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCi0jCi0j
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCi0jICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdl
bmVyYWwgUHVibGljCi0jICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSMgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSMKLSMgIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotIyAgYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
LSMgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCi0jICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgotIwotIyAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExlc3NlciBHZW5lcmFsIFB1YmxpYwotIyAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotIyAgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMw
MSAgVVNBCi0jCi0KLWltcG9ydCBlcnJubwotaW1wb3J0IGxvZ2dpbmcKLWltcG9ydCBvcwotaW1w
b3J0IG9zLnBhdGgKLWltcG9ydCBzdWJwcm9jZXNzCi1pbXBvcnQgc3lzCi0KLQotY2xhc3MgR1RL
RG9jKG9iamVjdCk6Ci0KLSAgICAiIiJDbGFzcyB0aGF0IGNvbnRyb2xzIGEgZ3RrZG9jIHJ1bi4K
LQotICAgIEVhY2ggaW5zdGFuY2Ugb2YgdGhpcyBjbGFzcyByZXByZXNlbnRzIG9uZSBndGtkb2Mg
Y29uZmlndXJhdGlvbgotICAgIGFuZCBzZXQgb2YgZG9jdW1lbnRhdGlvbi4gVGhlIGd0a2RvYyBw
YWNrYWdlIGlzIGEgc2VyaWVzIG9mIHRvb2xzCi0gICAgcnVuIGNvbnNlY3V0aXZlbHkgd2hpY2gg
Y29udmVydHMgaW5saW5lIEMvQysrIGRvY3VtZW50YXRpb24gaW50bwotICAgIGRvY2Jvb2sgZmls
ZXMgYW5kIHRoZW4gaW50byBIVE1MLiBUaGlzIGNsYXNzIGlzIHN1aXRhYmxlIGZvcgotICAgIGdl
bmVyYXRpbmcgZG9jdW1lbnRhdGlvbiBvciBzaW1wbHkgdmVyaWZ5aW5nIGNvcnJlY3RuZXNzLgot
Ci0gICAgS2V5d29yZCBhcmd1bWVudHM6Ci0gICAgb3V0cHV0X2RpciAgICAgICAgIC0tIFRoZSBw
YXRoIHdoZXJlIGd0a2RvYyBvdXRwdXQgc2hvdWxkIGJlIHBsYWNlZC4gR2VuZXJhdGlvbgotICAg
ICAgICAgICAgICAgICAgICAgICAgICBtYXkgb3ZlcndyaXRlIGZpbGUgaW4gdGhpcyBkaXJlY3Rv
cnkuIFJlcXVpcmVkLgotICAgIG1vZHVsZV9uYW1lICAgICAgICAtLSBUaGUgbmFtZSBvZiB0aGUg
ZG9jdW1lbnRhdGlvbiBtb2R1bGUuIEZvciBsaWJyYXJpZXMgdGhpcwotICAgICAgICAgICAgICAg
ICAgICAgICAgICBpcyB0eXBpY2FsbHkgdGhlIGxpYnJhcnkgbmFtZS4gUmVxdWlyZWQgaWYgbm90
IGxpYnJhcnkgcGF0aAotICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBnaXZlbi4KLSAgICBz
b3VyY2VfZGlycyAgICAgICAgLS0gQSBsaXN0IG9mIHBhdGhzIHRvIHRoZSBzb3VyY2UgY29kZSB0
byBiZSBzY2FubmVkLiBSZXF1aXJlZC4KLSAgICBpZ25vcmVkX2ZpbGVzICAgICAgLS0gQSBsaXN0
IG9mIGZpbGVuYW1lcyB0byBpZ25vcmUgaW4gdGhlIHNvdXJjZSBkaXJlY3RvcnkuIEl0IGlzCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgIG9ubHkgbmVjZXNzYXJ5IHRvIHByb3ZpZGUgdGhlIGJh
c2VuYW1lcyBvZiB0aGVzZSBmaWxlcy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwaWNh
bGx5IGl0IGlzIGltcG9ydGFudCB0byBwcm92aWRlIGFuIHVwZGF0ZWQgbGlzdCBvZgotICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZ25vcmVkIGZpbGVzIHRvIHByZXZlbnQgd2FybmluZ3MgYWJv
dXQgdW5kb2N1bWVudGVkIHN5bWJvbHMuCi0gICAgZGVjb3JhdG9yICAgICAgICAgIC0tIElmIGEg
ZGVjb3JhdG9yIGlzIHVzZWQgdG8gdW5oaWRlIGNlcnRhaW4gc3ltYm9scyBpbiBoZWFkZXIKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXMgdGhpcyBwYXJhbWV0ZXIgaXMgcmVxdWlyZWQg
Zm9yIHN1Y2Nlc3NmdWwgc2Nhbm5pbmcuCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChkZWZh
dWx0ICcnKQotICAgIGRlcHJlY2F0aW9uX2d1YXJkICAtLSBndGtkb2MgdHJpZXMgdG8gZW5zdXJl
IHRoYXQgc3ltYm9scyBtYXJrZWQgYXMgZGVwcmVjYXRlZAotICAgICAgICAgICAgICAgICAgICAg
ICAgICBhcmUgZW5jYXNlZCBpbiB0aGlzIEMgcHJlcHJvY2Vzc29yIGRlZmluZS4gVGhpcyBpcyBy
ZXF1aXJlZAotICAgICAgICAgICAgICAgICAgICAgICAgICB0byBhdm9pZCBndGtkb2Mgd2Fybmlu
Z3MuIChkZWZhdWx0ICcnKQotICAgIGNmbGFncyAgICAgICAgICAgICAtLSBUaGlzIHBhcmFtZXRl
ciBzcGVjaWZpZXMgYW55IHByZXByb2Nlc3NvciBmbGFncyBuZWNlc3NhcnkgZm9yCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgIGJ1aWxkaW5nIHRoZSBzY2FubmVyIGJpbmFyeSBkdXJpbmcgZ3Rr
ZG9jLXNjYW5vYmouIFR5cGljYWxseQotICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzIGlu
Y2x1ZGVzIGFsbCBhYnNvbHV0ZSBpbmNsdWRlIHBhdGhzIG5lY2Vzc2FyeSB0byByZXNvbHZlCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgIGFsbCBoZWFkZXIgZGVwZW5kZW5jaWVzLiAoZGVmYXVs
dCAnJykKLSAgICBsZGZsYWdzICAgICAgICAgICAgLS0gVGhpcyBwYXJhbWV0ZXIgc3BlY2lmaWVz
IGFueSBsaW5rZXIgZmxhZ3MgbmVjZXNzYXJ5IGZvcgotICAgICAgICAgICAgICAgICAgICAgICAg
ICBidWlsZGluZyB0aGUgc2Nhbm5lciBiaW5hcnkgZHVyaW5nIGd0a2RvYy1zY2Fub2JqLiBUeXBp
Y2FsbHkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyBpbmNsdWRlcyAiLWx5b3VybGli
cmFyeW5hbWUiLiAoZGVmYXVsdCAnJykKLSAgICBsaWJyYXJ5X3BhdGggICAgICAgLS0gVGhpcyBw
YXJhbWV0ZXIgc3BlY2lmaWVzIHRoZSBwYXRoIHRvIHRoZSBkaXJlY3Rvcnkgd2hlcmUgeW91Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcnkgcmVzaWRlcyB1c2VkIGZvciBidWlsZGlu
ZyB0aGUgc2Nhbm5lciBiaW5hcnkgZHVyaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGd0
a2RvYy1zY2Fub2JqLiAoZGVmYXVsdCAnJykKLQotICAgIGRvY19kaXIgICAgICAgICAgICAtLSBU
aGUgcGF0aCB0byBvdGhlciBkb2N1bWVudGF0aW9uIGZpbGVzIG5lY2Vzc2FyeSB0byBidWlsZAot
ICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZG9jdW1lbnRhdGlvbi4gVGhpcyBmaWxlcyBp
biB0aGlzIGRpcmVjdG9yeSBhcyB3ZWxsIGFzCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHRo
ZSBmaWxlcyBpbiB0aGUgJ2h0bWwnIHN1YmRpcmVjdG9yeSB3aWxsIGJlIGNvcGllZAotICAgICAg
ICAgICAgICAgICAgICAgICAgICByZWN1cnNpdmVseSBpbnRvIHRoZSBvdXRwdXQgZGlyZWN0b3J5
LiAoZGVmYXVsdCAnJykKLSAgICBtYWluX3NnbWxfZmlsZSAgICAgLS0gVGhlIHBhdGggb3IgbmFt
ZSAoaWYgYSBkb2NfZGlyIGlzIGdpdmVuKSBvZiB0aGUgU0dNTCBmaWxlCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgIHRoYXQgaXMgdGhlIGNvbnNpZGVyZWQgdGhlIG1haW4gcGFnZSBvZiB5b3Vy
IGRvY3VtZW50YXRpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChkZWZhdWx0OiA8bW9k
dWxlX25hbWU+LWRvY3Muc2dtbCkKLSAgICB2ZXJzaW9uICAgICAgICAgICAgLS0gVGhlIHZlcnNp
b24gbnVtYmVyIG9mIHRoZSBtb2R1bGUuIElmIHRoaXMgaXMgcHJvdmlkZWQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgIGEgdmVyc2lvbi54bWwgZmlsZSBjb250YWluaW5nIHRoZSB2ZXJzaW9u
IHdpbGwgYmUgY3JlYXRlZAotICAgICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUgb3V0cHV0
IGRpcmVjdG9yeSBkdXJpbmcgZG9jdW1lbnRhdGlvbiBnZW5lcmF0aW9uLgotCi0gICAgaW50ZXJh
Y3RpdmUgICAgICAgIC0tIFdoZXRoZXIgb3Igbm90IGVycm9ycyBvciB3YXJuaW5ncyBzaG91bGQg
cHJvbXB0IHRoZSB1c2VyCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGNvbnRpbnVlIG9y
IG5vdC4gV2hlbiB0aGlzIHZhbHVlIGlzIGZhbHNlLCBnZW5lcmF0aW9uCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgIHdpbGwgY29udGludWUgZGVzcGl0ZSB3YXJuaW5ncy4gKGRlZmF1bHQgRmFs
c2UpCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgKiphcmdzKToKLQotICAgICAg
ICAjIFBhcmFtZXRlcnMgc3BlY2lmaWMgdG8gc2Nhbm5pbmcuCi0gICAgICAgIHNlbGYubW9kdWxl
X25hbWUgPSAnJwotICAgICAgICBzZWxmLnNvdXJjZV9kaXJzID0gW10KLSAgICAgICAgc2VsZi5p
Z25vcmVkX2ZpbGVzID0gW10KLSAgICAgICAgc2VsZi5kZWNvcmF0b3IgPSAnJwotICAgICAgICBz
ZWxmLmRlcHJlY2F0aW9uX2d1YXJkID0gJycKLQotICAgICAgICAjIFBhcmFtZXRlcnMgc3BlY2lm
aWMgdG8gZ3RrZG9jLXNjYW5vYmouCi0gICAgICAgIHNlbGYuY2ZsYWdzID0gJycKLSAgICAgICAg
c2VsZi5sZGZsYWdzID0gJycKLSAgICAgICAgc2VsZi5saWJyYXJ5X3BhdGggPSAnJwotCi0gICAg
ICAgICMgUGFyYW1ldGVycyBzcGVjaWZpYyB0byBnZW5lcmF0aW9uLgotICAgICAgICBzZWxmLm91
dHB1dF9kaXIgPSAnJwotICAgICAgICBzZWxmLmRvY19kaXIgPSAnJwotICAgICAgICBzZWxmLm1h
aW5fc2dtbF9maWxlID0gJycKLQotICAgICAgICBzZWxmLmludGVyYWN0aXZlID0gRmFsc2UKLQot
ICAgICAgICBzZWxmLmxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdndGtkb2MnKQotCi0gICAg
ICAgIGZvciBrZXksIHZhbHVlIGluIGFyZ3MuaXRlcml0ZW1zKCk6Ci0gICAgICAgICAgICBzZXRh
dHRyKHNlbGYsIGtleSwgdmFsdWUpCi0KLSAgICAgICAgZGVmIHJhaXNlX2Vycm9yX2lmX25vdF9z
cGVjaWZpZWQoa2V5KToKLSAgICAgICAgICAgIGlmIG5vdCBnZXRhdHRyKHNlbGYsIGtleSk6Ci0g
ICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCclcyBub3Qgc3BlY2lmaWVkLicgJSBrZXkp
Ci0KLSAgICAgICAgcmFpc2VfZXJyb3JfaWZfbm90X3NwZWNpZmllZCgnb3V0cHV0X2RpcicpCi0g
ICAgICAgIHJhaXNlX2Vycm9yX2lmX25vdF9zcGVjaWZpZWQoJ3NvdXJjZV9kaXJzJykKLSAgICAg
ICAgcmFpc2VfZXJyb3JfaWZfbm90X3NwZWNpZmllZCgnbW9kdWxlX25hbWUnKQotCi0gICAgICAg
ICMgTWFrZSBhbGwgcGF0aHMgYWJzb2x1dGUgaW4gY2FzZSB3ZSB3ZXJlIHBhc3NlZCByZWxhdGl2
ZSBwYXRocywgc2luY2UKLSAgICAgICAgIyB3ZSBjaGFuZ2UgdGhlIGN1cnJlbnQgd29ya2luZyBk
aXJlY3Rvcnkgd2hlbiBleGVjdXRpbmcgc3ViY29tbWFuZHMuCi0gICAgICAgIHNlbGYub3V0cHV0
X2RpciA9IG9zLnBhdGguYWJzcGF0aChzZWxmLm91dHB1dF9kaXIpCi0gICAgICAgIHNlbGYuc291
cmNlX2RpcnMgPSBbb3MucGF0aC5hYnNwYXRoKHgpIGZvciB4IGluIHNlbGYuc291cmNlX2RpcnNd
Ci0gICAgICAgIGlmIHNlbGYubGlicmFyeV9wYXRoOgotICAgICAgICAgICAgc2VsZi5saWJyYXJ5
X3BhdGggPSBvcy5wYXRoLmFic3BhdGgoc2VsZi5saWJyYXJ5X3BhdGgpCi0KLSAgICAgICAgaWYg
bm90IHNlbGYubWFpbl9zZ21sX2ZpbGU6Ci0gICAgICAgICAgICBzZWxmLm1haW5fc2dtbF9maWxl
ID0gc2VsZi5tb2R1bGVfbmFtZSArICItZG9jcy5zZ21sIgotCi0gICAgZGVmIGdlbmVyYXRlKHNl
bGYsIGh0bWw9VHJ1ZSk6Ci0gICAgICAgIHNlbGYuc2F3X3dhcm5pbmdzID0gRmFsc2UKLQotICAg
ICAgICBzZWxmLl9jb3B5X2RvY19maWxlc190b19vdXRwdXRfZGlyKGh0bWwpCi0gICAgICAgIHNl
bGYuX3dyaXRlX3ZlcnNpb25feG1sKCkKLSAgICAgICAgc2VsZi5fcnVuX2d0a2RvY19zY2FuKCkK
LSAgICAgICAgc2VsZi5fcnVuX2d0a2RvY19zY2FuZ29iaigpCi0gICAgICAgIHNlbGYuX3J1bl9n
dGtkb2NfbWt0bXBsKCkKLSAgICAgICAgc2VsZi5fcnVuX2d0a2RvY19ta2RiKCkKLQotICAgICAg
ICBpZiBub3QgaHRtbDoKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgIHNlbGYuX3J1bl9n
dGtkb2NfbWtodG1sKCkKLSAgICAgICAgc2VsZi5fcnVuX2d0a2RvY19maXh4cmVmKCkKLQotICAg
IGRlZiBfZGVsZXRlX2ZpbGVfaWZfZXhpc3RzKHNlbGYsIHBhdGgpOgotICAgICAgICBpZiBub3Qg
b3MuYWNjZXNzKHBhdGgsIG9zLkZfT0sgfCBvcy5SX09LKToKLSAgICAgICAgICAgIHJldHVybgot
ICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygnZGVsZXRpbmcgJXMnLCBwYXRoKQotICAgICAgICBv
cy51bmxpbmsocGF0aCkKLQotICAgIGRlZiBfY3JlYXRlX2RpcmVjdG9yeV9pZl9ub25leGlzdGVu
dChzZWxmLCBwYXRoKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgb3MubWFrZWRpcnMocGF0
aCkKLSAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyb3I6Ci0gICAgICAgICAgICBpZiBlcnJv
ci5lcnJubyAhPSBlcnJuby5FRVhJU1Q6Ci0gICAgICAgICAgICAgICAgcmFpc2UKLQotICAgIGRl
ZiBfcmFpc2VfZXhjZXB0aW9uX2lmX2ZpbGVfaW5hY2Nlc3NpYmxlKHNlbGYsIHBhdGgpOgotICAg
ICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMocGF0aCkgb3Igbm90IG9zLmFjY2VzcyhwYXRoLCBv
cy5SX09LKToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiQ291bGQgbm90IGFjY2VzcyBm
aWxlIGF0OiAlcyIgJSBwYXRoKQotCi0gICAgZGVmIF9vdXRwdXRfaGFzX3dhcm5pbmdzKHNlbGYs
IG91dHB1dHMpOgotICAgICAgICBmb3Igb3V0cHV0IGluIG91dHB1dHM6Ci0gICAgICAgICAgICBp
ZiBvdXRwdXQgYW5kIG91dHB1dC5maW5kKCd3YXJuaW5nJyk6Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIFRydWUKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICBkZWYgX2Fza195ZXNfb3Jfbm9f
cXVlc3Rpb24oc2VsZiwgcXVlc3Rpb24pOgotICAgICAgICBpZiBub3Qgc2VsZi5pbnRlcmFjdGl2
ZToKLSAgICAgICAgICAgIHJldHVybiBUcnVlCi0KLSAgICAgICAgcXVlc3Rpb24gKz0gJyBbeS9O
XSAnCi0gICAgICAgIGFuc3dlciA9IE5vbmUKLSAgICAgICAgd2hpbGUgYW5zd2VyICE9ICd5JyBh
bmQgYW5zd2VyICE9ICduJyBhbmQgYW5zd2VyICE9ICcnOgotICAgICAgICAgICAgYW5zd2VyID0g
cmF3X2lucHV0KHF1ZXN0aW9uKS5sb3dlcigpCi0gICAgICAgIHJldHVybiBhbnN3ZXIgPT0gJ3kn
Ci0KLSAgICBkZWYgX3J1bl9jb21tYW5kKHNlbGYsIGFyZ3MsIGVudj1Ob25lLCBjd2Q9Tm9uZSwg
cHJpbnRfb3V0cHV0PVRydWUpOgotICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCJSdW5uaW5nICVz
IiwgYXJnc1swXSkKLSAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIkZ1bGwgY29tbWFuZCBhcmdz
OiAlcyIsIHN0cihhcmdzKSkKLQotICAgICAgICBwcm9jZXNzID0gc3VicHJvY2Vzcy5Qb3Blbihh
cmdzLCBlbnY9ZW52LCBjd2Q9Y3dkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQotICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHBy
b2Nlc3MuY29tbXVuaWNhdGUoKQotCi0gICAgICAgIGlmIHByaW50X291dHB1dDoKLSAgICAgICAg
ICAgIGlmIHN0ZG91dDoKLSAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKHN0ZG91dCkK
LSAgICAgICAgICAgIGlmIHN0ZGVycjoKLSAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRl
KHN0ZGVycikKLQotICAgICAgICBpZiBwcm9jZXNzLnJldHVybmNvZGUgIT0gMDoKLSAgICAgICAg
ICAgIHJhaXNlIEV4Y2VwdGlvbignJXMgcHJvZHVjZWQgYSBub24temVybyByZXR1cm4gY29kZSAl
aScKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAoYXJnc1swXSwgcHJvY2Vzcy5yZXR1
cm5jb2RlKSkKLQotICAgICAgICBpZiAnd2FybmluZycgaW4gc3RkZXJyIG9yICd3YXJuaW5nJyBp
biBzdGRvdXQ6Ci0gICAgICAgICAgICBzZWxmLnNhd193YXJuaW5ncyA9IFRydWUKLSAgICAgICAg
ICAgIGlmIG5vdCBzZWxmLl9hc2tfeWVzX29yX25vX3F1ZXN0aW9uKCclcyBwcm9kdWNlZCB3YXJu
aW5ncywgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J3RyeSB0byBjb250aW51ZT8nICUgYXJnc1swXSk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgRXhj
ZXB0aW9uKCclcyBzdGVwIGZhaWxlZCcgJSBhcmdzWzBdKQotCi0gICAgICAgIHJldHVybiBzdGRv
dXQuc3RyaXAoKQotCi0gICAgZGVmIF9jb3B5X2RvY19maWxlc190b19vdXRwdXRfZGlyKHNlbGYs
IGh0bWw9VHJ1ZSk6Ci0gICAgICAgIGlmIG5vdCBzZWxmLmRvY19kaXI6Ci0gICAgICAgICAgICBz
ZWxmLmxvZ2dlci5pbmZvKCdOb3QgY29weWluZyBhbnkgZmlsZXMgZnJvbSBkb2MgZGlyZWN0b3J5
LCcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyBiZWNhdXNlIG5vIGRvYyBkaXJlY3Rv
cnkgZ2l2ZW4uJykKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgIGRlZiBjb3B5X2ZpbGVf
cmVwbGFjaW5nX2V4aXN0aW5nKHNyYywgZGVzdCk6Ci0gICAgICAgICAgICBpZiBvcy5wYXRoLmlz
ZGlyKHNyYyk6Ci0gICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoJ3NraXBwZWQgZGly
ZWN0b3J5ICVzJywgIHNyYykKLSAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgIGlm
IG5vdCBvcy5hY2Nlc3Moc3JjLCBvcy5GX09LIHwgb3MuUl9PSyk6Ci0gICAgICAgICAgICAgICAg
c2VsZi5sb2dnZXIuZGVidWcoJ3NraXBwZWQgdW5yZWFkYWJsZSAlcycsIHNyYykKLSAgICAgICAg
ICAgICAgICByZXR1cm4KLQotICAgICAgICAgICAgc2VsZi5fZGVsZXRlX2ZpbGVfaWZfZXhpc3Rz
KGRlc3QpCi0KLSAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCdjcmVhdGVkICVzJywgZGVz
dCkKLSAgICAgICAgICAgIG9zLmxpbmsoc3JjLCBkZXN0KQotCi0gICAgICAgIGRlZiBjb3B5X2Fs
bF9maWxlc19pbl9kaXJlY3Rvcnkoc3JjLCBkZXN0KToKLSAgICAgICAgICAgIGZvciBwYXRoIGlu
IG9zLmxpc3RkaXIoc3JjKToKLSAgICAgICAgICAgICAgICBjb3B5X2ZpbGVfcmVwbGFjaW5nX2V4
aXN0aW5nKG9zLnBhdGguam9pbihzcmMsIHBhdGgpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKGRlc3QsIHBhdGgpKQotCi0gICAgICAg
IHNlbGYubG9nZ2VyLmluZm8oJ0NvcHlpbmcgdGVtcGxhdGUgZmlsZXMgdG8gb3V0cHV0IGRpcmVj
dG9yeS4uLicpCi0gICAgICAgIHNlbGYuX2NyZWF0ZV9kaXJlY3RvcnlfaWZfbm9uZXhpc3RlbnQo
c2VsZi5vdXRwdXRfZGlyKQotICAgICAgICBjb3B5X2FsbF9maWxlc19pbl9kaXJlY3Rvcnkoc2Vs
Zi5kb2NfZGlyLCBzZWxmLm91dHB1dF9kaXIpCi0KLSAgICAgICAgaWYgbm90IGh0bWw6Ci0gICAg
ICAgICAgICByZXR1cm4KLQotICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCdDb3B5aW5nIEhUTUwg
ZmlsZXMgdG8gb3V0cHV0IGRpcmVjdG9yeS4uLicpCi0gICAgICAgIGh0bWxfc3JjX2RpciA9IG9z
LnBhdGguam9pbihzZWxmLmRvY19kaXIsICdodG1sJykKLSAgICAgICAgaHRtbF9kZXN0X2RpciA9
IG9zLnBhdGguam9pbihzZWxmLm91dHB1dF9kaXIsICdodG1sJykKLSAgICAgICAgc2VsZi5fY3Jl
YXRlX2RpcmVjdG9yeV9pZl9ub25leGlzdGVudChodG1sX2Rlc3RfZGlyKQotCi0gICAgICAgIGlm
IG9zLnBhdGguZXhpc3RzKGh0bWxfc3JjX2Rpcik6Ci0gICAgICAgICAgICBjb3B5X2FsbF9maWxl
c19pbl9kaXJlY3RvcnkoaHRtbF9zcmNfZGlyLCBodG1sX2Rlc3RfZGlyKQotCi0gICAgZGVmIF93
cml0ZV92ZXJzaW9uX3htbChzZWxmKToKLSAgICAgICAgaWYgbm90IHNlbGYudmVyc2lvbjoKLSAg
ICAgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oJ05vIHZlcnNpb24gc3BlY2lmaWVkLCBzbyBub3Qg
d3JpdGluZyB2ZXJzaW9uLnhtbCcpCi0gICAgICAgICAgICByZXR1cm4KLQotICAgICAgICB2ZXJz
aW9uX3htbF9wYXRoID0gb3MucGF0aC5qb2luKHNlbGYub3V0cHV0X2RpciwgJ3ZlcnNpb24ueG1s
JykKLSAgICAgICAgc3JjX3ZlcnNpb25feG1sX3BhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi5kb2Nf
ZGlyLCAndmVyc2lvbi54bWwnKQotCi0gICAgICAgICMgRG9uJ3Qgb3ZlcndyaXRlIHZlcnNpb24u
eG1sIGlmIGl0IHdhcyBpbiB0aGUgZG9jIGRpcmVjdG9yeS4KLSAgICAgICAgaWYgb3MucGF0aC5l
eGlzdHModmVyc2lvbl94bWxfcGF0aCkgYW5kIFwKLSAgICAgICAgICAgb3MucGF0aC5leGlzdHMo
c3JjX3ZlcnNpb25feG1sX3BhdGgpOgotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgb3V0
cHV0X2ZpbGUgPSBvcGVuKHZlcnNpb25feG1sX3BhdGgsICd3JykKLSAgICAgICAgb3V0cHV0X2Zp
bGUud3JpdGUoc2VsZi52ZXJzaW9uKQotICAgICAgICBvdXRwdXRfZmlsZS5jbG9zZSgpCi0KLSAg
ICBkZWYgX3J1bl9ndGtkb2Nfc2NhbihzZWxmKToKLSAgICAgICAgYXJncyA9IFsnZ3RrZG9jLXNj
YW4nLAotICAgICAgICAgICAgICAgICctLW1vZHVsZT0lcycgJSBzZWxmLm1vZHVsZV9uYW1lLAot
ICAgICAgICAgICAgICAgICctLXJlYnVpbGQtdHlwZXMnXQotCi0gICAgICAgICMgRWFjaCBzb3Vy
Y2UgZGlyZWN0b3J5IHNob3VsZCBiZSBoYXZlIGl0cyBvd24gIi0tc291cmNlLWRpcj0iIHByZWZp
eC4KLSAgICAgICAgYXJncy5leHRlbmQoWyctLXNvdXJjZS1kaXI9JXMnICUgcGF0aCBmb3IgcGF0
aCBpbiBzZWxmLnNvdXJjZV9kaXJzXSkKLQotICAgICAgICBpZiBzZWxmLmRlY29yYXRvcjoKLSAg
ICAgICAgICAgIGFyZ3MuYXBwZW5kKCctLWlnbm9yZS1kZWNvcmF0b3JzPSVzJyAlIHNlbGYuZGVj
b3JhdG9yKQotICAgICAgICBpZiBzZWxmLmRlcHJlY2F0aW9uX2d1YXJkOgotICAgICAgICAgICAg
YXJncy5hcHBlbmQoJy0tZGVwcmVjYXRlZC1ndWFyZHM9JXMnICUgc2VsZi5kZXByZWNhdGlvbl9n
dWFyZCkKLSAgICAgICAgaWYgc2VsZi5vdXRwdXRfZGlyOgotICAgICAgICAgICAgYXJncy5hcHBl
bmQoJy0tb3V0cHV0LWRpcj0lcycgJSBzZWxmLm91dHB1dF9kaXIpCi0KLSAgICAgICAgIyBndGtk
b2Mtc2NhbiB3YW50cyB0aGUgYmFzZW5hbWVzIG9mIGlnbm9yZWQgaGVhZGVycywgc28gc3RyaXAg
dGhlCi0gICAgICAgICMgZGlybmFtZS4gRGlmZmVyZW50IGZyb20gIi0tc291cmNlLWRpciIsIHRo
ZSBoZWFkZXJzIHNob3VsZCBiZQotICAgICAgICAjIHNwZWNpZmllZCBhcyBvbmUgbG9uZyBzdHJp
bmcuCi0gICAgICAgIGlmIHNlbGYuaWdub3JlZF9maWxlczoKLSAgICAgICAgICAgIGlnbm9yZWRf
ZmlsZXNfYmFzZW5hbWVzID0gXAotICAgICAgICAgICAgICAgIFtvcy5wYXRoLmJhc2VuYW1lKHgp
IGZvciB4IGluIHNlbGYuaWdub3JlZF9maWxlc10KLSAgICAgICAgICAgIGFyZ3MuYXBwZW5kKCct
LWlnbm9yZS1oZWFkZXJzPSVzJyAlICcgJy5qb2luKGlnbm9yZWRfZmlsZXNfYmFzZW5hbWVzKSkK
LQotICAgICAgICBzZWxmLl9ydW5fY29tbWFuZChhcmdzKQotCi0gICAgZGVmIF9ydW5fZ3RrZG9j
X3NjYW5nb2JqKHNlbGYpOgotICAgICAgICBlbnYgPSBvcy5lbnZpcm9uCi0gICAgICAgIGxkZmxh
Z3MgPSBzZWxmLmxkZmxhZ3MKLSAgICAgICAgaWYgc2VsZi5saWJyYXJ5X3BhdGg6Ci0gICAgICAg
ICAgICBsZGZsYWdzID0gJyAiLUwlcyIgJyAlIHNlbGYubGlicmFyeV9wYXRoICsgbGRmbGFncwot
ICAgICAgICAgICAgZW52WydSVU4nXSA9ICdMRF9MSUJSQVJZX1BBVEg9IiVzIiAnICUgc2VsZi5s
aWJyYXJ5X3BhdGgKLSAgICAgICAgaWYgbGRmbGFnczoKLSAgICAgICAgICAgIGVudlsnTERGTEFH
UyddID0gbGRmbGFncwotICAgICAgICBpZiBzZWxmLmNmbGFnczoKLSAgICAgICAgICAgIGVudlsn
Q0ZMQUdTJ10gPSBzZWxmLmNmbGFncwotCi0gICAgICAgIGlmICdDRkxBR1MnIGluIGVudjoKLSAg
ICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCdDRkxBR1M9JXMnLCBlbnZbJ0NGTEFHUyddKQot
ICAgICAgICBpZiAnTERGTEFHUycgaW4gZW52OgotICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVi
dWcoJ0xERkxBR1MgJXMnLCBlbnZbJ0xERkxBR1MnXSkKLSAgICAgICAgaWYgJ1JVTicgaW4gZW52
OgotICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoJ1JVTj0lcycsIGVudlsnUlVOJ10pCi0g
ICAgICAgIHNlbGYuX3J1bl9jb21tYW5kKFsnZ3RrZG9jLXNjYW5nb2JqJywgJy0tbW9kdWxlPSVz
JyAlIHNlbGYubW9kdWxlX25hbWVdLAotICAgICAgICAgICAgICAgICAgICAgICAgICBlbnY9ZW52
LCBjd2Q9c2VsZi5vdXRwdXRfZGlyKQotCi0gICAgZGVmIF9ydW5fZ3RrZG9jX21rdG1wbChzZWxm
KToKLSAgICAgICAgYXJncyA9IFsnZ3RrZG9jLW1rdG1wbCcsICctLW1vZHVsZT0lcycgJSBzZWxm
Lm1vZHVsZV9uYW1lXQotICAgICAgICBzZWxmLl9ydW5fY29tbWFuZChhcmdzLCBjd2Q9c2VsZi5v
dXRwdXRfZGlyKQotCi0gICAgZGVmIF9ydW5fZ3RrZG9jX21rZGIoc2VsZik6Ci0gICAgICAgIHNn
bWxfZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLm91dHB1dF9kaXIsIHNlbGYubWFpbl9zZ21sX2Zp
bGUpCi0gICAgICAgIHNlbGYuX3JhaXNlX2V4Y2VwdGlvbl9pZl9maWxlX2luYWNjZXNzaWJsZShz
Z21sX2ZpbGUpCi0KLSAgICAgICAgYXJncyA9IFsnZ3RrZG9jLW1rZGInLAotICAgICAgICAgICAg
ICAgICctLW1vZHVsZT0lcycgJSBzZWxmLm1vZHVsZV9uYW1lLAotICAgICAgICAgICAgICAgICct
LW1haW4tc2dtbC1maWxlPSVzJyAlIHNnbWxfZmlsZSwKLSAgICAgICAgICAgICAgICAnLS1zb3Vy
Y2Utc3VmZml4ZXM9aCxjLGNwcCxjYycsCi0gICAgICAgICAgICAgICAgJy0tb3V0cHV0LWZvcm1h
dD14bWwnLAotICAgICAgICAgICAgICAgICctLXNnbWwtbW9kZSddCi0KLSAgICAgICAgIyBFYWNo
IGRpcmVjdG9yeSBzaG91bGQgYmUgaGF2ZSBpdHMgb3duICItLXNvdXJjZS1kaXI9IiBwcmVmaXgu
Ci0gICAgICAgIGFyZ3MuZXh0ZW5kKFsnLS1zb3VyY2UtZGlyPSVzJyAlIHBhdGggZm9yIHBhdGgg
aW4gc2VsZi5zb3VyY2VfZGlyc10pCi0gICAgICAgIHNlbGYuX3J1bl9jb21tYW5kKGFyZ3MsIGN3
ZD1zZWxmLm91dHB1dF9kaXIpCi0KLSAgICBkZWYgX3J1bl9ndGtkb2NfbWtodG1sKHNlbGYpOgot
ICAgICAgICBodG1sX2Rlc3RfZGlyID0gb3MucGF0aC5qb2luKHNlbGYub3V0cHV0X2RpciwgJ2h0
bWwnKQotICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2RpcihodG1sX2Rlc3RfZGlyKToKLSAgICAg
ICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiJXMgaXMgbm90IGEgZGlyZWN0b3J5LCBjb3VsZCBub3Qg
Z2VuZXJhdGUgSFRNTCIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIGh0bWxfZGVzdF9k
aXIpCi0gICAgICAgIGVsaWYgbm90IG9zLmFjY2VzcyhodG1sX2Rlc3RfZGlyLCBvcy5YX09LIHwg
b3MuUl9PSyB8IG9zLldfT0spOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJDb3VsZCBu
b3QgYWNjZXNzICVzIHRvIGdlbmVyYXRlIEhUTUwiCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJSBodG1sX2Rlc3RfZGlyKQotCi0gICAgICAgICMgZ3RrZG9jLW1raHRtbCBleHBlY3RzIHRo
ZSBTR01MIHBhdGggdG8gYmUgYWJzb2x1dGUuCi0gICAgICAgIHNnbWxfZmlsZSA9IG9zLnBhdGgu
am9pbihvcy5wYXRoLmFic3BhdGgoc2VsZi5vdXRwdXRfZGlyKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNlbGYubWFpbl9zZ21sX2ZpbGUpCi0gICAgICAgIHNlbGYuX3JhaXNl
X2V4Y2VwdGlvbl9pZl9maWxlX2luYWNjZXNzaWJsZShzZ21sX2ZpbGUpCi0KLSAgICAgICAgc2Vs
Zi5fcnVuX2NvbW1hbmQoWydndGtkb2MtbWtodG1sJywgc2VsZi5tb2R1bGVfbmFtZSwgc2dtbF9m
aWxlXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY3dkPWh0bWxfZGVzdF9kaXIpCi0KLSAg
ICBkZWYgX3J1bl9ndGtkb2NfZml4eHJlZihzZWxmKToKLSAgICAgICAgc2VsZi5fcnVuX2NvbW1h
bmQoWydndGtkb2MtZml4eHJlZicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1tb2R1
bGUtZGlyPWh0bWwnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0taHRtbC1kaXI9aHRt
bCddLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjd2Q9c2VsZi5vdXRwdXRfZGlyKQotCi0K
LWNsYXNzIFBrZ0NvbmZpZ0dUS0RvYyhHVEtEb2MpOgotCi0gICAgIiIiQ2xhc3MgcmVhZHMgYSBs
aWJyYXJ5J3MgcGtnY29uZmlnIGZpbGUgdG8gZ3Vlc3MgZ3RrZG9jIHBhcmFtZXRlcnMuCi0KLSAg
ICBTb21lIGd0a2RvYyBwYXJhbWV0ZXJzIGNhbiBiZSBndWVzc2VkIGJ5IHJlYWRpbmcgYSBsaWJy
YXJ5J3MgcGtnY29uZmlnCi0gICAgZmlsZSwgaW5jbHVkaW5nIHRoZSBjZmxhZ3MsIGxkZmxhZ3Mg
YW5kIHZlcnNpb24gcGFyYW1ldGVycy4gSWYgeW91Ci0gICAgcHJvdmlkZSB0aGVzZSBwYXJhbWV0
ZXJzIGFzIHdlbGwsIHRoZXkgd2lsbCBiZSBhcHBlbmRlZCB0byB0aGUgb25lcwotICAgIGd1ZXNz
ZWQgdmlhIHRoZSBwa2djb25maWcgZmlsZS4KLQotICAgIEtleXdvcmQgYXJndW1lbnRzOgotICAg
ICAgcGtnX2NvbmZpZ19wYXRoIC0tIFBhdGggdG8gdGhlIHBrZ2NvbmZpZyBmaWxlIGZvciB0aGUg
bGlicmFyeS4gUmVxdWlyZWQuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgcGtn
X2NvbmZpZ19wYXRoLCAqKmFyZ3MpOgotICAgICAgICBzdXBlcihQa2dDb25maWdHVEtEb2MsIHNl
bGYpLl9faW5pdF9fKCoqYXJncykKLQotICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMocGtn
X2NvbmZpZ19wYXRoKToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignQ291bGQgbm90IGZp
bmQgcGtnLWNvbmZpZyBmaWxlIGF0OiAlcycKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAl
IHBrZ19jb25maWdfcGF0aCkKLQotICAgICAgICBzZWxmLmNmbGFncyArPSAiICIgKyBzZWxmLl9y
dW5fY29tbWFuZChbJ3BrZy1jb25maWcnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcGtnX2NvbmZpZ19wYXRoLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tY2ZsYWdzJ10sIHByaW50X291dHB1dD1GYWxz
ZSkKLSAgICAgICAgc2VsZi5sZGZsYWdzICs9ICIgIiArIHNlbGYuX3J1bl9jb21tYW5kKFsncGtn
LWNvbmZpZycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwa2dfY29uZmlnX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnLS1saWJzJ10sIHByaW50X291dHB1dD1GYWxzZSkKLSAgICAgICAgc2VsZi52
ZXJzaW9uID0gc2VsZi5fcnVuX2NvbW1hbmQoWydwa2ctY29uZmlnJywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBrZ19jb25maWdfcGF0aCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLW1vZHZlcnNpb24nXSwgcHJpbnRfb3V0
cHV0PUZhbHNlKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IDc1ZjRlZmZjZWFiYzU0OWI2N2YxNDQzMjg2ZjYzMDE3ZjA2MzBkZWUuLjJjODM4OGVj
MWNhN2ZmODBiNTM2M2FkODNlNWFkNGQ0ZTE4ZTE0YjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMS0xMS0xNyAg
TWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10g
SW50ZWdyYXRlIGJ1aWxkLWd0a2RvYyBpbnRvIGJ1aWxkLXdlYmtpdCBhbmQgbWFrZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzI2MjYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFt
OiBBZGRlZCBzdXBwb3J0IGZvciBuZXcgc2NyaXB0cyBhbmQgIm1ha2UgZG9jcyIuCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRkaXJzLnBtOiBDYWxsIGdlbmVyYXRlLWd0a2RvYyB3aGVuIGJ1aWxk
aW5nLgorICAgICAgICAoYnVpbGRBdXRvdG9vbHNQcm9qZWN0KToKKyAgICAgICAgKiBndGsvZ2Vu
ZXJhdGUtZ3RrZG9jOiBBZGRlZC4KKyAgICAgICAgKiBndGsvZ3RrZG9jLnB5OiBSZW5hbWVkIGZy
b20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy9ndGtkb2MucHkuCisKIDIw
MTEtMTEtMjMgIFJhcGhhZWwgS3VibyBkYSBDb3N0YSAgPGt1Ym9AcHJvZnVzaW9uLm1vYmk+CiAK
ICAgICAgICAgW0NNYWtlXSBNb3ZlIHRoZSB0b3AtbGV2ZWwgbG9naWMgdG8gdGhlIHRvcC1sZXZl
bCBkaXJlY3RvcnkuCmRpZmYgLS1naXQgYS9Ub29scy9HTlVtYWtlZmlsZS5hbSBiL1Rvb2xzL0dO
VW1ha2VmaWxlLmFtCmluZGV4IGZkOWVmNzAxNDNlYmNmYWE0NjgxM2IxMjgwYmFlY2E0ZDYzMGIz
NGEuLmI4ODVhYjkxOGYzZDZlYmFkM2E2ZGY0Y2Q2NjIzMzE4ODYyODIzMzggMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0dOVW1ha2VmaWxlLmFtCisrKyBiL1Rvb2xzL0dOVW1ha2VmaWxlLmFtCkBAIC0yMjcs
MyArMjI3LDQ0IEBAIFRlc3ROZXRzY2FwZVBsdWdpbl9saWJ0ZXN0bmV0c2NhcGVwbHVnaW5fbGFf
TERGTEFHUyA9IFwKIAogQ0xFQU5GSUxFUyArPSBUZXN0TmV0c2NhcGVQbHVnaW4vbGlidGVzdG5l
dHNjYXBlcGx1Z2luLmxhCiBlbmRpZgorCitFWFRSQV9ESVNUICs9IFwKKwlUb29scy9ndGsvZ2Vu
ZXJhdGUtZ3RrZG9jIFwKKwlUb29scy9ndGsvZ3RrZG9jLnB5IFwKKwlUb29scy9TY3JpcHRzL1ZD
U1V0aWxzLnBtIFwKKwlUb29scy9TY3JpcHRzL3dlYmtpdC1idWlsZC1kaXJlY3RvcnkgXAorCVRv
b2xzL1NjcmlwdHMvd2Via2l0ZGlycy5wbQorCitpZiBFTkFCTEVfV0VCS0lUMgorZG9jczogJChC
VUlMVF9TT1VSQ0VTKSBcCisJbGlid2Via2l0Z3RrLUBXRUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJ
T05ALkBXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05ALmxhIFwKKwlsaWJ3ZWJraXQyZ3RrLUBX
RUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05ALkBXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05A
LmxhCisJJChzcmNkaXIpL1Rvb2xzL2d0ay9nZW5lcmF0ZS1ndGtkb2MKK2Vsc2UKK2RvY3M6ICQo
QlVJTFRfU09VUkNFUykgXAorCWxpYndlYmtpdGd0ay1AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJT
SU9OQC5AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQC5sYQorCSQoc3JjZGlyKS9Ub29scy9n
dGsvZ2VuZXJhdGUtZ3RrZG9jCitlbmRpZgorLlBIT05ZIDogZG9jcworCitjbGVhbi1sb2NhbDog
ZG9jLWNsZWFuLWxvY2FsCitkb2MtY2xlYW4tbG9jYWw6CisJQHJtIC1mIERvY3VtZW50YXRpb24v
d2Via2l0Z3RrLyp+IERvY3VtZW50YXRpb24vd2Via2l0Z3RrKi5iYWsKKwlAcm0gLWYgRG9jdW1l
bnRhdGlvbi93ZWJraXQyZ3RrLyp+IERvY3VtZW50YXRpb24vd2Via2l0Mmd0ayouYmFrCitkaXN0
Y2xlYW4tbG9jYWw6IGRvYy1kaXN0Y2xlYW4tbG9jYWwKK2RvYy1kaXN0Y2xlYW4tbG9jYWw6CisJ
QHJtIC1yZiBEb2N1bWVudGF0aW9uCittYWludGFpbmVyLWNsZWFuLWxvY2FsOiBkb2MtbWFpbnRh
aW5lci1jbGVhbi1sb2NhbAorZG9jLW1haW50YWluZXItY2xlYW4tbG9jYWw6IGNsZWFuCisJQHJt
IC1yZiBEb2N1bWVudGF0aW9uL3dlYmtpdGd0ayBEb2N1bWVudGF0aW9uL3dlYmtpdDJndGsKKwkt
QHJtZGlyIERvY3VtZW50YXRpb24KKworaWYgRU5BQkxFX0dUS19ET0MKK2Rpc3QtY2hlY2stZ3Rr
ZG9jOgorYWxsOiBkb2NzCitlbHNlCitkaXN0LWNoZWNrLWd0a2RvYzoKKwlAZWNobyAiKioqIGd0
ay1kb2MgbXVzdCBiZSBpbnN0YWxsZWQgYW5kIGVuYWJsZWQgaW4gb3JkZXIgdG8gbWFrZSBkaXN0
IgorCUBmYWxzZQorZW5kaWYKKwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRkaXJz
LnBtIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRkaXJzLnBtCmluZGV4IDBjYTQ4OGIyZDU5YzRkYjhi
YTdlM2E0YzZjMmY0NmYyYTIxMjRlYjguLjliYTQwNTg2YTRlY2JlM2U1NWRmYzFlMDA0ZjBlMjA2
OWRkMDVlNTggMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0ZGlycy5wbQorKysgYi9U
b29scy9TY3JpcHRzL3dlYmtpdGRpcnMucG0KQEAgLTE2NzksNiArMTY3OSwxNCBAQCBzdWIgYnVp
bGRBdXRvdG9vbHNQcm9qZWN0KCRAKQogICAgIH0KIAogICAgIGNoZGlyICIuLiIgb3IgZGllOwor
CisgICAgaWYgKGlzR3RrKCkpIHsKKyAgICAgICAgbXkgJHJlbGF0aXZlU2NyaXB0c1BhdGggPSBy
ZWxhdGl2ZVNjcmlwdHNEaXIoKTsKKyAgICAgICAgaWYgKHN5c3RlbSgiJHJlbGF0aXZlU2NyaXB0
c1BhdGgvLi4vZ3RrL2dlbmVyYXRlLWd0a2RvYyAtLXNraXAtaHRtbCIpKSB7CisgICAgICAgICAg
ICBkaWUgIlxuIGd0a2RvYyBkaWQgbm90IGJ1aWxkIHdpdGhvdXQgd2FybmluZ3NcbiI7CisgICAg
ICAgIH0KKyAgICB9CisKICAgICByZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvZ3Rr
L2dlbmVyYXRlLWd0a2RvYyBiL1Rvb2xzL2d0ay9nZW5lcmF0ZS1ndGtkb2MKbmV3IGZpbGUgbW9k
ZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YWZlNWM5YzkxZjVlYTNmYWZkNGEyYmJhYWRkYzY0ZjhiNDJiNDNhNAotLS0gL2Rldi9udWxsCisr
KyBiL1Rvb2xzL2d0ay9nZW5lcmF0ZS1ndGtkb2MKQEAgLTAsMCArMSwxNDUgQEAKKyMhL3Vzci9i
aW4vZW52IHB5dGhvbgorIyBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KKyMKKyMgVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorIyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg
UHVibGljCisjIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorIyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorIyBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIwor
IyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVy
YWwgUHVibGljCisjIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3Jp
dGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyMgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisKK2ltcG9y
dCBnbG9iCitpbXBvcnQgZ3RrZG9jCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IG9zLnBhdGgKK2lt
cG9ydCBzdWJwcm9jZXNzCitpbXBvcnQgc3lzCisKK3NjcmlwdF9kaXIgPSBOb25lCitidWlsZF9k
aXIgPSBOb25lCisKK2RlZiBjb25maWd1cmVfbG9nZ2luZygpOgorICAgIGxldmVsID0gbG9nZ2lu
Zy5ERUJVRyBpZiAnLXYnIGluIHN5cy5hcmd2IGVsc2UgbG9nZ2luZy5JTkZPCisgICAgbG9nZ2Vy
ID0gbG9nZ2luZy5nZXRMb2dnZXIoJ2d0a2RvYycpCisgICAgbG9nZ2VyLnNldExldmVsKGxldmVs
KQorICAgIGhhbmRsZXIgPSBsb2dnaW5nLlN0cmVhbUhhbmRsZXIoKQorICAgIGhhbmRsZXIuc2V0
TGV2ZWwobGV2ZWwpCisgICAgbG9nZ2VyLmFkZEhhbmRsZXIoaGFuZGxlcikKKyAgICBpZiBsZXZl
bCA9PSBsb2dnaW5nLkRFQlVHOgorICAgICAgICBoYW5kbGVyLnNldEZvcm1hdHRlcihsb2dnaW5n
LkZvcm1hdHRlcignWyUoYXNjdGltZSlzXSAgJShtZXNzYWdlKXMnKSkKKyAgICBlbHNlOgorICAg
ICAgICBoYW5kbGVyLnNldEZvcm1hdHRlcihsb2dnaW5nLkZvcm1hdHRlcignJShtZXNzYWdlKXMn
KSkKKworZGVmIHNjcmlwdF9wYXRoKCphcmdzKToKKyAgICBnbG9iYWwgc2NyaXB0X2RpcgorICAg
IGlmIG5vdCBzY3JpcHRfZGlyOgorICAgICAgICBzY3JpcHRfZGlyID0gb3MucGF0aC5qb2luKG9z
LnBhdGguZGlybmFtZShfX2ZpbGVfXyksICcuLicsICdTY3JpcHRzJykKKyAgICByZXR1cm4gb3Mu
cGF0aC5qb2luKCooc2NyaXB0X2RpciwpICsgYXJncykKKworZGVmIHRvcF9sZXZlbF9wYXRoKCph
cmdzKToKKyAgICByZXR1cm4gb3MucGF0aC5qb2luKCooKHNjcmlwdF9wYXRoKCcuLicsICcuLicp
LCkgKyBhcmdzKSkKKworZGVmIGdldF9idWlsZF9wYXRoKCk6CisgICAgZ2xvYmFsIGJ1aWxkX2Rp
cgorICAgIGlmIGJ1aWxkX2RpcjoKKyAgICAgICAgcmV0dXJuIGJ1aWxkX2RpcgorCisgICAgZGVm
IGlzX3ZhbGlkX2J1aWxkX2RpcmVjdG9yeShwYXRoKToKKyAgICAgICAgcmV0dXJuIG9zLnBhdGgu
ZXhpc3RzKG9zLnBhdGguam9pbihwYXRoLCAnLmxpYnMnKSkKKworICAgIHByb2Nlc3MgPSBzdWJw
cm9jZXNzLlBvcGVuKFsncGVybCcsIHNjcmlwdF9wYXRoKCd3ZWJraXQtYnVpbGQtZGlyZWN0b3J5
JyksICctLWNvbmZpZ3VyYXRpb24nLCAnZ3RrJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkKKyAgICBidWlsZF9kaXIgPSBwcm9jZXNzLmNv
bW11bmljYXRlKClbMF0uc3RyaXAoKQorCisgICAgaWYgaXNfdmFsaWRfYnVpbGRfZGlyZWN0b3J5
KGJ1aWxkX2Rpcik6CisgICAgICAgIHJldHVybiBidWlsZF9kaXIKKyAgICBidWlsZF9kaXIgPSB0
b3BfbGV2ZWxfcGF0aCgpCisgICAgaWYgaXNfdmFsaWRfYnVpbGRfZGlyZWN0b3J5KGJ1aWxkX2Rp
cik6CisgICAgICAgIHJldHVybiBidWlsZF9kaXIKKworICAgIHByaW50ICdDb3VsZCBub3QgZGV0
ZXJtaW5lIGJ1aWxkIGRpcmVjdG9yeS4nCisgICAgc3lzLmV4aXQoMSkKKworZGVmIGJ1aWxkX3Bh
dGgoKmFyZ3MpOgorICAgIHJldHVybiBvcy5wYXRoLmpvaW4oKihnZXRfYnVpbGRfcGF0aCgpLCkg
KyBhcmdzKQorCitkZWYgZ2V0X2NvbW1vbl9vcHRpb25zKCk6CisgICAgcmV0dXJuIHsKKyAgICAg
ICAgJ2RlY29yYXRvcic6ICdXRUJLSVRfQVBJJywKKyAgICAgICAgJ2RlcHJlY2F0aW9uX2d1YXJk
JzogJ1dFQktJVF9ESVNBQkxFX0RFUFJFQ0FURUQnLAorICAgICAgICAnbGlicmFyeV9wYXRoJyA6
IGJ1aWxkX3BhdGgoJy5saWJzJyksCisgICAgfQorCitkZWYgZ2V0X3dlYmtpdDJfb3B0aW9ucygp
OgorICAgIGRlZiBkZXJpdmVkX3NvdXJjZXNfcGF0aCgqYXJncyk6CisgICAgICAgIHJldHVybiBi
dWlsZF9wYXRoKCooKCdEZXJpdmVkU291cmNlcycsICdXZWJLaXQyJykgKyBhcmdzKSkKKyAgICBk
ZWYgc3JjX3BhdGgoKmFyZ3MpOgorICAgICAgICByZXR1cm4gdG9wX2xldmVsX3BhdGgoKigoJ1Nv
dXJjZScsICdXZWJLaXQyJywgJ1VJUHJvY2VzcycsICdBUEknLCAnZ3RrJykgKyBhcmdzKSkKKwor
ICAgIGRlcml2ZWRfc291cmNlcyA9IGJ1aWxkX3BhdGgoJ0Rlcml2ZWRTb3VyY2VzJywgJ1dlYktp
dDInKQorICAgIG9wdGlvbnMgPSBnZXRfY29tbW9uX29wdGlvbnMoKS5jb3B5KCkKKyAgICBvcHRp
b25zLnVwZGF0ZSh7CisgICAgICAgICdtb2R1bGVfbmFtZScgOiAnd2Via2l0Mmd0aycsCisgICAg
ICAgICdkb2NfZGlyJyA6IHNyY19wYXRoKCdkb2NzJyksCisgICAgICAgICdvdXRwdXRfZGlyJyA6
IGJ1aWxkX3BhdGgoJ0RvY3VtZW50YXRpb24nLCAnd2Via2l0Mmd0aycpLAorICAgICAgICAnc291
cmNlX2RpcnMnIDogW3NyY19wYXRoKCldLAorICAgICAgICAnY2ZsYWdzJyA6ICcgLUknICsgZGVy
aXZlZF9zb3VyY2VzX3BhdGgoJ3dlYmtpdDJndGsnLCAnaW5jbHVkZScpICsgXAorICAgICAgICAg
ICAgICAgICAgICcgLUknICsgZGVyaXZlZF9zb3VyY2VzX3BhdGgoJ3dlYmtpdDJndGsnKSArIFwK
KyAgICAgICAgICAgICAgICAgICAnIC1JJyArIGRlcml2ZWRfc291cmNlc19wYXRoKCdpbmNsdWRl
JykgKyBcCisgICAgICAgICAgICAgICAgICAgJyAtSScgKyB0b3BfbGV2ZWxfcGF0aCgnU291cmNl
JykgKyBcCisgICAgICAgICAgICAgICAgICAgJyAtSScgKyBzcmNfcGF0aCgpLAorICAgICAgICAn
aWdub3JlZF9maWxlcyc6IGdsb2IuZ2xvYihzcmNfcGF0aCgnKlByaXZhdGUuaCcpKSArIFwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBnbG9iLmdsb2Ioc3JjX3BhdGgoJ1BhZ2VDbGllbnRJbXBs
LionKSkgKyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYi5nbG9iKHNyY19wYXRoKCd0
ZXN0cy8qLmgnKSkKKyAgICB9KQorICAgIHJldHVybiAoYnVpbGRfcGF0aCgnU291cmNlJywgJ1dl
YktpdDInLCAnd2Via2l0Mmd0ay0zLjAucGMnKSwgb3B0aW9ucykKKworZGVmIGdldF93ZWJraXQx
X29wdGlvbnMoKToKKyAgICBkZWYgZGVyaXZlZF9zb3VyY2VzX3BhdGgoKmFyZ3MpOgorICAgICAg
ICByZXR1cm4gYnVpbGRfcGF0aCgqKCgnRGVyaXZlZFNvdXJjZXMnLCAnV2ViS2l0MicpICsgYXJn
cykpCisgICAgZGVmIHNyY19wYXRoKCphcmdzKToKKyAgICAgICAgcmV0dXJuIHRvcF9sZXZlbF9w
YXRoKCooKCdTb3VyY2UnLCAnV2ViS2l0JywgJ2d0aycpICsgYXJncykpCisKKyAgICBkZXJpdmVk
X3NvdXJjZXMgPSBidWlsZF9wYXRoKCdEZXJpdmVkU291cmNlcycsICdXZWJLaXQyJykKKyAgICBv
cHRpb25zID0gZ2V0X2NvbW1vbl9vcHRpb25zKCkuY29weSgpCisgICAgb3B0aW9ucy51cGRhdGUo
eworICAgICAgICAnbW9kdWxlX25hbWUnIDogJ3dlYmtpdGd0aycsCisgICAgICAgICdkb2NfZGly
JyA6IHNyY19wYXRoKCdkb2NzJyksCisgICAgICAgICdvdXRwdXRfZGlyJyA6IGJ1aWxkX3BhdGgo
J0RvY3VtZW50YXRpb24nLCAnd2Via2l0Z3RrJyksCisgICAgICAgICdzb3VyY2VfZGlycycgOiBb
c3JjX3BhdGgoJ3dlYmtpdCcpLCBidWlsZF9wYXRoKCdTb3VyY2UnLCAnV2ViS2l0JywgJ2d0aycs
ICd3ZWJraXQnKV0sCisgICAgICAgICdjZmxhZ3MnIDogJyAtSScgKyBidWlsZF9wYXRoKCdXZWJL
aXQnLCAnZ3RrJykgKyBcCisgICAgICAgICAgICAgICAgICAgJyAtSScgKyBidWlsZF9wYXRoKCdE
ZXJpdmVkU291cmNlcycpICsgXAorICAgICAgICAgICAgICAgICAgICcgLUknICsgc3JjX3BhdGgo
KSArIFwKKyAgICAgICAgICAgICAgICAgICAnIC1JJyArIHRvcF9sZXZlbF9wYXRoKCdTb3VyY2Un
KSArIFwKKyAgICAgICAgICAgICAgICAgICAnIC1JJyArIHRvcF9sZXZlbF9wYXRoKCdTb3VyY2Un
LCAnSmF2YVNjcmlwdENvcmUnLCAnRm9yd2FyZGluZ0hlYWRlcnMnKSwKKyAgICAgICAgJ2lnbm9y
ZWRfZmlsZXMnOiBnbG9iLmdsb2Ioc3JjX3BhdGgoJ3dlYmtpdCcsICcqcHJpdmF0ZS4qJykpCisg
ICAgfSkKKyAgICByZXR1cm4gKGJ1aWxkX3BhdGgoJ1NvdXJjZScsICdXZWJLaXQnLCAnZ3RrJywg
J3dlYmtpdGd0ay0zLjAucGMnKSwgb3B0aW9ucykKKworY29uZmlndXJlX2xvZ2dpbmcoKQorCisj
IFdlIG5lZWQgdG8gYWRkIHRoZSBKYXZhU2NyaXB0Q29yZSBidWlsZCBkaXJlY3RvcnkgdG8gdGhl
IFBLR19DT05GSUdfUEFUSAorIyBzbyB0aGF0IHBrZ2NvbmZpZyBjYW4gcHJvcGVybHkgcmVzb2x2
ZSB0aGUgbGliamF2YXNjcmlwdGNvcmUgZGVwZW5kZW5jeS4KK29zLmVudmlyb25bJ1BLR19DT05G
SUdfUEFUSCddID0gYnVpbGRfcGF0aCgnU291cmNlJywgJ0phdmFTY3JpcHRDb3JlJykgXAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICc6JyArIG9zLmVudmlyb24uZ2V0KCdQS0df
Q09ORklHX1BBVEgnKQorCitwcmludCAiR2VuZXJhdGluZyBXZWJLaXQxIGRvY3VtZW50YXRpb24u
Li4iCitwa2dfY29uZmlnX3BhdGgsIG9wdGlvbnMgPSBnZXRfd2Via2l0MV9vcHRpb25zKCkKK2dl
bmVyYXRvciA9IGd0a2RvYy5Qa2dDb25maWdHVEtEb2MocGtnX2NvbmZpZ19wYXRoLCAqKm9wdGlv
bnMpCitnZW5lcmF0b3IuZ2VuZXJhdGUoaHRtbD0nLS1za2lwLWh0bWwnIG5vdCBpbiBzeXMuYXJn
dikKKworIyBXZWJLaXQyIG1pZ2h0IG5vdCBiZSBlbmFibGVkLCBzbyBjaGVjayBmb3IgdGhlIHBr
Zy1jb25maWcgZmlsZSBiZWZvcmUgYnVpbGRpbmcgZG9jdW1lbnRhdGlvbi4KK2lmIG9zLnBhdGgu
ZXhpc3RzKGJ1aWxkX3BhdGgoJ1NvdXJjZScsICdXZWJLaXQyJywgJ3dlYmtpdDJndGstMy4wLnBj
JykpOgorICAgIHByaW50ICJcbkdlbmVyYXRpbmcgV2ViS2l0MiBkb2N1bWVudGF0aW9uLi4uIgor
ICAgIHBrZ19jb25maWdfcGF0aCwgb3B0aW9ucyA9IGdldF93ZWJraXQyX29wdGlvbnMoKQorICAg
IGdlbmVyYXRvciA9IGd0a2RvYy5Qa2dDb25maWdHVEtEb2MocGtnX2NvbmZpZ19wYXRoLCAqKm9w
dGlvbnMpCisgICAgZ2VuZXJhdG9yLmdlbmVyYXRlKGh0bWw9Jy0tc2tpcC1odG1sJyBub3QgaW4g
c3lzLmFyZ3YpCisKK3N5cy5leGl0KGdlbmVyYXRvci5zYXdfd2FybmluZ3MpCmRpZmYgLS1naXQg
YS9Ub29scy9ndGsvZ3RrZG9jLnB5IGIvVG9vbHMvZ3RrL2d0a2RvYy5weQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
M2YwZDMwYzY2OWNiMjNhNDllNjM1ZmQ2NTlhN2U3NjViY2UzOWViCi0tLSAvZGV2L251bGwKKysr
IGIvVG9vbHMvZ3RrL2d0a2RvYy5weQpAQCAtMCwwICsxLDM3NyBAQAorIyBDb3B5cmlnaHQgKEMp
IDIwMTEgSWdhbGlhIFMuTC4KKyMKKyMgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorIyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisjIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorIyB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisj
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorIyBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisjIExpY2Vuc2UgYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyMgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBN
QSAgMDIxMTAtMTMwMSAgVVNBCisKK2ltcG9ydCBlcnJubworaW1wb3J0IGxvZ2dpbmcKK2ltcG9y
dCBvcworaW1wb3J0IG9zLnBhdGgKK2ltcG9ydCBzdWJwcm9jZXNzCitpbXBvcnQgc3lzCisKKwor
Y2xhc3MgR1RLRG9jKG9iamVjdCk6CisKKyAgICAiIiJDbGFzcyB0aGF0IGNvbnRyb2xzIGEgZ3Rr
ZG9jIHJ1bi4KKworICAgIEVhY2ggaW5zdGFuY2Ugb2YgdGhpcyBjbGFzcyByZXByZXNlbnRzIG9u
ZSBndGtkb2MgY29uZmlndXJhdGlvbgorICAgIGFuZCBzZXQgb2YgZG9jdW1lbnRhdGlvbi4gVGhl
IGd0a2RvYyBwYWNrYWdlIGlzIGEgc2VyaWVzIG9mIHRvb2xzCisgICAgcnVuIGNvbnNlY3V0aXZl
bHkgd2hpY2ggY29udmVydHMgaW5saW5lIEMvQysrIGRvY3VtZW50YXRpb24gaW50bworICAgIGRv
Y2Jvb2sgZmlsZXMgYW5kIHRoZW4gaW50byBIVE1MLiBUaGlzIGNsYXNzIGlzIHN1aXRhYmxlIGZv
cgorICAgIGdlbmVyYXRpbmcgZG9jdW1lbnRhdGlvbiBvciBzaW1wbHkgdmVyaWZ5aW5nIGNvcnJl
Y3RuZXNzLgorCisgICAgS2V5d29yZCBhcmd1bWVudHM6CisgICAgb3V0cHV0X2RpciAgICAgICAg
IC0tIFRoZSBwYXRoIHdoZXJlIGd0a2RvYyBvdXRwdXQgc2hvdWxkIGJlIHBsYWNlZC4gR2VuZXJh
dGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICBtYXkgb3ZlcndyaXRlIGZpbGUgaW4gdGhp
cyBkaXJlY3RvcnkuIFJlcXVpcmVkLgorICAgIG1vZHVsZV9uYW1lICAgICAgICAtLSBUaGUgbmFt
ZSBvZiB0aGUgZG9jdW1lbnRhdGlvbiBtb2R1bGUuIEZvciBsaWJyYXJpZXMgdGhpcworICAgICAg
ICAgICAgICAgICAgICAgICAgICBpcyB0eXBpY2FsbHkgdGhlIGxpYnJhcnkgbmFtZS4gUmVxdWly
ZWQgaWYgbm90IGxpYnJhcnkgcGF0aAorICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBnaXZl
bi4KKyAgICBzb3VyY2VfZGlycyAgICAgICAgLS0gQSBsaXN0IG9mIHBhdGhzIHRvIHRoZSBzb3Vy
Y2UgY29kZSB0byBiZSBzY2FubmVkLiBSZXF1aXJlZC4KKyAgICBpZ25vcmVkX2ZpbGVzICAgICAg
LS0gQSBsaXN0IG9mIGZpbGVuYW1lcyB0byBpZ25vcmUgaW4gdGhlIHNvdXJjZSBkaXJlY3Rvcnku
IEl0IGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgIG9ubHkgbmVjZXNzYXJ5IHRvIHByb3Zp
ZGUgdGhlIGJhc2VuYW1lcyBvZiB0aGVzZSBmaWxlcy4KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgVHlwaWNhbGx5IGl0IGlzIGltcG9ydGFudCB0byBwcm92aWRlIGFuIHVwZGF0ZWQgbGlzdCBv
ZgorICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmVkIGZpbGVzIHRvIHByZXZlbnQgd2Fy
bmluZ3MgYWJvdXQgdW5kb2N1bWVudGVkIHN5bWJvbHMuCisgICAgZGVjb3JhdG9yICAgICAgICAg
IC0tIElmIGEgZGVjb3JhdG9yIGlzIHVzZWQgdG8gdW5oaWRlIGNlcnRhaW4gc3ltYm9scyBpbiBo
ZWFkZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXMgdGhpcyBwYXJhbWV0ZXIgaXMg
cmVxdWlyZWQgZm9yIHN1Y2Nlc3NmdWwgc2Nhbm5pbmcuCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIChkZWZhdWx0ICcnKQorICAgIGRlcHJlY2F0aW9uX2d1YXJkICAtLSBndGtkb2MgdHJpZXMg
dG8gZW5zdXJlIHRoYXQgc3ltYm9scyBtYXJrZWQgYXMgZGVwcmVjYXRlZAorICAgICAgICAgICAg
ICAgICAgICAgICAgICBhcmUgZW5jYXNlZCBpbiB0aGlzIEMgcHJlcHJvY2Vzc29yIGRlZmluZS4g
VGhpcyBpcyByZXF1aXJlZAorICAgICAgICAgICAgICAgICAgICAgICAgICB0byBhdm9pZCBndGtk
b2Mgd2FybmluZ3MuIChkZWZhdWx0ICcnKQorICAgIGNmbGFncyAgICAgICAgICAgICAtLSBUaGlz
IHBhcmFtZXRlciBzcGVjaWZpZXMgYW55IHByZXByb2Nlc3NvciBmbGFncyBuZWNlc3NhcnkgZm9y
CisgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkaW5nIHRoZSBzY2FubmVyIGJpbmFyeSBk
dXJpbmcgZ3RrZG9jLXNjYW5vYmouIFR5cGljYWxseQorICAgICAgICAgICAgICAgICAgICAgICAg
ICB0aGlzIGluY2x1ZGVzIGFsbCBhYnNvbHV0ZSBpbmNsdWRlIHBhdGhzIG5lY2Vzc2FyeSB0byBy
ZXNvbHZlCisgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbCBoZWFkZXIgZGVwZW5kZW5jaWVz
LiAoZGVmYXVsdCAnJykKKyAgICBsZGZsYWdzICAgICAgICAgICAgLS0gVGhpcyBwYXJhbWV0ZXIg
c3BlY2lmaWVzIGFueSBsaW5rZXIgZmxhZ3MgbmVjZXNzYXJ5IGZvcgorICAgICAgICAgICAgICAg
ICAgICAgICAgICBidWlsZGluZyB0aGUgc2Nhbm5lciBiaW5hcnkgZHVyaW5nIGd0a2RvYy1zY2Fu
b2JqLiBUeXBpY2FsbHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyBpbmNsdWRlcyAi
LWx5b3VybGlicmFyeW5hbWUiLiAoZGVmYXVsdCAnJykKKyAgICBsaWJyYXJ5X3BhdGggICAgICAg
LS0gVGhpcyBwYXJhbWV0ZXIgc3BlY2lmaWVzIHRoZSBwYXRoIHRvIHRoZSBkaXJlY3Rvcnkgd2hl
cmUgeW91CisgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcnkgcmVzaWRlcyB1c2VkIGZv
ciBidWlsZGluZyB0aGUgc2Nhbm5lciBiaW5hcnkgZHVyaW5nCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIGd0a2RvYy1zY2Fub2JqLiAoZGVmYXVsdCAnJykKKworICAgIGRvY19kaXIgICAgICAg
ICAgICAtLSBUaGUgcGF0aCB0byBvdGhlciBkb2N1bWVudGF0aW9uIGZpbGVzIG5lY2Vzc2FyeSB0
byBidWlsZAorICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZG9jdW1lbnRhdGlvbi4gVGhp
cyBmaWxlcyBpbiB0aGlzIGRpcmVjdG9yeSBhcyB3ZWxsIGFzCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRoZSBmaWxlcyBpbiB0aGUgJ2h0bWwnIHN1YmRpcmVjdG9yeSB3aWxsIGJlIGNvcGll
ZAorICAgICAgICAgICAgICAgICAgICAgICAgICByZWN1cnNpdmVseSBpbnRvIHRoZSBvdXRwdXQg
ZGlyZWN0b3J5LiAoZGVmYXVsdCAnJykKKyAgICBtYWluX3NnbWxfZmlsZSAgICAgLS0gVGhlIHBh
dGggb3IgbmFtZSAoaWYgYSBkb2NfZGlyIGlzIGdpdmVuKSBvZiB0aGUgU0dNTCBmaWxlCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRoYXQgaXMgdGhlIGNvbnNpZGVyZWQgdGhlIG1haW4gcGFn
ZSBvZiB5b3VyIGRvY3VtZW50YXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWZh
dWx0OiA8bW9kdWxlX25hbWU+LWRvY3Muc2dtbCkKKyAgICB2ZXJzaW9uICAgICAgICAgICAgLS0g
VGhlIHZlcnNpb24gbnVtYmVyIG9mIHRoZSBtb2R1bGUuIElmIHRoaXMgaXMgcHJvdmlkZWQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIGEgdmVyc2lvbi54bWwgZmlsZSBjb250YWluaW5nIHRo
ZSB2ZXJzaW9uIHdpbGwgYmUgY3JlYXRlZAorICAgICAgICAgICAgICAgICAgICAgICAgICBpbiB0
aGUgb3V0cHV0IGRpcmVjdG9yeSBkdXJpbmcgZG9jdW1lbnRhdGlvbiBnZW5lcmF0aW9uLgorCisg
ICAgaW50ZXJhY3RpdmUgICAgICAgIC0tIFdoZXRoZXIgb3Igbm90IGVycm9ycyBvciB3YXJuaW5n
cyBzaG91bGQgcHJvbXB0IHRoZSB1c2VyCisgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGNv
bnRpbnVlIG9yIG5vdC4gV2hlbiB0aGlzIHZhbHVlIGlzIGZhbHNlLCBnZW5lcmF0aW9uCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIHdpbGwgY29udGludWUgZGVzcGl0ZSB3YXJuaW5ncy4gKGRl
ZmF1bHQgRmFsc2UpCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKiphcmdzKToK
KworICAgICAgICAjIFBhcmFtZXRlcnMgc3BlY2lmaWMgdG8gc2Nhbm5pbmcuCisgICAgICAgIHNl
bGYubW9kdWxlX25hbWUgPSAnJworICAgICAgICBzZWxmLnNvdXJjZV9kaXJzID0gW10KKyAgICAg
ICAgc2VsZi5pZ25vcmVkX2ZpbGVzID0gW10KKyAgICAgICAgc2VsZi5kZWNvcmF0b3IgPSAnJwor
ICAgICAgICBzZWxmLmRlcHJlY2F0aW9uX2d1YXJkID0gJycKKworICAgICAgICAjIFBhcmFtZXRl
cnMgc3BlY2lmaWMgdG8gZ3RrZG9jLXNjYW5vYmouCisgICAgICAgIHNlbGYuY2ZsYWdzID0gJycK
KyAgICAgICAgc2VsZi5sZGZsYWdzID0gJycKKyAgICAgICAgc2VsZi5saWJyYXJ5X3BhdGggPSAn
JworCisgICAgICAgICMgUGFyYW1ldGVycyBzcGVjaWZpYyB0byBnZW5lcmF0aW9uLgorICAgICAg
ICBzZWxmLm91dHB1dF9kaXIgPSAnJworICAgICAgICBzZWxmLmRvY19kaXIgPSAnJworICAgICAg
ICBzZWxmLm1haW5fc2dtbF9maWxlID0gJycKKworICAgICAgICBzZWxmLmludGVyYWN0aXZlID0g
RmFsc2UKKworICAgICAgICBzZWxmLmxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdndGtkb2Mn
KQorCisgICAgICAgIGZvciBrZXksIHZhbHVlIGluIGFyZ3MuaXRlcml0ZW1zKCk6CisgICAgICAg
ICAgICBzZXRhdHRyKHNlbGYsIGtleSwgdmFsdWUpCisKKyAgICAgICAgZGVmIHJhaXNlX2Vycm9y
X2lmX25vdF9zcGVjaWZpZWQoa2V5KToKKyAgICAgICAgICAgIGlmIG5vdCBnZXRhdHRyKHNlbGYs
IGtleSk6CisgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCclcyBub3Qgc3BlY2lmaWVk
LicgJSBrZXkpCisKKyAgICAgICAgcmFpc2VfZXJyb3JfaWZfbm90X3NwZWNpZmllZCgnb3V0cHV0
X2RpcicpCisgICAgICAgIHJhaXNlX2Vycm9yX2lmX25vdF9zcGVjaWZpZWQoJ3NvdXJjZV9kaXJz
JykKKyAgICAgICAgcmFpc2VfZXJyb3JfaWZfbm90X3NwZWNpZmllZCgnbW9kdWxlX25hbWUnKQor
CisgICAgICAgICMgTWFrZSBhbGwgcGF0aHMgYWJzb2x1dGUgaW4gY2FzZSB3ZSB3ZXJlIHBhc3Nl
ZCByZWxhdGl2ZSBwYXRocywgc2luY2UKKyAgICAgICAgIyB3ZSBjaGFuZ2UgdGhlIGN1cnJlbnQg
d29ya2luZyBkaXJlY3Rvcnkgd2hlbiBleGVjdXRpbmcgc3ViY29tbWFuZHMuCisgICAgICAgIHNl
bGYub3V0cHV0X2RpciA9IG9zLnBhdGguYWJzcGF0aChzZWxmLm91dHB1dF9kaXIpCisgICAgICAg
IHNlbGYuc291cmNlX2RpcnMgPSBbb3MucGF0aC5hYnNwYXRoKHgpIGZvciB4IGluIHNlbGYuc291
cmNlX2RpcnNdCisgICAgICAgIGlmIHNlbGYubGlicmFyeV9wYXRoOgorICAgICAgICAgICAgc2Vs
Zi5saWJyYXJ5X3BhdGggPSBvcy5wYXRoLmFic3BhdGgoc2VsZi5saWJyYXJ5X3BhdGgpCisKKyAg
ICAgICAgaWYgbm90IHNlbGYubWFpbl9zZ21sX2ZpbGU6CisgICAgICAgICAgICBzZWxmLm1haW5f
c2dtbF9maWxlID0gc2VsZi5tb2R1bGVfbmFtZSArICItZG9jcy5zZ21sIgorCisgICAgZGVmIGdl
bmVyYXRlKHNlbGYsIGh0bWw9VHJ1ZSk6CisgICAgICAgIHNlbGYuc2F3X3dhcm5pbmdzID0gRmFs
c2UKKworICAgICAgICBzZWxmLl9jb3B5X2RvY19maWxlc190b19vdXRwdXRfZGlyKGh0bWwpCisg
ICAgICAgIHNlbGYuX3dyaXRlX3ZlcnNpb25feG1sKCkKKyAgICAgICAgc2VsZi5fcnVuX2d0a2Rv
Y19zY2FuKCkKKyAgICAgICAgc2VsZi5fcnVuX2d0a2RvY19zY2FuZ29iaigpCisgICAgICAgIHNl
bGYuX3J1bl9ndGtkb2NfbWt0bXBsKCkKKyAgICAgICAgc2VsZi5fcnVuX2d0a2RvY19ta2RiKCkK
KworICAgICAgICBpZiBub3QgaHRtbDoKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIHNl
bGYuX3J1bl9ndGtkb2NfbWtodG1sKCkKKyAgICAgICAgc2VsZi5fcnVuX2d0a2RvY19maXh4cmVm
KCkKKworICAgIGRlZiBfZGVsZXRlX2ZpbGVfaWZfZXhpc3RzKHNlbGYsIHBhdGgpOgorICAgICAg
ICBpZiBub3Qgb3MuYWNjZXNzKHBhdGgsIG9zLkZfT0sgfCBvcy5SX09LKToKKyAgICAgICAgICAg
IHJldHVybgorICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygnZGVsZXRpbmcgJXMnLCBwYXRoKQor
ICAgICAgICBvcy51bmxpbmsocGF0aCkKKworICAgIGRlZiBfY3JlYXRlX2RpcmVjdG9yeV9pZl9u
b25leGlzdGVudChzZWxmLCBwYXRoKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3MubWFr
ZWRpcnMocGF0aCkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyb3I6CisgICAgICAgICAg
ICBpZiBlcnJvci5lcnJubyAhPSBlcnJuby5FRVhJU1Q6CisgICAgICAgICAgICAgICAgcmFpc2UK
KworICAgIGRlZiBfcmFpc2VfZXhjZXB0aW9uX2lmX2ZpbGVfaW5hY2Nlc3NpYmxlKHNlbGYsIHBh
dGgpOgorICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMocGF0aCkgb3Igbm90IG9zLmFjY2Vz
cyhwYXRoLCBvcy5SX09LKToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiQ291bGQgbm90
IGFjY2VzcyBmaWxlIGF0OiAlcyIgJSBwYXRoKQorCisgICAgZGVmIF9vdXRwdXRfaGFzX3dhcm5p
bmdzKHNlbGYsIG91dHB1dHMpOgorICAgICAgICBmb3Igb3V0cHV0IGluIG91dHB1dHM6CisgICAg
ICAgICAgICBpZiBvdXRwdXQgYW5kIG91dHB1dC5maW5kKCd3YXJuaW5nJyk6CisgICAgICAgICAg
ICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgX2Fza195
ZXNfb3Jfbm9fcXVlc3Rpb24oc2VsZiwgcXVlc3Rpb24pOgorICAgICAgICBpZiBub3Qgc2VsZi5p
bnRlcmFjdGl2ZToKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisKKyAgICAgICAgcXVlc3Rpb24g
Kz0gJyBbeS9OXSAnCisgICAgICAgIGFuc3dlciA9IE5vbmUKKyAgICAgICAgd2hpbGUgYW5zd2Vy
ICE9ICd5JyBhbmQgYW5zd2VyICE9ICduJyBhbmQgYW5zd2VyICE9ICcnOgorICAgICAgICAgICAg
YW5zd2VyID0gcmF3X2lucHV0KHF1ZXN0aW9uKS5sb3dlcigpCisgICAgICAgIHJldHVybiBhbnN3
ZXIgPT0gJ3knCisKKyAgICBkZWYgX3J1bl9jb21tYW5kKHNlbGYsIGFyZ3MsIGVudj1Ob25lLCBj
d2Q9Tm9uZSwgcHJpbnRfb3V0cHV0PVRydWUpOgorICAgICAgICBpZiBwcmludF9vdXRwdXQ6Cisg
ICAgICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCJSdW5uaW5nICVzIiwgYXJnc1swXSkKKyAgICAg
ICAgc2VsZi5sb2dnZXIuZGVidWcoIkZ1bGwgY29tbWFuZCBhcmdzOiAlcyIsIHN0cihhcmdzKSkK
KworICAgICAgICBwcm9jZXNzID0gc3VicHJvY2Vzcy5Qb3BlbihhcmdzLCBlbnY9ZW52LCBjd2Q9
Y3dkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vz
cy5QSVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJv
Y2Vzcy5QSVBFKQorICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHByb2Nlc3MuY29tbXVuaWNhdGUo
KQorCisgICAgICAgIGlmIHByaW50X291dHB1dDoKKyAgICAgICAgICAgIGlmIHN0ZG91dDoKKyAg
ICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKHN0ZG91dCkKKyAgICAgICAgICAgIGlmIHN0
ZGVycjoKKyAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKHN0ZGVycikKKworICAgICAg
ICBpZiBwcm9jZXNzLnJldHVybmNvZGUgIT0gMDoKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlv
bignJXMgcHJvZHVjZWQgYSBub24temVybyByZXR1cm4gY29kZSAlaScKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJSAoYXJnc1swXSwgcHJvY2Vzcy5yZXR1cm5jb2RlKSkKKworICAgICAg
ICBpZiAnd2FybmluZycgaW4gc3RkZXJyIG9yICd3YXJuaW5nJyBpbiBzdGRvdXQ6CisgICAgICAg
ICAgICBzZWxmLnNhd193YXJuaW5ncyA9IFRydWUKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9h
c2tfeWVzX29yX25vX3F1ZXN0aW9uKCclcyBwcm9kdWNlZCB3YXJuaW5ncywgJworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RyeSB0byBjb250aW51ZT8n
ICUgYXJnc1swXSk6CisgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCclcyBzdGVwIGZh
aWxlZCcgJSBhcmdzWzBdKQorCisgICAgICAgIHJldHVybiBzdGRvdXQuc3RyaXAoKQorCisgICAg
ZGVmIF9jb3B5X2RvY19maWxlc190b19vdXRwdXRfZGlyKHNlbGYsIGh0bWw9VHJ1ZSk6CisgICAg
ICAgIGlmIG5vdCBzZWxmLmRvY19kaXI6CisgICAgICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCdO
b3QgY29weWluZyBhbnkgZmlsZXMgZnJvbSBkb2MgZGlyZWN0b3J5LCcKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJyBiZWNhdXNlIG5vIGRvYyBkaXJlY3RvcnkgZ2l2ZW4uJykKKyAgICAg
ICAgICAgIHJldHVybgorCisgICAgICAgIGRlZiBjb3B5X2ZpbGVfcmVwbGFjaW5nX2V4aXN0aW5n
KHNyYywgZGVzdCk6CisgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKHNyYyk6CisgICAgICAg
ICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoJ3NraXBwZWQgZGlyZWN0b3J5ICVzJywgIHNyYykK
KyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIGlmIG5vdCBvcy5hY2Nlc3Moc3Jj
LCBvcy5GX09LIHwgb3MuUl9PSyk6CisgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWco
J3NraXBwZWQgdW5yZWFkYWJsZSAlcycsIHNyYykKKyAgICAgICAgICAgICAgICByZXR1cm4KKwor
ICAgICAgICAgICAgc2VsZi5fZGVsZXRlX2ZpbGVfaWZfZXhpc3RzKGRlc3QpCisKKyAgICAgICAg
ICAgIHNlbGYubG9nZ2VyLmRlYnVnKCdjcmVhdGVkICVzJywgZGVzdCkKKyAgICAgICAgICAgIG9z
Lmxpbmsoc3JjLCBkZXN0KQorCisgICAgICAgIGRlZiBjb3B5X2FsbF9maWxlc19pbl9kaXJlY3Rv
cnkoc3JjLCBkZXN0KToKKyAgICAgICAgICAgIGZvciBwYXRoIGluIG9zLmxpc3RkaXIoc3JjKToK
KyAgICAgICAgICAgICAgICBjb3B5X2ZpbGVfcmVwbGFjaW5nX2V4aXN0aW5nKG9zLnBhdGguam9p
bihzcmMsIHBhdGgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgb3MucGF0aC5qb2luKGRlc3QsIHBhdGgpKQorCisgICAgICAgIHNlbGYubG9nZ2VyLmluZm8o
J0NvcHlpbmcgdGVtcGxhdGUgZmlsZXMgdG8gb3V0cHV0IGRpcmVjdG9yeS4uLicpCisgICAgICAg
IHNlbGYuX2NyZWF0ZV9kaXJlY3RvcnlfaWZfbm9uZXhpc3RlbnQoc2VsZi5vdXRwdXRfZGlyKQor
ICAgICAgICBjb3B5X2FsbF9maWxlc19pbl9kaXJlY3Rvcnkoc2VsZi5kb2NfZGlyLCBzZWxmLm91
dHB1dF9kaXIpCisKKyAgICAgICAgaWYgbm90IGh0bWw6CisgICAgICAgICAgICByZXR1cm4KKwor
ICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCdDb3B5aW5nIEhUTUwgZmlsZXMgdG8gb3V0cHV0IGRp
cmVjdG9yeS4uLicpCisgICAgICAgIGh0bWxfc3JjX2RpciA9IG9zLnBhdGguam9pbihzZWxmLmRv
Y19kaXIsICdodG1sJykKKyAgICAgICAgaHRtbF9kZXN0X2RpciA9IG9zLnBhdGguam9pbihzZWxm
Lm91dHB1dF9kaXIsICdodG1sJykKKyAgICAgICAgc2VsZi5fY3JlYXRlX2RpcmVjdG9yeV9pZl9u
b25leGlzdGVudChodG1sX2Rlc3RfZGlyKQorCisgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGh0
bWxfc3JjX2Rpcik6CisgICAgICAgICAgICBjb3B5X2FsbF9maWxlc19pbl9kaXJlY3RvcnkoaHRt
bF9zcmNfZGlyLCBodG1sX2Rlc3RfZGlyKQorCisgICAgZGVmIF93cml0ZV92ZXJzaW9uX3htbChz
ZWxmKToKKyAgICAgICAgaWYgbm90IHNlbGYudmVyc2lvbjoKKyAgICAgICAgICAgIHNlbGYubG9n
Z2VyLmluZm8oJ05vIHZlcnNpb24gc3BlY2lmaWVkLCBzbyBub3Qgd3JpdGluZyB2ZXJzaW9uLnht
bCcpCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICB2ZXJzaW9uX3htbF9wYXRoID0gb3Mu
cGF0aC5qb2luKHNlbGYub3V0cHV0X2RpciwgJ3ZlcnNpb24ueG1sJykKKyAgICAgICAgc3JjX3Zl
cnNpb25feG1sX3BhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi5kb2NfZGlyLCAndmVyc2lvbi54bWwn
KQorCisgICAgICAgICMgRG9uJ3Qgb3ZlcndyaXRlIHZlcnNpb24ueG1sIGlmIGl0IHdhcyBpbiB0
aGUgZG9jIGRpcmVjdG9yeS4KKyAgICAgICAgaWYgb3MucGF0aC5leGlzdHModmVyc2lvbl94bWxf
cGF0aCkgYW5kIFwKKyAgICAgICAgICAgb3MucGF0aC5leGlzdHMoc3JjX3ZlcnNpb25feG1sX3Bh
dGgpOgorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgb3V0cHV0X2ZpbGUgPSBvcGVuKHZl
cnNpb25feG1sX3BhdGgsICd3JykKKyAgICAgICAgb3V0cHV0X2ZpbGUud3JpdGUoc2VsZi52ZXJz
aW9uKQorICAgICAgICBvdXRwdXRfZmlsZS5jbG9zZSgpCisKKyAgICBkZWYgX3J1bl9ndGtkb2Nf
c2NhbihzZWxmKToKKyAgICAgICAgYXJncyA9IFsnZ3RrZG9jLXNjYW4nLAorICAgICAgICAgICAg
ICAgICctLW1vZHVsZT0lcycgJSBzZWxmLm1vZHVsZV9uYW1lLAorICAgICAgICAgICAgICAgICct
LXJlYnVpbGQtdHlwZXMnXQorCisgICAgICAgICMgRWFjaCBzb3VyY2UgZGlyZWN0b3J5IHNob3Vs
ZCBiZSBoYXZlIGl0cyBvd24gIi0tc291cmNlLWRpcj0iIHByZWZpeC4KKyAgICAgICAgYXJncy5l
eHRlbmQoWyctLXNvdXJjZS1kaXI9JXMnICUgcGF0aCBmb3IgcGF0aCBpbiBzZWxmLnNvdXJjZV9k
aXJzXSkKKworICAgICAgICBpZiBzZWxmLmRlY29yYXRvcjoKKyAgICAgICAgICAgIGFyZ3MuYXBw
ZW5kKCctLWlnbm9yZS1kZWNvcmF0b3JzPSVzJyAlIHNlbGYuZGVjb3JhdG9yKQorICAgICAgICBp
ZiBzZWxmLmRlcHJlY2F0aW9uX2d1YXJkOgorICAgICAgICAgICAgYXJncy5hcHBlbmQoJy0tZGVw
cmVjYXRlZC1ndWFyZHM9JXMnICUgc2VsZi5kZXByZWNhdGlvbl9ndWFyZCkKKyAgICAgICAgaWYg
c2VsZi5vdXRwdXRfZGlyOgorICAgICAgICAgICAgYXJncy5hcHBlbmQoJy0tb3V0cHV0LWRpcj0l
cycgJSBzZWxmLm91dHB1dF9kaXIpCisKKyAgICAgICAgIyBndGtkb2Mtc2NhbiB3YW50cyB0aGUg
YmFzZW5hbWVzIG9mIGlnbm9yZWQgaGVhZGVycywgc28gc3RyaXAgdGhlCisgICAgICAgICMgZGly
bmFtZS4gRGlmZmVyZW50IGZyb20gIi0tc291cmNlLWRpciIsIHRoZSBoZWFkZXJzIHNob3VsZCBi
ZQorICAgICAgICAjIHNwZWNpZmllZCBhcyBvbmUgbG9uZyBzdHJpbmcuCisgICAgICAgIGlmIHNl
bGYuaWdub3JlZF9maWxlczoKKyAgICAgICAgICAgIGlnbm9yZWRfZmlsZXNfYmFzZW5hbWVzID0g
XAorICAgICAgICAgICAgICAgIFtvcy5wYXRoLmJhc2VuYW1lKHgpIGZvciB4IGluIHNlbGYuaWdu
b3JlZF9maWxlc10KKyAgICAgICAgICAgIGFyZ3MuYXBwZW5kKCctLWlnbm9yZS1oZWFkZXJzPSVz
JyAlICcgJy5qb2luKGlnbm9yZWRfZmlsZXNfYmFzZW5hbWVzKSkKKworICAgICAgICBzZWxmLl9y
dW5fY29tbWFuZChhcmdzKQorCisgICAgZGVmIF9ydW5fZ3RrZG9jX3NjYW5nb2JqKHNlbGYpOgor
ICAgICAgICBlbnYgPSBvcy5lbnZpcm9uCisgICAgICAgIGxkZmxhZ3MgPSBzZWxmLmxkZmxhZ3MK
KyAgICAgICAgaWYgc2VsZi5saWJyYXJ5X3BhdGg6CisgICAgICAgICAgICBsZGZsYWdzID0gJyAi
LUwlcyIgJyAlIHNlbGYubGlicmFyeV9wYXRoICsgbGRmbGFncworICAgICAgICAgICAgY3VycmVu
dF9sZF9saWJyYXJ5X3BhdGggPSBlbnYuZ2V0KCdMRF9MSUJSQVJZX1BBVEgnKQorICAgICAgICAg
ICAgaWYgY3VycmVudF9sZF9saWJyYXJ5X3BhdGg6CisgICAgICAgICAgICAgICAgZW52WydSVU4n
XSA9ICdMRF9MSUJSQVJZX1BBVEg9IiVzOiVzIiAnICUgKHNlbGYubGlicmFyeV9wYXRoLCBjdXJy
ZW50X2xkX2xpYnJhcnlfcGF0aCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAg
ZW52WydSVU4nXSA9ICdMRF9MSUJSQVJZX1BBVEg9IiVzIiAnICUgc2VsZi5saWJyYXJ5X3BhdGgK
KworICAgICAgICBpZiBsZGZsYWdzOgorICAgICAgICAgICAgZW52WydMREZMQUdTJ10gPSBsZGZs
YWdzCisgICAgICAgIGlmIHNlbGYuY2ZsYWdzOgorICAgICAgICAgICAgZW52WydDRkxBR1MnXSA9
IHNlbGYuY2ZsYWdzCisKKyAgICAgICAgaWYgJ0NGTEFHUycgaW4gZW52OgorICAgICAgICAgICAg
c2VsZi5sb2dnZXIuZGVidWcoJ0NGTEFHUz0lcycsIGVudlsnQ0ZMQUdTJ10pCisgICAgICAgIGlm
ICdMREZMQUdTJyBpbiBlbnY6CisgICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygnTERGTEFH
UyAlcycsIGVudlsnTERGTEFHUyddKQorICAgICAgICBpZiAnUlVOJyBpbiBlbnY6CisgICAgICAg
ICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygnUlVOPSVzJywgZW52WydSVU4nXSkKKyAgICAgICAgc2Vs
Zi5fcnVuX2NvbW1hbmQoWydndGtkb2Mtc2NhbmdvYmonLCAnLS1tb2R1bGU9JXMnICUgc2VsZi5t
b2R1bGVfbmFtZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGVudj1lbnYsIGN3ZD1zZWxm
Lm91dHB1dF9kaXIpCisKKyAgICBkZWYgX3J1bl9ndGtkb2NfbWt0bXBsKHNlbGYpOgorICAgICAg
ICBhcmdzID0gWydndGtkb2MtbWt0bXBsJywgJy0tbW9kdWxlPSVzJyAlIHNlbGYubW9kdWxlX25h
bWVdCisgICAgICAgIHNlbGYuX3J1bl9jb21tYW5kKGFyZ3MsIGN3ZD1zZWxmLm91dHB1dF9kaXIp
CisKKyAgICBkZWYgX3J1bl9ndGtkb2NfbWtkYihzZWxmKToKKyAgICAgICAgc2dtbF9maWxlID0g
b3MucGF0aC5qb2luKHNlbGYub3V0cHV0X2Rpciwgc2VsZi5tYWluX3NnbWxfZmlsZSkKKyAgICAg
ICAgc2VsZi5fcmFpc2VfZXhjZXB0aW9uX2lmX2ZpbGVfaW5hY2Nlc3NpYmxlKHNnbWxfZmlsZSkK
KworICAgICAgICBhcmdzID0gWydndGtkb2MtbWtkYicsCisgICAgICAgICAgICAgICAgJy0tbW9k
dWxlPSVzJyAlIHNlbGYubW9kdWxlX25hbWUsCisgICAgICAgICAgICAgICAgJy0tbWFpbi1zZ21s
LWZpbGU9JXMnICUgc2dtbF9maWxlLAorICAgICAgICAgICAgICAgICctLXNvdXJjZS1zdWZmaXhl
cz1oLGMsY3BwLGNjJywKKyAgICAgICAgICAgICAgICAnLS1vdXRwdXQtZm9ybWF0PXhtbCcsCisg
ICAgICAgICAgICAgICAgJy0tc2dtbC1tb2RlJ10KKworICAgICAgICAjIEVhY2ggZGlyZWN0b3J5
IHNob3VsZCBiZSBoYXZlIGl0cyBvd24gIi0tc291cmNlLWRpcj0iIHByZWZpeC4KKyAgICAgICAg
YXJncy5leHRlbmQoWyctLXNvdXJjZS1kaXI9JXMnICUgcGF0aCBmb3IgcGF0aCBpbiBzZWxmLnNv
dXJjZV9kaXJzXSkKKyAgICAgICAgc2VsZi5fcnVuX2NvbW1hbmQoYXJncywgY3dkPXNlbGYub3V0
cHV0X2RpcikKKworICAgIGRlZiBfcnVuX2d0a2RvY19ta2h0bWwoc2VsZik6CisgICAgICAgIGh0
bWxfZGVzdF9kaXIgPSBvcy5wYXRoLmpvaW4oc2VsZi5vdXRwdXRfZGlyLCAnaHRtbCcpCisgICAg
ICAgIGlmIG5vdCBvcy5wYXRoLmlzZGlyKGh0bWxfZGVzdF9kaXIpOgorICAgICAgICAgICAgcmFp
c2UgRXhjZXB0aW9uKCIlcyBpcyBub3QgYSBkaXJlY3RvcnksIGNvdWxkIG5vdCBnZW5lcmF0ZSBI
VE1MIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgaHRtbF9kZXN0X2RpcikKKyAgICAg
ICAgZWxpZiBub3Qgb3MuYWNjZXNzKGh0bWxfZGVzdF9kaXIsIG9zLlhfT0sgfCBvcy5SX09LIHwg
b3MuV19PSyk6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIkNvdWxkIG5vdCBhY2Nlc3Mg
JXMgdG8gZ2VuZXJhdGUgSFRNTCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIGh0bWxf
ZGVzdF9kaXIpCisKKyAgICAgICAgIyBndGtkb2MtbWtodG1sIGV4cGVjdHMgdGhlIFNHTUwgcGF0
aCB0byBiZSBhYnNvbHV0ZS4KKyAgICAgICAgc2dtbF9maWxlID0gb3MucGF0aC5qb2luKG9zLnBh
dGguYWJzcGF0aChzZWxmLm91dHB1dF9kaXIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2VsZi5tYWluX3NnbWxfZmlsZSkKKyAgICAgICAgc2VsZi5fcmFpc2VfZXhjZXB0aW9u
X2lmX2ZpbGVfaW5hY2Nlc3NpYmxlKHNnbWxfZmlsZSkKKworICAgICAgICBzZWxmLl9ydW5fY29t
bWFuZChbJ2d0a2RvYy1ta2h0bWwnLCBzZWxmLm1vZHVsZV9uYW1lLCBzZ21sX2ZpbGVdLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICBjd2Q9aHRtbF9kZXN0X2RpcikKKworICAgIGRlZiBfcnVu
X2d0a2RvY19maXh4cmVmKHNlbGYpOgorICAgICAgICBzZWxmLl9ydW5fY29tbWFuZChbJ2d0a2Rv
Yy1maXh4cmVmJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICctLW1vZHVsZS1kaXI9aHRt
bCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1odG1sLWRpcj1odG1sJ10sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIGN3ZD1zZWxmLm91dHB1dF9kaXIpCisKKworY2xhc3MgUGtn
Q29uZmlnR1RLRG9jKEdUS0RvYyk6CisKKyAgICAiIiJDbGFzcyByZWFkcyBhIGxpYnJhcnkncyBw
a2djb25maWcgZmlsZSB0byBndWVzcyBndGtkb2MgcGFyYW1ldGVycy4KKworICAgIFNvbWUgZ3Rr
ZG9jIHBhcmFtZXRlcnMgY2FuIGJlIGd1ZXNzZWQgYnkgcmVhZGluZyBhIGxpYnJhcnkncyBwa2dj
b25maWcKKyAgICBmaWxlLCBpbmNsdWRpbmcgdGhlIGNmbGFncywgbGRmbGFncyBhbmQgdmVyc2lv
biBwYXJhbWV0ZXJzLiBJZiB5b3UKKyAgICBwcm92aWRlIHRoZXNlIHBhcmFtZXRlcnMgYXMgd2Vs
bCwgdGhleSB3aWxsIGJlIGFwcGVuZGVkIHRvIHRoZSBvbmVzCisgICAgZ3Vlc3NlZCB2aWEgdGhl
IHBrZ2NvbmZpZyBmaWxlLgorCisgICAgS2V5d29yZCBhcmd1bWVudHM6CisgICAgICBwa2dfY29u
ZmlnX3BhdGggLS0gUGF0aCB0byB0aGUgcGtnY29uZmlnIGZpbGUgZm9yIHRoZSBsaWJyYXJ5LiBS
ZXF1aXJlZC4KKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwa2dfY29uZmlnX3Bh
dGgsICoqYXJncyk6CisgICAgICAgIHN1cGVyKFBrZ0NvbmZpZ0dUS0RvYywgc2VsZikuX19pbml0
X18oKiphcmdzKQorCisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhwa2dfY29uZmlnX3Bh
dGgpOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdDb3VsZCBub3QgZmluZCBwa2ctY29u
ZmlnIGZpbGUgYXQ6ICVzJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgcGtnX2NvbmZp
Z19wYXRoKQorCisgICAgICAgIHNlbGYuY2ZsYWdzICs9ICIgIiArIHNlbGYuX3J1bl9jb21tYW5k
KFsncGtnLWNvbmZpZycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwa2dfY29uZmlnX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnLS1jZmxhZ3MnXSwgcHJpbnRfb3V0cHV0PUZhbHNlKQorICAgICAg
ICBzZWxmLmxkZmxhZ3MgKz0gIiAiICsgc2VsZi5fcnVuX2NvbW1hbmQoWydwa2ctY29uZmlnJywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBrZ19jb25m
aWdfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICctLWxpYnMnXSwgcHJpbnRfb3V0cHV0PUZhbHNlKQorICAgICAgICBzZWxmLnZlcnNpb24gPSBz
ZWxmLl9ydW5fY29tbWFuZChbJ3BrZy1jb25maWcnLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcGtnX2NvbmZpZ19wYXRoLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJy0tbW9kdmVyc2lvbiddLCBwcmludF9vdXRwdXQ9RmFsc2Up
CmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggN2RmNTlkMTBmM2Y5ZTk0
YWVkY2E4OWI0OTIyNmE1MmJmZWU1NzJjNS4uNGNmOWMyOWU4MWQ3ZTNiODUxNzIzMTUyODgxNTE1
NzA4YzM0ODcyMyAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE2IEBACisyMDExLTExLTE3ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlh
LmNvbT4KKworICAgICAgICBbR1RLXSBJbnRlZ3JhdGUgYnVpbGQtZ3RrZG9jIGludG8gYnVpbGQt
d2Via2l0IGFuZCBtYWtlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03MjYyNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogR05VbWFrZWZpbGUuYW06IFJlbW92ZSByZWZlcmVuY2VzIHRvIG9sZCBndGtkb2Mg
ZmlsZXMuIFVwZGF0ZQorICAgICAgICB0aGUgZGlzdC1ob29rIHRvIGluY2x1ZGUgY29weWluZyBk
b2N1bWVudGF0aW9uIGludG8gdGhlIGRpc3RyaWJ1dGlvbi4KKyAgICAgICAgVGhpcyBhbHNvIG1l
YW5zIHRoYXQgdGhlIGJ1aWxkIHdpbGwgZmFpbCBpZiBkb2N1bWVudGF0aW9uIGhhc24ndCBiZWVu
CisgICAgICAgIGdlbmVyYXRlZCBiZWZvcmUgJ21ha2UgZGlzdC4nCisgICAgICAgICogY29uZmln
dXJlLmFjOiBEaXR0by4KKwogMjAxMS0xMS0yMyAgUmFwaGFlbCBLdWJvIGRhIENvc3RhICA8a3Vi
b0Bwcm9mdXNpb24ubW9iaT4KIAogICAgICAgICBbQ01ha2VdIE1vdmUgdGhlIHRvcC1sZXZlbCBs
b2dpYyB0byB0aGUgdG9wLWxldmVsIGRpcmVjdG9yeS4KZGlmZiAtLWdpdCBhL0dOVW1ha2VmaWxl
LmFtIGIvR05VbWFrZWZpbGUuYW0KaW5kZXggZjkxZTg4ZDg5NmMxMTVjNGFhM2QzYjk3ZDFhOGVk
MTY2NTU1YzU5Ni4uNWU4Zjg2NTRiOGYyMjZiZTM4YTA2ZmMzNjc1ZmFjNTRlMDcxOGVjNiAxMDA2
NDQKLS0tIGEvR05VbWFrZWZpbGUuYW0KKysrIGIvR05VbWFrZWZpbGUuYW0KQEAgLTIwNyw3ICsy
MDcsNiBAQCBpbmNsdWRlIFNvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtCiBpbmNsdWRl
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR05VbWFrZWZpbGUuYW0KIGluY2x1ZGUg
VG9vbHMvR05VbWFrZWZpbGUuYW0KIGluY2x1ZGUgU291cmNlL1dlYktpdC9ndGsvcG8vR05VbWFr
ZWZpbGUuYW0KLWluY2x1ZGUgU291cmNlL1dlYktpdC9ndGsvZG9jcy9HTlVtYWtlZmlsZS5hbQog
aW5jbHVkZSBUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvR05VbWFrZWZpbGUuSW1hZ2VEaWZmLmFt
CiAKIGlmIEVOQUJMRV9XRUJLSVQyCkBAIC0yNjUsMyArMjY0LDE2IEBAIGNsZWFuLWxvY2FsOgog
bWFpbnRhaW5lci1jbGVhbi1sb2NhbDogZGlzdGNsZWFuLWxvY2FsCiBkaXN0Y2xlYW4tbG9jYWw6
CiAJLXJtIC1yZiAkKEdFTlNPVVJDRVMpICQoR0VOUFJPR1JBTVMpCisKK2Rpc3QtaG9vazoKKwlj
cCAkKFdlYktpdCkvTkVXUyAkKGRpc3RkaXIpCisJQG1rZGlyIC1wICQoZGlzdGRpcikvRG9jdW1l
bnRhdGlvbi93ZWJraXRndGsvaHRtbAorCUBta2RpciAtcCAkKGRpc3RkaXIpL0RvY3VtZW50YXRp
b24vd2Via2l0Z3RrL3RtcGwKKwlALWNwIC4vRG9jdW1lbnRhdGlvbi93ZWJraXRndGsvdG1wbC8q
LnNnbWwgJChkaXN0ZGlyKS9Eb2N1bWVudGF0aW9uL3dlYmtpdGd0ay90bXBsCisJQGNwIC4vRG9j
dW1lbnRhdGlvbi93ZWJraXRndGsvaHRtbC8qICQoZGlzdGRpcikvRG9jdW1lbnRhdGlvbi93ZWJr
aXRndGsvaHRtbAoraWYgRU5BQkxFX1dFQktJVDIKKwlAbWtkaXIgLXAgJChkaXN0ZGlyKS9Eb2N1
bWVudGF0aW9uL3dlYmtpdDJndGsvaHRtbAorCUBta2RpciAtcCAkKGRpc3RkaXIpL0RvY3VtZW50
YXRpb24vd2Via2l0Mmd0ay90bXBsCisJQC1jcCAuL0RvY3VtZW50YXRpb24vd2Via2l0Mmd0ay90
bXBsLyouc2dtbCAkKGRpc3RkaXIpL0RvY3VtZW50YXRpb24vd2Via2l0Mmd0ay90bXBsCisJQGNw
IC4vRG9jdW1lbnRhdGlvbi93ZWJraXQyZ3RrL2h0bWwvKiAkKGRpc3RkaXIpL0RvY3VtZW50YXRp
b24vd2Via2l0Mmd0ay9odG1sCitlbmRpZgpkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29u
ZmlndXJlLmFjCmluZGV4IGZhODM5NGMwZDE4OGRkMWE4MjVmMTNhNDg2OTQ2YjNiNzVkNmZiMGQu
LmZjY2MyYzFmMjJkNzY4MTg2ODIxOTBiMGVkOTJlNmYxMmIzZTY0ZWIgMTAwNjQ0Ci0tLSBhL2Nv
bmZpZ3VyZS5hYworKysgYi9jb25maWd1cmUuYWMKQEAgLTEyMTAsNyArMTIxMCw2IEBAIEdOVW1h
a2VmaWxlCiAKIEFDX0NPTkZJR19GSUxFUyhbCiBTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0dmVyc2lvbi5oCi1Eb2N1bWVudGF0aW9uL3ZlcnNpb24ueG1sOlNvdXJjZS9XZWJLaXQvZ3Rr
L2RvY3MvdmVyc2lvbi54bWwuaW4KIF0pCiAKIEFDX0NPTkZJR19GSUxFUyhbCkBAIC0xMjQ2LDYg
KzEyNDUsNyBAQCBCdWlsZCBjb25maWd1cmF0aW9uOgogIEZvbnQgYmFja2VuZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJHdpdGhfZm9udF9iYWNrZW5kCiAg
T3B0aW1pemVkIG1lbW9yeSBhbGxvY2F0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
OiAkZW5hYmxlX2Zhc3RfbWFsbG9jCiAgSmF2YVNjcmlwdCBFbmdpbmUgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOiAkd2l0aF9qc2VuZ2luZQorCiBGZWF0dXJlczoKICAz
RCBSZW5kZXJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6
ICRlbmFibGVfM2RfcmVuZGVyaW5nCiAgV2ViR0wgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOiAkZW5hYmxlX3dlYmdsCkBAIC0xMzA1LDYgKzEzMDUs
NyBAQCBHVEsrIGNvbmZpZ3VyYXRpb246CiAgR0RLIHRhcmdldCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAkd2l0aF90YXJnZXQKICBIaWxkb24gVUkgZXh0
ZW5zaW9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICR3aXRoX2hpbGRv
bgogIEludHJvc3BlY3Rpb24gc3VwcG9ydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDogJGVuYWJsZV9pbnRyb3NwZWN0aW9uCisgR2VuZXJhdGUgZG9jdW1lbnRhdGlvbiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAkZW5hYmxlX2d0a19kb2MKICIKIGlmIHRl
c3QgIiR3aXRoX3VuaWNvZGVfYmFja2VuZCIgPSAiZ2xpYiI7IHRoZW4KICAgIGVjaG8gIiAgICAg
Pj4gV0FSTklORzogdGhlIGdsaWItYmFzZWQgdW5pY29kZSBiYWNrZW5kIGlzIHNsb3cgYW5kIGlu
Y29tcGxldGUgPDwiCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116516</attachid>
            <date>2011-11-24 08:14:59 -0800</date>
            <delta_ts>2011-11-24 09:03:41 -0800</delta_ts>
            <desc>No longer use webkit-build-directory, work with _build, move utilities to common.py</desc>
            <filename>bug-72626-20111124171457.patch</filename>
            <type>text/plain</type>
            <size>63905</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxMDU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0
ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggZDlkMjhmOGRl
MTRmMjQ4ZjU4MjM1MmNjOGFkOTE4NDk0M2EyMTllZS4uNDM2Y2QxMmVmNzE3MmJmNThjMmY3YTgw
ZWY5NTM0MGY4NzUzYzg5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEx
LTExLTE3ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAg
ICBbR1RLXSBJbnRlZ3JhdGUgYnVpbGQtZ3RrZG9jIGludG8gYnVpbGQtd2Via2l0IGFuZCBtYWtl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjYyNgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZG9jcy9H
TlVtYWtlZmlsZS5hbTogUmVtb3ZlZC4KKyAgICAgICAgKiBkb2NzL3ZlcnNpb24ueG1sLmluOiBS
ZW1vdmVkLgorCiAyMDExLTExLTIzICBLYXVzdHViaCBBdHJhd2Fsa2FyICA8a2F1c3R1YmhAbW90
b3JvbGEuY29tPgogCiAgICAgICAgIERvY3VtZW50YXRpb24gZml4IGZvciBsb2FkLWNvbW1pdHRl
ZCBpbiB3ZWJraXR3ZWJmcmFtZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDhmZmNiMjI5NjY5YzYyMzllMWNjZDg3
ZTE3ZTUwNzIyMzhlZGVkMTAuLjQ2YTVkYjM4NGY1YmY4MWY1Nzg3ZTMzZDIyOTg0MWFjNmEwMDcx
YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0xMS0xNyAgTWFydGluIFJvYmlu
c29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gSW50ZWdyYXRlIGJ1
aWxkLWd0a2RvYyBpbnRvIGJ1aWxkLXdlYmtpdCBhbmQgbWFrZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzI2MjYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBSZW1vdmVkIHJl
ZmVyZW5jZXMgdG8gYnVpbGQtZ3RrZG9jIGFuZCBndGtkb2MucHkuCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9ndGsvZG9jcy9idWlsZC1ndGtkb2M6IFJlbW92ZWQuCisKIDIwMTEtMTEtMjMgIFJh
cGhhZWwgS3VibyBkYSBDb3N0YSAgPGt1Ym9AcHJvZnVzaW9uLm1vYmk+CiAKICAgICAgICAgW0NN
YWtlXSBNb3ZlIHRoZSB0b3AtbGV2ZWwgbG9naWMgdG8gdGhlIHRvcC1sZXZlbCBkaXJlY3Rvcnku
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9X
ZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtCmluZGV4IDc1MmM5ZTY1MTUyNWY5ZGMyMTA5ZDFiNjMx
OTA4YzYxOTQ2NzY1ZmIuLmUzNGI0NDIzNWNkZmRmNjdkOTE2ZWE3YTk2NmI5ZjI2YTE4MGNjNWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJj
ZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtCkBAIC0zODQsOCArMzg0LDEyIEBAIGdzZXR0aW5n
c19TQ0hFTUFTID0gJCh0b3BfYnVpbGRkaXIpL1NvdXJjZS9XZWJLaXQvZ3RrL29yZy53ZWJraXRn
dGstQFdFQktJVEdUS19BCiBFWFRSQV9ESVNUICs9IFwKIAkkKFdlYktpdCkvQ2hhbmdlTG9nIFwK
IAkkKFdlYktpdCkvTkVXUyBcCisJJChXZWJLaXQpL2RvY3Mvd2Via2l0Z3RrLWRvY3Muc2dtbCBc
CisJJChXZWJLaXQpL2RvY3Mvd2Via2l0Z3RrLXNlY3Rpb25zLnR4dCBcCisJJChXZWJLaXQpL2Rv
Y3Mvd2Via2l0Z3RrLnR5cGVzIFwKKwkkKFdlYktpdCkvZG9jcy93ZWJraXRlbnZpcm9ubWVudC54
bWwgXAorCSQoV2ViS2l0KS9kb2NzL3dlYmtpdGd0ay1vdmVycmlkZXMudHh0IFwKIAkkKFdlYktp
dCkvd2Via2l0bWFyc2hhbC5saXN0IFwKLQkkKFdlYktpdCkvR05VbWFrZWZpbGUuZ3RrLWRvYy5h
bSBcCiAJJChXZWJLaXQpL3BvLyogXAogCSQoV2ViS2l0KS9yZXNvdXJjZXMvKiBcCiAJJChXZWJL
aXQpL3Rlc3RzL3Jlc291cmNlcy8qIFwKQEAgLTU5Myw4ICs1OTcsNiBAQCBESVNUQ0xFQU5GSUxF
UyArPSBcCiAJJCh0b3BfYnVpbGRkaXIpL1NvdXJjZS9XZWJLaXQvZ3RrL29yZy53ZWJraXRndGst
QFdFQktJVEdUS19BUElfVkVSU0lPTkAuZ3NjaGVtYS54bWwgXAogCSQodG9wX2J1aWxkZGlyKS9T
b3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0dmVyc2lvbi5oCiAKLWRpc3QtaG9vazoKLQlj
cCAkKFdlYktpdCkvTkVXUyAkKGRpc3RkaXIpCiBpbnN0YWxsLWRhdGEtbG9jYWw6IHBvLWluc3Rh
bGwtZGF0YS1sb2NhbAogaW5zdGFsbGRpcnMtZGF0YS1sb2NhbDogcG8taW5zdGFsbGRpcnMtZGF0
YS1sb2NhbAogdW5pbnN0YWxsLWxvY2FsOiBwby11bmluc3RhbGwtbG9jYWwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmd0ay1kb2MuYW0gYi9Tb3VyY2UvV2ViS2l0
L2d0ay9HTlVtYWtlZmlsZS5ndGstZG9jLmFtCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwNTJjNzg4ZDljOWQzYzE1NDIyMmRlOWZlZTA0YWRmZWZjMThhYzIyLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1h
a2VmaWxlLmd0ay1kb2MuYW0KKysrIC9kZXYvbnVsbApAQCAtMSwyMDggKzAsMCBAQAotIyAtKi0g
bW9kZTogbWFrZWZpbGUgLSotCi0KLUdUS0RPQ19DQyA9ICQoTElCVE9PTCkgLS10YWc9Q0MgLS1t
b2RlPWNvbXBpbGUgJChDQykgJChHVEtET0NfSU5DTFVERVMpICQoR1RLRE9DX0RFUFNfQ0ZMQUdT
KSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKEFNX0NGTEFHUykgJChDRkxBR1MpCi1HVEtE
T0NfTEQgPSAkKExJQlRPT0wpIC0tdGFnPUNDIC0tbW9kZT1saW5rICQoQ0MpICQoR1RLRE9DX0RF
UFNfTElCUykgJChBTV9DRkxBR1MpICQoQ0ZMQUdTKSAkKEFNX0xERkxBR1MpICQoTERGTEFHUykK
LUdUS0RPQ19SVU4gPSAkKExJQlRPT0wpIC0tbW9kZT1leGVjdXRlCi0KLVRBUkdFVF9ESVI9JChI
VE1MX0RJUikvJChET0NfTU9EVUxFKQotCi1TRVRVUF9GSUxFUyA9IFwKLQkkKERPQ19NQUlOX1NH
TUxfRklMRSkJCVwKLQl3ZWJraXRlbnZpcm9ubWVudC54bWwJCVwKLQkkKERPQ19NT0RVTEUpLXNl
Y3Rpb25zLnR4dAlcCi0JJChET0NfTU9EVUxFKS1vdmVycmlkZXMudHh0Ci0KLUVYVFJBX0RJU1Qg
Kz0gXAotCSQoSFRNTF9JTUFHRVMpCQkJXAotCSQoU0VUVVBfRklMRVMpCi0KLURPQ19TVEFNUFM9
ZG9jLXNldHVwLWJ1aWxkLnN0YW1wIHNjYW4tYnVpbGQuc3RhbXAgdG1wbC1idWlsZC5zdGFtcCBz
Z21sLWJ1aWxkLnN0YW1wIFwKLQlodG1sLWJ1aWxkLnN0YW1wIHBkZi1idWlsZC5zdGFtcCBcCi0J
dG1wbC5zdGFtcCBzZ21sLnN0YW1wIGh0bWwuc3RhbXAgcGRmLnN0YW1wCi0KLVNDQU5PQkpfRklM
RVMgPSAJCSBcCi0JJChET0NfTU9EVUxFKS5hcmdzIAkgXAotCSQoRE9DX01PRFVMRSkuaGllcmFy
Y2h5ICBcCi0JJChET0NfTU9EVUxFKS5pbnRlcmZhY2VzIFwKLQkkKERPQ19NT0RVTEUpLnByZXJl
cXVpc2l0ZXMgXAotCSQoRE9DX01PRFVMRSkuc2lnbmFscwotCi1SRVBPUlRfRklMRVMgPSBcCi0J
JChET0NfTU9EVUxFKS11bmRvY3VtZW50ZWQudHh0IFwKLQkkKERPQ19NT0RVTEUpLXVuZGVjbGFy
ZWQudHh0IFwKLQkkKERPQ19NT0RVTEUpLXVudXNlZC50eHQKLQotQ0xFQU5GSUxFUyArPSAkKFND
QU5PQkpfRklMRVMpICQoUkVQT1JUX0ZJTEVTKSAkKERPQ19TVEFNUFMpCi0KLWlmIEVOQUJMRV9H
VEtfRE9DCi1IVE1MX0JVSUxEX1NUQU1QPWh0bWwtYnVpbGQuc3RhbXAKLWVuZGlmCi0KLWRvY19z
cmNkaXIgOj0gJChhYnNfc3JjZGlyKS9Tb3VyY2UvV2ViS2l0L2d0ay9kb2NzCi0KLWRvY3M6ICQo
SFRNTF9CVUlMRF9TVEFNUCkKLQotJChSRVBPUlRfRklMRVMpOiBzZ21sLWJ1aWxkLnN0YW1wCi0K
LSMjIyMgc2V0dXAgIyMjIwotCi1kb2Mtc2V0dXAtYnVpbGQuc3RhbXA6IGxpYndlYmtpdGd0ay1A
V0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQC5AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9O
QC5sYQotCS1AbWtkaXIgLXAgRG9jdW1lbnRhdGlvbgotCS1AbG4gLWZzIC4uL2RvbHRsaWJ0b29s
IERvY3VtZW50YXRpb24vCi0JLUBsbiAtZnMgLi4vZG9sdGNvbXBpbGUgRG9jdW1lbnRhdGlvbi8K
LQktQGxuIC1mcyAuLi9saWJ0b29sIERvY3VtZW50YXRpb24vCi0JLUBpZiB0ZXN0ICIkKGFic19z
cmNkaXIpIiAhPSAiJChhYnNfYnVpbGRkaXIpIiA7IHRoZW4gXAotCSAgICBlY2hvICcgIERPQyAg
IFByZXBhcmluZyBidWlsZCc7IFwKLQkgICAgZmlsZXM9YGVjaG8gJChTRVRVUF9GSUxFUykgJChE
T0NfTU9EVUxFKS50eXBlc2A7IFwKLQkgICAgaWYgdGVzdCAieCQkZmlsZXMiICE9ICJ4IiA7IHRo
ZW4gXAotCSAgICAgICAgZm9yIGZpbGUgaW4gJCRmaWxlcyA7IGRvIFwKLQkgICAgICAgICAgICB0
ZXN0IC1mICQoZG9jX3NyY2RpcikvJCRmaWxlICYmIFwKLQkgICAgICAgICAgICAgICAgY3AgLXB1
ICQoZG9jX3NyY2RpcikvJCRmaWxlICQoYWJzX2J1aWxkZGlyKS9Eb2N1bWVudGF0aW9uLyB8fCB0
cnVlOyBcCi0JICAgICAgICBkb25lOyBcCi0JICAgIGZpOyBcCi0JICAgIHRlc3QgLWQgJChkb2Nf
c3JjZGlyKS90bXBsICYmIFwKLQkgICAgICAgIHsgY3AgLXJwICQoZG9jX3NyY2RpcikvdG1wbCAk
KGFic19idWlsZGRpcikvRG9jdW1lbnRhdGlvbi87IFwKLQkgICAgICAgIGNobW9kIC1SIHUrdyAk
KGFic19idWlsZGRpcikvRG9jdW1lbnRhdGlvbi90bXBsOyB9IFwKLQlmaQotCUB0b3VjaCBkb2Mt
c2V0dXAtYnVpbGQuc3RhbXAKLQotIyMjIyBzY2FuICMjIyMKLQotc2Nhbi1idWlsZC5zdGFtcDog
ZG9jLXNldHVwLWJ1aWxkLnN0YW1wICQoSEZJTEVfR0xPQikgJChDRklMRV9HTE9CKQotCUBlY2hv
ICcgIERPQyAgIFNjYW5uaW5nIGhlYWRlciBmaWxlcycKLQlAY2QgRG9jdW1lbnRhdGlvbjsgX3Nv
dXJjZV9kaXI9JycgOyBcCi0JZm9yIGkgaW4gJChET0NfU09VUkNFX0RJUikgOyBkbyBcCi0JICAg
IF9zb3VyY2VfZGlyPSIkJHtfc291cmNlX2Rpcn0gLS1zb3VyY2UtZGlyPS4uLyQkaSIgOyBcCi0J
ZG9uZSA7IFwKLQlndGtkb2Mtc2NhbiAtLW1vZHVsZT0kKERPQ19NT0RVTEUpIC0taWdub3JlLWhl
YWRlcnM9IiQoSUdOT1JFX0hGSUxFUykiICQke19zb3VyY2VfZGlyfSAkKFNDQU5fT1BUSU9OUykg
JChFWFRSQV9IRklMRVMpCi0JQGNkIERvY3VtZW50YXRpb247IGlmIGdyZXAgLWwgJ14uLiokJCcg
JChET0NfTU9EVUxFKS50eXBlcyA+IC9kZXYvbnVsbCAyPiYxIDsgdGhlbiBcCi0JICAgIGVjaG8g
IiAgRE9DICAgSW50cm9zcGVjdGluZyBnb2JqZWN0cyI7IFwKLQkgICAgc2Nhbm9ial9vcHRpb25z
PSIiOyBcCi0JICAgIGd0a2RvYy1zY2FuZ29iaiAyPiYxIC0taGVscCB8IGdyZXAgID4vZGV2L251
bGwgIlwtXC12ZXJib3NlIjsgXAotCSAgICBpZiB0ZXN0ICIkKD8pIiA9ICIwIjsgdGhlbiBcCi0J
ICAgICAgICBpZiB0ZXN0ICJ4JChWKSIgPSAieDEiOyB0aGVuIFwKLQkgICAgICAgICAgICBzY2Fu
b2JqX29wdGlvbnM9Ii0tdmVyYm9zZSI7IFwKLQkgICAgICAgIGZpOyBcCi0JICAgIGZpOyBcCi0J
ICAgIENDPSIkKEdUS0RPQ19DQykiIExEPSIkKEdUS0RPQ19MRCkiIFJVTj0iJChHVEtET0NfUlVO
KSIgQ0ZMQUdTPSIkKEdUS0RPQ19DRkxBR1MpICQoQ0ZMQUdTKSIgTERGTEFHUz0iJChHVEtET0Nf
TElCUykgJChMREZMQUdTKSIgXAotCSAgICBndGtkb2Mtc2NhbmdvYmogJChTQ0FOR09CSl9PUFRJ
T05TKSAkJHNjYW5vYmpfb3B0aW9ucyAtLW1vZHVsZT0kKERPQ19NT0RVTEUpOyBcCi0JZWxzZSBc
Ci0JICAgIGZvciBpIGluICQoU0NBTk9CSl9GSUxFUykgOyBkbyBcCi0JICAgICAgICB0ZXN0IC1m
ICQkaSB8fCB0b3VjaCAkJGkgOyBcCi0JICAgIGRvbmUgXAotCWZpCi0JQHRvdWNoIHNjYW4tYnVp
bGQuc3RhbXAKLQotRG9jdW1lbnRhdGlvbi8kKERPQ19NT0RVTEUpLWRlY2wudHh0IERvY3VtZW50
YXRpb24vJChTQ0FOT0JKX0ZJTEVTKSBEb2N1bWVudGF0aW9uLyQoRE9DX01PRFVMRSktc2VjdGlv
bnMudHh0IERvY3VtZW50YXRpb24vJChET0NfTU9EVUxFKS1vdmVycmlkZXMudHh0OiBzY2FuLWJ1
aWxkLnN0YW1wCi0JQHRydWUKLQotIyMjIyB0ZW1wbGF0ZXMgIyMjIwotCi10bXBsLWJ1aWxkLnN0
YW1wOiBkb2Mtc2V0dXAtYnVpbGQuc3RhbXAgRG9jdW1lbnRhdGlvbi8kKERPQ19NT0RVTEUpLWRl
Y2wudHh0IERvY3VtZW50YXRpb24vJChTQ0FOT0JKX0ZJTEVTKSBEb2N1bWVudGF0aW9uLyQoRE9D
X01PRFVMRSktc2VjdGlvbnMudHh0IERvY3VtZW50YXRpb24vJChET0NfTU9EVUxFKS1vdmVycmlk
ZXMudHh0Ci0JQGVjaG8gJyAgRE9DICAgUmVidWlsZGluZyB0ZW1wbGF0ZSBmaWxlcycKLQlAY2Qg
RG9jdW1lbnRhdGlvbjsgZ3RrZG9jLW1rdG1wbCAtLW1vZHVsZT0kKERPQ19NT0RVTEUpICQoTUtU
TVBMX09QVElPTlMpCi0JQGlmIHRlc3QgIiQoYWJzX3NyY2RpcikiICE9ICIkKGFic19idWlsZGRp
cikiIDsgdGhlbiBcCi0JICBpZiB0ZXN0IC13ICQoYWJzX3NyY2RpcikgOyB0aGVuIFwKLQkgICAg
Y3AgLXJwICQoYWJzX2J1aWxkZGlyKS9Eb2N1bWVudGF0aW9uL3RtcGwgJChkb2Nfc3JjZGlyKTsg
XAotCSAgZmkgXAotCWZpCi0JQHRvdWNoIHRtcGwtYnVpbGQuc3RhbXAKLQotdG1wbC5zdGFtcDog
dG1wbC1idWlsZC5zdGFtcAotCUB0cnVlCi0KLSQoc3JjZGlyKS90bXBsLyouc2dtbDoKLQlAdHJ1
ZQotCi0jIyMjIHhtbCAjIyMjCi0KLXNnbWwtYnVpbGQuc3RhbXA6IGRvYy1zZXR1cC1idWlsZC5z
dGFtcCB0bXBsLnN0YW1wIERvY3VtZW50YXRpb24vJChET0NfTU9EVUxFKS1zZWN0aW9ucy50eHQg
JChzcmNkaXIpL3RtcGwvKi5zZ21sCi0JQGVjaG8gJyAgRE9DICAgQnVpbGRpbmcgWE1MJwotCUAt
Y2htb2QgLVIgdSt3ICQoc3JjZGlyKQotCUBjZCBEb2N1bWVudGF0aW9uOyBfc291cmNlX2Rpcj0n
JyA7IFwKLQlmb3IgaSBpbiAkKERPQ19TT1VSQ0VfRElSKSA7IGRvIFwKLQkgICAgX3NvdXJjZV9k
aXI9IiQke19zb3VyY2VfZGlyfSAtLXNvdXJjZS1kaXI9Li4vJCRpIiA7IFwKLQlkb25lIDsgXAot
CWd0a2RvYy1ta2RiIC0tbW9kdWxlPSQoRE9DX01PRFVMRSkgLS1vdXRwdXQtZm9ybWF0PXhtbCAt
LWV4cGFuZC1jb250ZW50LWZpbGVzPSIiIC0tbWFpbi1zZ21sLWZpbGU9JChET0NfTUFJTl9TR01M
X0ZJTEUpICQke19zb3VyY2VfZGlyfSAkKE1LREJfT1BUSU9OUykKLQlAdG91Y2ggc2dtbC1idWls
ZC5zdGFtcAotCi1zZ21sLnN0YW1wOiBzZ21sLWJ1aWxkLnN0YW1wCi0JQHRydWUKLQotIyMjIyBo
dG1sICMjIyMKLQotRG9jdW1lbnRhdGlvbi8kKERPQ19NQUlOX1NHTUxfRklMRSk6IHNnbWwuc3Rh
bXAKLURvY3VtZW50YXRpb24vd2Via2l0ZW52aXJvbm1lbnQueG1sOiBkb2Mtc2V0dXAtYnVpbGQu
c3RhbXAKLQotaHRtbC1idWlsZC5zdGFtcDogc2dtbC5zdGFtcCBEb2N1bWVudGF0aW9uLyQoRE9D
X01BSU5fU0dNTF9GSUxFKQotCUBlY2hvICcgIERPQyAgIEJ1aWxkaW5nIEhUTUwnCi0JQHJtIC1y
ZiBEb2N1bWVudGF0aW9uL2h0bWwKLQlAbWtkaXIgRG9jdW1lbnRhdGlvbi9odG1sCi0JQGNkIERv
Y3VtZW50YXRpb247IG1raHRtbF9vcHRpb25zPSIiOyBcCi0JZ3RrZG9jLW1raHRtbCAyPiYxIC0t
aGVscCB8IGdyZXAgID4vZGV2L251bGwgIlwtXC12ZXJib3NlIjsgXAotCWlmIHRlc3QgIiQoPyki
ID0gIjAiOyB0aGVuIFwKLQkgIGlmIHRlc3QgIngkKFYpIiA9ICJ4MSI7IHRoZW4gXAotCSAgICBt
a2h0bWxfb3B0aW9ucz0iJCRta2h0bWxfb3B0aW9ucyAtLXZlcmJvc2UiOyBcCi0JICBmaTsgXAot
CWZpOyBcCi0JZ3RrZG9jLW1raHRtbCAyPiYxIC0taGVscCB8IGdyZXAgID4vZGV2L251bGwgIlwt
XC1wYXRoIjsgXAotCWlmIHRlc3QgIiQoPykiID0gIjAiOyB0aGVuIFwKLQkgIG1raHRtbF9vcHRp
b25zPSIkJG1raHRtbF9vcHRpb25zIC0tcGF0aD1cIiQoZG9jX3NyY2RpcilcIiI7IFwKLQlmaTsg
XAotCWNkIGh0bWwgJiYgZ3RrZG9jLW1raHRtbCAkJG1raHRtbF9vcHRpb25zICQoTUtIVE1MX09Q
VElPTlMpICQoRE9DX01PRFVMRSkgLi4vJChET0NfTUFJTl9TR01MX0ZJTEUpCi0JLUB0ZXN0ICJ4
JChIVE1MX0lNQUdFUykiID0gIngiIHx8IFwKLQlmb3IgZmlsZSBpbiAkKEhUTUxfSU1BR0VTKSA7
IGRvIFwKLQkgIGlmIHRlc3QgLWYgJChhYnNfc3JjZGlyKS8kJGZpbGUgOyB0aGVuIFwKLQkgICAg
Y3AgJChhYnNfc3JjZGlyKS8kJGZpbGUgJChhYnNfYnVpbGRkaXIpL2h0bWw7IFwKLQkgIGZpOyBc
Ci0JICBpZiB0ZXN0IC1mICQoYWJzX2J1aWxkZGlyKS8kJGZpbGUgOyB0aGVuIFwKLQkgICAgY3Ag
JChhYnNfYnVpbGRkaXIpLyQkZmlsZSAkKGFic19idWlsZGRpcikvaHRtbDsgXAotCSAgZmk7IFwK
LQlkb25lOwotCUBlY2hvICcgIERPQyAgIEZpeGluZyBjcm9zcy1yZWZlcmVuY2VzJwotCUBjZCBE
b2N1bWVudGF0aW9uOyBndGtkb2MtZml4eHJlZiAtLW1vZHVsZT0kKERPQ19NT0RVTEUpIC0tbW9k
dWxlLWRpcj1odG1sIC0taHRtbC1kaXI9JChIVE1MX0RJUikgJChGSVhYUkVGX09QVElPTlMpCi0J
QHRvdWNoIGh0bWwtYnVpbGQuc3RhbXAKLQotY2xlYW4tbG9jYWw6IGRvYy1jbGVhbi1sb2NhbAot
Ci1kb2MtY2xlYW4tbG9jYWw6Ci0JQHJtIC1mIERvY3VtZW50YXRpb24vKn4gRG9jdW1lbnRhdGlv
bi8qLmJhawotCUBybSAtcmYgRG9jdW1lbnRhdGlvbi8ubGlicwotCi1kaXN0Y2xlYW4tbG9jYWw6
IGRvYy1kaXN0Y2xlYW4tbG9jYWwKLQotZG9jLWRpc3RjbGVhbi1sb2NhbDoKLQlAcm0gLXJmIERv
Y3VtZW50YXRpb24KLQotbWFpbnRhaW5lci1jbGVhbi1sb2NhbDogZG9jLW1haW50YWluZXItY2xl
YW4tbG9jYWwKLQotZG9jLW1haW50YWluZXItY2xlYW4tbG9jYWw6IGNsZWFuCi0JQHJtIC1yZiBE
b2N1bWVudGF0aW9uL3htbCBEb2N1bWVudGF0aW9uL2h0bWwKLQktQHJtZGlyIERvY3VtZW50YXRp
b24KLQotIwotIyBSZXF1aXJlIGd0ay1kb2Mgd2hlbiBtYWtpbmcgZGlzdAotIwotaWYgRU5BQkxF
X0dUS19ET0MKLWRpc3QtY2hlY2stZ3RrZG9jOgotCi1hbGw6IGRvY3MKLWVsc2UKLWRpc3QtY2hl
Y2stZ3RrZG9jOgotCUBlY2hvICIqKiogZ3RrLWRvYyBtdXN0IGJlIGluc3RhbGxlZCBhbmQgZW5h
YmxlZCBpbiBvcmRlciB0byBtYWtlIGRpc3QiCi0JQGZhbHNlCi1lbmRpZgotCi1kaXN0LWhvb2s6
IGRvYy1kaXN0LWhvb2sKLQotZG9jLWRpc3QtaG9vazogZGlzdC1jaGVjay1ndGtkb2MgZGlzdC1o
b29rLWxvY2FsCi0JQG1rZGlyIC1wICQoZGlzdGRpcikvJChET0NfTU9EVUxFKS90bXBsCi0JQG1r
ZGlyIC1wICQoZGlzdGRpcikvJChET0NfTU9EVUxFKS9odG1sCi0JQC1jcCAuL0RvY3VtZW50YXRp
b24vdG1wbC8qLnNnbWwgJChkaXN0ZGlyKS8kKERPQ19NT0RVTEUpL3RtcGwKLQlAY3AgLi9Eb2N1
bWVudGF0aW9uL2h0bWwvKiAkKGRpc3RkaXIpLyQoRE9DX01PRFVMRSkvaHRtbAotCUAtY3AgLi9E
b2N1bWVudGF0aW9uLyQoRE9DX01PRFVMRSkudHlwZXMgJChkaXN0ZGlyKS8KLQlALWNwIC4vRG9j
dW1lbnRhdGlvbi8kKERPQ19NT0RVTEUpLXNlY3Rpb25zLnR4dCAkKGRpc3RkaXIpLwotCUBjZCAk
KGRpc3RkaXIpICYmIHJtIC1mICQoRElTVENMRUFORklMRVMpCi0JQCQoR1RLRE9DX1JFQkFTRSkg
LS1vbmxpbmUgLS1yZWxhdGl2ZSAtLWh0bWwtZGlyPSQoZGlzdGRpcikvJChET0NfTU9EVUxFKS9o
dG1sCi0KLS5QSE9OWSA6IGRpc3QtaG9vay1sb2NhbCBkb2NzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2d0ay9kb2NzL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYktpdC9ndGsvZG9jcy9H
TlVtYWtlZmlsZS5hbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzhjNGIyMTJiYWI1
YWViZGQyOTBhYWUzN2EyNDNmMjU1YjliNDNiNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9kb2NzL0dOVW1ha2VmaWxlLmFt
CisrKyAvZGV2L251bGwKQEAgLTEsMTI4ICswLDAgQEAKLSMjIFByb2Nlc3MgdGhpcyBmaWxlIHdp
dGggYXV0b21ha2UgdG8gcHJvZHVjZSBHTlVtYWtlZmlsZS5pbgotCi0jIFRoaXMgaXMgYSBibGFu
ayBNYWtlZmlsZS5hbSBmb3IgdXNpbmcgZ3RrLWRvYy4KLSMgQ29weSB0aGlzIHRvIHlvdXIgcHJv
amVjdCdzIEFQSSBkb2NzIGRpcmVjdG9yeSBhbmQgbW9kaWZ5IHRoZSB2YXJpYWJsZXMgdG8KLSMg
c3VpdCB5b3VyIHByb2plY3QuIFNlZSB0aGUgR1RLKyBNYWtlZmlsZXMgaW4gZ3RrKy9kb2NzL3Jl
ZmVyZW5jZSBmb3IgZXhhbXBsZXMKLSMgb2YgdXNpbmcgdGhlIHZhcmlvdXMgb3B0aW9ucy4KLQot
IyBUaGUgbmFtZSBvZiB0aGUgbW9kdWxlLCBlLmcuICdnbGliJy4KLURPQ19NT0RVTEU9d2Via2l0
Z3RrCi0KLSMgVGhlIHRvcC1sZXZlbCBTR01MIGZpbGUuIFlvdSBjYW4gY2hhbmdlIHRoaXMgaWYg
eW91IHdhbnQgdG8uCi1ET0NfTUFJTl9TR01MX0ZJTEU9JChET0NfTU9EVUxFKS1kb2NzLnNnbWwK
LQotIyBUaGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIHNvdXJjZSBjb2RlLiBSZWxhdGl2ZSB0
byAkKHNyY2RpcikuCi0jIGd0ay1kb2Mgd2lsbCBzZWFyY2ggYWxsIC5jICYgLmggZmlsZXMgYmVu
ZWF0aCBoZXJlIGZvciBpbmxpbmUgY29tbWVudHMKLSMgZG9jdW1lbnRpbmcgdGhlIGZ1bmN0aW9u
cyBhbmQgbWFjcm9zLgotIyBlLmcuIERPQ19TT1VSQ0VfRElSPS4uLy4uLy4uL2d0awotRE9DX1NP
VVJDRV9ESVI9JCh0b3Bfc3JjZGlyKS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQKLQotIyBFeHRy
YSBvcHRpb25zIHRvIHBhc3MgdG8gZ3RrZG9jLXNjYW5nb2JqLiBOb3Qgbm9ybWFsbHkgbmVlZGVk
LgotU0NBTkdPQkpfT1BUSU9OUz0iLS10eXBlLWluaXQtZnVuYz1nX3R5cGVfaW5pdCgpIgotCi0j
IEV4dHJhIG9wdGlvbnMgdG8gc3VwcGx5IHRvIGd0a2RvYy1zY2FuLgotIyBlLmcuIFNDQU5fT1BU
SU9OUz0tLWRlcHJlY2F0ZWQtZ3VhcmRzPSJHVEtfRElTQUJMRV9ERVBSRUNBVEVEIgotU0NBTl9P
UFRJT05TPS0tZGVwcmVjYXRlZC1ndWFyZHM9IldFQktJVF9ESVNBQkxFX0RFUFJFQ0FURUQiIC0t
aWdub3JlLWRlY29yYXRvcnM9IldFQktJVF9BUEkiCi0KLSMgRXh0cmEgb3B0aW9ucyB0byBzdXBw
bHkgdG8gZ3RrZG9jLW1rZGIuCi0jIGUuZy4gTUtEQl9PUFRJT05TPS0tc2dtbC1tb2RlIC0tb3V0
cHV0LWZvcm1hdD14bWwKLU1LREJfT1BUSU9OUz0tLXNnbWwtbW9kZSAtLW91dHB1dC1mb3JtYXQ9
eG1sIC0tc291cmNlLXN1ZmZpeGVzPWgsYyxjcHAKLQotIyBFeHRyYSBvcHRpb25zIHRvIHN1cHBs
eSB0byBndGtkb2MtbWt0bXBsCi0jIGUuZy4gTUtUTVBMX09QVElPTlM9LS1vbmx5LXNlY3Rpb24t
dG1wbAotTUtUTVBMX09QVElPTlM9Ci0KLSMgRXh0cmEgb3B0aW9ucyB0byBzdXBwbHkgdG8gZ3Rr
ZG9jLWZpeHJlZi4gTm90IG5vcm1hbGx5IG5lZWRlZC4KLSMgZS5nLiBGSVhYUkVGX09QVElPTlM9
LS1leHRyYS1kaXI9Li4vZ2RrLXBpeGJ1Zi9odG1sIC0tZXh0cmEtZGlyPS4uL2dkay9odG1sCi1G
SVhYUkVGX09QVElPTlM9Ci0KLSMgVXNlZCBmb3IgZGVwZW5kZW5jaWVzLiBUaGUgZG9jcyB3aWxs
IGJlIHJlYnVpbHQgaWYgYW55IG9mIHRoZXNlIGNoYW5nZS4KLSMgZS5nLiBIRklMRV9HTE9CPSQo
dG9wX3NyY2RpcikvZ3RrLyouaAotIyBlLmcuIENGSUxFX0dMT0I9JCh0b3Bfc3JjZGlyKS9ndGsv
Ki5jCi1IRklMRV9HTE9CPSQodG9wX3NyY2RpcikvU291cmNlL1dlYktpdC9ndGsvd2Via2l0Lyou
aAotQ0ZJTEVfR0xPQj0kKHRvcF9zcmNkaXIpL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC8qLmNw
cAotCi0jIEhlYWRlciBmaWxlcyB0byBpZ25vcmUgd2hlbiBzY2FubmluZy4KLSMgZS5nLiBJR05P
UkVfSEZJTEVTPWd0a2RlYnVnLmggZ3RraW50bC5oCi1JR05PUkVfSEZJTEVTID0gXAotICAgd2Vi
a2l0ZG93bmxvYWRwcml2YXRlLmggXAotICAgd2Via2l0Z2VvbG9jYXRpb25wb2xpY3lkZWNpc2lv
bnByaXZhdGUuaCBcCi0gICB3ZWJraXRnbG9iYWxzcHJpdmF0ZS5oIFwKLSAgIHdlYmtpdGhpdHRl
c3RyZXN1bHRwcml2YXRlLmggXAotICAgd2Via2l0bmV0d29ya3JlcXVlc3Rwcml2YXRlLmggXAot
ICAgd2Via2l0bmV0d29ya3Jlc3BvbnNlcHJpdmF0ZS5oIFwKLSAgIHdlYmtpdHNlY3VyaXR5b3Jp
Z2lucHJpdmF0ZS5oIFwKLSAgIHdlYmtpdHZpZXdwb3J0YXR0cmlidXRlc3ByaXZhdGUuaCBcCi0g
ICB3ZWJraXR3ZWJiYWNrZm9yd2FyZGxpc3Rwcml2YXRlLmggXAotICAgd2Via2l0d2ViZGF0YXNv
dXJjZXByaXZhdGUuaCBcCi0gICB3ZWJraXR3ZWJmcmFtZXByaXZhdGUuaCBcCi0gICB3ZWJraXR3
ZWJoaXN0b3J5aXRlbXByaXZhdGUuaCBcCi0gICB3ZWJraXR3ZWJpbnNwZWN0b3Jwcml2YXRlLmgg
XAotICAgd2Via2l0d2VibmF2aWdhdGlvbmFjdGlvbnByaXZhdGUuaCBcCi0gICB3ZWJraXR3ZWJw
bHVnaW5kYXRhYmFzZXByaXZhdGUuaCBcCi0gICB3ZWJraXR3ZWJwbHVnaW5wcml2YXRlLmggXAot
ICAgd2Via2l0d2VicG9saWN5ZGVjaXNpb25wcml2YXRlLmggXAotICAgd2Via2l0d2VicmVzb3Vy
Y2Vwcml2YXRlLmggXAotICAgd2Via2l0d2Vic2V0dGluZ3Nwcml2YXRlLmggXAotICAgd2Via2l0
d2Vidmlld3ByaXZhdGUuaCBcCi0gICB3ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlc3ByaXZhdGUuaAot
Ci0jIEltYWdlcyB0byBjb3B5IGludG8gSFRNTCBkaXJlY3RvcnkuCi0jIGUuZy4gSFRNTF9JTUFH
RVM9JCh0b3Bfc3JjZGlyKS9ndGsvc3RvY2staWNvbnMvc3RvY2tfYWJvdXRfMjQucG5nCi1IVE1M
X0lNQUdFUz0KLQotIyBDRkxBR1MgYW5kIExERkxBR1MgZm9yIGNvbXBpbGluZyBndGtkb2Mtc2Nh
bmdvYmogd2l0aCB5b3VyIGxpYnJhcnkuCi0jIE9ubHkgbmVlZGVkIGlmIHlvdSBhcmUgdXNpbmcg
Z3RrZG9jLXNjYW5nb2JqIHRvIGR5bmFtaWNhbGx5IHF1ZXJ5IHdpZGdldAotIyBzaWduYWxzIGFu
ZCBwcm9wZXJ0aWVzLgotIyBlLmcuIElOQ0xVREVTPS1JJCh0b3Bfc3JjZGlyKSAtSSQodG9wX2J1
aWxkZGlyKSAkKEdUS19ERUJVR19GTEFHUykKLSMgZS5nLiBHVEtET0NfTElCUz0kKHRvcF9idWls
ZGRpcikvZ3RrLyQoZ3RrdGFyZ2V0bGliKQotR1RLRE9DX0lOQ0xVREVTPSBcCi0JLUkkKGFic19z
cmNkaXIpL1NvdXJjZS9XZWJLaXQvZ3RrIFwKLQktSSQoYWJzX2J1aWxkZGlyKS9Tb3VyY2UvV2Vi
S2l0L2d0ayBcCi0JJChnbG9iYWxfY3BwZmxhZ3MpIFwKLQkkKGdsb2JhbF9jZmxhZ3MpIFwKLQkt
SSQoYWJzX3NyY2RpcikvU291cmNlIFwKLQktSSQoYWJzX3NyY2RpcikvU291cmNlL0phdmFTY3Jp
cHRDb3JlIFwKLQktSSQoYWJzX3NyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL0ZvcndhcmRp
bmdIZWFkZXJzIFwKLQktSSQoYWJzX3NyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ciBcCi0JLUkkKGFic19zcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYgXAotCS1JJChh
YnNfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzIFwKLQktSSQoYWJzX3NyY2RpcikvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL2NhY2hlIFwKLQkkKEdMT0JBTERFUFNfQ0ZMQUdT
KSBcCi0JJChDQUlST19DRkxBR1MpIFwKLQkkKEdMSUJfQ0ZMQUdTKSBcCi0JJChHVEtfQ0ZMQUdT
KSBcCi0JJChMSUJTT1VQX0NGTEFHUykKLQotR1RLRE9DX0xJQlM9IFwKLQkkKGFic19idWlsZGRp
cikvbGliamF2YXNjcmlwdGNvcmVndGstQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkAuQFdF
QktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkAubGEgXAotCSQoYWJzX2J1aWxkZGlyKS9saWJ3ZWJr
aXRndGstQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkAuQFdFQktJVEdUS19BUElfTUlOT1Jf
VkVSU0lPTkAubGEgXAotCSQoR0xJQl9MSUJTKSBcCi0JJChHVEtfTElCUykgXAotCSQoTElCU09V
UF9MSUJTKQotCi0jIFRoaXMgaW5jbHVkZXMgb3VyIGN1c3RvbSBndGstZG9jIG1ha2UgcnVsZXMu
Ci1pbmNsdWRlICQodG9wX3NyY2RpcikvU291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZpbGUuZ3Rr
LWRvYy5hbQotCi0jIE90aGVyIGZpbGVzIHRvIGRpc3RyaWJ1dGUKLSMgZS5nLiBFWFRSQV9ESVNU
ICs9IHZlcnNpb24ueG1sLmluCi1FWFRSQV9ESVNUICs9IFwKLQkkKFdlYktpdCkvZG9jcy93ZWJr
aXRlbnZpcm9ubWVudC54bWwgXAotCSQoV2ViS2l0KS9kb2NzL3dlYmtpdGd0ay1kb2NzLnNnbWwg
XAotCSQoV2ViS2l0KS9kb2NzL3dlYmtpdGd0ay1zZWN0aW9ucy50eHQgXAotCSQoV2ViS2l0KS9k
b2NzL3ZlcnNpb24ueG1sLmluCi0KLSMgRmlsZXMgbm90IHRvIGRpc3RyaWJ1dGUKLSMgZm9yIC0t
cmVidWlsZC10eXBlcyBpbiAkKFNDQU5fT1BUSU9OUyksIGUuZy4gJChET0NfTU9EVUxFKS50eXBl
cwotIyBmb3IgLS1yZWJ1aWxkLXNlY3Rpb25zIGluICQoU0NBTl9PUFRJT05TKSBlLmcuICQoRE9D
X01PRFVMRSktc2VjdGlvbnMudHh0Ci1ESVNUQ0xFQU5GSUxFUyArPSBcCi0JJCh0b3BfYnVpbGRk
aXIpL1NvdXJjZS9XZWJLaXQvZ3RrL2RvY3MvdmVyc2lvbi54bWwgXAotCSQodG9wX2J1aWxkZGly
KS90bXBsLWJ1aWxkLnN0YW1wIFwKLQkkKHRvcF9idWlsZGRpcikvZG9jLXNldHVwLWJ1aWxkLnN0
YW1wIFwKLQkkKHRvcF9idWlsZGRpcikvaHRtbC1idWlsZC5zdGFtcCBcCi0JJCh0b3BfYnVpbGRk
aXIpL3NjYW4tYnVpbGQuc3RhbXAgXAotCSQodG9wX2J1aWxkZGlyKS9zZ21sLWJ1aWxkLnN0YW1w
Ci0KLSMgQ29tbWVudCB0aGlzIG91dCBpZiB5b3Ugd2FudCB5b3VyIGRvY3Mtc3RhdHVzIHRlc3Rl
ZCBkdXJpbmcgJ21ha2UgY2hlY2snCi0jVEVTVFMgPSAkKEdUS0RPQ19DSEVDSykKLQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9ndGsvZG9jcy92ZXJzaW9uLnhtbC5pbiBiL1NvdXJjZS9XZWJL
aXQvZ3RrL2RvY3MvdmVyc2lvbi54bWwuaW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGQ3OGJkYTkzNDIyZWNiYmNhOGNhZjc3MmY3YjM3ZjhmZTNiMjU0ZTkuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvZG9jcy92
ZXJzaW9uLnhtbC5pbgorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLUBWRVJTSU9OQApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9H
TlVtYWtlZmlsZS5hbQppbmRleCA3NWEwNDcwZjRhYzEwNDJmNDE3YjUxNDk0YzQ5ZWU1YzU4MDI5
NTNjLi4wOGNjMmIyNzg0MTk3YTNmODYxODA0NTliMjkyNWY5NmU2NzFhMGVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9HTlVt
YWtlZmlsZS5hbQpAQCAtMTQwMyw4ICsxNDAzLDYgQEAgUHJvZ3JhbXNfV2ViS2l0UGx1Z2luUHJv
Y2Vzc19DWFhGTEFHUyA9IFwKIGVuZGlmCiAKIEVYVFJBX0RJU1QgKz0gXAotCSQoV2ViS2l0Mikv
VUlQcm9jZXNzL0FQSS9ndGsvZG9jcy9idWlsZC1ndGtkb2MgXAotCSQoV2ViS2l0MikvVUlQcm9j
ZXNzL0FQSS9ndGsvZG9jcy9ndGtkb2MucHkgXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9n
dGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbCBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJ
L2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0IFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vz
cy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay50eXBlcyBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL2J1aWxkLWd0a2RvYyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3MvYnVpbGQtZ3RrZG9jCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDc1NQppbmRleCBmMzA0YTdlZGY0MjdlMWYzYmE0MmU1ODYyZmEzMzU0NWIxMWNiZWQ4Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3MvYnVpbGQtZ3RrZG9jCisrKyAvZGV2L251bGwKQEAgLTEs
OTMgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jICBDb3B5cmlnaHQgKEMpIDIwMTEg
SWdhbGlhIFMuTC4KLSMKLSMgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSMgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSMgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotIyAgdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotIwotIyAg
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCi0jICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgotIyAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSMgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0jCi0jICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0jICBMaWNlbnNlIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0j
ICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0
b24sIE1BICAwMjExMC0xMzAxICBVU0EKLSMKLQotaW1wb3J0IGdsb2IKLWltcG9ydCBndGtkb2MK
LWltcG9ydCBsb2dnaW5nCi1pbXBvcnQgb3MucGF0aAotaW1wb3J0IHN5cwotCi1kZWYgY29uZmln
dXJlX2xvZ2dpbmcoKToKLSAgICBsZXZlbCA9IGxvZ2dpbmcuREVCVUcgaWYgJy12JyBpbiBzeXMu
YXJndiBlbHNlIGxvZ2dpbmcuSU5GTwotICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJn
dGtkb2MiKQotICAgIGxvZ2dlci5zZXRMZXZlbChsZXZlbCkKLSAgICBoYW5kbGVyID0gbG9nZ2lu
Zy5TdHJlYW1IYW5kbGVyKCkKLSAgICBoYW5kbGVyLnNldExldmVsKGxldmVsKQotICAgIGxvZ2dl
ci5hZGRIYW5kbGVyKGhhbmRsZXIpCi0gICAgaWYgbGV2ZWwgPT0gbG9nZ2luZy5ERUJVRzoKLSAg
ICAgICAgaGFuZGxlci5zZXRGb3JtYXR0ZXIobG9nZ2luZy5Gb3JtYXR0ZXIoJ1slKGFzY3RpbWUp
c10gICUobWVzc2FnZSlzJykpCi0gICAgZWxzZToKLSAgICAgICAgaGFuZGxlci5zZXRGb3JtYXR0
ZXIobG9nZ2luZy5Gb3JtYXR0ZXIoJyUobWVzc2FnZSlzJykpCi0KLWRlZiBmaW5kX2J1aWxkX2Rp
cmVjdG9yeSh0b3BfbGV2ZWwpOgotICAgIGRlZiBpc192YWxpZF9idWlsZF9kaXJlY3RvcnkoYnVp
bGRfZGlyKToKLSAgICAgICAgcmV0dXJuIG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihidWls
ZF9kaXIsICIubGlicyIpKQotCi0gICAgaWYgaXNfdmFsaWRfYnVpbGRfZGlyZWN0b3J5KHRvcF9s
ZXZlbCk6Ci0gICAgICAgIHJldHVybiB0b3BfbGV2ZWwKLQotICAgIGJ1aWxkX2RpciA9IG9zLnBh
dGguam9pbih0b3BfbGV2ZWwsICdXZWJLaXRCdWlsZCcpCi0gICAgaWYgaXNfdmFsaWRfYnVpbGRf
ZGlyZWN0b3J5KGJ1aWxkX2Rpcik6Ci0gICAgICAgIHJldHVybiBidWlsZF9kaXIKLQotICAgIGJ1
aWxkX2RpciA9IG9zLnBhdGguam9pbih0b3BfbGV2ZWwsICdXZWJLaXRCdWlsZCcsICdSZWxlYXNl
JykKLSAgICBpZiBpc192YWxpZF9idWlsZF9kaXJlY3RvcnkoYnVpbGRfZGlyKToKLSAgICAgICAg
cmV0dXJuIGJ1aWxkX2RpcgotCi0gICAgYnVpbGRfZGlyID0gb3MucGF0aC5qb2luKHRvcF9sZXZl
bCwgJ1dlYktpdEJ1aWxkJywgJ0RlYnVnJykKLSAgICBpZiBpc192YWxpZF9idWlsZF9kaXJlY3Rv
cnkoYnVpbGRfZGlyKToKLSAgICAgICAgcmV0dXJuIGJ1aWxkX2RpcgotICAgIHByaW50ICJDb3Vs
ZCBub3QgZGV0ZXJtaW5lIGJ1aWxkIGRpcmVjdG9yeS4iCi0gICAgc3lzLmV4aXQoMSkKLQotZG9j
X2RpciA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pKQotdG9wX2xl
dmVsID0gb3MucGF0aC5ub3JtcGF0aChvcy5wYXRoLmpvaW4oZG9jX2RpciwgJy4uJywgJy4uJywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcuLicsICcuLicsICcu
LicsICcuLicpKQotYnVpbGRfZGlyID0gZmluZF9idWlsZF9kaXJlY3RvcnkodG9wX2xldmVsKQot
Ci1vdXRwdXRfZGlyID0gb3MucGF0aC5qb2luKGJ1aWxkX2RpciwgIkRvY3VtZW50YXRpb24iLCAi
d2Via2l0Mmd0ayIpCi1zcmNfZGlyID0gb3MucGF0aC5qb2luKGRvY19kaXIsICcuLicpCi1saWJy
YXJ5X3BhdGggPSBvcy5wYXRoLmpvaW4oYnVpbGRfZGlyLCAiLmxpYnMiKQotcGtnX2NvbmZpZ19w
YXRoID0gXAotICAgIG9zLnBhdGguam9pbihidWlsZF9kaXIsICJTb3VyY2UiLCAiV2ViS2l0MiIs
ICJ3ZWJraXQyZ3RrLTMuMC5wYyIpCi0KLWRlcml2ZWRfc291cmNlcyA9IG9zLnBhdGguam9pbihi
dWlsZF9kaXIsICJEZXJpdmVkU291cmNlcyIsICJXZWJLaXQyIikKLWNmbGFncyA9IFwKLScgLUkn
ICsgb3MucGF0aC5qb2luKGRlcml2ZWRfc291cmNlcywgJ3dlYmtpdDJndGsnLCAnaW5jbHVkZScp
ICsgXAotJyAtSScgKyBvcy5wYXRoLmpvaW4oZGVyaXZlZF9zb3VyY2VzLCAnd2Via2l0Mmd0aycp
ICsgXAotJyAtSScgKyBvcy5wYXRoLmpvaW4oZGVyaXZlZF9zb3VyY2VzLCAnaW5jbHVkZScpICsg
XAotJyAtSScgKyBvcy5wYXRoLmpvaW4odG9wX2xldmVsLCAnU291cmNlJykKLScgLUknICsgc3Jj
X2RpcgotCi1pZ25vcmVkX2ZpbGVzID0gZ2xvYi5nbG9iKCIlcy8qUHJpdmF0ZS5oIiAlIHNyY19k
aXIpICsgXAotICAgICAgICAgICAgICAgIGdsb2IuZ2xvYigiJXMvUGFnZUNsaWVudEltcGwuKiIg
JSBzcmNfZGlyKSArIFwKLSAgICAgICAgICAgICAgICBnbG9iLmdsb2IoIiVzL3Rlc3RzLyouaCIg
JSBzcmNfZGlyKQotCi1jb25maWd1cmVfbG9nZ2luZygpCi1nZW5lcmF0b3IgPSBndGtkb2MuUGtn
Q29uZmlnR1RLRG9jKHBrZ19jb25maWdfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbW9kdWxlX25hbWU9IndlYmtpdDJndGsiLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBvdXRwdXRfZGlyPW91dHB1dF9kaXIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNvdXJjZV9kaXJzPVtzcmNfZGlyXSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZG9jX2Rpcj1kb2NfZGlyLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjZmxhZ3M9Y2ZsYWdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBsaWJyYXJ5X3BhdGg9bGlicmFyeV9wYXRoLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkZWNvcmF0b3I9IldFQktJVF9BUEkiLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkZXByZWNhdGlvbl9ndWFyZD0iV0VCS0lUX0RJU0FCTEVfREVQUkVD
QVRFRCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZWRfZmlsZXM9
aWdub3JlZF9maWxlcykKLWdlbmVyYXRvci5nZW5lcmF0ZShodG1sPSctLXNraXAtaHRtbCcgbm90
IGluIHN5cy5hcmd2KQotc3lzLmV4aXQoZ2VuZXJhdG9yLnNhd193YXJuaW5ncykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3MvZ3RrZG9jLnB5IGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy9ndGtkb2MucHkKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDMwN2I2MmU0NGZiZjg1MWJmNzc2ZTJmOWYyYjY4YTVkZDFjYjc3
MGYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy9ndGtkb2MucHkKKysrIC9kZXYvbnVsbApA
QCAtMSwzNzIgKzAsMCBAQAotIyAgQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCi0jCi0j
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCi0jICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdl
bmVyYWwgUHVibGljCi0jICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSMgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSMKLSMgIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotIyAgYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
LSMgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCi0jICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgotIwotIyAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExlc3NlciBHZW5lcmFsIFB1YmxpYwotIyAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotIyAgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMw
MSAgVVNBCi0jCi0KLWltcG9ydCBlcnJubwotaW1wb3J0IGxvZ2dpbmcKLWltcG9ydCBvcwotaW1w
b3J0IG9zLnBhdGgKLWltcG9ydCBzdWJwcm9jZXNzCi1pbXBvcnQgc3lzCi0KLQotY2xhc3MgR1RL
RG9jKG9iamVjdCk6Ci0KLSAgICAiIiJDbGFzcyB0aGF0IGNvbnRyb2xzIGEgZ3RrZG9jIHJ1bi4K
LQotICAgIEVhY2ggaW5zdGFuY2Ugb2YgdGhpcyBjbGFzcyByZXByZXNlbnRzIG9uZSBndGtkb2Mg
Y29uZmlndXJhdGlvbgotICAgIGFuZCBzZXQgb2YgZG9jdW1lbnRhdGlvbi4gVGhlIGd0a2RvYyBw
YWNrYWdlIGlzIGEgc2VyaWVzIG9mIHRvb2xzCi0gICAgcnVuIGNvbnNlY3V0aXZlbHkgd2hpY2gg
Y29udmVydHMgaW5saW5lIEMvQysrIGRvY3VtZW50YXRpb24gaW50bwotICAgIGRvY2Jvb2sgZmls
ZXMgYW5kIHRoZW4gaW50byBIVE1MLiBUaGlzIGNsYXNzIGlzIHN1aXRhYmxlIGZvcgotICAgIGdl
bmVyYXRpbmcgZG9jdW1lbnRhdGlvbiBvciBzaW1wbHkgdmVyaWZ5aW5nIGNvcnJlY3RuZXNzLgot
Ci0gICAgS2V5d29yZCBhcmd1bWVudHM6Ci0gICAgb3V0cHV0X2RpciAgICAgICAgIC0tIFRoZSBw
YXRoIHdoZXJlIGd0a2RvYyBvdXRwdXQgc2hvdWxkIGJlIHBsYWNlZC4gR2VuZXJhdGlvbgotICAg
ICAgICAgICAgICAgICAgICAgICAgICBtYXkgb3ZlcndyaXRlIGZpbGUgaW4gdGhpcyBkaXJlY3Rv
cnkuIFJlcXVpcmVkLgotICAgIG1vZHVsZV9uYW1lICAgICAgICAtLSBUaGUgbmFtZSBvZiB0aGUg
ZG9jdW1lbnRhdGlvbiBtb2R1bGUuIEZvciBsaWJyYXJpZXMgdGhpcwotICAgICAgICAgICAgICAg
ICAgICAgICAgICBpcyB0eXBpY2FsbHkgdGhlIGxpYnJhcnkgbmFtZS4gUmVxdWlyZWQgaWYgbm90
IGxpYnJhcnkgcGF0aAotICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBnaXZlbi4KLSAgICBz
b3VyY2VfZGlycyAgICAgICAgLS0gQSBsaXN0IG9mIHBhdGhzIHRvIHRoZSBzb3VyY2UgY29kZSB0
byBiZSBzY2FubmVkLiBSZXF1aXJlZC4KLSAgICBpZ25vcmVkX2ZpbGVzICAgICAgLS0gQSBsaXN0
IG9mIGZpbGVuYW1lcyB0byBpZ25vcmUgaW4gdGhlIHNvdXJjZSBkaXJlY3RvcnkuIEl0IGlzCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgIG9ubHkgbmVjZXNzYXJ5IHRvIHByb3ZpZGUgdGhlIGJh
c2VuYW1lcyBvZiB0aGVzZSBmaWxlcy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwaWNh
bGx5IGl0IGlzIGltcG9ydGFudCB0byBwcm92aWRlIGFuIHVwZGF0ZWQgbGlzdCBvZgotICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZ25vcmVkIGZpbGVzIHRvIHByZXZlbnQgd2FybmluZ3MgYWJv
dXQgdW5kb2N1bWVudGVkIHN5bWJvbHMuCi0gICAgZGVjb3JhdG9yICAgICAgICAgIC0tIElmIGEg
ZGVjb3JhdG9yIGlzIHVzZWQgdG8gdW5oaWRlIGNlcnRhaW4gc3ltYm9scyBpbiBoZWFkZXIKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXMgdGhpcyBwYXJhbWV0ZXIgaXMgcmVxdWlyZWQg
Zm9yIHN1Y2Nlc3NmdWwgc2Nhbm5pbmcuCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChkZWZh
dWx0ICcnKQotICAgIGRlcHJlY2F0aW9uX2d1YXJkICAtLSBndGtkb2MgdHJpZXMgdG8gZW5zdXJl
IHRoYXQgc3ltYm9scyBtYXJrZWQgYXMgZGVwcmVjYXRlZAotICAgICAgICAgICAgICAgICAgICAg
ICAgICBhcmUgZW5jYXNlZCBpbiB0aGlzIEMgcHJlcHJvY2Vzc29yIGRlZmluZS4gVGhpcyBpcyBy
ZXF1aXJlZAotICAgICAgICAgICAgICAgICAgICAgICAgICB0byBhdm9pZCBndGtkb2Mgd2Fybmlu
Z3MuIChkZWZhdWx0ICcnKQotICAgIGNmbGFncyAgICAgICAgICAgICAtLSBUaGlzIHBhcmFtZXRl
ciBzcGVjaWZpZXMgYW55IHByZXByb2Nlc3NvciBmbGFncyBuZWNlc3NhcnkgZm9yCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgIGJ1aWxkaW5nIHRoZSBzY2FubmVyIGJpbmFyeSBkdXJpbmcgZ3Rr
ZG9jLXNjYW5vYmouIFR5cGljYWxseQotICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzIGlu
Y2x1ZGVzIGFsbCBhYnNvbHV0ZSBpbmNsdWRlIHBhdGhzIG5lY2Vzc2FyeSB0byByZXNvbHZlCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgIGFsbCBoZWFkZXIgZGVwZW5kZW5jaWVzLiAoZGVmYXVs
dCAnJykKLSAgICBsZGZsYWdzICAgICAgICAgICAgLS0gVGhpcyBwYXJhbWV0ZXIgc3BlY2lmaWVz
IGFueSBsaW5rZXIgZmxhZ3MgbmVjZXNzYXJ5IGZvcgotICAgICAgICAgICAgICAgICAgICAgICAg
ICBidWlsZGluZyB0aGUgc2Nhbm5lciBiaW5hcnkgZHVyaW5nIGd0a2RvYy1zY2Fub2JqLiBUeXBp
Y2FsbHkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyBpbmNsdWRlcyAiLWx5b3VybGli
cmFyeW5hbWUiLiAoZGVmYXVsdCAnJykKLSAgICBsaWJyYXJ5X3BhdGggICAgICAgLS0gVGhpcyBw
YXJhbWV0ZXIgc3BlY2lmaWVzIHRoZSBwYXRoIHRvIHRoZSBkaXJlY3Rvcnkgd2hlcmUgeW91Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcnkgcmVzaWRlcyB1c2VkIGZvciBidWlsZGlu
ZyB0aGUgc2Nhbm5lciBiaW5hcnkgZHVyaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGd0
a2RvYy1zY2Fub2JqLiAoZGVmYXVsdCAnJykKLQotICAgIGRvY19kaXIgICAgICAgICAgICAtLSBU
aGUgcGF0aCB0byBvdGhlciBkb2N1bWVudGF0aW9uIGZpbGVzIG5lY2Vzc2FyeSB0byBidWlsZAot
ICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZG9jdW1lbnRhdGlvbi4gVGhpcyBmaWxlcyBp
biB0aGlzIGRpcmVjdG9yeSBhcyB3ZWxsIGFzCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHRo
ZSBmaWxlcyBpbiB0aGUgJ2h0bWwnIHN1YmRpcmVjdG9yeSB3aWxsIGJlIGNvcGllZAotICAgICAg
ICAgICAgICAgICAgICAgICAgICByZWN1cnNpdmVseSBpbnRvIHRoZSBvdXRwdXQgZGlyZWN0b3J5
LiAoZGVmYXVsdCAnJykKLSAgICBtYWluX3NnbWxfZmlsZSAgICAgLS0gVGhlIHBhdGggb3IgbmFt
ZSAoaWYgYSBkb2NfZGlyIGlzIGdpdmVuKSBvZiB0aGUgU0dNTCBmaWxlCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgIHRoYXQgaXMgdGhlIGNvbnNpZGVyZWQgdGhlIG1haW4gcGFnZSBvZiB5b3Vy
IGRvY3VtZW50YXRpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChkZWZhdWx0OiA8bW9k
dWxlX25hbWU+LWRvY3Muc2dtbCkKLSAgICB2ZXJzaW9uICAgICAgICAgICAgLS0gVGhlIHZlcnNp
b24gbnVtYmVyIG9mIHRoZSBtb2R1bGUuIElmIHRoaXMgaXMgcHJvdmlkZWQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgIGEgdmVyc2lvbi54bWwgZmlsZSBjb250YWluaW5nIHRoZSB2ZXJzaW9u
IHdpbGwgYmUgY3JlYXRlZAotICAgICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUgb3V0cHV0
IGRpcmVjdG9yeSBkdXJpbmcgZG9jdW1lbnRhdGlvbiBnZW5lcmF0aW9uLgotCi0gICAgaW50ZXJh
Y3RpdmUgICAgICAgIC0tIFdoZXRoZXIgb3Igbm90IGVycm9ycyBvciB3YXJuaW5ncyBzaG91bGQg
cHJvbXB0IHRoZSB1c2VyCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGNvbnRpbnVlIG9y
IG5vdC4gV2hlbiB0aGlzIHZhbHVlIGlzIGZhbHNlLCBnZW5lcmF0aW9uCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgIHdpbGwgY29udGludWUgZGVzcGl0ZSB3YXJuaW5ncy4gKGRlZmF1bHQgRmFs
c2UpCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgKiphcmdzKToKLQotICAgICAg
ICAjIFBhcmFtZXRlcnMgc3BlY2lmaWMgdG8gc2Nhbm5pbmcuCi0gICAgICAgIHNlbGYubW9kdWxl
X25hbWUgPSAnJwotICAgICAgICBzZWxmLnNvdXJjZV9kaXJzID0gW10KLSAgICAgICAgc2VsZi5p
Z25vcmVkX2ZpbGVzID0gW10KLSAgICAgICAgc2VsZi5kZWNvcmF0b3IgPSAnJwotICAgICAgICBz
ZWxmLmRlcHJlY2F0aW9uX2d1YXJkID0gJycKLQotICAgICAgICAjIFBhcmFtZXRlcnMgc3BlY2lm
aWMgdG8gZ3RrZG9jLXNjYW5vYmouCi0gICAgICAgIHNlbGYuY2ZsYWdzID0gJycKLSAgICAgICAg
c2VsZi5sZGZsYWdzID0gJycKLSAgICAgICAgc2VsZi5saWJyYXJ5X3BhdGggPSAnJwotCi0gICAg
ICAgICMgUGFyYW1ldGVycyBzcGVjaWZpYyB0byBnZW5lcmF0aW9uLgotICAgICAgICBzZWxmLm91
dHB1dF9kaXIgPSAnJwotICAgICAgICBzZWxmLmRvY19kaXIgPSAnJwotICAgICAgICBzZWxmLm1h
aW5fc2dtbF9maWxlID0gJycKLQotICAgICAgICBzZWxmLmludGVyYWN0aXZlID0gRmFsc2UKLQot
ICAgICAgICBzZWxmLmxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdndGtkb2MnKQotCi0gICAg
ICAgIGZvciBrZXksIHZhbHVlIGluIGFyZ3MuaXRlcml0ZW1zKCk6Ci0gICAgICAgICAgICBzZXRh
dHRyKHNlbGYsIGtleSwgdmFsdWUpCi0KLSAgICAgICAgZGVmIHJhaXNlX2Vycm9yX2lmX25vdF9z
cGVjaWZpZWQoa2V5KToKLSAgICAgICAgICAgIGlmIG5vdCBnZXRhdHRyKHNlbGYsIGtleSk6Ci0g
ICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCclcyBub3Qgc3BlY2lmaWVkLicgJSBrZXkp
Ci0KLSAgICAgICAgcmFpc2VfZXJyb3JfaWZfbm90X3NwZWNpZmllZCgnb3V0cHV0X2RpcicpCi0g
ICAgICAgIHJhaXNlX2Vycm9yX2lmX25vdF9zcGVjaWZpZWQoJ3NvdXJjZV9kaXJzJykKLSAgICAg
ICAgcmFpc2VfZXJyb3JfaWZfbm90X3NwZWNpZmllZCgnbW9kdWxlX25hbWUnKQotCi0gICAgICAg
ICMgTWFrZSBhbGwgcGF0aHMgYWJzb2x1dGUgaW4gY2FzZSB3ZSB3ZXJlIHBhc3NlZCByZWxhdGl2
ZSBwYXRocywgc2luY2UKLSAgICAgICAgIyB3ZSBjaGFuZ2UgdGhlIGN1cnJlbnQgd29ya2luZyBk
aXJlY3Rvcnkgd2hlbiBleGVjdXRpbmcgc3ViY29tbWFuZHMuCi0gICAgICAgIHNlbGYub3V0cHV0
X2RpciA9IG9zLnBhdGguYWJzcGF0aChzZWxmLm91dHB1dF9kaXIpCi0gICAgICAgIHNlbGYuc291
cmNlX2RpcnMgPSBbb3MucGF0aC5hYnNwYXRoKHgpIGZvciB4IGluIHNlbGYuc291cmNlX2RpcnNd
Ci0gICAgICAgIGlmIHNlbGYubGlicmFyeV9wYXRoOgotICAgICAgICAgICAgc2VsZi5saWJyYXJ5
X3BhdGggPSBvcy5wYXRoLmFic3BhdGgoc2VsZi5saWJyYXJ5X3BhdGgpCi0KLSAgICAgICAgaWYg
bm90IHNlbGYubWFpbl9zZ21sX2ZpbGU6Ci0gICAgICAgICAgICBzZWxmLm1haW5fc2dtbF9maWxl
ID0gc2VsZi5tb2R1bGVfbmFtZSArICItZG9jcy5zZ21sIgotCi0gICAgZGVmIGdlbmVyYXRlKHNl
bGYsIGh0bWw9VHJ1ZSk6Ci0gICAgICAgIHNlbGYuc2F3X3dhcm5pbmdzID0gRmFsc2UKLQotICAg
ICAgICBzZWxmLl9jb3B5X2RvY19maWxlc190b19vdXRwdXRfZGlyKGh0bWwpCi0gICAgICAgIHNl
bGYuX3dyaXRlX3ZlcnNpb25feG1sKCkKLSAgICAgICAgc2VsZi5fcnVuX2d0a2RvY19zY2FuKCkK
LSAgICAgICAgc2VsZi5fcnVuX2d0a2RvY19zY2FuZ29iaigpCi0gICAgICAgIHNlbGYuX3J1bl9n
dGtkb2NfbWt0bXBsKCkKLSAgICAgICAgc2VsZi5fcnVuX2d0a2RvY19ta2RiKCkKLQotICAgICAg
ICBpZiBub3QgaHRtbDoKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgIHNlbGYuX3J1bl9n
dGtkb2NfbWtodG1sKCkKLSAgICAgICAgc2VsZi5fcnVuX2d0a2RvY19maXh4cmVmKCkKLQotICAg
IGRlZiBfZGVsZXRlX2ZpbGVfaWZfZXhpc3RzKHNlbGYsIHBhdGgpOgotICAgICAgICBpZiBub3Qg
b3MuYWNjZXNzKHBhdGgsIG9zLkZfT0sgfCBvcy5SX09LKToKLSAgICAgICAgICAgIHJldHVybgot
ICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygnZGVsZXRpbmcgJXMnLCBwYXRoKQotICAgICAgICBv
cy51bmxpbmsocGF0aCkKLQotICAgIGRlZiBfY3JlYXRlX2RpcmVjdG9yeV9pZl9ub25leGlzdGVu
dChzZWxmLCBwYXRoKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgb3MubWFrZWRpcnMocGF0
aCkKLSAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyb3I6Ci0gICAgICAgICAgICBpZiBlcnJv
ci5lcnJubyAhPSBlcnJuby5FRVhJU1Q6Ci0gICAgICAgICAgICAgICAgcmFpc2UKLQotICAgIGRl
ZiBfcmFpc2VfZXhjZXB0aW9uX2lmX2ZpbGVfaW5hY2Nlc3NpYmxlKHNlbGYsIHBhdGgpOgotICAg
ICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMocGF0aCkgb3Igbm90IG9zLmFjY2VzcyhwYXRoLCBv
cy5SX09LKToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiQ291bGQgbm90IGFjY2VzcyBm
aWxlIGF0OiAlcyIgJSBwYXRoKQotCi0gICAgZGVmIF9vdXRwdXRfaGFzX3dhcm5pbmdzKHNlbGYs
IG91dHB1dHMpOgotICAgICAgICBmb3Igb3V0cHV0IGluIG91dHB1dHM6Ci0gICAgICAgICAgICBp
ZiBvdXRwdXQgYW5kIG91dHB1dC5maW5kKCd3YXJuaW5nJyk6Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIFRydWUKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICBkZWYgX2Fza195ZXNfb3Jfbm9f
cXVlc3Rpb24oc2VsZiwgcXVlc3Rpb24pOgotICAgICAgICBpZiBub3Qgc2VsZi5pbnRlcmFjdGl2
ZToKLSAgICAgICAgICAgIHJldHVybiBUcnVlCi0KLSAgICAgICAgcXVlc3Rpb24gKz0gJyBbeS9O
XSAnCi0gICAgICAgIGFuc3dlciA9IE5vbmUKLSAgICAgICAgd2hpbGUgYW5zd2VyICE9ICd5JyBh
bmQgYW5zd2VyICE9ICduJyBhbmQgYW5zd2VyICE9ICcnOgotICAgICAgICAgICAgYW5zd2VyID0g
cmF3X2lucHV0KHF1ZXN0aW9uKS5sb3dlcigpCi0gICAgICAgIHJldHVybiBhbnN3ZXIgPT0gJ3kn
Ci0KLSAgICBkZWYgX3J1bl9jb21tYW5kKHNlbGYsIGFyZ3MsIGVudj1Ob25lLCBjd2Q9Tm9uZSwg
cHJpbnRfb3V0cHV0PVRydWUpOgotICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCJSdW5uaW5nICVz
IiwgYXJnc1swXSkKLSAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIkZ1bGwgY29tbWFuZCBhcmdz
OiAlcyIsIHN0cihhcmdzKSkKLQotICAgICAgICBwcm9jZXNzID0gc3VicHJvY2Vzcy5Qb3Blbihh
cmdzLCBlbnY9ZW52LCBjd2Q9Y3dkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQotICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHBy
b2Nlc3MuY29tbXVuaWNhdGUoKQotCi0gICAgICAgIGlmIHByaW50X291dHB1dDoKLSAgICAgICAg
ICAgIGlmIHN0ZG91dDoKLSAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKHN0ZG91dCkK
LSAgICAgICAgICAgIGlmIHN0ZGVycjoKLSAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRl
KHN0ZGVycikKLQotICAgICAgICBpZiBwcm9jZXNzLnJldHVybmNvZGUgIT0gMDoKLSAgICAgICAg
ICAgIHJhaXNlIEV4Y2VwdGlvbignJXMgcHJvZHVjZWQgYSBub24temVybyByZXR1cm4gY29kZSAl
aScKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAoYXJnc1swXSwgcHJvY2Vzcy5yZXR1
cm5jb2RlKSkKLQotICAgICAgICBpZiAnd2FybmluZycgaW4gc3RkZXJyIG9yICd3YXJuaW5nJyBp
biBzdGRvdXQ6Ci0gICAgICAgICAgICBzZWxmLnNhd193YXJuaW5ncyA9IFRydWUKLSAgICAgICAg
ICAgIGlmIG5vdCBzZWxmLl9hc2tfeWVzX29yX25vX3F1ZXN0aW9uKCclcyBwcm9kdWNlZCB3YXJu
aW5ncywgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J3RyeSB0byBjb250aW51ZT8nICUgYXJnc1swXSk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgRXhj
ZXB0aW9uKCclcyBzdGVwIGZhaWxlZCcgJSBhcmdzWzBdKQotCi0gICAgICAgIHJldHVybiBzdGRv
dXQuc3RyaXAoKQotCi0gICAgZGVmIF9jb3B5X2RvY19maWxlc190b19vdXRwdXRfZGlyKHNlbGYs
IGh0bWw9VHJ1ZSk6Ci0gICAgICAgIGlmIG5vdCBzZWxmLmRvY19kaXI6Ci0gICAgICAgICAgICBz
ZWxmLmxvZ2dlci5pbmZvKCdOb3QgY29weWluZyBhbnkgZmlsZXMgZnJvbSBkb2MgZGlyZWN0b3J5
LCcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyBiZWNhdXNlIG5vIGRvYyBkaXJlY3Rv
cnkgZ2l2ZW4uJykKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgIGRlZiBjb3B5X2ZpbGVf
cmVwbGFjaW5nX2V4aXN0aW5nKHNyYywgZGVzdCk6Ci0gICAgICAgICAgICBpZiBvcy5wYXRoLmlz
ZGlyKHNyYyk6Ci0gICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoJ3NraXBwZWQgZGly
ZWN0b3J5ICVzJywgIHNyYykKLSAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgIGlm
IG5vdCBvcy5hY2Nlc3Moc3JjLCBvcy5GX09LIHwgb3MuUl9PSyk6Ci0gICAgICAgICAgICAgICAg
c2VsZi5sb2dnZXIuZGVidWcoJ3NraXBwZWQgdW5yZWFkYWJsZSAlcycsIHNyYykKLSAgICAgICAg
ICAgICAgICByZXR1cm4KLQotICAgICAgICAgICAgc2VsZi5fZGVsZXRlX2ZpbGVfaWZfZXhpc3Rz
KGRlc3QpCi0KLSAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCdjcmVhdGVkICVzJywgZGVz
dCkKLSAgICAgICAgICAgIG9zLmxpbmsoc3JjLCBkZXN0KQotCi0gICAgICAgIGRlZiBjb3B5X2Fs
bF9maWxlc19pbl9kaXJlY3Rvcnkoc3JjLCBkZXN0KToKLSAgICAgICAgICAgIGZvciBwYXRoIGlu
IG9zLmxpc3RkaXIoc3JjKToKLSAgICAgICAgICAgICAgICBjb3B5X2ZpbGVfcmVwbGFjaW5nX2V4
aXN0aW5nKG9zLnBhdGguam9pbihzcmMsIHBhdGgpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKGRlc3QsIHBhdGgpKQotCi0gICAgICAg
IHNlbGYubG9nZ2VyLmluZm8oJ0NvcHlpbmcgdGVtcGxhdGUgZmlsZXMgdG8gb3V0cHV0IGRpcmVj
dG9yeS4uLicpCi0gICAgICAgIHNlbGYuX2NyZWF0ZV9kaXJlY3RvcnlfaWZfbm9uZXhpc3RlbnQo
c2VsZi5vdXRwdXRfZGlyKQotICAgICAgICBjb3B5X2FsbF9maWxlc19pbl9kaXJlY3Rvcnkoc2Vs
Zi5kb2NfZGlyLCBzZWxmLm91dHB1dF9kaXIpCi0KLSAgICAgICAgaWYgbm90IGh0bWw6Ci0gICAg
ICAgICAgICByZXR1cm4KLQotICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCdDb3B5aW5nIEhUTUwg
ZmlsZXMgdG8gb3V0cHV0IGRpcmVjdG9yeS4uLicpCi0gICAgICAgIGh0bWxfc3JjX2RpciA9IG9z
LnBhdGguam9pbihzZWxmLmRvY19kaXIsICdodG1sJykKLSAgICAgICAgaHRtbF9kZXN0X2RpciA9
IG9zLnBhdGguam9pbihzZWxmLm91dHB1dF9kaXIsICdodG1sJykKLSAgICAgICAgc2VsZi5fY3Jl
YXRlX2RpcmVjdG9yeV9pZl9ub25leGlzdGVudChodG1sX2Rlc3RfZGlyKQotCi0gICAgICAgIGlm
IG9zLnBhdGguZXhpc3RzKGh0bWxfc3JjX2Rpcik6Ci0gICAgICAgICAgICBjb3B5X2FsbF9maWxl
c19pbl9kaXJlY3RvcnkoaHRtbF9zcmNfZGlyLCBodG1sX2Rlc3RfZGlyKQotCi0gICAgZGVmIF93
cml0ZV92ZXJzaW9uX3htbChzZWxmKToKLSAgICAgICAgaWYgbm90IHNlbGYudmVyc2lvbjoKLSAg
ICAgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oJ05vIHZlcnNpb24gc3BlY2lmaWVkLCBzbyBub3Qg
d3JpdGluZyB2ZXJzaW9uLnhtbCcpCi0gICAgICAgICAgICByZXR1cm4KLQotICAgICAgICB2ZXJz
aW9uX3htbF9wYXRoID0gb3MucGF0aC5qb2luKHNlbGYub3V0cHV0X2RpciwgJ3ZlcnNpb24ueG1s
JykKLSAgICAgICAgc3JjX3ZlcnNpb25feG1sX3BhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi5kb2Nf
ZGlyLCAndmVyc2lvbi54bWwnKQotCi0gICAgICAgICMgRG9uJ3Qgb3ZlcndyaXRlIHZlcnNpb24u
eG1sIGlmIGl0IHdhcyBpbiB0aGUgZG9jIGRpcmVjdG9yeS4KLSAgICAgICAgaWYgb3MucGF0aC5l
eGlzdHModmVyc2lvbl94bWxfcGF0aCkgYW5kIFwKLSAgICAgICAgICAgb3MucGF0aC5leGlzdHMo
c3JjX3ZlcnNpb25feG1sX3BhdGgpOgotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgb3V0
cHV0X2ZpbGUgPSBvcGVuKHZlcnNpb25feG1sX3BhdGgsICd3JykKLSAgICAgICAgb3V0cHV0X2Zp
bGUud3JpdGUoc2VsZi52ZXJzaW9uKQotICAgICAgICBvdXRwdXRfZmlsZS5jbG9zZSgpCi0KLSAg
ICBkZWYgX3J1bl9ndGtkb2Nfc2NhbihzZWxmKToKLSAgICAgICAgYXJncyA9IFsnZ3RrZG9jLXNj
YW4nLAotICAgICAgICAgICAgICAgICctLW1vZHVsZT0lcycgJSBzZWxmLm1vZHVsZV9uYW1lLAot
ICAgICAgICAgICAgICAgICctLXJlYnVpbGQtdHlwZXMnXQotCi0gICAgICAgICMgRWFjaCBzb3Vy
Y2UgZGlyZWN0b3J5IHNob3VsZCBiZSBoYXZlIGl0cyBvd24gIi0tc291cmNlLWRpcj0iIHByZWZp
eC4KLSAgICAgICAgYXJncy5leHRlbmQoWyctLXNvdXJjZS1kaXI9JXMnICUgcGF0aCBmb3IgcGF0
aCBpbiBzZWxmLnNvdXJjZV9kaXJzXSkKLQotICAgICAgICBpZiBzZWxmLmRlY29yYXRvcjoKLSAg
ICAgICAgICAgIGFyZ3MuYXBwZW5kKCctLWlnbm9yZS1kZWNvcmF0b3JzPSVzJyAlIHNlbGYuZGVj
b3JhdG9yKQotICAgICAgICBpZiBzZWxmLmRlcHJlY2F0aW9uX2d1YXJkOgotICAgICAgICAgICAg
YXJncy5hcHBlbmQoJy0tZGVwcmVjYXRlZC1ndWFyZHM9JXMnICUgc2VsZi5kZXByZWNhdGlvbl9n
dWFyZCkKLSAgICAgICAgaWYgc2VsZi5vdXRwdXRfZGlyOgotICAgICAgICAgICAgYXJncy5hcHBl
bmQoJy0tb3V0cHV0LWRpcj0lcycgJSBzZWxmLm91dHB1dF9kaXIpCi0KLSAgICAgICAgIyBndGtk
b2Mtc2NhbiB3YW50cyB0aGUgYmFzZW5hbWVzIG9mIGlnbm9yZWQgaGVhZGVycywgc28gc3RyaXAg
dGhlCi0gICAgICAgICMgZGlybmFtZS4gRGlmZmVyZW50IGZyb20gIi0tc291cmNlLWRpciIsIHRo
ZSBoZWFkZXJzIHNob3VsZCBiZQotICAgICAgICAjIHNwZWNpZmllZCBhcyBvbmUgbG9uZyBzdHJp
bmcuCi0gICAgICAgIGlmIHNlbGYuaWdub3JlZF9maWxlczoKLSAgICAgICAgICAgIGlnbm9yZWRf
ZmlsZXNfYmFzZW5hbWVzID0gXAotICAgICAgICAgICAgICAgIFtvcy5wYXRoLmJhc2VuYW1lKHgp
IGZvciB4IGluIHNlbGYuaWdub3JlZF9maWxlc10KLSAgICAgICAgICAgIGFyZ3MuYXBwZW5kKCct
LWlnbm9yZS1oZWFkZXJzPSVzJyAlICcgJy5qb2luKGlnbm9yZWRfZmlsZXNfYmFzZW5hbWVzKSkK
LQotICAgICAgICBzZWxmLl9ydW5fY29tbWFuZChhcmdzKQotCi0gICAgZGVmIF9ydW5fZ3RrZG9j
X3NjYW5nb2JqKHNlbGYpOgotICAgICAgICBlbnYgPSBvcy5lbnZpcm9uCi0gICAgICAgIGxkZmxh
Z3MgPSBzZWxmLmxkZmxhZ3MKLSAgICAgICAgaWYgc2VsZi5saWJyYXJ5X3BhdGg6Ci0gICAgICAg
ICAgICBsZGZsYWdzID0gJyAiLUwlcyIgJyAlIHNlbGYubGlicmFyeV9wYXRoICsgbGRmbGFncwot
ICAgICAgICAgICAgZW52WydSVU4nXSA9ICdMRF9MSUJSQVJZX1BBVEg9IiVzIiAnICUgc2VsZi5s
aWJyYXJ5X3BhdGgKLSAgICAgICAgaWYgbGRmbGFnczoKLSAgICAgICAgICAgIGVudlsnTERGTEFH
UyddID0gbGRmbGFncwotICAgICAgICBpZiBzZWxmLmNmbGFnczoKLSAgICAgICAgICAgIGVudlsn
Q0ZMQUdTJ10gPSBzZWxmLmNmbGFncwotCi0gICAgICAgIGlmICdDRkxBR1MnIGluIGVudjoKLSAg
ICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCdDRkxBR1M9JXMnLCBlbnZbJ0NGTEFHUyddKQot
ICAgICAgICBpZiAnTERGTEFHUycgaW4gZW52OgotICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVi
dWcoJ0xERkxBR1MgJXMnLCBlbnZbJ0xERkxBR1MnXSkKLSAgICAgICAgaWYgJ1JVTicgaW4gZW52
OgotICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoJ1JVTj0lcycsIGVudlsnUlVOJ10pCi0g
ICAgICAgIHNlbGYuX3J1bl9jb21tYW5kKFsnZ3RrZG9jLXNjYW5nb2JqJywgJy0tbW9kdWxlPSVz
JyAlIHNlbGYubW9kdWxlX25hbWVdLAotICAgICAgICAgICAgICAgICAgICAgICAgICBlbnY9ZW52
LCBjd2Q9c2VsZi5vdXRwdXRfZGlyKQotCi0gICAgZGVmIF9ydW5fZ3RrZG9jX21rdG1wbChzZWxm
KToKLSAgICAgICAgYXJncyA9IFsnZ3RrZG9jLW1rdG1wbCcsICctLW1vZHVsZT0lcycgJSBzZWxm
Lm1vZHVsZV9uYW1lXQotICAgICAgICBzZWxmLl9ydW5fY29tbWFuZChhcmdzLCBjd2Q9c2VsZi5v
dXRwdXRfZGlyKQotCi0gICAgZGVmIF9ydW5fZ3RrZG9jX21rZGIoc2VsZik6Ci0gICAgICAgIHNn
bWxfZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLm91dHB1dF9kaXIsIHNlbGYubWFpbl9zZ21sX2Zp
bGUpCi0gICAgICAgIHNlbGYuX3JhaXNlX2V4Y2VwdGlvbl9pZl9maWxlX2luYWNjZXNzaWJsZShz
Z21sX2ZpbGUpCi0KLSAgICAgICAgYXJncyA9IFsnZ3RrZG9jLW1rZGInLAotICAgICAgICAgICAg
ICAgICctLW1vZHVsZT0lcycgJSBzZWxmLm1vZHVsZV9uYW1lLAotICAgICAgICAgICAgICAgICct
LW1haW4tc2dtbC1maWxlPSVzJyAlIHNnbWxfZmlsZSwKLSAgICAgICAgICAgICAgICAnLS1zb3Vy
Y2Utc3VmZml4ZXM9aCxjLGNwcCxjYycsCi0gICAgICAgICAgICAgICAgJy0tb3V0cHV0LWZvcm1h
dD14bWwnLAotICAgICAgICAgICAgICAgICctLXNnbWwtbW9kZSddCi0KLSAgICAgICAgIyBFYWNo
IGRpcmVjdG9yeSBzaG91bGQgYmUgaGF2ZSBpdHMgb3duICItLXNvdXJjZS1kaXI9IiBwcmVmaXgu
Ci0gICAgICAgIGFyZ3MuZXh0ZW5kKFsnLS1zb3VyY2UtZGlyPSVzJyAlIHBhdGggZm9yIHBhdGgg
aW4gc2VsZi5zb3VyY2VfZGlyc10pCi0gICAgICAgIHNlbGYuX3J1bl9jb21tYW5kKGFyZ3MsIGN3
ZD1zZWxmLm91dHB1dF9kaXIpCi0KLSAgICBkZWYgX3J1bl9ndGtkb2NfbWtodG1sKHNlbGYpOgot
ICAgICAgICBodG1sX2Rlc3RfZGlyID0gb3MucGF0aC5qb2luKHNlbGYub3V0cHV0X2RpciwgJ2h0
bWwnKQotICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2RpcihodG1sX2Rlc3RfZGlyKToKLSAgICAg
ICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiJXMgaXMgbm90IGEgZGlyZWN0b3J5LCBjb3VsZCBub3Qg
Z2VuZXJhdGUgSFRNTCIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIGh0bWxfZGVzdF9k
aXIpCi0gICAgICAgIGVsaWYgbm90IG9zLmFjY2VzcyhodG1sX2Rlc3RfZGlyLCBvcy5YX09LIHwg
b3MuUl9PSyB8IG9zLldfT0spOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJDb3VsZCBu
b3QgYWNjZXNzICVzIHRvIGdlbmVyYXRlIEhUTUwiCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJSBodG1sX2Rlc3RfZGlyKQotCi0gICAgICAgICMgZ3RrZG9jLW1raHRtbCBleHBlY3RzIHRo
ZSBTR01MIHBhdGggdG8gYmUgYWJzb2x1dGUuCi0gICAgICAgIHNnbWxfZmlsZSA9IG9zLnBhdGgu
am9pbihvcy5wYXRoLmFic3BhdGgoc2VsZi5vdXRwdXRfZGlyKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNlbGYubWFpbl9zZ21sX2ZpbGUpCi0gICAgICAgIHNlbGYuX3JhaXNl
X2V4Y2VwdGlvbl9pZl9maWxlX2luYWNjZXNzaWJsZShzZ21sX2ZpbGUpCi0KLSAgICAgICAgc2Vs
Zi5fcnVuX2NvbW1hbmQoWydndGtkb2MtbWtodG1sJywgc2VsZi5tb2R1bGVfbmFtZSwgc2dtbF9m
aWxlXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY3dkPWh0bWxfZGVzdF9kaXIpCi0KLSAg
ICBkZWYgX3J1bl9ndGtkb2NfZml4eHJlZihzZWxmKToKLSAgICAgICAgc2VsZi5fcnVuX2NvbW1h
bmQoWydndGtkb2MtZml4eHJlZicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1tb2R1
bGUtZGlyPWh0bWwnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0taHRtbC1kaXI9aHRt
bCddLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjd2Q9c2VsZi5vdXRwdXRfZGlyKQotCi0K
LWNsYXNzIFBrZ0NvbmZpZ0dUS0RvYyhHVEtEb2MpOgotCi0gICAgIiIiQ2xhc3MgcmVhZHMgYSBs
aWJyYXJ5J3MgcGtnY29uZmlnIGZpbGUgdG8gZ3Vlc3MgZ3RrZG9jIHBhcmFtZXRlcnMuCi0KLSAg
ICBTb21lIGd0a2RvYyBwYXJhbWV0ZXJzIGNhbiBiZSBndWVzc2VkIGJ5IHJlYWRpbmcgYSBsaWJy
YXJ5J3MgcGtnY29uZmlnCi0gICAgZmlsZSwgaW5jbHVkaW5nIHRoZSBjZmxhZ3MsIGxkZmxhZ3Mg
YW5kIHZlcnNpb24gcGFyYW1ldGVycy4gSWYgeW91Ci0gICAgcHJvdmlkZSB0aGVzZSBwYXJhbWV0
ZXJzIGFzIHdlbGwsIHRoZXkgd2lsbCBiZSBhcHBlbmRlZCB0byB0aGUgb25lcwotICAgIGd1ZXNz
ZWQgdmlhIHRoZSBwa2djb25maWcgZmlsZS4KLQotICAgIEtleXdvcmQgYXJndW1lbnRzOgotICAg
ICAgcGtnX2NvbmZpZ19wYXRoIC0tIFBhdGggdG8gdGhlIHBrZ2NvbmZpZyBmaWxlIGZvciB0aGUg
bGlicmFyeS4gUmVxdWlyZWQuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgcGtn
X2NvbmZpZ19wYXRoLCAqKmFyZ3MpOgotICAgICAgICBzdXBlcihQa2dDb25maWdHVEtEb2MsIHNl
bGYpLl9faW5pdF9fKCoqYXJncykKLQotICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMocGtn
X2NvbmZpZ19wYXRoKToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignQ291bGQgbm90IGZp
bmQgcGtnLWNvbmZpZyBmaWxlIGF0OiAlcycKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAl
IHBrZ19jb25maWdfcGF0aCkKLQotICAgICAgICBzZWxmLmNmbGFncyArPSAiICIgKyBzZWxmLl9y
dW5fY29tbWFuZChbJ3BrZy1jb25maWcnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcGtnX2NvbmZpZ19wYXRoLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tY2ZsYWdzJ10sIHByaW50X291dHB1dD1GYWxz
ZSkKLSAgICAgICAgc2VsZi5sZGZsYWdzICs9ICIgIiArIHNlbGYuX3J1bl9jb21tYW5kKFsncGtn
LWNvbmZpZycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwa2dfY29uZmlnX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnLS1saWJzJ10sIHByaW50X291dHB1dD1GYWxzZSkKLSAgICAgICAgc2VsZi52
ZXJzaW9uID0gc2VsZi5fcnVuX2NvbW1hbmQoWydwa2ctY29uZmlnJywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBrZ19jb25maWdfcGF0aCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLW1vZHZlcnNpb24nXSwgcHJpbnRfb3V0
cHV0PUZhbHNlKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IDc1ZjRlZmZjZWFiYzU0OWI2N2YxNDQzMjg2ZjYzMDE3ZjA2MzBkZWUuLjJjODM4OGVj
MWNhN2ZmODBiNTM2M2FkODNlNWFkNGQ0ZTE4ZTE0YjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMS0xMS0xNyAg
TWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10g
SW50ZWdyYXRlIGJ1aWxkLWd0a2RvYyBpbnRvIGJ1aWxkLXdlYmtpdCBhbmQgbWFrZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzI2MjYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFt
OiBBZGRlZCBzdXBwb3J0IGZvciBuZXcgc2NyaXB0cyBhbmQgIm1ha2UgZG9jcyIuCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRkaXJzLnBtOiBDYWxsIGdlbmVyYXRlLWd0a2RvYyB3aGVuIGJ1aWxk
aW5nLgorICAgICAgICAoYnVpbGRBdXRvdG9vbHNQcm9qZWN0KToKKyAgICAgICAgKiBndGsvZ2Vu
ZXJhdGUtZ3RrZG9jOiBBZGRlZC4KKyAgICAgICAgKiBndGsvZ3RrZG9jLnB5OiBSZW5hbWVkIGZy
b20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy9ndGtkb2MucHkuCisKIDIw
MTEtMTEtMjMgIFJhcGhhZWwgS3VibyBkYSBDb3N0YSAgPGt1Ym9AcHJvZnVzaW9uLm1vYmk+CiAK
ICAgICAgICAgW0NNYWtlXSBNb3ZlIHRoZSB0b3AtbGV2ZWwgbG9naWMgdG8gdGhlIHRvcC1sZXZl
bCBkaXJlY3RvcnkuCmRpZmYgLS1naXQgYS9Ub29scy9HTlVtYWtlZmlsZS5hbSBiL1Rvb2xzL0dO
VW1ha2VmaWxlLmFtCmluZGV4IGZkOWVmNzAxNDNlYmNmYWE0NjgxM2IxMjgwYmFlY2E0ZDYzMGIz
NGEuLmFlMGUyODg2Yjk2Zjg5N2M1YzMyMTQxZmQ4NzExMmMxZGNjMmEzODYgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0dOVW1ha2VmaWxlLmFtCisrKyBiL1Rvb2xzL0dOVW1ha2VmaWxlLmFtCkBAIC0yMjcs
MyArMjI3LDQ1IEBAIFRlc3ROZXRzY2FwZVBsdWdpbl9saWJ0ZXN0bmV0c2NhcGVwbHVnaW5fbGFf
TERGTEFHUyA9IFwKIAogQ0xFQU5GSUxFUyArPSBUZXN0TmV0c2NhcGVQbHVnaW4vbGlidGVzdG5l
dHNjYXBlcGx1Z2luLmxhCiBlbmRpZgorCitFWFRSQV9ESVNUICs9IFwKKwlUb29scy9ndGsvY29t
bW9uLnB5IFwKKwlUb29scy9ndGsvZ2VuZXJhdGUtZ3RrZG9jIFwKKwlUb29scy9ndGsvZ3RrZG9j
LnB5IFwKKwlUb29scy9TY3JpcHRzL1ZDU1V0aWxzLnBtIFwKKwlUb29scy9TY3JpcHRzL3dlYmtp
dC1idWlsZC1kaXJlY3RvcnkgXAorCVRvb2xzL1NjcmlwdHMvd2Via2l0ZGlycy5wbQorCitpZiBF
TkFCTEVfV0VCS0lUMgorZG9jczogJChCVUlMVF9TT1VSQ0VTKSBcCisJbGlid2Via2l0Z3RrLUBX
RUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05ALkBXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05A
LmxhIFwKKwlsaWJ3ZWJraXQyZ3RrLUBXRUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05ALkBXRUJL
SVRHVEtfQVBJX01JTk9SX1ZFUlNJT05ALmxhCisJJChzcmNkaXIpL1Rvb2xzL2d0ay9nZW5lcmF0
ZS1ndGtkb2MKK2Vsc2UKK2RvY3M6ICQoQlVJTFRfU09VUkNFUykgXAorCWxpYndlYmtpdGd0ay1A
V0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQC5AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9O
QC5sYQorCSQoc3JjZGlyKS9Ub29scy9ndGsvZ2VuZXJhdGUtZ3RrZG9jCitlbmRpZgorLlBIT05Z
IDogZG9jcworCitjbGVhbi1sb2NhbDogZG9jLWNsZWFuLWxvY2FsCitkb2MtY2xlYW4tbG9jYWw6
CisJQHJtIC1mIERvY3VtZW50YXRpb24vd2Via2l0Z3RrLyp+IERvY3VtZW50YXRpb24vd2Via2l0
Z3RrKi5iYWsKKwlAcm0gLWYgRG9jdW1lbnRhdGlvbi93ZWJraXQyZ3RrLyp+IERvY3VtZW50YXRp
b24vd2Via2l0Mmd0ayouYmFrCitkaXN0Y2xlYW4tbG9jYWw6IGRvYy1kaXN0Y2xlYW4tbG9jYWwK
K2RvYy1kaXN0Y2xlYW4tbG9jYWw6CisJQHJtIC1yZiBEb2N1bWVudGF0aW9uCittYWludGFpbmVy
LWNsZWFuLWxvY2FsOiBkb2MtbWFpbnRhaW5lci1jbGVhbi1sb2NhbAorZG9jLW1haW50YWluZXIt
Y2xlYW4tbG9jYWw6IGNsZWFuCisJQHJtIC1yZiBEb2N1bWVudGF0aW9uL3dlYmtpdGd0ayBEb2N1
bWVudGF0aW9uL3dlYmtpdDJndGsKKwktQHJtZGlyIERvY3VtZW50YXRpb24KKworaWYgRU5BQkxF
X0dUS19ET0MKK2Rpc3QtY2hlY2stZ3RrZG9jOgorYWxsOiBkb2NzCitlbHNlCitkaXN0LWNoZWNr
LWd0a2RvYzoKKwlAZWNobyAiKioqIGd0ay1kb2MgbXVzdCBiZSBpbnN0YWxsZWQgYW5kIGVuYWJs
ZWQgaW4gb3JkZXIgdG8gbWFrZSBkaXN0IgorCUBmYWxzZQorZW5kaWYKKwpkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRkaXJzLnBtIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRkaXJzLnBt
CmluZGV4IDBjYTQ4OGIyZDU5YzRkYjhiYTdlM2E0YzZjMmY0NmYyYTIxMjRlYjguLjliYTQwNTg2
YTRlY2JlM2U1NWRmYzFlMDA0ZjBlMjA2OWRkMDVlNTggMTAwNzU1Ci0tLSBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0ZGlycy5wbQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdGRpcnMucG0KQEAgLTE2
NzksNiArMTY3OSwxNCBAQCBzdWIgYnVpbGRBdXRvdG9vbHNQcm9qZWN0KCRAKQogICAgIH0KIAog
ICAgIGNoZGlyICIuLiIgb3IgZGllOworCisgICAgaWYgKGlzR3RrKCkpIHsKKyAgICAgICAgbXkg
JHJlbGF0aXZlU2NyaXB0c1BhdGggPSByZWxhdGl2ZVNjcmlwdHNEaXIoKTsKKyAgICAgICAgaWYg
KHN5c3RlbSgiJHJlbGF0aXZlU2NyaXB0c1BhdGgvLi4vZ3RrL2dlbmVyYXRlLWd0a2RvYyAtLXNr
aXAtaHRtbCIpKSB7CisgICAgICAgICAgICBkaWUgIlxuIGd0a2RvYyBkaWQgbm90IGJ1aWxkIHdp
dGhvdXQgd2FybmluZ3NcbiI7CisgICAgICAgIH0KKyAgICB9CisKICAgICByZXR1cm4gMDsKIH0K
IApkaWZmIC0tZ2l0IGEvVG9vbHMvZ3RrL2dlbmVyYXRlLWd0a2RvYyBiL1Rvb2xzL2d0ay9nZW5l
cmF0ZS1ndGtkb2MKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTFhMGE4ZjZmYzg2NTZlZjFhOGZjMzg0YTcyMDcxZDZj
MzYxZmYyYgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL2d0ay9nZW5lcmF0ZS1ndGtkb2MKQEAg
LTAsMCArMSwxMDkgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIyBDb3B5cmlnaHQgKEMpIDIw
MTEgSWdhbGlhIFMuTC4KKyMKKyMgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorIyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisjIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorIyB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorIyBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisjIExpY2Vuc2UgYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyMgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAg
MDIxMTAtMTMwMSAgVVNBCisKK2ltcG9ydCBjb21tb24KK2ltcG9ydCBnbG9iCitpbXBvcnQgZ3Rr
ZG9jCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IG9zLnBhdGgKK2ltcG9ydCBzeXMKKworZGVmIGNv
bmZpZ3VyZV9sb2dnaW5nKCk6CisgICAgbGV2ZWwgPSBsb2dnaW5nLkRFQlVHIGlmICctdicgaW4g
c3lzLmFyZ3YgZWxzZSBsb2dnaW5nLklORk8KKyAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dl
cignZ3RrZG9jJykKKyAgICBsb2dnZXIuc2V0TGV2ZWwobGV2ZWwpCisgICAgaGFuZGxlciA9IGxv
Z2dpbmcuU3RyZWFtSGFuZGxlcigpCisgICAgaGFuZGxlci5zZXRMZXZlbChsZXZlbCkKKyAgICBs
b2dnZXIuYWRkSGFuZGxlcihoYW5kbGVyKQorICAgIGlmIGxldmVsID09IGxvZ2dpbmcuREVCVUc6
CisgICAgICAgIGhhbmRsZXIuc2V0Rm9ybWF0dGVyKGxvZ2dpbmcuRm9ybWF0dGVyKCdbJShhc2N0
aW1lKXNdICAlKG1lc3NhZ2UpcycpKQorICAgIGVsc2U6CisgICAgICAgIGhhbmRsZXIuc2V0Rm9y
bWF0dGVyKGxvZ2dpbmcuRm9ybWF0dGVyKCclKG1lc3NhZ2UpcycpKQorCitkZWYgZ2V0X2NvbW1v
bl9vcHRpb25zKCk6CisgICAgcmV0dXJuIHsKKyAgICAgICAgJ2RlY29yYXRvcic6ICdXRUJLSVRf
QVBJJywKKyAgICAgICAgJ2RlcHJlY2F0aW9uX2d1YXJkJzogJ1dFQktJVF9ESVNBQkxFX0RFUFJF
Q0FURUQnLAorICAgICAgICAnbGlicmFyeV9wYXRoJyA6IGNvbW1vbi5idWlsZF9wYXRoKCcubGli
cycpLAorICAgIH0KKworZGVmIGdldF93ZWJraXQyX29wdGlvbnMoKToKKyAgICBkZWYgZGVyaXZl
ZF9zb3VyY2VzX3BhdGgoKmFyZ3MpOgorICAgICAgICByZXR1cm4gY29tbW9uLmJ1aWxkX3BhdGgo
KigoJ0Rlcml2ZWRTb3VyY2VzJywgJ1dlYktpdDInKSArIGFyZ3MpKQorICAgIGRlZiBzcmNfcGF0
aCgqYXJncyk6CisgICAgICAgIHJldHVybiBjb21tb24udG9wX2xldmVsX3BhdGgoKigoJ1NvdXJj
ZScsICdXZWJLaXQyJywgJ1VJUHJvY2VzcycsICdBUEknLCAnZ3RrJykgKyBhcmdzKSkKKworICAg
IGRlcml2ZWRfc291cmNlcyA9IGNvbW1vbi5idWlsZF9wYXRoKCdEZXJpdmVkU291cmNlcycsICdX
ZWJLaXQyJykKKyAgICBvcHRpb25zID0gZ2V0X2NvbW1vbl9vcHRpb25zKCkuY29weSgpCisgICAg
b3B0aW9ucy51cGRhdGUoeworICAgICAgICAnbW9kdWxlX25hbWUnIDogJ3dlYmtpdDJndGsnLAor
ICAgICAgICAnZG9jX2RpcicgOiBzcmNfcGF0aCgnZG9jcycpLAorICAgICAgICAnb3V0cHV0X2Rp
cicgOiBjb21tb24uYnVpbGRfcGF0aCgnRG9jdW1lbnRhdGlvbicsICd3ZWJraXQyZ3RrJyksCisg
ICAgICAgICdzb3VyY2VfZGlycycgOiBbc3JjX3BhdGgoKV0sCisgICAgICAgICdjZmxhZ3MnIDog
JyAtSScgKyBkZXJpdmVkX3NvdXJjZXNfcGF0aCgnd2Via2l0Mmd0aycsICdpbmNsdWRlJykgKyBc
CisgICAgICAgICAgICAgICAgICAgJyAtSScgKyBkZXJpdmVkX3NvdXJjZXNfcGF0aCgnd2Via2l0
Mmd0aycpICsgXAorICAgICAgICAgICAgICAgICAgICcgLUknICsgZGVyaXZlZF9zb3VyY2VzX3Bh
dGgoJ2luY2x1ZGUnKSArIFwKKyAgICAgICAgICAgICAgICAgICAnIC1JJyArIGNvbW1vbi50b3Bf
bGV2ZWxfcGF0aCgnU291cmNlJykgKyBcCisgICAgICAgICAgICAgICAgICAgJyAtSScgKyBzcmNf
cGF0aCgpLAorICAgICAgICAnaWdub3JlZF9maWxlcyc6IGdsb2IuZ2xvYihzcmNfcGF0aCgnKlBy
aXZhdGUuaCcpKSArIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iLmdsb2Ioc3JjX3Bh
dGgoJ1BhZ2VDbGllbnRJbXBsLionKSkgKyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgZ2xv
Yi5nbG9iKHNyY19wYXRoKCd0ZXN0cy8qLmgnKSkKKyAgICB9KQorICAgIHJldHVybiAoY29tbW9u
LmJ1aWxkX3BhdGgoJ1NvdXJjZScsICdXZWJLaXQyJywgJ3dlYmtpdDJndGstMy4wLnBjJyksIG9w
dGlvbnMpCisKK2RlZiBnZXRfd2Via2l0MV9vcHRpb25zKCk6CisgICAgZGVmIGRlcml2ZWRfc291
cmNlc19wYXRoKCphcmdzKToKKyAgICAgICAgcmV0dXJuIGNvbW1vbi5idWlsZF9wYXRoKCooKCdE
ZXJpdmVkU291cmNlcycsICdXZWJLaXQyJykgKyBhcmdzKSkKKyAgICBkZWYgc3JjX3BhdGgoKmFy
Z3MpOgorICAgICAgICByZXR1cm4gY29tbW9uLnRvcF9sZXZlbF9wYXRoKCooKCdTb3VyY2UnLCAn
V2ViS2l0JywgJ2d0aycpICsgYXJncykpCisKKyAgICBkZXJpdmVkX3NvdXJjZXMgPSBjb21tb24u
YnVpbGRfcGF0aCgnRGVyaXZlZFNvdXJjZXMnLCAnV2ViS2l0MicpCisgICAgb3B0aW9ucyA9IGdl
dF9jb21tb25fb3B0aW9ucygpLmNvcHkoKQorICAgIG9wdGlvbnMudXBkYXRlKHsKKyAgICAgICAg
J21vZHVsZV9uYW1lJyA6ICd3ZWJraXRndGsnLAorICAgICAgICAnZG9jX2RpcicgOiBzcmNfcGF0
aCgnZG9jcycpLAorICAgICAgICAnb3V0cHV0X2RpcicgOiBjb21tb24uYnVpbGRfcGF0aCgnRG9j
dW1lbnRhdGlvbicsICd3ZWJraXRndGsnKSwKKyAgICAgICAgJ3NvdXJjZV9kaXJzJyA6IFtzcmNf
cGF0aCgnd2Via2l0JyksIGNvbW1vbi5idWlsZF9wYXRoKCdTb3VyY2UnLCAnV2ViS2l0JywgJ2d0
aycsICd3ZWJraXQnKV0sCisgICAgICAgICdjZmxhZ3MnIDogJyAtSScgKyBjb21tb24uYnVpbGRf
cGF0aCgnV2ViS2l0JywgJ2d0aycpICsgXAorICAgICAgICAgICAgICAgICAgICcgLUknICsgY29t
bW9uLmJ1aWxkX3BhdGgoJ0Rlcml2ZWRTb3VyY2VzJykgKyBcCisgICAgICAgICAgICAgICAgICAg
JyAtSScgKyBzcmNfcGF0aCgpICsgXAorICAgICAgICAgICAgICAgICAgICcgLUknICsgY29tbW9u
LnRvcF9sZXZlbF9wYXRoKCdTb3VyY2UnKSArIFwKKyAgICAgICAgICAgICAgICAgICAnIC1JJyAr
IGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgnU291cmNlJywgJ0phdmFTY3JpcHRDb3JlJywgJ0Zvcndh
cmRpbmdIZWFkZXJzJyksCisgICAgICAgICdpZ25vcmVkX2ZpbGVzJzogZ2xvYi5nbG9iKHNyY19w
YXRoKCd3ZWJraXQnLCAnKnByaXZhdGUuKicpKQorICAgIH0pCisgICAgcmV0dXJuIChjb21tb24u
YnVpbGRfcGF0aCgnU291cmNlJywgJ1dlYktpdCcsICdndGsnLCAnd2Via2l0Z3RrLTMuMC5wYycp
LCBvcHRpb25zKQorCitjb25maWd1cmVfbG9nZ2luZygpCisKKyMgV2UgbmVlZCB0byBhZGQgdGhl
IEphdmFTY3JpcHRDb3JlIGJ1aWxkIGRpcmVjdG9yeSB0byB0aGUgUEtHX0NPTkZJR19QQVRICisj
IHNvIHRoYXQgcGtnY29uZmlnIGNhbiBwcm9wZXJseSByZXNvbHZlIHRoZSBsaWJqYXZhc2NyaXB0
Y29yZSBkZXBlbmRlbmN5Lgorb3MuZW52aXJvblsnUEtHX0NPTkZJR19QQVRIJ10gPSBjb21tb24u
YnVpbGRfcGF0aCgnU291cmNlJywgJ0phdmFTY3JpcHRDb3JlJykgXAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICArICc6JyArIG9zLmVudmlyb24uZ2V0KCdQS0dfQ09ORklHX1BBVEgn
KQorCitwcmludCAiR2VuZXJhdGluZyBXZWJLaXQxIGRvY3VtZW50YXRpb24uLi4iCitwa2dfY29u
ZmlnX3BhdGgsIG9wdGlvbnMgPSBnZXRfd2Via2l0MV9vcHRpb25zKCkKK2dlbmVyYXRvciA9IGd0
a2RvYy5Qa2dDb25maWdHVEtEb2MocGtnX2NvbmZpZ19wYXRoLCAqKm9wdGlvbnMpCitnZW5lcmF0
b3IuZ2VuZXJhdGUoaHRtbD0nLS1za2lwLWh0bWwnIG5vdCBpbiBzeXMuYXJndikKKworIyBXZWJL
aXQyIG1pZ2h0IG5vdCBiZSBlbmFibGVkLCBzbyBjaGVjayBmb3IgdGhlIHBrZy1jb25maWcgZmls
ZSBiZWZvcmUgYnVpbGRpbmcgZG9jdW1lbnRhdGlvbi4KK2lmIG9zLnBhdGguZXhpc3RzKGNvbW1v
bi5idWlsZF9wYXRoKCdTb3VyY2UnLCAnV2ViS2l0MicsICd3ZWJraXQyZ3RrLTMuMC5wYycpKToK
KyAgICBwcmludCAiXG5HZW5lcmF0aW5nIFdlYktpdDIgZG9jdW1lbnRhdGlvbi4uLiIKKyAgICBw
a2dfY29uZmlnX3BhdGgsIG9wdGlvbnMgPSBnZXRfd2Via2l0Ml9vcHRpb25zKCkKKyAgICBnZW5l
cmF0b3IgPSBndGtkb2MuUGtnQ29uZmlnR1RLRG9jKHBrZ19jb25maWdfcGF0aCwgKipvcHRpb25z
KQorICAgIGdlbmVyYXRvci5nZW5lcmF0ZShodG1sPSctLXNraXAtaHRtbCcgbm90IGluIHN5cy5h
cmd2KQorCitzeXMuZXhpdChnZW5lcmF0b3Iuc2F3X3dhcm5pbmdzKQpkaWZmIC0tZ2l0IGEvVG9v
bHMvZ3RrL2d0a2RvYy5weSBiL1Rvb2xzL2d0ay9ndGtkb2MucHkKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDNmMGQz
MGM2NjljYjIzYTQ5ZTYzNWZkNjU5YTdlNzY1YmNlMzllYgotLS0gL2Rldi9udWxsCisrKyBiL1Rv
b2xzL2d0ay9ndGtkb2MucHkKQEAgLTAsMCArMSwzNzcgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEx
IElnYWxpYSBTLkwuCisjCisjIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyMgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworIyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyMgdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyMgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworIyBMaWNlbnNlIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisjIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAy
MTEwLTEzMDEgIFVTQQorCitpbXBvcnQgZXJybm8KK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgb3MK
K2ltcG9ydCBvcy5wYXRoCitpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0IHN5cworCisKK2NsYXNz
IEdUS0RvYyhvYmplY3QpOgorCisgICAgIiIiQ2xhc3MgdGhhdCBjb250cm9scyBhIGd0a2RvYyBy
dW4uCisKKyAgICBFYWNoIGluc3RhbmNlIG9mIHRoaXMgY2xhc3MgcmVwcmVzZW50cyBvbmUgZ3Rr
ZG9jIGNvbmZpZ3VyYXRpb24KKyAgICBhbmQgc2V0IG9mIGRvY3VtZW50YXRpb24uIFRoZSBndGtk
b2MgcGFja2FnZSBpcyBhIHNlcmllcyBvZiB0b29scworICAgIHJ1biBjb25zZWN1dGl2ZWx5IHdo
aWNoIGNvbnZlcnRzIGlubGluZSBDL0MrKyBkb2N1bWVudGF0aW9uIGludG8KKyAgICBkb2Nib29r
IGZpbGVzIGFuZCB0aGVuIGludG8gSFRNTC4gVGhpcyBjbGFzcyBpcyBzdWl0YWJsZSBmb3IKKyAg
ICBnZW5lcmF0aW5nIGRvY3VtZW50YXRpb24gb3Igc2ltcGx5IHZlcmlmeWluZyBjb3JyZWN0bmVz
cy4KKworICAgIEtleXdvcmQgYXJndW1lbnRzOgorICAgIG91dHB1dF9kaXIgICAgICAgICAtLSBU
aGUgcGF0aCB3aGVyZSBndGtkb2Mgb3V0cHV0IHNob3VsZCBiZSBwbGFjZWQuIEdlbmVyYXRpb24K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgbWF5IG92ZXJ3cml0ZSBmaWxlIGluIHRoaXMgZGly
ZWN0b3J5LiBSZXF1aXJlZC4KKyAgICBtb2R1bGVfbmFtZSAgICAgICAgLS0gVGhlIG5hbWUgb2Yg
dGhlIGRvY3VtZW50YXRpb24gbW9kdWxlLiBGb3IgbGlicmFyaWVzIHRoaXMKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgaXMgdHlwaWNhbGx5IHRoZSBsaWJyYXJ5IG5hbWUuIFJlcXVpcmVkIGlm
IG5vdCBsaWJyYXJ5IHBhdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgZ2l2ZW4uCisg
ICAgc291cmNlX2RpcnMgICAgICAgIC0tIEEgbGlzdCBvZiBwYXRocyB0byB0aGUgc291cmNlIGNv
ZGUgdG8gYmUgc2Nhbm5lZC4gUmVxdWlyZWQuCisgICAgaWdub3JlZF9maWxlcyAgICAgIC0tIEEg
bGlzdCBvZiBmaWxlbmFtZXMgdG8gaWdub3JlIGluIHRoZSBzb3VyY2UgZGlyZWN0b3J5LiBJdCBp
cworICAgICAgICAgICAgICAgICAgICAgICAgICBvbmx5IG5lY2Vzc2FyeSB0byBwcm92aWRlIHRo
ZSBiYXNlbmFtZXMgb2YgdGhlc2UgZmlsZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgIFR5
cGljYWxseSBpdCBpcyBpbXBvcnRhbnQgdG8gcHJvdmlkZSBhbiB1cGRhdGVkIGxpc3Qgb2YKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlZCBmaWxlcyB0byBwcmV2ZW50IHdhcm5pbmdz
IGFib3V0IHVuZG9jdW1lbnRlZCBzeW1ib2xzLgorICAgIGRlY29yYXRvciAgICAgICAgICAtLSBJ
ZiBhIGRlY29yYXRvciBpcyB1c2VkIHRvIHVuaGlkZSBjZXJ0YWluIHN5bWJvbHMgaW4gaGVhZGVy
CisgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzIHRoaXMgcGFyYW1ldGVyIGlzIHJlcXVp
cmVkIGZvciBzdWNjZXNzZnVsIHNjYW5uaW5nLgorICAgICAgICAgICAgICAgICAgICAgICAgICAo
ZGVmYXVsdCAnJykKKyAgICBkZXByZWNhdGlvbl9ndWFyZCAgLS0gZ3RrZG9jIHRyaWVzIHRvIGVu
c3VyZSB0aGF0IHN5bWJvbHMgbWFya2VkIGFzIGRlcHJlY2F0ZWQKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgYXJlIGVuY2FzZWQgaW4gdGhpcyBDIHByZXByb2Nlc3NvciBkZWZpbmUuIFRoaXMg
aXMgcmVxdWlyZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gYXZvaWQgZ3RrZG9jIHdh
cm5pbmdzLiAoZGVmYXVsdCAnJykKKyAgICBjZmxhZ3MgICAgICAgICAgICAgLS0gVGhpcyBwYXJh
bWV0ZXIgc3BlY2lmaWVzIGFueSBwcmVwcm9jZXNzb3IgZmxhZ3MgbmVjZXNzYXJ5IGZvcgorICAg
ICAgICAgICAgICAgICAgICAgICAgICBidWlsZGluZyB0aGUgc2Nhbm5lciBiaW5hcnkgZHVyaW5n
IGd0a2RvYy1zY2Fub2JqLiBUeXBpY2FsbHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdGhp
cyBpbmNsdWRlcyBhbGwgYWJzb2x1dGUgaW5jbHVkZSBwYXRocyBuZWNlc3NhcnkgdG8gcmVzb2x2
ZQorICAgICAgICAgICAgICAgICAgICAgICAgICBhbGwgaGVhZGVyIGRlcGVuZGVuY2llcy4gKGRl
ZmF1bHQgJycpCisgICAgbGRmbGFncyAgICAgICAgICAgIC0tIFRoaXMgcGFyYW1ldGVyIHNwZWNp
ZmllcyBhbnkgbGlua2VyIGZsYWdzIG5lY2Vzc2FyeSBmb3IKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgYnVpbGRpbmcgdGhlIHNjYW5uZXIgYmluYXJ5IGR1cmluZyBndGtkb2Mtc2Nhbm9iai4g
VHlwaWNhbGx5CisgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgaW5jbHVkZXMgIi1seW91
cmxpYnJhcnluYW1lIi4gKGRlZmF1bHQgJycpCisgICAgbGlicmFyeV9wYXRoICAgICAgIC0tIFRo
aXMgcGFyYW1ldGVyIHNwZWNpZmllcyB0aGUgcGF0aCB0byB0aGUgZGlyZWN0b3J5IHdoZXJlIHlv
dQorICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJ5IHJlc2lkZXMgdXNlZCBmb3IgYnVp
bGRpbmcgdGhlIHNjYW5uZXIgYmluYXJ5IGR1cmluZworICAgICAgICAgICAgICAgICAgICAgICAg
ICBndGtkb2Mtc2Nhbm9iai4gKGRlZmF1bHQgJycpCisKKyAgICBkb2NfZGlyICAgICAgICAgICAg
LS0gVGhlIHBhdGggdG8gb3RoZXIgZG9jdW1lbnRhdGlvbiBmaWxlcyBuZWNlc3NhcnkgdG8gYnVp
bGQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGRvY3VtZW50YXRpb24uIFRoaXMgZmls
ZXMgaW4gdGhpcyBkaXJlY3RvcnkgYXMgd2VsbCBhcworICAgICAgICAgICAgICAgICAgICAgICAg
ICB0aGUgZmlsZXMgaW4gdGhlICdodG1sJyBzdWJkaXJlY3Rvcnkgd2lsbCBiZSBjb3BpZWQKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVjdXJzaXZlbHkgaW50byB0aGUgb3V0cHV0IGRpcmVj
dG9yeS4gKGRlZmF1bHQgJycpCisgICAgbWFpbl9zZ21sX2ZpbGUgICAgIC0tIFRoZSBwYXRoIG9y
IG5hbWUgKGlmIGEgZG9jX2RpciBpcyBnaXZlbikgb2YgdGhlIFNHTUwgZmlsZQorICAgICAgICAg
ICAgICAgICAgICAgICAgICB0aGF0IGlzIHRoZSBjb25zaWRlcmVkIHRoZSBtYWluIHBhZ2Ugb2Yg
eW91ciBkb2N1bWVudGF0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVmYXVsdDog
PG1vZHVsZV9uYW1lPi1kb2NzLnNnbWwpCisgICAgdmVyc2lvbiAgICAgICAgICAgIC0tIFRoZSB2
ZXJzaW9uIG51bWJlciBvZiB0aGUgbW9kdWxlLiBJZiB0aGlzIGlzIHByb3ZpZGVkLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICBhIHZlcnNpb24ueG1sIGZpbGUgY29udGFpbmluZyB0aGUgdmVy
c2lvbiB3aWxsIGJlIGNyZWF0ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gdGhlIG91
dHB1dCBkaXJlY3RvcnkgZHVyaW5nIGRvY3VtZW50YXRpb24gZ2VuZXJhdGlvbi4KKworICAgIGlu
dGVyYWN0aXZlICAgICAgICAtLSBXaGV0aGVyIG9yIG5vdCBlcnJvcnMgb3Igd2FybmluZ3Mgc2hv
dWxkIHByb21wdCB0aGUgdXNlcgorICAgICAgICAgICAgICAgICAgICAgICAgICB0byBjb250aW51
ZSBvciBub3QuIFdoZW4gdGhpcyB2YWx1ZSBpcyBmYWxzZSwgZ2VuZXJhdGlvbgorICAgICAgICAg
ICAgICAgICAgICAgICAgICB3aWxsIGNvbnRpbnVlIGRlc3BpdGUgd2FybmluZ3MuIChkZWZhdWx0
IEZhbHNlKQorICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsICoqYXJncyk6CisKKyAg
ICAgICAgIyBQYXJhbWV0ZXJzIHNwZWNpZmljIHRvIHNjYW5uaW5nLgorICAgICAgICBzZWxmLm1v
ZHVsZV9uYW1lID0gJycKKyAgICAgICAgc2VsZi5zb3VyY2VfZGlycyA9IFtdCisgICAgICAgIHNl
bGYuaWdub3JlZF9maWxlcyA9IFtdCisgICAgICAgIHNlbGYuZGVjb3JhdG9yID0gJycKKyAgICAg
ICAgc2VsZi5kZXByZWNhdGlvbl9ndWFyZCA9ICcnCisKKyAgICAgICAgIyBQYXJhbWV0ZXJzIHNw
ZWNpZmljIHRvIGd0a2RvYy1zY2Fub2JqLgorICAgICAgICBzZWxmLmNmbGFncyA9ICcnCisgICAg
ICAgIHNlbGYubGRmbGFncyA9ICcnCisgICAgICAgIHNlbGYubGlicmFyeV9wYXRoID0gJycKKwor
ICAgICAgICAjIFBhcmFtZXRlcnMgc3BlY2lmaWMgdG8gZ2VuZXJhdGlvbi4KKyAgICAgICAgc2Vs
Zi5vdXRwdXRfZGlyID0gJycKKyAgICAgICAgc2VsZi5kb2NfZGlyID0gJycKKyAgICAgICAgc2Vs
Zi5tYWluX3NnbWxfZmlsZSA9ICcnCisKKyAgICAgICAgc2VsZi5pbnRlcmFjdGl2ZSA9IEZhbHNl
CisKKyAgICAgICAgc2VsZi5sb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcignZ3RrZG9jJykKKwor
ICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBhcmdzLml0ZXJpdGVtcygpOgorICAgICAgICAgICAg
c2V0YXR0cihzZWxmLCBrZXksIHZhbHVlKQorCisgICAgICAgIGRlZiByYWlzZV9lcnJvcl9pZl9u
b3Rfc3BlY2lmaWVkKGtleSk6CisgICAgICAgICAgICBpZiBub3QgZ2V0YXR0cihzZWxmLCBrZXkp
OgorICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignJXMgbm90IHNwZWNpZmllZC4nICUg
a2V5KQorCisgICAgICAgIHJhaXNlX2Vycm9yX2lmX25vdF9zcGVjaWZpZWQoJ291dHB1dF9kaXIn
KQorICAgICAgICByYWlzZV9lcnJvcl9pZl9ub3Rfc3BlY2lmaWVkKCdzb3VyY2VfZGlycycpCisg
ICAgICAgIHJhaXNlX2Vycm9yX2lmX25vdF9zcGVjaWZpZWQoJ21vZHVsZV9uYW1lJykKKworICAg
ICAgICAjIE1ha2UgYWxsIHBhdGhzIGFic29sdXRlIGluIGNhc2Ugd2Ugd2VyZSBwYXNzZWQgcmVs
YXRpdmUgcGF0aHMsIHNpbmNlCisgICAgICAgICMgd2UgY2hhbmdlIHRoZSBjdXJyZW50IHdvcmtp
bmcgZGlyZWN0b3J5IHdoZW4gZXhlY3V0aW5nIHN1YmNvbW1hbmRzLgorICAgICAgICBzZWxmLm91
dHB1dF9kaXIgPSBvcy5wYXRoLmFic3BhdGgoc2VsZi5vdXRwdXRfZGlyKQorICAgICAgICBzZWxm
LnNvdXJjZV9kaXJzID0gW29zLnBhdGguYWJzcGF0aCh4KSBmb3IgeCBpbiBzZWxmLnNvdXJjZV9k
aXJzXQorICAgICAgICBpZiBzZWxmLmxpYnJhcnlfcGF0aDoKKyAgICAgICAgICAgIHNlbGYubGli
cmFyeV9wYXRoID0gb3MucGF0aC5hYnNwYXRoKHNlbGYubGlicmFyeV9wYXRoKQorCisgICAgICAg
IGlmIG5vdCBzZWxmLm1haW5fc2dtbF9maWxlOgorICAgICAgICAgICAgc2VsZi5tYWluX3NnbWxf
ZmlsZSA9IHNlbGYubW9kdWxlX25hbWUgKyAiLWRvY3Muc2dtbCIKKworICAgIGRlZiBnZW5lcmF0
ZShzZWxmLCBodG1sPVRydWUpOgorICAgICAgICBzZWxmLnNhd193YXJuaW5ncyA9IEZhbHNlCisK
KyAgICAgICAgc2VsZi5fY29weV9kb2NfZmlsZXNfdG9fb3V0cHV0X2RpcihodG1sKQorICAgICAg
ICBzZWxmLl93cml0ZV92ZXJzaW9uX3htbCgpCisgICAgICAgIHNlbGYuX3J1bl9ndGtkb2Nfc2Nh
bigpCisgICAgICAgIHNlbGYuX3J1bl9ndGtkb2Nfc2NhbmdvYmooKQorICAgICAgICBzZWxmLl9y
dW5fZ3RrZG9jX21rdG1wbCgpCisgICAgICAgIHNlbGYuX3J1bl9ndGtkb2NfbWtkYigpCisKKyAg
ICAgICAgaWYgbm90IGh0bWw6CisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBzZWxmLl9y
dW5fZ3RrZG9jX21raHRtbCgpCisgICAgICAgIHNlbGYuX3J1bl9ndGtkb2NfZml4eHJlZigpCisK
KyAgICBkZWYgX2RlbGV0ZV9maWxlX2lmX2V4aXN0cyhzZWxmLCBwYXRoKToKKyAgICAgICAgaWYg
bm90IG9zLmFjY2VzcyhwYXRoLCBvcy5GX09LIHwgb3MuUl9PSyk6CisgICAgICAgICAgICByZXR1
cm4KKyAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoJ2RlbGV0aW5nICVzJywgcGF0aCkKKyAgICAg
ICAgb3MudW5saW5rKHBhdGgpCisKKyAgICBkZWYgX2NyZWF0ZV9kaXJlY3RvcnlfaWZfbm9uZXhp
c3RlbnQoc2VsZiwgcGF0aCk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG9zLm1ha2VkaXJz
KHBhdGgpCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycm9yOgorICAgICAgICAgICAgaWYg
ZXJyb3IuZXJybm8gIT0gZXJybm8uRUVYSVNUOgorICAgICAgICAgICAgICAgIHJhaXNlCisKKyAg
ICBkZWYgX3JhaXNlX2V4Y2VwdGlvbl9pZl9maWxlX2luYWNjZXNzaWJsZShzZWxmLCBwYXRoKToK
KyAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHBhdGgpIG9yIG5vdCBvcy5hY2Nlc3MocGF0
aCwgb3MuUl9PSyk6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIkNvdWxkIG5vdCBhY2Nl
c3MgZmlsZSBhdDogJXMiICUgcGF0aCkKKworICAgIGRlZiBfb3V0cHV0X2hhc193YXJuaW5ncyhz
ZWxmLCBvdXRwdXRzKToKKyAgICAgICAgZm9yIG91dHB1dCBpbiBvdXRwdXRzOgorICAgICAgICAg
ICAgaWYgb3V0cHV0IGFuZCBvdXRwdXQuZmluZCgnd2FybmluZycpOgorICAgICAgICAgICAgICAg
IHJldHVybiBUcnVlCisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIF9hc2tfeWVzX29y
X25vX3F1ZXN0aW9uKHNlbGYsIHF1ZXN0aW9uKToKKyAgICAgICAgaWYgbm90IHNlbGYuaW50ZXJh
Y3RpdmU6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgICAgIHF1ZXN0aW9uICs9ICcg
W3kvTl0gJworICAgICAgICBhbnN3ZXIgPSBOb25lCisgICAgICAgIHdoaWxlIGFuc3dlciAhPSAn
eScgYW5kIGFuc3dlciAhPSAnbicgYW5kIGFuc3dlciAhPSAnJzoKKyAgICAgICAgICAgIGFuc3dl
ciA9IHJhd19pbnB1dChxdWVzdGlvbikubG93ZXIoKQorICAgICAgICByZXR1cm4gYW5zd2VyID09
ICd5JworCisgICAgZGVmIF9ydW5fY29tbWFuZChzZWxmLCBhcmdzLCBlbnY9Tm9uZSwgY3dkPU5v
bmUsIHByaW50X291dHB1dD1UcnVlKToKKyAgICAgICAgaWYgcHJpbnRfb3V0cHV0OgorICAgICAg
ICAgICAgc2VsZi5sb2dnZXIuaW5mbygiUnVubmluZyAlcyIsIGFyZ3NbMF0pCisgICAgICAgIHNl
bGYubG9nZ2VyLmRlYnVnKCJGdWxsIGNvbW1hbmQgYXJnczogJXMiLCBzdHIoYXJncykpCisKKyAg
ICAgICAgcHJvY2VzcyA9IHN1YnByb2Nlc3MuUG9wZW4oYXJncywgZW52PWVudiwgY3dkPWN3ZCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQ
RSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3Mu
UElQRSkKKyAgICAgICAgc3Rkb3V0LCBzdGRlcnIgPSBwcm9jZXNzLmNvbW11bmljYXRlKCkKKwor
ICAgICAgICBpZiBwcmludF9vdXRwdXQ6CisgICAgICAgICAgICBpZiBzdGRvdXQ6CisgICAgICAg
ICAgICAgICAgc3lzLnN0ZG91dC53cml0ZShzdGRvdXQpCisgICAgICAgICAgICBpZiBzdGRlcnI6
CisgICAgICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZShzdGRlcnIpCisKKyAgICAgICAgaWYg
cHJvY2Vzcy5yZXR1cm5jb2RlICE9IDA6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJyVz
IHByb2R1Y2VkIGEgbm9uLXplcm8gcmV0dXJuIGNvZGUgJWknCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICUgKGFyZ3NbMF0sIHByb2Nlc3MucmV0dXJuY29kZSkpCisKKyAgICAgICAgaWYg
J3dhcm5pbmcnIGluIHN0ZGVyciBvciAnd2FybmluZycgaW4gc3Rkb3V0OgorICAgICAgICAgICAg
c2VsZi5zYXdfd2FybmluZ3MgPSBUcnVlCisgICAgICAgICAgICBpZiBub3Qgc2VsZi5fYXNrX3ll
c19vcl9ub19xdWVzdGlvbignJXMgcHJvZHVjZWQgd2FybmluZ3MsICcKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0cnkgdG8gY29udGludWU/JyAlIGFy
Z3NbMF0pOgorICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignJXMgc3RlcCBmYWlsZWQn
ICUgYXJnc1swXSkKKworICAgICAgICByZXR1cm4gc3Rkb3V0LnN0cmlwKCkKKworICAgIGRlZiBf
Y29weV9kb2NfZmlsZXNfdG9fb3V0cHV0X2RpcihzZWxmLCBodG1sPVRydWUpOgorICAgICAgICBp
ZiBub3Qgc2VsZi5kb2NfZGlyOgorICAgICAgICAgICAgc2VsZi5sb2dnZXIuaW5mbygnTm90IGNv
cHlpbmcgYW55IGZpbGVzIGZyb20gZG9jIGRpcmVjdG9yeSwnCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICcgYmVjYXVzZSBubyBkb2MgZGlyZWN0b3J5IGdpdmVuLicpCisgICAgICAgICAg
ICByZXR1cm4KKworICAgICAgICBkZWYgY29weV9maWxlX3JlcGxhY2luZ19leGlzdGluZyhzcmMs
IGRlc3QpOgorICAgICAgICAgICAgaWYgb3MucGF0aC5pc2RpcihzcmMpOgorICAgICAgICAgICAg
ICAgIHNlbGYubG9nZ2VyLmRlYnVnKCdza2lwcGVkIGRpcmVjdG9yeSAlcycsICBzcmMpCisgICAg
ICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICBpZiBub3Qgb3MuYWNjZXNzKHNyYywgb3Mu
Rl9PSyB8IG9zLlJfT0spOgorICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCdza2lw
cGVkIHVucmVhZGFibGUgJXMnLCBzcmMpCisgICAgICAgICAgICAgICAgcmV0dXJuCisKKyAgICAg
ICAgICAgIHNlbGYuX2RlbGV0ZV9maWxlX2lmX2V4aXN0cyhkZXN0KQorCisgICAgICAgICAgICBz
ZWxmLmxvZ2dlci5kZWJ1ZygnY3JlYXRlZCAlcycsIGRlc3QpCisgICAgICAgICAgICBvcy5saW5r
KHNyYywgZGVzdCkKKworICAgICAgICBkZWYgY29weV9hbGxfZmlsZXNfaW5fZGlyZWN0b3J5KHNy
YywgZGVzdCk6CisgICAgICAgICAgICBmb3IgcGF0aCBpbiBvcy5saXN0ZGlyKHNyYyk6CisgICAg
ICAgICAgICAgICAgY29weV9maWxlX3JlcGxhY2luZ19leGlzdGluZyhvcy5wYXRoLmpvaW4oc3Jj
LCBwYXRoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9z
LnBhdGguam9pbihkZXN0LCBwYXRoKSkKKworICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCdDb3B5
aW5nIHRlbXBsYXRlIGZpbGVzIHRvIG91dHB1dCBkaXJlY3RvcnkuLi4nKQorICAgICAgICBzZWxm
Ll9jcmVhdGVfZGlyZWN0b3J5X2lmX25vbmV4aXN0ZW50KHNlbGYub3V0cHV0X2RpcikKKyAgICAg
ICAgY29weV9hbGxfZmlsZXNfaW5fZGlyZWN0b3J5KHNlbGYuZG9jX2Rpciwgc2VsZi5vdXRwdXRf
ZGlyKQorCisgICAgICAgIGlmIG5vdCBodG1sOgorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAg
ICAgc2VsZi5sb2dnZXIuaW5mbygnQ29weWluZyBIVE1MIGZpbGVzIHRvIG91dHB1dCBkaXJlY3Rv
cnkuLi4nKQorICAgICAgICBodG1sX3NyY19kaXIgPSBvcy5wYXRoLmpvaW4oc2VsZi5kb2NfZGly
LCAnaHRtbCcpCisgICAgICAgIGh0bWxfZGVzdF9kaXIgPSBvcy5wYXRoLmpvaW4oc2VsZi5vdXRw
dXRfZGlyLCAnaHRtbCcpCisgICAgICAgIHNlbGYuX2NyZWF0ZV9kaXJlY3RvcnlfaWZfbm9uZXhp
c3RlbnQoaHRtbF9kZXN0X2RpcikKKworICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhodG1sX3Ny
Y19kaXIpOgorICAgICAgICAgICAgY29weV9hbGxfZmlsZXNfaW5fZGlyZWN0b3J5KGh0bWxfc3Jj
X2RpciwgaHRtbF9kZXN0X2RpcikKKworICAgIGRlZiBfd3JpdGVfdmVyc2lvbl94bWwoc2VsZik6
CisgICAgICAgIGlmIG5vdCBzZWxmLnZlcnNpb246CisgICAgICAgICAgICBzZWxmLmxvZ2dlci5p
bmZvKCdObyB2ZXJzaW9uIHNwZWNpZmllZCwgc28gbm90IHdyaXRpbmcgdmVyc2lvbi54bWwnKQor
ICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgdmVyc2lvbl94bWxfcGF0aCA9IG9zLnBhdGgu
am9pbihzZWxmLm91dHB1dF9kaXIsICd2ZXJzaW9uLnhtbCcpCisgICAgICAgIHNyY192ZXJzaW9u
X3htbF9wYXRoID0gb3MucGF0aC5qb2luKHNlbGYuZG9jX2RpciwgJ3ZlcnNpb24ueG1sJykKKwor
ICAgICAgICAjIERvbid0IG92ZXJ3cml0ZSB2ZXJzaW9uLnhtbCBpZiBpdCB3YXMgaW4gdGhlIGRv
YyBkaXJlY3RvcnkuCisgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHZlcnNpb25feG1sX3BhdGgp
IGFuZCBcCisgICAgICAgICAgIG9zLnBhdGguZXhpc3RzKHNyY192ZXJzaW9uX3htbF9wYXRoKToK
KyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIG91dHB1dF9maWxlID0gb3Blbih2ZXJzaW9u
X3htbF9wYXRoLCAndycpCisgICAgICAgIG91dHB1dF9maWxlLndyaXRlKHNlbGYudmVyc2lvbikK
KyAgICAgICAgb3V0cHV0X2ZpbGUuY2xvc2UoKQorCisgICAgZGVmIF9ydW5fZ3RrZG9jX3NjYW4o
c2VsZik6CisgICAgICAgIGFyZ3MgPSBbJ2d0a2RvYy1zY2FuJywKKyAgICAgICAgICAgICAgICAn
LS1tb2R1bGU9JXMnICUgc2VsZi5tb2R1bGVfbmFtZSwKKyAgICAgICAgICAgICAgICAnLS1yZWJ1
aWxkLXR5cGVzJ10KKworICAgICAgICAjIEVhY2ggc291cmNlIGRpcmVjdG9yeSBzaG91bGQgYmUg
aGF2ZSBpdHMgb3duICItLXNvdXJjZS1kaXI9IiBwcmVmaXguCisgICAgICAgIGFyZ3MuZXh0ZW5k
KFsnLS1zb3VyY2UtZGlyPSVzJyAlIHBhdGggZm9yIHBhdGggaW4gc2VsZi5zb3VyY2VfZGlyc10p
CisKKyAgICAgICAgaWYgc2VsZi5kZWNvcmF0b3I6CisgICAgICAgICAgICBhcmdzLmFwcGVuZCgn
LS1pZ25vcmUtZGVjb3JhdG9ycz0lcycgJSBzZWxmLmRlY29yYXRvcikKKyAgICAgICAgaWYgc2Vs
Zi5kZXByZWNhdGlvbl9ndWFyZDoKKyAgICAgICAgICAgIGFyZ3MuYXBwZW5kKCctLWRlcHJlY2F0
ZWQtZ3VhcmRzPSVzJyAlIHNlbGYuZGVwcmVjYXRpb25fZ3VhcmQpCisgICAgICAgIGlmIHNlbGYu
b3V0cHV0X2RpcjoKKyAgICAgICAgICAgIGFyZ3MuYXBwZW5kKCctLW91dHB1dC1kaXI9JXMnICUg
c2VsZi5vdXRwdXRfZGlyKQorCisgICAgICAgICMgZ3RrZG9jLXNjYW4gd2FudHMgdGhlIGJhc2Vu
YW1lcyBvZiBpZ25vcmVkIGhlYWRlcnMsIHNvIHN0cmlwIHRoZQorICAgICAgICAjIGRpcm5hbWUu
IERpZmZlcmVudCBmcm9tICItLXNvdXJjZS1kaXIiLCB0aGUgaGVhZGVycyBzaG91bGQgYmUKKyAg
ICAgICAgIyBzcGVjaWZpZWQgYXMgb25lIGxvbmcgc3RyaW5nLgorICAgICAgICBpZiBzZWxmLmln
bm9yZWRfZmlsZXM6CisgICAgICAgICAgICBpZ25vcmVkX2ZpbGVzX2Jhc2VuYW1lcyA9IFwKKyAg
ICAgICAgICAgICAgICBbb3MucGF0aC5iYXNlbmFtZSh4KSBmb3IgeCBpbiBzZWxmLmlnbm9yZWRf
ZmlsZXNdCisgICAgICAgICAgICBhcmdzLmFwcGVuZCgnLS1pZ25vcmUtaGVhZGVycz0lcycgJSAn
ICcuam9pbihpZ25vcmVkX2ZpbGVzX2Jhc2VuYW1lcykpCisKKyAgICAgICAgc2VsZi5fcnVuX2Nv
bW1hbmQoYXJncykKKworICAgIGRlZiBfcnVuX2d0a2RvY19zY2FuZ29iaihzZWxmKToKKyAgICAg
ICAgZW52ID0gb3MuZW52aXJvbgorICAgICAgICBsZGZsYWdzID0gc2VsZi5sZGZsYWdzCisgICAg
ICAgIGlmIHNlbGYubGlicmFyeV9wYXRoOgorICAgICAgICAgICAgbGRmbGFncyA9ICcgIi1MJXMi
ICcgJSBzZWxmLmxpYnJhcnlfcGF0aCArIGxkZmxhZ3MKKyAgICAgICAgICAgIGN1cnJlbnRfbGRf
bGlicmFyeV9wYXRoID0gZW52LmdldCgnTERfTElCUkFSWV9QQVRIJykKKyAgICAgICAgICAgIGlm
IGN1cnJlbnRfbGRfbGlicmFyeV9wYXRoOgorICAgICAgICAgICAgICAgIGVudlsnUlVOJ10gPSAn
TERfTElCUkFSWV9QQVRIPSIlczolcyIgJyAlIChzZWxmLmxpYnJhcnlfcGF0aCwgY3VycmVudF9s
ZF9saWJyYXJ5X3BhdGgpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGVudlsn
UlVOJ10gPSAnTERfTElCUkFSWV9QQVRIPSIlcyIgJyAlIHNlbGYubGlicmFyeV9wYXRoCisKKyAg
ICAgICAgaWYgbGRmbGFnczoKKyAgICAgICAgICAgIGVudlsnTERGTEFHUyddID0gbGRmbGFncwor
ICAgICAgICBpZiBzZWxmLmNmbGFnczoKKyAgICAgICAgICAgIGVudlsnQ0ZMQUdTJ10gPSBzZWxm
LmNmbGFncworCisgICAgICAgIGlmICdDRkxBR1MnIGluIGVudjoKKyAgICAgICAgICAgIHNlbGYu
bG9nZ2VyLmRlYnVnKCdDRkxBR1M9JXMnLCBlbnZbJ0NGTEFHUyddKQorICAgICAgICBpZiAnTERG
TEFHUycgaW4gZW52OgorICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoJ0xERkxBR1MgJXMn
LCBlbnZbJ0xERkxBR1MnXSkKKyAgICAgICAgaWYgJ1JVTicgaW4gZW52OgorICAgICAgICAgICAg
c2VsZi5sb2dnZXIuZGVidWcoJ1JVTj0lcycsIGVudlsnUlVOJ10pCisgICAgICAgIHNlbGYuX3J1
bl9jb21tYW5kKFsnZ3RrZG9jLXNjYW5nb2JqJywgJy0tbW9kdWxlPSVzJyAlIHNlbGYubW9kdWxl
X25hbWVdLAorICAgICAgICAgICAgICAgICAgICAgICAgICBlbnY9ZW52LCBjd2Q9c2VsZi5vdXRw
dXRfZGlyKQorCisgICAgZGVmIF9ydW5fZ3RrZG9jX21rdG1wbChzZWxmKToKKyAgICAgICAgYXJn
cyA9IFsnZ3RrZG9jLW1rdG1wbCcsICctLW1vZHVsZT0lcycgJSBzZWxmLm1vZHVsZV9uYW1lXQor
ICAgICAgICBzZWxmLl9ydW5fY29tbWFuZChhcmdzLCBjd2Q9c2VsZi5vdXRwdXRfZGlyKQorCisg
ICAgZGVmIF9ydW5fZ3RrZG9jX21rZGIoc2VsZik6CisgICAgICAgIHNnbWxfZmlsZSA9IG9zLnBh
dGguam9pbihzZWxmLm91dHB1dF9kaXIsIHNlbGYubWFpbl9zZ21sX2ZpbGUpCisgICAgICAgIHNl
bGYuX3JhaXNlX2V4Y2VwdGlvbl9pZl9maWxlX2luYWNjZXNzaWJsZShzZ21sX2ZpbGUpCisKKyAg
ICAgICAgYXJncyA9IFsnZ3RrZG9jLW1rZGInLAorICAgICAgICAgICAgICAgICctLW1vZHVsZT0l
cycgJSBzZWxmLm1vZHVsZV9uYW1lLAorICAgICAgICAgICAgICAgICctLW1haW4tc2dtbC1maWxl
PSVzJyAlIHNnbWxfZmlsZSwKKyAgICAgICAgICAgICAgICAnLS1zb3VyY2Utc3VmZml4ZXM9aCxj
LGNwcCxjYycsCisgICAgICAgICAgICAgICAgJy0tb3V0cHV0LWZvcm1hdD14bWwnLAorICAgICAg
ICAgICAgICAgICctLXNnbWwtbW9kZSddCisKKyAgICAgICAgIyBFYWNoIGRpcmVjdG9yeSBzaG91
bGQgYmUgaGF2ZSBpdHMgb3duICItLXNvdXJjZS1kaXI9IiBwcmVmaXguCisgICAgICAgIGFyZ3Mu
ZXh0ZW5kKFsnLS1zb3VyY2UtZGlyPSVzJyAlIHBhdGggZm9yIHBhdGggaW4gc2VsZi5zb3VyY2Vf
ZGlyc10pCisgICAgICAgIHNlbGYuX3J1bl9jb21tYW5kKGFyZ3MsIGN3ZD1zZWxmLm91dHB1dF9k
aXIpCisKKyAgICBkZWYgX3J1bl9ndGtkb2NfbWtodG1sKHNlbGYpOgorICAgICAgICBodG1sX2Rl
c3RfZGlyID0gb3MucGF0aC5qb2luKHNlbGYub3V0cHV0X2RpciwgJ2h0bWwnKQorICAgICAgICBp
ZiBub3Qgb3MucGF0aC5pc2RpcihodG1sX2Rlc3RfZGlyKToKKyAgICAgICAgICAgIHJhaXNlIEV4
Y2VwdGlvbigiJXMgaXMgbm90IGEgZGlyZWN0b3J5LCBjb3VsZCBub3QgZ2VuZXJhdGUgSFRNTCIK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIGh0bWxfZGVzdF9kaXIpCisgICAgICAgIGVs
aWYgbm90IG9zLmFjY2VzcyhodG1sX2Rlc3RfZGlyLCBvcy5YX09LIHwgb3MuUl9PSyB8IG9zLldf
T0spOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJDb3VsZCBub3QgYWNjZXNzICVzIHRv
IGdlbmVyYXRlIEhUTUwiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSBodG1sX2Rlc3Rf
ZGlyKQorCisgICAgICAgICMgZ3RrZG9jLW1raHRtbCBleHBlY3RzIHRoZSBTR01MIHBhdGggdG8g
YmUgYWJzb2x1dGUuCisgICAgICAgIHNnbWxfZmlsZSA9IG9zLnBhdGguam9pbihvcy5wYXRoLmFi
c3BhdGgoc2VsZi5vdXRwdXRfZGlyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNlbGYubWFpbl9zZ21sX2ZpbGUpCisgICAgICAgIHNlbGYuX3JhaXNlX2V4Y2VwdGlvbl9pZl9m
aWxlX2luYWNjZXNzaWJsZShzZ21sX2ZpbGUpCisKKyAgICAgICAgc2VsZi5fcnVuX2NvbW1hbmQo
WydndGtkb2MtbWtodG1sJywgc2VsZi5tb2R1bGVfbmFtZSwgc2dtbF9maWxlXSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgY3dkPWh0bWxfZGVzdF9kaXIpCisKKyAgICBkZWYgX3J1bl9ndGtk
b2NfZml4eHJlZihzZWxmKToKKyAgICAgICAgc2VsZi5fcnVuX2NvbW1hbmQoWydndGtkb2MtZml4
eHJlZicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1tb2R1bGUtZGlyPWh0bWwnLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0taHRtbC1kaXI9aHRtbCddLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICBjd2Q9c2VsZi5vdXRwdXRfZGlyKQorCisKK2NsYXNzIFBrZ0NvbmZp
Z0dUS0RvYyhHVEtEb2MpOgorCisgICAgIiIiQ2xhc3MgcmVhZHMgYSBsaWJyYXJ5J3MgcGtnY29u
ZmlnIGZpbGUgdG8gZ3Vlc3MgZ3RrZG9jIHBhcmFtZXRlcnMuCisKKyAgICBTb21lIGd0a2RvYyBw
YXJhbWV0ZXJzIGNhbiBiZSBndWVzc2VkIGJ5IHJlYWRpbmcgYSBsaWJyYXJ5J3MgcGtnY29uZmln
CisgICAgZmlsZSwgaW5jbHVkaW5nIHRoZSBjZmxhZ3MsIGxkZmxhZ3MgYW5kIHZlcnNpb24gcGFy
YW1ldGVycy4gSWYgeW91CisgICAgcHJvdmlkZSB0aGVzZSBwYXJhbWV0ZXJzIGFzIHdlbGwsIHRo
ZXkgd2lsbCBiZSBhcHBlbmRlZCB0byB0aGUgb25lcworICAgIGd1ZXNzZWQgdmlhIHRoZSBwa2dj
b25maWcgZmlsZS4KKworICAgIEtleXdvcmQgYXJndW1lbnRzOgorICAgICAgcGtnX2NvbmZpZ19w
YXRoIC0tIFBhdGggdG8gdGhlIHBrZ2NvbmZpZyBmaWxlIGZvciB0aGUgbGlicmFyeS4gUmVxdWly
ZWQuCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcGtnX2NvbmZpZ19wYXRoLCAq
KmFyZ3MpOgorICAgICAgICBzdXBlcihQa2dDb25maWdHVEtEb2MsIHNlbGYpLl9faW5pdF9fKCoq
YXJncykKKworICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMocGtnX2NvbmZpZ19wYXRoKToK
KyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignQ291bGQgbm90IGZpbmQgcGtnLWNvbmZpZyBm
aWxlIGF0OiAlcycKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIHBrZ19jb25maWdfcGF0
aCkKKworICAgICAgICBzZWxmLmNmbGFncyArPSAiICIgKyBzZWxmLl9ydW5fY29tbWFuZChbJ3Br
Zy1jb25maWcnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcGtnX2NvbmZpZ19wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJy0tY2ZsYWdzJ10sIHByaW50X291dHB1dD1GYWxzZSkKKyAgICAgICAgc2Vs
Zi5sZGZsYWdzICs9ICIgIiArIHNlbGYuX3J1bl9jb21tYW5kKFsncGtnLWNvbmZpZycsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwa2dfY29uZmlnX3Bh
dGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1s
aWJzJ10sIHByaW50X291dHB1dD1GYWxzZSkKKyAgICAgICAgc2VsZi52ZXJzaW9uID0gc2VsZi5f
cnVuX2NvbW1hbmQoWydwa2ctY29uZmlnJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHBrZ19jb25maWdfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICctLW1vZHZlcnNpb24nXSwgcHJpbnRfb3V0cHV0PUZhbHNlKQpkaWZm
IC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDdkZjU5ZDEwZjNmOWU5NGFlZGNh
ODliNDkyMjZhNTJiZmVlNTcyYzUuLjRjZjljMjllODFkN2UzYjg1MTcyMzE1Mjg4MTUxNTcwOGMz
NDg3MjMgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NiBAQAorMjAxMS0xMS0xNyAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+
CisKKyAgICAgICAgW0dUS10gSW50ZWdyYXRlIGJ1aWxkLWd0a2RvYyBpbnRvIGJ1aWxkLXdlYmtp
dCBhbmQgbWFrZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NzI2MjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIEdOVW1ha2VmaWxlLmFtOiBSZW1vdmUgcmVmZXJlbmNlcyB0byBvbGQgZ3RrZG9jIGZpbGVz
LiBVcGRhdGUKKyAgICAgICAgdGhlIGRpc3QtaG9vayB0byBpbmNsdWRlIGNvcHlpbmcgZG9jdW1l
bnRhdGlvbiBpbnRvIHRoZSBkaXN0cmlidXRpb24uCisgICAgICAgIFRoaXMgYWxzbyBtZWFucyB0
aGF0IHRoZSBidWlsZCB3aWxsIGZhaWwgaWYgZG9jdW1lbnRhdGlvbiBoYXNuJ3QgYmVlbgorICAg
ICAgICBnZW5lcmF0ZWQgYmVmb3JlICdtYWtlIGRpc3QuJworICAgICAgICAqIGNvbmZpZ3VyZS5h
YzogRGl0dG8uCisKIDIwMTEtMTEtMjMgIFJhcGhhZWwgS3VibyBkYSBDb3N0YSAgPGt1Ym9AcHJv
ZnVzaW9uLm1vYmk+CiAKICAgICAgICAgW0NNYWtlXSBNb3ZlIHRoZSB0b3AtbGV2ZWwgbG9naWMg
dG8gdGhlIHRvcC1sZXZlbCBkaXJlY3RvcnkuCmRpZmYgLS1naXQgYS9HTlVtYWtlZmlsZS5hbSBi
L0dOVW1ha2VmaWxlLmFtCmluZGV4IGY5MWU4OGQ4OTZjMTE1YzRhYTNkM2I5N2QxYThlZDE2NjU1
NWM1OTYuLjVlOGY4NjU0YjhmMjI2YmUzOGEwNmZjMzY3NWZhYzU0ZTA3MThlYzYgMTAwNjQ0Ci0t
LSBhL0dOVW1ha2VmaWxlLmFtCisrKyBiL0dOVW1ha2VmaWxlLmFtCkBAIC0yMDcsNyArMjA3LDYg
QEAgaW5jbHVkZSBTb3VyY2UvV2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5hbQogaW5jbHVkZSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dOVW1ha2VmaWxlLmFtCiBpbmNsdWRlIFRvb2xz
L0dOVW1ha2VmaWxlLmFtCiBpbmNsdWRlIFNvdXJjZS9XZWJLaXQvZ3RrL3BvL0dOVW1ha2VmaWxl
LmFtCi1pbmNsdWRlIFNvdXJjZS9XZWJLaXQvZ3RrL2RvY3MvR05VbWFrZWZpbGUuYW0KIGluY2x1
ZGUgVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0dOVW1ha2VmaWxlLkltYWdlRGlmZi5hbQogCiBp
ZiBFTkFCTEVfV0VCS0lUMgpAQCAtMjY1LDMgKzI2NCwxNiBAQCBjbGVhbi1sb2NhbDoKIG1haW50
YWluZXItY2xlYW4tbG9jYWw6IGRpc3RjbGVhbi1sb2NhbAogZGlzdGNsZWFuLWxvY2FsOgogCS1y
bSAtcmYgJChHRU5TT1VSQ0VTKSAkKEdFTlBST0dSQU1TKQorCitkaXN0LWhvb2s6CisJY3AgJChX
ZWJLaXQpL05FV1MgJChkaXN0ZGlyKQorCUBta2RpciAtcCAkKGRpc3RkaXIpL0RvY3VtZW50YXRp
b24vd2Via2l0Z3RrL2h0bWwKKwlAbWtkaXIgLXAgJChkaXN0ZGlyKS9Eb2N1bWVudGF0aW9uL3dl
YmtpdGd0ay90bXBsCisJQC1jcCAuL0RvY3VtZW50YXRpb24vd2Via2l0Z3RrL3RtcGwvKi5zZ21s
ICQoZGlzdGRpcikvRG9jdW1lbnRhdGlvbi93ZWJraXRndGsvdG1wbAorCUBjcCAuL0RvY3VtZW50
YXRpb24vd2Via2l0Z3RrL2h0bWwvKiAkKGRpc3RkaXIpL0RvY3VtZW50YXRpb24vd2Via2l0Z3Rr
L2h0bWwKK2lmIEVOQUJMRV9XRUJLSVQyCisJQG1rZGlyIC1wICQoZGlzdGRpcikvRG9jdW1lbnRh
dGlvbi93ZWJraXQyZ3RrL2h0bWwKKwlAbWtkaXIgLXAgJChkaXN0ZGlyKS9Eb2N1bWVudGF0aW9u
L3dlYmtpdDJndGsvdG1wbAorCUAtY3AgLi9Eb2N1bWVudGF0aW9uL3dlYmtpdDJndGsvdG1wbC8q
LnNnbWwgJChkaXN0ZGlyKS9Eb2N1bWVudGF0aW9uL3dlYmtpdDJndGsvdG1wbAorCUBjcCAuL0Rv
Y3VtZW50YXRpb24vd2Via2l0Mmd0ay9odG1sLyogJChkaXN0ZGlyKS9Eb2N1bWVudGF0aW9uL3dl
YmtpdDJndGsvaHRtbAorZW5kaWYKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3Vy
ZS5hYwppbmRleCBmYTgzOTRjMGQxODhkZDFhODI1ZjEzYTQ4Njk0NmIzYjc1ZDZmYjBkLi5mY2Nj
MmMxZjIyZDc2ODE4NjgyMTkwYjBlZDkyZTZmMTJiM2U2NGViIDEwMDY0NAotLS0gYS9jb25maWd1
cmUuYWMKKysrIGIvY29uZmlndXJlLmFjCkBAIC0xMjEwLDcgKzEyMTAsNiBAQCBHTlVtYWtlZmls
ZQogCiBBQ19DT05GSUdfRklMRVMoWwogU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHZl
cnNpb24uaAotRG9jdW1lbnRhdGlvbi92ZXJzaW9uLnhtbDpTb3VyY2UvV2ViS2l0L2d0ay9kb2Nz
L3ZlcnNpb24ueG1sLmluCiBdKQogCiBBQ19DT05GSUdfRklMRVMoWwpAQCAtMTI0Niw2ICsxMjQ1
LDcgQEAgQnVpbGQgY29uZmlndXJhdGlvbjoKICBGb250IGJhY2tlbmQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICR3aXRoX2ZvbnRfYmFja2VuZAogIE9wdGlt
aXplZCBtZW1vcnkgYWxsb2NhdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJGVu
YWJsZV9mYXN0X21hbGxvYwogIEphdmFTY3JpcHQgRW5naW5lICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDogJHdpdGhfanNlbmdpbmUKKwogRmVhdHVyZXM6CiAgM0QgUmVu
ZGVyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAkZW5h
YmxlXzNkX3JlbmRlcmluZwogIFdlYkdMICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDogJGVuYWJsZV93ZWJnbApAQCAtMTMwNSw2ICsxMzA1LDcgQEAg
R1RLKyBjb25maWd1cmF0aW9uOgogIEdESyB0YXJnZXQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDogJHdpdGhfdGFyZ2V0CiAgSGlsZG9uIFVJIGV4dGVuc2lv
bnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAkd2l0aF9oaWxkb24KICBJ
bnRyb3NwZWN0aW9uIHN1cHBvcnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6
ICRlbmFibGVfaW50cm9zcGVjdGlvbgorIEdlbmVyYXRlIGRvY3VtZW50YXRpb24gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDogJGVuYWJsZV9ndGtfZG9jCiAiCiBpZiB0ZXN0ICIk
d2l0aF91bmljb2RlX2JhY2tlbmQiID0gImdsaWIiOyB0aGVuCiAgICBlY2hvICIgICAgID4+IFdB
Uk5JTkc6IHRoZSBnbGliLWJhc2VkIHVuaWNvZGUgYmFja2VuZCBpcyBzbG93IGFuZCBpbmNvbXBs
ZXRlIDw8Igo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116519</attachid>
            <date>2011-11-24 09:03:48 -0800</date>
            <delta_ts>2011-11-24 09:39:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72626-20111124180346.patch</filename>
            <type>text/plain</type>
            <size>66343</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxMDU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0
ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggZDlkMjhmOGRl
MTRmMjQ4ZjU4MjM1MmNjOGFkOTE4NDk0M2EyMTllZS4uNDM2Y2QxMmVmNzE3MmJmNThjMmY3YTgw
ZWY5NTM0MGY4NzUzYzg5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEx
LTExLTE3ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAg
ICBbR1RLXSBJbnRlZ3JhdGUgYnVpbGQtZ3RrZG9jIGludG8gYnVpbGQtd2Via2l0IGFuZCBtYWtl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjYyNgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZG9jcy9H
TlVtYWtlZmlsZS5hbTogUmVtb3ZlZC4KKyAgICAgICAgKiBkb2NzL3ZlcnNpb24ueG1sLmluOiBS
ZW1vdmVkLgorCiAyMDExLTExLTIzICBLYXVzdHViaCBBdHJhd2Fsa2FyICA8a2F1c3R1YmhAbW90
b3JvbGEuY29tPgogCiAgICAgICAgIERvY3VtZW50YXRpb24gZml4IGZvciBsb2FkLWNvbW1pdHRl
ZCBpbiB3ZWJraXR3ZWJmcmFtZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDhmZmNiMjI5NjY5YzYyMzllMWNjZDg3
ZTE3ZTUwNzIyMzhlZGVkMTAuLjQ2YTVkYjM4NGY1YmY4MWY1Nzg3ZTMzZDIyOTg0MWFjNmEwMDcx
YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0xMS0xNyAgTWFydGluIFJvYmlu
c29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gSW50ZWdyYXRlIGJ1
aWxkLWd0a2RvYyBpbnRvIGJ1aWxkLXdlYmtpdCBhbmQgbWFrZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzI2MjYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBSZW1vdmVkIHJl
ZmVyZW5jZXMgdG8gYnVpbGQtZ3RrZG9jIGFuZCBndGtkb2MucHkuCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9ndGsvZG9jcy9idWlsZC1ndGtkb2M6IFJlbW92ZWQuCisKIDIwMTEtMTEtMjMgIFJh
cGhhZWwgS3VibyBkYSBDb3N0YSAgPGt1Ym9AcHJvZnVzaW9uLm1vYmk+CiAKICAgICAgICAgW0NN
YWtlXSBNb3ZlIHRoZSB0b3AtbGV2ZWwgbG9naWMgdG8gdGhlIHRvcC1sZXZlbCBkaXJlY3Rvcnku
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9X
ZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtCmluZGV4IDc1MmM5ZTY1MTUyNWY5ZGMyMTA5ZDFiNjMx
OTA4YzYxOTQ2NzY1ZmIuLmUzNGI0NDIzNWNkZmRmNjdkOTE2ZWE3YTk2NmI5ZjI2YTE4MGNjNWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJj
ZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtCkBAIC0zODQsOCArMzg0LDEyIEBAIGdzZXR0aW5n
c19TQ0hFTUFTID0gJCh0b3BfYnVpbGRkaXIpL1NvdXJjZS9XZWJLaXQvZ3RrL29yZy53ZWJraXRn
dGstQFdFQktJVEdUS19BCiBFWFRSQV9ESVNUICs9IFwKIAkkKFdlYktpdCkvQ2hhbmdlTG9nIFwK
IAkkKFdlYktpdCkvTkVXUyBcCisJJChXZWJLaXQpL2RvY3Mvd2Via2l0Z3RrLWRvY3Muc2dtbCBc
CisJJChXZWJLaXQpL2RvY3Mvd2Via2l0Z3RrLXNlY3Rpb25zLnR4dCBcCisJJChXZWJLaXQpL2Rv
Y3Mvd2Via2l0Z3RrLnR5cGVzIFwKKwkkKFdlYktpdCkvZG9jcy93ZWJraXRlbnZpcm9ubWVudC54
bWwgXAorCSQoV2ViS2l0KS9kb2NzL3dlYmtpdGd0ay1vdmVycmlkZXMudHh0IFwKIAkkKFdlYktp
dCkvd2Via2l0bWFyc2hhbC5saXN0IFwKLQkkKFdlYktpdCkvR05VbWFrZWZpbGUuZ3RrLWRvYy5h
bSBcCiAJJChXZWJLaXQpL3BvLyogXAogCSQoV2ViS2l0KS9yZXNvdXJjZXMvKiBcCiAJJChXZWJL
aXQpL3Rlc3RzL3Jlc291cmNlcy8qIFwKQEAgLTU5Myw4ICs1OTcsNiBAQCBESVNUQ0xFQU5GSUxF
UyArPSBcCiAJJCh0b3BfYnVpbGRkaXIpL1NvdXJjZS9XZWJLaXQvZ3RrL29yZy53ZWJraXRndGst
QFdFQktJVEdUS19BUElfVkVSU0lPTkAuZ3NjaGVtYS54bWwgXAogCSQodG9wX2J1aWxkZGlyKS9T
b3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0dmVyc2lvbi5oCiAKLWRpc3QtaG9vazoKLQlj
cCAkKFdlYktpdCkvTkVXUyAkKGRpc3RkaXIpCiBpbnN0YWxsLWRhdGEtbG9jYWw6IHBvLWluc3Rh
bGwtZGF0YS1sb2NhbAogaW5zdGFsbGRpcnMtZGF0YS1sb2NhbDogcG8taW5zdGFsbGRpcnMtZGF0
YS1sb2NhbAogdW5pbnN0YWxsLWxvY2FsOiBwby11bmluc3RhbGwtbG9jYWwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmd0ay1kb2MuYW0gYi9Tb3VyY2UvV2ViS2l0
L2d0ay9HTlVtYWtlZmlsZS5ndGstZG9jLmFtCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwNTJjNzg4ZDljOWQzYzE1NDIyMmRlOWZlZTA0YWRmZWZjMThhYzIyLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1h
a2VmaWxlLmd0ay1kb2MuYW0KKysrIC9kZXYvbnVsbApAQCAtMSwyMDggKzAsMCBAQAotIyAtKi0g
bW9kZTogbWFrZWZpbGUgLSotCi0KLUdUS0RPQ19DQyA9ICQoTElCVE9PTCkgLS10YWc9Q0MgLS1t
b2RlPWNvbXBpbGUgJChDQykgJChHVEtET0NfSU5DTFVERVMpICQoR1RLRE9DX0RFUFNfQ0ZMQUdT
KSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKEFNX0NGTEFHUykgJChDRkxBR1MpCi1HVEtE
T0NfTEQgPSAkKExJQlRPT0wpIC0tdGFnPUNDIC0tbW9kZT1saW5rICQoQ0MpICQoR1RLRE9DX0RF
UFNfTElCUykgJChBTV9DRkxBR1MpICQoQ0ZMQUdTKSAkKEFNX0xERkxBR1MpICQoTERGTEFHUykK
LUdUS0RPQ19SVU4gPSAkKExJQlRPT0wpIC0tbW9kZT1leGVjdXRlCi0KLVRBUkdFVF9ESVI9JChI
VE1MX0RJUikvJChET0NfTU9EVUxFKQotCi1TRVRVUF9GSUxFUyA9IFwKLQkkKERPQ19NQUlOX1NH
TUxfRklMRSkJCVwKLQl3ZWJraXRlbnZpcm9ubWVudC54bWwJCVwKLQkkKERPQ19NT0RVTEUpLXNl
Y3Rpb25zLnR4dAlcCi0JJChET0NfTU9EVUxFKS1vdmVycmlkZXMudHh0Ci0KLUVYVFJBX0RJU1Qg
Kz0gXAotCSQoSFRNTF9JTUFHRVMpCQkJXAotCSQoU0VUVVBfRklMRVMpCi0KLURPQ19TVEFNUFM9
ZG9jLXNldHVwLWJ1aWxkLnN0YW1wIHNjYW4tYnVpbGQuc3RhbXAgdG1wbC1idWlsZC5zdGFtcCBz
Z21sLWJ1aWxkLnN0YW1wIFwKLQlodG1sLWJ1aWxkLnN0YW1wIHBkZi1idWlsZC5zdGFtcCBcCi0J
dG1wbC5zdGFtcCBzZ21sLnN0YW1wIGh0bWwuc3RhbXAgcGRmLnN0YW1wCi0KLVNDQU5PQkpfRklM
RVMgPSAJCSBcCi0JJChET0NfTU9EVUxFKS5hcmdzIAkgXAotCSQoRE9DX01PRFVMRSkuaGllcmFy
Y2h5ICBcCi0JJChET0NfTU9EVUxFKS5pbnRlcmZhY2VzIFwKLQkkKERPQ19NT0RVTEUpLnByZXJl
cXVpc2l0ZXMgXAotCSQoRE9DX01PRFVMRSkuc2lnbmFscwotCi1SRVBPUlRfRklMRVMgPSBcCi0J
JChET0NfTU9EVUxFKS11bmRvY3VtZW50ZWQudHh0IFwKLQkkKERPQ19NT0RVTEUpLXVuZGVjbGFy
ZWQudHh0IFwKLQkkKERPQ19NT0RVTEUpLXVudXNlZC50eHQKLQotQ0xFQU5GSUxFUyArPSAkKFND
QU5PQkpfRklMRVMpICQoUkVQT1JUX0ZJTEVTKSAkKERPQ19TVEFNUFMpCi0KLWlmIEVOQUJMRV9H
VEtfRE9DCi1IVE1MX0JVSUxEX1NUQU1QPWh0bWwtYnVpbGQuc3RhbXAKLWVuZGlmCi0KLWRvY19z
cmNkaXIgOj0gJChhYnNfc3JjZGlyKS9Tb3VyY2UvV2ViS2l0L2d0ay9kb2NzCi0KLWRvY3M6ICQo
SFRNTF9CVUlMRF9TVEFNUCkKLQotJChSRVBPUlRfRklMRVMpOiBzZ21sLWJ1aWxkLnN0YW1wCi0K
LSMjIyMgc2V0dXAgIyMjIwotCi1kb2Mtc2V0dXAtYnVpbGQuc3RhbXA6IGxpYndlYmtpdGd0ay1A
V0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQC5AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9O
QC5sYQotCS1AbWtkaXIgLXAgRG9jdW1lbnRhdGlvbgotCS1AbG4gLWZzIC4uL2RvbHRsaWJ0b29s
IERvY3VtZW50YXRpb24vCi0JLUBsbiAtZnMgLi4vZG9sdGNvbXBpbGUgRG9jdW1lbnRhdGlvbi8K
LQktQGxuIC1mcyAuLi9saWJ0b29sIERvY3VtZW50YXRpb24vCi0JLUBpZiB0ZXN0ICIkKGFic19z
cmNkaXIpIiAhPSAiJChhYnNfYnVpbGRkaXIpIiA7IHRoZW4gXAotCSAgICBlY2hvICcgIERPQyAg
IFByZXBhcmluZyBidWlsZCc7IFwKLQkgICAgZmlsZXM9YGVjaG8gJChTRVRVUF9GSUxFUykgJChE
T0NfTU9EVUxFKS50eXBlc2A7IFwKLQkgICAgaWYgdGVzdCAieCQkZmlsZXMiICE9ICJ4IiA7IHRo
ZW4gXAotCSAgICAgICAgZm9yIGZpbGUgaW4gJCRmaWxlcyA7IGRvIFwKLQkgICAgICAgICAgICB0
ZXN0IC1mICQoZG9jX3NyY2RpcikvJCRmaWxlICYmIFwKLQkgICAgICAgICAgICAgICAgY3AgLXB1
ICQoZG9jX3NyY2RpcikvJCRmaWxlICQoYWJzX2J1aWxkZGlyKS9Eb2N1bWVudGF0aW9uLyB8fCB0
cnVlOyBcCi0JICAgICAgICBkb25lOyBcCi0JICAgIGZpOyBcCi0JICAgIHRlc3QgLWQgJChkb2Nf
c3JjZGlyKS90bXBsICYmIFwKLQkgICAgICAgIHsgY3AgLXJwICQoZG9jX3NyY2RpcikvdG1wbCAk
KGFic19idWlsZGRpcikvRG9jdW1lbnRhdGlvbi87IFwKLQkgICAgICAgIGNobW9kIC1SIHUrdyAk
KGFic19idWlsZGRpcikvRG9jdW1lbnRhdGlvbi90bXBsOyB9IFwKLQlmaQotCUB0b3VjaCBkb2Mt
c2V0dXAtYnVpbGQuc3RhbXAKLQotIyMjIyBzY2FuICMjIyMKLQotc2Nhbi1idWlsZC5zdGFtcDog
ZG9jLXNldHVwLWJ1aWxkLnN0YW1wICQoSEZJTEVfR0xPQikgJChDRklMRV9HTE9CKQotCUBlY2hv
ICcgIERPQyAgIFNjYW5uaW5nIGhlYWRlciBmaWxlcycKLQlAY2QgRG9jdW1lbnRhdGlvbjsgX3Nv
dXJjZV9kaXI9JycgOyBcCi0JZm9yIGkgaW4gJChET0NfU09VUkNFX0RJUikgOyBkbyBcCi0JICAg
IF9zb3VyY2VfZGlyPSIkJHtfc291cmNlX2Rpcn0gLS1zb3VyY2UtZGlyPS4uLyQkaSIgOyBcCi0J
ZG9uZSA7IFwKLQlndGtkb2Mtc2NhbiAtLW1vZHVsZT0kKERPQ19NT0RVTEUpIC0taWdub3JlLWhl
YWRlcnM9IiQoSUdOT1JFX0hGSUxFUykiICQke19zb3VyY2VfZGlyfSAkKFNDQU5fT1BUSU9OUykg
JChFWFRSQV9IRklMRVMpCi0JQGNkIERvY3VtZW50YXRpb247IGlmIGdyZXAgLWwgJ14uLiokJCcg
JChET0NfTU9EVUxFKS50eXBlcyA+IC9kZXYvbnVsbCAyPiYxIDsgdGhlbiBcCi0JICAgIGVjaG8g
IiAgRE9DICAgSW50cm9zcGVjdGluZyBnb2JqZWN0cyI7IFwKLQkgICAgc2Nhbm9ial9vcHRpb25z
PSIiOyBcCi0JICAgIGd0a2RvYy1zY2FuZ29iaiAyPiYxIC0taGVscCB8IGdyZXAgID4vZGV2L251
bGwgIlwtXC12ZXJib3NlIjsgXAotCSAgICBpZiB0ZXN0ICIkKD8pIiA9ICIwIjsgdGhlbiBcCi0J
ICAgICAgICBpZiB0ZXN0ICJ4JChWKSIgPSAieDEiOyB0aGVuIFwKLQkgICAgICAgICAgICBzY2Fu
b2JqX29wdGlvbnM9Ii0tdmVyYm9zZSI7IFwKLQkgICAgICAgIGZpOyBcCi0JICAgIGZpOyBcCi0J
ICAgIENDPSIkKEdUS0RPQ19DQykiIExEPSIkKEdUS0RPQ19MRCkiIFJVTj0iJChHVEtET0NfUlVO
KSIgQ0ZMQUdTPSIkKEdUS0RPQ19DRkxBR1MpICQoQ0ZMQUdTKSIgTERGTEFHUz0iJChHVEtET0Nf
TElCUykgJChMREZMQUdTKSIgXAotCSAgICBndGtkb2Mtc2NhbmdvYmogJChTQ0FOR09CSl9PUFRJ
T05TKSAkJHNjYW5vYmpfb3B0aW9ucyAtLW1vZHVsZT0kKERPQ19NT0RVTEUpOyBcCi0JZWxzZSBc
Ci0JICAgIGZvciBpIGluICQoU0NBTk9CSl9GSUxFUykgOyBkbyBcCi0JICAgICAgICB0ZXN0IC1m
ICQkaSB8fCB0b3VjaCAkJGkgOyBcCi0JICAgIGRvbmUgXAotCWZpCi0JQHRvdWNoIHNjYW4tYnVp
bGQuc3RhbXAKLQotRG9jdW1lbnRhdGlvbi8kKERPQ19NT0RVTEUpLWRlY2wudHh0IERvY3VtZW50
YXRpb24vJChTQ0FOT0JKX0ZJTEVTKSBEb2N1bWVudGF0aW9uLyQoRE9DX01PRFVMRSktc2VjdGlv
bnMudHh0IERvY3VtZW50YXRpb24vJChET0NfTU9EVUxFKS1vdmVycmlkZXMudHh0OiBzY2FuLWJ1
aWxkLnN0YW1wCi0JQHRydWUKLQotIyMjIyB0ZW1wbGF0ZXMgIyMjIwotCi10bXBsLWJ1aWxkLnN0
YW1wOiBkb2Mtc2V0dXAtYnVpbGQuc3RhbXAgRG9jdW1lbnRhdGlvbi8kKERPQ19NT0RVTEUpLWRl
Y2wudHh0IERvY3VtZW50YXRpb24vJChTQ0FOT0JKX0ZJTEVTKSBEb2N1bWVudGF0aW9uLyQoRE9D
X01PRFVMRSktc2VjdGlvbnMudHh0IERvY3VtZW50YXRpb24vJChET0NfTU9EVUxFKS1vdmVycmlk
ZXMudHh0Ci0JQGVjaG8gJyAgRE9DICAgUmVidWlsZGluZyB0ZW1wbGF0ZSBmaWxlcycKLQlAY2Qg
RG9jdW1lbnRhdGlvbjsgZ3RrZG9jLW1rdG1wbCAtLW1vZHVsZT0kKERPQ19NT0RVTEUpICQoTUtU
TVBMX09QVElPTlMpCi0JQGlmIHRlc3QgIiQoYWJzX3NyY2RpcikiICE9ICIkKGFic19idWlsZGRp
cikiIDsgdGhlbiBcCi0JICBpZiB0ZXN0IC13ICQoYWJzX3NyY2RpcikgOyB0aGVuIFwKLQkgICAg
Y3AgLXJwICQoYWJzX2J1aWxkZGlyKS9Eb2N1bWVudGF0aW9uL3RtcGwgJChkb2Nfc3JjZGlyKTsg
XAotCSAgZmkgXAotCWZpCi0JQHRvdWNoIHRtcGwtYnVpbGQuc3RhbXAKLQotdG1wbC5zdGFtcDog
dG1wbC1idWlsZC5zdGFtcAotCUB0cnVlCi0KLSQoc3JjZGlyKS90bXBsLyouc2dtbDoKLQlAdHJ1
ZQotCi0jIyMjIHhtbCAjIyMjCi0KLXNnbWwtYnVpbGQuc3RhbXA6IGRvYy1zZXR1cC1idWlsZC5z
dGFtcCB0bXBsLnN0YW1wIERvY3VtZW50YXRpb24vJChET0NfTU9EVUxFKS1zZWN0aW9ucy50eHQg
JChzcmNkaXIpL3RtcGwvKi5zZ21sCi0JQGVjaG8gJyAgRE9DICAgQnVpbGRpbmcgWE1MJwotCUAt
Y2htb2QgLVIgdSt3ICQoc3JjZGlyKQotCUBjZCBEb2N1bWVudGF0aW9uOyBfc291cmNlX2Rpcj0n
JyA7IFwKLQlmb3IgaSBpbiAkKERPQ19TT1VSQ0VfRElSKSA7IGRvIFwKLQkgICAgX3NvdXJjZV9k
aXI9IiQke19zb3VyY2VfZGlyfSAtLXNvdXJjZS1kaXI9Li4vJCRpIiA7IFwKLQlkb25lIDsgXAot
CWd0a2RvYy1ta2RiIC0tbW9kdWxlPSQoRE9DX01PRFVMRSkgLS1vdXRwdXQtZm9ybWF0PXhtbCAt
LWV4cGFuZC1jb250ZW50LWZpbGVzPSIiIC0tbWFpbi1zZ21sLWZpbGU9JChET0NfTUFJTl9TR01M
X0ZJTEUpICQke19zb3VyY2VfZGlyfSAkKE1LREJfT1BUSU9OUykKLQlAdG91Y2ggc2dtbC1idWls
ZC5zdGFtcAotCi1zZ21sLnN0YW1wOiBzZ21sLWJ1aWxkLnN0YW1wCi0JQHRydWUKLQotIyMjIyBo
dG1sICMjIyMKLQotRG9jdW1lbnRhdGlvbi8kKERPQ19NQUlOX1NHTUxfRklMRSk6IHNnbWwuc3Rh
bXAKLURvY3VtZW50YXRpb24vd2Via2l0ZW52aXJvbm1lbnQueG1sOiBkb2Mtc2V0dXAtYnVpbGQu
c3RhbXAKLQotaHRtbC1idWlsZC5zdGFtcDogc2dtbC5zdGFtcCBEb2N1bWVudGF0aW9uLyQoRE9D
X01BSU5fU0dNTF9GSUxFKQotCUBlY2hvICcgIERPQyAgIEJ1aWxkaW5nIEhUTUwnCi0JQHJtIC1y
ZiBEb2N1bWVudGF0aW9uL2h0bWwKLQlAbWtkaXIgRG9jdW1lbnRhdGlvbi9odG1sCi0JQGNkIERv
Y3VtZW50YXRpb247IG1raHRtbF9vcHRpb25zPSIiOyBcCi0JZ3RrZG9jLW1raHRtbCAyPiYxIC0t
aGVscCB8IGdyZXAgID4vZGV2L251bGwgIlwtXC12ZXJib3NlIjsgXAotCWlmIHRlc3QgIiQoPyki
ID0gIjAiOyB0aGVuIFwKLQkgIGlmIHRlc3QgIngkKFYpIiA9ICJ4MSI7IHRoZW4gXAotCSAgICBt
a2h0bWxfb3B0aW9ucz0iJCRta2h0bWxfb3B0aW9ucyAtLXZlcmJvc2UiOyBcCi0JICBmaTsgXAot
CWZpOyBcCi0JZ3RrZG9jLW1raHRtbCAyPiYxIC0taGVscCB8IGdyZXAgID4vZGV2L251bGwgIlwt
XC1wYXRoIjsgXAotCWlmIHRlc3QgIiQoPykiID0gIjAiOyB0aGVuIFwKLQkgIG1raHRtbF9vcHRp
b25zPSIkJG1raHRtbF9vcHRpb25zIC0tcGF0aD1cIiQoZG9jX3NyY2RpcilcIiI7IFwKLQlmaTsg
XAotCWNkIGh0bWwgJiYgZ3RrZG9jLW1raHRtbCAkJG1raHRtbF9vcHRpb25zICQoTUtIVE1MX09Q
VElPTlMpICQoRE9DX01PRFVMRSkgLi4vJChET0NfTUFJTl9TR01MX0ZJTEUpCi0JLUB0ZXN0ICJ4
JChIVE1MX0lNQUdFUykiID0gIngiIHx8IFwKLQlmb3IgZmlsZSBpbiAkKEhUTUxfSU1BR0VTKSA7
IGRvIFwKLQkgIGlmIHRlc3QgLWYgJChhYnNfc3JjZGlyKS8kJGZpbGUgOyB0aGVuIFwKLQkgICAg
Y3AgJChhYnNfc3JjZGlyKS8kJGZpbGUgJChhYnNfYnVpbGRkaXIpL2h0bWw7IFwKLQkgIGZpOyBc
Ci0JICBpZiB0ZXN0IC1mICQoYWJzX2J1aWxkZGlyKS8kJGZpbGUgOyB0aGVuIFwKLQkgICAgY3Ag
JChhYnNfYnVpbGRkaXIpLyQkZmlsZSAkKGFic19idWlsZGRpcikvaHRtbDsgXAotCSAgZmk7IFwK
LQlkb25lOwotCUBlY2hvICcgIERPQyAgIEZpeGluZyBjcm9zcy1yZWZlcmVuY2VzJwotCUBjZCBE
b2N1bWVudGF0aW9uOyBndGtkb2MtZml4eHJlZiAtLW1vZHVsZT0kKERPQ19NT0RVTEUpIC0tbW9k
dWxlLWRpcj1odG1sIC0taHRtbC1kaXI9JChIVE1MX0RJUikgJChGSVhYUkVGX09QVElPTlMpCi0J
QHRvdWNoIGh0bWwtYnVpbGQuc3RhbXAKLQotY2xlYW4tbG9jYWw6IGRvYy1jbGVhbi1sb2NhbAot
Ci1kb2MtY2xlYW4tbG9jYWw6Ci0JQHJtIC1mIERvY3VtZW50YXRpb24vKn4gRG9jdW1lbnRhdGlv
bi8qLmJhawotCUBybSAtcmYgRG9jdW1lbnRhdGlvbi8ubGlicwotCi1kaXN0Y2xlYW4tbG9jYWw6
IGRvYy1kaXN0Y2xlYW4tbG9jYWwKLQotZG9jLWRpc3RjbGVhbi1sb2NhbDoKLQlAcm0gLXJmIERv
Y3VtZW50YXRpb24KLQotbWFpbnRhaW5lci1jbGVhbi1sb2NhbDogZG9jLW1haW50YWluZXItY2xl
YW4tbG9jYWwKLQotZG9jLW1haW50YWluZXItY2xlYW4tbG9jYWw6IGNsZWFuCi0JQHJtIC1yZiBE
b2N1bWVudGF0aW9uL3htbCBEb2N1bWVudGF0aW9uL2h0bWwKLQktQHJtZGlyIERvY3VtZW50YXRp
b24KLQotIwotIyBSZXF1aXJlIGd0ay1kb2Mgd2hlbiBtYWtpbmcgZGlzdAotIwotaWYgRU5BQkxF
X0dUS19ET0MKLWRpc3QtY2hlY2stZ3RrZG9jOgotCi1hbGw6IGRvY3MKLWVsc2UKLWRpc3QtY2hl
Y2stZ3RrZG9jOgotCUBlY2hvICIqKiogZ3RrLWRvYyBtdXN0IGJlIGluc3RhbGxlZCBhbmQgZW5h
YmxlZCBpbiBvcmRlciB0byBtYWtlIGRpc3QiCi0JQGZhbHNlCi1lbmRpZgotCi1kaXN0LWhvb2s6
IGRvYy1kaXN0LWhvb2sKLQotZG9jLWRpc3QtaG9vazogZGlzdC1jaGVjay1ndGtkb2MgZGlzdC1o
b29rLWxvY2FsCi0JQG1rZGlyIC1wICQoZGlzdGRpcikvJChET0NfTU9EVUxFKS90bXBsCi0JQG1r
ZGlyIC1wICQoZGlzdGRpcikvJChET0NfTU9EVUxFKS9odG1sCi0JQC1jcCAuL0RvY3VtZW50YXRp
b24vdG1wbC8qLnNnbWwgJChkaXN0ZGlyKS8kKERPQ19NT0RVTEUpL3RtcGwKLQlAY3AgLi9Eb2N1
bWVudGF0aW9uL2h0bWwvKiAkKGRpc3RkaXIpLyQoRE9DX01PRFVMRSkvaHRtbAotCUAtY3AgLi9E
b2N1bWVudGF0aW9uLyQoRE9DX01PRFVMRSkudHlwZXMgJChkaXN0ZGlyKS8KLQlALWNwIC4vRG9j
dW1lbnRhdGlvbi8kKERPQ19NT0RVTEUpLXNlY3Rpb25zLnR4dCAkKGRpc3RkaXIpLwotCUBjZCAk
KGRpc3RkaXIpICYmIHJtIC1mICQoRElTVENMRUFORklMRVMpCi0JQCQoR1RLRE9DX1JFQkFTRSkg
LS1vbmxpbmUgLS1yZWxhdGl2ZSAtLWh0bWwtZGlyPSQoZGlzdGRpcikvJChET0NfTU9EVUxFKS9o
dG1sCi0KLS5QSE9OWSA6IGRpc3QtaG9vay1sb2NhbCBkb2NzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2d0ay9kb2NzL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYktpdC9ndGsvZG9jcy9H
TlVtYWtlZmlsZS5hbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzhjNGIyMTJiYWI1
YWViZGQyOTBhYWUzN2EyNDNmMjU1YjliNDNiNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9kb2NzL0dOVW1ha2VmaWxlLmFt
CisrKyAvZGV2L251bGwKQEAgLTEsMTI4ICswLDAgQEAKLSMjIFByb2Nlc3MgdGhpcyBmaWxlIHdp
dGggYXV0b21ha2UgdG8gcHJvZHVjZSBHTlVtYWtlZmlsZS5pbgotCi0jIFRoaXMgaXMgYSBibGFu
ayBNYWtlZmlsZS5hbSBmb3IgdXNpbmcgZ3RrLWRvYy4KLSMgQ29weSB0aGlzIHRvIHlvdXIgcHJv
amVjdCdzIEFQSSBkb2NzIGRpcmVjdG9yeSBhbmQgbW9kaWZ5IHRoZSB2YXJpYWJsZXMgdG8KLSMg
c3VpdCB5b3VyIHByb2plY3QuIFNlZSB0aGUgR1RLKyBNYWtlZmlsZXMgaW4gZ3RrKy9kb2NzL3Jl
ZmVyZW5jZSBmb3IgZXhhbXBsZXMKLSMgb2YgdXNpbmcgdGhlIHZhcmlvdXMgb3B0aW9ucy4KLQot
IyBUaGUgbmFtZSBvZiB0aGUgbW9kdWxlLCBlLmcuICdnbGliJy4KLURPQ19NT0RVTEU9d2Via2l0
Z3RrCi0KLSMgVGhlIHRvcC1sZXZlbCBTR01MIGZpbGUuIFlvdSBjYW4gY2hhbmdlIHRoaXMgaWYg
eW91IHdhbnQgdG8uCi1ET0NfTUFJTl9TR01MX0ZJTEU9JChET0NfTU9EVUxFKS1kb2NzLnNnbWwK
LQotIyBUaGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIHNvdXJjZSBjb2RlLiBSZWxhdGl2ZSB0
byAkKHNyY2RpcikuCi0jIGd0ay1kb2Mgd2lsbCBzZWFyY2ggYWxsIC5jICYgLmggZmlsZXMgYmVu
ZWF0aCBoZXJlIGZvciBpbmxpbmUgY29tbWVudHMKLSMgZG9jdW1lbnRpbmcgdGhlIGZ1bmN0aW9u
cyBhbmQgbWFjcm9zLgotIyBlLmcuIERPQ19TT1VSQ0VfRElSPS4uLy4uLy4uL2d0awotRE9DX1NP
VVJDRV9ESVI9JCh0b3Bfc3JjZGlyKS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQKLQotIyBFeHRy
YSBvcHRpb25zIHRvIHBhc3MgdG8gZ3RrZG9jLXNjYW5nb2JqLiBOb3Qgbm9ybWFsbHkgbmVlZGVk
LgotU0NBTkdPQkpfT1BUSU9OUz0iLS10eXBlLWluaXQtZnVuYz1nX3R5cGVfaW5pdCgpIgotCi0j
IEV4dHJhIG9wdGlvbnMgdG8gc3VwcGx5IHRvIGd0a2RvYy1zY2FuLgotIyBlLmcuIFNDQU5fT1BU
SU9OUz0tLWRlcHJlY2F0ZWQtZ3VhcmRzPSJHVEtfRElTQUJMRV9ERVBSRUNBVEVEIgotU0NBTl9P
UFRJT05TPS0tZGVwcmVjYXRlZC1ndWFyZHM9IldFQktJVF9ESVNBQkxFX0RFUFJFQ0FURUQiIC0t
aWdub3JlLWRlY29yYXRvcnM9IldFQktJVF9BUEkiCi0KLSMgRXh0cmEgb3B0aW9ucyB0byBzdXBw
bHkgdG8gZ3RrZG9jLW1rZGIuCi0jIGUuZy4gTUtEQl9PUFRJT05TPS0tc2dtbC1tb2RlIC0tb3V0
cHV0LWZvcm1hdD14bWwKLU1LREJfT1BUSU9OUz0tLXNnbWwtbW9kZSAtLW91dHB1dC1mb3JtYXQ9
eG1sIC0tc291cmNlLXN1ZmZpeGVzPWgsYyxjcHAKLQotIyBFeHRyYSBvcHRpb25zIHRvIHN1cHBs
eSB0byBndGtkb2MtbWt0bXBsCi0jIGUuZy4gTUtUTVBMX09QVElPTlM9LS1vbmx5LXNlY3Rpb24t
dG1wbAotTUtUTVBMX09QVElPTlM9Ci0KLSMgRXh0cmEgb3B0aW9ucyB0byBzdXBwbHkgdG8gZ3Rr
ZG9jLWZpeHJlZi4gTm90IG5vcm1hbGx5IG5lZWRlZC4KLSMgZS5nLiBGSVhYUkVGX09QVElPTlM9
LS1leHRyYS1kaXI9Li4vZ2RrLXBpeGJ1Zi9odG1sIC0tZXh0cmEtZGlyPS4uL2dkay9odG1sCi1G
SVhYUkVGX09QVElPTlM9Ci0KLSMgVXNlZCBmb3IgZGVwZW5kZW5jaWVzLiBUaGUgZG9jcyB3aWxs
IGJlIHJlYnVpbHQgaWYgYW55IG9mIHRoZXNlIGNoYW5nZS4KLSMgZS5nLiBIRklMRV9HTE9CPSQo
dG9wX3NyY2RpcikvZ3RrLyouaAotIyBlLmcuIENGSUxFX0dMT0I9JCh0b3Bfc3JjZGlyKS9ndGsv
Ki5jCi1IRklMRV9HTE9CPSQodG9wX3NyY2RpcikvU291cmNlL1dlYktpdC9ndGsvd2Via2l0Lyou
aAotQ0ZJTEVfR0xPQj0kKHRvcF9zcmNkaXIpL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC8qLmNw
cAotCi0jIEhlYWRlciBmaWxlcyB0byBpZ25vcmUgd2hlbiBzY2FubmluZy4KLSMgZS5nLiBJR05P
UkVfSEZJTEVTPWd0a2RlYnVnLmggZ3RraW50bC5oCi1JR05PUkVfSEZJTEVTID0gXAotICAgd2Vi
a2l0ZG93bmxvYWRwcml2YXRlLmggXAotICAgd2Via2l0Z2VvbG9jYXRpb25wb2xpY3lkZWNpc2lv
bnByaXZhdGUuaCBcCi0gICB3ZWJraXRnbG9iYWxzcHJpdmF0ZS5oIFwKLSAgIHdlYmtpdGhpdHRl
c3RyZXN1bHRwcml2YXRlLmggXAotICAgd2Via2l0bmV0d29ya3JlcXVlc3Rwcml2YXRlLmggXAot
ICAgd2Via2l0bmV0d29ya3Jlc3BvbnNlcHJpdmF0ZS5oIFwKLSAgIHdlYmtpdHNlY3VyaXR5b3Jp
Z2lucHJpdmF0ZS5oIFwKLSAgIHdlYmtpdHZpZXdwb3J0YXR0cmlidXRlc3ByaXZhdGUuaCBcCi0g
ICB3ZWJraXR3ZWJiYWNrZm9yd2FyZGxpc3Rwcml2YXRlLmggXAotICAgd2Via2l0d2ViZGF0YXNv
dXJjZXByaXZhdGUuaCBcCi0gICB3ZWJraXR3ZWJmcmFtZXByaXZhdGUuaCBcCi0gICB3ZWJraXR3
ZWJoaXN0b3J5aXRlbXByaXZhdGUuaCBcCi0gICB3ZWJraXR3ZWJpbnNwZWN0b3Jwcml2YXRlLmgg
XAotICAgd2Via2l0d2VibmF2aWdhdGlvbmFjdGlvbnByaXZhdGUuaCBcCi0gICB3ZWJraXR3ZWJw
bHVnaW5kYXRhYmFzZXByaXZhdGUuaCBcCi0gICB3ZWJraXR3ZWJwbHVnaW5wcml2YXRlLmggXAot
ICAgd2Via2l0d2VicG9saWN5ZGVjaXNpb25wcml2YXRlLmggXAotICAgd2Via2l0d2VicmVzb3Vy
Y2Vwcml2YXRlLmggXAotICAgd2Via2l0d2Vic2V0dGluZ3Nwcml2YXRlLmggXAotICAgd2Via2l0
d2Vidmlld3ByaXZhdGUuaCBcCi0gICB3ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlc3ByaXZhdGUuaAot
Ci0jIEltYWdlcyB0byBjb3B5IGludG8gSFRNTCBkaXJlY3RvcnkuCi0jIGUuZy4gSFRNTF9JTUFH
RVM9JCh0b3Bfc3JjZGlyKS9ndGsvc3RvY2staWNvbnMvc3RvY2tfYWJvdXRfMjQucG5nCi1IVE1M
X0lNQUdFUz0KLQotIyBDRkxBR1MgYW5kIExERkxBR1MgZm9yIGNvbXBpbGluZyBndGtkb2Mtc2Nh
bmdvYmogd2l0aCB5b3VyIGxpYnJhcnkuCi0jIE9ubHkgbmVlZGVkIGlmIHlvdSBhcmUgdXNpbmcg
Z3RrZG9jLXNjYW5nb2JqIHRvIGR5bmFtaWNhbGx5IHF1ZXJ5IHdpZGdldAotIyBzaWduYWxzIGFu
ZCBwcm9wZXJ0aWVzLgotIyBlLmcuIElOQ0xVREVTPS1JJCh0b3Bfc3JjZGlyKSAtSSQodG9wX2J1
aWxkZGlyKSAkKEdUS19ERUJVR19GTEFHUykKLSMgZS5nLiBHVEtET0NfTElCUz0kKHRvcF9idWls
ZGRpcikvZ3RrLyQoZ3RrdGFyZ2V0bGliKQotR1RLRE9DX0lOQ0xVREVTPSBcCi0JLUkkKGFic19z
cmNkaXIpL1NvdXJjZS9XZWJLaXQvZ3RrIFwKLQktSSQoYWJzX2J1aWxkZGlyKS9Tb3VyY2UvV2Vi
S2l0L2d0ayBcCi0JJChnbG9iYWxfY3BwZmxhZ3MpIFwKLQkkKGdsb2JhbF9jZmxhZ3MpIFwKLQkt
SSQoYWJzX3NyY2RpcikvU291cmNlIFwKLQktSSQoYWJzX3NyY2RpcikvU291cmNlL0phdmFTY3Jp
cHRDb3JlIFwKLQktSSQoYWJzX3NyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL0ZvcndhcmRp
bmdIZWFkZXJzIFwKLQktSSQoYWJzX3NyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ciBcCi0JLUkkKGFic19zcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYgXAotCS1JJChh
YnNfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzIFwKLQktSSQoYWJzX3NyY2RpcikvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL2NhY2hlIFwKLQkkKEdMT0JBTERFUFNfQ0ZMQUdT
KSBcCi0JJChDQUlST19DRkxBR1MpIFwKLQkkKEdMSUJfQ0ZMQUdTKSBcCi0JJChHVEtfQ0ZMQUdT
KSBcCi0JJChMSUJTT1VQX0NGTEFHUykKLQotR1RLRE9DX0xJQlM9IFwKLQkkKGFic19idWlsZGRp
cikvbGliamF2YXNjcmlwdGNvcmVndGstQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkAuQFdF
QktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkAubGEgXAotCSQoYWJzX2J1aWxkZGlyKS9saWJ3ZWJr
aXRndGstQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkAuQFdFQktJVEdUS19BUElfTUlOT1Jf
VkVSU0lPTkAubGEgXAotCSQoR0xJQl9MSUJTKSBcCi0JJChHVEtfTElCUykgXAotCSQoTElCU09V
UF9MSUJTKQotCi0jIFRoaXMgaW5jbHVkZXMgb3VyIGN1c3RvbSBndGstZG9jIG1ha2UgcnVsZXMu
Ci1pbmNsdWRlICQodG9wX3NyY2RpcikvU291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZpbGUuZ3Rr
LWRvYy5hbQotCi0jIE90aGVyIGZpbGVzIHRvIGRpc3RyaWJ1dGUKLSMgZS5nLiBFWFRSQV9ESVNU
ICs9IHZlcnNpb24ueG1sLmluCi1FWFRSQV9ESVNUICs9IFwKLQkkKFdlYktpdCkvZG9jcy93ZWJr
aXRlbnZpcm9ubWVudC54bWwgXAotCSQoV2ViS2l0KS9kb2NzL3dlYmtpdGd0ay1kb2NzLnNnbWwg
XAotCSQoV2ViS2l0KS9kb2NzL3dlYmtpdGd0ay1zZWN0aW9ucy50eHQgXAotCSQoV2ViS2l0KS9k
b2NzL3ZlcnNpb24ueG1sLmluCi0KLSMgRmlsZXMgbm90IHRvIGRpc3RyaWJ1dGUKLSMgZm9yIC0t
cmVidWlsZC10eXBlcyBpbiAkKFNDQU5fT1BUSU9OUyksIGUuZy4gJChET0NfTU9EVUxFKS50eXBl
cwotIyBmb3IgLS1yZWJ1aWxkLXNlY3Rpb25zIGluICQoU0NBTl9PUFRJT05TKSBlLmcuICQoRE9D
X01PRFVMRSktc2VjdGlvbnMudHh0Ci1ESVNUQ0xFQU5GSUxFUyArPSBcCi0JJCh0b3BfYnVpbGRk
aXIpL1NvdXJjZS9XZWJLaXQvZ3RrL2RvY3MvdmVyc2lvbi54bWwgXAotCSQodG9wX2J1aWxkZGly
KS90bXBsLWJ1aWxkLnN0YW1wIFwKLQkkKHRvcF9idWlsZGRpcikvZG9jLXNldHVwLWJ1aWxkLnN0
YW1wIFwKLQkkKHRvcF9idWlsZGRpcikvaHRtbC1idWlsZC5zdGFtcCBcCi0JJCh0b3BfYnVpbGRk
aXIpL3NjYW4tYnVpbGQuc3RhbXAgXAotCSQodG9wX2J1aWxkZGlyKS9zZ21sLWJ1aWxkLnN0YW1w
Ci0KLSMgQ29tbWVudCB0aGlzIG91dCBpZiB5b3Ugd2FudCB5b3VyIGRvY3Mtc3RhdHVzIHRlc3Rl
ZCBkdXJpbmcgJ21ha2UgY2hlY2snCi0jVEVTVFMgPSAkKEdUS0RPQ19DSEVDSykKLQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9ndGsvZG9jcy92ZXJzaW9uLnhtbC5pbiBiL1NvdXJjZS9XZWJL
aXQvZ3RrL2RvY3MvdmVyc2lvbi54bWwuaW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGQ3OGJkYTkzNDIyZWNiYmNhOGNhZjc3MmY3YjM3ZjhmZTNiMjU0ZTkuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvZG9jcy92
ZXJzaW9uLnhtbC5pbgorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLUBWRVJTSU9OQApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9H
TlVtYWtlZmlsZS5hbQppbmRleCA3NWEwNDcwZjRhYzEwNDJmNDE3YjUxNDk0YzQ5ZWU1YzU4MDI5
NTNjLi4wOGNjMmIyNzg0MTk3YTNmODYxODA0NTliMjkyNWY5NmU2NzFhMGVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9HTlVt
YWtlZmlsZS5hbQpAQCAtMTQwMyw4ICsxNDAzLDYgQEAgUHJvZ3JhbXNfV2ViS2l0UGx1Z2luUHJv
Y2Vzc19DWFhGTEFHUyA9IFwKIGVuZGlmCiAKIEVYVFJBX0RJU1QgKz0gXAotCSQoV2ViS2l0Mikv
VUlQcm9jZXNzL0FQSS9ndGsvZG9jcy9idWlsZC1ndGtkb2MgXAotCSQoV2ViS2l0MikvVUlQcm9j
ZXNzL0FQSS9ndGsvZG9jcy9ndGtkb2MucHkgXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9n
dGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbCBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJ
L2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0IFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vz
cy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay50eXBlcyBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL2J1aWxkLWd0a2RvYyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3MvYnVpbGQtZ3RrZG9jCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDc1NQppbmRleCBmMzA0YTdlZGY0MjdlMWYzYmE0MmU1ODYyZmEzMzU0NWIxMWNiZWQ4Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3MvYnVpbGQtZ3RrZG9jCisrKyAvZGV2L251bGwKQEAgLTEs
OTMgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jICBDb3B5cmlnaHQgKEMpIDIwMTEg
SWdhbGlhIFMuTC4KLSMKLSMgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSMgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSMgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotIyAgdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotIwotIyAg
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCi0jICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgotIyAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSMgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0jCi0jICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0jICBMaWNlbnNlIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0j
ICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0
b24sIE1BICAwMjExMC0xMzAxICBVU0EKLSMKLQotaW1wb3J0IGdsb2IKLWltcG9ydCBndGtkb2MK
LWltcG9ydCBsb2dnaW5nCi1pbXBvcnQgb3MucGF0aAotaW1wb3J0IHN5cwotCi1kZWYgY29uZmln
dXJlX2xvZ2dpbmcoKToKLSAgICBsZXZlbCA9IGxvZ2dpbmcuREVCVUcgaWYgJy12JyBpbiBzeXMu
YXJndiBlbHNlIGxvZ2dpbmcuSU5GTwotICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJn
dGtkb2MiKQotICAgIGxvZ2dlci5zZXRMZXZlbChsZXZlbCkKLSAgICBoYW5kbGVyID0gbG9nZ2lu
Zy5TdHJlYW1IYW5kbGVyKCkKLSAgICBoYW5kbGVyLnNldExldmVsKGxldmVsKQotICAgIGxvZ2dl
ci5hZGRIYW5kbGVyKGhhbmRsZXIpCi0gICAgaWYgbGV2ZWwgPT0gbG9nZ2luZy5ERUJVRzoKLSAg
ICAgICAgaGFuZGxlci5zZXRGb3JtYXR0ZXIobG9nZ2luZy5Gb3JtYXR0ZXIoJ1slKGFzY3RpbWUp
c10gICUobWVzc2FnZSlzJykpCi0gICAgZWxzZToKLSAgICAgICAgaGFuZGxlci5zZXRGb3JtYXR0
ZXIobG9nZ2luZy5Gb3JtYXR0ZXIoJyUobWVzc2FnZSlzJykpCi0KLWRlZiBmaW5kX2J1aWxkX2Rp
cmVjdG9yeSh0b3BfbGV2ZWwpOgotICAgIGRlZiBpc192YWxpZF9idWlsZF9kaXJlY3RvcnkoYnVp
bGRfZGlyKToKLSAgICAgICAgcmV0dXJuIG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihidWls
ZF9kaXIsICIubGlicyIpKQotCi0gICAgaWYgaXNfdmFsaWRfYnVpbGRfZGlyZWN0b3J5KHRvcF9s
ZXZlbCk6Ci0gICAgICAgIHJldHVybiB0b3BfbGV2ZWwKLQotICAgIGJ1aWxkX2RpciA9IG9zLnBh
dGguam9pbih0b3BfbGV2ZWwsICdXZWJLaXRCdWlsZCcpCi0gICAgaWYgaXNfdmFsaWRfYnVpbGRf
ZGlyZWN0b3J5KGJ1aWxkX2Rpcik6Ci0gICAgICAgIHJldHVybiBidWlsZF9kaXIKLQotICAgIGJ1
aWxkX2RpciA9IG9zLnBhdGguam9pbih0b3BfbGV2ZWwsICdXZWJLaXRCdWlsZCcsICdSZWxlYXNl
JykKLSAgICBpZiBpc192YWxpZF9idWlsZF9kaXJlY3RvcnkoYnVpbGRfZGlyKToKLSAgICAgICAg
cmV0dXJuIGJ1aWxkX2RpcgotCi0gICAgYnVpbGRfZGlyID0gb3MucGF0aC5qb2luKHRvcF9sZXZl
bCwgJ1dlYktpdEJ1aWxkJywgJ0RlYnVnJykKLSAgICBpZiBpc192YWxpZF9idWlsZF9kaXJlY3Rv
cnkoYnVpbGRfZGlyKToKLSAgICAgICAgcmV0dXJuIGJ1aWxkX2RpcgotICAgIHByaW50ICJDb3Vs
ZCBub3QgZGV0ZXJtaW5lIGJ1aWxkIGRpcmVjdG9yeS4iCi0gICAgc3lzLmV4aXQoMSkKLQotZG9j
X2RpciA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pKQotdG9wX2xl
dmVsID0gb3MucGF0aC5ub3JtcGF0aChvcy5wYXRoLmpvaW4oZG9jX2RpciwgJy4uJywgJy4uJywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcuLicsICcuLicsICcu
LicsICcuLicpKQotYnVpbGRfZGlyID0gZmluZF9idWlsZF9kaXJlY3RvcnkodG9wX2xldmVsKQot
Ci1vdXRwdXRfZGlyID0gb3MucGF0aC5qb2luKGJ1aWxkX2RpciwgIkRvY3VtZW50YXRpb24iLCAi
d2Via2l0Mmd0ayIpCi1zcmNfZGlyID0gb3MucGF0aC5qb2luKGRvY19kaXIsICcuLicpCi1saWJy
YXJ5X3BhdGggPSBvcy5wYXRoLmpvaW4oYnVpbGRfZGlyLCAiLmxpYnMiKQotcGtnX2NvbmZpZ19w
YXRoID0gXAotICAgIG9zLnBhdGguam9pbihidWlsZF9kaXIsICJTb3VyY2UiLCAiV2ViS2l0MiIs
ICJ3ZWJraXQyZ3RrLTMuMC5wYyIpCi0KLWRlcml2ZWRfc291cmNlcyA9IG9zLnBhdGguam9pbihi
dWlsZF9kaXIsICJEZXJpdmVkU291cmNlcyIsICJXZWJLaXQyIikKLWNmbGFncyA9IFwKLScgLUkn
ICsgb3MucGF0aC5qb2luKGRlcml2ZWRfc291cmNlcywgJ3dlYmtpdDJndGsnLCAnaW5jbHVkZScp
ICsgXAotJyAtSScgKyBvcy5wYXRoLmpvaW4oZGVyaXZlZF9zb3VyY2VzLCAnd2Via2l0Mmd0aycp
ICsgXAotJyAtSScgKyBvcy5wYXRoLmpvaW4oZGVyaXZlZF9zb3VyY2VzLCAnaW5jbHVkZScpICsg
XAotJyAtSScgKyBvcy5wYXRoLmpvaW4odG9wX2xldmVsLCAnU291cmNlJykKLScgLUknICsgc3Jj
X2RpcgotCi1pZ25vcmVkX2ZpbGVzID0gZ2xvYi5nbG9iKCIlcy8qUHJpdmF0ZS5oIiAlIHNyY19k
aXIpICsgXAotICAgICAgICAgICAgICAgIGdsb2IuZ2xvYigiJXMvUGFnZUNsaWVudEltcGwuKiIg
JSBzcmNfZGlyKSArIFwKLSAgICAgICAgICAgICAgICBnbG9iLmdsb2IoIiVzL3Rlc3RzLyouaCIg
JSBzcmNfZGlyKQotCi1jb25maWd1cmVfbG9nZ2luZygpCi1nZW5lcmF0b3IgPSBndGtkb2MuUGtn
Q29uZmlnR1RLRG9jKHBrZ19jb25maWdfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbW9kdWxlX25hbWU9IndlYmtpdDJndGsiLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBvdXRwdXRfZGlyPW91dHB1dF9kaXIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNvdXJjZV9kaXJzPVtzcmNfZGlyXSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZG9jX2Rpcj1kb2NfZGlyLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjZmxhZ3M9Y2ZsYWdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBsaWJyYXJ5X3BhdGg9bGlicmFyeV9wYXRoLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkZWNvcmF0b3I9IldFQktJVF9BUEkiLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkZXByZWNhdGlvbl9ndWFyZD0iV0VCS0lUX0RJU0FCTEVfREVQUkVD
QVRFRCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZWRfZmlsZXM9
aWdub3JlZF9maWxlcykKLWdlbmVyYXRvci5nZW5lcmF0ZShodG1sPSctLXNraXAtaHRtbCcgbm90
IGluIHN5cy5hcmd2KQotc3lzLmV4aXQoZ2VuZXJhdG9yLnNhd193YXJuaW5ncykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3MvZ3RrZG9jLnB5IGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy9ndGtkb2MucHkKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDMwN2I2MmU0NGZiZjg1MWJmNzc2ZTJmOWYyYjY4YTVkZDFjYjc3
MGYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy9ndGtkb2MucHkKKysrIC9kZXYvbnVsbApA
QCAtMSwzNzIgKzAsMCBAQAotIyAgQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCi0jCi0j
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCi0jICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdl
bmVyYWwgUHVibGljCi0jICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSMgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSMKLSMgIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotIyAgYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
LSMgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCi0jICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgotIwotIyAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExlc3NlciBHZW5lcmFsIFB1YmxpYwotIyAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotIyAgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMw
MSAgVVNBCi0jCi0KLWltcG9ydCBlcnJubwotaW1wb3J0IGxvZ2dpbmcKLWltcG9ydCBvcwotaW1w
b3J0IG9zLnBhdGgKLWltcG9ydCBzdWJwcm9jZXNzCi1pbXBvcnQgc3lzCi0KLQotY2xhc3MgR1RL
RG9jKG9iamVjdCk6Ci0KLSAgICAiIiJDbGFzcyB0aGF0IGNvbnRyb2xzIGEgZ3RrZG9jIHJ1bi4K
LQotICAgIEVhY2ggaW5zdGFuY2Ugb2YgdGhpcyBjbGFzcyByZXByZXNlbnRzIG9uZSBndGtkb2Mg
Y29uZmlndXJhdGlvbgotICAgIGFuZCBzZXQgb2YgZG9jdW1lbnRhdGlvbi4gVGhlIGd0a2RvYyBw
YWNrYWdlIGlzIGEgc2VyaWVzIG9mIHRvb2xzCi0gICAgcnVuIGNvbnNlY3V0aXZlbHkgd2hpY2gg
Y29udmVydHMgaW5saW5lIEMvQysrIGRvY3VtZW50YXRpb24gaW50bwotICAgIGRvY2Jvb2sgZmls
ZXMgYW5kIHRoZW4gaW50byBIVE1MLiBUaGlzIGNsYXNzIGlzIHN1aXRhYmxlIGZvcgotICAgIGdl
bmVyYXRpbmcgZG9jdW1lbnRhdGlvbiBvciBzaW1wbHkgdmVyaWZ5aW5nIGNvcnJlY3RuZXNzLgot
Ci0gICAgS2V5d29yZCBhcmd1bWVudHM6Ci0gICAgb3V0cHV0X2RpciAgICAgICAgIC0tIFRoZSBw
YXRoIHdoZXJlIGd0a2RvYyBvdXRwdXQgc2hvdWxkIGJlIHBsYWNlZC4gR2VuZXJhdGlvbgotICAg
ICAgICAgICAgICAgICAgICAgICAgICBtYXkgb3ZlcndyaXRlIGZpbGUgaW4gdGhpcyBkaXJlY3Rv
cnkuIFJlcXVpcmVkLgotICAgIG1vZHVsZV9uYW1lICAgICAgICAtLSBUaGUgbmFtZSBvZiB0aGUg
ZG9jdW1lbnRhdGlvbiBtb2R1bGUuIEZvciBsaWJyYXJpZXMgdGhpcwotICAgICAgICAgICAgICAg
ICAgICAgICAgICBpcyB0eXBpY2FsbHkgdGhlIGxpYnJhcnkgbmFtZS4gUmVxdWlyZWQgaWYgbm90
IGxpYnJhcnkgcGF0aAotICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBnaXZlbi4KLSAgICBz
b3VyY2VfZGlycyAgICAgICAgLS0gQSBsaXN0IG9mIHBhdGhzIHRvIHRoZSBzb3VyY2UgY29kZSB0
byBiZSBzY2FubmVkLiBSZXF1aXJlZC4KLSAgICBpZ25vcmVkX2ZpbGVzICAgICAgLS0gQSBsaXN0
IG9mIGZpbGVuYW1lcyB0byBpZ25vcmUgaW4gdGhlIHNvdXJjZSBkaXJlY3RvcnkuIEl0IGlzCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgIG9ubHkgbmVjZXNzYXJ5IHRvIHByb3ZpZGUgdGhlIGJh
c2VuYW1lcyBvZiB0aGVzZSBmaWxlcy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwaWNh
bGx5IGl0IGlzIGltcG9ydGFudCB0byBwcm92aWRlIGFuIHVwZGF0ZWQgbGlzdCBvZgotICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZ25vcmVkIGZpbGVzIHRvIHByZXZlbnQgd2FybmluZ3MgYWJv
dXQgdW5kb2N1bWVudGVkIHN5bWJvbHMuCi0gICAgZGVjb3JhdG9yICAgICAgICAgIC0tIElmIGEg
ZGVjb3JhdG9yIGlzIHVzZWQgdG8gdW5oaWRlIGNlcnRhaW4gc3ltYm9scyBpbiBoZWFkZXIKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXMgdGhpcyBwYXJhbWV0ZXIgaXMgcmVxdWlyZWQg
Zm9yIHN1Y2Nlc3NmdWwgc2Nhbm5pbmcuCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChkZWZh
dWx0ICcnKQotICAgIGRlcHJlY2F0aW9uX2d1YXJkICAtLSBndGtkb2MgdHJpZXMgdG8gZW5zdXJl
IHRoYXQgc3ltYm9scyBtYXJrZWQgYXMgZGVwcmVjYXRlZAotICAgICAgICAgICAgICAgICAgICAg
ICAgICBhcmUgZW5jYXNlZCBpbiB0aGlzIEMgcHJlcHJvY2Vzc29yIGRlZmluZS4gVGhpcyBpcyBy
ZXF1aXJlZAotICAgICAgICAgICAgICAgICAgICAgICAgICB0byBhdm9pZCBndGtkb2Mgd2Fybmlu
Z3MuIChkZWZhdWx0ICcnKQotICAgIGNmbGFncyAgICAgICAgICAgICAtLSBUaGlzIHBhcmFtZXRl
ciBzcGVjaWZpZXMgYW55IHByZXByb2Nlc3NvciBmbGFncyBuZWNlc3NhcnkgZm9yCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgIGJ1aWxkaW5nIHRoZSBzY2FubmVyIGJpbmFyeSBkdXJpbmcgZ3Rr
ZG9jLXNjYW5vYmouIFR5cGljYWxseQotICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzIGlu
Y2x1ZGVzIGFsbCBhYnNvbHV0ZSBpbmNsdWRlIHBhdGhzIG5lY2Vzc2FyeSB0byByZXNvbHZlCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgIGFsbCBoZWFkZXIgZGVwZW5kZW5jaWVzLiAoZGVmYXVs
dCAnJykKLSAgICBsZGZsYWdzICAgICAgICAgICAgLS0gVGhpcyBwYXJhbWV0ZXIgc3BlY2lmaWVz
IGFueSBsaW5rZXIgZmxhZ3MgbmVjZXNzYXJ5IGZvcgotICAgICAgICAgICAgICAgICAgICAgICAg
ICBidWlsZGluZyB0aGUgc2Nhbm5lciBiaW5hcnkgZHVyaW5nIGd0a2RvYy1zY2Fub2JqLiBUeXBp
Y2FsbHkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyBpbmNsdWRlcyAiLWx5b3VybGli
cmFyeW5hbWUiLiAoZGVmYXVsdCAnJykKLSAgICBsaWJyYXJ5X3BhdGggICAgICAgLS0gVGhpcyBw
YXJhbWV0ZXIgc3BlY2lmaWVzIHRoZSBwYXRoIHRvIHRoZSBkaXJlY3Rvcnkgd2hlcmUgeW91Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcnkgcmVzaWRlcyB1c2VkIGZvciBidWlsZGlu
ZyB0aGUgc2Nhbm5lciBiaW5hcnkgZHVyaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGd0
a2RvYy1zY2Fub2JqLiAoZGVmYXVsdCAnJykKLQotICAgIGRvY19kaXIgICAgICAgICAgICAtLSBU
aGUgcGF0aCB0byBvdGhlciBkb2N1bWVudGF0aW9uIGZpbGVzIG5lY2Vzc2FyeSB0byBidWlsZAot
ICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZG9jdW1lbnRhdGlvbi4gVGhpcyBmaWxlcyBp
biB0aGlzIGRpcmVjdG9yeSBhcyB3ZWxsIGFzCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHRo
ZSBmaWxlcyBpbiB0aGUgJ2h0bWwnIHN1YmRpcmVjdG9yeSB3aWxsIGJlIGNvcGllZAotICAgICAg
ICAgICAgICAgICAgICAgICAgICByZWN1cnNpdmVseSBpbnRvIHRoZSBvdXRwdXQgZGlyZWN0b3J5
LiAoZGVmYXVsdCAnJykKLSAgICBtYWluX3NnbWxfZmlsZSAgICAgLS0gVGhlIHBhdGggb3IgbmFt
ZSAoaWYgYSBkb2NfZGlyIGlzIGdpdmVuKSBvZiB0aGUgU0dNTCBmaWxlCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgIHRoYXQgaXMgdGhlIGNvbnNpZGVyZWQgdGhlIG1haW4gcGFnZSBvZiB5b3Vy
IGRvY3VtZW50YXRpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChkZWZhdWx0OiA8bW9k
dWxlX25hbWU+LWRvY3Muc2dtbCkKLSAgICB2ZXJzaW9uICAgICAgICAgICAgLS0gVGhlIHZlcnNp
b24gbnVtYmVyIG9mIHRoZSBtb2R1bGUuIElmIHRoaXMgaXMgcHJvdmlkZWQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgIGEgdmVyc2lvbi54bWwgZmlsZSBjb250YWluaW5nIHRoZSB2ZXJzaW9u
IHdpbGwgYmUgY3JlYXRlZAotICAgICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUgb3V0cHV0
IGRpcmVjdG9yeSBkdXJpbmcgZG9jdW1lbnRhdGlvbiBnZW5lcmF0aW9uLgotCi0gICAgaW50ZXJh
Y3RpdmUgICAgICAgIC0tIFdoZXRoZXIgb3Igbm90IGVycm9ycyBvciB3YXJuaW5ncyBzaG91bGQg
cHJvbXB0IHRoZSB1c2VyCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGNvbnRpbnVlIG9y
IG5vdC4gV2hlbiB0aGlzIHZhbHVlIGlzIGZhbHNlLCBnZW5lcmF0aW9uCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgIHdpbGwgY29udGludWUgZGVzcGl0ZSB3YXJuaW5ncy4gKGRlZmF1bHQgRmFs
c2UpCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgKiphcmdzKToKLQotICAgICAg
ICAjIFBhcmFtZXRlcnMgc3BlY2lmaWMgdG8gc2Nhbm5pbmcuCi0gICAgICAgIHNlbGYubW9kdWxl
X25hbWUgPSAnJwotICAgICAgICBzZWxmLnNvdXJjZV9kaXJzID0gW10KLSAgICAgICAgc2VsZi5p
Z25vcmVkX2ZpbGVzID0gW10KLSAgICAgICAgc2VsZi5kZWNvcmF0b3IgPSAnJwotICAgICAgICBz
ZWxmLmRlcHJlY2F0aW9uX2d1YXJkID0gJycKLQotICAgICAgICAjIFBhcmFtZXRlcnMgc3BlY2lm
aWMgdG8gZ3RrZG9jLXNjYW5vYmouCi0gICAgICAgIHNlbGYuY2ZsYWdzID0gJycKLSAgICAgICAg
c2VsZi5sZGZsYWdzID0gJycKLSAgICAgICAgc2VsZi5saWJyYXJ5X3BhdGggPSAnJwotCi0gICAg
ICAgICMgUGFyYW1ldGVycyBzcGVjaWZpYyB0byBnZW5lcmF0aW9uLgotICAgICAgICBzZWxmLm91
dHB1dF9kaXIgPSAnJwotICAgICAgICBzZWxmLmRvY19kaXIgPSAnJwotICAgICAgICBzZWxmLm1h
aW5fc2dtbF9maWxlID0gJycKLQotICAgICAgICBzZWxmLmludGVyYWN0aXZlID0gRmFsc2UKLQot
ICAgICAgICBzZWxmLmxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdndGtkb2MnKQotCi0gICAg
ICAgIGZvciBrZXksIHZhbHVlIGluIGFyZ3MuaXRlcml0ZW1zKCk6Ci0gICAgICAgICAgICBzZXRh
dHRyKHNlbGYsIGtleSwgdmFsdWUpCi0KLSAgICAgICAgZGVmIHJhaXNlX2Vycm9yX2lmX25vdF9z
cGVjaWZpZWQoa2V5KToKLSAgICAgICAgICAgIGlmIG5vdCBnZXRhdHRyKHNlbGYsIGtleSk6Ci0g
ICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCclcyBub3Qgc3BlY2lmaWVkLicgJSBrZXkp
Ci0KLSAgICAgICAgcmFpc2VfZXJyb3JfaWZfbm90X3NwZWNpZmllZCgnb3V0cHV0X2RpcicpCi0g
ICAgICAgIHJhaXNlX2Vycm9yX2lmX25vdF9zcGVjaWZpZWQoJ3NvdXJjZV9kaXJzJykKLSAgICAg
ICAgcmFpc2VfZXJyb3JfaWZfbm90X3NwZWNpZmllZCgnbW9kdWxlX25hbWUnKQotCi0gICAgICAg
ICMgTWFrZSBhbGwgcGF0aHMgYWJzb2x1dGUgaW4gY2FzZSB3ZSB3ZXJlIHBhc3NlZCByZWxhdGl2
ZSBwYXRocywgc2luY2UKLSAgICAgICAgIyB3ZSBjaGFuZ2UgdGhlIGN1cnJlbnQgd29ya2luZyBk
aXJlY3Rvcnkgd2hlbiBleGVjdXRpbmcgc3ViY29tbWFuZHMuCi0gICAgICAgIHNlbGYub3V0cHV0
X2RpciA9IG9zLnBhdGguYWJzcGF0aChzZWxmLm91dHB1dF9kaXIpCi0gICAgICAgIHNlbGYuc291
cmNlX2RpcnMgPSBbb3MucGF0aC5hYnNwYXRoKHgpIGZvciB4IGluIHNlbGYuc291cmNlX2RpcnNd
Ci0gICAgICAgIGlmIHNlbGYubGlicmFyeV9wYXRoOgotICAgICAgICAgICAgc2VsZi5saWJyYXJ5
X3BhdGggPSBvcy5wYXRoLmFic3BhdGgoc2VsZi5saWJyYXJ5X3BhdGgpCi0KLSAgICAgICAgaWYg
bm90IHNlbGYubWFpbl9zZ21sX2ZpbGU6Ci0gICAgICAgICAgICBzZWxmLm1haW5fc2dtbF9maWxl
ID0gc2VsZi5tb2R1bGVfbmFtZSArICItZG9jcy5zZ21sIgotCi0gICAgZGVmIGdlbmVyYXRlKHNl
bGYsIGh0bWw9VHJ1ZSk6Ci0gICAgICAgIHNlbGYuc2F3X3dhcm5pbmdzID0gRmFsc2UKLQotICAg
ICAgICBzZWxmLl9jb3B5X2RvY19maWxlc190b19vdXRwdXRfZGlyKGh0bWwpCi0gICAgICAgIHNl
bGYuX3dyaXRlX3ZlcnNpb25feG1sKCkKLSAgICAgICAgc2VsZi5fcnVuX2d0a2RvY19zY2FuKCkK
LSAgICAgICAgc2VsZi5fcnVuX2d0a2RvY19zY2FuZ29iaigpCi0gICAgICAgIHNlbGYuX3J1bl9n
dGtkb2NfbWt0bXBsKCkKLSAgICAgICAgc2VsZi5fcnVuX2d0a2RvY19ta2RiKCkKLQotICAgICAg
ICBpZiBub3QgaHRtbDoKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgIHNlbGYuX3J1bl9n
dGtkb2NfbWtodG1sKCkKLSAgICAgICAgc2VsZi5fcnVuX2d0a2RvY19maXh4cmVmKCkKLQotICAg
IGRlZiBfZGVsZXRlX2ZpbGVfaWZfZXhpc3RzKHNlbGYsIHBhdGgpOgotICAgICAgICBpZiBub3Qg
b3MuYWNjZXNzKHBhdGgsIG9zLkZfT0sgfCBvcy5SX09LKToKLSAgICAgICAgICAgIHJldHVybgot
ICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygnZGVsZXRpbmcgJXMnLCBwYXRoKQotICAgICAgICBv
cy51bmxpbmsocGF0aCkKLQotICAgIGRlZiBfY3JlYXRlX2RpcmVjdG9yeV9pZl9ub25leGlzdGVu
dChzZWxmLCBwYXRoKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgb3MubWFrZWRpcnMocGF0
aCkKLSAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyb3I6Ci0gICAgICAgICAgICBpZiBlcnJv
ci5lcnJubyAhPSBlcnJuby5FRVhJU1Q6Ci0gICAgICAgICAgICAgICAgcmFpc2UKLQotICAgIGRl
ZiBfcmFpc2VfZXhjZXB0aW9uX2lmX2ZpbGVfaW5hY2Nlc3NpYmxlKHNlbGYsIHBhdGgpOgotICAg
ICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMocGF0aCkgb3Igbm90IG9zLmFjY2VzcyhwYXRoLCBv
cy5SX09LKToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiQ291bGQgbm90IGFjY2VzcyBm
aWxlIGF0OiAlcyIgJSBwYXRoKQotCi0gICAgZGVmIF9vdXRwdXRfaGFzX3dhcm5pbmdzKHNlbGYs
IG91dHB1dHMpOgotICAgICAgICBmb3Igb3V0cHV0IGluIG91dHB1dHM6Ci0gICAgICAgICAgICBp
ZiBvdXRwdXQgYW5kIG91dHB1dC5maW5kKCd3YXJuaW5nJyk6Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIFRydWUKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICBkZWYgX2Fza195ZXNfb3Jfbm9f
cXVlc3Rpb24oc2VsZiwgcXVlc3Rpb24pOgotICAgICAgICBpZiBub3Qgc2VsZi5pbnRlcmFjdGl2
ZToKLSAgICAgICAgICAgIHJldHVybiBUcnVlCi0KLSAgICAgICAgcXVlc3Rpb24gKz0gJyBbeS9O
XSAnCi0gICAgICAgIGFuc3dlciA9IE5vbmUKLSAgICAgICAgd2hpbGUgYW5zd2VyICE9ICd5JyBh
bmQgYW5zd2VyICE9ICduJyBhbmQgYW5zd2VyICE9ICcnOgotICAgICAgICAgICAgYW5zd2VyID0g
cmF3X2lucHV0KHF1ZXN0aW9uKS5sb3dlcigpCi0gICAgICAgIHJldHVybiBhbnN3ZXIgPT0gJ3kn
Ci0KLSAgICBkZWYgX3J1bl9jb21tYW5kKHNlbGYsIGFyZ3MsIGVudj1Ob25lLCBjd2Q9Tm9uZSwg
cHJpbnRfb3V0cHV0PVRydWUpOgotICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCJSdW5uaW5nICVz
IiwgYXJnc1swXSkKLSAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIkZ1bGwgY29tbWFuZCBhcmdz
OiAlcyIsIHN0cihhcmdzKSkKLQotICAgICAgICBwcm9jZXNzID0gc3VicHJvY2Vzcy5Qb3Blbihh
cmdzLCBlbnY9ZW52LCBjd2Q9Y3dkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQotICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHBy
b2Nlc3MuY29tbXVuaWNhdGUoKQotCi0gICAgICAgIGlmIHByaW50X291dHB1dDoKLSAgICAgICAg
ICAgIGlmIHN0ZG91dDoKLSAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKHN0ZG91dCkK
LSAgICAgICAgICAgIGlmIHN0ZGVycjoKLSAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRl
KHN0ZGVycikKLQotICAgICAgICBpZiBwcm9jZXNzLnJldHVybmNvZGUgIT0gMDoKLSAgICAgICAg
ICAgIHJhaXNlIEV4Y2VwdGlvbignJXMgcHJvZHVjZWQgYSBub24temVybyByZXR1cm4gY29kZSAl
aScKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAoYXJnc1swXSwgcHJvY2Vzcy5yZXR1
cm5jb2RlKSkKLQotICAgICAgICBpZiAnd2FybmluZycgaW4gc3RkZXJyIG9yICd3YXJuaW5nJyBp
biBzdGRvdXQ6Ci0gICAgICAgICAgICBzZWxmLnNhd193YXJuaW5ncyA9IFRydWUKLSAgICAgICAg
ICAgIGlmIG5vdCBzZWxmLl9hc2tfeWVzX29yX25vX3F1ZXN0aW9uKCclcyBwcm9kdWNlZCB3YXJu
aW5ncywgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J3RyeSB0byBjb250aW51ZT8nICUgYXJnc1swXSk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgRXhj
ZXB0aW9uKCclcyBzdGVwIGZhaWxlZCcgJSBhcmdzWzBdKQotCi0gICAgICAgIHJldHVybiBzdGRv
dXQuc3RyaXAoKQotCi0gICAgZGVmIF9jb3B5X2RvY19maWxlc190b19vdXRwdXRfZGlyKHNlbGYs
IGh0bWw9VHJ1ZSk6Ci0gICAgICAgIGlmIG5vdCBzZWxmLmRvY19kaXI6Ci0gICAgICAgICAgICBz
ZWxmLmxvZ2dlci5pbmZvKCdOb3QgY29weWluZyBhbnkgZmlsZXMgZnJvbSBkb2MgZGlyZWN0b3J5
LCcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyBiZWNhdXNlIG5vIGRvYyBkaXJlY3Rv
cnkgZ2l2ZW4uJykKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgIGRlZiBjb3B5X2ZpbGVf
cmVwbGFjaW5nX2V4aXN0aW5nKHNyYywgZGVzdCk6Ci0gICAgICAgICAgICBpZiBvcy5wYXRoLmlz
ZGlyKHNyYyk6Ci0gICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoJ3NraXBwZWQgZGly
ZWN0b3J5ICVzJywgIHNyYykKLSAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgIGlm
IG5vdCBvcy5hY2Nlc3Moc3JjLCBvcy5GX09LIHwgb3MuUl9PSyk6Ci0gICAgICAgICAgICAgICAg
c2VsZi5sb2dnZXIuZGVidWcoJ3NraXBwZWQgdW5yZWFkYWJsZSAlcycsIHNyYykKLSAgICAgICAg
ICAgICAgICByZXR1cm4KLQotICAgICAgICAgICAgc2VsZi5fZGVsZXRlX2ZpbGVfaWZfZXhpc3Rz
KGRlc3QpCi0KLSAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCdjcmVhdGVkICVzJywgZGVz
dCkKLSAgICAgICAgICAgIG9zLmxpbmsoc3JjLCBkZXN0KQotCi0gICAgICAgIGRlZiBjb3B5X2Fs
bF9maWxlc19pbl9kaXJlY3Rvcnkoc3JjLCBkZXN0KToKLSAgICAgICAgICAgIGZvciBwYXRoIGlu
IG9zLmxpc3RkaXIoc3JjKToKLSAgICAgICAgICAgICAgICBjb3B5X2ZpbGVfcmVwbGFjaW5nX2V4
aXN0aW5nKG9zLnBhdGguam9pbihzcmMsIHBhdGgpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKGRlc3QsIHBhdGgpKQotCi0gICAgICAg
IHNlbGYubG9nZ2VyLmluZm8oJ0NvcHlpbmcgdGVtcGxhdGUgZmlsZXMgdG8gb3V0cHV0IGRpcmVj
dG9yeS4uLicpCi0gICAgICAgIHNlbGYuX2NyZWF0ZV9kaXJlY3RvcnlfaWZfbm9uZXhpc3RlbnQo
c2VsZi5vdXRwdXRfZGlyKQotICAgICAgICBjb3B5X2FsbF9maWxlc19pbl9kaXJlY3Rvcnkoc2Vs
Zi5kb2NfZGlyLCBzZWxmLm91dHB1dF9kaXIpCi0KLSAgICAgICAgaWYgbm90IGh0bWw6Ci0gICAg
ICAgICAgICByZXR1cm4KLQotICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCdDb3B5aW5nIEhUTUwg
ZmlsZXMgdG8gb3V0cHV0IGRpcmVjdG9yeS4uLicpCi0gICAgICAgIGh0bWxfc3JjX2RpciA9IG9z
LnBhdGguam9pbihzZWxmLmRvY19kaXIsICdodG1sJykKLSAgICAgICAgaHRtbF9kZXN0X2RpciA9
IG9zLnBhdGguam9pbihzZWxmLm91dHB1dF9kaXIsICdodG1sJykKLSAgICAgICAgc2VsZi5fY3Jl
YXRlX2RpcmVjdG9yeV9pZl9ub25leGlzdGVudChodG1sX2Rlc3RfZGlyKQotCi0gICAgICAgIGlm
IG9zLnBhdGguZXhpc3RzKGh0bWxfc3JjX2Rpcik6Ci0gICAgICAgICAgICBjb3B5X2FsbF9maWxl
c19pbl9kaXJlY3RvcnkoaHRtbF9zcmNfZGlyLCBodG1sX2Rlc3RfZGlyKQotCi0gICAgZGVmIF93
cml0ZV92ZXJzaW9uX3htbChzZWxmKToKLSAgICAgICAgaWYgbm90IHNlbGYudmVyc2lvbjoKLSAg
ICAgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oJ05vIHZlcnNpb24gc3BlY2lmaWVkLCBzbyBub3Qg
d3JpdGluZyB2ZXJzaW9uLnhtbCcpCi0gICAgICAgICAgICByZXR1cm4KLQotICAgICAgICB2ZXJz
aW9uX3htbF9wYXRoID0gb3MucGF0aC5qb2luKHNlbGYub3V0cHV0X2RpciwgJ3ZlcnNpb24ueG1s
JykKLSAgICAgICAgc3JjX3ZlcnNpb25feG1sX3BhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi5kb2Nf
ZGlyLCAndmVyc2lvbi54bWwnKQotCi0gICAgICAgICMgRG9uJ3Qgb3ZlcndyaXRlIHZlcnNpb24u
eG1sIGlmIGl0IHdhcyBpbiB0aGUgZG9jIGRpcmVjdG9yeS4KLSAgICAgICAgaWYgb3MucGF0aC5l
eGlzdHModmVyc2lvbl94bWxfcGF0aCkgYW5kIFwKLSAgICAgICAgICAgb3MucGF0aC5leGlzdHMo
c3JjX3ZlcnNpb25feG1sX3BhdGgpOgotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgb3V0
cHV0X2ZpbGUgPSBvcGVuKHZlcnNpb25feG1sX3BhdGgsICd3JykKLSAgICAgICAgb3V0cHV0X2Zp
bGUud3JpdGUoc2VsZi52ZXJzaW9uKQotICAgICAgICBvdXRwdXRfZmlsZS5jbG9zZSgpCi0KLSAg
ICBkZWYgX3J1bl9ndGtkb2Nfc2NhbihzZWxmKToKLSAgICAgICAgYXJncyA9IFsnZ3RrZG9jLXNj
YW4nLAotICAgICAgICAgICAgICAgICctLW1vZHVsZT0lcycgJSBzZWxmLm1vZHVsZV9uYW1lLAot
ICAgICAgICAgICAgICAgICctLXJlYnVpbGQtdHlwZXMnXQotCi0gICAgICAgICMgRWFjaCBzb3Vy
Y2UgZGlyZWN0b3J5IHNob3VsZCBiZSBoYXZlIGl0cyBvd24gIi0tc291cmNlLWRpcj0iIHByZWZp
eC4KLSAgICAgICAgYXJncy5leHRlbmQoWyctLXNvdXJjZS1kaXI9JXMnICUgcGF0aCBmb3IgcGF0
aCBpbiBzZWxmLnNvdXJjZV9kaXJzXSkKLQotICAgICAgICBpZiBzZWxmLmRlY29yYXRvcjoKLSAg
ICAgICAgICAgIGFyZ3MuYXBwZW5kKCctLWlnbm9yZS1kZWNvcmF0b3JzPSVzJyAlIHNlbGYuZGVj
b3JhdG9yKQotICAgICAgICBpZiBzZWxmLmRlcHJlY2F0aW9uX2d1YXJkOgotICAgICAgICAgICAg
YXJncy5hcHBlbmQoJy0tZGVwcmVjYXRlZC1ndWFyZHM9JXMnICUgc2VsZi5kZXByZWNhdGlvbl9n
dWFyZCkKLSAgICAgICAgaWYgc2VsZi5vdXRwdXRfZGlyOgotICAgICAgICAgICAgYXJncy5hcHBl
bmQoJy0tb3V0cHV0LWRpcj0lcycgJSBzZWxmLm91dHB1dF9kaXIpCi0KLSAgICAgICAgIyBndGtk
b2Mtc2NhbiB3YW50cyB0aGUgYmFzZW5hbWVzIG9mIGlnbm9yZWQgaGVhZGVycywgc28gc3RyaXAg
dGhlCi0gICAgICAgICMgZGlybmFtZS4gRGlmZmVyZW50IGZyb20gIi0tc291cmNlLWRpciIsIHRo
ZSBoZWFkZXJzIHNob3VsZCBiZQotICAgICAgICAjIHNwZWNpZmllZCBhcyBvbmUgbG9uZyBzdHJp
bmcuCi0gICAgICAgIGlmIHNlbGYuaWdub3JlZF9maWxlczoKLSAgICAgICAgICAgIGlnbm9yZWRf
ZmlsZXNfYmFzZW5hbWVzID0gXAotICAgICAgICAgICAgICAgIFtvcy5wYXRoLmJhc2VuYW1lKHgp
IGZvciB4IGluIHNlbGYuaWdub3JlZF9maWxlc10KLSAgICAgICAgICAgIGFyZ3MuYXBwZW5kKCct
LWlnbm9yZS1oZWFkZXJzPSVzJyAlICcgJy5qb2luKGlnbm9yZWRfZmlsZXNfYmFzZW5hbWVzKSkK
LQotICAgICAgICBzZWxmLl9ydW5fY29tbWFuZChhcmdzKQotCi0gICAgZGVmIF9ydW5fZ3RrZG9j
X3NjYW5nb2JqKHNlbGYpOgotICAgICAgICBlbnYgPSBvcy5lbnZpcm9uCi0gICAgICAgIGxkZmxh
Z3MgPSBzZWxmLmxkZmxhZ3MKLSAgICAgICAgaWYgc2VsZi5saWJyYXJ5X3BhdGg6Ci0gICAgICAg
ICAgICBsZGZsYWdzID0gJyAiLUwlcyIgJyAlIHNlbGYubGlicmFyeV9wYXRoICsgbGRmbGFncwot
ICAgICAgICAgICAgZW52WydSVU4nXSA9ICdMRF9MSUJSQVJZX1BBVEg9IiVzIiAnICUgc2VsZi5s
aWJyYXJ5X3BhdGgKLSAgICAgICAgaWYgbGRmbGFnczoKLSAgICAgICAgICAgIGVudlsnTERGTEFH
UyddID0gbGRmbGFncwotICAgICAgICBpZiBzZWxmLmNmbGFnczoKLSAgICAgICAgICAgIGVudlsn
Q0ZMQUdTJ10gPSBzZWxmLmNmbGFncwotCi0gICAgICAgIGlmICdDRkxBR1MnIGluIGVudjoKLSAg
ICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCdDRkxBR1M9JXMnLCBlbnZbJ0NGTEFHUyddKQot
ICAgICAgICBpZiAnTERGTEFHUycgaW4gZW52OgotICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVi
dWcoJ0xERkxBR1MgJXMnLCBlbnZbJ0xERkxBR1MnXSkKLSAgICAgICAgaWYgJ1JVTicgaW4gZW52
OgotICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoJ1JVTj0lcycsIGVudlsnUlVOJ10pCi0g
ICAgICAgIHNlbGYuX3J1bl9jb21tYW5kKFsnZ3RrZG9jLXNjYW5nb2JqJywgJy0tbW9kdWxlPSVz
JyAlIHNlbGYubW9kdWxlX25hbWVdLAotICAgICAgICAgICAgICAgICAgICAgICAgICBlbnY9ZW52
LCBjd2Q9c2VsZi5vdXRwdXRfZGlyKQotCi0gICAgZGVmIF9ydW5fZ3RrZG9jX21rdG1wbChzZWxm
KToKLSAgICAgICAgYXJncyA9IFsnZ3RrZG9jLW1rdG1wbCcsICctLW1vZHVsZT0lcycgJSBzZWxm
Lm1vZHVsZV9uYW1lXQotICAgICAgICBzZWxmLl9ydW5fY29tbWFuZChhcmdzLCBjd2Q9c2VsZi5v
dXRwdXRfZGlyKQotCi0gICAgZGVmIF9ydW5fZ3RrZG9jX21rZGIoc2VsZik6Ci0gICAgICAgIHNn
bWxfZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLm91dHB1dF9kaXIsIHNlbGYubWFpbl9zZ21sX2Zp
bGUpCi0gICAgICAgIHNlbGYuX3JhaXNlX2V4Y2VwdGlvbl9pZl9maWxlX2luYWNjZXNzaWJsZShz
Z21sX2ZpbGUpCi0KLSAgICAgICAgYXJncyA9IFsnZ3RrZG9jLW1rZGInLAotICAgICAgICAgICAg
ICAgICctLW1vZHVsZT0lcycgJSBzZWxmLm1vZHVsZV9uYW1lLAotICAgICAgICAgICAgICAgICct
LW1haW4tc2dtbC1maWxlPSVzJyAlIHNnbWxfZmlsZSwKLSAgICAgICAgICAgICAgICAnLS1zb3Vy
Y2Utc3VmZml4ZXM9aCxjLGNwcCxjYycsCi0gICAgICAgICAgICAgICAgJy0tb3V0cHV0LWZvcm1h
dD14bWwnLAotICAgICAgICAgICAgICAgICctLXNnbWwtbW9kZSddCi0KLSAgICAgICAgIyBFYWNo
IGRpcmVjdG9yeSBzaG91bGQgYmUgaGF2ZSBpdHMgb3duICItLXNvdXJjZS1kaXI9IiBwcmVmaXgu
Ci0gICAgICAgIGFyZ3MuZXh0ZW5kKFsnLS1zb3VyY2UtZGlyPSVzJyAlIHBhdGggZm9yIHBhdGgg
aW4gc2VsZi5zb3VyY2VfZGlyc10pCi0gICAgICAgIHNlbGYuX3J1bl9jb21tYW5kKGFyZ3MsIGN3
ZD1zZWxmLm91dHB1dF9kaXIpCi0KLSAgICBkZWYgX3J1bl9ndGtkb2NfbWtodG1sKHNlbGYpOgot
ICAgICAgICBodG1sX2Rlc3RfZGlyID0gb3MucGF0aC5qb2luKHNlbGYub3V0cHV0X2RpciwgJ2h0
bWwnKQotICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2RpcihodG1sX2Rlc3RfZGlyKToKLSAgICAg
ICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiJXMgaXMgbm90IGEgZGlyZWN0b3J5LCBjb3VsZCBub3Qg
Z2VuZXJhdGUgSFRNTCIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIGh0bWxfZGVzdF9k
aXIpCi0gICAgICAgIGVsaWYgbm90IG9zLmFjY2VzcyhodG1sX2Rlc3RfZGlyLCBvcy5YX09LIHwg
b3MuUl9PSyB8IG9zLldfT0spOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJDb3VsZCBu
b3QgYWNjZXNzICVzIHRvIGdlbmVyYXRlIEhUTUwiCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJSBodG1sX2Rlc3RfZGlyKQotCi0gICAgICAgICMgZ3RrZG9jLW1raHRtbCBleHBlY3RzIHRo
ZSBTR01MIHBhdGggdG8gYmUgYWJzb2x1dGUuCi0gICAgICAgIHNnbWxfZmlsZSA9IG9zLnBhdGgu
am9pbihvcy5wYXRoLmFic3BhdGgoc2VsZi5vdXRwdXRfZGlyKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNlbGYubWFpbl9zZ21sX2ZpbGUpCi0gICAgICAgIHNlbGYuX3JhaXNl
X2V4Y2VwdGlvbl9pZl9maWxlX2luYWNjZXNzaWJsZShzZ21sX2ZpbGUpCi0KLSAgICAgICAgc2Vs
Zi5fcnVuX2NvbW1hbmQoWydndGtkb2MtbWtodG1sJywgc2VsZi5tb2R1bGVfbmFtZSwgc2dtbF9m
aWxlXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY3dkPWh0bWxfZGVzdF9kaXIpCi0KLSAg
ICBkZWYgX3J1bl9ndGtkb2NfZml4eHJlZihzZWxmKToKLSAgICAgICAgc2VsZi5fcnVuX2NvbW1h
bmQoWydndGtkb2MtZml4eHJlZicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1tb2R1
bGUtZGlyPWh0bWwnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0taHRtbC1kaXI9aHRt
bCddLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjd2Q9c2VsZi5vdXRwdXRfZGlyKQotCi0K
LWNsYXNzIFBrZ0NvbmZpZ0dUS0RvYyhHVEtEb2MpOgotCi0gICAgIiIiQ2xhc3MgcmVhZHMgYSBs
aWJyYXJ5J3MgcGtnY29uZmlnIGZpbGUgdG8gZ3Vlc3MgZ3RrZG9jIHBhcmFtZXRlcnMuCi0KLSAg
ICBTb21lIGd0a2RvYyBwYXJhbWV0ZXJzIGNhbiBiZSBndWVzc2VkIGJ5IHJlYWRpbmcgYSBsaWJy
YXJ5J3MgcGtnY29uZmlnCi0gICAgZmlsZSwgaW5jbHVkaW5nIHRoZSBjZmxhZ3MsIGxkZmxhZ3Mg
YW5kIHZlcnNpb24gcGFyYW1ldGVycy4gSWYgeW91Ci0gICAgcHJvdmlkZSB0aGVzZSBwYXJhbWV0
ZXJzIGFzIHdlbGwsIHRoZXkgd2lsbCBiZSBhcHBlbmRlZCB0byB0aGUgb25lcwotICAgIGd1ZXNz
ZWQgdmlhIHRoZSBwa2djb25maWcgZmlsZS4KLQotICAgIEtleXdvcmQgYXJndW1lbnRzOgotICAg
ICAgcGtnX2NvbmZpZ19wYXRoIC0tIFBhdGggdG8gdGhlIHBrZ2NvbmZpZyBmaWxlIGZvciB0aGUg
bGlicmFyeS4gUmVxdWlyZWQuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgcGtn
X2NvbmZpZ19wYXRoLCAqKmFyZ3MpOgotICAgICAgICBzdXBlcihQa2dDb25maWdHVEtEb2MsIHNl
bGYpLl9faW5pdF9fKCoqYXJncykKLQotICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMocGtn
X2NvbmZpZ19wYXRoKToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignQ291bGQgbm90IGZp
bmQgcGtnLWNvbmZpZyBmaWxlIGF0OiAlcycKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAl
IHBrZ19jb25maWdfcGF0aCkKLQotICAgICAgICBzZWxmLmNmbGFncyArPSAiICIgKyBzZWxmLl9y
dW5fY29tbWFuZChbJ3BrZy1jb25maWcnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcGtnX2NvbmZpZ19wYXRoLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tY2ZsYWdzJ10sIHByaW50X291dHB1dD1GYWxz
ZSkKLSAgICAgICAgc2VsZi5sZGZsYWdzICs9ICIgIiArIHNlbGYuX3J1bl9jb21tYW5kKFsncGtn
LWNvbmZpZycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwa2dfY29uZmlnX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnLS1saWJzJ10sIHByaW50X291dHB1dD1GYWxzZSkKLSAgICAgICAgc2VsZi52
ZXJzaW9uID0gc2VsZi5fcnVuX2NvbW1hbmQoWydwa2ctY29uZmlnJywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBrZ19jb25maWdfcGF0aCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLW1vZHZlcnNpb24nXSwgcHJpbnRfb3V0
cHV0PUZhbHNlKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IDc1ZjRlZmZjZWFiYzU0OWI2N2YxNDQzMjg2ZjYzMDE3ZjA2MzBkZWUuLjJjODM4OGVj
MWNhN2ZmODBiNTM2M2FkODNlNWFkNGQ0ZTE4ZTE0YjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMS0xMS0xNyAg
TWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10g
SW50ZWdyYXRlIGJ1aWxkLWd0a2RvYyBpbnRvIGJ1aWxkLXdlYmtpdCBhbmQgbWFrZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzI2MjYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFt
OiBBZGRlZCBzdXBwb3J0IGZvciBuZXcgc2NyaXB0cyBhbmQgIm1ha2UgZG9jcyIuCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRkaXJzLnBtOiBDYWxsIGdlbmVyYXRlLWd0a2RvYyB3aGVuIGJ1aWxk
aW5nLgorICAgICAgICAoYnVpbGRBdXRvdG9vbHNQcm9qZWN0KToKKyAgICAgICAgKiBndGsvZ2Vu
ZXJhdGUtZ3RrZG9jOiBBZGRlZC4KKyAgICAgICAgKiBndGsvZ3RrZG9jLnB5OiBSZW5hbWVkIGZy
b20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy9ndGtkb2MucHkuCisKIDIw
MTEtMTEtMjMgIFJhcGhhZWwgS3VibyBkYSBDb3N0YSAgPGt1Ym9AcHJvZnVzaW9uLm1vYmk+CiAK
ICAgICAgICAgW0NNYWtlXSBNb3ZlIHRoZSB0b3AtbGV2ZWwgbG9naWMgdG8gdGhlIHRvcC1sZXZl
bCBkaXJlY3RvcnkuCmRpZmYgLS1naXQgYS9Ub29scy9HTlVtYWtlZmlsZS5hbSBiL1Rvb2xzL0dO
VW1ha2VmaWxlLmFtCmluZGV4IGZkOWVmNzAxNDNlYmNmYWE0NjgxM2IxMjgwYmFlY2E0ZDYzMGIz
NGEuLmFlMGUyODg2Yjk2Zjg5N2M1YzMyMTQxZmQ4NzExMmMxZGNjMmEzODYgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0dOVW1ha2VmaWxlLmFtCisrKyBiL1Rvb2xzL0dOVW1ha2VmaWxlLmFtCkBAIC0yMjcs
MyArMjI3LDQ1IEBAIFRlc3ROZXRzY2FwZVBsdWdpbl9saWJ0ZXN0bmV0c2NhcGVwbHVnaW5fbGFf
TERGTEFHUyA9IFwKIAogQ0xFQU5GSUxFUyArPSBUZXN0TmV0c2NhcGVQbHVnaW4vbGlidGVzdG5l
dHNjYXBlcGx1Z2luLmxhCiBlbmRpZgorCitFWFRSQV9ESVNUICs9IFwKKwlUb29scy9ndGsvY29t
bW9uLnB5IFwKKwlUb29scy9ndGsvZ2VuZXJhdGUtZ3RrZG9jIFwKKwlUb29scy9ndGsvZ3RrZG9j
LnB5IFwKKwlUb29scy9TY3JpcHRzL1ZDU1V0aWxzLnBtIFwKKwlUb29scy9TY3JpcHRzL3dlYmtp
dC1idWlsZC1kaXJlY3RvcnkgXAorCVRvb2xzL1NjcmlwdHMvd2Via2l0ZGlycy5wbQorCitpZiBF
TkFCTEVfV0VCS0lUMgorZG9jczogJChCVUlMVF9TT1VSQ0VTKSBcCisJbGlid2Via2l0Z3RrLUBX
RUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05ALkBXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05A
LmxhIFwKKwlsaWJ3ZWJraXQyZ3RrLUBXRUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05ALkBXRUJL
SVRHVEtfQVBJX01JTk9SX1ZFUlNJT05ALmxhCisJJChzcmNkaXIpL1Rvb2xzL2d0ay9nZW5lcmF0
ZS1ndGtkb2MKK2Vsc2UKK2RvY3M6ICQoQlVJTFRfU09VUkNFUykgXAorCWxpYndlYmtpdGd0ay1A
V0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQC5AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9O
QC5sYQorCSQoc3JjZGlyKS9Ub29scy9ndGsvZ2VuZXJhdGUtZ3RrZG9jCitlbmRpZgorLlBIT05Z
IDogZG9jcworCitjbGVhbi1sb2NhbDogZG9jLWNsZWFuLWxvY2FsCitkb2MtY2xlYW4tbG9jYWw6
CisJQHJtIC1mIERvY3VtZW50YXRpb24vd2Via2l0Z3RrLyp+IERvY3VtZW50YXRpb24vd2Via2l0
Z3RrKi5iYWsKKwlAcm0gLWYgRG9jdW1lbnRhdGlvbi93ZWJraXQyZ3RrLyp+IERvY3VtZW50YXRp
b24vd2Via2l0Mmd0ayouYmFrCitkaXN0Y2xlYW4tbG9jYWw6IGRvYy1kaXN0Y2xlYW4tbG9jYWwK
K2RvYy1kaXN0Y2xlYW4tbG9jYWw6CisJQHJtIC1yZiBEb2N1bWVudGF0aW9uCittYWludGFpbmVy
LWNsZWFuLWxvY2FsOiBkb2MtbWFpbnRhaW5lci1jbGVhbi1sb2NhbAorZG9jLW1haW50YWluZXIt
Y2xlYW4tbG9jYWw6IGNsZWFuCisJQHJtIC1yZiBEb2N1bWVudGF0aW9uL3dlYmtpdGd0ayBEb2N1
bWVudGF0aW9uL3dlYmtpdDJndGsKKwktQHJtZGlyIERvY3VtZW50YXRpb24KKworaWYgRU5BQkxF
X0dUS19ET0MKK2Rpc3QtY2hlY2stZ3RrZG9jOgorYWxsOiBkb2NzCitlbHNlCitkaXN0LWNoZWNr
LWd0a2RvYzoKKwlAZWNobyAiKioqIGd0ay1kb2MgbXVzdCBiZSBpbnN0YWxsZWQgYW5kIGVuYWJs
ZWQgaW4gb3JkZXIgdG8gbWFrZSBkaXN0IgorCUBmYWxzZQorZW5kaWYKKwpkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRkaXJzLnBtIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRkaXJzLnBt
CmluZGV4IDBjYTQ4OGIyZDU5YzRkYjhiYTdlM2E0YzZjMmY0NmYyYTIxMjRlYjguLjliYTQwNTg2
YTRlY2JlM2U1NWRmYzFlMDA0ZjBlMjA2OWRkMDVlNTggMTAwNzU1Ci0tLSBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0ZGlycy5wbQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdGRpcnMucG0KQEAgLTE2
NzksNiArMTY3OSwxNCBAQCBzdWIgYnVpbGRBdXRvdG9vbHNQcm9qZWN0KCRAKQogICAgIH0KIAog
ICAgIGNoZGlyICIuLiIgb3IgZGllOworCisgICAgaWYgKGlzR3RrKCkpIHsKKyAgICAgICAgbXkg
JHJlbGF0aXZlU2NyaXB0c1BhdGggPSByZWxhdGl2ZVNjcmlwdHNEaXIoKTsKKyAgICAgICAgaWYg
KHN5c3RlbSgiJHJlbGF0aXZlU2NyaXB0c1BhdGgvLi4vZ3RrL2dlbmVyYXRlLWd0a2RvYyAtLXNr
aXAtaHRtbCIpKSB7CisgICAgICAgICAgICBkaWUgIlxuIGd0a2RvYyBkaWQgbm90IGJ1aWxkIHdp
dGhvdXQgd2FybmluZ3NcbiI7CisgICAgICAgIH0KKyAgICB9CisKICAgICByZXR1cm4gMDsKIH0K
IApkaWZmIC0tZ2l0IGEvVG9vbHMvZ3RrL2NvbW1vbi5weSBiL1Rvb2xzL2d0ay9jb21tb24ucHkK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZTYyMWIyMjY3MjI0MTUzOTY5ODQ3ZjkxODExNTJhOTc4NDUxZjAwOAotLS0g
L2Rldi9udWxsCisrKyBiL1Rvb2xzL2d0ay9jb21tb24ucHkKQEAgLTAsMCArMSw2NiBAQAorIyEv
dXNyL2Jpbi9lbnYgcHl0aG9uCisjIENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgorIwor
IyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisjIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu
ZXJhbCBQdWJsaWMKKyMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisjIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisjIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIg
R2VuZXJhbCBQdWJsaWMKKyMgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90
LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorIyBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKwor
aW1wb3J0IG9zCitpbXBvcnQgc3VicHJvY2VzcworCitzY3JpcHRfZGlyID0gTm9uZQorYnVpbGRf
ZGlyID0gTm9uZQorCisKK2RlZiBzY3JpcHRfcGF0aCgqYXJncyk6CisgICAgZ2xvYmFsIHNjcmlw
dF9kaXIKKyAgICBpZiBub3Qgc2NyaXB0X2RpcjoKKyAgICAgICAgc2NyaXB0X2RpciA9IG9zLnBh
dGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAnLi4nLCAnU2NyaXB0cycpCisgICAg
cmV0dXJuIG9zLnBhdGguam9pbigqKHNjcmlwdF9kaXIsKSArIGFyZ3MpCisKKworZGVmIHRvcF9s
ZXZlbF9wYXRoKCphcmdzKToKKyAgICByZXR1cm4gb3MucGF0aC5qb2luKCooKHNjcmlwdF9wYXRo
KCcuLicsICcuLicpLCkgKyBhcmdzKSkKKworCitkZWYgZ2V0X2J1aWxkX3BhdGgoKToKKyAgICBn
bG9iYWwgYnVpbGRfZGlyCisgICAgaWYgYnVpbGRfZGlyOgorICAgICAgICByZXR1cm4gYnVpbGRf
ZGlyCisKKyAgICBkZWYgaXNfdmFsaWRfYnVpbGRfZGlyZWN0b3J5KHBhdGgpOgorICAgICAgICBy
ZXR1cm4gb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHBhdGgsICcubGlicycpKQorCisgICAg
YnVpbGRfZGlyID0gdG9wX2xldmVsX3BhdGgoJ1dlYktpdEJ1aWxkJywgJ1JlbGVhc2UnKQorICAg
IGlmIGlzX3ZhbGlkX2J1aWxkX2RpcmVjdG9yeShidWlsZF9kaXIpOgorICAgICAgICByZXR1cm4g
YnVpbGRfZGlyCisKKyAgICBidWlsZF9kaXIgPSB0b3BfbGV2ZWxfcGF0aCgnV2ViS2l0QnVpbGQn
LCAnRGVidWcnKQorICAgIGlmIGlzX3ZhbGlkX2J1aWxkX2RpcmVjdG9yeShidWlsZF9kaXIpOgor
ICAgICAgICByZXR1cm4gYnVpbGRfZGlyCisKKyAgICAjIGRpc3RjaGVjayBidWlsZHMgaW4gYSBk
aXJlY3RvcnkgbmFtZWQgX2J1aWxkIGluIHRoZSB0b3AtbGV2ZWwgcGF0aC4KKyAgICBidWlsZF9k
aXIgPSB0b3BfbGV2ZWxfcGF0aCgiX2J1aWxkIikKKyAgICBpZiBpc192YWxpZF9idWlsZF9kaXJl
Y3RvcnkoYnVpbGRfZGlyKToKKyAgICAgICAgcmV0dXJuIGJ1aWxkX2RpcgorCisgICAgYnVpbGRf
ZGlyID0gdG9wX2xldmVsX3BhdGgoKQorICAgIGlmIGlzX3ZhbGlkX2J1aWxkX2RpcmVjdG9yeShi
dWlsZF9kaXIpOgorICAgICAgICByZXR1cm4gYnVpbGRfZGlyCisKKyAgICBwcmludCAnQ291bGQg
bm90IGRldGVybWluZSBidWlsZCBkaXJlY3RvcnkuJworICAgIHN5cy5leGl0KDEpCisKKworZGVm
IGJ1aWxkX3BhdGgoKmFyZ3MpOgorICAgIHJldHVybiBvcy5wYXRoLmpvaW4oKihnZXRfYnVpbGRf
cGF0aCgpLCkgKyBhcmdzKQpkaWZmIC0tZ2l0IGEvVG9vbHMvZ3RrL2dlbmVyYXRlLWd0a2RvYyBi
L1Rvb2xzL2d0ay9nZW5lcmF0ZS1ndGtkb2MKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTVkYzNmYmY5NTYyODE2OWM1
NWQ5OWRhNjkzMmFhMDQyZjVjYjA5YwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL2d0ay9nZW5l
cmF0ZS1ndGtkb2MKQEAgLTAsMCArMSwxMTAgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIyBD
b3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KKyMKKyMgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorIyBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisjIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorIyB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCisjCisjIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorIyBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisjIExpY2Vu
c2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29m
dHdhcmUKKyMgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisKK2ltcG9ydCBjb21tb24KK2ltcG9ydCBn
bG9iCitpbXBvcnQgZ3RrZG9jCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IG9zLnBhdGgKK2ltcG9y
dCBzeXMKKworZGVmIGNvbmZpZ3VyZV9sb2dnaW5nKCk6CisgICAgbGV2ZWwgPSBsb2dnaW5nLkRF
QlVHIGlmICctdicgaW4gc3lzLmFyZ3YgZWxzZSBsb2dnaW5nLklORk8KKyAgICBsb2dnZXIgPSBs
b2dnaW5nLmdldExvZ2dlcignZ3RrZG9jJykKKyAgICBsb2dnZXIuc2V0TGV2ZWwobGV2ZWwpCisg
ICAgaGFuZGxlciA9IGxvZ2dpbmcuU3RyZWFtSGFuZGxlcigpCisgICAgaGFuZGxlci5zZXRMZXZl
bChsZXZlbCkKKyAgICBsb2dnZXIuYWRkSGFuZGxlcihoYW5kbGVyKQorICAgIGlmIGxldmVsID09
IGxvZ2dpbmcuREVCVUc6CisgICAgICAgIGhhbmRsZXIuc2V0Rm9ybWF0dGVyKGxvZ2dpbmcuRm9y
bWF0dGVyKCdbJShhc2N0aW1lKXNdICAlKG1lc3NhZ2UpcycpKQorICAgIGVsc2U6CisgICAgICAg
IGhhbmRsZXIuc2V0Rm9ybWF0dGVyKGxvZ2dpbmcuRm9ybWF0dGVyKCclKG1lc3NhZ2UpcycpKQor
CitkZWYgZ2V0X2NvbW1vbl9vcHRpb25zKCk6CisgICAgcmV0dXJuIHsKKyAgICAgICAgJ2RlY29y
YXRvcic6ICdXRUJLSVRfQVBJJywKKyAgICAgICAgJ2RlcHJlY2F0aW9uX2d1YXJkJzogJ1dFQktJ
VF9ESVNBQkxFX0RFUFJFQ0FURUQnLAorICAgICAgICAnbGlicmFyeV9wYXRoJyA6IGNvbW1vbi5i
dWlsZF9wYXRoKCcubGlicycpLAorICAgIH0KKworZGVmIGdldF93ZWJraXQyX29wdGlvbnMoKToK
KyAgICBkZWYgZGVyaXZlZF9zb3VyY2VzX3BhdGgoKmFyZ3MpOgorICAgICAgICByZXR1cm4gY29t
bW9uLmJ1aWxkX3BhdGgoKigoJ0Rlcml2ZWRTb3VyY2VzJywgJ1dlYktpdDInKSArIGFyZ3MpKQor
ICAgIGRlZiBzcmNfcGF0aCgqYXJncyk6CisgICAgICAgIHJldHVybiBjb21tb24udG9wX2xldmVs
X3BhdGgoKigoJ1NvdXJjZScsICdXZWJLaXQyJywgJ1VJUHJvY2VzcycsICdBUEknLCAnZ3RrJykg
KyBhcmdzKSkKKworICAgIGRlcml2ZWRfc291cmNlcyA9IGNvbW1vbi5idWlsZF9wYXRoKCdEZXJp
dmVkU291cmNlcycsICdXZWJLaXQyJykKKyAgICBvcHRpb25zID0gZ2V0X2NvbW1vbl9vcHRpb25z
KCkuY29weSgpCisgICAgb3B0aW9ucy51cGRhdGUoeworICAgICAgICAnbW9kdWxlX25hbWUnIDog
J3dlYmtpdDJndGsnLAorICAgICAgICAnZG9jX2RpcicgOiBzcmNfcGF0aCgnZG9jcycpLAorICAg
ICAgICAnb3V0cHV0X2RpcicgOiBjb21tb24uYnVpbGRfcGF0aCgnRG9jdW1lbnRhdGlvbicsICd3
ZWJraXQyZ3RrJyksCisgICAgICAgICdzb3VyY2VfZGlycycgOiBbc3JjX3BhdGgoKV0sCisgICAg
ICAgICdjZmxhZ3MnIDogJyAtSScgKyBkZXJpdmVkX3NvdXJjZXNfcGF0aCgnd2Via2l0Mmd0aycs
ICdpbmNsdWRlJykgKyBcCisgICAgICAgICAgICAgICAgICAgJyAtSScgKyBkZXJpdmVkX3NvdXJj
ZXNfcGF0aCgnd2Via2l0Mmd0aycpICsgXAorICAgICAgICAgICAgICAgICAgICcgLUknICsgZGVy
aXZlZF9zb3VyY2VzX3BhdGgoJ2luY2x1ZGUnKSArIFwKKyAgICAgICAgICAgICAgICAgICAnIC1J
JyArIGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgnU291cmNlJykgKyBcCisgICAgICAgICAgICAgICAg
ICAgJyAtSScgKyBzcmNfcGF0aCgpLAorICAgICAgICAnaWdub3JlZF9maWxlcyc6IGdsb2IuZ2xv
YihzcmNfcGF0aCgnKlByaXZhdGUuaCcpKSArIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICBn
bG9iLmdsb2Ioc3JjX3BhdGgoJ1BhZ2VDbGllbnRJbXBsLionKSkgKyBcCisgICAgICAgICAgICAg
ICAgICAgICAgICAgZ2xvYi5nbG9iKHNyY19wYXRoKCd0ZXN0cy8qLmgnKSkKKyAgICB9KQorICAg
IHJldHVybiAoY29tbW9uLmJ1aWxkX3BhdGgoJ1NvdXJjZScsICdXZWJLaXQyJywgJ3dlYmtpdDJn
dGstMy4wLnBjJyksIG9wdGlvbnMpCisKK2RlZiBnZXRfd2Via2l0MV9vcHRpb25zKCk6CisgICAg
ZGVmIGRlcml2ZWRfc291cmNlc19wYXRoKCphcmdzKToKKyAgICAgICAgcmV0dXJuIGNvbW1vbi5i
dWlsZF9wYXRoKCooKCdEZXJpdmVkU291cmNlcycsICdXZWJLaXQyJykgKyBhcmdzKSkKKyAgICBk
ZWYgc3JjX3BhdGgoKmFyZ3MpOgorICAgICAgICByZXR1cm4gY29tbW9uLnRvcF9sZXZlbF9wYXRo
KCooKCdTb3VyY2UnLCAnV2ViS2l0JywgJ2d0aycpICsgYXJncykpCisKKyAgICBkZXJpdmVkX3Nv
dXJjZXMgPSBjb21tb24uYnVpbGRfcGF0aCgnRGVyaXZlZFNvdXJjZXMnLCAnV2ViS2l0MicpCisg
ICAgb3B0aW9ucyA9IGdldF9jb21tb25fb3B0aW9ucygpLmNvcHkoKQorICAgIG9wdGlvbnMudXBk
YXRlKHsKKyAgICAgICAgJ21vZHVsZV9uYW1lJyA6ICd3ZWJraXRndGsnLAorICAgICAgICAnZG9j
X2RpcicgOiBzcmNfcGF0aCgnZG9jcycpLAorICAgICAgICAnb3V0cHV0X2RpcicgOiBjb21tb24u
YnVpbGRfcGF0aCgnRG9jdW1lbnRhdGlvbicsICd3ZWJraXRndGsnKSwKKyAgICAgICAgJ3NvdXJj
ZV9kaXJzJyA6IFtzcmNfcGF0aCgnd2Via2l0JyksIGNvbW1vbi5idWlsZF9wYXRoKCdTb3VyY2Un
LCAnV2ViS2l0JywgJ2d0aycsICd3ZWJraXQnKV0sCisgICAgICAgICdjZmxhZ3MnIDogJyAtSScg
KyBjb21tb24uYnVpbGRfcGF0aCgnV2ViS2l0JywgJ2d0aycpICsgXAorICAgICAgICAgICAgICAg
ICAgICcgLUknICsgY29tbW9uLmJ1aWxkX3BhdGgoJ0Rlcml2ZWRTb3VyY2VzJykgKyBcCisgICAg
ICAgICAgICAgICAgICAgJyAtSScgKyBzcmNfcGF0aCgpICsgXAorICAgICAgICAgICAgICAgICAg
ICcgLUknICsgY29tbW9uLnRvcF9sZXZlbF9wYXRoKCdTb3VyY2UnKSArIFwKKyAgICAgICAgICAg
ICAgICAgICAnIC1JJyArIGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgnU291cmNlJywgJ0phdmFTY3Jp
cHRDb3JlJywgJ0ZvcndhcmRpbmdIZWFkZXJzJyksCisgICAgICAgICdpZ25vcmVkX2ZpbGVzJzog
Z2xvYi5nbG9iKHNyY19wYXRoKCd3ZWJraXQnLCAnKnByaXZhdGUuKicpKQorICAgIH0pCisgICAg
cmV0dXJuIChjb21tb24uYnVpbGRfcGF0aCgnU291cmNlJywgJ1dlYktpdCcsICdndGsnLCAnd2Vi
a2l0Z3RrLTMuMC5wYycpLCBvcHRpb25zKQorCitjb25maWd1cmVfbG9nZ2luZygpCisKKyMgV2Ug
bmVlZCB0byBhZGQgdGhlIEphdmFTY3JpcHRDb3JlIGJ1aWxkIGRpcmVjdG9yeSB0byB0aGUgUEtH
X0NPTkZJR19QQVRICisjIHNvIHRoYXQgcGtnY29uZmlnIGNhbiBwcm9wZXJseSByZXNvbHZlIHRo
ZSBsaWJqYXZhc2NyaXB0Y29yZSBkZXBlbmRlbmN5Lgorb3MuZW52aXJvblsnUEtHX0NPTkZJR19Q
QVRIJ10gPSBjb21tb24uYnVpbGRfcGF0aCgnU291cmNlJywgJ0phdmFTY3JpcHRDb3JlJykgXAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICc6JyArIG9zLmVudmlyb24uZ2V0KCdQ
S0dfQ09ORklHX1BBVEgnKQorCitwcmludCAiR2VuZXJhdGluZyBXZWJLaXQxIGRvY3VtZW50YXRp
b24uLi4iCitwa2dfY29uZmlnX3BhdGgsIG9wdGlvbnMgPSBnZXRfd2Via2l0MV9vcHRpb25zKCkK
K2dlbmVyYXRvciA9IGd0a2RvYy5Qa2dDb25maWdHVEtEb2MocGtnX2NvbmZpZ19wYXRoLCAqKm9w
dGlvbnMpCitnZW5lcmF0b3IuZ2VuZXJhdGUoaHRtbD0nLS1za2lwLWh0bWwnIG5vdCBpbiBzeXMu
YXJndikKK3Nhd193ZWJraXQxX3dhcm5pbmdzID0gZ2VuZXJhdG9yLnNhd193YXJuaW5ncworCisj
IFdlYktpdDIgbWlnaHQgbm90IGJlIGVuYWJsZWQsIHNvIGNoZWNrIGZvciB0aGUgcGtnLWNvbmZp
ZyBmaWxlIGJlZm9yZSBidWlsZGluZyBkb2N1bWVudGF0aW9uLgoraWYgb3MucGF0aC5leGlzdHMo
Y29tbW9uLmJ1aWxkX3BhdGgoJ1NvdXJjZScsICdXZWJLaXQyJywgJ3dlYmtpdDJndGstMy4wLnBj
JykpOgorICAgIHByaW50ICJcbkdlbmVyYXRpbmcgV2ViS2l0MiBkb2N1bWVudGF0aW9uLi4uIgor
ICAgIHBrZ19jb25maWdfcGF0aCwgb3B0aW9ucyA9IGdldF93ZWJraXQyX29wdGlvbnMoKQorICAg
IGdlbmVyYXRvciA9IGd0a2RvYy5Qa2dDb25maWdHVEtEb2MocGtnX2NvbmZpZ19wYXRoLCAqKm9w
dGlvbnMpCisgICAgZ2VuZXJhdG9yLmdlbmVyYXRlKGh0bWw9Jy0tc2tpcC1odG1sJyBub3QgaW4g
c3lzLmFyZ3YpCisKK3N5cy5leGl0KGdlbmVyYXRvci5zYXdfd2FybmluZ3Mgb3Igc2F3X3dlYmtp
dDFfd2FybmluZ3MpCmRpZmYgLS1naXQgYS9Ub29scy9ndGsvZ3RrZG9jLnB5IGIvVG9vbHMvZ3Rr
L2d0a2RvYy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MTBlNjc5MGMyNGEzN2E1ZWQyMThjYTM1YjU2ZGVlZWQx
MGFjNDNkCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvZ3RrL2d0a2RvYy5weQpAQCAtMCwwICsx
LDM3OCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KKyMKKyMgVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorIyBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj
CisjIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorIyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisjCisjIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorIyBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi
bGljCisjIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8g
dGhlIEZyZWUgU29mdHdhcmUKKyMgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisKK2ltcG9ydCBlcnJu
bworaW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCBvcworaW1wb3J0IG9zLnBhdGgKK2ltcG9ydCBzdWJw
cm9jZXNzCitpbXBvcnQgc3lzCisKKworY2xhc3MgR1RLRG9jKG9iamVjdCk6CisKKyAgICAiIiJD
bGFzcyB0aGF0IGNvbnRyb2xzIGEgZ3RrZG9jIHJ1bi4KKworICAgIEVhY2ggaW5zdGFuY2Ugb2Yg
dGhpcyBjbGFzcyByZXByZXNlbnRzIG9uZSBndGtkb2MgY29uZmlndXJhdGlvbgorICAgIGFuZCBz
ZXQgb2YgZG9jdW1lbnRhdGlvbi4gVGhlIGd0a2RvYyBwYWNrYWdlIGlzIGEgc2VyaWVzIG9mIHRv
b2xzCisgICAgcnVuIGNvbnNlY3V0aXZlbHkgd2hpY2ggY29udmVydHMgaW5saW5lIEMvQysrIGRv
Y3VtZW50YXRpb24gaW50bworICAgIGRvY2Jvb2sgZmlsZXMgYW5kIHRoZW4gaW50byBIVE1MLiBU
aGlzIGNsYXNzIGlzIHN1aXRhYmxlIGZvcgorICAgIGdlbmVyYXRpbmcgZG9jdW1lbnRhdGlvbiBv
ciBzaW1wbHkgdmVyaWZ5aW5nIGNvcnJlY3RuZXNzLgorCisgICAgS2V5d29yZCBhcmd1bWVudHM6
CisgICAgb3V0cHV0X2RpciAgICAgICAgIC0tIFRoZSBwYXRoIHdoZXJlIGd0a2RvYyBvdXRwdXQg
c2hvdWxkIGJlIHBsYWNlZC4gR2VuZXJhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICBt
YXkgb3ZlcndyaXRlIGZpbGUgaW4gdGhpcyBkaXJlY3RvcnkuIFJlcXVpcmVkLgorICAgIG1vZHVs
ZV9uYW1lICAgICAgICAtLSBUaGUgbmFtZSBvZiB0aGUgZG9jdW1lbnRhdGlvbiBtb2R1bGUuIEZv
ciBsaWJyYXJpZXMgdGhpcworICAgICAgICAgICAgICAgICAgICAgICAgICBpcyB0eXBpY2FsbHkg
dGhlIGxpYnJhcnkgbmFtZS4gUmVxdWlyZWQgaWYgbm90IGxpYnJhcnkgcGF0aAorICAgICAgICAg
ICAgICAgICAgICAgICAgICBpcyBnaXZlbi4KKyAgICBzb3VyY2VfZGlycyAgICAgICAgLS0gQSBs
aXN0IG9mIHBhdGhzIHRvIHRoZSBzb3VyY2UgY29kZSB0byBiZSBzY2FubmVkLiBSZXF1aXJlZC4K
KyAgICBpZ25vcmVkX2ZpbGVzICAgICAgLS0gQSBsaXN0IG9mIGZpbGVuYW1lcyB0byBpZ25vcmUg
aW4gdGhlIHNvdXJjZSBkaXJlY3RvcnkuIEl0IGlzCisgICAgICAgICAgICAgICAgICAgICAgICAg
IG9ubHkgbmVjZXNzYXJ5IHRvIHByb3ZpZGUgdGhlIGJhc2VuYW1lcyBvZiB0aGVzZSBmaWxlcy4K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwaWNhbGx5IGl0IGlzIGltcG9ydGFudCB0byBw
cm92aWRlIGFuIHVwZGF0ZWQgbGlzdCBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25v
cmVkIGZpbGVzIHRvIHByZXZlbnQgd2FybmluZ3MgYWJvdXQgdW5kb2N1bWVudGVkIHN5bWJvbHMu
CisgICAgZGVjb3JhdG9yICAgICAgICAgIC0tIElmIGEgZGVjb3JhdG9yIGlzIHVzZWQgdG8gdW5o
aWRlIGNlcnRhaW4gc3ltYm9scyBpbiBoZWFkZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ZmlsZXMgdGhpcyBwYXJhbWV0ZXIgaXMgcmVxdWlyZWQgZm9yIHN1Y2Nlc3NmdWwgc2Nhbm5pbmcu
CisgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWZhdWx0ICcnKQorICAgIGRlcHJlY2F0aW9u
X2d1YXJkICAtLSBndGtkb2MgdHJpZXMgdG8gZW5zdXJlIHRoYXQgc3ltYm9scyBtYXJrZWQgYXMg
ZGVwcmVjYXRlZAorICAgICAgICAgICAgICAgICAgICAgICAgICBhcmUgZW5jYXNlZCBpbiB0aGlz
IEMgcHJlcHJvY2Vzc29yIGRlZmluZS4gVGhpcyBpcyByZXF1aXJlZAorICAgICAgICAgICAgICAg
ICAgICAgICAgICB0byBhdm9pZCBndGtkb2Mgd2FybmluZ3MuIChkZWZhdWx0ICcnKQorICAgIGNm
bGFncyAgICAgICAgICAgICAtLSBUaGlzIHBhcmFtZXRlciBzcGVjaWZpZXMgYW55IHByZXByb2Nl
c3NvciBmbGFncyBuZWNlc3NhcnkgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxk
aW5nIHRoZSBzY2FubmVyIGJpbmFyeSBkdXJpbmcgZ3RrZG9jLXNjYW5vYmouIFR5cGljYWxseQor
ICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzIGluY2x1ZGVzIGFsbCBhYnNvbHV0ZSBpbmNs
dWRlIHBhdGhzIG5lY2Vzc2FyeSB0byByZXNvbHZlCisgICAgICAgICAgICAgICAgICAgICAgICAg
IGFsbCBoZWFkZXIgZGVwZW5kZW5jaWVzLiAoZGVmYXVsdCAnJykKKyAgICBsZGZsYWdzICAgICAg
ICAgICAgLS0gVGhpcyBwYXJhbWV0ZXIgc3BlY2lmaWVzIGFueSBsaW5rZXIgZmxhZ3MgbmVjZXNz
YXJ5IGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZGluZyB0aGUgc2Nhbm5lciBi
aW5hcnkgZHVyaW5nIGd0a2RvYy1zY2Fub2JqLiBUeXBpY2FsbHkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGhpcyBpbmNsdWRlcyAiLWx5b3VybGlicmFyeW5hbWUiLiAoZGVmYXVsdCAnJykK
KyAgICBsaWJyYXJ5X3BhdGggICAgICAgLS0gVGhpcyBwYXJhbWV0ZXIgc3BlY2lmaWVzIHRoZSBw
YXRoIHRvIHRoZSBkaXJlY3Rvcnkgd2hlcmUgeW91CisgICAgICAgICAgICAgICAgICAgICAgICAg
IGxpYnJhcnkgcmVzaWRlcyB1c2VkIGZvciBidWlsZGluZyB0aGUgc2Nhbm5lciBiaW5hcnkgZHVy
aW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgIGd0a2RvYy1zY2Fub2JqLiAoZGVmYXVsdCAn
JykKKworICAgIGRvY19kaXIgICAgICAgICAgICAtLSBUaGUgcGF0aCB0byBvdGhlciBkb2N1bWVu
dGF0aW9uIGZpbGVzIG5lY2Vzc2FyeSB0byBidWlsZAorICAgICAgICAgICAgICAgICAgICAgICAg
ICB0aGUgZG9jdW1lbnRhdGlvbi4gVGhpcyBmaWxlcyBpbiB0aGlzIGRpcmVjdG9yeSBhcyB3ZWxs
IGFzCisgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBmaWxlcyBpbiB0aGUgJ2h0bWwnIHN1
YmRpcmVjdG9yeSB3aWxsIGJlIGNvcGllZAorICAgICAgICAgICAgICAgICAgICAgICAgICByZWN1
cnNpdmVseSBpbnRvIHRoZSBvdXRwdXQgZGlyZWN0b3J5LiAoZGVmYXVsdCAnJykKKyAgICBtYWlu
X3NnbWxfZmlsZSAgICAgLS0gVGhlIHBhdGggb3IgbmFtZSAoaWYgYSBkb2NfZGlyIGlzIGdpdmVu
KSBvZiB0aGUgU0dNTCBmaWxlCisgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgaXMgdGhl
IGNvbnNpZGVyZWQgdGhlIG1haW4gcGFnZSBvZiB5b3VyIGRvY3VtZW50YXRpb24uCisgICAgICAg
ICAgICAgICAgICAgICAgICAgIChkZWZhdWx0OiA8bW9kdWxlX25hbWU+LWRvY3Muc2dtbCkKKyAg
ICB2ZXJzaW9uICAgICAgICAgICAgLS0gVGhlIHZlcnNpb24gbnVtYmVyIG9mIHRoZSBtb2R1bGUu
IElmIHRoaXMgaXMgcHJvdmlkZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGEgdmVyc2lv
bi54bWwgZmlsZSBjb250YWluaW5nIHRoZSB2ZXJzaW9uIHdpbGwgYmUgY3JlYXRlZAorICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbiB0aGUgb3V0cHV0IGRpcmVjdG9yeSBkdXJpbmcgZG9jdW1l
bnRhdGlvbiBnZW5lcmF0aW9uLgorCisgICAgaW50ZXJhY3RpdmUgICAgICAgIC0tIFdoZXRoZXIg
b3Igbm90IGVycm9ycyBvciB3YXJuaW5ncyBzaG91bGQgcHJvbXB0IHRoZSB1c2VyCisgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRvIGNvbnRpbnVlIG9yIG5vdC4gV2hlbiB0aGlzIHZhbHVlIGlz
IGZhbHNlLCBnZW5lcmF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbGwgY29udGlu
dWUgZGVzcGl0ZSB3YXJuaW5ncy4gKGRlZmF1bHQgRmFsc2UpCisgICAgIiIiCisKKyAgICBkZWYg
X19pbml0X18oc2VsZiwgKiphcmdzKToKKworICAgICAgICAjIFBhcmFtZXRlcnMgc3BlY2lmaWMg
dG8gc2Nhbm5pbmcuCisgICAgICAgIHNlbGYubW9kdWxlX25hbWUgPSAnJworICAgICAgICBzZWxm
LnNvdXJjZV9kaXJzID0gW10KKyAgICAgICAgc2VsZi5pZ25vcmVkX2ZpbGVzID0gW10KKyAgICAg
ICAgc2VsZi5kZWNvcmF0b3IgPSAnJworICAgICAgICBzZWxmLmRlcHJlY2F0aW9uX2d1YXJkID0g
JycKKworICAgICAgICAjIFBhcmFtZXRlcnMgc3BlY2lmaWMgdG8gZ3RrZG9jLXNjYW5vYmouCisg
ICAgICAgIHNlbGYuY2ZsYWdzID0gJycKKyAgICAgICAgc2VsZi5sZGZsYWdzID0gJycKKyAgICAg
ICAgc2VsZi5saWJyYXJ5X3BhdGggPSAnJworCisgICAgICAgICMgUGFyYW1ldGVycyBzcGVjaWZp
YyB0byBnZW5lcmF0aW9uLgorICAgICAgICBzZWxmLm91dHB1dF9kaXIgPSAnJworICAgICAgICBz
ZWxmLmRvY19kaXIgPSAnJworICAgICAgICBzZWxmLm1haW5fc2dtbF9maWxlID0gJycKKworICAg
ICAgICBzZWxmLmludGVyYWN0aXZlID0gRmFsc2UKKworICAgICAgICBzZWxmLmxvZ2dlciA9IGxv
Z2dpbmcuZ2V0TG9nZ2VyKCdndGtkb2MnKQorCisgICAgICAgIGZvciBrZXksIHZhbHVlIGluIGFy
Z3MuaXRlcml0ZW1zKCk6CisgICAgICAgICAgICBzZXRhdHRyKHNlbGYsIGtleSwgdmFsdWUpCisK
KyAgICAgICAgZGVmIHJhaXNlX2Vycm9yX2lmX25vdF9zcGVjaWZpZWQoa2V5KToKKyAgICAgICAg
ICAgIGlmIG5vdCBnZXRhdHRyKHNlbGYsIGtleSk6CisgICAgICAgICAgICAgICAgcmFpc2UgRXhj
ZXB0aW9uKCclcyBub3Qgc3BlY2lmaWVkLicgJSBrZXkpCisKKyAgICAgICAgcmFpc2VfZXJyb3Jf
aWZfbm90X3NwZWNpZmllZCgnb3V0cHV0X2RpcicpCisgICAgICAgIHJhaXNlX2Vycm9yX2lmX25v
dF9zcGVjaWZpZWQoJ3NvdXJjZV9kaXJzJykKKyAgICAgICAgcmFpc2VfZXJyb3JfaWZfbm90X3Nw
ZWNpZmllZCgnbW9kdWxlX25hbWUnKQorCisgICAgICAgICMgTWFrZSBhbGwgcGF0aHMgYWJzb2x1
dGUgaW4gY2FzZSB3ZSB3ZXJlIHBhc3NlZCByZWxhdGl2ZSBwYXRocywgc2luY2UKKyAgICAgICAg
IyB3ZSBjaGFuZ2UgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3Rvcnkgd2hlbiBleGVjdXRpbmcg
c3ViY29tbWFuZHMuCisgICAgICAgIHNlbGYub3V0cHV0X2RpciA9IG9zLnBhdGguYWJzcGF0aChz
ZWxmLm91dHB1dF9kaXIpCisgICAgICAgIHNlbGYuc291cmNlX2RpcnMgPSBbb3MucGF0aC5hYnNw
YXRoKHgpIGZvciB4IGluIHNlbGYuc291cmNlX2RpcnNdCisgICAgICAgIGlmIHNlbGYubGlicmFy
eV9wYXRoOgorICAgICAgICAgICAgc2VsZi5saWJyYXJ5X3BhdGggPSBvcy5wYXRoLmFic3BhdGgo
c2VsZi5saWJyYXJ5X3BhdGgpCisKKyAgICAgICAgaWYgbm90IHNlbGYubWFpbl9zZ21sX2ZpbGU6
CisgICAgICAgICAgICBzZWxmLm1haW5fc2dtbF9maWxlID0gc2VsZi5tb2R1bGVfbmFtZSArICIt
ZG9jcy5zZ21sIgorCisgICAgZGVmIGdlbmVyYXRlKHNlbGYsIGh0bWw9VHJ1ZSk6CisgICAgICAg
IHNlbGYuc2F3X3dhcm5pbmdzID0gRmFsc2UKKworICAgICAgICBzZWxmLl9jb3B5X2RvY19maWxl
c190b19vdXRwdXRfZGlyKGh0bWwpCisgICAgICAgIHNlbGYuX3dyaXRlX3ZlcnNpb25feG1sKCkK
KyAgICAgICAgc2VsZi5fcnVuX2d0a2RvY19zY2FuKCkKKyAgICAgICAgc2VsZi5fcnVuX2d0a2Rv
Y19zY2FuZ29iaigpCisgICAgICAgIHNlbGYuX3J1bl9ndGtkb2NfbWt0bXBsKCkKKyAgICAgICAg
c2VsZi5fcnVuX2d0a2RvY19ta2RiKCkKKworICAgICAgICBpZiBub3QgaHRtbDoKKyAgICAgICAg
ICAgIHJldHVybgorCisgICAgICAgIHNlbGYuX3J1bl9ndGtkb2NfbWtodG1sKCkKKyAgICAgICAg
c2VsZi5fcnVuX2d0a2RvY19maXh4cmVmKCkKKworICAgIGRlZiBfZGVsZXRlX2ZpbGVfaWZfZXhp
c3RzKHNlbGYsIHBhdGgpOgorICAgICAgICBpZiBub3Qgb3MuYWNjZXNzKHBhdGgsIG9zLkZfT0sg
fCBvcy5SX09LKToKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1
ZygnZGVsZXRpbmcgJXMnLCBwYXRoKQorICAgICAgICBvcy51bmxpbmsocGF0aCkKKworICAgIGRl
ZiBfY3JlYXRlX2RpcmVjdG9yeV9pZl9ub25leGlzdGVudChzZWxmLCBwYXRoKToKKyAgICAgICAg
dHJ5OgorICAgICAgICAgICAgb3MubWFrZWRpcnMocGF0aCkKKyAgICAgICAgZXhjZXB0IE9TRXJy
b3IgYXMgZXJyb3I6CisgICAgICAgICAgICBpZiBlcnJvci5lcnJubyAhPSBlcnJuby5FRVhJU1Q6
CisgICAgICAgICAgICAgICAgcmFpc2UKKworICAgIGRlZiBfcmFpc2VfZXhjZXB0aW9uX2lmX2Zp
bGVfaW5hY2Nlc3NpYmxlKHNlbGYsIHBhdGgpOgorICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlz
dHMocGF0aCkgb3Igbm90IG9zLmFjY2VzcyhwYXRoLCBvcy5SX09LKToKKyAgICAgICAgICAgIHJh
aXNlIEV4Y2VwdGlvbigiQ291bGQgbm90IGFjY2VzcyBmaWxlIGF0OiAlcyIgJSBwYXRoKQorCisg
ICAgZGVmIF9vdXRwdXRfaGFzX3dhcm5pbmdzKHNlbGYsIG91dHB1dHMpOgorICAgICAgICBmb3Ig
b3V0cHV0IGluIG91dHB1dHM6CisgICAgICAgICAgICBpZiBvdXRwdXQgYW5kIG91dHB1dC5maW5k
KCd3YXJuaW5nJyk6CisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgcmV0dXJu
IEZhbHNlCisKKyAgICBkZWYgX2Fza195ZXNfb3Jfbm9fcXVlc3Rpb24oc2VsZiwgcXVlc3Rpb24p
OgorICAgICAgICBpZiBub3Qgc2VsZi5pbnRlcmFjdGl2ZToKKyAgICAgICAgICAgIHJldHVybiBU
cnVlCisKKyAgICAgICAgcXVlc3Rpb24gKz0gJyBbeS9OXSAnCisgICAgICAgIGFuc3dlciA9IE5v
bmUKKyAgICAgICAgd2hpbGUgYW5zd2VyICE9ICd5JyBhbmQgYW5zd2VyICE9ICduJyBhbmQgYW5z
d2VyICE9ICcnOgorICAgICAgICAgICAgYW5zd2VyID0gcmF3X2lucHV0KHF1ZXN0aW9uKS5sb3dl
cigpCisgICAgICAgIHJldHVybiBhbnN3ZXIgPT0gJ3knCisKKyAgICBkZWYgX3J1bl9jb21tYW5k
KHNlbGYsIGFyZ3MsIGVudj1Ob25lLCBjd2Q9Tm9uZSwgcHJpbnRfb3V0cHV0PVRydWUsIGlnbm9y
ZV93YXJuaW5ncz1GYWxzZSk6CisgICAgICAgIGlmIHByaW50X291dHB1dDoKKyAgICAgICAgICAg
IHNlbGYubG9nZ2VyLmluZm8oIlJ1bm5pbmcgJXMiLCBhcmdzWzBdKQorICAgICAgICBzZWxmLmxv
Z2dlci5kZWJ1ZygiRnVsbCBjb21tYW5kIGFyZ3M6ICVzIiwgc3RyKGFyZ3MpKQorCisgICAgICAg
IHByb2Nlc3MgPSBzdWJwcm9jZXNzLlBvcGVuKGFyZ3MsIGVudj1lbnYsIGN3ZD1jd2QsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUp
CisgICAgICAgIHN0ZG91dCwgc3RkZXJyID0gcHJvY2Vzcy5jb21tdW5pY2F0ZSgpCisKKyAgICAg
ICAgaWYgcHJpbnRfb3V0cHV0OgorICAgICAgICAgICAgaWYgc3Rkb3V0OgorICAgICAgICAgICAg
ICAgIHN5cy5zdGRvdXQud3JpdGUoc3Rkb3V0KQorICAgICAgICAgICAgaWYgc3RkZXJyOgorICAg
ICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoc3RkZXJyKQorCisgICAgICAgIGlmIHByb2Nl
c3MucmV0dXJuY29kZSAhPSAwOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCclcyBwcm9k
dWNlZCBhIG5vbi16ZXJvIHJldHVybiBjb2RlICVpJworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAlIChhcmdzWzBdLCBwcm9jZXNzLnJldHVybmNvZGUpKQorCisgICAgICAgIGlmICd3YXJu
aW5nJyBpbiBzdGRlcnIgb3IgJ3dhcm5pbmcnIGluIHN0ZG91dDoKKyAgICAgICAgICAgIHNlbGYu
c2F3X3dhcm5pbmdzID0gVHJ1ZQorICAgICAgICAgICAgaWYgbm90IHNlbGYuX2Fza195ZXNfb3Jf
bm9fcXVlc3Rpb24oJyVzIHByb2R1Y2VkIHdhcm5pbmdzLCAnCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHJ5IHRvIGNvbnRpbnVlPycgJSBhcmdzWzBd
KToKKyAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJyVzIHN0ZXAgZmFpbGVkJyAlIGFy
Z3NbMF0pCisKKyAgICAgICAgcmV0dXJuIHN0ZG91dC5zdHJpcCgpCisKKyAgICBkZWYgX2NvcHlf
ZG9jX2ZpbGVzX3RvX291dHB1dF9kaXIoc2VsZiwgaHRtbD1UcnVlKToKKyAgICAgICAgaWYgbm90
IHNlbGYuZG9jX2RpcjoKKyAgICAgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oJ05vdCBjb3B5aW5n
IGFueSBmaWxlcyBmcm9tIGRvYyBkaXJlY3RvcnksJworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnIGJlY2F1c2Ugbm8gZG9jIGRpcmVjdG9yeSBnaXZlbi4nKQorICAgICAgICAgICAgcmV0
dXJuCisKKyAgICAgICAgZGVmIGNvcHlfZmlsZV9yZXBsYWNpbmdfZXhpc3Rpbmcoc3JjLCBkZXN0
KToKKyAgICAgICAgICAgIGlmIG9zLnBhdGguaXNkaXIoc3JjKToKKyAgICAgICAgICAgICAgICBz
ZWxmLmxvZ2dlci5kZWJ1Zygnc2tpcHBlZCBkaXJlY3RvcnkgJXMnLCAgc3JjKQorICAgICAgICAg
ICAgICAgIHJldHVybgorICAgICAgICAgICAgaWYgbm90IG9zLmFjY2VzcyhzcmMsIG9zLkZfT0sg
fCBvcy5SX09LKToKKyAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1Zygnc2tpcHBlZCB1
bnJlYWRhYmxlICVzJywgc3JjKQorICAgICAgICAgICAgICAgIHJldHVybgorCisgICAgICAgICAg
ICBzZWxmLl9kZWxldGVfZmlsZV9pZl9leGlzdHMoZGVzdCkKKworICAgICAgICAgICAgc2VsZi5s
b2dnZXIuZGVidWcoJ2NyZWF0ZWQgJXMnLCBkZXN0KQorICAgICAgICAgICAgb3MubGluayhzcmMs
IGRlc3QpCisKKyAgICAgICAgZGVmIGNvcHlfYWxsX2ZpbGVzX2luX2RpcmVjdG9yeShzcmMsIGRl
c3QpOgorICAgICAgICAgICAgZm9yIHBhdGggaW4gb3MubGlzdGRpcihzcmMpOgorICAgICAgICAg
ICAgICAgIGNvcHlfZmlsZV9yZXBsYWNpbmdfZXhpc3Rpbmcob3MucGF0aC5qb2luKHNyYywgcGF0
aCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRo
LmpvaW4oZGVzdCwgcGF0aCkpCisKKyAgICAgICAgc2VsZi5sb2dnZXIuaW5mbygnQ29weWluZyB0
ZW1wbGF0ZSBmaWxlcyB0byBvdXRwdXQgZGlyZWN0b3J5Li4uJykKKyAgICAgICAgc2VsZi5fY3Jl
YXRlX2RpcmVjdG9yeV9pZl9ub25leGlzdGVudChzZWxmLm91dHB1dF9kaXIpCisgICAgICAgIGNv
cHlfYWxsX2ZpbGVzX2luX2RpcmVjdG9yeShzZWxmLmRvY19kaXIsIHNlbGYub3V0cHV0X2RpcikK
KworICAgICAgICBpZiBub3QgaHRtbDoKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIHNl
bGYubG9nZ2VyLmluZm8oJ0NvcHlpbmcgSFRNTCBmaWxlcyB0byBvdXRwdXQgZGlyZWN0b3J5Li4u
JykKKyAgICAgICAgaHRtbF9zcmNfZGlyID0gb3MucGF0aC5qb2luKHNlbGYuZG9jX2RpciwgJ2h0
bWwnKQorICAgICAgICBodG1sX2Rlc3RfZGlyID0gb3MucGF0aC5qb2luKHNlbGYub3V0cHV0X2Rp
ciwgJ2h0bWwnKQorICAgICAgICBzZWxmLl9jcmVhdGVfZGlyZWN0b3J5X2lmX25vbmV4aXN0ZW50
KGh0bWxfZGVzdF9kaXIpCisKKyAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoaHRtbF9zcmNfZGly
KToKKyAgICAgICAgICAgIGNvcHlfYWxsX2ZpbGVzX2luX2RpcmVjdG9yeShodG1sX3NyY19kaXIs
IGh0bWxfZGVzdF9kaXIpCisKKyAgICBkZWYgX3dyaXRlX3ZlcnNpb25feG1sKHNlbGYpOgorICAg
ICAgICBpZiBub3Qgc2VsZi52ZXJzaW9uOgorICAgICAgICAgICAgc2VsZi5sb2dnZXIuaW5mbygn
Tm8gdmVyc2lvbiBzcGVjaWZpZWQsIHNvIG5vdCB3cml0aW5nIHZlcnNpb24ueG1sJykKKyAgICAg
ICAgICAgIHJldHVybgorCisgICAgICAgIHZlcnNpb25feG1sX3BhdGggPSBvcy5wYXRoLmpvaW4o
c2VsZi5vdXRwdXRfZGlyLCAndmVyc2lvbi54bWwnKQorICAgICAgICBzcmNfdmVyc2lvbl94bWxf
cGF0aCA9IG9zLnBhdGguam9pbihzZWxmLmRvY19kaXIsICd2ZXJzaW9uLnhtbCcpCisKKyAgICAg
ICAgIyBEb24ndCBvdmVyd3JpdGUgdmVyc2lvbi54bWwgaWYgaXQgd2FzIGluIHRoZSBkb2MgZGly
ZWN0b3J5LgorICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyh2ZXJzaW9uX3htbF9wYXRoKSBhbmQg
XAorICAgICAgICAgICBvcy5wYXRoLmV4aXN0cyhzcmNfdmVyc2lvbl94bWxfcGF0aCk6CisgICAg
ICAgICAgICByZXR1cm4KKworICAgICAgICBvdXRwdXRfZmlsZSA9IG9wZW4odmVyc2lvbl94bWxf
cGF0aCwgJ3cnKQorICAgICAgICBvdXRwdXRfZmlsZS53cml0ZShzZWxmLnZlcnNpb24pCisgICAg
ICAgIG91dHB1dF9maWxlLmNsb3NlKCkKKworICAgIGRlZiBfcnVuX2d0a2RvY19zY2FuKHNlbGYp
OgorICAgICAgICBhcmdzID0gWydndGtkb2Mtc2NhbicsCisgICAgICAgICAgICAgICAgJy0tbW9k
dWxlPSVzJyAlIHNlbGYubW9kdWxlX25hbWUsCisgICAgICAgICAgICAgICAgJy0tcmVidWlsZC10
eXBlcyddCisKKyAgICAgICAgIyBFYWNoIHNvdXJjZSBkaXJlY3Rvcnkgc2hvdWxkIGJlIGhhdmUg
aXRzIG93biAiLS1zb3VyY2UtZGlyPSIgcHJlZml4LgorICAgICAgICBhcmdzLmV4dGVuZChbJy0t
c291cmNlLWRpcj0lcycgJSBwYXRoIGZvciBwYXRoIGluIHNlbGYuc291cmNlX2RpcnNdKQorCisg
ICAgICAgIGlmIHNlbGYuZGVjb3JhdG9yOgorICAgICAgICAgICAgYXJncy5hcHBlbmQoJy0taWdu
b3JlLWRlY29yYXRvcnM9JXMnICUgc2VsZi5kZWNvcmF0b3IpCisgICAgICAgIGlmIHNlbGYuZGVw
cmVjYXRpb25fZ3VhcmQ6CisgICAgICAgICAgICBhcmdzLmFwcGVuZCgnLS1kZXByZWNhdGVkLWd1
YXJkcz0lcycgJSBzZWxmLmRlcHJlY2F0aW9uX2d1YXJkKQorICAgICAgICBpZiBzZWxmLm91dHB1
dF9kaXI6CisgICAgICAgICAgICBhcmdzLmFwcGVuZCgnLS1vdXRwdXQtZGlyPSVzJyAlIHNlbGYu
b3V0cHV0X2RpcikKKworICAgICAgICAjIGd0a2RvYy1zY2FuIHdhbnRzIHRoZSBiYXNlbmFtZXMg
b2YgaWdub3JlZCBoZWFkZXJzLCBzbyBzdHJpcCB0aGUKKyAgICAgICAgIyBkaXJuYW1lLiBEaWZm
ZXJlbnQgZnJvbSAiLS1zb3VyY2UtZGlyIiwgdGhlIGhlYWRlcnMgc2hvdWxkIGJlCisgICAgICAg
ICMgc3BlY2lmaWVkIGFzIG9uZSBsb25nIHN0cmluZy4KKyAgICAgICAgaWYgc2VsZi5pZ25vcmVk
X2ZpbGVzOgorICAgICAgICAgICAgaWdub3JlZF9maWxlc19iYXNlbmFtZXMgPSBcCisgICAgICAg
ICAgICAgICAgW29zLnBhdGguYmFzZW5hbWUoeCkgZm9yIHggaW4gc2VsZi5pZ25vcmVkX2ZpbGVz
XQorICAgICAgICAgICAgYXJncy5hcHBlbmQoJy0taWdub3JlLWhlYWRlcnM9JXMnICUgJyAnLmpv
aW4oaWdub3JlZF9maWxlc19iYXNlbmFtZXMpKQorCisgICAgICAgIHNlbGYuX3J1bl9jb21tYW5k
KGFyZ3MpCisKKyAgICBkZWYgX3J1bl9ndGtkb2Nfc2NhbmdvYmooc2VsZik6CisgICAgICAgIGVu
diA9IG9zLmVudmlyb24KKyAgICAgICAgbGRmbGFncyA9IHNlbGYubGRmbGFncworICAgICAgICBp
ZiBzZWxmLmxpYnJhcnlfcGF0aDoKKyAgICAgICAgICAgIGxkZmxhZ3MgPSAnICItTCVzIiAnICUg
c2VsZi5saWJyYXJ5X3BhdGggKyBsZGZsYWdzCisgICAgICAgICAgICBjdXJyZW50X2xkX2xpYnJh
cnlfcGF0aCA9IGVudi5nZXQoJ0xEX0xJQlJBUllfUEFUSCcpCisgICAgICAgICAgICBpZiBjdXJy
ZW50X2xkX2xpYnJhcnlfcGF0aDoKKyAgICAgICAgICAgICAgICBlbnZbJ1JVTiddID0gJ0xEX0xJ
QlJBUllfUEFUSD0iJXM6JXMiICcgJSAoc2VsZi5saWJyYXJ5X3BhdGgsIGN1cnJlbnRfbGRfbGli
cmFyeV9wYXRoKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBlbnZbJ1JVTidd
ID0gJ0xEX0xJQlJBUllfUEFUSD0iJXMiICcgJSBzZWxmLmxpYnJhcnlfcGF0aAorCisgICAgICAg
IGlmIGxkZmxhZ3M6CisgICAgICAgICAgICBlbnZbJ0xERkxBR1MnXSA9IGxkZmxhZ3MKKyAgICAg
ICAgaWYgc2VsZi5jZmxhZ3M6CisgICAgICAgICAgICBlbnZbJ0NGTEFHUyddID0gc2VsZi5jZmxh
Z3MKKworICAgICAgICBpZiAnQ0ZMQUdTJyBpbiBlbnY6CisgICAgICAgICAgICBzZWxmLmxvZ2dl
ci5kZWJ1ZygnQ0ZMQUdTPSVzJywgZW52WydDRkxBR1MnXSkKKyAgICAgICAgaWYgJ0xERkxBR1Mn
IGluIGVudjoKKyAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCdMREZMQUdTICVzJywgZW52
WydMREZMQUdTJ10pCisgICAgICAgIGlmICdSVU4nIGluIGVudjoKKyAgICAgICAgICAgIHNlbGYu
bG9nZ2VyLmRlYnVnKCdSVU49JXMnLCBlbnZbJ1JVTiddKQorICAgICAgICBzZWxmLl9ydW5fY29t
bWFuZChbJ2d0a2RvYy1zY2FuZ29iaicsICctLW1vZHVsZT0lcycgJSBzZWxmLm1vZHVsZV9uYW1l
XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZW52PWVudiwgY3dkPXNlbGYub3V0cHV0X2Rp
cikKKworICAgIGRlZiBfcnVuX2d0a2RvY19ta3RtcGwoc2VsZik6CisgICAgICAgIGFyZ3MgPSBb
J2d0a2RvYy1ta3RtcGwnLCAnLS1tb2R1bGU9JXMnICUgc2VsZi5tb2R1bGVfbmFtZV0KKyAgICAg
ICAgc2VsZi5fcnVuX2NvbW1hbmQoYXJncywgY3dkPXNlbGYub3V0cHV0X2RpcikKKworICAgIGRl
ZiBfcnVuX2d0a2RvY19ta2RiKHNlbGYpOgorICAgICAgICBzZ21sX2ZpbGUgPSBvcy5wYXRoLmpv
aW4oc2VsZi5vdXRwdXRfZGlyLCBzZWxmLm1haW5fc2dtbF9maWxlKQorICAgICAgICBzZWxmLl9y
YWlzZV9leGNlcHRpb25faWZfZmlsZV9pbmFjY2Vzc2libGUoc2dtbF9maWxlKQorCisgICAgICAg
IGFyZ3MgPSBbJ2d0a2RvYy1ta2RiJywKKyAgICAgICAgICAgICAgICAnLS1tb2R1bGU9JXMnICUg
c2VsZi5tb2R1bGVfbmFtZSwKKyAgICAgICAgICAgICAgICAnLS1tYWluLXNnbWwtZmlsZT0lcycg
JSBzZ21sX2ZpbGUsCisgICAgICAgICAgICAgICAgJy0tc291cmNlLXN1ZmZpeGVzPWgsYyxjcHAs
Y2MnLAorICAgICAgICAgICAgICAgICctLW91dHB1dC1mb3JtYXQ9eG1sJywKKyAgICAgICAgICAg
ICAgICAnLS1zZ21sLW1vZGUnXQorCisgICAgICAgICMgRWFjaCBkaXJlY3Rvcnkgc2hvdWxkIGJl
IGhhdmUgaXRzIG93biAiLS1zb3VyY2UtZGlyPSIgcHJlZml4LgorICAgICAgICBhcmdzLmV4dGVu
ZChbJy0tc291cmNlLWRpcj0lcycgJSBwYXRoIGZvciBwYXRoIGluIHNlbGYuc291cmNlX2RpcnNd
KQorICAgICAgICBzZWxmLl9ydW5fY29tbWFuZChhcmdzLCBjd2Q9c2VsZi5vdXRwdXRfZGlyKQor
CisgICAgZGVmIF9ydW5fZ3RrZG9jX21raHRtbChzZWxmKToKKyAgICAgICAgaHRtbF9kZXN0X2Rp
ciA9IG9zLnBhdGguam9pbihzZWxmLm91dHB1dF9kaXIsICdodG1sJykKKyAgICAgICAgaWYgbm90
IG9zLnBhdGguaXNkaXIoaHRtbF9kZXN0X2Rpcik6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRp
b24oIiVzIGlzIG5vdCBhIGRpcmVjdG9yeSwgY291bGQgbm90IGdlbmVyYXRlIEhUTUwiCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJSBodG1sX2Rlc3RfZGlyKQorICAgICAgICBlbGlmIG5v
dCBvcy5hY2Nlc3MoaHRtbF9kZXN0X2Rpciwgb3MuWF9PSyB8IG9zLlJfT0sgfCBvcy5XX09LKToK
KyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiQ291bGQgbm90IGFjY2VzcyAlcyB0byBnZW5l
cmF0ZSBIVE1MIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgaHRtbF9kZXN0X2RpcikK
KworICAgICAgICAjIGd0a2RvYy1ta2h0bWwgZXhwZWN0cyB0aGUgU0dNTCBwYXRoIHRvIGJlIGFi
c29sdXRlLgorICAgICAgICBzZ21sX2ZpbGUgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5hYnNwYXRo
KHNlbGYub3V0cHV0X2RpciksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxm
Lm1haW5fc2dtbF9maWxlKQorICAgICAgICBzZWxmLl9yYWlzZV9leGNlcHRpb25faWZfZmlsZV9p
bmFjY2Vzc2libGUoc2dtbF9maWxlKQorCisgICAgICAgIHNlbGYuX3J1bl9jb21tYW5kKFsnZ3Rr
ZG9jLW1raHRtbCcsIHNlbGYubW9kdWxlX25hbWUsIHNnbWxfZmlsZV0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIGN3ZD1odG1sX2Rlc3RfZGlyKQorCisgICAgZGVmIF9ydW5fZ3RrZG9jX2Zp
eHhyZWYoc2VsZik6CisgICAgICAgIHNlbGYuX3J1bl9jb21tYW5kKFsnZ3RrZG9jLWZpeHhyZWYn
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tbW9kdWxlLWRpcj1odG1sJywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICctLWh0bWwtZGlyPWh0bWwnXSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgY3dkPXNlbGYub3V0cHV0X2RpciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWdub3JlX3dhcm5pbmdzPVRydWUpCisKKworY2xhc3MgUGtnQ29uZmlnR1RLRG9jKEdUS0Rv
Yyk6CisKKyAgICAiIiJDbGFzcyByZWFkcyBhIGxpYnJhcnkncyBwa2djb25maWcgZmlsZSB0byBn
dWVzcyBndGtkb2MgcGFyYW1ldGVycy4KKworICAgIFNvbWUgZ3RrZG9jIHBhcmFtZXRlcnMgY2Fu
IGJlIGd1ZXNzZWQgYnkgcmVhZGluZyBhIGxpYnJhcnkncyBwa2djb25maWcKKyAgICBmaWxlLCBp
bmNsdWRpbmcgdGhlIGNmbGFncywgbGRmbGFncyBhbmQgdmVyc2lvbiBwYXJhbWV0ZXJzLiBJZiB5
b3UKKyAgICBwcm92aWRlIHRoZXNlIHBhcmFtZXRlcnMgYXMgd2VsbCwgdGhleSB3aWxsIGJlIGFw
cGVuZGVkIHRvIHRoZSBvbmVzCisgICAgZ3Vlc3NlZCB2aWEgdGhlIHBrZ2NvbmZpZyBmaWxlLgor
CisgICAgS2V5d29yZCBhcmd1bWVudHM6CisgICAgICBwa2dfY29uZmlnX3BhdGggLS0gUGF0aCB0
byB0aGUgcGtnY29uZmlnIGZpbGUgZm9yIHRoZSBsaWJyYXJ5LiBSZXF1aXJlZC4KKyAgICAiIiIK
KworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwa2dfY29uZmlnX3BhdGgsICoqYXJncyk6CisgICAg
ICAgIHN1cGVyKFBrZ0NvbmZpZ0dUS0RvYywgc2VsZikuX19pbml0X18oKiphcmdzKQorCisgICAg
ICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhwa2dfY29uZmlnX3BhdGgpOgorICAgICAgICAgICAg
cmFpc2UgRXhjZXB0aW9uKCdDb3VsZCBub3QgZmluZCBwa2ctY29uZmlnIGZpbGUgYXQ6ICVzJwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgcGtnX2NvbmZpZ19wYXRoKQorCisgICAgICAg
IHNlbGYuY2ZsYWdzICs9ICIgIiArIHNlbGYuX3J1bl9jb21tYW5kKFsncGtnLWNvbmZpZycsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwa2dfY29uZmln
X3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
LS1jZmxhZ3MnXSwgcHJpbnRfb3V0cHV0PUZhbHNlKQorICAgICAgICBzZWxmLmxkZmxhZ3MgKz0g
IiAiICsgc2VsZi5fcnVuX2NvbW1hbmQoWydwa2ctY29uZmlnJywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBrZ19jb25maWdfcGF0aCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLWxpYnMnXSwgcHJpbnRf
b3V0cHV0PUZhbHNlKQorICAgICAgICBzZWxmLnZlcnNpb24gPSBzZWxmLl9ydW5fY29tbWFuZChb
J3BrZy1jb25maWcnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cGtnX2NvbmZpZ19wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJy0tbW9kdmVyc2lvbiddLCBwcmludF9vdXRwdXQ9RmFsc2UpCmRpZmYgLS1naXQgYS9DaGFu
Z2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggN2RmNTlkMTBmM2Y5ZTk0YWVkY2E4OWI0OTIyNmE1MmJm
ZWU1NzJjNS4uNGNmOWMyOWU4MWQ3ZTNiODUxNzIzMTUyODgxNTE1NzA4YzM0ODcyMyAxMDA2NDQK
LS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDExLTEx
LTE3ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBb
R1RLXSBJbnRlZ3JhdGUgYnVpbGQtZ3RrZG9jIGludG8gYnVpbGQtd2Via2l0IGFuZCBtYWtlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjYyNgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR05VbWFrZWZp
bGUuYW06IFJlbW92ZSByZWZlcmVuY2VzIHRvIG9sZCBndGtkb2MgZmlsZXMuIFVwZGF0ZQorICAg
ICAgICB0aGUgZGlzdC1ob29rIHRvIGluY2x1ZGUgY29weWluZyBkb2N1bWVudGF0aW9uIGludG8g
dGhlIGRpc3RyaWJ1dGlvbi4KKyAgICAgICAgVGhpcyBhbHNvIG1lYW5zIHRoYXQgdGhlIGJ1aWxk
IHdpbGwgZmFpbCBpZiBkb2N1bWVudGF0aW9uIGhhc24ndCBiZWVuCisgICAgICAgIGdlbmVyYXRl
ZCBiZWZvcmUgJ21ha2UgZGlzdC4nCisgICAgICAgICogY29uZmlndXJlLmFjOiBEaXR0by4KKwog
MjAxMS0xMS0yMyAgUmFwaGFlbCBLdWJvIGRhIENvc3RhICA8a3Vib0Bwcm9mdXNpb24ubW9iaT4K
IAogICAgICAgICBbQ01ha2VdIE1vdmUgdGhlIHRvcC1sZXZlbCBsb2dpYyB0byB0aGUgdG9wLWxl
dmVsIGRpcmVjdG9yeS4KZGlmZiAtLWdpdCBhL0dOVW1ha2VmaWxlLmFtIGIvR05VbWFrZWZpbGUu
YW0KaW5kZXggZjkxZTg4ZDg5NmMxMTVjNGFhM2QzYjk3ZDFhOGVkMTY2NTU1YzU5Ni4uNWU4Zjg2
NTRiOGYyMjZiZTM4YTA2ZmMzNjc1ZmFjNTRlMDcxOGVjNiAxMDA2NDQKLS0tIGEvR05VbWFrZWZp
bGUuYW0KKysrIGIvR05VbWFrZWZpbGUuYW0KQEAgLTIwNyw3ICsyMDcsNiBAQCBpbmNsdWRlIFNv
dXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtCiBpbmNsdWRlIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2dvYmplY3QvR05VbWFrZWZpbGUuYW0KIGluY2x1ZGUgVG9vbHMvR05VbWFrZWZpbGUu
YW0KIGluY2x1ZGUgU291cmNlL1dlYktpdC9ndGsvcG8vR05VbWFrZWZpbGUuYW0KLWluY2x1ZGUg
U291cmNlL1dlYktpdC9ndGsvZG9jcy9HTlVtYWtlZmlsZS5hbQogaW5jbHVkZSBUb29scy9EdW1w
UmVuZGVyVHJlZS9ndGsvR05VbWFrZWZpbGUuSW1hZ2VEaWZmLmFtCiAKIGlmIEVOQUJMRV9XRUJL
SVQyCkBAIC0yNjUsMyArMjY0LDE2IEBAIGNsZWFuLWxvY2FsOgogbWFpbnRhaW5lci1jbGVhbi1s
b2NhbDogZGlzdGNsZWFuLWxvY2FsCiBkaXN0Y2xlYW4tbG9jYWw6CiAJLXJtIC1yZiAkKEdFTlNP
VVJDRVMpICQoR0VOUFJPR1JBTVMpCisKK2Rpc3QtaG9vazoKKwljcCAkKFdlYktpdCkvTkVXUyAk
KGRpc3RkaXIpCisJQG1rZGlyIC1wICQoZGlzdGRpcikvRG9jdW1lbnRhdGlvbi93ZWJraXRndGsv
aHRtbAorCUBta2RpciAtcCAkKGRpc3RkaXIpL0RvY3VtZW50YXRpb24vd2Via2l0Z3RrL3RtcGwK
KwlALWNwIC4vRG9jdW1lbnRhdGlvbi93ZWJraXRndGsvdG1wbC8qLnNnbWwgJChkaXN0ZGlyKS9E
b2N1bWVudGF0aW9uL3dlYmtpdGd0ay90bXBsCisJQGNwIC4vRG9jdW1lbnRhdGlvbi93ZWJraXRn
dGsvaHRtbC8qICQoZGlzdGRpcikvRG9jdW1lbnRhdGlvbi93ZWJraXRndGsvaHRtbAoraWYgRU5B
QkxFX1dFQktJVDIKKwlAbWtkaXIgLXAgJChkaXN0ZGlyKS9Eb2N1bWVudGF0aW9uL3dlYmtpdDJn
dGsvaHRtbAorCUBta2RpciAtcCAkKGRpc3RkaXIpL0RvY3VtZW50YXRpb24vd2Via2l0Mmd0ay90
bXBsCisJQC1jcCAuL0RvY3VtZW50YXRpb24vd2Via2l0Mmd0ay90bXBsLyouc2dtbCAkKGRpc3Rk
aXIpL0RvY3VtZW50YXRpb24vd2Via2l0Mmd0ay90bXBsCisJQGNwIC4vRG9jdW1lbnRhdGlvbi93
ZWJraXQyZ3RrL2h0bWwvKiAkKGRpc3RkaXIpL0RvY3VtZW50YXRpb24vd2Via2l0Mmd0ay9odG1s
CitlbmRpZgpkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCmluZGV4IGZh
ODM5NGMwZDE4OGRkMWE4MjVmMTNhNDg2OTQ2YjNiNzVkNmZiMGQuLmZjY2MyYzFmMjJkNzY4MTg2
ODIxOTBiMGVkOTJlNmYxMmIzZTY0ZWIgMTAwNjQ0Ci0tLSBhL2NvbmZpZ3VyZS5hYworKysgYi9j
b25maWd1cmUuYWMKQEAgLTEyMTAsNyArMTIxMCw2IEBAIEdOVW1ha2VmaWxlCiAKIEFDX0NPTkZJ
R19GSUxFUyhbCiBTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0dmVyc2lvbi5oCi1Eb2N1
bWVudGF0aW9uL3ZlcnNpb24ueG1sOlNvdXJjZS9XZWJLaXQvZ3RrL2RvY3MvdmVyc2lvbi54bWwu
aW4KIF0pCiAKIEFDX0NPTkZJR19GSUxFUyhbCkBAIC0xMjQ2LDYgKzEyNDUsNyBAQCBCdWlsZCBj
b25maWd1cmF0aW9uOgogIEZvbnQgYmFja2VuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDogJHdpdGhfZm9udF9iYWNrZW5kCiAgT3B0aW1pemVkIG1lbW9yeSBh
bGxvY2F0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAkZW5hYmxlX2Zhc3RfbWFs
bG9jCiAgSmF2YVNjcmlwdCBFbmdpbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgOiAkd2l0aF9qc2VuZ2luZQorCiBGZWF0dXJlczoKICAzRCBSZW5kZXJpbmcgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICRlbmFibGVfM2RfcmVuZGVy
aW5nCiAgV2ViR0wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgOiAkZW5hYmxlX3dlYmdsCkBAIC0xMzA1LDYgKzEzMDUsNyBAQCBHVEsrIGNvbmZpZ3Vy
YXRpb246CiAgR0RLIHRhcmdldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOiAkd2l0aF90YXJnZXQKICBIaWxkb24gVUkgZXh0ZW5zaW9ucyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA6ICR3aXRoX2hpbGRvbgogIEludHJvc3BlY3Rpb24g
c3VwcG9ydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJGVuYWJsZV9pbnRy
b3NwZWN0aW9uCisgR2VuZXJhdGUgZG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgOiAkZW5hYmxlX2d0a19kb2MKICIKIGlmIHRlc3QgIiR3aXRoX3VuaWNvZGVf
YmFja2VuZCIgPSAiZ2xpYiI7IHRoZW4KICAgIGVjaG8gIiAgICAgPj4gV0FSTklORzogdGhlIGds
aWItYmFzZWQgdW5pY29kZSBiYWNrZW5kIGlzIHNsb3cgYW5kIGluY29tcGxldGUgPDwiCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116520</attachid>
            <date>2011-11-24 09:18:13 -0800</date>
            <delta_ts>2011-11-25 02:37:56 -0800</delta_ts>
            <desc>Correct patch</desc>
            <filename>bug-72626-20111124181810.patch</filename>
            <type>text/plain</type>
            <size>66369</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxMDU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0
ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggZDlkMjhmOGRl
MTRmMjQ4ZjU4MjM1MmNjOGFkOTE4NDk0M2EyMTllZS4uNDM2Y2QxMmVmNzE3MmJmNThjMmY3YTgw
ZWY5NTM0MGY4NzUzYzg5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEx
LTExLTE3ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAg
ICBbR1RLXSBJbnRlZ3JhdGUgYnVpbGQtZ3RrZG9jIGludG8gYnVpbGQtd2Via2l0IGFuZCBtYWtl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjYyNgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZG9jcy9H
TlVtYWtlZmlsZS5hbTogUmVtb3ZlZC4KKyAgICAgICAgKiBkb2NzL3ZlcnNpb24ueG1sLmluOiBS
ZW1vdmVkLgorCiAyMDExLTExLTIzICBLYXVzdHViaCBBdHJhd2Fsa2FyICA8a2F1c3R1YmhAbW90
b3JvbGEuY29tPgogCiAgICAgICAgIERvY3VtZW50YXRpb24gZml4IGZvciBsb2FkLWNvbW1pdHRl
ZCBpbiB3ZWJraXR3ZWJmcmFtZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDhmZmNiMjI5NjY5YzYyMzllMWNjZDg3
ZTE3ZTUwNzIyMzhlZGVkMTAuLjQ2YTVkYjM4NGY1YmY4MWY1Nzg3ZTMzZDIyOTg0MWFjNmEwMDcx
YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0xMS0xNyAgTWFydGluIFJvYmlu
c29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gSW50ZWdyYXRlIGJ1
aWxkLWd0a2RvYyBpbnRvIGJ1aWxkLXdlYmtpdCBhbmQgbWFrZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzI2MjYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBSZW1vdmVkIHJl
ZmVyZW5jZXMgdG8gYnVpbGQtZ3RrZG9jIGFuZCBndGtkb2MucHkuCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9ndGsvZG9jcy9idWlsZC1ndGtkb2M6IFJlbW92ZWQuCisKIDIwMTEtMTEtMjMgIFJh
cGhhZWwgS3VibyBkYSBDb3N0YSAgPGt1Ym9AcHJvZnVzaW9uLm1vYmk+CiAKICAgICAgICAgW0NN
YWtlXSBNb3ZlIHRoZSB0b3AtbGV2ZWwgbG9naWMgdG8gdGhlIHRvcC1sZXZlbCBkaXJlY3Rvcnku
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9X
ZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtCmluZGV4IDc1MmM5ZTY1MTUyNWY5ZGMyMTA5ZDFiNjMx
OTA4YzYxOTQ2NzY1ZmIuLmUzNGI0NDIzNWNkZmRmNjdkOTE2ZWE3YTk2NmI5ZjI2YTE4MGNjNWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJj
ZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtCkBAIC0zODQsOCArMzg0LDEyIEBAIGdzZXR0aW5n
c19TQ0hFTUFTID0gJCh0b3BfYnVpbGRkaXIpL1NvdXJjZS9XZWJLaXQvZ3RrL29yZy53ZWJraXRn
dGstQFdFQktJVEdUS19BCiBFWFRSQV9ESVNUICs9IFwKIAkkKFdlYktpdCkvQ2hhbmdlTG9nIFwK
IAkkKFdlYktpdCkvTkVXUyBcCisJJChXZWJLaXQpL2RvY3Mvd2Via2l0Z3RrLWRvY3Muc2dtbCBc
CisJJChXZWJLaXQpL2RvY3Mvd2Via2l0Z3RrLXNlY3Rpb25zLnR4dCBcCisJJChXZWJLaXQpL2Rv
Y3Mvd2Via2l0Z3RrLnR5cGVzIFwKKwkkKFdlYktpdCkvZG9jcy93ZWJraXRlbnZpcm9ubWVudC54
bWwgXAorCSQoV2ViS2l0KS9kb2NzL3dlYmtpdGd0ay1vdmVycmlkZXMudHh0IFwKIAkkKFdlYktp
dCkvd2Via2l0bWFyc2hhbC5saXN0IFwKLQkkKFdlYktpdCkvR05VbWFrZWZpbGUuZ3RrLWRvYy5h
bSBcCiAJJChXZWJLaXQpL3BvLyogXAogCSQoV2ViS2l0KS9yZXNvdXJjZXMvKiBcCiAJJChXZWJL
aXQpL3Rlc3RzL3Jlc291cmNlcy8qIFwKQEAgLTU5Myw4ICs1OTcsNiBAQCBESVNUQ0xFQU5GSUxF
UyArPSBcCiAJJCh0b3BfYnVpbGRkaXIpL1NvdXJjZS9XZWJLaXQvZ3RrL29yZy53ZWJraXRndGst
QFdFQktJVEdUS19BUElfVkVSU0lPTkAuZ3NjaGVtYS54bWwgXAogCSQodG9wX2J1aWxkZGlyKS9T
b3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0dmVyc2lvbi5oCiAKLWRpc3QtaG9vazoKLQlj
cCAkKFdlYktpdCkvTkVXUyAkKGRpc3RkaXIpCiBpbnN0YWxsLWRhdGEtbG9jYWw6IHBvLWluc3Rh
bGwtZGF0YS1sb2NhbAogaW5zdGFsbGRpcnMtZGF0YS1sb2NhbDogcG8taW5zdGFsbGRpcnMtZGF0
YS1sb2NhbAogdW5pbnN0YWxsLWxvY2FsOiBwby11bmluc3RhbGwtbG9jYWwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmd0ay1kb2MuYW0gYi9Tb3VyY2UvV2ViS2l0
L2d0ay9HTlVtYWtlZmlsZS5ndGstZG9jLmFtCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwNTJjNzg4ZDljOWQzYzE1NDIyMmRlOWZlZTA0YWRmZWZjMThhYzIyLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1h
a2VmaWxlLmd0ay1kb2MuYW0KKysrIC9kZXYvbnVsbApAQCAtMSwyMDggKzAsMCBAQAotIyAtKi0g
bW9kZTogbWFrZWZpbGUgLSotCi0KLUdUS0RPQ19DQyA9ICQoTElCVE9PTCkgLS10YWc9Q0MgLS1t
b2RlPWNvbXBpbGUgJChDQykgJChHVEtET0NfSU5DTFVERVMpICQoR1RLRE9DX0RFUFNfQ0ZMQUdT
KSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKEFNX0NGTEFHUykgJChDRkxBR1MpCi1HVEtE
T0NfTEQgPSAkKExJQlRPT0wpIC0tdGFnPUNDIC0tbW9kZT1saW5rICQoQ0MpICQoR1RLRE9DX0RF
UFNfTElCUykgJChBTV9DRkxBR1MpICQoQ0ZMQUdTKSAkKEFNX0xERkxBR1MpICQoTERGTEFHUykK
LUdUS0RPQ19SVU4gPSAkKExJQlRPT0wpIC0tbW9kZT1leGVjdXRlCi0KLVRBUkdFVF9ESVI9JChI
VE1MX0RJUikvJChET0NfTU9EVUxFKQotCi1TRVRVUF9GSUxFUyA9IFwKLQkkKERPQ19NQUlOX1NH
TUxfRklMRSkJCVwKLQl3ZWJraXRlbnZpcm9ubWVudC54bWwJCVwKLQkkKERPQ19NT0RVTEUpLXNl
Y3Rpb25zLnR4dAlcCi0JJChET0NfTU9EVUxFKS1vdmVycmlkZXMudHh0Ci0KLUVYVFJBX0RJU1Qg
Kz0gXAotCSQoSFRNTF9JTUFHRVMpCQkJXAotCSQoU0VUVVBfRklMRVMpCi0KLURPQ19TVEFNUFM9
ZG9jLXNldHVwLWJ1aWxkLnN0YW1wIHNjYW4tYnVpbGQuc3RhbXAgdG1wbC1idWlsZC5zdGFtcCBz
Z21sLWJ1aWxkLnN0YW1wIFwKLQlodG1sLWJ1aWxkLnN0YW1wIHBkZi1idWlsZC5zdGFtcCBcCi0J
dG1wbC5zdGFtcCBzZ21sLnN0YW1wIGh0bWwuc3RhbXAgcGRmLnN0YW1wCi0KLVNDQU5PQkpfRklM
RVMgPSAJCSBcCi0JJChET0NfTU9EVUxFKS5hcmdzIAkgXAotCSQoRE9DX01PRFVMRSkuaGllcmFy
Y2h5ICBcCi0JJChET0NfTU9EVUxFKS5pbnRlcmZhY2VzIFwKLQkkKERPQ19NT0RVTEUpLnByZXJl
cXVpc2l0ZXMgXAotCSQoRE9DX01PRFVMRSkuc2lnbmFscwotCi1SRVBPUlRfRklMRVMgPSBcCi0J
JChET0NfTU9EVUxFKS11bmRvY3VtZW50ZWQudHh0IFwKLQkkKERPQ19NT0RVTEUpLXVuZGVjbGFy
ZWQudHh0IFwKLQkkKERPQ19NT0RVTEUpLXVudXNlZC50eHQKLQotQ0xFQU5GSUxFUyArPSAkKFND
QU5PQkpfRklMRVMpICQoUkVQT1JUX0ZJTEVTKSAkKERPQ19TVEFNUFMpCi0KLWlmIEVOQUJMRV9H
VEtfRE9DCi1IVE1MX0JVSUxEX1NUQU1QPWh0bWwtYnVpbGQuc3RhbXAKLWVuZGlmCi0KLWRvY19z
cmNkaXIgOj0gJChhYnNfc3JjZGlyKS9Tb3VyY2UvV2ViS2l0L2d0ay9kb2NzCi0KLWRvY3M6ICQo
SFRNTF9CVUlMRF9TVEFNUCkKLQotJChSRVBPUlRfRklMRVMpOiBzZ21sLWJ1aWxkLnN0YW1wCi0K
LSMjIyMgc2V0dXAgIyMjIwotCi1kb2Mtc2V0dXAtYnVpbGQuc3RhbXA6IGxpYndlYmtpdGd0ay1A
V0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQC5AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9O
QC5sYQotCS1AbWtkaXIgLXAgRG9jdW1lbnRhdGlvbgotCS1AbG4gLWZzIC4uL2RvbHRsaWJ0b29s
IERvY3VtZW50YXRpb24vCi0JLUBsbiAtZnMgLi4vZG9sdGNvbXBpbGUgRG9jdW1lbnRhdGlvbi8K
LQktQGxuIC1mcyAuLi9saWJ0b29sIERvY3VtZW50YXRpb24vCi0JLUBpZiB0ZXN0ICIkKGFic19z
cmNkaXIpIiAhPSAiJChhYnNfYnVpbGRkaXIpIiA7IHRoZW4gXAotCSAgICBlY2hvICcgIERPQyAg
IFByZXBhcmluZyBidWlsZCc7IFwKLQkgICAgZmlsZXM9YGVjaG8gJChTRVRVUF9GSUxFUykgJChE
T0NfTU9EVUxFKS50eXBlc2A7IFwKLQkgICAgaWYgdGVzdCAieCQkZmlsZXMiICE9ICJ4IiA7IHRo
ZW4gXAotCSAgICAgICAgZm9yIGZpbGUgaW4gJCRmaWxlcyA7IGRvIFwKLQkgICAgICAgICAgICB0
ZXN0IC1mICQoZG9jX3NyY2RpcikvJCRmaWxlICYmIFwKLQkgICAgICAgICAgICAgICAgY3AgLXB1
ICQoZG9jX3NyY2RpcikvJCRmaWxlICQoYWJzX2J1aWxkZGlyKS9Eb2N1bWVudGF0aW9uLyB8fCB0
cnVlOyBcCi0JICAgICAgICBkb25lOyBcCi0JICAgIGZpOyBcCi0JICAgIHRlc3QgLWQgJChkb2Nf
c3JjZGlyKS90bXBsICYmIFwKLQkgICAgICAgIHsgY3AgLXJwICQoZG9jX3NyY2RpcikvdG1wbCAk
KGFic19idWlsZGRpcikvRG9jdW1lbnRhdGlvbi87IFwKLQkgICAgICAgIGNobW9kIC1SIHUrdyAk
KGFic19idWlsZGRpcikvRG9jdW1lbnRhdGlvbi90bXBsOyB9IFwKLQlmaQotCUB0b3VjaCBkb2Mt
c2V0dXAtYnVpbGQuc3RhbXAKLQotIyMjIyBzY2FuICMjIyMKLQotc2Nhbi1idWlsZC5zdGFtcDog
ZG9jLXNldHVwLWJ1aWxkLnN0YW1wICQoSEZJTEVfR0xPQikgJChDRklMRV9HTE9CKQotCUBlY2hv
ICcgIERPQyAgIFNjYW5uaW5nIGhlYWRlciBmaWxlcycKLQlAY2QgRG9jdW1lbnRhdGlvbjsgX3Nv
dXJjZV9kaXI9JycgOyBcCi0JZm9yIGkgaW4gJChET0NfU09VUkNFX0RJUikgOyBkbyBcCi0JICAg
IF9zb3VyY2VfZGlyPSIkJHtfc291cmNlX2Rpcn0gLS1zb3VyY2UtZGlyPS4uLyQkaSIgOyBcCi0J
ZG9uZSA7IFwKLQlndGtkb2Mtc2NhbiAtLW1vZHVsZT0kKERPQ19NT0RVTEUpIC0taWdub3JlLWhl
YWRlcnM9IiQoSUdOT1JFX0hGSUxFUykiICQke19zb3VyY2VfZGlyfSAkKFNDQU5fT1BUSU9OUykg
JChFWFRSQV9IRklMRVMpCi0JQGNkIERvY3VtZW50YXRpb247IGlmIGdyZXAgLWwgJ14uLiokJCcg
JChET0NfTU9EVUxFKS50eXBlcyA+IC9kZXYvbnVsbCAyPiYxIDsgdGhlbiBcCi0JICAgIGVjaG8g
IiAgRE9DICAgSW50cm9zcGVjdGluZyBnb2JqZWN0cyI7IFwKLQkgICAgc2Nhbm9ial9vcHRpb25z
PSIiOyBcCi0JICAgIGd0a2RvYy1zY2FuZ29iaiAyPiYxIC0taGVscCB8IGdyZXAgID4vZGV2L251
bGwgIlwtXC12ZXJib3NlIjsgXAotCSAgICBpZiB0ZXN0ICIkKD8pIiA9ICIwIjsgdGhlbiBcCi0J
ICAgICAgICBpZiB0ZXN0ICJ4JChWKSIgPSAieDEiOyB0aGVuIFwKLQkgICAgICAgICAgICBzY2Fu
b2JqX29wdGlvbnM9Ii0tdmVyYm9zZSI7IFwKLQkgICAgICAgIGZpOyBcCi0JICAgIGZpOyBcCi0J
ICAgIENDPSIkKEdUS0RPQ19DQykiIExEPSIkKEdUS0RPQ19MRCkiIFJVTj0iJChHVEtET0NfUlVO
KSIgQ0ZMQUdTPSIkKEdUS0RPQ19DRkxBR1MpICQoQ0ZMQUdTKSIgTERGTEFHUz0iJChHVEtET0Nf
TElCUykgJChMREZMQUdTKSIgXAotCSAgICBndGtkb2Mtc2NhbmdvYmogJChTQ0FOR09CSl9PUFRJ
T05TKSAkJHNjYW5vYmpfb3B0aW9ucyAtLW1vZHVsZT0kKERPQ19NT0RVTEUpOyBcCi0JZWxzZSBc
Ci0JICAgIGZvciBpIGluICQoU0NBTk9CSl9GSUxFUykgOyBkbyBcCi0JICAgICAgICB0ZXN0IC1m
ICQkaSB8fCB0b3VjaCAkJGkgOyBcCi0JICAgIGRvbmUgXAotCWZpCi0JQHRvdWNoIHNjYW4tYnVp
bGQuc3RhbXAKLQotRG9jdW1lbnRhdGlvbi8kKERPQ19NT0RVTEUpLWRlY2wudHh0IERvY3VtZW50
YXRpb24vJChTQ0FOT0JKX0ZJTEVTKSBEb2N1bWVudGF0aW9uLyQoRE9DX01PRFVMRSktc2VjdGlv
bnMudHh0IERvY3VtZW50YXRpb24vJChET0NfTU9EVUxFKS1vdmVycmlkZXMudHh0OiBzY2FuLWJ1
aWxkLnN0YW1wCi0JQHRydWUKLQotIyMjIyB0ZW1wbGF0ZXMgIyMjIwotCi10bXBsLWJ1aWxkLnN0
YW1wOiBkb2Mtc2V0dXAtYnVpbGQuc3RhbXAgRG9jdW1lbnRhdGlvbi8kKERPQ19NT0RVTEUpLWRl
Y2wudHh0IERvY3VtZW50YXRpb24vJChTQ0FOT0JKX0ZJTEVTKSBEb2N1bWVudGF0aW9uLyQoRE9D
X01PRFVMRSktc2VjdGlvbnMudHh0IERvY3VtZW50YXRpb24vJChET0NfTU9EVUxFKS1vdmVycmlk
ZXMudHh0Ci0JQGVjaG8gJyAgRE9DICAgUmVidWlsZGluZyB0ZW1wbGF0ZSBmaWxlcycKLQlAY2Qg
RG9jdW1lbnRhdGlvbjsgZ3RrZG9jLW1rdG1wbCAtLW1vZHVsZT0kKERPQ19NT0RVTEUpICQoTUtU
TVBMX09QVElPTlMpCi0JQGlmIHRlc3QgIiQoYWJzX3NyY2RpcikiICE9ICIkKGFic19idWlsZGRp
cikiIDsgdGhlbiBcCi0JICBpZiB0ZXN0IC13ICQoYWJzX3NyY2RpcikgOyB0aGVuIFwKLQkgICAg
Y3AgLXJwICQoYWJzX2J1aWxkZGlyKS9Eb2N1bWVudGF0aW9uL3RtcGwgJChkb2Nfc3JjZGlyKTsg
XAotCSAgZmkgXAotCWZpCi0JQHRvdWNoIHRtcGwtYnVpbGQuc3RhbXAKLQotdG1wbC5zdGFtcDog
dG1wbC1idWlsZC5zdGFtcAotCUB0cnVlCi0KLSQoc3JjZGlyKS90bXBsLyouc2dtbDoKLQlAdHJ1
ZQotCi0jIyMjIHhtbCAjIyMjCi0KLXNnbWwtYnVpbGQuc3RhbXA6IGRvYy1zZXR1cC1idWlsZC5z
dGFtcCB0bXBsLnN0YW1wIERvY3VtZW50YXRpb24vJChET0NfTU9EVUxFKS1zZWN0aW9ucy50eHQg
JChzcmNkaXIpL3RtcGwvKi5zZ21sCi0JQGVjaG8gJyAgRE9DICAgQnVpbGRpbmcgWE1MJwotCUAt
Y2htb2QgLVIgdSt3ICQoc3JjZGlyKQotCUBjZCBEb2N1bWVudGF0aW9uOyBfc291cmNlX2Rpcj0n
JyA7IFwKLQlmb3IgaSBpbiAkKERPQ19TT1VSQ0VfRElSKSA7IGRvIFwKLQkgICAgX3NvdXJjZV9k
aXI9IiQke19zb3VyY2VfZGlyfSAtLXNvdXJjZS1kaXI9Li4vJCRpIiA7IFwKLQlkb25lIDsgXAot
CWd0a2RvYy1ta2RiIC0tbW9kdWxlPSQoRE9DX01PRFVMRSkgLS1vdXRwdXQtZm9ybWF0PXhtbCAt
LWV4cGFuZC1jb250ZW50LWZpbGVzPSIiIC0tbWFpbi1zZ21sLWZpbGU9JChET0NfTUFJTl9TR01M
X0ZJTEUpICQke19zb3VyY2VfZGlyfSAkKE1LREJfT1BUSU9OUykKLQlAdG91Y2ggc2dtbC1idWls
ZC5zdGFtcAotCi1zZ21sLnN0YW1wOiBzZ21sLWJ1aWxkLnN0YW1wCi0JQHRydWUKLQotIyMjIyBo
dG1sICMjIyMKLQotRG9jdW1lbnRhdGlvbi8kKERPQ19NQUlOX1NHTUxfRklMRSk6IHNnbWwuc3Rh
bXAKLURvY3VtZW50YXRpb24vd2Via2l0ZW52aXJvbm1lbnQueG1sOiBkb2Mtc2V0dXAtYnVpbGQu
c3RhbXAKLQotaHRtbC1idWlsZC5zdGFtcDogc2dtbC5zdGFtcCBEb2N1bWVudGF0aW9uLyQoRE9D
X01BSU5fU0dNTF9GSUxFKQotCUBlY2hvICcgIERPQyAgIEJ1aWxkaW5nIEhUTUwnCi0JQHJtIC1y
ZiBEb2N1bWVudGF0aW9uL2h0bWwKLQlAbWtkaXIgRG9jdW1lbnRhdGlvbi9odG1sCi0JQGNkIERv
Y3VtZW50YXRpb247IG1raHRtbF9vcHRpb25zPSIiOyBcCi0JZ3RrZG9jLW1raHRtbCAyPiYxIC0t
aGVscCB8IGdyZXAgID4vZGV2L251bGwgIlwtXC12ZXJib3NlIjsgXAotCWlmIHRlc3QgIiQoPyki
ID0gIjAiOyB0aGVuIFwKLQkgIGlmIHRlc3QgIngkKFYpIiA9ICJ4MSI7IHRoZW4gXAotCSAgICBt
a2h0bWxfb3B0aW9ucz0iJCRta2h0bWxfb3B0aW9ucyAtLXZlcmJvc2UiOyBcCi0JICBmaTsgXAot
CWZpOyBcCi0JZ3RrZG9jLW1raHRtbCAyPiYxIC0taGVscCB8IGdyZXAgID4vZGV2L251bGwgIlwt
XC1wYXRoIjsgXAotCWlmIHRlc3QgIiQoPykiID0gIjAiOyB0aGVuIFwKLQkgIG1raHRtbF9vcHRp
b25zPSIkJG1raHRtbF9vcHRpb25zIC0tcGF0aD1cIiQoZG9jX3NyY2RpcilcIiI7IFwKLQlmaTsg
XAotCWNkIGh0bWwgJiYgZ3RrZG9jLW1raHRtbCAkJG1raHRtbF9vcHRpb25zICQoTUtIVE1MX09Q
VElPTlMpICQoRE9DX01PRFVMRSkgLi4vJChET0NfTUFJTl9TR01MX0ZJTEUpCi0JLUB0ZXN0ICJ4
JChIVE1MX0lNQUdFUykiID0gIngiIHx8IFwKLQlmb3IgZmlsZSBpbiAkKEhUTUxfSU1BR0VTKSA7
IGRvIFwKLQkgIGlmIHRlc3QgLWYgJChhYnNfc3JjZGlyKS8kJGZpbGUgOyB0aGVuIFwKLQkgICAg
Y3AgJChhYnNfc3JjZGlyKS8kJGZpbGUgJChhYnNfYnVpbGRkaXIpL2h0bWw7IFwKLQkgIGZpOyBc
Ci0JICBpZiB0ZXN0IC1mICQoYWJzX2J1aWxkZGlyKS8kJGZpbGUgOyB0aGVuIFwKLQkgICAgY3Ag
JChhYnNfYnVpbGRkaXIpLyQkZmlsZSAkKGFic19idWlsZGRpcikvaHRtbDsgXAotCSAgZmk7IFwK
LQlkb25lOwotCUBlY2hvICcgIERPQyAgIEZpeGluZyBjcm9zcy1yZWZlcmVuY2VzJwotCUBjZCBE
b2N1bWVudGF0aW9uOyBndGtkb2MtZml4eHJlZiAtLW1vZHVsZT0kKERPQ19NT0RVTEUpIC0tbW9k
dWxlLWRpcj1odG1sIC0taHRtbC1kaXI9JChIVE1MX0RJUikgJChGSVhYUkVGX09QVElPTlMpCi0J
QHRvdWNoIGh0bWwtYnVpbGQuc3RhbXAKLQotY2xlYW4tbG9jYWw6IGRvYy1jbGVhbi1sb2NhbAot
Ci1kb2MtY2xlYW4tbG9jYWw6Ci0JQHJtIC1mIERvY3VtZW50YXRpb24vKn4gRG9jdW1lbnRhdGlv
bi8qLmJhawotCUBybSAtcmYgRG9jdW1lbnRhdGlvbi8ubGlicwotCi1kaXN0Y2xlYW4tbG9jYWw6
IGRvYy1kaXN0Y2xlYW4tbG9jYWwKLQotZG9jLWRpc3RjbGVhbi1sb2NhbDoKLQlAcm0gLXJmIERv
Y3VtZW50YXRpb24KLQotbWFpbnRhaW5lci1jbGVhbi1sb2NhbDogZG9jLW1haW50YWluZXItY2xl
YW4tbG9jYWwKLQotZG9jLW1haW50YWluZXItY2xlYW4tbG9jYWw6IGNsZWFuCi0JQHJtIC1yZiBE
b2N1bWVudGF0aW9uL3htbCBEb2N1bWVudGF0aW9uL2h0bWwKLQktQHJtZGlyIERvY3VtZW50YXRp
b24KLQotIwotIyBSZXF1aXJlIGd0ay1kb2Mgd2hlbiBtYWtpbmcgZGlzdAotIwotaWYgRU5BQkxF
X0dUS19ET0MKLWRpc3QtY2hlY2stZ3RrZG9jOgotCi1hbGw6IGRvY3MKLWVsc2UKLWRpc3QtY2hl
Y2stZ3RrZG9jOgotCUBlY2hvICIqKiogZ3RrLWRvYyBtdXN0IGJlIGluc3RhbGxlZCBhbmQgZW5h
YmxlZCBpbiBvcmRlciB0byBtYWtlIGRpc3QiCi0JQGZhbHNlCi1lbmRpZgotCi1kaXN0LWhvb2s6
IGRvYy1kaXN0LWhvb2sKLQotZG9jLWRpc3QtaG9vazogZGlzdC1jaGVjay1ndGtkb2MgZGlzdC1o
b29rLWxvY2FsCi0JQG1rZGlyIC1wICQoZGlzdGRpcikvJChET0NfTU9EVUxFKS90bXBsCi0JQG1r
ZGlyIC1wICQoZGlzdGRpcikvJChET0NfTU9EVUxFKS9odG1sCi0JQC1jcCAuL0RvY3VtZW50YXRp
b24vdG1wbC8qLnNnbWwgJChkaXN0ZGlyKS8kKERPQ19NT0RVTEUpL3RtcGwKLQlAY3AgLi9Eb2N1
bWVudGF0aW9uL2h0bWwvKiAkKGRpc3RkaXIpLyQoRE9DX01PRFVMRSkvaHRtbAotCUAtY3AgLi9E
b2N1bWVudGF0aW9uLyQoRE9DX01PRFVMRSkudHlwZXMgJChkaXN0ZGlyKS8KLQlALWNwIC4vRG9j
dW1lbnRhdGlvbi8kKERPQ19NT0RVTEUpLXNlY3Rpb25zLnR4dCAkKGRpc3RkaXIpLwotCUBjZCAk
KGRpc3RkaXIpICYmIHJtIC1mICQoRElTVENMRUFORklMRVMpCi0JQCQoR1RLRE9DX1JFQkFTRSkg
LS1vbmxpbmUgLS1yZWxhdGl2ZSAtLWh0bWwtZGlyPSQoZGlzdGRpcikvJChET0NfTU9EVUxFKS9o
dG1sCi0KLS5QSE9OWSA6IGRpc3QtaG9vay1sb2NhbCBkb2NzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2d0ay9kb2NzL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYktpdC9ndGsvZG9jcy9H
TlVtYWtlZmlsZS5hbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzhjNGIyMTJiYWI1
YWViZGQyOTBhYWUzN2EyNDNmMjU1YjliNDNiNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9kb2NzL0dOVW1ha2VmaWxlLmFt
CisrKyAvZGV2L251bGwKQEAgLTEsMTI4ICswLDAgQEAKLSMjIFByb2Nlc3MgdGhpcyBmaWxlIHdp
dGggYXV0b21ha2UgdG8gcHJvZHVjZSBHTlVtYWtlZmlsZS5pbgotCi0jIFRoaXMgaXMgYSBibGFu
ayBNYWtlZmlsZS5hbSBmb3IgdXNpbmcgZ3RrLWRvYy4KLSMgQ29weSB0aGlzIHRvIHlvdXIgcHJv
amVjdCdzIEFQSSBkb2NzIGRpcmVjdG9yeSBhbmQgbW9kaWZ5IHRoZSB2YXJpYWJsZXMgdG8KLSMg
c3VpdCB5b3VyIHByb2plY3QuIFNlZSB0aGUgR1RLKyBNYWtlZmlsZXMgaW4gZ3RrKy9kb2NzL3Jl
ZmVyZW5jZSBmb3IgZXhhbXBsZXMKLSMgb2YgdXNpbmcgdGhlIHZhcmlvdXMgb3B0aW9ucy4KLQot
IyBUaGUgbmFtZSBvZiB0aGUgbW9kdWxlLCBlLmcuICdnbGliJy4KLURPQ19NT0RVTEU9d2Via2l0
Z3RrCi0KLSMgVGhlIHRvcC1sZXZlbCBTR01MIGZpbGUuIFlvdSBjYW4gY2hhbmdlIHRoaXMgaWYg
eW91IHdhbnQgdG8uCi1ET0NfTUFJTl9TR01MX0ZJTEU9JChET0NfTU9EVUxFKS1kb2NzLnNnbWwK
LQotIyBUaGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIHNvdXJjZSBjb2RlLiBSZWxhdGl2ZSB0
byAkKHNyY2RpcikuCi0jIGd0ay1kb2Mgd2lsbCBzZWFyY2ggYWxsIC5jICYgLmggZmlsZXMgYmVu
ZWF0aCBoZXJlIGZvciBpbmxpbmUgY29tbWVudHMKLSMgZG9jdW1lbnRpbmcgdGhlIGZ1bmN0aW9u
cyBhbmQgbWFjcm9zLgotIyBlLmcuIERPQ19TT1VSQ0VfRElSPS4uLy4uLy4uL2d0awotRE9DX1NP
VVJDRV9ESVI9JCh0b3Bfc3JjZGlyKS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQKLQotIyBFeHRy
YSBvcHRpb25zIHRvIHBhc3MgdG8gZ3RrZG9jLXNjYW5nb2JqLiBOb3Qgbm9ybWFsbHkgbmVlZGVk
LgotU0NBTkdPQkpfT1BUSU9OUz0iLS10eXBlLWluaXQtZnVuYz1nX3R5cGVfaW5pdCgpIgotCi0j
IEV4dHJhIG9wdGlvbnMgdG8gc3VwcGx5IHRvIGd0a2RvYy1zY2FuLgotIyBlLmcuIFNDQU5fT1BU
SU9OUz0tLWRlcHJlY2F0ZWQtZ3VhcmRzPSJHVEtfRElTQUJMRV9ERVBSRUNBVEVEIgotU0NBTl9P
UFRJT05TPS0tZGVwcmVjYXRlZC1ndWFyZHM9IldFQktJVF9ESVNBQkxFX0RFUFJFQ0FURUQiIC0t
aWdub3JlLWRlY29yYXRvcnM9IldFQktJVF9BUEkiCi0KLSMgRXh0cmEgb3B0aW9ucyB0byBzdXBw
bHkgdG8gZ3RrZG9jLW1rZGIuCi0jIGUuZy4gTUtEQl9PUFRJT05TPS0tc2dtbC1tb2RlIC0tb3V0
cHV0LWZvcm1hdD14bWwKLU1LREJfT1BUSU9OUz0tLXNnbWwtbW9kZSAtLW91dHB1dC1mb3JtYXQ9
eG1sIC0tc291cmNlLXN1ZmZpeGVzPWgsYyxjcHAKLQotIyBFeHRyYSBvcHRpb25zIHRvIHN1cHBs
eSB0byBndGtkb2MtbWt0bXBsCi0jIGUuZy4gTUtUTVBMX09QVElPTlM9LS1vbmx5LXNlY3Rpb24t
dG1wbAotTUtUTVBMX09QVElPTlM9Ci0KLSMgRXh0cmEgb3B0aW9ucyB0byBzdXBwbHkgdG8gZ3Rr
ZG9jLWZpeHJlZi4gTm90IG5vcm1hbGx5IG5lZWRlZC4KLSMgZS5nLiBGSVhYUkVGX09QVElPTlM9
LS1leHRyYS1kaXI9Li4vZ2RrLXBpeGJ1Zi9odG1sIC0tZXh0cmEtZGlyPS4uL2dkay9odG1sCi1G
SVhYUkVGX09QVElPTlM9Ci0KLSMgVXNlZCBmb3IgZGVwZW5kZW5jaWVzLiBUaGUgZG9jcyB3aWxs
IGJlIHJlYnVpbHQgaWYgYW55IG9mIHRoZXNlIGNoYW5nZS4KLSMgZS5nLiBIRklMRV9HTE9CPSQo
dG9wX3NyY2RpcikvZ3RrLyouaAotIyBlLmcuIENGSUxFX0dMT0I9JCh0b3Bfc3JjZGlyKS9ndGsv
Ki5jCi1IRklMRV9HTE9CPSQodG9wX3NyY2RpcikvU291cmNlL1dlYktpdC9ndGsvd2Via2l0Lyou
aAotQ0ZJTEVfR0xPQj0kKHRvcF9zcmNkaXIpL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC8qLmNw
cAotCi0jIEhlYWRlciBmaWxlcyB0byBpZ25vcmUgd2hlbiBzY2FubmluZy4KLSMgZS5nLiBJR05P
UkVfSEZJTEVTPWd0a2RlYnVnLmggZ3RraW50bC5oCi1JR05PUkVfSEZJTEVTID0gXAotICAgd2Vi
a2l0ZG93bmxvYWRwcml2YXRlLmggXAotICAgd2Via2l0Z2VvbG9jYXRpb25wb2xpY3lkZWNpc2lv
bnByaXZhdGUuaCBcCi0gICB3ZWJraXRnbG9iYWxzcHJpdmF0ZS5oIFwKLSAgIHdlYmtpdGhpdHRl
c3RyZXN1bHRwcml2YXRlLmggXAotICAgd2Via2l0bmV0d29ya3JlcXVlc3Rwcml2YXRlLmggXAot
ICAgd2Via2l0bmV0d29ya3Jlc3BvbnNlcHJpdmF0ZS5oIFwKLSAgIHdlYmtpdHNlY3VyaXR5b3Jp
Z2lucHJpdmF0ZS5oIFwKLSAgIHdlYmtpdHZpZXdwb3J0YXR0cmlidXRlc3ByaXZhdGUuaCBcCi0g
ICB3ZWJraXR3ZWJiYWNrZm9yd2FyZGxpc3Rwcml2YXRlLmggXAotICAgd2Via2l0d2ViZGF0YXNv
dXJjZXByaXZhdGUuaCBcCi0gICB3ZWJraXR3ZWJmcmFtZXByaXZhdGUuaCBcCi0gICB3ZWJraXR3
ZWJoaXN0b3J5aXRlbXByaXZhdGUuaCBcCi0gICB3ZWJraXR3ZWJpbnNwZWN0b3Jwcml2YXRlLmgg
XAotICAgd2Via2l0d2VibmF2aWdhdGlvbmFjdGlvbnByaXZhdGUuaCBcCi0gICB3ZWJraXR3ZWJw
bHVnaW5kYXRhYmFzZXByaXZhdGUuaCBcCi0gICB3ZWJraXR3ZWJwbHVnaW5wcml2YXRlLmggXAot
ICAgd2Via2l0d2VicG9saWN5ZGVjaXNpb25wcml2YXRlLmggXAotICAgd2Via2l0d2VicmVzb3Vy
Y2Vwcml2YXRlLmggXAotICAgd2Via2l0d2Vic2V0dGluZ3Nwcml2YXRlLmggXAotICAgd2Via2l0
d2Vidmlld3ByaXZhdGUuaCBcCi0gICB3ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlc3ByaXZhdGUuaAot
Ci0jIEltYWdlcyB0byBjb3B5IGludG8gSFRNTCBkaXJlY3RvcnkuCi0jIGUuZy4gSFRNTF9JTUFH
RVM9JCh0b3Bfc3JjZGlyKS9ndGsvc3RvY2staWNvbnMvc3RvY2tfYWJvdXRfMjQucG5nCi1IVE1M
X0lNQUdFUz0KLQotIyBDRkxBR1MgYW5kIExERkxBR1MgZm9yIGNvbXBpbGluZyBndGtkb2Mtc2Nh
bmdvYmogd2l0aCB5b3VyIGxpYnJhcnkuCi0jIE9ubHkgbmVlZGVkIGlmIHlvdSBhcmUgdXNpbmcg
Z3RrZG9jLXNjYW5nb2JqIHRvIGR5bmFtaWNhbGx5IHF1ZXJ5IHdpZGdldAotIyBzaWduYWxzIGFu
ZCBwcm9wZXJ0aWVzLgotIyBlLmcuIElOQ0xVREVTPS1JJCh0b3Bfc3JjZGlyKSAtSSQodG9wX2J1
aWxkZGlyKSAkKEdUS19ERUJVR19GTEFHUykKLSMgZS5nLiBHVEtET0NfTElCUz0kKHRvcF9idWls
ZGRpcikvZ3RrLyQoZ3RrdGFyZ2V0bGliKQotR1RLRE9DX0lOQ0xVREVTPSBcCi0JLUkkKGFic19z
cmNkaXIpL1NvdXJjZS9XZWJLaXQvZ3RrIFwKLQktSSQoYWJzX2J1aWxkZGlyKS9Tb3VyY2UvV2Vi
S2l0L2d0ayBcCi0JJChnbG9iYWxfY3BwZmxhZ3MpIFwKLQkkKGdsb2JhbF9jZmxhZ3MpIFwKLQkt
SSQoYWJzX3NyY2RpcikvU291cmNlIFwKLQktSSQoYWJzX3NyY2RpcikvU291cmNlL0phdmFTY3Jp
cHRDb3JlIFwKLQktSSQoYWJzX3NyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL0ZvcndhcmRp
bmdIZWFkZXJzIFwKLQktSSQoYWJzX3NyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ciBcCi0JLUkkKGFic19zcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYgXAotCS1JJChh
YnNfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzIFwKLQktSSQoYWJzX3NyY2RpcikvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL2NhY2hlIFwKLQkkKEdMT0JBTERFUFNfQ0ZMQUdT
KSBcCi0JJChDQUlST19DRkxBR1MpIFwKLQkkKEdMSUJfQ0ZMQUdTKSBcCi0JJChHVEtfQ0ZMQUdT
KSBcCi0JJChMSUJTT1VQX0NGTEFHUykKLQotR1RLRE9DX0xJQlM9IFwKLQkkKGFic19idWlsZGRp
cikvbGliamF2YXNjcmlwdGNvcmVndGstQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkAuQFdF
QktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkAubGEgXAotCSQoYWJzX2J1aWxkZGlyKS9saWJ3ZWJr
aXRndGstQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkAuQFdFQktJVEdUS19BUElfTUlOT1Jf
VkVSU0lPTkAubGEgXAotCSQoR0xJQl9MSUJTKSBcCi0JJChHVEtfTElCUykgXAotCSQoTElCU09V
UF9MSUJTKQotCi0jIFRoaXMgaW5jbHVkZXMgb3VyIGN1c3RvbSBndGstZG9jIG1ha2UgcnVsZXMu
Ci1pbmNsdWRlICQodG9wX3NyY2RpcikvU291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZpbGUuZ3Rr
LWRvYy5hbQotCi0jIE90aGVyIGZpbGVzIHRvIGRpc3RyaWJ1dGUKLSMgZS5nLiBFWFRSQV9ESVNU
ICs9IHZlcnNpb24ueG1sLmluCi1FWFRSQV9ESVNUICs9IFwKLQkkKFdlYktpdCkvZG9jcy93ZWJr
aXRlbnZpcm9ubWVudC54bWwgXAotCSQoV2ViS2l0KS9kb2NzL3dlYmtpdGd0ay1kb2NzLnNnbWwg
XAotCSQoV2ViS2l0KS9kb2NzL3dlYmtpdGd0ay1zZWN0aW9ucy50eHQgXAotCSQoV2ViS2l0KS9k
b2NzL3ZlcnNpb24ueG1sLmluCi0KLSMgRmlsZXMgbm90IHRvIGRpc3RyaWJ1dGUKLSMgZm9yIC0t
cmVidWlsZC10eXBlcyBpbiAkKFNDQU5fT1BUSU9OUyksIGUuZy4gJChET0NfTU9EVUxFKS50eXBl
cwotIyBmb3IgLS1yZWJ1aWxkLXNlY3Rpb25zIGluICQoU0NBTl9PUFRJT05TKSBlLmcuICQoRE9D
X01PRFVMRSktc2VjdGlvbnMudHh0Ci1ESVNUQ0xFQU5GSUxFUyArPSBcCi0JJCh0b3BfYnVpbGRk
aXIpL1NvdXJjZS9XZWJLaXQvZ3RrL2RvY3MvdmVyc2lvbi54bWwgXAotCSQodG9wX2J1aWxkZGly
KS90bXBsLWJ1aWxkLnN0YW1wIFwKLQkkKHRvcF9idWlsZGRpcikvZG9jLXNldHVwLWJ1aWxkLnN0
YW1wIFwKLQkkKHRvcF9idWlsZGRpcikvaHRtbC1idWlsZC5zdGFtcCBcCi0JJCh0b3BfYnVpbGRk
aXIpL3NjYW4tYnVpbGQuc3RhbXAgXAotCSQodG9wX2J1aWxkZGlyKS9zZ21sLWJ1aWxkLnN0YW1w
Ci0KLSMgQ29tbWVudCB0aGlzIG91dCBpZiB5b3Ugd2FudCB5b3VyIGRvY3Mtc3RhdHVzIHRlc3Rl
ZCBkdXJpbmcgJ21ha2UgY2hlY2snCi0jVEVTVFMgPSAkKEdUS0RPQ19DSEVDSykKLQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9ndGsvZG9jcy92ZXJzaW9uLnhtbC5pbiBiL1NvdXJjZS9XZWJL
aXQvZ3RrL2RvY3MvdmVyc2lvbi54bWwuaW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGQ3OGJkYTkzNDIyZWNiYmNhOGNhZjc3MmY3YjM3ZjhmZTNiMjU0ZTkuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvZG9jcy92
ZXJzaW9uLnhtbC5pbgorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLUBWRVJTSU9OQApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9H
TlVtYWtlZmlsZS5hbQppbmRleCA3NWEwNDcwZjRhYzEwNDJmNDE3YjUxNDk0YzQ5ZWU1YzU4MDI5
NTNjLi4wOGNjMmIyNzg0MTk3YTNmODYxODA0NTliMjkyNWY5NmU2NzFhMGVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9HTlVt
YWtlZmlsZS5hbQpAQCAtMTQwMyw4ICsxNDAzLDYgQEAgUHJvZ3JhbXNfV2ViS2l0UGx1Z2luUHJv
Y2Vzc19DWFhGTEFHUyA9IFwKIGVuZGlmCiAKIEVYVFJBX0RJU1QgKz0gXAotCSQoV2ViS2l0Mikv
VUlQcm9jZXNzL0FQSS9ndGsvZG9jcy9idWlsZC1ndGtkb2MgXAotCSQoV2ViS2l0MikvVUlQcm9j
ZXNzL0FQSS9ndGsvZG9jcy9ndGtkb2MucHkgXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9n
dGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbCBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJ
L2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0IFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vz
cy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay50eXBlcyBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL2J1aWxkLWd0a2RvYyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3MvYnVpbGQtZ3RrZG9jCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDc1NQppbmRleCBmMzA0YTdlZGY0MjdlMWYzYmE0MmU1ODYyZmEzMzU0NWIxMWNiZWQ4Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3MvYnVpbGQtZ3RrZG9jCisrKyAvZGV2L251bGwKQEAgLTEs
OTMgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jICBDb3B5cmlnaHQgKEMpIDIwMTEg
SWdhbGlhIFMuTC4KLSMKLSMgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSMgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSMgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotIyAgdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotIwotIyAg
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCi0jICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgotIyAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSMgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0jCi0jICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0jICBMaWNlbnNlIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0j
ICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0
b24sIE1BICAwMjExMC0xMzAxICBVU0EKLSMKLQotaW1wb3J0IGdsb2IKLWltcG9ydCBndGtkb2MK
LWltcG9ydCBsb2dnaW5nCi1pbXBvcnQgb3MucGF0aAotaW1wb3J0IHN5cwotCi1kZWYgY29uZmln
dXJlX2xvZ2dpbmcoKToKLSAgICBsZXZlbCA9IGxvZ2dpbmcuREVCVUcgaWYgJy12JyBpbiBzeXMu
YXJndiBlbHNlIGxvZ2dpbmcuSU5GTwotICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJn
dGtkb2MiKQotICAgIGxvZ2dlci5zZXRMZXZlbChsZXZlbCkKLSAgICBoYW5kbGVyID0gbG9nZ2lu
Zy5TdHJlYW1IYW5kbGVyKCkKLSAgICBoYW5kbGVyLnNldExldmVsKGxldmVsKQotICAgIGxvZ2dl
ci5hZGRIYW5kbGVyKGhhbmRsZXIpCi0gICAgaWYgbGV2ZWwgPT0gbG9nZ2luZy5ERUJVRzoKLSAg
ICAgICAgaGFuZGxlci5zZXRGb3JtYXR0ZXIobG9nZ2luZy5Gb3JtYXR0ZXIoJ1slKGFzY3RpbWUp
c10gICUobWVzc2FnZSlzJykpCi0gICAgZWxzZToKLSAgICAgICAgaGFuZGxlci5zZXRGb3JtYXR0
ZXIobG9nZ2luZy5Gb3JtYXR0ZXIoJyUobWVzc2FnZSlzJykpCi0KLWRlZiBmaW5kX2J1aWxkX2Rp
cmVjdG9yeSh0b3BfbGV2ZWwpOgotICAgIGRlZiBpc192YWxpZF9idWlsZF9kaXJlY3RvcnkoYnVp
bGRfZGlyKToKLSAgICAgICAgcmV0dXJuIG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihidWls
ZF9kaXIsICIubGlicyIpKQotCi0gICAgaWYgaXNfdmFsaWRfYnVpbGRfZGlyZWN0b3J5KHRvcF9s
ZXZlbCk6Ci0gICAgICAgIHJldHVybiB0b3BfbGV2ZWwKLQotICAgIGJ1aWxkX2RpciA9IG9zLnBh
dGguam9pbih0b3BfbGV2ZWwsICdXZWJLaXRCdWlsZCcpCi0gICAgaWYgaXNfdmFsaWRfYnVpbGRf
ZGlyZWN0b3J5KGJ1aWxkX2Rpcik6Ci0gICAgICAgIHJldHVybiBidWlsZF9kaXIKLQotICAgIGJ1
aWxkX2RpciA9IG9zLnBhdGguam9pbih0b3BfbGV2ZWwsICdXZWJLaXRCdWlsZCcsICdSZWxlYXNl
JykKLSAgICBpZiBpc192YWxpZF9idWlsZF9kaXJlY3RvcnkoYnVpbGRfZGlyKToKLSAgICAgICAg
cmV0dXJuIGJ1aWxkX2RpcgotCi0gICAgYnVpbGRfZGlyID0gb3MucGF0aC5qb2luKHRvcF9sZXZl
bCwgJ1dlYktpdEJ1aWxkJywgJ0RlYnVnJykKLSAgICBpZiBpc192YWxpZF9idWlsZF9kaXJlY3Rv
cnkoYnVpbGRfZGlyKToKLSAgICAgICAgcmV0dXJuIGJ1aWxkX2RpcgotICAgIHByaW50ICJDb3Vs
ZCBub3QgZGV0ZXJtaW5lIGJ1aWxkIGRpcmVjdG9yeS4iCi0gICAgc3lzLmV4aXQoMSkKLQotZG9j
X2RpciA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pKQotdG9wX2xl
dmVsID0gb3MucGF0aC5ub3JtcGF0aChvcy5wYXRoLmpvaW4oZG9jX2RpciwgJy4uJywgJy4uJywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcuLicsICcuLicsICcu
LicsICcuLicpKQotYnVpbGRfZGlyID0gZmluZF9idWlsZF9kaXJlY3RvcnkodG9wX2xldmVsKQot
Ci1vdXRwdXRfZGlyID0gb3MucGF0aC5qb2luKGJ1aWxkX2RpciwgIkRvY3VtZW50YXRpb24iLCAi
d2Via2l0Mmd0ayIpCi1zcmNfZGlyID0gb3MucGF0aC5qb2luKGRvY19kaXIsICcuLicpCi1saWJy
YXJ5X3BhdGggPSBvcy5wYXRoLmpvaW4oYnVpbGRfZGlyLCAiLmxpYnMiKQotcGtnX2NvbmZpZ19w
YXRoID0gXAotICAgIG9zLnBhdGguam9pbihidWlsZF9kaXIsICJTb3VyY2UiLCAiV2ViS2l0MiIs
ICJ3ZWJraXQyZ3RrLTMuMC5wYyIpCi0KLWRlcml2ZWRfc291cmNlcyA9IG9zLnBhdGguam9pbihi
dWlsZF9kaXIsICJEZXJpdmVkU291cmNlcyIsICJXZWJLaXQyIikKLWNmbGFncyA9IFwKLScgLUkn
ICsgb3MucGF0aC5qb2luKGRlcml2ZWRfc291cmNlcywgJ3dlYmtpdDJndGsnLCAnaW5jbHVkZScp
ICsgXAotJyAtSScgKyBvcy5wYXRoLmpvaW4oZGVyaXZlZF9zb3VyY2VzLCAnd2Via2l0Mmd0aycp
ICsgXAotJyAtSScgKyBvcy5wYXRoLmpvaW4oZGVyaXZlZF9zb3VyY2VzLCAnaW5jbHVkZScpICsg
XAotJyAtSScgKyBvcy5wYXRoLmpvaW4odG9wX2xldmVsLCAnU291cmNlJykKLScgLUknICsgc3Jj
X2RpcgotCi1pZ25vcmVkX2ZpbGVzID0gZ2xvYi5nbG9iKCIlcy8qUHJpdmF0ZS5oIiAlIHNyY19k
aXIpICsgXAotICAgICAgICAgICAgICAgIGdsb2IuZ2xvYigiJXMvUGFnZUNsaWVudEltcGwuKiIg
JSBzcmNfZGlyKSArIFwKLSAgICAgICAgICAgICAgICBnbG9iLmdsb2IoIiVzL3Rlc3RzLyouaCIg
JSBzcmNfZGlyKQotCi1jb25maWd1cmVfbG9nZ2luZygpCi1nZW5lcmF0b3IgPSBndGtkb2MuUGtn
Q29uZmlnR1RLRG9jKHBrZ19jb25maWdfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbW9kdWxlX25hbWU9IndlYmtpdDJndGsiLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBvdXRwdXRfZGlyPW91dHB1dF9kaXIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNvdXJjZV9kaXJzPVtzcmNfZGlyXSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZG9jX2Rpcj1kb2NfZGlyLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjZmxhZ3M9Y2ZsYWdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBsaWJyYXJ5X3BhdGg9bGlicmFyeV9wYXRoLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkZWNvcmF0b3I9IldFQktJVF9BUEkiLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkZXByZWNhdGlvbl9ndWFyZD0iV0VCS0lUX0RJU0FCTEVfREVQUkVD
QVRFRCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZWRfZmlsZXM9
aWdub3JlZF9maWxlcykKLWdlbmVyYXRvci5nZW5lcmF0ZShodG1sPSctLXNraXAtaHRtbCcgbm90
IGluIHN5cy5hcmd2KQotc3lzLmV4aXQoZ2VuZXJhdG9yLnNhd193YXJuaW5ncykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3MvZ3RrZG9jLnB5IGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy9ndGtkb2MucHkKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDMwN2I2MmU0NGZiZjg1MWJmNzc2ZTJmOWYyYjY4YTVkZDFjYjc3
MGYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy9ndGtkb2MucHkKKysrIC9kZXYvbnVsbApA
QCAtMSwzNzIgKzAsMCBAQAotIyAgQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCi0jCi0j
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCi0jICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdl
bmVyYWwgUHVibGljCi0jICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSMgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSMKLSMgIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotIyAgYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
LSMgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCi0jICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgotIwotIyAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExlc3NlciBHZW5lcmFsIFB1YmxpYwotIyAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotIyAgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMw
MSAgVVNBCi0jCi0KLWltcG9ydCBlcnJubwotaW1wb3J0IGxvZ2dpbmcKLWltcG9ydCBvcwotaW1w
b3J0IG9zLnBhdGgKLWltcG9ydCBzdWJwcm9jZXNzCi1pbXBvcnQgc3lzCi0KLQotY2xhc3MgR1RL
RG9jKG9iamVjdCk6Ci0KLSAgICAiIiJDbGFzcyB0aGF0IGNvbnRyb2xzIGEgZ3RrZG9jIHJ1bi4K
LQotICAgIEVhY2ggaW5zdGFuY2Ugb2YgdGhpcyBjbGFzcyByZXByZXNlbnRzIG9uZSBndGtkb2Mg
Y29uZmlndXJhdGlvbgotICAgIGFuZCBzZXQgb2YgZG9jdW1lbnRhdGlvbi4gVGhlIGd0a2RvYyBw
YWNrYWdlIGlzIGEgc2VyaWVzIG9mIHRvb2xzCi0gICAgcnVuIGNvbnNlY3V0aXZlbHkgd2hpY2gg
Y29udmVydHMgaW5saW5lIEMvQysrIGRvY3VtZW50YXRpb24gaW50bwotICAgIGRvY2Jvb2sgZmls
ZXMgYW5kIHRoZW4gaW50byBIVE1MLiBUaGlzIGNsYXNzIGlzIHN1aXRhYmxlIGZvcgotICAgIGdl
bmVyYXRpbmcgZG9jdW1lbnRhdGlvbiBvciBzaW1wbHkgdmVyaWZ5aW5nIGNvcnJlY3RuZXNzLgot
Ci0gICAgS2V5d29yZCBhcmd1bWVudHM6Ci0gICAgb3V0cHV0X2RpciAgICAgICAgIC0tIFRoZSBw
YXRoIHdoZXJlIGd0a2RvYyBvdXRwdXQgc2hvdWxkIGJlIHBsYWNlZC4gR2VuZXJhdGlvbgotICAg
ICAgICAgICAgICAgICAgICAgICAgICBtYXkgb3ZlcndyaXRlIGZpbGUgaW4gdGhpcyBkaXJlY3Rv
cnkuIFJlcXVpcmVkLgotICAgIG1vZHVsZV9uYW1lICAgICAgICAtLSBUaGUgbmFtZSBvZiB0aGUg
ZG9jdW1lbnRhdGlvbiBtb2R1bGUuIEZvciBsaWJyYXJpZXMgdGhpcwotICAgICAgICAgICAgICAg
ICAgICAgICAgICBpcyB0eXBpY2FsbHkgdGhlIGxpYnJhcnkgbmFtZS4gUmVxdWlyZWQgaWYgbm90
IGxpYnJhcnkgcGF0aAotICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBnaXZlbi4KLSAgICBz
b3VyY2VfZGlycyAgICAgICAgLS0gQSBsaXN0IG9mIHBhdGhzIHRvIHRoZSBzb3VyY2UgY29kZSB0
byBiZSBzY2FubmVkLiBSZXF1aXJlZC4KLSAgICBpZ25vcmVkX2ZpbGVzICAgICAgLS0gQSBsaXN0
IG9mIGZpbGVuYW1lcyB0byBpZ25vcmUgaW4gdGhlIHNvdXJjZSBkaXJlY3RvcnkuIEl0IGlzCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgIG9ubHkgbmVjZXNzYXJ5IHRvIHByb3ZpZGUgdGhlIGJh
c2VuYW1lcyBvZiB0aGVzZSBmaWxlcy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwaWNh
bGx5IGl0IGlzIGltcG9ydGFudCB0byBwcm92aWRlIGFuIHVwZGF0ZWQgbGlzdCBvZgotICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZ25vcmVkIGZpbGVzIHRvIHByZXZlbnQgd2FybmluZ3MgYWJv
dXQgdW5kb2N1bWVudGVkIHN5bWJvbHMuCi0gICAgZGVjb3JhdG9yICAgICAgICAgIC0tIElmIGEg
ZGVjb3JhdG9yIGlzIHVzZWQgdG8gdW5oaWRlIGNlcnRhaW4gc3ltYm9scyBpbiBoZWFkZXIKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXMgdGhpcyBwYXJhbWV0ZXIgaXMgcmVxdWlyZWQg
Zm9yIHN1Y2Nlc3NmdWwgc2Nhbm5pbmcuCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChkZWZh
dWx0ICcnKQotICAgIGRlcHJlY2F0aW9uX2d1YXJkICAtLSBndGtkb2MgdHJpZXMgdG8gZW5zdXJl
IHRoYXQgc3ltYm9scyBtYXJrZWQgYXMgZGVwcmVjYXRlZAotICAgICAgICAgICAgICAgICAgICAg
ICAgICBhcmUgZW5jYXNlZCBpbiB0aGlzIEMgcHJlcHJvY2Vzc29yIGRlZmluZS4gVGhpcyBpcyBy
ZXF1aXJlZAotICAgICAgICAgICAgICAgICAgICAgICAgICB0byBhdm9pZCBndGtkb2Mgd2Fybmlu
Z3MuIChkZWZhdWx0ICcnKQotICAgIGNmbGFncyAgICAgICAgICAgICAtLSBUaGlzIHBhcmFtZXRl
ciBzcGVjaWZpZXMgYW55IHByZXByb2Nlc3NvciBmbGFncyBuZWNlc3NhcnkgZm9yCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgIGJ1aWxkaW5nIHRoZSBzY2FubmVyIGJpbmFyeSBkdXJpbmcgZ3Rr
ZG9jLXNjYW5vYmouIFR5cGljYWxseQotICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzIGlu
Y2x1ZGVzIGFsbCBhYnNvbHV0ZSBpbmNsdWRlIHBhdGhzIG5lY2Vzc2FyeSB0byByZXNvbHZlCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgIGFsbCBoZWFkZXIgZGVwZW5kZW5jaWVzLiAoZGVmYXVs
dCAnJykKLSAgICBsZGZsYWdzICAgICAgICAgICAgLS0gVGhpcyBwYXJhbWV0ZXIgc3BlY2lmaWVz
IGFueSBsaW5rZXIgZmxhZ3MgbmVjZXNzYXJ5IGZvcgotICAgICAgICAgICAgICAgICAgICAgICAg
ICBidWlsZGluZyB0aGUgc2Nhbm5lciBiaW5hcnkgZHVyaW5nIGd0a2RvYy1zY2Fub2JqLiBUeXBp
Y2FsbHkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyBpbmNsdWRlcyAiLWx5b3VybGli
cmFyeW5hbWUiLiAoZGVmYXVsdCAnJykKLSAgICBsaWJyYXJ5X3BhdGggICAgICAgLS0gVGhpcyBw
YXJhbWV0ZXIgc3BlY2lmaWVzIHRoZSBwYXRoIHRvIHRoZSBkaXJlY3Rvcnkgd2hlcmUgeW91Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcnkgcmVzaWRlcyB1c2VkIGZvciBidWlsZGlu
ZyB0aGUgc2Nhbm5lciBiaW5hcnkgZHVyaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGd0
a2RvYy1zY2Fub2JqLiAoZGVmYXVsdCAnJykKLQotICAgIGRvY19kaXIgICAgICAgICAgICAtLSBU
aGUgcGF0aCB0byBvdGhlciBkb2N1bWVudGF0aW9uIGZpbGVzIG5lY2Vzc2FyeSB0byBidWlsZAot
ICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZG9jdW1lbnRhdGlvbi4gVGhpcyBmaWxlcyBp
biB0aGlzIGRpcmVjdG9yeSBhcyB3ZWxsIGFzCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHRo
ZSBmaWxlcyBpbiB0aGUgJ2h0bWwnIHN1YmRpcmVjdG9yeSB3aWxsIGJlIGNvcGllZAotICAgICAg
ICAgICAgICAgICAgICAgICAgICByZWN1cnNpdmVseSBpbnRvIHRoZSBvdXRwdXQgZGlyZWN0b3J5
LiAoZGVmYXVsdCAnJykKLSAgICBtYWluX3NnbWxfZmlsZSAgICAgLS0gVGhlIHBhdGggb3IgbmFt
ZSAoaWYgYSBkb2NfZGlyIGlzIGdpdmVuKSBvZiB0aGUgU0dNTCBmaWxlCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgIHRoYXQgaXMgdGhlIGNvbnNpZGVyZWQgdGhlIG1haW4gcGFnZSBvZiB5b3Vy
IGRvY3VtZW50YXRpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChkZWZhdWx0OiA8bW9k
dWxlX25hbWU+LWRvY3Muc2dtbCkKLSAgICB2ZXJzaW9uICAgICAgICAgICAgLS0gVGhlIHZlcnNp
b24gbnVtYmVyIG9mIHRoZSBtb2R1bGUuIElmIHRoaXMgaXMgcHJvdmlkZWQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgIGEgdmVyc2lvbi54bWwgZmlsZSBjb250YWluaW5nIHRoZSB2ZXJzaW9u
IHdpbGwgYmUgY3JlYXRlZAotICAgICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUgb3V0cHV0
IGRpcmVjdG9yeSBkdXJpbmcgZG9jdW1lbnRhdGlvbiBnZW5lcmF0aW9uLgotCi0gICAgaW50ZXJh
Y3RpdmUgICAgICAgIC0tIFdoZXRoZXIgb3Igbm90IGVycm9ycyBvciB3YXJuaW5ncyBzaG91bGQg
cHJvbXB0IHRoZSB1c2VyCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGNvbnRpbnVlIG9y
IG5vdC4gV2hlbiB0aGlzIHZhbHVlIGlzIGZhbHNlLCBnZW5lcmF0aW9uCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgIHdpbGwgY29udGludWUgZGVzcGl0ZSB3YXJuaW5ncy4gKGRlZmF1bHQgRmFs
c2UpCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgKiphcmdzKToKLQotICAgICAg
ICAjIFBhcmFtZXRlcnMgc3BlY2lmaWMgdG8gc2Nhbm5pbmcuCi0gICAgICAgIHNlbGYubW9kdWxl
X25hbWUgPSAnJwotICAgICAgICBzZWxmLnNvdXJjZV9kaXJzID0gW10KLSAgICAgICAgc2VsZi5p
Z25vcmVkX2ZpbGVzID0gW10KLSAgICAgICAgc2VsZi5kZWNvcmF0b3IgPSAnJwotICAgICAgICBz
ZWxmLmRlcHJlY2F0aW9uX2d1YXJkID0gJycKLQotICAgICAgICAjIFBhcmFtZXRlcnMgc3BlY2lm
aWMgdG8gZ3RrZG9jLXNjYW5vYmouCi0gICAgICAgIHNlbGYuY2ZsYWdzID0gJycKLSAgICAgICAg
c2VsZi5sZGZsYWdzID0gJycKLSAgICAgICAgc2VsZi5saWJyYXJ5X3BhdGggPSAnJwotCi0gICAg
ICAgICMgUGFyYW1ldGVycyBzcGVjaWZpYyB0byBnZW5lcmF0aW9uLgotICAgICAgICBzZWxmLm91
dHB1dF9kaXIgPSAnJwotICAgICAgICBzZWxmLmRvY19kaXIgPSAnJwotICAgICAgICBzZWxmLm1h
aW5fc2dtbF9maWxlID0gJycKLQotICAgICAgICBzZWxmLmludGVyYWN0aXZlID0gRmFsc2UKLQot
ICAgICAgICBzZWxmLmxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdndGtkb2MnKQotCi0gICAg
ICAgIGZvciBrZXksIHZhbHVlIGluIGFyZ3MuaXRlcml0ZW1zKCk6Ci0gICAgICAgICAgICBzZXRh
dHRyKHNlbGYsIGtleSwgdmFsdWUpCi0KLSAgICAgICAgZGVmIHJhaXNlX2Vycm9yX2lmX25vdF9z
cGVjaWZpZWQoa2V5KToKLSAgICAgICAgICAgIGlmIG5vdCBnZXRhdHRyKHNlbGYsIGtleSk6Ci0g
ICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCclcyBub3Qgc3BlY2lmaWVkLicgJSBrZXkp
Ci0KLSAgICAgICAgcmFpc2VfZXJyb3JfaWZfbm90X3NwZWNpZmllZCgnb3V0cHV0X2RpcicpCi0g
ICAgICAgIHJhaXNlX2Vycm9yX2lmX25vdF9zcGVjaWZpZWQoJ3NvdXJjZV9kaXJzJykKLSAgICAg
ICAgcmFpc2VfZXJyb3JfaWZfbm90X3NwZWNpZmllZCgnbW9kdWxlX25hbWUnKQotCi0gICAgICAg
ICMgTWFrZSBhbGwgcGF0aHMgYWJzb2x1dGUgaW4gY2FzZSB3ZSB3ZXJlIHBhc3NlZCByZWxhdGl2
ZSBwYXRocywgc2luY2UKLSAgICAgICAgIyB3ZSBjaGFuZ2UgdGhlIGN1cnJlbnQgd29ya2luZyBk
aXJlY3Rvcnkgd2hlbiBleGVjdXRpbmcgc3ViY29tbWFuZHMuCi0gICAgICAgIHNlbGYub3V0cHV0
X2RpciA9IG9zLnBhdGguYWJzcGF0aChzZWxmLm91dHB1dF9kaXIpCi0gICAgICAgIHNlbGYuc291
cmNlX2RpcnMgPSBbb3MucGF0aC5hYnNwYXRoKHgpIGZvciB4IGluIHNlbGYuc291cmNlX2RpcnNd
Ci0gICAgICAgIGlmIHNlbGYubGlicmFyeV9wYXRoOgotICAgICAgICAgICAgc2VsZi5saWJyYXJ5
X3BhdGggPSBvcy5wYXRoLmFic3BhdGgoc2VsZi5saWJyYXJ5X3BhdGgpCi0KLSAgICAgICAgaWYg
bm90IHNlbGYubWFpbl9zZ21sX2ZpbGU6Ci0gICAgICAgICAgICBzZWxmLm1haW5fc2dtbF9maWxl
ID0gc2VsZi5tb2R1bGVfbmFtZSArICItZG9jcy5zZ21sIgotCi0gICAgZGVmIGdlbmVyYXRlKHNl
bGYsIGh0bWw9VHJ1ZSk6Ci0gICAgICAgIHNlbGYuc2F3X3dhcm5pbmdzID0gRmFsc2UKLQotICAg
ICAgICBzZWxmLl9jb3B5X2RvY19maWxlc190b19vdXRwdXRfZGlyKGh0bWwpCi0gICAgICAgIHNl
bGYuX3dyaXRlX3ZlcnNpb25feG1sKCkKLSAgICAgICAgc2VsZi5fcnVuX2d0a2RvY19zY2FuKCkK
LSAgICAgICAgc2VsZi5fcnVuX2d0a2RvY19zY2FuZ29iaigpCi0gICAgICAgIHNlbGYuX3J1bl9n
dGtkb2NfbWt0bXBsKCkKLSAgICAgICAgc2VsZi5fcnVuX2d0a2RvY19ta2RiKCkKLQotICAgICAg
ICBpZiBub3QgaHRtbDoKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgIHNlbGYuX3J1bl9n
dGtkb2NfbWtodG1sKCkKLSAgICAgICAgc2VsZi5fcnVuX2d0a2RvY19maXh4cmVmKCkKLQotICAg
IGRlZiBfZGVsZXRlX2ZpbGVfaWZfZXhpc3RzKHNlbGYsIHBhdGgpOgotICAgICAgICBpZiBub3Qg
b3MuYWNjZXNzKHBhdGgsIG9zLkZfT0sgfCBvcy5SX09LKToKLSAgICAgICAgICAgIHJldHVybgot
ICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygnZGVsZXRpbmcgJXMnLCBwYXRoKQotICAgICAgICBv
cy51bmxpbmsocGF0aCkKLQotICAgIGRlZiBfY3JlYXRlX2RpcmVjdG9yeV9pZl9ub25leGlzdGVu
dChzZWxmLCBwYXRoKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgb3MubWFrZWRpcnMocGF0
aCkKLSAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyb3I6Ci0gICAgICAgICAgICBpZiBlcnJv
ci5lcnJubyAhPSBlcnJuby5FRVhJU1Q6Ci0gICAgICAgICAgICAgICAgcmFpc2UKLQotICAgIGRl
ZiBfcmFpc2VfZXhjZXB0aW9uX2lmX2ZpbGVfaW5hY2Nlc3NpYmxlKHNlbGYsIHBhdGgpOgotICAg
ICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMocGF0aCkgb3Igbm90IG9zLmFjY2VzcyhwYXRoLCBv
cy5SX09LKToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiQ291bGQgbm90IGFjY2VzcyBm
aWxlIGF0OiAlcyIgJSBwYXRoKQotCi0gICAgZGVmIF9vdXRwdXRfaGFzX3dhcm5pbmdzKHNlbGYs
IG91dHB1dHMpOgotICAgICAgICBmb3Igb3V0cHV0IGluIG91dHB1dHM6Ci0gICAgICAgICAgICBp
ZiBvdXRwdXQgYW5kIG91dHB1dC5maW5kKCd3YXJuaW5nJyk6Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIFRydWUKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICBkZWYgX2Fza195ZXNfb3Jfbm9f
cXVlc3Rpb24oc2VsZiwgcXVlc3Rpb24pOgotICAgICAgICBpZiBub3Qgc2VsZi5pbnRlcmFjdGl2
ZToKLSAgICAgICAgICAgIHJldHVybiBUcnVlCi0KLSAgICAgICAgcXVlc3Rpb24gKz0gJyBbeS9O
XSAnCi0gICAgICAgIGFuc3dlciA9IE5vbmUKLSAgICAgICAgd2hpbGUgYW5zd2VyICE9ICd5JyBh
bmQgYW5zd2VyICE9ICduJyBhbmQgYW5zd2VyICE9ICcnOgotICAgICAgICAgICAgYW5zd2VyID0g
cmF3X2lucHV0KHF1ZXN0aW9uKS5sb3dlcigpCi0gICAgICAgIHJldHVybiBhbnN3ZXIgPT0gJ3kn
Ci0KLSAgICBkZWYgX3J1bl9jb21tYW5kKHNlbGYsIGFyZ3MsIGVudj1Ob25lLCBjd2Q9Tm9uZSwg
cHJpbnRfb3V0cHV0PVRydWUpOgotICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCJSdW5uaW5nICVz
IiwgYXJnc1swXSkKLSAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIkZ1bGwgY29tbWFuZCBhcmdz
OiAlcyIsIHN0cihhcmdzKSkKLQotICAgICAgICBwcm9jZXNzID0gc3VicHJvY2Vzcy5Qb3Blbihh
cmdzLCBlbnY9ZW52LCBjd2Q9Y3dkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQotICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHBy
b2Nlc3MuY29tbXVuaWNhdGUoKQotCi0gICAgICAgIGlmIHByaW50X291dHB1dDoKLSAgICAgICAg
ICAgIGlmIHN0ZG91dDoKLSAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKHN0ZG91dCkK
LSAgICAgICAgICAgIGlmIHN0ZGVycjoKLSAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRl
KHN0ZGVycikKLQotICAgICAgICBpZiBwcm9jZXNzLnJldHVybmNvZGUgIT0gMDoKLSAgICAgICAg
ICAgIHJhaXNlIEV4Y2VwdGlvbignJXMgcHJvZHVjZWQgYSBub24temVybyByZXR1cm4gY29kZSAl
aScKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAoYXJnc1swXSwgcHJvY2Vzcy5yZXR1
cm5jb2RlKSkKLQotICAgICAgICBpZiAnd2FybmluZycgaW4gc3RkZXJyIG9yICd3YXJuaW5nJyBp
biBzdGRvdXQ6Ci0gICAgICAgICAgICBzZWxmLnNhd193YXJuaW5ncyA9IFRydWUKLSAgICAgICAg
ICAgIGlmIG5vdCBzZWxmLl9hc2tfeWVzX29yX25vX3F1ZXN0aW9uKCclcyBwcm9kdWNlZCB3YXJu
aW5ncywgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J3RyeSB0byBjb250aW51ZT8nICUgYXJnc1swXSk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgRXhj
ZXB0aW9uKCclcyBzdGVwIGZhaWxlZCcgJSBhcmdzWzBdKQotCi0gICAgICAgIHJldHVybiBzdGRv
dXQuc3RyaXAoKQotCi0gICAgZGVmIF9jb3B5X2RvY19maWxlc190b19vdXRwdXRfZGlyKHNlbGYs
IGh0bWw9VHJ1ZSk6Ci0gICAgICAgIGlmIG5vdCBzZWxmLmRvY19kaXI6Ci0gICAgICAgICAgICBz
ZWxmLmxvZ2dlci5pbmZvKCdOb3QgY29weWluZyBhbnkgZmlsZXMgZnJvbSBkb2MgZGlyZWN0b3J5
LCcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyBiZWNhdXNlIG5vIGRvYyBkaXJlY3Rv
cnkgZ2l2ZW4uJykKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgIGRlZiBjb3B5X2ZpbGVf
cmVwbGFjaW5nX2V4aXN0aW5nKHNyYywgZGVzdCk6Ci0gICAgICAgICAgICBpZiBvcy5wYXRoLmlz
ZGlyKHNyYyk6Ci0gICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoJ3NraXBwZWQgZGly
ZWN0b3J5ICVzJywgIHNyYykKLSAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgIGlm
IG5vdCBvcy5hY2Nlc3Moc3JjLCBvcy5GX09LIHwgb3MuUl9PSyk6Ci0gICAgICAgICAgICAgICAg
c2VsZi5sb2dnZXIuZGVidWcoJ3NraXBwZWQgdW5yZWFkYWJsZSAlcycsIHNyYykKLSAgICAgICAg
ICAgICAgICByZXR1cm4KLQotICAgICAgICAgICAgc2VsZi5fZGVsZXRlX2ZpbGVfaWZfZXhpc3Rz
KGRlc3QpCi0KLSAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCdjcmVhdGVkICVzJywgZGVz
dCkKLSAgICAgICAgICAgIG9zLmxpbmsoc3JjLCBkZXN0KQotCi0gICAgICAgIGRlZiBjb3B5X2Fs
bF9maWxlc19pbl9kaXJlY3Rvcnkoc3JjLCBkZXN0KToKLSAgICAgICAgICAgIGZvciBwYXRoIGlu
IG9zLmxpc3RkaXIoc3JjKToKLSAgICAgICAgICAgICAgICBjb3B5X2ZpbGVfcmVwbGFjaW5nX2V4
aXN0aW5nKG9zLnBhdGguam9pbihzcmMsIHBhdGgpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKGRlc3QsIHBhdGgpKQotCi0gICAgICAg
IHNlbGYubG9nZ2VyLmluZm8oJ0NvcHlpbmcgdGVtcGxhdGUgZmlsZXMgdG8gb3V0cHV0IGRpcmVj
dG9yeS4uLicpCi0gICAgICAgIHNlbGYuX2NyZWF0ZV9kaXJlY3RvcnlfaWZfbm9uZXhpc3RlbnQo
c2VsZi5vdXRwdXRfZGlyKQotICAgICAgICBjb3B5X2FsbF9maWxlc19pbl9kaXJlY3Rvcnkoc2Vs
Zi5kb2NfZGlyLCBzZWxmLm91dHB1dF9kaXIpCi0KLSAgICAgICAgaWYgbm90IGh0bWw6Ci0gICAg
ICAgICAgICByZXR1cm4KLQotICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCdDb3B5aW5nIEhUTUwg
ZmlsZXMgdG8gb3V0cHV0IGRpcmVjdG9yeS4uLicpCi0gICAgICAgIGh0bWxfc3JjX2RpciA9IG9z
LnBhdGguam9pbihzZWxmLmRvY19kaXIsICdodG1sJykKLSAgICAgICAgaHRtbF9kZXN0X2RpciA9
IG9zLnBhdGguam9pbihzZWxmLm91dHB1dF9kaXIsICdodG1sJykKLSAgICAgICAgc2VsZi5fY3Jl
YXRlX2RpcmVjdG9yeV9pZl9ub25leGlzdGVudChodG1sX2Rlc3RfZGlyKQotCi0gICAgICAgIGlm
IG9zLnBhdGguZXhpc3RzKGh0bWxfc3JjX2Rpcik6Ci0gICAgICAgICAgICBjb3B5X2FsbF9maWxl
c19pbl9kaXJlY3RvcnkoaHRtbF9zcmNfZGlyLCBodG1sX2Rlc3RfZGlyKQotCi0gICAgZGVmIF93
cml0ZV92ZXJzaW9uX3htbChzZWxmKToKLSAgICAgICAgaWYgbm90IHNlbGYudmVyc2lvbjoKLSAg
ICAgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oJ05vIHZlcnNpb24gc3BlY2lmaWVkLCBzbyBub3Qg
d3JpdGluZyB2ZXJzaW9uLnhtbCcpCi0gICAgICAgICAgICByZXR1cm4KLQotICAgICAgICB2ZXJz
aW9uX3htbF9wYXRoID0gb3MucGF0aC5qb2luKHNlbGYub3V0cHV0X2RpciwgJ3ZlcnNpb24ueG1s
JykKLSAgICAgICAgc3JjX3ZlcnNpb25feG1sX3BhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi5kb2Nf
ZGlyLCAndmVyc2lvbi54bWwnKQotCi0gICAgICAgICMgRG9uJ3Qgb3ZlcndyaXRlIHZlcnNpb24u
eG1sIGlmIGl0IHdhcyBpbiB0aGUgZG9jIGRpcmVjdG9yeS4KLSAgICAgICAgaWYgb3MucGF0aC5l
eGlzdHModmVyc2lvbl94bWxfcGF0aCkgYW5kIFwKLSAgICAgICAgICAgb3MucGF0aC5leGlzdHMo
c3JjX3ZlcnNpb25feG1sX3BhdGgpOgotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgb3V0
cHV0X2ZpbGUgPSBvcGVuKHZlcnNpb25feG1sX3BhdGgsICd3JykKLSAgICAgICAgb3V0cHV0X2Zp
bGUud3JpdGUoc2VsZi52ZXJzaW9uKQotICAgICAgICBvdXRwdXRfZmlsZS5jbG9zZSgpCi0KLSAg
ICBkZWYgX3J1bl9ndGtkb2Nfc2NhbihzZWxmKToKLSAgICAgICAgYXJncyA9IFsnZ3RrZG9jLXNj
YW4nLAotICAgICAgICAgICAgICAgICctLW1vZHVsZT0lcycgJSBzZWxmLm1vZHVsZV9uYW1lLAot
ICAgICAgICAgICAgICAgICctLXJlYnVpbGQtdHlwZXMnXQotCi0gICAgICAgICMgRWFjaCBzb3Vy
Y2UgZGlyZWN0b3J5IHNob3VsZCBiZSBoYXZlIGl0cyBvd24gIi0tc291cmNlLWRpcj0iIHByZWZp
eC4KLSAgICAgICAgYXJncy5leHRlbmQoWyctLXNvdXJjZS1kaXI9JXMnICUgcGF0aCBmb3IgcGF0
aCBpbiBzZWxmLnNvdXJjZV9kaXJzXSkKLQotICAgICAgICBpZiBzZWxmLmRlY29yYXRvcjoKLSAg
ICAgICAgICAgIGFyZ3MuYXBwZW5kKCctLWlnbm9yZS1kZWNvcmF0b3JzPSVzJyAlIHNlbGYuZGVj
b3JhdG9yKQotICAgICAgICBpZiBzZWxmLmRlcHJlY2F0aW9uX2d1YXJkOgotICAgICAgICAgICAg
YXJncy5hcHBlbmQoJy0tZGVwcmVjYXRlZC1ndWFyZHM9JXMnICUgc2VsZi5kZXByZWNhdGlvbl9n
dWFyZCkKLSAgICAgICAgaWYgc2VsZi5vdXRwdXRfZGlyOgotICAgICAgICAgICAgYXJncy5hcHBl
bmQoJy0tb3V0cHV0LWRpcj0lcycgJSBzZWxmLm91dHB1dF9kaXIpCi0KLSAgICAgICAgIyBndGtk
b2Mtc2NhbiB3YW50cyB0aGUgYmFzZW5hbWVzIG9mIGlnbm9yZWQgaGVhZGVycywgc28gc3RyaXAg
dGhlCi0gICAgICAgICMgZGlybmFtZS4gRGlmZmVyZW50IGZyb20gIi0tc291cmNlLWRpciIsIHRo
ZSBoZWFkZXJzIHNob3VsZCBiZQotICAgICAgICAjIHNwZWNpZmllZCBhcyBvbmUgbG9uZyBzdHJp
bmcuCi0gICAgICAgIGlmIHNlbGYuaWdub3JlZF9maWxlczoKLSAgICAgICAgICAgIGlnbm9yZWRf
ZmlsZXNfYmFzZW5hbWVzID0gXAotICAgICAgICAgICAgICAgIFtvcy5wYXRoLmJhc2VuYW1lKHgp
IGZvciB4IGluIHNlbGYuaWdub3JlZF9maWxlc10KLSAgICAgICAgICAgIGFyZ3MuYXBwZW5kKCct
LWlnbm9yZS1oZWFkZXJzPSVzJyAlICcgJy5qb2luKGlnbm9yZWRfZmlsZXNfYmFzZW5hbWVzKSkK
LQotICAgICAgICBzZWxmLl9ydW5fY29tbWFuZChhcmdzKQotCi0gICAgZGVmIF9ydW5fZ3RrZG9j
X3NjYW5nb2JqKHNlbGYpOgotICAgICAgICBlbnYgPSBvcy5lbnZpcm9uCi0gICAgICAgIGxkZmxh
Z3MgPSBzZWxmLmxkZmxhZ3MKLSAgICAgICAgaWYgc2VsZi5saWJyYXJ5X3BhdGg6Ci0gICAgICAg
ICAgICBsZGZsYWdzID0gJyAiLUwlcyIgJyAlIHNlbGYubGlicmFyeV9wYXRoICsgbGRmbGFncwot
ICAgICAgICAgICAgZW52WydSVU4nXSA9ICdMRF9MSUJSQVJZX1BBVEg9IiVzIiAnICUgc2VsZi5s
aWJyYXJ5X3BhdGgKLSAgICAgICAgaWYgbGRmbGFnczoKLSAgICAgICAgICAgIGVudlsnTERGTEFH
UyddID0gbGRmbGFncwotICAgICAgICBpZiBzZWxmLmNmbGFnczoKLSAgICAgICAgICAgIGVudlsn
Q0ZMQUdTJ10gPSBzZWxmLmNmbGFncwotCi0gICAgICAgIGlmICdDRkxBR1MnIGluIGVudjoKLSAg
ICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCdDRkxBR1M9JXMnLCBlbnZbJ0NGTEFHUyddKQot
ICAgICAgICBpZiAnTERGTEFHUycgaW4gZW52OgotICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVi
dWcoJ0xERkxBR1MgJXMnLCBlbnZbJ0xERkxBR1MnXSkKLSAgICAgICAgaWYgJ1JVTicgaW4gZW52
OgotICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoJ1JVTj0lcycsIGVudlsnUlVOJ10pCi0g
ICAgICAgIHNlbGYuX3J1bl9jb21tYW5kKFsnZ3RrZG9jLXNjYW5nb2JqJywgJy0tbW9kdWxlPSVz
JyAlIHNlbGYubW9kdWxlX25hbWVdLAotICAgICAgICAgICAgICAgICAgICAgICAgICBlbnY9ZW52
LCBjd2Q9c2VsZi5vdXRwdXRfZGlyKQotCi0gICAgZGVmIF9ydW5fZ3RrZG9jX21rdG1wbChzZWxm
KToKLSAgICAgICAgYXJncyA9IFsnZ3RrZG9jLW1rdG1wbCcsICctLW1vZHVsZT0lcycgJSBzZWxm
Lm1vZHVsZV9uYW1lXQotICAgICAgICBzZWxmLl9ydW5fY29tbWFuZChhcmdzLCBjd2Q9c2VsZi5v
dXRwdXRfZGlyKQotCi0gICAgZGVmIF9ydW5fZ3RrZG9jX21rZGIoc2VsZik6Ci0gICAgICAgIHNn
bWxfZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLm91dHB1dF9kaXIsIHNlbGYubWFpbl9zZ21sX2Zp
bGUpCi0gICAgICAgIHNlbGYuX3JhaXNlX2V4Y2VwdGlvbl9pZl9maWxlX2luYWNjZXNzaWJsZShz
Z21sX2ZpbGUpCi0KLSAgICAgICAgYXJncyA9IFsnZ3RrZG9jLW1rZGInLAotICAgICAgICAgICAg
ICAgICctLW1vZHVsZT0lcycgJSBzZWxmLm1vZHVsZV9uYW1lLAotICAgICAgICAgICAgICAgICct
LW1haW4tc2dtbC1maWxlPSVzJyAlIHNnbWxfZmlsZSwKLSAgICAgICAgICAgICAgICAnLS1zb3Vy
Y2Utc3VmZml4ZXM9aCxjLGNwcCxjYycsCi0gICAgICAgICAgICAgICAgJy0tb3V0cHV0LWZvcm1h
dD14bWwnLAotICAgICAgICAgICAgICAgICctLXNnbWwtbW9kZSddCi0KLSAgICAgICAgIyBFYWNo
IGRpcmVjdG9yeSBzaG91bGQgYmUgaGF2ZSBpdHMgb3duICItLXNvdXJjZS1kaXI9IiBwcmVmaXgu
Ci0gICAgICAgIGFyZ3MuZXh0ZW5kKFsnLS1zb3VyY2UtZGlyPSVzJyAlIHBhdGggZm9yIHBhdGgg
aW4gc2VsZi5zb3VyY2VfZGlyc10pCi0gICAgICAgIHNlbGYuX3J1bl9jb21tYW5kKGFyZ3MsIGN3
ZD1zZWxmLm91dHB1dF9kaXIpCi0KLSAgICBkZWYgX3J1bl9ndGtkb2NfbWtodG1sKHNlbGYpOgot
ICAgICAgICBodG1sX2Rlc3RfZGlyID0gb3MucGF0aC5qb2luKHNlbGYub3V0cHV0X2RpciwgJ2h0
bWwnKQotICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2RpcihodG1sX2Rlc3RfZGlyKToKLSAgICAg
ICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiJXMgaXMgbm90IGEgZGlyZWN0b3J5LCBjb3VsZCBub3Qg
Z2VuZXJhdGUgSFRNTCIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIGh0bWxfZGVzdF9k
aXIpCi0gICAgICAgIGVsaWYgbm90IG9zLmFjY2VzcyhodG1sX2Rlc3RfZGlyLCBvcy5YX09LIHwg
b3MuUl9PSyB8IG9zLldfT0spOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJDb3VsZCBu
b3QgYWNjZXNzICVzIHRvIGdlbmVyYXRlIEhUTUwiCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJSBodG1sX2Rlc3RfZGlyKQotCi0gICAgICAgICMgZ3RrZG9jLW1raHRtbCBleHBlY3RzIHRo
ZSBTR01MIHBhdGggdG8gYmUgYWJzb2x1dGUuCi0gICAgICAgIHNnbWxfZmlsZSA9IG9zLnBhdGgu
am9pbihvcy5wYXRoLmFic3BhdGgoc2VsZi5vdXRwdXRfZGlyKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNlbGYubWFpbl9zZ21sX2ZpbGUpCi0gICAgICAgIHNlbGYuX3JhaXNl
X2V4Y2VwdGlvbl9pZl9maWxlX2luYWNjZXNzaWJsZShzZ21sX2ZpbGUpCi0KLSAgICAgICAgc2Vs
Zi5fcnVuX2NvbW1hbmQoWydndGtkb2MtbWtodG1sJywgc2VsZi5tb2R1bGVfbmFtZSwgc2dtbF9m
aWxlXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY3dkPWh0bWxfZGVzdF9kaXIpCi0KLSAg
ICBkZWYgX3J1bl9ndGtkb2NfZml4eHJlZihzZWxmKToKLSAgICAgICAgc2VsZi5fcnVuX2NvbW1h
bmQoWydndGtkb2MtZml4eHJlZicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1tb2R1
bGUtZGlyPWh0bWwnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0taHRtbC1kaXI9aHRt
bCddLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjd2Q9c2VsZi5vdXRwdXRfZGlyKQotCi0K
LWNsYXNzIFBrZ0NvbmZpZ0dUS0RvYyhHVEtEb2MpOgotCi0gICAgIiIiQ2xhc3MgcmVhZHMgYSBs
aWJyYXJ5J3MgcGtnY29uZmlnIGZpbGUgdG8gZ3Vlc3MgZ3RrZG9jIHBhcmFtZXRlcnMuCi0KLSAg
ICBTb21lIGd0a2RvYyBwYXJhbWV0ZXJzIGNhbiBiZSBndWVzc2VkIGJ5IHJlYWRpbmcgYSBsaWJy
YXJ5J3MgcGtnY29uZmlnCi0gICAgZmlsZSwgaW5jbHVkaW5nIHRoZSBjZmxhZ3MsIGxkZmxhZ3Mg
YW5kIHZlcnNpb24gcGFyYW1ldGVycy4gSWYgeW91Ci0gICAgcHJvdmlkZSB0aGVzZSBwYXJhbWV0
ZXJzIGFzIHdlbGwsIHRoZXkgd2lsbCBiZSBhcHBlbmRlZCB0byB0aGUgb25lcwotICAgIGd1ZXNz
ZWQgdmlhIHRoZSBwa2djb25maWcgZmlsZS4KLQotICAgIEtleXdvcmQgYXJndW1lbnRzOgotICAg
ICAgcGtnX2NvbmZpZ19wYXRoIC0tIFBhdGggdG8gdGhlIHBrZ2NvbmZpZyBmaWxlIGZvciB0aGUg
bGlicmFyeS4gUmVxdWlyZWQuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgcGtn
X2NvbmZpZ19wYXRoLCAqKmFyZ3MpOgotICAgICAgICBzdXBlcihQa2dDb25maWdHVEtEb2MsIHNl
bGYpLl9faW5pdF9fKCoqYXJncykKLQotICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMocGtn
X2NvbmZpZ19wYXRoKToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignQ291bGQgbm90IGZp
bmQgcGtnLWNvbmZpZyBmaWxlIGF0OiAlcycKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAl
IHBrZ19jb25maWdfcGF0aCkKLQotICAgICAgICBzZWxmLmNmbGFncyArPSAiICIgKyBzZWxmLl9y
dW5fY29tbWFuZChbJ3BrZy1jb25maWcnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcGtnX2NvbmZpZ19wYXRoLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tY2ZsYWdzJ10sIHByaW50X291dHB1dD1GYWxz
ZSkKLSAgICAgICAgc2VsZi5sZGZsYWdzICs9ICIgIiArIHNlbGYuX3J1bl9jb21tYW5kKFsncGtn
LWNvbmZpZycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwa2dfY29uZmlnX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnLS1saWJzJ10sIHByaW50X291dHB1dD1GYWxzZSkKLSAgICAgICAgc2VsZi52
ZXJzaW9uID0gc2VsZi5fcnVuX2NvbW1hbmQoWydwa2ctY29uZmlnJywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBrZ19jb25maWdfcGF0aCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLW1vZHZlcnNpb24nXSwgcHJpbnRfb3V0
cHV0PUZhbHNlKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IDc1ZjRlZmZjZWFiYzU0OWI2N2YxNDQzMjg2ZjYzMDE3ZjA2MzBkZWUuLjJjODM4OGVj
MWNhN2ZmODBiNTM2M2FkODNlNWFkNGQ0ZTE4ZTE0YjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMS0xMS0xNyAg
TWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10g
SW50ZWdyYXRlIGJ1aWxkLWd0a2RvYyBpbnRvIGJ1aWxkLXdlYmtpdCBhbmQgbWFrZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzI2MjYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFt
OiBBZGRlZCBzdXBwb3J0IGZvciBuZXcgc2NyaXB0cyBhbmQgIm1ha2UgZG9jcyIuCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRkaXJzLnBtOiBDYWxsIGdlbmVyYXRlLWd0a2RvYyB3aGVuIGJ1aWxk
aW5nLgorICAgICAgICAoYnVpbGRBdXRvdG9vbHNQcm9qZWN0KToKKyAgICAgICAgKiBndGsvZ2Vu
ZXJhdGUtZ3RrZG9jOiBBZGRlZC4KKyAgICAgICAgKiBndGsvZ3RrZG9jLnB5OiBSZW5hbWVkIGZy
b20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy9ndGtkb2MucHkuCisKIDIw
MTEtMTEtMjMgIFJhcGhhZWwgS3VibyBkYSBDb3N0YSAgPGt1Ym9AcHJvZnVzaW9uLm1vYmk+CiAK
ICAgICAgICAgW0NNYWtlXSBNb3ZlIHRoZSB0b3AtbGV2ZWwgbG9naWMgdG8gdGhlIHRvcC1sZXZl
bCBkaXJlY3RvcnkuCmRpZmYgLS1naXQgYS9Ub29scy9HTlVtYWtlZmlsZS5hbSBiL1Rvb2xzL0dO
VW1ha2VmaWxlLmFtCmluZGV4IGZkOWVmNzAxNDNlYmNmYWE0NjgxM2IxMjgwYmFlY2E0ZDYzMGIz
NGEuLmFlMGUyODg2Yjk2Zjg5N2M1YzMyMTQxZmQ4NzExMmMxZGNjMmEzODYgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0dOVW1ha2VmaWxlLmFtCisrKyBiL1Rvb2xzL0dOVW1ha2VmaWxlLmFtCkBAIC0yMjcs
MyArMjI3LDQ1IEBAIFRlc3ROZXRzY2FwZVBsdWdpbl9saWJ0ZXN0bmV0c2NhcGVwbHVnaW5fbGFf
TERGTEFHUyA9IFwKIAogQ0xFQU5GSUxFUyArPSBUZXN0TmV0c2NhcGVQbHVnaW4vbGlidGVzdG5l
dHNjYXBlcGx1Z2luLmxhCiBlbmRpZgorCitFWFRSQV9ESVNUICs9IFwKKwlUb29scy9ndGsvY29t
bW9uLnB5IFwKKwlUb29scy9ndGsvZ2VuZXJhdGUtZ3RrZG9jIFwKKwlUb29scy9ndGsvZ3RrZG9j
LnB5IFwKKwlUb29scy9TY3JpcHRzL1ZDU1V0aWxzLnBtIFwKKwlUb29scy9TY3JpcHRzL3dlYmtp
dC1idWlsZC1kaXJlY3RvcnkgXAorCVRvb2xzL1NjcmlwdHMvd2Via2l0ZGlycy5wbQorCitpZiBF
TkFCTEVfV0VCS0lUMgorZG9jczogJChCVUlMVF9TT1VSQ0VTKSBcCisJbGlid2Via2l0Z3RrLUBX
RUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05ALkBXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05A
LmxhIFwKKwlsaWJ3ZWJraXQyZ3RrLUBXRUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05ALkBXRUJL
SVRHVEtfQVBJX01JTk9SX1ZFUlNJT05ALmxhCisJJChzcmNkaXIpL1Rvb2xzL2d0ay9nZW5lcmF0
ZS1ndGtkb2MKK2Vsc2UKK2RvY3M6ICQoQlVJTFRfU09VUkNFUykgXAorCWxpYndlYmtpdGd0ay1A
V0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQC5AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9O
QC5sYQorCSQoc3JjZGlyKS9Ub29scy9ndGsvZ2VuZXJhdGUtZ3RrZG9jCitlbmRpZgorLlBIT05Z
IDogZG9jcworCitjbGVhbi1sb2NhbDogZG9jLWNsZWFuLWxvY2FsCitkb2MtY2xlYW4tbG9jYWw6
CisJQHJtIC1mIERvY3VtZW50YXRpb24vd2Via2l0Z3RrLyp+IERvY3VtZW50YXRpb24vd2Via2l0
Z3RrKi5iYWsKKwlAcm0gLWYgRG9jdW1lbnRhdGlvbi93ZWJraXQyZ3RrLyp+IERvY3VtZW50YXRp
b24vd2Via2l0Mmd0ayouYmFrCitkaXN0Y2xlYW4tbG9jYWw6IGRvYy1kaXN0Y2xlYW4tbG9jYWwK
K2RvYy1kaXN0Y2xlYW4tbG9jYWw6CisJQHJtIC1yZiBEb2N1bWVudGF0aW9uCittYWludGFpbmVy
LWNsZWFuLWxvY2FsOiBkb2MtbWFpbnRhaW5lci1jbGVhbi1sb2NhbAorZG9jLW1haW50YWluZXIt
Y2xlYW4tbG9jYWw6IGNsZWFuCisJQHJtIC1yZiBEb2N1bWVudGF0aW9uL3dlYmtpdGd0ayBEb2N1
bWVudGF0aW9uL3dlYmtpdDJndGsKKwktQHJtZGlyIERvY3VtZW50YXRpb24KKworaWYgRU5BQkxF
X0dUS19ET0MKK2Rpc3QtY2hlY2stZ3RrZG9jOgorYWxsOiBkb2NzCitlbHNlCitkaXN0LWNoZWNr
LWd0a2RvYzoKKwlAZWNobyAiKioqIGd0ay1kb2MgbXVzdCBiZSBpbnN0YWxsZWQgYW5kIGVuYWJs
ZWQgaW4gb3JkZXIgdG8gbWFrZSBkaXN0IgorCUBmYWxzZQorZW5kaWYKKwpkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRkaXJzLnBtIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRkaXJzLnBt
CmluZGV4IDBjYTQ4OGIyZDU5YzRkYjhiYTdlM2E0YzZjMmY0NmYyYTIxMjRlYjguLjliYTQwNTg2
YTRlY2JlM2U1NWRmYzFlMDA0ZjBlMjA2OWRkMDVlNTggMTAwNzU1Ci0tLSBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0ZGlycy5wbQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdGRpcnMucG0KQEAgLTE2
NzksNiArMTY3OSwxNCBAQCBzdWIgYnVpbGRBdXRvdG9vbHNQcm9qZWN0KCRAKQogICAgIH0KIAog
ICAgIGNoZGlyICIuLiIgb3IgZGllOworCisgICAgaWYgKGlzR3RrKCkpIHsKKyAgICAgICAgbXkg
JHJlbGF0aXZlU2NyaXB0c1BhdGggPSByZWxhdGl2ZVNjcmlwdHNEaXIoKTsKKyAgICAgICAgaWYg
KHN5c3RlbSgiJHJlbGF0aXZlU2NyaXB0c1BhdGgvLi4vZ3RrL2dlbmVyYXRlLWd0a2RvYyAtLXNr
aXAtaHRtbCIpKSB7CisgICAgICAgICAgICBkaWUgIlxuIGd0a2RvYyBkaWQgbm90IGJ1aWxkIHdp
dGhvdXQgd2FybmluZ3NcbiI7CisgICAgICAgIH0KKyAgICB9CisKICAgICByZXR1cm4gMDsKIH0K
IApkaWZmIC0tZ2l0IGEvVG9vbHMvZ3RrL2NvbW1vbi5weSBiL1Rvb2xzL2d0ay9jb21tb24ucHkK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZTYyMWIyMjY3MjI0MTUzOTY5ODQ3ZjkxODExNTJhOTc4NDUxZjAwOAotLS0g
L2Rldi9udWxsCisrKyBiL1Rvb2xzL2d0ay9jb21tb24ucHkKQEAgLTAsMCArMSw2NiBAQAorIyEv
dXNyL2Jpbi9lbnYgcHl0aG9uCisjIENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgorIwor
IyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisjIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu
ZXJhbCBQdWJsaWMKKyMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisjIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisjIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIg
R2VuZXJhbCBQdWJsaWMKKyMgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90
LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorIyBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKwor
aW1wb3J0IG9zCitpbXBvcnQgc3VicHJvY2VzcworCitzY3JpcHRfZGlyID0gTm9uZQorYnVpbGRf
ZGlyID0gTm9uZQorCisKK2RlZiBzY3JpcHRfcGF0aCgqYXJncyk6CisgICAgZ2xvYmFsIHNjcmlw
dF9kaXIKKyAgICBpZiBub3Qgc2NyaXB0X2RpcjoKKyAgICAgICAgc2NyaXB0X2RpciA9IG9zLnBh
dGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAnLi4nLCAnU2NyaXB0cycpCisgICAg
cmV0dXJuIG9zLnBhdGguam9pbigqKHNjcmlwdF9kaXIsKSArIGFyZ3MpCisKKworZGVmIHRvcF9s
ZXZlbF9wYXRoKCphcmdzKToKKyAgICByZXR1cm4gb3MucGF0aC5qb2luKCooKHNjcmlwdF9wYXRo
KCcuLicsICcuLicpLCkgKyBhcmdzKSkKKworCitkZWYgZ2V0X2J1aWxkX3BhdGgoKToKKyAgICBn
bG9iYWwgYnVpbGRfZGlyCisgICAgaWYgYnVpbGRfZGlyOgorICAgICAgICByZXR1cm4gYnVpbGRf
ZGlyCisKKyAgICBkZWYgaXNfdmFsaWRfYnVpbGRfZGlyZWN0b3J5KHBhdGgpOgorICAgICAgICBy
ZXR1cm4gb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHBhdGgsICcubGlicycpKQorCisgICAg
YnVpbGRfZGlyID0gdG9wX2xldmVsX3BhdGgoJ1dlYktpdEJ1aWxkJywgJ1JlbGVhc2UnKQorICAg
IGlmIGlzX3ZhbGlkX2J1aWxkX2RpcmVjdG9yeShidWlsZF9kaXIpOgorICAgICAgICByZXR1cm4g
YnVpbGRfZGlyCisKKyAgICBidWlsZF9kaXIgPSB0b3BfbGV2ZWxfcGF0aCgnV2ViS2l0QnVpbGQn
LCAnRGVidWcnKQorICAgIGlmIGlzX3ZhbGlkX2J1aWxkX2RpcmVjdG9yeShidWlsZF9kaXIpOgor
ICAgICAgICByZXR1cm4gYnVpbGRfZGlyCisKKyAgICAjIGRpc3RjaGVjayBidWlsZHMgaW4gYSBk
aXJlY3RvcnkgbmFtZWQgX2J1aWxkIGluIHRoZSB0b3AtbGV2ZWwgcGF0aC4KKyAgICBidWlsZF9k
aXIgPSB0b3BfbGV2ZWxfcGF0aCgiX2J1aWxkIikKKyAgICBpZiBpc192YWxpZF9idWlsZF9kaXJl
Y3RvcnkoYnVpbGRfZGlyKToKKyAgICAgICAgcmV0dXJuIGJ1aWxkX2RpcgorCisgICAgYnVpbGRf
ZGlyID0gdG9wX2xldmVsX3BhdGgoKQorICAgIGlmIGlzX3ZhbGlkX2J1aWxkX2RpcmVjdG9yeShi
dWlsZF9kaXIpOgorICAgICAgICByZXR1cm4gYnVpbGRfZGlyCisKKyAgICBwcmludCAnQ291bGQg
bm90IGRldGVybWluZSBidWlsZCBkaXJlY3RvcnkuJworICAgIHN5cy5leGl0KDEpCisKKworZGVm
IGJ1aWxkX3BhdGgoKmFyZ3MpOgorICAgIHJldHVybiBvcy5wYXRoLmpvaW4oKihnZXRfYnVpbGRf
cGF0aCgpLCkgKyBhcmdzKQpkaWZmIC0tZ2l0IGEvVG9vbHMvZ3RrL2dlbmVyYXRlLWd0a2RvYyBi
L1Rvb2xzL2d0ay9nZW5lcmF0ZS1ndGtkb2MKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTVkYzNmYmY5NTYyODE2OWM1
NWQ5OWRhNjkzMmFhMDQyZjVjYjA5YwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL2d0ay9nZW5l
cmF0ZS1ndGtkb2MKQEAgLTAsMCArMSwxMTAgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIyBD
b3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KKyMKKyMgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorIyBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisjIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorIyB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCisjCisjIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorIyBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisjIExpY2Vu
c2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29m
dHdhcmUKKyMgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisKK2ltcG9ydCBjb21tb24KK2ltcG9ydCBn
bG9iCitpbXBvcnQgZ3RrZG9jCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IG9zLnBhdGgKK2ltcG9y
dCBzeXMKKworZGVmIGNvbmZpZ3VyZV9sb2dnaW5nKCk6CisgICAgbGV2ZWwgPSBsb2dnaW5nLkRF
QlVHIGlmICctdicgaW4gc3lzLmFyZ3YgZWxzZSBsb2dnaW5nLklORk8KKyAgICBsb2dnZXIgPSBs
b2dnaW5nLmdldExvZ2dlcignZ3RrZG9jJykKKyAgICBsb2dnZXIuc2V0TGV2ZWwobGV2ZWwpCisg
ICAgaGFuZGxlciA9IGxvZ2dpbmcuU3RyZWFtSGFuZGxlcigpCisgICAgaGFuZGxlci5zZXRMZXZl
bChsZXZlbCkKKyAgICBsb2dnZXIuYWRkSGFuZGxlcihoYW5kbGVyKQorICAgIGlmIGxldmVsID09
IGxvZ2dpbmcuREVCVUc6CisgICAgICAgIGhhbmRsZXIuc2V0Rm9ybWF0dGVyKGxvZ2dpbmcuRm9y
bWF0dGVyKCdbJShhc2N0aW1lKXNdICAlKG1lc3NhZ2UpcycpKQorICAgIGVsc2U6CisgICAgICAg
IGhhbmRsZXIuc2V0Rm9ybWF0dGVyKGxvZ2dpbmcuRm9ybWF0dGVyKCclKG1lc3NhZ2UpcycpKQor
CitkZWYgZ2V0X2NvbW1vbl9vcHRpb25zKCk6CisgICAgcmV0dXJuIHsKKyAgICAgICAgJ2RlY29y
YXRvcic6ICdXRUJLSVRfQVBJJywKKyAgICAgICAgJ2RlcHJlY2F0aW9uX2d1YXJkJzogJ1dFQktJ
VF9ESVNBQkxFX0RFUFJFQ0FURUQnLAorICAgICAgICAnbGlicmFyeV9wYXRoJyA6IGNvbW1vbi5i
dWlsZF9wYXRoKCcubGlicycpLAorICAgIH0KKworZGVmIGdldF93ZWJraXQyX29wdGlvbnMoKToK
KyAgICBkZWYgZGVyaXZlZF9zb3VyY2VzX3BhdGgoKmFyZ3MpOgorICAgICAgICByZXR1cm4gY29t
bW9uLmJ1aWxkX3BhdGgoKigoJ0Rlcml2ZWRTb3VyY2VzJywgJ1dlYktpdDInKSArIGFyZ3MpKQor
ICAgIGRlZiBzcmNfcGF0aCgqYXJncyk6CisgICAgICAgIHJldHVybiBjb21tb24udG9wX2xldmVs
X3BhdGgoKigoJ1NvdXJjZScsICdXZWJLaXQyJywgJ1VJUHJvY2VzcycsICdBUEknLCAnZ3RrJykg
KyBhcmdzKSkKKworICAgIGRlcml2ZWRfc291cmNlcyA9IGNvbW1vbi5idWlsZF9wYXRoKCdEZXJp
dmVkU291cmNlcycsICdXZWJLaXQyJykKKyAgICBvcHRpb25zID0gZ2V0X2NvbW1vbl9vcHRpb25z
KCkuY29weSgpCisgICAgb3B0aW9ucy51cGRhdGUoeworICAgICAgICAnbW9kdWxlX25hbWUnIDog
J3dlYmtpdDJndGsnLAorICAgICAgICAnZG9jX2RpcicgOiBzcmNfcGF0aCgnZG9jcycpLAorICAg
ICAgICAnb3V0cHV0X2RpcicgOiBjb21tb24uYnVpbGRfcGF0aCgnRG9jdW1lbnRhdGlvbicsICd3
ZWJraXQyZ3RrJyksCisgICAgICAgICdzb3VyY2VfZGlycycgOiBbc3JjX3BhdGgoKV0sCisgICAg
ICAgICdjZmxhZ3MnIDogJyAtSScgKyBkZXJpdmVkX3NvdXJjZXNfcGF0aCgnd2Via2l0Mmd0aycs
ICdpbmNsdWRlJykgKyBcCisgICAgICAgICAgICAgICAgICAgJyAtSScgKyBkZXJpdmVkX3NvdXJj
ZXNfcGF0aCgnd2Via2l0Mmd0aycpICsgXAorICAgICAgICAgICAgICAgICAgICcgLUknICsgZGVy
aXZlZF9zb3VyY2VzX3BhdGgoJ2luY2x1ZGUnKSArIFwKKyAgICAgICAgICAgICAgICAgICAnIC1J
JyArIGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgnU291cmNlJykgKyBcCisgICAgICAgICAgICAgICAg
ICAgJyAtSScgKyBzcmNfcGF0aCgpLAorICAgICAgICAnaWdub3JlZF9maWxlcyc6IGdsb2IuZ2xv
YihzcmNfcGF0aCgnKlByaXZhdGUuaCcpKSArIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICBn
bG9iLmdsb2Ioc3JjX3BhdGgoJ1BhZ2VDbGllbnRJbXBsLionKSkgKyBcCisgICAgICAgICAgICAg
ICAgICAgICAgICAgZ2xvYi5nbG9iKHNyY19wYXRoKCd0ZXN0cy8qLmgnKSkKKyAgICB9KQorICAg
IHJldHVybiAoY29tbW9uLmJ1aWxkX3BhdGgoJ1NvdXJjZScsICdXZWJLaXQyJywgJ3dlYmtpdDJn
dGstMy4wLnBjJyksIG9wdGlvbnMpCisKK2RlZiBnZXRfd2Via2l0MV9vcHRpb25zKCk6CisgICAg
ZGVmIGRlcml2ZWRfc291cmNlc19wYXRoKCphcmdzKToKKyAgICAgICAgcmV0dXJuIGNvbW1vbi5i
dWlsZF9wYXRoKCooKCdEZXJpdmVkU291cmNlcycsICdXZWJLaXQyJykgKyBhcmdzKSkKKyAgICBk
ZWYgc3JjX3BhdGgoKmFyZ3MpOgorICAgICAgICByZXR1cm4gY29tbW9uLnRvcF9sZXZlbF9wYXRo
KCooKCdTb3VyY2UnLCAnV2ViS2l0JywgJ2d0aycpICsgYXJncykpCisKKyAgICBkZXJpdmVkX3Nv
dXJjZXMgPSBjb21tb24uYnVpbGRfcGF0aCgnRGVyaXZlZFNvdXJjZXMnLCAnV2ViS2l0MicpCisg
ICAgb3B0aW9ucyA9IGdldF9jb21tb25fb3B0aW9ucygpLmNvcHkoKQorICAgIG9wdGlvbnMudXBk
YXRlKHsKKyAgICAgICAgJ21vZHVsZV9uYW1lJyA6ICd3ZWJraXRndGsnLAorICAgICAgICAnZG9j
X2RpcicgOiBzcmNfcGF0aCgnZG9jcycpLAorICAgICAgICAnb3V0cHV0X2RpcicgOiBjb21tb24u
YnVpbGRfcGF0aCgnRG9jdW1lbnRhdGlvbicsICd3ZWJraXRndGsnKSwKKyAgICAgICAgJ3NvdXJj
ZV9kaXJzJyA6IFtzcmNfcGF0aCgnd2Via2l0JyksIGNvbW1vbi5idWlsZF9wYXRoKCdTb3VyY2Un
LCAnV2ViS2l0JywgJ2d0aycsICd3ZWJraXQnKV0sCisgICAgICAgICdjZmxhZ3MnIDogJyAtSScg
KyBjb21tb24uYnVpbGRfcGF0aCgnV2ViS2l0JywgJ2d0aycpICsgXAorICAgICAgICAgICAgICAg
ICAgICcgLUknICsgY29tbW9uLmJ1aWxkX3BhdGgoJ0Rlcml2ZWRTb3VyY2VzJykgKyBcCisgICAg
ICAgICAgICAgICAgICAgJyAtSScgKyBzcmNfcGF0aCgpICsgXAorICAgICAgICAgICAgICAgICAg
ICcgLUknICsgY29tbW9uLnRvcF9sZXZlbF9wYXRoKCdTb3VyY2UnKSArIFwKKyAgICAgICAgICAg
ICAgICAgICAnIC1JJyArIGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgnU291cmNlJywgJ0phdmFTY3Jp
cHRDb3JlJywgJ0ZvcndhcmRpbmdIZWFkZXJzJyksCisgICAgICAgICdpZ25vcmVkX2ZpbGVzJzog
Z2xvYi5nbG9iKHNyY19wYXRoKCd3ZWJraXQnLCAnKnByaXZhdGUuKicpKQorICAgIH0pCisgICAg
cmV0dXJuIChjb21tb24uYnVpbGRfcGF0aCgnU291cmNlJywgJ1dlYktpdCcsICdndGsnLCAnd2Vi
a2l0Z3RrLTMuMC5wYycpLCBvcHRpb25zKQorCitjb25maWd1cmVfbG9nZ2luZygpCisKKyMgV2Ug
bmVlZCB0byBhZGQgdGhlIEphdmFTY3JpcHRDb3JlIGJ1aWxkIGRpcmVjdG9yeSB0byB0aGUgUEtH
X0NPTkZJR19QQVRICisjIHNvIHRoYXQgcGtnY29uZmlnIGNhbiBwcm9wZXJseSByZXNvbHZlIHRo
ZSBsaWJqYXZhc2NyaXB0Y29yZSBkZXBlbmRlbmN5Lgorb3MuZW52aXJvblsnUEtHX0NPTkZJR19Q
QVRIJ10gPSBjb21tb24uYnVpbGRfcGF0aCgnU291cmNlJywgJ0phdmFTY3JpcHRDb3JlJykgXAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICc6JyArIG9zLmVudmlyb24uZ2V0KCdQ
S0dfQ09ORklHX1BBVEgnKQorCitwcmludCAiR2VuZXJhdGluZyBXZWJLaXQxIGRvY3VtZW50YXRp
b24uLi4iCitwa2dfY29uZmlnX3BhdGgsIG9wdGlvbnMgPSBnZXRfd2Via2l0MV9vcHRpb25zKCkK
K2dlbmVyYXRvciA9IGd0a2RvYy5Qa2dDb25maWdHVEtEb2MocGtnX2NvbmZpZ19wYXRoLCAqKm9w
dGlvbnMpCitnZW5lcmF0b3IuZ2VuZXJhdGUoaHRtbD0nLS1za2lwLWh0bWwnIG5vdCBpbiBzeXMu
YXJndikKK3Nhd193ZWJraXQxX3dhcm5pbmdzID0gZ2VuZXJhdG9yLnNhd193YXJuaW5ncworCisj
IFdlYktpdDIgbWlnaHQgbm90IGJlIGVuYWJsZWQsIHNvIGNoZWNrIGZvciB0aGUgcGtnLWNvbmZp
ZyBmaWxlIGJlZm9yZSBidWlsZGluZyBkb2N1bWVudGF0aW9uLgoraWYgb3MucGF0aC5leGlzdHMo
Y29tbW9uLmJ1aWxkX3BhdGgoJ1NvdXJjZScsICdXZWJLaXQyJywgJ3dlYmtpdDJndGstMy4wLnBj
JykpOgorICAgIHByaW50ICJcbkdlbmVyYXRpbmcgV2ViS2l0MiBkb2N1bWVudGF0aW9uLi4uIgor
ICAgIHBrZ19jb25maWdfcGF0aCwgb3B0aW9ucyA9IGdldF93ZWJraXQyX29wdGlvbnMoKQorICAg
IGdlbmVyYXRvciA9IGd0a2RvYy5Qa2dDb25maWdHVEtEb2MocGtnX2NvbmZpZ19wYXRoLCAqKm9w
dGlvbnMpCisgICAgZ2VuZXJhdG9yLmdlbmVyYXRlKGh0bWw9Jy0tc2tpcC1odG1sJyBub3QgaW4g
c3lzLmFyZ3YpCisKK3N5cy5leGl0KGdlbmVyYXRvci5zYXdfd2FybmluZ3Mgb3Igc2F3X3dlYmtp
dDFfd2FybmluZ3MpCmRpZmYgLS1naXQgYS9Ub29scy9ndGsvZ3RrZG9jLnB5IGIvVG9vbHMvZ3Rr
L2d0a2RvYy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYzA1MmZiN2I0ZGQ5NmI5YzM2YzU5NmJjYzJhMjc1MTli
Y2MxY2U1Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvZ3RrL2d0a2RvYy5weQpAQCAtMCwwICsx
LDM3OCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KKyMKKyMgVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorIyBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj
CisjIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorIyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisjCisjIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorIyBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi
bGljCisjIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8g
dGhlIEZyZWUgU29mdHdhcmUKKyMgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisKK2ltcG9ydCBlcnJu
bworaW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCBvcworaW1wb3J0IG9zLnBhdGgKK2ltcG9ydCBzdWJw
cm9jZXNzCitpbXBvcnQgc3lzCisKKworY2xhc3MgR1RLRG9jKG9iamVjdCk6CisKKyAgICAiIiJD
bGFzcyB0aGF0IGNvbnRyb2xzIGEgZ3RrZG9jIHJ1bi4KKworICAgIEVhY2ggaW5zdGFuY2Ugb2Yg
dGhpcyBjbGFzcyByZXByZXNlbnRzIG9uZSBndGtkb2MgY29uZmlndXJhdGlvbgorICAgIGFuZCBz
ZXQgb2YgZG9jdW1lbnRhdGlvbi4gVGhlIGd0a2RvYyBwYWNrYWdlIGlzIGEgc2VyaWVzIG9mIHRv
b2xzCisgICAgcnVuIGNvbnNlY3V0aXZlbHkgd2hpY2ggY29udmVydHMgaW5saW5lIEMvQysrIGRv
Y3VtZW50YXRpb24gaW50bworICAgIGRvY2Jvb2sgZmlsZXMgYW5kIHRoZW4gaW50byBIVE1MLiBU
aGlzIGNsYXNzIGlzIHN1aXRhYmxlIGZvcgorICAgIGdlbmVyYXRpbmcgZG9jdW1lbnRhdGlvbiBv
ciBzaW1wbHkgdmVyaWZ5aW5nIGNvcnJlY3RuZXNzLgorCisgICAgS2V5d29yZCBhcmd1bWVudHM6
CisgICAgb3V0cHV0X2RpciAgICAgICAgIC0tIFRoZSBwYXRoIHdoZXJlIGd0a2RvYyBvdXRwdXQg
c2hvdWxkIGJlIHBsYWNlZC4gR2VuZXJhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICBt
YXkgb3ZlcndyaXRlIGZpbGUgaW4gdGhpcyBkaXJlY3RvcnkuIFJlcXVpcmVkLgorICAgIG1vZHVs
ZV9uYW1lICAgICAgICAtLSBUaGUgbmFtZSBvZiB0aGUgZG9jdW1lbnRhdGlvbiBtb2R1bGUuIEZv
ciBsaWJyYXJpZXMgdGhpcworICAgICAgICAgICAgICAgICAgICAgICAgICBpcyB0eXBpY2FsbHkg
dGhlIGxpYnJhcnkgbmFtZS4gUmVxdWlyZWQgaWYgbm90IGxpYnJhcnkgcGF0aAorICAgICAgICAg
ICAgICAgICAgICAgICAgICBpcyBnaXZlbi4KKyAgICBzb3VyY2VfZGlycyAgICAgICAgLS0gQSBs
aXN0IG9mIHBhdGhzIHRvIHRoZSBzb3VyY2UgY29kZSB0byBiZSBzY2FubmVkLiBSZXF1aXJlZC4K
KyAgICBpZ25vcmVkX2ZpbGVzICAgICAgLS0gQSBsaXN0IG9mIGZpbGVuYW1lcyB0byBpZ25vcmUg
aW4gdGhlIHNvdXJjZSBkaXJlY3RvcnkuIEl0IGlzCisgICAgICAgICAgICAgICAgICAgICAgICAg
IG9ubHkgbmVjZXNzYXJ5IHRvIHByb3ZpZGUgdGhlIGJhc2VuYW1lcyBvZiB0aGVzZSBmaWxlcy4K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwaWNhbGx5IGl0IGlzIGltcG9ydGFudCB0byBw
cm92aWRlIGFuIHVwZGF0ZWQgbGlzdCBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25v
cmVkIGZpbGVzIHRvIHByZXZlbnQgd2FybmluZ3MgYWJvdXQgdW5kb2N1bWVudGVkIHN5bWJvbHMu
CisgICAgZGVjb3JhdG9yICAgICAgICAgIC0tIElmIGEgZGVjb3JhdG9yIGlzIHVzZWQgdG8gdW5o
aWRlIGNlcnRhaW4gc3ltYm9scyBpbiBoZWFkZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ZmlsZXMgdGhpcyBwYXJhbWV0ZXIgaXMgcmVxdWlyZWQgZm9yIHN1Y2Nlc3NmdWwgc2Nhbm5pbmcu
CisgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWZhdWx0ICcnKQorICAgIGRlcHJlY2F0aW9u
X2d1YXJkICAtLSBndGtkb2MgdHJpZXMgdG8gZW5zdXJlIHRoYXQgc3ltYm9scyBtYXJrZWQgYXMg
ZGVwcmVjYXRlZAorICAgICAgICAgICAgICAgICAgICAgICAgICBhcmUgZW5jYXNlZCBpbiB0aGlz
IEMgcHJlcHJvY2Vzc29yIGRlZmluZS4gVGhpcyBpcyByZXF1aXJlZAorICAgICAgICAgICAgICAg
ICAgICAgICAgICB0byBhdm9pZCBndGtkb2Mgd2FybmluZ3MuIChkZWZhdWx0ICcnKQorICAgIGNm
bGFncyAgICAgICAgICAgICAtLSBUaGlzIHBhcmFtZXRlciBzcGVjaWZpZXMgYW55IHByZXByb2Nl
c3NvciBmbGFncyBuZWNlc3NhcnkgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxk
aW5nIHRoZSBzY2FubmVyIGJpbmFyeSBkdXJpbmcgZ3RrZG9jLXNjYW5vYmouIFR5cGljYWxseQor
ICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzIGluY2x1ZGVzIGFsbCBhYnNvbHV0ZSBpbmNs
dWRlIHBhdGhzIG5lY2Vzc2FyeSB0byByZXNvbHZlCisgICAgICAgICAgICAgICAgICAgICAgICAg
IGFsbCBoZWFkZXIgZGVwZW5kZW5jaWVzLiAoZGVmYXVsdCAnJykKKyAgICBsZGZsYWdzICAgICAg
ICAgICAgLS0gVGhpcyBwYXJhbWV0ZXIgc3BlY2lmaWVzIGFueSBsaW5rZXIgZmxhZ3MgbmVjZXNz
YXJ5IGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZGluZyB0aGUgc2Nhbm5lciBi
aW5hcnkgZHVyaW5nIGd0a2RvYy1zY2Fub2JqLiBUeXBpY2FsbHkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGhpcyBpbmNsdWRlcyAiLWx5b3VybGlicmFyeW5hbWUiLiAoZGVmYXVsdCAnJykK
KyAgICBsaWJyYXJ5X3BhdGggICAgICAgLS0gVGhpcyBwYXJhbWV0ZXIgc3BlY2lmaWVzIHRoZSBw
YXRoIHRvIHRoZSBkaXJlY3Rvcnkgd2hlcmUgeW91CisgICAgICAgICAgICAgICAgICAgICAgICAg
IGxpYnJhcnkgcmVzaWRlcyB1c2VkIGZvciBidWlsZGluZyB0aGUgc2Nhbm5lciBiaW5hcnkgZHVy
aW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgIGd0a2RvYy1zY2Fub2JqLiAoZGVmYXVsdCAn
JykKKworICAgIGRvY19kaXIgICAgICAgICAgICAtLSBUaGUgcGF0aCB0byBvdGhlciBkb2N1bWVu
dGF0aW9uIGZpbGVzIG5lY2Vzc2FyeSB0byBidWlsZAorICAgICAgICAgICAgICAgICAgICAgICAg
ICB0aGUgZG9jdW1lbnRhdGlvbi4gVGhpcyBmaWxlcyBpbiB0aGlzIGRpcmVjdG9yeSBhcyB3ZWxs
IGFzCisgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBmaWxlcyBpbiB0aGUgJ2h0bWwnIHN1
YmRpcmVjdG9yeSB3aWxsIGJlIGNvcGllZAorICAgICAgICAgICAgICAgICAgICAgICAgICByZWN1
cnNpdmVseSBpbnRvIHRoZSBvdXRwdXQgZGlyZWN0b3J5LiAoZGVmYXVsdCAnJykKKyAgICBtYWlu
X3NnbWxfZmlsZSAgICAgLS0gVGhlIHBhdGggb3IgbmFtZSAoaWYgYSBkb2NfZGlyIGlzIGdpdmVu
KSBvZiB0aGUgU0dNTCBmaWxlCisgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgaXMgdGhl
IGNvbnNpZGVyZWQgdGhlIG1haW4gcGFnZSBvZiB5b3VyIGRvY3VtZW50YXRpb24uCisgICAgICAg
ICAgICAgICAgICAgICAgICAgIChkZWZhdWx0OiA8bW9kdWxlX25hbWU+LWRvY3Muc2dtbCkKKyAg
ICB2ZXJzaW9uICAgICAgICAgICAgLS0gVGhlIHZlcnNpb24gbnVtYmVyIG9mIHRoZSBtb2R1bGUu
IElmIHRoaXMgaXMgcHJvdmlkZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGEgdmVyc2lv
bi54bWwgZmlsZSBjb250YWluaW5nIHRoZSB2ZXJzaW9uIHdpbGwgYmUgY3JlYXRlZAorICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbiB0aGUgb3V0cHV0IGRpcmVjdG9yeSBkdXJpbmcgZG9jdW1l
bnRhdGlvbiBnZW5lcmF0aW9uLgorCisgICAgaW50ZXJhY3RpdmUgICAgICAgIC0tIFdoZXRoZXIg
b3Igbm90IGVycm9ycyBvciB3YXJuaW5ncyBzaG91bGQgcHJvbXB0IHRoZSB1c2VyCisgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRvIGNvbnRpbnVlIG9yIG5vdC4gV2hlbiB0aGlzIHZhbHVlIGlz
IGZhbHNlLCBnZW5lcmF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbGwgY29udGlu
dWUgZGVzcGl0ZSB3YXJuaW5ncy4gKGRlZmF1bHQgRmFsc2UpCisgICAgIiIiCisKKyAgICBkZWYg
X19pbml0X18oc2VsZiwgKiphcmdzKToKKworICAgICAgICAjIFBhcmFtZXRlcnMgc3BlY2lmaWMg
dG8gc2Nhbm5pbmcuCisgICAgICAgIHNlbGYubW9kdWxlX25hbWUgPSAnJworICAgICAgICBzZWxm
LnNvdXJjZV9kaXJzID0gW10KKyAgICAgICAgc2VsZi5pZ25vcmVkX2ZpbGVzID0gW10KKyAgICAg
ICAgc2VsZi5kZWNvcmF0b3IgPSAnJworICAgICAgICBzZWxmLmRlcHJlY2F0aW9uX2d1YXJkID0g
JycKKworICAgICAgICAjIFBhcmFtZXRlcnMgc3BlY2lmaWMgdG8gZ3RrZG9jLXNjYW5vYmouCisg
ICAgICAgIHNlbGYuY2ZsYWdzID0gJycKKyAgICAgICAgc2VsZi5sZGZsYWdzID0gJycKKyAgICAg
ICAgc2VsZi5saWJyYXJ5X3BhdGggPSAnJworCisgICAgICAgICMgUGFyYW1ldGVycyBzcGVjaWZp
YyB0byBnZW5lcmF0aW9uLgorICAgICAgICBzZWxmLm91dHB1dF9kaXIgPSAnJworICAgICAgICBz
ZWxmLmRvY19kaXIgPSAnJworICAgICAgICBzZWxmLm1haW5fc2dtbF9maWxlID0gJycKKworICAg
ICAgICBzZWxmLmludGVyYWN0aXZlID0gRmFsc2UKKworICAgICAgICBzZWxmLmxvZ2dlciA9IGxv
Z2dpbmcuZ2V0TG9nZ2VyKCdndGtkb2MnKQorCisgICAgICAgIGZvciBrZXksIHZhbHVlIGluIGFy
Z3MuaXRlcml0ZW1zKCk6CisgICAgICAgICAgICBzZXRhdHRyKHNlbGYsIGtleSwgdmFsdWUpCisK
KyAgICAgICAgZGVmIHJhaXNlX2Vycm9yX2lmX25vdF9zcGVjaWZpZWQoa2V5KToKKyAgICAgICAg
ICAgIGlmIG5vdCBnZXRhdHRyKHNlbGYsIGtleSk6CisgICAgICAgICAgICAgICAgcmFpc2UgRXhj
ZXB0aW9uKCclcyBub3Qgc3BlY2lmaWVkLicgJSBrZXkpCisKKyAgICAgICAgcmFpc2VfZXJyb3Jf
aWZfbm90X3NwZWNpZmllZCgnb3V0cHV0X2RpcicpCisgICAgICAgIHJhaXNlX2Vycm9yX2lmX25v
dF9zcGVjaWZpZWQoJ3NvdXJjZV9kaXJzJykKKyAgICAgICAgcmFpc2VfZXJyb3JfaWZfbm90X3Nw
ZWNpZmllZCgnbW9kdWxlX25hbWUnKQorCisgICAgICAgICMgTWFrZSBhbGwgcGF0aHMgYWJzb2x1
dGUgaW4gY2FzZSB3ZSB3ZXJlIHBhc3NlZCByZWxhdGl2ZSBwYXRocywgc2luY2UKKyAgICAgICAg
IyB3ZSBjaGFuZ2UgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3Rvcnkgd2hlbiBleGVjdXRpbmcg
c3ViY29tbWFuZHMuCisgICAgICAgIHNlbGYub3V0cHV0X2RpciA9IG9zLnBhdGguYWJzcGF0aChz
ZWxmLm91dHB1dF9kaXIpCisgICAgICAgIHNlbGYuc291cmNlX2RpcnMgPSBbb3MucGF0aC5hYnNw
YXRoKHgpIGZvciB4IGluIHNlbGYuc291cmNlX2RpcnNdCisgICAgICAgIGlmIHNlbGYubGlicmFy
eV9wYXRoOgorICAgICAgICAgICAgc2VsZi5saWJyYXJ5X3BhdGggPSBvcy5wYXRoLmFic3BhdGgo
c2VsZi5saWJyYXJ5X3BhdGgpCisKKyAgICAgICAgaWYgbm90IHNlbGYubWFpbl9zZ21sX2ZpbGU6
CisgICAgICAgICAgICBzZWxmLm1haW5fc2dtbF9maWxlID0gc2VsZi5tb2R1bGVfbmFtZSArICIt
ZG9jcy5zZ21sIgorCisgICAgZGVmIGdlbmVyYXRlKHNlbGYsIGh0bWw9VHJ1ZSk6CisgICAgICAg
IHNlbGYuc2F3X3dhcm5pbmdzID0gRmFsc2UKKworICAgICAgICBzZWxmLl9jb3B5X2RvY19maWxl
c190b19vdXRwdXRfZGlyKGh0bWwpCisgICAgICAgIHNlbGYuX3dyaXRlX3ZlcnNpb25feG1sKCkK
KyAgICAgICAgc2VsZi5fcnVuX2d0a2RvY19zY2FuKCkKKyAgICAgICAgc2VsZi5fcnVuX2d0a2Rv
Y19zY2FuZ29iaigpCisgICAgICAgIHNlbGYuX3J1bl9ndGtkb2NfbWt0bXBsKCkKKyAgICAgICAg
c2VsZi5fcnVuX2d0a2RvY19ta2RiKCkKKworICAgICAgICBpZiBub3QgaHRtbDoKKyAgICAgICAg
ICAgIHJldHVybgorCisgICAgICAgIHNlbGYuX3J1bl9ndGtkb2NfbWtodG1sKCkKKyAgICAgICAg
c2VsZi5fcnVuX2d0a2RvY19maXh4cmVmKCkKKworICAgIGRlZiBfZGVsZXRlX2ZpbGVfaWZfZXhp
c3RzKHNlbGYsIHBhdGgpOgorICAgICAgICBpZiBub3Qgb3MuYWNjZXNzKHBhdGgsIG9zLkZfT0sg
fCBvcy5SX09LKToKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1
ZygnZGVsZXRpbmcgJXMnLCBwYXRoKQorICAgICAgICBvcy51bmxpbmsocGF0aCkKKworICAgIGRl
ZiBfY3JlYXRlX2RpcmVjdG9yeV9pZl9ub25leGlzdGVudChzZWxmLCBwYXRoKToKKyAgICAgICAg
dHJ5OgorICAgICAgICAgICAgb3MubWFrZWRpcnMocGF0aCkKKyAgICAgICAgZXhjZXB0IE9TRXJy
b3IgYXMgZXJyb3I6CisgICAgICAgICAgICBpZiBlcnJvci5lcnJubyAhPSBlcnJuby5FRVhJU1Q6
CisgICAgICAgICAgICAgICAgcmFpc2UKKworICAgIGRlZiBfcmFpc2VfZXhjZXB0aW9uX2lmX2Zp
bGVfaW5hY2Nlc3NpYmxlKHNlbGYsIHBhdGgpOgorICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlz
dHMocGF0aCkgb3Igbm90IG9zLmFjY2VzcyhwYXRoLCBvcy5SX09LKToKKyAgICAgICAgICAgIHJh
aXNlIEV4Y2VwdGlvbigiQ291bGQgbm90IGFjY2VzcyBmaWxlIGF0OiAlcyIgJSBwYXRoKQorCisg
ICAgZGVmIF9vdXRwdXRfaGFzX3dhcm5pbmdzKHNlbGYsIG91dHB1dHMpOgorICAgICAgICBmb3Ig
b3V0cHV0IGluIG91dHB1dHM6CisgICAgICAgICAgICBpZiBvdXRwdXQgYW5kIG91dHB1dC5maW5k
KCd3YXJuaW5nJyk6CisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgcmV0dXJu
IEZhbHNlCisKKyAgICBkZWYgX2Fza195ZXNfb3Jfbm9fcXVlc3Rpb24oc2VsZiwgcXVlc3Rpb24p
OgorICAgICAgICBpZiBub3Qgc2VsZi5pbnRlcmFjdGl2ZToKKyAgICAgICAgICAgIHJldHVybiBU
cnVlCisKKyAgICAgICAgcXVlc3Rpb24gKz0gJyBbeS9OXSAnCisgICAgICAgIGFuc3dlciA9IE5v
bmUKKyAgICAgICAgd2hpbGUgYW5zd2VyICE9ICd5JyBhbmQgYW5zd2VyICE9ICduJyBhbmQgYW5z
d2VyICE9ICcnOgorICAgICAgICAgICAgYW5zd2VyID0gcmF3X2lucHV0KHF1ZXN0aW9uKS5sb3dl
cigpCisgICAgICAgIHJldHVybiBhbnN3ZXIgPT0gJ3knCisKKyAgICBkZWYgX3J1bl9jb21tYW5k
KHNlbGYsIGFyZ3MsIGVudj1Ob25lLCBjd2Q9Tm9uZSwgcHJpbnRfb3V0cHV0PVRydWUsIGlnbm9y
ZV93YXJuaW5ncz1GYWxzZSk6CisgICAgICAgIGlmIHByaW50X291dHB1dDoKKyAgICAgICAgICAg
IHNlbGYubG9nZ2VyLmluZm8oIlJ1bm5pbmcgJXMiLCBhcmdzWzBdKQorICAgICAgICBzZWxmLmxv
Z2dlci5kZWJ1ZygiRnVsbCBjb21tYW5kIGFyZ3M6ICVzIiwgc3RyKGFyZ3MpKQorCisgICAgICAg
IHByb2Nlc3MgPSBzdWJwcm9jZXNzLlBvcGVuKGFyZ3MsIGVudj1lbnYsIGN3ZD1jd2QsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUp
CisgICAgICAgIHN0ZG91dCwgc3RkZXJyID0gcHJvY2Vzcy5jb21tdW5pY2F0ZSgpCisKKyAgICAg
ICAgaWYgcHJpbnRfb3V0cHV0OgorICAgICAgICAgICAgaWYgc3Rkb3V0OgorICAgICAgICAgICAg
ICAgIHN5cy5zdGRvdXQud3JpdGUoc3Rkb3V0KQorICAgICAgICAgICAgaWYgc3RkZXJyOgorICAg
ICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoc3RkZXJyKQorCisgICAgICAgIGlmIHByb2Nl
c3MucmV0dXJuY29kZSAhPSAwOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCclcyBwcm9k
dWNlZCBhIG5vbi16ZXJvIHJldHVybiBjb2RlICVpJworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAlIChhcmdzWzBdLCBwcm9jZXNzLnJldHVybmNvZGUpKQorCisgICAgICAgIGlmIG5vdCBp
Z25vcmVfd2FybmluZ3MgYW5kICgnd2FybmluZycgaW4gc3RkZXJyIG9yICd3YXJuaW5nJyBpbiBz
dGRvdXQpOgorICAgICAgICAgICAgc2VsZi5zYXdfd2FybmluZ3MgPSBUcnVlCisgICAgICAgICAg
ICBpZiBub3Qgc2VsZi5fYXNrX3llc19vcl9ub19xdWVzdGlvbignJXMgcHJvZHVjZWQgd2Fybmlu
Z3MsICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0
cnkgdG8gY29udGludWU/JyAlIGFyZ3NbMF0pOgorICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2Vw
dGlvbignJXMgc3RlcCBmYWlsZWQnICUgYXJnc1swXSkKKworICAgICAgICByZXR1cm4gc3Rkb3V0
LnN0cmlwKCkKKworICAgIGRlZiBfY29weV9kb2NfZmlsZXNfdG9fb3V0cHV0X2RpcihzZWxmLCBo
dG1sPVRydWUpOgorICAgICAgICBpZiBub3Qgc2VsZi5kb2NfZGlyOgorICAgICAgICAgICAgc2Vs
Zi5sb2dnZXIuaW5mbygnTm90IGNvcHlpbmcgYW55IGZpbGVzIGZyb20gZG9jIGRpcmVjdG9yeSwn
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgYmVjYXVzZSBubyBkb2MgZGlyZWN0b3J5
IGdpdmVuLicpCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBkZWYgY29weV9maWxlX3Jl
cGxhY2luZ19leGlzdGluZyhzcmMsIGRlc3QpOgorICAgICAgICAgICAgaWYgb3MucGF0aC5pc2Rp
cihzcmMpOgorICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCdza2lwcGVkIGRpcmVj
dG9yeSAlcycsICBzcmMpCisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICBpZiBu
b3Qgb3MuYWNjZXNzKHNyYywgb3MuRl9PSyB8IG9zLlJfT0spOgorICAgICAgICAgICAgICAgIHNl
bGYubG9nZ2VyLmRlYnVnKCdza2lwcGVkIHVucmVhZGFibGUgJXMnLCBzcmMpCisgICAgICAgICAg
ICAgICAgcmV0dXJuCisKKyAgICAgICAgICAgIHNlbGYuX2RlbGV0ZV9maWxlX2lmX2V4aXN0cyhk
ZXN0KQorCisgICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygnY3JlYXRlZCAlcycsIGRlc3Qp
CisgICAgICAgICAgICBvcy5saW5rKHNyYywgZGVzdCkKKworICAgICAgICBkZWYgY29weV9hbGxf
ZmlsZXNfaW5fZGlyZWN0b3J5KHNyYywgZGVzdCk6CisgICAgICAgICAgICBmb3IgcGF0aCBpbiBv
cy5saXN0ZGlyKHNyYyk6CisgICAgICAgICAgICAgICAgY29weV9maWxlX3JlcGxhY2luZ19leGlz
dGluZyhvcy5wYXRoLmpvaW4oc3JjLCBwYXRoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihkZXN0LCBwYXRoKSkKKworICAgICAgICBz
ZWxmLmxvZ2dlci5pbmZvKCdDb3B5aW5nIHRlbXBsYXRlIGZpbGVzIHRvIG91dHB1dCBkaXJlY3Rv
cnkuLi4nKQorICAgICAgICBzZWxmLl9jcmVhdGVfZGlyZWN0b3J5X2lmX25vbmV4aXN0ZW50KHNl
bGYub3V0cHV0X2RpcikKKyAgICAgICAgY29weV9hbGxfZmlsZXNfaW5fZGlyZWN0b3J5KHNlbGYu
ZG9jX2Rpciwgc2VsZi5vdXRwdXRfZGlyKQorCisgICAgICAgIGlmIG5vdCBodG1sOgorICAgICAg
ICAgICAgcmV0dXJuCisKKyAgICAgICAgc2VsZi5sb2dnZXIuaW5mbygnQ29weWluZyBIVE1MIGZp
bGVzIHRvIG91dHB1dCBkaXJlY3RvcnkuLi4nKQorICAgICAgICBodG1sX3NyY19kaXIgPSBvcy5w
YXRoLmpvaW4oc2VsZi5kb2NfZGlyLCAnaHRtbCcpCisgICAgICAgIGh0bWxfZGVzdF9kaXIgPSBv
cy5wYXRoLmpvaW4oc2VsZi5vdXRwdXRfZGlyLCAnaHRtbCcpCisgICAgICAgIHNlbGYuX2NyZWF0
ZV9kaXJlY3RvcnlfaWZfbm9uZXhpc3RlbnQoaHRtbF9kZXN0X2RpcikKKworICAgICAgICBpZiBv
cy5wYXRoLmV4aXN0cyhodG1sX3NyY19kaXIpOgorICAgICAgICAgICAgY29weV9hbGxfZmlsZXNf
aW5fZGlyZWN0b3J5KGh0bWxfc3JjX2RpciwgaHRtbF9kZXN0X2RpcikKKworICAgIGRlZiBfd3Jp
dGVfdmVyc2lvbl94bWwoc2VsZik6CisgICAgICAgIGlmIG5vdCBzZWxmLnZlcnNpb246CisgICAg
ICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCdObyB2ZXJzaW9uIHNwZWNpZmllZCwgc28gbm90IHdy
aXRpbmcgdmVyc2lvbi54bWwnKQorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgdmVyc2lv
bl94bWxfcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLm91dHB1dF9kaXIsICd2ZXJzaW9uLnhtbCcp
CisgICAgICAgIHNyY192ZXJzaW9uX3htbF9wYXRoID0gb3MucGF0aC5qb2luKHNlbGYuZG9jX2Rp
ciwgJ3ZlcnNpb24ueG1sJykKKworICAgICAgICAjIERvbid0IG92ZXJ3cml0ZSB2ZXJzaW9uLnht
bCBpZiBpdCB3YXMgaW4gdGhlIGRvYyBkaXJlY3RvcnkuCisgICAgICAgIGlmIG9zLnBhdGguZXhp
c3RzKHZlcnNpb25feG1sX3BhdGgpIGFuZCBcCisgICAgICAgICAgIG9zLnBhdGguZXhpc3RzKHNy
Y192ZXJzaW9uX3htbF9wYXRoKToKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIG91dHB1
dF9maWxlID0gb3Blbih2ZXJzaW9uX3htbF9wYXRoLCAndycpCisgICAgICAgIG91dHB1dF9maWxl
LndyaXRlKHNlbGYudmVyc2lvbikKKyAgICAgICAgb3V0cHV0X2ZpbGUuY2xvc2UoKQorCisgICAg
ZGVmIF9ydW5fZ3RrZG9jX3NjYW4oc2VsZik6CisgICAgICAgIGFyZ3MgPSBbJ2d0a2RvYy1zY2Fu
JywKKyAgICAgICAgICAgICAgICAnLS1tb2R1bGU9JXMnICUgc2VsZi5tb2R1bGVfbmFtZSwKKyAg
ICAgICAgICAgICAgICAnLS1yZWJ1aWxkLXR5cGVzJ10KKworICAgICAgICAjIEVhY2ggc291cmNl
IGRpcmVjdG9yeSBzaG91bGQgYmUgaGF2ZSBpdHMgb3duICItLXNvdXJjZS1kaXI9IiBwcmVmaXgu
CisgICAgICAgIGFyZ3MuZXh0ZW5kKFsnLS1zb3VyY2UtZGlyPSVzJyAlIHBhdGggZm9yIHBhdGgg
aW4gc2VsZi5zb3VyY2VfZGlyc10pCisKKyAgICAgICAgaWYgc2VsZi5kZWNvcmF0b3I6CisgICAg
ICAgICAgICBhcmdzLmFwcGVuZCgnLS1pZ25vcmUtZGVjb3JhdG9ycz0lcycgJSBzZWxmLmRlY29y
YXRvcikKKyAgICAgICAgaWYgc2VsZi5kZXByZWNhdGlvbl9ndWFyZDoKKyAgICAgICAgICAgIGFy
Z3MuYXBwZW5kKCctLWRlcHJlY2F0ZWQtZ3VhcmRzPSVzJyAlIHNlbGYuZGVwcmVjYXRpb25fZ3Vh
cmQpCisgICAgICAgIGlmIHNlbGYub3V0cHV0X2RpcjoKKyAgICAgICAgICAgIGFyZ3MuYXBwZW5k
KCctLW91dHB1dC1kaXI9JXMnICUgc2VsZi5vdXRwdXRfZGlyKQorCisgICAgICAgICMgZ3RrZG9j
LXNjYW4gd2FudHMgdGhlIGJhc2VuYW1lcyBvZiBpZ25vcmVkIGhlYWRlcnMsIHNvIHN0cmlwIHRo
ZQorICAgICAgICAjIGRpcm5hbWUuIERpZmZlcmVudCBmcm9tICItLXNvdXJjZS1kaXIiLCB0aGUg
aGVhZGVycyBzaG91bGQgYmUKKyAgICAgICAgIyBzcGVjaWZpZWQgYXMgb25lIGxvbmcgc3RyaW5n
LgorICAgICAgICBpZiBzZWxmLmlnbm9yZWRfZmlsZXM6CisgICAgICAgICAgICBpZ25vcmVkX2Zp
bGVzX2Jhc2VuYW1lcyA9IFwKKyAgICAgICAgICAgICAgICBbb3MucGF0aC5iYXNlbmFtZSh4KSBm
b3IgeCBpbiBzZWxmLmlnbm9yZWRfZmlsZXNdCisgICAgICAgICAgICBhcmdzLmFwcGVuZCgnLS1p
Z25vcmUtaGVhZGVycz0lcycgJSAnICcuam9pbihpZ25vcmVkX2ZpbGVzX2Jhc2VuYW1lcykpCisK
KyAgICAgICAgc2VsZi5fcnVuX2NvbW1hbmQoYXJncykKKworICAgIGRlZiBfcnVuX2d0a2RvY19z
Y2FuZ29iaihzZWxmKToKKyAgICAgICAgZW52ID0gb3MuZW52aXJvbgorICAgICAgICBsZGZsYWdz
ID0gc2VsZi5sZGZsYWdzCisgICAgICAgIGlmIHNlbGYubGlicmFyeV9wYXRoOgorICAgICAgICAg
ICAgbGRmbGFncyA9ICcgIi1MJXMiICcgJSBzZWxmLmxpYnJhcnlfcGF0aCArIGxkZmxhZ3MKKyAg
ICAgICAgICAgIGN1cnJlbnRfbGRfbGlicmFyeV9wYXRoID0gZW52LmdldCgnTERfTElCUkFSWV9Q
QVRIJykKKyAgICAgICAgICAgIGlmIGN1cnJlbnRfbGRfbGlicmFyeV9wYXRoOgorICAgICAgICAg
ICAgICAgIGVudlsnUlVOJ10gPSAnTERfTElCUkFSWV9QQVRIPSIlczolcyIgJyAlIChzZWxmLmxp
YnJhcnlfcGF0aCwgY3VycmVudF9sZF9saWJyYXJ5X3BhdGgpCisgICAgICAgICAgICBlbHNlOgor
ICAgICAgICAgICAgICAgIGVudlsnUlVOJ10gPSAnTERfTElCUkFSWV9QQVRIPSIlcyIgJyAlIHNl
bGYubGlicmFyeV9wYXRoCisKKyAgICAgICAgaWYgbGRmbGFnczoKKyAgICAgICAgICAgIGVudlsn
TERGTEFHUyddID0gbGRmbGFncworICAgICAgICBpZiBzZWxmLmNmbGFnczoKKyAgICAgICAgICAg
IGVudlsnQ0ZMQUdTJ10gPSBzZWxmLmNmbGFncworCisgICAgICAgIGlmICdDRkxBR1MnIGluIGVu
djoKKyAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCdDRkxBR1M9JXMnLCBlbnZbJ0NGTEFH
UyddKQorICAgICAgICBpZiAnTERGTEFHUycgaW4gZW52OgorICAgICAgICAgICAgc2VsZi5sb2dn
ZXIuZGVidWcoJ0xERkxBR1MgJXMnLCBlbnZbJ0xERkxBR1MnXSkKKyAgICAgICAgaWYgJ1JVTicg
aW4gZW52OgorICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoJ1JVTj0lcycsIGVudlsnUlVO
J10pCisgICAgICAgIHNlbGYuX3J1bl9jb21tYW5kKFsnZ3RrZG9jLXNjYW5nb2JqJywgJy0tbW9k
dWxlPSVzJyAlIHNlbGYubW9kdWxlX25hbWVdLAorICAgICAgICAgICAgICAgICAgICAgICAgICBl
bnY9ZW52LCBjd2Q9c2VsZi5vdXRwdXRfZGlyKQorCisgICAgZGVmIF9ydW5fZ3RrZG9jX21rdG1w
bChzZWxmKToKKyAgICAgICAgYXJncyA9IFsnZ3RrZG9jLW1rdG1wbCcsICctLW1vZHVsZT0lcycg
JSBzZWxmLm1vZHVsZV9uYW1lXQorICAgICAgICBzZWxmLl9ydW5fY29tbWFuZChhcmdzLCBjd2Q9
c2VsZi5vdXRwdXRfZGlyKQorCisgICAgZGVmIF9ydW5fZ3RrZG9jX21rZGIoc2VsZik6CisgICAg
ICAgIHNnbWxfZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLm91dHB1dF9kaXIsIHNlbGYubWFpbl9z
Z21sX2ZpbGUpCisgICAgICAgIHNlbGYuX3JhaXNlX2V4Y2VwdGlvbl9pZl9maWxlX2luYWNjZXNz
aWJsZShzZ21sX2ZpbGUpCisKKyAgICAgICAgYXJncyA9IFsnZ3RrZG9jLW1rZGInLAorICAgICAg
ICAgICAgICAgICctLW1vZHVsZT0lcycgJSBzZWxmLm1vZHVsZV9uYW1lLAorICAgICAgICAgICAg
ICAgICctLW1haW4tc2dtbC1maWxlPSVzJyAlIHNnbWxfZmlsZSwKKyAgICAgICAgICAgICAgICAn
LS1zb3VyY2Utc3VmZml4ZXM9aCxjLGNwcCxjYycsCisgICAgICAgICAgICAgICAgJy0tb3V0cHV0
LWZvcm1hdD14bWwnLAorICAgICAgICAgICAgICAgICctLXNnbWwtbW9kZSddCisKKyAgICAgICAg
IyBFYWNoIGRpcmVjdG9yeSBzaG91bGQgYmUgaGF2ZSBpdHMgb3duICItLXNvdXJjZS1kaXI9IiBw
cmVmaXguCisgICAgICAgIGFyZ3MuZXh0ZW5kKFsnLS1zb3VyY2UtZGlyPSVzJyAlIHBhdGggZm9y
IHBhdGggaW4gc2VsZi5zb3VyY2VfZGlyc10pCisgICAgICAgIHNlbGYuX3J1bl9jb21tYW5kKGFy
Z3MsIGN3ZD1zZWxmLm91dHB1dF9kaXIpCisKKyAgICBkZWYgX3J1bl9ndGtkb2NfbWtodG1sKHNl
bGYpOgorICAgICAgICBodG1sX2Rlc3RfZGlyID0gb3MucGF0aC5qb2luKHNlbGYub3V0cHV0X2Rp
ciwgJ2h0bWwnKQorICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2RpcihodG1sX2Rlc3RfZGlyKToK
KyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiJXMgaXMgbm90IGEgZGlyZWN0b3J5LCBjb3Vs
ZCBub3QgZ2VuZXJhdGUgSFRNTCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIGh0bWxf
ZGVzdF9kaXIpCisgICAgICAgIGVsaWYgbm90IG9zLmFjY2VzcyhodG1sX2Rlc3RfZGlyLCBvcy5Y
X09LIHwgb3MuUl9PSyB8IG9zLldfT0spOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJD
b3VsZCBub3QgYWNjZXNzICVzIHRvIGdlbmVyYXRlIEhUTUwiCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJSBodG1sX2Rlc3RfZGlyKQorCisgICAgICAgICMgZ3RrZG9jLW1raHRtbCBleHBl
Y3RzIHRoZSBTR01MIHBhdGggdG8gYmUgYWJzb2x1dGUuCisgICAgICAgIHNnbWxfZmlsZSA9IG9z
LnBhdGguam9pbihvcy5wYXRoLmFic3BhdGgoc2VsZi5vdXRwdXRfZGlyKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWFpbl9zZ21sX2ZpbGUpCisgICAgICAgIHNlbGYu
X3JhaXNlX2V4Y2VwdGlvbl9pZl9maWxlX2luYWNjZXNzaWJsZShzZ21sX2ZpbGUpCisKKyAgICAg
ICAgc2VsZi5fcnVuX2NvbW1hbmQoWydndGtkb2MtbWtodG1sJywgc2VsZi5tb2R1bGVfbmFtZSwg
c2dtbF9maWxlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY3dkPWh0bWxfZGVzdF9kaXIp
CisKKyAgICBkZWYgX3J1bl9ndGtkb2NfZml4eHJlZihzZWxmKToKKyAgICAgICAgc2VsZi5fcnVu
X2NvbW1hbmQoWydndGtkb2MtZml4eHJlZicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAn
LS1tb2R1bGUtZGlyPWh0bWwnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0taHRtbC1k
aXI9aHRtbCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjd2Q9c2VsZi5vdXRwdXRfZGly
LAorICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmVfd2FybmluZ3M9VHJ1ZSkKKworCitj
bGFzcyBQa2dDb25maWdHVEtEb2MoR1RLRG9jKToKKworICAgICIiIkNsYXNzIHJlYWRzIGEgbGli
cmFyeSdzIHBrZ2NvbmZpZyBmaWxlIHRvIGd1ZXNzIGd0a2RvYyBwYXJhbWV0ZXJzLgorCisgICAg
U29tZSBndGtkb2MgcGFyYW1ldGVycyBjYW4gYmUgZ3Vlc3NlZCBieSByZWFkaW5nIGEgbGlicmFy
eSdzIHBrZ2NvbmZpZworICAgIGZpbGUsIGluY2x1ZGluZyB0aGUgY2ZsYWdzLCBsZGZsYWdzIGFu
ZCB2ZXJzaW9uIHBhcmFtZXRlcnMuIElmIHlvdQorICAgIHByb3ZpZGUgdGhlc2UgcGFyYW1ldGVy
cyBhcyB3ZWxsLCB0aGV5IHdpbGwgYmUgYXBwZW5kZWQgdG8gdGhlIG9uZXMKKyAgICBndWVzc2Vk
IHZpYSB0aGUgcGtnY29uZmlnIGZpbGUuCisKKyAgICBLZXl3b3JkIGFyZ3VtZW50czoKKyAgICAg
IHBrZ19jb25maWdfcGF0aCAtLSBQYXRoIHRvIHRoZSBwa2djb25maWcgZmlsZSBmb3IgdGhlIGxp
YnJhcnkuIFJlcXVpcmVkLgorICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBrZ19j
b25maWdfcGF0aCwgKiphcmdzKToKKyAgICAgICAgc3VwZXIoUGtnQ29uZmlnR1RLRG9jLCBzZWxm
KS5fX2luaXRfXygqKmFyZ3MpCisKKyAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHBrZ19j
b25maWdfcGF0aCk6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0NvdWxkIG5vdCBmaW5k
IHBrZy1jb25maWcgZmlsZSBhdDogJXMnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSBw
a2dfY29uZmlnX3BhdGgpCisKKyAgICAgICAgc2VsZi5jZmxhZ3MgKz0gIiAiICsgc2VsZi5fcnVu
X2NvbW1hbmQoWydwa2ctY29uZmlnJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHBrZ19jb25maWdfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICctLWNmbGFncyddLCBwcmludF9vdXRwdXQ9RmFsc2Up
CisgICAgICAgIHNlbGYubGRmbGFncyArPSAiICIgKyBzZWxmLl9ydW5fY29tbWFuZChbJ3BrZy1j
b25maWcnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cGtnX2NvbmZpZ19wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJy0tbGlicyddLCBwcmludF9vdXRwdXQ9RmFsc2UpCisgICAgICAgIHNlbGYudmVy
c2lvbiA9IHNlbGYuX3J1bl9jb21tYW5kKFsncGtnLWNvbmZpZycsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwa2dfY29uZmlnX3BhdGgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1tb2R2ZXJzaW9uJ10sIHByaW50X291dHB1
dD1GYWxzZSkKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA3ZGY1OWQx
MGYzZjllOTRhZWRjYTg5YjQ5MjI2YTUyYmZlZTU3MmM1Li40Y2Y5YzI5ZTgxZDdlM2I4NTE3MjMx
NTI4ODE1MTU3MDhjMzQ4NzIzIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMTEtMTcgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNv
bkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIEludGVncmF0ZSBidWlsZC1ndGtkb2MgaW50
byBidWlsZC13ZWJraXQgYW5kIG1ha2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTcyNjI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbTogUmVtb3ZlIHJlZmVyZW5jZXMgdG8gb2xk
IGd0a2RvYyBmaWxlcy4gVXBkYXRlCisgICAgICAgIHRoZSBkaXN0LWhvb2sgdG8gaW5jbHVkZSBj
b3B5aW5nIGRvY3VtZW50YXRpb24gaW50byB0aGUgZGlzdHJpYnV0aW9uLgorICAgICAgICBUaGlz
IGFsc28gbWVhbnMgdGhhdCB0aGUgYnVpbGQgd2lsbCBmYWlsIGlmIGRvY3VtZW50YXRpb24gaGFz
bid0IGJlZW4KKyAgICAgICAgZ2VuZXJhdGVkIGJlZm9yZSAnbWFrZSBkaXN0LicKKyAgICAgICAg
KiBjb25maWd1cmUuYWM6IERpdHRvLgorCiAyMDExLTExLTIzICBSYXBoYWVsIEt1Ym8gZGEgQ29z
dGEgIDxrdWJvQHByb2Z1c2lvbi5tb2JpPgogCiAgICAgICAgIFtDTWFrZV0gTW92ZSB0aGUgdG9w
LWxldmVsIGxvZ2ljIHRvIHRoZSB0b3AtbGV2ZWwgZGlyZWN0b3J5LgpkaWZmIC0tZ2l0IGEvR05V
bWFrZWZpbGUuYW0gYi9HTlVtYWtlZmlsZS5hbQppbmRleCBmOTFlODhkODk2YzExNWM0YWEzZDNi
OTdkMWE4ZWQxNjY1NTVjNTk2Li41ZThmODY1NGI4ZjIyNmJlMzhhMDZmYzM2NzVmYWM1NGUwNzE4
ZWM2IDEwMDY0NAotLS0gYS9HTlVtYWtlZmlsZS5hbQorKysgYi9HTlVtYWtlZmlsZS5hbQpAQCAt
MjA3LDcgKzIwNyw2IEBAIGluY2x1ZGUgU291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZpbGUuYW0K
IGluY2x1ZGUgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HTlVtYWtlZmlsZS5hbQog
aW5jbHVkZSBUb29scy9HTlVtYWtlZmlsZS5hbQogaW5jbHVkZSBTb3VyY2UvV2ViS2l0L2d0ay9w
by9HTlVtYWtlZmlsZS5hbQotaW5jbHVkZSBTb3VyY2UvV2ViS2l0L2d0ay9kb2NzL0dOVW1ha2Vm
aWxlLmFtCiBpbmNsdWRlIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9HTlVtYWtlZmlsZS5JbWFn
ZURpZmYuYW0KIAogaWYgRU5BQkxFX1dFQktJVDIKQEAgLTI2NSwzICsyNjQsMTYgQEAgY2xlYW4t
bG9jYWw6CiBtYWludGFpbmVyLWNsZWFuLWxvY2FsOiBkaXN0Y2xlYW4tbG9jYWwKIGRpc3RjbGVh
bi1sb2NhbDoKIAktcm0gLXJmICQoR0VOU09VUkNFUykgJChHRU5QUk9HUkFNUykKKworZGlzdC1o
b29rOgorCWNwICQoV2ViS2l0KS9ORVdTICQoZGlzdGRpcikKKwlAbWtkaXIgLXAgJChkaXN0ZGly
KS9Eb2N1bWVudGF0aW9uL3dlYmtpdGd0ay9odG1sCisJQG1rZGlyIC1wICQoZGlzdGRpcikvRG9j
dW1lbnRhdGlvbi93ZWJraXRndGsvdG1wbAorCUAtY3AgLi9Eb2N1bWVudGF0aW9uL3dlYmtpdGd0
ay90bXBsLyouc2dtbCAkKGRpc3RkaXIpL0RvY3VtZW50YXRpb24vd2Via2l0Z3RrL3RtcGwKKwlA
Y3AgLi9Eb2N1bWVudGF0aW9uL3dlYmtpdGd0ay9odG1sLyogJChkaXN0ZGlyKS9Eb2N1bWVudGF0
aW9uL3dlYmtpdGd0ay9odG1sCitpZiBFTkFCTEVfV0VCS0lUMgorCUBta2RpciAtcCAkKGRpc3Rk
aXIpL0RvY3VtZW50YXRpb24vd2Via2l0Mmd0ay9odG1sCisJQG1rZGlyIC1wICQoZGlzdGRpcikv
RG9jdW1lbnRhdGlvbi93ZWJraXQyZ3RrL3RtcGwKKwlALWNwIC4vRG9jdW1lbnRhdGlvbi93ZWJr
aXQyZ3RrL3RtcGwvKi5zZ21sICQoZGlzdGRpcikvRG9jdW1lbnRhdGlvbi93ZWJraXQyZ3RrL3Rt
cGwKKwlAY3AgLi9Eb2N1bWVudGF0aW9uL3dlYmtpdDJndGsvaHRtbC8qICQoZGlzdGRpcikvRG9j
dW1lbnRhdGlvbi93ZWJraXQyZ3RrL2h0bWwKK2VuZGlmCmRpZmYgLS1naXQgYS9jb25maWd1cmUu
YWMgYi9jb25maWd1cmUuYWMKaW5kZXggZmE4Mzk0YzBkMTg4ZGQxYTgyNWYxM2E0ODY5NDZiM2I3
NWQ2ZmIwZC4uZmNjYzJjMWYyMmQ3NjgxODY4MjE5MGIwZWQ5MmU2ZjEyYjNlNjRlYiAxMDA2NDQK
LS0tIGEvY29uZmlndXJlLmFjCisrKyBiL2NvbmZpZ3VyZS5hYwpAQCAtMTIxMCw3ICsxMjEwLDYg
QEAgR05VbWFrZWZpbGUKIAogQUNfQ09ORklHX0ZJTEVTKFsKIFNvdXJjZS9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXR2ZXJzaW9uLmgKLURvY3VtZW50YXRpb24vdmVyc2lvbi54bWw6U291cmNlL1dl
YktpdC9ndGsvZG9jcy92ZXJzaW9uLnhtbC5pbgogXSkKIAogQUNfQ09ORklHX0ZJTEVTKFsKQEAg
LTEyNDYsNiArMTI0NSw3IEBAIEJ1aWxkIGNvbmZpZ3VyYXRpb246CiAgRm9udCBiYWNrZW5kICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAkd2l0aF9mb250X2Jh
Y2tlbmQKICBPcHRpbWl6ZWQgbWVtb3J5IGFsbG9jYXRvciAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA6ICRlbmFibGVfZmFzdF9tYWxsb2MKICBKYXZhU2NyaXB0IEVuZ2luZSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICR3aXRoX2pzZW5naW5lCisKIEZlYXR1
cmVzOgogIDNEIFJlbmRlcmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDogJGVuYWJsZV8zZF9yZW5kZXJpbmcKICBXZWJHTCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICRlbmFibGVfd2ViZ2wKQEAgLTEzMDUs
NiArMTMwNSw3IEBAIEdUSysgY29uZmlndXJhdGlvbjoKICBHREsgdGFyZ2V0ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICR3aXRoX3RhcmdldAogIEhpbGRv
biBVSSBleHRlbnNpb25zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJHdp
dGhfaGlsZG9uCiAgSW50cm9zcGVjdGlvbiBzdXBwb3J0ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgOiAkZW5hYmxlX2ludHJvc3BlY3Rpb24KKyBHZW5lcmF0ZSBkb2N1bWVudGF0
aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICRlbmFibGVfZ3RrX2RvYwog
IgogaWYgdGVzdCAiJHdpdGhfdW5pY29kZV9iYWNrZW5kIiA9ICJnbGliIjsgdGhlbgogICAgZWNo
byAiICAgICA+PiBXQVJOSU5HOiB0aGUgZ2xpYi1iYXNlZCB1bmljb2RlIGJhY2tlbmQgaXMgc2xv
dyBhbmQgaW5jb21wbGV0ZSA8PCIK
</data>
<flag name="review"
          id="115715"
          type_id="1"
          status="+"
          setter="pnormand"
    />
          </attachment>
      

    </bug>

</bugzilla>