<?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>100892</bug_id>
          
          <creation_ts>2012-10-31 14:45:36 -0700</creation_ts>
          <short_desc>Support X-XSS-Protection: report=URL header syntax in XSSAuditor.</short_desc>
          <delta_ts>2012-11-02 11:51:24 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</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>P2</priority>
          <bug_severity>Minor</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Thomas Sepez">tsepez</reporter>
          <assigned_to name="Thomas Sepez">tsepez</assigned_to>
          <cc>abarth</cc>
    
    <cc>dbates</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>755638</commentid>
    <comment_count>0</comment_count>
    <who name="Thomas Sepez">tsepez</who>
    <bug_when>2012-10-31 14:45:36 -0700</bug_when>
    <thetext>This is the tracking bug for a proposed security feature which would allow a violation report to be sent back to a site when the XSSAuditor detects a reflected XSS against it.

The current X-XSS-Protection header syntax is roughly:
    X-XSS-Protection: (0.*|1{;mode=block;})

In other words, a 0 followed by anything disables XSS protection. A 1 optionally followed by &quot;; mode=block&quot; enables protection.

The proposed syntax is roughly:
    X-XSS-Protection: (0.*|1{;mode=block}{;report=.*})

where the report keyword must come last and uses the rest of the header as the reporting URL.  The reporting URL is also restricted to the same origin as the page URL (upgrade from HTTP to HTTPS for reporting permitted), as a defense against site misconfiguration.

The report is JSON and is generated using the same facility as for the X-WebKit-CSP-Report-Only header.  A sample might be:
    { &quot;xss-report&quot;: {
        &quot;request-url&quot;: &quot;http://example.com/vulnerable-page?q=&lt;script&gt;alert(/xss/)&lt;/script&gt;&quot;,
        &quot;request-body&quot;: &quot;&quot;
    }}

request-body would include the POST parameters, if any.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755639</commentid>
    <comment_count>1</comment_count>
    <who name="Thomas Sepez">tsepez</who>
    <bug_when>2012-10-31 14:47:10 -0700</bug_when>
    <thetext>Q1.  Should the same-origin restriction on the reporting URL be lifted?
Q2.  Should there be a way to get a report without having XSSAuditor either rewrite or block the page?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755642</commentid>
    <comment_count>2</comment_count>
      <attachid>171725</attachid>
    <who name="Thomas Sepez">tsepez</who>
    <bug_when>2012-10-31 14:50:05 -0700</bug_when>
    <thetext>Created attachment 171725
Code for discussion

This is the code I put together to evaluate the feature.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755654</commentid>
    <comment_count>3</comment_count>
      <attachid>171725</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-31 15:09:27 -0700</bug_when>
    <thetext>Comment on attachment 171725
Code for discussion

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

&gt; Source/WebCore/html/parser/XSSAuditor.cpp:238
&gt; +                m_reportURL = KURL(m_parser-&gt;document()-&gt;url(), reportURL);

Why not just use document()-&gt;completeURL(reportURL)

&gt; Source/WebCore/html/parser/XSSAuditor.cpp:241
&gt; +                m_notifyReportURL = (m_reportURL.protocolIs(&quot;https&quot;) || m_reportURL.protocol() == m_parser-&gt;document()-&gt;url().protocol())
&gt; +                    &amp;&amp; m_reportURL.host() == m_parser-&gt;document()-&gt;url().host()
&gt; +                    &amp;&amp; m_reportURL.port() == m_parser-&gt;document()-&gt;url().port();

We shouldn&apos;t be doing this sort of comparison manually.  We probably should be calling MixedContentChecker::isMixedContent.  We might need to make that public.

I&apos;m not sure we need the host or port restrictions.  If we do, we should probably have SecurityOrigin tell us about which things are the same origin.

&gt; Source/WebCore/platform/network/HTTPParsers.cpp:382
&gt; +        reportURL = header.substring(pos);

We should probably stop at the first &apos; &apos; or &apos;;&apos; character.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755690</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-31 15:51:18 -0700</bug_when>
    <thetext>&gt; Q1.  Should the same-origin restriction on the reporting URL be lifted?

I think it makes sense to prevent HTTPS pages from sending their reports to HTTP pages.  The MixedContentChecker is a good way to do that.

&gt; Q2.  Should there be a way to get a report without having XSSAuditor either rewrite or block the page?

I think it&apos;s fine to require rewriting or blocking for now.  The feature is on by default, so most folks will run it in rewriting mode.  The folks who turn it off explicitly probably just want the darn thing off.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755694</commentid>
    <comment_count>5</comment_count>
    <who name="Thomas Sepez">tsepez</who>
    <bug_when>2012-10-31 16:00:35 -0700</bug_when>
    <thetext>Well, if we&apos;re going to stop at spaces or semicolons, we should probably accept either ordering of mode= and report=.  More stuff to test though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755699</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-31 16:07:20 -0700</bug_when>
    <thetext>That&apos;s probably a good idea anyway since that&apos;s how most HTTP headers work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755744</commentid>
    <comment_count>7</comment_count>
      <attachid>171745</attachid>
    <who name="Thomas Sepez">tsepez</who>
    <bug_when>2012-10-31 17:23:17 -0700</bug_when>
    <thetext>Created attachment 171745
More code for discussion</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755915</commentid>
    <comment_count>8</comment_count>
      <attachid>171745</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-31 23:07:34 -0700</bug_when>
    <thetext>Comment on attachment 171745
More code for discussion

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

This looks great.  Can you add a test that the report is only sent once even if there are many violations on a page?

&gt; Source/WebCore/html/parser/XSSAuditor.cpp:238
&gt; +                m_notifyReportURL = true;

You can also null out m_reportURL if you don&apos;t want to send the report.

&gt; Source/WebCore/html/parser/XSSAuditor.cpp:317
&gt; +            m_notifyReportURL = false;
&gt; +            m_originalURL = String();
&gt; +            m_originalHTTPBody = String();

So, we only notify for the first failure, and then we drop the m_originalHTTPBody.

Do we ever drop m_originalHTTPBody if there isn&apos;t an error?  It&apos;s probably worth dropping it at some point since we don&apos;t want to keep using the memory.  I guess the whole XSSAuditor gets deleted at some point.  Maybe that&apos;s early enough.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756411</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-01 10:21:08 -0700</bug_when>
    <thetext>Attachment 171745 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/http/tests/security/xssAuditor...&quot; exit_code: 1
Source/WebCore/html/parser/XSSAuditor.cpp:37:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebCore/platform/network/HTTPParsers.cpp:86:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 2 in 27 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756503</commentid>
    <comment_count>10</comment_count>
    <who name="Thomas Sepez">tsepez</who>
    <bug_when>2012-11-01 11:45:35 -0700</bug_when>
    <thetext>&gt;  Can you add a test that the report is only sent once even if there are many violations on a page?
Turns out this may be tricky to do in a non-flakey manner.  The current echo-report script races the creation of the report by the save-report script, using the existence of the report file to trigger completion.  While save-report could open the report file in append mode, I&apos;m not sure how to wait for the non-occurrence of the second report so that it doesn&apos;t trigger after the first one and always pass.

&gt; 
&gt; &gt; Source/WebCore/html/parser/XSSAuditor.cpp:238
&gt; &gt; +                m_notifyReportURL = true;
&gt; 
&gt; You can also null out m_reportURL if you don&apos;t want to send the report.

Sure.  Will do. 

&gt; 
&gt; &gt; Source/WebCore/html/parser/XSSAuditor.cpp:317
&gt; &gt; +            m_notifyReportURL = false;
&gt; &gt; +            m_originalURL = String();
&gt; &gt; +            m_originalHTTPBody = String();
&gt; 
&gt; So, we only notify for the first failure, and then we drop the m_originalHTTPBody.
&gt; 
&gt; Do we ever drop m_originalHTTPBody if there isn&apos;t an error?  It&apos;s probably worth dropping it at some point since we don&apos;t want to keep using the memory.  I guess the whole XSSAuditor gets deleted at some point.  Maybe that&apos;s early enough.

I couldn&apos;t figure out any other appropriate point prior to XSSAuditor destruction to clean this up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756530</commentid>
    <comment_count>11</comment_count>
      <attachid>171907</attachid>
    <who name="Thomas Sepez">tsepez</who>
    <bug_when>2012-11-01 12:15:05 -0700</bug_when>
    <thetext>Created attachment 171907
Patch, add changelogs etc.

Note: some more tinkering with parseXSSProtectionHeader().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757367</commentid>
    <comment_count>12</comment_count>
      <attachid>171907</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-02 11:21:43 -0700</bug_when>
    <thetext>Comment on attachment 171907
Patch, add changelogs etc.

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

&gt; Source/WebCore/html/parser/XSSAuditor.cpp:242
&gt; +            m_parser-&gt;document()-&gt;addConsoleMessage(JSMessageSource, LogMessageType, ErrorMessageLevel, &quot;Error parsing header X-XSS-Protection: &quot; + headerValue + &quot;: &quot;  + errorDetails + &quot; at character position &quot; + String::format(&quot;%u&quot;, errorPosition) + &quot;. The default protections will be applied.&quot;);

String::format(&quot;%u&quot;, errorPosition)  &lt;---  There&apos;s a fancier way to do that which avoids the extra malloc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757417</commentid>
    <comment_count>13</comment_count>
      <attachid>171907</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-02 11:51:20 -0700</bug_when>
    <thetext>Comment on attachment 171907
Patch, add changelogs etc.

Clearing flags on attachment: 171907

Committed r133323: &lt;http://trac.webkit.org/changeset/133323&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757418</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-02 11:51:24 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171725</attachid>
            <date>2012-10-31 14:50:05 -0700</date>
            <delta_ts>2012-10-31 17:23:17 -0700</delta_ts>
            <desc>Code for discussion</desc>
            <filename>patch_100892.txt</filename>
            <type>text/plain</type>
            <size>23329</size>
            <attacher name="Thomas Sepez">tsepez</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwCShyZXZpc2lv
biAxMzMwNzMpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzQsMTEgKzM0LDE3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnRMb2Fk
ZXIuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50Lmgi
CisjaW5jbHVkZSAiRm9ybURhdGEuaCIKKyNpbmNsdWRlICJGb3JtRGF0YUxpc3QuaCIKICNpbmNs
dWRlICJIVE1MRG9jdW1lbnRQYXJzZXIuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNs
dWRlICJIVE1MVG9rZW5pemVyLmgiCiAjaW5jbHVkZSAiSFRNTFBhcmFtRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24uaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKKyNpbmNsdWRlICJLVVJMLmgi
CisjaW5jbHVkZSAiUGluZ0xvYWRlci5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAj
aW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKQEAgLTE2Nyw3
ICsxNzMsNyBAQCBYU1NBdWRpdG9yOjpYU1NBdWRpdG9yKEhUTUxEb2N1bWVudFBhcnNlCiAgICAg
LCBtX3N0YXRlKFVuaW5pdGlhbGl6ZWQpCiAgICAgLCBtX3Nob3VsZEFsbG93Q0RBVEEoZmFsc2Up
CiAgICAgLCBtX3NjcmlwdFRhZ05lc3RpbmdMZXZlbCgwKQotICAgICwgbV9ub3RpZmllZENsaWVu
dChmYWxzZSkKKyAgICAsIG1fbm90aWZ5Q2xpZW50KHRydWUpCiB7CiAgICAgQVNTRVJUKG1fcGFy
c2VyKTsKICAgICBpZiAoRnJhbWUqIGZyYW1lID0gcGFyc2VyLT5kb2N1bWVudCgpLT5mcmFtZSgp
KSB7CkBAIC0yMTQsMjIgKzIyMCwzMSBAQCB2b2lkIFhTU0F1ZGl0b3I6OmluaXQoKQogICAgIGlm
IChtX2RlY29kZWRVUkwuZmluZChpc1JlcXVpcmVkRm9ySW5qZWN0aW9uKSA9PSBub3RGb3VuZCkK
ICAgICAgICAgbV9kZWNvZGVkVVJMID0gU3RyaW5nKCk7CiAKKyAgICBTdHJpbmcgaHR0cEJvZHlB
c1N0cmluZzsKICAgICBpZiAoRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyID0gbV9wYXJz
ZXItPmRvY3VtZW50KCktPmZyYW1lKCktPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpKSB7CiAg
ICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBYU1NQcm90ZWN0aW9uSGVhZGVyLCAo
QVNDSUlMaXRlcmFsKCJYLVhTUy1Qcm90ZWN0aW9uIikpKTsKICAgICAgICAgU3RyaW5nIGhlYWRl
clZhbHVlID0gZG9jdW1lbnRMb2FkZXItPnJlc3BvbnNlKCkuaHR0cEhlYWRlckZpZWxkKFhTU1By
b3RlY3Rpb25IZWFkZXIpOwogICAgICAgICBTdHJpbmcgZXJyb3JEZXRhaWxzOwotICAgICAgICBt
X3hzc1Byb3RlY3Rpb24gPSBwYXJzZVhTU1Byb3RlY3Rpb25IZWFkZXIoaGVhZGVyVmFsdWUsIGVy
cm9yRGV0YWlscyk7CisgICAgICAgIFN0cmluZyByZXBvcnRVUkw7CisgICAgICAgIG1feHNzUHJv
dGVjdGlvbiA9IHBhcnNlWFNTUHJvdGVjdGlvbkhlYWRlcihoZWFkZXJWYWx1ZSwgZXJyb3JEZXRh
aWxzLCByZXBvcnRVUkwpOwogICAgICAgICBpZiAobV94c3NQcm90ZWN0aW9uID09IFhTU1Byb3Rl
Y3Rpb25JbnZhbGlkKSB7CiAgICAgICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywg
Y29uc29sZU1lc3NhZ2VTdGFydCwgKEFTQ0lJTGl0ZXJhbCgiRXJyb3IgcGFyc2luZyBoZWFkZXIg
WC1YU1MtUHJvdGVjdGlvbjogIikpKTsKICAgICAgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwo
U3RyaW5nLCBjb25zb2xlTWVzc2FnZVNlcGFyYXRvciwgKEFTQ0lJTGl0ZXJhbCgiOiAiKSkpOwog
ICAgICAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGNvbnNvbGVNZXNzYWdlRW5k
LCAoQVNDSUlMaXRlcmFsKCIuIFRoZSBkZWZhdWx0IHByb3RlY3Rpb25zIHdpbGwgYmUgYXBwbGll
ZC4iKSkpOwogICAgICAgICAgICAgbV9wYXJzZXItPmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNz
YWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCBj
b25zb2xlTWVzc2FnZVN0YXJ0ICsgaGVhZGVyVmFsdWUgKyBjb25zb2xlTWVzc2FnZVNlcGFyYXRv
ciArIGVycm9yRGV0YWlscyArIGNvbnNvbGVNZXNzYWdlRW5kKTsKICAgICAgICAgICAgIG1feHNz
UHJvdGVjdGlvbiA9IFhTU1Byb3RlY3Rpb25FbmFibGVkOworICAgICAgICB9IGVsc2UgaWYgKG1f
eHNzUHJvdGVjdGlvbiAhPSBYU1NQcm90ZWN0aW9uRGlzYWJsZWQpIHsKKyAgICAgICAgICAgIGlm
ICghcmVwb3J0VVJMLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgIG1fcmVwb3J0VVJMID0g
S1VSTChtX3BhcnNlci0+ZG9jdW1lbnQoKS0+dXJsKCksIHJlcG9ydFVSTCk7CisgICAgICAgICAg
ICAgICAgbV9ub3RpZnlSZXBvcnRVUkwgPSAobV9yZXBvcnRVUkwucHJvdG9jb2xJcygiaHR0cHMi
KSB8fCBtX3JlcG9ydFVSTC5wcm90b2NvbCgpID09IG1fcGFyc2VyLT5kb2N1bWVudCgpLT51cmwo
KS5wcm90b2NvbCgpKQorICAgICAgICAgICAgICAgICAgICAmJiBtX3JlcG9ydFVSTC5ob3N0KCkg
PT0gbV9wYXJzZXItPmRvY3VtZW50KCktPnVybCgpLmhvc3QoKQorICAgICAgICAgICAgICAgICAg
ICAmJiBtX3JlcG9ydFVSTC5wb3J0KCkgPT0gbV9wYXJzZXItPmRvY3VtZW50KCktPnVybCgpLnBv
cnQoKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIEZvcm1EYXRhKiBodHRw
Qm9keSA9IGRvY3VtZW50TG9hZGVyLT5vcmlnaW5hbFJlcXVlc3QoKS5odHRwQm9keSgpOwogICAg
ICAgICBpZiAoaHR0cEJvZHkgJiYgIWh0dHBCb2R5LT5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAg
IFN0cmluZyBodHRwQm9keUFzU3RyaW5nID0gaHR0cEJvZHktPmZsYXR0ZW5Ub1N0cmluZygpOwor
ICAgICAgICAgICAgaHR0cEJvZHlBc1N0cmluZyA9IGh0dHBCb2R5LT5mbGF0dGVuVG9TdHJpbmco
KTsKICAgICAgICAgICAgIGlmICghaHR0cEJvZHlBc1N0cmluZy5pc0VtcHR5KCkpIHsKICAgICAg
ICAgICAgICAgICBtX2RlY29kZWRIVFRQQm9keSA9IGZ1bGx5RGVjb2RlU3RyaW5nKGh0dHBCb2R5
QXNTdHJpbmcsIGRlY29kZXIpOwogICAgICAgICAgICAgICAgIGlmIChtX2RlY29kZWRIVFRQQm9k
eS5maW5kKGlzUmVxdWlyZWRGb3JJbmplY3Rpb24pID09IG5vdEZvdW5kKQpAQCAtMjQwLDggKzI1
NSwxNiBAQCB2b2lkIFhTU0F1ZGl0b3I6OmluaXQoKQogICAgICAgICB9CiAgICAgfQogCi0gICAg
aWYgKG1fZGVjb2RlZFVSTC5pc0VtcHR5KCkgJiYgbV9kZWNvZGVkSFRUUEJvZHkuaXNFbXB0eSgp
KQorICAgIGlmIChtX2RlY29kZWRVUkwuaXNFbXB0eSgpICYmIG1fZGVjb2RlZEhUVFBCb2R5Lmlz
RW1wdHkoKSkgewogICAgICAgICBtX2lzRW5hYmxlZCA9IGZhbHNlOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgaWYgKG1fbm90aWZ5UmVwb3J0VVJMKSB7CisgICAgICAgIC8vIE1heSBu
ZWVkIHRoZXNlIGZvciByZXBvcnRpbmcgbGF0ZXIgb24uCisgICAgICAgIG1fb3JpZ2luYWxVUkwg
PSB1cmw7CisgICAgICAgIG1fb3JpZ2luYWxIVFRQQm9keSA9IGh0dHBCb2R5QXNTdHJpbmc7Cisg
ICAgfQogfQogCiB2b2lkIFhTU0F1ZGl0b3I6OmZpbHRlclRva2VuKEhUTUxUb2tlbiYgdG9rZW4p
CkBAIC0yNzIsOSArMjk1LDI1IEBAIHZvaWQgWFNTQXVkaXRvcjo6ZmlsdGVyVG9rZW4oSFRNTFRv
a2VuJiAKICAgICAgICAgaWYgKGRpZEJsb2NrRW50aXJlUGFnZSkKICAgICAgICAgICAgICBtX3Bh
cnNlci0+ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+bG9hZGVyKCktPnN0b3BBbGxMb2FkZXJzKCk7CiAK
LSAgICAgICAgaWYgKCFtX25vdGlmaWVkQ2xpZW50KSB7CisgICAgICAgIGlmIChtX25vdGlmeUNs
aWVudCkgewogICAgICAgICAgICAgbV9wYXJzZXItPmRvY3VtZW50KCktPmZyYW1lKCktPmxvYWRl
cigpLT5jbGllbnQoKS0+ZGlkRGV0ZWN0WFNTKG1fcGFyc2VyLT5kb2N1bWVudCgpLT51cmwoKSwg
ZGlkQmxvY2tFbnRpcmVQYWdlKTsKLSAgICAgICAgICAgIG1fbm90aWZpZWRDbGllbnQgPSB0cnVl
OworICAgICAgICAgICAgbV9ub3RpZnlDbGllbnQgPSBmYWxzZTsKKyAgICAgICAgfQorCisgICAg
ICAgIGlmIChtX25vdGlmeVJlcG9ydFVSTCkgeworICAgICAgICAgICAgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4gcmVwb3J0RGV0YWlscyA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CisgICAg
ICAgICAgICByZXBvcnREZXRhaWxzLT5zZXRTdHJpbmcoInJlcXVlc3QtdXJsIiwgbV9vcmlnaW5h
bFVSTCk7CisgICAgICAgICAgICByZXBvcnREZXRhaWxzLT5zZXRTdHJpbmcoInJlcXVlc3QtYm9k
eSIsIG1fb3JpZ2luYWxIVFRQQm9keSk7CisKKyAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+IHJlcG9ydE9iamVjdCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CisgICAgICAg
ICAgICByZXBvcnRPYmplY3QtPnNldE9iamVjdCgieHNzLXJlcG9ydCIsIHJlcG9ydERldGFpbHMu
cmVsZWFzZSgpKTsKKworICAgICAgICAgICAgUmVmUHRyPEZvcm1EYXRhPiByZXBvcnQgPSBGb3Jt
RGF0YTo6Y3JlYXRlKHJlcG9ydE9iamVjdC0+dG9KU09OU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7
CisgICAgICAgICAgICBQaW5nTG9hZGVyOjpzZW5kVmlvbGF0aW9uUmVwb3J0KG1fcGFyc2VyLT5k
b2N1bWVudCgpLT5mcmFtZSgpLCBtX3JlcG9ydFVSTCwgcmVwb3J0KTsKKworICAgICAgICAgICAg
bV9ub3RpZnlSZXBvcnRVUkwgPSBmYWxzZTsKKyAgICAgICAgICAgIG1fb3JpZ2luYWxVUkwgPSBT
dHJpbmcoKTsKKyAgICAgICAgICAgIG1fb3JpZ2luYWxIVFRQQm9keSA9IFN0cmluZygpOwogICAg
ICAgICB9CiAKICAgICAgICAgaWYgKGRpZEJsb2NrRW50aXJlUGFnZSkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmgJKHJldmlzaW9uIDEzMzA3MykKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtODUs
NiArODUsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc0VuYWJsZWQ7CiAgICAgWFNTUHJvdGVj
dGlvbkRpc3Bvc2l0aW9uIG1feHNzUHJvdGVjdGlvbjsKIAorICAgIFN0cmluZyBtX29yaWdpbmFs
VVJMOworICAgIFN0cmluZyBtX29yaWdpbmFsSFRUUEJvZHk7CiAgICAgU3RyaW5nIG1fZGVjb2Rl
ZFVSTDsKICAgICBTdHJpbmcgbV9kZWNvZGVkSFRUUEJvZHk7CiAgICAgT3duUHRyPFN1ZmZpeFRy
ZWU8QVNDSUlDb2RlYm9vaz4gPiBtX2RlY29kZWRIVFRQQm9keVN1ZmZpeFRyZWU7CkBAIC05Myw3
ICs5NSw5IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fY2FjaGVkRGVjb2RlZFNuaXBwZXQ7CiAg
ICAgYm9vbCBtX3Nob3VsZEFsbG93Q0RBVEE7CiAgICAgdW5zaWduZWQgbV9zY3JpcHRUYWdOZXN0
aW5nTGV2ZWw7Ci0gICAgYm9vbCBtX25vdGlmaWVkQ2xpZW50OworICAgIGJvb2wgbV9ub3RpZnlD
bGllbnQ7CisgICAgYm9vbCBtX25vdGlmeVJlcG9ydFVSTDsKKyAgICBLVVJMIG1fcmVwb3J0VVJM
OwogfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9QaW5nTG9hZGVyLmNwcAkocmV2aXNp
b24gMTMzMDczKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDMsNyArMTAzLDcgQEAgdm9pZCBQaW5nTG9hZGVyOjpzZW5kUGluZyhG
cmFtZSogZnJhbWUsIAogICAgIFVOVVNFRF9QQVJBTShsZWFrZWRQaW5nTG9hZGVyKTsKIH0KIAot
dm9pZCBQaW5nTG9hZGVyOjpyZXBvcnRDb250ZW50U2VjdXJpdHlQb2xpY3lWaW9sYXRpb24oRnJh
bWUqIGZyYW1lLCBjb25zdCBLVVJMJiByZXBvcnRVUkwsIFBhc3NSZWZQdHI8Rm9ybURhdGE+IHJl
cG9ydCkKK3ZvaWQgUGluZ0xvYWRlcjo6c2VuZFZpb2xhdGlvblJlcG9ydChGcmFtZSogZnJhbWUs
IGNvbnN0IEtVUkwmIHJlcG9ydFVSTCwgUGFzc1JlZlB0cjxGb3JtRGF0YT4gcmVwb3J0KQogewog
ICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KHJlcG9ydFVSTCk7CiAjaWYgUExBVEZPUk0oQ0hS
T01JVU0pIHx8IFBMQVRGT1JNKEJMQUNLQkVSUlkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUGluZ0xvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9QaW5n
TG9hZGVyLmgJKHJldmlzaW9uIDEzMzA3MykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9QaW5n
TG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAgY2xhc3MgUGluZ0xvYWRl
ciA6IHByaXZhdGUgUmVzb3VyY2VIYW5kbAogcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGxvYWRJ
bWFnZShGcmFtZSosIGNvbnN0IEtVUkwmIHVybCk7CiAgICAgc3RhdGljIHZvaWQgc2VuZFBpbmco
RnJhbWUqLCBjb25zdCBLVVJMJiBwaW5nVVJMLCBjb25zdCBLVVJMJiBkZXN0aW5hdGlvblVSTCk7
Ci0gICAgc3RhdGljIHZvaWQgcmVwb3J0Q29udGVudFNlY3VyaXR5UG9saWN5VmlvbGF0aW9uKEZy
YW1lKiwgY29uc3QgS1VSTCYgcmVwb3J0VVJMLCBQYXNzUmVmUHRyPEZvcm1EYXRhPiByZXBvcnQp
OworICAgIHN0YXRpYyB2b2lkIHNlbmRWaW9sYXRpb25SZXBvcnQoRnJhbWUqLCBjb25zdCBLVVJM
JiByZXBvcnRVUkwsIFBhc3NSZWZQdHI8Rm9ybURhdGE+IHJlcG9ydCk7CiAKICAgICB+UGluZ0xv
YWRlcigpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRlbnRTZWN1cml0eVBvbGlj
eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZW50U2VjdXJpdHlQ
b2xpY3kuY3BwCShyZXZpc2lvbiAxMzMwNzMpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRl
bnRTZWN1cml0eVBvbGljeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OTQsNyArMTU5NCw3IEBA
IHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5OjpyZXBvcnRWaW9sYXQKICAgICBSZWZQdHI8Rm9y
bURhdGE+IHJlcG9ydCA9IEZvcm1EYXRhOjpjcmVhdGUocmVwb3J0T2JqZWN0LT50b0pTT05TdHJp
bmcoKS51dGY4KCkpOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZXBvcnRVUklzLnNp
emUoKTsgKytpKQotICAgICAgICBQaW5nTG9hZGVyOjpyZXBvcnRDb250ZW50U2VjdXJpdHlQb2xp
Y3lWaW9sYXRpb24oZnJhbWUsIHJlcG9ydFVSSXNbaV0sIHJlcG9ydCk7CisgICAgICAgIFBpbmdM
b2FkZXI6OnNlbmRWaW9sYXRpb25SZXBvcnQoZnJhbWUsIHJlcG9ydFVSSXNbaV0sIHJlcG9ydCk7
CiB9CiAKIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5OjpyZXBvcnRVbnJlY29nbml6ZWREaXJl
Y3RpdmUoY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAJKHJldmlzaW9uIDEzMzA3MykKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMjAsMTEgKzMyMCwxMiBAQCB2b2lkIGZpbmRDaGFyc2V0SW5NZWRpYVR5cGUo
Y29uc3QgU3RyaW5nCiAgICAgfQogfQogCi1YU1NQcm90ZWN0aW9uRGlzcG9zaXRpb24gcGFyc2VY
U1NQcm90ZWN0aW9uSGVhZGVyKGNvbnN0IFN0cmluZyYgaGVhZGVyLCBTdHJpbmcmIGZhaWx1cmVS
ZWFzb24pCitYU1NQcm90ZWN0aW9uRGlzcG9zaXRpb24gcGFyc2VYU1NQcm90ZWN0aW9uSGVhZGVy
KGNvbnN0IFN0cmluZyYgaGVhZGVyLCBTdHJpbmcmIGZhaWx1cmVSZWFzb24sIFN0cmluZyYgcmVw
b3J0VVJMKQogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBmYWlsdXJlUmVhc29u
SW52YWxpZFRvZ2dsZSwgKEFTQ0lJTGl0ZXJhbCgiZmlyc3Qgbm9uLWJsYW5rIGNoYXJhY3RlciBt
dXN0IGJlIDAgb3IgMSIpKSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGZhaWx1
cmVSZWFzb25JbnZhbGlkU2VwYXJhdG9yLCAoQVNDSUlMaXRlcmFsKCJleHBlY3RlZCBzZW1pY29s
b24iKSkpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBmYWlsdXJlUmVhc29uSW52
YWxpZE1vZGUsIChBU0NJSUxpdGVyYWwoImludmFsaWQgbW9kZSBkaXJlY3RpdmUiKSkpOworICAg
IERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBmYWlsdXJlUmVhc29uSW52YWxpZFJlcG9ydCwg
KEFTQ0lJTGl0ZXJhbCgiaW52YWxpZCByZXBvcnQgZGlyZWN0aXZlIikpKTsKICAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKFN0cmluZywgZmFpbHVyZVJlYXNvbkludmFsaWRFeHRyYSwgKEFTQ0lJTGl0
ZXJhbCgiZXh0cmEgY2hhcmFjdGVycyBmb2xsb3cgdmFsaWQgaGVhZGVyIikpKTsKIAogICAgIHVu
c2lnbmVkIHBvcyA9IDA7CkBAIC0zNTEsMTMgKzM1MiwzNSBAQCBYU1NQcm90ZWN0aW9uRGlzcG9z
aXRpb24gcGFyc2VYU1NQcm90ZWN0CiAgICAgaWYgKCFza2lwV2hpdGVTcGFjZShoZWFkZXIsIHBv
cywgZmFsc2UpKQogICAgICAgICByZXR1cm4gWFNTUHJvdGVjdGlvbkVuYWJsZWQ7CiAKLSAgICBp
ZiAoIShza2lwVG9rZW4oaGVhZGVyLCBwb3MsICJtb2RlIikKLSAgICAgICAgJiYgc2tpcFdoaXRl
U3BhY2UoaGVhZGVyLCBwb3MsIGZhbHNlKQotICAgICAgICAmJiBoZWFkZXJbcG9zKytdID09ICc9
JwotICAgICAgICAmJiBza2lwV2hpdGVTcGFjZShoZWFkZXIsIHBvcywgZmFsc2UpCi0gICAgICAg
ICYmIHNraXBUb2tlbihoZWFkZXIsIHBvcywgImJsb2NrIikpKSB7Ci0gICAgICAgIGZhaWx1cmVS
ZWFzb24gPSBmYWlsdXJlUmVhc29uSW52YWxpZE1vZGU7Ci0gICAgICAgIHJldHVybiBYU1NQcm90
ZWN0aW9uSW52YWxpZDsKKyAgICBYU1NQcm90ZWN0aW9uRGlzcG9zaXRpb24gcmVzdWx0ID0gWFNT
UHJvdGVjdGlvbkVuYWJsZWQ7CisKKyAgICBpZiAoc2tpcFRva2VuKGhlYWRlciwgcG9zLCAibW9k
ZSIpKSB7CisgICAgICAgIGlmICghKHNraXBXaGl0ZVNwYWNlKGhlYWRlciwgcG9zLCBmYWxzZSkg
JiYgaGVhZGVyW3BvcysrXSA9PSAnPScgJiYgc2tpcFdoaXRlU3BhY2UoaGVhZGVyLCBwb3MsIGZh
bHNlKSAmJiBza2lwVG9rZW4oaGVhZGVyLCBwb3MsICJibG9jayIpKSkgeworICAgICAgICAgICAg
ZmFpbHVyZVJlYXNvbiA9IGZhaWx1cmVSZWFzb25JbnZhbGlkTW9kZTsKKyAgICAgICAgICAgIHJl
dHVybiBYU1NQcm90ZWN0aW9uSW52YWxpZDsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghc2tp
cFdoaXRlU3BhY2UoaGVhZGVyLCBwb3MsIGZhbHNlKSkKKyAgICAgICAgICAgIHJldHVybiBYU1NQ
cm90ZWN0aW9uQmxvY2tFbmFibGVkOworCisgICAgICAgIGlmIChoZWFkZXJbcG9zKytdICE9ICc7
JykgeworICAgICAgICAgICAgZmFpbHVyZVJlYXNvbiA9IGZhaWx1cmVSZWFzb25JbnZhbGlkU2Vw
YXJhdG9yOworICAgICAgICAgICAgcmV0dXJuIFhTU1Byb3RlY3Rpb25JbnZhbGlkOworICAgICAg
ICB9CisKKyAgICAgICAgaWYgKCFza2lwV2hpdGVTcGFjZShoZWFkZXIsIHBvcywgZmFsc2UpKQor
ICAgICAgICAgICAgcmV0dXJuIFhTU1Byb3RlY3Rpb25CbG9ja0VuYWJsZWQ7CisKKyAgICAgICAg
cmVzdWx0ID0gWFNTUHJvdGVjdGlvbkJsb2NrRW5hYmxlZDsKKyAgICB9CisKKyAgICBpZiAoc2tp
cFRva2VuKGhlYWRlciwgcG9zLCAicmVwb3J0IikpIHsKKyAgICAgICAgaWYgKCEoc2tpcFdoaXRl
U3BhY2UoaGVhZGVyLCBwb3MsIGZhbHNlKSAmJiBoZWFkZXJbcG9zKytdID09ICc9JyAmJiBza2lw
V2hpdGVTcGFjZShoZWFkZXIsIHBvcywgZmFsc2UpKSkgeworICAgICAgICAgICAgZmFpbHVyZVJl
YXNvbiA9IGZhaWx1cmVSZWFzb25JbnZhbGlkUmVwb3J0OworICAgICAgICAgICAgcmV0dXJuIFhT
U1Byb3RlY3Rpb25JbnZhbGlkOworICAgICAgICB9CisgICAgICAgIHJlcG9ydFVSTCA9IGhlYWRl
ci5zdWJzdHJpbmcocG9zKTsKKyAgICAgICAgcG9zID0gaGVhZGVyLmxlbmd0aCgpOwogICAgIH0K
IAogICAgIGlmIChza2lwV2hpdGVTcGFjZShoZWFkZXIsIHBvcywgZmFsc2UpKSB7CkBAIC0zNjUs
NyArMzg4LDcgQEAgWFNTUHJvdGVjdGlvbkRpc3Bvc2l0aW9uIHBhcnNlWFNTUHJvdGVjdAogICAg
ICAgICByZXR1cm4gWFNTUHJvdGVjdGlvbkludmFsaWQ7CiAgICAgfQogCi0gICAgcmV0dXJuIFhT
U1Byb3RlY3Rpb25CbG9ja0VuYWJsZWQ7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogU3RyaW5n
IGV4dHJhY3RSZWFzb25QaHJhc2VGcm9tSFRUUFN0YXR1c0xpbmUoY29uc3QgU3RyaW5nJiBzdGF0
dXNMaW5lKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vy
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBh
cnNlcnMuaAkocmV2aXNpb24gMTMzMDczKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9IVFRQUGFyc2Vycy5oCSh3b3JraW5nIGNvcHkpCkBAIC02MSw3ICs2MSw3IEBAIFN0cmlu
ZyBmaWxlbmFtZUZyb21IVFRQQ29udGVudERpc3Bvc2l0aW8KIFN0cmluZyBleHRyYWN0TUlNRVR5
cGVGcm9tTWVkaWFUeXBlKGNvbnN0IFN0cmluZyYpOwogU3RyaW5nIGV4dHJhY3RDaGFyc2V0RnJv
bU1lZGlhVHlwZShjb25zdCBTdHJpbmcmKTsgCiB2b2lkIGZpbmRDaGFyc2V0SW5NZWRpYVR5cGUo
Y29uc3QgU3RyaW5nJiBtZWRpYVR5cGUsIHVuc2lnbmVkIGludCYgY2hhcnNldFBvcywgdW5zaWdu
ZWQgaW50JiBjaGFyc2V0TGVuLCB1bnNpZ25lZCBpbnQgc3RhcnQgPSAwKTsKLVhTU1Byb3RlY3Rp
b25EaXNwb3NpdGlvbiBwYXJzZVhTU1Byb3RlY3Rpb25IZWFkZXIoY29uc3QgU3RyaW5nJiBoZWFk
ZXIsIFN0cmluZyYgZmFpbHVyZVJlYXNvbik7CitYU1NQcm90ZWN0aW9uRGlzcG9zaXRpb24gcGFy
c2VYU1NQcm90ZWN0aW9uSGVhZGVyKGNvbnN0IFN0cmluZyYgaGVhZGVyLCBTdHJpbmcmIGZhaWx1
cmVSZWFzb24sIFN0cmluZyYgcmVwb3J0VVJMKTsKIFN0cmluZyBleHRyYWN0UmVhc29uUGhyYXNl
RnJvbUhUVFBTdGF0dXNMaW5lKGNvbnN0IFN0cmluZyYpOwogCiAvLyAtMSBjb3VsZCBiZSBzZXQg
dG8gb25lIG9mIHRoZSByZXR1cm4gcGFyYW1ldGVycyB0byBpbmRpY2F0ZSB0aGUgdmFsdWUgaXMg
bm90IHNwZWNpZmllZC4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNz
QXVkaXRvci9tYWxmb3JtZWQteHNzLXByb3RlY3Rpb24taGVhZGVyLTQtZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9t
YWxmb3JtZWQteHNzLXByb3RlY3Rpb24taGVhZGVyLTQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAx
MzMwNzMpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvbWFs
Zm9ybWVkLXhzcy1wcm90ZWN0aW9uLWhlYWRlci00LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtMSw0ICsxLDQgQEAKLUNPTlNPTEUgTUVTU0FHRTogRXJyb3IgcGFyc2luZyBoZWFkZXIg
WC1YU1MtUHJvdGVjdGlvbjogMTsgbW9kZT1ibG9jay1hLWJsb2NrLWJsb2NrOiBleHRyYSBjaGFy
YWN0ZXJzIGZvbGxvdyB2YWxpZCBoZWFkZXIuIFRoZSBkZWZhdWx0IHByb3RlY3Rpb25zIHdpbGwg
YmUgYXBwbGllZC4KK0NPTlNPTEUgTUVTU0FHRTogRXJyb3IgcGFyc2luZyBoZWFkZXIgWC1YU1Mt
UHJvdGVjdGlvbjogMTsgbW9kZT1ibG9jay1hLWJsb2NrLWJsb2NrOiBleHBlY3RlZCBzZW1pY29s
b24uIFRoZSBkZWZhdWx0IHByb3RlY3Rpb25zIHdpbGwgYmUgYXBwbGllZC4KIENPTlNPTEUgTUVT
U0FHRTogUmVmdXNlZCB0byBleGVjdXRlIGEgSmF2YVNjcmlwdCBzY3JpcHQuIFNvdXJjZSBjb2Rl
IG9mIHNjcmlwdCBmb3VuZCB3aXRoaW4gcmVxdWVzdC4KIAogVGhpcyB0ZXN0cyB0aGF0IHRoZSBY
LVhTUy1Qcm90ZWN0aW9uIGhlYWRlciBpcyBub3QgaWdub3JlZCB3aGVuIHRoZXJlIGlzIGEgdHJh
aWxpbmcgZ2FyYmFnZSBhZnRlciBtb2RlPWJsb2NrLCBhbmQgd2UgaXNzdWUgYW4gZXJyb3IKSW5k
ZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9tYWxmb3JtZWQt
eHNzLXByb3RlY3Rpb24taGVhZGVyLTUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9tYWxmb3JtZWQteHNzLXByb3Rl
Y3Rpb24taGVhZGVyLTUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL21hbGZvcm1lZC14c3MtcHJvdGVjdGlvbi1o
ZWFkZXItNS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTEgQEAKK0NPTlNP
TEUgTUVTU0FHRTogRXJyb3IgcGFyc2luZyBoZWFkZXIgWC1YU1MtUHJvdGVjdGlvbjogMTsgbW9k
ZT1ibG9jazsgcmVwb3J0OiBpbnZhbGlkIHJlcG9ydCBkaXJlY3RpdmUuIFRoZSBkZWZhdWx0IHBy
b3RlY3Rpb25zIHdpbGwgYmUgYXBwbGllZC4KK0NPTlNPTEUgTUVTU0FHRTogUmVmdXNlZCB0byBl
eGVjdXRlIGEgSmF2YVNjcmlwdCBzY3JpcHQuIFNvdXJjZSBjb2RlIG9mIHNjcmlwdCBmb3VuZCB3
aXRoaW4gcmVxdWVzdC4KKworVGhpcyB0ZXN0cyB0aGF0IHRoZSBYLVhTUy1Qcm90ZWN0aW9uIGhl
YWRlciBpcyBub3QgaWdub3JlZCB3aGVuIHRoZXJlIGlzIGFuIGluY29tcGxldGUgcmVwb3J0IHVy
bCBmb2xsb3dpbmcgbW9kZT1ibG9jaywgYW5kIHdlIGlzc3VlIGFuIGVycm9yCisKKworCistLS0t
LS0tLQorRnJhbWU6ICdmcmFtZScKKy0tLS0tLS0tCitJZiB5b3Ugc2VlIHRoaXMgbWVzc2FnZSBh
bmQgbm8gSmF2YVNjcmlwdCBhbGVydCgpIHRoZW4gdGhlIHRlc3QgUEFTU0VELgpJbmRleDogTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL21hbGZvcm1lZC14c3MtcHJv
dGVjdGlvbi1oZWFkZXItNS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkveHNzQXVkaXRvci9tYWxmb3JtZWQteHNzLXByb3RlY3Rpb24taGVhZGVyLTUu
aHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNz
QXVkaXRvci9tYWxmb3JtZWQteHNzLXByb3RlY3Rpb24taGVhZGVyLTUuaHRtbAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwxOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNj
cmlwdCBzcmM9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS94c3NBdWRpdG9yL3Jlc291
cmNlcy91dGlsaXRpZXMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1
bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIuZHVt
cENoaWxkRnJhbWVzQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Cisg
ICAgdGVzdFJ1bm5lci5zZXRYU1NBdWRpdG9yRW5hYmxlZCh0cnVlKTsKK30KKzwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3RzIHRoYXQgdGhlIFgtWFNTLVByb3RlY3Rpb24g
aGVhZGVyIGlzIG5vdCBpZ25vcmVkIHdoZW4gdGhlcmUgaXMgYW4gaW5jb21wbGV0ZSByZXBvcnQg
dXJsIGZvbGxvd2luZyBtb2RlPWJsb2NrLCBhbmQgd2UgaXNzdWUgYW4gZXJyb3I8L3A+Cis8aWZy
YW1lIGlkPSJmcmFtZSIgb25sb2FkPSJjaGVja0lmRnJhbWVMb2NhdGlvbk1hdGNoZXNVUkxBbmRD
YWxsRG9uZSgnZnJhbWUnLCAnYWJvdXQ6YmxhbmsnKSIgc3JjPSJodHRwOi8vMTI3LjAuMC4xOjgw
MDAvc2VjdXJpdHkveHNzQXVkaXRvci9yZXNvdXJjZXMvZWNoby1pbnRlcnRhZy5wbD9ub3RpZnlE
b25lPTEmbWFsZm9ybWVkLWhlYWRlcj01JnE9PHNjcmlwdD5hbGVydChTdHJpbmcuZnJvbUNoYXJD
b2RlKDB4NTgsMHg1MywweDUzKSk8L3NjcmlwdD48cD5JZiB5b3Ugc2VlIHRoaXMgbWVzc2FnZSBh
bmQgbm8gSmF2YVNjcmlwdCBhbGVydCgpIHRoZW4gdGhlIHRlc3QgUEFTU0VELjwvcD4iPgorPC9p
ZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L3hzc0F1ZGl0b3IvbWFsZm9ybWVkLXhzcy1wcm90ZWN0aW9uLWhlYWRlci02LWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hz
c0F1ZGl0b3IvbWFsZm9ybWVkLXhzcy1wcm90ZWN0aW9uLWhlYWRlci02LWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRv
ci9tYWxmb3JtZWQteHNzLXByb3RlY3Rpb24taGVhZGVyLTYtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDExIEBACitDT05TT0xFIE1FU1NBR0U6IEVycm9yIHBhcnNpbmcgaGVh
ZGVyIFgtWFNTLVByb3RlY3Rpb246IDE7IHJlcG9ydDs6IGludmFsaWQgcmVwb3J0IGRpcmVjdGl2
ZS4gVGhlIGRlZmF1bHQgcHJvdGVjdGlvbnMgd2lsbCBiZSBhcHBsaWVkLgorQ09OU09MRSBNRVNT
QUdFOiBSZWZ1c2VkIHRvIGV4ZWN1dGUgYSBKYXZhU2NyaXB0IHNjcmlwdC4gU291cmNlIGNvZGUg
b2Ygc2NyaXB0IGZvdW5kIHdpdGhpbiByZXF1ZXN0LgorCitUaGlzIHRlc3RzIHRoYXQgdGhlIFgt
WFNTLVByb3RlY3Rpb24gaGVhZGVyIGlzIG5vdCBpZ25vcmVkIHdoZW4gdGhlcmUgaXMgYW4gaW5j
b21wbGV0ZSByZXBvcnQgdXJsIGJ5IGl0c2VsZiwgYW5kIHdlIGlzc3VlIGFuIGVycm9yCisKKwor
CistLS0tLS0tLQorRnJhbWU6ICdmcmFtZScKKy0tLS0tLS0tCitJZiB5b3Ugc2VlIHRoaXMgbWVz
c2FnZSBhbmQgbm8gSmF2YVNjcmlwdCBhbGVydCgpIHRoZW4gdGhlIHRlc3QgUEFTU0VELgpJbmRl
eDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL21hbGZvcm1lZC14
c3MtcHJvdGVjdGlvbi1oZWFkZXItNi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9tYWxmb3JtZWQteHNzLXByb3RlY3Rpb24taGVh
ZGVyLTYuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkveHNzQXVkaXRvci9tYWxmb3JtZWQteHNzLXByb3RlY3Rpb24taGVhZGVyLTYuaHRtbAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwxOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdCBzcmM9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS94c3NBdWRpdG9y
L3Jlc291cmNlcy91dGlsaXRpZXMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2lmICh3aW5kb3cu
dGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5u
ZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25l
KCk7CisgICAgdGVzdFJ1bm5lci5zZXRYU1NBdWRpdG9yRW5hYmxlZCh0cnVlKTsKK30KKzwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3RzIHRoYXQgdGhlIFgtWFNTLVByb3Rl
Y3Rpb24gaGVhZGVyIGlzIG5vdCBpZ25vcmVkIHdoZW4gdGhlcmUgaXMgYW4gaW5jb21wbGV0ZSBy
ZXBvcnQgdXJsIGJ5IGl0c2VsZiwgYW5kIHdlIGlzc3VlIGFuIGVycm9yPC9wPgorPGlmcmFtZSBp
ZD0iZnJhbWUiIG9ubG9hZD0iY2hlY2tJZkZyYW1lTG9jYXRpb25NYXRjaGVzVVJMQW5kQ2FsbERv
bmUoJ2ZyYW1lJywgJ2Fib3V0OmJsYW5rJykiIHNyYz0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3Nl
Y3VyaXR5L3hzc0F1ZGl0b3IvcmVzb3VyY2VzL2VjaG8taW50ZXJ0YWcucGw/bm90aWZ5RG9uZT0x
Jm1hbGZvcm1lZC1oZWFkZXI9NiZxPTxzY3JpcHQ+YWxlcnQoU3RyaW5nLmZyb21DaGFyQ29kZSgw
eDU4LDB4NTMsMHg1MykpPC9zY3JpcHQ+PHA+SWYgeW91IHNlZSB0aGlzIG1lc3NhZ2UgYW5kIG5v
IEphdmFTY3JpcHQgYWxlcnQoKSB0aGVuIHRoZSB0ZXN0IFBBU1NFRC48L3A+Ij4KKzwvaWZyYW1l
PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0
eS94c3NBdWRpdG9yL3JlcG9ydC1zY3JpcHQtdGFnLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvcmVwb3J0LXNjcmlw
dC10YWctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS94c3NBdWRpdG9yL3JlcG9ydC1zY3JpcHQtdGFnLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwxNSBAQAorQ09OU09MRSBNRVNTQUdFOiBSZWZ1c2VkIHRvIGV4
ZWN1dGUgYSBKYXZhU2NyaXB0IHNjcmlwdC4gU291cmNlIGNvZGUgb2Ygc2NyaXB0IGZvdW5kIHdp
dGhpbiByZXF1ZXN0LgorCitUaGlzIHRlc3RzIHRoYXQgdGhlIFgtWFNTLVByb3RlY3Rpb24gcmVw
b3J0cyBhcmUgc2VudCBvdXQgcHJvcGVybHkKKworCisKKy0tLS0tLS0tCitGcmFtZTogJ2ZyYW1l
JworLS0tLS0tLS0KK0NTUCByZXBvcnQgcmVjZWl2ZWQ6CitDT05URU5UX1RZUEU6IGFwcGxpY2F0
aW9uL2pzb24KK0hUVFBfUkVGRVJFUjogaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3hz
c0F1ZGl0b3IvcmVzb3VyY2VzL2VjaG8taW50ZXJ0YWcucGw/ZWNoby1yZXBvcnQ9MSZlbmFibGUt
cmVwb3J0PTEmcT0lM0NzY3JpcHQlM0VhbGVydChTdHJpbmcuZnJvbUNoYXJDb2RlKDB4NTgsMHg1
MywweDUzKSklM0Mvc2NyaXB0JTNFJTNDcCUzRUlmJTIweW91JTIwc2VlJTIwdGhpcyUyMG1lc3Nh
Z2UsJTIwbm8lMjBKYXZhU2NyaXB0JTIwYWxlcnQoKSwlMjBhbmQlMjBhJTIwZHVtcCUyMG9mJTIw
dGhlJTIwcmVwb3J0JTIwYmVsb3csJTIwdGhlbiUyMHRoZSUyMHRlc3QlMjBQQVNTRUQuJTNDL3Al
M0UKK1JFUVVFU1RfTUVUSE9EOiBQT1NUCis9PT0gUE9TVCBEQVRBID09PQoreyJ4c3MtcmVwb3J0
Ijp7InJlcXVlc3QtdXJsIjoiaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3hzc0F1ZGl0
b3IvcmVzb3VyY2VzL2VjaG8taW50ZXJ0YWcucGw/ZWNoby1yZXBvcnQ9MSZlbmFibGUtcmVwb3J0
PTEmcT0lM0NzY3JpcHQlM0VhbGVydChTdHJpbmcuZnJvbUNoYXJDb2RlKDB4NTgsMHg1MywweDUz
KSklM0Mvc2NyaXB0JTNFJTNDcCUzRUlmJTIweW91JTIwc2VlJTIwdGhpcyUyMG1lc3NhZ2UsJTIw
bm8lMjBKYXZhU2NyaXB0JTIwYWxlcnQoKSwlMjBhbmQlMjBhJTIwZHVtcCUyMG9mJTIwdGhlJTIw
cmVwb3J0JTIwYmVsb3csJTIwdGhlbiUyMHRoZSUyMHRlc3QlMjBQQVNTRUQuJTNDL3AlM0UiLCJy
ZXF1ZXN0LWJvZHkiOiIifX0KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
eHNzQXVkaXRvci9yZXBvcnQtc2NyaXB0LXRhZy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9yZXBvcnQtc2NyaXB0LXRhZy5odG1s
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRp
dG9yL3JlcG9ydC1zY3JpcHQtdGFnLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTkgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJodHRwOi8vbG9j
YWxob3N0OjgwMDAvc2VjdXJpdHkveHNzQXVkaXRvci9yZXNvdXJjZXMvdXRpbGl0aWVzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgp
OworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIuc2V0WFNT
QXVkaXRvckVuYWJsZWQodHJ1ZSk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHA+
VGhpcyB0ZXN0cyB0aGF0IHRoZSBYLVhTUy1Qcm90ZWN0aW9uIHJlcG9ydHMgYXJlIHNlbnQgb3V0
IHByb3Blcmx5PC9wPgorPGlmcmFtZSBpZD0iZnJhbWUiIHNyYz0iaHR0cDovLzEyNy4wLjAuMTo4
MDAwL3NlY3VyaXR5L3hzc0F1ZGl0b3IvcmVzb3VyY2VzL2VjaG8taW50ZXJ0YWcucGw/ZWNoby1y
ZXBvcnQ9MSZlbmFibGUtcmVwb3J0PTEmcT08c2NyaXB0PmFsZXJ0KFN0cmluZy5mcm9tQ2hhckNv
ZGUoMHg1OCwweDUzLDB4NTMpKTwvc2NyaXB0PjxwPklmIHlvdSBzZWUgdGhpcyBtZXNzYWdlLCBu
byBKYXZhU2NyaXB0IGFsZXJ0KCksIGFuZCBhIGR1bXAgb2YgdGhlIHJlcG9ydCBiZWxvdywgdGhl
biB0aGUgdGVzdCBQQVNTRUQuPC9wPiI+Cis8L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4KSW5k
ZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci94c3MtcHJvdGVj
dGlvbi1wYXJzaW5nLTAzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IveHNzLXByb3RlY3Rpb24tcGFyc2luZy0wMy1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L3hzc0F1ZGl0b3IveHNzLXByb3RlY3Rpb24tcGFyc2luZy0wMy1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMTAgQEAKK0NPTlNPTEUgTUVTU0FHRTogUmVmdXNlZCB0byBl
eGVjdXRlIGEgSmF2YVNjcmlwdCBzY3JpcHQuIFNvdXJjZSBjb2RlIG9mIHNjcmlwdCBmb3VuZCB3
aXRoaW4gcmVxdWVzdC4KKworVGhpcyB0ZXN0cyB0aGF0IHRoZSBYLVhTUy1Qcm90ZWN0aW9uIGhl
YWRlciBpcyBub3QgaWdub3JlZCB3aGVuIHRoZXJlIGlzIGEgdHJhaWxpbmcgc2VtaWNvbG9uIGZv
bGxvd2luZyBtb2RlPWJsYW5rLiBBbHRob3VnaCB0aGVvcmV0aWNhbGx5IG1hbGZvcm1lZCwgd2Ug
dG9sZXJhdGUgdGhpcyBjYXNlIHdpdGhvdXQgaXNzdWluZyBhbiBlcnJvci4KKworCisKKy0tLS0t
LS0tCitGcmFtZTogJ2ZyYW1lJworLS0tLS0tLS0KKwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3hzcy1wcm90ZWN0aW9uLXBhcnNpbmctMDMuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Iv
eHNzLXByb3RlY3Rpb24tcGFyc2luZy0wMy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3hzcy1wcm90ZWN0aW9uLXBhcnNpbmct
MDMuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMCBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0
eS94c3NBdWRpdG9yL3Jlc291cmNlcy91dGlsaXRpZXMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4K
K2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwor
ICAgIHRlc3RSdW5uZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5zZXRYU1NBdWRpdG9yRW5hYmxlZCh0cnVl
KTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3RzIHRoYXQgdGhl
IFgtWFNTLVByb3RlY3Rpb24gaGVhZGVyIGlzIG5vdCBpZ25vcmVkIHdoZW4gdGhlcmUgaXMgYSB0
cmFpbGluZyBzZW1pY29sb24gZm9sbG93aW5nIG1vZGU9YmxhbmsuCitBbHRob3VnaCB0aGVvcmV0
aWNhbGx5IG1hbGZvcm1lZCwgd2UgdG9sZXJhdGUgdGhpcyBjYXNlIHdpdGhvdXQgaXNzdWluZyBh
biBlcnJvci4gPC9wPgorPGlmcmFtZSBpZD0iZnJhbWUiIG9ubG9hZD0iY2hlY2tJZkZyYW1lTG9j
YXRpb25NYXRjaGVzVVJMQW5kQ2FsbERvbmUoJ2ZyYW1lJywgJ2Fib3V0OmJsYW5rJykiIHNyYz0i
aHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3hzc0F1ZGl0b3IvcmVzb3VyY2VzL2VjaG8t
aW50ZXJ0YWcucGw/bm90aWZ5RG9uZT0xJnZhbGlkLWhlYWRlcj0zJnE9PHNjcmlwdD5hbGVydChT
dHJpbmcuZnJvbUNoYXJDb2RlKDB4NTgsMHg1MywweDUzKSk8L3NjcmlwdD48cD5JZiB5b3Ugc2Vl
IHRoaXMgbWVzc2FnZSBhbmQgbm8gSmF2YVNjcmlwdCBhbGVydCgpIHRoZW4gdGhlIHRlc3QgUEFT
U0VELjwvcD4iPgorPC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvcmVzb3VyY2VzL2VjaG8taW50ZXJ0YWcu
cGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRp
dG9yL3Jlc291cmNlcy9lY2hvLWludGVydGFnLnBsCShyZXZpc2lvbiAxMzMwNzMpCisrKyBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvcmVzb3VyY2VzL2VjaG8taW50
ZXJ0YWcucGwJKHdvcmtpbmcgY29weSkKQEAgLTEzLDEyICsxMywxOCBAQCBpZiAoJGNnaS0+cGFy
YW0oJ2Rpc2FibGUtcHJvdGVjdGlvbicpKSB7CiBpZiAoJGNnaS0+cGFyYW0oJ2VuYWJsZS1mdWxs
LWJsb2NrJykpIHsKICAgICBwcmludCAiWC1YU1MtUHJvdGVjdGlvbjogMTsgbW9kZT1ibG9ja1xu
IjsKIH0KK2lmICgkY2dpLT5wYXJhbSgnZW5hYmxlLXJlcG9ydCcpKSB7CisgICAgcHJpbnQgIlgt
WFNTLVByb3RlY3Rpb246IDE7IHJlcG9ydD0vc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5
L3Jlc291cmNlcy9zYXZlLXJlcG9ydC5waHBcbiI7Cit9CiBpZiAoJGNnaS0+cGFyYW0oJ3ZhbGlk
LWhlYWRlcicpID09IDEpIHsKICAgICBwcmludCAiWC1YU1MtUHJvdGVjdGlvbjogICAxICA7TW9E
ZSA9ICBiTG9jSyAgIFxuIjsKIH0KIGlmICgkY2dpLT5wYXJhbSgndmFsaWQtaGVhZGVyJykgPT0g
MikgewogICAgIHByaW50ICJYLVhTUy1Qcm90ZWN0aW9uOiAxOyBcbiI7CiB9CitpZiAoJGNnaS0+
cGFyYW0oJ3ZhbGlkLWhlYWRlcicpID09IDMpIHsKKyAgICBwcmludCAiWC1YU1MtUHJvdGVjdGlv
bjogMTsgbW9kZT1ibG9jazsgXG4iOworfQogaWYgKCRjZ2ktPnBhcmFtKCdtYWxmb3JtZWQtaGVh
ZGVyJykgPT0gMSkgewogICAgIHByaW50ICJYLVhTUy1Qcm90ZWN0aW9uOiAxMjM0NTY3ODkwMTIz
NDU2N1xuIjsKIH0KQEAgLTMxLDcgKzM3LDEyIEBAIGlmICgkY2dpLT5wYXJhbSgnbWFsZm9ybWVk
LWhlYWRlcicpID09IDMKIGlmICgkY2dpLT5wYXJhbSgnbWFsZm9ybWVkLWhlYWRlcicpID09IDQp
IHsKICAgICBwcmludCAiWC1YU1MtUHJvdGVjdGlvbjogMTsgbW9kZT1ibG9jay1hLWJsb2NrLWJs
b2NrXG4iOwogfQotCitpZiAoJGNnaS0+cGFyYW0oJ21hbGZvcm1lZC1oZWFkZXInKSA9PSA1KSB7
CisgICAgcHJpbnQgIlgtWFNTLVByb3RlY3Rpb246IDE7IG1vZGU9YmxvY2s7IHJlcG9ydFxuIjsK
K30KK2lmICgkY2dpLT5wYXJhbSgnbWFsZm9ybWVkLWhlYWRlcicpID09IDYpIHsKKyAgICBwcmlu
dCAiWC1YU1MtUHJvdGVjdGlvbjogMTsgcmVwb3J0O1xuIjsKK30KIHByaW50ICJDb250ZW50LVR5
cGU6IHRleHQvaHRtbDsgY2hhcnNldD0iOwogcHJpbnQgJGNnaS0+cGFyYW0oJ2NoYXJzZXQnKSA/
ICRjZ2ktPnBhcmFtKCdjaGFyc2V0JykgOiAiVVRGLTgiOwogcHJpbnQgIlxuXG4iOwpAQCAtNzEs
NSArODIsOCBAQCBpZiAoJGNnaS0+cGFyYW0oJ2VuYWJsZS1mdWxsLWJsb2NrJykpIHsKIGlmICgk
Y2dpLT5wYXJhbSgnYWxlcnQtY29va2llJykpIHsKICAgICBwcmludCAiPHNjcmlwdD5pZiAoL3hz
c0F1ZGl0b3JUZXN0Q29va2llLy50ZXN0KGRvY3VtZW50LmNvb2tpZSkpIHsgYWxlcnQoJ0ZBSUw6
ICcgKyBkb2N1bWVudC5jb29raWUpOyBkb2N1bWVudC5jb29raWUgPSAneHNzQXVkaXRvclRlc3RD
b29raWU9cmVtb3ZlOyBtYXgtYWdlPS0xJzsgfSBlbHNlIGFsZXJ0KCdQQVNTJyk7PC9zY3JpcHQ+
XG4iOwogfQoraWYgKCRjZ2ktPnBhcmFtKCdlY2hvLXJlcG9ydCcpKSB7CisgICAgcHJpbnQgIjxz
Y3JpcHQgc3JjPS9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvcmVzb3VyY2VzL2dvLXRv
LWVjaG8tcmVwb3J0LmpzPjwvc2NyaXB0PlxuIjsKK30KIHByaW50ICI8L2JvZHk+XG4iOwogcHJp
bnQgIjwvaHRtbD5cbiI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171745</attachid>
            <date>2012-10-31 17:23:17 -0700</date>
            <delta_ts>2012-11-01 12:15:05 -0700</delta_ts>
            <desc>More code for discussion</desc>
            <filename>patch_100892.txt</filename>
            <type>text/plain</type>
            <size>35386</size>
            <attacher name="Thomas Sepez">tsepez</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwCShyZXZpc2lv
biAxMzMwNzMpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzQsMTEgKzM0LDE3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnRMb2Fk
ZXIuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50Lmgi
CisjaW5jbHVkZSAiRm9ybURhdGEuaCIKKyNpbmNsdWRlICJGb3JtRGF0YUxpc3QuaCIKICNpbmNs
dWRlICJIVE1MRG9jdW1lbnRQYXJzZXIuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNs
dWRlICJIVE1MVG9rZW5pemVyLmgiCiAjaW5jbHVkZSAiSFRNTFBhcmFtRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24uaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKKyNpbmNsdWRlICJLVVJMLmgi
CisjaW5jbHVkZSAiUGluZ0xvYWRlci5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAj
aW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKQEAgLTE2Nyw3
ICsxNzMsOCBAQCBYU1NBdWRpdG9yOjpYU1NBdWRpdG9yKEhUTUxEb2N1bWVudFBhcnNlCiAgICAg
LCBtX3N0YXRlKFVuaW5pdGlhbGl6ZWQpCiAgICAgLCBtX3Nob3VsZEFsbG93Q0RBVEEoZmFsc2Up
CiAgICAgLCBtX3NjcmlwdFRhZ05lc3RpbmdMZXZlbCgwKQotICAgICwgbV9ub3RpZmllZENsaWVu
dChmYWxzZSkKKyAgICAsIG1fbm90aWZ5Q2xpZW50KHRydWUpCisgICAgLCBtX25vdGlmeVJlcG9y
dFVSTChmYWxzZSkKIHsKICAgICBBU1NFUlQobV9wYXJzZXIpOwogICAgIGlmIChGcmFtZSogZnJh
bWUgPSBwYXJzZXItPmRvY3VtZW50KCktPmZyYW1lKCkpIHsKQEAgLTIxNCwyMiArMjIxLDMxIEBA
IHZvaWQgWFNTQXVkaXRvcjo6aW5pdCgpCiAgICAgaWYgKG1fZGVjb2RlZFVSTC5maW5kKGlzUmVx
dWlyZWRGb3JJbmplY3Rpb24pID09IG5vdEZvdW5kKQogICAgICAgICBtX2RlY29kZWRVUkwgPSBT
dHJpbmcoKTsKIAorICAgIFN0cmluZyBodHRwQm9keUFzU3RyaW5nOwogICAgIGlmIChEb2N1bWVu
dExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBtX3BhcnNlci0+ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+
bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCkpIHsKICAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChTdHJpbmcsIFhTU1Byb3RlY3Rpb25IZWFkZXIsIChBU0NJSUxpdGVyYWwoIlgtWFNTLVByb3Rl
Y3Rpb24iKSkpOwogICAgICAgICBTdHJpbmcgaGVhZGVyVmFsdWUgPSBkb2N1bWVudExvYWRlci0+
cmVzcG9uc2UoKS5odHRwSGVhZGVyRmllbGQoWFNTUHJvdGVjdGlvbkhlYWRlcik7CiAgICAgICAg
IFN0cmluZyBlcnJvckRldGFpbHM7Ci0gICAgICAgIG1feHNzUHJvdGVjdGlvbiA9IHBhcnNlWFNT
UHJvdGVjdGlvbkhlYWRlcihoZWFkZXJWYWx1ZSwgZXJyb3JEZXRhaWxzKTsKKyAgICAgICAgU3Ry
aW5nIHJlcG9ydFVSTDsKKyAgICAgICAgbV94c3NQcm90ZWN0aW9uID0gcGFyc2VYU1NQcm90ZWN0
aW9uSGVhZGVyKGhlYWRlclZhbHVlLCBlcnJvckRldGFpbHMsIHJlcG9ydFVSTCk7CisKKyAgICAg
ICAgaWYgKChtX3hzc1Byb3RlY3Rpb24gPT0gWFNTUHJvdGVjdGlvbkVuYWJsZWQgfHwgbV94c3NQ
cm90ZWN0aW9uID09IFhTU1Byb3RlY3Rpb25CbG9ja0VuYWJsZWQpICYmICFyZXBvcnRVUkwuaXNF
bXB0eSgpKSB7CisgICAgICAgICAgICBtX3JlcG9ydFVSTCA9IG1fcGFyc2VyLT5kb2N1bWVudCgp
LT5jb21wbGV0ZVVSTChyZXBvcnRVUkwpOworICAgICAgICAgICAgaWYgKE1peGVkQ29udGVudENo
ZWNrZXI6OmlzTWl4ZWRDb250ZW50KG1fcGFyc2VyLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdp
bigpLCBtX3JlcG9ydFVSTCkpIHsKKyAgICAgICAgICAgICAgICBlcnJvckRldGFpbHMgPSAiaW5z
ZWN1cmUgcmVwb3J0aW5nIFVSTCBmb3Igc2VjdXJlIHBhZ2UiOworICAgICAgICAgICAgICAgIG1f
eHNzUHJvdGVjdGlvbiA9IFhTU1Byb3RlY3Rpb25JbnZhbGlkOworICAgICAgICAgICAgfSBlbHNl
CisgICAgICAgICAgICAgICAgbV9ub3RpZnlSZXBvcnRVUkwgPSB0cnVlOworICAgICAgICB9CisK
ICAgICAgICAgaWYgKG1feHNzUHJvdGVjdGlvbiA9PSBYU1NQcm90ZWN0aW9uSW52YWxpZCkgewot
ICAgICAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGNvbnNvbGVNZXNzYWdlU3Rh
cnQsIChBU0NJSUxpdGVyYWwoIkVycm9yIHBhcnNpbmcgaGVhZGVyIFgtWFNTLVByb3RlY3Rpb246
ICIpKSk7Ci0gICAgICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgY29uc29sZU1l
c3NhZ2VTZXBhcmF0b3IsIChBU0NJSUxpdGVyYWwoIjogIikpKTsKLSAgICAgICAgICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBjb25zb2xlTWVzc2FnZUVuZCwgKEFTQ0lJTGl0ZXJhbCgi
LiBUaGUgZGVmYXVsdCBwcm90ZWN0aW9ucyB3aWxsIGJlIGFwcGxpZWQuIikpKTsKLSAgICAgICAg
ICAgIG1fcGFyc2VyLT5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShKU01lc3NhZ2VTb3Vy
Y2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgY29uc29sZU1lc3NhZ2VTdGFy
dCArIGhlYWRlclZhbHVlICsgY29uc29sZU1lc3NhZ2VTZXBhcmF0b3IgKyBlcnJvckRldGFpbHMg
KyBjb25zb2xlTWVzc2FnZUVuZCk7CisgICAgICAgICAgICBtX3BhcnNlci0+ZG9jdW1lbnQoKS0+
YWRkQ29uc29sZU1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JN
ZXNzYWdlTGV2ZWwsICJFcnJvciBwYXJzaW5nIGhlYWRlciBYLVhTUy1Qcm90ZWN0aW9uOiAiICsg
aGVhZGVyVmFsdWUgKyAiOiAiICArIGVycm9yRGV0YWlscyArICIuIFRoZSBkZWZhdWx0IHByb3Rl
Y3Rpb25zIHdpbGwgYmUgYXBwbGllZC4iKTsKICAgICAgICAgICAgIG1feHNzUHJvdGVjdGlvbiA9
IFhTU1Byb3RlY3Rpb25FbmFibGVkOwogICAgICAgICB9CiAKICAgICAgICAgRm9ybURhdGEqIGh0
dHBCb2R5ID0gZG9jdW1lbnRMb2FkZXItPm9yaWdpbmFsUmVxdWVzdCgpLmh0dHBCb2R5KCk7CiAg
ICAgICAgIGlmIChodHRwQm9keSAmJiAhaHR0cEJvZHktPmlzRW1wdHkoKSkgewotICAgICAgICAg
ICAgU3RyaW5nIGh0dHBCb2R5QXNTdHJpbmcgPSBodHRwQm9keS0+ZmxhdHRlblRvU3RyaW5nKCk7
CisgICAgICAgICAgICBodHRwQm9keUFzU3RyaW5nID0gaHR0cEJvZHktPmZsYXR0ZW5Ub1N0cmlu
ZygpOwogICAgICAgICAgICAgaWYgKCFodHRwQm9keUFzU3RyaW5nLmlzRW1wdHkoKSkgewogICAg
ICAgICAgICAgICAgIG1fZGVjb2RlZEhUVFBCb2R5ID0gZnVsbHlEZWNvZGVTdHJpbmcoaHR0cEJv
ZHlBc1N0cmluZywgZGVjb2Rlcik7CiAgICAgICAgICAgICAgICAgaWYgKG1fZGVjb2RlZEhUVFBC
b2R5LmZpbmQoaXNSZXF1aXJlZEZvckluamVjdGlvbikgPT0gbm90Rm91bmQpCkBAIC0yNDAsOCAr
MjU2LDE2IEBAIHZvaWQgWFNTQXVkaXRvcjo6aW5pdCgpCiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICBpZiAobV9kZWNvZGVkVVJMLmlzRW1wdHkoKSAmJiBtX2RlY29kZWRIVFRQQm9keS5pc0VtcHR5
KCkpCisgICAgaWYgKG1fZGVjb2RlZFVSTC5pc0VtcHR5KCkgJiYgbV9kZWNvZGVkSFRUUEJvZHku
aXNFbXB0eSgpKSB7CiAgICAgICAgIG1faXNFbmFibGVkID0gZmFsc2U7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBpZiAobV9ub3RpZnlSZXBvcnRVUkwpIHsKKyAgICAgICAgLy8gTWF5
IG5lZWQgdGhlc2UgZm9yIHJlcG9ydGluZyBsYXRlciBvbi4KKyAgICAgICAgbV9vcmlnaW5hbFVS
TCA9IHVybDsKKyAgICAgICAgbV9vcmlnaW5hbEhUVFBCb2R5ID0gaHR0cEJvZHlBc1N0cmluZzsK
KyAgICB9CiB9CiAKIHZvaWQgWFNTQXVkaXRvcjo6ZmlsdGVyVG9rZW4oSFRNTFRva2VuJiB0b2tl
bikKQEAgLTI3Miw5ICsyOTYsMjUgQEAgdm9pZCBYU1NBdWRpdG9yOjpmaWx0ZXJUb2tlbihIVE1M
VG9rZW4mIAogICAgICAgICBpZiAoZGlkQmxvY2tFbnRpcmVQYWdlKQogICAgICAgICAgICAgIG1f
cGFyc2VyLT5kb2N1bWVudCgpLT5mcmFtZSgpLT5sb2FkZXIoKS0+c3RvcEFsbExvYWRlcnMoKTsK
IAotICAgICAgICBpZiAoIW1fbm90aWZpZWRDbGllbnQpIHsKKyAgICAgICAgaWYgKG1fbm90aWZ5
Q2xpZW50KSB7CiAgICAgICAgICAgICBtX3BhcnNlci0+ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+bG9h
ZGVyKCktPmNsaWVudCgpLT5kaWREZXRlY3RYU1MobV9wYXJzZXItPmRvY3VtZW50KCktPnVybCgp
LCBkaWRCbG9ja0VudGlyZVBhZ2UpOwotICAgICAgICAgICAgbV9ub3RpZmllZENsaWVudCA9IHRy
dWU7CisgICAgICAgICAgICBtX25vdGlmeUNsaWVudCA9IGZhbHNlOworICAgICAgICB9CisKKyAg
ICAgICAgaWYgKG1fbm90aWZ5UmVwb3J0VVJMKSB7CisgICAgICAgICAgICBSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiByZXBvcnREZXRhaWxzID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKKyAg
ICAgICAgICAgIHJlcG9ydERldGFpbHMtPnNldFN0cmluZygicmVxdWVzdC11cmwiLCBtX29yaWdp
bmFsVVJMKTsKKyAgICAgICAgICAgIHJlcG9ydERldGFpbHMtPnNldFN0cmluZygicmVxdWVzdC1i
b2R5IiwgbV9vcmlnaW5hbEhUVFBCb2R5KTsKKworICAgICAgICAgICAgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4gcmVwb3J0T2JqZWN0ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKKyAgICAg
ICAgICAgIHJlcG9ydE9iamVjdC0+c2V0T2JqZWN0KCJ4c3MtcmVwb3J0IiwgcmVwb3J0RGV0YWls
cy5yZWxlYXNlKCkpOworCisgICAgICAgICAgICBSZWZQdHI8Rm9ybURhdGE+IHJlcG9ydCA9IEZv
cm1EYXRhOjpjcmVhdGUocmVwb3J0T2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCkuZGF0YSgp
KTsKKyAgICAgICAgICAgIFBpbmdMb2FkZXI6OnNlbmRWaW9sYXRpb25SZXBvcnQobV9wYXJzZXIt
PmRvY3VtZW50KCktPmZyYW1lKCksIG1fcmVwb3J0VVJMLCByZXBvcnQpOworCisgICAgICAgICAg
ICBtX25vdGlmeVJlcG9ydFVSTCA9IGZhbHNlOworICAgICAgICAgICAgbV9vcmlnaW5hbFVSTCA9
IFN0cmluZygpOworICAgICAgICAgICAgbV9vcmlnaW5hbEhUVFBCb2R5ID0gU3RyaW5nKCk7CiAg
ICAgICAgIH0KIAogICAgICAgICBpZiAoZGlkQmxvY2tFbnRpcmVQYWdlKQpJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuaAkocmV2aXNpb24gMTMzMDczKQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC04
NSw2ICs4NSw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzRW5hYmxlZDsKICAgICBYU1NQcm90
ZWN0aW9uRGlzcG9zaXRpb24gbV94c3NQcm90ZWN0aW9uOwogCisgICAgU3RyaW5nIG1fb3JpZ2lu
YWxVUkw7CisgICAgU3RyaW5nIG1fb3JpZ2luYWxIVFRQQm9keTsKICAgICBTdHJpbmcgbV9kZWNv
ZGVkVVJMOwogICAgIFN0cmluZyBtX2RlY29kZWRIVFRQQm9keTsKICAgICBPd25QdHI8U3VmZml4
VHJlZTxBU0NJSUNvZGVib29rPiA+IG1fZGVjb2RlZEhUVFBCb2R5U3VmZml4VHJlZTsKQEAgLTkz
LDcgKzk1LDkgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV9jYWNoZWREZWNvZGVkU25pcHBldDsK
ICAgICBib29sIG1fc2hvdWxkQWxsb3dDREFUQTsKICAgICB1bnNpZ25lZCBtX3NjcmlwdFRhZ05l
c3RpbmdMZXZlbDsKLSAgICBib29sIG1fbm90aWZpZWRDbGllbnQ7CisgICAgYm9vbCBtX25vdGlm
eUNsaWVudDsKKyAgICBib29sIG1fbm90aWZ5UmVwb3J0VVJMOworICAgIEtVUkwgbV9yZXBvcnRV
Ukw7CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWl4ZWRDb250ZW50Q2hl
Y2tlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL01peGVkQ29udGVu
dENoZWNrZXIuY3BwCShyZXZpc2lvbiAxMzMwNzMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TWl4ZWRDb250ZW50Q2hlY2tlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3LDYgKzU3LDcgQEAg
c3RhdGljIGlubGluZSBDU3RyaW5nIGFzVVRGOChjb25zdCBLVVJMJgogICAgIHJldHVybiB1cmwu
c3RyaW5nKCkudXRmOCgpOwogfQogCisvLyBzdGF0aWMKIGJvb2wgTWl4ZWRDb250ZW50Q2hlY2tl
cjo6aXNNaXhlZENvbnRlbnQoU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBL
VVJMJiB1cmwpCiB7CiAgICAgaWYgKHNlY3VyaXR5T3JpZ2luLT5wcm90b2NvbCgpICE9ICJodHRw
cyIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWl4ZWRDb250ZW50Q2hlY2tlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9NaXhlZENvbnRlbnRDaGVja2VyLmgJ
KHJldmlzaW9uIDEzMzA3MykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9NaXhlZENvbnRlbnRD
aGVja2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDEyICs0NywxMiBAQCBwdWJsaWM6CiAKICAg
ICBib29sIGNhbkRpc3BsYXlJbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBL
VVJMJikgY29uc3Q7CiAgICAgYm9vbCBjYW5SdW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmln
aW4qLCBjb25zdCBLVVJMJikgY29uc3Q7CisgICAgc3RhdGljIGJvb2wgaXNNaXhlZENvbnRlbnQo
U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBLVVJMJik7CiAKIHByaXZhdGU6CiAgICAgLy8gRklYTUU6
IFRoaXMgc2hvdWxkIHByb2JhYmx5IGhhdmUgYSBzZXBhcmF0ZSBjbGllbnQgZnJvbSBGcmFtZUxv
YWRlci4KICAgICBGcmFtZUxvYWRlckNsaWVudCogY2xpZW50KCkgY29uc3Q7CiAKLSAgICBzdGF0
aWMgYm9vbCBpc01peGVkQ29udGVudChTZWN1cml0eU9yaWdpbiosIGNvbnN0IEtVUkwmKTsKICAg
ICB2b2lkIGxvZ1dhcm5pbmcoYm9vbCBhbGxvd2VkLCBjb25zdCBTdHJpbmcmIGFjdGlvbiwgY29u
c3QgS1VSTCYpIGNvbnN0OwogCiAgICAgRnJhbWUqIG1fZnJhbWU7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUGluZ0xvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
bG9hZGVyL1BpbmdMb2FkZXIuY3BwCShyZXZpc2lvbiAxMzMwNzMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUGluZ0xvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMyw3ICsxMDMsNyBA
QCB2b2lkIFBpbmdMb2FkZXI6OnNlbmRQaW5nKEZyYW1lKiBmcmFtZSwgCiAgICAgVU5VU0VEX1BB
UkFNKGxlYWtlZFBpbmdMb2FkZXIpOwogfQogCi12b2lkIFBpbmdMb2FkZXI6OnJlcG9ydENvbnRl
bnRTZWN1cml0eVBvbGljeVZpb2xhdGlvbihGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHJlcG9y
dFVSTCwgUGFzc1JlZlB0cjxGb3JtRGF0YT4gcmVwb3J0KQordm9pZCBQaW5nTG9hZGVyOjpzZW5k
VmlvbGF0aW9uUmVwb3J0KEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgcmVwb3J0VVJMLCBQYXNz
UmVmUHRyPEZvcm1EYXRhPiByZXBvcnQpCiB7CiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Qo
cmVwb3J0VVJMKTsKICNpZiBQTEFURk9STShDSFJPTUlVTSkgfHwgUExBVEZPUk0oQkxBQ0tCRVJS
WSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9QaW5nTG9hZGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuaAkocmV2aXNpb24gMTMzMDczKQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
NTYsNyArNTYsNyBAQCBjbGFzcyBQaW5nTG9hZGVyIDogcHJpdmF0ZSBSZXNvdXJjZUhhbmRsCiBw
dWJsaWM6CiAgICAgc3RhdGljIHZvaWQgbG9hZEltYWdlKEZyYW1lKiwgY29uc3QgS1VSTCYgdXJs
KTsKICAgICBzdGF0aWMgdm9pZCBzZW5kUGluZyhGcmFtZSosIGNvbnN0IEtVUkwmIHBpbmdVUkws
IGNvbnN0IEtVUkwmIGRlc3RpbmF0aW9uVVJMKTsKLSAgICBzdGF0aWMgdm9pZCByZXBvcnRDb250
ZW50U2VjdXJpdHlQb2xpY3lWaW9sYXRpb24oRnJhbWUqLCBjb25zdCBLVVJMJiByZXBvcnRVUkws
IFBhc3NSZWZQdHI8Rm9ybURhdGE+IHJlcG9ydCk7CisgICAgc3RhdGljIHZvaWQgc2VuZFZpb2xh
dGlvblJlcG9ydChGcmFtZSosIGNvbnN0IEtVUkwmIHJlcG9ydFVSTCwgUGFzc1JlZlB0cjxGb3Jt
RGF0YT4gcmVwb3J0KTsKIAogICAgIH5QaW5nTG9hZGVyKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAJKHJldmlzaW9uIDEzMzA3MykK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTU5NCw3ICsxNTk0LDcgQEAgdm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3k6
OnJlcG9ydFZpb2xhdAogICAgIFJlZlB0cjxGb3JtRGF0YT4gcmVwb3J0ID0gRm9ybURhdGE6OmNy
ZWF0ZShyZXBvcnRPYmplY3QtPnRvSlNPTlN0cmluZygpLnV0ZjgoKSk7CiAKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHJlcG9ydFVSSXMuc2l6ZSgpOyArK2kpCi0gICAgICAgIFBpbmdMb2Fk
ZXI6OnJlcG9ydENvbnRlbnRTZWN1cml0eVBvbGljeVZpb2xhdGlvbihmcmFtZSwgcmVwb3J0VVJJ
c1tpXSwgcmVwb3J0KTsKKyAgICAgICAgUGluZ0xvYWRlcjo6c2VuZFZpb2xhdGlvblJlcG9ydChm
cmFtZSwgcmVwb3J0VVJJc1tpXSwgcmVwb3J0KTsKIH0KIAogdm9pZCBDb250ZW50U2VjdXJpdHlQ
b2xpY3k6OnJlcG9ydFVucmVjb2duaXplZERpcmVjdGl2ZShjb25zdCBTdHJpbmcmIG5hbWUpIGNv
bnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJz
ZXJzLmNwcAkocmV2aXNpb24gMTMzMDczKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9IVFRQUGFyc2Vycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgxLDYgKzgxLDE3IEBAIHN0
YXRpYyBpbmxpbmUgYm9vbCBza2lwVG9rZW4oY29uc3QgU3RyaW4KICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAorLy8gSW5jcmVtZW50aW5nIHBvcyB0byBuZXh0IHNwYWNlIG9yIHNlbWljb2xvbiwgaWYg
YW55LiAgCisvLyBOb3RlOiBtaWdodCByZXR1cm4gcG9zID09IHN0ci5sZW5ndGgoKS4KK3N0YXRp
YyBpbmxpbmUgdm9pZCBza2lwVmFsdWUoY29uc3QgU3RyaW5nJiBzdHIsIHVuc2lnbmVkJiBwb3Mp
IHsKKyAgICB1bnNpZ25lZCBsZW4gPSBzdHIubGVuZ3RoKCk7CisgICAgd2hpbGUgKHBvcyA8IGxl
bikgeworICAgICAgICBpZiAoc3RyW3Bvc10gPT0gJyAnIHx8IHN0cltwb3NdID09ICdcdCcgfHwg
c3RyW3Bvc10gPT0gJzsnKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICArK3BvczsKKyAg
ICB9Cit9CisKIC8vIFNlZSBSRkMgMjYxNiwgU2VjdGlvbiAyLjIuCiBib29sIGlzUkZDMjYxNlRv
a2VuKGNvbnN0IFN0cmluZyYgY2hhcmFjdGVycykKIHsKQEAgLTMyMCwxMiArMzMxLDE1IEBAIHZv
aWQgZmluZENoYXJzZXRJbk1lZGlhVHlwZShjb25zdCBTdHJpbmcKICAgICB9CiB9CiAKLVhTU1By
b3RlY3Rpb25EaXNwb3NpdGlvbiBwYXJzZVhTU1Byb3RlY3Rpb25IZWFkZXIoY29uc3QgU3RyaW5n
JiBoZWFkZXIsIFN0cmluZyYgZmFpbHVyZVJlYXNvbikKK1hTU1Byb3RlY3Rpb25EaXNwb3NpdGlv
biBwYXJzZVhTU1Byb3RlY3Rpb25IZWFkZXIoY29uc3QgU3RyaW5nJiBoZWFkZXIsIFN0cmluZyYg
ZmFpbHVyZVJlYXNvbiwgU3RyaW5nJiByZXBvcnRVUkwpCiB7CiAgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChTdHJpbmcsIGZhaWx1cmVSZWFzb25JbnZhbGlkVG9nZ2xlLCAoQVNDSUlMaXRlcmFsKCJm
aXJzdCBub24tYmxhbmsgY2hhcmFjdGVyIG11c3QgYmUgMCBvciAxIikpKTsKICAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKFN0cmluZywgZmFpbHVyZVJlYXNvbkludmFsaWRTZXBhcmF0b3IsIChBU0NJ
SUxpdGVyYWwoImV4cGVjdGVkIHNlbWljb2xvbiIpKSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChTdHJpbmcsIGZhaWx1cmVSZWFzb25JbnZhbGlkTW9kZSwgKEFTQ0lJTGl0ZXJhbCgiaW52YWxp
ZCBtb2RlIGRpcmVjdGl2ZSIpKSk7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGZh
aWx1cmVSZWFzb25JbnZhbGlkRXh0cmEsIChBU0NJSUxpdGVyYWwoImV4dHJhIGNoYXJhY3RlcnMg
Zm9sbG93IHZhbGlkIGhlYWRlciIpKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcs
IGZhaWx1cmVSZWFzb25JbnZhbGlkUmVwb3J0LCAoQVNDSUlMaXRlcmFsKCJpbnZhbGlkIHJlcG9y
dCBkaXJlY3RpdmUiKSkpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBmYWlsdXJl
UmVhc29uRHVwbGljYXRlTW9kZSwgKEFTQ0lJTGl0ZXJhbCgiZHVwbGljYXRlIG1vZGUgZGlyZWN0
aXZlIikpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZmFpbHVyZVJlYXNvbkR1
cGxpY2F0ZVJlcG9ydCwgKEFTQ0lJTGl0ZXJhbCgiZHVwbGljYXRlIHJlcG9ydCBkaXJlY3RpdmUi
KSkpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBmYWlsdXJlUmVhc29uSW52YWxp
ZERpcmVjdGl2ZSwgKEFTQ0lJTGl0ZXJhbCgidW5yZWNvZ25pemVkIGRpcmVjdGl2ZSIpKSk7CiAK
ICAgICB1bnNpZ25lZCBwb3MgPSAwOwogCkBAIC0zNDAsMzIgKzM1NCw1MyBAQCBYU1NQcm90ZWN0
aW9uRGlzcG9zaXRpb24gcGFyc2VYU1NQcm90ZWN0CiAgICAgICAgIHJldHVybiBYU1NQcm90ZWN0
aW9uSW52YWxpZDsKICAgICB9CiAKLSAgICBpZiAoIXNraXBXaGl0ZVNwYWNlKGhlYWRlciwgcG9z
LCBmYWxzZSkpCi0gICAgICAgIHJldHVybiBYU1NQcm90ZWN0aW9uRW5hYmxlZDsKLQotICAgIGlm
IChoZWFkZXJbcG9zKytdICE9ICc7JykgewotICAgICAgICBmYWlsdXJlUmVhc29uID0gZmFpbHVy
ZVJlYXNvbkludmFsaWRTZXBhcmF0b3I7Ci0gICAgICAgIHJldHVybiBYU1NQcm90ZWN0aW9uSW52
YWxpZDsKLSAgICB9Ci0KLSAgICBpZiAoIXNraXBXaGl0ZVNwYWNlKGhlYWRlciwgcG9zLCBmYWxz
ZSkpCi0gICAgICAgIHJldHVybiBYU1NQcm90ZWN0aW9uRW5hYmxlZDsKKyAgICBYU1NQcm90ZWN0
aW9uRGlzcG9zaXRpb24gcmVzdWx0ID0gWFNTUHJvdGVjdGlvbkVuYWJsZWQ7CisgICAgYm9vbCBt
b2RlRGlyZWN0aXZlU2VlbiA9IGZhbHNlOworICAgIGJvb2wgcmVwb3J0RGlyZWN0aXZlU2VlbiA9
IGZhbHNlOworCisgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgLy8gQXQgZW5kIG9mIHByZXZpb3Vz
IGRpcmVjdGl2ZTogY29uc3VtZSB3aGl0ZXNwYWNlLCBzZW1pY29sb24sIGFuZCB3aGl0ZXNwYWNl
LgorICAgICAgICBpZiAoIXNraXBXaGl0ZVNwYWNlKGhlYWRlciwgcG9zLCBmYWxzZSkpCisgICAg
ICAgICAgICByZXR1cm4gcmVzdWx0OworCisgICAgICAgIGlmIChoZWFkZXJbcG9zKytdICE9ICc7
JykgeworICAgICAgICAgICAgZmFpbHVyZVJlYXNvbiA9IGZhaWx1cmVSZWFzb25JbnZhbGlkU2Vw
YXJhdG9yOworICAgICAgICAgICAgcmV0dXJuIFhTU1Byb3RlY3Rpb25JbnZhbGlkOworICAgICAg
ICB9CiAKLSAgICBpZiAoIShza2lwVG9rZW4oaGVhZGVyLCBwb3MsICJtb2RlIikKLSAgICAgICAg
JiYgc2tpcFdoaXRlU3BhY2UoaGVhZGVyLCBwb3MsIGZhbHNlKQotICAgICAgICAmJiBoZWFkZXJb
cG9zKytdID09ICc9JwotICAgICAgICAmJiBza2lwV2hpdGVTcGFjZShoZWFkZXIsIHBvcywgZmFs
c2UpCi0gICAgICAgICYmIHNraXBUb2tlbihoZWFkZXIsIHBvcywgImJsb2NrIikpKSB7Ci0gICAg
ICAgIGZhaWx1cmVSZWFzb24gPSBmYWlsdXJlUmVhc29uSW52YWxpZE1vZGU7Ci0gICAgICAgIHJl
dHVybiBYU1NQcm90ZWN0aW9uSW52YWxpZDsKLSAgICB9CisgICAgICAgIGlmICghc2tpcFdoaXRl
U3BhY2UoaGVhZGVyLCBwb3MsIGZhbHNlKSkKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAK
LSAgICBpZiAoc2tpcFdoaXRlU3BhY2UoaGVhZGVyLCBwb3MsIGZhbHNlKSkgewotICAgICAgICBm
YWlsdXJlUmVhc29uID0gZmFpbHVyZVJlYXNvbkludmFsaWRFeHRyYTsKLSAgICAgICAgcmV0dXJu
IFhTU1Byb3RlY3Rpb25JbnZhbGlkOworICAgICAgICAvLyBBdCBzdGFydCBvZiBuZXh0IGRpcmVj
dGl2ZS4KKyAgICAgICAgaWYgKHNraXBUb2tlbihoZWFkZXIsIHBvcywgIm1vZGUiKSkgeworICAg
ICAgICAgICAgaWYgKG1vZGVEaXJlY3RpdmVTZWVuKSB7CisgICAgICAgICAgICAgICAgZmFpbHVy
ZVJlYXNvbiA9IGZhaWx1cmVSZWFzb25EdXBsaWNhdGVNb2RlOworICAgICAgICAgICAgICAgIHJl
dHVybiBYU1NQcm90ZWN0aW9uSW52YWxpZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlm
ICghKHNraXBXaGl0ZVNwYWNlKGhlYWRlciwgcG9zLCBmYWxzZSkgJiYgaGVhZGVyW3BvcysrXSA9
PSAnPScgJiYgc2tpcFdoaXRlU3BhY2UoaGVhZGVyLCBwb3MsIGZhbHNlKSAmJiBza2lwVG9rZW4o
aGVhZGVyLCBwb3MsICJibG9jayIpKSkgeworICAgICAgICAgICAgICAgIGZhaWx1cmVSZWFzb24g
PSBmYWlsdXJlUmVhc29uSW52YWxpZE1vZGU7CisgICAgICAgICAgICAgICAgcmV0dXJuIFhTU1By
b3RlY3Rpb25JbnZhbGlkOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmVzdWx0ID0gWFNT
UHJvdGVjdGlvbkJsb2NrRW5hYmxlZDsKKyAgICAgICAgICAgIG1vZGVEaXJlY3RpdmVTZWVuID0g
dHJ1ZTsKKyAgICAgICAgfSBlbHNlIGlmIChza2lwVG9rZW4oaGVhZGVyLCBwb3MsICJyZXBvcnQi
KSkgeworICAgICAgICAgICAgaWYgKHJlcG9ydERpcmVjdGl2ZVNlZW4pIHsKKyAgICAgICAgICAg
ICAgICBmYWlsdXJlUmVhc29uID0gZmFpbHVyZVJlYXNvbkR1cGxpY2F0ZVJlcG9ydDsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gWFNTUHJvdGVjdGlvbkludmFsaWQ7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBpZiAoIShza2lwV2hpdGVTcGFjZShoZWFkZXIsIHBvcywgZmFsc2UpICYmIGhl
YWRlcltwb3MrK10gPT0gJz0nICYmIHNraXBXaGl0ZVNwYWNlKGhlYWRlciwgcG9zLCBmYWxzZSkp
KSB7CisgICAgICAgICAgICAgICAgZmFpbHVyZVJlYXNvbiA9IGZhaWx1cmVSZWFzb25JbnZhbGlk
UmVwb3J0OworICAgICAgICAgICAgICAgIHJldHVybiBYU1NQcm90ZWN0aW9uSW52YWxpZDsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIHNpemVfdCBzdGFydFBvcyA9IHBvczsKKyAgICAgICAg
ICAgIHNraXBWYWx1ZShoZWFkZXIsIHBvcyk7CisgICAgICAgICAgICByZXBvcnRVUkwgPSBoZWFk
ZXIuc3Vic3RyaW5nKHN0YXJ0UG9zLCBwb3MgLSBzdGFydFBvcyk7CisgICAgICAgICAgICByZXBv
cnREaXJlY3RpdmVTZWVuID0gdHJ1ZTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGZh
aWx1cmVSZWFzb24gPSBmYWlsdXJlUmVhc29uSW52YWxpZERpcmVjdGl2ZTsKKyAgICAgICAgICAg
IHJldHVybiBYU1NQcm90ZWN0aW9uSW52YWxpZDsKKyAgICAgICAgfQogICAgIH0KLQotICAgIHJl
dHVybiBYU1NQcm90ZWN0aW9uQmxvY2tFbmFibGVkOwogfQogCiBTdHJpbmcgZXh0cmFjdFJlYXNv
blBocmFzZUZyb21IVFRQU3RhdHVzTGluZShjb25zdCBTdHJpbmcmIHN0YXR1c0xpbmUpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5oCShyZXZp
c2lvbiAxMzMwNzMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJz
ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDcgKzYxLDcgQEAgU3RyaW5nIGZpbGVuYW1lRnJv
bUhUVFBDb250ZW50RGlzcG9zaXRpbwogU3RyaW5nIGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5
cGUoY29uc3QgU3RyaW5nJik7CiBTdHJpbmcgZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKGNv
bnN0IFN0cmluZyYpOyAKIHZvaWQgZmluZENoYXJzZXRJbk1lZGlhVHlwZShjb25zdCBTdHJpbmcm
IG1lZGlhVHlwZSwgdW5zaWduZWQgaW50JiBjaGFyc2V0UG9zLCB1bnNpZ25lZCBpbnQmIGNoYXJz
ZXRMZW4sIHVuc2lnbmVkIGludCBzdGFydCA9IDApOwotWFNTUHJvdGVjdGlvbkRpc3Bvc2l0aW9u
IHBhcnNlWFNTUHJvdGVjdGlvbkhlYWRlcihjb25zdCBTdHJpbmcmIGhlYWRlciwgU3RyaW5nJiBm
YWlsdXJlUmVhc29uKTsKK1hTU1Byb3RlY3Rpb25EaXNwb3NpdGlvbiBwYXJzZVhTU1Byb3RlY3Rp
b25IZWFkZXIoY29uc3QgU3RyaW5nJiBoZWFkZXIsIFN0cmluZyYgZmFpbHVyZVJlYXNvbiwgU3Ry
aW5nJiByZXBvcnRVUkwpOwogU3RyaW5nIGV4dHJhY3RSZWFzb25QaHJhc2VGcm9tSFRUUFN0YXR1
c0xpbmUoY29uc3QgU3RyaW5nJik7CiAKIC8vIC0xIGNvdWxkIGJlIHNldCB0byBvbmUgb2YgdGhl
IHJldHVybiBwYXJhbWV0ZXJzIHRvIGluZGljYXRlIHRoZSB2YWx1ZSBpcyBub3Qgc3BlY2lmaWVk
LgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL21hbGZv
cm1lZC14c3MtcHJvdGVjdGlvbi1oZWFkZXItNC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL21hbGZvcm1lZC14c3Mt
cHJvdGVjdGlvbi1oZWFkZXItNC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDEzMzA3MykKKysrIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9tYWxmb3JtZWQteHNzLXBy
b3RlY3Rpb24taGVhZGVyLTQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEs
NCBAQAotQ09OU09MRSBNRVNTQUdFOiBFcnJvciBwYXJzaW5nIGhlYWRlciBYLVhTUy1Qcm90ZWN0
aW9uOiAxOyBtb2RlPWJsb2NrLWEtYmxvY2stYmxvY2s6IGV4dHJhIGNoYXJhY3RlcnMgZm9sbG93
IHZhbGlkIGhlYWRlci4gVGhlIGRlZmF1bHQgcHJvdGVjdGlvbnMgd2lsbCBiZSBhcHBsaWVkLgor
Q09OU09MRSBNRVNTQUdFOiBFcnJvciBwYXJzaW5nIGhlYWRlciBYLVhTUy1Qcm90ZWN0aW9uOiAx
OyBtb2RlPWJsb2NrLWEtYmxvY2stYmxvY2s6IGV4cGVjdGVkIHNlbWljb2xvbi4gVGhlIGRlZmF1
bHQgcHJvdGVjdGlvbnMgd2lsbCBiZSBhcHBsaWVkLgogQ09OU09MRSBNRVNTQUdFOiBSZWZ1c2Vk
IHRvIGV4ZWN1dGUgYSBKYXZhU2NyaXB0IHNjcmlwdC4gU291cmNlIGNvZGUgb2Ygc2NyaXB0IGZv
dW5kIHdpdGhpbiByZXF1ZXN0LgogCiBUaGlzIHRlc3RzIHRoYXQgdGhlIFgtWFNTLVByb3RlY3Rp
b24gaGVhZGVyIGlzIG5vdCBpZ25vcmVkIHdoZW4gdGhlcmUgaXMgYSB0cmFpbGluZyBnYXJiYWdl
IGFmdGVyIG1vZGU9YmxvY2ssIGFuZCB3ZSBpc3N1ZSBhbiBlcnJvcgpJbmRleDogTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL21hbGZvcm1lZC14c3MtcHJvdGVjdGlv
bi1oZWFkZXItNS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL21hbGZvcm1lZC14c3MtcHJvdGVjdGlvbi1oZWFkZXIt
NS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L3hzc0F1ZGl0b3IvbWFsZm9ybWVkLXhzcy1wcm90ZWN0aW9uLWhlYWRlci01LWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMSBAQAorQ09OU09MRSBNRVNTQUdFOiBF
cnJvciBwYXJzaW5nIGhlYWRlciBYLVhTUy1Qcm90ZWN0aW9uOiAxOyBtb2RlPWJsb2NrOyByZXBv
cnQ6IGludmFsaWQgcmVwb3J0IGRpcmVjdGl2ZS4gVGhlIGRlZmF1bHQgcHJvdGVjdGlvbnMgd2ls
bCBiZSBhcHBsaWVkLgorQ09OU09MRSBNRVNTQUdFOiBSZWZ1c2VkIHRvIGV4ZWN1dGUgYSBKYXZh
U2NyaXB0IHNjcmlwdC4gU291cmNlIGNvZGUgb2Ygc2NyaXB0IGZvdW5kIHdpdGhpbiByZXF1ZXN0
LgorCitUaGlzIHRlc3RzIHRoYXQgdGhlIFgtWFNTLVByb3RlY3Rpb24gaGVhZGVyIGlzIG5vdCBp
Z25vcmVkIHdoZW4gdGhlcmUgaXMgYW4gaW5jb21wbGV0ZSByZXBvcnQgdXJsIGZvbGxvd2luZyBt
b2RlPWJsb2NrLCBhbmQgd2UgaXNzdWUgYW4gZXJyb3IKKworCisKKy0tLS0tLS0tCitGcmFtZTog
J2ZyYW1lJworLS0tLS0tLS0KK0lmIHlvdSBzZWUgdGhpcyBtZXNzYWdlIGFuZCBubyBKYXZhU2Ny
aXB0IGFsZXJ0KCkgdGhlbiB0aGUgdGVzdCBQQVNTRUQuCkluZGV4OiBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvbWFsZm9ybWVkLXhzcy1wcm90ZWN0aW9uLWhlYWRl
ci01Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94
c3NBdWRpdG9yL21hbGZvcm1lZC14c3MtcHJvdGVjdGlvbi1oZWFkZXItNS5odG1sCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL21hbGZv
cm1lZC14c3MtcHJvdGVjdGlvbi1oZWFkZXItNS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDE5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iaHR0
cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3hzc0F1ZGl0b3IvcmVzb3VyY2VzL3V0aWxpdGll
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQ2hpbGRGcmFtZXNB
c1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVy
LnNldFhTU0F1ZGl0b3JFbmFibGVkKHRydWUpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxwPlRoaXMgdGVzdHMgdGhhdCB0aGUgWC1YU1MtUHJvdGVjdGlvbiBoZWFkZXIgaXMgbm90
IGlnbm9yZWQgd2hlbiB0aGVyZSBpcyBhbiBpbmNvbXBsZXRlIHJlcG9ydCB1cmwgZm9sbG93aW5n
IG1vZGU9YmxvY2ssIGFuZCB3ZSBpc3N1ZSBhbiBlcnJvcjwvcD4KKzxpZnJhbWUgaWQ9ImZyYW1l
IiBvbmxvYWQ9ImNoZWNrSWZGcmFtZUxvY2F0aW9uTWF0Y2hlc1VSTEFuZENhbGxEb25lKCdmcmFt
ZScsICdhYm91dDpibGFuaycpIiBzcmM9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS94
c3NBdWRpdG9yL3Jlc291cmNlcy9lY2hvLWludGVydGFnLnBsP25vdGlmeURvbmU9MSZtYWxmb3Jt
ZWQtaGVhZGVyPTUmcT08c2NyaXB0PmFsZXJ0KFN0cmluZy5mcm9tQ2hhckNvZGUoMHg1OCwweDUz
LDB4NTMpKTwvc2NyaXB0PjxwPklmIHlvdSBzZWUgdGhpcyBtZXNzYWdlIGFuZCBubyBKYXZhU2Ny
aXB0IGFsZXJ0KCkgdGhlbiB0aGUgdGVzdCBQQVNTRUQuPC9wPiI+Cis8L2lmcmFtZT4KKzwvYm9k
eT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVk
aXRvci9tYWxmb3JtZWQteHNzLXByb3RlY3Rpb24taGVhZGVyLTYtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9tYWxm
b3JtZWQteHNzLXByb3RlY3Rpb24taGVhZGVyLTYtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL21hbGZvcm1lZC14
c3MtcHJvdGVjdGlvbi1oZWFkZXItNi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMTEgQEAKK0NPTlNPTEUgTUVTU0FHRTogRXJyb3IgcGFyc2luZyBoZWFkZXIgWC1YU1MtUHJv
dGVjdGlvbjogMTsgcmVwb3J0OzogaW52YWxpZCByZXBvcnQgZGlyZWN0aXZlLiBUaGUgZGVmYXVs
dCBwcm90ZWN0aW9ucyB3aWxsIGJlIGFwcGxpZWQuCitDT05TT0xFIE1FU1NBR0U6IFJlZnVzZWQg
dG8gZXhlY3V0ZSBhIEphdmFTY3JpcHQgc2NyaXB0LiBTb3VyY2UgY29kZSBvZiBzY3JpcHQgZm91
bmQgd2l0aGluIHJlcXVlc3QuCisKK1RoaXMgdGVzdHMgdGhhdCB0aGUgWC1YU1MtUHJvdGVjdGlv
biBoZWFkZXIgaXMgbm90IGlnbm9yZWQgd2hlbiB0aGVyZSBpcyBhbiBpbmNvbXBsZXRlIHJlcG9y
dCBkaXJlY3RpdmUsIGFuZCB3ZSBpc3N1ZSBhbiBlcnJvcgorCisKKworLS0tLS0tLS0KK0ZyYW1l
OiAnZnJhbWUnCistLS0tLS0tLQorSWYgeW91IHNlZSB0aGlzIG1lc3NhZ2UgYW5kIG5vIEphdmFT
Y3JpcHQgYWxlcnQoKSB0aGVuIHRoZSB0ZXN0IFBBU1NFRC4KSW5kZXg6IExheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9tYWxmb3JtZWQteHNzLXByb3RlY3Rpb24taGVh
ZGVyLTYuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L3hzc0F1ZGl0b3IvbWFsZm9ybWVkLXhzcy1wcm90ZWN0aW9uLWhlYWRlci02Lmh0bWwJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvbWFs
Zm9ybWVkLXhzcy1wcm90ZWN0aW9uLWhlYWRlci02Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMTkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJo
dHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkveHNzQXVkaXRvci9yZXNvdXJjZXMvdXRpbGl0
aWVzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBDaGlsZEZyYW1l
c0FzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5u
ZXIuc2V0WFNTQXVkaXRvckVuYWJsZWQodHJ1ZSk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPHA+VGhpcyB0ZXN0cyB0aGF0IHRoZSBYLVhTUy1Qcm90ZWN0aW9uIGhlYWRlciBpcyBu
b3QgaWdub3JlZCB3aGVuIHRoZXJlIGlzIGFuIGluY29tcGxldGUgcmVwb3J0IGRpcmVjdGl2ZSwg
YW5kIHdlIGlzc3VlIGFuIGVycm9yPC9wPgorPGlmcmFtZSBpZD0iZnJhbWUiIG9ubG9hZD0iY2hl
Y2tJZkZyYW1lTG9jYXRpb25NYXRjaGVzVVJMQW5kQ2FsbERvbmUoJ2ZyYW1lJywgJ2Fib3V0OmJs
YW5rJykiIHNyYz0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3hzc0F1ZGl0b3IvcmVz
b3VyY2VzL2VjaG8taW50ZXJ0YWcucGw/bm90aWZ5RG9uZT0xJm1hbGZvcm1lZC1oZWFkZXI9NiZx
PTxzY3JpcHQ+YWxlcnQoU3RyaW5nLmZyb21DaGFyQ29kZSgweDU4LDB4NTMsMHg1MykpPC9zY3Jp
cHQ+PHA+SWYgeW91IHNlZSB0aGlzIG1lc3NhZ2UgYW5kIG5vIEphdmFTY3JpcHQgYWxlcnQoKSB0
aGVuIHRoZSB0ZXN0IFBBU1NFRC48L3A+Ij4KKzwvaWZyYW1lPgorPC9ib2R5PgorPC9odG1sPgpJ
bmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL21hbGZvcm1l
ZC14c3MtcHJvdGVjdGlvbi1oZWFkZXItNy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL21hbGZvcm1lZC14c3MtcHJv
dGVjdGlvbi1oZWFkZXItNy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvbWFsZm9ybWVkLXhzcy1wcm90ZWN0aW9u
LWhlYWRlci03LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMSBAQAorQ09O
U09MRSBNRVNTQUdFOiBFcnJvciBwYXJzaW5nIGhlYWRlciBYLVhTUy1Qcm90ZWN0aW9uOiAxOyBy
ZWQ6IHVucmVjb2duaXplZCBkaXJlY3RpdmUuIFRoZSBkZWZhdWx0IHByb3RlY3Rpb25zIHdpbGwg
YmUgYXBwbGllZC4KK0NPTlNPTEUgTUVTU0FHRTogUmVmdXNlZCB0byBleGVjdXRlIGEgSmF2YVNj
cmlwdCBzY3JpcHQuIFNvdXJjZSBjb2RlIG9mIHNjcmlwdCBmb3VuZCB3aXRoaW4gcmVxdWVzdC4K
KworVGhpcyB0ZXN0cyB0aGF0IHRoZSBYLVhTUy1Qcm90ZWN0aW9uIGhlYWRlciBpcyBub3QgaWdu
b3JlZCB3aGVuIHRoZXJlIGlzIGFuIGludmFsaWQgZGlyZWN0aXZlLCBhbmQgd2UgaXNzdWUgYW4g
ZXJyb3IKKworCisKKy0tLS0tLS0tCitGcmFtZTogJ2ZyYW1lJworLS0tLS0tLS0KK0lmIHlvdSBz
ZWUgdGhpcyBtZXNzYWdlIGFuZCBubyBKYXZhU2NyaXB0IGFsZXJ0KCkgdGhlbiB0aGUgdGVzdCBQ
QVNTRUQuCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Iv
bWFsZm9ybWVkLXhzcy1wcm90ZWN0aW9uLWhlYWRlci03Lmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL21hbGZvcm1lZC14c3MtcHJv
dGVjdGlvbi1oZWFkZXItNy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL21hbGZvcm1lZC14c3MtcHJvdGVjdGlvbi1oZWFkZXIt
Ny5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5
L3hzc0F1ZGl0b3IvcmVzb3VyY2VzL3V0aWxpdGllcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pgor
aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cisg
ICAgdGVzdFJ1bm5lci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLnNldFhTU0F1ZGl0b3JFbmFibGVkKHRydWUp
OworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdHMgdGhhdCB0aGUg
WC1YU1MtUHJvdGVjdGlvbiBoZWFkZXIgaXMgbm90IGlnbm9yZWQgd2hlbiB0aGVyZSBpcyBhbiBp
bnZhbGlkIGRpcmVjdGl2ZSwgYW5kIHdlIGlzc3VlIGFuIGVycm9yPC9wPgorPGlmcmFtZSBpZD0i
ZnJhbWUiIG9ubG9hZD0iY2hlY2tJZkZyYW1lTG9jYXRpb25NYXRjaGVzVVJMQW5kQ2FsbERvbmUo
J2ZyYW1lJywgJ2Fib3V0OmJsYW5rJykiIHNyYz0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3Vy
aXR5L3hzc0F1ZGl0b3IvcmVzb3VyY2VzL2VjaG8taW50ZXJ0YWcucGw/bm90aWZ5RG9uZT0xJm1h
bGZvcm1lZC1oZWFkZXI9NyZxPTxzY3JpcHQ+YWxlcnQoU3RyaW5nLmZyb21DaGFyQ29kZSgweDU4
LDB4NTMsMHg1MykpPC9zY3JpcHQ+PHA+SWYgeW91IHNlZSB0aGlzIG1lc3NhZ2UgYW5kIG5vIEph
dmFTY3JpcHQgYWxlcnQoKSB0aGVuIHRoZSB0ZXN0IFBBU1NFRC48L3A+Ij4KKzwvaWZyYW1lPgor
PC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94
c3NBdWRpdG9yL21hbGZvcm1lZC14c3MtcHJvdGVjdGlvbi1oZWFkZXItOC1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9y
L21hbGZvcm1lZC14c3MtcHJvdGVjdGlvbi1oZWFkZXItOC1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvbWFsZm9y
bWVkLXhzcy1wcm90ZWN0aW9uLWhlYWRlci04LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwxMSBAQAorQ09OU09MRSBNRVNTQUdFOiBFcnJvciBwYXJzaW5nIGhlYWRlciBYLVhT
Uy1Qcm90ZWN0aW9uOiAxOyBtb2RlPWJsb2NrOyByZXBvcnQ9L2ZhaWw7IG1vZGU9YmxvY2s7OiBk
dXBsaWNhdGUgbW9kZSBkaXJlY3RpdmUuIFRoZSBkZWZhdWx0IHByb3RlY3Rpb25zIHdpbGwgYmUg
YXBwbGllZC4KK0NPTlNPTEUgTUVTU0FHRTogUmVmdXNlZCB0byBleGVjdXRlIGEgSmF2YVNjcmlw
dCBzY3JpcHQuIFNvdXJjZSBjb2RlIG9mIHNjcmlwdCBmb3VuZCB3aXRoaW4gcmVxdWVzdC4KKwor
VGhpcyB0ZXN0cyB0aGF0IHRoZSBYLVhTUy1Qcm90ZWN0aW9uIGhlYWRlciBpcyBub3QgaWdub3Jl
ZCB3aGVuIHRoZXJlIGlzIGFuIGR1cGxpY2F0ZSBtb2RlIGRpcmVjdGl2ZSwgYW5kIHdlIGlzc3Vl
IGFuIGVycm9yCisKKworCistLS0tLS0tLQorRnJhbWU6ICdmcmFtZScKKy0tLS0tLS0tCitJZiB5
b3Ugc2VlIHRoaXMgbWVzc2FnZSBhbmQgbm8gSmF2YVNjcmlwdCBhbGVydCgpIHRoZW4gdGhlIHRl
c3QgUEFTU0VELgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRp
dG9yL21hbGZvcm1lZC14c3MtcHJvdGVjdGlvbi1oZWFkZXItOC5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9tYWxmb3JtZWQteHNz
LXByb3RlY3Rpb24taGVhZGVyLTguaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9tYWxmb3JtZWQteHNzLXByb3RlY3Rpb24taGVh
ZGVyLTguaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxOSBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1
cml0eS94c3NBdWRpdG9yL3Jlc291cmNlcy91dGlsaXRpZXMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OworICAgIHRlc3RSdW5uZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5l
ci53YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5zZXRYU1NBdWRpdG9yRW5hYmxlZCh0
cnVlKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3RzIHRoYXQg
dGhlIFgtWFNTLVByb3RlY3Rpb24gaGVhZGVyIGlzIG5vdCBpZ25vcmVkIHdoZW4gdGhlcmUgaXMg
YW4gZHVwbGljYXRlIG1vZGUgZGlyZWN0aXZlLCBhbmQgd2UgaXNzdWUgYW4gZXJyb3I8L3A+Cis8
aWZyYW1lIGlkPSJmcmFtZSIgb25sb2FkPSJjaGVja0lmRnJhbWVMb2NhdGlvbk1hdGNoZXNVUkxB
bmRDYWxsRG9uZSgnZnJhbWUnLCAnYWJvdXQ6YmxhbmsnKSIgc3JjPSJodHRwOi8vMTI3LjAuMC4x
OjgwMDAvc2VjdXJpdHkveHNzQXVkaXRvci9yZXNvdXJjZXMvZWNoby1pbnRlcnRhZy5wbD9ub3Rp
ZnlEb25lPTEmbWFsZm9ybWVkLWhlYWRlcj04JnE9PHNjcmlwdD5hbGVydChTdHJpbmcuZnJvbUNo
YXJDb2RlKDB4NTgsMHg1MywweDUzKSk8L3NjcmlwdD48cD5JZiB5b3Ugc2VlIHRoaXMgbWVzc2Fn
ZSBhbmQgbm8gSmF2YVNjcmlwdCBhbGVydCgpIHRoZW4gdGhlIHRlc3QgUEFTU0VELjwvcD4iPgor
PC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L3hzc0F1ZGl0b3IvbWFsZm9ybWVkLXhzcy1wcm90ZWN0aW9uLWhlYWRlci05LWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L3hzc0F1ZGl0b3IvbWFsZm9ybWVkLXhzcy1wcm90ZWN0aW9uLWhlYWRlci05LWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVk
aXRvci9tYWxmb3JtZWQteHNzLXByb3RlY3Rpb24taGVhZGVyLTktZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDExIEBACitDT05TT0xFIE1FU1NBR0U6IEVycm9yIHBhcnNpbmcg
aGVhZGVyIFgtWFNTLVByb3RlY3Rpb246IDE7IG1vZGU9YmxvY2s7IHJlcG9ydD0vZmFpbDsgcmVw
b3J0PS9mYWlsOzogZHVwbGljYXRlIHJlcG9ydCBkaXJlY3RpdmUuIFRoZSBkZWZhdWx0IHByb3Rl
Y3Rpb25zIHdpbGwgYmUgYXBwbGllZC4KK0NPTlNPTEUgTUVTU0FHRTogUmVmdXNlZCB0byBleGVj
dXRlIGEgSmF2YVNjcmlwdCBzY3JpcHQuIFNvdXJjZSBjb2RlIG9mIHNjcmlwdCBmb3VuZCB3aXRo
aW4gcmVxdWVzdC4KKworVGhpcyB0ZXN0cyB0aGF0IHRoZSBYLVhTUy1Qcm90ZWN0aW9uIGhlYWRl
ciBpcyBub3QgaWdub3JlZCB3aGVuIHRoZXJlIGlzIGEgZHVwbGljYXRlIHJlcG9ydCBkaXJlY3Rp
dmUsIGFuZCB3ZSBpc3N1ZSBhbiBlcnJvcgorCisKKworLS0tLS0tLS0KK0ZyYW1lOiAnZnJhbWUn
CistLS0tLS0tLQorSWYgeW91IHNlZSB0aGlzIG1lc3NhZ2UgYW5kIG5vIEphdmFTY3JpcHQgYWxl
cnQoKSB0aGVuIHRoZSB0ZXN0IFBBU1NFRC4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkveHNzQXVkaXRvci9tYWxmb3JtZWQteHNzLXByb3RlY3Rpb24taGVhZGVyLTkuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0
b3IvbWFsZm9ybWVkLXhzcy1wcm90ZWN0aW9uLWhlYWRlci05Lmh0bWwJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvbWFsZm9ybWVkLXhz
cy1wcm90ZWN0aW9uLWhlYWRlci05Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTkgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJodHRwOi8vbG9j
YWxob3N0OjgwMDAvc2VjdXJpdHkveHNzQXVkaXRvci9yZXNvdXJjZXMvdXRpbGl0aWVzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgp
OworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIuc2V0WFNT
QXVkaXRvckVuYWJsZWQodHJ1ZSk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHA+
VGhpcyB0ZXN0cyB0aGF0IHRoZSBYLVhTUy1Qcm90ZWN0aW9uIGhlYWRlciBpcyBub3QgaWdub3Jl
ZCB3aGVuIHRoZXJlIGlzIGEgZHVwbGljYXRlIHJlcG9ydCBkaXJlY3RpdmUsIGFuZCB3ZSBpc3N1
ZSBhbiBlcnJvcjwvcD4KKzxpZnJhbWUgaWQ9ImZyYW1lIiBvbmxvYWQ9ImNoZWNrSWZGcmFtZUxv
Y2F0aW9uTWF0Y2hlc1VSTEFuZENhbGxEb25lKCdmcmFtZScsICdhYm91dDpibGFuaycpIiBzcmM9
Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS94c3NBdWRpdG9yL3Jlc291cmNlcy9lY2hv
LWludGVydGFnLnBsP25vdGlmeURvbmU9MSZtYWxmb3JtZWQtaGVhZGVyPTkmcT08c2NyaXB0PmFs
ZXJ0KFN0cmluZy5mcm9tQ2hhckNvZGUoMHg1OCwweDUzLDB4NTMpKTwvc2NyaXB0PjxwPklmIHlv
dSBzZWUgdGhpcyBtZXNzYWdlIGFuZCBubyBKYXZhU2NyaXB0IGFsZXJ0KCkgdGhlbiB0aGUgdGVz
dCBQQVNTRUQuPC9wPiI+Cis8L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9yZXBvcnQtc2NyaXB0LXRhZy1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0
eS94c3NBdWRpdG9yL3JlcG9ydC1zY3JpcHQtdGFnLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9yZXBvcnQtc2Ny
aXB0LXRhZy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTUgQEAKK0NPTlNP
TEUgTUVTU0FHRTogUmVmdXNlZCB0byBleGVjdXRlIGEgSmF2YVNjcmlwdCBzY3JpcHQuIFNvdXJj
ZSBjb2RlIG9mIHNjcmlwdCBmb3VuZCB3aXRoaW4gcmVxdWVzdC4KKworVGhpcyB0ZXN0cyB0aGF0
IHRoZSBYLVhTUy1Qcm90ZWN0aW9uIHJlcG9ydHMgYXJlIHNlbnQgb3V0IHByb3Blcmx5CisKKwor
CistLS0tLS0tLQorRnJhbWU6ICdmcmFtZScKKy0tLS0tLS0tCitDU1AgcmVwb3J0IHJlY2VpdmVk
OgorQ09OVEVOVF9UWVBFOiBhcHBsaWNhdGlvbi9qc29uCitIVFRQX1JFRkVSRVI6IGh0dHA6Ly8x
MjcuMC4wLjE6ODAwMC9zZWN1cml0eS94c3NBdWRpdG9yL3Jlc291cmNlcy9lY2hvLWludGVydGFn
LnBsP2VjaG8tcmVwb3J0PTEmZW5hYmxlLXJlcG9ydD0xJnE9JTNDc2NyaXB0JTNFYWxlcnQoU3Ry
aW5nLmZyb21DaGFyQ29kZSgweDU4LDB4NTMsMHg1MykpJTNDL3NjcmlwdCUzRSUzQ3AlM0VJZiUy
MHlvdSUyMHNlZSUyMHRoaXMlMjBtZXNzYWdlLCUyMG5vJTIwSmF2YVNjcmlwdCUyMGFsZXJ0KCks
JTIwYW5kJTIwYSUyMGR1bXAlMjBvZiUyMHRoZSUyMHJlcG9ydCUyMGJlbG93LCUyMHRoZW4lMjB0
aGUlMjB0ZXN0JTIwUEFTU0VELiUzQy9wJTNFCitSRVFVRVNUX01FVEhPRDogUE9TVAorPT09IFBP
U1QgREFUQSA9PT0KK3sieHNzLXJlcG9ydCI6eyJyZXF1ZXN0LXVybCI6Imh0dHA6Ly8xMjcuMC4w
LjE6ODAwMC9zZWN1cml0eS94c3NBdWRpdG9yL3Jlc291cmNlcy9lY2hvLWludGVydGFnLnBsP2Vj
aG8tcmVwb3J0PTEmZW5hYmxlLXJlcG9ydD0xJnE9JTNDc2NyaXB0JTNFYWxlcnQoU3RyaW5nLmZy
b21DaGFyQ29kZSgweDU4LDB4NTMsMHg1MykpJTNDL3NjcmlwdCUzRSUzQ3AlM0VJZiUyMHlvdSUy
MHNlZSUyMHRoaXMlMjBtZXNzYWdlLCUyMG5vJTIwSmF2YVNjcmlwdCUyMGFsZXJ0KCksJTIwYW5k
JTIwYSUyMGR1bXAlMjBvZiUyMHRoZSUyMHJlcG9ydCUyMGJlbG93LCUyMHRoZW4lMjB0aGUlMjB0
ZXN0JTIwUEFTU0VELiUzQy9wJTNFIiwicmVxdWVzdC1ib2R5IjoiIn19CkluZGV4OiBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvcmVwb3J0LXNjcmlwdC10YWcuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0
b3IvcmVwb3J0LXNjcmlwdC10YWcuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9yZXBvcnQtc2NyaXB0LXRhZy5odG1sCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDE5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0IHNyYz0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3hzc0F1ZGl0b3Iv
cmVzb3VyY2VzL3V0aWxpdGllcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50
ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5l
ci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUo
KTsKKyAgICB0ZXN0UnVubmVyLnNldFhTU0F1ZGl0b3JFbmFibGVkKHRydWUpOworfQorPC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdHMgdGhhdCB0aGUgWC1YU1MtUHJvdGVj
dGlvbiByZXBvcnRzIGFyZSBzZW50IG91dCBwcm9wZXJseTwvcD4KKzxpZnJhbWUgaWQ9ImZyYW1l
IiBzcmM9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS94c3NBdWRpdG9yL3Jlc291cmNl
cy9lY2hvLWludGVydGFnLnBsP2VjaG8tcmVwb3J0PTEmZW5hYmxlLXJlcG9ydD0xJnE9PHNjcmlw
dD5hbGVydChTdHJpbmcuZnJvbUNoYXJDb2RlKDB4NTgsMHg1MywweDUzKSk8L3NjcmlwdD48cD5J
ZiB5b3Ugc2VlIHRoaXMgbWVzc2FnZSwgbm8gSmF2YVNjcmlwdCBhbGVydCgpLCBhbmQgYSBkdW1w
IG9mIHRoZSByZXBvcnQgYmVsb3csIHRoZW4gdGhlIHRlc3QgUEFTU0VELjwvcD4iPgorPC9pZnJh
bWU+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L3hzc0F1ZGl0b3IveHNzLXByb3RlY3Rpb24tcGFyc2luZy0wMy1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3hz
cy1wcm90ZWN0aW9uLXBhcnNpbmctMDMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3hzcy1wcm90ZWN0aW9uLXBh
cnNpbmctMDMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwIEBACitDT05T
T0xFIE1FU1NBR0U6IFJlZnVzZWQgdG8gZXhlY3V0ZSBhIEphdmFTY3JpcHQgc2NyaXB0LiBTb3Vy
Y2UgY29kZSBvZiBzY3JpcHQgZm91bmQgd2l0aGluIHJlcXVlc3QuCisKK1RoaXMgdGVzdHMgdGhh
dCB0aGUgWC1YU1MtUHJvdGVjdGlvbiBoZWFkZXIgaXMgbm90IGlnbm9yZWQgd2hlbiB0aGVyZSBp
cyBhIHRyYWlsaW5nIHNlbWljb2xvbiBmb2xsb3dpbmcgbW9kZT1ibGFuay4gQWx0aG91Z2ggdGhl
b3JldGljYWxseSBtYWxmb3JtZWQsIHdlIHRvbGVyYXRlIHRoaXMgY2FzZSB3aXRob3V0IGlzc3Vp
bmcgYW4gZXJyb3IuCisKKworCistLS0tLS0tLQorRnJhbWU6ICdmcmFtZScKKy0tLS0tLS0tCisK
SW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci94c3MtcHJv
dGVjdGlvbi1wYXJzaW5nLTAzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3hzcy1wcm90ZWN0aW9uLXBhcnNpbmctMDMuaHRtbAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRv
ci94c3MtcHJvdGVjdGlvbi1wYXJzaW5nLTAzLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MjAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJodHRw
Oi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkveHNzQXVkaXRvci9yZXNvdXJjZXMvdXRpbGl0aWVz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBDaGlsZEZyYW1lc0Fz
VGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIu
c2V0WFNTQXVkaXRvckVuYWJsZWQodHJ1ZSk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPHA+VGhpcyB0ZXN0cyB0aGF0IHRoZSBYLVhTUy1Qcm90ZWN0aW9uIGhlYWRlciBpcyBub3Qg
aWdub3JlZCB3aGVuIHRoZXJlIGlzIGEgdHJhaWxpbmcgc2VtaWNvbG9uIGZvbGxvd2luZyBtb2Rl
PWJsYW5rLgorQWx0aG91Z2ggdGhlb3JldGljYWxseSBtYWxmb3JtZWQsIHdlIHRvbGVyYXRlIHRo
aXMgY2FzZSB3aXRob3V0IGlzc3VpbmcgYW4gZXJyb3IuIDwvcD4KKzxpZnJhbWUgaWQ9ImZyYW1l
IiBvbmxvYWQ9ImNoZWNrSWZGcmFtZUxvY2F0aW9uTWF0Y2hlc1VSTEFuZENhbGxEb25lKCdmcmFt
ZScsICdhYm91dDpibGFuaycpIiBzcmM9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS94
c3NBdWRpdG9yL3Jlc291cmNlcy9lY2hvLWludGVydGFnLnBsP25vdGlmeURvbmU9MSZ2YWxpZC1o
ZWFkZXI9MyZxPTxzY3JpcHQ+YWxlcnQoU3RyaW5nLmZyb21DaGFyQ29kZSgweDU4LDB4NTMsMHg1
MykpPC9zY3JpcHQ+PHA+SWYgeW91IHNlZSB0aGlzIG1lc3NhZ2UgYW5kIG5vIEphdmFTY3JpcHQg
YWxlcnQoKSB0aGVuIHRoZSB0ZXN0IFBBU1NFRC48L3A+Ij4KKzwvaWZyYW1lPgorPC9ib2R5Pgor
PC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9y
L3hzcy1wcm90ZWN0aW9uLXBhcnNpbmctMDQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci94c3MtcHJvdGVjdGlvbi1w
YXJzaW5nLTA0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci94c3MtcHJvdGVjdGlvbi1wYXJzaW5nLTA0LWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMCBAQAorQ09OU09MRSBNRVNTQUdFOiBS
ZWZ1c2VkIHRvIGV4ZWN1dGUgYSBKYXZhU2NyaXB0IHNjcmlwdC4gU291cmNlIGNvZGUgb2Ygc2Ny
aXB0IGZvdW5kIHdpdGhpbiByZXF1ZXN0LgorCitUaGlzIHRlc3RzIHRoYXQgdGhlIFgtWFNTLVBy
b3RlY3Rpb24gaGVhZGVyIGlzIG5vdCBpZ25vcmVkIHdoZW4gdGhlIHJlcG9ydCBhbmQgbW9kZSBk
aXJlY3RpdmVzIGFyZSBzd2FwcGVkLgorCisKKworLS0tLS0tLS0KK0ZyYW1lOiAnZnJhbWUnCist
LS0tLS0tLQorCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0
b3IveHNzLXByb3RlY3Rpb24tcGFyc2luZy0wNC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci94c3MtcHJvdGVjdGlvbi1wYXJzaW5n
LTA0Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L3hzc0F1ZGl0b3IveHNzLXByb3RlY3Rpb24tcGFyc2luZy0wNC5odG1sCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDE5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0
IHNyYz0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3hzc0F1ZGl0b3IvcmVzb3VyY2Vz
L3V0aWxpdGllcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQ2hp
bGRGcmFtZXNBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0
ZXN0UnVubmVyLnNldFhTU0F1ZGl0b3JFbmFibGVkKHRydWUpOworfQorPC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdHMgdGhhdCB0aGUgWC1YU1MtUHJvdGVjdGlvbiBoZWFk
ZXIgaXMgbm90IGlnbm9yZWQgd2hlbiB0aGUgcmVwb3J0IGFuZCBtb2RlIGRpcmVjdGl2ZXMgYXJl
IHN3YXBwZWQuPC9wPgorPGlmcmFtZSBpZD0iZnJhbWUiIG9ubG9hZD0iY2hlY2tJZkZyYW1lTG9j
YXRpb25NYXRjaGVzVVJMQW5kQ2FsbERvbmUoJ2ZyYW1lJywgJ2Fib3V0OmJsYW5rJykiIHNyYz0i
aHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3hzc0F1ZGl0b3IvcmVzb3VyY2VzL2VjaG8t
aW50ZXJ0YWcucGw/bm90aWZ5RG9uZT0xJnZhbGlkLWhlYWRlcj00JnE9PHNjcmlwdD5hbGVydChT
dHJpbmcuZnJvbUNoYXJDb2RlKDB4NTgsMHg1MywweDUzKSk8L3NjcmlwdD48cD5JZiB5b3Ugc2Vl
IHRoaXMgbWVzc2FnZSBhbmQgbm8gSmF2YVNjcmlwdCBhbGVydCgpIHRoZW4gdGhlIHRlc3QgUEFT
U0VELjwvcD4iPgorPC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvcmVzb3VyY2VzL2VjaG8taW50ZXJ0YWcu
cGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRp
dG9yL3Jlc291cmNlcy9lY2hvLWludGVydGFnLnBsCShyZXZpc2lvbiAxMzMwNzMpCisrKyBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvcmVzb3VyY2VzL2VjaG8taW50
ZXJ0YWcucGwJKHdvcmtpbmcgY29weSkKQEAgLTEzLDEyICsxMywyMyBAQCBpZiAoJGNnaS0+cGFy
YW0oJ2Rpc2FibGUtcHJvdGVjdGlvbicpKSB7CiBpZiAoJGNnaS0+cGFyYW0oJ2VuYWJsZS1mdWxs
LWJsb2NrJykpIHsKICAgICBwcmludCAiWC1YU1MtUHJvdGVjdGlvbjogMTsgbW9kZT1ibG9ja1xu
IjsKIH0KK2lmICgkY2dpLT5wYXJhbSgnZW5hYmxlLXJlcG9ydCcpKSB7CisgICAgcHJpbnQgIlgt
WFNTLVByb3RlY3Rpb246IDE7IHJlcG9ydD0vc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5
L3Jlc291cmNlcy9zYXZlLXJlcG9ydC5waHBcbiI7Cit9CisKIGlmICgkY2dpLT5wYXJhbSgndmFs
aWQtaGVhZGVyJykgPT0gMSkgewogICAgIHByaW50ICJYLVhTUy1Qcm90ZWN0aW9uOiAgIDEgIDtN
b0RlID0gIGJMb2NLICAgXG4iOwogfQogaWYgKCRjZ2ktPnBhcmFtKCd2YWxpZC1oZWFkZXInKSA9
PSAyKSB7CiAgICAgcHJpbnQgIlgtWFNTLVByb3RlY3Rpb246IDE7IFxuIjsKIH0KK2lmICgkY2dp
LT5wYXJhbSgndmFsaWQtaGVhZGVyJykgPT0gMykgeworICAgIHByaW50ICJYLVhTUy1Qcm90ZWN0
aW9uOiAxOyBtb2RlPWJsb2NrOyBcbiI7Cit9CitpZiAoJGNnaS0+cGFyYW0oJ3ZhbGlkLWhlYWRl
cicpID09IDQpIHsKKyAgICBwcmludCAiWC1YU1MtUHJvdGVjdGlvbjogMTsgcmVwb3J0PS9zZWN1
cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvcmVzb3VyY2VzL3NhdmUtcmVwb3J0LnBocDsgbW9k
ZT1ibG9jazsgXG4iOworfQorCiBpZiAoJGNnaS0+cGFyYW0oJ21hbGZvcm1lZC1oZWFkZXInKSA9
PSAxKSB7CiAgICAgcHJpbnQgIlgtWFNTLVByb3RlY3Rpb246IDEyMzQ1Njc4OTAxMjM0NTY3XG4i
OwogfQpAQCAtMzEsNiArNDIsMjEgQEAgaWYgKCRjZ2ktPnBhcmFtKCdtYWxmb3JtZWQtaGVhZGVy
JykgPT0gMwogaWYgKCRjZ2ktPnBhcmFtKCdtYWxmb3JtZWQtaGVhZGVyJykgPT0gNCkgewogICAg
IHByaW50ICJYLVhTUy1Qcm90ZWN0aW9uOiAxOyBtb2RlPWJsb2NrLWEtYmxvY2stYmxvY2tcbiI7
CiB9CitpZiAoJGNnaS0+cGFyYW0oJ21hbGZvcm1lZC1oZWFkZXInKSA9PSA1KSB7CisgICAgcHJp
bnQgIlgtWFNTLVByb3RlY3Rpb246IDE7IG1vZGU9YmxvY2s7IHJlcG9ydFxuIjsKK30KK2lmICgk
Y2dpLT5wYXJhbSgnbWFsZm9ybWVkLWhlYWRlcicpID09IDYpIHsKKyAgICBwcmludCAiWC1YU1Mt
UHJvdGVjdGlvbjogMTsgcmVwb3J0O1xuIjsKK30KK2lmICgkY2dpLT5wYXJhbSgnbWFsZm9ybWVk
LWhlYWRlcicpID09IDcpIHsKKyAgICBwcmludCAiWC1YU1MtUHJvdGVjdGlvbjogMTsgcmVkXG4i
OworfQoraWYgKCRjZ2ktPnBhcmFtKCdtYWxmb3JtZWQtaGVhZGVyJykgPT0gOCkgeworICAgIHBy
aW50ICJYLVhTUy1Qcm90ZWN0aW9uOiAxOyBtb2RlPWJsb2NrOyByZXBvcnQ9L2ZhaWw7IG1vZGU9
YmxvY2s7XG4iOworfQoraWYgKCRjZ2ktPnBhcmFtKCdtYWxmb3JtZWQtaGVhZGVyJykgPT0gOSkg
eworICAgIHByaW50ICJYLVhTUy1Qcm90ZWN0aW9uOiAxOyBtb2RlPWJsb2NrOyByZXBvcnQ9L2Zh
aWw7IHJlcG9ydD0vZmFpbDtcbiI7Cit9CiAKIHByaW50ICJDb250ZW50LVR5cGU6IHRleHQvaHRt
bDsgY2hhcnNldD0iOwogcHJpbnQgJGNnaS0+cGFyYW0oJ2NoYXJzZXQnKSA/ICRjZ2ktPnBhcmFt
KCdjaGFyc2V0JykgOiAiVVRGLTgiOwpAQCAtNzEsNSArOTcsOCBAQCBpZiAoJGNnaS0+cGFyYW0o
J2VuYWJsZS1mdWxsLWJsb2NrJykpIHsKIGlmICgkY2dpLT5wYXJhbSgnYWxlcnQtY29va2llJykp
IHsKICAgICBwcmludCAiPHNjcmlwdD5pZiAoL3hzc0F1ZGl0b3JUZXN0Q29va2llLy50ZXN0KGRv
Y3VtZW50LmNvb2tpZSkpIHsgYWxlcnQoJ0ZBSUw6ICcgKyBkb2N1bWVudC5jb29raWUpOyBkb2N1
bWVudC5jb29raWUgPSAneHNzQXVkaXRvclRlc3RDb29raWU9cmVtb3ZlOyBtYXgtYWdlPS0xJzsg
fSBlbHNlIGFsZXJ0KCdQQVNTJyk7PC9zY3JpcHQ+XG4iOwogfQoraWYgKCRjZ2ktPnBhcmFtKCdl
Y2hvLXJlcG9ydCcpKSB7CisgICAgcHJpbnQgIjxzY3JpcHQgc3JjPS9zZWN1cml0eS9jb250ZW50
U2VjdXJpdHlQb2xpY3kvcmVzb3VyY2VzL2dvLXRvLWVjaG8tcmVwb3J0LmpzPjwvc2NyaXB0Plxu
IjsKK30KIHByaW50ICI8L2JvZHk+XG4iOwogcHJpbnQgIjwvaHRtbD5cbiI7Cg==
</data>
<flag name="review"
          id="185818"
          type_id="1"
          status="+"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171907</attachid>
            <date>2012-11-01 12:15:05 -0700</date>
            <delta_ts>2012-11-02 11:51:20 -0700</delta_ts>
            <desc>Patch, add changelogs etc.</desc>
            <filename>patch_100892.txt</filename>
            <type>text/plain</type>
            <size>44730</size>
            <attacher name="Thomas Sepez">tsepez</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzMzIwNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU3IEBACisyMDEyLTExLTAxICBUb20gU2Vw
