<?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>83541</bug_id>
          
          <creation_ts>2012-04-09 19:53:09 -0700</creation_ts>
          <short_desc>Add a chromeless view to the individual tests view</short_desc>
          <delta_ts>2012-04-10 15:59:59 -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>New Bugs</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="Ojan Vafai">ojan</reporter>
          <assigned_to name="Ojan Vafai">ojan</assigned_to>
          <cc>abarth</cc>
    
    <cc>dbates</cc>
    
    <cc>eric</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>598923</commentid>
    <comment_count>0</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-04-09 19:53:09 -0700</bug_when>
    <thetext>Add a chromeless view to the individual tests view</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598925</commentid>
    <comment_count>1</comment_count>
      <attachid>136381</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-04-09 19:53:51 -0700</bug_when>
    <thetext>Created attachment 136381
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598939</commentid>
    <comment_count>2</comment_count>
      <attachid>136381</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2012-04-09 20:07:21 -0700</bug_when>
    <thetext>Comment on attachment 136381
Patch

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

This patch doesn&apos;t look correct.

&gt; Tools/TestResultServer/static-dashboards/flakiness_dashboard.html:1819
&gt;          master = builderMaster(testResults[0].builder);

Did you intend to make the variable master global? Because this patch removed the declaration &quot;var master&quot; (above) this line will create a global variable called master. From looking at the names of other global variables in declared in this file, a global variable should have a &quot;g_&quot; prefix.

&gt; Tools/TestResultServer/static-dashboards/flakiness_dashboard.html:1840
&gt; +    var master;

This variable is unused and masks the global variable of the same name defined in htmlForIndividulTestOnAllBuilders() (above). Hence, the equality check &quot;master == WEBKIT_BUILDER_MASTER&quot; (in the original code; not part of this patch) will always evaluate to false, since |master| === undefined.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598944</commentid>
    <comment_count>3</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2012-04-09 20:16:13 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; &gt; Tools/TestResultServer/static-dashboards/flakiness_dashboard.html:1840
&gt; &gt; +    var master;
&gt; 
&gt; This variable is unused and masks the global variable ....

Disregard the &quot;This variable is unused&quot; part of this sentence.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599476</commentid>
    <comment_count>4</comment_count>
      <attachid>136503</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-04-10 12:13:29 -0700</bug_when>
    <thetext>Created attachment 136503
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599478</commentid>
    <comment_count>5</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-04-10 12:15:21 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 136381 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=136381&amp;action=review
&gt; 
&gt; This patch doesn&apos;t look correct.
&gt; 
&gt; &gt; Tools/TestResultServer/static-dashboards/flakiness_dashboard.html:1819
&gt; &gt;          master = builderMaster(testResults[0].builder);
&gt; 
&gt; Did you intend to make the variable master global? Because this patch removed the declaration &quot;var master&quot; (above) this line will create a global variable called master. From looking at the names of other global variables in declared in this file, a global variable should have a &quot;g_&quot; prefix.

Whoops. No. I just missed this. Inlined the variable and added test cases. Thanks for catching this.

Also, I made the postMessage code a little more robust.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599740</commentid>
    <comment_count>6</comment_count>
      <attachid>136503</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2012-04-10 15:46:24 -0700</bug_when>
    <thetext>Comment on attachment 136503
Patch

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

Thanks Ojan for updating the patch. I noticed some minor issues.

&gt; Tools/ChangeLog:13
&gt; +        (testHtmlForIndividulTestOnAllBuilders):
&gt; +        (testHtmlForIndividulTestOnAllBuildersWithChrome):

This change log needs to be updated. In particular, these functions have been renamed to testHtmlForIndividualTestOnAllBuilders and testHtmlForIndividualTestOnAllBuildersWithChrome, respectively.

