<?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>32592</bug_id>
          
          <creation_ts>2009-12-15 19:44:01 -0800</creation_ts>
          <short_desc>[check-webkit-style] Preparatory code moves to refactor cpp_style.parse_arguments</short_desc>
          <delta_ts>2009-12-27 11:55:52 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P4</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>32966</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Jerdonek">cjerdonek</reporter>
          <assigned_to name="Chris Jerdonek">cjerdonek</assigned_to>
          <cc>cjerdonek</cc>
    
    <cc>dbates</cc>
    
    <cc>eric</cc>
    
    <cc>hamaji</cc>
    
    <cc>hamaji</cc>
    
    <cc>levin</cc>
    
    <cc>tkent</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>172147</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2009-12-15 19:44:01 -0800</bug_when>
    <thetext>The function cpp_style.parse_arguments currently has side effects of setting global variables (and also writing to sys.stderr).

Refactor parse_arguments so this doesn&apos;t happen.  This will make unit testing easier and also make it more transparent when called from check-webkit-style.

I am working on this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173496</commentid>
    <comment_count>1</comment_count>
      <attachid>45227</attachid>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2009-12-19 00:45:11 -0800</bug_when>
    <thetext>Created attachment 45227
Proposed patch

Let me know if you want me to split this into two patches.

It looks longer than it really is because of some large deletes.

In any case, I just want to get it out there so you can see it in one piece.  Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173796</commentid>
    <comment_count>2</comment_count>
      <attachid>45290</attachid>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2009-12-20 12:57:37 -0800</bug_when>
    <thetext>Created attachment 45290
Proposed patch 2

Brought up to date.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173872</commentid>
    <comment_count>3</comment_count>
      <attachid>45290</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2009-12-20 22:39:00 -0800</bug_when>
    <thetext>Comment on attachment 45290
Proposed patch 2

&gt; Let me know if you want me to split this into two patches.
&gt;
&gt; It looks longer than it really is because of some large deletes.

Yeah, I think it would be better to split this patch. I&apos;d suggest moving code chunk first, then refactoring.

&gt; @@ -360,15 +310,15 @@ class _CppStyleState(object):
&gt;      &quot;&quot;&quot;Maintains module-wide state..&quot;&quot;&quot;
&gt;  
&gt;      def __init__(self):
&gt; -        self.verbose_level = _DEFAULT_VERBOSITY  # global setting.
&gt; +        self.verbose_level = 1  # global setting.
&gt;          self.error_count = 0    # global count of reported errors
&gt;          # filters to apply when emitting error messages
&gt; -        self.filters = _DEFAULT_FILTER_RULES[:]
&gt; +        self.filters = []
&gt;  
&gt;          # output format:
&gt;          # &quot;emacs&quot; - format that emacs can parse (default)
&gt;          # &quot;vs7&quot; - format that Microsoft Visual Studio 7 can parse
&gt; -        self.output_format = _DEFAULT_OUTPUT_FORMAT
&gt; +        self.output_format = &apos;emacs&apos;
&gt;  
&gt;      def set_output_format(self, output_format):
&gt;          &quot;&quot;&quot;Sets the output format for errors.&quot;&quot;&quot;

I&apos;m not sure, but the default value of verbose_level, filters, and output_format must be always overwritten? If so, None would be better as the initial value? If you are planning to remove _CppStyleState, it&apos;s OK as is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173885</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2009-12-20 23:08:29 -0800</bug_when>
    <thetext>(In reply to comment #3)

&gt; Yeah, I think it would be better to split this patch. I&apos;d suggest moving code
&gt; chunk first, then refactoring.

Thanks for the comments, Shinichiro.  Sure, I&apos;ll go ahead and do that.

&gt; &gt; @@ -360,15 +310,15 @@ class _CppStyleState(object):
&gt; &gt; -        self.filters = _DEFAULT_FILTER_RULES[:]
&gt; &gt; +        self.filters = []
&gt; I&apos;m not sure, but the default value of verbose_level, filters, and
&gt; output_format must be always overwritten? If so, None would be better as the
&gt; initial value? If you are planning to remove _CppStyleState, it&apos;s OK as is.

Yes, I was planning to remove those properties in a future patch.  I just didn&apos;t want it to look like the global variables were playing a role there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173915</commentid>
    <comment_count>5</comment_count>
      <attachid>45313</attachid>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2009-12-21 01:05:02 -0800</bug_when>
    <thetext>Created attachment 45313
Proposed patch 3 (dividing earlier patch into two)

Dividing into two patches as Shinichiro requested.  This patch has all of the moves with the minimum changes needed for things to work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173924</commentid>
    <comment_count>6</comment_count>
      <attachid>45317</attachid>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2009-12-21 01:40:27 -0800</bug_when>
    <thetext>Created attachment 45317
Proposed patch 4

I noticed that the defaults were not getting set after the code move, so I changed two lines of style.parse_arguments() to this:

    verbosity = _DEFAULT_VERBOSITY
    output_format = _DEFAULT_OUTPUT_FORMAT

I&apos;m not sure how much this matters since it will be refactored away momentarily.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173926</commentid>
    <comment_count>7</comment_count>
      <attachid>45313</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2009-12-21 01:43:22 -0800</bug_when>
    <thetext>Comment on attachment 45313
Proposed patch 3 (dividing earlier patch into two)

Thanks for splitting the patch! Looks good assuming this patch is basically moving code.

&gt; @@ -48,117 +47,9 @@ import sys
&gt;  import unicodedata
&gt;  
&gt;  
&gt; -# This is set by check-webkit-style.
&gt;  _USAGE = &apos;&apos;

We don&apos;t need this in cpp_style anymore?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173928</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2009-12-21 01:52:21 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 45313 [details])
&gt; Thanks for splitting the patch! Looks good assuming this patch is basically
&gt; moving code.

Yeah, pretty much.  The only changes within moves were selectively changing some &quot;cpp_style.&quot; prefixes to &quot;style.&quot; or &quot;&quot;.

&gt; &gt;  _USAGE = &apos;&apos;
&gt; We don&apos;t need this in cpp_style anymore?

You&apos;re right -- we don&apos;t.  I can get rid of it in part two if that&apos;s okay.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174441</commentid>
    <comment_count>9</comment_count>
      <attachid>45313</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-12-22 15:24:56 -0800</bug_when>
    <thetext>Comment on attachment 45313
Proposed patch 3 (dividing earlier patch into two)

It appears that patch 4 replaces this one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174460</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2009-12-22 16:21:26 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 45313 [details])
&gt; It appears that patch 4 replaces this one.

Thanks, David.  Does Bugzilla allow us to &quot;obsolete&quot; a patch without attaching a new one?  I couldn&apos;t find where to do this in the UI after forgetting to check the obsolete box.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174463</commentid>
    <comment_count>11</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-12-22 16:24:03 -0800</bug_when>
    <thetext>You can click on the &quot;details&quot; for a patch to obsolete it.

If you have lots of patches to obsolete, then &quot;bugzilla-tool obsolete-attachments BUGNUM&quot; will obsolete all attachments on a bug for you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174466</commentid>
    <comment_count>12</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-12-22 16:26:28 -0800</bug_when>
    <thetext>Eric said it. I should finish one this sometime today.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174645</commentid>
    <comment_count>13</comment_count>
      <attachid>45317</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-12-23 13:08:24 -0800</bug_when>
    <thetext>Comment on attachment 45317
Proposed patch 4

&gt; Index: ChangeLog

WebKitTools/ChangeLog....
This isn&apos;t going to land easily (using cq+) since the patch isn&apos;t rooted at WebKit.


&gt; Index: Scripts/modules/cpp_style.py
&gt; -# This is set by check-webkit-style.
&gt;  _USAGE = &apos;&apos;

Is this _USAGE still needed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174715</commentid>
    <comment_count>14</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2009-12-23 19:31:01 -0800</bug_when>
    <thetext>(In reply to comment #13)

Thanks for the review, David.

&gt; &gt; Index: Scripts/modules/cpp_style.py
&gt; &gt; -# This is set by check-webkit-style.
&gt; &gt;  _USAGE = &apos;&apos;
&gt; 
&gt; Is this _USAGE still needed?

No, I will remove it in the second patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174726</commentid>
    <comment_count>15</comment_count>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2009-12-23 21:31:47 -0800</bug_when>
    <thetext>Committed r52541: &lt;http://trac.webkit.org/changeset/52541&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174730</commentid>
    <comment_count>16</comment_count>
      <attachid>45317</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2009-12-23 21:46:14 -0800</bug_when>
    <thetext>Comment on attachment 45317
Proposed patch 4

It seems the ChangeLog had two issues:

- It didn&apos;t have &quot;Reviewed by NOBODY (OOPS!)&quot;. Please consider using prepare-ChangeLog to add a ChangeLog entry.
- It had only two lines of context and patch command was confused. Normally, it should have 3 lines in the context. This also happened when I landed another patch you posted. I&apos;m not sure why this happened.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174748</commentid>
    <comment_count>17</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2009-12-24 01:31:18 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 45317 [details])
&gt; It seems the ChangeLog had two issues:

Thank you for landing this patch, Shinichiro, and for correcting and reporting on the ChangeLog issues.

I do use prepare-Changelog.  I must have overwritten the &quot;Reviewed by&quot; line by accident.  I will be more attentive to that in the future.

I don&apos;t know why the context has only two lines at the end of that portion.  I tried re-running svn-create-patch and verified that it has only two lines.  In contrast, running &quot;svn diff&quot; does generate three lines of context at the end.  I will investigate further for a possible cause and, if necessary, file a bug report.  Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174783</commentid>
    <comment_count>18</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2009-12-24 09:47:25 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; I will investigate further for a possible cause and, if necessary, file a bug
&gt; report.  Thanks.

I created a bug report for this issue here:

https://bugs.webkit.org/show_bug.cgi?id=32919</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174986</commentid>
    <comment_count>19</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2009-12-26 21:23:00 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; Committed r52541: &lt;http://trac.webkit.org/changeset/52541&gt;

It looks like the commit did not include the following new file in the patch: Scripts/modules/style_unittest.py.  Also, the run-webkit-unittests scripts can&apos;t execute without this file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175072</commentid>
    <comment_count>20</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-12-27 11:29:31 -0800</bug_when>
    <thetext>Added missing file style_unittest.py and committed in &lt;http://trac.webkit.org/changeset/52583&gt;. Without this file, run-webkit-unittests died with the following error:

Traceback (most recent call last):
  File &quot;WebKitTools/Scripts/run-webkit-unittests&quot;, line 49, in &lt;module&gt;
    from modules.style_unittest import *
ImportError: No module named style_unittest


(In reply to comment #19)
&gt; (In reply to comment #15)
&gt; &gt; Committed r52541: &lt;http://trac.webkit.org/changeset/52541&gt;
&gt; 
&gt; It looks like the commit did not include the following new file in the patch:
&gt; Scripts/modules/style_unittest.py.  Also, the run-webkit-unittests scripts
&gt; can&apos;t execute without this file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175074</commentid>
    <comment_count>21</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2009-12-27 11:55:52 -0800</bug_when>
    <thetext>Moving part 2 to here:

https://bugs.webkit.org/show_bug.cgi?id=32966</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45227</attachid>
            <date>2009-12-19 00:45:11 -0800</date>
            <delta_ts>2009-12-20 12:57:37 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>patch-tools5-1.txt</filename>
            <type>text/plain</type>
            <size>47928</size>
            <attacher name="Chris Jerdonek">cjerdonek</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDUyMzgx
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjIgQEAKKzIwMDktMTIt
MTkgIENocmlzIEplcmRvbmVrICA8Y2hyaXMuamVyZG9uZWtAZ21haWwuY29tPgorCisgICAgICAg
IFJlZmFjdG9yZWQgY2hlY2std2Via2l0LXN0eWxlJ3MgYXJndW1lbnQgcGFyc2VyIHRvIG5vdCBy
ZWx5CisgICAgICAgIG9uIGdsb2JhbCBzdGF0ZSwgbW92ZWQgaXQgZnJvbSBjcHBfc3R5bGUucHkg
dG8gc3R5bGUucHkgcGVyIGEKKyAgICAgICAgRklYTUUsIGFuZCBpbXByb3ZlZCBpdHMgZXJyb3Ig
aGFuZGxpbmcgYW5kIHVuaXQgdGVzdCBjb3ZlcmFnZS4KKworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzI1OTIKKworICAgICAgICAqIFNjcmlwdHMvY2hl
Y2std2Via2l0LXN0eWxlOgorICAgICAgICAgIC0gQWRkcmVzc2VkIEZJWE1FIHRvIGVsaW1pbmF0
ZSBjaGVjay13ZWJraXQtc3R5bGUncyBkZXBlbmRlbmN5CisgICAgICAgICAgICBvbiBjcHBfc3R5
bGUuCisgICAgICAgICAgLSBNb3ZlZCBfVVNBR0Ugc3RyaW5nIHRvIHN0eWxlLnB5LgorICAgICAg
ICAgIC0gTW92ZWQgcGFyc2luZyBvZiAiZ2l0LWNvbW1pdCIgZmxhZyB0byBuZXcgcGFyc2VyLgor
CisgICAgICAgICogU2NyaXB0cy9tb2R1bGVzL2NwcF9zdHlsZS5weToKKyAgICAgICAgICAtIEVs
aW1pbmF0ZWQgY3BwX3N0eWxlLl9VU0FHRSB2YXJpYWJsZS4KKyAgICAgICAgICAtIE1vdmVkIGRl
ZmF1bHQgc2NyaXB0IGFyZ3VtZW50cyB0byBzdHlsZS5weS4KKyAgICAgICAgICAtIEVsaW1pbmF0
ZWQgX0RFRkFVTFRfRklMVEVSX1JVTEVTIGdsb2JhbCBzdGF0ZSB2YXJpYWJsZS4KKyAgICAgICAg
ICAtIENoYW5nZWQgX0NwcFN0eWxlU3RhdGUgdG8gYWNjZXB0IGFuIGFycmF5IG9mIGZpbHRlciBy
dWxlcworICAgICAgICAgICAgaW5zdGVhZCBvZiBhIGNvbW1hLWRlbGltaXRlZCBzdHJpbmcuCisg
ICAgICAgICAgLSBSZWZhY3RvcmVkIGFuZCBtb3ZlZCBleGl0X3dpdGhfdXNhZ2UoKSwgZXhpdF93
aXRoX2NhdGVnb3JpZXMoKSwKKyAgICAgICAgICAgIGFuZCBwYXJzZV9hcmd1bWVudHMoKSB0byBz
dHlsZS5weS4KKworICAgICAgICAqIFNjcmlwdHMvbW9kdWxlcy9jcHBfc3R5bGVfdW5pdHRlc3Qu
cHk6CisgICAgICAgICAgLSBEZWxldGVkIGNwcF9zdHlsZS50ZXN0X3BhcnNlX2FyZ3VtZW50cygp
IHVuaXQgdGVzdHMgYW5kCisgICAgICAgICAgICByZXdyb3RlIHRoZW0gaW4gc3R5bGVfdW5pdHRl
c3QucHkuCisgICAgICAgICAgLSBVcGRhdGVkIHRlc3RfZmlsdGVyKCkgYW5kIHRlc3RfZGVmYXVs
dF9maWx0ZXIoKS4KKworICAgICAgICAqIFNjcmlwdHMvbW9kdWxlcy9zdHlsZS5weToKKyAgICAg
ICAgICAtIEFkZGVkIHNjcmlwdCBkZWZhdWx0cyBmcm9tIGNwcF9zdHlsZS5weS4KKyAgICAgICAg
ICAtIEFkZGVkIGNyZWF0ZV91c2FnZSgpIHRvIHJlcGxhY2UgY3BwX3N0eWxlLl9VU0FHRSB2YXJp
YWJsZS4KKyAgICAgICAgICAtIENvcnJlY3RlZCB1c2FnZSBpbnN0cnVjdGlvbnMgYnkgcmVtb3Zp
bmcgMCBhcyBhIHZhbGlkCisgICAgICAgICAgICAtLXZlcmJvc2UgZmxhZyB2YWx1ZS4KKyAgICAg
ICAgICAtIEFkZGVkIFByb2Nlc3Nvck9wdGlvbnMgY2xhc3MgdG8gc3RvcmUgcmVzdWx0IG9mIGFy
Z3VtZW50CisgICAgICAgICAgICBwYXJzaW5nLgorICAgICAgICAgIC0gUmVtb3ZlZCB1c2Vfd2Vi
a2l0X3N0eWxlcygpIGZ1bmN0aW9uLgorICAgICAgICAgIC0gQWRkZWQgQXJndW1lbnREZWZhdWx0
cyBjbGFzcyB0byBlbmNhcHN1bGF0ZSBzY3JpcHQgZGVmYXVsdHMuCisgICAgICAgICAgLSBBZGRl
ZCBBcmd1bWVudFByaW50ZXIgY2xhc3MgdG8gY29udmVydCBQcm9jZXNzT3B0aW9ucyB0bworICAg
ICAgICAgICAgYSBzdHJpbmcgb2YgZmxhZyB2YWx1ZXMuCisgICAgICAgICAgLSBBZGRlZCBBcmd1
bWVudFBhcnNlciB0byBydW4gbmV3IHBhcnNlIGFyZ3VtZW50cyBmdW5jdGlvbi4KKyAgICAgICAg
ICAtIEFkZGVkIGV4aXRfd2l0aF91c2FnZSgpIGFuZCBleGl0X3dpdGhfY2F0ZWdvcmllcygpIGZ1
bmN0aW9ucworICAgICAgICAgICAgZnJvbSBjcHBfc3R5bGUgdG8gQXJndW1lbnRQYXJzZXIuCisg
ICAgICAgICAgLSBSZWZhY3RvcmVkIGNwcF9zdHlsZS5wYXJzZV9hcmd1bWVudHMoKSBhbmQgYWRk
ZWQgaXQgdG8KKyAgICAgICAgICAgIEFyZ3VtZW50UGFyc2VyIGFzIHBhcnNlKCkuCisgICAgICAg
ICAgLSBOZXcgcGFyc2UoKSBpbmNsdWRlcyBpbXByb3ZlZCBlcnJvciBoYW5kbGluZy4KKyAgICAg
ICAgICAKKyAgICAgICAgKiBTY3JpcHRzL21vZHVsZXMvc3R5bGVfdW5pdHRlc3QucHk6IEFkZGVk
LgorICAgICAgICAgIC0gQWRkZWQgRGVmYXVsdEFyZ3VtZW50c1Rlc3QgY2xhc3MgdG8gY2hlY2sg
dmFsaWRpdHkgb2YKKyAgICAgICAgICAgIGNoZWNrLXdlYmtpdC1zdHlsZSBkZWZhdWx0IGFyZ3Vt
ZW50IHZhbHVlcy4KKyAgICAgICAgICAtIEFkZHJlc3NlZCBGSVhNRSB0byBjaGVjayB0aGUgZGVm
YXVsdCB3ZWJraXQgZmlsdGVyIHJ1bGVzCisgICAgICAgICAgICBhZ2FpbnN0IHRoZSBsaXN0IG9m
IGF2YWlsYWJsZSBzdHlsZSBjYXRlZ29yaWVzLgorICAgICAgICAgIC0gQWRkZWQgQXJndW1lbnRQ
cmludGVyVGVzdCBjbGFzcyB0byB0ZXN0IEFyZ3VtZW50UHJpbnRlci4KKyAgICAgICAgICAtIEFk
ZGVkIEFyZ3VtZW50UGFyc2VyVGVzdCBjbGFzcyB3aGljaCByZXBsYWNlcyBjcHBfc3R5bGUucHkn
cworICAgICAgICAgICAgcGFyc2VfYXJndW1lbnRzKCkgdW5pdCB0ZXN0cy4gVGhlIG5ldyB1bml0
IHRlc3RzIGNvdmVyIHRoZQorICAgICAgICAgICAgbmV3IGVycm9yIGNvbmRpdGlvbnMgY292ZXJl
ZCBieSB0aGUgbmV3IHBhcnNlKCkuCisKKyAgICAgICAgKiBTY3JpcHRzL3J1bi13ZWJraXQtdW5p
dHRlc3RzOgorICAgICAgICAgIC0gQWRkZWQgc3R5bGVfdW5pdHRlc3QucHkuCisKIDIwMDktMTIt
MTggIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBFcmljIFNlaWRlbC4KSW5kZXg6IFNjcmlwdHMvY2hlY2std2Via2l0LXN0eWxlCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNjcmlwdHMvY2hlY2std2Via2l0LXN0eWxlCShyZXZpc2lvbiA1MjI5OCkKKysrIFNj
cmlwdHMvY2hlY2std2Via2l0LXN0eWxlCSh3b3JraW5nIGNvcHkpCkBAIC00Niw4MiArNDYsMTEg
QEAgaW1wb3J0IG9zCiBpbXBvcnQgb3MucGF0aAogaW1wb3J0IHN5cwogCi1pbXBvcnQgbW9kdWxl
cy5jcHBfc3R5bGUgYXMgY3BwX3N0eWxlCiBpbXBvcnQgbW9kdWxlcy5zdHlsZSBhcyBzdHlsZQog
ZnJvbSBtb2R1bGVzLnNjbSBpbXBvcnQgZGV0ZWN0X3NjbV9zeXN0ZW0KIAogCi0jIEZJWE1FOiBB
dm9pZCBjcHBfc3R5bGUgZGVwZW5kZW5jeS4KLWNwcF9zdHlsZS5fVVNBR0UgPSAiIiIKLVN5bnRh
eDogJShwcm9ncmFtX25hbWUpcyBbLS12ZXJib3NlPSNdIFstLWdpdC1jb21taXQ9PFNpbmdsZUNv
bW1pdD5dIFstLW91dHB1dD12czddCi0gICAgICAgIFstLWZpbHRlcj0teCwreSwuLi5dIFtmaWxl
XSAuLi4KLQotICBUaGUgc3R5bGUgZ3VpZGVsaW5lcyB0aGlzIHRyaWVzIHRvIGZvbGxvdyBhcmUg
aGVyZToKLSAgICBodHRwOi8vd2Via2l0Lm9yZy9jb2RpbmcvY29kaW5nLXN0eWxlLmh0bWwKLQot
ICBFdmVyeSBzdHlsZSBlcnJvciBpcyBnaXZlbiBhIGNvbmZpZGVuY2Ugc2NvcmUgZnJvbSAxLTUs
IHdpdGggNSBtZWFuaW5nCi0gIHdlIGFyZSBjZXJ0YWluIG9mIHRoZSBwcm9ibGVtLCBhbmQgMSBt
ZWFuaW5nIGl0IGNvdWxkIGJlIGEgbGVnaXRpbWF0ZQotICBjb25zdHJ1Y3QuICBUaGlzIGNhbiBt
aXNzIHNvbWUgZXJyb3JzIGFuZCBkb2VzIG5vdCBzdWJzdGl0dXRlIGZvcgotICBjb2RlIHJldmll
dy4KLQotICBUbyBwcmV2ZW50IHNwZWNpZmljIGxpbmVzIGZyb20gYmVpbmcgbGludGVkLCBhZGQg
YSAnLy8gTk9MSU5UJyBjb21tZW50IHRvIHRoZQotICBlbmQgb2YgdGhlIGxpbmUuCi0KLSAgTGlu
dGVkIGV4dGVuc2lvbnMgYXJlIC5jcHAsIC5jIGFuZCAuaC4gIE90aGVyIGZpbGUgdHlwZXMgYXJl
IGlnbm9yZWQuCi0KLSAgVGhlIGZpbGUgcGFyYW1ldGVyIGlzIG9wdGlvbmFsIGFuZCBhY2NlcHRz
IG11bHRpcGxlIGZpbGVzLiAgTGVhdmluZwotICBvdXQgdGhlIGZpbGUgcGFyYW1ldGVyIGFwcGxp
ZXMgdGhlIGNoZWNrIHRvIGFsbCBmaWxlcyBjb25zaWRlcmVkIGNoYW5nZWQKLSAgYnkgeW91ciBz
b3VyY2UgY29udHJvbCBtYW5hZ2VtZW50IHN5c3RlbS4KLQotICBGbGFnczoKLQotICAgIHZlcmJv
c2U9IwotICAgICAgQSBudW1iZXIgMC01IHRvIHJlc3RyaWN0IGVycm9ycyB0byBjZXJ0YWluIHZl
cmJvc2l0eSBsZXZlbHMuCi0gICAgICBEZWZhdWx0cyB0byAlKGRlZmF1bHRfdmVyYm9zaXR5KXMu
Ci0KLSAgICBnaXQtY29tbWl0PTxTaW5nbGVDb21taXQ+Ci0gICAgICBDaGVja3MgdGhlIHN0eWxl
IG9mIGV2ZXJ5dGhpbmcgZnJvbSB0aGUgZ2l2ZW4gY29tbWl0IHRvIHRoZSBsb2NhbCB0cmVlLgot
Ci0gICAgb3V0cHV0PXZzNwotICAgICAgVGhlIG91dHB1dCBmb3JtYXQsIHdoaWNoIG1heSBiZSBv
bmUgb2YKLSAgICAgICAgZW1hY3MgOiB0byBlYXNlIGVtYWNzIHBhcnNpbmcKLSAgICAgICAgdnM3
ICAgOiBjb21wYXRpYmxlIHdpdGggVmlzdWFsIFN0dWRpbwotICAgICAgRGVmYXVsdHMgdG8gIiUo
ZGVmYXVsdF9vdXRwdXRfZm9ybWF0KXMiLiBPdGhlciBmb3JtYXRzIGFyZSB1bnN1cHBvcnRlZC4K
LQotICAgIGZpbHRlcj0teCwreSwuLi4KLSAgICAgIEEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2Yg
Ym9vbGVhbiBmaWx0ZXIgcnVsZXMgdXNlZCB0byBmaWx0ZXIKLSAgICAgIHdoaWNoIGNhdGVnb3Jp
ZXMgb2Ygc3R5bGUgZ3VpZGVsaW5lcyB0byBjaGVjay4gIFRoZSBzY3JpcHQgY2hlY2tzCi0gICAg
ICBhIGNhdGVnb3J5IGlmIHRoZSBjYXRlZ29yeSBwYXNzZXMgdGhlIGZpbHRlciBydWxlcywgYXMg
Zm9sbG93cy4KLQotICAgICAgQW55IHdlYmtpdCBjYXRlZ29yeSBzdGFydHMgb3V0IHBhc3Npbmcu
ICBBbGwgZmlsdGVyIHJ1bGVzIGFyZSB0aGVuCi0gICAgICBldmFsdWF0ZWQgbGVmdCB0byByaWdo
dCwgd2l0aCBsYXRlciBydWxlcyB0YWtpbmcgcHJlY2VkZW5jZS4gIEZvcgotICAgICAgZXhhbXBs
ZSwgdGhlIHJ1bGUgIitmb28iIHBhc3NlcyBhbnkgY2F0ZWdvcnkgdGhhdCBzdGFydHMgd2l0aCAi
Zm9vIiwKLSAgICAgIGFuZCAiLWZvbyIgZmFpbHMgYW55IHN1Y2ggY2F0ZWdvcnkuICBUaGUgZmls
dGVyIGlucHV0ICItd2hpdGVzcGFjZSwKLSAgICAgICt3aGl0ZXNwYWNlL2JyYWNlcyIgZmFpbHMg
dGhlIGNhdGVnb3J5ICJ3aGl0ZXNwYWNlL3RhYiIgYW5kIHBhc3NlcwotICAgICAgIndoaXRlc3Bh
Y2UvYnJhY2VzIi4KLQotICAgICAgRXhhbXBsZXM6IC0tZmlsdGVyPS13aGl0ZXNwYWNlLCt3aGl0
ZXNwYWNlL2JyYWNlcwotICAgICAgICAgICAgICAgIC0tZmlsdGVyPS13aGl0ZXNwYWNlLC1ydW50
aW1lL3ByaW50ZiwrcnVudGltZS9wcmludGZfZm9ybWF0Ci0gICAgICAgICAgICAgICAgLS1maWx0
ZXI9LSwrYnVpbGQvaW5jbHVkZV93aGF0X3lvdV91c2UKLQotICAgICAgQ2F0ZWdvcnkgbmFtZXMg
YXBwZWFyIGluIGVycm9yIG1lc3NhZ2VzIGluIGJyYWNrZXRzLCBmb3IgZXhhbXBsZQotICAgICAg
W3doaXRlc3BhY2UvaW5kZW50XS4gIFRvIHNlZSBhIGxpc3Qgb2YgYWxsIGNhdGVnb3JpZXMgYXZh
aWxhYmxlIHRvCi0gICAgICAlKHByb2dyYW1fbmFtZSlzLCBhbG9uZyB3aXRoIHdoaWNoIGFyZSBl
bmFibGVkIGJ5IGRlZmF1bHQsIHBhc3MKLSAgICAgIHRoZSBlbXB0eSBmaWx0ZXIgYXMgZm9sbG93
czoKLSAgICAgICAgIC0tZmlsdGVyPQotIiIiICUgewotICAgICdwcm9ncmFtX25hbWUnOiBvcy5w
YXRoLmJhc2VuYW1lKHN5cy5hcmd2WzBdKSwKLSAgICAnZGVmYXVsdF92ZXJib3NpdHknOiBjcHBf
c3R5bGUuX0RFRkFVTFRfVkVSQk9TSVRZLAotICAgICdkZWZhdWx0X291dHB1dF9mb3JtYXQnOiBj
cHBfc3R5bGUuX0RFRkFVTFRfT1VUUFVUX0ZPUk1BVAotICAgIH0KLQotCiBkZWYgbWFpbigpOgot
ICAgIHN0eWxlLnVzZV93ZWJraXRfc3R5bGVzKCkKLQotICAgIChmaWxlcywgZmxhZ3MpID0gc3R5
bGUucGFyc2VfYXJndW1lbnRzKHN5cy5hcmd2WzE6XSwgWyJnaXQtY29tbWl0PSJdLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlfaGVscD1UcnVlKQot
CiAgICAgIyBDaGFuZ2Ugc3RkZXJyIHRvIHdyaXRlIHdpdGggcmVwbGFjZW1lbnQgY2hhcmFjdGVy
cyBzbyB3ZSBkb24ndCBkaWUKICAgICAjIGlmIHdlIHRyeSB0byBwcmludCBzb21ldGhpbmcgY29u
dGFpbmluZyBub24tQVNDSUkgY2hhcmFjdGVycy4KICAgICBzeXMuc3RkZXJyID0gY29kZWNzLlN0
cmVhbVJlYWRlcldyaXRlcihzeXMuc3RkZXJyLApAQCAtMTI5LDEwICs1OCwxNiBAQCBkZWYgbWFp
bigpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVjcy5n
ZXR3cml0ZXIoJ3V0ZjgnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAncmVwbGFjZScpCiAKLSAgICBpZiBmaWxlcyBhbmQgIi0tZ2l0LWNvbW1pdCIgaW4gZmxh
Z3M6Ci0gICAgICAgIGNwcF9zdHlsZS5leGl0X3dpdGhfdXNhZ2UoJ0l0IGlzIG5vdCBwb3NzaWJs
ZSB0byBjaGVjayBmaWxlcyBhbmQgYSAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ3NwZWNpZmljIGNvbW1pdCBhdCB0aGUgc2FtZSB0aW1lLicsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGlzcGxheV9oZWxwPVRydWUpCisgICAgZGVmYXVsdHMgPSBzdHls
ZS5Bcmd1bWVudERlZmF1bHRzKHN0eWxlLkRFRkFVTFRfT1VUUFVUX0ZPUk1BVCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGUuREVGQVVMVF9WRVJCT1NJVFksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlLldFQktJVF9GSUxURVJf
UlVMRVMpCisKKyAgICBwYXJzZXIgPSBzdHlsZS5Bcmd1bWVudFBhcnNlcihkZWZhdWx0cykKKyAg
ICAoZmlsZXMsIG9wdGlvbnMpID0gcGFyc2VyLnBhcnNlKHN5cy5hcmd2WzE6XSkKKworICAgICMg
RklYTUU6IEVsaW1pbmF0ZSB0aGUgbmVlZCB0byBjYWxsIHRoaXMgZnVuY3Rpb24uCisgICAgIyAg
ICAgICAgT3B0aW9ucyBzaG91bGQgYmUgcGFzc2VkIGludG8gcHJvY2Vzc19maWxlIGluc3RlYWQu
CisgICAgc3R5bGUuc2V0X29wdGlvbnMob3B0aW9ucykKIAogICAgIGlmIGZpbGVzOgogICAgICAg
ICBmb3IgZmlsZW5hbWUgaW4gZmlsZXM6CkBAIC0xNDIsOCArNzcsOCBAQCBkZWYgbWFpbigpOgog
ICAgICAgICBjd2QgPSBvcy5wYXRoLmFic3BhdGgoJy4nKQogICAgICAgICBzY20gPSBkZXRlY3Rf
c2NtX3N5c3RlbShjd2QpCiAKLSAgICAgICAgaWYgIi0tZ2l0LWNvbW1pdCIgaW4gZmxhZ3M6Ci0g
ICAgICAgICAgICBjb21taXQgPSBmbGFnc1siLS1naXQtY29tbWl0Il0KKyAgICAgICAgaWYgb3B0
aW9ucy5naXRfY29tbWl0OgorICAgICAgICAgICAgY29tbWl0ID0gb3B0aW9ucy5naXRfY29tbWl0
CiAgICAgICAgICAgICBpZiAnLi4nIGluIGNvbW1pdDoKICAgICAgICAgICAgICAgICAjIEZJWE1F
OiBJZiB0aGUgcmFuZ2UgaXMgYSAiLi4uIiwgdGhlIGNvZGUgc2hvdWxkIGZpbmQgdGhlIGNvbW1v
biBhbmNlc3RvciBhbmQKICAgICAgICAgICAgICAgICAjIHN0YXJ0IHRoZXJlIChzZWUgZ2l0IGRp
ZmYgLS1oZWxwIGZvciBpbmZvcm1hdGlvbiBhYm91dCBob3cgLi4uIHVzdWFsbHkgd29ya3MpLgpJ
bmRleDogU2NyaXB0cy9ydW4td2Via2l0LXVuaXR0ZXN0cwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTY3JpcHRz
L3J1bi13ZWJraXQtdW5pdHRlc3RzCShyZXZpc2lvbiA1MjI5OCkKKysrIFNjcmlwdHMvcnVuLXdl
YmtpdC11bml0dGVzdHMJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAgZnJvbSBtb2R1
bGVzLmNwcF9zdHlsZV91bml0dGVzdCBpbXBvcnQgKgogZnJvbSBtb2R1bGVzLmRpZmZfcGFyc2Vy
X3VuaXR0ZXN0IGltcG9ydCAqCiBmcm9tIG1vZHVsZXMubG9nZ2luZ191bml0dGVzdCBpbXBvcnQg
KgogZnJvbSBtb2R1bGVzLm11bHRpY29tbWFuZHRvb2xfdW5pdHRlc3QgaW1wb3J0ICoKK2Zyb20g
bW9kdWxlcy5zdHlsZV91bml0dGVzdCBpbXBvcnQgKgogZnJvbSBtb2R1bGVzLnRleHRfc3R5bGVf
dW5pdHRlc3QgaW1wb3J0ICoKIGZyb20gbW9kdWxlcy53ZWJraXRwb3J0X3VuaXR0ZXN0IGltcG9y
dCAqCiBmcm9tIG1vZHVsZXMud29ya3F1ZXVlX3VuaXR0ZXN0IGltcG9ydCAqCkluZGV4OiBTY3Jp
cHRzL21vZHVsZXMvY3BwX3N0eWxlLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNjcmlwdHMvbW9kdWxlcy9j
cHBfc3R5bGUucHkJKHJldmlzaW9uIDUyMjk4KQorKysgU2NyaXB0cy9tb2R1bGVzL2NwcF9zdHls
ZS5weQkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNiBAQAogIiIiU3VwcG9ydCBmb3IgY2hl
Y2std2Via2l0LXN0eWxlLiIiIgogCiBpbXBvcnQgY29kZWNzCi1pbXBvcnQgZ2V0b3B0CiBpbXBv
cnQgbWF0aCAgIyBmb3IgbG9nCiBpbXBvcnQgb3MKIGltcG9ydCBvcy5wYXRoCkBAIC00OCw1MSAr
NDcsNiBAQCBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pY29kZWRhdGEKIAogCi0jIFRoaXMgaXMgc2V0
IGJ5IGNoZWNrLXdlYmtpdC1zdHlsZS4KLV9VU0FHRSA9ICcnCi0KLQotIyBEZWZhdWx0IG9wdGlv
bnMKLV9ERUZBVUxUX1ZFUkJPU0lUWSA9IDEKLV9ERUZBVUxUX09VVFBVVF9GT1JNQVQgPSAnZW1h
Y3MnCi0KLQotIyBGSVhNRTogRm9yIHN0eWxlIGNhdGVnb3JpZXMgd2Ugd2lsbCBuZXZlciB3YW50
IHRvIGhhdmUsIHJlbW92ZSB0aGVtLgotIyAgICAgICAgRm9yIGNhdGVnb3JpZXMgZm9yIHdoaWNo
IHdlIHdhbnQgdG8gaGF2ZSBzaW1pbGFyIGZ1bmN0aW9uYWxpdHksCi0jICAgICAgICBtb2RpZnkg
dGhlIGltcGxlbWVudGF0aW9uIGFuZCBlbmFibGUgdGhlbS4KLSMgRklYTUU6IEFkZCBhIHVuaXQg
dGVzdCB0byBlbnN1cmUgdGhlIGNvcnJlc3BvbmRpbmcgY2F0ZWdvcmllcwotIyAgICAgICAgYXJl
IGVsZW1lbnRzIG9mIF9TVFlMRV9DQVRFR09SSUVTLgotIwotIyBGb3IgdW5hbWJpZ3VvdXMgdGVy
bWlub2xvZ3ksIHdlIHVzZSAiZmlsdGVyIHJ1bGUiIHJhdGhlciB0aGFuICJmaWx0ZXIiCi0jIGZv
ciBhbiBpbmRpdmlkdWFsIGJvb2xlYW4gZmlsdGVyIGZsYWcgbGlrZSAiK2ZvbyIuIFRoaXMgYWxs
b3dzIHVzIHRvIAotIyByZXNlcnZlICJmaWx0ZXIiIGZvciB3aGF0IG9uZSBnZXRzIGJ5IGNvbGxl
Y3RpdmVseSBhcHBseWluZyBhbGwgb2YgCi0jIHRoZSBmaWx0ZXIgcnVsZXMgYXMgc3BlY2lmaWVk
IGJ5IGEgLS1maWx0ZXIgZmxhZy4KLV9XRUJLSVRfRklMVEVSX1JVTEVTID0gWwotICAgICctYnVp
bGQvZW5kaWZfY29tbWVudCcsCi0gICAgJy1idWlsZC9oZWFkZXJfZ3VhcmQnLAotICAgICctYnVp
bGQvaW5jbHVkZV93aGF0X3lvdV91c2UnLCAgIyA8c3RyaW5nPiBmb3Igc3RkOjpzdHJpbmcKLSAg
ICAnLWJ1aWxkL3N0b3JhZ2VfY2xhc3MnLCAgIyBjb25zdCBzdGF0aWMKLSAgICAnLWxlZ2FsL2Nv
cHlyaWdodCcsCi0gICAgJy1yZWFkYWJpbGl0eS9tdWx0aWxpbmVfY29tbWVudCcsCi0gICAgJy1y
ZWFkYWJpbGl0eS9icmFjZXMnLCAgIyBpbnQgZm9vKCkge307Ci0gICAgJy1yZWFkYWJpbGl0eS9m
bl9zaXplJywKLSAgICAnLXJlYWRhYmlsaXR5L2Nhc3RpbmcnLAotICAgICctcmVhZGFiaWxpdHkv
ZnVuY3Rpb24nLAotICAgICctcnVudGltZS9hcnJheXMnLCAgIyB2YXJpYWJsZSBsZW5ndGggYXJy
YXkKLSAgICAnLXJ1bnRpbWUvY2FzdGluZycsCi0gICAgJy1ydW50aW1lL3NpemVvZicsCi0gICAg
Jy1ydW50aW1lL2V4cGxpY2l0JywgICMgZXhwbGljaXQKLSAgICAnLXJ1bnRpbWUvdmlydHVhbCcs
ICAjIHZpcnR1YWwgZHRvcgotICAgICctcnVudGltZS9wcmludGYnLAotICAgICctcnVudGltZS90
aHJlYWRzYWZlX2ZuJywKLSAgICAnLXJ1bnRpbWUvcnR0aScsCi0gICAgJy13aGl0ZXNwYWNlL2Js
YW5rX2xpbmUnLAotICAgICctd2hpdGVzcGFjZS9jb21tZW50cycsCi0gICAgJy13aGl0ZXNwYWNl
L2VuZF9vZl9saW5lJywKLSAgICAnLXdoaXRlc3BhY2UvbGFiZWxzJywKLSAgICBdCi0KLQogIyBX
ZSBjYXRlZ29yaXplIGVhY2ggc3R5bGUgcnVsZSB3ZSBwcmludC4gIEhlcmUgYXJlIHRoZSBjYXRl
Z29yaWVzLgogIyBXZSB3YW50IGFuIGV4cGxpY2l0IGxpc3Qgc28gd2UgY2FuIGxpc3QgdGhlbSBh
bGwgaW4gY3BwX3N0eWxlIC0tZmlsdGVyPS4KICMgSWYgeW91IGFkZCBhIG5ldyBlcnJvciBtZXNz
YWdlIHdpdGggYSBuZXcgY2F0ZWdvcnksIGFkZCBpdCB0byB0aGUgbGlzdApAQCAtMTYxLDEyICsx
MTUsNiBAQCBfU1RZTEVfQ0FURUdPUklFUyA9IFsKICAgICBdCiAKIAotIyBUaGUgZGVmYXVsdCBz
dGF0ZSBvZiB0aGUgY2F0ZWdvcnkgZmlsdGVyLiBUaGlzIGlzIG92ZXJyaWRlZCBieSB0aGUgLS1m
aWx0ZXI9Ci0jIGZsYWcuIEJ5IGRlZmF1bHQgYWxsIGVycm9ycyBhcmUgb24sIHNvIG9ubHkgYWRk
IGhlcmUgY2F0ZWdvcmllcyB0aGF0IHNob3VsZCBiZQotIyBvZmYgYnkgZGVmYXVsdCAoaS5lLiwg
Y2F0ZWdvcmllcyB0aGF0IG11c3QgYmUgZW5hYmxlZCBieSB0aGUgLS1maWx0ZXI9IGZsYWdzKS4K
LSMgQWxsIGVudHJpZXMgaGVyZSBzaG91bGQgc3RhcnQgd2l0aCBhICctJyBvciAnKycsIGFzIGlu
IHRoZSAtLWZpbHRlcj0gZmxhZy4KLV9ERUZBVUxUX0ZJTFRFUl9SVUxFUyA9IFtdCi0KICMgSGVh
ZGVycyB0aGF0IHdlIGNvbnNpZGVyIFNUTCBoZWFkZXJzLgogX1NUTF9IRUFERVJTID0gZnJvemVu
c2V0KFsKICAgICAnYWxnb2Jhc2UuaCcsICdhbGdvcml0aG0nLCAnYWxsb2MuaCcsICdiaXRzZXQn
LCAnZGVxdWUnLCAnZXhjZXB0aW9uJywKQEAgLTM2MiwxNSArMzEwLDE1IEBAIGNsYXNzIF9DcHBT
dHlsZVN0YXRlKG9iamVjdCk6CiAgICAgIiIiTWFpbnRhaW5zIG1vZHVsZS13aWRlIHN0YXRlLi4i
IiIKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgc2VsZi52ZXJib3NlX2xldmVs
ID0gX0RFRkFVTFRfVkVSQk9TSVRZICAjIGdsb2JhbCBzZXR0aW5nLgorICAgICAgICBzZWxmLnZl
cmJvc2VfbGV2ZWwgPSAxICAjIGdsb2JhbCBzZXR0aW5nLgogICAgICAgICBzZWxmLmVycm9yX2Nv
dW50ID0gMCAgICAjIGdsb2JhbCBjb3VudCBvZiByZXBvcnRlZCBlcnJvcnMKICAgICAgICAgIyBm
aWx0ZXJzIHRvIGFwcGx5IHdoZW4gZW1pdHRpbmcgZXJyb3IgbWVzc2FnZXMKLSAgICAgICAgc2Vs
Zi5maWx0ZXJzID0gX0RFRkFVTFRfRklMVEVSX1JVTEVTWzpdCisgICAgICAgIHNlbGYuZmlsdGVy
cyA9IFtdCiAKICAgICAgICAgIyBvdXRwdXQgZm9ybWF0OgogICAgICAgICAjICJlbWFjcyIgLSBm
b3JtYXQgdGhhdCBlbWFjcyBjYW4gcGFyc2UgKGRlZmF1bHQpCiAgICAgICAgICMgInZzNyIgLSBm
b3JtYXQgdGhhdCBNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyA3IGNhbiBwYXJzZQotICAgICAgICBz
ZWxmLm91dHB1dF9mb3JtYXQgPSBfREVGQVVMVF9PVVRQVVRfRk9STUFUCisgICAgICAgIHNlbGYu
b3V0cHV0X2Zvcm1hdCA9ICdlbWFjcycKIAogICAgIGRlZiBzZXRfb3V0cHV0X2Zvcm1hdChzZWxm
LCBvdXRwdXRfZm9ybWF0KToKICAgICAgICAgIiIiU2V0cyB0aGUgb3V0cHV0IGZvcm1hdCBmb3Ig
ZXJyb3JzLiIiIgpAQCAtMzg5LDE2ICszMzcsMTggQEAgY2xhc3MgX0NwcFN0eWxlU3RhdGUob2Jq
ZWN0KToKICAgICAgICAgZXJyb3IgbWVzc2FnZS4KIAogICAgICAgICBBcmdzOgotICAgICAgICAg
IGZpbHRlcnM6IEEgc3RyaW5nIG9mIGNvbW1hLXNlcGFyYXRlZCBmaWx0ZXJzIChlZyAiK3doaXRl
c3BhY2UvaW5kZW50IikuCi0gICAgICAgICAgICAgICAgICAgRWFjaCBmaWx0ZXIgc2hvdWxkIHN0
YXJ0IHdpdGggKyBvciAtOyBlbHNlIHdlIGRpZS4KKyAgICAgICAgICBmaWx0ZXJzOiBBIGxpc3Qg
b2Ygc3RyaW5ncyB0aGF0IGFyZSBib29sZWFuIGZpbHRlciBydWxlcyB1c2VkCisgICAgICAgICAg
ICAgICAgICAgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYSBzdHlsZSBjYXRlZ29yeSBzaG91bGQgYmUg
Y2hlY2tlZC4KKyAgICAgICAgICAgICAgICAgICBFYWNoIHN0cmluZyBzaG91bGQgc3RhcnQgd2l0
aCArIG9yIC0uIEFuIGV4YW1wbGUKKyAgICAgICAgICAgICAgICAgICBzdHJpbmcgaXMgIit3aGl0
ZXNwYWNlL2luZGVudCIuIFRoZSBsaXN0IGluY2x1ZGVzIGFueQorICAgICAgICAgICAgICAgICAg
IHByZXBlbmRlZCBkZWZhdWx0IGZpbHRlciBydWxlcy4KIAogICAgICAgICBSYWlzZXM6Ci0gICAg
ICAgICAgVmFsdWVFcnJvcjogVGhlIGNvbW1hLXNlcGFyYXRlZCBmaWx0ZXJzIGRpZCBub3QgYWxs
IHN0YXJ0IHdpdGggJysnIG9yICctJy4KLSAgICAgICAgICAgICAgICAgICAgICBFLmcuICItLCt3
aGl0ZXNwYWNlLC13aGl0ZXNwYWNlL2luZGVudCx3aGl0ZXNwYWNlL2JhZGZpbHRlciIKKyAgICAg
ICAgICBWYWx1ZUVycm9yOiBOb3QgYWxsIGZpbHRlcnMgc3RhcnRlZCB3aXRoICcrJyBvciAnLScu
IEZvciBleGFtcGxlLAorICAgICAgICAgICAgICAgICAgICAgICItLCt3aGl0ZXNwYWNlLC13aGl0
ZXNwYWNlL2luZGVudCx3aGl0ZXNwYWNlL2JhZGZpbHRlciIKICAgICAgICAgIiIiCi0gICAgICAg
ICMgRGVmYXVsdCBmaWx0ZXJzIGFsd2F5cyBoYXZlIGxlc3MgcHJpb3JpdHkgdGhhbiB0aGUgZmxh
ZyBvbmVzLgotICAgICAgICBzZWxmLmZpbHRlcnMgPSBfREVGQVVMVF9GSUxURVJfUlVMRVNbOl0K
LSAgICAgICAgZm9yIGZpbHRlciBpbiBmaWx0ZXJzLnNwbGl0KCcsJyk6CisgICAgICAgIHNlbGYu
ZmlsdGVycyA9IFtdCisgICAgICAgIGZvciBmaWx0ZXIgaW4gZmlsdGVyczoKICAgICAgICAgICAg
IGNsZWFuX2ZpbHRlciA9IGZpbHRlci5zdHJpcCgpCiAgICAgICAgICAgICBpZiBjbGVhbl9maWx0
ZXI6CiAgICAgICAgICAgICAgICAgc2VsZi5maWx0ZXJzLmFwcGVuZChjbGVhbl9maWx0ZXIpCkBA
IC00NTEsOCArNDAxLDExIEBAIGRlZiBfc2V0X2ZpbHRlcnMoZmlsdGVycyk6CiAgICAgZXJyb3Ig
bWVzc2FnZS4KIAogICAgIEFyZ3M6Ci0gICAgICBmaWx0ZXJzOiBBIHN0cmluZyBvZiBjb21tYS1z
ZXBhcmF0ZWQgZmlsdGVycyAoZWcgIndoaXRlc3BhY2UvaW5kZW50IikuCi0gICAgICAgICAgICAg
ICBFYWNoIGZpbHRlciBzaG91bGQgc3RhcnQgd2l0aCArIG9yIC07IGVsc2Ugd2UgZGllLgorICAg
ICAgZmlsdGVyczogQSBsaXN0IG9mIHN0cmluZ3MgdGhhdCBhcmUgYm9vbGVhbiBmaWx0ZXIgcnVs
ZXMgdXNlZAorICAgICAgICAgICAgICAgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYSBzdHlsZSBjYXRl
Z29yeSBzaG91bGQgYmUgY2hlY2tlZC4KKyAgICAgICAgICAgICAgIEVhY2ggc3RyaW5nIHNob3Vs
ZCBzdGFydCB3aXRoICsgb3IgLS4gQW4gZXhhbXBsZQorICAgICAgICAgICAgICAgc3RyaW5nIGlz
ICIrd2hpdGVzcGFjZS9pbmRlbnQiLiBUaGUgbGlzdCBpbmNsdWRlcyBhbnkKKyAgICAgICAgICAg
ICAgIHByZXBlbmRlZCBkZWZhdWx0IGZpbHRlciBydWxlcy4KICAgICAiIiIKICAgICBfY3BwX3N0
eWxlX3N0YXRlLnNldF9maWx0ZXJzKGZpbHRlcnMpCiAKQEAgLTMxNzAsOTggKzMxMjMsNiBAQCBk
ZWYgcHJvY2Vzc19maWxlKGZpbGVuYW1lLCBlcnJvcj1lcnJvcik6CiAgICAgICAgICAgICAgICAg
ICAnYmV0dGVyIHRvIHVzZSBvbmx5IGEgXFxuJykKIAogCi1kZWYgZXhpdF93aXRoX3VzYWdlKGVy
cm9yX21lc3NhZ2UsIGRpc3BsYXlfaGVscD1GYWxzZSk6Ci0gICAgIiIiRXhpdCBhbmQgcHJpbnQg
YSB1c2FnZSBzdHJpbmcgd2l0aCBhbiBvcHRpb25hbCBlcnJvciBtZXNzYWdlLgotCi0gICAgQXJn
czoKLSAgICAgIGVycm9yX21lc3NhZ2U6IFRoZSBvcHRpb25hbCBlcnJvciBtZXNzYWdlLgotICAg
ICAgZGlzcGxheV9oZWxwOiBXaGV0aGVyIHRvIGRpc3BsYXkgaGVscCBvdXRwdXQuIFN1cHByZXNz
aW5nIGhlbHAKLSAgICAgICAgICAgICAgICAgICAgb3V0cHV0IGlzIHVzZWZ1bCBmb3IgdW5pdCB0
ZXN0cy4KLSAgICAiIiIKLSAgICBpZiBkaXNwbGF5X2hlbHA6Ci0gICAgICAgIHN5cy5zdGRlcnIu
d3JpdGUoX1VTQUdFKQotICAgIGlmIGVycm9yX21lc3NhZ2U6Ci0gICAgICAgIHN5cy5leGl0KCdc
bkZBVEFMIEVSUk9SOiAnICsgZXJyb3JfbWVzc2FnZSkKLSAgICBlbHNlOgotICAgICAgICBzeXMu
ZXhpdCgxKQotCi0KLWRlZiBleGl0X3dpdGhfY2F0ZWdvcmllcyhkaXNwbGF5X2hlbHA9RmFsc2Up
OgotICAgICIiIkV4aXQgYW5kIHByaW50IGFsbCBzdHlsZSBjYXRlZ29yaWVzLCBhbG9uZyB3aXRo
IHRoZSBkZWZhdWx0IGZpbHRlci4KLQotICAgIFRoZXNlIGNhdGVnb3J5IG5hbWVzIGFwcGVhciBp
biBlcnJvciBtZXNzYWdlcy4gIFRoZXkgY2FuIGJlIGZpbHRlcmVkCi0gICAgdXNpbmcgdGhlIC0t
ZmlsdGVyIGZsYWcuCi0KLSAgICBBcmdzOgotICAgICAgZGlzcGxheV9oZWxwOiBXaGV0aGVyIHRv
IGRpc3BsYXkgaGVscCBvdXRwdXQuIFN1cHByZXNzaW5nIGhlbHAKLSAgICAgICAgICAgICAgICAg
ICAgb3V0cHV0IGlzIHVzZWZ1bCBmb3IgdW5pdCB0ZXN0cy4KLSAgICAiIiIKLSAgICBpZiBkaXNw
bGF5X2hlbHA6Ci0gICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJ1xuQWxsIGNhdGVnb3JpZXM6XG4n
KQotICAgICAgICBmb3IgY2F0ZWdvcnkgaW4gc29ydGVkKF9TVFlMRV9DQVRFR09SSUVTKToKLSAg
ICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJyAgICAnICsgY2F0ZWdvcnkgKyAnXG4nKQotCi0g
ICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJ1xuRGVmYXVsdCBmaWx0ZXIgcnVsZXMqKjpcbicpCi0g
ICAgICAgIGZvciBmaWx0ZXJfcnVsZSBpbiBzb3J0ZWQoX1dFQktJVF9GSUxURVJfUlVMRVMpOgot
ICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgnICAgICcgKyBmaWx0ZXJfcnVsZSArICdcbicp
Ci0gICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJ1xuKipUaGUgY29tbWFuZCBhbHdheXMgZXZhbHVh
dGVzIHRoZSBhYm92ZSAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ3J1bGVzLCBhbmQgYmVm
b3JlIGFueSAtLWZpbHRlciBmbGFnLlxuXG4nKQotCi0gICAgc3lzLmV4aXQoMCkKLQotCi1kZWYg
cGFyc2VfYXJndW1lbnRzKGFyZ3MsIGFkZGl0aW9uYWxfZmxhZ3M9W10sIGRpc3BsYXlfaGVscD1G
YWxzZSk6Ci0gICAgIiIiUGFyc2VzIHRoZSBjb21tYW5kIGxpbmUgYXJndW1lbnRzLgotCi0gICAg
VGhpcyBtYXkgc2V0IHRoZSBvdXRwdXQgZm9ybWF0IGFuZCB2ZXJib3NpdHkgbGV2ZWwgYXMgc2lk
ZS1lZmZlY3RzLgotCi0gICAgQXJnczoKLSAgICAgIGFyZ3M6IFRoZSBjb21tYW5kIGxpbmUgYXJn
dW1lbnRzOgotICAgICAgYWRkaXRpb25hbF9mbGFnczogQSBsaXN0IG9mIHN0cmluZ3Mgd2hpY2gg
c3BlY2lmaWVzIGZsYWdzIHdlIGFsbG93LgotICAgICAgZGlzcGxheV9oZWxwOiBXaGV0aGVyIHRv
IGRpc3BsYXkgaGVscCBvdXRwdXQuIFN1cHByZXNzaW5nIGhlbHAKLSAgICAgICAgICAgICAgICAg
ICAgb3V0cHV0IGlzIHVzZWZ1bCBmb3IgdW5pdCB0ZXN0cy4KLQotICAgIFJldHVybnM6Ci0gICAg
ICBBIHR1cGxlIG9mIChmaWxlbmFtZXMsIGZsYWdzKQotCi0gICAgICBmaWxlbmFtZXM6IFRoZSBs
aXN0IG9mIGZpbGVuYW1lcyB0byBsaW50LgotICAgICAgZmxhZ3M6IFRoZSBkaWN0IG9mIHRoZSBm
bGFnIG5hbWVzIGFuZCB0aGUgZmxhZyB2YWx1ZXMuCi0gICAgIiIiCi0gICAgZmxhZ3MgPSBbJ2hl
bHAnLCAnb3V0cHV0PScsICd2ZXJib3NlPScsICdmaWx0ZXI9J10gKyBhZGRpdGlvbmFsX2ZsYWdz
Ci0gICAgYWRkaXRpb25hbF9mbGFnX3ZhbHVlcyA9IHt9Ci0gICAgdHJ5OgotICAgICAgICAob3B0
cywgZmlsZW5hbWVzKSA9IGdldG9wdC5nZXRvcHQoYXJncywgJycsIGZsYWdzKQotICAgIGV4Y2Vw
dCBnZXRvcHQuR2V0b3B0RXJyb3I6Ci0gICAgICAgIGV4aXRfd2l0aF91c2FnZSgnSW52YWxpZCBh
cmd1bWVudHMuJywgZGlzcGxheV9oZWxwKQotCi0gICAgdmVyYm9zaXR5ID0gX3ZlcmJvc2VfbGV2
ZWwoKQotICAgIG91dHB1dF9mb3JtYXQgPSBfb3V0cHV0X2Zvcm1hdCgpCi0gICAgZmlsdGVycyA9
ICcnCi0KLSAgICBmb3IgKG9wdCwgdmFsKSBpbiBvcHRzOgotICAgICAgICBpZiBvcHQgPT0gJy0t
aGVscCc6Ci0gICAgICAgICAgICBleGl0X3dpdGhfdXNhZ2UoTm9uZSwgZGlzcGxheV9oZWxwKQot
ICAgICAgICBlbGlmIG9wdCA9PSAnLS1vdXRwdXQnOgotICAgICAgICAgICAgaWYgbm90IHZhbCBp
biAoJ2VtYWNzJywgJ3ZzNycpOgotICAgICAgICAgICAgICAgIGV4aXRfd2l0aF91c2FnZSgnVGhl
IG9ubHkgYWxsb3dlZCBvdXRwdXQgZm9ybWF0cyBhcmUgZW1hY3MgYW5kIHZzNy4nLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5X2hlbHApCi0gICAgICAgICAgICBvdXRw
dXRfZm9ybWF0ID0gdmFsCi0gICAgICAgIGVsaWYgb3B0ID09ICctLXZlcmJvc2UnOgotICAgICAg
ICAgICAgdmVyYm9zaXR5ID0gaW50KHZhbCkKLSAgICAgICAgZWxpZiBvcHQgPT0gJy0tZmlsdGVy
JzoKLSAgICAgICAgICAgIGZpbHRlcnMgPSB2YWwKLSAgICAgICAgICAgIGlmIG5vdCBmaWx0ZXJz
OgotICAgICAgICAgICAgICAgIGV4aXRfd2l0aF9jYXRlZ29yaWVzKGRpc3BsYXlfaGVscCkKLSAg
ICAgICAgZWxzZToKLSAgICAgICAgICAgIGFkZGl0aW9uYWxfZmxhZ192YWx1ZXNbb3B0XSA9IHZh
bAotCi0gICAgX3NldF9vdXRwdXRfZm9ybWF0KG91dHB1dF9mb3JtYXQpCi0gICAgX3NldF92ZXJi
b3NlX2xldmVsKHZlcmJvc2l0eSkKLSAgICBfc2V0X2ZpbHRlcnMoZmlsdGVycykKLQotICAgIHJl
dHVybiAoZmlsZW5hbWVzLCBhZGRpdGlvbmFsX2ZsYWdfdmFsdWVzKQotCi0KIGRlZiBjYW5faGFu
ZGxlKGZpbGVuYW1lKToKICAgICAiIiJDaGVja3MgaWYgdGhpcyBtb2R1bGUgc3VwcG9ydHMgZm9y
IHRoZSBzcGVjaWZpZWQgZmlsZSB0eXBlLgogCkluZGV4OiBTY3JpcHRzL21vZHVsZXMvY3BwX3N0
eWxlX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNjcmlwdHMvbW9kdWxlcy9jcHBfc3R5bGVf
dW5pdHRlc3QucHkJKHJldmlzaW9uIDUyMjk4KQorKysgU2NyaXB0cy9tb2R1bGVzL2NwcF9zdHls
ZV91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMTU2NCw4NSArMTU2NCwxMCBAQCBjbGFz
cyBDcHBTdHlsZVRlc3QoQ3BwU3R5bGVUZXN0QmFzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0X2xp
bnQoJ2ludCBhID0gNTtcdFx0Ly8gc2V0IGEgdG8gNScsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ1RhYiBmb3VuZDsgYmV0dGVyIHRvIHVzZSBzcGFjZXMgIFt3aGl0ZXNwYWNlL3RhYl0gWzFd
JykKIAotICAgIGRlZiB0ZXN0X3BhcnNlX2FyZ3VtZW50cyhzZWxmKToKLSAgICAgICAgb2xkX3Vz
YWdlID0gY3BwX3N0eWxlLl9VU0FHRQotICAgICAgICBvbGRfc3R5bGVfY2F0ZWdvcmllcyA9IGNw
cF9zdHlsZS5fU1RZTEVfQ0FURUdPUklFUwotICAgICAgICBvbGRfd2Via2l0X2ZpbHRlcl9ydWxl
cyA9IGNwcF9zdHlsZS5fV0VCS0lUX0ZJTFRFUl9SVUxFUwotICAgICAgICBvbGRfb3V0cHV0X2Zv
cm1hdCA9IGNwcF9zdHlsZS5fY3BwX3N0eWxlX3N0YXRlLm91dHB1dF9mb3JtYXQKLSAgICAgICAg
b2xkX3ZlcmJvc2VfbGV2ZWwgPSBjcHBfc3R5bGUuX2NwcF9zdHlsZV9zdGF0ZS52ZXJib3NlX2xl
dmVsCi0gICAgICAgIG9sZF9maWx0ZXJzID0gY3BwX3N0eWxlLl9jcHBfc3R5bGVfc3RhdGUuZmls
dGVycwotICAgICAgICB0cnk6Ci0gICAgICAgICAgICAjIERvbid0IHByaW50IHVzYWdlIGR1cmlu
ZyB0aGUgdGVzdHMsIG9yIGZpbHRlciBjYXRlZ29yaWVzCi0gICAgICAgICAgICBjcHBfc3R5bGUu
X1VTQUdFID0gJycKLSAgICAgICAgICAgIGNwcF9zdHlsZS5fU1RZTEVfQ0FURUdPUklFUyA9IFtd
Ci0gICAgICAgICAgICBjcHBfc3R5bGUuX1dFQktJVF9GSUxURVJfUlVMRVMgPSBbXQotCi0gICAg
ICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeXN0ZW1FeGl0LCBjcHBfc3R5bGUucGFyc2VfYXJn
dW1lbnRzLCBbJy0tYmFkb3B0J10pCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeXN0
ZW1FeGl0LCBjcHBfc3R5bGUucGFyc2VfYXJndW1lbnRzLCBbJy0taGVscCddKQotICAgICAgICAg
ICAgc2VsZi5hc3NlcnRSYWlzZXMoU3lzdGVtRXhpdCwgY3BwX3N0eWxlLnBhcnNlX2FyZ3VtZW50
cywgWyctLWZpbHRlcj0nXSkKLSAgICAgICAgICAgICMgVGhpcyBpcyBpbGxlZ2FsIGJlY2F1c2Ug
YWxsIGZpbHRlcnMgbXVzdCBzdGFydCB3aXRoICsgb3IgLQotICAgICAgICAgICAgc2VsZi5hc3Nl
cnRSYWlzZXMoVmFsdWVFcnJvciwgY3BwX3N0eWxlLnBhcnNlX2FyZ3VtZW50cywgWyctLWZpbHRl
cj1mb28nXSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNwcF9z
dHlsZS5wYXJzZV9hcmd1bWVudHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJy0t
ZmlsdGVyPSthLGIsLWMnXSkKLQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoKFsnZm9v
LmNwcCddLCB7fSksIGNwcF9zdHlsZS5wYXJzZV9hcmd1bWVudHMoWydmb28uY3BwJ10pKQotICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMob2xkX291dHB1dF9mb3JtYXQsIGNwcF9zdHlsZS5f
Y3BwX3N0eWxlX3N0YXRlLm91dHB1dF9mb3JtYXQpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFscyhvbGRfdmVyYm9zZV9sZXZlbCwgY3BwX3N0eWxlLl9jcHBfc3R5bGVfc3RhdGUudmVyYm9z
ZV9sZXZlbCkKLQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoKFtdLCB7fSksIGNwcF9z
dHlsZS5wYXJzZV9hcmd1bWVudHMoW10pKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMo
KFtdLCB7fSksIGNwcF9zdHlsZS5wYXJzZV9hcmd1bWVudHMoWyctLXY9MCddKSkKLQotICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoKFsnZm9vLmNwcCddLCB7fSksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjcHBfc3R5bGUucGFyc2VfYXJndW1lbnRzKFsnLS12PTEnLCAnZm9v
LmNwcCddKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDEsIGNwcF9zdHlsZS5fY3Bw
X3N0eWxlX3N0YXRlLnZlcmJvc2VfbGV2ZWwpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
cygoWydmb28uaCddLCB7fSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHBfc3R5
bGUucGFyc2VfYXJndW1lbnRzKFsnLS12PTMnLCAnZm9vLmgnXSkpCi0gICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFscygzLCBjcHBfc3R5bGUuX2NwcF9zdHlsZV9zdGF0ZS52ZXJib3NlX2xldmVs
KQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoKFsnZm9vLmNwcCddLCB7fSksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjcHBfc3R5bGUucGFyc2VfYXJndW1lbnRzKFsnLS12
ZXJib3NlPTUnLCAnZm9vLmNwcCddKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDUs
IGNwcF9zdHlsZS5fY3BwX3N0eWxlX3N0YXRlLnZlcmJvc2VfbGV2ZWwpCi0gICAgICAgICAgICBz
ZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY3BwX3N0eWxlLnBhcnNlX2FyZ3VtZW50cywgWyctLXY9ZicsICdmb28uY3BwJ10pCi0KLSAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKChbJ2Zvby5jcHAnXSwge30pLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY3BwX3N0eWxlLnBhcnNlX2FyZ3VtZW50cyhbJy0tb3V0cHV0
PWVtYWNzJywgJ2Zvby5jcHAnXSkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnZW1h
Y3MnLCBjcHBfc3R5bGUuX2NwcF9zdHlsZV9zdGF0ZS5vdXRwdXRfZm9ybWF0KQotICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbHMoKFsnZm9vLmgnXSwge30pLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY3BwX3N0eWxlLnBhcnNlX2FyZ3VtZW50cyhbJy0tb3V0cHV0PXZzNycsICdm
b28uaCddKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCd2czcnLCBjcHBfc3R5bGUu
X2NwcF9zdHlsZV9zdGF0ZS5vdXRwdXRfZm9ybWF0KQotICAgICAgICAgICAgc2VsZi5hc3NlcnRS
YWlzZXMoU3lzdGVtRXhpdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwcF9zdHls
ZS5wYXJzZV9hcmd1bWVudHMsIFsnLS1vdXRwdXQ9YmxhaCcsICdmb28uY3BwJ10pCi0KLSAgICAg
ICAgICAgIGZpbHQgPSAnLSwrd2hpdGVzcGFjZSwtd2hpdGVzcGFjZS9pbmRlbnQnCi0gICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFscygoWydmb28uaCddLCB7fSksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjcHBfc3R5bGUucGFyc2VfYXJndW1lbnRzKFsnLS1maWx0ZXI9JytmaWx0
LCAnZm9vLmgnXSkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhbJy0nLCAnK3doaXRl
c3BhY2UnLCAnLXdoaXRlc3BhY2UvaW5kZW50J10sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjcHBfc3R5bGUuX2NwcF9zdHlsZV9zdGF0ZS5maWx0ZXJzKQotCi0gICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFscygoWydmb28uY3BwJywgJ2Zvby5oJ10sIHt9KSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNwcF9zdHlsZS5wYXJzZV9hcmd1bWVudHMoWydmb28uY3BwJywg
J2Zvby5oJ10pKQotCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscygoWydmb28uY3BwJ10s
IHsnLS1mb28nOiAnJ30pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3BwX3N0eWxl
LnBhcnNlX2FyZ3VtZW50cyhbJy0tZm9vJywgJ2Zvby5jcHAnXSwgWydmb28nXSkpCi0gICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFscygoWydmb28uY3BwJ10sIHsnLS1mb28nOiAnYmFyJ30pLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3BwX3N0eWxlLnBhcnNlX2FyZ3VtZW50cyhb
Jy0tZm9vPWJhcicsICdmb28uY3BwJ10sIFsnZm9vPSddKSkKLSAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWxzKChbJ2Zvby5jcHAnXSwge30pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY3BwX3N0eWxlLnBhcnNlX2FyZ3VtZW50cyhbJ2Zvby5jcHAnXSwgWydmb289J10pKQotICAg
ICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3lzdGVtRXhpdCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNwcF9zdHlsZS5wYXJzZV9hcmd1bWVudHMsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBbJy0tZm9vdHlwbz1iYXInLCAnZm9vLmNwcCddLCBbJ2Zvbz0nXSkKLSAg
ICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGNwcF9zdHlsZS5fVVNBR0UgPSBvbGRfdXNhZ2UK
LSAgICAgICAgICAgIGNwcF9zdHlsZS5fU1RZTEVfQ0FURUdPUklFUyA9IG9sZF9zdHlsZV9jYXRl
Z29yaWVzCi0gICAgICAgICAgICBjcHBfc3R5bGUuX1dFQktJVF9GSUxURVJfUlVMRVMgPSBvbGRf
d2Via2l0X2ZpbHRlcl9ydWxlcwotICAgICAgICAgICAgY3BwX3N0eWxlLl9jcHBfc3R5bGVfc3Rh
dGUub3V0cHV0X2Zvcm1hdCA9IG9sZF9vdXRwdXRfZm9ybWF0Ci0gICAgICAgICAgICBjcHBfc3R5
bGUuX2NwcF9zdHlsZV9zdGF0ZS52ZXJib3NlX2xldmVsID0gb2xkX3ZlcmJvc2VfbGV2ZWwKLSAg
ICAgICAgICAgIGNwcF9zdHlsZS5fY3BwX3N0eWxlX3N0YXRlLmZpbHRlcnMgPSBvbGRfZmlsdGVy
cwotCiAgICAgZGVmIHRlc3RfZmlsdGVyKHNlbGYpOgogICAgICAgICBvbGRfZmlsdGVycyA9IGNw
cF9zdHlsZS5fY3BwX3N0eWxlX3N0YXRlLmZpbHRlcnMKICAgICAgICAgdHJ5OgotICAgICAgICAg
ICAgY3BwX3N0eWxlLl9jcHBfc3R5bGVfc3RhdGUuc2V0X2ZpbHRlcnMoJy0sK3doaXRlc3BhY2Us
LXdoaXRlc3BhY2UvaW5kZW50JykKKyAgICAgICAgICAgIGNwcF9zdHlsZS5fY3BwX3N0eWxlX3N0
YXRlLnNldF9maWx0ZXJzKFsnLScsICcrd2hpdGVzcGFjZScsICctd2hpdGVzcGFjZS9pbmRlbnQn
XSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCiAgICAgICAgICAgICAgICAgJy8vIEhl
bGxvIHRoZXJlICcsCiAgICAgICAgICAgICAgICAgJ0xpbmUgZW5kcyBpbiB3aGl0ZXNwYWNlLiAg
Q29uc2lkZXIgZGVsZXRpbmcgdGhlc2UgZXh0cmEgc3BhY2VzLicKQEAgLTE2NTIsMTUgKzE1Nzcs
MTMgQEAgY2xhc3MgQ3BwU3R5bGVUZXN0KENwcFN0eWxlVGVzdEJhc2UpOgogICAgICAgICBmaW5h
bGx5OgogICAgICAgICAgICAgY3BwX3N0eWxlLl9jcHBfc3R5bGVfc3RhdGUuZmlsdGVycyA9IG9s
ZF9maWx0ZXJzCiAKLSAgICBkZWYgdGVzdF9kZWZhdWx0X2ZpbHRlcihzZWxmKToKLSAgICAgICAg
ZGVmYXVsdF9maWx0ZXJfcnVsZXMgPSBjcHBfc3R5bGUuX0RFRkFVTFRfRklMVEVSX1JVTEVTCisg
ICAgZGVmIHRlc3RfZmlsdGVyX2FwcGVuZGluZyhzZWxmKToKICAgICAgICAgb2xkX2ZpbHRlcnMg
PSBjcHBfc3R5bGUuX2NwcF9zdHlsZV9zdGF0ZS5maWx0ZXJzCi0gICAgICAgIGNwcF9zdHlsZS5f
REVGQVVMVF9GSUxURVJfUlVMRVMgPSBbICctd2hpdGVzcGFjZScgXQogICAgICAgICB0cnk6CiAg
ICAgICAgICAgICAjIFJlc2V0IGZpbHRlcnMKLSAgICAgICAgICAgIGNwcF9zdHlsZS5fY3BwX3N0
eWxlX3N0YXRlLnNldF9maWx0ZXJzKCcnKQorICAgICAgICAgICAgY3BwX3N0eWxlLl9jcHBfc3R5
bGVfc3RhdGUuc2V0X2ZpbHRlcnMoWyctd2hpdGVzcGFjZSddKQogICAgICAgICAgICAgc2VsZi5h
c3NlcnRfbGludCgnLy8gSGVsbG8gdGhlcmUgJywgJycpCi0gICAgICAgICAgICBjcHBfc3R5bGUu
X2NwcF9zdHlsZV9zdGF0ZS5zZXRfZmlsdGVycygnK3doaXRlc3BhY2UvZW5kX29mX2xpbmUnKQor
ICAgICAgICAgICAgY3BwX3N0eWxlLl9jcHBfc3R5bGVfc3RhdGUuc2V0X2ZpbHRlcnMoWyctd2hp
dGVzcGFjZScsJyt3aGl0ZXNwYWNlL2VuZF9vZl9saW5lJ10pCiAgICAgICAgICAgICBzZWxmLmFz
c2VydF9saW50KAogICAgICAgICAgICAgICAgICcvLyBIZWxsbyB0aGVyZSAnLAogICAgICAgICAg
ICAgICAgICdMaW5lIGVuZHMgaW4gd2hpdGVzcGFjZS4gIENvbnNpZGVyIGRlbGV0aW5nIHRoZXNl
IGV4dHJhIHNwYWNlcy4nCkBAIC0xNjY4LDcgKzE1OTEsNiBAQCBjbGFzcyBDcHBTdHlsZVRlc3Qo
Q3BwU3R5bGVUZXN0QmFzZSk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydF9saW50KCcgd2VpcmQg
b3BlbmluZyBzcGFjZScsICcnKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgY3BwX3N0
eWxlLl9jcHBfc3R5bGVfc3RhdGUuZmlsdGVycyA9IG9sZF9maWx0ZXJzCi0gICAgICAgICAgICBj
cHBfc3R5bGUuX0RFRkFVTFRfRklMVEVSX1JVTEVTID0gZGVmYXVsdF9maWx0ZXJfcnVsZXMKIAog
ICAgIGRlZiB0ZXN0X3VubmFtZWRfbmFtZXNwYWNlc19pbl9oZWFkZXJzKHNlbGYpOgogICAgICAg
ICBzZWxmLmFzc2VydF9sYW5ndWFnZV9ydWxlc19jaGVjaygKSW5kZXg6IFNjcmlwdHMvbW9kdWxl
cy9zdHlsZS5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTY3JpcHRzL21vZHVsZXMvc3R5bGUucHkJKHJldmlz
aW9uIDUyMjk4KQorKysgU2NyaXB0cy9tb2R1bGVzL3N0eWxlLnB5CSh3b3JraW5nIGNvcHkpCkBA
IC0yOSwyNiArMjksMzg3IEBACiAiIiJGcm9udCBlbmQgb2Ygc29tZSBzdHlsZS1jaGVja2VyIG1v
ZHVsZXMuIiIiCiAKICMgRklYTUU6IE1vdmUgbW9yZSBjb2RlIGZyb20gY3BwX3N0eWxlIHRvIGhl
cmUuCi0jIGNoZWNrLXdlYmtpdC1zdHlsZSBzaG91bGQgbm90IHJlZmVyIGNwcF9zdHlsZSBkaXJl
Y3RseS4KIAoraW1wb3J0IGdldG9wdAogaW1wb3J0IG9zLnBhdGgKK2ltcG9ydCBzeXMKIAotaW1w
b3J0IG1vZHVsZXMuY3BwX3N0eWxlIGFzIGNwcF9zdHlsZQotaW1wb3J0IG1vZHVsZXMudGV4dF9z
dHlsZSBhcyB0ZXh0X3N0eWxlCi1mcm9tIG1vZHVsZXMuZGlmZl9wYXJzZXIgaW1wb3J0IERpZmZQ
YXJzZXIKK2ltcG9ydCBjcHBfc3R5bGUKK2ltcG9ydCB0ZXh0X3N0eWxlCitmcm9tIGRpZmZfcGFy
c2VyIGltcG9ydCBEaWZmUGFyc2VyCisKKworIyBUaGVzZSBkZWZhdWx0cyBhcmUgdXNlZCBieSBj
aGVjay13ZWJraXQtc3R5bGUuCitERUZBVUxUX1ZFUkJPU0lUWSA9IDEKK0RFRkFVTFRfT1VUUFVU
X0ZPUk1BVCA9ICdlbWFjcycKKworCisjIEZJWE1FOiBGb3Igc3R5bGUgY2F0ZWdvcmllcyB3ZSB3
aWxsIG5ldmVyIHdhbnQgdG8gaGF2ZSwgcmVtb3ZlIHRoZW0uCisjICAgICAgICBGb3IgY2F0ZWdv
cmllcyBmb3Igd2hpY2ggd2Ugd2FudCB0byBoYXZlIHNpbWlsYXIgZnVuY3Rpb25hbGl0eSwKKyMg
ICAgICAgIG1vZGlmeSB0aGUgaW1wbGVtZW50YXRpb24gYW5kIGVuYWJsZSB0aGVtLgorIworIyBU
aHJvdWdob3V0IHRoaXMgbW9kdWxlLCB3ZSB1c2UgImZpbHRlciBydWxlIiByYXRoZXIgdGhhbiAi
ZmlsdGVyIgorIyBmb3IgYW4gaW5kaXZpZHVhbCBib29sZWFuIGZpbHRlciBmbGFnIGxpa2UgIitm
b28iLiBUaGlzIGFsbG93cyB1cyB0bworIyByZXNlcnZlICJmaWx0ZXIiIGZvciB3aGF0IG9uZSBn
ZXRzIGJ5IGNvbGxlY3RpdmVseSBhcHBseWluZyBhbGwgb2YKKyMgdGhlIGZpbHRlciBydWxlcy4K
KyMKKyMgVGhlIF9XRUJLSVRfRklMVEVSX1JVTEVTIGFyZSBwcmVwZW5kZWQgdG8gYW55IHVzZXIt
c3BlY2lmaWVkIGZpbHRlcgorIyBydWxlcy4gU2luY2UgYnkgZGVmYXVsdCBhbGwgZXJyb3JzIGFy
ZSBvbiwgb25seSBpbmNsdWRlIHJ1bGVzIHRoYXQKKyMgYmVnaW4gd2l0aCBhIC0gc2lnbi4KK1dF
QktJVF9GSUxURVJfUlVMRVMgPSBbCisgICAgJy1idWlsZC9lbmRpZl9jb21tZW50JywKKyAgICAn
LWJ1aWxkL2hlYWRlcl9ndWFyZCcsCisgICAgJy1idWlsZC9pbmNsdWRlX3doYXRfeW91X3VzZScs
ICAjIDxzdHJpbmc+IGZvciBzdGQ6OnN0cmluZworICAgICctYnVpbGQvc3RvcmFnZV9jbGFzcycs
ICAjIGNvbnN0IHN0YXRpYworICAgICctbGVnYWwvY29weXJpZ2h0JywKKyAgICAnLXJlYWRhYmls
aXR5L211bHRpbGluZV9jb21tZW50JywKKyAgICAnLXJlYWRhYmlsaXR5L2JyYWNlcycsICAjIGlu
dCBmb28oKSB7fTsKKyAgICAnLXJlYWRhYmlsaXR5L2ZuX3NpemUnLAorICAgICctcmVhZGFiaWxp
dHkvY2FzdGluZycsCisgICAgJy1yZWFkYWJpbGl0eS9mdW5jdGlvbicsCisgICAgJy1ydW50aW1l
L2FycmF5cycsICAjIHZhcmlhYmxlIGxlbmd0aCBhcnJheQorICAgICctcnVudGltZS9jYXN0aW5n
JywKKyAgICAnLXJ1bnRpbWUvc2l6ZW9mJywKKyAgICAnLXJ1bnRpbWUvZXhwbGljaXQnLCAgIyBl
eHBsaWNpdAorICAgICctcnVudGltZS92aXJ0dWFsJywgICMgdmlydHVhbCBkdG9yCisgICAgJy1y
dW50aW1lL3ByaW50ZicsCisgICAgJy1ydW50aW1lL3RocmVhZHNhZmVfZm4nLAorICAgICctcnVu
dGltZS9ydHRpJywKKyAgICAnLXdoaXRlc3BhY2UvYmxhbmtfbGluZScsCisgICAgJy13aGl0ZXNw
YWNlL2NvbW1lbnRzJywKKyAgICAnLXdoaXRlc3BhY2UvZW5kX29mX2xpbmUnLAorICAgICctd2hp
dGVzcGFjZS9sYWJlbHMnLAorICAgIF0KIAogCi1kZWYgdXNlX3dlYmtpdF9zdHlsZXMoKToKLSAg
ICAiIiJDb25maWd1cmVzIHRoaXMgbW9kdWxlIGZvciBXZWJLaXQgc3R5bGUuIiIiCi0gICAgY3Bw
X3N0eWxlLl9ERUZBVUxUX0ZJTFRFUl9SVUxFUyA9IGNwcF9zdHlsZS5fV0VCS0lUX0ZJTFRFUl9S
VUxFUworZGVmIF9jcmVhdGVfdXNhZ2UoZGVmYXVsdHMpOgorICAgICIiIlJldHVybiB0aGUgdXNh
Z2Ugc3RyaW5nIHRvIGRpc3BsYXkgZm9yIGNvbW1hbmQgaGVscC4KIAorICAgIEFyZ3M6CisgICAg
ICBkZWZhdWx0czogQW4gQXJndW1lbnREZWZhdWx0cyBpbnN0YW5jZS4KKworICAgICIiIgorICAg
IHVzYWdlID0gIiIiCitTeW50YXg6ICUocHJvZ3JhbV9uYW1lKXMgWy0tdmVyYm9zZT0jXSBbLS1n
aXQtY29tbWl0PTxTaW5nbGVDb21taXQ+XSBbLS1vdXRwdXQ9dnM3XQorICAgICAgICBbLS1maWx0
ZXI9LXgsK3ksLi4uXSBbZmlsZV0gLi4uCisKKyAgVGhlIHN0eWxlIGd1aWRlbGluZXMgdGhpcyB0
cmllcyB0byBmb2xsb3cgYXJlIGhlcmU6CisgICAgaHR0cDovL3dlYmtpdC5vcmcvY29kaW5nL2Nv
ZGluZy1zdHlsZS5odG1sCisKKyAgRXZlcnkgc3R5bGUgZXJyb3IgaXMgZ2l2ZW4gYSBjb25maWRl
bmNlIHNjb3JlIGZyb20gMS01LCB3aXRoIDUgbWVhbmluZworICB3ZSBhcmUgY2VydGFpbiBvZiB0
aGUgcHJvYmxlbSwgYW5kIDEgbWVhbmluZyBpdCBjb3VsZCBiZSBhIGxlZ2l0aW1hdGUKKyAgY29u
c3RydWN0LiAgVGhpcyBjYW4gbWlzcyBzb21lIGVycm9ycyBhbmQgZG9lcyBub3Qgc3Vic3RpdHV0
ZSBmb3IKKyAgY29kZSByZXZpZXcuCisKKyAgVG8gcHJldmVudCBzcGVjaWZpYyBsaW5lcyBmcm9t
IGJlaW5nIGxpbnRlZCwgYWRkIGEgJy8vIE5PTElOVCcgY29tbWVudCB0byB0aGUKKyAgZW5kIG9m
IHRoZSBsaW5lLgorCisgIExpbnRlZCBleHRlbnNpb25zIGFyZSAuY3BwLCAuYyBhbmQgLmguICBP
dGhlciBmaWxlIHR5cGVzIGFyZSBpZ25vcmVkLgorCisgIFRoZSBmaWxlIHBhcmFtZXRlciBpcyBv
cHRpb25hbCBhbmQgYWNjZXB0cyBtdWx0aXBsZSBmaWxlcy4gIExlYXZpbmcKKyAgb3V0IHRoZSBm
aWxlIHBhcmFtZXRlciBhcHBsaWVzIHRoZSBjaGVjayB0byBhbGwgZmlsZXMgY29uc2lkZXJlZCBj
aGFuZ2VkCisgIGJ5IHlvdXIgc291cmNlIGNvbnRyb2wgbWFuYWdlbWVudCBzeXN0ZW0uCisKKyAg
RmxhZ3M6CisKKyAgICB2ZXJib3NlPSMKKyAgICAgIEEgbnVtYmVyIDEtNSB0aGF0IHJlc3RyaWN0
cyBvdXRwdXQgdG8gZXJyb3JzIHdpdGggYSBjb25maWRlbmNlCisgICAgICBzY29yZSBhdCBvciBh
Ym92ZSB0aGlzIHZhbHVlLiBJbiBwYXJ0aWN1bGFyLCB0aGUgdmFsdWUgMSBkaXNwbGF5cworICAg
ICAgYWxsIGVycm9ycy4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgMS4KKworICAgIGdpdC1jb21taXQ9
PFNpbmdsZUNvbW1pdD4KKyAgICAgIENoZWNrcyB0aGUgc3R5bGUgb2YgZXZlcnl0aGluZyBmcm9t
IHRoZSBnaXZlbiBjb21taXQgdG8gdGhlIGxvY2FsIHRyZWUuCisKKyAgICBvdXRwdXQ9dnM3Cisg
ICAgICBUaGUgb3V0cHV0IGZvcm1hdCwgd2hpY2ggbWF5IGJlIG9uZSBvZgorICAgICAgICBlbWFj
cyA6IHRvIGVhc2UgZW1hY3MgcGFyc2luZworICAgICAgICB2czcgICA6IGNvbXBhdGlibGUgd2l0
aCBWaXN1YWwgU3R1ZGlvCisgICAgICBEZWZhdWx0cyB0byAiJShkZWZhdWx0X291dHB1dF9mb3Jt
YXQpcyIuIE90aGVyIGZvcm1hdHMgYXJlIHVuc3VwcG9ydGVkLgorCisgICAgZmlsdGVyPS14LCt5
LC4uLgorICAgICAgQSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBib29sZWFuIGZpbHRlciBydWxl
cyB1c2VkIHRvIGZpbHRlcgorICAgICAgd2hpY2ggY2F0ZWdvcmllcyBvZiBzdHlsZSBndWlkZWxp
bmVzIHRvIGNoZWNrLiAgVGhlIHNjcmlwdCBjaGVja3MKKyAgICAgIGEgY2F0ZWdvcnkgaWYgdGhl
IGNhdGVnb3J5IHBhc3NlcyB0aGUgZmlsdGVyIHJ1bGVzLCBhcyBmb2xsb3dzLgorCisgICAgICBB
bnkgd2Via2l0IGNhdGVnb3J5IHN0YXJ0cyBvdXQgcGFzc2luZy4gIEFsbCBmaWx0ZXIgcnVsZXMg
YXJlIHRoZW4KKyAgICAgIGV2YWx1YXRlZCBsZWZ0IHRvIHJpZ2h0LCB3aXRoIGxhdGVyIHJ1bGVz
IHRha2luZyBwcmVjZWRlbmNlLiAgRm9yCisgICAgICBleGFtcGxlLCB0aGUgcnVsZSAiK2ZvbyIg
cGFzc2VzIGFueSBjYXRlZ29yeSB0aGF0IHN0YXJ0cyB3aXRoICJmb28iLAorICAgICAgYW5kICIt
Zm9vIiBmYWlscyBhbnkgc3VjaCBjYXRlZ29yeS4gIFRoZSBmaWx0ZXIgaW5wdXQgIi13aGl0ZXNw
YWNlLAorICAgICAgK3doaXRlc3BhY2UvYnJhY2VzIiBmYWlscyB0aGUgY2F0ZWdvcnkgIndoaXRl
c3BhY2UvdGFiIiBhbmQgcGFzc2VzCisgICAgICAid2hpdGVzcGFjZS9icmFjZXMiLgorCisgICAg
ICBFeGFtcGxlczogLS1maWx0ZXI9LXdoaXRlc3BhY2UsK3doaXRlc3BhY2UvYnJhY2VzCisgICAg
ICAgICAgICAgICAgLS1maWx0ZXI9LXdoaXRlc3BhY2UsLXJ1bnRpbWUvcHJpbnRmLCtydW50aW1l
L3ByaW50Zl9mb3JtYXQKKyAgICAgICAgICAgICAgICAtLWZpbHRlcj0tLCtidWlsZC9pbmNsdWRl
X3doYXRfeW91X3VzZQorCisgICAgICBDYXRlZ29yeSBuYW1lcyBhcHBlYXIgaW4gZXJyb3IgbWVz
c2FnZXMgaW4gYnJhY2tldHMsIGZvciBleGFtcGxlCisgICAgICBbd2hpdGVzcGFjZS9pbmRlbnRd
LiAgVG8gc2VlIGEgbGlzdCBvZiBhbGwgY2F0ZWdvcmllcyBhdmFpbGFibGUgdG8KKyAgICAgICUo
cHJvZ3JhbV9uYW1lKXMsIGFsb25nIHdpdGggd2hpY2ggYXJlIGVuYWJsZWQgYnkgZGVmYXVsdCwg
cGFzcworICAgICAgdGhlIGVtcHR5IGZpbHRlciBhcyBmb2xsb3dzOgorICAgICAgICAgLS1maWx0
ZXI9CisiIiIgJSB7J3Byb2dyYW1fbmFtZSc6IG9zLnBhdGguYmFzZW5hbWUoc3lzLmFyZ3ZbMF0p
LAorICAgICAgICdkZWZhdWx0X3ZlcmJvc2l0eSc6IGRlZmF1bHRzLnZlcmJvc2l0eSwKKyAgICAg
ICAnZGVmYXVsdF9vdXRwdXRfZm9ybWF0JzogZGVmYXVsdHMub3V0cHV0X2Zvcm1hdH0KKworICAg
IHJldHVybiB1c2FnZQorCisKKyMgVGhpcyBjbGFzcyBzaG91bGQgbm90IGhhdmUga25vd2xlZGdl
IG9mIHRoZSBmbGFnIGtleSBuYW1lcy4KK2NsYXNzIFByb2Nlc3Nvck9wdGlvbnMob2JqZWN0KToK
KyAgICAiIiJBIGNvbnRhaW5lciB0byBzdG9yZSBvcHRpb25zIHRvIHVzZSB3aGVuIGNoZWNraW5n
IHN0eWxlLgorCisgICAgQXR0cmlidXRlczoKKyAgICAgIG91dHB1dF9mb3JtYXQ6IEEgc3RyaW5n
IHRoYXQgaXMgdGhlIG91dHB1dCBmb3JtYXQuIFRoZSBzdXBwb3J0ZWQKKyAgICAgICAgICAgICAg
ICAgICAgIG91dHB1dCBmb3JtYXRzIGFyZSAiZW1hY3MiIHdoaWNoIGVtYWNzIGNhbiBwYXJzZQor
ICAgICAgICAgICAgICAgICAgICAgYW5kICJ2czciIHdoaWNoIE1pY3Jvc29mdCBWaXN1YWwgU3R1
ZGlvIDcgY2FuIHBhcnNlLgorICAgICAgICAgICAgICAgICAgICAgVGhlIGRlZmF1bHQgaXMgImVt
YWNzIi4KKworICAgICAgdmVyYm9zaXR5OiBBbiBpbnRlZ2VyIDEtNSB0aGF0IHJlc3RyaWN0cyBv
dXRwdXQgdG8gZXJyb3JzIHdpdGggYQorICAgICAgICAgICAgICAgICBjb25maWRlbmNlIHNjb3Jl
IGF0IG9yIGFib3ZlIHRoaXMgdmFsdWUuCisgICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IGlz
IDEsIHdoaWNoIGRpc3BsYXlzIGFsbCBlcnJvcnMuCisKKyAgICAgIGZpbHRlcl9ydWxlczogQSBs
aXN0IG9mIHN0cmluZ3MgdGhhdCBhcmUgYm9vbGVhbiBmaWx0ZXIgcnVsZXMgdXNlZAorICAgICAg
ICAgICAgICAgICAgICB0byBkZXRlcm1pbmUgd2hldGhlciBhIHN0eWxlIGNhdGVnb3J5IHNob3Vs
ZCBiZSBjaGVja2VkLgorICAgICAgICAgICAgICAgICAgICBFYWNoIHN0cmluZyBzaG91bGQgc3Rh
cnQgd2l0aCArIG9yIC0uIEFuIGV4YW1wbGUKKyAgICAgICAgICAgICAgICAgICAgc3RyaW5nIGlz
ICIrd2hpdGVzcGFjZS9pbmRlbnQiLiBUaGUgbGlzdCBpbmNsdWRlcyBhbnkKKyAgICAgICAgICAg
ICAgICAgICAgcHJlcGVuZGVkIGRlZmF1bHQgZmlsdGVyIHJ1bGVzLiBUaGUgZGVmYXVsdCBpcyB0
aGUKKyAgICAgICAgICAgICAgICAgICAgZW1wdHkgbGlzdCwgd2hpY2ggaW5jbHVkZXMgYWxsIGNh
dGVnb3JpZXMuCisKKyAgICAgIGdpdF9jb21taXQ6IEEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUg
Z2l0IGNvbW1pdCB0byBjaGVjay4KKyAgICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IGlzIE5v
bmUuCisKKyAgICAgIGV4dHJhX2ZsYWdfdmFsdWVzOiBBIHN0cmluZy1zdHJpbmcgZGljdGlvbmFy
eSBvZiBhbGwgZmxhZyBrZXktdmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICBwYWlycyB0
aGF0IGFyZSBub3Qgb3RoZXJ3aXNlIHJlcHJlc2VudGVkIGJ5IHRoaXMKKyAgICAgICAgICAgICAg
ICAgICAgICAgICBjbGFzcy4gVGhlIGRlZmF1bHQgaXMgdGhlIGVtcHR5IGRpY3Rpb25hcnkuCisK
KyAgICAiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgb3V0cHV0X2Zvcm1hdD0nZW1hY3MnLCB2
ZXJib3NpdHk9MSwgZmlsdGVyX3J1bGVzPU5vbmUsCisgICAgICAgICAgICAgICAgIGdpdF9jb21t
aXQ9Tm9uZSwgZXh0cmFfZmxhZ192YWx1ZXM9Tm9uZSk6CisgICAgICAgIGlmIGZpbHRlcl9ydWxl
cyBpcyBOb25lOgorICAgICAgICAgICAgZmlsdGVyX3J1bGVzID0gW10KKyAgICAgICAgaWYgZXh0
cmFfZmxhZ192YWx1ZXMgaXMgTm9uZToKKyAgICAgICAgICAgIGV4dHJhX2ZsYWdfdmFsdWVzIGlz
IHt9CisKKyAgICAgICAgc2VsZi5vdXRwdXRfZm9ybWF0ID0gb3V0cHV0X2Zvcm1hdAorICAgICAg
ICBzZWxmLnZlcmJvc2l0eSA9IHZlcmJvc2l0eQorICAgICAgICBzZWxmLmZpbHRlcl9ydWxlcyA9
IGZpbHRlcl9ydWxlcworICAgICAgICBzZWxmLmdpdF9jb21taXQgPSBnaXRfY29tbWl0CisgICAg
ICAgIHNlbGYuZXh0cmFfZmxhZ192YWx1ZXMgPSBleHRyYV9mbGFnX3ZhbHVlcworCisKKyMgRklY
TUU6IEVsaW1pbmF0ZSB0aGUgbmVlZCBmb3IgdGhpcyBmdW5jdGlvbi4KKyMgICAgICAgIE9wdGlv
bnMgc2hvdWxkIGJlIHBhc3NlZCBpbnRvIHByb2Nlc3NfZmlsZSBpbnN0ZWFkLgorZGVmIHNldF9v
cHRpb25zKG9wdGlvbnMpOgorICAgICIiIkluaXRpYWxpemUgZ2xvYmFsIF9DcHBTdHlsZVN0YXRl
IGluc3RhbmNlLgorCisgICAgVGhpcyBuZWVkcyB0byBiZSBjYWxsZWQgYmVmb3JlIGNhbGxpbmcg
cHJvY2Vzc19maWxlLgorCisgICAgQXJnczoKKyAgICAgIG9wdGlvbnM6IEFuIE9wdGlvbnMgaW5z
dGFuY2UuCisgICAgIiIiCisgICAgY3BwX3N0eWxlLl9zZXRfb3V0cHV0X2Zvcm1hdChvcHRpb25z
Lm91dHB1dF9mb3JtYXQpCisgICAgY3BwX3N0eWxlLl9zZXRfdmVyYm9zZV9sZXZlbChvcHRpb25z
LnZlcmJvc2l0eSkKKyAgICBjcHBfc3R5bGUuX3NldF9maWx0ZXJzKG9wdGlvbnMuZmlsdGVyX3J1
bGVzKQogCi1kZWYgcGFyc2VfYXJndW1lbnRzKGFyZ3MsIGFkZGl0aW9uYWxfZmxhZ3M9W10sIGRp
c3BsYXlfaGVscD1GYWxzZSk6Ci0gICAgIiIiUGFyc2VzIHRoZSBjb21tYW5kIGxpbmUgYXJndW1l
bnRzLgogCi0gICAgU2VlIGNwcF9zdHlsZS5wYXJzZV9hcmd1bWVudHMoKSBmb3IgZGV0YWlscy4K
KyMgVGhpcyBjbGFzcyBzaG91bGQgbm90IGhhdmUga25vd2xlZGdlIG9mIHRoZSBmbGFnIGtleSBu
YW1lcy4KK2NsYXNzIEFyZ3VtZW50RGVmYXVsdHMob2JqZWN0KToKKyAgICAiIiJBIGNvbnRhaW5l
ciB0byBzdG9yZSBkZWZhdWx0IGFyZ3VtZW50IHZhbHVlcy4KKworICAgIEF0dHJpYnV0ZXM6Cisg
ICAgICBvdXRwdXRfZm9ybWF0OiBBIHN0cmluZyB0aGF0IGlzIHRoZSBkZWZhdWx0IG91dHB1dCBm
b3JtYXQuCisgICAgICB2ZXJib3NpdHk6IEFuIGludGVnZXIgdGhhdCBpcyB0aGUgZGVmYXVsdCB2
ZXJib3NpdHkgbGV2ZWwuCisgICAgICBmaWx0ZXJfcnVsZXM6IEEgbGlzdCBvZiBzdHJpbmdzIHRo
YXQgYXJlIGJvb2xlYW4gZmlsdGVyIHJ1bGVzCisgICAgICAgICAgICAgICAgICAgIHRvIHByZXBl
bmQgdG8gYW55IHVzZXItc3BlY2lmaWVkIHJ1bGVzLgorCiAgICAgIiIiCi0gICAgcmV0dXJuIGNw
cF9zdHlsZS5wYXJzZV9hcmd1bWVudHMoYXJncywgYWRkaXRpb25hbF9mbGFncywgZGlzcGxheV9o
ZWxwKQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkZWZhdWx0X291dHB1dF9mb3JtYXQsIGRlZmF1
bHRfdmVyYm9zaXR5LAorICAgICAgICAgICAgICAgICBkZWZhdWx0X2ZpbHRlcl9ydWxlcyk6Cisg
ICAgICAgIHNlbGYub3V0cHV0X2Zvcm1hdCA9IGRlZmF1bHRfb3V0cHV0X2Zvcm1hdAorICAgICAg
ICBzZWxmLnZlcmJvc2l0eSA9IGRlZmF1bHRfdmVyYm9zaXR5CisgICAgICAgIHNlbGYuZmlsdGVy
X3J1bGVzID0gZGVmYXVsdF9maWx0ZXJfcnVsZXMKKworCitjbGFzcyBBcmd1bWVudFByaW50ZXIo
b2JqZWN0KToKKyAgICAiIiJTdXBwb3J0cyB0aGUgcHJpbnRpbmcgb2YgY2hlY2std2Via2l0LXN0
eWxlIGNvbW1hbmQgYXJndW1lbnRzLiIiIgorICAgIGRlZiBfZmxhZ19wYWlyX3RvX3N0cmluZyhz
ZWxmLCBmbGFnX2tleSwgZmxhZ192YWx1ZSk6CisgICAgICAgIHJldHVybiAnLS0lKGtleSlzPSUo
dmFsKXMnICUgeydrZXknOiBmbGFnX2tleSwgJ3ZhbCc6IGZsYWdfdmFsdWUgfQorCisgICAgZGVm
IHRvX2ZsYWdfc3RyaW5nKHNlbGYsIG9wdGlvbnMpOgorICAgICAgICAiIiJSZXR1cm4gYSBmbGFn
IHN0cmluZyB5aWVsZGluZyB0aGUgZ2l2ZW4gT3B0aW9ucyBpbnN0YW5jZS4KKworICAgICAgICBU
aGlzIG1ldGhvZCBvcmRlcnMgdGhlIGZsYWcgdmFsdWVzIGFscGhhYmV0aWNhbGx5IGJ5IHRoZSBm
bGFnIGtleS4KKworICAgICAgICBBcmdzOgorICAgICAgICAgIG9wdGlvbnM6IEFuIE9wdGlvbnMg
aW5zdGFuY2UuCisKKyAgICAgICAgIiIiCisgICAgICAgIGZsYWdzID0gb3B0aW9ucy5leHRyYV9m
bGFnX3ZhbHVlcy5jb3B5KCkKKworICAgICAgICBmbGFnc1snb3V0cHV0J10gPSBvcHRpb25zLm91
dHB1dF9mb3JtYXQKKyAgICAgICAgZmxhZ3NbJ3ZlcmJvc2UnXSA9IG9wdGlvbnMudmVyYm9zaXR5
CisgICAgICAgIGlmIG9wdGlvbnMuZmlsdGVyX3J1bGVzOgorICAgICAgICAgICAgZmxhZ3NbJ2Zp
bHRlciddID0gJywnLmpvaW4ob3B0aW9ucy5maWx0ZXJfcnVsZXMpCisgICAgICAgIGlmIG9wdGlv
bnMuZ2l0X2NvbW1pdDoKKyAgICAgICAgICAgIGZsYWdzWydnaXQtY29tbWl0J10gPSBvcHRpb25z
LmdpdF9jb21taXQKKworICAgICAgICBmbGFnX3N0cmluZyA9ICcnCisgICAgICAgICMgQWxwaGFi
ZXRpemluZyBsZXRzIHVzIHVuaXQgdGVzdCB0aGlzIG1ldGhvZC4KKyAgICAgICAgZm9yIGtleSBp
biBzb3J0ZWQoZmxhZ3Mua2V5cygpKToKKyAgICAgICAgICAgIGZsYWdfc3RyaW5nICs9IHNlbGYu
X2ZsYWdfcGFpcl90b19zdHJpbmcoa2V5LCBmbGFnc1trZXldKSArICcgJworCisgICAgICAgIHJl
dHVybiBmbGFnX3N0cmluZy5zdHJpcCgpCisKKworY2xhc3MgQXJndW1lbnRQYXJzZXIob2JqZWN0
KToKKyAgICAiIiJTdXBwb3J0cyB0aGUgcGFyc2luZyBvZiBjaGVjay13ZWJraXQtc3R5bGUgY29t
bWFuZCBhcmd1bWVudHMuCisKKyAgICBBdHRyaWJ1dGVzOgorICAgICAgZGVmYXVsdHM6IEFuIEFy
Z3VtZW50RGVmYXVsdHMgaW5zdGFuY2UuCisgICAgICBjcmVhdGVfdXNhZ2U6IEEgZnVuY3Rpb24g
dGhhdCBhY2NlcHRzIGFuIEFyZ3VtZW50RGVmYXVsdHMgaW5zdGFuY2UKKyAgICAgICAgICAgICAg
ICAgICAgYW5kIHJldHVybnMgYSBzdHJpbmcgb2YgdXNhZ2UgaW5zdHJ1Y3Rpb25zLgorICAgICAg
ICAgICAgICAgICAgICBUaGlzIGRlZmF1bHRzIHRvIHRoZSBmdW5jdGlvbiB0aGF0IGdlbmVyYXRl
cyB0aGUKKyAgICAgICAgICAgICAgICAgICAgdXNhZ2Ugc3RyaW5nIGZvciBjaGVjay13ZWJraXQt
c3R5bGUuCisgICAgICBkb2NfcHJpbnQ6IEEgZnVuY3Rpb24gdGhhdCBhY2NlcHRzIGEgc3RyaW5n
IHBhcmFtZXRlciBhbmQgdGhhdCBpcworICAgICAgICAgICAgICAgICBjYWxsZWQgdG8gZGlzcGxh
eSBoZWxwIG1lc3NhZ2VzLiBUaGlzIGRlZmF1bHRzIHRvCisgICAgICAgICAgICAgICAgIHN5cy5z
dGRlcnIud3JpdGUoKS4KKworICAgICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhcmd1bWVu
dF9kZWZhdWx0cywgY3JlYXRlX3VzYWdlPU5vbmUsIGRvY19wcmludD1Ob25lKToKKyAgICAgICAg
aWYgY3JlYXRlX3VzYWdlIGlzIE5vbmU6CisgICAgICAgICAgICBjcmVhdGVfdXNhZ2UgPSBfY3Jl
YXRlX3VzYWdlCisgICAgICAgIGlmIGRvY19wcmludCBpcyBOb25lOgorICAgICAgICAgICAgZG9j
X3ByaW50ID0gc3lzLnN0ZGVyci53cml0ZQorCisgICAgICAgIHNlbGYuZGVmYXVsdHMgPSBhcmd1
bWVudF9kZWZhdWx0cworICAgICAgICBzZWxmLmNyZWF0ZV91c2FnZSA9IGNyZWF0ZV91c2FnZQor
ICAgICAgICBzZWxmLmRvY19wcmludCA9IGRvY19wcmludAorCisgICAgZGVmIF9leGl0X3dpdGhf
dXNhZ2Uoc2VsZiwgZXJyb3JfbWVzc2FnZT0nJyk6CisgICAgICAgICIiIkV4aXQgYW5kIHByaW50
IGEgdXNhZ2Ugc3RyaW5nIHdpdGggYW4gb3B0aW9uYWwgZXJyb3IgbWVzc2FnZS4KKworICAgICAg
ICBBcmdzOgorICAgICAgICAgIGVycm9yX21lc3NhZ2U6IEEgc3RyaW5nIHRoYXQgaXMgYW4gZXJy
b3IgbWVzc2FnZSB0byBwcmludC4KKyAgICAgICAgIiIiCisgICAgICAgIHVzYWdlID0gc2VsZi5j
cmVhdGVfdXNhZ2Uoc2VsZi5kZWZhdWx0cykKKyAgICAgICAgc2VsZi5kb2NfcHJpbnQodXNhZ2Up
CisgICAgICAgIGlmIGVycm9yX21lc3NhZ2U6CisgICAgICAgICAgICBzeXMuZXhpdCgnXG5GQVRB
TCBFUlJPUjogJyArIGVycm9yX21lc3NhZ2UpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBz
eXMuZXhpdCgxKQorCisgICAgZGVmIF9leGl0X3dpdGhfY2F0ZWdvcmllcyhzZWxmKToKKyAgICAg
ICAgIiIiRXhpdCBhbmQgcHJpbnQgdGhlIHN0eWxlIGNhdGVnb3JpZXMgYW5kIGRlZmF1bHQgZmls
dGVyIHJ1bGVzLiIiIgorICAgICAgICBzZWxmLmRvY19wcmludCgnXG5BbGwgY2F0ZWdvcmllczpc
bicpCisgICAgICAgIGZvciBjYXRlZ29yeSBpbiBzb3J0ZWQoY3BwX3N0eWxlLl9TVFlMRV9DQVRF
R09SSUVTKToKKyAgICAgICAgICAgIHNlbGYuZG9jX3ByaW50KCcgICAgJyArIGNhdGVnb3J5ICsg
J1xuJykKKworICAgICAgICBzZWxmLmRvY19wcmludCgnXG5EZWZhdWx0IGZpbHRlciBydWxlcyoq
OlxuJykKKyAgICAgICAgZm9yIGZpbHRlcl9ydWxlIGluIHNvcnRlZChzZWxmLmRlZmF1bHRzLmZp
bHRlcl9ydWxlcyk6CisgICAgICAgICAgICBzZWxmLmRvY19wcmludCgnICAgICcgKyBmaWx0ZXJf
cnVsZSArICdcbicpCisgICAgICAgIHNlbGYuZG9jX3ByaW50KCdcbioqVGhlIGNvbW1hbmQgYWx3
YXlzIGV2YWx1YXRlcyB0aGUgYWJvdmUgcnVsZXMsICcKKyAgICAgICAgICAgICAgICAgICAgICAg
J2FuZCBiZWZvcmUgYW55IC0tZmlsdGVyIGZsYWcuXG5cbicpCisKKyAgICAgICAgc3lzLmV4aXQo
MCkKKworICAgIGRlZiBfcGFyc2VfZmlsdGVyX2ZsYWcoc2VsZiwgZmxhZ192YWx1ZSk6CisgICAg
ICAgICIiIlBhcnNlIHRoZSB2YWx1ZSBvZiB0aGUgLS1maWx0ZXIgZmxhZy4KKworICAgICAgICBU
aGVzZSBmaWx0ZXJzIGFyZSBhcHBsaWVkIHdoZW4gZGVjaWRpbmcgd2hldGhlciB0byBlbWl0IGEg
Z2l2ZW4KKyAgICAgICAgZXJyb3IgbWVzc2FnZS4KKworICAgICAgICBBcmdzOgorICAgICAgICAg
IGZsYWdfdmFsdWU6IEEgc3RyaW5nIG9mIGNvbW1hLXNlcGFyYXRlZCBmaWx0ZXIgcnVsZXMsIGZv
cgorICAgICAgICAgICAgICAgICAgICAgIGV4YW1wbGUgIi13aGl0ZXNwYWNlLCt3aGl0ZXNwYWNl
L2luZGVudCIuCisKKyAgICAgICAgIiIiCisgICAgICAgIGZpbHRlcnMgPSBbXQorICAgICAgICBm
b3IgdW5jbGVhbmVkX2ZpbHRlciBpbiBmbGFnX3ZhbHVlLnNwbGl0KCcsJyk6CisgICAgICAgICAg
ICBmaWx0ZXIgPSB1bmNsZWFuZWRfZmlsdGVyLnN0cmlwKCkKKyAgICAgICAgICAgIGlmIG5vdCBm
aWx0ZXI6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGZpbHRlcnMuYXBw
ZW5kKGZpbHRlcikKKyAgICAgICAgcmV0dXJuIGZpbHRlcnMKKworICAgIGRlZiBwYXJzZShzZWxm
LCBhcmdzLCBleHRyYV9mbGFncz1bXSk6CisgICAgICAgICIiIlBhcnNlIHRoZSBjb21tYW5kIGxp
bmUgYXJndW1lbnRzIHRvIGNoZWNrLXdlYmtpdC1zdHlsZS4KKworICAgICAgICBBcmdzOgorICAg
ICAgICAgIGFyZ3M6IEEgbGlzdCBvZiBjb21tYW5kLWxpbmUgYXJndW1lbnRzIGFzIHJldHVybmVk
IGJ5IHN5cy5hcmd2WzE6XS4KKyAgICAgICAgICBleHRyYV9mbGFnczogQSBsaXN0IG9mIGZsYWdz
IG5vdCBzdXBwb3J0ZWQgYnkgdGhlIE9wdGlvbnMgY2xhc3MuCisgICAgICAgICAgICAgICAgICAg
ICAgIEZvciBleGFtcGxlLCAibmV3X2ZsYWc9IiBpcyBzdWNoIGEgZmxhZy4KKworICAgICAgICBS
ZXR1cm5zOgorICAgICAgICAgIEEgdHVwbGUgb2YgKGZpbGVuYW1lcywgb3B0aW9ucykKKworICAg
ICAgICAgIGZpbGVuYW1lczogVGhlIGxpc3Qgb2YgZmlsZW5hbWVzIHRvIGNoZWNrLgorICAgICAg
ICAgIG9wdGlvbnM6IEFuIE9wdGlvbnMgaW5zdGFuY2UuCisKKyAgICAgICAgIiIiCisgICAgICAg
IG91dHB1dF9mb3JtYXQgPSBzZWxmLmRlZmF1bHRzLm91dHB1dF9mb3JtYXQKKyAgICAgICAgdmVy
Ym9zaXR5ID0gc2VsZi5kZWZhdWx0cy52ZXJib3NpdHkKKyAgICAgICAgZmlsdGVyX3J1bGVzID0g
c2VsZi5kZWZhdWx0cy5maWx0ZXJfcnVsZXMKKworICAgICAgICAjIFRoZSBmbGFncyBhbHJlYWR5
IHN1cHBvcnRlZCBieSB0aGUgT3B0aW9ucyBjbGFzcy4KKyAgICAgICAgZmxhZ3MgPSBbJ2hlbHAn
LCAnb3V0cHV0PScsICd2ZXJib3NlPScsICdmaWx0ZXI9JywgJ2dpdC1jb21taXQ9J10KKworICAg
ICAgICBmb3IgZXh0cmFfZmxhZyBpbiBleHRyYV9mbGFnczoKKyAgICAgICAgICAgIGlmIGV4dHJh
X2ZsYWcgaW4gZmxhZ3M6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignRmxhZyBc
JyUoZXh0cmFfZmxhZylzIGlzIGR1cGxpY2F0ZWQgJworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ29yIGFscmVhZHkgc3VwcG9ydGVkLicgJQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgeydleHRyYV9mbGFnJzogZXh0cmFfZmxhZyB9KQorICAgICAgICAgICAgZmxh
Z3MuYXBwZW5kKGV4dHJhX2ZsYWcpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgKG9wdHMs
IGZpbGVuYW1lcykgPSBnZXRvcHQuZ2V0b3B0KGFyZ3MsICcnLCBmbGFncykKKyAgICAgICAgZXhj
ZXB0IGdldG9wdC5HZXRvcHRFcnJvcjoKKyAgICAgICAgICAgIHNlbGYuX2V4aXRfd2l0aF91c2Fn
ZSgnSW52YWxpZCBhcmd1bWVudHMuJykKKworICAgICAgICBleHRyYV9mbGFnX3ZhbHVlcyA9IHt9
CisgICAgICAgIGdpdF9jb21taXQgPSBOb25lCisKKyAgICAgICAgZm9yIChvcHQsIHZhbCkgaW4g
b3B0czoKKyAgICAgICAgICAgIGlmIG9wdCA9PSAnLS1oZWxwJzoKKyAgICAgICAgICAgICAgICBz
ZWxmLl9leGl0X3dpdGhfdXNhZ2UoKQorICAgICAgICAgICAgZWxpZiBvcHQgPT0gJy0tb3V0cHV0
JzoKKyAgICAgICAgICAgICAgICBvdXRwdXRfZm9ybWF0ID0gdmFsCisgICAgICAgICAgICBlbGlm
IG9wdCA9PSAnLS12ZXJib3NlJzoKKyAgICAgICAgICAgICAgICB2ZXJib3NpdHkgPSB2YWwKKyAg
ICAgICAgICAgIGVsaWYgb3B0ID09ICctLWdpdC1jb21taXQnOgorICAgICAgICAgICAgICAgIGdp
dF9jb21taXQgPSB2YWwKKyAgICAgICAgICAgIGVsaWYgb3B0ID09ICctLWZpbHRlcic6CisgICAg
ICAgICAgICAgICAgaWYgbm90IHZhbDoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXhpdF93
aXRoX2NhdGVnb3JpZXMoKQorICAgICAgICAgICAgICAgICMgUHJlcGVuZCB0aGUgZGVmYXVsdHMu
CisgICAgICAgICAgICAgICAgZmlsdGVyX3J1bGVzID0gZmlsdGVyX3J1bGVzICsgc2VsZi5fcGFy
c2VfZmlsdGVyX2ZsYWcodmFsKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBl
eHRyYV9mbGFnX3ZhbHVlc1tvcHRdID0gdmFsCisKKyAgICAgICAgIyBDaGVjayB2YWxpZGl0eSBv
ZiByZXN1bHRpbmcgdmFsdWVzLgorICAgICAgICBpZiBmaWxlbmFtZXMgYW5kIChnaXRfY29tbWl0
ICE9IE5vbmUpOgorICAgICAgICAgICAgc2VsZi5fZXhpdF93aXRoX3VzYWdlKCdJdCBpcyBub3Qg
cG9zc2libGUgdG8gY2hlY2sgZmlsZXMgYW5kIGEgJworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdzcGVjaWZpYyBjb21taXQgYXQgdGhlIHNhbWUgdGltZS4nKQorCisgICAgICAg
IGlmIG91dHB1dF9mb3JtYXQgbm90IGluICgnZW1hY3MnLCAndnM3Jyk6CisgICAgICAgICAgICBy
YWlzZSBWYWx1ZUVycm9yKCdJbnZhbGlkIC0tb3V0cHV0IHZhbHVlICIlcyI6IFRoZSBvbmx5ICcK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FsbG93ZWQgb3V0cHV0IGZvcm1hdHMgYXJl
IGVtYWNzIGFuZCB2czcuJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dF9m
b3JtYXQpCisKKyAgICAgICAgdmVyYm9zaXR5ID0gaW50KHZlcmJvc2l0eSkKKyAgICAgICAgaWYg
KCh2ZXJib3NpdHkgPCAxKSBvciAodmVyYm9zaXR5ID4gNSkpOgorICAgICAgICAgICAgcmFpc2Ug
VmFsdWVFcnJvcignSW52YWxpZCAtLXZlcmJvc2UgdmFsdWUgJXM6IHZhbHVlIG11c3QgJworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnYmUgYmV0d2VlbiAxLTUuJyAlIHZlcmJvc2l0eSkK
KworICAgICAgICBmb3IgcnVsZSBpbiBmaWx0ZXJfcnVsZXM6CisgICAgICAgICAgICBpZiBub3Qg
KHJ1bGUuc3RhcnRzd2l0aCgnKycpIG9yIHJ1bGUuc3RhcnRzd2l0aCgnLScpKToKKyAgICAgICAg
ICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdJbnZhbGlkIGZpbHRlciBydWxlICIlcyI6IGV2ZXJ5
IHJ1bGUgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3J1bGUgaW4gdGhlIC0t
ZmlsdGVyIGZsYWcgbXVzdCBzdGFydCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnd2l0aCArIG9yIC0uJyAlIHJ1bGUpCisKKyAgICAgICAgb3B0aW9ucyA9IFByb2Nlc3Nvck9w
dGlvbnMob3V0cHV0X2Zvcm1hdCwgdmVyYm9zaXR5LCBmaWx0ZXJfcnVsZXMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBnaXRfY29tbWl0LCBleHRyYV9mbGFnX3ZhbHVlcykKKwor
ICAgICAgICByZXR1cm4gKGZpbGVuYW1lcywgb3B0aW9ucykKIAogCiBkZWYgcHJvY2Vzc19maWxl
KGZpbGVuYW1lKToKSW5kZXg6IFNjcmlwdHMvbW9kdWxlcy9zdHlsZV91bml0dGVzdC5weQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTY3JpcHRzL21vZHVsZXMvc3R5bGVfdW5pdHRlc3QucHkJKHJldmlzaW9uIDAp
CisrKyBTY3JpcHRzL21vZHVsZXMvc3R5bGVfdW5pdHRlc3QucHkJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMjA0IEBACisjIS91c3IvYmluL3B5dGhvbgorIyAtKi0gY29kaW5nOiB1dGYtODsgLSot
CisjCisjIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIyBDb3B5cmlnaHQgKEMpIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4KKyMgQ29weXJpZ2h0IChD
KSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisj
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
KyIiIlVuaXQgdGVzdHMgZm9yIHN0eWxlLnB5LiIiIgorCitpbXBvcnQgdW5pdHRlc3QKKworaW1w
b3J0IHN0eWxlCitmcm9tIGNwcF9zdHlsZSBpbXBvcnQgX1NUWUxFX0NBVEVHT1JJRVMKKworCitj
bGFzcyBEZWZhdWx0QXJndW1lbnRzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiVGVz
dHMgdmFsaWRpdHkgb2YgZGVmYXVsdCBhcmd1bWVudHMgdXNlZCBieSBjaGVjay13ZWJraXQtc3R5
bGUuIiIiCisgICAgZGVmIHRlc3RfZmlsdGVyX3J1bGVzKHNlbGYpOgorICAgICAgICBhbHJlYWR5
X3NlZW4gPSBbXQorICAgICAgICBmb3IgcnVsZSBpbiBzdHlsZS5XRUJLSVRfRklMVEVSX1JVTEVT
OgorICAgICAgICAgICAgIyBBbGwgY2F0ZWdvcmllcyBhcmUgb24gYnkgZGVmYXVsdCwgc28gZGVm
YXVsdHMgc2hvdWxkCisgICAgICAgICAgICAjIGJlZ2luIHdpdGggLS4KKyAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWxzKHJ1bGUuc3RhcnRzd2l0aCgnLScpLCBUcnVlKQorICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbHMocnVsZVsxOl0gaW4gX1NUWUxFX0NBVEVHT1JJRVMsIFRydWUpCisg
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhydWxlIGluIGFscmVhZHlfc2VlbiwgRmFsc2Up
CisgICAgICAgICAgICBhbHJlYWR5X3NlZW4uYXBwZW5kKHJ1bGUpCisKKyAgICBkZWYgdGVzdF9k
ZWZhdWx0cyhzZWxmKToKKyAgICAgICAgZGVmYXVsdHMgPSBzdHlsZS5Bcmd1bWVudERlZmF1bHRz
KHN0eWxlLkRFRkFVTFRfT1VUUFVUX0ZPUk1BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0eWxlLkRFRkFVTFRfVkVSQk9TSVRZLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGUuV0VCS0lUX0ZJTFRFUl9SVUxFUykKKyAg
ICAgICAgcGFyc2VyID0gc3R5bGUuQXJndW1lbnRQYXJzZXIoZGVmYXVsdHMpCisgICAgICAgIHBh
cnNlci5wYXJzZShbXSkgIyB3b3JrcworCisKK2NsYXNzIEFyZ3VtZW50UHJpbnRlclRlc3QodW5p
dHRlc3QuVGVzdENhc2UpOgorICAgICIiIlRlc3QgdGhlIEFyZ3VtZW50UHJpbnRlciBjbGFzcy4i
IiIKKyAgICBfcHJpbnRlciA9IHN0eWxlLkFyZ3VtZW50UHJpbnRlcigpCisKKyAgICBkZWYgX2Ny
ZWF0ZV9vcHRpb25zKHNlbGYsIG91dHB1dF9mb3JtYXQ9J2VtYWNzJywgdmVyYm9zaXR5PTMsCisg
ICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJfcnVsZXM9W10sIGdpdF9jb21taXQ9Tm9uZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhX2ZsYWdfdmFsdWVzPXt9KToKKyAgICAgICAg
cmV0dXJuIHN0eWxlLlByb2Nlc3Nvck9wdGlvbnMob3V0cHV0X2Zvcm1hdCwgdmVyYm9zaXR5LCBm
aWx0ZXJfcnVsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdpdF9j
b21taXQsIGV4dHJhX2ZsYWdfdmFsdWVzKQorCisgICAgZGVmIHRlc3RfdG9fZmxhZ19zdHJpbmco
c2VsZik6CisgICAgICAgIG9wdGlvbnMgPSBzZWxmLl9jcmVhdGVfb3B0aW9ucygndnM3JywgNSwg
WycrZm9vJywgJy1iYXInXSwgJ2dpdCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB7J2EnOiAwLCAneic6IDF9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnLS1h
PTAgLS1maWx0ZXI9K2ZvbywtYmFyIC0tZ2l0LWNvbW1pdD1naXQgJworICAgICAgICAgICAgICAg
ICAgICAgICAgICAnLS1vdXRwdXQ9dnM3IC0tdmVyYm9zZT01IC0tej0xJywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2VsZi5fcHJpbnRlci50b19mbGFnX3N0cmluZyhvcHRpb25zKSkKKwor
ICAgICAgICAjIFRoaXMgaXMgdG8gY2hlY2sgdGhhdCAtLWZpbHRlciBhbmQgLS1naXQtY29tbWl0
IGRvIG5vdAorICAgICAgICAjIHNob3cgdXAgd2hlbiBub3QgdXNlci1zcGVjaWZpZWQuCisgICAg
ICAgIG9wdGlvbnMgPSBzZWxmLl9jcmVhdGVfb3B0aW9ucygpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWxzKCctLW91dHB1dD1lbWFjcyAtLXZlcmJvc2U9MycsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNlbGYuX3ByaW50ZXIudG9fZmxhZ19zdHJpbmcob3B0aW9ucykpCisKKworY2xhc3Mg
QXJndW1lbnRQYXJzZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJUZXN0IHRoZSBB
cmd1bWVudFBhcnNlciBjbGFzcy4iIiIKKyAgICBkZWYgX3BhcnNlKHNlbGYpOgorICAgICAgICAi
IiJSZXR1cm4gYSBkZWZhdWx0IHBhcnNlKCkgZnVuY3Rpb24gZm9yIHRlc3RpbmcuIiIiCisgICAg
ICAgIHJldHVybiBzZWxmLl9jcmVhdGVfcGFyc2VyKCkucGFyc2UKKworICAgIGRlZiBfY3JlYXRl
X2RlZmF1bHRzKHNlbGYsIGRlZmF1bHRfb3V0cHV0X2Zvcm1hdD0ndnM3JywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBkZWZhdWx0X3ZlcmJvc2l0eT0zLAorICAgICAgICAgICAgICAgICAgICAg
ICAgIGRlZmF1bHRfZmlsdGVyX3J1bGVzPVsnLScsICcrd2hpdGVzcGFjZSddKToKKyAgICAgICAg
IiIiIlJldHVybiBhIGRlZmF1bHQgQXJndW1lbnREZWZhdWx0cyBpbnN0YW5jZSBmb3IgdGVzdGlu
Zy4iIiIKKyAgICAgICAgcmV0dXJuIHN0eWxlLkFyZ3VtZW50RGVmYXVsdHMoZGVmYXVsdF9vdXRw
dXRfZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0
X3ZlcmJvc2l0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVs
dF9maWx0ZXJfcnVsZXMpCisKKyAgICBkZWYgX2NyZWF0ZV9wYXJzZXIoc2VsZiwgZGVmYXVsdHM9
Tm9uZSk6CisgICAgICAgICIiIiJSZXR1cm4gYSBDb21tYW5kUGFyc2VyIGluc3RhbmNlIGZvciB0
ZXN0aW5nLiIiIgorICAgICAgICBkZWYgY3JlYXRlX3VzYWdlKF9kZWZhdWx0cyk6CisgICAgICAg
ICAgICAiIiJSZXR1cm4gYSB1c2FnZSBzdHJpbmcgZm9yIHRlc3RpbmcuIiIiCisgICAgICAgICAg
ICByZXR1cm4gInVzYWdlIjsKKworICAgICAgICBkZWYgZG9jX3ByaW50KG1lc3NhZ2UpOgorICAg
ICAgICAgICAgIyBXZSBkbyBub3Qgd2FudCB0aGUgdXNhZ2Ugc3RyaW5nIG9yIHN0eWxlIGNhdGVn
b3JpZXMKKyAgICAgICAgICAgICMgdG8gcHJpbnQgZHVyaW5nIHVuaXQgdGVzdHMsIHNvIHByaW50
IG5vdGhpbmcuCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBpZiBkZWZhdWx0cyBpcyBO
b25lOgorICAgICAgICAgICAgZGVmYXVsdHMgPSBzZWxmLl9jcmVhdGVfZGVmYXVsdHMoKQorCisg
ICAgICAgIHJldHVybiBzdHlsZS5Bcmd1bWVudFBhcnNlcihkZWZhdWx0cywgY3JlYXRlX3VzYWdl
LCBkb2NfcHJpbnQpCisKKyAgICBkZWYgdGVzdF9wYXJzZV9kb2N1bWVudGF0aW9uKHNlbGYpOgor
ICAgICAgICBwYXJzZSA9IHNlbGYuX3BhcnNlKCkKKworICAgICAgICAjIEZJWE1FOiBUZXN0IGJv
dGggdGhlIHByaW50aW5nIG9mIHRoZSB1c2FnZSBzdHJpbmcgYW5kIHRoZQorICAgICAgICAjICAg
ICAgICBmaWx0ZXIgY2F0ZWdvcmllcyBoZWxwLgorCisgICAgICAgICMgUmVxdWVzdCB0aGUgdXNh
Z2Ugc3RyaW5nLgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeXN0ZW1FeGl0LCBwYXJzZSwg
WyctLWhlbHAnXSkKKyAgICAgICAgIyBSZXF1ZXN0IGRlZmF1bHQgZmlsdGVyIHJ1bGVzIGFuZCBh
dmFpbGFibGUgc3R5bGUgY2F0ZWdvcmllcy4KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3lz
dGVtRXhpdCwgcGFyc2UsIFsnLS1maWx0ZXI9J10pCisKKyAgICBkZWYgdGVzdF9wYXJzZV9iYWRf
dmFsdWVzKHNlbGYpOgorICAgICAgICBwYXJzZSA9IHNlbGYuX3BhcnNlKCkKKworICAgICAgICAj
IFBhc3MgYW4gdW5zdXBwb3J0ZWQgYXJndW1lbnQuCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2Vz
KFN5c3RlbUV4aXQsIHBhcnNlLCBbJy0tYmFkJ10pCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlz
ZXMoVmFsdWVFcnJvciwgcGFyc2UsIFsnLS12ZXJib3NlPWJhZCddKQorICAgICAgICBzZWxmLmFz
c2VydFJhaXNlcyhWYWx1ZUVycm9yLCBwYXJzZSwgWyctLXZlcmJvc2U9MCddKQorICAgICAgICBz
ZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBwYXJzZSwgWyctLXZlcmJvc2U9NiddKQorICAg
ICAgICBwYXJzZShbJy0tdmVyYm9zZT0xJ10pICMgd29ya3MKKyAgICAgICAgcGFyc2UoWyctLXZl
cmJvc2U9NSddKSAjIHdvcmtzCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJv
ciwgcGFyc2UsIFsnLS1vdXRwdXQ9YmFkJ10pCisgICAgICAgIHBhcnNlKFsnLS1vdXRwdXQ9dnM3
J10pICMgd29ya3MKKworICAgICAgICAjIFBhc3MgYSBmaWx0ZXIgcnVsZSBub3QgYmVnaW5uaW5n
IHdpdGggKyBvciAtLgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBwYXJz
ZSwgWyctLWZpbHRlcj1mb28nXSkKKyAgICAgICAgcGFyc2UoWyctLWZpbHRlcj0rZm9vJ10pICMg
d29ya3MKKyAgICAgICAgIyBQYXNzIGZpbGVzIGFuZCBnaXQtY29tbWl0IGF0IHRoZSBzYW1lIHRp
bWUuCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5c3RlbUV4aXQsIHBhcnNlLCBbJy0tZ2l0
LWNvbW1pdD0nLCAnZmlsZS50eHQnXSkKKyAgICAgICAgIyBQYXNzIGFuIGV4dHJhIGZsYWcgYWxy
ZWFkeSBzdXBwb3J0ZWQuCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHBh
cnNlLCBbXSwgWydmaWx0ZXI9J10pCisgICAgICAgIHBhcnNlKFtdLCBbJ2V4dHJhPSddKSAjIHdv
cmtzCisgICAgICAgICMgUGFzcyBhbiBleHRyYSBmbGFnIHdpdGggdHlwby4KKyAgICAgICAgc2Vs
Zi5hc3NlcnRSYWlzZXMoU3lzdGVtRXhpdCwgcGFyc2UsIFsnLS1leHRyYXR5cG89J10sIFsnZXh0
cmE9J10pCisgICAgICAgIHBhcnNlKFsnLS1leHRyYT0nXSwgWydleHRyYT0nXSkgIyB3b3Jrcwor
ICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBwYXJzZSwgW10sIFsnZXh0cmE9
JywgJ2V4dHJhPSddKQorICAgICAgICAKKworICAgIGRlZiB0ZXN0X3BhcnNlX2RlZmF1bHRfYXJn
dW1lbnRzKHNlbGYpOgorICAgICAgICBwYXJzZSA9IHNlbGYuX3BhcnNlKCkKKworICAgICAgICAo
ZmlsZXMsIG9wdGlvbnMpID0gcGFyc2UoW10pCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMo
ZmlsZXMsIFtdKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG9wdGlvbnMub3V0cHV0X2Zv
cm1hdCwgJ3ZzNycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG9wdGlvbnMudmVyYm9zaXR5
LCAzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhvcHRpb25zLmZpbHRlcl9ydWxlcywgWyct
JywgJyt3aGl0ZXNwYWNlJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG9wdGlvbnMuZ2l0
X2NvbW1pdCwgTm9uZSkKKworICAgIGRlZiB0ZXN0X3BhcnNlX2V4cGxpY2l0X2FyZ3VtZW50cyhz
ZWxmKToKKyAgICAgICAgcGFyc2UgPSBzZWxmLl9wYXJzZSgpCisKKyAgICAgICAgIyBQYXNzIG5v
bi1kZWZhdWx0IGV4cGxpY2l0IHZhbHVlcy4KKyAgICAgICAgKGZpbGVzLCBvcHRpb25zKSA9IHBh
cnNlKFsnLS1vdXRwdXQ9ZW1hY3MnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMob3B0aW9u
cy5vdXRwdXRfZm9ybWF0LCAnZW1hY3MnKQorICAgICAgICAoZmlsZXMsIG9wdGlvbnMpID0gcGFy
c2UoWyctLXZlcmJvc2U9NCddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhvcHRpb25zLnZl
cmJvc2l0eSwgNCkKKyAgICAgICAgKGZpbGVzLCBvcHRpb25zKSA9IHBhcnNlKFsnLS1naXQtY29t
bWl0PWNvbW1pdCddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhvcHRpb25zLmdpdF9jb21t
aXQsICdjb21taXQnKQorICAgICAgICAoZmlsZXMsIG9wdGlvbnMpID0gcGFyc2UoWyctLWZpbHRl
cj0rZm9vLC1iYXInXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMob3B0aW9ucy5maWx0ZXJf
cnVsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFsnLScsICcrd2hpdGVzcGFjZScsICcr
Zm9vJywgJy1iYXInXSkKKworICAgICAgICAjIFBhc3MgZXh0cmEgZmxhZyB2YWx1ZXMuCisgICAg
ICAgIChmaWxlcywgb3B0aW9ucykgPSBwYXJzZShbJy0tZXh0cmEnXSwgWydleHRyYSddKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFscyhvcHRpb25zLmV4dHJhX2ZsYWdfdmFsdWVzLCB7Jy0tZXh0
cmEnOiAnJ30pCisgICAgICAgIChmaWxlcywgb3B0aW9ucykgPSBwYXJzZShbJy0tZXh0cmE9J10s
IFsnZXh0cmE9J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG9wdGlvbnMuZXh0cmFfZmxh
Z192YWx1ZXMsIHsnLS1leHRyYSc6ICcnfSkKKyAgICAgICAgKGZpbGVzLCBvcHRpb25zKSA9IHBh
cnNlKFsnLS1leHRyYT14J10sIFsnZXh0cmE9J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxz
KG9wdGlvbnMuZXh0cmFfZmxhZ192YWx1ZXMsIHsnLS1leHRyYSc6ICd4J30pCisKKyAgICBkZWYg
dGVzdF9wYXJzZV9maWxlcyhzZWxmKToKKyAgICAgICAgcGFyc2UgPSBzZWxmLl9wYXJzZSgpCisK
KyAgICAgICAgKGZpbGVzLCBvcHRpb25zKSA9IHBhcnNlKFsnZm9vLmNwcCddKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFscyhmaWxlcywgWydmb28uY3BwJ10pCisKKyAgICAgICAgIyBQYXNzIG11
bHRpcGxlIGZpbGVzLgorICAgICAgICAoZmlsZXMsIG9wdGlvbnMpID0gcGFyc2UoWyctLW91dHB1
dD1lbWFjcycsICdmb28uY3BwJywgJ2Jhci5jcHAnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bHMoZmlsZXMsIFsnZm9vLmNwcCcsICdiYXIuY3BwJ10pCisKKworaWYgX19uYW1lX18gPT0gJ19f
bWFpbl9fJzoKKyAgICBpbXBvcnQgc3lzCisKKyAgICB1bml0dGVzdC5tYWluKCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45290</attachid>
            <date>2009-12-20 12:57:37 -0800</date>
            <delta_ts>2009-12-21 01:05:02 -0800</delta_ts>
            <desc>Proposed patch 2</desc>
            <filename>patch-tools5-2.txt</filename>
            <type>text/plain</type>
            <size>47879</size>
            <attacher name="Chris Jerdonek">cjerdonek</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDUyNDI2
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjQgQEAKKzIwMDktMTIt
MjAgIENocmlzIEplcmRvbmVrICA8Y2hyaXMuamVyZG9uZWtAZ21haWwuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZmFjdG9yZWQgY2hlY2st
d2Via2l0LXN0eWxlJ3MgYXJndW1lbnQgcGFyc2VyIHRvIG5vdCByZWx5CisgICAgICAgIG9uIGds
b2JhbCBzdGF0ZSwgbW92ZWQgaXQgZnJvbSBjcHBfc3R5bGUucHkgdG8gc3R5bGUucHkgcGVyIGEK
KyAgICAgICAgRklYTUUsIGFuZCBpbXByb3ZlZCBpdHMgZXJyb3IgaGFuZGxpbmcgYW5kIHVuaXQg
dGVzdCBjb3ZlcmFnZS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MzI1OTIKKworICAgICAgICAqIFNjcmlwdHMvY2hlY2std2Via2l0LXN0eWxlOgor
ICAgICAgICAgIC0gQWRkcmVzc2VkIEZJWE1FIHRvIGVsaW1pbmF0ZSBjaGVjay13ZWJraXQtc3R5
bGUncyBkZXBlbmRlbmN5CisgICAgICAgICAgICBvbiBjcHBfc3R5bGUuCisgICAgICAgICAgLSBN
b3ZlZCBfVVNBR0Ugc3RyaW5nIHRvIHN0eWxlLnB5LgorICAgICAgICAgIC0gTW92ZWQgcGFyc2lu
ZyBvZiAiZ2l0LWNvbW1pdCIgZmxhZyB0byBuZXcgcGFyc2VyLgorCisgICAgICAgICogU2NyaXB0
cy9tb2R1bGVzL2NwcF9zdHlsZS5weToKKyAgICAgICAgICAtIEVsaW1pbmF0ZWQgY3BwX3N0eWxl
Ll9VU0FHRSB2YXJpYWJsZS4KKyAgICAgICAgICAtIE1vdmVkIGRlZmF1bHQgc2NyaXB0IGFyZ3Vt
ZW50cyB0byBzdHlsZS5weS4KKyAgICAgICAgICAtIEVsaW1pbmF0ZWQgX0RFRkFVTFRfRklMVEVS
X1JVTEVTIGdsb2JhbCBzdGF0ZSB2YXJpYWJsZS4KKyAgICAgICAgICAtIENoYW5nZWQgX0NwcFN0
eWxlU3RhdGUgdG8gYWNjZXB0IGFuIGFycmF5IG9mIGZpbHRlciBydWxlcworICAgICAgICAgICAg
aW5zdGVhZCBvZiBhIGNvbW1hLWRlbGltaXRlZCBzdHJpbmcuCisgICAgICAgICAgLSBSZWZhY3Rv
cmVkIGFuZCBtb3ZlZCBleGl0X3dpdGhfdXNhZ2UoKSwgZXhpdF93aXRoX2NhdGVnb3JpZXMoKSwK
KyAgICAgICAgICAgIGFuZCBwYXJzZV9hcmd1bWVudHMoKSB0byBzdHlsZS5weS4KKworICAgICAg
ICAqIFNjcmlwdHMvbW9kdWxlcy9jcHBfc3R5bGVfdW5pdHRlc3QucHk6CisgICAgICAgICAgLSBE
ZWxldGVkIGNwcF9zdHlsZS50ZXN0X3BhcnNlX2FyZ3VtZW50cygpIHVuaXQgdGVzdHMgYW5kCisg
ICAgICAgICAgICByZXdyb3RlIHRoZW0gaW4gc3R5bGVfdW5pdHRlc3QucHkuCisgICAgICAgICAg
LSBVcGRhdGVkIHRlc3RfZmlsdGVyKCkgYW5kIHRlc3RfZGVmYXVsdF9maWx0ZXIoKS4KKworICAg
ICAgICAqIFNjcmlwdHMvbW9kdWxlcy9zdHlsZS5weToKKyAgICAgICAgICAtIEFkZGVkIHNjcmlw
dCBkZWZhdWx0cyBmcm9tIGNwcF9zdHlsZS5weS4KKyAgICAgICAgICAtIEFkZGVkIGNyZWF0ZV91
c2FnZSgpIHRvIHJlcGxhY2UgY3BwX3N0eWxlLl9VU0FHRSB2YXJpYWJsZS4KKyAgICAgICAgICAt
IENvcnJlY3RlZCB1c2FnZSBpbnN0cnVjdGlvbnMgYnkgcmVtb3ZpbmcgMCBhcyBhIHZhbGlkCisg
ICAgICAgICAgICAtLXZlcmJvc2UgZmxhZyB2YWx1ZS4KKyAgICAgICAgICAtIEFkZGVkIFByb2Nl
c3Nvck9wdGlvbnMgY2xhc3MgdG8gc3RvcmUgcmVzdWx0IG9mIGFyZ3VtZW50CisgICAgICAgICAg
ICBwYXJzaW5nLgorICAgICAgICAgIC0gUmVtb3ZlZCB1c2Vfd2Via2l0X3N0eWxlcygpIGZ1bmN0
aW9uLgorICAgICAgICAgIC0gQWRkZWQgQXJndW1lbnREZWZhdWx0cyBjbGFzcyB0byBlbmNhcHN1
bGF0ZSBzY3JpcHQgZGVmYXVsdHMuCisgICAgICAgICAgLSBBZGRlZCBBcmd1bWVudFByaW50ZXIg
Y2xhc3MgdG8gY29udmVydCBQcm9jZXNzT3B0aW9ucyB0bworICAgICAgICAgICAgYSBzdHJpbmcg
b2YgZmxhZyB2YWx1ZXMuCisgICAgICAgICAgLSBBZGRlZCBBcmd1bWVudFBhcnNlciB0byBydW4g
bmV3IHBhcnNlIGFyZ3VtZW50cyBmdW5jdGlvbi4KKyAgICAgICAgICAtIEFkZGVkIGV4aXRfd2l0
aF91c2FnZSgpIGFuZCBleGl0X3dpdGhfY2F0ZWdvcmllcygpIGZ1bmN0aW9ucworICAgICAgICAg
ICAgZnJvbSBjcHBfc3R5bGUgdG8gQXJndW1lbnRQYXJzZXIuCisgICAgICAgICAgLSBSZWZhY3Rv
cmVkIGNwcF9zdHlsZS5wYXJzZV9hcmd1bWVudHMoKSBhbmQgYWRkZWQgaXQgdG8KKyAgICAgICAg
ICAgIEFyZ3VtZW50UGFyc2VyIGFzIHBhcnNlKCkuCisgICAgICAgICAgLSBOZXcgcGFyc2UoKSBp
bmNsdWRlcyBpbXByb3ZlZCBlcnJvciBoYW5kbGluZy4KKyAgICAgICAgICAKKyAgICAgICAgKiBT
Y3JpcHRzL21vZHVsZXMvc3R5bGVfdW5pdHRlc3QucHk6IEFkZGVkLgorICAgICAgICAgIC0gQWRk
ZWQgRGVmYXVsdEFyZ3VtZW50c1Rlc3QgY2xhc3MgdG8gY2hlY2sgdmFsaWRpdHkgb2YKKyAgICAg
ICAgICAgIGNoZWNrLXdlYmtpdC1zdHlsZSBkZWZhdWx0IGFyZ3VtZW50IHZhbHVlcy4KKyAgICAg
ICAgICAtIEFkZHJlc3NlZCBGSVhNRSB0byBjaGVjayB0aGUgZGVmYXVsdCB3ZWJraXQgZmlsdGVy
IHJ1bGVzCisgICAgICAgICAgICBhZ2FpbnN0IHRoZSBsaXN0IG9mIGF2YWlsYWJsZSBzdHlsZSBj
YXRlZ29yaWVzLgorICAgICAgICAgIC0gQWRkZWQgQXJndW1lbnRQcmludGVyVGVzdCBjbGFzcyB0
byB0ZXN0IEFyZ3VtZW50UHJpbnRlci4KKyAgICAgICAgICAtIEFkZGVkIEFyZ3VtZW50UGFyc2Vy
VGVzdCBjbGFzcyB3aGljaCByZXBsYWNlcyBjcHBfc3R5bGUucHkncworICAgICAgICAgICAgcGFy
c2VfYXJndW1lbnRzKCkgdW5pdCB0ZXN0cy4gVGhlIG5ldyB1bml0IHRlc3RzIGNvdmVyIHRoZQor
ICAgICAgICAgICAgbmV3IGVycm9yIGNvbmRpdGlvbnMgY292ZXJlZCBieSB0aGUgbmV3IHBhcnNl
KCkuCisKKyAgICAgICAgKiBTY3JpcHRzL3J1bi13ZWJraXQtdW5pdHRlc3RzOgorICAgICAgICAg
IC0gQWRkZWQgc3R5bGVfdW5pdHRlc3QucHkuCisKIDIwMDktMTItMjAgIFNoaW5pY2hpcm8gSGFt
YWppICA8aGFtYWppQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJh
cnRoLgpJbmRleDogU2NyaXB0cy9jaGVjay13ZWJraXQtc3R5bGUKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU2Ny
aXB0cy9jaGVjay13ZWJraXQtc3R5bGUJKHJldmlzaW9uIDUyNDI2KQorKysgU2NyaXB0cy9jaGVj
ay13ZWJraXQtc3R5bGUJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDgyICs0NiwxMSBAQCBpbXBvcnQg
b3MKIGltcG9ydCBvcy5wYXRoCiBpbXBvcnQgc3lzCiAKLWltcG9ydCBtb2R1bGVzLmNwcF9zdHls
ZSBhcyBjcHBfc3R5bGUKIGltcG9ydCBtb2R1bGVzLnN0eWxlIGFzIHN0eWxlCiBmcm9tIG1vZHVs
ZXMuc2NtIGltcG9ydCBkZXRlY3Rfc2NtX3N5c3RlbQogCiAKLSMgRklYTUU6IEF2b2lkIGNwcF9z
dHlsZSBkZXBlbmRlbmN5LgotY3BwX3N0eWxlLl9VU0FHRSA9ICIiIgotU3ludGF4OiAlKHByb2dy
YW1fbmFtZSlzIFstLXZlcmJvc2U9I10gWy0tZ2l0LWNvbW1pdD08U2luZ2xlQ29tbWl0Pl0gWy0t
b3V0cHV0PXZzN10KLSAgICAgICAgWy0tZmlsdGVyPS14LCt5LC4uLl0gW2ZpbGVdIC4uLgotCi0g
IFRoZSBzdHlsZSBndWlkZWxpbmVzIHRoaXMgdHJpZXMgdG8gZm9sbG93IGFyZSBoZXJlOgotICAg
IGh0dHA6Ly93ZWJraXQub3JnL2NvZGluZy9jb2Rpbmctc3R5bGUuaHRtbAotCi0gIEV2ZXJ5IHN0
eWxlIGVycm9yIGlzIGdpdmVuIGEgY29uZmlkZW5jZSBzY29yZSBmcm9tIDEtNSwgd2l0aCA1IG1l
YW5pbmcKLSAgd2UgYXJlIGNlcnRhaW4gb2YgdGhlIHByb2JsZW0sIGFuZCAxIG1lYW5pbmcgaXQg
Y291bGQgYmUgYSBsZWdpdGltYXRlCi0gIGNvbnN0cnVjdC4gIFRoaXMgY2FuIG1pc3Mgc29tZSBl
cnJvcnMgYW5kIGRvZXMgbm90IHN1YnN0aXR1dGUgZm9yCi0gIGNvZGUgcmV2aWV3LgotCi0gIFRv
IHByZXZlbnQgc3BlY2lmaWMgbGluZXMgZnJvbSBiZWluZyBsaW50ZWQsIGFkZCBhICcvLyBOT0xJ
TlQnIGNvbW1lbnQgdG8gdGhlCi0gIGVuZCBvZiB0aGUgbGluZS4KLQotICBMaW50ZWQgZXh0ZW5z
aW9ucyBhcmUgLmNwcCwgLmMgYW5kIC5oLiAgT3RoZXIgZmlsZSB0eXBlcyBhcmUgaWdub3JlZC4K
LQotICBUaGUgZmlsZSBwYXJhbWV0ZXIgaXMgb3B0aW9uYWwgYW5kIGFjY2VwdHMgbXVsdGlwbGUg
ZmlsZXMuICBMZWF2aW5nCi0gIG91dCB0aGUgZmlsZSBwYXJhbWV0ZXIgYXBwbGllcyB0aGUgY2hl
Y2sgdG8gYWxsIGZpbGVzIGNvbnNpZGVyZWQgY2hhbmdlZAotICBieSB5b3VyIHNvdXJjZSBjb250
cm9sIG1hbmFnZW1lbnQgc3lzdGVtLgotCi0gIEZsYWdzOgotCi0gICAgdmVyYm9zZT0jCi0gICAg
ICBBIG51bWJlciAwLTUgdG8gcmVzdHJpY3QgZXJyb3JzIHRvIGNlcnRhaW4gdmVyYm9zaXR5IGxl
dmVscy4KLSAgICAgIERlZmF1bHRzIHRvICUoZGVmYXVsdF92ZXJib3NpdHkpcy4KLQotICAgIGdp
dC1jb21taXQ9PFNpbmdsZUNvbW1pdD4KLSAgICAgIENoZWNrcyB0aGUgc3R5bGUgb2YgZXZlcnl0
aGluZyBmcm9tIHRoZSBnaXZlbiBjb21taXQgdG8gdGhlIGxvY2FsIHRyZWUuCi0KLSAgICBvdXRw
dXQ9dnM3Ci0gICAgICBUaGUgb3V0cHV0IGZvcm1hdCwgd2hpY2ggbWF5IGJlIG9uZSBvZgotICAg
ICAgICBlbWFjcyA6IHRvIGVhc2UgZW1hY3MgcGFyc2luZwotICAgICAgICB2czcgICA6IGNvbXBh
dGlibGUgd2l0aCBWaXN1YWwgU3R1ZGlvCi0gICAgICBEZWZhdWx0cyB0byAiJShkZWZhdWx0X291
dHB1dF9mb3JtYXQpcyIuIE90aGVyIGZvcm1hdHMgYXJlIHVuc3VwcG9ydGVkLgotCi0gICAgZmls
dGVyPS14LCt5LC4uLgotICAgICAgQSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBib29sZWFuIGZp
bHRlciBydWxlcyB1c2VkIHRvIGZpbHRlcgotICAgICAgd2hpY2ggY2F0ZWdvcmllcyBvZiBzdHls
ZSBndWlkZWxpbmVzIHRvIGNoZWNrLiAgVGhlIHNjcmlwdCBjaGVja3MKLSAgICAgIGEgY2F0ZWdv
cnkgaWYgdGhlIGNhdGVnb3J5IHBhc3NlcyB0aGUgZmlsdGVyIHJ1bGVzLCBhcyBmb2xsb3dzLgot
Ci0gICAgICBBbnkgd2Via2l0IGNhdGVnb3J5IHN0YXJ0cyBvdXQgcGFzc2luZy4gIEFsbCBmaWx0
ZXIgcnVsZXMgYXJlIHRoZW4KLSAgICAgIGV2YWx1YXRlZCBsZWZ0IHRvIHJpZ2h0LCB3aXRoIGxh
dGVyIHJ1bGVzIHRha2luZyBwcmVjZWRlbmNlLiAgRm9yCi0gICAgICBleGFtcGxlLCB0aGUgcnVs
ZSAiK2ZvbyIgcGFzc2VzIGFueSBjYXRlZ29yeSB0aGF0IHN0YXJ0cyB3aXRoICJmb28iLAotICAg
ICAgYW5kICItZm9vIiBmYWlscyBhbnkgc3VjaCBjYXRlZ29yeS4gIFRoZSBmaWx0ZXIgaW5wdXQg
Ii13aGl0ZXNwYWNlLAotICAgICAgK3doaXRlc3BhY2UvYnJhY2VzIiBmYWlscyB0aGUgY2F0ZWdv
cnkgIndoaXRlc3BhY2UvdGFiIiBhbmQgcGFzc2VzCi0gICAgICAid2hpdGVzcGFjZS9icmFjZXMi
LgotCi0gICAgICBFeGFtcGxlczogLS1maWx0ZXI9LXdoaXRlc3BhY2UsK3doaXRlc3BhY2UvYnJh
Y2VzCi0gICAgICAgICAgICAgICAgLS1maWx0ZXI9LXdoaXRlc3BhY2UsLXJ1bnRpbWUvcHJpbnRm
LCtydW50aW1lL3ByaW50Zl9mb3JtYXQKLSAgICAgICAgICAgICAgICAtLWZpbHRlcj0tLCtidWls
ZC9pbmNsdWRlX3doYXRfeW91X3VzZQotCi0gICAgICBDYXRlZ29yeSBuYW1lcyBhcHBlYXIgaW4g
ZXJyb3IgbWVzc2FnZXMgaW4gYnJhY2tldHMsIGZvciBleGFtcGxlCi0gICAgICBbd2hpdGVzcGFj
ZS9pbmRlbnRdLiAgVG8gc2VlIGEgbGlzdCBvZiBhbGwgY2F0ZWdvcmllcyBhdmFpbGFibGUgdG8K
LSAgICAgICUocHJvZ3JhbV9uYW1lKXMsIGFsb25nIHdpdGggd2hpY2ggYXJlIGVuYWJsZWQgYnkg
ZGVmYXVsdCwgcGFzcwotICAgICAgdGhlIGVtcHR5IGZpbHRlciBhcyBmb2xsb3dzOgotICAgICAg
ICAgLS1maWx0ZXI9Ci0iIiIgJSB7Ci0gICAgJ3Byb2dyYW1fbmFtZSc6IG9zLnBhdGguYmFzZW5h
bWUoc3lzLmFyZ3ZbMF0pLAotICAgICdkZWZhdWx0X3ZlcmJvc2l0eSc6IGNwcF9zdHlsZS5fREVG
QVVMVF9WRVJCT1NJVFksCi0gICAgJ2RlZmF1bHRfb3V0cHV0X2Zvcm1hdCc6IGNwcF9zdHlsZS5f
REVGQVVMVF9PVVRQVVRfRk9STUFUCi0gICAgfQotCi0KIGRlZiBtYWluKCk6Ci0gICAgc3R5bGUu
dXNlX3dlYmtpdF9zdHlsZXMoKQotCi0gICAgKGZpbGVzLCBmbGFncykgPSBzdHlsZS5wYXJzZV9h
cmd1bWVudHMoc3lzLmFyZ3ZbMTpdLCBbImdpdC1jb21taXQ9Il0sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheV9oZWxwPVRydWUpCi0KICAgICAjIENo
YW5nZSBzdGRlcnIgdG8gd3JpdGUgd2l0aCByZXBsYWNlbWVudCBjaGFyYWN0ZXJzIHNvIHdlIGRv
bid0IGRpZQogICAgICMgaWYgd2UgdHJ5IHRvIHByaW50IHNvbWV0aGluZyBjb250YWluaW5nIG5v
bi1BU0NJSSBjaGFyYWN0ZXJzLgogICAgIHN5cy5zdGRlcnIgPSBjb2RlY3MuU3RyZWFtUmVhZGVy
V3JpdGVyKHN5cy5zdGRlcnIsCkBAIC0xMjksMTAgKzU4LDE2IEBAIGRlZiBtYWluKCk6CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZWNzLmdldHdyaXRlcign
dXRmOCcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZXBs
YWNlJykKIAotICAgIGlmIGZpbGVzIGFuZCAiLS1naXQtY29tbWl0IiBpbiBmbGFnczoKLSAgICAg
ICAgY3BwX3N0eWxlLmV4aXRfd2l0aF91c2FnZSgnSXQgaXMgbm90IHBvc3NpYmxlIHRvIGNoZWNr
IGZpbGVzIGFuZCBhICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3BlY2lm
aWMgY29tbWl0IGF0IHRoZSBzYW1lIHRpbWUuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkaXNwbGF5X2hlbHA9VHJ1ZSkKKyAgICBkZWZhdWx0cyA9IHN0eWxlLkFyZ3VtZW50
RGVmYXVsdHMoc3R5bGUuREVGQVVMVF9PVVRQVVRfRk9STUFULAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdHlsZS5ERUZBVUxUX1ZFUkJPU0lUWSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGUuV0VCS0lUX0ZJTFRFUl9SVUxFUykKKwor
ICAgIHBhcnNlciA9IHN0eWxlLkFyZ3VtZW50UGFyc2VyKGRlZmF1bHRzKQorICAgIChmaWxlcywg
b3B0aW9ucykgPSBwYXJzZXIucGFyc2Uoc3lzLmFyZ3ZbMTpdKQorCisgICAgIyBGSVhNRTogRWxp
bWluYXRlIHRoZSBuZWVkIHRvIGNhbGwgdGhpcyBmdW5jdGlvbi4KKyAgICAjICAgICAgICBPcHRp
b25zIHNob3VsZCBiZSBwYXNzZWQgaW50byBwcm9jZXNzX2ZpbGUgaW5zdGVhZC4KKyAgICBzdHls
ZS5zZXRfb3B0aW9ucyhvcHRpb25zKQogCiAgICAgaWYgZmlsZXM6CiAgICAgICAgIGZvciBmaWxl
bmFtZSBpbiBmaWxlczoKQEAgLTE0Miw4ICs3Nyw4IEBAIGRlZiBtYWluKCk6CiAgICAgICAgIGN3
ZCA9IG9zLnBhdGguYWJzcGF0aCgnLicpCiAgICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lzdGVt
KGN3ZCkKIAotICAgICAgICBpZiAiLS1naXQtY29tbWl0IiBpbiBmbGFnczoKLSAgICAgICAgICAg
IGNvbW1pdCA9IGZsYWdzWyItLWdpdC1jb21taXQiXQorICAgICAgICBpZiBvcHRpb25zLmdpdF9j
b21taXQ6CisgICAgICAgICAgICBjb21taXQgPSBvcHRpb25zLmdpdF9jb21taXQKICAgICAgICAg
ICAgIGlmICcuLicgaW4gY29tbWl0OgogICAgICAgICAgICAgICAgICMgRklYTUU6IElmIHRoZSBy
YW5nZSBpcyBhICIuLi4iLCB0aGUgY29kZSBzaG91bGQgZmluZCB0aGUgY29tbW9uIGFuY2VzdG9y
IGFuZAogICAgICAgICAgICAgICAgICMgc3RhcnQgdGhlcmUgKHNlZSBnaXQgZGlmZiAtLWhlbHAg
Zm9yIGluZm9ybWF0aW9uIGFib3V0IGhvdyAuLi4gdXN1YWxseSB3b3JrcykuCkluZGV4OiBTY3Jp
cHRzL3J1bi13ZWJraXQtdW5pdHRlc3RzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNjcmlwdHMvcnVuLXdlYmtp
dC11bml0dGVzdHMJKHJldmlzaW9uIDUyNDI2KQorKysgU2NyaXB0cy9ydW4td2Via2l0LXVuaXR0
ZXN0cwkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsNyBAQCBmcm9tIG1vZHVsZXMuZGlmZl9w
YXJzZXJfdW5pdHRlc3QgaW1wb3J0CiBmcm9tIG1vZHVsZXMubG9nZ2luZ191bml0dGVzdCBpbXBv
cnQgKgogZnJvbSBtb2R1bGVzLm11bHRpY29tbWFuZHRvb2xfdW5pdHRlc3QgaW1wb3J0ICoKIGZy
b20gbW9kdWxlcy5xdWV1ZWVuZ2luZV91bml0dGVzdCBpbXBvcnQgKgorZnJvbSBtb2R1bGVzLnN0
eWxlX3VuaXR0ZXN0IGltcG9ydCAqCiBmcm9tIG1vZHVsZXMudGV4dF9zdHlsZV91bml0dGVzdCBp
bXBvcnQgKgogZnJvbSBtb2R1bGVzLndlYmtpdHBvcnRfdW5pdHRlc3QgaW1wb3J0ICoKIApJbmRl
eDogU2NyaXB0cy9tb2R1bGVzL2NwcF9zdHlsZS5weQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTY3JpcHRzL21v
ZHVsZXMvY3BwX3N0eWxlLnB5CShyZXZpc2lvbiA1MjQyNikKKysrIFNjcmlwdHMvbW9kdWxlcy9j
cHBfc3R5bGUucHkJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDYgQEAKICIiIlN1cHBvcnQg
Zm9yIGNoZWNrLXdlYmtpdC1zdHlsZS4iIiIKIAogaW1wb3J0IGNvZGVjcwotaW1wb3J0IGdldG9w
dAogaW1wb3J0IG1hdGggICMgZm9yIGxvZwogaW1wb3J0IG9zCiBpbXBvcnQgb3MucGF0aApAQCAt
NDgsNDkgKzQ3LDYgQEAgaW1wb3J0IHN5cwogaW1wb3J0IHVuaWNvZGVkYXRhCiAKIAotIyBUaGlz
IGlzIHNldCBieSBjaGVjay13ZWJraXQtc3R5bGUuCi1fVVNBR0UgPSAnJwotCi0KLSMgRGVmYXVs
dCBvcHRpb25zCi1fREVGQVVMVF9WRVJCT1NJVFkgPSAxCi1fREVGQVVMVF9PVVRQVVRfRk9STUFU
ID0gJ2VtYWNzJwotCi0KLSMgRklYTUU6IEZvciBzdHlsZSBjYXRlZ29yaWVzIHdlIHdpbGwgbmV2
ZXIgd2FudCB0byBoYXZlLCByZW1vdmUgdGhlbS4KLSMgICAgICAgIEZvciBjYXRlZ29yaWVzIGZv
ciB3aGljaCB3ZSB3YW50IHRvIGhhdmUgc2ltaWxhciBmdW5jdGlvbmFsaXR5LAotIyAgICAgICAg
bW9kaWZ5IHRoZSBpbXBsZW1lbnRhdGlvbiBhbmQgZW5hYmxlIHRoZW0uCi0jIEZJWE1FOiBBZGQg
YSB1bml0IHRlc3QgdG8gZW5zdXJlIHRoZSBjb3JyZXNwb25kaW5nIGNhdGVnb3JpZXMKLSMgICAg
ICAgIGFyZSBlbGVtZW50cyBvZiBfU1RZTEVfQ0FURUdPUklFUy4KLSMKLSMgRm9yIHVuYW1iaWd1
b3VzIHRlcm1pbm9sb2d5LCB3ZSB1c2UgImZpbHRlciBydWxlIiByYXRoZXIgdGhhbiAiZmlsdGVy
IgotIyBmb3IgYW4gaW5kaXZpZHVhbCBib29sZWFuIGZpbHRlciBmbGFnIGxpa2UgIitmb28iLiBU
aGlzIGFsbG93cyB1cyB0byAKLSMgcmVzZXJ2ZSAiZmlsdGVyIiBmb3Igd2hhdCBvbmUgZ2V0cyBi
eSBjb2xsZWN0aXZlbHkgYXBwbHlpbmcgYWxsIG9mIAotIyB0aGUgZmlsdGVyIHJ1bGVzIGFzIHNw
ZWNpZmllZCBieSBhIC0tZmlsdGVyIGZsYWcuCi1fV0VCS0lUX0ZJTFRFUl9SVUxFUyA9IFsKLSAg
ICAnLWJ1aWxkL2VuZGlmX2NvbW1lbnQnLAotICAgICctYnVpbGQvaW5jbHVkZV93aGF0X3lvdV91
c2UnLCAgIyA8c3RyaW5nPiBmb3Igc3RkOjpzdHJpbmcKLSAgICAnLWJ1aWxkL3N0b3JhZ2VfY2xh
c3MnLCAgIyBjb25zdCBzdGF0aWMKLSAgICAnLWxlZ2FsL2NvcHlyaWdodCcsCi0gICAgJy1yZWFk
YWJpbGl0eS9tdWx0aWxpbmVfY29tbWVudCcsCi0gICAgJy1yZWFkYWJpbGl0eS9icmFjZXMnLCAg
IyBpbnQgZm9vKCkge307Ci0gICAgJy1yZWFkYWJpbGl0eS9mbl9zaXplJywKLSAgICAnLXJlYWRh
YmlsaXR5L2Nhc3RpbmcnLAotICAgICctcmVhZGFiaWxpdHkvZnVuY3Rpb24nLAotICAgICctcnVu
dGltZS9hcnJheXMnLCAgIyB2YXJpYWJsZSBsZW5ndGggYXJyYXkKLSAgICAnLXJ1bnRpbWUvY2Fz
dGluZycsCi0gICAgJy1ydW50aW1lL3NpemVvZicsCi0gICAgJy1ydW50aW1lL2V4cGxpY2l0Jywg
ICMgZXhwbGljaXQKLSAgICAnLXJ1bnRpbWUvdmlydHVhbCcsICAjIHZpcnR1YWwgZHRvcgotICAg
ICctcnVudGltZS9wcmludGYnLAotICAgICctcnVudGltZS90aHJlYWRzYWZlX2ZuJywKLSAgICAn
LXJ1bnRpbWUvcnR0aScsCi0gICAgJy13aGl0ZXNwYWNlL2JsYW5rX2xpbmUnLAotICAgICctd2hp
dGVzcGFjZS9lbmRfb2ZfbGluZScsCi0gICAgJy13aGl0ZXNwYWNlL2xhYmVscycsCi0gICAgXQot
Ci0KICMgV2UgY2F0ZWdvcml6ZSBlYWNoIHN0eWxlIHJ1bGUgd2UgcHJpbnQuICBIZXJlIGFyZSB0
aGUgY2F0ZWdvcmllcy4KICMgV2Ugd2FudCBhbiBleHBsaWNpdCBsaXN0IHNvIHdlIGNhbiBsaXN0
IHRoZW0gYWxsIGluIGNwcF9zdHlsZSAtLWZpbHRlcj0uCiAjIElmIHlvdSBhZGQgYSBuZXcgZXJy
b3IgbWVzc2FnZSB3aXRoIGEgbmV3IGNhdGVnb3J5LCBhZGQgaXQgdG8gdGhlIGxpc3QKQEAgLTE1
OSwxMiArMTE1LDYgQEAgX1NUWUxFX0NBVEVHT1JJRVMgPSBbCiAgICAgXQogCiAKLSMgVGhlIGRl
ZmF1bHQgc3RhdGUgb2YgdGhlIGNhdGVnb3J5IGZpbHRlci4gVGhpcyBpcyBvdmVycmlkZWQgYnkg
dGhlIC0tZmlsdGVyPQotIyBmbGFnLiBCeSBkZWZhdWx0IGFsbCBlcnJvcnMgYXJlIG9uLCBzbyBv
bmx5IGFkZCBoZXJlIGNhdGVnb3JpZXMgdGhhdCBzaG91bGQgYmUKLSMgb2ZmIGJ5IGRlZmF1bHQg
KGkuZS4sIGNhdGVnb3JpZXMgdGhhdCBtdXN0IGJlIGVuYWJsZWQgYnkgdGhlIC0tZmlsdGVyPSBm
bGFncykuCi0jIEFsbCBlbnRyaWVzIGhlcmUgc2hvdWxkIHN0YXJ0IHdpdGggYSAnLScgb3IgJysn
LCBhcyBpbiB0aGUgLS1maWx0ZXI9IGZsYWcuCi1fREVGQVVMVF9GSUxURVJfUlVMRVMgPSBbXQot
CiAjIEhlYWRlcnMgdGhhdCB3ZSBjb25zaWRlciBTVEwgaGVhZGVycy4KIF9TVExfSEVBREVSUyA9
IGZyb3plbnNldChbCiAgICAgJ2FsZ29iYXNlLmgnLCAnYWxnb3JpdGhtJywgJ2FsbG9jLmgnLCAn
Yml0c2V0JywgJ2RlcXVlJywgJ2V4Y2VwdGlvbicsCkBAIC0zNjAsMTUgKzMxMCwxNSBAQCBjbGFz
cyBfQ3BwU3R5bGVTdGF0ZShvYmplY3QpOgogICAgICIiIk1haW50YWlucyBtb2R1bGUtd2lkZSBz
dGF0ZS4uIiIiCiAKICAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIHNlbGYudmVyYm9z
ZV9sZXZlbCA9IF9ERUZBVUxUX1ZFUkJPU0lUWSAgIyBnbG9iYWwgc2V0dGluZy4KKyAgICAgICAg
c2VsZi52ZXJib3NlX2xldmVsID0gMSAgIyBnbG9iYWwgc2V0dGluZy4KICAgICAgICAgc2VsZi5l
cnJvcl9jb3VudCA9IDAgICAgIyBnbG9iYWwgY291bnQgb2YgcmVwb3J0ZWQgZXJyb3JzCiAgICAg
ICAgICMgZmlsdGVycyB0byBhcHBseSB3aGVuIGVtaXR0aW5nIGVycm9yIG1lc3NhZ2VzCi0gICAg
ICAgIHNlbGYuZmlsdGVycyA9IF9ERUZBVUxUX0ZJTFRFUl9SVUxFU1s6XQorICAgICAgICBzZWxm
LmZpbHRlcnMgPSBbXQogCiAgICAgICAgICMgb3V0cHV0IGZvcm1hdDoKICAgICAgICAgIyAiZW1h
Y3MiIC0gZm9ybWF0IHRoYXQgZW1hY3MgY2FuIHBhcnNlIChkZWZhdWx0KQogICAgICAgICAjICJ2
czciIC0gZm9ybWF0IHRoYXQgTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gNyBjYW4gcGFyc2UKLSAg
ICAgICAgc2VsZi5vdXRwdXRfZm9ybWF0ID0gX0RFRkFVTFRfT1VUUFVUX0ZPUk1BVAorICAgICAg
ICBzZWxmLm91dHB1dF9mb3JtYXQgPSAnZW1hY3MnCiAKICAgICBkZWYgc2V0X291dHB1dF9mb3Jt
YXQoc2VsZiwgb3V0cHV0X2Zvcm1hdCk6CiAgICAgICAgICIiIlNldHMgdGhlIG91dHB1dCBmb3Jt
YXQgZm9yIGVycm9ycy4iIiIKQEAgLTM4NywxNiArMzM3LDE4IEBAIGNsYXNzIF9DcHBTdHlsZVN0
YXRlKG9iamVjdCk6CiAgICAgICAgIGVycm9yIG1lc3NhZ2UuCiAKICAgICAgICAgQXJnczoKLSAg
ICAgICAgICBmaWx0ZXJzOiBBIHN0cmluZyBvZiBjb21tYS1zZXBhcmF0ZWQgZmlsdGVycyAoZWcg
Iit3aGl0ZXNwYWNlL2luZGVudCIpLgotICAgICAgICAgICAgICAgICAgIEVhY2ggZmlsdGVyIHNo
b3VsZCBzdGFydCB3aXRoICsgb3IgLTsgZWxzZSB3ZSBkaWUuCisgICAgICAgICAgZmlsdGVyczog
QSBsaXN0IG9mIHN0cmluZ3MgdGhhdCBhcmUgYm9vbGVhbiBmaWx0ZXIgcnVsZXMgdXNlZAorICAg
ICAgICAgICAgICAgICAgIHRvIGRldGVybWluZSB3aGV0aGVyIGEgc3R5bGUgY2F0ZWdvcnkgc2hv
dWxkIGJlIGNoZWNrZWQuCisgICAgICAgICAgICAgICAgICAgRWFjaCBzdHJpbmcgc2hvdWxkIHN0
YXJ0IHdpdGggKyBvciAtLiBBbiBleGFtcGxlCisgICAgICAgICAgICAgICAgICAgc3RyaW5nIGlz
ICIrd2hpdGVzcGFjZS9pbmRlbnQiLiBUaGUgbGlzdCBpbmNsdWRlcyBhbnkKKyAgICAgICAgICAg
ICAgICAgICBwcmVwZW5kZWQgZGVmYXVsdCBmaWx0ZXIgcnVsZXMuCiAKICAgICAgICAgUmFpc2Vz
OgotICAgICAgICAgIFZhbHVlRXJyb3I6IFRoZSBjb21tYS1zZXBhcmF0ZWQgZmlsdGVycyBkaWQg
bm90IGFsbCBzdGFydCB3aXRoICcrJyBvciAnLScuCi0gICAgICAgICAgICAgICAgICAgICAgRS5n
LiAiLSwrd2hpdGVzcGFjZSwtd2hpdGVzcGFjZS9pbmRlbnQsd2hpdGVzcGFjZS9iYWRmaWx0ZXIi
CisgICAgICAgICAgVmFsdWVFcnJvcjogTm90IGFsbCBmaWx0ZXJzIHN0YXJ0ZWQgd2l0aCAnKycg
b3IgJy0nLiBGb3IgZXhhbXBsZSwKKyAgICAgICAgICAgICAgICAgICAgICAiLSwrd2hpdGVzcGFj
ZSwtd2hpdGVzcGFjZS9pbmRlbnQsd2hpdGVzcGFjZS9iYWRmaWx0ZXIiCiAgICAgICAgICIiIgot
ICAgICAgICAjIERlZmF1bHQgZmlsdGVycyBhbHdheXMgaGF2ZSBsZXNzIHByaW9yaXR5IHRoYW4g
dGhlIGZsYWcgb25lcy4KLSAgICAgICAgc2VsZi5maWx0ZXJzID0gX0RFRkFVTFRfRklMVEVSX1JV
TEVTWzpdCi0gICAgICAgIGZvciBmaWx0ZXIgaW4gZmlsdGVycy5zcGxpdCgnLCcpOgorICAgICAg
ICBzZWxmLmZpbHRlcnMgPSBbXQorICAgICAgICBmb3IgZmlsdGVyIGluIGZpbHRlcnM6CiAgICAg
ICAgICAgICBjbGVhbl9maWx0ZXIgPSBmaWx0ZXIuc3RyaXAoKQogICAgICAgICAgICAgaWYgY2xl
YW5fZmlsdGVyOgogICAgICAgICAgICAgICAgIHNlbGYuZmlsdGVycy5hcHBlbmQoY2xlYW5fZmls
dGVyKQpAQCAtNDQ5LDggKzQwMSwxMSBAQCBkZWYgX3NldF9maWx0ZXJzKGZpbHRlcnMpOgogICAg
IGVycm9yIG1lc3NhZ2UuCiAKICAgICBBcmdzOgotICAgICAgZmlsdGVyczogQSBzdHJpbmcgb2Yg
Y29tbWEtc2VwYXJhdGVkIGZpbHRlcnMgKGVnICJ3aGl0ZXNwYWNlL2luZGVudCIpLgotICAgICAg
ICAgICAgICAgRWFjaCBmaWx0ZXIgc2hvdWxkIHN0YXJ0IHdpdGggKyBvciAtOyBlbHNlIHdlIGRp
ZS4KKyAgICAgIGZpbHRlcnM6IEEgbGlzdCBvZiBzdHJpbmdzIHRoYXQgYXJlIGJvb2xlYW4gZmls
dGVyIHJ1bGVzIHVzZWQKKyAgICAgICAgICAgICAgIHRvIGRldGVybWluZSB3aGV0aGVyIGEgc3R5
bGUgY2F0ZWdvcnkgc2hvdWxkIGJlIGNoZWNrZWQuCisgICAgICAgICAgICAgICBFYWNoIHN0cmlu
ZyBzaG91bGQgc3RhcnQgd2l0aCArIG9yIC0uIEFuIGV4YW1wbGUKKyAgICAgICAgICAgICAgIHN0
cmluZyBpcyAiK3doaXRlc3BhY2UvaW5kZW50Ii4gVGhlIGxpc3QgaW5jbHVkZXMgYW55CisgICAg
ICAgICAgICAgICBwcmVwZW5kZWQgZGVmYXVsdCBmaWx0ZXIgcnVsZXMuCiAgICAgIiIiCiAgICAg
X2NwcF9zdHlsZV9zdGF0ZS5zZXRfZmlsdGVycyhmaWx0ZXJzKQogCkBAIC0zMTU4LDk4ICszMTEz
LDYgQEAgZGVmIHByb2Nlc3NfZmlsZShmaWxlbmFtZSwgZXJyb3I9ZXJyb3IpOgogICAgICAgICAg
ICAgICAgICAgJ2JldHRlciB0byB1c2Ugb25seSBhIFxcbicpCiAKIAotZGVmIGV4aXRfd2l0aF91
c2FnZShlcnJvcl9tZXNzYWdlLCBkaXNwbGF5X2hlbHA9RmFsc2UpOgotICAgICIiIkV4aXQgYW5k
IHByaW50IGEgdXNhZ2Ugc3RyaW5nIHdpdGggYW4gb3B0aW9uYWwgZXJyb3IgbWVzc2FnZS4KLQot
ICAgIEFyZ3M6Ci0gICAgICBlcnJvcl9tZXNzYWdlOiBUaGUgb3B0aW9uYWwgZXJyb3IgbWVzc2Fn
ZS4KLSAgICAgIGRpc3BsYXlfaGVscDogV2hldGhlciB0byBkaXNwbGF5IGhlbHAgb3V0cHV0LiBT
dXBwcmVzc2luZyBoZWxwCi0gICAgICAgICAgICAgICAgICAgIG91dHB1dCBpcyB1c2VmdWwgZm9y
IHVuaXQgdGVzdHMuCi0gICAgIiIiCi0gICAgaWYgZGlzcGxheV9oZWxwOgotICAgICAgICBzeXMu
c3RkZXJyLndyaXRlKF9VU0FHRSkKLSAgICBpZiBlcnJvcl9tZXNzYWdlOgotICAgICAgICBzeXMu
ZXhpdCgnXG5GQVRBTCBFUlJPUjogJyArIGVycm9yX21lc3NhZ2UpCi0gICAgZWxzZToKLSAgICAg
ICAgc3lzLmV4aXQoMSkKLQotCi1kZWYgZXhpdF93aXRoX2NhdGVnb3JpZXMoZGlzcGxheV9oZWxw
PUZhbHNlKToKLSAgICAiIiJFeGl0IGFuZCBwcmludCBhbGwgc3R5bGUgY2F0ZWdvcmllcywgYWxv
bmcgd2l0aCB0aGUgZGVmYXVsdCBmaWx0ZXIuCi0KLSAgICBUaGVzZSBjYXRlZ29yeSBuYW1lcyBh
cHBlYXIgaW4gZXJyb3IgbWVzc2FnZXMuICBUaGV5IGNhbiBiZSBmaWx0ZXJlZAotICAgIHVzaW5n
IHRoZSAtLWZpbHRlciBmbGFnLgotCi0gICAgQXJnczoKLSAgICAgIGRpc3BsYXlfaGVscDogV2hl
dGhlciB0byBkaXNwbGF5IGhlbHAgb3V0cHV0LiBTdXBwcmVzc2luZyBoZWxwCi0gICAgICAgICAg
ICAgICAgICAgIG91dHB1dCBpcyB1c2VmdWwgZm9yIHVuaXQgdGVzdHMuCi0gICAgIiIiCi0gICAg
aWYgZGlzcGxheV9oZWxwOgotICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCdcbkFsbCBjYXRlZ29y
aWVzOlxuJykKLSAgICAgICAgZm9yIGNhdGVnb3J5IGluIHNvcnRlZChfU1RZTEVfQ0FURUdPUklF
Uyk6Ci0gICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCcgICAgJyArIGNhdGVnb3J5ICsgJ1xu
JykKLQotICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCdcbkRlZmF1bHQgZmlsdGVyIHJ1bGVzKio6
XG4nKQotICAgICAgICBmb3IgZmlsdGVyX3J1bGUgaW4gc29ydGVkKF9XRUJLSVRfRklMVEVSX1JV
TEVTKToKLSAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJyAgICAnICsgZmlsdGVyX3J1bGUg
KyAnXG4nKQotICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCdcbioqVGhlIGNvbW1hbmQgYWx3YXlz
IGV2YWx1YXRlcyB0aGUgYWJvdmUgJwotICAgICAgICAgICAgICAgICAgICAgICAgICdydWxlcywg
YW5kIGJlZm9yZSBhbnkgLS1maWx0ZXIgZmxhZy5cblxuJykKLQotICAgIHN5cy5leGl0KDApCi0K
LQotZGVmIHBhcnNlX2FyZ3VtZW50cyhhcmdzLCBhZGRpdGlvbmFsX2ZsYWdzPVtdLCBkaXNwbGF5
X2hlbHA9RmFsc2UpOgotICAgICIiIlBhcnNlcyB0aGUgY29tbWFuZCBsaW5lIGFyZ3VtZW50cy4K
LQotICAgIFRoaXMgbWF5IHNldCB0aGUgb3V0cHV0IGZvcm1hdCBhbmQgdmVyYm9zaXR5IGxldmVs
IGFzIHNpZGUtZWZmZWN0cy4KLQotICAgIEFyZ3M6Ci0gICAgICBhcmdzOiBUaGUgY29tbWFuZCBs
aW5lIGFyZ3VtZW50czoKLSAgICAgIGFkZGl0aW9uYWxfZmxhZ3M6IEEgbGlzdCBvZiBzdHJpbmdz
IHdoaWNoIHNwZWNpZmllcyBmbGFncyB3ZSBhbGxvdy4KLSAgICAgIGRpc3BsYXlfaGVscDogV2hl
dGhlciB0byBkaXNwbGF5IGhlbHAgb3V0cHV0LiBTdXBwcmVzc2luZyBoZWxwCi0gICAgICAgICAg
ICAgICAgICAgIG91dHB1dCBpcyB1c2VmdWwgZm9yIHVuaXQgdGVzdHMuCi0KLSAgICBSZXR1cm5z
OgotICAgICAgQSB0dXBsZSBvZiAoZmlsZW5hbWVzLCBmbGFncykKLQotICAgICAgZmlsZW5hbWVz
OiBUaGUgbGlzdCBvZiBmaWxlbmFtZXMgdG8gbGludC4KLSAgICAgIGZsYWdzOiBUaGUgZGljdCBv
ZiB0aGUgZmxhZyBuYW1lcyBhbmQgdGhlIGZsYWcgdmFsdWVzLgotICAgICIiIgotICAgIGZsYWdz
ID0gWydoZWxwJywgJ291dHB1dD0nLCAndmVyYm9zZT0nLCAnZmlsdGVyPSddICsgYWRkaXRpb25h
bF9mbGFncwotICAgIGFkZGl0aW9uYWxfZmxhZ192YWx1ZXMgPSB7fQotICAgIHRyeToKLSAgICAg
ICAgKG9wdHMsIGZpbGVuYW1lcykgPSBnZXRvcHQuZ2V0b3B0KGFyZ3MsICcnLCBmbGFncykKLSAg
ICBleGNlcHQgZ2V0b3B0LkdldG9wdEVycm9yOgotICAgICAgICBleGl0X3dpdGhfdXNhZ2UoJ0lu
dmFsaWQgYXJndW1lbnRzLicsIGRpc3BsYXlfaGVscCkKLQotICAgIHZlcmJvc2l0eSA9IF92ZXJi
b3NlX2xldmVsKCkKLSAgICBvdXRwdXRfZm9ybWF0ID0gX291dHB1dF9mb3JtYXQoKQotICAgIGZp
bHRlcnMgPSAnJwotCi0gICAgZm9yIChvcHQsIHZhbCkgaW4gb3B0czoKLSAgICAgICAgaWYgb3B0
ID09ICctLWhlbHAnOgotICAgICAgICAgICAgZXhpdF93aXRoX3VzYWdlKE5vbmUsIGRpc3BsYXlf
aGVscCkKLSAgICAgICAgZWxpZiBvcHQgPT0gJy0tb3V0cHV0JzoKLSAgICAgICAgICAgIGlmIG5v
dCB2YWwgaW4gKCdlbWFjcycsICd2czcnKToKLSAgICAgICAgICAgICAgICBleGl0X3dpdGhfdXNh
Z2UoJ1RoZSBvbmx5IGFsbG93ZWQgb3V0cHV0IGZvcm1hdHMgYXJlIGVtYWNzIGFuZCB2czcuJywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheV9oZWxwKQotICAgICAgICAg
ICAgb3V0cHV0X2Zvcm1hdCA9IHZhbAotICAgICAgICBlbGlmIG9wdCA9PSAnLS12ZXJib3NlJzoK
LSAgICAgICAgICAgIHZlcmJvc2l0eSA9IGludCh2YWwpCi0gICAgICAgIGVsaWYgb3B0ID09ICct
LWZpbHRlcic6Ci0gICAgICAgICAgICBmaWx0ZXJzID0gdmFsCi0gICAgICAgICAgICBpZiBub3Qg
ZmlsdGVyczoKLSAgICAgICAgICAgICAgICBleGl0X3dpdGhfY2F0ZWdvcmllcyhkaXNwbGF5X2hl
bHApCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBhZGRpdGlvbmFsX2ZsYWdfdmFsdWVzW29w
dF0gPSB2YWwKLQotICAgIF9zZXRfb3V0cHV0X2Zvcm1hdChvdXRwdXRfZm9ybWF0KQotICAgIF9z
ZXRfdmVyYm9zZV9sZXZlbCh2ZXJib3NpdHkpCi0gICAgX3NldF9maWx0ZXJzKGZpbHRlcnMpCi0K
LSAgICByZXR1cm4gKGZpbGVuYW1lcywgYWRkaXRpb25hbF9mbGFnX3ZhbHVlcykKLQotCiBkZWYg
Y2FuX2hhbmRsZShmaWxlbmFtZSk6CiAgICAgIiIiQ2hlY2tzIGlmIHRoaXMgbW9kdWxlIHN1cHBv
cnRzIGZvciB0aGUgc3BlY2lmaWVkIGZpbGUgdHlwZS4KIApJbmRleDogU2NyaXB0cy9tb2R1bGVz
L2NwcF9zdHlsZV91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTY3JpcHRzL21vZHVsZXMvY3Bw
X3N0eWxlX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiA1MjQyNikKKysrIFNjcmlwdHMvbW9kdWxlcy9j
cHBfc3R5bGVfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTE1NjcsODUgKzE1NjcsMTAg
QEAgY2xhc3MgQ3BwU3R5bGVUZXN0KENwcFN0eWxlVGVzdEJhc2UpOgogICAgICAgICBzZWxmLmFz
c2VydF9saW50KCdpbnQgYSA9IDU7XHQvLyBzZXQgYSB0byA1JywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAnVGFiIGZvdW5kOyBiZXR0ZXIgdG8gdXNlIHNwYWNlcyAgW3doaXRlc3BhY2UvdGFi
XSBbMV0nKQogCi0gICAgZGVmIHRlc3RfcGFyc2VfYXJndW1lbnRzKHNlbGYpOgotICAgICAgICBv
bGRfdXNhZ2UgPSBjcHBfc3R5bGUuX1VTQUdFCi0gICAgICAgIG9sZF9zdHlsZV9jYXRlZ29yaWVz
ID0gY3BwX3N0eWxlLl9TVFlMRV9DQVRFR09SSUVTCi0gICAgICAgIG9sZF93ZWJraXRfZmlsdGVy
X3J1bGVzID0gY3BwX3N0eWxlLl9XRUJLSVRfRklMVEVSX1JVTEVTCi0gICAgICAgIG9sZF9vdXRw
dXRfZm9ybWF0ID0gY3BwX3N0eWxlLl9jcHBfc3R5bGVfc3RhdGUub3V0cHV0X2Zvcm1hdAotICAg
ICAgICBvbGRfdmVyYm9zZV9sZXZlbCA9IGNwcF9zdHlsZS5fY3BwX3N0eWxlX3N0YXRlLnZlcmJv
c2VfbGV2ZWwKLSAgICAgICAgb2xkX2ZpbHRlcnMgPSBjcHBfc3R5bGUuX2NwcF9zdHlsZV9zdGF0
ZS5maWx0ZXJzCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgICMgRG9uJ3QgcHJpbnQgdXNhZ2Ug
ZHVyaW5nIHRoZSB0ZXN0cywgb3IgZmlsdGVyIGNhdGVnb3JpZXMKLSAgICAgICAgICAgIGNwcF9z
dHlsZS5fVVNBR0UgPSAnJwotICAgICAgICAgICAgY3BwX3N0eWxlLl9TVFlMRV9DQVRFR09SSUVT
ID0gW10KLSAgICAgICAgICAgIGNwcF9zdHlsZS5fV0VCS0lUX0ZJTFRFUl9SVUxFUyA9IFtdCi0K
LSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5c3RlbUV4aXQsIGNwcF9zdHlsZS5wYXJz
ZV9hcmd1bWVudHMsIFsnLS1iYWRvcHQnXSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2Vz
KFN5c3RlbUV4aXQsIGNwcF9zdHlsZS5wYXJzZV9hcmd1bWVudHMsIFsnLS1oZWxwJ10pCi0gICAg
ICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeXN0ZW1FeGl0LCBjcHBfc3R5bGUucGFyc2VfYXJn
dW1lbnRzLCBbJy0tZmlsdGVyPSddKQotICAgICAgICAgICAgIyBUaGlzIGlzIGlsbGVnYWwgYmVj
YXVzZSBhbGwgZmlsdGVycyBtdXN0IHN0YXJ0IHdpdGggKyBvciAtCi0gICAgICAgICAgICBzZWxm
LmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjcHBfc3R5bGUucGFyc2VfYXJndW1lbnRzLCBbJy0t
ZmlsdGVyPWZvbyddKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwg
Y3BwX3N0eWxlLnBhcnNlX2FyZ3VtZW50cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFsnLS1maWx0ZXI9K2EsYiwtYyddKQotCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscygo
Wydmb28uY3BwJ10sIHt9KSwgY3BwX3N0eWxlLnBhcnNlX2FyZ3VtZW50cyhbJ2Zvby5jcHAnXSkp
Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhvbGRfb3V0cHV0X2Zvcm1hdCwgY3BwX3N0
eWxlLl9jcHBfc3R5bGVfc3RhdGUub3V0cHV0X2Zvcm1hdCkKLSAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWxzKG9sZF92ZXJib3NlX2xldmVsLCBjcHBfc3R5bGUuX2NwcF9zdHlsZV9zdGF0ZS52
ZXJib3NlX2xldmVsKQotCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscygoW10sIHt9KSwg
Y3BwX3N0eWxlLnBhcnNlX2FyZ3VtZW50cyhbXSkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFscygoW10sIHt9KSwgY3BwX3N0eWxlLnBhcnNlX2FyZ3VtZW50cyhbJy0tdj0wJ10pKQotCi0g
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscygoWydmb28uY3BwJ10sIHt9KSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNwcF9zdHlsZS5wYXJzZV9hcmd1bWVudHMoWyctLXY9MScs
ICdmb28uY3BwJ10pKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoMSwgY3BwX3N0eWxl
Ll9jcHBfc3R5bGVfc3RhdGUudmVyYm9zZV9sZXZlbCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWxzKChbJ2Zvby5oJ10sIHt9KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNw
cF9zdHlsZS5wYXJzZV9hcmd1bWVudHMoWyctLXY9MycsICdmb28uaCddKSkKLSAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWxzKDMsIGNwcF9zdHlsZS5fY3BwX3N0eWxlX3N0YXRlLnZlcmJvc2Vf
bGV2ZWwpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscygoWydmb28uY3BwJ10sIHt9KSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwcF9zdHlsZS5wYXJzZV9hcmd1bWVudHMo
WyctLXZlcmJvc2U9NScsICdmb28uY3BwJ10pKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bHMoNSwgY3BwX3N0eWxlLl9jcHBfc3R5bGVfc3RhdGUudmVyYm9zZV9sZXZlbCkKLSAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjcHBfc3R5bGUucGFyc2VfYXJndW1lbnRzLCBbJy0tdj1mJywgJ2Zvby5jcHAnXSkK
LQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoKFsnZm9vLmNwcCddLCB7fSksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjcHBfc3R5bGUucGFyc2VfYXJndW1lbnRzKFsnLS1v
dXRwdXQ9ZW1hY3MnLCAnZm9vLmNwcCddKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxz
KCdlbWFjcycsIGNwcF9zdHlsZS5fY3BwX3N0eWxlX3N0YXRlLm91dHB1dF9mb3JtYXQpCi0gICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFscygoWydmb28uaCddLCB7fSksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjcHBfc3R5bGUucGFyc2VfYXJndW1lbnRzKFsnLS1vdXRwdXQ9dnM3
JywgJ2Zvby5oJ10pKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJ3ZzNycsIGNwcF9z
dHlsZS5fY3BwX3N0eWxlX3N0YXRlLm91dHB1dF9mb3JtYXQpCi0gICAgICAgICAgICBzZWxmLmFz
c2VydFJhaXNlcyhTeXN0ZW1FeGl0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Bw
X3N0eWxlLnBhcnNlX2FyZ3VtZW50cywgWyctLW91dHB1dD1ibGFoJywgJ2Zvby5jcHAnXSkKLQot
ICAgICAgICAgICAgZmlsdCA9ICctLCt3aGl0ZXNwYWNlLC13aGl0ZXNwYWNlL2luZGVudCcKLSAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKChbJ2Zvby5oJ10sIHt9KSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNwcF9zdHlsZS5wYXJzZV9hcmd1bWVudHMoWyctLWZpbHRlcj0n
K2ZpbHQsICdmb28uaCddKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKFsnLScsICcr
d2hpdGVzcGFjZScsICctd2hpdGVzcGFjZS9pbmRlbnQnXSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNwcF9zdHlsZS5fY3BwX3N0eWxlX3N0YXRlLmZpbHRlcnMpCi0KLSAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWxzKChbJ2Zvby5jcHAnLCAnZm9vLmgnXSwge30pLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY3BwX3N0eWxlLnBhcnNlX2FyZ3VtZW50cyhbJ2Zvby5j
cHAnLCAnZm9vLmgnXSkpCi0KLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKChbJ2Zvby5j
cHAnXSwgeyctLWZvbyc6ICcnfSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHBf
c3R5bGUucGFyc2VfYXJndW1lbnRzKFsnLS1mb28nLCAnZm9vLmNwcCddLCBbJ2ZvbyddKSkKLSAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKChbJ2Zvby5jcHAnXSwgeyctLWZvbyc6ICdiYXIn
fSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHBfc3R5bGUucGFyc2VfYXJndW1l
bnRzKFsnLS1mb289YmFyJywgJ2Zvby5jcHAnXSwgWydmb289J10pKQotICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbHMoKFsnZm9vLmNwcCddLCB7fSksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjcHBfc3R5bGUucGFyc2VfYXJndW1lbnRzKFsnZm9vLmNwcCddLCBbJ2Zvbz0nXSkp
Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeXN0ZW1FeGl0LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY3BwX3N0eWxlLnBhcnNlX2FyZ3VtZW50cywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFsnLS1mb290eXBvPWJhcicsICdmb28uY3BwJ10sIFsnZm9vPSdd
KQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgY3BwX3N0eWxlLl9VU0FHRSA9IG9sZF91
c2FnZQotICAgICAgICAgICAgY3BwX3N0eWxlLl9TVFlMRV9DQVRFR09SSUVTID0gb2xkX3N0eWxl
X2NhdGVnb3JpZXMKLSAgICAgICAgICAgIGNwcF9zdHlsZS5fV0VCS0lUX0ZJTFRFUl9SVUxFUyA9
IG9sZF93ZWJraXRfZmlsdGVyX3J1bGVzCi0gICAgICAgICAgICBjcHBfc3R5bGUuX2NwcF9zdHls
ZV9zdGF0ZS5vdXRwdXRfZm9ybWF0ID0gb2xkX291dHB1dF9mb3JtYXQKLSAgICAgICAgICAgIGNw
cF9zdHlsZS5fY3BwX3N0eWxlX3N0YXRlLnZlcmJvc2VfbGV2ZWwgPSBvbGRfdmVyYm9zZV9sZXZl
bAotICAgICAgICAgICAgY3BwX3N0eWxlLl9jcHBfc3R5bGVfc3RhdGUuZmlsdGVycyA9IG9sZF9m
aWx0ZXJzCi0KICAgICBkZWYgdGVzdF9maWx0ZXIoc2VsZik6CiAgICAgICAgIG9sZF9maWx0ZXJz
ID0gY3BwX3N0eWxlLl9jcHBfc3R5bGVfc3RhdGUuZmlsdGVycwogICAgICAgICB0cnk6Ci0gICAg
ICAgICAgICBjcHBfc3R5bGUuX2NwcF9zdHlsZV9zdGF0ZS5zZXRfZmlsdGVycygnLSwrd2hpdGVz
cGFjZSwtd2hpdGVzcGFjZS9pbmRlbnQnKQorICAgICAgICAgICAgY3BwX3N0eWxlLl9jcHBfc3R5
bGVfc3RhdGUuc2V0X2ZpbHRlcnMoWyctJywgJyt3aGl0ZXNwYWNlJywgJy13aGl0ZXNwYWNlL2lu
ZGVudCddKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKICAgICAgICAgICAgICAgICAn
Ly8gSGVsbG8gdGhlcmUgJywKICAgICAgICAgICAgICAgICAnTGluZSBlbmRzIGluIHdoaXRlc3Bh
Y2UuICBDb25zaWRlciBkZWxldGluZyB0aGVzZSBleHRyYSBzcGFjZXMuJwpAQCAtMTY1NSwxNSAr
MTU4MCwxMyBAQCBjbGFzcyBDcHBTdHlsZVRlc3QoQ3BwU3R5bGVUZXN0QmFzZSk6CiAgICAgICAg
IGZpbmFsbHk6CiAgICAgICAgICAgICBjcHBfc3R5bGUuX2NwcF9zdHlsZV9zdGF0ZS5maWx0ZXJz
ID0gb2xkX2ZpbHRlcnMKIAotICAgIGRlZiB0ZXN0X2RlZmF1bHRfZmlsdGVyKHNlbGYpOgotICAg
ICAgICBkZWZhdWx0X2ZpbHRlcl9ydWxlcyA9IGNwcF9zdHlsZS5fREVGQVVMVF9GSUxURVJfUlVM
RVMKKyAgICBkZWYgdGVzdF9maWx0ZXJfYXBwZW5kaW5nKHNlbGYpOgogICAgICAgICBvbGRfZmls
dGVycyA9IGNwcF9zdHlsZS5fY3BwX3N0eWxlX3N0YXRlLmZpbHRlcnMKLSAgICAgICAgY3BwX3N0
eWxlLl9ERUZBVUxUX0ZJTFRFUl9SVUxFUyA9IFsgJy13aGl0ZXNwYWNlJyBdCiAgICAgICAgIHRy
eToKICAgICAgICAgICAgICMgUmVzZXQgZmlsdGVycwotICAgICAgICAgICAgY3BwX3N0eWxlLl9j
cHBfc3R5bGVfc3RhdGUuc2V0X2ZpbHRlcnMoJycpCisgICAgICAgICAgICBjcHBfc3R5bGUuX2Nw
cF9zdHlsZV9zdGF0ZS5zZXRfZmlsdGVycyhbJy13aGl0ZXNwYWNlJ10pCiAgICAgICAgICAgICBz
ZWxmLmFzc2VydF9saW50KCcvLyBIZWxsbyB0aGVyZSAnLCAnJykKLSAgICAgICAgICAgIGNwcF9z
dHlsZS5fY3BwX3N0eWxlX3N0YXRlLnNldF9maWx0ZXJzKCcrd2hpdGVzcGFjZS9lbmRfb2ZfbGlu
ZScpCisgICAgICAgICAgICBjcHBfc3R5bGUuX2NwcF9zdHlsZV9zdGF0ZS5zZXRfZmlsdGVycyhb
Jy13aGl0ZXNwYWNlJywgJyt3aGl0ZXNwYWNlL2VuZF9vZl9saW5lJ10pCiAgICAgICAgICAgICBz
ZWxmLmFzc2VydF9saW50KAogICAgICAgICAgICAgICAgICcvLyBIZWxsbyB0aGVyZSAnLAogICAg
ICAgICAgICAgICAgICdMaW5lIGVuZHMgaW4gd2hpdGVzcGFjZS4gIENvbnNpZGVyIGRlbGV0aW5n
IHRoZXNlIGV4dHJhIHNwYWNlcy4nCkBAIC0xNjcxLDcgKzE1OTQsNiBAQCBjbGFzcyBDcHBTdHls
ZVRlc3QoQ3BwU3R5bGVUZXN0QmFzZSk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydF9saW50KCcg
d2VpcmQgb3BlbmluZyBzcGFjZScsICcnKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAg
Y3BwX3N0eWxlLl9jcHBfc3R5bGVfc3RhdGUuZmlsdGVycyA9IG9sZF9maWx0ZXJzCi0gICAgICAg
ICAgICBjcHBfc3R5bGUuX0RFRkFVTFRfRklMVEVSX1JVTEVTID0gZGVmYXVsdF9maWx0ZXJfcnVs
ZXMKIAogICAgIGRlZiB0ZXN0X3VubmFtZWRfbmFtZXNwYWNlc19pbl9oZWFkZXJzKHNlbGYpOgog
ICAgICAgICBzZWxmLmFzc2VydF9sYW5ndWFnZV9ydWxlc19jaGVjaygKSW5kZXg6IFNjcmlwdHMv
bW9kdWxlcy9zdHlsZS5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTY3JpcHRzL21vZHVsZXMvc3R5bGUucHkJ
KHJldmlzaW9uIDUyNDI2KQorKysgU2NyaXB0cy9tb2R1bGVzL3N0eWxlLnB5CSh3b3JraW5nIGNv
cHkpCkBAIC0yOSwyNiArMjksMzg1IEBACiAiIiJGcm9udCBlbmQgb2Ygc29tZSBzdHlsZS1jaGVj
a2VyIG1vZHVsZXMuIiIiCiAKICMgRklYTUU6IE1vdmUgbW9yZSBjb2RlIGZyb20gY3BwX3N0eWxl
IHRvIGhlcmUuCi0jIGNoZWNrLXdlYmtpdC1zdHlsZSBzaG91bGQgbm90IHJlZmVyIGNwcF9zdHls
ZSBkaXJlY3RseS4KIAoraW1wb3J0IGdldG9wdAogaW1wb3J0IG9zLnBhdGgKK2ltcG9ydCBzeXMK
IAotaW1wb3J0IG1vZHVsZXMuY3BwX3N0eWxlIGFzIGNwcF9zdHlsZQotaW1wb3J0IG1vZHVsZXMu
dGV4dF9zdHlsZSBhcyB0ZXh0X3N0eWxlCi1mcm9tIG1vZHVsZXMuZGlmZl9wYXJzZXIgaW1wb3J0
IERpZmZQYXJzZXIKK2ltcG9ydCBjcHBfc3R5bGUKK2ltcG9ydCB0ZXh0X3N0eWxlCitmcm9tIGRp
ZmZfcGFyc2VyIGltcG9ydCBEaWZmUGFyc2VyCisKKworIyBUaGVzZSBkZWZhdWx0cyBhcmUgdXNl
ZCBieSBjaGVjay13ZWJraXQtc3R5bGUuCitERUZBVUxUX1ZFUkJPU0lUWSA9IDEKK0RFRkFVTFRf
T1VUUFVUX0ZPUk1BVCA9ICdlbWFjcycKKworCisjIEZJWE1FOiBGb3Igc3R5bGUgY2F0ZWdvcmll
cyB3ZSB3aWxsIG5ldmVyIHdhbnQgdG8gaGF2ZSwgcmVtb3ZlIHRoZW0uCisjICAgICAgICBGb3Ig
Y2F0ZWdvcmllcyBmb3Igd2hpY2ggd2Ugd2FudCB0byBoYXZlIHNpbWlsYXIgZnVuY3Rpb25hbGl0
eSwKKyMgICAgICAgIG1vZGlmeSB0aGUgaW1wbGVtZW50YXRpb24gYW5kIGVuYWJsZSB0aGVtLgor
IworIyBUaHJvdWdob3V0IHRoaXMgbW9kdWxlLCB3ZSB1c2UgImZpbHRlciBydWxlIiByYXRoZXIg
dGhhbiAiZmlsdGVyIgorIyBmb3IgYW4gaW5kaXZpZHVhbCBib29sZWFuIGZpbHRlciBmbGFnIGxp
a2UgIitmb28iLiBUaGlzIGFsbG93cyB1cyB0bworIyByZXNlcnZlICJmaWx0ZXIiIGZvciB3aGF0
IG9uZSBnZXRzIGJ5IGNvbGxlY3RpdmVseSBhcHBseWluZyBhbGwgb2YKKyMgdGhlIGZpbHRlciBy
dWxlcy4KKyMKKyMgVGhlIF9XRUJLSVRfRklMVEVSX1JVTEVTIGFyZSBwcmVwZW5kZWQgdG8gYW55
IHVzZXItc3BlY2lmaWVkIGZpbHRlcgorIyBydWxlcy4gU2luY2UgYnkgZGVmYXVsdCBhbGwgZXJy
b3JzIGFyZSBvbiwgb25seSBpbmNsdWRlIHJ1bGVzIHRoYXQKKyMgYmVnaW4gd2l0aCBhIC0gc2ln
bi4KK1dFQktJVF9GSUxURVJfUlVMRVMgPSBbCisgICAgJy1idWlsZC9lbmRpZl9jb21tZW50JywK
KyAgICAnLWJ1aWxkL2luY2x1ZGVfd2hhdF95b3VfdXNlJywgICMgPHN0cmluZz4gZm9yIHN0ZDo6
c3RyaW5nCisgICAgJy1idWlsZC9zdG9yYWdlX2NsYXNzJywgICMgY29uc3Qgc3RhdGljCisgICAg
Jy1sZWdhbC9jb3B5cmlnaHQnLAorICAgICctcmVhZGFiaWxpdHkvbXVsdGlsaW5lX2NvbW1lbnQn
LAorICAgICctcmVhZGFiaWxpdHkvYnJhY2VzJywgICMgaW50IGZvbygpIHt9OworICAgICctcmVh
ZGFiaWxpdHkvZm5fc2l6ZScsCisgICAgJy1yZWFkYWJpbGl0eS9jYXN0aW5nJywKKyAgICAnLXJl
YWRhYmlsaXR5L2Z1bmN0aW9uJywKKyAgICAnLXJ1bnRpbWUvYXJyYXlzJywgICMgdmFyaWFibGUg
bGVuZ3RoIGFycmF5CisgICAgJy1ydW50aW1lL2Nhc3RpbmcnLAorICAgICctcnVudGltZS9zaXpl
b2YnLAorICAgICctcnVudGltZS9leHBsaWNpdCcsICAjIGV4cGxpY2l0CisgICAgJy1ydW50aW1l
L3ZpcnR1YWwnLCAgIyB2aXJ0dWFsIGR0b3IKKyAgICAnLXJ1bnRpbWUvcHJpbnRmJywKKyAgICAn
LXJ1bnRpbWUvdGhyZWFkc2FmZV9mbicsCisgICAgJy1ydW50aW1lL3J0dGknLAorICAgICctd2hp
dGVzcGFjZS9ibGFua19saW5lJywKKyAgICAnLXdoaXRlc3BhY2UvZW5kX29mX2xpbmUnLAorICAg
ICctd2hpdGVzcGFjZS9sYWJlbHMnLAorICAgIF0KIAogCi1kZWYgdXNlX3dlYmtpdF9zdHlsZXMo
KToKLSAgICAiIiJDb25maWd1cmVzIHRoaXMgbW9kdWxlIGZvciBXZWJLaXQgc3R5bGUuIiIiCi0g
ICAgY3BwX3N0eWxlLl9ERUZBVUxUX0ZJTFRFUl9SVUxFUyA9IGNwcF9zdHlsZS5fV0VCS0lUX0ZJ
TFRFUl9SVUxFUworZGVmIF9jcmVhdGVfdXNhZ2UoZGVmYXVsdHMpOgorICAgICIiIlJldHVybiB0
aGUgdXNhZ2Ugc3RyaW5nIHRvIGRpc3BsYXkgZm9yIGNvbW1hbmQgaGVscC4KIAorICAgIEFyZ3M6
CisgICAgICBkZWZhdWx0czogQW4gQXJndW1lbnREZWZhdWx0cyBpbnN0YW5jZS4KKworICAgICIi
IgorICAgIHVzYWdlID0gIiIiCitTeW50YXg6ICUocHJvZ3JhbV9uYW1lKXMgWy0tdmVyYm9zZT0j
XSBbLS1naXQtY29tbWl0PTxTaW5nbGVDb21taXQ+XSBbLS1vdXRwdXQ9dnM3XQorICAgICAgICBb
LS1maWx0ZXI9LXgsK3ksLi4uXSBbZmlsZV0gLi4uCisKKyAgVGhlIHN0eWxlIGd1aWRlbGluZXMg
dGhpcyB0cmllcyB0byBmb2xsb3cgYXJlIGhlcmU6CisgICAgaHR0cDovL3dlYmtpdC5vcmcvY29k
aW5nL2NvZGluZy1zdHlsZS5odG1sCisKKyAgRXZlcnkgc3R5bGUgZXJyb3IgaXMgZ2l2ZW4gYSBj
b25maWRlbmNlIHNjb3JlIGZyb20gMS01LCB3aXRoIDUgbWVhbmluZworICB3ZSBhcmUgY2VydGFp
biBvZiB0aGUgcHJvYmxlbSwgYW5kIDEgbWVhbmluZyBpdCBjb3VsZCBiZSBhIGxlZ2l0aW1hdGUK
KyAgY29uc3RydWN0LiAgVGhpcyBjYW4gbWlzcyBzb21lIGVycm9ycyBhbmQgZG9lcyBub3Qgc3Vi
c3RpdHV0ZSBmb3IKKyAgY29kZSByZXZpZXcuCisKKyAgVG8gcHJldmVudCBzcGVjaWZpYyBsaW5l
cyBmcm9tIGJlaW5nIGxpbnRlZCwgYWRkIGEgJy8vIE5PTElOVCcgY29tbWVudCB0byB0aGUKKyAg
ZW5kIG9mIHRoZSBsaW5lLgorCisgIExpbnRlZCBleHRlbnNpb25zIGFyZSAuY3BwLCAuYyBhbmQg
LmguICBPdGhlciBmaWxlIHR5cGVzIGFyZSBpZ25vcmVkLgorCisgIFRoZSBmaWxlIHBhcmFtZXRl
ciBpcyBvcHRpb25hbCBhbmQgYWNjZXB0cyBtdWx0aXBsZSBmaWxlcy4gIExlYXZpbmcKKyAgb3V0
IHRoZSBmaWxlIHBhcmFtZXRlciBhcHBsaWVzIHRoZSBjaGVjayB0byBhbGwgZmlsZXMgY29uc2lk
ZXJlZCBjaGFuZ2VkCisgIGJ5IHlvdXIgc291cmNlIGNvbnRyb2wgbWFuYWdlbWVudCBzeXN0ZW0u
CisKKyAgRmxhZ3M6CisKKyAgICB2ZXJib3NlPSMKKyAgICAgIEEgbnVtYmVyIDEtNSB0aGF0IHJl
c3RyaWN0cyBvdXRwdXQgdG8gZXJyb3JzIHdpdGggYSBjb25maWRlbmNlCisgICAgICBzY29yZSBh
dCBvciBhYm92ZSB0aGlzIHZhbHVlLiBJbiBwYXJ0aWN1bGFyLCB0aGUgdmFsdWUgMSBkaXNwbGF5
cworICAgICAgYWxsIGVycm9ycy4gVGhlIGRlZmF1bHQgaXMgJShkZWZhdWx0X3ZlcmJvc2l0eSlz
LgorCisgICAgZ2l0LWNvbW1pdD08U2luZ2xlQ29tbWl0PgorICAgICAgQ2hlY2tzIHRoZSBzdHls
ZSBvZiBldmVyeXRoaW5nIGZyb20gdGhlIGdpdmVuIGNvbW1pdCB0byB0aGUgbG9jYWwgdHJlZS4K
KworICAgIG91dHB1dD12czcKKyAgICAgIFRoZSBvdXRwdXQgZm9ybWF0LCB3aGljaCBtYXkgYmUg
b25lIG9mCisgICAgICAgIGVtYWNzIDogdG8gZWFzZSBlbWFjcyBwYXJzaW5nCisgICAgICAgIHZz
NyAgIDogY29tcGF0aWJsZSB3aXRoIFZpc3VhbCBTdHVkaW8KKyAgICAgIERlZmF1bHRzIHRvICIl
KGRlZmF1bHRfb3V0cHV0X2Zvcm1hdClzIi4gT3RoZXIgZm9ybWF0cyBhcmUgdW5zdXBwb3J0ZWQu
CisKKyAgICBmaWx0ZXI9LXgsK3ksLi4uCisgICAgICBBIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9m
IGJvb2xlYW4gZmlsdGVyIHJ1bGVzIHVzZWQgdG8gZmlsdGVyCisgICAgICB3aGljaCBjYXRlZ29y
aWVzIG9mIHN0eWxlIGd1aWRlbGluZXMgdG8gY2hlY2suICBUaGUgc2NyaXB0IGNoZWNrcworICAg
ICAgYSBjYXRlZ29yeSBpZiB0aGUgY2F0ZWdvcnkgcGFzc2VzIHRoZSBmaWx0ZXIgcnVsZXMsIGFz
IGZvbGxvd3MuCisKKyAgICAgIEFueSB3ZWJraXQgY2F0ZWdvcnkgc3RhcnRzIG91dCBwYXNzaW5n
LiAgQWxsIGZpbHRlciBydWxlcyBhcmUgdGhlbgorICAgICAgZXZhbHVhdGVkIGxlZnQgdG8gcmln
aHQsIHdpdGggbGF0ZXIgcnVsZXMgdGFraW5nIHByZWNlZGVuY2UuICBGb3IKKyAgICAgIGV4YW1w
bGUsIHRoZSBydWxlICIrZm9vIiBwYXNzZXMgYW55IGNhdGVnb3J5IHRoYXQgc3RhcnRzIHdpdGgg
ImZvbyIsCisgICAgICBhbmQgIi1mb28iIGZhaWxzIGFueSBzdWNoIGNhdGVnb3J5LiAgVGhlIGZp
bHRlciBpbnB1dCAiLXdoaXRlc3BhY2UsCisgICAgICArd2hpdGVzcGFjZS9icmFjZXMiIGZhaWxz
IHRoZSBjYXRlZ29yeSAid2hpdGVzcGFjZS90YWIiIGFuZCBwYXNzZXMKKyAgICAgICJ3aGl0ZXNw
YWNlL2JyYWNlcyIuCisKKyAgICAgIEV4YW1wbGVzOiAtLWZpbHRlcj0td2hpdGVzcGFjZSwrd2hp
dGVzcGFjZS9icmFjZXMKKyAgICAgICAgICAgICAgICAtLWZpbHRlcj0td2hpdGVzcGFjZSwtcnVu
dGltZS9wcmludGYsK3J1bnRpbWUvcHJpbnRmX2Zvcm1hdAorICAgICAgICAgICAgICAgIC0tZmls
dGVyPS0sK2J1aWxkL2luY2x1ZGVfd2hhdF95b3VfdXNlCisKKyAgICAgIENhdGVnb3J5IG5hbWVz
IGFwcGVhciBpbiBlcnJvciBtZXNzYWdlcyBpbiBicmFja2V0cywgZm9yIGV4YW1wbGUKKyAgICAg
IFt3aGl0ZXNwYWNlL2luZGVudF0uICBUbyBzZWUgYSBsaXN0IG9mIGFsbCBjYXRlZ29yaWVzIGF2
YWlsYWJsZSB0bworICAgICAgJShwcm9ncmFtX25hbWUpcywgYWxvbmcgd2l0aCB3aGljaCBhcmUg
ZW5hYmxlZCBieSBkZWZhdWx0LCBwYXNzCisgICAgICB0aGUgZW1wdHkgZmlsdGVyIGFzIGZvbGxv
d3M6CisgICAgICAgICAtLWZpbHRlcj0KKyIiIiAlIHsncHJvZ3JhbV9uYW1lJzogb3MucGF0aC5i
YXNlbmFtZShzeXMuYXJndlswXSksCisgICAgICAgJ2RlZmF1bHRfdmVyYm9zaXR5JzogZGVmYXVs
dHMudmVyYm9zaXR5LAorICAgICAgICdkZWZhdWx0X291dHB1dF9mb3JtYXQnOiBkZWZhdWx0cy5v
dXRwdXRfZm9ybWF0fQorCisgICAgcmV0dXJuIHVzYWdlCisKKworIyBUaGlzIGNsYXNzIHNob3Vs
ZCBub3QgaGF2ZSBrbm93bGVkZ2Ugb2YgdGhlIGZsYWcga2V5IG5hbWVzLgorY2xhc3MgUHJvY2Vz
c29yT3B0aW9ucyhvYmplY3QpOgorICAgICIiIkEgY29udGFpbmVyIHRvIHN0b3JlIG9wdGlvbnMg
dG8gdXNlIHdoZW4gY2hlY2tpbmcgc3R5bGUuCisKKyAgICBBdHRyaWJ1dGVzOgorICAgICAgb3V0
cHV0X2Zvcm1hdDogQSBzdHJpbmcgdGhhdCBpcyB0aGUgb3V0cHV0IGZvcm1hdC4gVGhlIHN1cHBv
cnRlZAorICAgICAgICAgICAgICAgICAgICAgb3V0cHV0IGZvcm1hdHMgYXJlICJlbWFjcyIgd2hp
Y2ggZW1hY3MgY2FuIHBhcnNlCisgICAgICAgICAgICAgICAgICAgICBhbmQgInZzNyIgd2hpY2gg
TWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gNyBjYW4gcGFyc2UuCisgICAgICAgICAgICAgICAgICAg
ICBUaGUgZGVmYXVsdCBpcyAiZW1hY3MiLgorCisgICAgICB2ZXJib3NpdHk6IEFuIGludGVnZXIg
MS01IHRoYXQgcmVzdHJpY3RzIG91dHB1dCB0byBlcnJvcnMgd2l0aCBhCisgICAgICAgICAgICAg
ICAgIGNvbmZpZGVuY2Ugc2NvcmUgYXQgb3IgYWJvdmUgdGhpcyB2YWx1ZS4KKyAgICAgICAgICAg
ICAgICAgVGhlIGRlZmF1bHQgaXMgMSwgd2hpY2ggZGlzcGxheXMgYWxsIGVycm9ycy4KKworICAg
ICAgZmlsdGVyX3J1bGVzOiBBIGxpc3Qgb2Ygc3RyaW5ncyB0aGF0IGFyZSBib29sZWFuIGZpbHRl
ciBydWxlcyB1c2VkCisgICAgICAgICAgICAgICAgICAgIHRvIGRldGVybWluZSB3aGV0aGVyIGEg
c3R5bGUgY2F0ZWdvcnkgc2hvdWxkIGJlIGNoZWNrZWQuCisgICAgICAgICAgICAgICAgICAgIEVh
Y2ggc3RyaW5nIHNob3VsZCBzdGFydCB3aXRoICsgb3IgLS4gQW4gZXhhbXBsZQorICAgICAgICAg
ICAgICAgICAgICBzdHJpbmcgaXMgIit3aGl0ZXNwYWNlL2luZGVudCIuIFRoZSBsaXN0IGluY2x1
ZGVzIGFueQorICAgICAgICAgICAgICAgICAgICBwcmVwZW5kZWQgZGVmYXVsdCBmaWx0ZXIgcnVs
ZXMuIFRoZSBkZWZhdWx0IGlzIHRoZQorICAgICAgICAgICAgICAgICAgICBlbXB0eSBsaXN0LCB3
aGljaCBpbmNsdWRlcyBhbGwgY2F0ZWdvcmllcy4KKworICAgICAgZ2l0X2NvbW1pdDogQSBzdHJp
bmcgcmVwcmVzZW50aW5nIHRoZSBnaXQgY29tbWl0IHRvIGNoZWNrLgorICAgICAgICAgICAgICAg
ICAgVGhlIGRlZmF1bHQgaXMgTm9uZS4KKworICAgICAgZXh0cmFfZmxhZ192YWx1ZXM6IEEgc3Ry
aW5nLXN0cmluZyBkaWN0aW9uYXJ5IG9mIGFsbCBmbGFnIGtleS12YWx1ZQorICAgICAgICAgICAg
ICAgICAgICAgICAgIHBhaXJzIHRoYXQgYXJlIG5vdCBvdGhlcndpc2UgcmVwcmVzZW50ZWQgYnkg
dGhpcworICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzLiBUaGUgZGVmYXVsdCBpcyB0aGUg
ZW1wdHkgZGljdGlvbmFyeS4KKworICAgICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvdXRw
dXRfZm9ybWF0PSdlbWFjcycsIHZlcmJvc2l0eT0xLCBmaWx0ZXJfcnVsZXM9Tm9uZSwKKyAgICAg
ICAgICAgICAgICAgZ2l0X2NvbW1pdD1Ob25lLCBleHRyYV9mbGFnX3ZhbHVlcz1Ob25lKToKKyAg
ICAgICAgaWYgZmlsdGVyX3J1bGVzIGlzIE5vbmU6CisgICAgICAgICAgICBmaWx0ZXJfcnVsZXMg
PSBbXQorICAgICAgICBpZiBleHRyYV9mbGFnX3ZhbHVlcyBpcyBOb25lOgorICAgICAgICAgICAg
ZXh0cmFfZmxhZ192YWx1ZXMgaXMge30KKworICAgICAgICBzZWxmLm91dHB1dF9mb3JtYXQgPSBv
dXRwdXRfZm9ybWF0CisgICAgICAgIHNlbGYudmVyYm9zaXR5ID0gdmVyYm9zaXR5CisgICAgICAg
IHNlbGYuZmlsdGVyX3J1bGVzID0gZmlsdGVyX3J1bGVzCisgICAgICAgIHNlbGYuZ2l0X2NvbW1p
dCA9IGdpdF9jb21taXQKKyAgICAgICAgc2VsZi5leHRyYV9mbGFnX3ZhbHVlcyA9IGV4dHJhX2Zs
YWdfdmFsdWVzCisKKworIyBGSVhNRTogRWxpbWluYXRlIHRoZSBuZWVkIGZvciB0aGlzIGZ1bmN0
aW9uLgorIyAgICAgICAgT3B0aW9ucyBzaG91bGQgYmUgcGFzc2VkIGludG8gcHJvY2Vzc19maWxl
IGluc3RlYWQuCitkZWYgc2V0X29wdGlvbnMob3B0aW9ucyk6CisgICAgIiIiSW5pdGlhbGl6ZSBn
bG9iYWwgX0NwcFN0eWxlU3RhdGUgaW5zdGFuY2UuCisKKyAgICBUaGlzIG5lZWRzIHRvIGJlIGNh
bGxlZCBiZWZvcmUgY2FsbGluZyBwcm9jZXNzX2ZpbGUuCisKKyAgICBBcmdzOgorICAgICAgb3B0
aW9uczogQSBQcm9jZXNzb3JPcHRpb25zIGluc3RhbmNlLgorICAgICIiIgorICAgIGNwcF9zdHls
ZS5fc2V0X291dHB1dF9mb3JtYXQob3B0aW9ucy5vdXRwdXRfZm9ybWF0KQorICAgIGNwcF9zdHls
ZS5fc2V0X3ZlcmJvc2VfbGV2ZWwob3B0aW9ucy52ZXJib3NpdHkpCisgICAgY3BwX3N0eWxlLl9z
ZXRfZmlsdGVycyhvcHRpb25zLmZpbHRlcl9ydWxlcykKIAotZGVmIHBhcnNlX2FyZ3VtZW50cyhh
cmdzLCBhZGRpdGlvbmFsX2ZsYWdzPVtdLCBkaXNwbGF5X2hlbHA9RmFsc2UpOgotICAgICIiIlBh
cnNlcyB0aGUgY29tbWFuZCBsaW5lIGFyZ3VtZW50cy4KIAotICAgIFNlZSBjcHBfc3R5bGUucGFy
c2VfYXJndW1lbnRzKCkgZm9yIGRldGFpbHMuCisjIFRoaXMgY2xhc3Mgc2hvdWxkIG5vdCBoYXZl
IGtub3dsZWRnZSBvZiB0aGUgZmxhZyBrZXkgbmFtZXMuCitjbGFzcyBBcmd1bWVudERlZmF1bHRz
KG9iamVjdCk6CisgICAgIiIiQSBjb250YWluZXIgdG8gc3RvcmUgZGVmYXVsdCBhcmd1bWVudCB2
YWx1ZXMuCisKKyAgICBBdHRyaWJ1dGVzOgorICAgICAgb3V0cHV0X2Zvcm1hdDogQSBzdHJpbmcg
dGhhdCBpcyB0aGUgZGVmYXVsdCBvdXRwdXQgZm9ybWF0LgorICAgICAgdmVyYm9zaXR5OiBBbiBp
bnRlZ2VyIHRoYXQgaXMgdGhlIGRlZmF1bHQgdmVyYm9zaXR5IGxldmVsLgorICAgICAgZmlsdGVy
X3J1bGVzOiBBIGxpc3Qgb2Ygc3RyaW5ncyB0aGF0IGFyZSBib29sZWFuIGZpbHRlciBydWxlcwor
ICAgICAgICAgICAgICAgICAgICB0byBwcmVwZW5kIHRvIGFueSB1c2VyLXNwZWNpZmllZCBydWxl
cy4KKwogICAgICIiIgotICAgIHJldHVybiBjcHBfc3R5bGUucGFyc2VfYXJndW1lbnRzKGFyZ3Ms
IGFkZGl0aW9uYWxfZmxhZ3MsIGRpc3BsYXlfaGVscCkKKyAgICBkZWYgX19pbml0X18oc2VsZiwg
ZGVmYXVsdF9vdXRwdXRfZm9ybWF0LCBkZWZhdWx0X3ZlcmJvc2l0eSwKKyAgICAgICAgICAgICAg
ICAgZGVmYXVsdF9maWx0ZXJfcnVsZXMpOgorICAgICAgICBzZWxmLm91dHB1dF9mb3JtYXQgPSBk
ZWZhdWx0X291dHB1dF9mb3JtYXQKKyAgICAgICAgc2VsZi52ZXJib3NpdHkgPSBkZWZhdWx0X3Zl
cmJvc2l0eQorICAgICAgICBzZWxmLmZpbHRlcl9ydWxlcyA9IGRlZmF1bHRfZmlsdGVyX3J1bGVz
CisKKworY2xhc3MgQXJndW1lbnRQcmludGVyKG9iamVjdCk6CisgICAgIiIiU3VwcG9ydHMgdGhl
IHByaW50aW5nIG9mIGNoZWNrLXdlYmtpdC1zdHlsZSBjb21tYW5kIGFyZ3VtZW50cy4iIiIKKyAg
ICBkZWYgX2ZsYWdfcGFpcl90b19zdHJpbmcoc2VsZiwgZmxhZ19rZXksIGZsYWdfdmFsdWUpOgor
ICAgICAgICByZXR1cm4gJy0tJShrZXkpcz0lKHZhbClzJyAlIHsna2V5JzogZmxhZ19rZXksICd2
YWwnOiBmbGFnX3ZhbHVlIH0KKworICAgIGRlZiB0b19mbGFnX3N0cmluZyhzZWxmLCBvcHRpb25z
KToKKyAgICAgICAgIiIiUmV0dXJuIGEgZmxhZyBzdHJpbmcgeWllbGRpbmcgdGhlIGdpdmVuIFBy
b2Nlc3Nvck9wdGlvbnMgaW5zdGFuY2UuCisKKyAgICAgICAgVGhpcyBtZXRob2Qgb3JkZXJzIHRo
ZSBmbGFnIHZhbHVlcyBhbHBoYWJldGljYWxseSBieSB0aGUgZmxhZyBrZXkuCisKKyAgICAgICAg
QXJnczoKKyAgICAgICAgICBvcHRpb25zOiBBIFByb2Nlc3Nvck9wdGlvbnMgaW5zdGFuY2UuCisK
KyAgICAgICAgIiIiCisgICAgICAgIGZsYWdzID0gb3B0aW9ucy5leHRyYV9mbGFnX3ZhbHVlcy5j
b3B5KCkKKworICAgICAgICBmbGFnc1snb3V0cHV0J10gPSBvcHRpb25zLm91dHB1dF9mb3JtYXQK
KyAgICAgICAgZmxhZ3NbJ3ZlcmJvc2UnXSA9IG9wdGlvbnMudmVyYm9zaXR5CisgICAgICAgIGlm
IG9wdGlvbnMuZmlsdGVyX3J1bGVzOgorICAgICAgICAgICAgZmxhZ3NbJ2ZpbHRlciddID0gJywn
LmpvaW4ob3B0aW9ucy5maWx0ZXJfcnVsZXMpCisgICAgICAgIGlmIG9wdGlvbnMuZ2l0X2NvbW1p
dDoKKyAgICAgICAgICAgIGZsYWdzWydnaXQtY29tbWl0J10gPSBvcHRpb25zLmdpdF9jb21taXQK
KworICAgICAgICBmbGFnX3N0cmluZyA9ICcnCisgICAgICAgICMgQWxwaGFiZXRpemluZyBsZXRz
IHVzIHVuaXQgdGVzdCB0aGlzIG1ldGhvZC4KKyAgICAgICAgZm9yIGtleSBpbiBzb3J0ZWQoZmxh
Z3Mua2V5cygpKToKKyAgICAgICAgICAgIGZsYWdfc3RyaW5nICs9IHNlbGYuX2ZsYWdfcGFpcl90
b19zdHJpbmcoa2V5LCBmbGFnc1trZXldKSArICcgJworCisgICAgICAgIHJldHVybiBmbGFnX3N0
cmluZy5zdHJpcCgpCisKKworY2xhc3MgQXJndW1lbnRQYXJzZXIob2JqZWN0KToKKyAgICAiIiJT
dXBwb3J0cyB0aGUgcGFyc2luZyBvZiBjaGVjay13ZWJraXQtc3R5bGUgY29tbWFuZCBhcmd1bWVu
dHMuCisKKyAgICBBdHRyaWJ1dGVzOgorICAgICAgZGVmYXVsdHM6IEFuIEFyZ3VtZW50RGVmYXVs
dHMgaW5zdGFuY2UuCisgICAgICBjcmVhdGVfdXNhZ2U6IEEgZnVuY3Rpb24gdGhhdCBhY2NlcHRz
IGFuIEFyZ3VtZW50RGVmYXVsdHMgaW5zdGFuY2UKKyAgICAgICAgICAgICAgICAgICAgYW5kIHJl
dHVybnMgYSBzdHJpbmcgb2YgdXNhZ2UgaW5zdHJ1Y3Rpb25zLgorICAgICAgICAgICAgICAgICAg
ICBUaGlzIGRlZmF1bHRzIHRvIHRoZSBmdW5jdGlvbiB1c2VkIHRvIGdlbmVyYXRlIHRoZQorICAg
ICAgICAgICAgICAgICAgICB1c2FnZSBzdHJpbmcgZm9yIGNoZWNrLXdlYmtpdC1zdHlsZS4KKyAg
ICAgIGRvY19wcmludDogQSBmdW5jdGlvbiB0aGF0IGFjY2VwdHMgYSBzdHJpbmcgcGFyYW1ldGVy
IGFuZCB0aGF0IGlzCisgICAgICAgICAgICAgICAgIGNhbGxlZCB0byBkaXNwbGF5IGhlbHAgbWVz
c2FnZXMuIFRoaXMgZGVmYXVsdHMgdG8KKyAgICAgICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0
ZSgpLgorCisgICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGFyZ3VtZW50X2RlZmF1bHRz
LCBjcmVhdGVfdXNhZ2U9Tm9uZSwgZG9jX3ByaW50PU5vbmUpOgorICAgICAgICBpZiBjcmVhdGVf
dXNhZ2UgaXMgTm9uZToKKyAgICAgICAgICAgIGNyZWF0ZV91c2FnZSA9IF9jcmVhdGVfdXNhZ2UK
KyAgICAgICAgaWYgZG9jX3ByaW50IGlzIE5vbmU6CisgICAgICAgICAgICBkb2NfcHJpbnQgPSBz
eXMuc3RkZXJyLndyaXRlCisKKyAgICAgICAgc2VsZi5kZWZhdWx0cyA9IGFyZ3VtZW50X2RlZmF1
bHRzCisgICAgICAgIHNlbGYuY3JlYXRlX3VzYWdlID0gY3JlYXRlX3VzYWdlCisgICAgICAgIHNl
bGYuZG9jX3ByaW50ID0gZG9jX3ByaW50CisKKyAgICBkZWYgX2V4aXRfd2l0aF91c2FnZShzZWxm
LCBlcnJvcl9tZXNzYWdlPScnKToKKyAgICAgICAgIiIiRXhpdCBhbmQgcHJpbnQgYSB1c2FnZSBz
dHJpbmcgd2l0aCBhbiBvcHRpb25hbCBlcnJvciBtZXNzYWdlLgorCisgICAgICAgIEFyZ3M6Cisg
ICAgICAgICAgZXJyb3JfbWVzc2FnZTogQSBzdHJpbmcgdGhhdCBpcyBhbiBlcnJvciBtZXNzYWdl
IHRvIHByaW50LgorICAgICAgICAiIiIKKyAgICAgICAgdXNhZ2UgPSBzZWxmLmNyZWF0ZV91c2Fn
ZShzZWxmLmRlZmF1bHRzKQorICAgICAgICBzZWxmLmRvY19wcmludCh1c2FnZSkKKyAgICAgICAg
aWYgZXJyb3JfbWVzc2FnZToKKyAgICAgICAgICAgIHN5cy5leGl0KCdcbkZBVEFMIEVSUk9SOiAn
ICsgZXJyb3JfbWVzc2FnZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHN5cy5leGl0KDEp
CisKKyAgICBkZWYgX2V4aXRfd2l0aF9jYXRlZ29yaWVzKHNlbGYpOgorICAgICAgICAiIiJFeGl0
IGFuZCBwcmludCB0aGUgc3R5bGUgY2F0ZWdvcmllcyBhbmQgZGVmYXVsdCBmaWx0ZXIgcnVsZXMu
IiIiCisgICAgICAgIHNlbGYuZG9jX3ByaW50KCdcbkFsbCBjYXRlZ29yaWVzOlxuJykKKyAgICAg
ICAgZm9yIGNhdGVnb3J5IGluIHNvcnRlZChjcHBfc3R5bGUuX1NUWUxFX0NBVEVHT1JJRVMpOgor
ICAgICAgICAgICAgc2VsZi5kb2NfcHJpbnQoJyAgICAnICsgY2F0ZWdvcnkgKyAnXG4nKQorCisg
ICAgICAgIHNlbGYuZG9jX3ByaW50KCdcbkRlZmF1bHQgZmlsdGVyIHJ1bGVzKio6XG4nKQorICAg
ICAgICBmb3IgZmlsdGVyX3J1bGUgaW4gc29ydGVkKHNlbGYuZGVmYXVsdHMuZmlsdGVyX3J1bGVz
KToKKyAgICAgICAgICAgIHNlbGYuZG9jX3ByaW50KCcgICAgJyArIGZpbHRlcl9ydWxlICsgJ1xu
JykKKyAgICAgICAgc2VsZi5kb2NfcHJpbnQoJ1xuKipUaGUgY29tbWFuZCBhbHdheXMgZXZhbHVh
dGVzIHRoZSBhYm92ZSBydWxlcywgJworICAgICAgICAgICAgICAgICAgICAgICAnYW5kIGJlZm9y
ZSBhbnkgLS1maWx0ZXIgZmxhZy5cblxuJykKKworICAgICAgICBzeXMuZXhpdCgwKQorCisgICAg
ZGVmIF9wYXJzZV9maWx0ZXJfZmxhZyhzZWxmLCBmbGFnX3ZhbHVlKToKKyAgICAgICAgIiIiUGFy
c2UgdGhlIHZhbHVlIG9mIHRoZSAtLWZpbHRlciBmbGFnLgorCisgICAgICAgIFRoZXNlIGZpbHRl
cnMgYXJlIGFwcGxpZWQgd2hlbiBkZWNpZGluZyB3aGV0aGVyIHRvIGVtaXQgYSBnaXZlbgorICAg
ICAgICBlcnJvciBtZXNzYWdlLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgZmxhZ192YWx1
ZTogQSBzdHJpbmcgb2YgY29tbWEtc2VwYXJhdGVkIGZpbHRlciBydWxlcywgZm9yCisgICAgICAg
ICAgICAgICAgICAgICAgZXhhbXBsZSAiLXdoaXRlc3BhY2UsK3doaXRlc3BhY2UvaW5kZW50Ii4K
KworICAgICAgICAiIiIKKyAgICAgICAgZmlsdGVycyA9IFtdCisgICAgICAgIGZvciB1bmNsZWFu
ZWRfZmlsdGVyIGluIGZsYWdfdmFsdWUuc3BsaXQoJywnKToKKyAgICAgICAgICAgIGZpbHRlciA9
IHVuY2xlYW5lZF9maWx0ZXIuc3RyaXAoKQorICAgICAgICAgICAgaWYgbm90IGZpbHRlcjoKKyAg
ICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgZmlsdGVycy5hcHBlbmQoZmlsdGVy
KQorICAgICAgICByZXR1cm4gZmlsdGVycworCisgICAgZGVmIHBhcnNlKHNlbGYsIGFyZ3MsIGV4
dHJhX2ZsYWdzPVtdKToKKyAgICAgICAgIiIiUGFyc2UgdGhlIGNvbW1hbmQgbGluZSBhcmd1bWVu
dHMgdG8gY2hlY2std2Via2l0LXN0eWxlLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgYXJn
czogQSBsaXN0IG9mIGNvbW1hbmQtbGluZSBhcmd1bWVudHMgYXMgcmV0dXJuZWQgYnkgc3lzLmFy
Z3ZbMTpdLgorICAgICAgICAgIGV4dHJhX2ZsYWdzOiBBIGxpc3Qgb2YgZmxhZ3Mgbm90IHN1cHBv
cnRlZCBieSB0aGUgUHJvY2Vzc29yT3B0aW9ucworICAgICAgICAgICAgICAgICAgICAgICBjbGFz
cy4gQW4gZXhhbXBsZSBmbGFnICJuZXdfZmxhZz0iLgorCisgICAgICAgIFJldHVybnM6CisgICAg
ICAgICAgQSB0dXBsZSBvZiAoZmlsZW5hbWVzLCBvcHRpb25zKQorCisgICAgICAgICAgZmlsZW5h
bWVzOiBUaGUgbGlzdCBvZiBmaWxlbmFtZXMgdG8gY2hlY2suCisgICAgICAgICAgb3B0aW9uczog
QSBQcm9jZXNzb3JPcHRpb25zIGluc3RhbmNlLgorCisgICAgICAgICIiIgorICAgICAgICBvdXRw
dXRfZm9ybWF0ID0gc2VsZi5kZWZhdWx0cy5vdXRwdXRfZm9ybWF0CisgICAgICAgIHZlcmJvc2l0
eSA9IHNlbGYuZGVmYXVsdHMudmVyYm9zaXR5CisgICAgICAgIGZpbHRlcl9ydWxlcyA9IHNlbGYu
ZGVmYXVsdHMuZmlsdGVyX3J1bGVzCisKKyAgICAgICAgIyBUaGUgZmxhZ3MgYWxyZWFkeSBzdXBw
b3J0ZWQgYnkgdGhlIFByb2Nlc3Nvck9wdGlvbnMgY2xhc3MuCisgICAgICAgIGZsYWdzID0gWydo
ZWxwJywgJ291dHB1dD0nLCAndmVyYm9zZT0nLCAnZmlsdGVyPScsICdnaXQtY29tbWl0PSddCisK
KyAgICAgICAgZm9yIGV4dHJhX2ZsYWcgaW4gZXh0cmFfZmxhZ3M6CisgICAgICAgICAgICBpZiBl
eHRyYV9mbGFnIGluIGZsYWdzOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0Zs
YWcgXCclKGV4dHJhX2ZsYWcpcyBpcyBkdXBsaWNhdGVkICcKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICdvciBhbHJlYWR5IHN1cHBvcnRlZC4nICUKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHsnZXh0cmFfZmxhZyc6IGV4dHJhX2ZsYWcgfSkKKyAgICAgICAgICAg
IGZsYWdzLmFwcGVuZChleHRyYV9mbGFnKQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIChv
cHRzLCBmaWxlbmFtZXMpID0gZ2V0b3B0LmdldG9wdChhcmdzLCAnJywgZmxhZ3MpCisgICAgICAg
IGV4Y2VwdCBnZXRvcHQuR2V0b3B0RXJyb3I6CisgICAgICAgICAgICBzZWxmLl9leGl0X3dpdGhf
dXNhZ2UoJ0ludmFsaWQgYXJndW1lbnRzLicpCisKKyAgICAgICAgZXh0cmFfZmxhZ192YWx1ZXMg
PSB7fQorICAgICAgICBnaXRfY29tbWl0ID0gTm9uZQorCisgICAgICAgIGZvciAob3B0LCB2YWwp
IGluIG9wdHM6CisgICAgICAgICAgICBpZiBvcHQgPT0gJy0taGVscCc6CisgICAgICAgICAgICAg
ICAgc2VsZi5fZXhpdF93aXRoX3VzYWdlKCkKKyAgICAgICAgICAgIGVsaWYgb3B0ID09ICctLW91
dHB1dCc6CisgICAgICAgICAgICAgICAgb3V0cHV0X2Zvcm1hdCA9IHZhbAorICAgICAgICAgICAg
ZWxpZiBvcHQgPT0gJy0tdmVyYm9zZSc6CisgICAgICAgICAgICAgICAgdmVyYm9zaXR5ID0gdmFs
CisgICAgICAgICAgICBlbGlmIG9wdCA9PSAnLS1naXQtY29tbWl0JzoKKyAgICAgICAgICAgICAg
ICBnaXRfY29tbWl0ID0gdmFsCisgICAgICAgICAgICBlbGlmIG9wdCA9PSAnLS1maWx0ZXInOgor
ICAgICAgICAgICAgICAgIGlmIG5vdCB2YWw6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2V4
aXRfd2l0aF9jYXRlZ29yaWVzKCkKKyAgICAgICAgICAgICAgICAjIFByZXBlbmQgdGhlIGRlZmF1
bHRzLgorICAgICAgICAgICAgICAgIGZpbHRlcl9ydWxlcyA9IGZpbHRlcl9ydWxlcyArIHNlbGYu
X3BhcnNlX2ZpbHRlcl9mbGFnKHZhbCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAg
ICAgZXh0cmFfZmxhZ192YWx1ZXNbb3B0XSA9IHZhbAorCisgICAgICAgICMgQ2hlY2sgdmFsaWRp
dHkgb2YgcmVzdWx0aW5nIHZhbHVlcy4KKyAgICAgICAgaWYgZmlsZW5hbWVzIGFuZCAoZ2l0X2Nv
bW1pdCAhPSBOb25lKToKKyAgICAgICAgICAgIHNlbGYuX2V4aXRfd2l0aF91c2FnZSgnSXQgaXMg
bm90IHBvc3NpYmxlIHRvIGNoZWNrIGZpbGVzIGFuZCBhICcKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnc3BlY2lmaWMgY29tbWl0IGF0IHRoZSBzYW1lIHRpbWUuJykKKworICAg
ICAgICBpZiBvdXRwdXRfZm9ybWF0IG5vdCBpbiAoJ2VtYWNzJywgJ3ZzNycpOgorICAgICAgICAg
ICAgcmFpc2UgVmFsdWVFcnJvcignSW52YWxpZCAtLW91dHB1dCB2YWx1ZSAiJXMiOiBUaGUgb25s
eSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhbGxvd2VkIG91dHB1dCBmb3JtYXRz
IGFyZSBlbWFjcyBhbmQgdnM3LicgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRw
dXRfZm9ybWF0KQorCisgICAgICAgIHZlcmJvc2l0eSA9IGludCh2ZXJib3NpdHkpCisgICAgICAg
IGlmICgodmVyYm9zaXR5IDwgMSkgb3IgKHZlcmJvc2l0eSA+IDUpKToKKyAgICAgICAgICAgIHJh
aXNlIFZhbHVlRXJyb3IoJ0ludmFsaWQgLS12ZXJib3NlIHZhbHVlICVzOiB2YWx1ZSBtdXN0ICcK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JlIGJldHdlZW4gMS01LicgJSB2ZXJib3Np
dHkpCisKKyAgICAgICAgZm9yIHJ1bGUgaW4gZmlsdGVyX3J1bGVzOgorICAgICAgICAgICAgaWYg
bm90IChydWxlLnN0YXJ0c3dpdGgoJysnKSBvciBydWxlLnN0YXJ0c3dpdGgoJy0nKSk6CisgICAg
ICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignSW52YWxpZCBmaWx0ZXIgcnVsZSAiJXMiOiBl
dmVyeSBydWxlICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdydWxlIGluIHRo
ZSAtLWZpbHRlciBmbGFnIG11c3Qgc3RhcnQgJworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ3dpdGggKyBvciAtLicgJSBydWxlKQorCisgICAgICAgIG9wdGlvbnMgPSBQcm9jZXNz
b3JPcHRpb25zKG91dHB1dF9mb3JtYXQsIHZlcmJvc2l0eSwgZmlsdGVyX3J1bGVzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnaXRfY29tbWl0LCBleHRyYV9mbGFnX3ZhbHVl
cykKKworICAgICAgICByZXR1cm4gKGZpbGVuYW1lcywgb3B0aW9ucykKIAogCiBkZWYgcHJvY2Vz
c19maWxlKGZpbGVuYW1lKToKSW5kZXg6IFNjcmlwdHMvbW9kdWxlcy9zdHlsZV91bml0dGVzdC5w
eQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTY3JpcHRzL21vZHVsZXMvc3R5bGVfdW5pdHRlc3QucHkJKHJldmlz
aW9uIDApCisrKyBTY3JpcHRzL21vZHVsZXMvc3R5bGVfdW5pdHRlc3QucHkJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMjA0IEBACisjIS91c3IvYmluL3B5dGhvbgorIyAtKi0gY29kaW5nOiB1dGYt
ODsgLSotCisjCisjIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4KKyMgQ29weXJp
Z2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
IyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisKKyIiIlVuaXQgdGVzdHMgZm9yIHN0eWxlLnB5LiIiIgorCitpbXBvcnQgdW5pdHRlc3QK
KworaW1wb3J0IHN0eWxlCitmcm9tIGNwcF9zdHlsZSBpbXBvcnQgX1NUWUxFX0NBVEVHT1JJRVMK
KworCitjbGFzcyBEZWZhdWx0QXJndW1lbnRzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAg
IiIiVGVzdHMgdmFsaWRpdHkgb2YgZGVmYXVsdCBhcmd1bWVudHMgdXNlZCBieSBjaGVjay13ZWJr
aXQtc3R5bGUuIiIiCisgICAgZGVmIHRlc3RfZmlsdGVyX3J1bGVzKHNlbGYpOgorICAgICAgICBh
bHJlYWR5X3NlZW4gPSBbXQorICAgICAgICBmb3IgcnVsZSBpbiBzdHlsZS5XRUJLSVRfRklMVEVS
X1JVTEVTOgorICAgICAgICAgICAgIyBBbGwgY2F0ZWdvcmllcyBhcmUgb24gYnkgZGVmYXVsdCwg
c28gZGVmYXVsdHMgc2hvdWxkCisgICAgICAgICAgICAjIGJlZ2luIHdpdGggLS4KKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHJ1bGUuc3RhcnRzd2l0aCgnLScpLCBUcnVlKQorICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocnVsZVsxOl0gaW4gX1NUWUxFX0NBVEVHT1JJRVMsIFRy
dWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhydWxlIGluIGFscmVhZHlfc2Vlbiwg
RmFsc2UpCisgICAgICAgICAgICBhbHJlYWR5X3NlZW4uYXBwZW5kKHJ1bGUpCisKKyAgICBkZWYg
dGVzdF9kZWZhdWx0cyhzZWxmKToKKyAgICAgICAgZGVmYXVsdHMgPSBzdHlsZS5Bcmd1bWVudERl
ZmF1bHRzKHN0eWxlLkRFRkFVTFRfT1VUUFVUX0ZPUk1BVCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0eWxlLkRFRkFVTFRfVkVSQk9TSVRZLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGUuV0VCS0lUX0ZJTFRFUl9SVUxF
UykKKyAgICAgICAgcGFyc2VyID0gc3R5bGUuQXJndW1lbnRQYXJzZXIoZGVmYXVsdHMpCisgICAg
ICAgIHBhcnNlci5wYXJzZShbXSkgIyB3b3JrcworCisKK2NsYXNzIEFyZ3VtZW50UHJpbnRlclRl
c3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIlRlc3QgdGhlIEFyZ3VtZW50UHJpbnRlciBj
bGFzcy4iIiIKKyAgICBfcHJpbnRlciA9IHN0eWxlLkFyZ3VtZW50UHJpbnRlcigpCisKKyAgICBk
ZWYgX2NyZWF0ZV9vcHRpb25zKHNlbGYsIG91dHB1dF9mb3JtYXQ9J2VtYWNzJywgdmVyYm9zaXR5
PTMsCisgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJfcnVsZXM9W10sIGdpdF9jb21taXQ9
Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhX2ZsYWdfdmFsdWVzPXt9KToKKyAg
ICAgICAgcmV0dXJuIHN0eWxlLlByb2Nlc3Nvck9wdGlvbnMob3V0cHV0X2Zvcm1hdCwgdmVyYm9z
aXR5LCBmaWx0ZXJfcnVsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGdpdF9jb21taXQsIGV4dHJhX2ZsYWdfdmFsdWVzKQorCisgICAgZGVmIHRlc3RfdG9fZmxhZ19z
dHJpbmcoc2VsZik6CisgICAgICAgIG9wdGlvbnMgPSBzZWxmLl9jcmVhdGVfb3B0aW9ucygndnM3
JywgNSwgWycrZm9vJywgJy1iYXInXSwgJ2dpdCcsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB7J2EnOiAwLCAneic6IDF9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
cygnLS1hPTAgLS1maWx0ZXI9K2ZvbywtYmFyIC0tZ2l0LWNvbW1pdD1naXQgJworICAgICAgICAg
ICAgICAgICAgICAgICAgICAnLS1vdXRwdXQ9dnM3IC0tdmVyYm9zZT01IC0tej0xJywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcHJpbnRlci50b19mbGFnX3N0cmluZyhvcHRpb25z
KSkKKworICAgICAgICAjIFRoaXMgaXMgdG8gY2hlY2sgdGhhdCAtLWZpbHRlciBhbmQgLS1naXQt
Y29tbWl0IGRvIG5vdAorICAgICAgICAjIHNob3cgdXAgd2hlbiBub3QgdXNlci1zcGVjaWZpZWQu
CisgICAgICAgIG9wdGlvbnMgPSBzZWxmLl9jcmVhdGVfb3B0aW9ucygpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWxzKCctLW91dHB1dD1lbWFjcyAtLXZlcmJvc2U9MycsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNlbGYuX3ByaW50ZXIudG9fZmxhZ19zdHJpbmcob3B0aW9ucykpCisKKwor
Y2xhc3MgQXJndW1lbnRQYXJzZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJUZXN0
IHRoZSBBcmd1bWVudFBhcnNlciBjbGFzcy4iIiIKKyAgICBkZWYgX3BhcnNlKHNlbGYpOgorICAg
ICAgICAiIiJSZXR1cm4gYSBkZWZhdWx0IHBhcnNlKCkgZnVuY3Rpb24gZm9yIHRlc3RpbmcuIiIi
CisgICAgICAgIHJldHVybiBzZWxmLl9jcmVhdGVfcGFyc2VyKCkucGFyc2UKKworICAgIGRlZiBf
Y3JlYXRlX2RlZmF1bHRzKHNlbGYsIGRlZmF1bHRfb3V0cHV0X2Zvcm1hdD0ndnM3JywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICBkZWZhdWx0X3ZlcmJvc2l0eT0zLAorICAgICAgICAgICAgICAg
ICAgICAgICAgIGRlZmF1bHRfZmlsdGVyX3J1bGVzPVsnLScsICcrd2hpdGVzcGFjZSddKToKKyAg
ICAgICAgIiIiIlJldHVybiBhIGRlZmF1bHQgQXJndW1lbnREZWZhdWx0cyBpbnN0YW5jZSBmb3Ig
dGVzdGluZy4iIiIKKyAgICAgICAgcmV0dXJuIHN0eWxlLkFyZ3VtZW50RGVmYXVsdHMoZGVmYXVs
dF9vdXRwdXRfZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
ZWZhdWx0X3ZlcmJvc2l0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGVmYXVsdF9maWx0ZXJfcnVsZXMpCisKKyAgICBkZWYgX2NyZWF0ZV9wYXJzZXIoc2VsZiwgZGVm
YXVsdHM9Tm9uZSk6CisgICAgICAgICIiIiJSZXR1cm4gYW4gQXJndW1lbnRQYXJzZXIgaW5zdGFu
Y2UgZm9yIHRlc3RpbmcuIiIiCisgICAgICAgIGRlZiBjcmVhdGVfdXNhZ2UoX2RlZmF1bHRzKToK
KyAgICAgICAgICAgICIiIlJldHVybiBhIHVzYWdlIHN0cmluZyBmb3IgdGVzdGluZy4iIiIKKyAg
ICAgICAgICAgIHJldHVybiAidXNhZ2UiOworCisgICAgICAgIGRlZiBkb2NfcHJpbnQobWVzc2Fn
ZSk6CisgICAgICAgICAgICAjIFdlIGRvIG5vdCB3YW50IHRoZSB1c2FnZSBzdHJpbmcgb3Igc3R5
bGUgY2F0ZWdvcmllcworICAgICAgICAgICAgIyB0byBwcmludCBkdXJpbmcgdW5pdCB0ZXN0cywg
c28gcHJpbnQgbm90aGluZy4KKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIGlmIGRlZmF1
bHRzIGlzIE5vbmU6CisgICAgICAgICAgICBkZWZhdWx0cyA9IHNlbGYuX2NyZWF0ZV9kZWZhdWx0
cygpCisKKyAgICAgICAgcmV0dXJuIHN0eWxlLkFyZ3VtZW50UGFyc2VyKGRlZmF1bHRzLCBjcmVh
dGVfdXNhZ2UsIGRvY19wcmludCkKKworICAgIGRlZiB0ZXN0X3BhcnNlX2RvY3VtZW50YXRpb24o
c2VsZik6CisgICAgICAgIHBhcnNlID0gc2VsZi5fcGFyc2UoKQorCisgICAgICAgICMgRklYTUU6
IFRlc3QgYm90aCB0aGUgcHJpbnRpbmcgb2YgdGhlIHVzYWdlIHN0cmluZyBhbmQgdGhlCisgICAg
ICAgICMgICAgICAgIGZpbHRlciBjYXRlZ29yaWVzIGhlbHAuCisKKyAgICAgICAgIyBSZXF1ZXN0
IHRoZSB1c2FnZSBzdHJpbmcuCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5c3RlbUV4aXQs
IHBhcnNlLCBbJy0taGVscCddKQorICAgICAgICAjIFJlcXVlc3QgZGVmYXVsdCBmaWx0ZXIgcnVs
ZXMgYW5kIGF2YWlsYWJsZSBzdHlsZSBjYXRlZ29yaWVzLgorICAgICAgICBzZWxmLmFzc2VydFJh
aXNlcyhTeXN0ZW1FeGl0LCBwYXJzZSwgWyctLWZpbHRlcj0nXSkKKworICAgIGRlZiB0ZXN0X3Bh
cnNlX2JhZF92YWx1ZXMoc2VsZik6CisgICAgICAgIHBhcnNlID0gc2VsZi5fcGFyc2UoKQorCisg
ICAgICAgICMgUGFzcyBhbiB1bnN1cHBvcnRlZCBhcmd1bWVudC4KKyAgICAgICAgc2VsZi5hc3Nl
cnRSYWlzZXMoU3lzdGVtRXhpdCwgcGFyc2UsIFsnLS1iYWQnXSkKKworICAgICAgICBzZWxmLmFz
c2VydFJhaXNlcyhWYWx1ZUVycm9yLCBwYXJzZSwgWyctLXZlcmJvc2U9YmFkJ10pCisgICAgICAg
IHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHBhcnNlLCBbJy0tdmVyYm9zZT0wJ10pCisg
ICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHBhcnNlLCBbJy0tdmVyYm9zZT02
J10pCisgICAgICAgIHBhcnNlKFsnLS12ZXJib3NlPTEnXSkgIyB3b3JrcworICAgICAgICBwYXJz
ZShbJy0tdmVyYm9zZT01J10pICMgd29ya3MKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhW
YWx1ZUVycm9yLCBwYXJzZSwgWyctLW91dHB1dD1iYWQnXSkKKyAgICAgICAgcGFyc2UoWyctLW91
dHB1dD12czcnXSkgIyB3b3JrcworCisgICAgICAgICMgUGFzcyBhIGZpbHRlciBydWxlIG5vdCBi
ZWdpbm5pbmcgd2l0aCArIG9yIC0uCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJy
b3IsIHBhcnNlLCBbJy0tZmlsdGVyPWZvbyddKQorICAgICAgICBwYXJzZShbJy0tZmlsdGVyPStm
b28nXSkgIyB3b3JrcworICAgICAgICAjIFBhc3MgZmlsZXMgYW5kIGdpdC1jb21taXQgYXQgdGhl
IHNhbWUgdGltZS4KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3lzdGVtRXhpdCwgcGFyc2Us
IFsnLS1naXQtY29tbWl0PScsICdmaWxlLnR4dCddKQorICAgICAgICAjIFBhc3MgYW4gZXh0cmEg
ZmxhZyBhbHJlYWR5IHN1cHBvcnRlZC4KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVF
cnJvciwgcGFyc2UsIFtdLCBbJ2ZpbHRlcj0nXSkKKyAgICAgICAgcGFyc2UoW10sIFsnZXh0cmE9
J10pICMgd29ya3MKKyAgICAgICAgIyBQYXNzIGFuIGV4dHJhIGZsYWcgd2l0aCB0eXBvLgorICAg
ICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeXN0ZW1FeGl0LCBwYXJzZSwgWyctLWV4dHJhdHlwbz0n
XSwgWydleHRyYT0nXSkKKyAgICAgICAgcGFyc2UoWyctLWV4dHJhPSddLCBbJ2V4dHJhPSddKSAj
IHdvcmtzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHBhcnNlLCBbXSwg
WydleHRyYT0nLCAnZXh0cmE9J10pCisgICAgICAgIAorCisgICAgZGVmIHRlc3RfcGFyc2VfZGVm
YXVsdF9hcmd1bWVudHMoc2VsZik6CisgICAgICAgIHBhcnNlID0gc2VsZi5fcGFyc2UoKQorCisg
ICAgICAgIChmaWxlcywgb3B0aW9ucykgPSBwYXJzZShbXSkKKworICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFscyhmaWxlcywgW10pCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMob3B0aW9ucy5v
dXRwdXRfZm9ybWF0LCAndnM3JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMob3B0aW9ucy52
ZXJib3NpdHksIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG9wdGlvbnMuZmlsdGVyX3J1
bGVzLCBbJy0nLCAnK3doaXRlc3BhY2UnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMob3B0
aW9ucy5naXRfY29tbWl0LCBOb25lKQorCisgICAgZGVmIHRlc3RfcGFyc2VfZXhwbGljaXRfYXJn
dW1lbnRzKHNlbGYpOgorICAgICAgICBwYXJzZSA9IHNlbGYuX3BhcnNlKCkKKworICAgICAgICAj
IFBhc3Mgbm9uLWRlZmF1bHQgZXhwbGljaXQgdmFsdWVzLgorICAgICAgICAoZmlsZXMsIG9wdGlv
bnMpID0gcGFyc2UoWyctLW91dHB1dD1lbWFjcyddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
cyhvcHRpb25zLm91dHB1dF9mb3JtYXQsICdlbWFjcycpCisgICAgICAgIChmaWxlcywgb3B0aW9u
cykgPSBwYXJzZShbJy0tdmVyYm9zZT00J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG9w
dGlvbnMudmVyYm9zaXR5LCA0KQorICAgICAgICAoZmlsZXMsIG9wdGlvbnMpID0gcGFyc2UoWyct
LWdpdC1jb21taXQ9Y29tbWl0J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG9wdGlvbnMu
Z2l0X2NvbW1pdCwgJ2NvbW1pdCcpCisgICAgICAgIChmaWxlcywgb3B0aW9ucykgPSBwYXJzZShb
Jy0tZmlsdGVyPStmb28sLWJhciddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhvcHRpb25z
LmZpbHRlcl9ydWxlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgWyctJywgJyt3aGl0ZXNw
YWNlJywgJytmb28nLCAnLWJhciddKQorCisgICAgICAgICMgUGFzcyBleHRyYSBmbGFnIHZhbHVl
cy4KKyAgICAgICAgKGZpbGVzLCBvcHRpb25zKSA9IHBhcnNlKFsnLS1leHRyYSddLCBbJ2V4dHJh
J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG9wdGlvbnMuZXh0cmFfZmxhZ192YWx1ZXMs
IHsnLS1leHRyYSc6ICcnfSkKKyAgICAgICAgKGZpbGVzLCBvcHRpb25zKSA9IHBhcnNlKFsnLS1l
eHRyYT0nXSwgWydleHRyYT0nXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMob3B0aW9ucy5l
eHRyYV9mbGFnX3ZhbHVlcywgeyctLWV4dHJhJzogJyd9KQorICAgICAgICAoZmlsZXMsIG9wdGlv
bnMpID0gcGFyc2UoWyctLWV4dHJhPXgnXSwgWydleHRyYT0nXSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbHMob3B0aW9ucy5leHRyYV9mbGFnX3ZhbHVlcywgeyctLWV4dHJhJzogJ3gnfSkKKwor
ICAgIGRlZiB0ZXN0X3BhcnNlX2ZpbGVzKHNlbGYpOgorICAgICAgICBwYXJzZSA9IHNlbGYuX3Bh
cnNlKCkKKworICAgICAgICAoZmlsZXMsIG9wdGlvbnMpID0gcGFyc2UoWydmb28uY3BwJ10pCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGZpbGVzLCBbJ2Zvby5jcHAnXSkKKworICAgICAgICAj
IFBhc3MgbXVsdGlwbGUgZmlsZXMuCisgICAgICAgIChmaWxlcywgb3B0aW9ucykgPSBwYXJzZShb
Jy0tb3V0cHV0PWVtYWNzJywgJ2Zvby5jcHAnLCAnYmFyLmNwcCddKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFscyhmaWxlcywgWydmb28uY3BwJywgJ2Jhci5jcHAnXSkKKworCitpZiBfX25hbWVf
XyA9PSAnX19tYWluX18nOgorICAgIGltcG9ydCBzeXMKKworICAgIHVuaXR0ZXN0Lm1haW4oKQo=
</data>
<flag name="commit-queue"
          id="27296"
          type_id="3"
          status="-"
          setter="cjerdonek"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45313</attachid>
            <date>2009-12-21 01:05:02 -0800</date>
            <delta_ts>2009-12-22 15:24:56 -0800</delta_ts>
            <desc>Proposed patch 3 (dividing earlier patch into two)</desc>
            <filename>patch-tools6-1.txt</filename>
            <type>text/plain</type>
            <size>36110</size>
            <attacher name="Chris Jerdonek">cjerdonek</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDUyNDM2
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzcgQEAKKzIwMDktMTIt
MjAgIENocmlzIEplcmRvbmVrICA8Y2hyaXMuamVyZG9uZWtAZ21haWwuY29tPgorCisgICAgICAg
IE1vdmVkIHNvbWUgc2VjdGlvbnMgb2YgY29kZSBpbiBwcmVwYXJhdGlvbiB0byByZWZhY3Rvcgor
ICAgICAgICBjaGVjay13ZWJraXQtc3R5bGUncyBhcmd1bWVudCBwYXJzZXIgdG8gYXZvaWQgc2V0
dGluZworICAgICAgICBnbG9iYWwgdmFyaWFibGVzLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjU5MgorCisgICAgICAgICogU2NyaXB0cy9jaGVj
ay13ZWJraXQtc3R5bGU6CisgICAgICAgICAgLSBNb3ZlZCBfVVNBR0Ugc3RyaW5nIHRvIHN0eWxl
LnB5LgorICAgICAgICAgIC0gQWRkcmVzc2VkIEZJWE1FIGJ5IGVsaW1pbmF0aW5nIGRlcGVuZGVu
Y2llcyBvbiBjcHBfc3R5bGUucHkuCisKKyAgICAgICAgKiBTY3JpcHRzL21vZHVsZXMvY3BwX3N0
eWxlLnB5OgorICAgICAgICAgIC0gTW92ZWQgZGVmYXVsdCBhcmd1bWVudHMgYW5kIHN0eWxlIGNh
dGVnb3JpZXMgdG8gc3R5bGUucHkuCisgICAgICAgICAgLSBNb3ZlZCBleGl0X3dpdGhfdXNhZ2Uo
KSwgZXhpdF93aXRoX2NhdGVnb3JpZXMoKSwgYW5kCisgICAgICAgICAgICBwYXJzZV9hcmd1bWVu
dHMoKSB0byBzdHlsZS5weS4KKyAgICAgICAgICAtIFJlbW92ZWQgcmVmZXJlbmNlcyBpbiBfQ3Bw
U3R5bGVTdGF0ZSB0byB0aGUgZ2xvYmFsCisgICAgICAgICAgICB2YXJpYWJsZXMgbm93IGluIHN0
eWxlLnB5LgorCisgICAgICAgICogU2NyaXB0cy9tb2R1bGVzL2NwcF9zdHlsZV91bml0dGVzdC5w
eToKKyAgICAgICAgICAtIE1vdmVkIHBhcnNlX2FyZ3VtZW50cygpIHVuaXQgdGVzdHMgdG8gc3R5
bGVfdW5pdHRlc3QucHkuCisKKyAgICAgICAgKiBTY3JpcHRzL21vZHVsZXMvc3R5bGUucHk6Cisg
ICAgICAgICAgLSBBZGRlZCBfVVNBR0Ugc3RyaW5nIGZyb20gY2hlY2std2Via2l0LXN0eWxlLgor
ICAgICAgICAgIC0gQWRkZWQgZGVmYXVsdCBhcmd1bWVudHMgYW5kIHN0eWxlIGNhdGVnb3JpZXMg
ZnJvbSBjcHBfc3R5bGUucHkuCisgICAgICAgICAgLSBBZGRlZCBleGl0X3dpdGhfdXNhZ2UoKSwg
ZXhpdF93aXRoX2NhdGVnb3JpZXMoKSwgYW5kCisgICAgICAgICAgICBwYXJzZV9hcmd1bWVudHMo
KSBmcm9tIGNwcF9zc3R5bGUucHkuCisKKyAgICAgICAgKiBTY3JpcHRzL21vZHVsZXMvc3R5bGVf
dW5pdHRlc3QucHk6IEFkZGVkLgorICAgICAgICAgIC0gQWRkZWQgcGFyc2VfYXJndW1lbnRzKCkg
dW5pdCB0ZXN0cyBmcm9tIGNwcF9zdHlsZV91bml0dGVzdC5weS4KKworICAgICAgICAqIFNjcmlw
dHMvcnVuLXdlYmtpdC11bml0dGVzdHM6CisgICAgICAgICAgLSBBZGRlZCB1bml0IHRlc3RzIGZy
b20gc3R5bGVfdW5pdHRlc3QucHkuCisKIDIwMDktMTItMjAgIENocmlzIEplcmRvbmVrICA8Y2hy
aXMuamVyZG9uZWtAZ21haWwuY29tPgogCkluZGV4OiBTY3JpcHRzL2NoZWNrLXdlYmtpdC1zdHls
ZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTY3JpcHRzL2NoZWNrLXdlYmtpdC1zdHlsZQkocmV2aXNpb24gNTI0
MzYpCisrKyBTY3JpcHRzL2NoZWNrLXdlYmtpdC1zdHlsZQkod29ya2luZyBjb3B5KQpAQCAtNDYs
NzYgKzQ2LDEwIEBAIGltcG9ydCBvcwogaW1wb3J0IG9zLnBhdGgKIGltcG9ydCBzeXMKIAotaW1w
b3J0IG1vZHVsZXMuY3BwX3N0eWxlIGFzIGNwcF9zdHlsZQogaW1wb3J0IG1vZHVsZXMuc3R5bGUg
YXMgc3R5bGUKIGZyb20gbW9kdWxlcy5zY20gaW1wb3J0IGRldGVjdF9zY21fc3lzdGVtCiAKIAot
IyBGSVhNRTogQXZvaWQgY3BwX3N0eWxlIGRlcGVuZGVuY3kuCi1jcHBfc3R5bGUuX1VTQUdFID0g
IiIiCi1TeW50YXg6ICUocHJvZ3JhbV9uYW1lKXMgWy0tdmVyYm9zZT0jXSBbLS1naXQtY29tbWl0
PTxTaW5nbGVDb21taXQ+XSBbLS1vdXRwdXQ9dnM3XQotICAgICAgICBbLS1maWx0ZXI9LXgsK3ks
Li4uXSBbZmlsZV0gLi4uCi0KLSAgVGhlIHN0eWxlIGd1aWRlbGluZXMgdGhpcyB0cmllcyB0byBm
b2xsb3cgYXJlIGhlcmU6Ci0gICAgaHR0cDovL3dlYmtpdC5vcmcvY29kaW5nL2NvZGluZy1zdHls
ZS5odG1sCi0KLSAgRXZlcnkgc3R5bGUgZXJyb3IgaXMgZ2l2ZW4gYSBjb25maWRlbmNlIHNjb3Jl
IGZyb20gMS01LCB3aXRoIDUgbWVhbmluZwotICB3ZSBhcmUgY2VydGFpbiBvZiB0aGUgcHJvYmxl
bSwgYW5kIDEgbWVhbmluZyBpdCBjb3VsZCBiZSBhIGxlZ2l0aW1hdGUKLSAgY29uc3RydWN0LiAg
VGhpcyBjYW4gbWlzcyBzb21lIGVycm9ycyBhbmQgZG9lcyBub3Qgc3Vic3RpdHV0ZSBmb3IKLSAg
Y29kZSByZXZpZXcuCi0KLSAgVG8gcHJldmVudCBzcGVjaWZpYyBsaW5lcyBmcm9tIGJlaW5nIGxp
bnRlZCwgYWRkIGEgJy8vIE5PTElOVCcgY29tbWVudCB0byB0aGUKLSAgZW5kIG9mIHRoZSBsaW5l
LgotCi0gIExpbnRlZCBleHRlbnNpb25zIGFyZSAuY3BwLCAuYyBhbmQgLmguICBPdGhlciBmaWxl
IHR5cGVzIGFyZSBpZ25vcmVkLgotCi0gIFRoZSBmaWxlIHBhcmFtZXRlciBpcyBvcHRpb25hbCBh
bmQgYWNjZXB0cyBtdWx0aXBsZSBmaWxlcy4gIExlYXZpbmcKLSAgb3V0IHRoZSBmaWxlIHBhcmFt
ZXRlciBhcHBsaWVzIHRoZSBjaGVjayB0byBhbGwgZmlsZXMgY29uc2lkZXJlZCBjaGFuZ2VkCi0g
IGJ5IHlvdXIgc291cmNlIGNvbnRyb2wgbWFuYWdlbWVudCBzeXN0ZW0uCi0KLSAgRmxhZ3M6Ci0K
LSAgICB2ZXJib3NlPSMKLSAgICAgIEEgbnVtYmVyIDAtNSB0byByZXN0cmljdCBlcnJvcnMgdG8g
Y2VydGFpbiB2ZXJib3NpdHkgbGV2ZWxzLgotICAgICAgRGVmYXVsdHMgdG8gJShkZWZhdWx0X3Zl
cmJvc2l0eSlzLgotCi0gICAgZ2l0LWNvbW1pdD08U2luZ2xlQ29tbWl0PgotICAgICAgQ2hlY2tz
IHRoZSBzdHlsZSBvZiBldmVyeXRoaW5nIGZyb20gdGhlIGdpdmVuIGNvbW1pdCB0byB0aGUgbG9j
YWwgdHJlZS4KLQotICAgIG91dHB1dD12czcKLSAgICAgIFRoZSBvdXRwdXQgZm9ybWF0LCB3aGlj
aCBtYXkgYmUgb25lIG9mCi0gICAgICAgIGVtYWNzIDogdG8gZWFzZSBlbWFjcyBwYXJzaW5nCi0g
ICAgICAgIHZzNyAgIDogY29tcGF0aWJsZSB3aXRoIFZpc3VhbCBTdHVkaW8KLSAgICAgIERlZmF1
bHRzIHRvICIlKGRlZmF1bHRfb3V0cHV0X2Zvcm1hdClzIi4gT3RoZXIgZm9ybWF0cyBhcmUgdW5z
dXBwb3J0ZWQuCi0KLSAgICBmaWx0ZXI9LXgsK3ksLi4uCi0gICAgICBBIGNvbW1hLXNlcGFyYXRl
ZCBsaXN0IG9mIGJvb2xlYW4gZmlsdGVyIHJ1bGVzIHVzZWQgdG8gZmlsdGVyCi0gICAgICB3aGlj
aCBjYXRlZ29yaWVzIG9mIHN0eWxlIGd1aWRlbGluZXMgdG8gY2hlY2suICBUaGUgc2NyaXB0IGNo
ZWNrcwotICAgICAgYSBjYXRlZ29yeSBpZiB0aGUgY2F0ZWdvcnkgcGFzc2VzIHRoZSBmaWx0ZXIg
cnVsZXMsIGFzIGZvbGxvd3MuCi0KLSAgICAgIEFueSB3ZWJraXQgY2F0ZWdvcnkgc3RhcnRzIG91
dCBwYXNzaW5nLiAgQWxsIGZpbHRlciBydWxlcyBhcmUgdGhlbgotICAgICAgZXZhbHVhdGVkIGxl
ZnQgdG8gcmlnaHQsIHdpdGggbGF0ZXIgcnVsZXMgdGFraW5nIHByZWNlZGVuY2UuICBGb3IKLSAg
ICAgIGV4YW1wbGUsIHRoZSBydWxlICIrZm9vIiBwYXNzZXMgYW55IGNhdGVnb3J5IHRoYXQgc3Rh
cnRzIHdpdGggImZvbyIsCi0gICAgICBhbmQgIi1mb28iIGZhaWxzIGFueSBzdWNoIGNhdGVnb3J5
LiAgVGhlIGZpbHRlciBpbnB1dCAiLXdoaXRlc3BhY2UsCi0gICAgICArd2hpdGVzcGFjZS9icmFj
ZXMiIGZhaWxzIHRoZSBjYXRlZ29yeSAid2hpdGVzcGFjZS90YWIiIGFuZCBwYXNzZXMKLSAgICAg
ICJ3aGl0ZXNwYWNlL2JyYWNlcyIuCi0KLSAgICAgIEV4YW1wbGVzOiAtLWZpbHRlcj0td2hpdGVz
cGFjZSwrd2hpdGVzcGFjZS9icmFjZXMKLSAgICAgICAgICAgICAgICAtLWZpbHRlcj0td2hpdGVz
cGFjZSwtcnVudGltZS9wcmludGYsK3J1bnRpbWUvcHJpbnRmX2Zvcm1hdAotICAgICAgICAgICAg
ICAgIC0tZmlsdGVyPS0sK2J1aWxkL2luY2x1ZGVfd2hhdF95b3VfdXNlCi0KLSAgICAgIENhdGVn
b3J5IG5hbWVzIGFwcGVhciBpbiBlcnJvciBtZXNzYWdlcyBpbiBicmFja2V0cywgZm9yIGV4YW1w
bGUKLSAgICAgIFt3aGl0ZXNwYWNlL2luZGVudF0uICBUbyBzZWUgYSBsaXN0IG9mIGFsbCBjYXRl
Z29yaWVzIGF2YWlsYWJsZSB0bwotICAgICAgJShwcm9ncmFtX25hbWUpcywgYWxvbmcgd2l0aCB3
aGljaCBhcmUgZW5hYmxlZCBieSBkZWZhdWx0LCBwYXNzCi0gICAgICB0aGUgZW1wdHkgZmlsdGVy
IGFzIGZvbGxvd3M6Ci0gICAgICAgICAtLWZpbHRlcj0KLSIiIiAlIHsKLSAgICAncHJvZ3JhbV9u
YW1lJzogb3MucGF0aC5iYXNlbmFtZShzeXMuYXJndlswXSksCi0gICAgJ2RlZmF1bHRfdmVyYm9z
aXR5JzogY3BwX3N0eWxlLl9ERUZBVUxUX1ZFUkJPU0lUWSwKLSAgICAnZGVmYXVsdF9vdXRwdXRf
Zm9ybWF0JzogY3BwX3N0eWxlLl9ERUZBVUxUX09VVFBVVF9GT1JNQVQKLSAgICB9Ci0KLQogZGVm
IG1haW4oKToKICAgICBzdHlsZS51c2Vfd2Via2l0X3N0eWxlcygpCiAKQEAgLTEzMCw5ICs2NCw5
IEBAIGRlZiBtYWluKCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ3JlcGxhY2UnKQogCiAgICAgaWYgZmlsZXMgYW5kICItLWdpdC1jb21taXQiIGluIGZsYWdz
OgotICAgICAgICBjcHBfc3R5bGUuZXhpdF93aXRoX3VzYWdlKCdJdCBpcyBub3QgcG9zc2libGUg
dG8gY2hlY2sgZmlsZXMgYW5kIGEgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICdzcGVjaWZpYyBjb21taXQgYXQgdGhlIHNhbWUgdGltZS4nLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRpc3BsYXlfaGVscD1UcnVlKQorICAgICAgICBzdHlsZS5leGl0X3dp
dGhfdXNhZ2UoJ0l0IGlzIG5vdCBwb3NzaWJsZSB0byBjaGVjayBmaWxlcyBhbmQgYSAnCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnc3BlY2lmaWMgY29tbWl0IGF0IHRoZSBzYW1lIHRp
bWUuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlfaGVscD1UcnVlKQog
CiAgICAgaWYgZmlsZXM6CiAgICAgICAgIGZvciBmaWxlbmFtZSBpbiBmaWxlczoKSW5kZXg6IFNj
cmlwdHMvcnVuLXdlYmtpdC11bml0dGVzdHMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU2NyaXB0cy9ydW4td2Vi
a2l0LXVuaXR0ZXN0cwkocmV2aXNpb24gNTI0MzYpCisrKyBTY3JpcHRzL3J1bi13ZWJraXQtdW5p
dHRlc3RzCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw3IEBAIGZyb20gbW9kdWxlcy5kaWZm
X3BhcnNlcl91bml0dGVzdCBpbXBvcnQKIGZyb20gbW9kdWxlcy5sb2dnaW5nX3VuaXR0ZXN0IGlt
cG9ydCAqCiBmcm9tIG1vZHVsZXMubXVsdGljb21tYW5kdG9vbF91bml0dGVzdCBpbXBvcnQgKgog
ZnJvbSBtb2R1bGVzLnF1ZXVlZW5naW5lX3VuaXR0ZXN0IGltcG9ydCAqCitmcm9tIG1vZHVsZXMu
c3R5bGVfdW5pdHRlc3QgaW1wb3J0ICoKIGZyb20gbW9kdWxlcy50ZXh0X3N0eWxlX3VuaXR0ZXN0
IGltcG9ydCAqCiBmcm9tIG1vZHVsZXMud2Via2l0cG9ydF91bml0dGVzdCBpbXBvcnQgKgogCklu
ZGV4OiBTY3JpcHRzL21vZHVsZXMvY3BwX3N0eWxlLnB5Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNjcmlwdHMv
bW9kdWxlcy9jcHBfc3R5bGUucHkJKHJldmlzaW9uIDUyNDM2KQorKysgU2NyaXB0cy9tb2R1bGVz
L2NwcF9zdHlsZS5weQkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNiBAQAogIiIiU3VwcG9y
dCBmb3IgY2hlY2std2Via2l0LXN0eWxlLiIiIgogCiBpbXBvcnQgY29kZWNzCi1pbXBvcnQgZ2V0
b3B0CiBpbXBvcnQgbWF0aCAgIyBmb3IgbG9nCiBpbXBvcnQgb3MKIGltcG9ydCBvcy5wYXRoCkBA
IC00OCwxMTcgKzQ3LDkgQEAgaW1wb3J0IHN5cwogaW1wb3J0IHVuaWNvZGVkYXRhCiAKIAotIyBU
aGlzIGlzIHNldCBieSBjaGVjay13ZWJraXQtc3R5bGUuCiBfVVNBR0UgPSAnJwogCiAKLSMgRGVm
YXVsdCBvcHRpb25zCi1fREVGQVVMVF9WRVJCT1NJVFkgPSAxCi1fREVGQVVMVF9PVVRQVVRfRk9S
TUFUID0gJ2VtYWNzJwotCi0KLSMgRklYTUU6IEZvciBzdHlsZSBjYXRlZ29yaWVzIHdlIHdpbGwg
bmV2ZXIgd2FudCB0byBoYXZlLCByZW1vdmUgdGhlbS4KLSMgICAgICAgIEZvciBjYXRlZ29yaWVz
IGZvciB3aGljaCB3ZSB3YW50IHRvIGhhdmUgc2ltaWxhciBmdW5jdGlvbmFsaXR5LAotIyAgICAg
ICAgbW9kaWZ5IHRoZSBpbXBsZW1lbnRhdGlvbiBhbmQgZW5hYmxlIHRoZW0uCi0jIEZJWE1FOiBB
ZGQgYSB1bml0IHRlc3QgdG8gZW5zdXJlIHRoZSBjb3JyZXNwb25kaW5nIGNhdGVnb3JpZXMKLSMg
ICAgICAgIGFyZSBlbGVtZW50cyBvZiBfU1RZTEVfQ0FURUdPUklFUy4KLSMKLSMgRm9yIHVuYW1i
aWd1b3VzIHRlcm1pbm9sb2d5LCB3ZSB1c2UgImZpbHRlciBydWxlIiByYXRoZXIgdGhhbiAiZmls
dGVyIgotIyBmb3IgYW4gaW5kaXZpZHVhbCBib29sZWFuIGZpbHRlciBmbGFnIGxpa2UgIitmb28i
LiBUaGlzIGFsbG93cyB1cyB0byAKLSMgcmVzZXJ2ZSAiZmlsdGVyIiBmb3Igd2hhdCBvbmUgZ2V0
cyBieSBjb2xsZWN0aXZlbHkgYXBwbHlpbmcgYWxsIG9mIAotIyB0aGUgZmlsdGVyIHJ1bGVzIGFz
IHNwZWNpZmllZCBieSBhIC0tZmlsdGVyIGZsYWcuCi1fV0VCS0lUX0ZJTFRFUl9SVUxFUyA9IFsK
LSAgICAnLWJ1aWxkL2VuZGlmX2NvbW1lbnQnLAotICAgICctYnVpbGQvaW5jbHVkZV93aGF0X3lv
dV91c2UnLCAgIyA8c3RyaW5nPiBmb3Igc3RkOjpzdHJpbmcKLSAgICAnLWJ1aWxkL3N0b3JhZ2Vf
Y2xhc3MnLCAgIyBjb25zdCBzdGF0aWMKLSAgICAnLWxlZ2FsL2NvcHlyaWdodCcsCi0gICAgJy1y
ZWFkYWJpbGl0eS9tdWx0aWxpbmVfY29tbWVudCcsCi0gICAgJy1yZWFkYWJpbGl0eS9icmFjZXMn
LCAgIyBpbnQgZm9vKCkge307Ci0gICAgJy1yZWFkYWJpbGl0eS9mbl9zaXplJywKLSAgICAnLXJl
YWRhYmlsaXR5L2Nhc3RpbmcnLAotICAgICctcmVhZGFiaWxpdHkvZnVuY3Rpb24nLAotICAgICct
cnVudGltZS9hcnJheXMnLCAgIyB2YXJpYWJsZSBsZW5ndGggYXJyYXkKLSAgICAnLXJ1bnRpbWUv
Y2FzdGluZycsCi0gICAgJy1ydW50aW1lL3NpemVvZicsCi0gICAgJy1ydW50aW1lL2V4cGxpY2l0
JywgICMgZXhwbGljaXQKLSAgICAnLXJ1bnRpbWUvdmlydHVhbCcsICAjIHZpcnR1YWwgZHRvcgot
ICAgICctcnVudGltZS9wcmludGYnLAotICAgICctcnVudGltZS90aHJlYWRzYWZlX2ZuJywKLSAg
ICAnLXJ1bnRpbWUvcnR0aScsCi0gICAgJy13aGl0ZXNwYWNlL2JsYW5rX2xpbmUnLAotICAgICct
d2hpdGVzcGFjZS9lbmRfb2ZfbGluZScsCi0gICAgJy13aGl0ZXNwYWNlL2xhYmVscycsCi0gICAg
XQotCi0KLSMgV2UgY2F0ZWdvcml6ZSBlYWNoIHN0eWxlIHJ1bGUgd2UgcHJpbnQuICBIZXJlIGFy
ZSB0aGUgY2F0ZWdvcmllcy4KLSMgV2Ugd2FudCBhbiBleHBsaWNpdCBsaXN0IHNvIHdlIGNhbiBs
aXN0IHRoZW0gYWxsIGluIGNwcF9zdHlsZSAtLWZpbHRlcj0uCi0jIElmIHlvdSBhZGQgYSBuZXcg
ZXJyb3IgbWVzc2FnZSB3aXRoIGEgbmV3IGNhdGVnb3J5LCBhZGQgaXQgdG8gdGhlIGxpc3QKLSMg
aGVyZSEgIGNwcF9zdHlsZV91bml0dGVzdC5weSBzaG91bGQgdGVsbCB5b3UgaWYgeW91IGZvcmdl
dCB0byBkbyB0aGlzLgotX1NUWUxFX0NBVEVHT1JJRVMgPSBbCi0gICAgJ2J1aWxkL2NsYXNzJywK
LSAgICAnYnVpbGQvZGVwcmVjYXRlZCcsCi0gICAgJ2J1aWxkL2VuZGlmX2NvbW1lbnQnLAotICAg
ICdidWlsZC9mb3J3YXJkX2RlY2wnLAotICAgICdidWlsZC9oZWFkZXJfZ3VhcmQnLAotICAgICdi
dWlsZC9pbmNsdWRlJywKLSAgICAnYnVpbGQvaW5jbHVkZV9vcmRlcicsCi0gICAgJ2J1aWxkL2lu
Y2x1ZGVfd2hhdF95b3VfdXNlJywKLSAgICAnYnVpbGQvbmFtZXNwYWNlcycsCi0gICAgJ2J1aWxk
L3ByaW50Zl9mb3JtYXQnLAotICAgICdidWlsZC9zdG9yYWdlX2NsYXNzJywKLSAgICAnYnVpbGQv
dXNpbmdfc3RkJywKLSAgICAnbGVnYWwvY29weXJpZ2h0JywKLSAgICAncmVhZGFiaWxpdHkvYnJh
Y2VzJywKLSAgICAncmVhZGFiaWxpdHkvY2FzdGluZycsCi0gICAgJ3JlYWRhYmlsaXR5L2NoZWNr
JywKLSAgICAncmVhZGFiaWxpdHkvY29tcGFyaXNvbl90b196ZXJvJywKLSAgICAncmVhZGFiaWxp
dHkvY29uc3RydWN0b3JzJywKLSAgICAncmVhZGFiaWxpdHkvY29udHJvbF9mbG93JywKLSAgICAn
cmVhZGFiaWxpdHkvZm5fc2l6ZScsCi0gICAgJ3JlYWRhYmlsaXR5L2Z1bmN0aW9uJywKLSAgICAn
cmVhZGFiaWxpdHkvbXVsdGlsaW5lX2NvbW1lbnQnLAotICAgICdyZWFkYWJpbGl0eS9tdWx0aWxp
bmVfc3RyaW5nJywKLSAgICAncmVhZGFiaWxpdHkvbmFtaW5nJywKLSAgICAncmVhZGFiaWxpdHkv
bnVsbCcsCi0gICAgJ3JlYWRhYmlsaXR5L3N0cmVhbXMnLAotICAgICdyZWFkYWJpbGl0eS90b2Rv
JywKLSAgICAncmVhZGFiaWxpdHkvdXRmOCcsCi0gICAgJ3J1bnRpbWUvYXJyYXlzJywKLSAgICAn
cnVudGltZS9jYXN0aW5nJywKLSAgICAncnVudGltZS9leHBsaWNpdCcsCi0gICAgJ3J1bnRpbWUv
aW5pdCcsCi0gICAgJ3J1bnRpbWUvaW50JywKLSAgICAncnVudGltZS9pbnZhbGlkX2luY3JlbWVu
dCcsCi0gICAgJ3J1bnRpbWUvbWF4X21pbl9tYWNyb3MnLAotICAgICdydW50aW1lL21lbXNldCcs
Ci0gICAgJ3J1bnRpbWUvcHJpbnRmJywKLSAgICAncnVudGltZS9wcmludGZfZm9ybWF0JywKLSAg
ICAncnVudGltZS9yZWZlcmVuY2VzJywKLSAgICAncnVudGltZS9ydHRpJywKLSAgICAncnVudGlt
ZS9zaXplb2YnLAotICAgICdydW50aW1lL3N0cmluZycsCi0gICAgJ3J1bnRpbWUvdGhyZWFkc2Fm
ZV9mbicsCi0gICAgJ3J1bnRpbWUvdmlydHVhbCcsCi0gICAgJ3doaXRlc3BhY2UvYmxhbmtfbGlu
ZScsCi0gICAgJ3doaXRlc3BhY2UvYnJhY2VzJywKLSAgICAnd2hpdGVzcGFjZS9jb21tYScsCi0g
ICAgJ3doaXRlc3BhY2UvY29tbWVudHMnLAotICAgICd3aGl0ZXNwYWNlL2RlY2xhcmF0aW9uJywK
LSAgICAnd2hpdGVzcGFjZS9lbmRfb2ZfbGluZScsCi0gICAgJ3doaXRlc3BhY2UvZW5kaW5nX25l
d2xpbmUnLAotICAgICd3aGl0ZXNwYWNlL2luZGVudCcsCi0gICAgJ3doaXRlc3BhY2UvbGFiZWxz
JywKLSAgICAnd2hpdGVzcGFjZS9saW5lX2xlbmd0aCcsCi0gICAgJ3doaXRlc3BhY2UvbmV3bGlu
ZScsCi0gICAgJ3doaXRlc3BhY2Uvb3BlcmF0b3JzJywKLSAgICAnd2hpdGVzcGFjZS9wYXJlbnMn
LAotICAgICd3aGl0ZXNwYWNlL3NlbWljb2xvbicsCi0gICAgJ3doaXRlc3BhY2UvdGFiJywKLSAg
ICAnd2hpdGVzcGFjZS90b2RvJywKLSAgICBdCi0KLQogIyBUaGUgZGVmYXVsdCBzdGF0ZSBvZiB0
aGUgY2F0ZWdvcnkgZmlsdGVyLiBUaGlzIGlzIG92ZXJyaWRlZCBieSB0aGUgLS1maWx0ZXI9CiAj
IGZsYWcuIEJ5IGRlZmF1bHQgYWxsIGVycm9ycyBhcmUgb24sIHNvIG9ubHkgYWRkIGhlcmUgY2F0
ZWdvcmllcyB0aGF0IHNob3VsZCBiZQogIyBvZmYgYnkgZGVmYXVsdCAoaS5lLiwgY2F0ZWdvcmll
cyB0aGF0IG11c3QgYmUgZW5hYmxlZCBieSB0aGUgLS1maWx0ZXI9IGZsYWdzKS4KQEAgLTM2MCw3
ICsyNTEsNyBAQCBjbGFzcyBfQ3BwU3R5bGVTdGF0ZShvYmplY3QpOgogICAgICIiIk1haW50YWlu
cyBtb2R1bGUtd2lkZSBzdGF0ZS4uIiIiCiAKICAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAg
ICAgIHNlbGYudmVyYm9zZV9sZXZlbCA9IF9ERUZBVUxUX1ZFUkJPU0lUWSAgIyBnbG9iYWwgc2V0
dGluZy4KKyAgICAgICAgc2VsZi52ZXJib3NlX2xldmVsID0gMSAgIyBnbG9iYWwgc2V0dGluZy4K
ICAgICAgICAgc2VsZi5lcnJvcl9jb3VudCA9IDAgICAgIyBnbG9iYWwgY291bnQgb2YgcmVwb3J0
ZWQgZXJyb3JzCiAgICAgICAgICMgZmlsdGVycyB0byBhcHBseSB3aGVuIGVtaXR0aW5nIGVycm9y
IG1lc3NhZ2VzCiAgICAgICAgIHNlbGYuZmlsdGVycyA9IF9ERUZBVUxUX0ZJTFRFUl9SVUxFU1s6
XQpAQCAtMzY4LDcgKzI1OSw3IEBAIGNsYXNzIF9DcHBTdHlsZVN0YXRlKG9iamVjdCk6CiAgICAg
ICAgICMgb3V0cHV0IGZvcm1hdDoKICAgICAgICAgIyAiZW1hY3MiIC0gZm9ybWF0IHRoYXQgZW1h
Y3MgY2FuIHBhcnNlIChkZWZhdWx0KQogICAgICAgICAjICJ2czciIC0gZm9ybWF0IHRoYXQgTWlj
cm9zb2Z0IFZpc3VhbCBTdHVkaW8gNyBjYW4gcGFyc2UKLSAgICAgICAgc2VsZi5vdXRwdXRfZm9y
bWF0ID0gX0RFRkFVTFRfT1VUUFVUX0ZPUk1BVAorICAgICAgICBzZWxmLm91dHB1dF9mb3JtYXQg
PSAnZW1hY3MnCiAKICAgICBkZWYgc2V0X291dHB1dF9mb3JtYXQoc2VsZiwgb3V0cHV0X2Zvcm1h
dCk6CiAgICAgICAgICIiIlNldHMgdGhlIG91dHB1dCBmb3JtYXQgZm9yIGVycm9ycy4iIiIKQEAg
LTMxNTgsOTggKzMwNDksNiBAQCBkZWYgcHJvY2Vzc19maWxlKGZpbGVuYW1lLCBlcnJvcj1lcnJv
cik6CiAgICAgICAgICAgICAgICAgICAnYmV0dGVyIHRvIHVzZSBvbmx5IGEgXFxuJykKIAogCi1k
ZWYgZXhpdF93aXRoX3VzYWdlKGVycm9yX21lc3NhZ2UsIGRpc3BsYXlfaGVscD1GYWxzZSk6Ci0g
ICAgIiIiRXhpdCBhbmQgcHJpbnQgYSB1c2FnZSBzdHJpbmcgd2l0aCBhbiBvcHRpb25hbCBlcnJv
ciBtZXNzYWdlLgotCi0gICAgQXJnczoKLSAgICAgIGVycm9yX21lc3NhZ2U6IFRoZSBvcHRpb25h
bCBlcnJvciBtZXNzYWdlLgotICAgICAgZGlzcGxheV9oZWxwOiBXaGV0aGVyIHRvIGRpc3BsYXkg
aGVscCBvdXRwdXQuIFN1cHByZXNzaW5nIGhlbHAKLSAgICAgICAgICAgICAgICAgICAgb3V0cHV0
IGlzIHVzZWZ1bCBmb3IgdW5pdCB0ZXN0cy4KLSAgICAiIiIKLSAgICBpZiBkaXNwbGF5X2hlbHA6
Ci0gICAgICAgIHN5cy5zdGRlcnIud3JpdGUoX1VTQUdFKQotICAgIGlmIGVycm9yX21lc3NhZ2U6
Ci0gICAgICAgIHN5cy5leGl0KCdcbkZBVEFMIEVSUk9SOiAnICsgZXJyb3JfbWVzc2FnZSkKLSAg
ICBlbHNlOgotICAgICAgICBzeXMuZXhpdCgxKQotCi0KLWRlZiBleGl0X3dpdGhfY2F0ZWdvcmll
cyhkaXNwbGF5X2hlbHA9RmFsc2UpOgotICAgICIiIkV4aXQgYW5kIHByaW50IGFsbCBzdHlsZSBj
YXRlZ29yaWVzLCBhbG9uZyB3aXRoIHRoZSBkZWZhdWx0IGZpbHRlci4KLQotICAgIFRoZXNlIGNh
dGVnb3J5IG5hbWVzIGFwcGVhciBpbiBlcnJvciBtZXNzYWdlcy4gIFRoZXkgY2FuIGJlIGZpbHRl
cmVkCi0gICAgdXNpbmcgdGhlIC0tZmlsdGVyIGZsYWcuCi0KLSAgICBBcmdzOgotICAgICAgZGlz
cGxheV9oZWxwOiBXaGV0aGVyIHRvIGRpc3BsYXkgaGVscCBvdXRwdXQuIFN1cHByZXNzaW5nIGhl
bHAKLSAgICAgICAgICAgICAgICAgICAgb3V0cHV0IGlzIHVzZWZ1bCBmb3IgdW5pdCB0ZXN0cy4K
LSAgICAiIiIKLSAgICBpZiBkaXNwbGF5X2hlbHA6Ci0gICAgICAgIHN5cy5zdGRlcnIud3JpdGUo
J1xuQWxsIGNhdGVnb3JpZXM6XG4nKQotICAgICAgICBmb3IgY2F0ZWdvcnkgaW4gc29ydGVkKF9T
VFlMRV9DQVRFR09SSUVTKToKLSAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJyAgICAnICsg
Y2F0ZWdvcnkgKyAnXG4nKQotCi0gICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJ1xuRGVmYXVsdCBm
aWx0ZXIgcnVsZXMqKjpcbicpCi0gICAgICAgIGZvciBmaWx0ZXJfcnVsZSBpbiBzb3J0ZWQoX1dF
QktJVF9GSUxURVJfUlVMRVMpOgotICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgnICAgICcg
KyBmaWx0ZXJfcnVsZSArICdcbicpCi0gICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJ1xuKipUaGUg
Y29tbWFuZCBhbHdheXMgZXZhbHVhdGVzIHRoZSBhYm92ZSAnCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgJ3J1bGVzLCBhbmQgYmVmb3JlIGFueSAtLWZpbHRlciBmbGFnLlxuXG4nKQotCi0gICAg
c3lzLmV4aXQoMCkKLQotCi1kZWYgcGFyc2VfYXJndW1lbnRzKGFyZ3MsIGFkZGl0aW9uYWxfZmxh
Z3M9W10sIGRpc3BsYXlfaGVscD1GYWxzZSk6Ci0gICAgIiIiUGFyc2VzIHRoZSBjb21tYW5kIGxp
bmUgYXJndW1lbnRzLgotCi0gICAgVGhpcyBtYXkgc2V0IHRoZSBvdXRwdXQgZm9ybWF0IGFuZCB2
ZXJib3NpdHkgbGV2ZWwgYXMgc2lkZS1lZmZlY3RzLgotCi0gICAgQXJnczoKLSAgICAgIGFyZ3M6
IFRoZSBjb21tYW5kIGxpbmUgYXJndW1lbnRzOgotICAgICAgYWRkaXRpb25hbF9mbGFnczogQSBs
aXN0IG9mIHN0cmluZ3Mgd2hpY2ggc3BlY2lmaWVzIGZsYWdzIHdlIGFsbG93LgotICAgICAgZGlz
cGxheV9oZWxwOiBXaGV0aGVyIHRvIGRpc3BsYXkgaGVscCBvdXRwdXQuIFN1cHByZXNzaW5nIGhl
bHAKLSAgICAgICAgICAgICAgICAgICAgb3V0cHV0IGlzIHVzZWZ1bCBmb3IgdW5pdCB0ZXN0cy4K
LQotICAgIFJldHVybnM6Ci0gICAgICBBIHR1cGxlIG9mIChmaWxlbmFtZXMsIGZsYWdzKQotCi0g
ICAgICBmaWxlbmFtZXM6IFRoZSBsaXN0IG9mIGZpbGVuYW1lcyB0byBsaW50LgotICAgICAgZmxh
Z3M6IFRoZSBkaWN0IG9mIHRoZSBmbGFnIG5hbWVzIGFuZCB0aGUgZmxhZyB2YWx1ZXMuCi0gICAg
IiIiCi0gICAgZmxhZ3MgPSBbJ2hlbHAnLCAnb3V0cHV0PScsICd2ZXJib3NlPScsICdmaWx0ZXI9
J10gKyBhZGRpdGlvbmFsX2ZsYWdzCi0gICAgYWRkaXRpb25hbF9mbGFnX3ZhbHVlcyA9IHt9Ci0g
ICAgdHJ5OgotICAgICAgICAob3B0cywgZmlsZW5hbWVzKSA9IGdldG9wdC5nZXRvcHQoYXJncywg
JycsIGZsYWdzKQotICAgIGV4Y2VwdCBnZXRvcHQuR2V0b3B0RXJyb3I6Ci0gICAgICAgIGV4aXRf
d2l0aF91c2FnZSgnSW52YWxpZCBhcmd1bWVudHMuJywgZGlzcGxheV9oZWxwKQotCi0gICAgdmVy
Ym9zaXR5ID0gX3ZlcmJvc2VfbGV2ZWwoKQotICAgIG91dHB1dF9mb3JtYXQgPSBfb3V0cHV0X2Zv
cm1hdCgpCi0gICAgZmlsdGVycyA9ICcnCi0KLSAgICBmb3IgKG9wdCwgdmFsKSBpbiBvcHRzOgot
ICAgICAgICBpZiBvcHQgPT0gJy0taGVscCc6Ci0gICAgICAgICAgICBleGl0X3dpdGhfdXNhZ2Uo
Tm9uZSwgZGlzcGxheV9oZWxwKQotICAgICAgICBlbGlmIG9wdCA9PSAnLS1vdXRwdXQnOgotICAg
ICAgICAgICAgaWYgbm90IHZhbCBpbiAoJ2VtYWNzJywgJ3ZzNycpOgotICAgICAgICAgICAgICAg
IGV4aXRfd2l0aF91c2FnZSgnVGhlIG9ubHkgYWxsb3dlZCBvdXRwdXQgZm9ybWF0cyBhcmUgZW1h
Y3MgYW5kIHZzNy4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5X2hl
bHApCi0gICAgICAgICAgICBvdXRwdXRfZm9ybWF0ID0gdmFsCi0gICAgICAgIGVsaWYgb3B0ID09
ICctLXZlcmJvc2UnOgotICAgICAgICAgICAgdmVyYm9zaXR5ID0gaW50KHZhbCkKLSAgICAgICAg
ZWxpZiBvcHQgPT0gJy0tZmlsdGVyJzoKLSAgICAgICAgICAgIGZpbHRlcnMgPSB2YWwKLSAgICAg
ICAgICAgIGlmIG5vdCBmaWx0ZXJzOgotICAgICAgICAgICAgICAgIGV4aXRfd2l0aF9jYXRlZ29y
aWVzKGRpc3BsYXlfaGVscCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGFkZGl0aW9uYWxf
ZmxhZ192YWx1ZXNbb3B0XSA9IHZhbAotCi0gICAgX3NldF9vdXRwdXRfZm9ybWF0KG91dHB1dF9m
b3JtYXQpCi0gICAgX3NldF92ZXJib3NlX2xldmVsKHZlcmJvc2l0eSkKLSAgICBfc2V0X2ZpbHRl
cnMoZmlsdGVycykKLQotICAgIHJldHVybiAoZmlsZW5hbWVzLCBhZGRpdGlvbmFsX2ZsYWdfdmFs
dWVzKQotCi0KIGRlZiBjYW5faGFuZGxlKGZpbGVuYW1lKToKICAgICAiIiJDaGVja3MgaWYgdGhp
cyBtb2R1bGUgc3VwcG9ydHMgZm9yIHRoZSBzcGVjaWZpZWQgZmlsZSB0eXBlLgogCkluZGV4OiBT
Y3JpcHRzL21vZHVsZXMvY3BwX3N0eWxlX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNjcmlw
dHMvbW9kdWxlcy9jcHBfc3R5bGVfdW5pdHRlc3QucHkJKHJldmlzaW9uIDUyNDM2KQorKysgU2Ny
aXB0cy9tb2R1bGVzL2NwcF9zdHlsZV91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtNDEs
MTMgKzQxLDE0IEBAIGltcG9ydCByYW5kb20KIGltcG9ydCByZQogaW1wb3J0IHVuaXR0ZXN0CiBp
bXBvcnQgY3BwX3N0eWxlCi0KKyMgRklYTUU6IFJlbW92ZSB0aGUgbmVlZCB0byBpbXBvcnQgc29t
ZXRoaW5nIGZyb20gc3R5bGUuCitmcm9tIHN0eWxlIGltcG9ydCBfU1RZTEVfQ0FURUdPUklFUwog
CiAjIFRoaXMgY2xhc3Mgd29ya3MgYXMgYW4gZXJyb3IgY29sbGVjdG9yIGFuZCByZXBsYWNlcyBj
cHBfc3R5bGUuRXJyb3IKICMgZnVuY3Rpb24gZm9yIHRoZSB1bml0IHRlc3RzLiAgV2UgYWxzbyB2
ZXJpZnkgZWFjaCBjYXRlZ29yeSB3ZSBzZWUKICMgaXMgaW4gY3BwX3N0eWxlLl9TVFlMRV9DQVRF
R09SSUVTLCB0byBoZWxwIGtlZXAgdGhhdCBsaXN0IHVwIHRvIGRhdGUuCiBjbGFzcyBFcnJvckNv
bGxlY3RvcjoKLSAgICBfYWxsX3N0eWxlX2NhdGVnb3JpZXMgPSBjcHBfc3R5bGUuX1NUWUxFX0NB
VEVHT1JJRVMKKyAgICBfYWxsX3N0eWxlX2NhdGVnb3JpZXMgPSBfU1RZTEVfQ0FURUdPUklFUwog
ICAgICMgVGhpcyBhIGxpc3QgaW5jbHVkaW5nIGFsbCBjYXRlZ29yaWVzIHNlZW4gaW4gYW55IHVu
aXQgdGVzdC4KICAgICBfc2Vlbl9zdHlsZV9jYXRlZ29yaWVzID0ge30KIApAQCAtMTU2Nyw4MSAr
MTU2OCw2IEBAIGNsYXNzIENwcFN0eWxlVGVzdChDcHBTdHlsZVRlc3RCYXNlKToKICAgICAgICAg
c2VsZi5hc3NlcnRfbGludCgnaW50IGEgPSA1O1x0Ly8gc2V0IGEgdG8gNScsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ1RhYiBmb3VuZDsgYmV0dGVyIHRvIHVzZSBzcGFjZXMgIFt3aGl0ZXNw
YWNlL3RhYl0gWzFdJykKIAotICAgIGRlZiB0ZXN0X3BhcnNlX2FyZ3VtZW50cyhzZWxmKToKLSAg
ICAgICAgb2xkX3VzYWdlID0gY3BwX3N0eWxlLl9VU0FHRQotICAgICAgICBvbGRfc3R5bGVfY2F0
ZWdvcmllcyA9IGNwcF9zdHlsZS5fU1RZTEVfQ0FURUdPUklFUwotICAgICAgICBvbGRfd2Via2l0
X2ZpbHRlcl9ydWxlcyA9IGNwcF9zdHlsZS5fV0VCS0lUX0ZJTFRFUl9SVUxFUwotICAgICAgICBv
bGRfb3V0cHV0X2Zvcm1hdCA9IGNwcF9zdHlsZS5fY3BwX3N0eWxlX3N0YXRlLm91dHB1dF9mb3Jt
YXQKLSAgICAgICAgb2xkX3ZlcmJvc2VfbGV2ZWwgPSBjcHBfc3R5bGUuX2NwcF9zdHlsZV9zdGF0
ZS52ZXJib3NlX2xldmVsCi0gICAgICAgIG9sZF9maWx0ZXJzID0gY3BwX3N0eWxlLl9jcHBfc3R5
bGVfc3RhdGUuZmlsdGVycwotICAgICAgICB0cnk6Ci0gICAgICAgICAgICAjIERvbid0IHByaW50
IHVzYWdlIGR1cmluZyB0aGUgdGVzdHMsIG9yIGZpbHRlciBjYXRlZ29yaWVzCi0gICAgICAgICAg
ICBjcHBfc3R5bGUuX1VTQUdFID0gJycKLSAgICAgICAgICAgIGNwcF9zdHlsZS5fU1RZTEVfQ0FU
RUdPUklFUyA9IFtdCi0gICAgICAgICAgICBjcHBfc3R5bGUuX1dFQktJVF9GSUxURVJfUlVMRVMg
PSBbXQotCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeXN0ZW1FeGl0LCBjcHBfc3R5
bGUucGFyc2VfYXJndW1lbnRzLCBbJy0tYmFkb3B0J10pCi0gICAgICAgICAgICBzZWxmLmFzc2Vy
dFJhaXNlcyhTeXN0ZW1FeGl0LCBjcHBfc3R5bGUucGFyc2VfYXJndW1lbnRzLCBbJy0taGVscCdd
KQotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3lzdGVtRXhpdCwgY3BwX3N0eWxlLnBh
cnNlX2FyZ3VtZW50cywgWyctLWZpbHRlcj0nXSkKLSAgICAgICAgICAgICMgVGhpcyBpcyBpbGxl
Z2FsIGJlY2F1c2UgYWxsIGZpbHRlcnMgbXVzdCBzdGFydCB3aXRoICsgb3IgLQotICAgICAgICAg
ICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY3BwX3N0eWxlLnBhcnNlX2FyZ3VtZW50
cywgWyctLWZpbHRlcj1mb28nXSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVl
RXJyb3IsIGNwcF9zdHlsZS5wYXJzZV9hcmd1bWVudHMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBbJy0tZmlsdGVyPSthLGIsLWMnXSkKLQotICAgICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbHMoKFsnZm9vLmNwcCddLCB7fSksIGNwcF9zdHlsZS5wYXJzZV9hcmd1bWVudHMoWydmb28u
Y3BwJ10pKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMob2xkX291dHB1dF9mb3JtYXQs
IGNwcF9zdHlsZS5fY3BwX3N0eWxlX3N0YXRlLm91dHB1dF9mb3JtYXQpCi0gICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFscyhvbGRfdmVyYm9zZV9sZXZlbCwgY3BwX3N0eWxlLl9jcHBfc3R5bGVf
c3RhdGUudmVyYm9zZV9sZXZlbCkKLQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoKFtd
LCB7fSksIGNwcF9zdHlsZS5wYXJzZV9hcmd1bWVudHMoW10pKQotICAgICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbHMoKFtdLCB7fSksIGNwcF9zdHlsZS5wYXJzZV9hcmd1bWVudHMoWyctLXY9MCdd
KSkKLQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoKFsnZm9vLmNwcCddLCB7fSksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHBfc3R5bGUucGFyc2VfYXJndW1lbnRzKFsn
LS12PTEnLCAnZm9vLmNwcCddKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDEsIGNw
cF9zdHlsZS5fY3BwX3N0eWxlX3N0YXRlLnZlcmJvc2VfbGV2ZWwpCi0gICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFscygoWydmb28uaCddLCB7fSksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjcHBfc3R5bGUucGFyc2VfYXJndW1lbnRzKFsnLS12PTMnLCAnZm9vLmgnXSkpCi0gICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFscygzLCBjcHBfc3R5bGUuX2NwcF9zdHlsZV9zdGF0ZS52
ZXJib3NlX2xldmVsKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoKFsnZm9vLmNwcCdd
LCB7fSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHBfc3R5bGUucGFyc2VfYXJn
dW1lbnRzKFsnLS12ZXJib3NlPTUnLCAnZm9vLmNwcCddKSkKLSAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWxzKDUsIGNwcF9zdHlsZS5fY3BwX3N0eWxlX3N0YXRlLnZlcmJvc2VfbGV2ZWwpCi0g
ICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY3BwX3N0eWxlLnBhcnNlX2FyZ3VtZW50cywgWyctLXY9ZicsICdmb28u
Y3BwJ10pCi0KLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKChbJ2Zvby5jcHAnXSwge30p
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3BwX3N0eWxlLnBhcnNlX2FyZ3VtZW50
cyhbJy0tb3V0cHV0PWVtYWNzJywgJ2Zvby5jcHAnXSkpCi0gICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFscygnZW1hY3MnLCBjcHBfc3R5bGUuX2NwcF9zdHlsZV9zdGF0ZS5vdXRwdXRfZm9ybWF0
KQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoKFsnZm9vLmgnXSwge30pLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY3BwX3N0eWxlLnBhcnNlX2FyZ3VtZW50cyhbJy0tb3V0
cHV0PXZzNycsICdmb28uaCddKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCd2czcn
LCBjcHBfc3R5bGUuX2NwcF9zdHlsZV9zdGF0ZS5vdXRwdXRfZm9ybWF0KQotICAgICAgICAgICAg
c2VsZi5hc3NlcnRSYWlzZXMoU3lzdGVtRXhpdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNwcF9zdHlsZS5wYXJzZV9hcmd1bWVudHMsIFsnLS1vdXRwdXQ9YmxhaCcsICdmb28uY3Bw
J10pCi0KLSAgICAgICAgICAgIGZpbHQgPSAnLSwrd2hpdGVzcGFjZSwtd2hpdGVzcGFjZS9pbmRl
bnQnCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscygoWydmb28uaCddLCB7fSksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjcHBfc3R5bGUucGFyc2VfYXJndW1lbnRzKFsnLS1m
aWx0ZXI9JytmaWx0LCAnZm9vLmgnXSkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhb
Jy0nLCAnK3doaXRlc3BhY2UnLCAnLXdoaXRlc3BhY2UvaW5kZW50J10sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjcHBfc3R5bGUuX2NwcF9zdHlsZV9zdGF0ZS5maWx0ZXJzKQotCi0g
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscygoWydmb28uY3BwJywgJ2Zvby5oJ10sIHt9KSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwcF9zdHlsZS5wYXJzZV9hcmd1bWVudHMo
Wydmb28uY3BwJywgJ2Zvby5oJ10pKQotCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscygo
Wydmb28uY3BwJ10sIHsnLS1mb28nOiAnJ30pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY3BwX3N0eWxlLnBhcnNlX2FyZ3VtZW50cyhbJy0tZm9vJywgJ2Zvby5jcHAnXSwgWydmb28n
XSkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscygoWydmb28uY3BwJ10sIHsnLS1mb28n
OiAnYmFyJ30pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3BwX3N0eWxlLnBhcnNl
X2FyZ3VtZW50cyhbJy0tZm9vPWJhcicsICdmb28uY3BwJ10sIFsnZm9vPSddKSkKLSAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWxzKChbJ2Zvby5jcHAnXSwge30pLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY3BwX3N0eWxlLnBhcnNlX2FyZ3VtZW50cyhbJ2Zvby5jcHAnXSwgWydm
b289J10pKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3lzdGVtRXhpdCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNwcF9zdHlsZS5wYXJzZV9hcmd1bWVudHMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBbJy0tZm9vdHlwbz1iYXInLCAnZm9vLmNwcCddLCBb
J2Zvbz0nXSkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGNwcF9zdHlsZS5fVVNBR0Ug
PSBvbGRfdXNhZ2UKLSAgICAgICAgICAgIGNwcF9zdHlsZS5fU1RZTEVfQ0FURUdPUklFUyA9IG9s
ZF9zdHlsZV9jYXRlZ29yaWVzCi0gICAgICAgICAgICBjcHBfc3R5bGUuX1dFQktJVF9GSUxURVJf
UlVMRVMgPSBvbGRfd2Via2l0X2ZpbHRlcl9ydWxlcwotICAgICAgICAgICAgY3BwX3N0eWxlLl9j
cHBfc3R5bGVfc3RhdGUub3V0cHV0X2Zvcm1hdCA9IG9sZF9vdXRwdXRfZm9ybWF0Ci0gICAgICAg
ICAgICBjcHBfc3R5bGUuX2NwcF9zdHlsZV9zdGF0ZS52ZXJib3NlX2xldmVsID0gb2xkX3ZlcmJv
c2VfbGV2ZWwKLSAgICAgICAgICAgIGNwcF9zdHlsZS5fY3BwX3N0eWxlX3N0YXRlLmZpbHRlcnMg
PSBvbGRfZmlsdGVycwotCiAgICAgZGVmIHRlc3RfZmlsdGVyKHNlbGYpOgogICAgICAgICBvbGRf
ZmlsdGVycyA9IGNwcF9zdHlsZS5fY3BwX3N0eWxlX3N0YXRlLmZpbHRlcnMKICAgICAgICAgdHJ5
OgpJbmRleDogU2NyaXB0cy9tb2R1bGVzL3N0eWxlLnB5Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNjcmlwdHMv
bW9kdWxlcy9zdHlsZS5weQkocmV2aXNpb24gNTI0MzYpCisrKyBTY3JpcHRzL21vZHVsZXMvc3R5
bGUucHkJKHdvcmtpbmcgY29weSkKQEAgLTMxLDI0ICszMSwyODEgQEAKICMgRklYTUU6IE1vdmUg
bW9yZSBjb2RlIGZyb20gY3BwX3N0eWxlIHRvIGhlcmUuCiAjIGNoZWNrLXdlYmtpdC1zdHlsZSBz
aG91bGQgbm90IHJlZmVyIGNwcF9zdHlsZSBkaXJlY3RseS4KIAoraW1wb3J0IGdldG9wdAogaW1w
b3J0IG9zLnBhdGgKK2ltcG9ydCBzeXMKIAotaW1wb3J0IG1vZHVsZXMuY3BwX3N0eWxlIGFzIGNw
cF9zdHlsZQotaW1wb3J0IG1vZHVsZXMudGV4dF9zdHlsZSBhcyB0ZXh0X3N0eWxlCi1mcm9tIG1v
ZHVsZXMuZGlmZl9wYXJzZXIgaW1wb3J0IERpZmZQYXJzZXIKK2ltcG9ydCBjcHBfc3R5bGUKK2lt
cG9ydCB0ZXh0X3N0eWxlCitmcm9tIGRpZmZfcGFyc2VyIGltcG9ydCBEaWZmUGFyc2VyCisKKwor
IyBEZWZhdWx0IG9wdGlvbnMKK19ERUZBVUxUX1ZFUkJPU0lUWSA9IDEKK19ERUZBVUxUX09VVFBV
VF9GT1JNQVQgPSAnZW1hY3MnCisKKworIyBGSVhNRTogRm9yIHN0eWxlIGNhdGVnb3JpZXMgd2Ug
d2lsbCBuZXZlciB3YW50IHRvIGhhdmUsIHJlbW92ZSB0aGVtLgorIyAgICAgICAgRm9yIGNhdGVn
b3JpZXMgZm9yIHdoaWNoIHdlIHdhbnQgdG8gaGF2ZSBzaW1pbGFyIGZ1bmN0aW9uYWxpdHksCisj
ICAgICAgICBtb2RpZnkgdGhlIGltcGxlbWVudGF0aW9uIGFuZCBlbmFibGUgdGhlbS4KKyMgRklY
TUU6IEFkZCBhIHVuaXQgdGVzdCB0byBlbnN1cmUgdGhlIGNvcnJlc3BvbmRpbmcgY2F0ZWdvcmll
cworIyAgICAgICAgYXJlIGVsZW1lbnRzIG9mIF9TVFlMRV9DQVRFR09SSUVTLgorIworIyBGb3Ig
dW5hbWJpZ3VvdXMgdGVybWlub2xvZ3ksIHdlIHVzZSAiZmlsdGVyIHJ1bGUiIHJhdGhlciB0aGFu
ICJmaWx0ZXIiCisjIGZvciBhbiBpbmRpdmlkdWFsIGJvb2xlYW4gZmlsdGVyIGZsYWcgbGlrZSAi
K2ZvbyIuIFRoaXMgYWxsb3dzIHVzIHRvIAorIyByZXNlcnZlICJmaWx0ZXIiIGZvciB3aGF0IG9u
ZSBnZXRzIGJ5IGNvbGxlY3RpdmVseSBhcHBseWluZyBhbGwgb2YgCisjIHRoZSBmaWx0ZXIgcnVs
ZXMgYXMgc3BlY2lmaWVkIGJ5IGEgLS1maWx0ZXIgZmxhZy4KK19XRUJLSVRfRklMVEVSX1JVTEVT
ID0gWworICAgICctYnVpbGQvZW5kaWZfY29tbWVudCcsCisgICAgJy1idWlsZC9pbmNsdWRlX3do
YXRfeW91X3VzZScsICAjIDxzdHJpbmc+IGZvciBzdGQ6OnN0cmluZworICAgICctYnVpbGQvc3Rv
cmFnZV9jbGFzcycsICAjIGNvbnN0IHN0YXRpYworICAgICctbGVnYWwvY29weXJpZ2h0JywKKyAg
ICAnLXJlYWRhYmlsaXR5L211bHRpbGluZV9jb21tZW50JywKKyAgICAnLXJlYWRhYmlsaXR5L2Jy
YWNlcycsICAjIGludCBmb28oKSB7fTsKKyAgICAnLXJlYWRhYmlsaXR5L2ZuX3NpemUnLAorICAg
ICctcmVhZGFiaWxpdHkvY2FzdGluZycsCisgICAgJy1yZWFkYWJpbGl0eS9mdW5jdGlvbicsCisg
ICAgJy1ydW50aW1lL2FycmF5cycsICAjIHZhcmlhYmxlIGxlbmd0aCBhcnJheQorICAgICctcnVu
dGltZS9jYXN0aW5nJywKKyAgICAnLXJ1bnRpbWUvc2l6ZW9mJywKKyAgICAnLXJ1bnRpbWUvZXhw
bGljaXQnLCAgIyBleHBsaWNpdAorICAgICctcnVudGltZS92aXJ0dWFsJywgICMgdmlydHVhbCBk
dG9yCisgICAgJy1ydW50aW1lL3ByaW50ZicsCisgICAgJy1ydW50aW1lL3RocmVhZHNhZmVfZm4n
LAorICAgICctcnVudGltZS9ydHRpJywKKyAgICAnLXdoaXRlc3BhY2UvYmxhbmtfbGluZScsCisg
ICAgJy13aGl0ZXNwYWNlL2VuZF9vZl9saW5lJywKKyAgICAnLXdoaXRlc3BhY2UvbGFiZWxzJywK
KyAgICBdCisKKworIyBXZSBjYXRlZ29yaXplIGVhY2ggc3R5bGUgcnVsZSB3ZSBwcmludC4gIEhl
cmUgYXJlIHRoZSBjYXRlZ29yaWVzLgorIyBXZSB3YW50IGFuIGV4cGxpY2l0IGxpc3Qgc28gd2Ug
Y2FuIGxpc3QgdGhlbSBhbGwgaW4gY3BwX3N0eWxlIC0tZmlsdGVyPS4KKyMgSWYgeW91IGFkZCBh
IG5ldyBlcnJvciBtZXNzYWdlIHdpdGggYSBuZXcgY2F0ZWdvcnksIGFkZCBpdCB0byB0aGUgbGlz
dAorIyBoZXJlISAgY3BwX3N0eWxlX3VuaXR0ZXN0LnB5IHNob3VsZCB0ZWxsIHlvdSBpZiB5b3Ug
Zm9yZ2V0IHRvIGRvIHRoaXMuCitfU1RZTEVfQ0FURUdPUklFUyA9IFsKKyAgICAnYnVpbGQvY2xh
c3MnLAorICAgICdidWlsZC9kZXByZWNhdGVkJywKKyAgICAnYnVpbGQvZW5kaWZfY29tbWVudCcs
CisgICAgJ2J1aWxkL2ZvcndhcmRfZGVjbCcsCisgICAgJ2J1aWxkL2hlYWRlcl9ndWFyZCcsCisg
ICAgJ2J1aWxkL2luY2x1ZGUnLAorICAgICdidWlsZC9pbmNsdWRlX29yZGVyJywKKyAgICAnYnVp
bGQvaW5jbHVkZV93aGF0X3lvdV91c2UnLAorICAgICdidWlsZC9uYW1lc3BhY2VzJywKKyAgICAn
YnVpbGQvcHJpbnRmX2Zvcm1hdCcsCisgICAgJ2J1aWxkL3N0b3JhZ2VfY2xhc3MnLAorICAgICdi
dWlsZC91c2luZ19zdGQnLAorICAgICdsZWdhbC9jb3B5cmlnaHQnLAorICAgICdyZWFkYWJpbGl0
eS9icmFjZXMnLAorICAgICdyZWFkYWJpbGl0eS9jYXN0aW5nJywKKyAgICAncmVhZGFiaWxpdHkv
Y2hlY2snLAorICAgICdyZWFkYWJpbGl0eS9jb21wYXJpc29uX3RvX3plcm8nLAorICAgICdyZWFk
YWJpbGl0eS9jb25zdHJ1Y3RvcnMnLAorICAgICdyZWFkYWJpbGl0eS9jb250cm9sX2Zsb3cnLAor
ICAgICdyZWFkYWJpbGl0eS9mbl9zaXplJywKKyAgICAncmVhZGFiaWxpdHkvZnVuY3Rpb24nLAor
ICAgICdyZWFkYWJpbGl0eS9tdWx0aWxpbmVfY29tbWVudCcsCisgICAgJ3JlYWRhYmlsaXR5L211
bHRpbGluZV9zdHJpbmcnLAorICAgICdyZWFkYWJpbGl0eS9uYW1pbmcnLAorICAgICdyZWFkYWJp
bGl0eS9udWxsJywKKyAgICAncmVhZGFiaWxpdHkvc3RyZWFtcycsCisgICAgJ3JlYWRhYmlsaXR5
L3RvZG8nLAorICAgICdyZWFkYWJpbGl0eS91dGY4JywKKyAgICAncnVudGltZS9hcnJheXMnLAor
ICAgICdydW50aW1lL2Nhc3RpbmcnLAorICAgICdydW50aW1lL2V4cGxpY2l0JywKKyAgICAncnVu
dGltZS9pbml0JywKKyAgICAncnVudGltZS9pbnQnLAorICAgICdydW50aW1lL2ludmFsaWRfaW5j
cmVtZW50JywKKyAgICAncnVudGltZS9tYXhfbWluX21hY3JvcycsCisgICAgJ3J1bnRpbWUvbWVt
c2V0JywKKyAgICAncnVudGltZS9wcmludGYnLAorICAgICdydW50aW1lL3ByaW50Zl9mb3JtYXQn
LAorICAgICdydW50aW1lL3JlZmVyZW5jZXMnLAorICAgICdydW50aW1lL3J0dGknLAorICAgICdy
dW50aW1lL3NpemVvZicsCisgICAgJ3J1bnRpbWUvc3RyaW5nJywKKyAgICAncnVudGltZS90aHJl
YWRzYWZlX2ZuJywKKyAgICAncnVudGltZS92aXJ0dWFsJywKKyAgICAnd2hpdGVzcGFjZS9ibGFu
a19saW5lJywKKyAgICAnd2hpdGVzcGFjZS9icmFjZXMnLAorICAgICd3aGl0ZXNwYWNlL2NvbW1h
JywKKyAgICAnd2hpdGVzcGFjZS9jb21tZW50cycsCisgICAgJ3doaXRlc3BhY2UvZGVjbGFyYXRp
b24nLAorICAgICd3aGl0ZXNwYWNlL2VuZF9vZl9saW5lJywKKyAgICAnd2hpdGVzcGFjZS9lbmRp
bmdfbmV3bGluZScsCisgICAgJ3doaXRlc3BhY2UvaW5kZW50JywKKyAgICAnd2hpdGVzcGFjZS9s
YWJlbHMnLAorICAgICd3aGl0ZXNwYWNlL2xpbmVfbGVuZ3RoJywKKyAgICAnd2hpdGVzcGFjZS9u
ZXdsaW5lJywKKyAgICAnd2hpdGVzcGFjZS9vcGVyYXRvcnMnLAorICAgICd3aGl0ZXNwYWNlL3Bh
cmVucycsCisgICAgJ3doaXRlc3BhY2Uvc2VtaWNvbG9uJywKKyAgICAnd2hpdGVzcGFjZS90YWIn
LAorICAgICd3aGl0ZXNwYWNlL3RvZG8nLAorICAgIF0KKworCitfVVNBR0UgPSAiIiIKK1N5bnRh
eDogJShwcm9ncmFtX25hbWUpcyBbLS12ZXJib3NlPSNdIFstLWdpdC1jb21taXQ9PFNpbmdsZUNv
bW1pdD5dIFstLW91dHB1dD12czddCisgICAgICAgIFstLWZpbHRlcj0teCwreSwuLi5dIFtmaWxl
XSAuLi4KKworICBUaGUgc3R5bGUgZ3VpZGVsaW5lcyB0aGlzIHRyaWVzIHRvIGZvbGxvdyBhcmUg
aGVyZToKKyAgICBodHRwOi8vd2Via2l0Lm9yZy9jb2RpbmcvY29kaW5nLXN0eWxlLmh0bWwKKwor
ICBFdmVyeSBzdHlsZSBlcnJvciBpcyBnaXZlbiBhIGNvbmZpZGVuY2Ugc2NvcmUgZnJvbSAxLTUs
IHdpdGggNSBtZWFuaW5nCisgIHdlIGFyZSBjZXJ0YWluIG9mIHRoZSBwcm9ibGVtLCBhbmQgMSBt
ZWFuaW5nIGl0IGNvdWxkIGJlIGEgbGVnaXRpbWF0ZQorICBjb25zdHJ1Y3QuICBUaGlzIGNhbiBt
aXNzIHNvbWUgZXJyb3JzIGFuZCBkb2VzIG5vdCBzdWJzdGl0dXRlIGZvcgorICBjb2RlIHJldmll
dy4KKworICBUbyBwcmV2ZW50IHNwZWNpZmljIGxpbmVzIGZyb20gYmVpbmcgbGludGVkLCBhZGQg
YSAnLy8gTk9MSU5UJyBjb21tZW50IHRvIHRoZQorICBlbmQgb2YgdGhlIGxpbmUuCisKKyAgTGlu
dGVkIGV4dGVuc2lvbnMgYXJlIC5jcHAsIC5jIGFuZCAuaC4gIE90aGVyIGZpbGUgdHlwZXMgYXJl
IGlnbm9yZWQuCisKKyAgVGhlIGZpbGUgcGFyYW1ldGVyIGlzIG9wdGlvbmFsIGFuZCBhY2NlcHRz
IG11bHRpcGxlIGZpbGVzLiAgTGVhdmluZworICBvdXQgdGhlIGZpbGUgcGFyYW1ldGVyIGFwcGxp
ZXMgdGhlIGNoZWNrIHRvIGFsbCBmaWxlcyBjb25zaWRlcmVkIGNoYW5nZWQKKyAgYnkgeW91ciBz
b3VyY2UgY29udHJvbCBtYW5hZ2VtZW50IHN5c3RlbS4KKworICBGbGFnczoKKworICAgIHZlcmJv
c2U9IworICAgICAgQSBudW1iZXIgMC01IHRvIHJlc3RyaWN0IGVycm9ycyB0byBjZXJ0YWluIHZl
cmJvc2l0eSBsZXZlbHMuCisgICAgICBEZWZhdWx0cyB0byAlKGRlZmF1bHRfdmVyYm9zaXR5KXMu
CisKKyAgICBnaXQtY29tbWl0PTxTaW5nbGVDb21taXQ+CisgICAgICBDaGVja3MgdGhlIHN0eWxl
IG9mIGV2ZXJ5dGhpbmcgZnJvbSB0aGUgZ2l2ZW4gY29tbWl0IHRvIHRoZSBsb2NhbCB0cmVlLgor
CisgICAgb3V0cHV0PXZzNworICAgICAgVGhlIG91dHB1dCBmb3JtYXQsIHdoaWNoIG1heSBiZSBv
bmUgb2YKKyAgICAgICAgZW1hY3MgOiB0byBlYXNlIGVtYWNzIHBhcnNpbmcKKyAgICAgICAgdnM3
ICAgOiBjb21wYXRpYmxlIHdpdGggVmlzdWFsIFN0dWRpbworICAgICAgRGVmYXVsdHMgdG8gIiUo
ZGVmYXVsdF9vdXRwdXRfZm9ybWF0KXMiLiBPdGhlciBmb3JtYXRzIGFyZSB1bnN1cHBvcnRlZC4K
KworICAgIGZpbHRlcj0teCwreSwuLi4KKyAgICAgIEEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2Yg
Ym9vbGVhbiBmaWx0ZXIgcnVsZXMgdXNlZCB0byBmaWx0ZXIKKyAgICAgIHdoaWNoIGNhdGVnb3Jp
ZXMgb2Ygc3R5bGUgZ3VpZGVsaW5lcyB0byBjaGVjay4gIFRoZSBzY3JpcHQgY2hlY2tzCisgICAg
ICBhIGNhdGVnb3J5IGlmIHRoZSBjYXRlZ29yeSBwYXNzZXMgdGhlIGZpbHRlciBydWxlcywgYXMg
Zm9sbG93cy4KKworICAgICAgQW55IHdlYmtpdCBjYXRlZ29yeSBzdGFydHMgb3V0IHBhc3Npbmcu
ICBBbGwgZmlsdGVyIHJ1bGVzIGFyZSB0aGVuCisgICAgICBldmFsdWF0ZWQgbGVmdCB0byByaWdo
dCwgd2l0aCBsYXRlciBydWxlcyB0YWtpbmcgcHJlY2VkZW5jZS4gIEZvcgorICAgICAgZXhhbXBs
ZSwgdGhlIHJ1bGUgIitmb28iIHBhc3NlcyBhbnkgY2F0ZWdvcnkgdGhhdCBzdGFydHMgd2l0aCAi
Zm9vIiwKKyAgICAgIGFuZCAiLWZvbyIgZmFpbHMgYW55IHN1Y2ggY2F0ZWdvcnkuICBUaGUgZmls
dGVyIGlucHV0ICItd2hpdGVzcGFjZSwKKyAgICAgICt3aGl0ZXNwYWNlL2JyYWNlcyIgZmFpbHMg
dGhlIGNhdGVnb3J5ICJ3aGl0ZXNwYWNlL3RhYiIgYW5kIHBhc3NlcworICAgICAgIndoaXRlc3Bh
Y2UvYnJhY2VzIi4KKworICAgICAgRXhhbXBsZXM6IC0tZmlsdGVyPS13aGl0ZXNwYWNlLCt3aGl0
ZXNwYWNlL2JyYWNlcworICAgICAgICAgICAgICAgIC0tZmlsdGVyPS13aGl0ZXNwYWNlLC1ydW50
aW1lL3ByaW50ZiwrcnVudGltZS9wcmludGZfZm9ybWF0CisgICAgICAgICAgICAgICAgLS1maWx0
ZXI9LSwrYnVpbGQvaW5jbHVkZV93aGF0X3lvdV91c2UKKworICAgICAgQ2F0ZWdvcnkgbmFtZXMg
YXBwZWFyIGluIGVycm9yIG1lc3NhZ2VzIGluIGJyYWNrZXRzLCBmb3IgZXhhbXBsZQorICAgICAg
W3doaXRlc3BhY2UvaW5kZW50XS4gIFRvIHNlZSBhIGxpc3Qgb2YgYWxsIGNhdGVnb3JpZXMgYXZh
aWxhYmxlIHRvCisgICAgICAlKHByb2dyYW1fbmFtZSlzLCBhbG9uZyB3aXRoIHdoaWNoIGFyZSBl
bmFibGVkIGJ5IGRlZmF1bHQsIHBhc3MKKyAgICAgIHRoZSBlbXB0eSBmaWx0ZXIgYXMgZm9sbG93
czoKKyAgICAgICAgIC0tZmlsdGVyPQorIiIiICUgeworICAgICdwcm9ncmFtX25hbWUnOiBvcy5w
YXRoLmJhc2VuYW1lKHN5cy5hcmd2WzBdKSwKKyAgICAnZGVmYXVsdF92ZXJib3NpdHknOiBfREVG
QVVMVF9WRVJCT1NJVFksCisgICAgJ2RlZmF1bHRfb3V0cHV0X2Zvcm1hdCc6IF9ERUZBVUxUX09V
VFBVVF9GT1JNQVQKKyAgICB9CiAKIAogZGVmIHVzZV93ZWJraXRfc3R5bGVzKCk6CiAgICAgIiIi
Q29uZmlndXJlcyB0aGlzIG1vZHVsZSBmb3IgV2ViS2l0IHN0eWxlLiIiIgotICAgIGNwcF9zdHls
ZS5fREVGQVVMVF9GSUxURVJfUlVMRVMgPSBjcHBfc3R5bGUuX1dFQktJVF9GSUxURVJfUlVMRVMK
KyAgICBjcHBfc3R5bGUuX0RFRkFVTFRfRklMVEVSX1JVTEVTID0gX1dFQktJVF9GSUxURVJfUlVM
RVMKKworCitkZWYgZXhpdF93aXRoX3VzYWdlKGVycm9yX21lc3NhZ2UsIGRpc3BsYXlfaGVscD1G
YWxzZSk6CisgICAgIiIiRXhpdCBhbmQgcHJpbnQgYSB1c2FnZSBzdHJpbmcgd2l0aCBhbiBvcHRp
b25hbCBlcnJvciBtZXNzYWdlLgorCisgICAgQXJnczoKKyAgICAgIGVycm9yX21lc3NhZ2U6IFRo
ZSBvcHRpb25hbCBlcnJvciBtZXNzYWdlLgorICAgICAgZGlzcGxheV9oZWxwOiBXaGV0aGVyIHRv
IGRpc3BsYXkgaGVscCBvdXRwdXQuIFN1cHByZXNzaW5nIGhlbHAKKyAgICAgICAgICAgICAgICAg
ICAgb3V0cHV0IGlzIHVzZWZ1bCBmb3IgdW5pdCB0ZXN0cy4KKyAgICAiIiIKKyAgICBpZiBkaXNw
bGF5X2hlbHA6CisgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoX1VTQUdFKQorICAgIGlmIGVycm9y
X21lc3NhZ2U6CisgICAgICAgIHN5cy5leGl0KCdcbkZBVEFMIEVSUk9SOiAnICsgZXJyb3JfbWVz
c2FnZSkKKyAgICBlbHNlOgorICAgICAgICBzeXMuZXhpdCgxKQorCisKK2RlZiBleGl0X3dpdGhf
Y2F0ZWdvcmllcyhkaXNwbGF5X2hlbHA9RmFsc2UpOgorICAgICIiIkV4aXQgYW5kIHByaW50IGFs
bCBzdHlsZSBjYXRlZ29yaWVzLCBhbG9uZyB3aXRoIHRoZSBkZWZhdWx0IGZpbHRlci4KKworICAg
IFRoZXNlIGNhdGVnb3J5IG5hbWVzIGFwcGVhciBpbiBlcnJvciBtZXNzYWdlcy4gIFRoZXkgY2Fu
IGJlIGZpbHRlcmVkCisgICAgdXNpbmcgdGhlIC0tZmlsdGVyIGZsYWcuCisKKyAgICBBcmdzOgor
ICAgICAgZGlzcGxheV9oZWxwOiBXaGV0aGVyIHRvIGRpc3BsYXkgaGVscCBvdXRwdXQuIFN1cHBy
ZXNzaW5nIGhlbHAKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0IGlzIHVzZWZ1bCBmb3IgdW5p
dCB0ZXN0cy4KKyAgICAiIiIKKyAgICBpZiBkaXNwbGF5X2hlbHA6CisgICAgICAgIHN5cy5zdGRl
cnIud3JpdGUoJ1xuQWxsIGNhdGVnb3JpZXM6XG4nKQorICAgICAgICBmb3IgY2F0ZWdvcnkgaW4g
c29ydGVkKF9TVFlMRV9DQVRFR09SSUVTKToKKyAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUo
JyAgICAnICsgY2F0ZWdvcnkgKyAnXG4nKQorCisgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJ1xu
RGVmYXVsdCBmaWx0ZXIgcnVsZXMqKjpcbicpCisgICAgICAgIGZvciBmaWx0ZXJfcnVsZSBpbiBz
b3J0ZWQoX1dFQktJVF9GSUxURVJfUlVMRVMpOgorICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0
ZSgnICAgICcgKyBmaWx0ZXJfcnVsZSArICdcbicpCisgICAgICAgIHN5cy5zdGRlcnIud3JpdGUo
J1xuKipUaGUgY29tbWFuZCBhbHdheXMgZXZhbHVhdGVzIHRoZSBhYm92ZSAnCisgICAgICAgICAg
ICAgICAgICAgICAgICAgJ3J1bGVzLCBhbmQgYmVmb3JlIGFueSAtLWZpbHRlciBmbGFnLlxuXG4n
KQorCisgICAgc3lzLmV4aXQoMCkKIAogCiBkZWYgcGFyc2VfYXJndW1lbnRzKGFyZ3MsIGFkZGl0
aW9uYWxfZmxhZ3M9W10sIGRpc3BsYXlfaGVscD1GYWxzZSk6CiAgICAgIiIiUGFyc2VzIHRoZSBj
b21tYW5kIGxpbmUgYXJndW1lbnRzLgogCi0gICAgU2VlIGNwcF9zdHlsZS5wYXJzZV9hcmd1bWVu
dHMoKSBmb3IgZGV0YWlscy4KKyAgICBUaGlzIG1heSBzZXQgdGhlIG91dHB1dCBmb3JtYXQgYW5k
IHZlcmJvc2l0eSBsZXZlbCBhcyBzaWRlLWVmZmVjdHMuCisKKyAgICBBcmdzOgorICAgICAgYXJn
czogVGhlIGNvbW1hbmQgbGluZSBhcmd1bWVudHM6CisgICAgICBhZGRpdGlvbmFsX2ZsYWdzOiBB
IGxpc3Qgb2Ygc3RyaW5ncyB3aGljaCBzcGVjaWZpZXMgZmxhZ3Mgd2UgYWxsb3cuCisgICAgICBk
aXNwbGF5X2hlbHA6IFdoZXRoZXIgdG8gZGlzcGxheSBoZWxwIG91dHB1dC4gU3VwcHJlc3Npbmcg
aGVscAorICAgICAgICAgICAgICAgICAgICBvdXRwdXQgaXMgdXNlZnVsIGZvciB1bml0IHRlc3Rz
LgorCisgICAgUmV0dXJuczoKKyAgICAgIEEgdHVwbGUgb2YgKGZpbGVuYW1lcywgZmxhZ3MpCisK
KyAgICAgIGZpbGVuYW1lczogVGhlIGxpc3Qgb2YgZmlsZW5hbWVzIHRvIGxpbnQuCisgICAgICBm
bGFnczogVGhlIGRpY3Qgb2YgdGhlIGZsYWcgbmFtZXMgYW5kIHRoZSBmbGFnIHZhbHVlcy4KICAg
ICAiIiIKLSAgICByZXR1cm4gY3BwX3N0eWxlLnBhcnNlX2FyZ3VtZW50cyhhcmdzLCBhZGRpdGlv
bmFsX2ZsYWdzLCBkaXNwbGF5X2hlbHApCisgICAgZmxhZ3MgPSBbJ2hlbHAnLCAnb3V0cHV0PScs
ICd2ZXJib3NlPScsICdmaWx0ZXI9J10gKyBhZGRpdGlvbmFsX2ZsYWdzCisgICAgYWRkaXRpb25h
bF9mbGFnX3ZhbHVlcyA9IHt9CisgICAgdHJ5OgorICAgICAgICAob3B0cywgZmlsZW5hbWVzKSA9
IGdldG9wdC5nZXRvcHQoYXJncywgJycsIGZsYWdzKQorICAgIGV4Y2VwdCBnZXRvcHQuR2V0b3B0
RXJyb3I6CisgICAgICAgIGV4aXRfd2l0aF91c2FnZSgnSW52YWxpZCBhcmd1bWVudHMuJywgZGlz
cGxheV9oZWxwKQorCisgICAgdmVyYm9zaXR5ID0gY3BwX3N0eWxlLl92ZXJib3NlX2xldmVsKCkK
KyAgICBvdXRwdXRfZm9ybWF0ID0gY3BwX3N0eWxlLl9vdXRwdXRfZm9ybWF0KCkKKyAgICBmaWx0
ZXJzID0gJycKKworICAgIGZvciAob3B0LCB2YWwpIGluIG9wdHM6CisgICAgICAgIGlmIG9wdCA9
PSAnLS1oZWxwJzoKKyAgICAgICAgICAgIGV4aXRfd2l0aF91c2FnZShOb25lLCBkaXNwbGF5X2hl
bHApCisgICAgICAgIGVsaWYgb3B0ID09ICctLW91dHB1dCc6CisgICAgICAgICAgICBpZiBub3Qg
dmFsIGluICgnZW1hY3MnLCAndnM3Jyk6CisgICAgICAgICAgICAgICAgZXhpdF93aXRoX3VzYWdl
KCdUaGUgb25seSBhbGxvd2VkIG91dHB1dCBmb3JtYXRzIGFyZSBlbWFjcyBhbmQgdnM3LicsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlfaGVscCkKKyAgICAgICAgICAg
IG91dHB1dF9mb3JtYXQgPSB2YWwKKyAgICAgICAgZWxpZiBvcHQgPT0gJy0tdmVyYm9zZSc6Cisg
ICAgICAgICAgICB2ZXJib3NpdHkgPSBpbnQodmFsKQorICAgICAgICBlbGlmIG9wdCA9PSAnLS1m
aWx0ZXInOgorICAgICAgICAgICAgZmlsdGVycyA9IHZhbAorICAgICAgICAgICAgaWYgbm90IGZp
bHRlcnM6CisgICAgICAgICAgICAgICAgZXhpdF93aXRoX2NhdGVnb3JpZXMoZGlzcGxheV9oZWxw
KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYWRkaXRpb25hbF9mbGFnX3ZhbHVlc1tvcHRd
ID0gdmFsCisKKyAgICBjcHBfc3R5bGUuX3NldF9vdXRwdXRfZm9ybWF0KG91dHB1dF9mb3JtYXQp
CisgICAgY3BwX3N0eWxlLl9zZXRfdmVyYm9zZV9sZXZlbCh2ZXJib3NpdHkpCisgICAgY3BwX3N0
eWxlLl9zZXRfZmlsdGVycyhmaWx0ZXJzKQorCisgICAgcmV0dXJuIChmaWxlbmFtZXMsIGFkZGl0
aW9uYWxfZmxhZ192YWx1ZXMpCiAKIAogZGVmIHByb2Nlc3NfZmlsZShmaWxlbmFtZSk6CkluZGV4
OiBTY3JpcHRzL21vZHVsZXMvc3R5bGVfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU2NyaXB0
cy9tb2R1bGVzL3N0eWxlX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAwKQorKysgU2NyaXB0cy9tb2R1
bGVzL3N0eWxlX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyNCBAQAorIyEv
dXNyL2Jpbi9weXRob24KKyMgLSotIGNvZGluZzogdXRmLTg7IC0qLQorIworIyBDb3B5cmlnaHQg
KEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChD
KSAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuCisjIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisj
IG1ldDoKKyMKKyMgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisj
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisiIiJVbml0IHRlc3RzIGZv
ciBzdHlsZS5weS4iIiIKKworaW1wb3J0IHVuaXR0ZXN0CisKK2ltcG9ydCBzdHlsZQorIyBGSVhN
RTogRWxpbWluYXRlIGNwcF9zdHlsZSBkZXBlbmRlbmN5LgoraW1wb3J0IGNwcF9zdHlsZQorCisK
K2NsYXNzIEFyZ3VtZW50UGFyc2VyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiVGVz
dHMgYXJndW1lbnQgcGFyc2luZy4iIiIKKyAgICBkZWYgdGVzdF9wYXJzZV9hcmd1bWVudHMoc2Vs
Zik6CisgICAgICAgIG9sZF91c2FnZSA9IHN0eWxlLl9VU0FHRQorICAgICAgICBvbGRfc3R5bGVf
Y2F0ZWdvcmllcyA9IHN0eWxlLl9TVFlMRV9DQVRFR09SSUVTCisgICAgICAgIG9sZF93ZWJraXRf
ZmlsdGVyX3J1bGVzID0gc3R5bGUuX1dFQktJVF9GSUxURVJfUlVMRVMKKyAgICAgICAgb2xkX291
dHB1dF9mb3JtYXQgPSBjcHBfc3R5bGUuX2NwcF9zdHlsZV9zdGF0ZS5vdXRwdXRfZm9ybWF0Cisg
ICAgICAgIG9sZF92ZXJib3NlX2xldmVsID0gY3BwX3N0eWxlLl9jcHBfc3R5bGVfc3RhdGUudmVy
Ym9zZV9sZXZlbAorICAgICAgICBvbGRfZmlsdGVycyA9IGNwcF9zdHlsZS5fY3BwX3N0eWxlX3N0
YXRlLmZpbHRlcnMKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBEb24ndCBwcmludCB1c2Fn
ZSBkdXJpbmcgdGhlIHRlc3RzLCBvciBmaWx0ZXIgY2F0ZWdvcmllcworICAgICAgICAgICAgc3R5
bGUuX1VTQUdFID0gJycKKyAgICAgICAgICAgIHN0eWxlLl9TVFlMRV9DQVRFR09SSUVTID0gW10K
KyAgICAgICAgICAgIHN0eWxlLl9XRUJLSVRfRklMVEVSX1JVTEVTID0gW10KKworICAgICAgICAg
ICAgc2VsZi5hc3NlcnRSYWlzZXMoU3lzdGVtRXhpdCwgc3R5bGUucGFyc2VfYXJndW1lbnRzLCBb
Jy0tYmFkb3B0J10pCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeXN0ZW1FeGl0LCBz
dHlsZS5wYXJzZV9hcmd1bWVudHMsIFsnLS1oZWxwJ10pCisgICAgICAgICAgICBzZWxmLmFzc2Vy
dFJhaXNlcyhTeXN0ZW1FeGl0LCBzdHlsZS5wYXJzZV9hcmd1bWVudHMsIFsnLS1maWx0ZXI9J10p
CisgICAgICAgICAgICAjIFRoaXMgaXMgaWxsZWdhbCBiZWNhdXNlIGFsbCBmaWx0ZXJzIG11c3Qg
c3RhcnQgd2l0aCArIG9yIC0KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJy
b3IsIHN0eWxlLnBhcnNlX2FyZ3VtZW50cywgWyctLWZpbHRlcj1mb28nXSkKKyAgICAgICAgICAg
IHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHN0eWxlLnBhcnNlX2FyZ3VtZW50cywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnLS1maWx0ZXI9K2EsYiwtYyddKQorCisgICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFscygoWydmb28uY3BwJ10sIHt9KSwgc3R5bGUucGFyc2Vf
YXJndW1lbnRzKFsnZm9vLmNwcCddKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG9s
ZF9vdXRwdXRfZm9ybWF0LCBjcHBfc3R5bGUuX2NwcF9zdHlsZV9zdGF0ZS5vdXRwdXRfZm9ybWF0
KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMob2xkX3ZlcmJvc2VfbGV2ZWwsIGNwcF9z
dHlsZS5fY3BwX3N0eWxlX3N0YXRlLnZlcmJvc2VfbGV2ZWwpCisKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWxzKChbXSwge30pLCBzdHlsZS5wYXJzZV9hcmd1bWVudHMoW10pKQorICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoKFtdLCB7fSksIHN0eWxlLnBhcnNlX2FyZ3VtZW50cyhb
Jy0tdj0wJ10pKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscygoWydmb28uY3BwJ10s
IHt9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlLnBhcnNlX2FyZ3VtZW50
cyhbJy0tdj0xJywgJ2Zvby5jcHAnXSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscygx
LCBjcHBfc3R5bGUuX2NwcF9zdHlsZV9zdGF0ZS52ZXJib3NlX2xldmVsKQorICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbHMoKFsnZm9vLmgnXSwge30pLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3R5bGUucGFyc2VfYXJndW1lbnRzKFsnLS12PTMnLCAnZm9vLmgnXSkpCisgICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFscygzLCBjcHBfc3R5bGUuX2NwcF9zdHlsZV9zdGF0ZS52
ZXJib3NlX2xldmVsKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoKFsnZm9vLmNwcCdd
LCB7fSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZS5wYXJzZV9hcmd1bWVu
dHMoWyctLXZlcmJvc2U9NScsICdmb28uY3BwJ10pKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbHMoNSwgY3BwX3N0eWxlLl9jcHBfc3R5bGVfc3RhdGUudmVyYm9zZV9sZXZlbCkKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdHlsZS5wYXJzZV9hcmd1bWVudHMsIFsnLS12PWYnLCAnZm9vLmNwcCddKQor
CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscygoWydmb28uY3BwJ10sIHt9KSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlLnBhcnNlX2FyZ3VtZW50cyhbJy0tb3V0cHV0
PWVtYWNzJywgJ2Zvby5jcHAnXSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnZW1h
Y3MnLCBjcHBfc3R5bGUuX2NwcF9zdHlsZV9zdGF0ZS5vdXRwdXRfZm9ybWF0KQorICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbHMoKFsnZm9vLmgnXSwge30pLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3R5bGUucGFyc2VfYXJndW1lbnRzKFsnLS1vdXRwdXQ9dnM3JywgJ2Zvby5o
J10pKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJ3ZzNycsIGNwcF9zdHlsZS5fY3Bw
X3N0eWxlX3N0YXRlLm91dHB1dF9mb3JtYXQpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNl
cyhTeXN0ZW1FeGl0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGUucGFyc2Vf
YXJndW1lbnRzLCBbJy0tb3V0cHV0PWJsYWgnLCAnZm9vLmNwcCddKQorCisgICAgICAgICAgICBm
aWx0ID0gJy0sK3doaXRlc3BhY2UsLXdoaXRlc3BhY2UvaW5kZW50JworICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbHMoKFsnZm9vLmgnXSwge30pLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3R5bGUucGFyc2VfYXJndW1lbnRzKFsnLS1maWx0ZXI9JytmaWx0LCAnZm9vLmgnXSkp
CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhbJy0nLCAnK3doaXRlc3BhY2UnLCAnLXdo
aXRlc3BhY2UvaW5kZW50J10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHBfc3R5
bGUuX2NwcF9zdHlsZV9zdGF0ZS5maWx0ZXJzKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFscygoWydmb28uY3BwJywgJ2Zvby5oJ10sIHt9KSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0eWxlLnBhcnNlX2FyZ3VtZW50cyhbJ2Zvby5jcHAnLCAnZm9vLmgnXSkpCisKKyAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKChbJ2Zvby5jcHAnXSwgeyctLWZvbyc6ICcnfSks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZS5wYXJzZV9hcmd1bWVudHMoWyct
LWZvbycsICdmb28uY3BwJ10sIFsnZm9vJ10pKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bHMoKFsnZm9vLmNwcCddLCB7Jy0tZm9vJzogJ2Jhcid9KSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0eWxlLnBhcnNlX2FyZ3VtZW50cyhbJy0tZm9vPWJhcicsICdmb28uY3BwJ10s
IFsnZm9vPSddKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKChbJ2Zvby5jcHAnXSwg
e30pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGUucGFyc2VfYXJndW1lbnRz
KFsnZm9vLmNwcCddLCBbJ2Zvbz0nXSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhT
eXN0ZW1FeGl0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGUucGFyc2VfYXJn
dW1lbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyctLWZvb3R5cG89YmFyJywg
J2Zvby5jcHAnXSwgWydmb289J10pCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzdHls
ZS5fVVNBR0UgPSBvbGRfdXNhZ2UKKyAgICAgICAgICAgIHN0eWxlLl9TVFlMRV9DQVRFR09SSUVT
ID0gb2xkX3N0eWxlX2NhdGVnb3JpZXMKKyAgICAgICAgICAgIHN0eWxlLl9XRUJLSVRfRklMVEVS
X1JVTEVTID0gb2xkX3dlYmtpdF9maWx0ZXJfcnVsZXMKKyAgICAgICAgICAgIGNwcF9zdHlsZS5f
Y3BwX3N0eWxlX3N0YXRlLm91dHB1dF9mb3JtYXQgPSBvbGRfb3V0cHV0X2Zvcm1hdAorICAgICAg
ICAgICAgY3BwX3N0eWxlLl9jcHBfc3R5bGVfc3RhdGUudmVyYm9zZV9sZXZlbCA9IG9sZF92ZXJi
b3NlX2xldmVsCisgICAgICAgICAgICBjcHBfc3R5bGUuX2NwcF9zdHlsZV9zdGF0ZS5maWx0ZXJz
ID0gb2xkX2ZpbHRlcnMKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIGltcG9y
dCBzeXMKKworICAgIHVuaXR0ZXN0Lm1haW4oKQo=
</data>
<flag name="commit-queue"
          id="27328"
          type_id="3"
          status="-"
          setter="cjerdonek"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45317</attachid>
            <date>2009-12-21 01:40:27 -0800</date>
            <delta_ts>2009-12-23 21:46:14 -0800</delta_ts>
            <desc>Proposed patch 4</desc>
            <filename>patch-tools6-2.txt</filename>
            <type>text/plain</type>
            <size>36098</size>
            <attacher name="Chris Jerdonek">cjerdonek</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDUyNDM2
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzcgQEAKKzIwMDktMTIt
MjAgIENocmlzIEplcmRvbmVrICA8Y2hyaXMuamVyZG9uZWtAZ21haWwuY29tPgorCisgICAgICAg
IE1vdmVkIHNvbWUgc2VjdGlvbnMgb2YgY29kZSBpbiBwcmVwYXJhdGlvbiB0byByZWZhY3Rvcgor
ICAgICAgICBjaGVjay13ZWJraXQtc3R5bGUncyBhcmd1bWVudCBwYXJzZXIgdG8gYXZvaWQgc2V0
dGluZworICAgICAgICBnbG9iYWwgdmFyaWFibGVzLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjU5MgorCisgICAgICAgICogU2NyaXB0cy9jaGVj
ay13ZWJraXQtc3R5bGU6CisgICAgICAgICAgLSBNb3ZlZCBfVVNBR0Ugc3RyaW5nIHRvIHN0eWxl
LnB5LgorICAgICAgICAgIC0gQWRkcmVzc2VkIEZJWE1FIGJ5IGVsaW1pbmF0aW5nIGRlcGVuZGVu
Y2llcyBvbiBjcHBfc3R5bGUucHkuCisKKyAgICAgICAgKiBTY3JpcHRzL21vZHVsZXMvY3BwX3N0
eWxlLnB5OgorICAgICAgICAgIC0gTW92ZWQgZGVmYXVsdCBhcmd1bWVudHMgYW5kIHN0eWxlIGNh
dGVnb3JpZXMgdG8gc3R5bGUucHkuCisgICAgICAgICAgLSBNb3ZlZCBleGl0X3dpdGhfdXNhZ2Uo
KSwgZXhpdF93aXRoX2NhdGVnb3JpZXMoKSwgYW5kCisgICAgICAgICAgICBwYXJzZV9hcmd1bWVu
dHMoKSB0byBzdHlsZS5weS4KKyAgICAgICAgICAtIFJlbW92ZWQgcmVmZXJlbmNlcyBpbiBfQ3Bw
U3R5bGVTdGF0ZSB0byB0aGUgZ2xvYmFsCisgICAgICAgICAgICB2YXJpYWJsZXMgbm93IGluIHN0
eWxlLnB5LgorCisgICAgICAgICogU2NyaXB0cy9tb2R1bGVzL2NwcF9zdHlsZV91bml0dGVzdC5w
eToKKyAgICAgICAgICAtIE1vdmVkIHBhcnNlX2FyZ3VtZW50cygpIHVuaXQgdGVzdHMgdG8gc3R5
bGVfdW5pdHRlc3QucHkuCisKKyAgICAgICAgKiBTY3JpcHRzL21vZHVsZXMvc3R5bGUucHk6Cisg
ICAgICAgICAgLSBBZGRlZCBfVVNBR0Ugc3RyaW5nIGZyb20gY2hlY2std2Via2l0LXN0eWxlLgor
ICAgICAgICAgIC0gQWRkZWQgZGVmYXVsdCBhcmd1bWVudHMgYW5kIHN0eWxlIGNhdGVnb3JpZXMg
ZnJvbSBjcHBfc3R5bGUucHkuCisgICAgICAgICAgLSBBZGRlZCBleGl0X3dpdGhfdXNhZ2UoKSwg
ZXhpdF93aXRoX2NhdGVnb3JpZXMoKSwgYW5kCisgICAgICAgICAgICBwYXJzZV9hcmd1bWVudHMo
KSBmcm9tIGNwcF9zc3R5bGUucHkuCisKKyAgICAgICAgKiBTY3JpcHRzL21vZHVsZXMvc3R5bGVf
dW5pdHRlc3QucHk6IEFkZGVkLgorICAgICAgICAgIC0gQWRkZWQgcGFyc2VfYXJndW1lbnRzKCkg
dW5pdCB0ZXN0cyBmcm9tIGNwcF9zdHlsZV91bml0dGVzdC5weS4KKworICAgICAgICAqIFNjcmlw
dHMvcnVuLXdlYmtpdC11bml0dGVzdHM6CisgICAgICAgICAgLSBBZGRlZCB1bml0IHRlc3RzIGZy
b20gc3R5bGVfdW5pdHRlc3QucHkuCisKIDIwMDktMTItMjAgIENocmlzIEplcmRvbmVrICA8Y2hy
aXMuamVyZG9uZWtAZ21haWwuY29tPgogCkluZGV4OiBTY3JpcHRzL2NoZWNrLXdlYmtpdC1zdHls
ZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTY3JpcHRzL2NoZWNrLXdlYmtpdC1zdHlsZQkocmV2aXNpb24gNTI0
MzYpCisrKyBTY3JpcHRzL2NoZWNrLXdlYmtpdC1zdHlsZQkod29ya2luZyBjb3B5KQpAQCAtNDYs
NzYgKzQ2LDEwIEBAIGltcG9ydCBvcwogaW1wb3J0IG9zLnBhdGgKIGltcG9ydCBzeXMKIAotaW1w
b3J0IG1vZHVsZXMuY3BwX3N0eWxlIGFzIGNwcF9zdHlsZQogaW1wb3J0IG1vZHVsZXMuc3R5bGUg
YXMgc3R5bGUKIGZyb20gbW9kdWxlcy5zY20gaW1wb3J0IGRldGVjdF9zY21fc3lzdGVtCiAKIAot
IyBGSVhNRTogQXZvaWQgY3BwX3N0eWxlIGRlcGVuZGVuY3kuCi1jcHBfc3R5bGUuX1VTQUdFID0g
IiIiCi1TeW50YXg6ICUocHJvZ3JhbV9uYW1lKXMgWy0tdmVyYm9zZT0jXSBbLS1naXQtY29tbWl0
PTxTaW5nbGVDb21taXQ+XSBbLS1vdXRwdXQ9dnM3XQotICAgICAgICBbLS1maWx0ZXI9LXgsK3ks
Li4uXSBbZmlsZV0gLi4uCi0KLSAgVGhlIHN0eWxlIGd1aWRlbGluZXMgdGhpcyB0cmllcyB0byBm
b2xsb3cgYXJlIGhlcmU6Ci0gICAgaHR0cDovL3dlYmtpdC5vcmcvY29kaW5nL2NvZGluZy1zdHls
ZS5odG1sCi0KLSAgRXZlcnkgc3R5bGUgZXJyb3IgaXMgZ2l2ZW4gYSBjb25maWRlbmNlIHNjb3Jl
IGZyb20gMS01LCB3aXRoIDUgbWVhbmluZwotICB3ZSBhcmUgY2VydGFpbiBvZiB0aGUgcHJvYmxl
bSwgYW5kIDEgbWVhbmluZyBpdCBjb3VsZCBiZSBhIGxlZ2l0aW1hdGUKLSAgY29uc3RydWN0LiAg
VGhpcyBjYW4gbWlzcyBzb21lIGVycm9ycyBhbmQgZG9lcyBub3Qgc3Vic3RpdHV0ZSBmb3IKLSAg
Y29kZSByZXZpZXcuCi0KLSAgVG8gcHJldmVudCBzcGVjaWZpYyBsaW5lcyBmcm9tIGJlaW5nIGxp
bnRlZCwgYWRkIGEgJy8vIE5PTElOVCcgY29tbWVudCB0byB0aGUKLSAgZW5kIG9mIHRoZSBsaW5l
LgotCi0gIExpbnRlZCBleHRlbnNpb25zIGFyZSAuY3BwLCAuYyBhbmQgLmguICBPdGhlciBmaWxl
IHR5cGVzIGFyZSBpZ25vcmVkLgotCi0gIFRoZSBmaWxlIHBhcmFtZXRlciBpcyBvcHRpb25hbCBh
bmQgYWNjZXB0cyBtdWx0aXBsZSBmaWxlcy4gIExlYXZpbmcKLSAgb3V0IHRoZSBmaWxlIHBhcmFt
ZXRlciBhcHBsaWVzIHRoZSBjaGVjayB0byBhbGwgZmlsZXMgY29uc2lkZXJlZCBjaGFuZ2VkCi0g
IGJ5IHlvdXIgc291cmNlIGNvbnRyb2wgbWFuYWdlbWVudCBzeXN0ZW0uCi0KLSAgRmxhZ3M6Ci0K
LSAgICB2ZXJib3NlPSMKLSAgICAgIEEgbnVtYmVyIDAtNSB0byByZXN0cmljdCBlcnJvcnMgdG8g
Y2VydGFpbiB2ZXJib3NpdHkgbGV2ZWxzLgotICAgICAgRGVmYXVsdHMgdG8gJShkZWZhdWx0X3Zl
cmJvc2l0eSlzLgotCi0gICAgZ2l0LWNvbW1pdD08U2luZ2xlQ29tbWl0PgotICAgICAgQ2hlY2tz
IHRoZSBzdHlsZSBvZiBldmVyeXRoaW5nIGZyb20gdGhlIGdpdmVuIGNvbW1pdCB0byB0aGUgbG9j
YWwgdHJlZS4KLQotICAgIG91dHB1dD12czcKLSAgICAgIFRoZSBvdXRwdXQgZm9ybWF0LCB3aGlj
aCBtYXkgYmUgb25lIG9mCi0gICAgICAgIGVtYWNzIDogdG8gZWFzZSBlbWFjcyBwYXJzaW5nCi0g
ICAgICAgIHZzNyAgIDogY29tcGF0aWJsZSB3aXRoIFZpc3VhbCBTdHVkaW8KLSAgICAgIERlZmF1
bHRzIHRvICIlKGRlZmF1bHRfb3V0cHV0X2Zvcm1hdClzIi4gT3RoZXIgZm9ybWF0cyBhcmUgdW5z
dXBwb3J0ZWQuCi0KLSAgICBmaWx0ZXI9LXgsK3ksLi4uCi0gICAgICBBIGNvbW1hLXNlcGFyYXRl
ZCBsaXN0IG9mIGJvb2xlYW4gZmlsdGVyIHJ1bGVzIHVzZWQgdG8gZmlsdGVyCi0gICAgICB3aGlj
aCBjYXRlZ29yaWVzIG9mIHN0eWxlIGd1aWRlbGluZXMgdG8gY2hlY2suICBUaGUgc2NyaXB0IGNo
ZWNrcwotICAgICAgYSBjYXRlZ29yeSBpZiB0aGUgY2F0ZWdvcnkgcGFzc2VzIHRoZSBmaWx0ZXIg
cnVsZXMsIGFzIGZvbGxvd3MuCi0KLSAgICAgIEFueSB3ZWJraXQgY2F0ZWdvcnkgc3RhcnRzIG91
dCBwYXNzaW5nLiAgQWxsIGZpbHRlciBydWxlcyBhcmUgdGhlbgotICAgICAgZXZhbHVhdGVkIGxl
ZnQgdG8gcmlnaHQsIHdpdGggbGF0ZXIgcnVsZXMgdGFraW5nIHByZWNlZGVuY2UuICBGb3IKLSAg
ICAgIGV4YW1wbGUsIHRoZSBydWxlICIrZm9vIiBwYXNzZXMgYW55IGNhdGVnb3J5IHRoYXQgc3Rh
cnRzIHdpdGggImZvbyIsCi0gICAgICBhbmQgIi1mb28iIGZhaWxzIGFueSBzdWNoIGNhdGVnb3J5
LiAgVGhlIGZpbHRlciBpbnB1dCAiLXdoaXRlc3BhY2UsCi0gICAgICArd2hpdGVzcGFjZS9icmFj
ZXMiIGZhaWxzIHRoZSBjYXRlZ29yeSAid2hpdGVzcGFjZS90YWIiIGFuZCBwYXNzZXMKLSAgICAg
ICJ3aGl0ZXNwYWNlL2JyYWNlcyIuCi0KLSAgICAgIEV4YW1wbGVzOiAtLWZpbHRlcj0td2hpdGVz
cGFjZSwrd2hpdGVzcGFjZS9icmFjZXMKLSAgICAgICAgICAgICAgICAtLWZpbHRlcj0td2hpdGVz
cGFjZSwtcnVudGltZS9wcmludGYsK3J1bnRpbWUvcHJpbnRmX2Zvcm1hdAotICAgICAgICAgICAg
ICAgIC0tZmlsdGVyPS0sK2J1aWxkL2luY2x1ZGVfd2hhdF95b3VfdXNlCi0KLSAgICAgIENhdGVn
b3J5IG5hbWVzIGFwcGVhciBpbiBlcnJvciBtZXNzYWdlcyBpbiBicmFja2V0cywgZm9yIGV4YW1w
bGUKLSAgICAgIFt3aGl0ZXNwYWNlL2luZGVudF0uICBUbyBzZWUgYSBsaXN0IG9mIGFsbCBjYXRl
Z29yaWVzIGF2YWlsYWJsZSB0bwotICAgICAgJShwcm9ncmFtX25hbWUpcywgYWxvbmcgd2l0aCB3
aGljaCBhcmUgZW5hYmxlZCBieSBkZWZhdWx0LCBwYXNzCi0gICAgICB0aGUgZW1wdHkgZmlsdGVy
IGFzIGZvbGxvd3M6Ci0gICAgICAgICAtLWZpbHRlcj0KLSIiIiAlIHsKLSAgICAncHJvZ3JhbV9u
YW1lJzogb3MucGF0aC5iYXNlbmFtZShzeXMuYXJndlswXSksCi0gICAgJ2RlZmF1bHRfdmVyYm9z
aXR5JzogY3BwX3N0eWxlLl9ERUZBVUxUX1ZFUkJPU0lUWSwKLSAgICAnZGVmYXVsdF9vdXRwdXRf
Zm9ybWF0JzogY3BwX3N0eWxlLl9ERUZBVUxUX09VVFBVVF9GT1JNQVQKLSAgICB9Ci0KLQogZGVm
IG1haW4oKToKICAgICBzdHlsZS51c2Vfd2Via2l0X3N0eWxlcygpCiAKQEAgLTEzMCw5ICs2NCw5
IEBAIGRlZiBtYWluKCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ3JlcGxhY2UnKQogCiAgICAgaWYgZmlsZXMgYW5kICItLWdpdC1jb21taXQiIGluIGZsYWdz
OgotICAgICAgICBjcHBfc3R5bGUuZXhpdF93aXRoX3VzYWdlKCdJdCBpcyBub3QgcG9zc2libGUg
dG8gY2hlY2sgZmlsZXMgYW5kIGEgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICdzcGVjaWZpYyBjb21taXQgYXQgdGhlIHNhbWUgdGltZS4nLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRpc3BsYXlfaGVscD1UcnVlKQorICAgICAgICBzdHlsZS5leGl0X3dp
dGhfdXNhZ2UoJ0l0IGlzIG5vdCBwb3NzaWJsZSB0byBjaGVjayBmaWxlcyBhbmQgYSAnCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnc3BlY2lmaWMgY29tbWl0IGF0IHRoZSBzYW1lIHRp
bWUuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlfaGVscD1UcnVlKQog
CiAgICAgaWYgZmlsZXM6CiAgICAgICAgIGZvciBmaWxlbmFtZSBpbiBmaWxlczoKSW5kZXg6IFNj
cmlwdHMvcnVuLXdlYmtpdC11bml0dGVzdHMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU2NyaXB0cy9ydW4td2Vi
a2l0LXVuaXR0ZXN0cwkocmV2aXNpb24gNTI0MzYpCisrKyBTY3JpcHRzL3J1bi13ZWJraXQtdW5p
dHRlc3RzCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw3IEBAIGZyb20gbW9kdWxlcy5kaWZm
X3BhcnNlcl91bml0dGVzdCBpbXBvcnQKIGZyb20gbW9kdWxlcy5sb2dnaW5nX3VuaXR0ZXN0IGlt
cG9ydCAqCiBmcm9tIG1vZHVsZXMubXVsdGljb21tYW5kdG9vbF91bml0dGVzdCBpbXBvcnQgKgog
ZnJvbSBtb2R1bGVzLnF1ZXVlZW5naW5lX3VuaXR0ZXN0IGltcG9ydCAqCitmcm9tIG1vZHVsZXMu
c3R5bGVfdW5pdHRlc3QgaW1wb3J0ICoKIGZyb20gbW9kdWxlcy50ZXh0X3N0eWxlX3VuaXR0ZXN0
IGltcG9ydCAqCiBmcm9tIG1vZHVsZXMud2Via2l0cG9ydF91bml0dGVzdCBpbXBvcnQgKgogCklu
ZGV4OiBTY3JpcHRzL21vZHVsZXMvY3BwX3N0eWxlLnB5Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNjcmlwdHMv
bW9kdWxlcy9jcHBfc3R5bGUucHkJKHJldmlzaW9uIDUyNDM2KQorKysgU2NyaXB0cy9tb2R1bGVz
L2NwcF9zdHlsZS5weQkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNiBAQAogIiIiU3VwcG9y
dCBmb3IgY2hlY2std2Via2l0LXN0eWxlLiIiIgogCiBpbXBvcnQgY29kZWNzCi1pbXBvcnQgZ2V0
b3B0CiBpbXBvcnQgbWF0aCAgIyBmb3IgbG9nCiBpbXBvcnQgb3MKIGltcG9ydCBvcy5wYXRoCkBA
IC00OCwxMTcgKzQ3LDkgQEAgaW1wb3J0IHN5cwogaW1wb3J0IHVuaWNvZGVkYXRhCiAKIAotIyBU
aGlzIGlzIHNldCBieSBjaGVjay13ZWJraXQtc3R5bGUuCiBfVVNBR0UgPSAnJwogCiAKLSMgRGVm
YXVsdCBvcHRpb25zCi1fREVGQVVMVF9WRVJCT1NJVFkgPSAxCi1fREVGQVVMVF9PVVRQVVRfRk9S
TUFUID0gJ2VtYWNzJwotCi0KLSMgRklYTUU6IEZvciBzdHlsZSBjYXRlZ29yaWVzIHdlIHdpbGwg
bmV2ZXIgd2FudCB0byBoYXZlLCByZW1vdmUgdGhlbS4KLSMgICAgICAgIEZvciBjYXRlZ29yaWVz
IGZvciB3aGljaCB3ZSB3YW50IHRvIGhhdmUgc2ltaWxhciBmdW5jdGlvbmFsaXR5LAotIyAgICAg
ICAgbW9kaWZ5IHRoZSBpbXBsZW1lbnRhdGlvbiBhbmQgZW5hYmxlIHRoZW0uCi0jIEZJWE1FOiBB
ZGQgYSB1bml0IHRlc3QgdG8gZW5zdXJlIHRoZSBjb3JyZXNwb25kaW5nIGNhdGVnb3JpZXMKLSMg
ICAgICAgIGFyZSBlbGVtZW50cyBvZiBfU1RZTEVfQ0FURUdPUklFUy4KLSMKLSMgRm9yIHVuYW1i
aWd1b3VzIHRlcm1pbm9sb2d5LCB3ZSB1c2UgImZpbHRlciBydWxlIiByYXRoZXIgdGhhbiAiZmls
dGVyIgotIyBmb3IgYW4gaW5kaXZpZHVhbCBib29sZWFuIGZpbHRlciBmbGFnIGxpa2UgIitmb28i
LiBUaGlzIGFsbG93cyB1cyB0byAKLSMgcmVzZXJ2ZSAiZmlsdGVyIiBmb3Igd2hhdCBvbmUgZ2V0
cyBieSBjb2xsZWN0aXZlbHkgYXBwbHlpbmcgYWxsIG9mIAotIyB0aGUgZmlsdGVyIHJ1bGVzIGFz
IHNwZWNpZmllZCBieSBhIC0tZmlsdGVyIGZsYWcuCi1fV0VCS0lUX0ZJTFRFUl9SVUxFUyA9IFsK
LSAgICAnLWJ1aWxkL2VuZGlmX2NvbW1lbnQnLAotICAgICctYnVpbGQvaW5jbHVkZV93aGF0X3lv
dV91c2UnLCAgIyA8c3RyaW5nPiBmb3Igc3RkOjpzdHJpbmcKLSAgICAnLWJ1aWxkL3N0b3JhZ2Vf
Y2xhc3MnLCAgIyBjb25zdCBzdGF0aWMKLSAgICAnLWxlZ2FsL2NvcHlyaWdodCcsCi0gICAgJy1y
ZWFkYWJpbGl0eS9tdWx0aWxpbmVfY29tbWVudCcsCi0gICAgJy1yZWFkYWJpbGl0eS9icmFjZXMn
LCAgIyBpbnQgZm9vKCkge307Ci0gICAgJy1yZWFkYWJpbGl0eS9mbl9zaXplJywKLSAgICAnLXJl
YWRhYmlsaXR5L2Nhc3RpbmcnLAotICAgICctcmVhZGFiaWxpdHkvZnVuY3Rpb24nLAotICAgICct
cnVudGltZS9hcnJheXMnLCAgIyB2YXJpYWJsZSBsZW5ndGggYXJyYXkKLSAgICAnLXJ1bnRpbWUv
Y2FzdGluZycsCi0gICAgJy1ydW50aW1lL3NpemVvZicsCi0gICAgJy1ydW50aW1lL2V4cGxpY2l0
JywgICMgZXhwbGljaXQKLSAgICAnLXJ1bnRpbWUvdmlydHVhbCcsICAjIHZpcnR1YWwgZHRvcgot
ICAgICctcnVudGltZS9wcmludGYnLAotICAgICctcnVudGltZS90aHJlYWRzYWZlX2ZuJywKLSAg
ICAnLXJ1bnRpbWUvcnR0aScsCi0gICAgJy13aGl0ZXNwYWNlL2JsYW5rX2xpbmUnLAotICAgICct
d2hpdGVzcGFjZS9lbmRfb2ZfbGluZScsCi0gICAgJy13aGl0ZXNwYWNlL2xhYmVscycsCi0gICAg
XQotCi0KLSMgV2UgY2F0ZWdvcml6ZSBlYWNoIHN0eWxlIHJ1bGUgd2UgcHJpbnQuICBIZXJlIGFy
ZSB0aGUgY2F0ZWdvcmllcy4KLSMgV2Ugd2FudCBhbiBleHBsaWNpdCBsaXN0IHNvIHdlIGNhbiBs
aXN0IHRoZW0gYWxsIGluIGNwcF9zdHlsZSAtLWZpbHRlcj0uCi0jIElmIHlvdSBhZGQgYSBuZXcg
ZXJyb3IgbWVzc2FnZSB3aXRoIGEgbmV3IGNhdGVnb3J5LCBhZGQgaXQgdG8gdGhlIGxpc3QKLSMg
aGVyZSEgIGNwcF9zdHlsZV91bml0dGVzdC5weSBzaG91bGQgdGVsbCB5b3UgaWYgeW91IGZvcmdl
dCB0byBkbyB0aGlzLgotX1NUWUxFX0NBVEVHT1JJRVMgPSBbCi0gICAgJ2J1aWxkL2NsYXNzJywK
LSAgICAnYnVpbGQvZGVwcmVjYXRlZCcsCi0gICAgJ2J1aWxkL2VuZGlmX2NvbW1lbnQnLAotICAg
ICdidWlsZC9mb3J3YXJkX2RlY2wnLAotICAgICdidWlsZC9oZWFkZXJfZ3VhcmQnLAotICAgICdi
dWlsZC9pbmNsdWRlJywKLSAgICAnYnVpbGQvaW5jbHVkZV9vcmRlcicsCi0gICAgJ2J1aWxkL2lu
Y2x1ZGVfd2hhdF95b3VfdXNlJywKLSAgICAnYnVpbGQvbmFtZXNwYWNlcycsCi0gICAgJ2J1aWxk
L3ByaW50Zl9mb3JtYXQnLAotICAgICdidWlsZC9zdG9yYWdlX2NsYXNzJywKLSAgICAnYnVpbGQv
dXNpbmdfc3RkJywKLSAgICAnbGVnYWwvY29weXJpZ2h0JywKLSAgICAncmVhZGFiaWxpdHkvYnJh
Y2VzJywKLSAgICAncmVhZGFiaWxpdHkvY2FzdGluZycsCi0gICAgJ3JlYWRhYmlsaXR5L2NoZWNr
JywKLSAgICAncmVhZGFiaWxpdHkvY29tcGFyaXNvbl90b196ZXJvJywKLSAgICAncmVhZGFiaWxp
dHkvY29uc3RydWN0b3JzJywKLSAgICAncmVhZGFiaWxpdHkvY29udHJvbF9mbG93JywKLSAgICAn
cmVhZGFiaWxpdHkvZm5fc2l6ZScsCi0gICAgJ3JlYWRhYmlsaXR5L2Z1bmN0aW9uJywKLSAgICAn
cmVhZGFiaWxpdHkvbXVsdGlsaW5lX2NvbW1lbnQnLAotICAgICdyZWFkYWJpbGl0eS9tdWx0aWxp
bmVfc3RyaW5nJywKLSAgICAncmVhZGFiaWxpdHkvbmFtaW5nJywKLSAgICAncmVhZGFiaWxpdHkv
bnVsbCcsCi0gICAgJ3JlYWRhYmlsaXR5L3N0cmVhbXMnLAotICAgICdyZWFkYWJpbGl0eS90b2Rv
JywKLSAgICAncmVhZGFiaWxpdHkvdXRmOCcsCi0gICAgJ3J1bnRpbWUvYXJyYXlzJywKLSAgICAn
cnVudGltZS9jYXN0aW5nJywKLSAgICAncnVudGltZS9leHBsaWNpdCcsCi0gICAgJ3J1bnRpbWUv
aW5pdCcsCi0gICAgJ3J1bnRpbWUvaW50JywKLSAgICAncnVudGltZS9pbnZhbGlkX2luY3JlbWVu
dCcsCi0gICAgJ3J1bnRpbWUvbWF4X21pbl9tYWNyb3MnLAotICAgICdydW50aW1lL21lbXNldCcs
Ci0gICAgJ3J1bnRpbWUvcHJpbnRmJywKLSAgICAncnVudGltZS9wcmludGZfZm9ybWF0JywKLSAg
ICAncnVudGltZS9yZWZlcmVuY2VzJywKLSAgICAncnVudGltZS9ydHRpJywKLSAgICAncnVudGlt
ZS9zaXplb2YnLAotICAgICdydW50aW1lL3N0cmluZycsCi0gICAgJ3J1bnRpbWUvdGhyZWFkc2Fm
ZV9mbicsCi0gICAgJ3J1bnRpbWUvdmlydHVhbCcsCi0gICAgJ3doaXRlc3BhY2UvYmxhbmtfbGlu
ZScsCi0gICAgJ3doaXRlc3BhY2UvYnJhY2VzJywKLSAgICAnd2hpdGVzcGFjZS9jb21tYScsCi0g
ICAgJ3doaXRlc3BhY2UvY29tbWVudHMnLAotICAgICd3aGl0ZXNwYWNlL2RlY2xhcmF0aW9uJywK
LSAgICAnd2hpdGVzcGFjZS9lbmRfb2ZfbGluZScsCi0gICAgJ3doaXRlc3BhY2UvZW5kaW5nX25l
d2xpbmUnLAotICAgICd3aGl0ZXNwYWNlL2luZGVudCcsCi0gICAgJ3doaXRlc3BhY2UvbGFiZWxz
JywKLSAgICAnd2hpdGVzcGFjZS9saW5lX2xlbmd0aCcsCi0gICAgJ3doaXRlc3BhY2UvbmV3bGlu
ZScsCi0gICAgJ3doaXRlc3BhY2Uvb3BlcmF0b3JzJywKLSAgICAnd2hpdGVzcGFjZS9wYXJlbnMn
LAotICAgICd3aGl0ZXNwYWNlL3NlbWljb2xvbicsCi0gICAgJ3doaXRlc3BhY2UvdGFiJywKLSAg
ICAnd2hpdGVzcGFjZS90b2RvJywKLSAgICBdCi0KLQogIyBUaGUgZGVmYXVsdCBzdGF0ZSBvZiB0
aGUgY2F0ZWdvcnkgZmlsdGVyLiBUaGlzIGlzIG92ZXJyaWRlZCBieSB0aGUgLS1maWx0ZXI9CiAj
IGZsYWcuIEJ5IGRlZmF1bHQgYWxsIGVycm9ycyBhcmUgb24sIHNvIG9ubHkgYWRkIGhlcmUgY2F0
ZWdvcmllcyB0aGF0IHNob3VsZCBiZQogIyBvZmYgYnkgZGVmYXVsdCAoaS5lLiwgY2F0ZWdvcmll
cyB0aGF0IG11c3QgYmUgZW5hYmxlZCBieSB0aGUgLS1maWx0ZXI9IGZsYWdzKS4KQEAgLTM2MCw3
ICsyNTEsNyBAQCBjbGFzcyBfQ3BwU3R5bGVTdGF0ZShvYmplY3QpOgogICAgICIiIk1haW50YWlu
cyBtb2R1bGUtd2lkZSBzdGF0ZS4uIiIiCiAKICAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAg
ICAgIHNlbGYudmVyYm9zZV9sZXZlbCA9IF9ERUZBVUxUX1ZFUkJPU0lUWSAgIyBnbG9iYWwgc2V0
dGluZy4KKyAgICAgICAgc2VsZi52ZXJib3NlX2xldmVsID0gMSAgIyBnbG9iYWwgc2V0dGluZy4K
ICAgICAgICAgc2VsZi5lcnJvcl9jb3VudCA9IDAgICAgIyBnbG9iYWwgY291bnQgb2YgcmVwb3J0
ZWQgZXJyb3JzCiAgICAgICAgICMgZmlsdGVycyB0byBhcHBseSB3aGVuIGVtaXR0aW5nIGVycm9y
IG1lc3NhZ2VzCiAgICAgICAgIHNlbGYuZmlsdGVycyA9IF9ERUZBVUxUX0ZJTFRFUl9SVUxFU1s6
XQpAQCAtMzY4LDcgKzI1OSw3IEBAIGNsYXNzIF9DcHBTdHlsZVN0YXRlKG9iamVjdCk6CiAgICAg
ICAgICMgb3V0cHV0IGZvcm1hdDoKICAgICAgICAgIyAiZW1hY3MiIC0gZm9ybWF0IHRoYXQgZW1h
Y3MgY2FuIHBhcnNlIChkZWZhdWx0KQogICAgICAgICAjICJ2czciIC0gZm9ybWF0IHRoYXQgTWlj
cm9zb2Z0IFZpc3VhbCBTdHVkaW8gNyBjYW4gcGFyc2UKLSAgICAgICAgc2VsZi5vdXRwdXRfZm9y
bWF0ID0gX0RFRkFVTFRfT1VUUFVUX0ZPUk1BVAorICAgICAgICBzZWxmLm91dHB1dF9mb3JtYXQg
PSAnZW1hY3MnCiAKICAgICBkZWYgc2V0X291dHB1dF9mb3JtYXQoc2VsZiwgb3V0cHV0X2Zvcm1h
dCk6CiAgICAgICAgICIiIlNldHMgdGhlIG91dHB1dCBmb3JtYXQgZm9yIGVycm9ycy4iIiIKQEAg
LTMxNTgsOTggKzMwNDksNiBAQCBkZWYgcHJvY2Vzc19maWxlKGZpbGVuYW1lLCBlcnJvcj1lcnJv
cik6CiAgICAgICAgICAgICAgICAgICAnYmV0dGVyIHRvIHVzZSBvbmx5IGEgXFxuJykKIAogCi1k
ZWYgZXhpdF93aXRoX3VzYWdlKGVycm9yX21lc3NhZ2UsIGRpc3BsYXlfaGVscD1GYWxzZSk6Ci0g
ICAgIiIiRXhpdCBhbmQgcHJpbnQgYSB1c2FnZSBzdHJpbmcgd2l0aCBhbiBvcHRpb25hbCBlcnJv
ciBtZXNzYWdlLgotCi0gICAgQXJnczoKLSAgICAgIGVycm9yX21lc3NhZ2U6IFRoZSBvcHRpb25h
bCBlcnJvciBtZXNzYWdlLgotICAgICAgZGlzcGxheV9oZWxwOiBXaGV0aGVyIHRvIGRpc3BsYXkg
aGVscCBvdXRwdXQuIFN1cHByZXNzaW5nIGhlbHAKLSAgICAgICAgICAgICAgICAgICAgb3V0cHV0
IGlzIHVzZWZ1bCBmb3IgdW5pdCB0ZXN0cy4KLSAgICAiIiIKLSAgICBpZiBkaXNwbGF5X2hlbHA6
Ci0gICAgICAgIHN5cy5zdGRlcnIud3JpdGUoX1VTQUdFKQotICAgIGlmIGVycm9yX21lc3NhZ2U6
Ci0gICAgICAgIHN5cy5leGl0KCdcbkZBVEFMIEVSUk9SOiAnICsgZXJyb3JfbWVzc2FnZSkKLSAg
ICBlbHNlOgotICAgICAgICBzeXMuZXhpdCgxKQotCi0KLWRlZiBleGl0X3dpdGhfY2F0ZWdvcmll
cyhkaXNwbGF5X2hlbHA9RmFsc2UpOgotICAgICIiIkV4aXQgYW5kIHByaW50IGFsbCBzdHlsZSBj
YXRlZ29yaWVzLCBhbG9uZyB3aXRoIHRoZSBkZWZhdWx0IGZpbHRlci4KLQotICAgIFRoZXNlIGNh
dGVnb3J5IG5hbWVzIGFwcGVhciBpbiBlcnJvciBtZXNzYWdlcy4gIFRoZXkgY2FuIGJlIGZpbHRl
cmVkCi0gICAgdXNpbmcgdGhlIC0tZmlsdGVyIGZsYWcuCi0KLSAgICBBcmdzOgotICAgICAgZGlz
cGxheV9oZWxwOiBXaGV0aGVyIHRvIGRpc3BsYXkgaGVscCBvdXRwdXQuIFN1cHByZXNzaW5nIGhl
bHAKLSAgICAgICAgICAgICAgICAgICAgb3V0cHV0IGlzIHVzZWZ1bCBmb3IgdW5pdCB0ZXN0cy4K
LSAgICAiIiIKLSAgICBpZiBkaXNwbGF5X2hlbHA6Ci0gICAgICAgIHN5cy5zdGRlcnIud3JpdGUo
J1xuQWxsIGNhdGVnb3JpZXM6XG4nKQotICAgICAgICBmb3IgY2F0ZWdvcnkgaW4gc29ydGVkKF9T
VFlMRV9DQVRFR09SSUVTKToKLSAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJyAgICAnICsg
Y2F0ZWdvcnkgKyAnXG4nKQotCi0gICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJ1xuRGVmYXVsdCBm
aWx0ZXIgcnVsZXMqKjpcbicpCi0gICAgICAgIGZvciBmaWx0ZXJfcnVsZSBpbiBzb3J0ZWQoX1dF
QktJVF9GSUxURVJfUlVMRVMpOgotICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgnICAgICcg
KyBmaWx0ZXJfcnVsZSArICdcbicpCi0gICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJ1xuKipUaGUg
Y29tbWFuZCBhbHdheXMgZXZhbHVhdGVzIHRoZSBhYm92ZSAnCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgJ3J1bGVzLCBhbmQgYmVmb3JlIGFueSAtLWZpbHRlciBmbGFnLlxuXG4nKQotCi0gICAg
c3lzLmV4aXQoMCkKLQotCi1kZWYgcGFyc2VfYXJndW1lbnRzKGFyZ3MsIGFkZGl0aW9uYWxfZmxh
Z3M9W10sIGRpc3BsYXlfaGVscD1GYWxzZSk6Ci0gICAgIiIiUGFyc2VzIHRoZSBjb21tYW5kIGxp
bmUgYXJndW1lbnRzLgotCi0gICAgVGhpcyBtYXkgc2V0IHRoZSBvdXRwdXQgZm9ybWF0IGFuZCB2
ZXJib3NpdHkgbGV2ZWwgYXMgc2lkZS1lZmZlY3RzLgotCi0gICAgQXJnczoKLSAgICAgIGFyZ3M6
IFRoZSBjb21tYW5kIGxpbmUgYXJndW1lbnRzOgotICAgICAgYWRkaXRpb25hbF9mbGFnczogQSBs
aXN0IG9mIHN0cmluZ3Mgd2hpY2ggc3BlY2lmaWVzIGZsYWdzIHdlIGFsbG93LgotICAgICAgZGlz
cGxheV9oZWxwOiBXaGV0aGVyIHRvIGRpc3BsYXkgaGVscCBvdXRwdXQuIFN1cHByZXNzaW5nIGhl
bHAKLSAgICAgICAgICAgICAgICAgICAgb3V0cHV0IGlzIHVzZWZ1bCBmb3IgdW5pdCB0ZXN0cy4K
LQotICAgIFJldHVybnM6Ci0gICAgICBBIHR1cGxlIG9mIChmaWxlbmFtZXMsIGZsYWdzKQotCi0g
ICAgICBmaWxlbmFtZXM6IFRoZSBsaXN0IG9mIGZpbGVuYW1lcyB0byBsaW50LgotICAgICAgZmxh
Z3M6IFRoZSBkaWN0IG9mIHRoZSBmbGFnIG5hbWVzIGFuZCB0aGUgZmxhZyB2YWx1ZXMuCi0gICAg
IiIiCi0gICAgZmxhZ3MgPSBbJ2hlbHAnLCAnb3V0cHV0PScsICd2ZXJib3NlPScsICdmaWx0ZXI9
J10gKyBhZGRpdGlvbmFsX2ZsYWdzCi0gICAgYWRkaXRpb25hbF9mbGFnX3ZhbHVlcyA9IHt9Ci0g
ICAgdHJ5OgotICAgICAgICAob3B0cywgZmlsZW5hbWVzKSA9IGdldG9wdC5nZXRvcHQoYXJncywg
JycsIGZsYWdzKQotICAgIGV4Y2VwdCBnZXRvcHQuR2V0b3B0RXJyb3I6Ci0gICAgICAgIGV4aXRf
d2l0aF91c2FnZSgnSW52YWxpZCBhcmd1bWVudHMuJywgZGlzcGxheV9oZWxwKQotCi0gICAgdmVy
Ym9zaXR5ID0gX3ZlcmJvc2VfbGV2ZWwoKQotICAgIG91dHB1dF9mb3JtYXQgPSBfb3V0cHV0X2Zv
cm1hdCgpCi0gICAgZmlsdGVycyA9ICcnCi0KLSAgICBmb3IgKG9wdCwgdmFsKSBpbiBvcHRzOgot
ICAgICAgICBpZiBvcHQgPT0gJy0taGVscCc6Ci0gICAgICAgICAgICBleGl0X3dpdGhfdXNhZ2Uo
Tm9uZSwgZGlzcGxheV9oZWxwKQotICAgICAgICBlbGlmIG9wdCA9PSAnLS1vdXRwdXQnOgotICAg
ICAgICAgICAgaWYgbm90IHZhbCBpbiAoJ2VtYWNzJywgJ3ZzNycpOgotICAgICAgICAgICAgICAg
IGV4aXRfd2l0aF91c2FnZSgnVGhlIG9ubHkgYWxsb3dlZCBvdXRwdXQgZm9ybWF0cyBhcmUgZW1h
Y3MgYW5kIHZzNy4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5X2hl
bHApCi0gICAgICAgICAgICBvdXRwdXRfZm9ybWF0ID0gdmFsCi0gICAgICAgIGVsaWYgb3B0ID09
ICctLXZlcmJvc2UnOgotICAgICAgICAgICAgdmVyYm9zaXR5ID0gaW50KHZhbCkKLSAgICAgICAg
ZWxpZiBvcHQgPT0gJy0tZmlsdGVyJzoKLSAgICAgICAgICAgIGZpbHRlcnMgPSB2YWwKLSAgICAg
ICAgICAgIGlmIG5vdCBmaWx0ZXJzOgotICAgICAgICAgICAgICAgIGV4aXRfd2l0aF9jYXRlZ29y
aWVzKGRpc3BsYXlfaGVscCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGFkZGl0aW9uYWxf
ZmxhZ192YWx1ZXNbb3B0XSA9IHZhbAotCi0gICAgX3NldF9vdXRwdXRfZm9ybWF0KG91dHB1dF9m
b3JtYXQpCi0gICAgX3NldF92ZXJib3NlX2xldmVsKHZlcmJvc2l0eSkKLSAgICBfc2V0X2ZpbHRl
cnMoZmlsdGVycykKLQotICAgIHJldHVybiAoZmlsZW5hbWVzLCBhZGRpdGlvbmFsX2ZsYWdfdmFs
dWVzKQotCi0KIGRlZiBjYW5faGFuZGxlKGZpbGVuYW1lKToKICAgICAiIiJDaGVja3MgaWYgdGhp
cyBtb2R1bGUgc3VwcG9ydHMgZm9yIHRoZSBzcGVjaWZpZWQgZmlsZSB0eXBlLgogCkluZGV4OiBT
Y3JpcHRzL21vZHVsZXMvY3BwX3N0eWxlX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNjcmlw
dHMvbW9kdWxlcy9jcHBfc3R5bGVfdW5pdHRlc3QucHkJKHJldmlzaW9uIDUyNDM2KQorKysgU2Ny
aXB0cy9tb2R1bGVzL2NwcF9zdHlsZV91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtNDEs
MTMgKzQxLDE0IEBAIGltcG9ydCByYW5kb20KIGltcG9ydCByZQogaW1wb3J0IHVuaXR0ZXN0CiBp
bXBvcnQgY3BwX3N0eWxlCi0KKyMgRklYTUU6IFJlbW92ZSB0aGUgbmVlZCB0byBpbXBvcnQgc29t
ZXRoaW5nIGZyb20gc3R5bGUuCitmcm9tIHN0eWxlIGltcG9ydCBfU1RZTEVfQ0FURUdPUklFUwog
CiAjIFRoaXMgY2xhc3Mgd29ya3MgYXMgYW4gZXJyb3IgY29sbGVjdG9yIGFuZCByZXBsYWNlcyBj
cHBfc3R5bGUuRXJyb3IKICMgZnVuY3Rpb24gZm9yIHRoZSB1bml0IHRlc3RzLiAgV2UgYWxzbyB2
ZXJpZnkgZWFjaCBjYXRlZ29yeSB3ZSBzZWUKICMgaXMgaW4gY3BwX3N0eWxlLl9TVFlMRV9DQVRF
R09SSUVTLCB0byBoZWxwIGtlZXAgdGhhdCBsaXN0IHVwIHRvIGRhdGUuCiBjbGFzcyBFcnJvckNv
bGxlY3RvcjoKLSAgICBfYWxsX3N0eWxlX2NhdGVnb3JpZXMgPSBjcHBfc3R5bGUuX1NUWUxFX0NB
VEVHT1JJRVMKKyAgICBfYWxsX3N0eWxlX2NhdGVnb3JpZXMgPSBfU1RZTEVfQ0FURUdPUklFUwog
ICAgICMgVGhpcyBhIGxpc3QgaW5jbHVkaW5nIGFsbCBjYXRlZ29yaWVzIHNlZW4gaW4gYW55IHVu
aXQgdGVzdC4KICAgICBfc2Vlbl9zdHlsZV9jYXRlZ29yaWVzID0ge30KIApAQCAtMTU2Nyw4MSAr
MTU2OCw2IEBAIGNsYXNzIENwcFN0eWxlVGVzdChDcHBTdHlsZVRlc3RCYXNlKToKICAgICAgICAg
c2VsZi5hc3NlcnRfbGludCgnaW50IGEgPSA1O1x0Ly8gc2V0IGEgdG8gNScsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ1RhYiBmb3VuZDsgYmV0dGVyIHRvIHVzZSBzcGFjZXMgIFt3aGl0ZXNw
YWNlL3RhYl0gWzFdJykKIAotICAgIGRlZiB0ZXN0X3BhcnNlX2FyZ3VtZW50cyhzZWxmKToKLSAg
ICAgICAgb2xkX3VzYWdlID0gY3BwX3N0eWxlLl9VU0FHRQotICAgICAgICBvbGRfc3R5bGVfY2F0
ZWdvcmllcyA9IGNwcF9zdHlsZS5fU1RZTEVfQ0FURUdPUklFUwotICAgICAgICBvbGRfd2Via2l0
X2ZpbHRlcl9ydWxlcyA9IGNwcF9zdHlsZS5fV0VCS0lUX0ZJTFRFUl9SVUxFUwotICAgICAgICBv
bGRfb3V0cHV0X2Zvcm1hdCA9IGNwcF9zdHlsZS5fY3BwX3N0eWxlX3N0YXRlLm91dHB1dF9mb3Jt
YXQKLSAgICAgICAgb2xkX3ZlcmJvc2VfbGV2ZWwgPSBjcHBfc3R5bGUuX2NwcF9zdHlsZV9zdGF0
ZS52ZXJib3NlX2xldmVsCi0gICAgICAgIG9sZF9maWx0ZXJzID0gY3BwX3N0eWxlLl9jcHBfc3R5
bGVfc3RhdGUuZmlsdGVycwotICAgICAgICB0cnk6Ci0gICAgICAgICAgICAjIERvbid0IHByaW50
IHVzYWdlIGR1cmluZyB0aGUgdGVzdHMsIG9yIGZpbHRlciBjYXRlZ29yaWVzCi0gICAgICAgICAg
ICBjcHBfc3R5bGUuX1VTQUdFID0gJycKLSAgICAgICAgICAgIGNwcF9zdHlsZS5fU1RZTEVfQ0FU
RUdPUklFUyA9IFtdCi0gICAgICAgICAgICBjcHBfc3R5bGUuX1dFQktJVF9GSUxURVJfUlVMRVMg
PSBbXQotCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeXN0ZW1FeGl0LCBjcHBfc3R5
bGUucGFyc2VfYXJndW1lbnRzLCBbJy0tYmFkb3B0J10pCi0gICAgICAgICAgICBzZWxmLmFzc2Vy
dFJhaXNlcyhTeXN0ZW1FeGl0LCBjcHBfc3R5bGUucGFyc2VfYXJndW1lbnRzLCBbJy0taGVscCdd
KQotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3lzdGVtRXhpdCwgY3BwX3N0eWxlLnBh
cnNlX2FyZ3VtZW50cywgWyctLWZpbHRlcj0nXSkKLSAgICAgICAgICAgICMgVGhpcyBpcyBpbGxl
Z2FsIGJlY2F1c2UgYWxsIGZpbHRlcnMgbXVzdCBzdGFydCB3aXRoICsgb3IgLQotICAgICAgICAg
ICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY3BwX3N0eWxlLnBhcnNlX2FyZ3VtZW50
cywgWyctLWZpbHRlcj1mb28nXSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVl
RXJyb3IsIGNwcF9zdHlsZS5wYXJzZV9hcmd1bWVudHMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBbJy0tZmlsdGVyPSthLGIsLWMnXSkKLQotICAgICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbHMoKFsnZm9vLmNwcCddLCB7fSksIGNwcF9zdHlsZS5wYXJzZV9hcmd1bWVudHMoWydmb28u
Y3BwJ10pKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMob2xkX291dHB1dF9mb3JtYXQs
IGNwcF9zdHlsZS5fY3BwX3N0eWxlX3N0YXRlLm91dHB1dF9mb3JtYXQpCi0gICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFscyhvbGRfdmVyYm9zZV9sZXZlbCwgY3BwX3N0eWxlLl9jcHBfc3R5bGVf
c3RhdGUudmVyYm9zZV9sZXZlbCkKLQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoKFtd
LCB7fSksIGNwcF9zdHlsZS5wYXJzZV9hcmd1bWVudHMoW10pKQotICAgICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbHMoKFtdLCB7fSksIGNwcF9zdHlsZS5wYXJzZV9hcmd1bWVudHMoWyctLXY9MCdd
KSkKLQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoKFsnZm9vLmNwcCddLCB7fSksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHBfc3R5bGUucGFyc2VfYXJndW1lbnRzKFsn
LS12PTEnLCAnZm9vLmNwcCddKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDEsIGNw
cF9zdHlsZS5fY3BwX3N0eWxlX3N0YXRlLnZlcmJvc2VfbGV2ZWwpCi0gICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFscygoWydmb28uaCddLCB7fSksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjcHBfc3R5bGUucGFyc2VfYXJndW1lbnRzKFsnLS12PTMnLCAnZm9vLmgnXSkpCi0gICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFscygzLCBjcHBfc3R5bGUuX2NwcF9zdHlsZV9zdGF0ZS52
ZXJib3NlX2xldmVsKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoKFsnZm9vLmNwcCdd
LCB7fSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHBfc3R5bGUucGFyc2VfYXJn
dW1lbnRzKFsnLS12ZXJib3NlPTUnLCAnZm9vLmNwcCddKSkKLSAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWxzKDUsIGNwcF9zdHlsZS5fY3BwX3N0eWxlX3N0YXRlLnZlcmJvc2VfbGV2ZWwpCi0g
ICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY3BwX3N0eWxlLnBhcnNlX2FyZ3VtZW50cywgWyctLXY9ZicsICdmb28u
Y3BwJ10pCi0KLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKChbJ2Zvby5jcHAnXSwge30p
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3BwX3N0eWxlLnBhcnNlX2FyZ3VtZW50
cyhbJy0tb3V0cHV0PWVtYWNzJywgJ2Zvby5jcHAnXSkpCi0gICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFscygnZW1hY3MnLCBjcHBfc3R5bGUuX2NwcF9zdHlsZV9zdGF0ZS5vdXRwdXRfZm9ybWF0
KQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoKFsnZm9vLmgnXSwge30pLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY3BwX3N0eWxlLnBhcnNlX2FyZ3VtZW50cyhbJy0tb3V0
cHV0PXZzNycsICdmb28uaCddKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCd2czcn
LCBjcHBfc3R5bGUuX2NwcF9zdHlsZV9zdGF0ZS5vdXRwdXRfZm9ybWF0KQotICAgICAgICAgICAg
c2VsZi5hc3NlcnRSYWlzZXMoU3lzdGVtRXhpdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNwcF9zdHlsZS5wYXJzZV9hcmd1bWVudHMsIFsnLS1vdXRwdXQ9YmxhaCcsICdmb28uY3Bw
J10pCi0KLSAgICAgICAgICAgIGZpbHQgPSAnLSwrd2hpdGVzcGFjZSwtd2hpdGVzcGFjZS9pbmRl
bnQnCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscygoWydmb28uaCddLCB7fSksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjcHBfc3R5bGUucGFyc2VfYXJndW1lbnRzKFsnLS1m
aWx0ZXI9JytmaWx0LCAnZm9vLmgnXSkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhb
Jy0nLCAnK3doaXRlc3BhY2UnLCAnLXdoaXRlc3BhY2UvaW5kZW50J10sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjcHBfc3R5bGUuX2NwcF9zdHlsZV9zdGF0ZS5maWx0ZXJzKQotCi0g
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscygoWydmb28uY3BwJywgJ2Zvby5oJ10sIHt9KSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwcF9zdHlsZS5wYXJzZV9hcmd1bWVudHMo
Wydmb28uY3BwJywgJ2Zvby5oJ10pKQotCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscygo
Wydmb28uY3BwJ10sIHsnLS1mb28nOiAnJ30pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY3BwX3N0eWxlLnBhcnNlX2FyZ3VtZW50cyhbJy0tZm9vJywgJ2Zvby5jcHAnXSwgWydmb28n
XSkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscygoWydmb28uY3BwJ10sIHsnLS1mb28n
OiAnYmFyJ30pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3BwX3N0eWxlLnBhcnNl
X2FyZ3VtZW50cyhbJy0tZm9vPWJhcicsICdmb28uY3BwJ10sIFsnZm9vPSddKSkKLSAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWxzKChbJ2Zvby5jcHAnXSwge30pLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY3BwX3N0eWxlLnBhcnNlX2FyZ3VtZW50cyhbJ2Zvby5jcHAnXSwgWydm
b289J10pKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3lzdGVtRXhpdCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNwcF9zdHlsZS5wYXJzZV9hcmd1bWVudHMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBbJy0tZm9vdHlwbz1iYXInLCAnZm9vLmNwcCddLCBb
J2Zvbz0nXSkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGNwcF9zdHlsZS5fVVNBR0Ug
PSBvbGRfdXNhZ2UKLSAgICAgICAgICAgIGNwcF9zdHlsZS5fU1RZTEVfQ0FURUdPUklFUyA9IG9s
ZF9zdHlsZV9jYXRlZ29yaWVzCi0gICAgICAgICAgICBjcHBfc3R5bGUuX1dFQktJVF9GSUxURVJf
UlVMRVMgPSBvbGRfd2Via2l0X2ZpbHRlcl9ydWxlcwotICAgICAgICAgICAgY3BwX3N0eWxlLl9j
cHBfc3R5bGVfc3RhdGUub3V0cHV0X2Zvcm1hdCA9IG9sZF9vdXRwdXRfZm9ybWF0Ci0gICAgICAg
ICAgICBjcHBfc3R5bGUuX2NwcF9zdHlsZV9zdGF0ZS52ZXJib3NlX2xldmVsID0gb2xkX3ZlcmJv
c2VfbGV2ZWwKLSAgICAgICAgICAgIGNwcF9zdHlsZS5fY3BwX3N0eWxlX3N0YXRlLmZpbHRlcnMg
PSBvbGRfZmlsdGVycwotCiAgICAgZGVmIHRlc3RfZmlsdGVyKHNlbGYpOgogICAgICAgICBvbGRf
ZmlsdGVycyA9IGNwcF9zdHlsZS5fY3BwX3N0eWxlX3N0YXRlLmZpbHRlcnMKICAgICAgICAgdHJ5
OgpJbmRleDogU2NyaXB0cy9tb2R1bGVzL3N0eWxlLnB5Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNjcmlwdHMv
bW9kdWxlcy9zdHlsZS5weQkocmV2aXNpb24gNTI0MzYpCisrKyBTY3JpcHRzL21vZHVsZXMvc3R5
bGUucHkJKHdvcmtpbmcgY29weSkKQEAgLTMxLDI0ICszMSwyODEgQEAKICMgRklYTUU6IE1vdmUg
bW9yZSBjb2RlIGZyb20gY3BwX3N0eWxlIHRvIGhlcmUuCiAjIGNoZWNrLXdlYmtpdC1zdHlsZSBz
aG91bGQgbm90IHJlZmVyIGNwcF9zdHlsZSBkaXJlY3RseS4KIAoraW1wb3J0IGdldG9wdAogaW1w
b3J0IG9zLnBhdGgKK2ltcG9ydCBzeXMKIAotaW1wb3J0IG1vZHVsZXMuY3BwX3N0eWxlIGFzIGNw
cF9zdHlsZQotaW1wb3J0IG1vZHVsZXMudGV4dF9zdHlsZSBhcyB0ZXh0X3N0eWxlCi1mcm9tIG1v
ZHVsZXMuZGlmZl9wYXJzZXIgaW1wb3J0IERpZmZQYXJzZXIKK2ltcG9ydCBjcHBfc3R5bGUKK2lt
cG9ydCB0ZXh0X3N0eWxlCitmcm9tIGRpZmZfcGFyc2VyIGltcG9ydCBEaWZmUGFyc2VyCisKKwor
IyBEZWZhdWx0IG9wdGlvbnMKK19ERUZBVUxUX1ZFUkJPU0lUWSA9IDEKK19ERUZBVUxUX09VVFBV
VF9GT1JNQVQgPSAnZW1hY3MnCisKKworIyBGSVhNRTogRm9yIHN0eWxlIGNhdGVnb3JpZXMgd2Ug
d2lsbCBuZXZlciB3YW50IHRvIGhhdmUsIHJlbW92ZSB0aGVtLgorIyAgICAgICAgRm9yIGNhdGVn
b3JpZXMgZm9yIHdoaWNoIHdlIHdhbnQgdG8gaGF2ZSBzaW1pbGFyIGZ1bmN0aW9uYWxpdHksCisj
ICAgICAgICBtb2RpZnkgdGhlIGltcGxlbWVudGF0aW9uIGFuZCBlbmFibGUgdGhlbS4KKyMgRklY
TUU6IEFkZCBhIHVuaXQgdGVzdCB0byBlbnN1cmUgdGhlIGNvcnJlc3BvbmRpbmcgY2F0ZWdvcmll
cworIyAgICAgICAgYXJlIGVsZW1lbnRzIG9mIF9TVFlMRV9DQVRFR09SSUVTLgorIworIyBGb3Ig
dW5hbWJpZ3VvdXMgdGVybWlub2xvZ3ksIHdlIHVzZSAiZmlsdGVyIHJ1bGUiIHJhdGhlciB0aGFu
ICJmaWx0ZXIiCisjIGZvciBhbiBpbmRpdmlkdWFsIGJvb2xlYW4gZmlsdGVyIGZsYWcgbGlrZSAi
K2ZvbyIuIFRoaXMgYWxsb3dzIHVzIHRvIAorIyByZXNlcnZlICJmaWx0ZXIiIGZvciB3aGF0IG9u
ZSBnZXRzIGJ5IGNvbGxlY3RpdmVseSBhcHBseWluZyBhbGwgb2YgCisjIHRoZSBmaWx0ZXIgcnVs
ZXMgYXMgc3BlY2lmaWVkIGJ5IGEgLS1maWx0ZXIgZmxhZy4KK19XRUJLSVRfRklMVEVSX1JVTEVT
ID0gWworICAgICctYnVpbGQvZW5kaWZfY29tbWVudCcsCisgICAgJy1idWlsZC9pbmNsdWRlX3do
YXRfeW91X3VzZScsICAjIDxzdHJpbmc+IGZvciBzdGQ6OnN0cmluZworICAgICctYnVpbGQvc3Rv
cmFnZV9jbGFzcycsICAjIGNvbnN0IHN0YXRpYworICAgICctbGVnYWwvY29weXJpZ2h0JywKKyAg
ICAnLXJlYWRhYmlsaXR5L211bHRpbGluZV9jb21tZW50JywKKyAgICAnLXJlYWRhYmlsaXR5L2Jy
YWNlcycsICAjIGludCBmb28oKSB7fTsKKyAgICAnLXJlYWRhYmlsaXR5L2ZuX3NpemUnLAorICAg
ICctcmVhZGFiaWxpdHkvY2FzdGluZycsCisgICAgJy1yZWFkYWJpbGl0eS9mdW5jdGlvbicsCisg
ICAgJy1ydW50aW1lL2FycmF5cycsICAjIHZhcmlhYmxlIGxlbmd0aCBhcnJheQorICAgICctcnVu
dGltZS9jYXN0aW5nJywKKyAgICAnLXJ1bnRpbWUvc2l6ZW9mJywKKyAgICAnLXJ1bnRpbWUvZXhw
bGljaXQnLCAgIyBleHBsaWNpdAorICAgICctcnVudGltZS92aXJ0dWFsJywgICMgdmlydHVhbCBk
dG9yCisgICAgJy1ydW50aW1lL3ByaW50ZicsCisgICAgJy1ydW50aW1lL3RocmVhZHNhZmVfZm4n
LAorICAgICctcnVudGltZS9ydHRpJywKKyAgICAnLXdoaXRlc3BhY2UvYmxhbmtfbGluZScsCisg
ICAgJy13aGl0ZXNwYWNlL2VuZF9vZl9saW5lJywKKyAgICAnLXdoaXRlc3BhY2UvbGFiZWxzJywK
KyAgICBdCisKKworIyBXZSBjYXRlZ29yaXplIGVhY2ggc3R5bGUgcnVsZSB3ZSBwcmludC4gIEhl
cmUgYXJlIHRoZSBjYXRlZ29yaWVzLgorIyBXZSB3YW50IGFuIGV4cGxpY2l0IGxpc3Qgc28gd2Ug
Y2FuIGxpc3QgdGhlbSBhbGwgaW4gY3BwX3N0eWxlIC0tZmlsdGVyPS4KKyMgSWYgeW91IGFkZCBh
IG5ldyBlcnJvciBtZXNzYWdlIHdpdGggYSBuZXcgY2F0ZWdvcnksIGFkZCBpdCB0byB0aGUgbGlz
dAorIyBoZXJlISAgY3BwX3N0eWxlX3VuaXR0ZXN0LnB5IHNob3VsZCB0ZWxsIHlvdSBpZiB5b3Ug
Zm9yZ2V0IHRvIGRvIHRoaXMuCitfU1RZTEVfQ0FURUdPUklFUyA9IFsKKyAgICAnYnVpbGQvY2xh
c3MnLAorICAgICdidWlsZC9kZXByZWNhdGVkJywKKyAgICAnYnVpbGQvZW5kaWZfY29tbWVudCcs
CisgICAgJ2J1aWxkL2ZvcndhcmRfZGVjbCcsCisgICAgJ2J1aWxkL2hlYWRlcl9ndWFyZCcsCisg
ICAgJ2J1aWxkL2luY2x1ZGUnLAorICAgICdidWlsZC9pbmNsdWRlX29yZGVyJywKKyAgICAnYnVp
bGQvaW5jbHVkZV93aGF0X3lvdV91c2UnLAorICAgICdidWlsZC9uYW1lc3BhY2VzJywKKyAgICAn
YnVpbGQvcHJpbnRmX2Zvcm1hdCcsCisgICAgJ2J1aWxkL3N0b3JhZ2VfY2xhc3MnLAorICAgICdi
dWlsZC91c2luZ19zdGQnLAorICAgICdsZWdhbC9jb3B5cmlnaHQnLAorICAgICdyZWFkYWJpbGl0
eS9icmFjZXMnLAorICAgICdyZWFkYWJpbGl0eS9jYXN0aW5nJywKKyAgICAncmVhZGFiaWxpdHkv
Y2hlY2snLAorICAgICdyZWFkYWJpbGl0eS9jb21wYXJpc29uX3RvX3plcm8nLAorICAgICdyZWFk
YWJpbGl0eS9jb25zdHJ1Y3RvcnMnLAorICAgICdyZWFkYWJpbGl0eS9jb250cm9sX2Zsb3cnLAor
ICAgICdyZWFkYWJpbGl0eS9mbl9zaXplJywKKyAgICAncmVhZGFiaWxpdHkvZnVuY3Rpb24nLAor
ICAgICdyZWFkYWJpbGl0eS9tdWx0aWxpbmVfY29tbWVudCcsCisgICAgJ3JlYWRhYmlsaXR5L211
bHRpbGluZV9zdHJpbmcnLAorICAgICdyZWFkYWJpbGl0eS9uYW1pbmcnLAorICAgICdyZWFkYWJp
bGl0eS9udWxsJywKKyAgICAncmVhZGFiaWxpdHkvc3RyZWFtcycsCisgICAgJ3JlYWRhYmlsaXR5
L3RvZG8nLAorICAgICdyZWFkYWJpbGl0eS91dGY4JywKKyAgICAncnVudGltZS9hcnJheXMnLAor
ICAgICdydW50aW1lL2Nhc3RpbmcnLAorICAgICdydW50aW1lL2V4cGxpY2l0JywKKyAgICAncnVu
dGltZS9pbml0JywKKyAgICAncnVudGltZS9pbnQnLAorICAgICdydW50aW1lL2ludmFsaWRfaW5j
cmVtZW50JywKKyAgICAncnVudGltZS9tYXhfbWluX21hY3JvcycsCisgICAgJ3J1bnRpbWUvbWVt
c2V0JywKKyAgICAncnVudGltZS9wcmludGYnLAorICAgICdydW50aW1lL3ByaW50Zl9mb3JtYXQn
LAorICAgICdydW50aW1lL3JlZmVyZW5jZXMnLAorICAgICdydW50aW1lL3J0dGknLAorICAgICdy
dW50aW1lL3NpemVvZicsCisgICAgJ3J1bnRpbWUvc3RyaW5nJywKKyAgICAncnVudGltZS90aHJl
YWRzYWZlX2ZuJywKKyAgICAncnVudGltZS92aXJ0dWFsJywKKyAgICAnd2hpdGVzcGFjZS9ibGFu
a19saW5lJywKKyAgICAnd2hpdGVzcGFjZS9icmFjZXMnLAorICAgICd3aGl0ZXNwYWNlL2NvbW1h
JywKKyAgICAnd2hpdGVzcGFjZS9jb21tZW50cycsCisgICAgJ3doaXRlc3BhY2UvZGVjbGFyYXRp
b24nLAorICAgICd3aGl0ZXNwYWNlL2VuZF9vZl9saW5lJywKKyAgICAnd2hpdGVzcGFjZS9lbmRp
bmdfbmV3bGluZScsCisgICAgJ3doaXRlc3BhY2UvaW5kZW50JywKKyAgICAnd2hpdGVzcGFjZS9s
YWJlbHMnLAorICAgICd3aGl0ZXNwYWNlL2xpbmVfbGVuZ3RoJywKKyAgICAnd2hpdGVzcGFjZS9u
ZXdsaW5lJywKKyAgICAnd2hpdGVzcGFjZS9vcGVyYXRvcnMnLAorICAgICd3aGl0ZXNwYWNlL3Bh
cmVucycsCisgICAgJ3doaXRlc3BhY2Uvc2VtaWNvbG9uJywKKyAgICAnd2hpdGVzcGFjZS90YWIn
LAorICAgICd3aGl0ZXNwYWNlL3RvZG8nLAorICAgIF0KKworCitfVVNBR0UgPSAiIiIKK1N5bnRh
eDogJShwcm9ncmFtX25hbWUpcyBbLS12ZXJib3NlPSNdIFstLWdpdC1jb21taXQ9PFNpbmdsZUNv
bW1pdD5dIFstLW91dHB1dD12czddCisgICAgICAgIFstLWZpbHRlcj0teCwreSwuLi5dIFtmaWxl
XSAuLi4KKworICBUaGUgc3R5bGUgZ3VpZGVsaW5lcyB0aGlzIHRyaWVzIHRvIGZvbGxvdyBhcmUg
aGVyZToKKyAgICBodHRwOi8vd2Via2l0Lm9yZy9jb2RpbmcvY29kaW5nLXN0eWxlLmh0bWwKKwor
ICBFdmVyeSBzdHlsZSBlcnJvciBpcyBnaXZlbiBhIGNvbmZpZGVuY2Ugc2NvcmUgZnJvbSAxLTUs
IHdpdGggNSBtZWFuaW5nCisgIHdlIGFyZSBjZXJ0YWluIG9mIHRoZSBwcm9ibGVtLCBhbmQgMSBt
ZWFuaW5nIGl0IGNvdWxkIGJlIGEgbGVnaXRpbWF0ZQorICBjb25zdHJ1Y3QuICBUaGlzIGNhbiBt
aXNzIHNvbWUgZXJyb3JzIGFuZCBkb2VzIG5vdCBzdWJzdGl0dXRlIGZvcgorICBjb2RlIHJldmll
dy4KKworICBUbyBwcmV2ZW50IHNwZWNpZmljIGxpbmVzIGZyb20gYmVpbmcgbGludGVkLCBhZGQg
YSAnLy8gTk9MSU5UJyBjb21tZW50IHRvIHRoZQorICBlbmQgb2YgdGhlIGxpbmUuCisKKyAgTGlu
dGVkIGV4dGVuc2lvbnMgYXJlIC5jcHAsIC5jIGFuZCAuaC4gIE90aGVyIGZpbGUgdHlwZXMgYXJl
IGlnbm9yZWQuCisKKyAgVGhlIGZpbGUgcGFyYW1ldGVyIGlzIG9wdGlvbmFsIGFuZCBhY2NlcHRz
IG11bHRpcGxlIGZpbGVzLiAgTGVhdmluZworICBvdXQgdGhlIGZpbGUgcGFyYW1ldGVyIGFwcGxp
ZXMgdGhlIGNoZWNrIHRvIGFsbCBmaWxlcyBjb25zaWRlcmVkIGNoYW5nZWQKKyAgYnkgeW91ciBz
b3VyY2UgY29udHJvbCBtYW5hZ2VtZW50IHN5c3RlbS4KKworICBGbGFnczoKKworICAgIHZlcmJv
c2U9IworICAgICAgQSBudW1iZXIgMC01IHRvIHJlc3RyaWN0IGVycm9ycyB0byBjZXJ0YWluIHZl
cmJvc2l0eSBsZXZlbHMuCisgICAgICBEZWZhdWx0cyB0byAlKGRlZmF1bHRfdmVyYm9zaXR5KXMu
CisKKyAgICBnaXQtY29tbWl0PTxTaW5nbGVDb21taXQ+CisgICAgICBDaGVja3MgdGhlIHN0eWxl
IG9mIGV2ZXJ5dGhpbmcgZnJvbSB0aGUgZ2l2ZW4gY29tbWl0IHRvIHRoZSBsb2NhbCB0cmVlLgor
CisgICAgb3V0cHV0PXZzNworICAgICAgVGhlIG91dHB1dCBmb3JtYXQsIHdoaWNoIG1heSBiZSBv
bmUgb2YKKyAgICAgICAgZW1hY3MgOiB0byBlYXNlIGVtYWNzIHBhcnNpbmcKKyAgICAgICAgdnM3
ICAgOiBjb21wYXRpYmxlIHdpdGggVmlzdWFsIFN0dWRpbworICAgICAgRGVmYXVsdHMgdG8gIiUo
ZGVmYXVsdF9vdXRwdXRfZm9ybWF0KXMiLiBPdGhlciBmb3JtYXRzIGFyZSB1bnN1cHBvcnRlZC4K
KworICAgIGZpbHRlcj0teCwreSwuLi4KKyAgICAgIEEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2Yg
Ym9vbGVhbiBmaWx0ZXIgcnVsZXMgdXNlZCB0byBmaWx0ZXIKKyAgICAgIHdoaWNoIGNhdGVnb3Jp
ZXMgb2Ygc3R5bGUgZ3VpZGVsaW5lcyB0byBjaGVjay4gIFRoZSBzY3JpcHQgY2hlY2tzCisgICAg
ICBhIGNhdGVnb3J5IGlmIHRoZSBjYXRlZ29yeSBwYXNzZXMgdGhlIGZpbHRlciBydWxlcywgYXMg
Zm9sbG93cy4KKworICAgICAgQW55IHdlYmtpdCBjYXRlZ29yeSBzdGFydHMgb3V0IHBhc3Npbmcu
ICBBbGwgZmlsdGVyIHJ1bGVzIGFyZSB0aGVuCisgICAgICBldmFsdWF0ZWQgbGVmdCB0byByaWdo
dCwgd2l0aCBsYXRlciBydWxlcyB0YWtpbmcgcHJlY2VkZW5jZS4gIEZvcgorICAgICAgZXhhbXBs
ZSwgdGhlIHJ1bGUgIitmb28iIHBhc3NlcyBhbnkgY2F0ZWdvcnkgdGhhdCBzdGFydHMgd2l0aCAi
Zm9vIiwKKyAgICAgIGFuZCAiLWZvbyIgZmFpbHMgYW55IHN1Y2ggY2F0ZWdvcnkuICBUaGUgZmls
dGVyIGlucHV0ICItd2hpdGVzcGFjZSwKKyAgICAgICt3aGl0ZXNwYWNlL2JyYWNlcyIgZmFpbHMg
dGhlIGNhdGVnb3J5ICJ3aGl0ZXNwYWNlL3RhYiIgYW5kIHBhc3NlcworICAgICAgIndoaXRlc3Bh
Y2UvYnJhY2VzIi4KKworICAgICAgRXhhbXBsZXM6IC0tZmlsdGVyPS13aGl0ZXNwYWNlLCt3aGl0
ZXNwYWNlL2JyYWNlcworICAgICAgICAgICAgICAgIC0tZmlsdGVyPS13aGl0ZXNwYWNlLC1ydW50
aW1lL3ByaW50ZiwrcnVudGltZS9wcmludGZfZm9ybWF0CisgICAgICAgICAgICAgICAgLS1maWx0
ZXI9LSwrYnVpbGQvaW5jbHVkZV93aGF0X3lvdV91c2UKKworICAgICAgQ2F0ZWdvcnkgbmFtZXMg
YXBwZWFyIGluIGVycm9yIG1lc3NhZ2VzIGluIGJyYWNrZXRzLCBmb3IgZXhhbXBsZQorICAgICAg
W3doaXRlc3BhY2UvaW5kZW50XS4gIFRvIHNlZSBhIGxpc3Qgb2YgYWxsIGNhdGVnb3JpZXMgYXZh
aWxhYmxlIHRvCisgICAgICAlKHByb2dyYW1fbmFtZSlzLCBhbG9uZyB3aXRoIHdoaWNoIGFyZSBl
bmFibGVkIGJ5IGRlZmF1bHQsIHBhc3MKKyAgICAgIHRoZSBlbXB0eSBmaWx0ZXIgYXMgZm9sbG93
czoKKyAgICAgICAgIC0tZmlsdGVyPQorIiIiICUgeworICAgICdwcm9ncmFtX25hbWUnOiBvcy5w
YXRoLmJhc2VuYW1lKHN5cy5hcmd2WzBdKSwKKyAgICAnZGVmYXVsdF92ZXJib3NpdHknOiBfREVG
QVVMVF9WRVJCT1NJVFksCisgICAgJ2RlZmF1bHRfb3V0cHV0X2Zvcm1hdCc6IF9ERUZBVUxUX09V
VFBVVF9GT1JNQVQKKyAgICB9CiAKIAogZGVmIHVzZV93ZWJraXRfc3R5bGVzKCk6CiAgICAgIiIi
Q29uZmlndXJlcyB0aGlzIG1vZHVsZSBmb3IgV2ViS2l0IHN0eWxlLiIiIgotICAgIGNwcF9zdHls
ZS5fREVGQVVMVF9GSUxURVJfUlVMRVMgPSBjcHBfc3R5bGUuX1dFQktJVF9GSUxURVJfUlVMRVMK
KyAgICBjcHBfc3R5bGUuX0RFRkFVTFRfRklMVEVSX1JVTEVTID0gX1dFQktJVF9GSUxURVJfUlVM
RVMKKworCitkZWYgZXhpdF93aXRoX3VzYWdlKGVycm9yX21lc3NhZ2UsIGRpc3BsYXlfaGVscD1G
YWxzZSk6CisgICAgIiIiRXhpdCBhbmQgcHJpbnQgYSB1c2FnZSBzdHJpbmcgd2l0aCBhbiBvcHRp
b25hbCBlcnJvciBtZXNzYWdlLgorCisgICAgQXJnczoKKyAgICAgIGVycm9yX21lc3NhZ2U6IFRo
ZSBvcHRpb25hbCBlcnJvciBtZXNzYWdlLgorICAgICAgZGlzcGxheV9oZWxwOiBXaGV0aGVyIHRv
IGRpc3BsYXkgaGVscCBvdXRwdXQuIFN1cHByZXNzaW5nIGhlbHAKKyAgICAgICAgICAgICAgICAg
ICAgb3V0cHV0IGlzIHVzZWZ1bCBmb3IgdW5pdCB0ZXN0cy4KKyAgICAiIiIKKyAgICBpZiBkaXNw
bGF5X2hlbHA6CisgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoX1VTQUdFKQorICAgIGlmIGVycm9y
X21lc3NhZ2U6CisgICAgICAgIHN5cy5leGl0KCdcbkZBVEFMIEVSUk9SOiAnICsgZXJyb3JfbWVz
c2FnZSkKKyAgICBlbHNlOgorICAgICAgICBzeXMuZXhpdCgxKQorCisKK2RlZiBleGl0X3dpdGhf
Y2F0ZWdvcmllcyhkaXNwbGF5X2hlbHA9RmFsc2UpOgorICAgICIiIkV4aXQgYW5kIHByaW50IGFs
bCBzdHlsZSBjYXRlZ29yaWVzLCBhbG9uZyB3aXRoIHRoZSBkZWZhdWx0IGZpbHRlci4KKworICAg
IFRoZXNlIGNhdGVnb3J5IG5hbWVzIGFwcGVhciBpbiBlcnJvciBtZXNzYWdlcy4gIFRoZXkgY2Fu
IGJlIGZpbHRlcmVkCisgICAgdXNpbmcgdGhlIC0tZmlsdGVyIGZsYWcuCisKKyAgICBBcmdzOgor
ICAgICAgZGlzcGxheV9oZWxwOiBXaGV0aGVyIHRvIGRpc3BsYXkgaGVscCBvdXRwdXQuIFN1cHBy
ZXNzaW5nIGhlbHAKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0IGlzIHVzZWZ1bCBmb3IgdW5p
dCB0ZXN0cy4KKyAgICAiIiIKKyAgICBpZiBkaXNwbGF5X2hlbHA6CisgICAgICAgIHN5cy5zdGRl
cnIud3JpdGUoJ1xuQWxsIGNhdGVnb3JpZXM6XG4nKQorICAgICAgICBmb3IgY2F0ZWdvcnkgaW4g
c29ydGVkKF9TVFlMRV9DQVRFR09SSUVTKToKKyAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUo
JyAgICAnICsgY2F0ZWdvcnkgKyAnXG4nKQorCisgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJ1xu
RGVmYXVsdCBmaWx0ZXIgcnVsZXMqKjpcbicpCisgICAgICAgIGZvciBmaWx0ZXJfcnVsZSBpbiBz
b3J0ZWQoX1dFQktJVF9GSUxURVJfUlVMRVMpOgorICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0
ZSgnICAgICcgKyBmaWx0ZXJfcnVsZSArICdcbicpCisgICAgICAgIHN5cy5zdGRlcnIud3JpdGUo
J1xuKipUaGUgY29tbWFuZCBhbHdheXMgZXZhbHVhdGVzIHRoZSBhYm92ZSAnCisgICAgICAgICAg
ICAgICAgICAgICAgICAgJ3J1bGVzLCBhbmQgYmVmb3JlIGFueSAtLWZpbHRlciBmbGFnLlxuXG4n
KQorCisgICAgc3lzLmV4aXQoMCkKIAogCiBkZWYgcGFyc2VfYXJndW1lbnRzKGFyZ3MsIGFkZGl0
aW9uYWxfZmxhZ3M9W10sIGRpc3BsYXlfaGVscD1GYWxzZSk6CiAgICAgIiIiUGFyc2VzIHRoZSBj
b21tYW5kIGxpbmUgYXJndW1lbnRzLgogCi0gICAgU2VlIGNwcF9zdHlsZS5wYXJzZV9hcmd1bWVu
dHMoKSBmb3IgZGV0YWlscy4KKyAgICBUaGlzIG1heSBzZXQgdGhlIG91dHB1dCBmb3JtYXQgYW5k
IHZlcmJvc2l0eSBsZXZlbCBhcyBzaWRlLWVmZmVjdHMuCisKKyAgICBBcmdzOgorICAgICAgYXJn
czogVGhlIGNvbW1hbmQgbGluZSBhcmd1bWVudHM6CisgICAgICBhZGRpdGlvbmFsX2ZsYWdzOiBB
IGxpc3Qgb2Ygc3RyaW5ncyB3aGljaCBzcGVjaWZpZXMgZmxhZ3Mgd2UgYWxsb3cuCisgICAgICBk
aXNwbGF5X2hlbHA6IFdoZXRoZXIgdG8gZGlzcGxheSBoZWxwIG91dHB1dC4gU3VwcHJlc3Npbmcg
aGVscAorICAgICAgICAgICAgICAgICAgICBvdXRwdXQgaXMgdXNlZnVsIGZvciB1bml0IHRlc3Rz
LgorCisgICAgUmV0dXJuczoKKyAgICAgIEEgdHVwbGUgb2YgKGZpbGVuYW1lcywgZmxhZ3MpCisK
KyAgICAgIGZpbGVuYW1lczogVGhlIGxpc3Qgb2YgZmlsZW5hbWVzIHRvIGxpbnQuCisgICAgICBm
bGFnczogVGhlIGRpY3Qgb2YgdGhlIGZsYWcgbmFtZXMgYW5kIHRoZSBmbGFnIHZhbHVlcy4KICAg
ICAiIiIKLSAgICByZXR1cm4gY3BwX3N0eWxlLnBhcnNlX2FyZ3VtZW50cyhhcmdzLCBhZGRpdGlv
bmFsX2ZsYWdzLCBkaXNwbGF5X2hlbHApCisgICAgZmxhZ3MgPSBbJ2hlbHAnLCAnb3V0cHV0PScs
ICd2ZXJib3NlPScsICdmaWx0ZXI9J10gKyBhZGRpdGlvbmFsX2ZsYWdzCisgICAgYWRkaXRpb25h
bF9mbGFnX3ZhbHVlcyA9IHt9CisgICAgdHJ5OgorICAgICAgICAob3B0cywgZmlsZW5hbWVzKSA9
IGdldG9wdC5nZXRvcHQoYXJncywgJycsIGZsYWdzKQorICAgIGV4Y2VwdCBnZXRvcHQuR2V0b3B0
RXJyb3I6CisgICAgICAgIGV4aXRfd2l0aF91c2FnZSgnSW52YWxpZCBhcmd1bWVudHMuJywgZGlz
cGxheV9oZWxwKQorCisgICAgdmVyYm9zaXR5ID0gX0RFRkFVTFRfVkVSQk9TSVRZCisgICAgb3V0
cHV0X2Zvcm1hdCA9IF9ERUZBVUxUX09VVFBVVF9GT1JNQVQKKyAgICBmaWx0ZXJzID0gJycKKwor
ICAgIGZvciAob3B0LCB2YWwpIGluIG9wdHM6CisgICAgICAgIGlmIG9wdCA9PSAnLS1oZWxwJzoK
KyAgICAgICAgICAgIGV4aXRfd2l0aF91c2FnZShOb25lLCBkaXNwbGF5X2hlbHApCisgICAgICAg
IGVsaWYgb3B0ID09ICctLW91dHB1dCc6CisgICAgICAgICAgICBpZiBub3QgdmFsIGluICgnZW1h
Y3MnLCAndnM3Jyk6CisgICAgICAgICAgICAgICAgZXhpdF93aXRoX3VzYWdlKCdUaGUgb25seSBh
bGxvd2VkIG91dHB1dCBmb3JtYXRzIGFyZSBlbWFjcyBhbmQgdnM3LicsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRpc3BsYXlfaGVscCkKKyAgICAgICAgICAgIG91dHB1dF9mb3Jt
YXQgPSB2YWwKKyAgICAgICAgZWxpZiBvcHQgPT0gJy0tdmVyYm9zZSc6CisgICAgICAgICAgICB2
ZXJib3NpdHkgPSBpbnQodmFsKQorICAgICAgICBlbGlmIG9wdCA9PSAnLS1maWx0ZXInOgorICAg
ICAgICAgICAgZmlsdGVycyA9IHZhbAorICAgICAgICAgICAgaWYgbm90IGZpbHRlcnM6CisgICAg
ICAgICAgICAgICAgZXhpdF93aXRoX2NhdGVnb3JpZXMoZGlzcGxheV9oZWxwKQorICAgICAgICBl
bHNlOgorICAgICAgICAgICAgYWRkaXRpb25hbF9mbGFnX3ZhbHVlc1tvcHRdID0gdmFsCisKKyAg
ICBjcHBfc3R5bGUuX3NldF9vdXRwdXRfZm9ybWF0KG91dHB1dF9mb3JtYXQpCisgICAgY3BwX3N0
eWxlLl9zZXRfdmVyYm9zZV9sZXZlbCh2ZXJib3NpdHkpCisgICAgY3BwX3N0eWxlLl9zZXRfZmls
dGVycyhmaWx0ZXJzKQorCisgICAgcmV0dXJuIChmaWxlbmFtZXMsIGFkZGl0aW9uYWxfZmxhZ192
YWx1ZXMpCiAKIAogZGVmIHByb2Nlc3NfZmlsZShmaWxlbmFtZSk6CkluZGV4OiBTY3JpcHRzL21v
ZHVsZXMvc3R5bGVfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU2NyaXB0cy9tb2R1bGVzL3N0
eWxlX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAwKQorKysgU2NyaXB0cy9tb2R1bGVzL3N0eWxlX3Vu
aXR0ZXN0LnB5CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyNCBAQAorIyEvdXNyL2Jpbi9weXRo
b24KKyMgLSotIGNvZGluZzogdXRmLTg7IC0qLQorIworIyBDb3B5cmlnaHQgKEMpIDIwMDkgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDA5IFRvcmNo
IE1vYmlsZSBJbmMuCisjIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisjICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlz
dHJpYnV0aW9uLgorIyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisiIiJVbml0IHRlc3RzIGZvciBzdHlsZS5weS4i
IiIKKworaW1wb3J0IHVuaXR0ZXN0CisKK2ltcG9ydCBzdHlsZQorIyBGSVhNRTogRWxpbWluYXRl
IGNwcF9zdHlsZSBkZXBlbmRlbmN5LgoraW1wb3J0IGNwcF9zdHlsZQorCisKK2NsYXNzIEFyZ3Vt
ZW50UGFyc2VyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiVGVzdHMgYXJndW1lbnQg
cGFyc2luZy4iIiIKKyAgICBkZWYgdGVzdF9wYXJzZV9hcmd1bWVudHMoc2VsZik6CisgICAgICAg
IG9sZF91c2FnZSA9IHN0eWxlLl9VU0FHRQorICAgICAgICBvbGRfc3R5bGVfY2F0ZWdvcmllcyA9
IHN0eWxlLl9TVFlMRV9DQVRFR09SSUVTCisgICAgICAgIG9sZF93ZWJraXRfZmlsdGVyX3J1bGVz
ID0gc3R5bGUuX1dFQktJVF9GSUxURVJfUlVMRVMKKyAgICAgICAgb2xkX291dHB1dF9mb3JtYXQg
PSBjcHBfc3R5bGUuX2NwcF9zdHlsZV9zdGF0ZS5vdXRwdXRfZm9ybWF0CisgICAgICAgIG9sZF92
ZXJib3NlX2xldmVsID0gY3BwX3N0eWxlLl9jcHBfc3R5bGVfc3RhdGUudmVyYm9zZV9sZXZlbAor
ICAgICAgICBvbGRfZmlsdGVycyA9IGNwcF9zdHlsZS5fY3BwX3N0eWxlX3N0YXRlLmZpbHRlcnMK
KyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBEb24ndCBwcmludCB1c2FnZSBkdXJpbmcgdGhl
IHRlc3RzLCBvciBmaWx0ZXIgY2F0ZWdvcmllcworICAgICAgICAgICAgc3R5bGUuX1VTQUdFID0g
JycKKyAgICAgICAgICAgIHN0eWxlLl9TVFlMRV9DQVRFR09SSUVTID0gW10KKyAgICAgICAgICAg
IHN0eWxlLl9XRUJLSVRfRklMVEVSX1JVTEVTID0gW10KKworICAgICAgICAgICAgc2VsZi5hc3Nl
cnRSYWlzZXMoU3lzdGVtRXhpdCwgc3R5bGUucGFyc2VfYXJndW1lbnRzLCBbJy0tYmFkb3B0J10p
CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeXN0ZW1FeGl0LCBzdHlsZS5wYXJzZV9h
cmd1bWVudHMsIFsnLS1oZWxwJ10pCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeXN0
ZW1FeGl0LCBzdHlsZS5wYXJzZV9hcmd1bWVudHMsIFsnLS1maWx0ZXI9J10pCisgICAgICAgICAg
ICAjIFRoaXMgaXMgaWxsZWdhbCBiZWNhdXNlIGFsbCBmaWx0ZXJzIG11c3Qgc3RhcnQgd2l0aCAr
IG9yIC0KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHN0eWxlLnBh
cnNlX2FyZ3VtZW50cywgWyctLWZpbHRlcj1mb28nXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0
UmFpc2VzKFZhbHVlRXJyb3IsIHN0eWxlLnBhcnNlX2FyZ3VtZW50cywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFsnLS1maWx0ZXI9K2EsYiwtYyddKQorCisgICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFscygoWydmb28uY3BwJ10sIHt9KSwgc3R5bGUucGFyc2VfYXJndW1lbnRzKFsn
Zm9vLmNwcCddKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG9sZF9vdXRwdXRfZm9y
bWF0LCBjcHBfc3R5bGUuX2NwcF9zdHlsZV9zdGF0ZS5vdXRwdXRfZm9ybWF0KQorICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbHMob2xkX3ZlcmJvc2VfbGV2ZWwsIGNwcF9zdHlsZS5fY3BwX3N0
eWxlX3N0YXRlLnZlcmJvc2VfbGV2ZWwpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxz
KChbXSwge30pLCBzdHlsZS5wYXJzZV9hcmd1bWVudHMoW10pKQorICAgICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbHMoKFtdLCB7fSksIHN0eWxlLnBhcnNlX2FyZ3VtZW50cyhbJy0tdj0wJ10pKQor
CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscygoWydmb28uY3BwJ10sIHt9KSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlLnBhcnNlX2FyZ3VtZW50cyhbJy0tdj0xJywg
J2Zvby5jcHAnXSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscygxLCBjcHBfc3R5bGUu
X2NwcF9zdHlsZV9zdGF0ZS52ZXJib3NlX2xldmVsKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbHMoKFsnZm9vLmgnXSwge30pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5
bGUucGFyc2VfYXJndW1lbnRzKFsnLS12PTMnLCAnZm9vLmgnXSkpCisgICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFscygzLCBjcHBfc3R5bGUuX2NwcF9zdHlsZV9zdGF0ZS52ZXJib3NlX2xldmVs
KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoKFsnZm9vLmNwcCddLCB7fSksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZS5wYXJzZV9hcmd1bWVudHMoWyctLXZlcmJv
c2U9NScsICdmb28uY3BwJ10pKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoNSwgY3Bw
X3N0eWxlLl9jcHBfc3R5bGVfc3RhdGUudmVyYm9zZV9sZXZlbCkKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dHlsZS5wYXJzZV9hcmd1bWVudHMsIFsnLS12PWYnLCAnZm9vLmNwcCddKQorCisgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFscygoWydmb28uY3BwJ10sIHt9KSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0eWxlLnBhcnNlX2FyZ3VtZW50cyhbJy0tb3V0cHV0PWVtYWNzJywgJ2Zv
by5jcHAnXSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnZW1hY3MnLCBjcHBfc3R5
bGUuX2NwcF9zdHlsZV9zdGF0ZS5vdXRwdXRfZm9ybWF0KQorICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbHMoKFsnZm9vLmgnXSwge30pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3R5bGUucGFyc2VfYXJndW1lbnRzKFsnLS1vdXRwdXQ9dnM3JywgJ2Zvby5oJ10pKQorICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJ3ZzNycsIGNwcF9zdHlsZS5fY3BwX3N0eWxlX3N0YXRl
Lm91dHB1dF9mb3JtYXQpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeXN0ZW1FeGl0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGUucGFyc2VfYXJndW1lbnRzLCBb
Jy0tb3V0cHV0PWJsYWgnLCAnZm9vLmNwcCddKQorCisgICAgICAgICAgICBmaWx0ID0gJy0sK3do
aXRlc3BhY2UsLXdoaXRlc3BhY2UvaW5kZW50JworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bHMoKFsnZm9vLmgnXSwge30pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGUu
cGFyc2VfYXJndW1lbnRzKFsnLS1maWx0ZXI9JytmaWx0LCAnZm9vLmgnXSkpCisgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFscyhbJy0nLCAnK3doaXRlc3BhY2UnLCAnLXdoaXRlc3BhY2UvaW5k
ZW50J10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHBfc3R5bGUuX2NwcF9zdHls
ZV9zdGF0ZS5maWx0ZXJzKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscygoWydmb28u
Y3BwJywgJ2Zvby5oJ10sIHt9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxl
LnBhcnNlX2FyZ3VtZW50cyhbJ2Zvby5jcHAnLCAnZm9vLmgnXSkpCisKKyAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWxzKChbJ2Zvby5jcHAnXSwgeyctLWZvbyc6ICcnfSksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdHlsZS5wYXJzZV9hcmd1bWVudHMoWyctLWZvbycsICdmb28u
Y3BwJ10sIFsnZm9vJ10pKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoKFsnZm9vLmNw
cCddLCB7Jy0tZm9vJzogJ2Jhcid9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
eWxlLnBhcnNlX2FyZ3VtZW50cyhbJy0tZm9vPWJhcicsICdmb28uY3BwJ10sIFsnZm9vPSddKSkK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKChbJ2Zvby5jcHAnXSwge30pLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGUucGFyc2VfYXJndW1lbnRzKFsnZm9vLmNwcCdd
LCBbJ2Zvbz0nXSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeXN0ZW1FeGl0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGUucGFyc2VfYXJndW1lbnRzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgWyctLWZvb3R5cG89YmFyJywgJ2Zvby5jcHAnXSwg
Wydmb289J10pCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzdHlsZS5fVVNBR0UgPSBv
bGRfdXNhZ2UKKyAgICAgICAgICAgIHN0eWxlLl9TVFlMRV9DQVRFR09SSUVTID0gb2xkX3N0eWxl
X2NhdGVnb3JpZXMKKyAgICAgICAgICAgIHN0eWxlLl9XRUJLSVRfRklMVEVSX1JVTEVTID0gb2xk
X3dlYmtpdF9maWx0ZXJfcnVsZXMKKyAgICAgICAgICAgIGNwcF9zdHlsZS5fY3BwX3N0eWxlX3N0
YXRlLm91dHB1dF9mb3JtYXQgPSBvbGRfb3V0cHV0X2Zvcm1hdAorICAgICAgICAgICAgY3BwX3N0
eWxlLl9jcHBfc3R5bGVfc3RhdGUudmVyYm9zZV9sZXZlbCA9IG9sZF92ZXJib3NlX2xldmVsCisg
ICAgICAgICAgICBjcHBfc3R5bGUuX2NwcF9zdHlsZV9zdGF0ZS5maWx0ZXJzID0gb2xkX2ZpbHRl
cnMKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIGltcG9ydCBzeXMKKworICAg
IHVuaXR0ZXN0Lm1haW4oKQo=
</data>
<flag name="review"
          id="27332"
          type_id="1"
          status="+"
          setter="levin"
    />
    <flag name="commit-queue"
          id="27333"
          type_id="3"
          status="-"
          setter="cjerdonek"
    />
          </attachment>
      

    </bug>

</bugzilla>