ZXogIDx0c2VwZXpAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFN1cHBvcnQgWC1YU1MtUHJvdGVj
dGlvbjogcmVwb3J0PVVSTCBoZWFkZXIgc3ludGF4IGluIFhTU0F1ZGl0b3IuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA4OTIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgYSBz
ZWN1cml0eSBmZWF0dXJlIHdoaWNoIGFsbG93cyBhIHZpb2xhdGlvbiByZXBvcnQgdG8gYmUgc2Vu
dCBiYWNrCisgICAgICAgIHRvIGEgc2l0ZSB3aGVuIHRoZSBYU1NBdWRpdG9yIGRldGVjdHMgYSBy
ZWZsZWN0ZWQgWFNTIGFnYWluc3QgaXQuICBJdCB1c2VzIHRoZSBzYW1lCisgICAgICAgIHJlcG9y
dGluZyBtZWNoYW5pc20gYXMgZm9yIENTUCB2aW9sYXRpb24gcmVwb3J0cy4KKworICAgICAgICBU
ZXN0czogaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL21hbGZvcm1lZC14c3MtcHJvdGVj
dGlvbi1oZWFkZXItNS5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3NlY3VyaXR5L3hz
c0F1ZGl0b3IvbWFsZm9ybWVkLXhzcy1wcm90ZWN0aW9uLWhlYWRlci02Lmh0bWwKKyAgICAgICAg
ICAgICAgIGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9tYWxmb3JtZWQteHNzLXByb3Rl
Y3Rpb24taGVhZGVyLTcuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9zZWN1cml0eS94
c3NBdWRpdG9yL21hbGZvcm1lZC14c3MtcHJvdGVjdGlvbi1oZWFkZXItOC5odG1sCisgICAgICAg
ICAgICAgICBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvbWFsZm9ybWVkLXhzcy1wcm90
ZWN0aW9uLWhlYWRlci05Lmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvc2VjdXJpdHkv
eHNzQXVkaXRvci9yZXBvcnQtc2NyaXB0LXRhZy5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rl
c3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IveHNzLXByb3RlY3Rpb24tcGFyc2luZy0wMy5odG1sCisg
ICAgICAgICAgICAgICBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IveHNzLXByb3RlY3Rp
b24tcGFyc2luZy0wNC5odG1sCisKKyAgICAgICAgKiBodG1sL3BhcnNlci9YU1NBdWRpdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OlhTU0F1ZGl0b3IpOgorICAgICAgICAo
V2ViQ29yZTo6WFNTQXVkaXRvcjo6aW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9y
OjpmaWx0ZXJUb2tlbik6CisgICAgICAgIEludm9rZSBQaW5nIGxvYWRlcidzIHZpb2xhdGlvbiBy
ZXBvcnRpbmcsIGlmIHJlcXVlc3RlZCwgd2hlbiBhIHJlZmxlY3RlZAorICAgICAgICBYU1MgaXMg
ZGV0ZWN0ZWQuCisgICAgICAgIAorICAgICAgICAqIGh0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuaDoK
KyAgICAgICAgWFNTQXVkaXRvciBjbGFzcyBuZWVkIHRvIHN0b3JlIHRoZSByZXBvcnQgVVJMIGFz
IHdlbGwgYXMgdGhlIHVuZGlnZXN0ZWQgdmVyc2lvbnMKKyAgICAgICAgb2YgdGhlIHJlcXVlc3Qg
VVJMIGFuZCByZXF1ZXN0IGJvZHkgZm9yIHJlcG9ydGluZy4KKworICAgICAgICAqIGxvYWRlci9N
aXhlZENvbnRlbnRDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGxv
YWRlci9NaXhlZENvbnRlbnRDaGVja2VyLmg6CisgICAgICAgIChNaXhlZENvbnRlbnRDaGVja2Vy
KToKKyAgICAgICAgTWFrZSBpc01peGVkQ29udGVudCgpIG1ldGhvZCBwdWJsaWMuCisKKyAgICAg
ICAgKiBsb2FkZXIvUGluZ0xvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQaW5nTG9hZGVy
OjpzZW5kVmlvbGF0aW9uUmVwb3J0KToKKyAgICAgICAgKiBsb2FkZXIvUGluZ0xvYWRlci5oOgor
ICAgICAgICAoUGluZ0xvYWRlcik6CisgICAgICAgICogcGFnZS9Db250ZW50U2VjdXJpdHlQb2xp
Y3kuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5OjpyZXBvcnRW
aW9sYXRpb24pOgorICAgICAgICBSZW5hbWVkIHJlcG9ydENvbnRlbnRTZWN1cml0eVBvbGljeVZp
b2xhdGlvbigpIG1ldGhvZCB0byBzZW5kVmlvbGF0aW9uUmVwb3J0KCksCisgICAgICAgIHNpbmNl
IHRoaXMgaXMgbm93IHVzZWQgdG8gc2VuZCBtb3JlIHRoYW4ganVzdCBDU1AgdmlvbGF0aW9ucy4K
KyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OnNraXBFcXVhbHMpOgorICAgICAg
ICAoV2ViQ29yZTo6c2tpcFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlWFNTUHJvdGVj
dGlvbkhlYWRlcik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5oOgor
ICAgICAgICBQYXJzZSBhbmQgcmV0dXJuIHJlcG9ydD0gZGlyZWN0aXZlIGluIFgtWFNTLVByb3Rl
Y3Rpb24gaGVhZGVyLgorICAgICAgICAKIDIwMTItMTEtMDEgIEJldGggRGFraW4gIDxiZGFraW5A
YXBwbGUuY29tPgogCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDA5MTcKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3Iu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3Iu
Y3BwCShyZXZpc2lvbiAxMzMwNzMpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NB
dWRpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsOCBAQAogI2luY2x1ZGUgIkRl
Y29kZUVzY2FwZVNlcXVlbmNlcy5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAi
RG9jdW1lbnRMb2FkZXIuaCIKKyNpbmNsdWRlICJGb3JtRGF0YS5oIgorI2luY2x1ZGUgIkZvcm1E
YXRhTGlzdC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGll
bnQuaCIKICNpbmNsdWRlICJIVE1MRG9jdW1lbnRQYXJzZXIuaCIKQEAgLTM5LDYgKzQxLDEwIEBA
CiAjaW5jbHVkZSAiSFRNTFRva2VuaXplci5oIgogI2luY2x1ZGUgIkhUTUxQYXJhbUVsZW1lbnQu
aCIKICNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCisjaW5jbHVkZSAi
S1VSTC5oIgorI2luY2x1ZGUgIlBpbmdMb2FkZXIuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdp
bi5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCkBA
IC0xNjcsNyArMTczLDcgQEAgWFNTQXVkaXRvcjo6WFNTQXVkaXRvcihIVE1MRG9jdW1lbnRQYXJz
ZQogICAgICwgbV9zdGF0ZShVbmluaXRpYWxpemVkKQogICAgICwgbV9zaG91bGRBbGxvd0NEQVRB
KGZhbHNlKQogICAgICwgbV9zY3JpcHRUYWdOZXN0aW5nTGV2ZWwoMCkKLSAgICAsIG1fbm90aWZp
ZWRDbGllbnQoZmFsc2UpCisgICAgLCBtX25vdGlmeUNsaWVudCh0cnVlKQogewogICAgIEFTU0VS
VChtX3BhcnNlcik7CiAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IHBhcnNlci0+ZG9jdW1lbnQoKS0+
ZnJhbWUoKSkgewpAQCAtMjE0LDIyICsyMjAsMzIgQEAgdm9pZCBYU1NBdWRpdG9yOjppbml0KCkK
ICAgICBpZiAobV9kZWNvZGVkVVJMLmZpbmQoaXNSZXF1aXJlZEZvckluamVjdGlvbikgPT0gbm90
Rm91bmQpCiAgICAgICAgIG1fZGVjb2RlZFVSTCA9IFN0cmluZygpOwogCisgICAgU3RyaW5nIGh0
dHBCb2R5QXNTdHJpbmc7CiAgICAgaWYgKERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9
IG1fcGFyc2VyLT5kb2N1bWVudCgpLT5mcmFtZSgpLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIo
KSkgewogICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgWFNTUHJvdGVjdGlvbkhl
YWRlciwgKEFTQ0lJTGl0ZXJhbCgiWC1YU1MtUHJvdGVjdGlvbiIpKSk7CiAgICAgICAgIFN0cmlu
ZyBoZWFkZXJWYWx1ZSA9IGRvY3VtZW50TG9hZGVyLT5yZXNwb25zZSgpLmh0dHBIZWFkZXJGaWVs
ZChYU1NQcm90ZWN0aW9uSGVhZGVyKTsKICAgICAgICAgU3RyaW5nIGVycm9yRGV0YWlsczsKLSAg
ICAgICAgbV94c3NQcm90ZWN0aW9uID0gcGFyc2VYU1NQcm90ZWN0aW9uSGVhZGVyKGhlYWRlclZh
bHVlLCBlcnJvckRldGFpbHMpOworICAgICAgICB1bnNpZ25lZCBlcnJvclBvc2l0aW9uID0gMDsK
KyAgICAgICAgU3RyaW5nIHJlcG9ydFVSTDsKKyAgICAgICAgbV94c3NQcm90ZWN0aW9uID0gcGFy
c2VYU1NQcm90ZWN0aW9uSGVhZGVyKGhlYWRlclZhbHVlLCBlcnJvckRldGFpbHMsIGVycm9yUG9z
aXRpb24sIHJlcG9ydFVSTCk7CisKKyAgICAgICAgaWYgKChtX3hzc1Byb3RlY3Rpb24gPT0gWFNT
UHJvdGVjdGlvbkVuYWJsZWQgfHwgbV94c3NQcm90ZWN0aW9uID09IFhTU1Byb3RlY3Rpb25CbG9j
a0VuYWJsZWQpICYmICFyZXBvcnRVUkwuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBtX3JlcG9y
dFVSTCA9IG1fcGFyc2VyLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTChyZXBvcnRVUkwpOworICAg
ICAgICAgICAgaWYgKE1peGVkQ29udGVudENoZWNrZXI6OmlzTWl4ZWRDb250ZW50KG1fcGFyc2Vy
LT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCBtX3JlcG9ydFVSTCkpIHsKKyAgICAgICAg
ICAgICAgICBlcnJvckRldGFpbHMgPSAiaW5zZWN1cmUgcmVwb3J0aW5nIFVSTCBmb3Igc2VjdXJl
IHBhZ2UiOworICAgICAgICAgICAgICAgIG1feHNzUHJvdGVjdGlvbiA9IFhTU1Byb3RlY3Rpb25J
bnZhbGlkOworICAgICAgICAgICAgICAgIG1fcmVwb3J0VVJMID0gS1VSTCgpOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisKICAgICAgICAgaWYgKG1feHNzUHJvdGVjdGlvbiA9PSBYU1NQcm90
ZWN0aW9uSW52YWxpZCkgewotICAgICAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcs
IGNvbnNvbGVNZXNzYWdlU3RhcnQsIChBU0NJSUxpdGVyYWwoIkVycm9yIHBhcnNpbmcgaGVhZGVy
IFgtWFNTLVByb3RlY3Rpb246ICIpKSk7Ci0gICAgICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KFN0cmluZywgY29uc29sZU1lc3NhZ2VTZXBhcmF0b3IsIChBU0NJSUxpdGVyYWwoIjogIikpKTsK
LSAgICAgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBjb25zb2xlTWVzc2FnZUVu
ZCwgKEFTQ0lJTGl0ZXJhbCgiLiBUaGUgZGVmYXVsdCBwcm90ZWN0aW9ucyB3aWxsIGJlIGFwcGxp
ZWQuIikpKTsKLSAgICAgICAgICAgIG1fcGFyc2VyLT5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVz
c2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwg
Y29uc29sZU1lc3NhZ2VTdGFydCArIGhlYWRlclZhbHVlICsgY29uc29sZU1lc3NhZ2VTZXBhcmF0
b3IgKyBlcnJvckRldGFpbHMgKyBjb25zb2xlTWVzc2FnZUVuZCk7CisgICAgICAgICAgICBtX3Bh
cnNlci0+ZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dN
ZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJFcnJvciBwYXJzaW5nIGhlYWRlciBYLVhT
Uy1Qcm90ZWN0aW9uOiAiICsgaGVhZGVyVmFsdWUgKyAiOiAiICArIGVycm9yRGV0YWlscyArICIg
YXQgY2hhcmFjdGVyIHBvc2l0aW9uICIgKyBTdHJpbmc6OmZvcm1hdCgiJXUiLCBlcnJvclBvc2l0
aW9uKSArICIuIFRoZSBkZWZhdWx0IHByb3RlY3Rpb25zIHdpbGwgYmUgYXBwbGllZC4iKTsKICAg
ICAgICAgICAgIG1feHNzUHJvdGVjdGlvbiA9IFhTU1Byb3RlY3Rpb25FbmFibGVkOwogICAgICAg
ICB9CiAKICAgICAgICAgRm9ybURhdGEqIGh0dHBCb2R5ID0gZG9jdW1lbnRMb2FkZXItPm9yaWdp
bmFsUmVxdWVzdCgpLmh0dHBCb2R5KCk7CiAgICAgICAgIGlmIChodHRwQm9keSAmJiAhaHR0cEJv
ZHktPmlzRW1wdHkoKSkgewotICAgICAgICAgICAgU3RyaW5nIGh0dHBCb2R5QXNTdHJpbmcgPSBo
dHRwQm9keS0+ZmxhdHRlblRvU3RyaW5nKCk7CisgICAgICAgICAgICBodHRwQm9keUFzU3RyaW5n
ID0gaHR0cEJvZHktPmZsYXR0ZW5Ub1N0cmluZygpOwogICAgICAgICAgICAgaWYgKCFodHRwQm9k
eUFzU3RyaW5nLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgICAgIG1fZGVjb2RlZEhUVFBCb2R5
ID0gZnVsbHlEZWNvZGVTdHJpbmcoaHR0cEJvZHlBc1N0cmluZywgZGVjb2Rlcik7CiAgICAgICAg
ICAgICAgICAgaWYgKG1fZGVjb2RlZEhUVFBCb2R5LmZpbmQoaXNSZXF1aXJlZEZvckluamVjdGlv
bikgPT0gbm90Rm91bmQpCkBAIC0yNDAsOCArMjU2LDE2IEBAIHZvaWQgWFNTQXVkaXRvcjo6aW5p
dCgpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAobV9kZWNvZGVkVVJMLmlzRW1wdHkoKSAm
JiBtX2RlY29kZWRIVFRQQm9keS5pc0VtcHR5KCkpCisgICAgaWYgKG1fZGVjb2RlZFVSTC5pc0Vt
cHR5KCkgJiYgbV9kZWNvZGVkSFRUUEJvZHkuaXNFbXB0eSgpKSB7CiAgICAgICAgIG1faXNFbmFi
bGVkID0gZmFsc2U7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIW1fcmVwb3J0
VVJMLmlzRW1wdHkoKSkgeworICAgICAgICAvLyBNYXkgbmVlZCB0aGVzZSBmb3IgcmVwb3J0aW5n
IGxhdGVyIG9uLgorICAgICAgICBtX29yaWdpbmFsVVJMID0gdXJsOworICAgICAgICBtX29yaWdp
bmFsSFRUUEJvZHkgPSBodHRwQm9keUFzU3RyaW5nOworICAgIH0KIH0KIAogdm9pZCBYU1NBdWRp
dG9yOjpmaWx0ZXJUb2tlbihIVE1MVG9rZW4mIHRva2VuKQpAQCAtMjcyLDkgKzI5NiwyNSBAQCB2
b2lkIFhTU0F1ZGl0b3I6OmZpbHRlclRva2VuKEhUTUxUb2tlbiYgCiAgICAgICAgIGlmIChkaWRC
bG9ja0VudGlyZVBhZ2UpCiAgICAgICAgICAgICAgbV9wYXJzZXItPmRvY3VtZW50KCktPmZyYW1l
KCktPmxvYWRlcigpLT5zdG9wQWxsTG9hZGVycygpOwogCi0gICAgICAgIGlmICghbV9ub3RpZmll
ZENsaWVudCkgeworICAgICAgICBpZiAobV9ub3RpZnlDbGllbnQpIHsKICAgICAgICAgICAgIG1f
cGFyc2VyLT5kb2N1bWVudCgpLT5mcmFtZSgpLT5sb2FkZXIoKS0+Y2xpZW50KCktPmRpZERldGVj
dFhTUyhtX3BhcnNlci0+ZG9jdW1lbnQoKS0+dXJsKCksIGRpZEJsb2NrRW50aXJlUGFnZSk7Ci0g
ICAgICAgICAgICBtX25vdGlmaWVkQ2xpZW50ID0gdHJ1ZTsKKyAgICAgICAgICAgIG1fbm90aWZ5
Q2xpZW50ID0gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIW1fcmVwb3J0VVJMLmlz
RW1wdHkoKSkgeworICAgICAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVwb3J0RGV0
YWlscyA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CisgICAgICAgICAgICByZXBvcnREZXRh
aWxzLT5zZXRTdHJpbmcoInJlcXVlc3QtdXJsIiwgbV9vcmlnaW5hbFVSTCk7CisgICAgICAgICAg
ICByZXBvcnREZXRhaWxzLT5zZXRTdHJpbmcoInJlcXVlc3QtYm9keSIsIG1fb3JpZ2luYWxIVFRQ
Qm9keSk7CisKKyAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlcG9ydE9iamVj
dCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CisgICAgICAgICAgICByZXBvcnRPYmplY3Qt
PnNldE9iamVjdCgieHNzLXJlcG9ydCIsIHJlcG9ydERldGFpbHMucmVsZWFzZSgpKTsKKworICAg
ICAgICAgICAgUmVmUHRyPEZvcm1EYXRhPiByZXBvcnQgPSBGb3JtRGF0YTo6Y3JlYXRlKHJlcG9y
dE9iamVjdC0+dG9KU09OU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBQaW5n
TG9hZGVyOjpzZW5kVmlvbGF0aW9uUmVwb3J0KG1fcGFyc2VyLT5kb2N1bWVudCgpLT5mcmFtZSgp
LCBtX3JlcG9ydFVSTCwgcmVwb3J0KTsKKworICAgICAgICAgICAgbV9yZXBvcnRVUkwgPSBLVVJM
KCk7CisgICAgICAgICAgICBtX29yaWdpbmFsVVJMID0gU3RyaW5nKCk7CisgICAgICAgICAgICBt
X29yaWdpbmFsSFRUUEJvZHkgPSBTdHJpbmcoKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChk
aWRCbG9ja0VudGlyZVBhZ2UpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NB
dWRpdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVk
aXRvci5oCShyZXZpc2lvbiAxMzMwNzMpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9Y
U1NBdWRpdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTg1LDYgKzg1LDggQEAgcHJpdmF0ZToKICAg
ICBib29sIG1faXNFbmFibGVkOwogICAgIFhTU1Byb3RlY3Rpb25EaXNwb3NpdGlvbiBtX3hzc1By
b3RlY3Rpb247CiAKKyAgICBTdHJpbmcgbV9vcmlnaW5hbFVSTDsKKyAgICBTdHJpbmcgbV9vcmln
aW5hbEhUVFBCb2R5OwogICAgIFN0cmluZyBtX2RlY29kZWRVUkw7CiAgICAgU3RyaW5nIG1fZGVj
b2RlZEhUVFBCb2R5OwogICAgIE93blB0cjxTdWZmaXhUcmVlPEFTQ0lJQ29kZWJvb2s+ID4gbV9k
ZWNvZGVkSFRUUEJvZHlTdWZmaXhUcmVlOwpAQCAtOTMsNyArOTUsOCBAQCBwcml2YXRlOgogICAg
IFN0cmluZyBtX2NhY2hlZERlY29kZWRTbmlwcGV0OwogICAgIGJvb2wgbV9zaG91bGRBbGxvd0NE
QVRBOwogICAgIHVuc2lnbmVkIG1fc2NyaXB0VGFnTmVzdGluZ0xldmVsOwotICAgIGJvb2wgbV9u
b3RpZmllZENsaWVudDsKKyAgICBib29sIG1fbm90aWZ5Q2xpZW50OworICAgIEtVUkwgbV9yZXBv
cnRVUkw7CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWl4ZWRDb250ZW50
Q2hlY2tlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL01peGVkQ29u
dGVudENoZWNrZXIuY3BwCShyZXZpc2lvbiAxMzMwNzMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvTWl4ZWRDb250ZW50Q2hlY2tlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3LDYgKzU3LDcg
QEAgc3RhdGljIGlubGluZSBDU3RyaW5nIGFzVVRGOChjb25zdCBLVVJMJgogICAgIHJldHVybiB1
cmwuc3RyaW5nKCkudXRmOCgpOwogfQogCisvLyBzdGF0aWMKIGJvb2wgTWl4ZWRDb250ZW50Q2hl
Y2tlcjo6aXNNaXhlZENvbnRlbnQoU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luLCBjb25z
dCBLVVJMJiB1cmwpCiB7CiAgICAgaWYgKHNlY3VyaXR5T3JpZ2luLT5wcm90b2NvbCgpICE9ICJo
dHRwcyIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWl4ZWRDb250ZW50Q2hlY2tlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9NaXhlZENvbnRlbnRDaGVja2Vy
LmgJKHJldmlzaW9uIDEzMzA3MykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9NaXhlZENvbnRl
bnRDaGVja2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDEyICs0NywxMiBAQCBwdWJsaWM6CiAK
ICAgICBib29sIGNhbkRpc3BsYXlJbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qLCBjb25z
dCBLVVJMJikgY29uc3Q7CiAgICAgYm9vbCBjYW5SdW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlP
cmlnaW4qLCBjb25zdCBLVVJMJikgY29uc3Q7CisgICAgc3RhdGljIGJvb2wgaXNNaXhlZENvbnRl
bnQoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBLVVJMJik7CiAKIHByaXZhdGU6CiAgICAgLy8gRklY
TUU6IFRoaXMgc2hvdWxkIHByb2JhYmx5IGhhdmUgYSBzZXBhcmF0ZSBjbGllbnQgZnJvbSBGcmFt
ZUxvYWRlci4KICAgICBGcmFtZUxvYWRlckNsaWVudCogY2xpZW50KCkgY29uc3Q7CiAKLSAgICBz
dGF0aWMgYm9vbCBpc01peGVkQ29udGVudChTZWN1cml0eU9yaWdpbiosIGNvbnN0IEtVUkwmKTsK
ICAgICB2b2lkIGxvZ1dhcm5pbmcoYm9vbCBhbGxvd2VkLCBjb25zdCBTdHJpbmcmIGFjdGlvbiwg
Y29uc3QgS1VSTCYpIGNvbnN0OwogCiAgICAgRnJhbWUqIG1fZnJhbWU7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUGluZ0xvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvbG9hZGVyL1BpbmdMb2FkZXIuY3BwCShyZXZpc2lvbiAxMzMwNzMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUGluZ0xvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMyw3ICsxMDMs
NyBAQCB2b2lkIFBpbmdMb2FkZXI6OnNlbmRQaW5nKEZyYW1lKiBmcmFtZSwgCiAgICAgVU5VU0VE
X1BBUkFNKGxlYWtlZFBpbmdMb2FkZXIpOwogfQogCi12b2lkIFBpbmdMb2FkZXI6OnJlcG9ydENv
bnRlbnRTZWN1cml0eVBvbGljeVZpb2xhdGlvbihGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHJl
cG9ydFVSTCwgUGFzc1JlZlB0cjxGb3JtRGF0YT4gcmVwb3J0KQordm9pZCBQaW5nTG9hZGVyOjpz
ZW5kVmlvbGF0aW9uUmVwb3J0KEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgcmVwb3J0VVJMLCBQ
YXNzUmVmUHRyPEZvcm1EYXRhPiByZXBvcnQpCiB7CiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVl
c3QocmVwb3J0VVJMKTsKICNpZiBQTEFURk9STShDSFJPTUlVTSkgfHwgUExBVEZPUk0oQkxBQ0tC
RVJSWSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9QaW5nTG9hZGVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuaAkocmV2aXNpb24gMTMzMDcz
KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtNTYsNyArNTYsNyBAQCBjbGFzcyBQaW5nTG9hZGVyIDogcHJpdmF0ZSBSZXNvdXJjZUhhbmRs
CiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgbG9hZEltYWdlKEZyYW1lKiwgY29uc3QgS1VSTCYg
dXJsKTsKICAgICBzdGF0aWMgdm9pZCBzZW5kUGluZyhGcmFtZSosIGNvbnN0IEtVUkwmIHBpbmdV
UkwsIGNvbnN0IEtVUkwmIGRlc3RpbmF0aW9uVVJMKTsKLSAgICBzdGF0aWMgdm9pZCByZXBvcnRD
b250ZW50U2VjdXJpdHlQb2xpY3lWaW9sYXRpb24oRnJhbWUqLCBjb25zdCBLVVJMJiByZXBvcnRV
UkwsIFBhc3NSZWZQdHI8Rm9ybURhdGE+IHJlcG9ydCk7CisgICAgc3RhdGljIHZvaWQgc2VuZFZp
b2xhdGlvblJlcG9ydChGcmFtZSosIGNvbnN0IEtVUkwmIHJlcG9ydFVSTCwgUGFzc1JlZlB0cjxG
b3JtRGF0YT4gcmVwb3J0KTsKIAogICAgIH5QaW5nTG9hZGVyKCk7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAJKHJldmlzaW9uIDEzMzA3
MykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTU5NCw3ICsxNTk0LDcgQEAgdm9pZCBDb250ZW50U2VjdXJpdHlQb2xp
Y3k6OnJlcG9ydFZpb2xhdAogICAgIFJlZlB0cjxGb3JtRGF0YT4gcmVwb3J0ID0gRm9ybURhdGE6
OmNyZWF0ZShyZXBvcnRPYmplY3QtPnRvSlNPTlN0cmluZygpLnV0ZjgoKSk7CiAKICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHJlcG9ydFVSSXMuc2l6ZSgpOyArK2kpCi0gICAgICAgIFBpbmdM
b2FkZXI6OnJlcG9ydENvbnRlbnRTZWN1cml0eVBvbGljeVZpb2xhdGlvbihmcmFtZSwgcmVwb3J0
VVJJc1tpXSwgcmVwb3J0KTsKKyAgICAgICAgUGluZ0xvYWRlcjo6c2VuZFZpb2xhdGlvblJlcG9y
dChmcmFtZSwgcmVwb3J0VVJJc1tpXSwgcmVwb3J0KTsKIH0KIAogdm9pZCBDb250ZW50U2VjdXJp
dHlQb2xpY3k6OnJlcG9ydFVucmVjb2duaXplZERpcmVjdGl2ZShjb25zdCBTdHJpbmcmIG5hbWUp
IGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQ
YXJzZXJzLmNwcAkocmV2aXNpb24gMTMzMDczKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9IVFRQUGFyc2Vycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgxLDYgKzgxLDI2IEBA
IHN0YXRpYyBpbmxpbmUgYm9vbCBza2lwVG9rZW4oY29uc3QgU3RyaW4KICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAorLy8gVHJ1ZSBpZiB0aGUgZXhwZWN0ZWQgZXF1YWxzIHNpZ24gaXMgc2VlbiBhbmQg
dGhlcmUgaXMgbW9yZSB0byBmb2xsb3cuCitzdGF0aWMgaW5saW5lIGJvb2wgc2tpcEVxdWFscyhj
b25zdCBTdHJpbmcmIHN0ciwgdW5zaWduZWQgJnBvcykKK3sKKyAgICByZXR1cm4gc2tpcFdoaXRl
U3BhY2Uoc3RyLCBwb3MsIGZhbHNlKSAmJiBzdHJbcG9zKytdID09ICc9JyAmJiBza2lwV2hpdGVT
cGFjZShzdHIsIHBvcywgZmFsc2UpOworfQorCisvLyBUcnVlIGlmIGEgdmFsdWUgcHJlc2VudCwg
aW5jcmVtZW50aW5nIHBvcyB0byBuZXh0IHNwYWNlIG9yIHNlbWljb2xvbiwgaWYgYW55LiAgCisv
LyBOb3RlOiBtaWdodCByZXR1cm4gcG9zID09IHN0ci5sZW5ndGgoKS4KK3N0YXRpYyBpbmxpbmUg
Ym9vbCBza2lwVmFsdWUoY29uc3QgU3RyaW5nJiBzdHIsIHVuc2lnbmVkJiBwb3MpCit7CisgICAg
dW5zaWduZWQgc3RhcnQgPSBwb3M7CisgICAgdW5zaWduZWQgbGVuID0gc3RyLmxlbmd0aCgpOwor
ICAgIHdoaWxlIChwb3MgPCBsZW4pIHsKKyAgICAgICAgaWYgKHN0cltwb3NdID09ICcgJyB8fCBz
dHJbcG9zXSA9PSAnXHQnIHx8IHN0cltwb3NdID09ICc7JykKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICArK3BvczsKKyAgICB9CisgICAgcmV0dXJuIHBvcyAhPSBzdGFydDsKK30KKwogLy8g
U2VlIFJGQyAyNjE2LCBTZWN0aW9uIDIuMi4KIGJvb2wgaXNSRkMyNjE2VG9rZW4oY29uc3QgU3Ry
aW5nJiBjaGFyYWN0ZXJzKQogewpAQCAtMzIwLDEyICszNDAsMTYgQEAgdm9pZCBmaW5kQ2hhcnNl
dEluTWVkaWFUeXBlKGNvbnN0IFN0cmluZwogICAgIH0KIH0KIAotWFNTUHJvdGVjdGlvbkRpc3Bv
c2l0aW9uIHBhcnNlWFNTUHJvdGVjdGlvbkhlYWRlcihjb25zdCBTdHJpbmcmIGhlYWRlciwgU3Ry
aW5nJiBmYWlsdXJlUmVhc29uKQorWFNTUHJvdGVjdGlvbkRpc3Bvc2l0aW9uIHBhcnNlWFNTUHJv
dGVjdGlvbkhlYWRlcihjb25zdCBTdHJpbmcmIGhlYWRlciwgU3RyaW5nJiBmYWlsdXJlUmVhc29u
LCB1bnNpZ25lZCYgZmFpbHVyZVBvc2l0aW9uLCBTdHJpbmcmIHJlcG9ydFVSTCkKIHsKLSAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZmFpbHVyZVJlYXNvbkludmFsaWRUb2dnbGUsIChB
U0NJSUxpdGVyYWwoImZpcnN0IG5vbi1ibGFuayBjaGFyYWN0ZXIgbXVzdCBiZSAwIG9yIDEiKSkp
OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBmYWlsdXJlUmVhc29uSW52YWxpZFRv
Z2dsZSwgKEFTQ0lJTGl0ZXJhbCgiZXhwZWN0ZWQgMCBvciAxIikpKTsKICAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKFN0cmluZywgZmFpbHVyZVJlYXNvbkludmFsaWRTZXBhcmF0b3IsIChBU0NJSUxp
dGVyYWwoImV4cGVjdGVkIHNlbWljb2xvbiIpKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChT
dHJpbmcsIGZhaWx1cmVSZWFzb25JbnZhbGlkRXF1YWxzLCAoQVNDSUlMaXRlcmFsKCJleHBlY3Rl
ZCBlcXVhbHMgc2lnbiIpKSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGZhaWx1
cmVSZWFzb25JbnZhbGlkTW9kZSwgKEFTQ0lJTGl0ZXJhbCgiaW52YWxpZCBtb2RlIGRpcmVjdGl2
ZSIpKSk7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGZhaWx1cmVSZWFzb25JbnZh
bGlkRXh0cmEsIChBU0NJSUxpdGVyYWwoImV4dHJhIGNoYXJhY3RlcnMgZm9sbG93IHZhbGlkIGhl
YWRlciIpKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGZhaWx1cmVSZWFzb25J
bnZhbGlkUmVwb3J0LCAoQVNDSUlMaXRlcmFsKCJpbnZhbGlkIHJlcG9ydCBkaXJlY3RpdmUiKSkp
OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBmYWlsdXJlUmVhc29uRHVwbGljYXRl
TW9kZSwgKEFTQ0lJTGl0ZXJhbCgiZHVwbGljYXRlIG1vZGUgZGlyZWN0aXZlIikpKTsKKyAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZmFpbHVyZVJlYXNvbkR1cGxpY2F0ZVJlcG9ydCwg
KEFTQ0lJTGl0ZXJhbCgiZHVwbGljYXRlIHJlcG9ydCBkaXJlY3RpdmUiKSkpOworICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBmYWlsdXJlUmVhc29uSW52YWxpZERpcmVjdGl2ZSwgKEFT
Q0lJTGl0ZXJhbCgidW5yZWNvZ25pemVkIGRpcmVjdGl2ZSIpKSk7CiAKICAgICB1bnNpZ25lZCBw
b3MgPSAwOwogCkBAIC0zNDAsMzIgKzM2NCw2OSBAQCBYU1NQcm90ZWN0aW9uRGlzcG9zaXRpb24g
cGFyc2VYU1NQcm90ZWN0CiAgICAgICAgIHJldHVybiBYU1NQcm90ZWN0aW9uSW52YWxpZDsKICAg
ICB9CiAKLSAgICBpZiAoIXNraXBXaGl0ZVNwYWNlKGhlYWRlciwgcG9zLCBmYWxzZSkpCi0gICAg
ICAgIHJldHVybiBYU1NQcm90ZWN0aW9uRW5hYmxlZDsKLQotICAgIGlmIChoZWFkZXJbcG9zKytd
ICE9ICc7JykgewotICAgICAgICBmYWlsdXJlUmVhc29uID0gZmFpbHVyZVJlYXNvbkludmFsaWRT
ZXBhcmF0b3I7Ci0gICAgICAgIHJldHVybiBYU1NQcm90ZWN0aW9uSW52YWxpZDsKLSAgICB9Ci0K
LSAgICBpZiAoIXNraXBXaGl0ZVNwYWNlKGhlYWRlciwgcG9zLCBmYWxzZSkpCi0gICAgICAgIHJl
dHVybiBYU1NQcm90ZWN0aW9uRW5hYmxlZDsKKyAgICBYU1NQcm90ZWN0aW9uRGlzcG9zaXRpb24g
cmVzdWx0ID0gWFNTUHJvdGVjdGlvbkVuYWJsZWQ7CisgICAgYm9vbCBtb2RlRGlyZWN0aXZlU2Vl
biA9IGZhbHNlOworICAgIGJvb2wgcmVwb3J0RGlyZWN0aXZlU2VlbiA9IGZhbHNlOworCisgICAg
d2hpbGUgKDEpIHsKKyAgICAgICAgLy8gQXQgZW5kIG9mIHByZXZpb3VzIGRpcmVjdGl2ZTogY29u
c3VtZSB3aGl0ZXNwYWNlLCBzZW1pY29sb24sIGFuZCB3aGl0ZXNwYWNlLgorICAgICAgICBpZiAo
IXNraXBXaGl0ZVNwYWNlKGhlYWRlciwgcG9zLCBmYWxzZSkpCisgICAgICAgICAgICByZXR1cm4g
cmVzdWx0OworCisgICAgICAgIGlmIChoZWFkZXJbcG9zKytdICE9ICc7JykgeworICAgICAgICAg
ICAgZmFpbHVyZVJlYXNvbiA9IGZhaWx1cmVSZWFzb25JbnZhbGlkU2VwYXJhdG9yOworICAgICAg
ICAgICAgZmFpbHVyZVBvc2l0aW9uID0gcG9zOworICAgICAgICAgICAgcmV0dXJuIFhTU1Byb3Rl
Y3Rpb25JbnZhbGlkOworICAgICAgICB9CiAKLSAgICBpZiAoIShza2lwVG9rZW4oaGVhZGVyLCBw
b3MsICJtb2RlIikKLSAgICAgICAgJiYgc2tpcFdoaXRlU3BhY2UoaGVhZGVyLCBwb3MsIGZhbHNl
KQotICAgICAgICAmJiBoZWFkZXJbcG9zKytdID09ICc9JwotICAgICAgICAmJiBza2lwV2hpdGVT
cGFjZShoZWFkZXIsIHBvcywgZmFsc2UpCi0gICAgICAgICYmIHNraXBUb2tlbihoZWFkZXIsIHBv
cywgImJsb2NrIikpKSB7Ci0gICAgICAgIGZhaWx1cmVSZWFzb24gPSBmYWlsdXJlUmVhc29uSW52
YWxpZE1vZGU7Ci0gICAgICAgIHJldHVybiBYU1NQcm90ZWN0aW9uSW52YWxpZDsKLSAgICB9Cisg
ICAgICAgIGlmICghc2tpcFdoaXRlU3BhY2UoaGVhZGVyLCBwb3MsIGZhbHNlKSkKKyAgICAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAKLSAgICBpZiAoc2tpcFdoaXRlU3BhY2UoaGVhZGVyLCBwb3Ms
IGZhbHNlKSkgewotICAgICAgICBmYWlsdXJlUmVhc29uID0gZmFpbHVyZVJlYXNvbkludmFsaWRF
eHRyYTsKLSAgICAgICAgcmV0dXJuIFhTU1Byb3RlY3Rpb25JbnZhbGlkOworICAgICAgICAvLyBB
dCBzdGFydCBvZiBuZXh0IGRpcmVjdGl2ZS4KKyAgICAgICAgaWYgKHNraXBUb2tlbihoZWFkZXIs
IHBvcywgIm1vZGUiKSkgeworICAgICAgICAgICAgaWYgKG1vZGVEaXJlY3RpdmVTZWVuKSB7Cisg
ICAgICAgICAgICAgICAgZmFpbHVyZVJlYXNvbiA9IGZhaWx1cmVSZWFzb25EdXBsaWNhdGVNb2Rl
OworICAgICAgICAgICAgICAgIGZhaWx1cmVQb3NpdGlvbiA9IHBvczsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gWFNTUHJvdGVjdGlvbkludmFsaWQ7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBtb2RlRGlyZWN0aXZlU2VlbiA9IHRydWU7CisgICAgICAgICAgICBpZiAoIXNraXBFcXVhbHMo
aGVhZGVyLCBwb3MpKSB7CisgICAgICAgICAgICAgICAgZmFpbHVyZVJlYXNvbiA9IGZhaWx1cmVS
ZWFzb25JbnZhbGlkRXF1YWxzOworICAgICAgICAgICAgICAgIGZhaWx1cmVQb3NpdGlvbiA9IHBv
czsKKyAgICAgICAgICAgICAgICByZXR1cm4gWFNTUHJvdGVjdGlvbkludmFsaWQ7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBpZiAoIXNraXBUb2tlbihoZWFkZXIsIHBvcywgImJsb2NrIikp
IHsKKyAgICAgICAgICAgICAgICBmYWlsdXJlUmVhc29uID0gZmFpbHVyZVJlYXNvbkludmFsaWRN
b2RlOworICAgICAgICAgICAgICAgIGZhaWx1cmVQb3NpdGlvbiA9IHBvczsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gWFNTUHJvdGVjdGlvbkludmFsaWQ7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICByZXN1bHQgPSBYU1NQcm90ZWN0aW9uQmxvY2tFbmFibGVkOworICAgICAgICB9IGVsc2Ug
aWYgKHNraXBUb2tlbihoZWFkZXIsIHBvcywgInJlcG9ydCIpKSB7CisgICAgICAgICAgICBpZiAo
cmVwb3J0RGlyZWN0aXZlU2VlbikgeworICAgICAgICAgICAgICAgIGZhaWx1cmVSZWFzb24gPSBm
YWlsdXJlUmVhc29uRHVwbGljYXRlUmVwb3J0OworICAgICAgICAgICAgICAgIGZhaWx1cmVQb3Np
dGlvbiA9IHBvczsKKyAgICAgICAgICAgICAgICByZXR1cm4gWFNTUHJvdGVjdGlvbkludmFsaWQ7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXBvcnREaXJlY3RpdmVTZWVuID0gdHJ1ZTsK
KyAgICAgICAgICAgIGlmICghc2tpcEVxdWFscyhoZWFkZXIsIHBvcykpIHsKKyAgICAgICAgICAg
ICAgICBmYWlsdXJlUmVhc29uID0gZmFpbHVyZVJlYXNvbkludmFsaWRFcXVhbHM7CisgICAgICAg
ICAgICAgICAgZmFpbHVyZVBvc2l0aW9uID0gcG9zOworICAgICAgICAgICAgICAgIHJldHVybiBY
U1NQcm90ZWN0aW9uSW52YWxpZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHNpemVfdCBz
dGFydFBvcyA9IHBvczsKKyAgICAgICAgICAgIGlmICghc2tpcFZhbHVlKGhlYWRlciwgcG9zKSkg
eworICAgICAgICAgICAgICAgIGZhaWx1cmVSZWFzb24gPSBmYWlsdXJlUmVhc29uSW52YWxpZFJl
cG9ydDsKKyAgICAgICAgICAgICAgICBmYWlsdXJlUG9zaXRpb24gPSBwb3M7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIFhTU1Byb3RlY3Rpb25JbnZhbGlkOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgcmVwb3J0VVJMID0gaGVhZGVyLnN1YnN0cmluZyhzdGFydFBvcywgcG9zIC0gc3RhcnRQ
b3MpOworICAgICAgICAgICAgZmFpbHVyZVBvc2l0aW9uID0gc3RhcnRQb3M7IC8vIElmIGxhdGVy
IHNlbWFudGljIGNoZWNrIGRlZW1zIHVuYWNjZXB0YWJsZS4KKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIGZhaWx1cmVSZWFzb24gPSBmYWlsdXJlUmVhc29uSW52YWxpZERpcmVjdGl2ZTsK
KyAgICAgICAgICAgIGZhaWx1cmVQb3NpdGlvbiA9IHBvczsKKyAgICAgICAgICAgIHJldHVybiBY
U1NQcm90ZWN0aW9uSW52YWxpZDsKKyAgICAgICAgfQogICAgIH0KLQotICAgIHJldHVybiBYU1NQ
cm90ZWN0aW9uQmxvY2tFbmFibGVkOwogfQogCiBTdHJpbmcgZXh0cmFjdFJlYXNvblBocmFzZUZy
b21IVFRQU3RhdHVzTGluZShjb25zdCBTdHJpbmcmIHN0YXR1c0xpbmUpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5oCShyZXZpc2lvbiAxMzMw
NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTYxLDcgKzYxLDcgQEAgU3RyaW5nIGZpbGVuYW1lRnJvbUhUVFBDb250
ZW50RGlzcG9zaXRpbwogU3RyaW5nIGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUoY29uc3Qg
U3RyaW5nJik7CiBTdHJpbmcgZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKGNvbnN0IFN0cmlu
ZyYpOyAKIHZvaWQgZmluZENoYXJzZXRJbk1lZGlhVHlwZShjb25zdCBTdHJpbmcmIG1lZGlhVHlw
ZSwgdW5zaWduZWQgaW50JiBjaGFyc2V0UG9zLCB1bnNpZ25lZCBpbnQmIGNoYXJzZXRMZW4sIHVu
c2lnbmVkIGludCBzdGFydCA9IDApOwotWFNTUHJvdGVjdGlvbkRpc3Bvc2l0aW9uIHBhcnNlWFNT
UHJvdGVjdGlvbkhlYWRlcihjb25zdCBTdHJpbmcmIGhlYWRlciwgU3RyaW5nJiBmYWlsdXJlUmVh
c29uKTsKK1hTU1Byb3RlY3Rpb25EaXNwb3NpdGlvbiBwYXJzZVhTU1Byb3RlY3Rpb25IZWFkZXIo
Y29uc3QgU3RyaW5nJiBoZWFkZXIsIFN0cmluZyYgZmFpbHVyZVJlYXNvbiwgdW5zaWduZWQmIGZh
aWx1cmVQb3NpdGlvbiwgU3RyaW5nJiByZXBvcnRVUkwpOwogU3RyaW5nIGV4dHJhY3RSZWFzb25Q
aHJhc2VGcm9tSFRUUFN0YXR1c0xpbmUoY29uc3QgU3RyaW5nJik7CiAKIC8vIC0xIGNvdWxkIGJl
IHNldCB0byBvbmUgb2YgdGhlIHJldHVybiBwYXJhbWV0ZXJzIHRvIGluZGljYXRlIHRoZSB2YWx1
ZSBpcyBub3Qgc3BlY2lmaWVkLgpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTMzMjA1KQorKysgTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTItMTEt
MDEgIFRvbSBTZXBleiAgPHRzZXBlekBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU3VwcG9ydCBY
LVhTUy1Qcm90ZWN0aW9uOiByZXBvcnQ9VVJMIGhlYWRlciBzeW50YXggaW4gWFNTQXVkaXRvci4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDg5Mgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaHR0cC90
ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL21hbGZvcm1lZC14c3MtcHJvdGVjdGlvbi1oZWFkZXIt
MS1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9y
L21hbGZvcm1lZC14c3MtcHJvdGVjdGlvbi1oZWFkZXItMi1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL21hbGZvcm1lZC14c3MtcHJvdGVjdGlv
bi1oZWFkZXItMy1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS94
c3NBdWRpdG9yL21hbGZvcm1lZC14c3MtcHJvdGVjdGlvbi1oZWFkZXItNC1leHBlY3RlZC50eHQ6
CisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL21hbGZvcm1lZC14c3Mt
cHJvdGVjdGlvbi1oZWFkZXItNS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAv
dGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9tYWxmb3JtZWQteHNzLXByb3RlY3Rpb24taGVhZGVy
LTUuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9y
L21hbGZvcm1lZC14c3MtcHJvdGVjdGlvbi1oZWFkZXItNi1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9tYWxmb3JtZWQteHNzLXBy
b3RlY3Rpb24taGVhZGVyLTYuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1
cml0eS94c3NBdWRpdG9yL21hbGZvcm1lZC14c3MtcHJvdGVjdGlvbi1oZWFkZXItNy1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9t
YWxmb3JtZWQteHNzLXByb3RlY3Rpb24taGVhZGVyLTcuaHRtbDogQWRkZWQuCisgICAgICAgICog
aHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL21hbGZvcm1lZC14c3MtcHJvdGVjdGlvbi1o
ZWFkZXItOC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJp
dHkveHNzQXVkaXRvci9tYWxmb3JtZWQteHNzLXByb3RlY3Rpb24taGVhZGVyLTguaHRtbDogQWRk
ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL21hbGZvcm1lZC14
c3MtcHJvdGVjdGlvbi1oZWFkZXItOS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0
dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9tYWxmb3JtZWQteHNzLXByb3RlY3Rpb24taGVh
ZGVyLTkuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRp
dG9yL3JlcG9ydC1zY3JpcHQtdGFnLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0
cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3JlcG9ydC1zY3JpcHQtdGFnLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9yZXNvdXJjZXMvZWNo
by1pbnRlcnRhZy5wbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Iv
eHNzLXByb3RlY3Rpb24tcGFyc2luZy0wMy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci94c3MtcHJvdGVjdGlvbi1wYXJzaW5nLTAz
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci94
c3MtcHJvdGVjdGlvbi1wYXJzaW5nLTA0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
aHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3hzcy1wcm90ZWN0aW9uLXBhcnNpbmctMDQu
aHRtbDogQWRkZWQuCisKIDIwMTItMTEtMDEgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29t
PgogCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA5
MTcKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9tYWxm
b3JtZWQteHNzLXByb3RlY3Rpb24taGVhZGVyLTEtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9tYWxmb3JtZWQteHNz
LXByb3RlY3Rpb24taGVhZGVyLTEtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxMzMwNzMpCisrKyBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvbWFsZm9ybWVkLXhzcy1w
cm90ZWN0aW9uLWhlYWRlci0xLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsx
LDQgQEAKLUNPTlNPTEUgTUVTU0FHRTogRXJyb3IgcGFyc2luZyBoZWFkZXIgWC1YU1MtUHJvdGVj
dGlvbjogMTIzNDU2Nzg5MDEyMzQ1Njc6IGV4cGVjdGVkIHNlbWljb2xvbi4gVGhlIGRlZmF1bHQg
cHJvdGVjdGlvbnMgd2lsbCBiZSBhcHBsaWVkLgorQ09OU09MRSBNRVNTQUdFOiBFcnJvciBwYXJz
aW5nIGhlYWRlciBYLVhTUy1Qcm90ZWN0aW9uOiAxMjM0NTY3ODkwMTIzNDU2NzogZXhwZWN0ZWQg
c2VtaWNvbG9uIGF0IGNoYXJhY3RlciBwb3NpdGlvbiAyLiBUaGUgZGVmYXVsdCBwcm90ZWN0aW9u
cyB3aWxsIGJlIGFwcGxpZWQuCiBDT05TT0xFIE1FU1NBR0U6IFJlZnVzZWQgdG8gZXhlY3V0ZSBh
IEphdmFTY3JpcHQgc2NyaXB0LiBTb3VyY2UgY29kZSBvZiBzY3JpcHQgZm91bmQgd2l0aGluIHJl
cXVlc3QuCiAKIFRoaXMgdGVzdHMgdGhhdCBhIG1hbGZvcm1lZCBYLVhTUy1Qcm90ZWN0aW9uIGhl
YWRlciBpcyBub3QgaWdub3JlZCB3aGVuIHRoZSBsZW5ndGggb2YgaXRzIHZhbHVlIGV4Y2VlZHMg
MTYgY2hhcmFjdGVycywgYW5kIHRoYXQgYW4gZXJyb3IgaXMgcmVwb3J0ZWQuCkluZGV4OiBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvbWFsZm9ybWVkLXhzcy1wcm90
ZWN0aW9uLWhlYWRlci0yLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvbWFsZm9ybWVkLXhzcy1wcm90ZWN0aW9uLWhl
YWRlci0yLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTMzMDczKQorKysgTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL21hbGZvcm1lZC14c3MtcHJvdGVjdGlvbi1oZWFk
ZXItMi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi1DT05TT0xF
IE1FU1NBR0U6IEVycm9yIHBhcnNpbmcgaGVhZGVyIFgtWFNTLVByb3RlY3Rpb246IHJlZDogZmly
c3Qgbm9uLWJsYW5rIGNoYXJhY3RlciBtdXN0IGJlIDAgb3IgMS4gVGhlIGRlZmF1bHQgcHJvdGVj
dGlvbnMgd2lsbCBiZSBhcHBsaWVkLgorQ09OU09MRSBNRVNTQUdFOiBFcnJvciBwYXJzaW5nIGhl
YWRlciBYLVhTUy1Qcm90ZWN0aW9uOiByZWQ6IGV4cGVjdGVkIDAgb3IgMSBhdCBjaGFyYWN0ZXIg
cG9zaXRpb24gMC4gVGhlIGRlZmF1bHQgcHJvdGVjdGlvbnMgd2lsbCBiZSBhcHBsaWVkLgogQ09O
U09MRSBNRVNTQUdFOiBSZWZ1c2VkIHRvIGV4ZWN1dGUgYSBKYXZhU2NyaXB0IHNjcmlwdC4gU291
cmNlIGNvZGUgb2Ygc2NyaXB0IGZvdW5kIHdpdGhpbiByZXF1ZXN0LgogCiBUaGlzIHRlc3RzIHRo
YXQgdGhlIFgtWFNTLVByb3RlY3Rpb24gaGVhZGVyIGlzIG5vdCBpZ25vcmVkIHdoZW4gdGhlIGZp
cnN0IGNoYXJhY3RlciBpcyBub3QgMCBvciAxLCBhbmQgdGhhdCB3ZSBpc3N1ZSBhbiBlcnJvci4K
SW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9tYWxmb3Jt
ZWQteHNzLXByb3RlY3Rpb24taGVhZGVyLTMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9tYWxmb3JtZWQteHNzLXBy
b3RlY3Rpb24taGVhZGVyLTMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxMzMwNzMpCisrKyBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvbWFsZm9ybWVkLXhzcy1wcm90
ZWN0aW9uLWhlYWRlci0zLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQg
QEAKLUNPTlNPTEUgTUVTU0FHRTogRXJyb3IgcGFyc2luZyBoZWFkZXIgWC1YU1MtUHJvdGVjdGlv
bjogMTsgbW9kZT1wdXJwbGU6IGludmFsaWQgbW9kZSBkaXJlY3RpdmUuIFRoZSBkZWZhdWx0IHBy
b3RlY3Rpb25zIHdpbGwgYmUgYXBwbGllZC4KK0NPTlNPTEUgTUVTU0FHRTogRXJyb3IgcGFyc2lu
ZyBoZWFkZXIgWC1YU1MtUHJvdGVjdGlvbjogMTsgbW9kZT1wdXJwbGU6IGludmFsaWQgbW9kZSBk
aXJlY3RpdmUgYXQgY2hhcmFjdGVyIHBvc2l0aW9uIDguIFRoZSBkZWZhdWx0IHByb3RlY3Rpb25z
IHdpbGwgYmUgYXBwbGllZC4KIENPTlNPTEUgTUVTU0FHRTogUmVmdXNlZCB0byBleGVjdXRlIGEg
SmF2YVNjcmlwdCBzY3JpcHQuIFNvdXJjZSBjb2RlIG9mIHNjcmlwdCBmb3VuZCB3aXRoaW4gcmVx
dWVzdC4KIAogVGhpcyB0ZXN0cyB0aGF0IGEgbWFsZm9ybWVkIFgtWFNTLVByb3RlY3Rpb24gaGVh
ZGVyIGlzIG5vdCBpZ25vcmVkIGFuZCBhbiBlcnJvciBpcyByZXBvcnRlZCB3aGVuIHRoZSBtb2Rl
PSB0b2tlbiBpcyBpbnZhbGlkLgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0
eS94c3NBdWRpdG9yL21hbGZvcm1lZC14c3MtcHJvdGVjdGlvbi1oZWFkZXItNC1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRp
dG9yL21hbGZvcm1lZC14c3MtcHJvdGVjdGlvbi1oZWFkZXItNC1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDEzMzA3MykKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRv
ci9tYWxmb3JtZWQteHNzLXByb3RlY3Rpb24taGVhZGVyLTQtZXhwZWN0ZWQudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0xLDQgKzEsNCBAQAotQ09OU09MRSBNRVNTQUdFOiBFcnJvciBwYXJzaW5nIGhl
YWRlciBYLVhTUy1Qcm90ZWN0aW9uOiAxOyBtb2RlPWJsb2NrLWEtYmxvY2stYmxvY2s6IGV4dHJh
IGNoYXJhY3RlcnMgZm9sbG93IHZhbGlkIGhlYWRlci4gVGhlIGRlZmF1bHQgcHJvdGVjdGlvbnMg
d2lsbCBiZSBhcHBsaWVkLgorQ09OU09MRSBNRVNTQUdFOiBFcnJvciBwYXJzaW5nIGhlYWRlciBY
LVhTUy1Qcm90ZWN0aW9uOiAxOyBtb2RlPWJsb2NrLWEtYmxvY2stYmxvY2s6IGV4cGVjdGVkIHNl
bWljb2xvbiBhdCBjaGFyYWN0ZXIgcG9zaXRpb24gMTQuIFRoZSBkZWZhdWx0IHByb3RlY3Rpb25z
IHdpbGwgYmUgYXBwbGllZC4KIENPTlNPTEUgTUVTU0FHRTogUmVmdXNlZCB0byBleGVjdXRlIGEg
SmF2YVNjcmlwdCBzY3JpcHQuIFNvdXJjZSBjb2RlIG9mIHNjcmlwdCBmb3VuZCB3aXRoaW4gcmVx
dWVzdC4KIAogVGhpcyB0ZXN0cyB0aGF0IHRoZSBYLVhTUy1Qcm90ZWN0aW9uIGhlYWRlciBpcyBu
b3QgaWdub3JlZCB3aGVuIHRoZXJlIGlzIGEgdHJhaWxpbmcgZ2FyYmFnZSBhZnRlciBtb2RlPWJs
b2NrLCBhbmQgd2UgaXNzdWUgYW4gZXJyb3IKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkveHNzQXVkaXRvci9tYWxmb3JtZWQteHNzLXByb3RlY3Rpb24taGVhZGVyLTUtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
eHNzQXVkaXRvci9tYWxmb3JtZWQteHNzLXByb3RlY3Rpb24taGVhZGVyLTUtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRp
dG9yL21hbGZvcm1lZC14c3MtcHJvdGVjdGlvbi1oZWFkZXItNS1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMTEgQEAKK0NPTlNPTEUgTUVTU0FHRTogRXJyb3IgcGFyc2luZyBo
ZWFkZXIgWC1YU1MtUHJvdGVjdGlvbjogMTsgbW9kZT1ibG9jazsgcmVwb3J0OiBleHBlY3RlZCBl
cXVhbHMgc2lnbiBhdCBjaGFyYWN0ZXIgcG9zaXRpb24gMjEuIFRoZSBkZWZhdWx0IHByb3RlY3Rp
b25zIHdpbGwgYmUgYXBwbGllZC4KK0NPTlNPTEUgTUVTU0FHRTogUmVmdXNlZCB0byBleGVjdXRl
IGEgSmF2YVNjcmlwdCBzY3JpcHQuIFNvdXJjZSBjb2RlIG9mIHNjcmlwdCBmb3VuZCB3aXRoaW4g
cmVxdWVzdC4KKworVGhpcyB0ZXN0cyB0aGF0IHRoZSBYLVhTUy1Qcm90ZWN0aW9uIGhlYWRlciBp
cyBub3QgaWdub3JlZCB3aGVuIHRoZXJlIGlzIGFuIGluY29tcGxldGUgcmVwb3J0IHVybCBmb2xs
b3dpbmcgbW9kZT1ibG9jaywgYW5kIHdlIGlzc3VlIGFuIGVycm9yCisKKworCistLS0tLS0tLQor
RnJhbWU6ICdmcmFtZScKKy0tLS0tLS0tCitJZiB5b3Ugc2VlIHRoaXMgbWVzc2FnZSBhbmQgbm8g
SmF2YVNjcmlwdCBhbGVydCgpIHRoZW4gdGhlIHRlc3QgUEFTU0VELgpJbmRleDogTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL21hbGZvcm1lZC14c3MtcHJvdGVjdGlv
bi1oZWFkZXItNS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkveHNzQXVkaXRvci9tYWxmb3JtZWQteHNzLXByb3RlY3Rpb24taGVhZGVyLTUuaHRtbAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRv
ci9tYWxmb3JtZWQteHNzLXByb3RlY3Rpb24taGVhZGVyLTUuaHRtbAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwxOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBz
cmM9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS94c3NBdWRpdG9yL3Jlc291cmNlcy91
dGlsaXRpZXMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikg
eworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIuZHVtcENoaWxk
RnJhbWVzQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdGVz
dFJ1bm5lci5zZXRYU1NBdWRpdG9yRW5hYmxlZCh0cnVlKTsKK30KKzwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8cD5UaGlzIHRlc3RzIHRoYXQgdGhlIFgtWFNTLVByb3RlY3Rpb24gaGVhZGVy
IGlzIG5vdCBpZ25vcmVkIHdoZW4gdGhlcmUgaXMgYW4gaW5jb21wbGV0ZSByZXBvcnQgdXJsIGZv
bGxvd2luZyBtb2RlPWJsb2NrLCBhbmQgd2UgaXNzdWUgYW4gZXJyb3I8L3A+Cis8aWZyYW1lIGlk
PSJmcmFtZSIgb25sb2FkPSJjaGVja0lmRnJhbWVMb2NhdGlvbk1hdGNoZXNVUkxBbmRDYWxsRG9u
ZSgnZnJhbWUnLCAnYWJvdXQ6YmxhbmsnKSIgc3JjPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2Vj
dXJpdHkveHNzQXVkaXRvci9yZXNvdXJjZXMvZWNoby1pbnRlcnRhZy5wbD9ub3RpZnlEb25lPTEm
bWFsZm9ybWVkLWhlYWRlcj01JnE9PHNjcmlwdD5hbGVydChTdHJpbmcuZnJvbUNoYXJDb2RlKDB4
NTgsMHg1MywweDUzKSk8L3NjcmlwdD48cD5JZiB5b3Ugc2VlIHRoaXMgbWVzc2FnZSBhbmQgbm8g
SmF2YVNjcmlwdCBhbGVydCgpIHRoZW4gdGhlIHRlc3QgUEFTU0VELjwvcD4iPgorPC9pZnJhbWU+
Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L3hzc0F1ZGl0b3IvbWFsZm9ybWVkLXhzcy1wcm90ZWN0aW9uLWhlYWRlci02LWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0
b3IvbWFsZm9ybWVkLXhzcy1wcm90ZWN0aW9uLWhlYWRlci02LWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9tYWxm
b3JtZWQteHNzLXByb3RlY3Rpb24taGVhZGVyLTYtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDExIEBACitDT05TT0xFIE1FU1NBR0U6IEVycm9yIHBhcnNpbmcgaGVhZGVyIFgt
WFNTLVByb3RlY3Rpb246IDE7IHJlcG9ydD0gOzogaW52YWxpZCByZXBvcnQgZGlyZWN0aXZlIGF0
IGNoYXJhY3RlciBwb3NpdGlvbiAxMS4gVGhlIGRlZmF1bHQgcHJvdGVjdGlvbnMgd2lsbCBiZSBh
cHBsaWVkLgorQ09OU09MRSBNRVNTQUdFOiBSZWZ1c2VkIHRvIGV4ZWN1dGUgYSBKYXZhU2NyaXB0
IHNjcmlwdC4gU291cmNlIGNvZGUgb2Ygc2NyaXB0IGZvdW5kIHdpdGhpbiByZXF1ZXN0LgorCitU
aGlzIHRlc3RzIHRoYXQgdGhlIFgtWFNTLVByb3RlY3Rpb24gaGVhZGVyIGlzIG5vdCBpZ25vcmVk
IHdoZW4gdGhlcmUgaXMgYW4gaW5jb21wbGV0ZSByZXBvcnQgZGlyZWN0aXZlLCBhbmQgd2UgaXNz
dWUgYW4gZXJyb3IKKworCisKKy0tLS0tLS0tCitGcmFtZTogJ2ZyYW1lJworLS0tLS0tLS0KK0lm
IHlvdSBzZWUgdGhpcyBtZXNzYWdlIGFuZCBubyBKYXZhU2NyaXB0IGFsZXJ0KCkgdGhlbiB0aGUg
dGVzdCBQQVNTRUQuCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1
ZGl0b3IvbWFsZm9ybWVkLXhzcy1wcm90ZWN0aW9uLWhlYWRlci02Lmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL21hbGZvcm1lZC14
c3MtcHJvdGVjdGlvbi1oZWFkZXItNi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL21hbGZvcm1lZC14c3MtcHJvdGVjdGlvbi1o
ZWFkZXItNi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE5IEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL3Nl
Y3VyaXR5L3hzc0F1ZGl0b3IvcmVzb3VyY2VzL3V0aWxpdGllcy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKKyAgICB0ZXN0UnVu
bmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLnNldFhTU0F1ZGl0b3JFbmFibGVk
KHRydWUpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdHMgdGhh
dCB0aGUgWC1YU1MtUHJvdGVjdGlvbiBoZWFkZXIgaXMgbm90IGlnbm9yZWQgd2hlbiB0aGVyZSBp
cyBhbiBpbmNvbXBsZXRlIHJlcG9ydCBkaXJlY3RpdmUsIGFuZCB3ZSBpc3N1ZSBhbiBlcnJvcjwv
cD4KKzxpZnJhbWUgaWQ9ImZyYW1lIiBvbmxvYWQ9ImNoZWNrSWZGcmFtZUxvY2F0aW9uTWF0Y2hl
c1VSTEFuZENhbGxEb25lKCdmcmFtZScsICdhYm91dDpibGFuaycpIiBzcmM9Imh0dHA6Ly8xMjcu
MC4wLjE6ODAwMC9zZWN1cml0eS94c3NBdWRpdG9yL3Jlc291cmNlcy9lY2hvLWludGVydGFnLnBs
P25vdGlmeURvbmU9MSZtYWxmb3JtZWQtaGVhZGVyPTYmcT08c2NyaXB0PmFsZXJ0KFN0cmluZy5m
cm9tQ2hhckNvZGUoMHg1OCwweDUzLDB4NTMpKTwvc2NyaXB0PjxwPklmIHlvdSBzZWUgdGhpcyBt
ZXNzYWdlIGFuZCBubyBKYXZhU2NyaXB0IGFsZXJ0KCkgdGhlbiB0aGUgdGVzdCBQQVNTRUQuPC9w
PiI+Cis8L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9tYWxmb3JtZWQteHNzLXByb3RlY3Rpb24taGVhZGVy
LTctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkveHNzQXVkaXRvci9tYWxmb3JtZWQteHNzLXByb3RlY3Rpb24taGVhZGVyLTctZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94
c3NBdWRpdG9yL21hbGZvcm1lZC14c3MtcHJvdGVjdGlvbi1oZWFkZXItNy1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTEgQEAKK0NPTlNPTEUgTUVTU0FHRTogRXJyb3IgcGFy
c2luZyBoZWFkZXIgWC1YU1MtUHJvdGVjdGlvbjogMTsgcmVkOiB1bnJlY29nbml6ZWQgZGlyZWN0
aXZlIGF0IGNoYXJhY3RlciBwb3NpdGlvbiAzLiBUaGUgZGVmYXVsdCBwcm90ZWN0aW9ucyB3aWxs
IGJlIGFwcGxpZWQuCitDT05TT0xFIE1FU1NBR0U6IFJlZnVzZWQgdG8gZXhlY3V0ZSBhIEphdmFT
Y3JpcHQgc2NyaXB0LiBTb3VyY2UgY29kZSBvZiBzY3JpcHQgZm91bmQgd2l0aGluIHJlcXVlc3Qu
CisKK1RoaXMgdGVzdHMgdGhhdCB0aGUgWC1YU1MtUHJvdGVjdGlvbiBoZWFkZXIgaXMgbm90IGln
bm9yZWQgd2hlbiB0aGVyZSBpcyBhbiBpbnZhbGlkIGRpcmVjdGl2ZSwgYW5kIHdlIGlzc3VlIGFu
IGVycm9yCisKKworCistLS0tLS0tLQorRnJhbWU6ICdmcmFtZScKKy0tLS0tLS0tCitJZiB5b3Ug
c2VlIHRoaXMgbWVzc2FnZSBhbmQgbm8gSmF2YVNjcmlwdCBhbGVydCgpIHRoZW4gdGhlIHRlc3Qg
UEFTU0VELgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9y
L21hbGZvcm1lZC14c3MtcHJvdGVjdGlvbi1oZWFkZXItNy5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9tYWxmb3JtZWQteHNzLXBy
b3RlY3Rpb24taGVhZGVyLTcuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9tYWxmb3JtZWQteHNzLXByb3RlY3Rpb24taGVhZGVy
LTcuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0
eS94c3NBdWRpdG9yL3Jlc291cmNlcy91dGlsaXRpZXMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4K
K2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwor
ICAgIHRlc3RSdW5uZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5zZXRYU1NBdWRpdG9yRW5hYmxlZCh0cnVl
KTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3RzIHRoYXQgdGhl
IFgtWFNTLVByb3RlY3Rpb24gaGVhZGVyIGlzIG5vdCBpZ25vcmVkIHdoZW4gdGhlcmUgaXMgYW4g
aW52YWxpZCBkaXJlY3RpdmUsIGFuZCB3ZSBpc3N1ZSBhbiBlcnJvcjwvcD4KKzxpZnJhbWUgaWQ9
ImZyYW1lIiBvbmxvYWQ9ImNoZWNrSWZGcmFtZUxvY2F0aW9uTWF0Y2hlc1VSTEFuZENhbGxEb25l
KCdmcmFtZScsICdhYm91dDpibGFuaycpIiBzcmM9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1
cml0eS94c3NBdWRpdG9yL3Jlc291cmNlcy9lY2hvLWludGVydGFnLnBsP25vdGlmeURvbmU9MSZt
YWxmb3JtZWQtaGVhZGVyPTcmcT08c2NyaXB0PmFsZXJ0KFN0cmluZy5mcm9tQ2hhckNvZGUoMHg1
OCwweDUzLDB4NTMpKTwvc2NyaXB0PjxwPklmIHlvdSBzZWUgdGhpcyBtZXNzYWdlIGFuZCBubyBK
YXZhU2NyaXB0IGFsZXJ0KCkgdGhlbiB0aGUgdGVzdCBQQVNTRUQuPC9wPiI+Cis8L2lmcmFtZT4K
KzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
eHNzQXVkaXRvci9tYWxmb3JtZWQteHNzLXByb3RlY3Rpb24taGVhZGVyLTgtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRv
ci9tYWxmb3JtZWQteHNzLXByb3RlY3Rpb24taGVhZGVyLTgtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL21hbGZv
cm1lZC14c3MtcHJvdGVjdGlvbi1oZWFkZXItOC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMTEgQEAKK0NPTlNPTEUgTUVTU0FHRTogRXJyb3IgcGFyc2luZyBoZWFkZXIgWC1Y
U1MtUHJvdGVjdGlvbjogMTsgbW9kZT1ibG9jazsgcmVwb3J0PS9mYWlsOyBtb2RlPWJsb2NrOzog
ZHVwbGljYXRlIG1vZGUgZGlyZWN0aXZlIGF0IGNoYXJhY3RlciBwb3NpdGlvbiAzMy4gVGhlIGRl
ZmF1bHQgcHJvdGVjdGlvbnMgd2lsbCBiZSBhcHBsaWVkLgorQ09OU09MRSBNRVNTQUdFOiBSZWZ1
c2VkIHRvIGV4ZWN1dGUgYSBKYXZhU2NyaXB0IHNjcmlwdC4gU291cmNlIGNvZGUgb2Ygc2NyaXB0
IGZvdW5kIHdpdGhpbiByZXF1ZXN0LgorCitUaGlzIHRlc3RzIHRoYXQgdGhlIFgtWFNTLVByb3Rl
Y3Rpb24gaGVhZGVyIGlzIG5vdCBpZ25vcmVkIHdoZW4gdGhlcmUgaXMgYW4gZHVwbGljYXRlIG1v
ZGUgZGlyZWN0aXZlLCBhbmQgd2UgaXNzdWUgYW4gZXJyb3IKKworCisKKy0tLS0tLS0tCitGcmFt
ZTogJ2ZyYW1lJworLS0tLS0tLS0KK0lmIHlvdSBzZWUgdGhpcyBtZXNzYWdlIGFuZCBubyBKYXZh
U2NyaXB0IGFsZXJ0KCkgdGhlbiB0aGUgdGVzdCBQQVNTRUQuCkluZGV4OiBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvbWFsZm9ybWVkLXhzcy1wcm90ZWN0aW9uLWhl
YWRlci04Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0
eS94c3NBdWRpdG9yL21hbGZvcm1lZC14c3MtcHJvdGVjdGlvbi1oZWFkZXItOC5odG1sCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL21h
bGZvcm1lZC14c3MtcHJvdGVjdGlvbi1oZWFkZXItOC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDE5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0i
aHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3hzc0F1ZGl0b3IvcmVzb3VyY2VzL3V0aWxp
dGllcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Cisg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQ2hpbGRGcmFt
ZXNBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVu
bmVyLnNldFhTU0F1ZGl0b3JFbmFibGVkKHRydWUpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxwPlRoaXMgdGVzdHMgdGhhdCB0aGUgWC1YU1MtUHJvdGVjdGlvbiBoZWFkZXIgaXMg
bm90IGlnbm9yZWQgd2hlbiB0aGVyZSBpcyBhbiBkdXBsaWNhdGUgbW9kZSBkaXJlY3RpdmUsIGFu
ZCB3ZSBpc3N1ZSBhbiBlcnJvcjwvcD4KKzxpZnJhbWUgaWQ9ImZyYW1lIiBvbmxvYWQ9ImNoZWNr
SWZGcmFtZUxvY2F0aW9uTWF0Y2hlc1VSTEFuZENhbGxEb25lKCdmcmFtZScsICdhYm91dDpibGFu
aycpIiBzcmM9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS94c3NBdWRpdG9yL3Jlc291
cmNlcy9lY2hvLWludGVydGFnLnBsP25vdGlmeURvbmU9MSZtYWxmb3JtZWQtaGVhZGVyPTgmcT08
c2NyaXB0PmFsZXJ0KFN0cmluZy5mcm9tQ2hhckNvZGUoMHg1OCwweDUzLDB4NTMpKTwvc2NyaXB0
PjxwPklmIHlvdSBzZWUgdGhpcyBtZXNzYWdlIGFuZCBubyBKYXZhU2NyaXB0IGFsZXJ0KCkgdGhl
biB0aGUgdGVzdCBQQVNTRUQuPC9wPiI+Cis8L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4KSW5k
ZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9tYWxmb3JtZWQt
eHNzLXByb3RlY3Rpb24taGVhZGVyLTktZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9tYWxmb3JtZWQteHNzLXByb3Rl
Y3Rpb24taGVhZGVyLTktZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL21hbGZvcm1lZC14c3MtcHJvdGVjdGlvbi1o
ZWFkZXItOS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTEgQEAKK0NPTlNP
TEUgTUVTU0FHRTogRXJyb3IgcGFyc2luZyBoZWFkZXIgWC1YU1MtUHJvdGVjdGlvbjogMTsgbW9k
ZT1ibG9jazsgcmVwb3J0PS9mYWlsOyByZXBvcnQ9L2ZhaWw7OiBkdXBsaWNhdGUgcmVwb3J0IGRp
cmVjdGl2ZSBhdCBjaGFyYWN0ZXIgcG9zaXRpb24gMzUuIFRoZSBkZWZhdWx0IHByb3RlY3Rpb25z
IHdpbGwgYmUgYXBwbGllZC4KK0NPTlNPTEUgTUVTU0FHRTogUmVmdXNlZCB0byBleGVjdXRlIGEg
SmF2YVNjcmlwdCBzY3JpcHQuIFNvdXJjZSBjb2RlIG9mIHNjcmlwdCBmb3VuZCB3aXRoaW4gcmVx
dWVzdC4KKworVGhpcyB0ZXN0cyB0aGF0IHRoZSBYLVhTUy1Qcm90ZWN0aW9uIGhlYWRlciBpcyBu
b3QgaWdub3JlZCB3aGVuIHRoZXJlIGlzIGEgZHVwbGljYXRlIHJlcG9ydCBkaXJlY3RpdmUsIGFu
ZCB3ZSBpc3N1ZSBhbiBlcnJvcgorCisKKworLS0tLS0tLS0KK0ZyYW1lOiAnZnJhbWUnCistLS0t
LS0tLQorSWYgeW91IHNlZSB0aGlzIG1lc3NhZ2UgYW5kIG5vIEphdmFTY3JpcHQgYWxlcnQoKSB0
aGVuIHRoZSB0ZXN0IFBBU1NFRC4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkveHNzQXVkaXRvci9tYWxmb3JtZWQteHNzLXByb3RlY3Rpb24taGVhZGVyLTkuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvbWFs
Zm9ybWVkLXhzcy1wcm90ZWN0aW9uLWhlYWRlci05Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvbWFsZm9ybWVkLXhzcy1wcm90
ZWN0aW9uLWhlYWRlci05Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTkgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJodHRwOi8vbG9jYWxob3N0
OjgwMDAvc2VjdXJpdHkveHNzQXVkaXRvci9yZXNvdXJjZXMvdXRpbGl0aWVzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOworICAg
IHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIuc2V0WFNTQXVkaXRv
ckVuYWJsZWQodHJ1ZSk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyB0
ZXN0cyB0aGF0IHRoZSBYLVhTUy1Qcm90ZWN0aW9uIGhlYWRlciBpcyBub3QgaWdub3JlZCB3aGVu
IHRoZXJlIGlzIGEgZHVwbGljYXRlIHJlcG9ydCBkaXJlY3RpdmUsIGFuZCB3ZSBpc3N1ZSBhbiBl
cnJvcjwvcD4KKzxpZnJhbWUgaWQ9ImZyYW1lIiBvbmxvYWQ9ImNoZWNrSWZGcmFtZUxvY2F0aW9u
TWF0Y2hlc1VSTEFuZENhbGxEb25lKCdmcmFtZScsICdhYm91dDpibGFuaycpIiBzcmM9Imh0dHA6
Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS94c3NBdWRpdG9yL3Jlc291cmNlcy9lY2hvLWludGVy
dGFnLnBsP25vdGlmeURvbmU9MSZtYWxmb3JtZWQtaGVhZGVyPTkmcT08c2NyaXB0PmFsZXJ0KFN0
cmluZy5mcm9tQ2hhckNvZGUoMHg1OCwweDUzLDB4NTMpKTwvc2NyaXB0PjxwPklmIHlvdSBzZWUg
dGhpcyBtZXNzYWdlIGFuZCBubyBKYXZhU2NyaXB0IGFsZXJ0KCkgdGhlbiB0aGUgdGVzdCBQQVNT
RUQuPC9wPiI+Cis8L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9yZXBvcnQtc2NyaXB0LXRhZy1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NB
dWRpdG9yL3JlcG9ydC1zY3JpcHQtdGFnLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9yZXBvcnQtc2NyaXB0LXRh
Zy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTUgQEAKK0NPTlNPTEUgTUVT
U0FHRTogUmVmdXNlZCB0byBleGVjdXRlIGEgSmF2YVNjcmlwdCBzY3JpcHQuIFNvdXJjZSBjb2Rl
IG9mIHNjcmlwdCBmb3VuZCB3aXRoaW4gcmVxdWVzdC4KKworVGhpcyB0ZXN0cyB0aGF0IHRoZSBY
LVhTUy1Qcm90ZWN0aW9uIHJlcG9ydHMgYXJlIHNlbnQgb3V0IHByb3Blcmx5CisKKworCistLS0t
LS0tLQorRnJhbWU6ICdmcmFtZScKKy0tLS0tLS0tCitDU1AgcmVwb3J0IHJlY2VpdmVkOgorQ09O
VEVOVF9UWVBFOiBhcHBsaWNhdGlvbi9qc29uCitIVFRQX1JFRkVSRVI6IGh0dHA6Ly8xMjcuMC4w
LjE6ODAwMC9zZWN1cml0eS94c3NBdWRpdG9yL3Jlc291cmNlcy9lY2hvLWludGVydGFnLnBsP2Vj
aG8tcmVwb3J0PTEmZW5hYmxlLXJlcG9ydD0xJnE9JTNDc2NyaXB0JTNFYWxlcnQoU3RyaW5nLmZy
b21DaGFyQ29kZSgweDU4LDB4NTMsMHg1MykpJTNDL3NjcmlwdCUzRSUzQ3AlM0VJZiUyMHlvdSUy
MHNlZSUyMHRoaXMlMjBtZXNzYWdlLCUyMG5vJTIwSmF2YVNjcmlwdCUyMGFsZXJ0KCksJTIwYW5k
JTIwYSUyMGR1bXAlMjBvZiUyMHRoZSUyMHJlcG9ydCUyMGJlbG93LCUyMHRoZW4lMjB0aGUlMjB0
ZXN0JTIwUEFTU0VELiUzQy9wJTNFCitSRVFVRVNUX01FVEhPRDogUE9TVAorPT09IFBPU1QgREFU
QSA9PT0KK3sieHNzLXJlcG9ydCI6eyJyZXF1ZXN0LXVybCI6Imh0dHA6Ly8xMjcuMC4wLjE6ODAw
MC9zZWN1cml0eS94c3NBdWRpdG9yL3Jlc291cmNlcy9lY2hvLWludGVydGFnLnBsP2VjaG8tcmVw
b3J0PTEmZW5hYmxlLXJlcG9ydD0xJnE9JTNDc2NyaXB0JTNFYWxlcnQoU3RyaW5nLmZyb21DaGFy
Q29kZSgweDU4LDB4NTMsMHg1MykpJTNDL3NjcmlwdCUzRSUzQ3AlM0VJZiUyMHlvdSUyMHNlZSUy
MHRoaXMlMjBtZXNzYWdlLCUyMG5vJTIwSmF2YVNjcmlwdCUyMGFsZXJ0KCksJTIwYW5kJTIwYSUy
MGR1bXAlMjBvZiUyMHRoZSUyMHJlcG9ydCUyMGJlbG93LCUyMHRoZW4lMjB0aGUlMjB0ZXN0JTIw
UEFTU0VELiUzQy9wJTNFIiwicmVxdWVzdC1ib2R5IjoiIn19CkluZGV4OiBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvcmVwb3J0LXNjcmlwdC10YWcuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvcmVw
b3J0LXNjcmlwdC10YWcuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkveHNzQXVkaXRvci9yZXBvcnQtc2NyaXB0LXRhZy5odG1sCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDE5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2Ny
aXB0IHNyYz0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3hzc0F1ZGl0b3IvcmVzb3Vy
Y2VzL3V0aWxpdGllcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVu
bmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci5kdW1w
Q2hpbGRGcmFtZXNBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAg
ICB0ZXN0UnVubmVyLnNldFhTU0F1ZGl0b3JFbmFibGVkKHRydWUpOworfQorPC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdHMgdGhhdCB0aGUgWC1YU1MtUHJvdGVjdGlvbiBy
ZXBvcnRzIGFyZSBzZW50IG91dCBwcm9wZXJseTwvcD4KKzxpZnJhbWUgaWQ9ImZyYW1lIiBzcmM9
Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS94c3NBdWRpdG9yL3Jlc291cmNlcy9lY2hv
LWludGVydGFnLnBsP2VjaG8tcmVwb3J0PTEmZW5hYmxlLXJlcG9ydD0xJnE9PHNjcmlwdD5hbGVy
dChTdHJpbmcuZnJvbUNoYXJDb2RlKDB4NTgsMHg1MywweDUzKSk8L3NjcmlwdD48cD5JZiB5b3Ug
c2VlIHRoaXMgbWVzc2FnZSwgbm8gSmF2YVNjcmlwdCBhbGVydCgpLCBhbmQgYSBkdW1wIG9mIHRo
ZSByZXBvcnQgYmVsb3csIHRoZW4gdGhlIHRlc3QgUEFTU0VELjwvcD4iPgorPC9pZnJhbWU+Cis8
L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hz
c0F1ZGl0b3IveHNzLXByb3RlY3Rpb24tcGFyc2luZy0wMy1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3hzcy1wcm90
ZWN0aW9uLXBhcnNpbmctMDMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3hzcy1wcm90ZWN0aW9uLXBhcnNpbmct
MDMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwIEBACitDT05TT0xFIE1F
U1NBR0U6IFJlZnVzZWQgdG8gZXhlY3V0ZSBhIEphdmFTY3JpcHQgc2NyaXB0LiBTb3VyY2UgY29k
ZSBvZiBzY3JpcHQgZm91bmQgd2l0aGluIHJlcXVlc3QuCisKK1RoaXMgdGVzdHMgdGhhdCB0aGUg
WC1YU1MtUHJvdGVjdGlvbiBoZWFkZXIgaXMgbm90IGlnbm9yZWQgd2hlbiB0aGVyZSBpcyBhIHRy
YWlsaW5nIHNlbWljb2xvbiBmb2xsb3dpbmcgbW9kZT1ibGFuay4gQWx0aG91Z2ggdGhlb3JldGlj
YWxseSBtYWxmb3JtZWQsIHdlIHRvbGVyYXRlIHRoaXMgY2FzZSB3aXRob3V0IGlzc3VpbmcgYW4g
ZXJyb3IuCisKKworCistLS0tLS0tLQorRnJhbWU6ICdmcmFtZScKKy0tLS0tLS0tCisKSW5kZXg6
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci94c3MtcHJvdGVjdGlv
bi1wYXJzaW5nLTAzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS94c3NBdWRpdG9yL3hzcy1wcm90ZWN0aW9uLXBhcnNpbmctMDMuaHRtbAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci94c3Mt
cHJvdGVjdGlvbi1wYXJzaW5nLTAzLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjAgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJodHRwOi8vbG9j
YWxob3N0OjgwMDAvc2VjdXJpdHkveHNzQXVkaXRvci9yZXNvdXJjZXMvdXRpbGl0aWVzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgp
OworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIuc2V0WFNT
QXVkaXRvckVuYWJsZWQodHJ1ZSk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHA+
VGhpcyB0ZXN0cyB0aGF0IHRoZSBYLVhTUy1Qcm90ZWN0aW9uIGhlYWRlciBpcyBub3QgaWdub3Jl
ZCB3aGVuIHRoZXJlIGlzIGEgdHJhaWxpbmcgc2VtaWNvbG9uIGZvbGxvd2luZyBtb2RlPWJsYW5r
LgorQWx0aG91Z2ggdGhlb3JldGljYWxseSBtYWxmb3JtZWQsIHdlIHRvbGVyYXRlIHRoaXMgY2Fz
ZSB3aXRob3V0IGlzc3VpbmcgYW4gZXJyb3IuIDwvcD4KKzxpZnJhbWUgaWQ9ImZyYW1lIiBvbmxv
YWQ9ImNoZWNrSWZGcmFtZUxvY2F0aW9uTWF0Y2hlc1VSTEFuZENhbGxEb25lKCdmcmFtZScsICdh
Ym91dDpibGFuaycpIiBzcmM9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS94c3NBdWRp
dG9yL3Jlc291cmNlcy9lY2hvLWludGVydGFnLnBsP25vdGlmeURvbmU9MSZ2YWxpZC1oZWFkZXI9
MyZxPTxzY3JpcHQ+YWxlcnQoU3RyaW5nLmZyb21DaGFyQ29kZSgweDU4LDB4NTMsMHg1MykpPC9z
Y3JpcHQ+PHA+SWYgeW91IHNlZSB0aGlzIG1lc3NhZ2UgYW5kIG5vIEphdmFTY3JpcHQgYWxlcnQo
KSB0aGVuIHRoZSB0ZXN0IFBBU1NFRC48L3A+Ij4KKzwvaWZyYW1lPgorPC9ib2R5PgorPC9odG1s
PgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3hzcy1w
cm90ZWN0aW9uLXBhcnNpbmctMDQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci94c3MtcHJvdGVjdGlvbi1wYXJzaW5n
LTA0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkveHNzQXVkaXRvci94c3MtcHJvdGVjdGlvbi1wYXJzaW5nLTA0LWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMCBAQAorQ09OU09MRSBNRVNTQUdFOiBSZWZ1c2Vk
IHRvIGV4ZWN1dGUgYSBKYXZhU2NyaXB0IHNjcmlwdC4gU291cmNlIGNvZGUgb2Ygc2NyaXB0IGZv
dW5kIHdpdGhpbiByZXF1ZXN0LgorCitUaGlzIHRlc3RzIHRoYXQgdGhlIFgtWFNTLVByb3RlY3Rp
b24gaGVhZGVyIGlzIG5vdCBpZ25vcmVkIHdoZW4gdGhlIHJlcG9ydCBhbmQgbW9kZSBkaXJlY3Rp
dmVzIGFyZSBzd2FwcGVkLgorCisKKworLS0tLS0tLS0KK0ZyYW1lOiAnZnJhbWUnCistLS0tLS0t
LQorCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IveHNz
LXByb3RlY3Rpb24tcGFyc2luZy0wNC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci94c3MtcHJvdGVjdGlvbi1wYXJzaW5nLTA0Lmh0
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1
ZGl0b3IveHNzLXByb3RlY3Rpb24tcGFyc2luZy0wNC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDE5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0i
aHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3hzc0F1ZGl0b3IvcmVzb3VyY2VzL3V0aWxp
dGllcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Cisg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQ2hpbGRGcmFt
ZXNBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVu
bmVyLnNldFhTU0F1ZGl0b3JFbmFibGVkKHRydWUpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxwPlRoaXMgdGVzdHMgdGhhdCB0aGUgWC1YU1MtUHJvdGVjdGlvbiBoZWFkZXIgaXMg
bm90IGlnbm9yZWQgd2hlbiB0aGUgcmVwb3J0IGFuZCBtb2RlIGRpcmVjdGl2ZXMgYXJlIHN3YXBw
ZWQuPC9wPgorPGlmcmFtZSBpZD0iZnJhbWUiIG9ubG9hZD0iY2hlY2tJZkZyYW1lTG9jYXRpb25N
YXRjaGVzVVJMQW5kQ2FsbERvbmUoJ2ZyYW1lJywgJ2Fib3V0OmJsYW5rJykiIHNyYz0iaHR0cDov
LzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3hzc0F1ZGl0b3IvcmVzb3VyY2VzL2VjaG8taW50ZXJ0
YWcucGw/bm90aWZ5RG9uZT0xJnZhbGlkLWhlYWRlcj00JnE9PHNjcmlwdD5hbGVydChTdHJpbmcu
ZnJvbUNoYXJDb2RlKDB4NTgsMHg1MywweDUzKSk8L3NjcmlwdD48cD5JZiB5b3Ugc2VlIHRoaXMg
bWVzc2FnZSBhbmQgbm8gSmF2YVNjcmlwdCBhbGVydCgpIHRoZW4gdGhlIHRlc3QgUEFTU0VELjwv
cD4iPgorPC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvcmVzb3VyY2VzL2VjaG8taW50ZXJ0YWcucGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3Jl
c291cmNlcy9lY2hvLWludGVydGFnLnBsCShyZXZpc2lvbiAxMzMwNzMpCisrKyBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvcmVzb3VyY2VzL2VjaG8taW50ZXJ0YWcu
cGwJKHdvcmtpbmcgY29weSkKQEAgLTEzLDEyICsxMywyMyBAQCBpZiAoJGNnaS0+cGFyYW0oJ2Rp
c2FibGUtcHJvdGVjdGlvbicpKSB7CiBpZiAoJGNnaS0+cGFyYW0oJ2VuYWJsZS1mdWxsLWJsb2Nr
JykpIHsKICAgICBwcmludCAiWC1YU1MtUHJvdGVjdGlvbjogMTsgbW9kZT1ibG9ja1xuIjsKIH0K
K2lmICgkY2dpLT5wYXJhbSgnZW5hYmxlLXJlcG9ydCcpKSB7CisgICAgcHJpbnQgIlgtWFNTLVBy
b3RlY3Rpb246IDE7IHJlcG9ydD0vc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3Jlc291
cmNlcy9zYXZlLXJlcG9ydC5waHBcbiI7Cit9CisKIGlmICgkY2dpLT5wYXJhbSgndmFsaWQtaGVh
ZGVyJykgPT0gMSkgewogICAgIHByaW50ICJYLVhTUy1Qcm90ZWN0aW9uOiAgIDEgIDtNb0RlID0g
IGJMb2NLICAgXG4iOwogfQogaWYgKCRjZ2ktPnBhcmFtKCd2YWxpZC1oZWFkZXInKSA9PSAyKSB7
CiAgICAgcHJpbnQgIlgtWFNTLVByb3RlY3Rpb246IDE7IFxuIjsKIH0KK2lmICgkY2dpLT5wYXJh
bSgndmFsaWQtaGVhZGVyJykgPT0gMykgeworICAgIHByaW50ICJYLVhTUy1Qcm90ZWN0aW9uOiAx
OyBtb2RlPWJsb2NrOyBcbiI7Cit9CitpZiAoJGNnaS0+cGFyYW0oJ3ZhbGlkLWhlYWRlcicpID09
IDQpIHsKKyAgICBwcmludCAiWC1YU1MtUHJvdGVjdGlvbjogMTsgcmVwb3J0PS9zZWN1cml0eS9j
b250ZW50U2VjdXJpdHlQb2xpY3kvcmVzb3VyY2VzL3NhdmUtcmVwb3J0LnBocDsgbW9kZT1ibG9j
azsgXG4iOworfQorCiBpZiAoJGNnaS0+cGFyYW0oJ21hbGZvcm1lZC1oZWFkZXInKSA9PSAxKSB7
CiAgICAgcHJpbnQgIlgtWFNTLVByb3RlY3Rpb246IDEyMzQ1Njc4OTAxMjM0NTY3XG4iOwogfQpA
QCAtMzEsNiArNDIsMjEgQEAgaWYgKCRjZ2ktPnBhcmFtKCdtYWxmb3JtZWQtaGVhZGVyJykgPT0g
MwogaWYgKCRjZ2ktPnBhcmFtKCdtYWxmb3JtZWQtaGVhZGVyJykgPT0gNCkgewogICAgIHByaW50
ICJYLVhTUy1Qcm90ZWN0aW9uOiAxOyBtb2RlPWJsb2NrLWEtYmxvY2stYmxvY2tcbiI7CiB9Citp
ZiAoJGNnaS0+cGFyYW0oJ21hbGZvcm1lZC1oZWFkZXInKSA9PSA1KSB7CisgICAgcHJpbnQgIlgt
WFNTLVByb3RlY3Rpb246IDE7IG1vZGU9YmxvY2s7IHJlcG9ydFxuIjsKK30KK2lmICgkY2dpLT5w
YXJhbSgnbWFsZm9ybWVkLWhlYWRlcicpID09IDYpIHsKKyAgICBwcmludCAiWC1YU1MtUHJvdGVj
dGlvbjogMTsgcmVwb3J0PSA7XG4iOworfQoraWYgKCRjZ2ktPnBhcmFtKCdtYWxmb3JtZWQtaGVh
ZGVyJykgPT0gNykgeworICAgIHByaW50ICJYLVhTUy1Qcm90ZWN0aW9uOiAxOyByZWRcbiI7Cit9
CitpZiAoJGNnaS0+cGFyYW0oJ21hbGZvcm1lZC1oZWFkZXInKSA9PSA4KSB7CisgICAgcHJpbnQg
IlgtWFNTLVByb3RlY3Rpb246IDE7IG1vZGU9YmxvY2s7IHJlcG9ydD0vZmFpbDsgbW9kZT1ibG9j
aztcbiI7Cit9CitpZiAoJGNnaS0+cGFyYW0oJ21hbGZvcm1lZC1oZWFkZXInKSA9PSA5KSB7Cisg
ICAgcHJpbnQgIlgtWFNTLVByb3RlY3Rpb246IDE7IG1vZGU9YmxvY2s7IHJlcG9ydD0vZmFpbDsg
cmVwb3J0PS9mYWlsO1xuIjsKK30KIAogcHJpbnQgIkNvbnRlbnQtVHlwZTogdGV4dC9odG1sOyBj
aGFyc2V0PSI7CiBwcmludCAkY2dpLT5wYXJhbSgnY2hhcnNldCcpID8gJGNnaS0+cGFyYW0oJ2No
YXJzZXQnKSA6ICJVVEYtOCI7CkBAIC03MSw1ICs5Nyw4IEBAIGlmICgkY2dpLT5wYXJhbSgnZW5h
YmxlLWZ1bGwtYmxvY2snKSkgewogaWYgKCRjZ2ktPnBhcmFtKCdhbGVydC1jb29raWUnKSkgewog
ICAgIHByaW50ICI8c2NyaXB0PmlmICgveHNzQXVkaXRvclRlc3RDb29raWUvLnRlc3QoZG9jdW1l
bnQuY29va2llKSkgeyBhbGVydCgnRkFJTDogJyArIGRvY3VtZW50LmNvb2tpZSk7IGRvY3VtZW50
LmNvb2tpZSA9ICd4c3NBdWRpdG9yVGVzdENvb2tpZT1yZW1vdmU7IG1heC1hZ2U9LTEnOyB9IGVs
c2UgYWxlcnQoJ1BBU1MnKTs8L3NjcmlwdD5cbiI7CiB9CitpZiAoJGNnaS0+cGFyYW0oJ2VjaG8t
cmVwb3J0JykpIHsKKyAgICBwcmludCAiPHNjcmlwdCBzcmM9L3NlY3VyaXR5L2NvbnRlbnRTZWN1
cml0eVBvbGljeS9yZXNvdXJjZXMvZ28tdG8tZWNoby1yZXBvcnQuanM+PC9zY3JpcHQ+XG4iOwor
fQogcHJpbnQgIjwvYm9keT5cbiI7CiBwcmludCAiPC9odG1sPlxuIjsK
</data>

          </attachment>
      

    </bug>

</bugzilla>