&gt; Tools/TestResultServer/static-dashboards/flakiness_dashboard.html:1855
&gt; +        if (testResults &amp;&amp; builderMaster(testResults[0].builder) == WEBKIT_BUILDER_MASTER) {

Can testResults be an empty list? Is checking for isLayoutTestResults() sufficient? Previously we checked for a non-zero value for testResults.length before accessing testResults[0].

&gt; Tools/TestResultServer/static-dashboards/flakiness_dashboard.html:2405
&gt; +    for (var i = 0; i &lt; tests.length; i++) {
&gt; +        var test = tests[i];
&gt; +        var html = g_currentState.showChrome ? htmlForIndividualTestOnAllBuildersWithChrome(test) : htmlForIndividualTestOnAllBuilders(test)
&gt; +        testsHTML.push(html);
&gt; +    }

As far as I can tell the g_currentState.showChrome won&apos;t change inside this loop. And we use the value of g_currentState.showChrome to determine which function to call. I suggest hoisting this code outside of the for-loop and inlining the definition of test such that this for-loop has the form:

var htmlForTestFunction = g_currentState.showChrome ? htmlForIndividualTestOnAllBuildersWithChrome : htmlForIndividualTestOnAllBuilders;
for (var i = 0; i &lt; tests.length; i++)
    testsHTML.push(htmlForTestFunction(tests[i]));</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599743</commentid>
    <comment_count>7</comment_count>
      <attachid>136503</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-04-10 15:47:29 -0700</bug_when>
    <thetext>Comment on attachment 136503
Patch

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

&gt; Tools/TestResultServer/static-dashboards/flakiness_dashboard.html:2608
&gt; +        event.source.postMessage(&apos;{&quot;height&quot;:&apos; + document.documentElement.offsetHeight + &apos;}&apos;, &apos;*&apos;);

Can we use JSON.stringify rather than building up JSON strings with string concatenation?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599752</commentid>
    <comment_count>8</comment_count>
      <attachid>136503</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-04-10 15:56:31 -0700</bug_when>
    <thetext>Comment on attachment 136503
Patch

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

&gt;&gt; Tools/TestResultServer/static-dashboards/flakiness_dashboard.html:1855
&gt;&gt; +        if (testResults &amp;&amp; builderMaster(testResults[0].builder) == WEBKIT_BUILDER_MASTER) {
&gt; 
&gt; Can testResults be an empty list? Is checking for isLayoutTestResults() sufficient? Previously we checked for a non-zero value for testResults.length before accessing testResults[0].

Good eye. The old code was wrong. The list cannot be empty. I&apos;ll changed the other code to remove the length check.

&gt;&gt; Tools/TestResultServer/static-dashboards/flakiness_dashboard.html:2405
&gt;&gt; +    }
&gt; 
&gt; As far as I can tell the g_currentState.showChrome won&apos;t change inside this loop. And we use the value of g_currentState.showChrome to determine which function to call. I suggest hoisting this code outside of the for-loop and inlining the definition of test such that this for-loop has the form:
&gt; 
&gt; var htmlForTestFunction = g_currentState.showChrome ? htmlForIndividualTestOnAllBuildersWithChrome : htmlForIndividualTestOnAllBuilders;
&gt; for (var i = 0; i &lt; tests.length; i++)
&gt;     testsHTML.push(htmlForTestFunction(tests[i]));

Good suggestion.

&gt;&gt; Tools/TestResultServer/static-dashboards/flakiness_dashboard.html:2608
&gt;&gt; +        event.source.postMessage(&apos;{&quot;height&quot;:&apos; + document.documentElement.offsetHeight + &apos;}&apos;, &apos;*&apos;);
&gt; 
&gt; Can we use JSON.stringify rather than building up JSON strings with string concatenation?

Good idea.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599756</commentid>
    <comment_count>9</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-04-10 15:59:59 -0700</bug_when>
    <thetext>Committed r113787: &lt;http://trac.webkit.org/changeset/113787&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136381</attachid>
            <date>2012-04-09 19:53:51 -0700</date>
            <delta_ts>2012-04-10 12:13:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83541-20120409195350.patch</filename>
            <type>text/plain</type>
            <size>9210</size>
            <attacher name="Ojan Vafai">ojan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzNjI4CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYzE3YWY2YjRiMGQ0MmFhZjFmYjYwMzM5NmNhNGQ1ZDZm
ZDBiM2QwMi4uMWZmZGIwZDQzYjQwNzlhY2M2ZjNhMWM3MTJhNTdmYjQzYTIwYTFkZSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIw
IEBACisyMDEyLTA0LTA5ICBPamFuIFZhZmFpICA8b2phbkBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgQWRkIGEgY2hyb21lbGVzcyB2aWV3IHRvIHRoZSBpbmRpdmlkdWFsIHRlc3RzIHZpZXcKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzNTQxCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyB0aGUg
dmlldyBzdWl0YWJsZSB0byBpbmxpbmluZyBpbiBvdGhlciBjb250ZXh0cyAoZS5nLiBnYXJkZW4t
by1tYXRpYykuCisKKyAgICAgICAgKiBUZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRz
L2ZsYWtpbmVzc19kYXNoYm9hcmQuaHRtbDoKKyAgICAgICAgKiBUZXN0UmVzdWx0U2VydmVyL3N0
YXRpYy1kYXNoYm9hcmRzL2ZsYWtpbmVzc19kYXNoYm9hcmRfdGVzdHMuanM6CisgICAgICAgICh0
ZXN0SHRtbEZvckluZGl2aWR1bFRlc3RPbkFsbEJ1aWxkZXJzKToKKyAgICAgICAgKHRlc3RIdG1s
Rm9ySW5kaXZpZHVsVGVzdE9uQWxsQnVpbGRlcnNXaXRoQ2hyb21lKToKKyAgICAgICAgKHRlc3RI
dG1sRm9ySW5kaXZpZHVhbFRlc3RzKToKKyAgICAgICAgKGh0bWxFc2NhcGUpOgorICAgICAgICAo
cnVuVGVzdHMpOgorCiAyMDEyLTA0LTA5ICBEYW5hIEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIE1hcmsgbXlzZWxmIGFzIGEgY29tbWl0dGVyCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2ZsYWtpbmVzc19kYXNoYm9h
cmQuaHRtbCBiL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvZmxha2lu
ZXNzX2Rhc2hib2FyZC5odG1sCmluZGV4IDY5N2M2ZDkyMDc5MDc4NDM3MDBlNzhmNDQ5Y2Y1NDFj
YTdjMDljMWYuLmQyOTkzZDBmNDEwNjIzMDk2MTkyYzVlYmQwZDU4ZDVkYjAzZWU4ZGYgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvZmxha2luZXNz
X2Rhc2hib2FyZC5odG1sCisrKyBiL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hi
b2FyZHMvZmxha2luZXNzX2Rhc2hib2FyZC5odG1sCkBAIC00MzMsNiArNDMzLDcgQEAgZnVuY3Rp
b24gaGFuZGxlVmFsaWRIYXNoUGFyYW1ldGVyKGtleSwgdmFsdWUpCiAgICAgICAgICAgICB9KTsK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAKKyAgICBjYXNlICdzaG93Q2hyb21lJzoKICAgICBjYXNl
ICdzaG93Q29ycmVjdEV4cGVjdGF0aW9ucyc6CiAgICAgY2FzZSAnc2hvd1dyb25nRXhwZWN0YXRp
b25zJzoKICAgICBjYXNlICdzaG93RXhwZWN0YXRpb25zJzoKQEAgLTQ1OSw2ICs0NjAsNyBAQCBn
X2RlZmF1bHREYXNoYm9hcmRTcGVjaWZpY1N0YXRlVmFsdWVzID0gewogICAgIHNob3dGbGFreTog
dHJ1ZSwKICAgICBzaG93TGFyZ2VFeHBlY3RhdGlvbnM6IGZhbHNlLAogICAgIGxlZ2FjeUV4cGVj
dGF0aW9uc1NlbWFudGljczogdHJ1ZSwKKyAgICBzaG93Q2hyb21lOiB0cnVlLAogICAgIHNob3dD
b3JyZWN0RXhwZWN0YXRpb25zOiAhaXNMYXlvdXRUZXN0UmVzdWx0cygpLAogICAgIHNob3dXcm9u
Z0V4cGVjdGF0aW9uczogIWlzTGF5b3V0VGVzdFJlc3VsdHMoKSwKICAgICBzaG93V29udEZpeFNr
aXA6ICFpc0xheW91dFRlc3RSZXN1bHRzKCksCkBAIC0xNzM3LDcgKzE3MzksNyBAQCBmdW5jdGlv
biBzaG93VXBkYXRlSW5mb0ZvclRlc3QodGVzdHNOZWVkaW5nVXBkYXRlLCBrZXlzKQogICAgIGRv
Y3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY2hlY2tib3hlcyk7CiAKICAgICB2YXIgZGl2ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Ci0gICAgZGl2LmlubmVySFRNTCA9IGh0bWxGb3JJ
bmRpdmlkdWxUZXN0T25BbGxCdWlsZGVycyh0ZXN0KTsKKyAgICBkaXYuaW5uZXJIVE1MID0gaHRt
bEZvckluZGl2aWR1bFRlc3RPbkFsbEJ1aWxkZXJzV2l0aENocm9tZSh0ZXN0KTsKICAgICBkb2N1
bWVudC5ib2R5LmFwcGVuZENoaWxkKGRpdik7CiAgICAgYXBwZW5kRXhwZWN0YXRpb25zKCk7CiB9
CkBAIC0xODEyLDE2ICsxODE0LDcgQEAgZnVuY3Rpb24gaHRtbEZvckluZGl2aWR1bFRlc3RPbkFs
bEJ1aWxkZXJzKHRlc3QpCiAgICAgcHJvY2Vzc1Rlc3RSdW5zRm9yQWxsQnVpbGRlcnMoKTsKIAog
ICAgIHZhciB0ZXN0UmVzdWx0cyA9IGdfdGVzdFRvUmVzdWx0c01hcFt0ZXN0XTsKLSAgICB2YXIg
bWFzdGVyOwogICAgIHZhciBodG1sID0gJyc7Ci0gICAgaWYgKGlzTGF5b3V0VGVzdFJlc3VsdHMo
KSkgewotICAgICAgICB2YXIgc3VpdGUgPSBsb29rdXBWaXJ0dWFsVGVzdFN1aXRlKHRlc3QpOwot
ICAgICAgICB2YXIgYmFzZSA9IHN1aXRlID8gYmFzZVRlc3QodGVzdCwgc3VpdGUpIDogdGVzdDsK
LSAgICAgICAgdmFyIHRyYWNVUkwgPSBURVNUX1VSTF9CQVNFX1BBVEhfVFJBQyArIGJhc2U7Ci0g
ICAgICAgIGh0bWwgKz0gJzxoMj4nICsgbGlua0hUTUxUb09wZW5XaW5kb3codHJhY1VSTCwgdGVz
dCkgKyAnPC9oMj4nOwotICAgIH0gZWxzZQotICAgICAgICBodG1sICs9ICc8aDI+JyArIHRlc3Qg
KyAnPC9oMj4nOwotCiAgICAgaWYgKHRlc3RSZXN1bHRzICYmIHRlc3RSZXN1bHRzLmxlbmd0aCkg
ewogICAgICAgICBtYXN0ZXIgPSBidWlsZGVyTWFzdGVyKHRlc3RSZXN1bHRzWzBdLmJ1aWxkZXIp
OwogCkBAIC0xODM2LDYgKzE4MjksMjUgQEAgZnVuY3Rpb24gaHRtbEZvckluZGl2aWR1bFRlc3RP
bkFsbEJ1aWxkZXJzKHRlc3QpCiAgICAgICAgIGh0bWwgKz0gJzxkaXYgY2xhc3M9Im5vdC1mb3Vu
ZCI+VGVzdCBub3QgZm91bmQuIEVpdGhlciBpdCBkb2VzICcgKwogICAgICAgICAgICAgJ25vdCBl
eGlzdCwgaXMgc2tpcHBlZCBvciBwYXNzZXMgb24gYWxsIHBsYXRmb3Jtcy48L2Rpdj4nOwogICAg
IH0KKyAgICByZXR1cm4gaHRtbDsKK30KKworZnVuY3Rpb24gaHRtbEZvckluZGl2aWR1bFRlc3RP
bkFsbEJ1aWxkZXJzV2l0aENocm9tZSh0ZXN0KQoreworICAgIHByb2Nlc3NUZXN0UnVuc0ZvckFs
bEJ1aWxkZXJzKCk7CisKKyAgICB2YXIgdGVzdFJlc3VsdHMgPSBnX3Rlc3RUb1Jlc3VsdHNNYXBb
dGVzdF07CisgICAgdmFyIG1hc3RlcjsKKyAgICB2YXIgaHRtbCA9ICcnOworICAgIGlmIChpc0xh
eW91dFRlc3RSZXN1bHRzKCkpIHsKKyAgICAgICAgdmFyIHN1aXRlID0gbG9va3VwVmlydHVhbFRl
c3RTdWl0ZSh0ZXN0KTsKKyAgICAgICAgdmFyIGJhc2UgPSBzdWl0ZSA/IGJhc2VUZXN0KHRlc3Qs
IHN1aXRlKSA6IHRlc3Q7CisgICAgICAgIHZhciB0cmFjVVJMID0gVEVTVF9VUkxfQkFTRV9QQVRI
X1RSQUMgKyBiYXNlOworICAgICAgICBodG1sICs9ICc8aDI+JyArIGxpbmtIVE1MVG9PcGVuV2lu
ZG93KHRyYWNVUkwsIHRlc3QpICsgJzwvaDI+JzsKKyAgICB9IGVsc2UKKyAgICAgICAgaHRtbCAr
PSAnPGgyPicgKyB0ZXN0ICsgJzwvaDI+JzsKKworICAgIGh0bWwgKz0gaHRtbEZvckluZGl2aWR1
bFRlc3RPbkFsbEJ1aWxkZXJzKHRlc3QpOwogCiAgICAgaHRtbCArPSAnPGRpdiBjbGFzcz1leHBl
Y3RhdGlvbnMgdGVzdD0nICsgdGVzdCArICc+PGRpdj4nICsKICAgICAgICAgbGlua0hUTUxUb1Rv
Z2dsZVN0YXRlKCdzaG93RXhwZWN0YXRpb25zJywgJ3Jlc3VsdHMnKQpAQCAtMjM2NCwxMSArMjM3
NiwxMyBAQCBmdW5jdGlvbiBoaWRlTG9hZGluZ1VJKCkKIGZ1bmN0aW9uIGdlbmVyYXRlUGFnZUZv
ckluZGl2aWR1YWxUZXN0cyh0ZXN0cykKIHsKICAgICBjb25zb2xlLmxvZygnTnVtYmVyIG9mIHRl
c3RzOiAnICsgdGVzdHMubGVuZ3RoKTsKLSAgICBhcHBlbmRIVE1MKGh0bWxGb3JOYXZCYXIoKSk7
CisgICAgaWYgKGdfY3VycmVudFN0YXRlLnNob3dDaHJvbWUpCisgICAgICAgIGFwcGVuZEhUTUwo
aHRtbEZvck5hdkJhcigpKTsKICAgICBwZXJmb3JtQ2h1bmtlZEFjdGlvbih0ZXN0cywgZnVuY3Rp
b24oY2h1bmspIHsKICAgICAgICAgYXBwZW5kSFRNTChodG1sRm9ySW5kaXZpZHVhbFRlc3RzKGNo
dW5rKSk7CiAgICAgfSwgYXBwZW5kRXhwZWN0YXRpb25zLCA1MDApOwotICAgICQoJ3Rlc3RzLWlu
cHV0JykudmFsdWUgPSBnX2N1cnJlbnRTdGF0ZS50ZXN0czsKKyAgICBpZiAoZ19jdXJyZW50U3Rh
dGUuc2hvd0Nocm9tZSkKKyAgICAgICAgJCgndGVzdHMtaW5wdXQnKS52YWx1ZSA9IGdfY3VycmVu
dFN0YXRlLnRlc3RzOwogfQogCiBmdW5jdGlvbiBwZXJmb3JtQ2h1bmtlZEFjdGlvbih0ZXN0cywg
aGFuZGxlQ2h1bmssIG9uQ29tcGxldGUsIHRpbWVvdXQsIG9wdF9pbmRleCkgewpAQCAtMjM4Nyw4
ICsyNDAxLDExIEBAIGZ1bmN0aW9uIHBlcmZvcm1DaHVua2VkQWN0aW9uKHRlc3RzLCBoYW5kbGVD
aHVuaywgb25Db21wbGV0ZSwgdGltZW91dCwgb3B0X2luZGV4CiBmdW5jdGlvbiBodG1sRm9ySW5k
aXZpZHVhbFRlc3RzKHRlc3RzKQogewogICAgIHZhciB0ZXN0c0hUTUwgPSBbXTsKLSAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IHRlc3RzLmxlbmd0aDsgaSsrKQotICAgICAgICB0ZXN0c0hUTUwucHVz
aChodG1sRm9ySW5kaXZpZHVsVGVzdE9uQWxsQnVpbGRlcnModGVzdHNbaV0pKTsKKyAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IHRlc3RzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgIHZhciB0ZXN0ID0g
dGVzdHNbaV07CisgICAgICAgIHZhciBodG1sID0gZ19jdXJyZW50U3RhdGUuc2hvd0Nocm9tZSA/
IGh0bWxGb3JJbmRpdmlkdWxUZXN0T25BbGxCdWlsZGVyc1dpdGhDaHJvbWUodGVzdCkgOiBodG1s
Rm9ySW5kaXZpZHVsVGVzdE9uQWxsQnVpbGRlcnModGVzdCkKKyAgICAgICAgdGVzdHNIVE1MLnB1
c2goaHRtbCk7CisgICAgfQogICAgIHJldHVybiB0ZXN0c0hUTUwuam9pbignPGhyPicpOwogfQog
CkBAIC0yNDc0LDYgKzI0OTEsNyBAQCBmdW5jdGlvbiBnZW5lcmF0ZVBhZ2VGb3JCdWlsZGVyKGJ1
aWxkZXJOYW1lKQogdmFyIFZBTElEX0tFWVNfRk9SX0NST1NTX0JVSUxERVJfVklFVyA9IHsKICAg
ICB0ZXN0czogMSwKICAgICByZXN1bHQ6IDEsCisgICAgc2hvd0Nocm9tZTogMSwKICAgICBzaG93
RXhwZWN0YXRpb25zOiAxLAogICAgIHNob3dMYXJnZUV4cGVjdGF0aW9uczogMSwKICAgICBsZWdh
Y3lFeHBlY3RhdGlvbnNTZW1hbnRpY3M6IDEsCkBAIC0yNTgxLDYgKzI1OTksMTQgQEAgZnVuY3Rp
b24gaHRtbEZvclNsb3dUaW1lcyhtaW5UaW1lKQogICAgICAgICBtaW5UaW1lICsgJyBzZWNvbmRz
ID09IFNMT1c8L2xpPjwvdWw+JzsKIH0KIAord2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21lc3Nh
Z2UnLCBmdW5jdGlvbihlKSB7CisgICAgaWYgKGUuZGF0YSA9PSAncXVlcnlDb250ZW50SGVpZ2h0
JykgeworICAgICAgICBlLnNvdXJjZS5wb3N0TWVzc2FnZSgneyJoZWlnaHQiOicgKyBkb2N1bWVu
dC5kb2N1bWVudEVsZW1lbnQub2Zmc2V0SGVpZ2h0ICsgJ30nLCBlLm9yaWdpbikKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICBjb25zb2xlLmxvZygnVW5rbm93biBwb3N0TWVzc2FnZSBxdWVy
eTogJyArIGUuZGF0YSk7Cit9KQorCiBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3du
JywgZnVuY3Rpb24oZSkgewogICAgIGlmIChlLmtleUlkZW50aWZpZXIgPT0gJ1UrMDAzRicgfHwg
ZS5rZXlJZGVudGlmaWVyID09ICdVKzAwQkYnKSB7CiAgICAgICAgIC8vIFdlYktpdCBNQUMgcmV0
dXJzbiAzRi4gV2ViS2l0IFdJTiByZXR1cm5zIEJGLiBUaGlzIGlzIGEgYnVnIQpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9mbGFraW5lc3NfZGFz
aGJvYXJkX3Rlc3RzLmpzIGIvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJk
cy9mbGFraW5lc3NfZGFzaGJvYXJkX3Rlc3RzLmpzCmluZGV4IDg0OTQ3MDFlMDk0NzI1YjM3ZmQx
YTdjNzYyYWZkNmUwMjBhZDFkZWYuLjllMGRjZDQwMGM5ZWQ1OTM2MjQxYjIxMzlhY2EyYjA5ZWZh
N2E1NmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2Fy
ZHMvZmxha2luZXNzX2Rhc2hib2FyZF90ZXN0cy5qcworKysgYi9Ub29scy9UZXN0UmVzdWx0U2Vy
dmVyL3N0YXRpYy1kYXNoYm9hcmRzL2ZsYWtpbmVzc19kYXNoYm9hcmRfdGVzdHMuanMKQEAgLTM4
MCw2ICszODAsMzggQEAgZnVuY3Rpb24gdGVzdEh0bWxGb3JUZXN0VHlwZVN3aXRjaGVyR3JvdXAo
KQogICAgIGFzc2VydEVxdWFscyhncm91cC5jaGlsZHJlbi5sZW5ndGgsIDMpOwogfQogCitmdW5j
dGlvbiB0ZXN0SHRtbEZvckluZGl2aWR1bFRlc3RPbkFsbEJ1aWxkZXJzKCkKK3sKKyAgICBhc3Nl
cnRFcXVhbHMoaHRtbEZvckluZGl2aWR1bFRlc3RPbkFsbEJ1aWxkZXJzKCdmb28vbm9uZXhpc3Rh
bnQuaHRtbCcpLCAnPGRpdiBjbGFzcz0ibm90LWZvdW5kIj5UZXN0IG5vdCBmb3VuZC4gRWl0aGVy
IGl0IGRvZXMgbm90IGV4aXN0LCBpcyBza2lwcGVkIG9yIHBhc3NlcyBvbiBhbGwgcGxhdGZvcm1z
LjwvZGl2PicpOworfQorCitmdW5jdGlvbiB0ZXN0SHRtbEZvckluZGl2aWR1bFRlc3RPbkFsbEJ1
aWxkZXJzV2l0aENocm9tZSgpCit7CisgICAgYXNzZXJ0RXF1YWxzKGh0bWxGb3JJbmRpdmlkdWxU
ZXN0T25BbGxCdWlsZGVyc1dpdGhDaHJvbWUoJ2Zvby9ub25leGlzdGFudC5odG1sJyksCisgICAg
ICAgICc8aDI+PGEgaHJlZj0iaHR0cDovL3RyYWMud2Via2l0Lm9yZy9icm93c2VyL3RydW5rL0xh
eW91dFRlc3RzL2Zvby9ub25leGlzdGFudC5odG1sIiB0YXJnZXQ9Il9ibGFuayI+Zm9vL25vbmV4
aXN0YW50Lmh0bWw8L2E+PC9oMj4nICsKKyAgICAgICAgJzxkaXYgY2xhc3M9Im5vdC1mb3VuZCI+
VGVzdCBub3QgZm91bmQuIEVpdGhlciBpdCBkb2VzIG5vdCBleGlzdCwgaXMgc2tpcHBlZCBvciBw
YXNzZXMgb24gYWxsIHBsYXRmb3Jtcy48L2Rpdj4nICsKKyAgICAgICAgJzxkaXYgY2xhc3M9ZXhw
ZWN0YXRpb25zIHRlc3Q9Zm9vL25vbmV4aXN0YW50Lmh0bWw+JyArCisgICAgICAgICAgICAnPGRp
dj4nICsKKyAgICAgICAgICAgICAgICAnPHNwYW4gY2xhc3M9bGluayBvbmNsaWNrPSJzZXRRdWVy
eVBhcmFtZXRlcihcJ3Nob3dFeHBlY3RhdGlvbnNcJywgdHJ1ZSkiPlNob3cgcmVzdWx0czwvc3Bh
bj4gfCAnICsKKyAgICAgICAgICAgICAgICAnPHNwYW4gY2xhc3M9bGluayBvbmNsaWNrPSJzZXRR
dWVyeVBhcmFtZXRlcihcJ3Nob3dMYXJnZUV4cGVjdGF0aW9uc1wnLCB0cnVlKSI+U2hvdyBsYXJn
ZSB0aHVtYm5haWxzPC9zcGFuPiB8ICcgKworICAgICAgICAgICAgICAgICc8Yj5Pbmx5IHNob3dz
IGFjdHVhbCByZXN1bHRzL2RpZmZzIGZyb20gdGhlIG1vc3QgcmVjZW50ICpmYWlsdXJlKiBvbiBl
YWNoIGJvdC48L2I+JyArCisgICAgICAgICAgICAnPC9kaXY+JyArCisgICAgICAgICc8L2Rpdj4n
KTsKK30KKworZnVuY3Rpb24gdGVzdEh0bWxGb3JJbmRpdmlkdWFsVGVzdHMoKQoreworICAgIGdf
Y3VycmVudFN0YXRlLnNob3dDaHJvbWUgPSBmYWxzZTsKKyAgICB2YXIgdGVzdDEgPSAnZm9vL25v
bmV4aXN0YW50Lmh0bWwnOworICAgIHZhciB0ZXN0MiA9ICdiYXIvbm9uZXhpc3RhbnQuaHRtbCc7
CisgICAgdmFyIHRlc3RzID0gW3Rlc3QxLCB0ZXN0Ml07CisgICAgYXNzZXJ0RXF1YWxzKGh0bWxG
b3JJbmRpdmlkdWFsVGVzdHModGVzdHMpLCBodG1sRm9ySW5kaXZpZHVsVGVzdE9uQWxsQnVpbGRl
cnModGVzdDEpICsgJzxocj4nICsgaHRtbEZvckluZGl2aWR1bFRlc3RPbkFsbEJ1aWxkZXJzKHRl
c3QyKSk7CisKKyAgICBnX2N1cnJlbnRTdGF0ZS5zaG93Q2hyb21lID0gdHJ1ZTsKKyAgICBhc3Nl
cnRFcXVhbHMoaHRtbEZvckluZGl2aWR1YWxUZXN0cyh0ZXN0cyksIGh0bWxGb3JJbmRpdmlkdWxU
ZXN0T25BbGxCdWlsZGVyc1dpdGhDaHJvbWUodGVzdDEpICsgJzxocj4nICsgaHRtbEZvckluZGl2
aWR1bFRlc3RPbkFsbEJ1aWxkZXJzV2l0aENocm9tZSh0ZXN0MikpOworfQorCisKIGZ1bmN0aW9u
IHRlc3RMb29rdXBWaXJ0dWFsVGVzdFN1aXRlKCkKIHsKICAgICBhc3NlcnRFcXVhbHMobG9va3Vw
VmlydHVhbFRlc3RTdWl0ZSgnZmFzdC9jYW52YXMvZm9vLmh0bWwnKSwgJycpOwpAQCAtNTUzLDEw
ICs1ODUsMTYgQEAgZnVuY3Rpb24gdGVzdEFkZEJ1aWxkZXJMb2FkRXJyb3JzKCkKICAgICBnX2J1
aWxkZXJzVGhhdEZhaWxlZFRvTG9hZCA9IFsnYnVpbGRlcjEnLCAnYnVpbGRlcjInXTsKICAgICBn
X3N0YWxlQnVpbGRlcnMgPSBbJ3N0YWxlQnVpbGRlcjEnXTsKICAgICBhZGRCdWlsZGVyTG9hZEVy
cm9ycygpOwotICAgIGNvbnNvbGUubG9nKGdfZXJyb3JNZXNzYWdlcyk7CiAgICAgYXNzZXJ0RXF1
YWxzKGdfZXJyb3JNZXNzYWdlcywgJ0VSUk9SOiBGYWlsZWQgdG8gZ2V0IGRhdGEgZnJvbSBidWls
ZGVyMSxidWlsZGVyMi48YnI+RVJST1I6IERhdGEgZnJvbSBzdGFsZUJ1aWxkZXIxIGlzIG1vcmUg
dGhhbiAxIGRheSBzdGFsZS48YnI+Jyk7CiB9CiAKK2Z1bmN0aW9uIGh0bWxFc2NhcGUoc3RyaW5n
KQoreworICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICBk
aXYudGV4dENvbnRlbnQgPSBzdHJpbmc7CisgICAgcmV0dXJuIGRpdi5pbm5lckhUTUw7Cit9CisK
IGZ1bmN0aW9uIHJ1blRlc3RzKCkKIHsKICAgICBkb2N1bWVudC5ib2R5LmlubmVySFRNTCA9ICc8
cHJlIGlkPXVuaXR0ZXN0LXJlc3VsdHM+PC9wcmU+JzsKQEAgLTU3Myw3ICs2MTEsOCBAQCBmdW5j
dGlvbiBydW5UZXN0cygpCiAgICAgICAgICAgICAgICAgZXJyb3IgPSBlcnI7CiAgICAgICAgICAg
ICB9CiAKLSAgICAgICAgICAgIHZhciByZXN1bHQgPSBlcnJvciA/IGVycm9yLnRvU3RyaW5nKCkg
OiAnUEFTU0VEJzsKKyAgICAgICAgICAgIHZhciByZXN1bHQgPSBlcnJvciA/IGh0bWxFc2NhcGUo
ZXJyb3IudG9TdHJpbmcoKSkgOiAnUEFTU0VEJzsKKwogICAgICAgICAgICAgJCgndW5pdHRlc3Qt
cmVzdWx0cycpLmluc2VydEFkamFjZW50SFRNTCgiYmVmb3JlRW5kIiwgbmFtZSArICc6ICcgKyBy
ZXN1bHQgKyAnXG4nKTsKICAgICAgICAgfQogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136503</attachid>
            <date>2012-04-10 12:13:29 -0700</date>
            <delta_ts>2012-04-10 15:56:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83541-20120410121328.patch</filename>
            <type>text/plain</type>
            <size>15100</size>
            <attacher name="Ojan Vafai">ojan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzNjI4CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYzE3YWY2YjRiMGQ0MmFhZjFmYjYwMzM5NmNhNGQ1ZDZm
ZDBiM2QwMi4uMWZmZGIwZDQzYjQwNzlhY2M2ZjNhMWM3MTJhNTdmYjQzYTIwYTFkZSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIw
IEBACisyMDEyLTA0LTA5ICBPamFuIFZhZmFpICA8b2phbkBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgQWRkIGEgY2hyb21lbGVzcyB2aWV3IHRvIHRoZSBpbmRpdmlkdWFsIHRlc3RzIHZpZXcKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzNTQxCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyB0aGUg
dmlldyBzdWl0YWJsZSB0byBpbmxpbmluZyBpbiBvdGhlciBjb250ZXh0cyAoZS5nLiBnYXJkZW4t
by1tYXRpYykuCisKKyAgICAgICAgKiBUZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRz
L2ZsYWtpbmVzc19kYXNoYm9hcmQuaHRtbDoKKyAgICAgICAgKiBUZXN0UmVzdWx0U2VydmVyL3N0
YXRpYy1kYXNoYm9hcmRzL2ZsYWtpbmVzc19kYXNoYm9hcmRfdGVzdHMuanM6CisgICAgICAgICh0
ZXN0SHRtbEZvckluZGl2aWR1bFRlc3RPbkFsbEJ1aWxkZXJzKToKKyAgICAgICAgKHRlc3RIdG1s
Rm9ySW5kaXZpZHVsVGVzdE9uQWxsQnVpbGRlcnNXaXRoQ2hyb21lKToKKyAgICAgICAgKHRlc3RI
dG1sRm9ySW5kaXZpZHVhbFRlc3RzKToKKyAgICAgICAgKGh0bWxFc2NhcGUpOgorICAgICAgICAo
cnVuVGVzdHMpOgorCiAyMDEyLTA0LTA5ICBEYW5hIEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIE1hcmsgbXlzZWxmIGFzIGEgY29tbWl0dGVyCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2ZsYWtpbmVzc19kYXNoYm9h
cmQuaHRtbCBiL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvZmxha2lu
ZXNzX2Rhc2hib2FyZC5odG1sCmluZGV4IDY5N2M2ZDkyMDc5MDc4NDM3MDBlNzhmNDQ5Y2Y1NDFj
YTdjMDljMWYuLjhiZjQ1MTdlNDNkYmZkYmNmYzliYWVlZmU4MjcxYTI4MmZlYzhlODMgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvZmxha2luZXNz
X2Rhc2hib2FyZC5odG1sCisrKyBiL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hi
b2FyZHMvZmxha2luZXNzX2Rhc2hib2FyZC5odG1sCkBAIC00MzMsNiArNDMzLDcgQEAgZnVuY3Rp
b24gaGFuZGxlVmFsaWRIYXNoUGFyYW1ldGVyKGtleSwgdmFsdWUpCiAgICAgICAgICAgICB9KTsK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAKKyAgICBjYXNlICdzaG93Q2hyb21lJzoKICAgICBjYXNl
ICdzaG93Q29ycmVjdEV4cGVjdGF0aW9ucyc6CiAgICAgY2FzZSAnc2hvd1dyb25nRXhwZWN0YXRp
b25zJzoKICAgICBjYXNlICdzaG93RXhwZWN0YXRpb25zJzoKQEAgLTQ1OSw2ICs0NjAsNyBAQCBn
X2RlZmF1bHREYXNoYm9hcmRTcGVjaWZpY1N0YXRlVmFsdWVzID0gewogICAgIHNob3dGbGFreTog
dHJ1ZSwKICAgICBzaG93TGFyZ2VFeHBlY3RhdGlvbnM6IGZhbHNlLAogICAgIGxlZ2FjeUV4cGVj
dGF0aW9uc1NlbWFudGljczogdHJ1ZSwKKyAgICBzaG93Q2hyb21lOiB0cnVlLAogICAgIHNob3dD
b3JyZWN0RXhwZWN0YXRpb25zOiAhaXNMYXlvdXRUZXN0UmVzdWx0cygpLAogICAgIHNob3dXcm9u
Z0V4cGVjdGF0aW9uczogIWlzTGF5b3V0VGVzdFJlc3VsdHMoKSwKICAgICBzaG93V29udEZpeFNr
aXA6ICFpc0xheW91dFRlc3RSZXN1bHRzKCksCkBAIC0xNzM3LDcgKzE3MzksNyBAQCBmdW5jdGlv
biBzaG93VXBkYXRlSW5mb0ZvclRlc3QodGVzdHNOZWVkaW5nVXBkYXRlLCBrZXlzKQogICAgIGRv
Y3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY2hlY2tib3hlcyk7CiAKICAgICB2YXIgZGl2ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Ci0gICAgZGl2LmlubmVySFRNTCA9IGh0bWxGb3JJ
bmRpdmlkdWxUZXN0T25BbGxCdWlsZGVycyh0ZXN0KTsKKyAgICBkaXYuaW5uZXJIVE1MID0gaHRt
bEZvckluZGl2aWR1YWxUZXN0T25BbGxCdWlsZGVyc1dpdGhDaHJvbWUodGVzdCk7CiAgICAgZG9j
dW1lbnQuYm9keS5hcHBlbmRDaGlsZChkaXYpOwogICAgIGFwcGVuZEV4cGVjdGF0aW9ucygpOwog
fQpAQCAtMTgwNywyNCArMTgwOSwxMyBAQCBmdW5jdGlvbiBzZXRVcGRhdGVJbmRleChuZXdJbmRl
eCwgdGVzdHNOZWVkaW5nVXBkYXRlLCBrZXlzKQogICAgIHNob3dVcGRhdGVJbmZvRm9yVGVzdCh0
ZXN0c05lZWRpbmdVcGRhdGUsIGtleXMpOwogfQogCi1mdW5jdGlvbiBodG1sRm9ySW5kaXZpZHVs
VGVzdE9uQWxsQnVpbGRlcnModGVzdCkKK2Z1bmN0aW9uIGh0bWxGb3JJbmRpdmlkdWFsVGVzdE9u
QWxsQnVpbGRlcnModGVzdCkKIHsKICAgICBwcm9jZXNzVGVzdFJ1bnNGb3JBbGxCdWlsZGVycygp
OwogCiAgICAgdmFyIHRlc3RSZXN1bHRzID0gZ190ZXN0VG9SZXN1bHRzTWFwW3Rlc3RdOwotICAg
IHZhciBtYXN0ZXI7CiAgICAgdmFyIGh0bWwgPSAnJzsKLSAgICBpZiAoaXNMYXlvdXRUZXN0UmVz
dWx0cygpKSB7Ci0gICAgICAgIHZhciBzdWl0ZSA9IGxvb2t1cFZpcnR1YWxUZXN0U3VpdGUodGVz
dCk7Ci0gICAgICAgIHZhciBiYXNlID0gc3VpdGUgPyBiYXNlVGVzdCh0ZXN0LCBzdWl0ZSkgOiB0
ZXN0OwotICAgICAgICB2YXIgdHJhY1VSTCA9IFRFU1RfVVJMX0JBU0VfUEFUSF9UUkFDICsgYmFz
ZTsKLSAgICAgICAgaHRtbCArPSAnPGgyPicgKyBsaW5rSFRNTFRvT3BlbldpbmRvdyh0cmFjVVJM
LCB0ZXN0KSArICc8L2gyPic7Ci0gICAgfSBlbHNlCi0gICAgICAgIGh0bWwgKz0gJzxoMj4nICsg
dGVzdCArICc8L2gyPic7Ci0KICAgICBpZiAodGVzdFJlc3VsdHMgJiYgdGVzdFJlc3VsdHMubGVu
Z3RoKSB7Ci0gICAgICAgIG1hc3RlciA9IGJ1aWxkZXJNYXN0ZXIodGVzdFJlc3VsdHNbMF0uYnVp
bGRlcik7Ci0KICAgICAgICAgaHRtbCArPSc8ZGl2PjxiPklmIGEgYnVpbGRlciBpcyBub3QgbGlz
dGVkLCB0aGF0IG1lYW5zIHRoZSBidWlsZGVyICcgKwogICAgICAgICAgICAgJ2RvZXMgbm90IHJ1
biB0aGF0IHRlc3QgKGUuZy4gaXQgaXMgc2tpcHBlZCkgb3IgYWxsIHJ1bnMgb2YgdGhlICcgKwog
ICAgICAgICAgICAgJ3Rlc3QgcGFzc2VkLjwvYj48L2Rpdj4nOwpAQCAtMTgzNiw2ICsxODI3LDI0
IEBAIGZ1bmN0aW9uIGh0bWxGb3JJbmRpdmlkdWxUZXN0T25BbGxCdWlsZGVycyh0ZXN0KQogICAg
ICAgICBodG1sICs9ICc8ZGl2IGNsYXNzPSJub3QtZm91bmQiPlRlc3Qgbm90IGZvdW5kLiBFaXRo
ZXIgaXQgZG9lcyAnICsKICAgICAgICAgICAgICdub3QgZXhpc3QsIGlzIHNraXBwZWQgb3IgcGFz
c2VzIG9uIGFsbCBwbGF0Zm9ybXMuPC9kaXY+JzsKICAgICB9CisgICAgcmV0dXJuIGh0bWw7Cit9
CisKK2Z1bmN0aW9uIGh0bWxGb3JJbmRpdmlkdWFsVGVzdE9uQWxsQnVpbGRlcnNXaXRoQ2hyb21l
KHRlc3QpCit7CisgICAgcHJvY2Vzc1Rlc3RSdW5zRm9yQWxsQnVpbGRlcnMoKTsKKworICAgIHZh
ciB0ZXN0UmVzdWx0cyA9IGdfdGVzdFRvUmVzdWx0c01hcFt0ZXN0XTsKKyAgICB2YXIgaHRtbCA9
ICcnOworICAgIGlmIChpc0xheW91dFRlc3RSZXN1bHRzKCkpIHsKKyAgICAgICAgdmFyIHN1aXRl
ID0gbG9va3VwVmlydHVhbFRlc3RTdWl0ZSh0ZXN0KTsKKyAgICAgICAgdmFyIGJhc2UgPSBzdWl0
ZSA/IGJhc2VUZXN0KHRlc3QsIHN1aXRlKSA6IHRlc3Q7CisgICAgICAgIHZhciB0cmFjVVJMID0g
VEVTVF9VUkxfQkFTRV9QQVRIX1RSQUMgKyBiYXNlOworICAgICAgICBodG1sICs9ICc8aDI+JyAr
IGxpbmtIVE1MVG9PcGVuV2luZG93KHRyYWNVUkwsIHRlc3QpICsgJzwvaDI+JzsKKyAgICB9IGVs
c2UKKyAgICAgICAgaHRtbCArPSAnPGgyPicgKyB0ZXN0ICsgJzwvaDI+JzsKKworICAgIGh0bWwg
Kz0gaHRtbEZvckluZGl2aWR1YWxUZXN0T25BbGxCdWlsZGVycyh0ZXN0KTsKIAogICAgIGh0bWwg
Kz0gJzxkaXYgY2xhc3M9ZXhwZWN0YXRpb25zIHRlc3Q9JyArIHRlc3QgKyAnPjxkaXY+JyArCiAg
ICAgICAgIGxpbmtIVE1MVG9Ub2dnbGVTdGF0ZSgnc2hvd0V4cGVjdGF0aW9ucycsICdyZXN1bHRz
JykKQEAgLTE4NDMsNyArMTg1Miw3IEBAIGZ1bmN0aW9uIGh0bWxGb3JJbmRpdmlkdWxUZXN0T25B
bGxCdWlsZGVycyh0ZXN0KQogICAgIGlmIChpc0xheW91dFRlc3RSZXN1bHRzKCkgfHwgaXNHUFVU
ZXN0UmVzdWx0cygpKSB7CiAgICAgICAgIGlmIChpc0xheW91dFRlc3RSZXN1bHRzKCkpCiAgICAg
ICAgICAgICBodG1sICs9ICcgfCAnICsgbGlua0hUTUxUb1RvZ2dsZVN0YXRlKCdzaG93TGFyZ2VF
eHBlY3RhdGlvbnMnLCAnbGFyZ2UgdGh1bWJuYWlscycpOwotICAgICAgICBpZiAobWFzdGVyID09
IFdFQktJVF9CVUlMREVSX01BU1RFUikgeworICAgICAgICBpZiAodGVzdFJlc3VsdHMgJiYgYnVp
bGRlck1hc3Rlcih0ZXN0UmVzdWx0c1swXS5idWlsZGVyKSA9PSBXRUJLSVRfQlVJTERFUl9NQVNU
RVIpIHsKICAgICAgICAgICAgIHZhciByZXZpc2lvbiA9IGdfY3VycmVudFN0YXRlLnJldmlzaW9u
IHx8ICcnOwogICAgICAgICAgICAgaHRtbCArPSAnPGZvcm0gb25zdWJtaXQ9InNldFF1ZXJ5UGFy
YW1ldGVyKFwncmV2aXNpb25cJywgcmV2aXNpb24udmFsdWUpOycgKwogICAgICAgICAgICAgICAg
ICdyZXR1cm4gZmFsc2U7Ij5TaG93IHJlc3VsdHMgZm9yIFdlYktpdCByZXZpc2lvbjogJyArCkBA
IC0yMzY0LDExICsyMzczLDEzIEBAIGZ1bmN0aW9uIGhpZGVMb2FkaW5nVUkoKQogZnVuY3Rpb24g
Z2VuZXJhdGVQYWdlRm9ySW5kaXZpZHVhbFRlc3RzKHRlc3RzKQogewogICAgIGNvbnNvbGUubG9n
KCdOdW1iZXIgb2YgdGVzdHM6ICcgKyB0ZXN0cy5sZW5ndGgpOwotICAgIGFwcGVuZEhUTUwoaHRt
bEZvck5hdkJhcigpKTsKKyAgICBpZiAoZ19jdXJyZW50U3RhdGUuc2hvd0Nocm9tZSkKKyAgICAg
ICAgYXBwZW5kSFRNTChodG1sRm9yTmF2QmFyKCkpOwogICAgIHBlcmZvcm1DaHVua2VkQWN0aW9u
KHRlc3RzLCBmdW5jdGlvbihjaHVuaykgewogICAgICAgICBhcHBlbmRIVE1MKGh0bWxGb3JJbmRp
dmlkdWFsVGVzdHMoY2h1bmspKTsKICAgICB9LCBhcHBlbmRFeHBlY3RhdGlvbnMsIDUwMCk7Ci0g
ICAgJCgndGVzdHMtaW5wdXQnKS52YWx1ZSA9IGdfY3VycmVudFN0YXRlLnRlc3RzOworICAgIGlm
IChnX2N1cnJlbnRTdGF0ZS5zaG93Q2hyb21lKQorICAgICAgICAkKCd0ZXN0cy1pbnB1dCcpLnZh
bHVlID0gZ19jdXJyZW50U3RhdGUudGVzdHM7CiB9CiAKIGZ1bmN0aW9uIHBlcmZvcm1DaHVua2Vk
QWN0aW9uKHRlc3RzLCBoYW5kbGVDaHVuaywgb25Db21wbGV0ZSwgdGltZW91dCwgb3B0X2luZGV4
KSB7CkBAIC0yMzg3LDggKzIzOTgsMTEgQEAgZnVuY3Rpb24gcGVyZm9ybUNodW5rZWRBY3Rpb24o
dGVzdHMsIGhhbmRsZUNodW5rLCBvbkNvbXBsZXRlLCB0aW1lb3V0LCBvcHRfaW5kZXgKIGZ1bmN0
aW9uIGh0bWxGb3JJbmRpdmlkdWFsVGVzdHModGVzdHMpCiB7CiAgICAgdmFyIHRlc3RzSFRNTCA9
IFtdOwotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGVzdHMubGVuZ3RoOyBpKyspCi0gICAgICAg
IHRlc3RzSFRNTC5wdXNoKGh0bWxGb3JJbmRpdmlkdWxUZXN0T25BbGxCdWlsZGVycyh0ZXN0c1tp
XSkpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGVzdHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
ICAgdmFyIHRlc3QgPSB0ZXN0c1tpXTsKKyAgICAgICAgdmFyIGh0bWwgPSBnX2N1cnJlbnRTdGF0
ZS5zaG93Q2hyb21lID8gaHRtbEZvckluZGl2aWR1YWxUZXN0T25BbGxCdWlsZGVyc1dpdGhDaHJv
bWUodGVzdCkgOiBodG1sRm9ySW5kaXZpZHVhbFRlc3RPbkFsbEJ1aWxkZXJzKHRlc3QpCisgICAg
ICAgIHRlc3RzSFRNTC5wdXNoKGh0bWwpOworICAgIH0KICAgICByZXR1cm4gdGVzdHNIVE1MLmpv
aW4oJzxocj4nKTsKIH0KIApAQCAtMjQ3NCw2ICsyNDg4LDcgQEAgZnVuY3Rpb24gZ2VuZXJhdGVQ
YWdlRm9yQnVpbGRlcihidWlsZGVyTmFtZSkKIHZhciBWQUxJRF9LRVlTX0ZPUl9DUk9TU19CVUlM
REVSX1ZJRVcgPSB7CiAgICAgdGVzdHM6IDEsCiAgICAgcmVzdWx0OiAxLAorICAgIHNob3dDaHJv
bWU6IDEsCiAgICAgc2hvd0V4cGVjdGF0aW9uczogMSwKICAgICBzaG93TGFyZ2VFeHBlY3RhdGlv
bnM6IDEsCiAgICAgbGVnYWN5RXhwZWN0YXRpb25zU2VtYW50aWNzOiAxLApAQCAtMjU4MSw2ICsy
NTk2LDIxIEBAIGZ1bmN0aW9uIGh0bWxGb3JTbG93VGltZXMobWluVGltZSkKICAgICAgICAgbWlu
VGltZSArICcgc2Vjb25kcyA9PSBTTE9XPC9saT48L3VsPic7CiB9CiAKK3dpbmRvdy5hZGRFdmVu
dExpc3RlbmVyKCdtZXNzYWdlJywgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICB0cnkgeworICAgICAg
ICB2YXIgcGFyc2VkRGF0YSA9IEpTT04ucGFyc2UoZXZlbnQuZGF0YSk7CisgICAgfSBjYXRjaCAo
ZXJyb3IpIHsKKyAgICAgICAgY29uc29sZS5sb2coJ0NvdWxkIG5vdCBwYXJzZSBwb3N0TWVzc2Fn
ZSBhcyBKU09OOiAnICsgZXZlbnQuZGF0YSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBpZiAocGFyc2VkRGF0YS5jb21tYW5kID09ICdxdWVyeUNvbnRlbnRIZWlnaHQnKSB7CisgICAg
ICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgneyJoZWlnaHQiOicgKyBkb2N1bWVudC5kb2N1
bWVudEVsZW1lbnQub2Zmc2V0SGVpZ2h0ICsgJ30nLCAnKicpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIGNvbnNvbGUubG9nKCdVbmtub3duIHBvc3RNZXNzYWdlIHF1ZXJ5OiAnICsgZXZl
bnQuZGF0YSk7Cit9KTsKKwogZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGZ1
bmN0aW9uKGUpIHsKICAgICBpZiAoZS5rZXlJZGVudGlmaWVyID09ICdVKzAwM0YnIHx8IGUua2V5
SWRlbnRpZmllciA9PSAnVSswMEJGJykgewogICAgICAgICAvLyBXZWJLaXQgTUFDIHJldHVyc24g
M0YuIFdlYktpdCBXSU4gcmV0dXJucyBCRi4gVGhpcyBpcyBhIGJ1ZyEKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvZmxha2luZXNzX2Rhc2hib2Fy
ZF90ZXN0cy5qcyBiL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvZmxh
a2luZXNzX2Rhc2hib2FyZF90ZXN0cy5qcwppbmRleCA4NDk0NzAxZTA5NDcyNWIzN2ZkMWE3Yzc2
MmFmZDZlMDIwYWQxZGVmLi4zMDI2NTI1Njk4MTVlNTMzMThmMDk3MDlmMTQ3OTU4ZmU1Y2FkZjBk
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2Zs
YWtpbmVzc19kYXNoYm9hcmRfdGVzdHMuanMKKysrIGIvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9z
dGF0aWMtZGFzaGJvYXJkcy9mbGFraW5lc3NfZGFzaGJvYXJkX3Rlc3RzLmpzCkBAIC0zODAsNiAr
MzgwLDk1IEBAIGZ1bmN0aW9uIHRlc3RIdG1sRm9yVGVzdFR5cGVTd2l0Y2hlckdyb3VwKCkKICAg
ICBhc3NlcnRFcXVhbHMoZ3JvdXAuY2hpbGRyZW4ubGVuZ3RoLCAzKTsKIH0KIAorZnVuY3Rpb24g
dGVzdEh0bWxGb3JJbmRpdmlkdWFsVGVzdE9uQWxsQnVpbGRlcnMoKQoreworICAgIGFzc2VydEVx
dWFscyhodG1sRm9ySW5kaXZpZHVhbFRlc3RPbkFsbEJ1aWxkZXJzKCdmb28vbm9uZXhpc3RhbnQu
aHRtbCcpLCAnPGRpdiBjbGFzcz0ibm90LWZvdW5kIj5UZXN0IG5vdCBmb3VuZC4gRWl0aGVyIGl0
IGRvZXMgbm90IGV4aXN0LCBpcyBza2lwcGVkIG9yIHBhc3NlcyBvbiBhbGwgcGxhdGZvcm1zLjwv
ZGl2PicpOworfQorCitmdW5jdGlvbiB0ZXN0SHRtbEZvckluZGl2aWR1YWxUZXN0T25BbGxCdWls
ZGVyc1dpdGhDaHJvbWVOb25leGlzdGFudCgpCit7CisgICAgYXNzZXJ0RXF1YWxzKGh0bWxGb3JJ
bmRpdmlkdWFsVGVzdE9uQWxsQnVpbGRlcnNXaXRoQ2hyb21lKCdmb28vbm9uZXhpc3RhbnQuaHRt
bCcpLAorICAgICAgICAnPGgyPjxhIGhyZWY9Imh0dHA6Ly90cmFjLndlYmtpdC5vcmcvYnJvd3Nl
ci90cnVuay9MYXlvdXRUZXN0cy9mb28vbm9uZXhpc3RhbnQuaHRtbCIgdGFyZ2V0PSJfYmxhbmsi
PmZvby9ub25leGlzdGFudC5odG1sPC9hPjwvaDI+JyArCisgICAgICAgICc8ZGl2IGNsYXNzPSJu
b3QtZm91bmQiPlRlc3Qgbm90IGZvdW5kLiBFaXRoZXIgaXQgZG9lcyBub3QgZXhpc3QsIGlzIHNr
aXBwZWQgb3IgcGFzc2VzIG9uIGFsbCBwbGF0Zm9ybXMuPC9kaXY+JyArCisgICAgICAgICc8ZGl2
IGNsYXNzPWV4cGVjdGF0aW9ucyB0ZXN0PWZvby9ub25leGlzdGFudC5odG1sPicgKworICAgICAg
ICAgICAgJzxkaXY+JyArCisgICAgICAgICAgICAgICAgJzxzcGFuIGNsYXNzPWxpbmsgb25jbGlj
az0ic2V0UXVlcnlQYXJhbWV0ZXIoXCdzaG93RXhwZWN0YXRpb25zXCcsIHRydWUpIj5TaG93IHJl
c3VsdHM8L3NwYW4+IHwgJyArCisgICAgICAgICAgICAgICAgJzxzcGFuIGNsYXNzPWxpbmsgb25j
bGljaz0ic2V0UXVlcnlQYXJhbWV0ZXIoXCdzaG93TGFyZ2VFeHBlY3RhdGlvbnNcJywgdHJ1ZSki
PlNob3cgbGFyZ2UgdGh1bWJuYWlsczwvc3Bhbj4gfCAnICsKKyAgICAgICAgICAgICAgICAnPGI+
T25seSBzaG93cyBhY3R1YWwgcmVzdWx0cy9kaWZmcyBmcm9tIHRoZSBtb3N0IHJlY2VudCAqZmFp
bHVyZSogb24gZWFjaCBib3QuPC9iPicgKworICAgICAgICAgICAgJzwvZGl2PicgKworICAgICAg
ICAnPC9kaXY+Jyk7Cit9CisKK2Z1bmN0aW9uIHRlc3RIdG1sRm9ySW5kaXZpZHVhbFRlc3RPbkFs
bEJ1aWxkZXJzV2l0aENocm9tZSgpCit7CisgICAgdmFyIHRlc3QgPSAnZHVtbXl0ZXN0Lmh0bWwn
OworICAgIHZhciBidWlsZGVyTmFtZSA9ICdkdW1teUJ1aWxkZXInOworICAgIGdfdGVzdFRvUmVz
dWx0c01hcFt0ZXN0XSA9IFtjcmVhdGVSZXN1bHRzT2JqZWN0Rm9yVGVzdCh0ZXN0LCBidWlsZGVy
TmFtZSldOworICAgIGFzc2VydEVxdWFscyhodG1sRm9ySW5kaXZpZHVhbFRlc3RPbkFsbEJ1aWxk
ZXJzV2l0aENocm9tZSh0ZXN0KSwKKyAgICAgICAgJzxoMj48YSBocmVmPSJodHRwOi8vdHJhYy53
ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsvTGF5b3V0VGVzdHMvZHVtbXl0ZXN0Lmh0bWwiIHRhcmdl
dD0iX2JsYW5rIj5kdW1teXRlc3QuaHRtbDwvYT48L2gyPicgKworICAgICAgICAnPHRhYmxlIGNs
YXNzPXRlc3QtdGFibGU+PHRoZWFkPjx0cj4nICsKKyAgICAgICAgICAgICAgICAnPHRoIHNvcnRW
YWx1ZT10ZXN0PjxkaXYgY2xhc3M9dGFibGUtaGVhZGVyLWNvbnRlbnQ+PHNwYW4+PC9zcGFuPjxz
cGFuIGNsYXNzPWhlYWRlci10ZXh0PnRlc3Q8L3NwYW4+PC9kaXY+PC90aD4nICsKKyAgICAgICAg
ICAgICAgICAnPHRoIHNvcnRWYWx1ZT1idWdzPjxkaXYgY2xhc3M9dGFibGUtaGVhZGVyLWNvbnRl
bnQ+PHNwYW4+PC9zcGFuPjxzcGFuIGNsYXNzPWhlYWRlci10ZXh0PmJ1Z3M8L3NwYW4+PC9kaXY+
PC90aD4nICsKKyAgICAgICAgICAgICAgICAnPHRoIHNvcnRWYWx1ZT1tb2RpZmllcnM+PGRpdiBj
bGFzcz10YWJsZS1oZWFkZXItY29udGVudD48c3Bhbj48L3NwYW4+PHNwYW4gY2xhc3M9aGVhZGVy
LXRleHQ+bW9kaWZpZXJzPC9zcGFuPjwvZGl2PjwvdGg+JyArCisgICAgICAgICAgICAgICAgJzx0
aCBzb3J0VmFsdWU9ZXhwZWN0YXRpb25zPjxkaXYgY2xhc3M9dGFibGUtaGVhZGVyLWNvbnRlbnQ+
PHNwYW4+PC9zcGFuPjxzcGFuIGNsYXNzPWhlYWRlci10ZXh0PmV4cGVjdGF0aW9uczwvc3Bhbj48
L2Rpdj48L3RoPicgKworICAgICAgICAgICAgICAgICc8dGggc29ydFZhbHVlPXNsb3dlc3Q+PGRp
diBjbGFzcz10YWJsZS1oZWFkZXItY29udGVudD48c3Bhbj48L3NwYW4+PHNwYW4gY2xhc3M9aGVh
ZGVyLXRleHQ+c2xvd2VzdCBydW48L3NwYW4+PC9kaXY+PC90aD4nICsKKyAgICAgICAgICAgICAg
ICAnPHRoIHNvcnRWYWx1ZT0lPjxkaXYgY2xhc3M9dGFibGUtaGVhZGVyLWNvbnRlbnQ+PHNwYW4+
PC9zcGFuPjxzcGFuIGNsYXNzPWhlYWRlci10ZXh0PiUgZmFpbDwvc3Bhbj48L2Rpdj48L3RoPicg
KworICAgICAgICAgICAgICAgICc8dGggc29ydFZhbHVlPWZsYWtpbmVzcyBjb2xzcGFuPTEwMDAw
PjxkaXYgY2xhc3M9dGFibGUtaGVhZGVyLWNvbnRlbnQ+PHNwYW4+PC9zcGFuPjxzcGFuIGNsYXNz
PWhlYWRlci10ZXh0PmZsYWtpbmVzcyAobnVtYmVycyBhcmUgcnVudGltZXMgaW4gc2Vjb25kcyk8
L3NwYW4+PC9kaXY+PC90aD4nICsKKyAgICAgICAgICAgICc8L3RyPjwvdGhlYWQ+JyArCisgICAg
ICAgICAgICAnPHRib2R5PicgKworICAgICAgICAgICAgICAgICc8ZGl2PjxiPklmIGEgYnVpbGRl
ciBpcyBub3QgbGlzdGVkLCB0aGF0IG1lYW5zIHRoZSBidWlsZGVyIGRvZXMgbm90IHJ1biB0aGF0
IHRlc3QgKGUuZy4gaXQgaXMgc2tpcHBlZCkgb3IgYWxsIHJ1bnMgb2YgdGhlIHRlc3QgcGFzc2Vk
LjwvYj48L2Rpdj4nICsKKyAgICAgICAgICAgICc8L3Rib2R5PicgKworICAgICAgICAnPC90YWJs
ZT4nICsKKyAgICAgICAgJzxkaXYgY2xhc3M9ZXhwZWN0YXRpb25zIHRlc3Q9ZHVtbXl0ZXN0Lmh0
bWw+JyArCisgICAgICAgICAgICAnPGRpdj48c3BhbiBjbGFzcz1saW5rIG9uY2xpY2s9InNldFF1
ZXJ5UGFyYW1ldGVyKFwnc2hvd0V4cGVjdGF0aW9uc1wnLCB0cnVlKSI+U2hvdyByZXN1bHRzPC9z
cGFuPiB8ICcgKworICAgICAgICAgICAgJzxzcGFuIGNsYXNzPWxpbmsgb25jbGljaz0ic2V0UXVl
cnlQYXJhbWV0ZXIoXCdzaG93TGFyZ2VFeHBlY3RhdGlvbnNcJywgdHJ1ZSkiPlNob3cgbGFyZ2Ug
dGh1bWJuYWlsczwvc3Bhbj4gfCAnICsKKyAgICAgICAgICAgICc8Yj5Pbmx5IHNob3dzIGFjdHVh
bCByZXN1bHRzL2RpZmZzIGZyb20gdGhlIG1vc3QgcmVjZW50ICpmYWlsdXJlKiBvbiBlYWNoIGJv
dC48L2I+PC9kaXY+JyArCisgICAgICAgICc8L2Rpdj4nKTsKK30KKworZnVuY3Rpb24gdGVzdEh0
bWxGb3JJbmRpdmlkdWFsVGVzdE9uQWxsQnVpbGRlcnNXaXRoQ2hyb21lV2Via2l0TWFzdGVyKCkK
K3sKKyAgICB2YXIgdGVzdCA9ICdkdW1teXRlc3QuaHRtbCc7CisgICAgdmFyIGJ1aWxkZXJOYW1l
ID0gJ2R1bW15QnVpbGRlcic7CisgICAgQlVJTERFUl9UT19NQVNURVJbYnVpbGRlck5hbWVdID0g
V0VCS0lUX0JVSUxERVJfTUFTVEVSOworICAgIGdfdGVzdFRvUmVzdWx0c01hcFt0ZXN0XSA9IFtj
cmVhdGVSZXN1bHRzT2JqZWN0Rm9yVGVzdCh0ZXN0LCBidWlsZGVyTmFtZSldOworICAgIGFzc2Vy
dEVxdWFscyhodG1sRm9ySW5kaXZpZHVhbFRlc3RPbkFsbEJ1aWxkZXJzV2l0aENocm9tZSh0ZXN0
KSwKKyAgICAgICAgJzxoMj48YSBocmVmPSJodHRwOi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIv
dHJ1bmsvTGF5b3V0VGVzdHMvZHVtbXl0ZXN0Lmh0bWwiIHRhcmdldD0iX2JsYW5rIj5kdW1teXRl
c3QuaHRtbDwvYT48L2gyPicgKworICAgICAgICAgICAgJzx0YWJsZSBjbGFzcz10ZXN0LXRhYmxl
Pjx0aGVhZD48dHI+JyArCisgICAgICAgICAgICAgICAgICAgICc8dGggc29ydFZhbHVlPXRlc3Q+
PGRpdiBjbGFzcz10YWJsZS1oZWFkZXItY29udGVudD48c3Bhbj48L3NwYW4+PHNwYW4gY2xhc3M9
aGVhZGVyLXRleHQ+dGVzdDwvc3Bhbj48L2Rpdj48L3RoPicgKworICAgICAgICAgICAgICAgICAg
ICAnPHRoIHNvcnRWYWx1ZT1idWdzPjxkaXYgY2xhc3M9dGFibGUtaGVhZGVyLWNvbnRlbnQ+PHNw
YW4+PC9zcGFuPjxzcGFuIGNsYXNzPWhlYWRlci10ZXh0PmJ1Z3M8L3NwYW4+PC9kaXY+PC90aD4n
ICsKKyAgICAgICAgICAgICAgICAgICAgJzx0aCBzb3J0VmFsdWU9bW9kaWZpZXJzPjxkaXYgY2xh
c3M9dGFibGUtaGVhZGVyLWNvbnRlbnQ+PHNwYW4+PC9zcGFuPjxzcGFuIGNsYXNzPWhlYWRlci10
ZXh0Pm1vZGlmaWVyczwvc3Bhbj48L2Rpdj48L3RoPicgKworICAgICAgICAgICAgICAgICAgICAn
PHRoIHNvcnRWYWx1ZT1leHBlY3RhdGlvbnM+PGRpdiBjbGFzcz10YWJsZS1oZWFkZXItY29udGVu
dD48c3Bhbj48L3NwYW4+PHNwYW4gY2xhc3M9aGVhZGVyLXRleHQ+ZXhwZWN0YXRpb25zPC9zcGFu
PjwvZGl2PjwvdGg+JyArCisgICAgICAgICAgICAgICAgICAgICc8dGggc29ydFZhbHVlPXNsb3dl
c3Q+PGRpdiBjbGFzcz10YWJsZS1oZWFkZXItY29udGVudD48c3Bhbj48L3NwYW4+PHNwYW4gY2xh
c3M9aGVhZGVyLXRleHQ+c2xvd2VzdCBydW48L3NwYW4+PC9kaXY+PC90aD4nICsKKyAgICAgICAg
ICAgICAgICAgICAgJzx0aCBzb3J0VmFsdWU9JT48ZGl2IGNsYXNzPXRhYmxlLWhlYWRlci1jb250
ZW50PjxzcGFuPjwvc3Bhbj48c3BhbiBjbGFzcz1oZWFkZXItdGV4dD4lIGZhaWw8L3NwYW4+PC9k
aXY+PC90aD4nICsKKyAgICAgICAgICAgICAgICAgICAgJzx0aCBzb3J0VmFsdWU9Zmxha2luZXNz
IGNvbHNwYW49MTAwMDA+PGRpdiBjbGFzcz10YWJsZS1oZWFkZXItY29udGVudD48c3Bhbj48L3Nw
YW4+PHNwYW4gY2xhc3M9aGVhZGVyLXRleHQ+Zmxha2luZXNzIChudW1iZXJzIGFyZSBydW50aW1l
cyBpbiBzZWNvbmRzKTwvc3Bhbj48L2Rpdj48L3RoPicgKworICAgICAgICAgICAgICAgICc8L3Ry
PjwvdGhlYWQ+JyArCisgICAgICAgICAgICAgICAgJzx0Ym9keT4nICsKKyAgICAgICAgICAgICAg
ICAgICAgJzxkaXY+PGI+SWYgYSBidWlsZGVyIGlzIG5vdCBsaXN0ZWQsIHRoYXQgbWVhbnMgdGhl
IGJ1aWxkZXIgZG9lcyBub3QgcnVuIHRoYXQgdGVzdCAoZS5nLiBpdCBpcyBza2lwcGVkKSBvciBh
bGwgcnVucyBvZiB0aGUgdGVzdCBwYXNzZWQuPC9iPjwvZGl2PicgKworICAgICAgICAgICAgICAg
ICc8L3Rib2R5PicgKworICAgICAgICAgICAgJzwvdGFibGU+JyArCisgICAgICAgICAgICAnPGRp
diBjbGFzcz1leHBlY3RhdGlvbnMgdGVzdD1kdW1teXRlc3QuaHRtbD4nICsKKyAgICAgICAgICAg
ICAgICAnPGRpdj48c3BhbiBjbGFzcz1saW5rIG9uY2xpY2s9InNldFF1ZXJ5UGFyYW1ldGVyKFwn
c2hvd0V4cGVjdGF0aW9uc1wnLCB0cnVlKSI+U2hvdyByZXN1bHRzPC9zcGFuPiB8ICcgKworICAg
ICAgICAgICAgICAgICc8c3BhbiBjbGFzcz1saW5rIG9uY2xpY2s9InNldFF1ZXJ5UGFyYW1ldGVy
KFwnc2hvd0xhcmdlRXhwZWN0YXRpb25zXCcsIHRydWUpIj5TaG93IGxhcmdlIHRodW1ibmFpbHM8
L3NwYW4+JyArCisgICAgICAgICAgICAgICAgJzxmb3JtIG9uc3VibWl0PSJzZXRRdWVyeVBhcmFt
ZXRlcihcJ3JldmlzaW9uXCcsIHJldmlzaW9uLnZhbHVlKTtyZXR1cm4gZmFsc2U7Ij4nICsKKyAg
ICAgICAgICAgICAgICAgICAgJ1Nob3cgcmVzdWx0cyBmb3IgV2ViS2l0IHJldmlzaW9uOiA8aW5w
dXQgbmFtZT1yZXZpc2lvbiBwbGFjZWhvbGRlcj0iZS5nLiA2NTU0MCIgdmFsdWU9IiIgaWQ9cmV2
aXNpb24taW5wdXQ+JyArCisgICAgICAgICAgICAgICAgJzwvZm9ybT48L2Rpdj4nICsKKyAgICAg
ICAgICAgICc8L2Rpdj4nKTsKK30KKworZnVuY3Rpb24gdGVzdEh0bWxGb3JJbmRpdmlkdWFsVGVz
dHMoKQoreworICAgIGdfY3VycmVudFN0YXRlLnNob3dDaHJvbWUgPSBmYWxzZTsKKyAgICB2YXIg
dGVzdDEgPSAnZm9vL25vbmV4aXN0YW50Lmh0bWwnOworICAgIHZhciB0ZXN0MiA9ICdiYXIvbm9u
ZXhpc3RhbnQuaHRtbCc7CisgICAgdmFyIHRlc3RzID0gW3Rlc3QxLCB0ZXN0Ml07CisgICAgYXNz
ZXJ0RXF1YWxzKGh0bWxGb3JJbmRpdmlkdWFsVGVzdHModGVzdHMpLCBodG1sRm9ySW5kaXZpZHVh
bFRlc3RPbkFsbEJ1aWxkZXJzKHRlc3QxKSArICc8aHI+JyArIGh0bWxGb3JJbmRpdmlkdWFsVGVz
dE9uQWxsQnVpbGRlcnModGVzdDIpKTsKKworICAgIGdfY3VycmVudFN0YXRlLnNob3dDaHJvbWUg
PSB0cnVlOworICAgIGFzc2VydEVxdWFscyhodG1sRm9ySW5kaXZpZHVhbFRlc3RzKHRlc3RzKSwg
aHRtbEZvckluZGl2aWR1YWxUZXN0T25BbGxCdWlsZGVyc1dpdGhDaHJvbWUodGVzdDEpICsgJzxo
cj4nICsgaHRtbEZvckluZGl2aWR1YWxUZXN0T25BbGxCdWlsZGVyc1dpdGhDaHJvbWUodGVzdDIp
KTsKK30KKworCiBmdW5jdGlvbiB0ZXN0TG9va3VwVmlydHVhbFRlc3RTdWl0ZSgpCiB7CiAgICAg
YXNzZXJ0RXF1YWxzKGxvb2t1cFZpcnR1YWxUZXN0U3VpdGUoJ2Zhc3QvY2FudmFzL2Zvby5odG1s
JyksICcnKTsKQEAgLTU1MywxMCArNjQyLDE2IEBAIGZ1bmN0aW9uIHRlc3RBZGRCdWlsZGVyTG9h
ZEVycm9ycygpCiAgICAgZ19idWlsZGVyc1RoYXRGYWlsZWRUb0xvYWQgPSBbJ2J1aWxkZXIxJywg
J2J1aWxkZXIyJ107CiAgICAgZ19zdGFsZUJ1aWxkZXJzID0gWydzdGFsZUJ1aWxkZXIxJ107CiAg
ICAgYWRkQnVpbGRlckxvYWRFcnJvcnMoKTsKLSAgICBjb25zb2xlLmxvZyhnX2Vycm9yTWVzc2Fn
ZXMpOwogICAgIGFzc2VydEVxdWFscyhnX2Vycm9yTWVzc2FnZXMsICdFUlJPUjogRmFpbGVkIHRv
IGdldCBkYXRhIGZyb20gYnVpbGRlcjEsYnVpbGRlcjIuPGJyPkVSUk9SOiBEYXRhIGZyb20gc3Rh
bGVCdWlsZGVyMSBpcyBtb3JlIHRoYW4gMSBkYXkgc3RhbGUuPGJyPicpOwogfQogCitmdW5jdGlv
biBodG1sRXNjYXBlKHN0cmluZykKK3sKKyAgICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnZGl2Jyk7CisgICAgZGl2LnRleHRDb250ZW50ID0gc3RyaW5nOworICAgIHJldHVybiBk
aXYuaW5uZXJIVE1MOworfQorCiBmdW5jdGlvbiBydW5UZXN0cygpCiB7CiAgICAgZG9jdW1lbnQu
Ym9keS5pbm5lckhUTUwgPSAnPHByZSBpZD11bml0dGVzdC1yZXN1bHRzPjwvcHJlPic7CkBAIC01
NzMsNyArNjY4LDggQEAgZnVuY3Rpb24gcnVuVGVzdHMoKQogICAgICAgICAgICAgICAgIGVycm9y
ID0gZXJyOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICB2YXIgcmVzdWx0ID0gZXJyb3Ig
PyBlcnJvci50b1N0cmluZygpIDogJ1BBU1NFRCc7CisgICAgICAgICAgICB2YXIgcmVzdWx0ID0g
ZXJyb3IgPyBodG1sRXNjYXBlKGVycm9yLnRvU3RyaW5nKCkpIDogJ1BBU1NFRCc7CisKICAgICAg
ICAgICAgICQoJ3VuaXR0ZXN0LXJlc3VsdHMnKS5pbnNlcnRBZGphY2VudEhUTUwoImJlZm9yZUVu
ZCIsIG5hbWUgKyAnOiAnICsgcmVzdWx0ICsgJ1xuJyk7CiAgICAgICAgIH0KICAgICB9Cg==
</data>
<flag name="review"
          id="141324"
          type_id="1"
          status="+"
          setter="dbates"
    />
          </attachment>
      

    </bug>

</bugzilla>