<?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>142211</bug_id>
          
          <creation_ts>2015-03-02 22:23:39 -0800</creation_ts>
          <short_desc>build.webkit.org/dashboard: Don&apos;t repeatedly handle each test type</short_desc>
          <delta_ts>2015-03-03 15:24:10 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>dburkart</cc>
    
    <cc>matthew_hanson</cc>
    
    <cc>ossy</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1073619</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-03-02 22:23:39 -0800</bug_when>
    <thetext>We hardcode all test types in several places in the dashboard code, but we don&apos;t do anything unique for any of them, except for layout tests. It would be much better to handle all these uniformly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1073625</commentid>
    <comment_count>1</comment_count>
      <attachid>247749</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-03-02 22:52:10 -0800</bug_when>
    <thetext>Created attachment 247749
proposed patch

See also: rdar://problem/19803991.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1073790</commentid>
    <comment_count>2</comment_count>
      <attachid>247749</attachid>
    <who name="Matthew Hanson">matthew_hanson</who>
    <bug_when>2015-03-03 13:59:48 -0800</bug_when>
    <thetext>Comment on attachment 247749
proposed patch

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

Looks really good. Thank you for this refactoring!

&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotTestResults.js:32
&gt; +    this._parseResults(testStep);

Why are this.name and this.URL not set in _parseResults? I&apos;m not at all hung up on this point, just curious.

&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotTestResults.js:91
&gt; +

It seems that you are passing undefined as the initial value of sum so that we can tell if we actually have a sum of 0 or if we had some sort of error condition. We could get around this by defining this.errorOccurred = False and setting the flag to True within resultsSummarizer if we encounter an error condition.

I realize that this adds a side effect to resultSummarizer, but it would remove the need to include each of the properties set above in the check below. You could then also use 0 as the default value for sum in your calls to reduce.

Once again, I&apos;m not too picky about this implementation detail.

&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotTesterQueueView.js:136
&gt; +    },

I know this was a mostly a copy/paste, but can we move the unicode strings to constants or add comments for readability?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1073826</commentid>
    <comment_count>3</comment_count>
      <attachid>247749</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-03-03 15:04:40 -0800</bug_when>
    <thetext>Comment on attachment 247749
proposed patch

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

&gt;&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotTestResults.js:32
&gt;&gt; +    this._parseResults(testStep);
&gt; 
&gt; Why are this.name and this.URL not set in _parseResults? I&apos;m not at all hung up on this point, just curious.

The reason is historical, _parseResults is moved code. They should be there, I can move them before landing.

&gt;&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotTestResults.js:91
&gt;&gt; +
&gt; 
&gt; It seems that you are passing undefined as the initial value of sum so that we can tell if we actually have a sum of 0 or if we had some sort of error condition. We could get around this by defining this.errorOccurred = False and setting the flag to True within resultsSummarizer if we encounter an error condition.
&gt; 
&gt; I realize that this adds a side effect to resultSummarizer, but it would remove the need to include each of the properties set above in the check below. You could then also use 0 as the default value for sum in your calls to reduce.
&gt; 
&gt; Once again, I&apos;m not too picky about this implementation detail.

True. I&apos;d like to keep it as is, as it&apos;s just moved code, and not a super big deal.

&gt;&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotTesterQueueView.js:136
&gt;&gt; +    },
&gt; 
&gt; I know this was a mostly a copy/paste, but can we move the unicode strings to constants or add comments for readability?

Sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1073830</commentid>
    <comment_count>4</comment_count>
      <attachid>247749</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-03-03 15:09:59 -0800</bug_when>
    <thetext>Comment on attachment 247749
proposed patch

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

&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotTestResults.js:143
&gt; +                        // on retry (except for reftests), so many times, you will see images on buidbot page, but not on the dashboard.

typo buidbot</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1073833</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-03-03 15:24:10 -0800</bug_when>
    <thetext>Committed &lt;http://trac.webkit.org/r180959&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247749</attachid>
            <date>2015-03-02 22:52:10 -0800</date>
            <delta_ts>2015-03-03 15:09:59 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>DashboardTests.txt</filename>
            <type>text/plain</type>
            <size>43035</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE4MDkyMCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDUxIEBACisyMDE1LTAzLTAyICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29t
PgorCisgICAgICAgIGJ1aWxkLndlYmtpdC5vcmcvZGFzaGJvYXJkOiBEb24ndCByZXBlYXRlZGx5
IGhhbmRsZSBlYWNoIHRlc3QgdHlwZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQyMjExCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdC5qczoKKyAgICAgICAgKEJ1
aWxkYm90LnByb3RvdHlwZS5qYXZhc2NyaXB0VGVzdFJlc3VsdHNVUkxGb3JJdGVyYXRpb24pOiBE
ZWxldGVkLgorICAgICAgICAoQnVpbGRib3QucHJvdG90eXBlLmFwaVRlc3RSZXN1bHRzVVJMRm9y
SXRlcmF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKEJ1aWxkYm90LnByb3RvdHlwZS5wbGF0Zm9y
bUFQSVRlc3RSZXN1bHRzVVJMRm9ySXRlcmF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKEJ1aWxk
Ym90LnByb3RvdHlwZS53ZWJraXRweVRlc3RSZXN1bHRzVVJMRm9ySXRlcmF0aW9uKTogRGVsZXRl
ZC4KKyAgICAgICAgKEJ1aWxkYm90LnByb3RvdHlwZS53ZWJraXRwZXJsVGVzdFJlc3VsdHNVUkxG
b3JJdGVyYXRpb24pOiBEZWxldGVkLgorICAgICAgICAoQnVpbGRib3QucHJvdG90eXBlLmJpbmRp
bmdzVGVzdFJlc3VsdHNVUkxGb3JJdGVyYXRpb24pOiBEZWxldGVkLgorICAgICAgICBSZW1vdmVk
IGZ1bmN0aW9ucyB0aGF0IGJ1aWxkIGEgbGluayB0byB0ZXN0IHN0ZXAgcmVzdWx0cy4gVGhlIGJ1
aWxkYm90IHByb3ZpZGVzCisgICAgICAgIHRoZXNlIGxpbmtzIGluIEpTT04uCisKKyAgICAgICAg
KiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9k
YXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdEl0ZXJhdGlvbi5qczoKKyAgICAgICAgKEJ1aWxkYm90
SXRlcmF0aW9uKTogUHV0IGZhaWxpbmcgdGVzdHMgaW50byBhbiBhcnJheSwgaW5zdGVhZCBvZiBu
YW1lZCB2YXJpYWJsZXMuCisgICAgICAgIChCdWlsZGJvdEl0ZXJhdGlvbi5Qcm9kdWN0aXZlU3Rl
cHMpOiBSZW1vdmVkIHN0ZXAgbmFtZXMgdGhhdCBhcmUgbm90IHVzZWQgb24gYnVpbGQud2Via2l0
Lm9yZy4KKyAgICAgICAgV2UgY2FuIGVhc2lseSBhZGQgdGhlbSB0byB0aGUgbWFwIGFzIG5lZWRl
ZC4KKyAgICAgICAgKEJ1aWxkYm90SXRlcmF0aW9uLlRlc3RTdGVwcyk6IEFkZGVkIGEgbGlzdCBv
ZiB0ZXN0IHN0ZXBzIHRvIGJlIGRpc3BsYXllZCBieSB0ZXN0IHF1ZXVlcy4KKyAgICAgICAgKEJ1
aWxkYm90SXRlcmF0aW9uLnByb3RvdHlwZS5fcGFyc2VEYXRhKTogTW92ZWQgY29kZSBmb3IgcGFy
c2luZyBzdGVwIHJlc3VsdHMgYXdheQorICAgICAgICB0byBCdWlsZGJvdFRlc3RSZXN1bHRzIGNs
YXNzLiBXZSB1c2VkIHRvIHBhcnNlIGhlcmUsIGJ1aWxkIGFuIGludGVybWVkaWF0ZSBkYXRhIHN0
cnVjdHVyZSwKKyAgICAgICAgYW5kIHRoZW4gYnVpbGQgYSBCdWlsZGJvdFRlc3RSZXN1bHRzIG9i
amVjdCwgd2hpY2ggd2FzIHN0cmFuZ2UuCisgICAgICAgIChCdWlsZGJvdEl0ZXJhdGlvbi5wcm90
b3R5cGUubG9hZExheW91dFRlc3RSZXN1bHRzKTogRGl0dG8uCisKKyAgICAgICAgKiBCdWlsZFNs
YXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQv
U2NyaXB0cy9CdWlsZGJvdFF1ZXVlVmlldy5qczoKKyAgICAgICAgQ29ycmVjdGVkIGFuIHVucmVs
YXRlZCBhc3NlcnRpb24gdGhhdCB3YXMgYnVnZ3ksIGFuZCBrZXB0IGZpcmluZy4KKworICAgICAg
ICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1s
L2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90VGVzdFJlc3VsdHMuanM6CisgICAgICAgIChCdWls
ZGJvdFRlc3RSZXN1bHRzKToKKyAgICAgICAgKEJ1aWxkYm90VGVzdFJlc3VsdHMucHJvdG90eXBl
Ll9wYXJzZVJlc3VsdHMucmVzdWx0U3VtbWFyaXplcik6CisgICAgICAgIChCdWlsZGJvdFRlc3RS
ZXN1bHRzLnByb3RvdHlwZS5fcGFyc2VSZXN1bHRzKToKKyAgICAgICAgKEJ1aWxkYm90VGVzdFJl
c3VsdHMucHJvdG90eXBlLmFkZEZ1bGxMYXlvdXRUZXN0UmVzdWx0cyk6CisgICAgICAgIE1vdmVk
IHRoZSBjb2RlIGZvciBwYXJzaW5nIEpTT04gcmVzdWx0cyBmb3IgYSBzaW5nbGUgc3RlcCBoZXJl
LgorCisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
cHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RUZXN0ZXJRdWV1ZVZpZXcuanM6
CisgICAgICAgIChCdWlsZGJvdFRlc3RlclF1ZXVlVmlldy5wcm90b3R5cGUuX3Rlc3RTdGVwRmFp
bHVyZURlc2NyaXB0aW9uKToKKyAgICAgICAgKEJ1aWxkYm90VGVzdGVyUXVldWVWaWV3LnByb3Rv
dHlwZS5fdGVzdFN0ZXBGYWlsdXJlRGVzY3JpcHRpb25XaXRoQ291bnQpOgorICAgICAgICAoQnVp
bGRib3RUZXN0ZXJRdWV1ZVZpZXcucHJvdG90eXBlLl9wcmVzZW50UG9wb3ZlckZvckdlbmVyaWNU
ZXN0RmFpbHVyZXMpOgorICAgICAgICAoQnVpbGRib3RUZXN0ZXJRdWV1ZVZpZXcucHJvdG90eXBl
LnVwZGF0ZS5hcHBlbmRCdWlsZGVyUXVldWVTdGF0dXMpOiBEZWxldGVkLgorICAgICAgICAoQnVp
bGRib3RUZXN0ZXJRdWV1ZVZpZXcucHJvdG90eXBlLnVwZGF0ZSk6IERlbGV0ZWQuCisgICAgICAg
IChCdWlsZGJvdFRlc3RlclF1ZXVlVmlldy5wcm90b3R5cGUuX3ByZXNlbnRQb3BvdmVyRm9yTXVs
dGlwbGVGYWlsdXJlS2luZHMpOiBEZWxldGVkLgorICAgICAgICBVcGRhdGVkIGZvciB0aGUgbmV3
IGRhdGEgc3RydWN0dXJlcy4gT25lIGJlaGF2aW9yIGNoYW5nZSBpcyB0aGF0IHdlIG5vdyBkaXNw
bGF5IGluZGl2aWR1YWwKKyAgICAgICAgY291bnRzIHdoZW4gbXVsdGlwbGUgdGVzdCBraW5kcyBm
YWlsLCBlLmcuICIxwqBqYXZhc2NyaXB0IHRlc3QgZmFpbHVyZSwgODMrwqBsYXlvdXQKKyAgICAg
ICAgdGVzdCBmYWlsdXJlcywgM8KgcGxhdGZvcm0gYXBpIHRlc3QgZmFpbHVyZXMiLgorCiAyMDE1
LTAzLTAyICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIFVw
ZGF0ZSB0aGUgbmFtZSBvZiBBU2FuIGJ1aWxkIHN0ZXAuCkluZGV4OiBUb29scy9CdWlsZFNsYXZl
U3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2Ny
aXB0cy9CdWlsZGJvdC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9i
dWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWls
ZGJvdC5qcwkocmV2aXNpb24gMTgwOTE2KQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVp
bGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRi
b3QuanMJKHdvcmtpbmcgY29weSkKQEAgLTExMywzNiArMTEzLDYgQEAgQnVpbGRib3QucHJvdG90
eXBlID0gewogICAgICAgICByZXR1cm4gdGhpcy5iYXNlVVJMICsgImJ1aWxkZXJzLyIgKyBlbmNv
ZGVVUklDb21wb25lbnQoaXRlcmF0aW9uLnF1ZXVlLmlkKSArICIvYnVpbGRzLyIgKyBpdGVyYXRp
b24uaWQ7CiAgICAgfSwKIAotICAgIGphdmFzY3JpcHRUZXN0UmVzdWx0c1VSTEZvckl0ZXJhdGlv
bjogZnVuY3Rpb24oaXRlcmF0aW9uKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuYmFzZVVS
TCArICJidWlsZGVycy8iICsgZW5jb2RlVVJJQ29tcG9uZW50KGl0ZXJhdGlvbi5xdWV1ZS5pZCkg
KyAiL2J1aWxkcy8iICsgaXRlcmF0aW9uLmlkICsgIi9zdGVwcy9qc2NvcmUtdGVzdC9sb2dzL3N0
ZGlvIjsKLSAgICB9LAotCi0gICAgYXBpVGVzdFJlc3VsdHNVUkxGb3JJdGVyYXRpb246IGZ1bmN0
aW9uKGl0ZXJhdGlvbikKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLmJhc2VVUkwgKyAiYnVp
bGRlcnMvIiArIGVuY29kZVVSSUNvbXBvbmVudChpdGVyYXRpb24ucXVldWUuaWQpICsgIi9idWls
ZHMvIiArIGl0ZXJhdGlvbi5pZCArICIvc3RlcHMvcnVuLWFwaS10ZXN0cy9sb2dzL3N0ZGlvIjsK
LSAgICB9LAotCi0gICAgcGxhdGZvcm1BUElUZXN0UmVzdWx0c1VSTEZvckl0ZXJhdGlvbjogZnVu
Y3Rpb24oaXRlcmF0aW9uKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuYmFzZVVSTCArICJi
dWlsZGVycy8iICsgZW5jb2RlVVJJQ29tcG9uZW50KGl0ZXJhdGlvbi5xdWV1ZS5pZCkgKyAiL2J1
aWxkcy8iICsgaXRlcmF0aW9uLmlkICsgIi9zdGVwcy9BUEklMjB0ZXN0cy9sb2dzL3N0ZGlvIjsK
LSAgICB9LAotCi0gICAgd2Via2l0cHlUZXN0UmVzdWx0c1VSTEZvckl0ZXJhdGlvbjogZnVuY3Rp
b24oaXRlcmF0aW9uKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuYmFzZVVSTCArICJidWls
ZGVycy8iICsgZW5jb2RlVVJJQ29tcG9uZW50KGl0ZXJhdGlvbi5xdWV1ZS5pZCkgKyAiL2J1aWxk
cy8iICsgaXRlcmF0aW9uLmlkICsgIi9zdGVwcy93ZWJraXRweS10ZXN0L2xvZ3Mvc3RkaW8iOwot
ICAgIH0sCi0KLSAgICB3ZWJraXRwZXJsVGVzdFJlc3VsdHNVUkxGb3JJdGVyYXRpb246IGZ1bmN0
aW9uKGl0ZXJhdGlvbikKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLmJhc2VVUkwgKyAiYnVp
bGRlcnMvIiArIGVuY29kZVVSSUNvbXBvbmVudChpdGVyYXRpb24ucXVldWUuaWQpICsgIi9idWls
ZHMvIiArIGl0ZXJhdGlvbi5pZCArICIvc3RlcHMvd2Via2l0cGVybC10ZXN0L2xvZ3Mvc3RkaW8i
OwotICAgIH0sCi0KLSAgICBiaW5kaW5nc1Rlc3RSZXN1bHRzVVJMRm9ySXRlcmF0aW9uOiBmdW5j
dGlvbihpdGVyYXRpb24pCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5iYXNlVVJMICsgImJ1
aWxkZXJzLyIgKyBlbmNvZGVVUklDb21wb25lbnQoaXRlcmF0aW9uLnF1ZXVlLmlkKSArICIvYnVp
bGRzLyIgKyBpdGVyYXRpb24uaWQgKyAiL3N0ZXBzL2JpbmRpbmdzLWdlbmVyYXRpb24tdGVzdHMv
bG9ncy9zdGRpbyI7Ci0gICAgfSwKLQogICAgIGxheW91dFRlc3RSZXN1bHRzVVJMRm9ySXRlcmF0
aW9uOiBmdW5jdGlvbihpdGVyYXRpb24pCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5sYXlv
dXRUZXN0UmVzdWx0c0RpcmVjdG9yeVVSTEZvckl0ZXJhdGlvbihpdGVyYXRpb24pICsgIi9yZXN1
bHRzLmh0bWwiOwpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RJdGVyYXRpb24u
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RJdGVyYXRpb24u
anMJKHJldmlzaW9uIDE4MDkyMCkKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90SXRl
cmF0aW9uLmpzCSh3b3JraW5nIGNvcHkpCkBAIC00NiwxMyArNDYsOSBAQCBCdWlsZGJvdEl0ZXJh
dGlvbiA9IGZ1bmN0aW9uKHF1ZXVlLCBkYXRhCiAgICAgdGhpcy5vcGVuU291cmNlUmV2aXNpb24g
PSBudWxsOwogICAgIHRoaXMuaW50ZXJuYWxSZXZpc2lvbiA9IG51bGw7CiAKLSAgICB0aGlzLmxh
eW91dFRlc3RSZXN1bHRzID0gbnVsbDsKLSAgICB0aGlzLmphdmFzY3JpcHRUZXN0UmVzdWx0cyA9
IG51bGw7Ci0gICAgdGhpcy5hcGlUZXN0UmVzdWx0cyA9IG51bGw7Ci0gICAgdGhpcy5wbGF0Zm9y
bUFQSVRlc3RSZXN1bHRzID0gbnVsbDsKLSAgICB0aGlzLnB5dGhvblRlc3RSZXN1bHRzID0gbnVs
bDsKLSAgICB0aGlzLnBlcmxUZXN0UmVzdWx0cyA9IG51bGw7Ci0gICAgdGhpcy5iaW5kaW5nVGVz
dFJlc3VsdHMgPSBudWxsOworICAgIHRoaXMubGF5b3V0VGVzdFJlc3VsdHMgPSBudWxsOyAvLyBM
YXlvdXQgdGVzdCByZXN1bHRzIGNhbiBiZSBuZWVkZWQgZXZlbiBpZiBhbGwgdGVzdHMgcGFzc2Vk
LCBlLmcuIGZvciB0aGUgbGVha3MgYm90LgorCisgICAgdGhpcy5mYWlsZWRUZXN0U3RlcHMgPSBb
XTsKIAogICAgIHRoaXMuX2ZpbmlzaGVkID0gZmluaXNoZWQ7CiB9OwpAQCAtNzAsNyArNjYsNiBA
QCBCdWlsZGJvdEl0ZXJhdGlvbi5SRVRSWSA9IDU7CiAvLyBJZiBub25lIG9mIHRoZXNlIHN0ZXBz
IHJhbiwgdGhlbiB3ZSBkaWRuJ3QgZ2V0IGFueSByZWFsIHJlc3VsdHMsIGFuZCB0aGUgaXRlcmF0
aW9uIHdhcyBub3QgcHJvZHVjdGl2ZS4KIEJ1aWxkYm90SXRlcmF0aW9uLlByb2R1Y3RpdmVTdGVw
cyA9IHsKICAgICAiY29tcGlsZS13ZWJraXQiOiAxLAotICAgICJidWlsZCBhcmNoaXZlIjogMSwK
ICAgICAiYnVpbGQgQVNhbiBhcmNoaXZlIjogMSwKICAgICAiQnVpbGQiIDogMSwKICAgICAibGF5
b3V0LXRlc3QiOiAxLApAQCAtODAsMTIgKzc1LDE5IEBAIEJ1aWxkYm90SXRlcmF0aW9uLlByb2R1
Y3RpdmVTdGVwcyA9IHsKICAgICAid2Via2l0cHktdGVzdCI6IDEsCiAgICAgIndlYmtpdHBlcmwt
dGVzdCI6IDEsCiAgICAgImJpbmRpbmdzLWdlbmVyYXRpb24tdGVzdHMiOiAxLAotICAgICJydW4g
TWVtYnVzdGVyIE9TIE1lbW9yeSI6IDEsCi0gICAgInJ1biBzY3JvbGxwZXJmIjogMSwKLSAgICAi
cnVuIFBMVDMiOiAxLAogICAgICJwZXJmLXRlc3QiOiAxCiB9OwogCitCdWlsZGJvdEl0ZXJhdGlv
bi5UZXN0U3RlcHMgPSB7CisgICAgImxheW91dC10ZXN0IjogImxheW91dCB0ZXN0IiwKKyAgICAi
anNjb3JlLXRlc3QiOiAiamF2YXNjcmlwdCB0ZXN0IiwKKyAgICAicnVuLWFwaS10ZXN0cyI6ICJh
cGkgdGVzdCIsCisgICAgIkFQSSB0ZXN0cyI6ICJwbGF0Zm9ybSBhcGkgdGVzdCIsCisgICAgIndl
YmtpdHB5LXRlc3QiOiAid2Via2l0cHkgdGVzdCIsCisgICAgIndlYmtpdHBlcmwtdGVzdCI6ICJ3
ZWJraXRwZXJsIHRlc3QiLAorICAgICJiaW5kaW5ncy1nZW5lcmF0aW9uLXRlc3RzIjogImJpbmRp
bmdzIHRlc3RzIiwKK307CisKIEJ1aWxkYm90SXRlcmF0aW9uLkV2ZW50ID0gewogICAgIFVwZGF0
ZWQ6ICJ1cGRhdGVkIiwKICAgICBVbmF1dGhvcml6ZWRBY2Nlc3M6ICJ1bmF1dGhvcml6ZWQtYWNj
ZXNzIgpAQCAtMTg1LDYwICsxODcsNiBAQCBCdWlsZGJvdEl0ZXJhdGlvbi5wcm90b3R5cGUgPSB7
CiAKICAgICBfcGFyc2VEYXRhOiBmdW5jdGlvbihkYXRhKQogICAgIHsKLSAgICAgICAgZnVuY3Rp
b24gY29sbGVjdFRlc3RSZXN1bHRzKGRhdGEsIHN0ZXBOYW1lKQotICAgICAgICB7Ci0gICAgICAg
ICAgICB2YXIgdGVzdFN0ZXAgPSBkYXRhLnN0ZXBzLmZpbmRGaXJzdChmdW5jdGlvbihzdGVwKSB7
IHJldHVybiBzdGVwLm5hbWUgPT09IHN0ZXBOYW1lOyB9KTsKLSAgICAgICAgICAgIGlmICghdGVz
dFN0ZXApCi0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7Ci0KLSAgICAgICAgICAgIHZhciB0
ZXN0UmVzdWx0cyA9IHt9OwotCi0gICAgICAgICAgICBpZiAoIXRlc3RTdGVwLmlzRmluaXNoZWQp
IHsKLSAgICAgICAgICAgICAgICAvLyBUaGUgc3RlcCBuZXZlciBldmVuIHJhbiwgb3IgaGFzbid0
IGZpbmlzaGVkIHJ1bm5pbmcuCi0gICAgICAgICAgICAgICAgdGVzdFJlc3VsdHMuZmluaXNoZWQg
PSBmYWxzZTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdGVzdFJlc3VsdHM7Ci0gICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgIHRlc3RSZXN1bHRzLmZpbmlzaGVkID0gdHJ1ZTsKLQotICAgICAg
ICAgICAgaWYgKCF0ZXN0U3RlcC5yZXN1bHRzIHx8IHRlc3RTdGVwLnJlc3VsdHNbMF0gPT09IEJ1
aWxkYm90SXRlcmF0aW9uLlNVQ0NFU1MpIHsKLSAgICAgICAgICAgICAgICAvLyBBbGwgdGVzdHMg
cGFzc2VkLgotICAgICAgICAgICAgICAgIHRlc3RSZXN1bHRzLmFsbFBhc3NlZCA9IHRydWU7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIHRlc3RSZXN1bHRzOwotICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICBpZiAoL0V4aXRpbmcgZWFybHkvLnRlc3QodGVzdFN0ZXAucmVzdWx0c1sxXVswXSkp
Ci0gICAgICAgICAgICAgICAgdGVzdFJlc3VsdHMudG9vTWFueUZhaWx1cmVzID0gdHJ1ZTsKLQot
ICAgICAgICAgICAgZnVuY3Rpb24gcmVzdWx0U3VtbWFyaXplcihtYXRjaFN0cmluZywgc3VtLCBv
dXRwdXRMaW5lKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHZhciBtYXRjaCA9IC9e
KFxkKylccy8uZXhlYyhvdXRwdXRMaW5lKTsKLSAgICAgICAgICAgICAgICBpZiAoIW1hdGNoKQot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3VtOwotICAgICAgICAgICAgICAgIGlmICghb3V0
cHV0TGluZS5jb250YWlucyhtYXRjaFN0cmluZykpCi0gICAgICAgICAgICAgICAgICAgIHJldHVy
biBzdW07Ci0gICAgICAgICAgICAgICAgaWYgKCFzdW0gfHwgc3VtID09PSAtMSkKLSAgICAgICAg
ICAgICAgICAgICAgc3VtID0gMDsKLSAgICAgICAgICAgICAgICByZXR1cm4gc3VtICsgcGFyc2VJ
bnQobWF0Y2hbMV0sIDEwKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdGVzdFJlc3Vs
dHMuZmFpbHVyZUNvdW50ID0gdGVzdFN0ZXAucmVzdWx0c1sxXS5yZWR1Y2UocmVzdWx0U3VtbWFy
aXplci5iaW5kKG51bGwsICJmYWlsIiksIHVuZGVmaW5lZCk7Ci0gICAgICAgICAgICB0ZXN0UmVz
dWx0cy5mbGFrZXlDb3VudCA9IHRlc3RTdGVwLnJlc3VsdHNbMV0ucmVkdWNlKHJlc3VsdFN1bW1h
cml6ZXIuYmluZChudWxsLCAiZmxha2UiKSwgdW5kZWZpbmVkKTsKLSAgICAgICAgICAgIHRlc3RS
ZXN1bHRzLnRvdGFsTGVha0NvdW50ID0gdGVzdFN0ZXAucmVzdWx0c1sxXS5yZWR1Y2UocmVzdWx0
U3VtbWFyaXplci5iaW5kKG51bGwsICJ0b3RhbCBsZWFrIiksIHVuZGVmaW5lZCk7Ci0gICAgICAg
ICAgICB0ZXN0UmVzdWx0cy51bmlxdWVMZWFrQ291bnQgPSB0ZXN0U3RlcC5yZXN1bHRzWzFdLnJl
ZHVjZShyZXN1bHRTdW1tYXJpemVyLmJpbmQobnVsbCwgInVuaXF1ZSBsZWFrIiksIHVuZGVmaW5l
ZCk7Ci0gICAgICAgICAgICB0ZXN0UmVzdWx0cy5uZXdQYXNzZXNDb3VudCA9IHRlc3RTdGVwLnJl
c3VsdHNbMV0ucmVkdWNlKHJlc3VsdFN1bW1hcml6ZXIuYmluZChudWxsLCAibmV3IHBhc3MiKSwg
dW5kZWZpbmVkKTsKLSAgICAgICAgICAgIHRlc3RSZXN1bHRzLm1pc3NpbmdDb3VudCA9IHRlc3RT
dGVwLnJlc3VsdHNbMV0ucmVkdWNlKHJlc3VsdFN1bW1hcml6ZXIuYmluZChudWxsLCAibWlzc2lu
ZyIpLCB1bmRlZmluZWQpOwotICAgICAgICAgICAgdGVzdFJlc3VsdHMuY3Jhc2hDb3VudCA9IHRl
c3RTdGVwLnJlc3VsdHNbMV0ucmVkdWNlKHJlc3VsdFN1bW1hcml6ZXIuYmluZChudWxsLCAiY3Jh
c2giKSwgdW5kZWZpbmVkKTsKLQotICAgICAgICAgICAgaWYgKCF0ZXN0UmVzdWx0cy5mYWlsdXJl
Q291bnQgJiYgIXRlc3RSZXN1bHRzLmZsYWt5Q291bnQgJiYgIXRlc3RSZXN1bHRzLnRvdGFsTGVh
a0NvdW50ICYmICF0ZXN0UmVzdWx0cy51bmlxdWVMZWFrQ291bnQgJiYgIXRlc3RSZXN1bHRzLm5l
d1Bhc3Nlc0NvdW50ICYmICF0ZXN0UmVzdWx0cy5taXNzaW5nQ291bnQpIHsKLSAgICAgICAgICAg
ICAgICAvLyBUaGlzIHN0ZXAgZXhpdGVkIHdpdGggYSBub24temVybyBleGl0IHN0YXR1cywgYnV0
IHdlIGRpZG4ndCBmaW5kIGFueSBvdXRwdXQgYWJvdXQgdGhlIG51bWJlciBvZiBmYWlsZWQgdGVz
dHMuCi0gICAgICAgICAgICAgICAgLy8gU29tZXRoaW5nIG11c3QgaGF2ZSBnb25lIHdyb25nIChl
LmcuLCB0aW1lZCBvdXQgYW5kIHdhcyBraWxsZWQgYnkgYnVpbGRib3QpLgotICAgICAgICAgICAg
ICAgIHRlc3RSZXN1bHRzLmVycm9yT2NjdXJyZWQgPSB0cnVlOwotICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICByZXR1cm4gdGVzdFJlc3VsdHM7Ci0gICAgICAgIH0KLQogICAgICAgICBjb25z
b2xlLmFzc2VydCghdGhpcy5pZCB8fCB0aGlzLmlkID09PSBkYXRhLm51bWJlcik7CiAgICAgICAg
IHRoaXMuaWQgPSBkYXRhLm51bWJlcjsKIApAQCAtMjg2LDI2ICsyMzQsMTcgQEAgQnVpbGRib3RJ
dGVyYXRpb24ucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLnN0YXJ0VGltZSA9IG5ldyBEYXRl
KGRhdGEudGltZXNbMF0gKiAxMDAwKTsKICAgICAgICAgdGhpcy5lbmRUaW1lID0gbmV3IERhdGUo
ZGF0YS50aW1lc1sxXSAqIDEwMDApOwogCi0gICAgICAgIHZhciBsYXlvdXRUZXN0UmVzdWx0cyA9
IGNvbGxlY3RUZXN0UmVzdWx0cy5jYWxsKHRoaXMsIGRhdGEsICJsYXlvdXQtdGVzdCIpOwotICAg
ICAgICB0aGlzLmxheW91dFRlc3RSZXN1bHRzID0gbGF5b3V0VGVzdFJlc3VsdHMgPyBuZXcgQnVp
bGRib3RUZXN0UmVzdWx0cyh0aGlzLCBsYXlvdXRUZXN0UmVzdWx0cykgOiBudWxsOwotCi0gICAg
ICAgIHZhciBqYXZhc2NyaXB0VGVzdFJlc3VsdHMgPSBjb2xsZWN0VGVzdFJlc3VsdHMuY2FsbCh0
aGlzLCBkYXRhLCAianNjb3JlLXRlc3QiKTsKLSAgICAgICAgdGhpcy5qYXZhc2NyaXB0VGVzdFJl
c3VsdHMgPSBqYXZhc2NyaXB0VGVzdFJlc3VsdHMgPyBuZXcgQnVpbGRib3RUZXN0UmVzdWx0cyh0
aGlzLCBqYXZhc2NyaXB0VGVzdFJlc3VsdHMpIDogbnVsbDsKLQotICAgICAgICB2YXIgYXBpVGVz
dFJlc3VsdHMgPSBjb2xsZWN0VGVzdFJlc3VsdHMuY2FsbCh0aGlzLCBkYXRhLCAicnVuLWFwaS10
ZXN0cyIpOwotICAgICAgICB0aGlzLmFwaVRlc3RSZXN1bHRzID0gYXBpVGVzdFJlc3VsdHMgPyBu
ZXcgQnVpbGRib3RUZXN0UmVzdWx0cyh0aGlzLCBhcGlUZXN0UmVzdWx0cykgOiBudWxsOwotCi0g
ICAgICAgIHZhciBwbGF0Zm9ybUFQSVRlc3RSZXN1bHRzID0gY29sbGVjdFRlc3RSZXN1bHRzLmNh
bGwodGhpcywgZGF0YSwgIkFQSSB0ZXN0cyIpOwotICAgICAgICB0aGlzLnBsYXRmb3JtQVBJVGVz
dFJlc3VsdHMgPSBwbGF0Zm9ybUFQSVRlc3RSZXN1bHRzID8gbmV3IEJ1aWxkYm90VGVzdFJlc3Vs
dHModGhpcywgcGxhdGZvcm1BUElUZXN0UmVzdWx0cykgOiBudWxsOwotCi0gICAgICAgIHZhciBw
eXRob25UZXN0UmVzdWx0cyA9IGNvbGxlY3RUZXN0UmVzdWx0cy5jYWxsKHRoaXMsIGRhdGEsICJ3
ZWJraXRweS10ZXN0Iik7Ci0gICAgICAgIHRoaXMucHl0aG9uVGVzdFJlc3VsdHMgPSBweXRob25U
ZXN0UmVzdWx0cyA/IG5ldyBCdWlsZGJvdFRlc3RSZXN1bHRzKHRoaXMsIHB5dGhvblRlc3RSZXN1
bHRzKSA6IG51bGw7Ci0KLSAgICAgICAgdmFyIHBlcmxUZXN0UmVzdWx0cyA9IGNvbGxlY3RUZXN0
UmVzdWx0cy5jYWxsKHRoaXMsIGRhdGEsICJ3ZWJraXRwZXJsLXRlc3QiKTsKLSAgICAgICAgdGhp
cy5wZXJsVGVzdFJlc3VsdHMgPSBwZXJsVGVzdFJlc3VsdHMgPyBuZXcgQnVpbGRib3RUZXN0UmVz
dWx0cyh0aGlzLCBwZXJsVGVzdFJlc3VsdHMpIDogbnVsbDsKLQotICAgICAgICB2YXIgYmluZGlu
Z1Rlc3RSZXN1bHRzID0gY29sbGVjdFRlc3RSZXN1bHRzLmNhbGwodGhpcywgZGF0YSwgImJpbmRp
bmdzLWdlbmVyYXRpb24tdGVzdHMiKTsKLSAgICAgICAgdGhpcy5iaW5kaW5nVGVzdFJlc3VsdHMg
PSBiaW5kaW5nVGVzdFJlc3VsdHMgPyBuZXcgQnVpbGRib3RUZXN0UmVzdWx0cyh0aGlzLCBiaW5k
aW5nVGVzdFJlc3VsdHMpIDogbnVsbDsKKyAgICAgICAgdGhpcy5mYWlsZWRUZXN0U3RlcHMgPSBb
XTsKKyAgICAgICAgZGF0YS5zdGVwcy5mb3JFYWNoKGZ1bmN0aW9uKHN0ZXApIHsKKyAgICAgICAg
ICAgIGlmICghc3RlcC5pc0ZpbmlzaGVkIHx8ICEoc3RlcC5uYW1lIGluIEJ1aWxkYm90SXRlcmF0
aW9uLlRlc3RTdGVwcykpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgdmFy
IHJlc3VsdHMgPSBuZXcgQnVpbGRib3RUZXN0UmVzdWx0cyhzdGVwKTsKKyAgICAgICAgICAgIGlm
IChzdGVwLm5hbWUgPT09ICJsYXlvdXQtdGVzdCIpCisgICAgICAgICAgICAgICAgdGhpcy5sYXlv
dXRUZXN0UmVzdWx0cyA9IHJlc3VsdHM7CisgICAgICAgICAgICBpZiAocmVzdWx0cy5hbGxQYXNz
ZWQpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgdGhpcy5mYWlsZWRUZXN0
U3RlcHMucHVzaChyZXN1bHRzKTsKKyAgICAgICAgfSwgdGhpcyk7CiAKICAgICAgICAgdmFyIG1h
c3RlclNoZWxsQ29tbWFuZFN0ZXAgPSBkYXRhLnN0ZXBzLmZpbmRGaXJzdChmdW5jdGlvbihzdGVw
KSB7IHJldHVybiBzdGVwLm5hbWUgPT09ICJNYXN0ZXJTaGVsbENvbW1hbmQiOyB9KTsKICAgICAg
ICAgdGhpcy5yZXN1bHRVUkxzID0gbWFzdGVyU2hlbGxDb21tYW5kU3RlcCA/IG1hc3RlclNoZWxs
Q29tbWFuZFN0ZXAudXJscyA6IG51bGw7CkBAIC0zOTEsODMgKzMzMCwxMCBAQCBCdWlsZGJvdEl0
ZXJhdGlvbi5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmICh0aGlzLnF1ZXVlLmJ1aWxkYm90Lm5l
ZWRzQXV0aGVudGljYXRpb24gJiYgdGhpcy5xdWV1ZS5idWlsZGJvdC5hdXRoZW50aWNhdGlvblN0
YXR1cyA9PT0gQnVpbGRib3QuQXV0aGVudGljYXRpb25TdGF0dXMuSW52YWxpZENyZWRlbnRpYWxz
KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGZ1bmN0aW9uIGNvbGxlY3RSZXN1bHRz
KHN1YnRyZWUsIHByZWRpY2F0ZSkKLSAgICAgICAgewotICAgICAgICAgICAgLy8gUmVzdWx0cyBv
YmplY3QgaXMgYSB0cmllOgotICAgICAgICAgICAgLy8gZGlyZWN0b3J5Ci0gICAgICAgICAgICAv
LyAgIHN1YmRpcmVjdG9yeQotICAgICAgICAgICAgLy8gICAgIHRlc3QxLmh0bWwKLSAgICAgICAg
ICAgIC8vICAgICAgIGV4cGVjdGVkOiJQQVNTIgotICAgICAgICAgICAgLy8gICAgICAgYWN0dWFs
OiAiSU1BR0UiCi0gICAgICAgICAgICAvLyAgICAgICByZXBvcnQ6ICJSRUdSRVNTSU9OIgotICAg
ICAgICAgICAgLy8gICAgIHRlc3QyLmh0bWwKLSAgICAgICAgICAgIC8vICAgICAgIGV4cGVjdGVk
OiJGQUlMIgotICAgICAgICAgICAgLy8gICAgICAgYWN0dWFsOiJURVhUIgotCi0gICAgICAgICAg
ICB2YXIgcmVzdWx0ID0gW107Ci0gICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gc3VidHJlZSkg
ewotICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9IHN1YnRyZWVba2V5XTsKLSAgICAgICAgICAg
ICAgICBjb25zb2xlLmFzc2VydCh0eXBlb2YgdmFsdWUgPT09ICJvYmplY3QiKTsKLSAgICAgICAg
ICAgICAgICB2YXIgaXNJbmRpdmlkdWFsVGVzdCA9IHZhbHVlLmhhc093blByb3BlcnR5KCJhY3R1
YWwiKSAmJiB2YWx1ZS5oYXNPd25Qcm9wZXJ0eSgiZXhwZWN0ZWQiKTsKLSAgICAgICAgICAgICAg
ICBpZiAoaXNJbmRpdmlkdWFsVGVzdCkgewotICAgICAgICAgICAgICAgICAgICAvLyBQb3NzaWJs
ZSB2YWx1ZXMgZm9yIGFjdHVhbCBhbmQgZXhwZWN0ZWQga2V5czogUEFTUywgRkFJTCwgQVVESU8s
IElNQUdFLCBURVhULCBJTUFHRStURVhULCBUSU1FT1VULCBDUkFTSCwgTUlTU0lORy4KLSAgICAg
ICAgICAgICAgICAgICAgLy8gQm90aCBhY3R1YWwgYW5kIGV4cGVjdGVkIGNhbiBiZSBzcGFjZSBz
ZXBhcmF0ZWQgbGlzdHMuIEFjdHVhbCBjb250YWlucyB0d28gdmFsdWVzIHdoZW4gcmV0cnlpbmcg
YSBmYWlsZWQgdGVzdAotICAgICAgICAgICAgICAgICAgICAvLyBnaXZlcyBhIGRpZmZlcmVudCBy
ZXN1bHQgKHJldHJ5aW5nIG1heSBiZSBkaXNhYmxlZCBpbiB0ZXN0ZXIgY29uZmlndXJhdGlvbiku
Ci0gICAgICAgICAgICAgICAgICAgIC8vIFBvc3NpYmxlIHZhbHVlcyBmb3IgcmVwb3J0IGtleSAo
d2hlbiBwcmVzZW50KTogUkVHUkVTU0lPTiwgTUlTU0lORywgRkxBS1kuCi0KLSAgICAgICAgICAg
ICAgICAgICAgaWYgKHByZWRpY2F0ZSh2YWx1ZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IHZhciBpdGVtID0ge3BhdGg6IGtleX07Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZJ
WE1FIChidWcgMTI3MTg2KTogQ3Jhc2ggbG9nIFVSTCB3aWxsIGJlIGluY29ycmVjdCBpZiBjcmFz
aCBvbmx5IGhhcHBlbmVkIG9uIHJldHJ5IChlLmcuICJURVhUIENSQVNIIikuCi0gICAgICAgICAg
ICAgICAgICAgICAgICAvLyBJdCBzaG91bGQgcG9pbnQgdG8gcmV0cmllcyBzdWJkaXJlY3Rvcnks
IGJ1dCB0aGUgaW5mb3JtYXRpb24gYWJvdXQgd2hpY2ggYXR0ZW1wdCBmYWlsZWQgZ2V0cyBsb3N0
IGhlcmUuCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUuYWN0dWFsLmNvbnRhaW5z
KCJDUkFTSCIpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uY3Jhc2ggPSB0cnVl
OwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlLmFjdHVhbC5jb250YWlucygiVElN
RU9VVCIpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0udGltZW91dCA9IHRydWU7
Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FIChidWcgMTI3MTg2KTogU2ltaWxh
cmx5LCB3ZSBkb24ndCBoYXZlIGEgZ29vZCB3YXkgdG8gcHJlc2VudCByZXN1bHRzIGZvciBzb21l
dGhpbmcgbGlrZSAiVElNRU9VVCBURVhUIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5v
dCBldmVuIFVJIHdpc2UuIEZvciBub3csIG9ubHkgc2hvdyBhIGRpZmYgbGluayBpZiB0aGUgZmly
c3QgYXR0ZW1wdCBoYXMgdGhlIGRpZmYuCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFs
dWUuYWN0dWFsLnNwbGl0KCIgIilbMF0uY29udGFpbnMoIlRFWFQiKSkKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpdGVtLmhhc19kaWZmID0gdHJ1ZTsKLQotICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gRklYTUUgKGJ1ZyAxMjcxODYpOiBJdCBpcyBwYXJ0aWN1bGFybHkgdW5mb3J0dW5h
dGUgZm9yIGltYWdlIGRpZmZzLCBiZWNhdXNlIHdlIGN1cnJlbnRseSBvbmx5IGNoZWNrIGltYWdl
IHJlc3VsdHMKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9uIHJldHJ5IChleGNlcHQgZm9y
IHJlZnRlc3RzKSwgc28gbWFueSB0aW1lcywgeW91IHdpbGwgc2VlIGltYWdlcyBvbiBidWlkYm90
IHBhZ2UsIGJ1dCBub3Qgb24gdGhlIGRhc2hib2FyZC4KLSAgICAgICAgICAgICAgICAgICAgICAg
IC8vIEZJWE1FOiBGaW5kIGEgd2F5IHRvIGRpc3BsYXkgZXhwZWN0ZWQgbWlzbWF0Y2ggcmVmdGVz
dCBmYWlsdXJlcy4gCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUuYWN0dWFsLnNw
bGl0KCIgIilbMF0uY29udGFpbnMoIklNQUdFIikgJiYgdmFsdWUucmVmdGVzdF90eXBlICE9ICIh
PSIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5oYXNfaW1hZ2VfZGlmZiA9IHRy
dWU7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5oYXNfc3RkZXJyKQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uaGFzX3N0ZGVyciA9IHRydWU7Ci0KLSAgICAg
ICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGl0ZW0pOwotICAgICAgICAgICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICB2YXIg
bmVzdGVkVGVzdHMgPSBjb2xsZWN0UmVzdWx0cyh2YWx1ZSwgcHJlZGljYXRlKTsKLSAgICAgICAg
ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAsIGVuZCA9IG5lc3RlZFRlc3RzLmxlbmd0aDsgaSA8
IGVuZDsgKytpKQotICAgICAgICAgICAgICAgICAgICAgICAgbmVzdGVkVGVzdHNbaV0ucGF0aCA9
IGtleSArICIvIiArIG5lc3RlZFRlc3RzW2ldLnBhdGg7Ci0gICAgICAgICAgICAgICAgICAgIHJl
c3VsdCA9IHJlc3VsdC5jb25jYXQobmVzdGVkVGVzdHMpOwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAgfQotCiAg
ICAgICAgIEpTT04ubG9hZCh0aGlzLnF1ZXVlLmJ1aWxkYm90LmxheW91dFRlc3RGdWxsUmVzdWx0
c1VSTEZvckl0ZXJhdGlvbih0aGlzKSwgZnVuY3Rpb24oZGF0YSkgewogICAgICAgICAgICAgdGhp
cy5xdWV1ZS5idWlsZGJvdC5pc0F1dGhlbnRpY2F0ZWQgPSB0cnVlOwotICAgICAgICAgICAgdGhp
cy5oYXNQcmV0dHlQYXRjaCA9IGRhdGEuaGFzX3ByZXR0eV9wYXRjaDsKLQotICAgICAgICAgICAg
dGhpcy5sYXlvdXRUZXN0UmVzdWx0cy5yZWdyZXNzaW9ucyA9IGNvbGxlY3RSZXN1bHRzKGRhdGEu
dGVzdHMsIGZ1bmN0aW9uKGluZm8pIHsgcmV0dXJuIGluZm9bInJlcG9ydCJdID09PSAiUkVHUkVT
U0lPTiIgfSk7Ci0gICAgICAgICAgICBjb25zb2xlLmFzc2VydChkYXRhLm51bV9yZWdyZXNzaW9u
cyA9PT0gdGhpcy5sYXlvdXRUZXN0UmVzdWx0cy5yZWdyZXNzaW9ucy5sZW5ndGgpOwotCi0gICAg
ICAgICAgICB0aGlzLmxheW91dFRlc3RSZXN1bHRzLmZsYWt5VGVzdHMgPSBjb2xsZWN0UmVzdWx0
cyhkYXRhLnRlc3RzLCBmdW5jdGlvbihpbmZvKSB7IHJldHVybiBpbmZvWyJyZXBvcnQiXSA9PT0g
IkZMQUtZIiB9KTsKLSAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGRhdGEubnVtX2ZsYWt5ID09
PSB0aGlzLmxheW91dFRlc3RSZXN1bHRzLmZsYWt5VGVzdHMubGVuZ3RoKTsKLQotICAgICAgICAg
ICAgdGhpcy5sYXlvdXRUZXN0UmVzdWx0cy50ZXN0c1dpdGhNaXNzaW5nUmVzdWx0cyA9IGNvbGxl
Y3RSZXN1bHRzKGRhdGEudGVzdHMsIGZ1bmN0aW9uKGluZm8pIHsgcmV0dXJuIGluZm9bInJlcG9y
dCJdID09PSAiTUlTU0lORyIgfSk7Ci0gICAgICAgICAgICAvLyBkYXRhLm51bV9taXNzaW5nIGlz
IG5vdCBhbHdheXMgZXF1YWwgdG8gdGhlIHNpemUgb2YgdGVzdHNXaXRoTWlzc2luZ1Jlc3VsdHMg
YXJyYXksCi0gICAgICAgICAgICAvLyBiZWNhdXNlIGJ1aWxkYm90IGNvdW50cyByZWdyZXNzaW9u
cyB0aGF0IGhhZCBtaXNzaW5nIHBpeGVsIHJlc3VsdHMgb24gcmV0cnkgKGUuZy4gIlRFWFQgTUlT
U0lORyIpLgotICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoZGF0YS5udW1fbWlzc2luZyA+PSB0
aGlzLmxheW91dFRlc3RSZXN1bHRzLnRlc3RzV2l0aE1pc3NpbmdSZXN1bHRzLmxlbmd0aCk7CiAK
KyAgICAgICAgICAgIHRoaXMubGF5b3V0VGVzdFJlc3VsdHMuYWRkRnVsbExheW91dFRlc3RSZXN1
bHRzKGRhdGEpOwogICAgICAgICAgICAgY2FsbGJhY2soKTsKICAgICAgICAgfS5iaW5kKHRoaXMp
LAogICAgICAgICBmdW5jdGlvbihkYXRhKSB7CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9C
dWlsZGJvdFF1ZXVlVmlldy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9C
dWlsZGJvdFF1ZXVlVmlldy5qcwkocmV2aXNpb24gMTgwOTE2KQorKysgVG9vbHMvQnVpbGRTbGF2
ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1Nj
cmlwdHMvQnVpbGRib3RRdWV1ZVZpZXcuanMJKHdvcmtpbmcgY29weSkKQEAgLTE0NCw3ICsxNDQs
NyBAQCBCdWlsZGJvdFF1ZXVlVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgICAgICB9CiAKLSAgICAgICAgY29uc29sZS5hc3NlcnQodHJhYy5vbGRlc3RS
ZWNvcmRlZFJldmlzaW9uTnVtYmVyID49IGZpcnN0UmV2aXNpb25OdW1iZXIpOworICAgICAgICBj
b25zb2xlLmFzc2VydCh0cmFjLm9sZGVzdFJlY29yZGVkUmV2aXNpb25OdW1iZXIgPD0gZmlyc3RS
ZXZpc2lvbk51bWJlcik7CiAKICAgICAgICAgLy8gRklYTUU6IFRvIGJlIDEwMCUgY29ycmVjdCwg
d2Ugc2hvdWxkIGFsc28gZmlsdGVyIG91dCBjaGFuZ2VzIHRoYXQgYXJlIGlnbm9yZWQgYnkKICAg
ICAgICAgLy8gdGhlIHF1ZXVlLCBzZWUgX3Nob3VsZF9maWxlX3RyaWdnZXJfYnVpbGQgaW4gd2ti
dWlsZC5weS4KSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmct
Y29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90VGVzdFJlc3VsdHMu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RUZXN0UmVzdWx0
cy5qcwkocmV2aXNpb24gMTgwOTE2KQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQu
d2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RU
ZXN0UmVzdWx0cy5qcwkod29ya2luZyBjb3B5KQpAQCAtMjMsMjggKzIzLDE1NiBAQAogICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLUJ1aWxkYm90VGVzdFJlc3VsdHMg
PSBmdW5jdGlvbihidWlsZGJvdEl0ZXJhdGlvbiwgaW5mbykKK0J1aWxkYm90VGVzdFJlc3VsdHMg
PSBmdW5jdGlvbih0ZXN0U3RlcCkKIHsKICAgICBCYXNlT2JqZWN0LmNhbGwodGhpcyk7CiAKLSAg
ICB0aGlzLmZpbmlzaGVkID0gaW5mby5maW5pc2hlZCB8fCBmYWxzZTsKLQotICAgIHRoaXMuYWxs
UGFzc2VkID0gaW5mby5hbGxQYXNzZWQgfHwgZmFsc2U7Ci0gICAgdGhpcy5lcnJvck9jY3VycmVk
ID0gaW5mby5lcnJvck9jY3VycmVkIHx8IGZhbHNlOwotICAgIHRoaXMudG9vTWFueUZhaWx1cmVz
ID0gaW5mby50b29NYW55RmFpbHVyZXMgfHwgZmFsc2U7Ci0KLSAgICB0aGlzLmZhaWx1cmVDb3Vu
dCA9IGluZm8uZmFpbHVyZUNvdW50IHx8IDA7Ci0gICAgdGhpcy5mbGFrZXlDb3VudCA9IGluZm8u
Zmxha2V5Q291bnQgfHwgMDsKLSAgICB0aGlzLnRvdGFsTGVha0NvdW50ID0gaW5mby50b3RhbExl
YWtDb3VudCB8fCAwOwotICAgIHRoaXMudW5pcXVlTGVha0NvdW50ID0gaW5mby51bmlxdWVMZWFr
Q291bnQgfHwgMDsKLSAgICB0aGlzLm5ld1Bhc3Nlc0NvdW50ID0gaW5mby5uZXdQYXNzZXNDb3Vu
dCB8fCAwOwotICAgIHRoaXMubWlzc2luZ0NvdW50ID0gaW5mby5taXNzaW5nQ291bnQgfHwgMDsK
LSAgICB0aGlzLmNyYXNoQ291bnQgPSBpbmZvLmNyYXNoQ291bnQgfHwgMDsKKyAgICB0aGlzLm5h
bWUgPSB0ZXN0U3RlcC5uYW1lOworICAgIHRoaXMuVVJMID0gdGVzdFN0ZXAubG9nc1swXVsxXTsK
KyAgICB0aGlzLl9wYXJzZVJlc3VsdHModGVzdFN0ZXApOwogfTsKIAogQmFzZU9iamVjdC5hZGRD
b25zdHJ1Y3RvckZ1bmN0aW9ucyhCdWlsZGJvdFRlc3RSZXN1bHRzKTsKIAogQnVpbGRib3RUZXN0
UmVzdWx0cy5wcm90b3R5cGUgPSB7CiAgICAgY29uc3RydWN0b3I6IEJ1aWxkYm90VGVzdFJlc3Vs
dHMsCi0gICAgX19wcm90b19fOiBCYXNlT2JqZWN0LnByb3RvdHlwZQorICAgIF9fcHJvdG9fXzog
QmFzZU9iamVjdC5wcm90b3R5cGUsCisKKyAgICBfcGFyc2VSZXN1bHRzOiBmdW5jdGlvbih0ZXN0
U3RlcCkKKyAgICB7CisgICAgICAgIHRoaXMuYWxsUGFzc2VkID0gZmFsc2U7CisgICAgICAgIHRo
aXMuZXJyb3JPY2N1cnJlZCA9IGZhbHNlOworICAgICAgICB0aGlzLnRvb01hbnlGYWlsdXJlcyA9
IGZhbHNlOworCisgICAgICAgIHRoaXMuZmFpbHVyZUNvdW50ID0gMDsKKyAgICAgICAgdGhpcy5m
bGFrZXlDb3VudCA9IDA7CisgICAgICAgIHRoaXMudG90YWxMZWFrQ291bnQgPSAwOworICAgICAg
ICB0aGlzLnVuaXF1ZUxlYWtDb3VudCA9IDA7CisgICAgICAgIHRoaXMubmV3UGFzc2VzQ291bnQg
PSAwOworICAgICAgICB0aGlzLm1pc3NpbmdDb3VudCA9IDA7CisgICAgICAgIHRoaXMuY3Jhc2hD
b3VudCA9IDA7CisKKyAgICAgICAgaWYgKCF0ZXN0U3RlcC5pc0ZpbmlzaGVkKSB7CisgICAgICAg
ICAgICAvLyBUaGUgc3RlcCBuZXZlciBldmVuIHJhbiwgb3IgaGFzbid0IGZpbmlzaGVkIHJ1bm5p
bmcuCisgICAgICAgICAgICB0aGlzLmZpbmlzaGVkID0gZmFsc2U7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKworICAgICAgICB0aGlzLmZpbmlzaGVkID0gdHJ1ZTsKKworICAgICAg
ICBpZiAoIXRlc3RTdGVwLnJlc3VsdHMgfHwgdGVzdFN0ZXAucmVzdWx0c1swXSA9PT0gQnVpbGRi
b3RJdGVyYXRpb24uU1VDQ0VTUyB8fCB0ZXN0U3RlcC5yZXN1bHRzWzBdID09PSBCdWlsZGJvdEl0
ZXJhdGlvbi5XQVJOSU5HUykgeworICAgICAgICAgICAgLy8gQWxsIHRlc3RzIHBhc3NlZC4KKyAg
ICAgICAgICAgIHRoaXMuYWxsUGFzc2VkID0gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmICgvRXhpdGluZyBlYXJseS8udGVzdCh0ZXN0U3RlcC5yZXN1
bHRzWzFdWzBdKSkKKyAgICAgICAgICAgIHRoaXMudG9vTWFueUZhaWx1cmVzID0gdHJ1ZTsKKwor
ICAgICAgICBmdW5jdGlvbiByZXN1bHRTdW1tYXJpemVyKG1hdGNoU3RyaW5nLCBzdW0sIG91dHB1
dExpbmUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBtYXRjaCA9IC9eKFxkKylccy8uZXhl
YyhvdXRwdXRMaW5lKTsKKyAgICAgICAgICAgIGlmICghbWF0Y2gpCisgICAgICAgICAgICAgICAg
cmV0dXJuIHN1bTsKKyAgICAgICAgICAgIGlmICghb3V0cHV0TGluZS5jb250YWlucyhtYXRjaFN0
cmluZykpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN1bTsKKyAgICAgICAgICAgIGlmICghc3Vt
IHx8IHN1bSA9PT0gLTEpCisgICAgICAgICAgICAgICAgc3VtID0gMDsKKyAgICAgICAgICAgIHJl
dHVybiBzdW0gKyBwYXJzZUludChtYXRjaFsxXSwgMTApOworICAgICAgICB9CisKKyAgICAgICAg
dGhpcy5mYWlsdXJlQ291bnQgPSB0ZXN0U3RlcC5yZXN1bHRzWzFdLnJlZHVjZShyZXN1bHRTdW1t
YXJpemVyLmJpbmQobnVsbCwgImZhaWwiKSwgdW5kZWZpbmVkKTsKKyAgICAgICAgdGhpcy5mbGFr
ZXlDb3VudCA9IHRlc3RTdGVwLnJlc3VsdHNbMV0ucmVkdWNlKHJlc3VsdFN1bW1hcml6ZXIuYmlu
ZChudWxsLCAiZmxha2UiKSwgdW5kZWZpbmVkKTsKKyAgICAgICAgdGhpcy50b3RhbExlYWtDb3Vu
dCA9IHRlc3RTdGVwLnJlc3VsdHNbMV0ucmVkdWNlKHJlc3VsdFN1bW1hcml6ZXIuYmluZChudWxs
LCAidG90YWwgbGVhayIpLCB1bmRlZmluZWQpOworICAgICAgICB0aGlzLnVuaXF1ZUxlYWtDb3Vu
dCA9IHRlc3RTdGVwLnJlc3VsdHNbMV0ucmVkdWNlKHJlc3VsdFN1bW1hcml6ZXIuYmluZChudWxs
LCAidW5pcXVlIGxlYWsiKSwgdW5kZWZpbmVkKTsKKyAgICAgICAgdGhpcy5uZXdQYXNzZXNDb3Vu
dCA9IHRlc3RTdGVwLnJlc3VsdHNbMV0ucmVkdWNlKHJlc3VsdFN1bW1hcml6ZXIuYmluZChudWxs
LCAibmV3IHBhc3MiKSwgdW5kZWZpbmVkKTsKKyAgICAgICAgdGhpcy5taXNzaW5nQ291bnQgPSB0
ZXN0U3RlcC5yZXN1bHRzWzFdLnJlZHVjZShyZXN1bHRTdW1tYXJpemVyLmJpbmQobnVsbCwgIm1p
c3NpbmciKSwgdW5kZWZpbmVkKTsKKyAgICAgICAgdGhpcy5jcmFzaENvdW50ID0gdGVzdFN0ZXAu
cmVzdWx0c1sxXS5yZWR1Y2UocmVzdWx0U3VtbWFyaXplci5iaW5kKG51bGwsICJjcmFzaCIpLCB1
bmRlZmluZWQpOworCisgICAgICAgIGlmICghdGhpcy5mYWlsdXJlQ291bnQgJiYgIXRoaXMuZmxh
a3lDb3VudCAmJiAhdGhpcy50b3RhbExlYWtDb3VudCAmJiAhdGhpcy51bmlxdWVMZWFrQ291bnQg
JiYgIXRoaXMubmV3UGFzc2VzQ291bnQgJiYgIXRoaXMubWlzc2luZ0NvdW50KSB7CisgICAgICAg
ICAgICAvLyBUaGlzIHN0ZXAgZXhpdGVkIHdpdGggYSBub24temVybyBleGl0IHN0YXR1cywgYnV0
IHdlIGRpZG4ndCBmaW5kIGFueSBvdXRwdXQgYWJvdXQgdGhlIG51bWJlciBvZiBmYWlsZWQgdGVz
dHMuCisgICAgICAgICAgICAvLyBTb21ldGhpbmcgbXVzdCBoYXZlIGdvbmUgd3JvbmcgKGUuZy4s
IHRpbWVkIG91dCBhbmQgd2FzIGtpbGxlZCBieSBidWlsZGJvdCkuCisgICAgICAgICAgICB0aGlz
LmVycm9yT2NjdXJyZWQgPSB0cnVlOworICAgICAgICB9CisgICAgfSwKKworICAgIGFkZEZ1bGxM
YXlvdXRUZXN0UmVzdWx0czogZnVuY3Rpb24oZGF0YSkKKyAgICB7CisgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KHRoaXMubmFtZSA9PT0gImxheW91dC10ZXN0Iik7CisKKyAgICAgICAgZnVuY3Rpb24g
Y29sbGVjdFJlc3VsdHMoc3VidHJlZSwgcHJlZGljYXRlKQorICAgICAgICB7CisgICAgICAgICAg
ICAvLyBSZXN1bHRzIG9iamVjdCBpcyBhIHRyaWU6CisgICAgICAgICAgICAvLyBkaXJlY3RvcnkK
KyAgICAgICAgICAgIC8vICAgc3ViZGlyZWN0b3J5CisgICAgICAgICAgICAvLyAgICAgdGVzdDEu
aHRtbAorICAgICAgICAgICAgLy8gICAgICAgZXhwZWN0ZWQ6IlBBU1MiCisgICAgICAgICAgICAv
LyAgICAgICBhY3R1YWw6ICJJTUFHRSIKKyAgICAgICAgICAgIC8vICAgICAgIHJlcG9ydDogIlJF
R1JFU1NJT04iCisgICAgICAgICAgICAvLyAgICAgdGVzdDIuaHRtbAorICAgICAgICAgICAgLy8g
ICAgICAgZXhwZWN0ZWQ6IkZBSUwiCisgICAgICAgICAgICAvLyAgICAgICBhY3R1YWw6IlRFWFQi
CisKKyAgICAgICAgICAgIHZhciByZXN1bHQgPSBbXTsKKyAgICAgICAgICAgIGZvciAodmFyIGtl
eSBpbiBzdWJ0cmVlKSB7CisgICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gc3VidHJlZVtrZXld
OworICAgICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHR5cGVvZiB2YWx1ZSA9PT0gIm9iamVj
dCIpOworICAgICAgICAgICAgICAgIHZhciBpc0luZGl2aWR1YWxUZXN0ID0gdmFsdWUuaGFzT3du
UHJvcGVydHkoImFjdHVhbCIpICYmIHZhbHVlLmhhc093blByb3BlcnR5KCJleHBlY3RlZCIpOwor
ICAgICAgICAgICAgICAgIGlmIChpc0luZGl2aWR1YWxUZXN0KSB7CisgICAgICAgICAgICAgICAg
ICAgIC8vIFBvc3NpYmxlIHZhbHVlcyBmb3IgYWN0dWFsIGFuZCBleHBlY3RlZCBrZXlzOiBQQVNT
LCBGQUlMLCBBVURJTywgSU1BR0UsIFRFWFQsIElNQUdFK1RFWFQsIFRJTUVPVVQsIENSQVNILCBN
SVNTSU5HLgorICAgICAgICAgICAgICAgICAgICAvLyBCb3RoIGFjdHVhbCBhbmQgZXhwZWN0ZWQg
Y2FuIGJlIHNwYWNlIHNlcGFyYXRlZCBsaXN0cy4gQWN0dWFsIGNvbnRhaW5zIHR3byB2YWx1ZXMg
d2hlbiByZXRyeWluZyBhIGZhaWxlZCB0ZXN0CisgICAgICAgICAgICAgICAgICAgIC8vIGdpdmVz
IGEgZGlmZmVyZW50IHJlc3VsdCAocmV0cnlpbmcgbWF5IGJlIGRpc2FibGVkIGluIHRlc3RlciBj
b25maWd1cmF0aW9uKS4KKyAgICAgICAgICAgICAgICAgICAgLy8gUG9zc2libGUgdmFsdWVzIGZv
ciByZXBvcnQga2V5ICh3aGVuIHByZXNlbnQpOiBSRUdSRVNTSU9OLCBNSVNTSU5HLCBGTEFLWS4K
KworICAgICAgICAgICAgICAgICAgICBpZiAocHJlZGljYXRlKHZhbHVlKSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgdmFyIGl0ZW0gPSB7cGF0aDoga2V5fTsKKworICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gRklYTUUgKGJ1ZyAxMjcxODYpOiBDcmFzaCBsb2cgVVJMIHdpbGwgYmUgaW5j
b3JyZWN0IGlmIGNyYXNoIG9ubHkgaGFwcGVuZWQgb24gcmV0cnkgKGUuZy4gIlRFWFQgQ1JBU0gi
KS4KKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIEl0IHNob3VsZCBwb2ludCB0byByZXRyaWVz
IHN1YmRpcmVjdG9yeSwgYnV0IHRoZSBpbmZvcm1hdGlvbiBhYm91dCB3aGljaCBhdHRlbXB0IGZh
aWxlZCBnZXRzIGxvc3QgaGVyZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5h
Y3R1YWwuY29udGFpbnMoIkNSQVNIIikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRl
bS5jcmFzaCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUuYWN0dWFs
LmNvbnRhaW5zKCJUSU1FT1VUIikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS50
aW1lb3V0ID0gdHJ1ZTsKKworICAgICAgICAgICAgICAgICAgICAgICAgLy8gRklYTUUgKGJ1ZyAx
MjcxODYpOiBTaW1pbGFybHksIHdlIGRvbid0IGhhdmUgYSBnb29kIHdheSB0byBwcmVzZW50IHJl
c3VsdHMgZm9yIHNvbWV0aGluZyBsaWtlICJUSU1FT1VUIFRFWFQiLAorICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gbm90IGV2ZW4gVUkgd2lzZS4gRm9yIG5vdywgb25seSBzaG93IGEgZGlmZiBs
aW5rIGlmIHRoZSBmaXJzdCBhdHRlbXB0IGhhcyB0aGUgZGlmZi4KKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICh2YWx1ZS5hY3R1YWwuc3BsaXQoIiAiKVswXS5jb250YWlucygiVEVYVCIpKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uaGFzX2RpZmYgPSB0cnVlOworCisgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRSAoYnVnIDEyNzE4Nik6IEl0IGlzIHBhcnRpY3Vs
YXJseSB1bmZvcnR1bmF0ZSBmb3IgaW1hZ2UgZGlmZnMsIGJlY2F1c2Ugd2UgY3VycmVudGx5IG9u
bHkgY2hlY2sgaW1hZ2UgcmVzdWx0cworICAgICAgICAgICAgICAgICAgICAgICAgLy8gb24gcmV0
cnkgKGV4Y2VwdCBmb3IgcmVmdGVzdHMpLCBzbyBtYW55IHRpbWVzLCB5b3Ugd2lsbCBzZWUgaW1h
Z2VzIG9uIGJ1aWRib3QgcGFnZSwgYnV0IG5vdCBvbiB0aGUgZGFzaGJvYXJkLgorICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gRklYTUU6IEZpbmQgYSB3YXkgdG8gZGlzcGxheSBleHBlY3RlZCBt
aXNtYXRjaCByZWZ0ZXN0IGZhaWx1cmVzLiAKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2
YWx1ZS5hY3R1YWwuc3BsaXQoIiAiKVswXS5jb250YWlucygiSU1BR0UiKSAmJiB2YWx1ZS5yZWZ0
ZXN0X3R5cGUgIT0gIiE9IikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmhhc19p
bWFnZV9kaWZmID0gdHJ1ZTsKKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlLmhh
c19zdGRlcnIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5oYXNfc3RkZXJyID0g
dHJ1ZTsKKworICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goaXRlbSk7CisgICAg
ICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgICAgIHZhciBuZXN0ZWRUZXN0cyA9IGNvbGxlY3RSZXN1bHRzKHZhbHVlLCBwcmVkaWNh
dGUpOworICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMCwgZW5kID0gbmVzdGVkVGVz
dHMubGVuZ3RoOyBpIDwgZW5kOyArK2kpCisgICAgICAgICAgICAgICAgICAgICAgICBuZXN0ZWRU
ZXN0c1tpXS5wYXRoID0ga2V5ICsgIi8iICsgbmVzdGVkVGVzdHNbaV0ucGF0aDsKKyAgICAgICAg
ICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LmNvbmNhdChuZXN0ZWRUZXN0cyk7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgICAgICB9CisKKyAgICAgICAgdGhpcy5oYXNQcmV0dHlQYXRjaCA9IGRhdGEuaGFzX3ByZXR0
eV9wYXRjaDsKKworICAgICAgICB0aGlzLnJlZ3Jlc3Npb25zID0gY29sbGVjdFJlc3VsdHMoZGF0
YS50ZXN0cywgZnVuY3Rpb24oaW5mbykgeyByZXR1cm4gaW5mb1sicmVwb3J0Il0gPT09ICJSRUdS
RVNTSU9OIiB9KTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoZGF0YS5udW1fcmVncmVzc2lvbnMg
PT09IHRoaXMucmVncmVzc2lvbnMubGVuZ3RoKTsKKworICAgICAgICB0aGlzLmZsYWt5VGVzdHMg
PSBjb2xsZWN0UmVzdWx0cyhkYXRhLnRlc3RzLCBmdW5jdGlvbihpbmZvKSB7IHJldHVybiBpbmZv
WyJyZXBvcnQiXSA9PT0gIkZMQUtZIiB9KTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoZGF0YS5u
dW1fZmxha3kgPT09IHRoaXMuZmxha3lUZXN0cy5sZW5ndGgpOworCisgICAgICAgIHRoaXMudGVz
dHNXaXRoTWlzc2luZ1Jlc3VsdHMgPSBjb2xsZWN0UmVzdWx0cyhkYXRhLnRlc3RzLCBmdW5jdGlv
bihpbmZvKSB7IHJldHVybiBpbmZvWyJyZXBvcnQiXSA9PT0gIk1JU1NJTkciIH0pOworICAgICAg
ICAvLyBkYXRhLm51bV9taXNzaW5nIGlzIG5vdCBhbHdheXMgZXF1YWwgdG8gdGhlIHNpemUgb2Yg
dGVzdHNXaXRoTWlzc2luZ1Jlc3VsdHMgYXJyYXksCisgICAgICAgIC8vIGJlY2F1c2UgYnVpbGRi
b3QgY291bnRzIHJlZ3Jlc3Npb25zIHRoYXQgaGFkIG1pc3NpbmcgcGl4ZWwgcmVzdWx0cyBvbiBy
ZXRyeSAoZS5nLiAiVEVYVCBNSVNTSU5HIikuCisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGRhdGEu
bnVtX21pc3NpbmcgPj0gdGhpcy50ZXN0c1dpdGhNaXNzaW5nUmVzdWx0cy5sZW5ndGgpOworICAg
IH0sCiB9OwpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RUZXN0ZXJRdWV1ZVZp
ZXcuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0
Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RUZXN0ZXJR
dWV1ZVZpZXcuanMJKHJldmlzaW9uIDE4MDkxNikKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0
L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1
aWxkYm90VGVzdGVyUXVldWVWaWV3LmpzCSh3b3JraW5nIGNvcHkpCkBAIC02NCwxNCArNjQsNiBA
QCBCdWlsZGJvdFRlc3RlclF1ZXVlVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAg
dmFyIHdpbGxIYXZlQW5vdGhlclN0YXR1c0xpbmUgPSBpICsgMSA8IHF1ZXVlLml0ZXJhdGlvbnMu
bGVuZ3RoICYmIGxpbWl0ID4gMCAmJiAhaXRlcmF0aW9uLnN1Y2Nlc3NmdWw7IC8vIFRoaXMgaXMg
bm90IDEwMCUgY29ycmVjdCwgYXMgdGhlIHJlbWFpbmluZyBpdGVyYXRpb25zIG1heSBub3QgYmUg
ZmluaXNoZWQgb3IgbG9hZGVkIHlldCwgYnV0IGNsb3NlIGVub3VnaC4KICAgICAgICAgICAgICAg
ICB2YXIgbWVzc2FnZUVsZW1lbnQgPSB0aGlzLnJldmlzaW9uQ29udGVudEZvckl0ZXJhdGlvbihp
dGVyYXRpb24sIChpdGVyYXRpb24ucHJvZHVjdGl2ZSAmJiB3aWxsSGF2ZUFub3RoZXJTdGF0dXNM
aW5lKSA/IGl0ZXJhdGlvbi5wcmV2aW91c1Byb2R1Y3RpdmVJdGVyYXRpb24gOiBudWxsKTsKIAot
ICAgICAgICAgICAgICAgIHZhciBsYXlvdXRUZXN0UmVzdWx0cyA9IGl0ZXJhdGlvbi5sYXlvdXRU
ZXN0UmVzdWx0cyB8fCB7ZmFpbHVyZUNvdW50OiAwfTsKLSAgICAgICAgICAgICAgICB2YXIgamF2
YXNjcmlwdFRlc3RSZXN1bHRzID0gaXRlcmF0aW9uLmphdmFzY3JpcHRUZXN0UmVzdWx0cyB8fCB7
ZmFpbHVyZUNvdW50OiAwfTsKLSAgICAgICAgICAgICAgICB2YXIgYXBpVGVzdFJlc3VsdHMgPSBp
dGVyYXRpb24uYXBpVGVzdFJlc3VsdHMgfHwge2ZhaWx1cmVDb3VudDogMH07Ci0gICAgICAgICAg
ICAgICAgdmFyIHBsYXRmb3JtQVBJVGVzdFJlc3VsdHMgPSBpdGVyYXRpb24ucGxhdGZvcm1BUElU
ZXN0UmVzdWx0cyB8fCB7ZmFpbHVyZUNvdW50OiAwfTsKLSAgICAgICAgICAgICAgICB2YXIgcHl0
aG9uVGVzdFJlc3VsdHMgPSBpdGVyYXRpb24ucHl0aG9uVGVzdFJlc3VsdHMgfHwge2ZhaWx1cmVD
b3VudDogMH07Ci0gICAgICAgICAgICAgICAgdmFyIHBlcmxUZXN0UmVzdWx0cyA9IGl0ZXJhdGlv
bi5wZXJsVGVzdFJlc3VsdHMgfHwge2Vycm9yT2NjdXJyZWQ6IGZhbHNlfTsKLSAgICAgICAgICAg
ICAgICB2YXIgYmluZGluZ1Rlc3RSZXN1bHRzID0gaXRlcmF0aW9uLmJpbmRpbmdUZXN0UmVzdWx0
cyB8fCB7ZXJyb3JPY2N1cnJlZDogZmFsc2V9OwotCiAgICAgICAgICAgICAgICAgaWYgKGl0ZXJh
dGlvbi5zdWNjZXNzZnVsKSB7CiAgICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBpdGVyYXRp
b24ucXVldWUuYnVpbGRib3QuYnVpbGRQYWdlVVJMRm9ySXRlcmF0aW9uKGl0ZXJhdGlvbik7CiAg
ICAgICAgICAgICAgICAgICAgIHZhciBzdGF0dXMgPSBuZXcgU3RhdHVzTGluZVZpZXcobWVzc2Fn
ZUVsZW1lbnQsIFN0YXR1c0xpbmVWaWV3LlN0YXR1cy5Hb29kLCAiYWxsIHRlc3RzIHBhc3NlZCIs
IHVuZGVmaW5lZCwgdXJsKTsKQEAgLTc5LDQ1ICs3MSwzNiBAQCBCdWlsZGJvdFRlc3RlclF1ZXVl
Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghaXRlcmF0aW9u
LnByb2R1Y3RpdmUpIHsKICAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IGl0ZXJhdGlvbi5x
dWV1ZS5idWlsZGJvdC5idWlsZFBhZ2VVUkxGb3JJdGVyYXRpb24oaXRlcmF0aW9uKTsKICAgICAg
ICAgICAgICAgICAgICAgdmFyIHN0YXR1cyA9IG5ldyBTdGF0dXNMaW5lVmlldyhtZXNzYWdlRWxl
bWVudCwgU3RhdHVzTGluZVZpZXcuU3RhdHVzLkRhbmdlciwgaXRlcmF0aW9uLnRleHQsIHVuZGVm
aW5lZCwgdXJsKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHF1ZXVlLmNyYXNoZXNPbmx5
ICYmICFsYXlvdXRUZXN0UmVzdWx0cy5jcmFzaENvdW50KSB7Ci0gICAgICAgICAgICAgICAgICAg
IHZhciB1cmwgPSBpdGVyYXRpb24ucXVldWUuYnVpbGRib3QuYnVpbGRQYWdlVVJMRm9ySXRlcmF0
aW9uKGl0ZXJhdGlvbik7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBzdGF0dXMgPSBuZXcgU3Rh
dHVzTGluZVZpZXcobWVzc2FnZUVsZW1lbnQsIFN0YXR1c0xpbmVWaWV3LlN0YXR1cy5Hb29kLCAi
bm8gY3Jhc2hlcyBmb3VuZCIsIHVuZGVmaW5lZCwgdXJsKTsKLSAgICAgICAgICAgICAgICAgICAg
bGltaXQgPSAwOwotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocXVldWUuY3Jhc2hlc09ubHkg
JiYgbGF5b3V0VGVzdFJlc3VsdHMuY3Jhc2hDb3VudCkgewotICAgICAgICAgICAgICAgICAgICB2
YXIgdXJsID0gaXRlcmF0aW9uLnF1ZXVlLmJ1aWxkYm90LmxheW91dFRlc3RSZXN1bHRzVVJMRm9y
SXRlcmF0aW9uKGl0ZXJhdGlvbik7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBzdGF0dXMgPSBu
ZXcgU3RhdHVzTGluZVZpZXcobWVzc2FnZUVsZW1lbnQsIFN0YXR1c0xpbmVWaWV3LlN0YXR1cy5C
YWQsIGxheW91dFRlc3RSZXN1bHRzLmNyYXNoQ291bnQgPT09IDEgPyAiY3Jhc2ggZm91bmQiIDog
ImNyYXNoZXMgZm91bmQiLCBsYXlvdXRUZXN0UmVzdWx0cy5jcmFzaENvdW50LCB1cmwpOwotICAg
ICAgICAgICAgICAgICAgICBuZXcgUG9wb3ZlclRyYWNrZXIoc3RhdHVzLnN0YXR1c0J1YmJsZUVs
ZW1lbnQsIHRoaXMuX3ByZXNlbnRQb3BvdmVyRm9yTGF5b3V0VGVzdFJlZ3Jlc3Npb25zLmJpbmQo
dGhpcyksIGl0ZXJhdGlvbik7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmICghbGF5b3V0VGVz
dFJlc3VsdHMuZmFpbHVyZUNvdW50ICYmICFqYXZhc2NyaXB0VGVzdFJlc3VsdHMuZmFpbHVyZUNv
dW50ICYmICFhcGlUZXN0UmVzdWx0cy5mYWlsdXJlQ291bnQgJiYgIXBsYXRmb3JtQVBJVGVzdFJl
c3VsdHMuZmFpbHVyZUNvdW50ICYmICFweXRob25UZXN0UmVzdWx0cy5mYWlsdXJlQ291bnQgJiYg
IXBlcmxUZXN0UmVzdWx0cy5lcnJvck9jY3VycmVkICYmICFiaW5kaW5nVGVzdFJlc3VsdHMuZXJy
b3JPY2N1cnJlZCkgeworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlcmF0aW9uLmZhaWxl
ZFRlc3RTdGVwcy5sZW5ndGggPT09IDApIHsKICAgICAgICAgICAgICAgICAgICAgLy8gU29tZXRo
aW5nIHdyb25nIGhhcHBlbmVkLCBidXQgaXQgd2FzIG5vdCBhIHRlc3QgZmFpbHVyZS4KICAgICAg
ICAgICAgICAgICAgICAgdmFyIHVybCA9IGl0ZXJhdGlvbi5xdWV1ZS5idWlsZGJvdC5idWlsZFBh
Z2VVUkxGb3JJdGVyYXRpb24oaXRlcmF0aW9uKTsKICAgICAgICAgICAgICAgICAgICAgdmFyIHN0
YXR1cyA9IG5ldyBTdGF0dXNMaW5lVmlldyhtZXNzYWdlRWxlbWVudCwgU3RhdHVzTGluZVZpZXcu
U3RhdHVzLkRhbmdlciwgaXRlcmF0aW9uLnRleHQsIHVuZGVmaW5lZCwgdXJsKTsKLSAgICAgICAg
ICAgICAgICB9IGVsc2UgaWYgKGxheW91dFRlc3RSZXN1bHRzLmZhaWx1cmVDb3VudCAmJiAhamF2
YXNjcmlwdFRlc3RSZXN1bHRzLmZhaWx1cmVDb3VudCAmJiAhYXBpVGVzdFJlc3VsdHMuZmFpbHVy
ZUNvdW50ICYmICFwbGF0Zm9ybUFQSVRlc3RSZXN1bHRzLmZhaWx1cmVDb3VudCAmJiAhcHl0aG9u
VGVzdFJlc3VsdHMuZmFpbHVyZUNvdW50ICYmICFwZXJsVGVzdFJlc3VsdHMuZXJyb3JPY2N1cnJl
ZCAmJiAhYmluZGluZ1Rlc3RSZXN1bHRzLmVycm9yT2NjdXJyZWQpIHsKLSAgICAgICAgICAgICAg
ICAgICAgdmFyIHVybCA9IGl0ZXJhdGlvbi5xdWV1ZS5idWlsZGJvdC5sYXlvdXRUZXN0UmVzdWx0
c1VSTEZvckl0ZXJhdGlvbihpdGVyYXRpb24pOwotICAgICAgICAgICAgICAgICAgICB2YXIgc3Rh
dHVzID0gbmV3IFN0YXR1c0xpbmVWaWV3KG1lc3NhZ2VFbGVtZW50LCBTdGF0dXNMaW5lVmlldy5T
dGF0dXMuQmFkLCBsYXlvdXRUZXN0UmVzdWx0cy5mYWlsdXJlQ291bnQgPT09IDEgPyAibGF5b3V0
IHRlc3QgZmFpbHVyZSIgOiAibGF5b3V0IHRlc3QgZmFpbHVyZXMiLCBsYXlvdXRUZXN0UmVzdWx0
cy50b29NYW55RmFpbHVyZXMgPyBsYXlvdXRUZXN0UmVzdWx0cy5mYWlsdXJlQ291bnQgKyAiXHVm
ZjBiIiA6IGxheW91dFRlc3RSZXN1bHRzLmZhaWx1cmVDb3VudCwgdXJsKTsKLSAgICAgICAgICAg
ICAgICAgICAgbmV3IFBvcG92ZXJUcmFja2VyKHN0YXR1cy5zdGF0dXNCdWJibGVFbGVtZW50LCB0
aGlzLl9wcmVzZW50UG9wb3ZlckZvckxheW91dFRlc3RSZWdyZXNzaW9ucy5iaW5kKHRoaXMpLCBp
dGVyYXRpb24pOwotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIWxheW91dFRlc3RSZXN1bHRz
LmZhaWx1cmVDb3VudCAmJiBqYXZhc2NyaXB0VGVzdFJlc3VsdHMuZmFpbHVyZUNvdW50ICYmICFh
cGlUZXN0UmVzdWx0cy5mYWlsdXJlQ291bnQgJiYgIXBsYXRmb3JtQVBJVGVzdFJlc3VsdHMuZmFp
bHVyZUNvdW50ICYmICFweXRob25UZXN0UmVzdWx0cy5mYWlsdXJlQ291bnQgJiYgIXBlcmxUZXN0
UmVzdWx0cy5lcnJvck9jY3VycmVkICYmICFiaW5kaW5nVGVzdFJlc3VsdHMuZXJyb3JPY2N1cnJl
ZCkgewotICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0gaXRlcmF0aW9uLnF1ZXVlLmJ1aWxk
Ym90LmphdmFzY3JpcHRUZXN0UmVzdWx0c1VSTEZvckl0ZXJhdGlvbihpdGVyYXRpb24pOwotICAg
ICAgICAgICAgICAgICAgICB2YXIgc3RhdHVzID0gbmV3IFN0YXR1c0xpbmVWaWV3KG1lc3NhZ2VF
bGVtZW50LCBTdGF0dXNMaW5lVmlldy5TdGF0dXMuQmFkLCBqYXZhc2NyaXB0VGVzdFJlc3VsdHMu
ZmFpbHVyZUNvdW50ID09PSAxID8gImphdmFzY3JpcHQgdGVzdCBmYWlsdXJlIiA6ICJqYXZhc2Ny
aXB0IHRlc3QgZmFpbHVyZXMiLCBqYXZhc2NyaXB0VGVzdFJlc3VsdHMuZmFpbHVyZUNvdW50LCB1
cmwpOwotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIWxheW91dFRlc3RSZXN1bHRzLmZhaWx1
cmVDb3VudCAmJiAhamF2YXNjcmlwdFRlc3RSZXN1bHRzLmZhaWx1cmVDb3VudCAmJiBhcGlUZXN0
UmVzdWx0cy5mYWlsdXJlQ291bnQgJiYgIXBsYXRmb3JtQVBJVGVzdFJlc3VsdHMuZmFpbHVyZUNv
dW50ICYmICFweXRob25UZXN0UmVzdWx0cy5mYWlsdXJlQ291bnQgJiYgIXBlcmxUZXN0UmVzdWx0
cy5lcnJvck9jY3VycmVkICYmICFiaW5kaW5nVGVzdFJlc3VsdHMuZXJyb3JPY2N1cnJlZCkgewot
ICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0gaXRlcmF0aW9uLnF1ZXVlLmJ1aWxkYm90LmFw
aVRlc3RSZXN1bHRzVVJMRm9ySXRlcmF0aW9uKGl0ZXJhdGlvbik7Ci0gICAgICAgICAgICAgICAg
ICAgIHZhciBzdGF0dXMgPSBuZXcgU3RhdHVzTGluZVZpZXcobWVzc2FnZUVsZW1lbnQsIFN0YXR1
c0xpbmVWaWV3LlN0YXR1cy5CYWQsIGFwaVRlc3RSZXN1bHRzLmZhaWx1cmVDb3VudCA9PT0gMSA/
ICJhcGkgdGVzdCBmYWlsdXJlIiA6ICJhcGkgdGVzdCBmYWlsdXJlcyIsIGFwaVRlc3RSZXN1bHRz
LmZhaWx1cmVDb3VudCwgdXJsKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFsYXlvdXRU
ZXN0UmVzdWx0cy5mYWlsdXJlQ291bnQgJiYgIWphdmFzY3JpcHRUZXN0UmVzdWx0cy5mYWlsdXJl
Q291bnQgJiYgIWFwaVRlc3RSZXN1bHRzLmZhaWx1cmVDb3VudCAmJiBwbGF0Zm9ybUFQSVRlc3RS
ZXN1bHRzLmZhaWx1cmVDb3VudCAmJiAhcHl0aG9uVGVzdFJlc3VsdHMuZmFpbHVyZUNvdW50ICYm
ICFwZXJsVGVzdFJlc3VsdHMuZXJyb3JPY2N1cnJlZCAmJiAhYmluZGluZ1Rlc3RSZXN1bHRzLmVy
cm9yT2NjdXJyZWQpIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IGl0ZXJhdGlvbi5x
dWV1ZS5idWlsZGJvdC5wbGF0Zm9ybUFQSVRlc3RSZXN1bHRzVVJMRm9ySXRlcmF0aW9uKGl0ZXJh
dGlvbik7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBzdGF0dXMgPSBuZXcgU3RhdHVzTGluZVZp
ZXcobWVzc2FnZUVsZW1lbnQsIFN0YXR1c0xpbmVWaWV3LlN0YXR1cy5CYWQsIHBsYXRmb3JtQVBJ
VGVzdFJlc3VsdHMuZmFpbHVyZUNvdW50ID09PSAxID8gInBsYXRmb3JtIGFwaSB0ZXN0IGZhaWx1
cmUiIDogImFwaSB0ZXN0IGZhaWx1cmVzIiwgcGxhdGZvcm1BUElUZXN0UmVzdWx0cy5mYWlsdXJl
Q291bnQsIHVybCk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmICghbGF5b3V0VGVzdFJlc3Vs
dHMuZmFpbHVyZUNvdW50ICYmICFqYXZhc2NyaXB0VGVzdFJlc3VsdHMuZmFpbHVyZUNvdW50ICYm
ICFhcGlUZXN0UmVzdWx0cy5mYWlsdXJlQ291bnQgJiYgIXBsYXRmb3JtQVBJVGVzdFJlc3VsdHMu
ZmFpbHVyZUNvdW50ICYmIHB5dGhvblRlc3RSZXN1bHRzLmZhaWx1cmVDb3VudCAmJiAhcGVybFRl
c3RSZXN1bHRzLmVycm9yT2NjdXJyZWQgJiYgIWJpbmRpbmdUZXN0UmVzdWx0cy5lcnJvck9jY3Vy
cmVkKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBpdGVyYXRpb24ucXVldWUuYnVp
bGRib3Qud2Via2l0cHlUZXN0UmVzdWx0c1VSTEZvckl0ZXJhdGlvbihpdGVyYXRpb24pOwotICAg
ICAgICAgICAgICAgICAgICB2YXIgc3RhdHVzID0gbmV3IFN0YXR1c0xpbmVWaWV3KG1lc3NhZ2VF
bGVtZW50LCBTdGF0dXNMaW5lVmlldy5TdGF0dXMuQmFkLCBweXRob25UZXN0UmVzdWx0cy5mYWls
dXJlQ291bnQgPT09IDEgPyAid2Via2l0cHkgdGVzdCBmYWlsdXJlIiA6ICJ3ZWJraXRweSB0ZXN0
IGZhaWx1cmVzIiwgcHl0aG9uVGVzdFJlc3VsdHMuZmFpbHVyZUNvdW50LCB1cmwpOwotICAgICAg
ICAgICAgICAgIH0gZWxzZSBpZiAoIWxheW91dFRlc3RSZXN1bHRzLmZhaWx1cmVDb3VudCAmJiAh
amF2YXNjcmlwdFRlc3RSZXN1bHRzLmZhaWx1cmVDb3VudCAmJiAhYXBpVGVzdFJlc3VsdHMuZmFp
bHVyZUNvdW50ICYmICFwbGF0Zm9ybUFQSVRlc3RSZXN1bHRzLmZhaWx1cmVDb3VudCAmJiAhcHl0
aG9uVGVzdFJlc3VsdHMuZmFpbHVyZUNvdW50ICYmIHBlcmxUZXN0UmVzdWx0cy5lcnJvck9jY3Vy
cmVkICYmICFiaW5kaW5nVGVzdFJlc3VsdHMuZXJyb3JPY2N1cnJlZCkgewotICAgICAgICAgICAg
ICAgICAgICB2YXIgdXJsID0gaXRlcmF0aW9uLnF1ZXVlLmJ1aWxkYm90LndlYmtpdHBlcmxUZXN0
UmVzdWx0c1VSTEZvckl0ZXJhdGlvbihpdGVyYXRpb24pOwotICAgICAgICAgICAgICAgICAgICB2
YXIgc3RhdHVzID0gbmV3IFN0YXR1c0xpbmVWaWV3KG1lc3NhZ2VFbGVtZW50LCBTdGF0dXNMaW5l
Vmlldy5TdGF0dXMuQmFkLCAid2Via2l0cGVybCB0ZXN0IGZhaWxlZCIsIHVuZGVmaW5lZCwgdXJs
KTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFsYXlvdXRUZXN0UmVzdWx0cy5mYWlsdXJl
Q291bnQgJiYgIWphdmFzY3JpcHRUZXN0UmVzdWx0cy5mYWlsdXJlQ291bnQgJiYgIWFwaVRlc3RS
ZXN1bHRzLmZhaWx1cmVDb3VudCAmJiAhcGxhdGZvcm1BUElUZXN0UmVzdWx0cy5mYWlsdXJlQ291
bnQgJiYgIXB5dGhvblRlc3RSZXN1bHRzLmZhaWx1cmVDb3VudCAmJiAhcGVybFRlc3RSZXN1bHRz
LmVycm9yT2NjdXJyZWQgJiYgYmluZGluZ1Rlc3RSZXN1bHRzLmVycm9yT2NjdXJyZWQpIHsKLSAg
ICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IGl0ZXJhdGlvbi5xdWV1ZS5idWlsZGJvdC5iaW5k
aW5nc1Rlc3RSZXN1bHRzVVJMRm9ySXRlcmF0aW9uKGl0ZXJhdGlvbik7Ci0gICAgICAgICAgICAg
ICAgICAgIHZhciBzdGF0dXMgPSBuZXcgU3RhdHVzTGluZVZpZXcobWVzc2FnZUVsZW1lbnQsIFN0
YXR1c0xpbmVWaWV3LlN0YXR1cy5CYWQsICJiaW5kaW5ncyB0ZXN0cyBmYWlsZWQiLCB1bmRlZmlu
ZWQsIHVybCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChxdWV1ZS5jcmFzaGVzT25seSkg
eworICAgICAgICAgICAgICAgICAgICAvLyBBIGNyYXNoZXMtb25seSBxdWV1ZSBpcyBhIHF1ZXVl
IHdoZXJlIHdlIGFyZSBvbmx5IGludGVyZXN0ZWQgaW4gY3Jhc2hlcywgZS5nLiBhIEd1YXJkTWFs
bG9jIG9yIGFuIEFTYW4gb25lLgorICAgICAgICAgICAgICAgICAgICAvLyBDdXJyZW50bHksIG9u
bHkgbGF5b3V0IHRlc3RzIGFyZSBzdXBwb3J0ZWQgaW4gc3VjaC4KKyAgICAgICAgICAgICAgICAg
ICAgdmFyIGxheW91dFRlc3RSZXN1bHRzID0gaXRlcmF0aW9uLmxheW91dFRlc3RSZXN1bHRzOwor
ICAgICAgICAgICAgICAgICAgICBpZiAoIWxheW91dFRlc3RSZXN1bHRzLmNyYXNoQ291bnQpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBpdGVyYXRpb24ucXVldWUuYnVpbGRi
b3QuYnVpbGRQYWdlVVJMRm9ySXRlcmF0aW9uKGl0ZXJhdGlvbik7CisgICAgICAgICAgICAgICAg
ICAgICAgICB2YXIgc3RhdHVzID0gbmV3IFN0YXR1c0xpbmVWaWV3KG1lc3NhZ2VFbGVtZW50LCBT
dGF0dXNMaW5lVmlldy5TdGF0dXMuR29vZCwgIm5vIGNyYXNoZXMgZm91bmQiLCB1bmRlZmluZWQs
IHVybCk7CisgICAgICAgICAgICAgICAgICAgICAgICBsaW1pdCA9IDA7CisgICAgICAgICAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc3RhdHVzID0gbmV3
IFN0YXR1c0xpbmVWaWV3KG1lc3NhZ2VFbGVtZW50LCBTdGF0dXNMaW5lVmlldy5TdGF0dXMuQmFk
LCBsYXlvdXRUZXN0UmVzdWx0cy5jcmFzaENvdW50ID09PSAxID8gImNyYXNoIGZvdW5kIiA6ICJj
cmFzaGVzIGZvdW5kIiwgbGF5b3V0VGVzdFJlc3VsdHMuY3Jhc2hDb3VudCwgaXRlcmF0aW9uLnF1
ZXVlLmJ1aWxkYm90LmxheW91dFRlc3RSZXN1bHRzVVJMRm9ySXRlcmF0aW9uKGl0ZXJhdGlvbikp
OworICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFBvcG92ZXJUcmFja2VyKHN0YXR1cy5zdGF0
dXNCdWJibGVFbGVtZW50LCB0aGlzLl9wcmVzZW50UG9wb3ZlckZvckxheW91dFRlc3RSZWdyZXNz
aW9ucy5iaW5kKHRoaXMpLCBpdGVyYXRpb24pOworICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVyYXRpb24uZmFpbGVkVGVzdFN0ZXBzLmxlbmd0aCA9
PT0gMSkgeworICAgICAgICAgICAgICAgICAgICB2YXIgZmFpbGVkU3RlcCA9IGl0ZXJhdGlvbi5m
YWlsZWRUZXN0U3RlcHNbMF07CisgICAgICAgICAgICAgICAgICAgIGlmIChmYWlsZWRTdGVwLm5h
bWUgPT09ICJsYXlvdXQtdGVzdCIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzdGF0
dXMgPSBuZXcgU3RhdHVzTGluZVZpZXcobWVzc2FnZUVsZW1lbnQsIFN0YXR1c0xpbmVWaWV3LlN0
YXR1cy5CYWQsIHRoaXMuX3Rlc3RTdGVwRmFpbHVyZURlc2NyaXB0aW9uKGZhaWxlZFN0ZXApLCBm
YWlsZWRTdGVwLnRvb01hbnlGYWlsdXJlcyA/IGZhaWxlZFN0ZXAuZmFpbHVyZUNvdW50ICsgIlx1
ZmYwYiIgOiBmYWlsZWRTdGVwLmZhaWx1cmVDb3VudCwgaXRlcmF0aW9uLnF1ZXVlLmJ1aWxkYm90
LmxheW91dFRlc3RSZXN1bHRzVVJMRm9ySXRlcmF0aW9uKGl0ZXJhdGlvbikpOworICAgICAgICAg
ICAgICAgICAgICAgICAgbmV3IFBvcG92ZXJUcmFja2VyKHN0YXR1cy5zdGF0dXNCdWJibGVFbGVt
ZW50LCB0aGlzLl9wcmVzZW50UG9wb3ZlckZvckxheW91dFRlc3RSZWdyZXNzaW9ucy5iaW5kKHRo
aXMpLCBpdGVyYXRpb24pOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgICAgICAgICAgdmFyIHN0YXR1cyA9IG5ldyBTdGF0dXNMaW5lVmlldyhtZXNzYWdlRWxl
bWVudCwgU3RhdHVzTGluZVZpZXcuU3RhdHVzLkJhZCwgdGhpcy5fdGVzdFN0ZXBGYWlsdXJlRGVz
Y3JpcHRpb24oZmFpbGVkU3RlcCksIGZhaWxlZFN0ZXAuZmFpbHVyZUNvdW50ID8gZmFpbGVkU3Rl
cC5mYWlsdXJlQ291bnQgOiB1bmRlZmluZWQsIGZhaWxlZFN0ZXAuVVJMKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG5ldyBQb3BvdmVyVHJhY2tlcihzdGF0dXMuc3RhdHVzQnViYmxlRWxlbWVu
dCwgdGhpcy5fcHJlc2VudFBvcG92ZXJGb3JHZW5lcmljVGVzdEZhaWx1cmVzLmJpbmQodGhpcyks
IGl0ZXJhdGlvbik7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0gaXRlcmF0aW9uLnF1ZXVlLmJ1aWxk
Ym90LmJ1aWxkUGFnZVVSTEZvckl0ZXJhdGlvbihpdGVyYXRpb24pOwotICAgICAgICAgICAgICAg
ICAgICB2YXIgdG90YWxGYWlsdXJlcyA9IGxheW91dFRlc3RSZXN1bHRzLmZhaWx1cmVDb3VudCAr
IGphdmFzY3JpcHRUZXN0UmVzdWx0cy5mYWlsdXJlQ291bnQgKyBhcGlUZXN0UmVzdWx0cy5mYWls
dXJlQ291bnQgKyBwbGF0Zm9ybUFQSVRlc3RSZXN1bHRzLmZhaWx1cmVDb3VudCArIHB5dGhvblRl
c3RSZXN1bHRzLmZhaWx1cmVDb3VudCArIHBlcmxUZXN0UmVzdWx0cy5lcnJvck9jY3VycmVkICsg
YmluZGluZ1Rlc3RSZXN1bHRzLmVycm9yT2NjdXJyZWQ7Ci0gICAgICAgICAgICAgICAgICAgIHZh
ciBzdGF0dXMgPSBuZXcgU3RhdHVzTGluZVZpZXcobWVzc2FnZUVsZW1lbnQsIFN0YXR1c0xpbmVW
aWV3LlN0YXR1cy5CYWQsIHRvdGFsRmFpbHVyZXMgPT09IDEgPyAidGVzdCBmYWlsdXJlIiA6ICJ0
ZXN0IGZhaWx1cmVzIiwgdG90YWxGYWlsdXJlcywgdXJsKTsKLSAgICAgICAgICAgICAgICAgICAg
bmV3IFBvcG92ZXJUcmFja2VyKHN0YXR1cy5zdGF0dXNCdWJibGVFbGVtZW50LCB0aGlzLl9wcmVz
ZW50UG9wb3ZlckZvck11bHRpcGxlRmFpbHVyZUtpbmRzLmJpbmQodGhpcyksIGl0ZXJhdGlvbik7
CisgICAgICAgICAgICAgICAgICAgIHZhciBmYWlsdXJlRGVzY3JpcHRpb25zID0gaXRlcmF0aW9u
LmZhaWxlZFRlc3RTdGVwcy5tYXAoZnVuY3Rpb24oZmFpbGVkU3RlcCkgeyByZXR1cm4gdGhpcy5f
dGVzdFN0ZXBGYWlsdXJlRGVzY3JpcHRpb25XaXRoQ291bnQoZmFpbGVkU3RlcCkgfSwgdGhpcyk7
CisgICAgICAgICAgICAgICAgICAgIHZhciBzdGF0dXMgPSBuZXcgU3RhdHVzTGluZVZpZXcobWVz
c2FnZUVsZW1lbnQsIFN0YXR1c0xpbmVWaWV3LlN0YXR1cy5CYWQsIGZhaWx1cmVEZXNjcmlwdGlv
bnMuam9pbigiLCAiKSwgdW5kZWZpbmVkLCB1cmwpOworICAgICAgICAgICAgICAgICAgICBuZXcg
UG9wb3ZlclRyYWNrZXIoc3RhdHVzLnN0YXR1c0J1YmJsZUVsZW1lbnQsIHRoaXMuX3ByZXNlbnRQ
b3BvdmVyRm9yR2VuZXJpY1Rlc3RGYWlsdXJlcy5iaW5kKHRoaXMpLCBpdGVyYXRpb24pOwogICAg
ICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGls
ZChzdGF0dXMuZWxlbWVudCk7CkBAIC0xMzQsNiArMTE3LDI0IEBAIEJ1aWxkYm90VGVzdGVyUXVl
dWVWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5hcHBlbmRCdWlsZFN0eWxlLmNhbGwo
dGhpcywgdGhpcy5kZWJ1Z1F1ZXVlcywgIkRlYnVnIiwgYXBwZW5kQnVpbGRlclF1ZXVlU3RhdHVz
KTsKICAgICB9LAogCisgICAgX3Rlc3RTdGVwRmFpbHVyZURlc2NyaXB0aW9uOiBmdW5jdGlvbihm
YWlsZWRTdGVwKQorICAgIHsKKyAgICAgICAgaWYgKCFmYWlsZWRTdGVwLmZhaWx1cmVDb3VudCkK
KyAgICAgICAgICAgIHJldHVybiBCdWlsZGJvdEl0ZXJhdGlvbi5UZXN0U3RlcHNbZmFpbGVkU3Rl
cC5uYW1lXSArICIgZmFpbGVkIjsKKyAgICAgICAgaWYgKGZhaWxlZFN0ZXAuZmFpbHVyZUNvdW50
ID09PSAxKQorICAgICAgICAgICAgcmV0dXJuIEJ1aWxkYm90SXRlcmF0aW9uLlRlc3RTdGVwc1tm
YWlsZWRTdGVwLm5hbWVdICsgIiBmYWlsdXJlIjsKKyAgICAgICAgcmV0dXJuIEJ1aWxkYm90SXRl
cmF0aW9uLlRlc3RTdGVwc1tmYWlsZWRTdGVwLm5hbWVdICsgIiBmYWlsdXJlcyI7CisgICAgfSwK
KworICAgIF90ZXN0U3RlcEZhaWx1cmVEZXNjcmlwdGlvbldpdGhDb3VudDogZnVuY3Rpb24oZmFp
bGVkU3RlcCkKKyAgICB7CisgICAgICAgIGlmICghZmFpbGVkU3RlcC5mYWlsdXJlQ291bnQpCisg
ICAgICAgICAgICByZXR1cm4gdGhpcy5fdGVzdFN0ZXBGYWlsdXJlRGVzY3JpcHRpb24oZmFpbGVk
U3RlcCk7CisgICAgICAgIGlmIChmYWlsZWRTdGVwLnRvb01hbnlGYWlsdXJlcykKKyAgICAgICAg
ICAgIHJldHVybiBmYWlsZWRTdGVwLmZhaWx1cmVDb3VudCArICJcdWZlZmZcdWZmMGJcdTAwYTAi
ICsgdGhpcy5fdGVzdFN0ZXBGYWlsdXJlRGVzY3JpcHRpb24oZmFpbGVkU3RlcCk7CisgICAgICAg
IHJldHVybiBmYWlsZWRTdGVwLmZhaWx1cmVDb3VudCArICJcdTAwYTAiICsgdGhpcy5fdGVzdFN0
ZXBGYWlsdXJlRGVzY3JpcHRpb24oZmFpbGVkU3RlcCk7CisgICAgfSwKKwogICAgIF9wb3BvdmVy
Q29udGVudEZvckxheW91dFRlc3RSZWdyZXNzaW9uczogZnVuY3Rpb24oaXRlcmF0aW9uKQogICAg
IHsKICAgICAgICAgdmFyIGhhc1Rlc3RIaXN0b3J5ID0gdHlwZW9mIHRlc3RIaXN0b3J5ICE9PSAi
dW5kZWZpbmVkIjsKQEAgLTI2Myw3ICsyNjQsNyBAQCBCdWlsZGJvdFRlc3RlclF1ZXVlVmlldy5w
cm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0sCiAKLSAgICBfcHJlc2Vu
dFBvcG92ZXJGb3JNdWx0aXBsZUZhaWx1cmVLaW5kczogZnVuY3Rpb24oZWxlbWVudCwgcG9wb3Zl
ciwgaXRlcmF0aW9uKQorICAgIF9wcmVzZW50UG9wb3ZlckZvckdlbmVyaWNUZXN0RmFpbHVyZXM6
IGZ1bmN0aW9uKGVsZW1lbnQsIHBvcG92ZXIsIGl0ZXJhdGlvbikKICAgICB7CiAgICAgICAgIGZ1
bmN0aW9uIGFkZFJlc3VsdEtpbmQobWVzc2FnZSwgdXJsKSB7CiAgICAgICAgICAgICB2YXIgbGlu
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTsKQEAgLTI3NCw1MSArMjc1LDE4IEBAIEJ1
aWxkYm90VGVzdGVyUXVldWVWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGNvbnRlbnQu
YXBwZW5kQ2hpbGQobGluZSk7ICAgICAgICAgICAgCiAgICAgICAgIH0KIAotICAgICAgICB2YXIg
bGF5b3V0VGVzdFJlc3VsdHMgPSBpdGVyYXRpb24ubGF5b3V0VGVzdFJlc3VsdHMgfHwge2ZhaWx1
cmVDb3VudDogMH07Ci0gICAgICAgIHZhciBqYXZhc2NyaXB0VGVzdFJlc3VsdHMgPSBpdGVyYXRp
b24uamF2YXNjcmlwdFRlc3RSZXN1bHRzIHx8IHtmYWlsdXJlQ291bnQ6IDB9OwotICAgICAgICB2
YXIgYXBpVGVzdFJlc3VsdHMgPSBpdGVyYXRpb24uYXBpVGVzdFJlc3VsdHMgfHwge2ZhaWx1cmVD
b3VudDogMH07Ci0gICAgICAgIHZhciBwbGF0Zm9ybUFQSVRlc3RSZXN1bHRzID0gaXRlcmF0aW9u
LnBsYXRmb3JtQVBJVGVzdFJlc3VsdHMgfHwge2ZhaWx1cmVDb3VudDogMH07Ci0gICAgICAgIHZh
ciBweXRob25UZXN0UmVzdWx0cyA9IGl0ZXJhdGlvbi5weXRob25UZXN0UmVzdWx0cyB8fCB7ZmFp
bHVyZUNvdW50OiAwfTsKLSAgICAgICAgdmFyIHBlcmxUZXN0UmVzdWx0cyA9IGl0ZXJhdGlvbi5w
ZXJsVGVzdFJlc3VsdHMgfHwge2Vycm9yT2NjdXJyZWQ6IGZhbHNlfTsKLSAgICAgICAgdmFyIGJp
bmRpbmdUZXN0UmVzdWx0cyA9IGl0ZXJhdGlvbi5iaW5kaW5nVGVzdFJlc3VsdHMgfHwge2Vycm9y
T2NjdXJyZWQ6IGZhbHNlfTsKLQogICAgICAgICB2YXIgY29udGVudCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImRpdiIpOwogICAgICAgICBjb250ZW50LmNsYXNzTmFtZSA9ICJ0ZXN0LXJlc3Vs
dHMtcG9wb3ZlciI7CiAKICAgICAgICAgdGhpcy5fYWRkSXRlcmF0aW9uSGVhZGluZ1RvUG9wb3Zl
cihpdGVyYXRpb24sIGNvbnRlbnQpOwogICAgICAgICB0aGlzLl9hZGREaXZpZGVyVG9Qb3BvdmVy
KGNvbnRlbnQpOwogCi0gICAgICAgIGlmIChsYXlvdXRUZXN0UmVzdWx0cy5mYWlsdXJlQ291bnQp
IHsKLSAgICAgICAgICAgIHZhciBtZXNzYWdlID0gKGxheW91dFRlc3RSZXN1bHRzLnRvb01hbnlG
YWlsdXJlcyA/IGxheW91dFRlc3RSZXN1bHRzLmZhaWx1cmVDb3VudCArICJcdWZmMGIiIDogbGF5
b3V0VGVzdFJlc3VsdHMuZmFpbHVyZUNvdW50KSArICJcdTAwYTAiICsKLSAgICAgICAgICAgICAg
ICAobGF5b3V0VGVzdFJlc3VsdHMuZmFpbHVyZUNvdW50ID09PSAxID8gImxheW91dCB0ZXN0IGZh
aWx1cmUiIDogImxheW91dCB0ZXN0IGZhaWx1cmVzIik7Ci0gICAgICAgICAgICBhZGRSZXN1bHRL
aW5kKG1lc3NhZ2UsIGl0ZXJhdGlvbi5xdWV1ZS5idWlsZGJvdC5sYXlvdXRUZXN0UmVzdWx0c1VS
TEZvckl0ZXJhdGlvbihpdGVyYXRpb24pKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChqYXZh
c2NyaXB0VGVzdFJlc3VsdHMuZmFpbHVyZUNvdW50KSB7Ci0gICAgICAgICAgICB2YXIgbWVzc2Fn
ZSA9IGphdmFzY3JpcHRUZXN0UmVzdWx0cy5mYWlsdXJlQ291bnQgKyAiXHUwMGEwIiArIChqYXZh
c2NyaXB0VGVzdFJlc3VsdHMuZmFpbHVyZUNvdW50ID09PSAxID8gImphdmFzY3JpcHQgdGVzdCBm
YWlsdXJlIiA6ICJqYXZhc2NyaXB0IHRlc3QgZmFpbHVyZXMiKTsKLSAgICAgICAgICAgIGFkZFJl
c3VsdEtpbmQobWVzc2FnZSwgaXRlcmF0aW9uLnF1ZXVlLmJ1aWxkYm90LmphdmFzY3JpcHRUZXN0
UmVzdWx0c1VSTEZvckl0ZXJhdGlvbihpdGVyYXRpb24pKTsKLSAgICAgICAgfQotCi0gICAgICAg
IGlmIChhcGlUZXN0UmVzdWx0cy5mYWlsdXJlQ291bnQpIHsKLSAgICAgICAgICAgIHZhciBtZXNz
YWdlID0gYXBpVGVzdFJlc3VsdHMuZmFpbHVyZUNvdW50ICsgIlx1MDBhMCIgKyAoYXBpVGVzdFJl
c3VsdHMuZmFpbHVyZUNvdW50ID09PSAxID8gImFwaSB0ZXN0IGZhaWx1cmUiIDogImFwaSB0ZXN0
IGZhaWx1cmVzIik7Ci0gICAgICAgICAgICBhZGRSZXN1bHRLaW5kKG1lc3NhZ2UsIGl0ZXJhdGlv
bi5xdWV1ZS5idWlsZGJvdC5hcGlUZXN0UmVzdWx0c1VSTEZvckl0ZXJhdGlvbihpdGVyYXRpb24p
KTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChwbGF0Zm9ybUFQSVRlc3RSZXN1bHRzLmZhaWx1
cmVDb3VudCkgewotICAgICAgICAgICAgdmFyIG1lc3NhZ2UgPSBwbGF0Zm9ybUFQSVRlc3RSZXN1
bHRzLmZhaWx1cmVDb3VudCArICJcdTAwYTAiICsgKHBsYXRmb3JtQVBJVGVzdFJlc3VsdHMuZmFp
bHVyZUNvdW50ID09PSAxID8gInBsYXRmb3JtIGFwaSB0ZXN0IGZhaWx1cmUiIDogInBsYXRmb3Jt
IGFwaSB0ZXN0IGZhaWx1cmVzIik7Ci0gICAgICAgICAgICBhZGRSZXN1bHRLaW5kKG1lc3NhZ2Us
IGl0ZXJhdGlvbi5xdWV1ZS5idWlsZGJvdC5wbGF0Zm9ybUFQSVRlc3RSZXN1bHRzVVJMRm9ySXRl
cmF0aW9uKGl0ZXJhdGlvbikpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHB5dGhvblRlc3RS
ZXN1bHRzLmZhaWx1cmVDb3VudCkgewotICAgICAgICAgICAgdmFyIG1lc3NhZ2UgPSBweXRob25U
ZXN0UmVzdWx0cy5mYWlsdXJlQ291bnQgKyAiXHUwMGEwIiArIChweXRob25UZXN0UmVzdWx0cy5m
YWlsdXJlQ291bnQgPT09IDEgPyAid2Via2l0cHkgdGVzdCBmYWlsdXJlIiA6ICJ3ZWJraXRweSB0
ZXN0IGZhaWx1cmVzIik7Ci0gICAgICAgICAgICBhZGRSZXN1bHRLaW5kKG1lc3NhZ2UsIGl0ZXJh
dGlvbi5xdWV1ZS5idWlsZGJvdC53ZWJraXRweVRlc3RSZXN1bHRzVVJMRm9ySXRlcmF0aW9uKGl0
ZXJhdGlvbikpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHBlcmxUZXN0UmVzdWx0cy5lcnJv
ck9jY3VycmVkKQotICAgICAgICAgICAgYWRkUmVzdWx0S2luZCgid2Via2l0cGVybCB0ZXN0cyBm
YWlsZWQiLCBpdGVyYXRpb24ucXVldWUuYnVpbGRib3Qud2Via2l0cGVybFRlc3RSZXN1bHRzVVJM
Rm9ySXRlcmF0aW9uKGl0ZXJhdGlvbikpOwotCi0gICAgICAgIGlmIChiaW5kaW5nVGVzdFJlc3Vs
dHMuZXJyb3JPY2N1cnJlZCkKLSAgICAgICAgICAgIGFkZFJlc3VsdEtpbmQoImJpbmRpbmdzIHRl
c3RzIGZhaWxlZCIsIGl0ZXJhdGlvbi5xdWV1ZS5idWlsZGJvdC5iaW5kaW5nc1Rlc3RSZXN1bHRz
VVJMRm9ySXRlcmF0aW9uKGl0ZXJhdGlvbikpOworICAgICAgICBpdGVyYXRpb24uZmFpbGVkVGVz
dFN0ZXBzLmZvckVhY2goZnVuY3Rpb24oZmFpbGVkU3RlcCkgeworICAgICAgICAgICAgaWYgKGZh
aWxlZFN0ZXAubmFtZSA9PT0gImxheW91dC10ZXN0IikKKyAgICAgICAgICAgICAgICBhZGRSZXN1
bHRLaW5kKHRoaXMuX3Rlc3RTdGVwRmFpbHVyZURlc2NyaXB0aW9uV2l0aENvdW50KGZhaWxlZFN0
ZXApLCBpdGVyYXRpb24ucXVldWUuYnVpbGRib3QubGF5b3V0VGVzdFJlc3VsdHNVUkxGb3JJdGVy
YXRpb24oaXRlcmF0aW9uKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgYWRk
UmVzdWx0S2luZCh0aGlzLl90ZXN0U3RlcEZhaWx1cmVEZXNjcmlwdGlvbldpdGhDb3VudChmYWls
ZWRTdGVwKSwgZmFpbGVkU3RlcC5VUkwpOworICAgICAgICB9LCB0aGlzKTsKIAogICAgICAgICB2
YXIgcmVjdCA9IERhc2hib2FyZC5SZWN0LnJlY3RGcm9tQ2xpZW50UmVjdChlbGVtZW50LmdldEJv
dW5kaW5nQ2xpZW50UmVjdCgpKTsKICAgICAgICAgcG9wb3Zlci5jb250ZW50ID0gY29udGVudDsK
</data>
<flag name="review"
          id="272656"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>