<?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>64743</bug_id>
          
          <creation_ts>2011-07-18 12:16:43 -0700</creation_ts>
          <short_desc>update the flakiness dashboard to understand the new platforms/formats in test_expectations</short_desc>
          <delta_ts>2011-07-18 14:51:28 -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>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>mihaip</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>438624</commentid>
    <comment_count>0</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-07-18 12:16:43 -0700</bug_when>
    <thetext>update the flakiness dashboard to understand the new platforms/formats in test_expectations</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438627</commentid>
    <comment_count>1</comment_count>
      <attachid>101186</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-07-18 12:22:28 -0700</bug_when>
    <thetext>Created attachment 101186
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438651</commentid>
    <comment_count>2</comment_count>
      <attachid>101186</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-18 13:07:25 -0700</bug_when>
    <thetext>Comment on attachment 101186
Patch

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

Who&apos;s the right person to review this patch?

&gt; Tools/TestResultServer/static-dashboards/flakiness_dashboard.html:538
&gt; +            if (stringContains(currentBuildUppercase, &apos;10.5&apos;))

What about the future version 10.10.5 ?

&gt; Tools/TestResultServer/static-dashboards/flakiness_dashboard_tests.js:147
&gt; +function testPlatformAndBuildType()

Yay tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438661</commentid>
    <comment_count>3</comment_count>
      <attachid>101186</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-07-18 13:23:15 -0700</bug_when>
    <thetext>Comment on attachment 101186
Patch

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

&gt;&gt; Tools/TestResultServer/static-dashboards/flakiness_dashboard.html:538
&gt;&gt; +            if (stringContains(currentBuildUppercase, &apos;10.5&apos;))
&gt; 
&gt; What about the future version 10.10.5 ?

Should that time come we can deal with it. That&apos;s a hypothetical at least a few years out. Doesn&apos;t seem worth complicating the code over.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438663</commentid>
    <comment_count>4</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-07-18 13:25:10 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 101186 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=101186&amp;action=review
&gt; 
&gt; Who&apos;s the right person to review this patch?

Not sure. There&apos;s not many people who know this code. Mihai knows the dashboard code the best after me, but he doesn&apos;t know this specific code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438677</commentid>
    <comment_count>5</comment_count>
      <attachid>101186</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-18 13:39:03 -0700</bug_when>
    <thetext>Comment on attachment 101186
Patch

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

This change looks ok, except the PLATFORM_FALLBACKS rules, which are wrong.

&gt; Tools/TestResultServer/static-dashboards/dashboard_base.js:917
&gt; -function testResultsByBuild(builderResults)
&gt; +function resultsByBuild(builderResults)
&gt;  {
&gt;      var builderTestResults = builderResults[TESTS_KEY];
&gt;      var buildCount = builderResults[FIXABLE_COUNTS_KEY].length;
&gt; -    var testResultsByBuild = new Array(buildCount);
&gt; +    var resultsByBuild = new Array(buildCount);

Generally its a bad idea to have a local variable that shadows the name of the function it&apos;s in.  It&apos;s just confusing.

&gt; Tools/TestResultServer/static-dashboards/flakiness_dashboard.html:341
&gt;  var PLATFORM_FALLBACKS = {
&gt; -&apos;WIN&apos;: &apos;ALL&apos;,
&gt; -&apos;WIN-XP&apos;: &apos;WIN&apos;,
&gt; -&apos;WIN-VISTA&apos;: &apos;WIN&apos;,
&gt; -&apos;LINUX&apos;: &apos;ALL&apos;,
&gt; -&apos;MAC&apos;: &apos;ALL&apos;
&gt; +    &apos;WIN&apos;: &apos;ALL&apos;,
&gt; +    &apos;XP&apos;: &apos;WIN&apos;,
&gt; +    &apos;VISTA&apos;: &apos;WIN&apos;,
&gt; +    &apos;MAC&apos;: &apos;ALL&apos;,
&gt; +    &apos;SNOWLEOPARD&apos;: &apos;MAC&apos;,
&gt; +    &apos;LEOPARD&apos;: &apos;MAC&apos;,
&gt; +    &apos;LINUX&apos;: &apos;ALL&apos;,
&gt; +    &apos;LUCID&apos;: &apos;LINUX&apos;

These are not correct.

&gt; Tools/TestResultServer/static-dashboards/flakiness_dashboard_tests.js:80
&gt; -function assertEquals(resultsForTest, actual, expected)
&gt; +function assertEquals(actual, expected, message)

You really should just use qunit.  We have it in the tree now and it&apos;s quite nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438680</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-18 13:39:43 -0700</bug_when>
    <thetext>Here&apos;s a diagram of how fallback actually works:

https://docs.google.com/drawings/d/1z65SKkWrD4Slm6jobIphHwwRADyUtjOAxwGBVKBY8Kc/edit?hl=en_US</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438694</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-07-18 13:53:00 -0700</bug_when>
    <thetext>The Port classes know how fallback works. :)  We should ask them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438703</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-18 14:03:57 -0700</bug_when>
    <thetext>&gt; The Port classes know how fallback works. :)  We should ask them.

The flakiness dashboard doesn&apos;t have any way to talk to webkitpy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438710</commentid>
    <comment_count>9</comment_count>
      <attachid>101186</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-07-18 14:15:04 -0700</bug_when>
    <thetext>Comment on attachment 101186
Patch

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

Thanks for the review. I know it&apos;s hard to review non-trivial code that you don&apos;t know at all.

&gt;&gt; Tools/TestResultServer/static-dashboards/dashboard_base.js:917
&gt;&gt; +    var resultsByBuild = new Array(buildCount);
&gt; 
&gt; Generally its a bad idea to have a local variable that shadows the name of the function it&apos;s in.  It&apos;s just confusing.

K. I can rename it.

&gt;&gt; Tools/TestResultServer/static-dashboards/flakiness_dashboard.html:341
&gt;&gt; +    &apos;LUCID&apos;: &apos;LINUX&apos;
&gt; 
&gt; These are not correct.

TL;DR version: This map can probably go away, but it needs some code to be redone that is best left for a followup patch.

This is a bit confusing calling it fallbacks, but haven&apos;t come up with a better name. When we process the expectations lines for a test, we build up a tree like:
{
  WIN: {DEBUG: {modifiers: &apos;XP BUG123&apos;, expectations,: &apos;TIMEOUT&apos;}},
  XP: {DEBUG: {...}},
  LINUX: {ALL: {...}},
  ALL: {DEBUG: {...}}
}

When we&apos;re looking up the expectations for a given builder, we grab the platform (e.g. XP) and build type (e.g. DEBUG) and look it up in this data structure, if it&apos;s not there, then we grab the fallback for that platform from the PLATFORM_FALLBACKS object.

So, for an XP bot, we&apos;d find XP and return that. For a Leopard bot, we wouldn&apos;t find that, so we&apos;d look for a MAC entry. We would find that, so we&apos;d look for an ALL entry.

This is a data structure for representing the way lines in test_expectations.txt work. For example,
WIN DEBUG : foo/bar.html = FAIL
foo/bar.html = TIMEOUT

On Win/Debug, foo/bar.html is expected to FAIL, but on all other platforms it&apos;s expected to TIMEOUT.

I suppose a much simpler design would be to just have the data structure list every platform/buildType explicitly. It would use a ton more memory, but the code would be simpler. Memory is not really something we&apos;re trying to optimize here. :)

&gt;&gt; Tools/TestResultServer/static-dashboards/flakiness_dashboard_tests.js:80
&gt;&gt; +function assertEquals(actual, expected, message)
&gt; 
&gt; You really should just use qunit.  We have it in the tree now and it&apos;s quite nice.

I agree, I&apos;ll add a FIXME do so in a followup patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438718</commentid>
    <comment_count>10</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-18 14:24:47 -0700</bug_when>
    <thetext>To clarify my understanding, you&apos;re saying we have yet another platform inheritance strategy that&apos;s different than the one used to store expected results in the tree?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438719</commentid>
    <comment_count>11</comment_count>
      <attachid>101204</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-07-18 14:25:09 -0700</bug_when>
    <thetext>Created attachment 101204
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438722</commentid>
    <comment_count>12</comment_count>
      <attachid>101204</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-18 14:27:53 -0700</bug_when>
    <thetext>Comment on attachment 101204
Patch

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

&gt; Tools/TestResultServer/static-dashboards/flakiness_dashboard.html:871
&gt; +                              if (buildTypeKey == ALL)

This variable doesn&apos;t appear to be effected by this loop.  Should it be hoisted out of the look we can skip all this looping if we don&apos;t need to do anything?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438724</commentid>
    <comment_count>13</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-07-18 14:29:28 -0700</bug_when>
    <thetext>&gt; To clarify my understanding, you&apos;re saying we have yet another platform inheritance strategy that&apos;s different than the one used to store expected results in the tree?

Yes and no. It&apos;s not platforms in the LayoutTests sense. It&apos;s OS&apos;es really.

-WIN is syntactic sugar for XP/VISTA/WIN7.
-MAC is syntactic sugar for LEOPARD/SNOWLEOPARD.
-LINUX is syntactic sugar for LUCID. (and presumably MAVERICK once we support that)
-If you don&apos;t list a platform at all, it&apos;s sugar for the union of all of the above.

The fact that this code uses a fallback strategy to implement that logic is excessively complicated in retrospect and should go away.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438725</commentid>
    <comment_count>14</comment_count>
      <attachid>101204</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-07-18 14:31:07 -0700</bug_when>
    <thetext>Comment on attachment 101204
Patch

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

&gt;&gt; Tools/TestResultServer/static-dashboards/flakiness_dashboard.html:871
&gt;&gt; +                              if (buildTypeKey == ALL)
&gt; 
&gt; This variable doesn&apos;t appear to be effected by this loop.  Should it be hoisted out of the look we can skip all this looping if we don&apos;t need to do anything?

Good point. This function will go away entirely in my followup patch that kills the concept of PLATFORM_FALLBACKS, so I&apos;d rather not spend time optimizing this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438728</commentid>
    <comment_count>15</comment_count>
      <attachid>101204</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-18 14:33:11 -0700</bug_when>
    <thetext>Comment on attachment 101204
Patch

Ok.  The only other changes in this patch appear to be renaming bound variables.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438743</commentid>
    <comment_count>16</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-07-18 14:51:28 -0700</bug_when>
    <thetext>Committed r91212: &lt;http://trac.webkit.org/changeset/91212&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101186</attachid>
            <date>2011-07-18 12:22:28 -0700</date>
            <delta_ts>2011-07-18 14:25:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64743-20110718122227.patch</filename>
            <type>text/plain</type>
            <size>18532</size>
            <attacher name="Ojan Vafai">ojan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTExOTQKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCBkYTEwYWVlZDFmMmUyYjRiMTM3YWExMjM1MmY5M2EzN2Nj
MTczZTFlLi4yOGM3YjhjZmZmMDFlOTE0OWRlN2FhMDE1MzQxY2M5NDY4NTQwNTc2IDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTgg
QEAKKzIwMTEtMDctMTggIE9qYW4gVmFmYWkgIDxvamFuQGNocm9taXVtLm9yZz4KKworICAgICAg
ICB1cGRhdGUgdGhlIGZsYWtpbmVzcyBkYXNoYm9hcmQgdG8gdW5kZXJzdGFuZCB0aGUgbmV3IHBs
YXRmb3Jtcy9mb3JtYXRzIGluIHRlc3RfZXhwZWN0YXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NDc0MworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSB0ZXN0IGV4cGVjdGF0aW9ucyBmb3JtYXQg
Y2hhbmdlZCBhIGxvbmcgdGltZSBhZ28gYW5kIHRoZSBmbGFraW5lc3MgZGFzaGJvYXJkCisgICAg
ICAgIHdhcyBuZXZlciB1cGRhdGVkIHRvIG1hdGNoLgorCisgICAgICAgICogVGVzdFJlc3VsdFNl
cnZlci9zdGF0aWMtZGFzaGJvYXJkcy9kYXNoYm9hcmRfYmFzZS5qczoKKyAgICAgICAgKiBUZXN0
UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2ZsYWtpbmVzc19kYXNoYm9hcmQuaHRtbDoK
KyAgICAgICAgKiBUZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2ZsYWtpbmVzc19k
YXNoYm9hcmRfdGVzdHMuanM6CisgICAgICAgICogVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFz
aGJvYXJkcy90aW1lbGluZV9leHBsb3Jlci5odG1sOgorCiAyMDExLTA3LTE4ICBTaGVyaWZmIEJv
dCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBy
b2xsaW5nIG91dCByOTExMzIgYW5kIHI5MTEzNS4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSZXN1
bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvZGFzaGJvYXJkX2Jhc2UuanMgYi9Ub29scy9UZXN0
UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2Rhc2hib2FyZF9iYXNlLmpzCmluZGV4IDY5
ZjNlMTU4MjM0ZjI1MTg4ZDA1ZTI3ODk0MmNjZGNkYTU2ODFjZTkuLjgxYWQ4ZGUxNDRmMGI4Mzgy
NTVjYzA5NTc2OTAyMDc2NmYyM2UzMWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2
ZXIvc3RhdGljLWRhc2hib2FyZHMvZGFzaGJvYXJkX2Jhc2UuanMKKysrIGIvVG9vbHMvVGVzdFJl
c3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9kYXNoYm9hcmRfYmFzZS5qcwpAQCAtOTEwLDEx
ICs5MTAsMTEgQEAgZnVuY3Rpb24gd2ViS2l0UmV2aXNpb25MaW5rKHJlc3VsdHMsIGluZGV4KQog
Ly8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zaWRlcmVkIGZsYWt5IChtb3Jl
IHRoYW4gb25lIHNpbmdsZS1idWlsZCBmYWlsdXJlKS4KIC8vICAgICAtIGZsYWt5RGVsdGFzQnlC
dWlsZDogYXJyYXkgb2YgYnVpbGRzLCBmb3IgZWFjaCBidWlsZCBhIGNvdW50IG9mIGZsYWt5CiAv
LyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0IHJl
c3VsdHMgYnkgZXhwZWN0YXRpb24sIGFzIHdlbGwgYXMgYSB0b3RhbC4KLWZ1bmN0aW9uIHRlc3RS
ZXN1bHRzQnlCdWlsZChidWlsZGVyUmVzdWx0cykKK2Z1bmN0aW9uIHJlc3VsdHNCeUJ1aWxkKGJ1
aWxkZXJSZXN1bHRzKQogewogICAgIHZhciBidWlsZGVyVGVzdFJlc3VsdHMgPSBidWlsZGVyUmVz
dWx0c1tURVNUU19LRVldOwogICAgIHZhciBidWlsZENvdW50ID0gYnVpbGRlclJlc3VsdHNbRklY
QUJMRV9DT1VOVFNfS0VZXS5sZW5ndGg7Ci0gICAgdmFyIHRlc3RSZXN1bHRzQnlCdWlsZCA9IG5l
dyBBcnJheShidWlsZENvdW50KTsKKyAgICB2YXIgcmVzdWx0c0J5QnVpbGQgPSBuZXcgQXJyYXko
YnVpbGRDb3VudCk7CiAgICAgdmFyIGZsYWt5RGVsdGFzQnlCdWlsZCA9IG5ldyBBcnJheShidWls
ZENvdW50KTsKIAogICAgIC8vIFByZS1zaXppbmcgdGhlIHRlc3QgcmVzdWx0IGFycmF5cyBmb3Ig
ZWFjaCBidWlsZCBzYXZlcyB1cyB+MjUwbXMKQEAgLTkyMiw4ICs5MjIsOCBAQCBmdW5jdGlvbiB0
ZXN0UmVzdWx0c0J5QnVpbGQoYnVpbGRlclJlc3VsdHMpCiAgICAgZm9yICh2YXIgdGVzdE5hbWUg
aW4gYnVpbGRlclRlc3RSZXN1bHRzKQogICAgICAgICB0ZXN0Q291bnQrKzsKICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IGJ1aWxkQ291bnQ7IGkrKykgewotICAgICAgICB0ZXN0UmVzdWx0c0J5QnVp
bGRbaV0gPSBuZXcgQXJyYXkodGVzdENvdW50KTsKLSAgICAgICAgdGVzdFJlc3VsdHNCeUJ1aWxk
W2ldW3Rlc3RDb3VudCAtIDFdID0gdW5kZWZpbmVkOworICAgICAgICByZXN1bHRzQnlCdWlsZFtp
XSA9IG5ldyBBcnJheSh0ZXN0Q291bnQpOworICAgICAgICByZXN1bHRzQnlCdWlsZFtpXVt0ZXN0
Q291bnQgLSAxXSA9IHVuZGVmaW5lZDsKICAgICAgICAgZmxha3lEZWx0YXNCeUJ1aWxkW2ldID0g
e307CiAgICAgfQogCkBAIC05NDgsNyArOTQ4LDcgQEAgZnVuY3Rpb24gdGVzdFJlc3VsdHNCeUJ1
aWxkKGJ1aWxkZXJSZXN1bHRzKQogICAgICAgICAgICAgICAgIG9uZUJ1aWxkRmFpbHVyZUNvdW50
Kys7CiAKICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgY291bnQ7IGorKykgewotICAg
ICAgICAgICAgICAgIHRlc3RSZXN1bHRzQnlCdWlsZFtjdXJyZW50QnVpbGRJbmRleCsrXVt0ZXN0
SW5kZXhdID0gdmFsdWU7CisgICAgICAgICAgICAgICAgcmVzdWx0c0J5QnVpbGRbY3VycmVudEJ1
aWxkSW5kZXgrK11bdGVzdEluZGV4XSA9IHZhbHVlOwogICAgICAgICAgICAgICAgIGlmIChjdXJy
ZW50QnVpbGRJbmRleCA9PSBidWlsZENvdW50KQogICAgICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIH0KQEAgLTk5MSw3ICs5OTEsNyBAQCBmdW5jdGlvbiB0ZXN0UmVzdWx0c0J5
QnVpbGQoYnVpbGRlclJlc3VsdHMpCiAKICAgICByZXR1cm4gewogICAgICAgICB0ZXN0TmFtZXM6
IHRlc3ROYW1lcywKLSAgICAgICAgcmVzdWx0c0J5QnVpbGQ6IHRlc3RSZXN1bHRzQnlCdWlsZCwK
KyAgICAgICAgcmVzdWx0c0J5QnVpbGQ6IHJlc3VsdHNCeUJ1aWxkLAogICAgICAgICBmbGFreVRl
c3RzOiBmbGFreVRlc3RzLAogICAgICAgICBmbGFreURlbHRhc0J5QnVpbGQ6IGZsYWt5RGVsdGFz
QnlCdWlsZAogICAgIH07CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRp
Yy1kYXNoYm9hcmRzL2ZsYWtpbmVzc19kYXNoYm9hcmQuaHRtbCBiL1Rvb2xzL1Rlc3RSZXN1bHRT
ZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvZmxha2luZXNzX2Rhc2hib2FyZC5odG1sCmluZGV4IDRj
YzcyMzQ3ZDNmMjQ4NTUxNGRjYjU2NmMzY2ViNDRiM2MxZmFkMTAuLjY0NjlmMTZkYTJkOWVhZWI1
ZDFlNWUyNzNhNDljM2QzMmM1MmMwN2EgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2
ZXIvc3RhdGljLWRhc2hib2FyZHMvZmxha2luZXNzX2Rhc2hib2FyZC5odG1sCisrKyBiL1Rvb2xz
L1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvZmxha2luZXNzX2Rhc2hib2FyZC5o
dG1sCkBAIC0zMTksMjQgKzMxOSwzMSBAQCB2YXIgR1RFU1RfRkFJTFNfTUFSS0VSID0gJ1wuRkFJ
TFNfJzsKIHZhciBURVNUX1VSTF9CQVNFX1BBVEhfVFJBQyA9ICdodHRwOi8vdHJhYy53ZWJraXQu
b3JnL2Jyb3dzZXIvdHJ1bmsvTGF5b3V0VGVzdHMvJzsKIHZhciBURVNUX1VSTF9CQVNFX1BBVEgg
PSAiaHR0cDovL3N2bi53ZWJraXQub3JnL3JlcG9zaXRvcnkvd2Via2l0L3RydW5rL0xheW91dFRl
c3RzLyI7CiB2YXIgVEVTVF9SRVNVTFRTX0JBU0VfUEFUSCA9ICdodHRwOi8vYnVpbGQuY2hyb21p
dW0ub3JnL2YvY2hyb21pdW0vbGF5b3V0X3Rlc3RfcmVzdWx0cy8nOworCisvLyBGSVhNRTogTWFr
ZSB0aGlzIGFuIGFycmF5LgogdmFyIFBMQVRGT1JNUyA9IHsKLSdNQUMnOiAnTUFDJywKLSdMSU5V
WCc6ICdMSU5VWCcsCi0nV0lOJzogJ1dJTicsCi0nV0lOLVhQJzogJ1dJTi1YUCcsCi0nV0lOLVZJ
U1RBJzogJ1dJTi1WSVNUQScKKyAgICAnU05PV0xFT1BBUkQnOiAnU05PV0xFT1BBUkQnLAorICAg
ICdMRU9QQVJEJzogJ0xFT1BBUkQnLAorICAgICdYUCc6ICdYUCcsCisgICAgJ1ZJU1RBJzogJ1ZJ
U1RBJywKKyAgICAnV0lONyc6ICdXSU43JywKKyAgICAnTFVDSUQnOiAnTFVDSUQnCiB9OworCiB2
YXIgUExBVEZPUk1fRkFMTEJBQ0tTID0gewotJ1dJTic6ICdBTEwnLAotJ1dJTi1YUCc6ICdXSU4n
LAotJ1dJTi1WSVNUQSc6ICdXSU4nLAotJ0xJTlVYJzogJ0FMTCcsCi0nTUFDJzogJ0FMTCcKKyAg
ICAnV0lOJzogJ0FMTCcsCisgICAgJ1hQJzogJ1dJTicsCisgICAgJ1ZJU1RBJzogJ1dJTicsCisg
ICAgJ01BQyc6ICdBTEwnLAorICAgICdTTk9XTEVPUEFSRCc6ICdNQUMnLAorICAgICdMRU9QQVJE
JzogJ01BQycsCisgICAgJ0xJTlVYJzogJ0FMTCcsCisgICAgJ0xVQ0lEJzogJ0xJTlVYJwogfTsK
IHZhciBCVUlMRF9UWVBFUyA9IHsnREVCVUcnOiAnREJHJywgJ1JFTEVBU0UnOiAnUkVMRUFTRSd9
OwogdmFyIE1JTl9TRUNPTkRTX0ZPUl9TTE9XX1RFU1QgPSA0OwogdmFyIE1JTl9TRUNPTkRTX0ZP
Ul9TTE9XX1RFU1RfREVCVUcgPSAyICogTUlOX1NFQ09ORFNfRk9SX1NMT1dfVEVTVDsKLXZhciBG
QUlMX1JFU1VMVFMgPSBbJ0lNQUdFJywgJ0lNQUdFK1RFWFQnLCAnVEVYVCcsICdTSU1QTElGSUVE
JywgJ01JU1NJTkcnXTsKK3ZhciBGQUlMX1JFU1VMVFMgPSBbJ0lNQUdFJywgJ0lNQUdFK1RFWFQn
LCAnVEVYVCcsICdNSVNTSU5HJ107CiB2YXIgQ0hVTktfU0laRSA9IDI1OwogdmFyIE1BWF9SRVNV
TFRTID0gMTUwMDsKIApAQCAtNTI1LDggKzUzMiwyNyBAQCBmdW5jdGlvbiBwbGF0Zm9ybUFuZEJ1
aWxkVHlwZShidWlsZGVyTmFtZSkKICAgICAgICAgLy8gSWYgdGhlIGJ1aWxkIG5hbWUgZG9lcyBu
b3QgY29udGFpbiBhIHBsYXRmb3JtCiAgICAgICAgIC8vIG9yIGJ1aWxkIHR5cGUsIGFzc3VtZSBX
aW5kb3dzIFJlbGVhc2UuCiAgICAgICAgIHZhciBjdXJyZW50QnVpbGRVcHBlcmNhc2UgPSBidWls
ZGVyTmFtZS50b1VwcGVyQ2FzZSgpOwotICAgICAgICB2YXIgcGxhdGZvcm0gPSBtYXRjaGluZ0Vs
ZW1lbnQoY3VycmVudEJ1aWxkVXBwZXJjYXNlLCBQTEFURk9STVMpIHx8ICdXSU4nOwotICAgICAg
ICB2YXIgYnVpbGRUeXBlID0gbWF0Y2hpbmdFbGVtZW50KGN1cnJlbnRCdWlsZFVwcGVyY2FzZSwg
QlVJTERfVFlQRVMpIHx8ICdSRUxFQVNFJzsKKyAgICAgICAgCisgICAgICAgIHZhciBwbGF0Zm9y
bTsKKyAgICAgICAgaWYgKHN0cmluZ0NvbnRhaW5zKGN1cnJlbnRCdWlsZFVwcGVyY2FzZSwgJ01B
QycpKSB7CisgICAgICAgICAgICBpZiAoc3RyaW5nQ29udGFpbnMoY3VycmVudEJ1aWxkVXBwZXJj
YXNlLCAnMTAuNScpKQorICAgICAgICAgICAgICAgIHBsYXRmb3JtID0gJ0xFT1BBUkQnOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHBsYXRmb3JtID0gJ1NOT1dMRU9QQVJEJzsK
KyAgICAgICAgfSBlbHNlIGlmIChzdHJpbmdDb250YWlucyhjdXJyZW50QnVpbGRVcHBlcmNhc2Us
ICdXSU43JykpCisgICAgICAgICAgICBwbGF0Zm9ybSA9ICdXSU43JzsKKyAgICAgICAgZWxzZSBp
ZiAoc3RyaW5nQ29udGFpbnMoY3VycmVudEJ1aWxkVXBwZXJjYXNlLCAnVklTVEEnKSkKKyAgICAg
ICAgICAgIHBsYXRmb3JtID0gJ1ZJU1RBJzsKKyAgICAgICAgZWxzZSBpZiAoc3RyaW5nQ29udGFp
bnMoY3VycmVudEJ1aWxkVXBwZXJjYXNlLCAnV0lOJykpCisgICAgICAgICAgICBwbGF0Zm9ybSA9
ICdYUCc7CisgICAgICAgIGVsc2UgaWYgKHN0cmluZ0NvbnRhaW5zKGN1cnJlbnRCdWlsZFVwcGVy
Y2FzZSwgJ0xJTlVYJykpCisgICAgICAgICAgICBwbGF0Zm9ybSA9ICdMVUNJRCc7CisgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgcGxhdGZvcm0gPSAnJzsKKyAgICAgICAgICAgIGNvbnNvbGUu
bG9nKCdDb3VsZCBub3QgcmVzb2x2ZSBwbGF0Zm9ybSBmb3IgYnVpbGRlcjogJyArIGJ1aWxkZXJO
YW1lKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdmFyIGJ1aWxkVHlwZSA9IHN0cmlu
Z0NvbnRhaW5zKGN1cnJlbnRCdWlsZFVwcGVyY2FzZSwgJ0RCRycpID8gJ0RFQlVHJyA6ICdSRUxF
QVNFJzsKICAgICAgICAgZ19wZXJCdWlsZGVyUGxhdGZvcm1BbmRCdWlsZFR5cGVbYnVpbGRlck5h
bWVdID0ge3BsYXRmb3JtOiBwbGF0Zm9ybSwgYnVpbGRUeXBlOiBidWlsZFR5cGV9OwogICAgIH0K
ICAgICByZXR1cm4gZ19wZXJCdWlsZGVyUGxhdGZvcm1BbmRCdWlsZFR5cGVbYnVpbGRlck5hbWVd
OwpAQCAtNzMzLDcgKzc1OSw3IEBAIGZ1bmN0aW9uIGdldEV4cGVjdGF0aW9ucyh0ZXN0LCBwbGF0
Zm9ybSwgYnVpbGRUeXBlKQogCiAgICAgdmFyIHBsYXRmb3JtT2JqZWN0OwogICAgIHdoaWxlIChw
bGF0Zm9ybSAmJiAhKHBsYXRmb3JtT2JqZWN0ID0gdGVzdE9iamVjdFtwbGF0Zm9ybV0pKQotICAg
ICAgcGxhdGZvcm0gPSBQTEFURk9STV9GQUxMQkFDS1NbcGxhdGZvcm1dOworICAgICAgICBwbGF0
Zm9ybSA9IFBMQVRGT1JNX0ZBTExCQUNLU1twbGF0Zm9ybV07CiAKICAgICBpZiAocGxhdGZvcm1P
YmplY3QpIHsKICAgICAgICAgaWYgKHBsYXRmb3JtT2JqZWN0W2J1aWxkVHlwZV0pCkBAIC04MzYs
MTYgKzg2MiwxNCBAQCBmdW5jdGlvbiBhZGRUZXN0VG9BbGxFeHBlY3RhdGlvbnModGVzdCwgZXhw
ZWN0YXRpb25zKQogICAgICAgICBhZGRGYWxsYmFja3MoZnVuY3Rpb24ocGxhdGZvcm1LZXkpIHsK
ICAgICAgICAgICAgIGFkZEZhbGxiYWNrcyhmdW5jdGlvbihidWlsZFR5cGVLZXkpIHsKICAgICAg
ICAgICAgICAgICAvLyBTZXR0aW5nIHRoZSBBTEwga2V5IG92ZXJyaWRlcyBhbnkgcHJldmlvdXNs
eSBzZWVuIGV4cGVjdGF0aW9ucy4KLSAgICAgICAgICAgICAgICBpZiAocGxhdGZvcm1LZXkgPT0g
QUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIGJyb2tlbi4gUExB
VEZPUk1TIGlzIGFuIG9iamVjdCwgbm90IGFuIGFycmF5LgotICAgICAgICAgICAgICAgICAgICAv
LyBGaWd1cmUgb3V0IGlmIHdlIHNob3VsZCBqdXN0IGJlIGRlbGV0aW5nIHRoaXMgb3IgZml4aW5n
IGl0LgotICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IFBMQVRGT1JNUy5s
ZW5ndGg7IGkrKykgewotICAgICAgICAgICAgICAgICAgICAgIGlmIChQTEFURk9STVNbaV0gaW4g
Z19hbGxFeHBlY3RhdGlvbnNbdGVzdF0pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNl
dHRpbmcgdGhlIEFMTCBrZXkgb3ZlcnJpZGVzIGFueSBwcmV2aW91c2x5IHNlZW4KLSAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIGV4cGVjdGF0aW9ucy4KLSAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChidWlsZFR5cGVLZXkgPT0gQUxMKQotICAgICAgICAgICAgICAgICAgICAgICAgICBnX2Fs
bEV4cGVjdGF0aW9uc1t0ZXN0XVtQTEFURk9STVNbaV1dID0ge307Ci0gICAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChwbGF0Zm9ybUtleSA9PSBBTEwgJiYgZ19hbGxF
eHBlY3RhdGlvbnNbdGVzdF0pIHsKKyAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgcGxhdGZv
cm0gaW4gUExBVEZPUk1fRkFMTEJBQ0tTKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChwbGF0Zm9ybSBpbiBnX2FsbEV4cGVjdGF0aW9uc1t0ZXN0XSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gU2V0dGluZyB0aGUgQUxMIGtleSBvdmVycmlkZXMgYW55IHByZXZp
b3VzbHkgc2VlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXhwZWN0YXRpb25z
LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJ1aWxkVHlwZUtleSA9PSBBTEwp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19hbGxFeHBlY3RhdGlvbnNbdGVz
dF1bcGxhdGZvcm1dID0ge307CisgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYnVpbGRUeXBlS2V5ID09
IEFMTCAmJiBnX2FsbEV4cGVjdGF0aW9uc1t0ZXN0XSkKICAgICAgICAgICAgICAgICAgICAgZ19h
bGxFeHBlY3RhdGlvbnNbdGVzdF1bcGxhdGZvcm1LZXldID0ge30KQEAgLTg1OSw3ICs4ODMsNyBA
QCBmdW5jdGlvbiBhZGRUZXN0VG9BbGxFeHBlY3RhdGlvbnModGVzdCwgZXhwZWN0YXRpb25zKQog
CiAgICAgICAgICAgICAgICAgdGVzdEhvbGRlcltwbGF0Zm9ybUtleV1bYnVpbGRUeXBlS2V5XSA9
IGV4cGVjdGF0aW9uc1tqXTsKICAgICAgICAgICAgIH0sIG1vZGlmaWVycywgQlVJTERfVFlQRVMp
OwotICAgICAgICB9LCBtb2RpZmllcnMsIFBMQVRGT1JNUyk7CisgICAgICAgIH0sIG1vZGlmaWVy
cywgUExBVEZPUk1fRkFMTEJBQ0tTKTsKICAgICB9CiB9CiAKQEAgLTk4Niw3ICsxMDEwLDcgQEAg
ZnVuY3Rpb24gcHJvY2Vzc1Rlc3RSdW5zRm9yQnVpbGRlcihidWlsZGVyTmFtZSkKICAgICAgICAg
dmFyIHJhd1Jlc3VsdHMgPSByYXdUZXN0LnJlc3VsdHM7CiAgICAgICAgIHJlc3VsdHNGb3JUZXN0
LnJhd1Jlc3VsdHMgPSByYXdSZXN1bHRzOwogCi0gICAgICAgIC8vIEZJWE1FOiBTd2l0Y2ggdG8g
dGVzdFJlc3VsdHNCeUJ1aWxkCisgICAgICAgIC8vIEZJWE1FOiBTd2l0Y2ggdG8gcmVzdWx0c0J5
QnVpbGQKICAgICAgICAgdmFyIHRpbWVzID0gcmVzdWx0c0ZvclRlc3QucmF3VGltZXM7CiAgICAg
ICAgIHZhciBudW1UaW1lc1NlZW4gPSAwOwogICAgICAgICB2YXIgbnVtUmVzdWx0c1NlZW4gPSAw
OwpAQCAtMTY4OSw2ICsxNzEzLDcgQEAgZnVuY3Rpb24gZ2VuZXJhdGVQYWdlRm9yRXhwZWN0YXRp
b25zVXBkYXRlKCkKICAgICAgICAgdmFyIHJlc3VsdHMgPSBnX3Rlc3RUb1Jlc3VsdHNNYXBbdGVz
dF07CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzdWx0cy5sZW5ndGg7IGkrKykgewog
ICAgICAgICAgICAgdmFyIHRoaXNSZXN1bHQgPSByZXN1bHRzW2ldOworICAgICAgICAgICAgCiAg
ICAgICAgICAgICBpZiAoIXRoaXNSZXN1bHQubWlzc2luZyAmJiAhdGhpc1Jlc3VsdC5leHRyYSkK
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJlc3Vs
dFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9mbGFraW5lc3NfZGFzaGJvYXJkX3Rlc3RzLmpzIGIv
VG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9mbGFraW5lc3NfZGFzaGJv
YXJkX3Rlc3RzLmpzCmluZGV4IDAxODg3M2IwMmRiOGFjMzEyMDcwMWY3OTU4OTllMWRmYzdkNTc5
OTIuLjZlYTAyNWMxNjNkNjc3MWJkMjI5Y2Y2NGUzNWE4NjkwNzIzNWI1YjAgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvZmxha2luZXNzX2Rhc2hi
b2FyZF90ZXN0cy5qcworKysgYi9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9h
cmRzL2ZsYWtpbmVzc19kYXNoYm9hcmRfdGVzdHMuanMKQEAgLTQ1LDYgKzQ1LDggQEAgZnVuY3Rp
b24gc2V0dXBFeHBlY3RhdGlvbnNUZXN0KCkKICAgICBnX2V4cGVjdGF0aW9uc0J5VGVzdCA9IHt9
OwogICAgIGdfcmVzdWx0c0J5QnVpbGRlciA9IHt9OwogICAgIGdfYnVpbGRlcnMgPSB7fTsKKyAg
ICBnX2FsbEV4cGVjdGF0aW9ucyA9IG51bGw7CisgICAgZ19hbGxUZXN0cyA9IG51bGw7CiB9CiAK
IC8vIFByb2Nlc3NlcyB0aGUgZXhwZWN0YXRpb25zIGZvciBhIHRlc3QgYW5kIGFzc2VydHMgdGhh
dCB0aGUgZmluYWwgZXhwZWN0YXRpb25zCkBAIC03MCwyMSArNzIsMjggQEAgZnVuY3Rpb24gcnVu
RXhwZWN0YXRpb25zVGVzdChidWlsZGVyLCB0ZXN0LCBleHBlY3RhdGlvbnMsIG1vZGlmaWVycykK
ICAgICB2YXIgcmVzdWx0c0ZvclRlc3QgPSBjcmVhdGVSZXN1bHRzT2JqZWN0Rm9yVGVzdCh0ZXN0
LCBidWlsZGVyKTsKICAgICBwb3B1bGF0ZUV4cGVjdGF0aW9uc0RhdGEocmVzdWx0c0ZvclRlc3Qp
OwogCi0gICAgYXNzZXJ0RXF1YWxzKHJlc3VsdHNGb3JUZXN0LCByZXN1bHRzRm9yVGVzdC5leHBl
Y3RhdGlvbnMsIGV4cGVjdGF0aW9ucyk7Ci0gICAgYXNzZXJ0RXF1YWxzKHJlc3VsdHNGb3JUZXN0
LCByZXN1bHRzRm9yVGVzdC5tb2RpZmllcnMsIG1vZGlmaWVycyk7CisgICAgdmFyIG1lc3NhZ2Ug
PSAnQnVpbGRlcjogJyArIHJlc3VsdHNGb3JUZXN0LmJ1aWxkZXIgKyAnIHRlc3Q6ICcgKyByZXN1
bHRzRm9yVGVzdC50ZXN0OworICAgIGFzc2VydEVxdWFscyhyZXN1bHRzRm9yVGVzdC5leHBlY3Rh
dGlvbnMsIGV4cGVjdGF0aW9ucywgbWVzc2FnZSk7CisgICAgYXNzZXJ0RXF1YWxzKHJlc3VsdHNG
b3JUZXN0Lm1vZGlmaWVycywgbW9kaWZpZXJzLCBtZXNzYWdlKTsKIH0KIAotZnVuY3Rpb24gYXNz
ZXJ0RXF1YWxzKHJlc3VsdHNGb3JUZXN0LCBhY3R1YWwsIGV4cGVjdGVkKQorZnVuY3Rpb24gYXNz
ZXJ0RXF1YWxzKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpCiB7Ci0gICAgaWYgKGV4cGVjdGVk
ICE9PSBhY3R1YWwpCi0gICAgICAgIHRocm93IEVycm9yKCdCdWlsZGVyOiAnICsgcmVzdWx0c0Zv
clRlc3QuYnVpbGRlciArICcgdGVzdDogJyArIHJlc3VsdHNGb3JUZXN0LnRlc3QgKyAnIGdvdDog
JyArIGFjdHVhbCArICcgZXhwZWN0ZWQ6ICcgKyBleHBlY3RlZCk7CisgICAgaWYgKGV4cGVjdGVk
ICE9PSBhY3R1YWwpIHsKKyAgICAgICAgaWYgKG1lc3NhZ2UpCisgICAgICAgICAgICBtZXNzYWdl
ICs9ICcgJzsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbWVzc2FnZSA9ICcnOworCisgICAg
ICAgIHRocm93IEVycm9yKG1lc3NhZ2UgKyAnZ290OiAnICsgYWN0dWFsICsgJyBleHBlY3RlZDog
JyArIGV4cGVjdGVkKTsKKyAgICB9CiB9CiAKIGZ1bmN0aW9uIHRocm93RXJyb3IocmVzdWx0c0Zv
clRlc3RzLCBhY3R1YWwsIGV4cGVjdGVkKSB7fQogCiBmdW5jdGlvbiB0ZXN0UmVsZWFzZUZhaWwo
KQogewotICAgIHZhciBidWlsZGVyID0gJ1dlYmtpdCc7CisgICAgdmFyIGJ1aWxkZXIgPSAnV2Vi
a2l0IFdpbic7CiAgICAgdmFyIHRlc3QgPSAnZm9vLzEuaHRtbCc7CiAgICAgdmFyIGV4cGVjdGF0
aW9uc0FycmF5ID0gWwogICAgICAgICB7J21vZGlmaWVycyc6ICdSRUxFQVNFJywgJ2V4cGVjdGF0
aW9ucyc6ICdGQUlMJ30KQEAgLTk1LDcgKzEwNCw3IEBAIGZ1bmN0aW9uIHRlc3RSZWxlYXNlRmFp
bCgpCiAKIGZ1bmN0aW9uIHRlc3RSZWxlYXNlRmFpbERlYnVnQ3Jhc2hSZWxlYXNlQnVpbGRlcigp
CiB7Ci0gICAgdmFyIGJ1aWxkZXIgPSAnV2Via2l0JzsKKyAgICB2YXIgYnVpbGRlciA9ICdXZWJr
aXQgV2luJzsKICAgICB2YXIgdGVzdCA9ICdmb28vMS5odG1sJzsKICAgICB2YXIgZXhwZWN0YXRp
b25zQXJyYXkgPSBbCiAgICAgICAgIHsnbW9kaWZpZXJzJzogJ1JFTEVBU0UnLCAnZXhwZWN0YXRp
b25zJzogJ0ZBSUwnfSwKQEAgLTEwNyw3ICsxMTYsNyBAQCBmdW5jdGlvbiB0ZXN0UmVsZWFzZUZh
aWxEZWJ1Z0NyYXNoUmVsZWFzZUJ1aWxkZXIoKQogCiBmdW5jdGlvbiB0ZXN0UmVsZWFzZUZhaWxE
ZWJ1Z0NyYXNoRGVidWdCdWlsZGVyKCkKIHsKLSAgICB2YXIgYnVpbGRlciA9ICdXZWJraXQoZGJn
KSc7CisgICAgdmFyIGJ1aWxkZXIgPSAnV2Via2l0IFdpbiAoZGJnKSc7CiAgICAgdmFyIHRlc3Qg
PSAnZm9vLzEuaHRtbCc7CiAgICAgdmFyIGV4cGVjdGF0aW9uc0FycmF5ID0gWwogICAgICAgICB7
J21vZGlmaWVycyc6ICdSRUxFQVNFJywgJ2V4cGVjdGF0aW9ucyc6ICdGQUlMJ30sCkBAIC0xMjcs
MTQgKzEzNiw4MSBAQCBmdW5jdGlvbiB0ZXN0T3ZlcnJpZGVKdXN0QnVpbGRUeXBlKCkKICAgICAg
ICAgeydtb2RpZmllcnMnOiAnV09OVEZJWCBNQUMnLCAnZXhwZWN0YXRpb25zJzogJ0ZBSUwnfSwK
ICAgICAgICAgeydtb2RpZmllcnMnOiAnTElOVVggREVCVUcnLCAnZXhwZWN0YXRpb25zJzogJ0NS
QVNIJ30sCiAgICAgXTsKLSAgICBydW5FeHBlY3RhdGlvbnNUZXN0KCdXZWJraXQnLCB0ZXN0LCAn
RkFJTCBQQVNTIFRJTUVPVVQnLCAnV09OVEZJWCcpOwotICAgIHJ1bkV4cGVjdGF0aW9uc1Rlc3Qo
J1dlYmtpdCAoZGJnKSgzKScsIHRlc3QsICdGQUlMIFBBU1MgVElNRU9VVCcsICdXT05URklYJyk7
CisgICAgcnVuRXhwZWN0YXRpb25zVGVzdCgnV2Via2l0IFdpbicsIHRlc3QsICdGQUlMIFBBU1Mg
VElNRU9VVCcsICdXT05URklYJyk7CisgICAgcnVuRXhwZWN0YXRpb25zVGVzdCgnV2Via2l0IFdp
biAoZGJnKSgzKScsIHRlc3QsICdGQUlMIFBBU1MgVElNRU9VVCcsICdXT05URklYJyk7CiAgICAg
cnVuRXhwZWN0YXRpb25zVGVzdCgnV2Via2l0IExpbnV4JywgdGVzdCwgJ0ZBSUwgUEFTUyBUSU1F
T1VUJywgJ1dPTlRGSVgnKTsKICAgICBydW5FeHBlY3RhdGlvbnNUZXN0KCdXZWJraXQgTGludXgg
KGRiZykoMyknLCB0ZXN0LCAnQ1JBU0gnLCAnTElOVVggREVCVUcnKTsKICAgICBydW5FeHBlY3Rh
dGlvbnNUZXN0KCdXZWJraXQgTWFjMTAuNScsIHRlc3QsICdGQUlMJywgJ1dPTlRGSVggTUFDJyk7
CiAgICAgcnVuRXhwZWN0YXRpb25zVGVzdCgnV2Via2l0IE1hYzEwLjUgKGRiZykoMyknLCB0ZXN0
LCAnRkFJTCcsICdXT05URklYIE1BQycpOwogfQogCitmdW5jdGlvbiB0ZXN0UGxhdGZvcm1BbmRC
dWlsZFR5cGUoKQoreworICAgIHZhciBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRlc3QgPSBmdW5j
dGlvbihidWlsZGVyLCBleHBlY3RlZFBsYXRmb3JtLCBleHBlY3RlZEJ1aWxkVHlwZSkgeworICAg
ICAgICBnX3BlckJ1aWxkZXJQbGF0Zm9ybUFuZEJ1aWxkVHlwZSA9IHt9OworICAgICAgICBidWls
ZEluZm8gPSBwbGF0Zm9ybUFuZEJ1aWxkVHlwZShidWlsZGVyKTsKKyAgICAgICAgdmFyIG1lc3Nh
Z2UgPSAnQnVpbGRlcjogJyArIGJ1aWxkZXI7CisgICAgICAgIGFzc2VydEVxdWFscyhidWlsZElu
Zm8ucGxhdGZvcm0sIGV4cGVjdGVkUGxhdGZvcm0sIG1lc3NhZ2UpOworICAgICAgICBhc3NlcnRF
cXVhbHMoYnVpbGRJbmZvLmJ1aWxkVHlwZSwgZXhwZWN0ZWRCdWlsZFR5cGUsIG1lc3NhZ2UpOwor
ICAgIH0KKyAgICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ1dlYmtpdCBXaW4gKGRlcHMp
JywgJ1hQJywgJ1JFTEVBU0UnKTsKKyAgICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ1dl
YmtpdCBXaW4gKGRlcHMpKGRiZykoMSknLCAnWFAnLCAnREVCVUcnKTsKKyAgICBydW5QbGF0Zm9y
bUFuZEJ1aWxkVHlwZVRlc3QoJ1dlYmtpdCBXaW4gKGRlcHMpKGRiZykoMiknLCAnWFAnLCAnREVC
VUcnKTsKKyAgICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ1dlYmtpdCBMaW51eCAoZGVw
cyknLCAnTFVDSUQnLCAnUkVMRUFTRScpOworICAgIHJ1blBsYXRmb3JtQW5kQnVpbGRUeXBlVGVz
dCgnV2Via2l0IExpbnV4IChkZXBzKShkYmcpKDEpJywgJ0xVQ0lEJywgJ0RFQlVHJyk7CisgICAg
cnVuUGxhdGZvcm1BbmRCdWlsZFR5cGVUZXN0KCdXZWJraXQgTGludXggKGRlcHMpKGRiZykoMikn
LCAnTFVDSUQnLCAnREVCVUcnKTsKKyAgICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ1dl
YmtpdCBNYWMxMC42IChkZXBzKScsICdTTk9XTEVPUEFSRCcsICdSRUxFQVNFJyk7CisgICAgcnVu
UGxhdGZvcm1BbmRCdWlsZFR5cGVUZXN0KCdXZWJraXQgTWFjMTAuNiAoZGVwcykoZGJnKSgxKScs
ICdTTk9XTEVPUEFSRCcsICdERUJVRycpOworICAgIHJ1blBsYXRmb3JtQW5kQnVpbGRUeXBlVGVz
dCgnV2Via2l0IE1hYzEwLjYgKGRlcHMpKGRiZykoMiknLCAnU05PV0xFT1BBUkQnLCAnREVCVUcn
KTsKKyAgICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ1dlYmtpdCBXaW4nLCAnWFAnLCAn
UkVMRUFTRScpOworICAgIHJ1blBsYXRmb3JtQW5kQnVpbGRUeXBlVGVzdCgnV2Via2l0IFZpc3Rh
JywgJ1ZJU1RBJywgJ1JFTEVBU0UnKTsKKyAgICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRlc3Qo
J1dlYmtpdCBXaW43JywgJ1dJTjcnLCAnUkVMRUFTRScpOworICAgIHJ1blBsYXRmb3JtQW5kQnVp
bGRUeXBlVGVzdCgnV2Via2l0IFdpbiAoZGJnKSgxKScsICdYUCcsICdERUJVRycpOworICAgIHJ1
blBsYXRmb3JtQW5kQnVpbGRUeXBlVGVzdCgnV2Via2l0IFdpbiAoZGJnKSgyKScsICdYUCcsICdE
RUJVRycpOworICAgIHJ1blBsYXRmb3JtQW5kQnVpbGRUeXBlVGVzdCgnV2Via2l0IExpbnV4Jywg
J0xVQ0lEJywgJ1JFTEVBU0UnKTsKKyAgICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ1dl
YmtpdCBMaW51eCAzMicsICdMVUNJRCcsICdSRUxFQVNFJyk7CisgICAgcnVuUGxhdGZvcm1BbmRC
dWlsZFR5cGVUZXN0KCdXZWJraXQgTGludXggKGRiZykoMSknLCAnTFVDSUQnLCAnREVCVUcnKTsK
KyAgICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ1dlYmtpdCBMaW51eCAoZGJnKSgyKScs
ICdMVUNJRCcsICdERUJVRycpOworICAgIHJ1blBsYXRmb3JtQW5kQnVpbGRUeXBlVGVzdCgnV2Vi
a2l0IE1hYzEwLjUnLCAnTEVPUEFSRCcsICdSRUxFQVNFJyk7CisgICAgcnVuUGxhdGZvcm1BbmRC
dWlsZFR5cGVUZXN0KCdXZWJraXQgTWFjMTAuNSAoZGJnKSgxKScsICdMRU9QQVJEJywgJ0RFQlVH
Jyk7CisgICAgcnVuUGxhdGZvcm1BbmRCdWlsZFR5cGVUZXN0KCdXZWJraXQgTWFjMTAuNSAoZGJn
KSgyKScsICdMRU9QQVJEJywgJ0RFQlVHJyk7CisgICAgcnVuUGxhdGZvcm1BbmRCdWlsZFR5cGVU
ZXN0KCdXZWJraXQgTWFjMTAuNicsICdTTk9XTEVPUEFSRCcsICdSRUxFQVNFJyk7CisgICAgcnVu
UGxhdGZvcm1BbmRCdWlsZFR5cGVUZXN0KCdXZWJraXQgTWFjMTAuNiAoZGJnKScsICdTTk9XTEVP
UEFSRCcsICdERUJVRycpOworICAgIHJ1blBsYXRmb3JtQW5kQnVpbGRUeXBlVGVzdCgnQ2hyb21p
dW0gV2luIFJlbGVhc2UgKFRlc3RzKScsICdYUCcsICdSRUxFQVNFJyk7CisgICAgcnVuUGxhdGZv
cm1BbmRCdWlsZFR5cGVUZXN0KCdDaHJvbWl1bSBMaW51eCBSZWxlYXNlIChUZXN0cyknLCAnTFVD
SUQnLCAnUkVMRUFTRScpOworICAgIHJ1blBsYXRmb3JtQW5kQnVpbGRUeXBlVGVzdCgnQ2hyb21p
dW0gTWFjIFJlbGVhc2UgKFRlc3RzKScsICdTTk9XTEVPUEFSRCcsICdSRUxFQVNFJyk7CisgICAg
cnVuUGxhdGZvcm1BbmRCdWlsZFR5cGVUZXN0KCdXZWJraXQgV2luIC0gR1BVJywgJ1hQJywgJ1JF
TEVBU0UnKTsKKyAgICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ1dlYmtpdCBWaXN0YSAt
IEdQVScsICdWSVNUQScsICdSRUxFQVNFJyk7CisgICAgcnVuUGxhdGZvcm1BbmRCdWlsZFR5cGVU
ZXN0KCdXZWJraXQgV2luNyAtIEdQVScsICdXSU43JywgJ1JFTEVBU0UnKTsKKyAgICBydW5QbGF0
Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ1dlYmtpdCBXaW4gKGRiZykoMSkgLSBHUFUnLCAnWFAnLCAn
REVCVUcnKTsKKyAgICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ1dlYmtpdCBXaW4gKGRi
ZykoMikgLSBHUFUnLCAnWFAnLCAnREVCVUcnKTsKKyAgICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlw
ZVRlc3QoJ1dlYmtpdCBMaW51eCAtIEdQVScsICdMVUNJRCcsICdSRUxFQVNFJyk7CisgICAgcnVu
UGxhdGZvcm1BbmRCdWlsZFR5cGVUZXN0KCdXZWJraXQgTGludXggMzIgLSBHUFUnLCAnTFVDSUQn
LCAnUkVMRUFTRScpOworICAgIHJ1blBsYXRmb3JtQW5kQnVpbGRUeXBlVGVzdCgnV2Via2l0IExp
bnV4IChkYmcpKDEpIC0gR1BVJywgJ0xVQ0lEJywgJ0RFQlVHJyk7CisgICAgcnVuUGxhdGZvcm1B
bmRCdWlsZFR5cGVUZXN0KCdXZWJraXQgTGludXggKGRiZykoMikgLSBHUFUnLCAnTFVDSUQnLCAn
REVCVUcnKTsKKyAgICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ1dlYmtpdCBNYWMxMC41
IC0gR1BVJywgJ0xFT1BBUkQnLCAnUkVMRUFTRScpOworICAgIHJ1blBsYXRmb3JtQW5kQnVpbGRU
eXBlVGVzdCgnV2Via2l0IE1hYzEwLjUgKGRiZykoMSkgLSBHUFUnLCAnTEVPUEFSRCcsICdERUJV
RycpOworICAgIHJ1blBsYXRmb3JtQW5kQnVpbGRUeXBlVGVzdCgnV2Via2l0IE1hYzEwLjUgKGRi
ZykoMikgLSBHUFUnLCAnTEVPUEFSRCcsICdERUJVRycpOworICAgIHJ1blBsYXRmb3JtQW5kQnVp
bGRUeXBlVGVzdCgnV2Via2l0IE1hYzEwLjYgLSBHUFUnLCAnU05PV0xFT1BBUkQnLCAnUkVMRUFT
RScpOworICAgIHJ1blBsYXRmb3JtQW5kQnVpbGRUeXBlVGVzdCgnV2Via2l0IE1hYzEwLjYgKGRi
ZykgLSBHUFUnLCAnU05PV0xFT1BBUkQnLCAnREVCVUcnKTsKKyAgICBydW5QbGF0Zm9ybUFuZEJ1
aWxkVHlwZVRlc3QoJ0dQVSBXaW43IFRlc3RzIC0gR1BVJywgJ1dJTjcnLCAnUkVMRUFTRScpOwor
ICAgIHJ1blBsYXRmb3JtQW5kQnVpbGRUeXBlVGVzdCgnR1BVIFdpbjcgVGVzdHMgKGRiZykoMSkg
LSBHUFUnLCAnV0lONycsICdERUJVRycpOworICAgIHJ1blBsYXRmb3JtQW5kQnVpbGRUeXBlVGVz
dCgnR1BVIFdpbjcgVGVzdHMgKGRiZykoMikgLSBHUFUnLCAnV0lONycsICdERUJVRycpOworICAg
IHJ1blBsYXRmb3JtQW5kQnVpbGRUeXBlVGVzdCgnR1BVIFdpbjcgeDY0IFRlc3RzIChkYmcpKDEp
IC0gR1BVJywgJ1dJTjcnLCAnREVCVUcnKTsKKyAgICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRl
c3QoJ0dQVSBXaW43IHg2NCBUZXN0cyAoZGJnKSgyKSAtIEdQVScsICdXSU43JywgJ0RFQlVHJyk7
CisgICAgcnVuUGxhdGZvcm1BbmRCdWlsZFR5cGVUZXN0KCdHUFUgVmlzdGEgVGVzdHMgKGRiZyko
MSkgLSBHUFUnLCAnVklTVEEnLCAnREVCVUcnKTsKKyAgICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlw
ZVRlc3QoJ0dQVSBWaXN0YSBUZXN0cyAoZGJnKSgyKSAtIEdQVScsICdWSVNUQScsICdERUJVRycp
OworICAgIHJ1blBsYXRmb3JtQW5kQnVpbGRUeXBlVGVzdCgnR1BVIFZpc3RhIHg2NCBUZXN0cyAo
ZGJnKSAtIEdQVScsICdWSVNUQScsICdERUJVRycpOworICAgIHJ1blBsYXRmb3JtQW5kQnVpbGRU
eXBlVGVzdCgnR1BVIE1hYyAxMC42IFRlc3RzIC0gR1BVJywgJ1NOT1dMRU9QQVJEJywgJ1JFTEVB
U0UnKTsKKyAgICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ0dQVSBNYWMgMTAuNiBUZXN0
cyAoZGJnKSAtIEdQVScsICdTTk9XTEVPUEFSRCcsICdERUJVRycpOworICAgIHJ1blBsYXRmb3Jt
QW5kQnVpbGRUeXBlVGVzdCgnR1BVIE1hYyAxMC41IFRlc3RzIChkYmcpIC0gR1BVJywgJ0xFT1BB
UkQnLCAnREVCVUcnKTsKKyAgICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ0dQVSBMaW51
eCBUZXN0cyAoZGJnKSgxKSAtIEdQVScsICdMVUNJRCcsICdERUJVRycpOworICAgIHJ1blBsYXRm
b3JtQW5kQnVpbGRUeXBlVGVzdCgnR1BVIExpbnV4IFRlc3RzIChkYmcpKDIpIC0gR1BVJywgJ0xV
Q0lEJywgJ0RFQlVHJyk7CisgICAgcnVuUGxhdGZvcm1BbmRCdWlsZFR5cGVUZXN0KCdHUFUgV2lu
NyBUZXN0cyAoZGJnKSgxKSAtIEdQVScsICdXSU43JywgJ0RFQlVHJyk7CisgICAgcnVuUGxhdGZv
cm1BbmRCdWlsZFR5cGVUZXN0KCdHUFUgV2luNyBUZXN0cyAoZGJnKSgyKSAtIEdQVScsICdXSU43
JywgJ0RFQlVHJyk7CisgICAgcnVuUGxhdGZvcm1BbmRCdWlsZFR5cGVUZXN0KCdHUFUgTGludXgg
VGVzdHMgeDY0IC0gR1BVJywgJ0xVQ0lEJywgJ1JFTEVBU0UnKTsKK30KKwogZnVuY3Rpb24gcnVu
VGVzdHMoKQogewogICAgIGRvY3VtZW50LmJvZHkuaW5uZXJIVE1MID0gJzxwcmUgaWQ9dW5pdHRl
c3QtcmVzdWx0cz48L3ByZT4nOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9z
dGF0aWMtZGFzaGJvYXJkcy90aW1lbGluZV9leHBsb3Jlci5odG1sIGIvVG9vbHMvVGVzdFJlc3Vs
dFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy90aW1lbGluZV9leHBsb3Jlci5odG1sCmluZGV4IGFl
MDJkMzg5YTQ1MTYzZGNjN2I5MjMyNzFjYTcwNDg4Y2Q1ZDY2N2YuLmM0MTc2MjBhMjJkMTM2NjUx
YzRiY2UwZWM5MzkyMjcxNmRkYmFkMzYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2
ZXIvc3RhdGljLWRhc2hib2FyZHMvdGltZWxpbmVfZXhwbG9yZXIuaHRtbAorKysgYi9Ub29scy9U
ZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL3RpbWVsaW5lX2V4cGxvcmVyLmh0bWwK
QEAgLTE0NSw3ICsxNDUsNyBAQCBmdW5jdGlvbiBnZW5lcmF0ZVBhZ2UoKQogZnVuY3Rpb24gaW5p
dEN1cnJlbnRCdWlsZGVyVGVzdFJlc3VsdHMoKQogewogICAgIHZhciBzdGFydFRpbWUgPSBEYXRl
Lm5vdygpOwotICAgIGdfY3VycmVudEJ1aWxkZXJUZXN0UmVzdWx0cyA9IHRlc3RSZXN1bHRzQnlC
dWlsZChnX3Jlc3VsdHNCeUJ1aWxkZXJbZ19jdXJyZW50U3RhdGUuYnVpbGRlcl0pOworICAgIGdf
Y3VycmVudEJ1aWxkZXJUZXN0UmVzdWx0cyA9IHJlc3VsdHNCeUJ1aWxkKGdfcmVzdWx0c0J5QnVp
bGRlcltnX2N1cnJlbnRTdGF0ZS5idWlsZGVyXSk7CiAgICAgY29uc29sZS5sb2coICdUaW1lIHRv
IGdldCB0ZXN0IHJlc3VsdHMgYnkgYnVpbGQ6ICcgKyAoRGF0ZS5ub3coKSAtIHN0YXJ0VGltZSkp
OwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101204</attachid>
            <date>2011-07-18 14:25:09 -0700</date>
            <delta_ts>2011-07-18 14:33:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64743-20110718142507.patch</filename>
            <type>text/plain</type>
            <size>19799</size>
            <attacher name="Ojan Vafai">ojan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTExOTQKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCBkYTEwYWVlZDFmMmUyYjRiMTM3YWExMjM1MmY5M2EzN2Nj
MTczZTFlLi4yOGM3YjhjZmZmMDFlOTE0OWRlN2FhMDE1MzQxY2M5NDY4NTQwNTc2IDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTgg
QEAKKzIwMTEtMDctMTggIE9qYW4gVmFmYWkgIDxvamFuQGNocm9taXVtLm9yZz4KKworICAgICAg
ICB1cGRhdGUgdGhlIGZsYWtpbmVzcyBkYXNoYm9hcmQgdG8gdW5kZXJzdGFuZCB0aGUgbmV3IHBs
YXRmb3Jtcy9mb3JtYXRzIGluIHRlc3RfZXhwZWN0YXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NDc0MworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSB0ZXN0IGV4cGVjdGF0aW9ucyBmb3JtYXQg
Y2hhbmdlZCBhIGxvbmcgdGltZSBhZ28gYW5kIHRoZSBmbGFraW5lc3MgZGFzaGJvYXJkCisgICAg
ICAgIHdhcyBuZXZlciB1cGRhdGVkIHRvIG1hdGNoLgorCisgICAgICAgICogVGVzdFJlc3VsdFNl
cnZlci9zdGF0aWMtZGFzaGJvYXJkcy9kYXNoYm9hcmRfYmFzZS5qczoKKyAgICAgICAgKiBUZXN0
UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2ZsYWtpbmVzc19kYXNoYm9hcmQuaHRtbDoK
KyAgICAgICAgKiBUZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2ZsYWtpbmVzc19k
YXNoYm9hcmRfdGVzdHMuanM6CisgICAgICAgICogVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFz
aGJvYXJkcy90aW1lbGluZV9leHBsb3Jlci5odG1sOgorCiAyMDExLTA3LTE4ICBTaGVyaWZmIEJv
dCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBy
b2xsaW5nIG91dCByOTExMzIgYW5kIHI5MTEzNS4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSZXN1
bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvZGFzaGJvYXJkX2Jhc2UuanMgYi9Ub29scy9UZXN0
UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2Rhc2hib2FyZF9iYXNlLmpzCmluZGV4IDY5
ZjNlMTU4MjM0ZjI1MTg4ZDA1ZTI3ODk0MmNjZGNkYTU2ODFjZTkuLjVlMzZlZmEwMmMzMjg3YzNh
NjkwZjcxN2ZlNjFmYmQyYzA5NmE4YjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2
ZXIvc3RhdGljLWRhc2hib2FyZHMvZGFzaGJvYXJkX2Jhc2UuanMKKysrIGIvVG9vbHMvVGVzdFJl
c3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9kYXNoYm9hcmRfYmFzZS5qcwpAQCAtOTA0LDE3
ICs5MDQsMTQgQEAgZnVuY3Rpb24gd2ViS2l0UmV2aXNpb25MaW5rKHJlc3VsdHMsIGluZGV4KQog
Ly8gQHBhcmFtIHtPYmplY3R9IHJlc3VsdHMgcmVzdWx0cyBmb3IgdGhlIGN1cnJlbnQgYnVpbGRl
cgogLy8gQHJldHVybiBPYmplY3Qgd2l0aCB0aGVzZSBwcm9wZXJ0aWVzOgogLy8gICAgIC0gdGVz
dE5hbWVzOiBhcnJheSBtYXBwaW5nIHRlc3QgaW5kZXggdG8gdGVzdCBuYW1lcy4KLS8vICAgICAt
IHJlc3VsdHNCeUJ1aWxkOiBhcnJheSBvZiBidWlsZHMsIGZvciBlYWNoIGJ1aWxkIGEgKHNwYXJz
ZSkgYXJyYXkgb2YgdGVzdAotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlc3VsdHMgYnkgdGVzdCBpbmRleC4KLS8vICAgICAtIGZsYWt5VGVzdHM6IGFycmF5IHdp
dGggdGhlIGJvb2xlYW4gdmFsdWUgdHJ1ZSBhdCB0ZXN0IGluZGljZXMgdGhhdCBhcmUKLS8vICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc2lkZXJlZCBmbGFreSAobW9yZSB0aGFu
IG9uZSBzaW5nbGUtYnVpbGQgZmFpbHVyZSkuCi0vLyAgICAgLSBmbGFreURlbHRhc0J5QnVpbGQ6
IGFycmF5IG9mIGJ1aWxkcywgZm9yIGVhY2ggYnVpbGQgYSBjb3VudCBvZiBmbGFreQotLy8gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdCByZXN1bHRz
IGJ5IGV4cGVjdGF0aW9uLCBhcyB3ZWxsIGFzIGEgdG90YWwuCi1mdW5jdGlvbiB0ZXN0UmVzdWx0
c0J5QnVpbGQoYnVpbGRlclJlc3VsdHMpCisvLyAgICAgLSByZXN1bHRzQnlCdWlsZDogYXJyYXkg
b2YgYnVpbGRzLCBmb3IgZWFjaCBidWlsZCBhIChzcGFyc2UpIGFycmF5IG9mIHRlc3QgcmVzdWx0
cyBieSB0ZXN0IGluZGV4LgorLy8gICAgIC0gZmxha3lUZXN0czogYXJyYXkgd2l0aCB0aGUgYm9v
bGVhbiB2YWx1ZSB0cnVlIGF0IHRlc3QgaW5kaWNlcyB0aGF0IGFyZSBjb25zaWRlcmVkIGZsYWt5
IChtb3JlIHRoYW4gb25lIHNpbmdsZS1idWlsZCBmYWlsdXJlKS4KKy8vICAgICAtIGZsYWt5RGVs
dGFzQnlCdWlsZDogYXJyYXkgb2YgYnVpbGRzLCBmb3IgZWFjaCBidWlsZCBhIGNvdW50IG9mIGZs
YWt5IHRlc3QgcmVzdWx0cyBieSBleHBlY3RhdGlvbiwgYXMgd2VsbCBhcyBhIHRvdGFsLgorZnVu
Y3Rpb24gZGVjb21wcmVzc1Jlc3VsdHMoYnVpbGRlclJlc3VsdHMpCiB7CiAgICAgdmFyIGJ1aWxk
ZXJUZXN0UmVzdWx0cyA9IGJ1aWxkZXJSZXN1bHRzW1RFU1RTX0tFWV07CiAgICAgdmFyIGJ1aWxk
Q291bnQgPSBidWlsZGVyUmVzdWx0c1tGSVhBQkxFX0NPVU5UU19LRVldLmxlbmd0aDsKLSAgICB2
YXIgdGVzdFJlc3VsdHNCeUJ1aWxkID0gbmV3IEFycmF5KGJ1aWxkQ291bnQpOworICAgIHZhciBy
ZXN1bHRzQnlCdWlsZCA9IG5ldyBBcnJheShidWlsZENvdW50KTsKICAgICB2YXIgZmxha3lEZWx0
YXNCeUJ1aWxkID0gbmV3IEFycmF5KGJ1aWxkQ291bnQpOwogCiAgICAgLy8gUHJlLXNpemluZyB0
aGUgdGVzdCByZXN1bHQgYXJyYXlzIGZvciBlYWNoIGJ1aWxkIHNhdmVzIHVzIH4yNTBtcwpAQCAt
OTIyLDggKzkxOSw4IEBAIGZ1bmN0aW9uIHRlc3RSZXN1bHRzQnlCdWlsZChidWlsZGVyUmVzdWx0
cykKICAgICBmb3IgKHZhciB0ZXN0TmFtZSBpbiBidWlsZGVyVGVzdFJlc3VsdHMpCiAgICAgICAg
IHRlc3RDb3VudCsrOwogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYnVpbGRDb3VudDsgaSsrKSB7
Ci0gICAgICAgIHRlc3RSZXN1bHRzQnlCdWlsZFtpXSA9IG5ldyBBcnJheSh0ZXN0Q291bnQpOwot
ICAgICAgICB0ZXN0UmVzdWx0c0J5QnVpbGRbaV1bdGVzdENvdW50IC0gMV0gPSB1bmRlZmluZWQ7
CisgICAgICAgIHJlc3VsdHNCeUJ1aWxkW2ldID0gbmV3IEFycmF5KHRlc3RDb3VudCk7CisgICAg
ICAgIHJlc3VsdHNCeUJ1aWxkW2ldW3Rlc3RDb3VudCAtIDFdID0gdW5kZWZpbmVkOwogICAgICAg
ICBmbGFreURlbHRhc0J5QnVpbGRbaV0gPSB7fTsKICAgICB9CiAKQEAgLTk0OCw3ICs5NDUsNyBA
QCBmdW5jdGlvbiB0ZXN0UmVzdWx0c0J5QnVpbGQoYnVpbGRlclJlc3VsdHMpCiAgICAgICAgICAg
ICAgICAgb25lQnVpbGRGYWlsdXJlQ291bnQrKzsKIAogICAgICAgICAgICAgZm9yICh2YXIgaiA9
IDA7IGogPCBjb3VudDsgaisrKSB7Ci0gICAgICAgICAgICAgICAgdGVzdFJlc3VsdHNCeUJ1aWxk
W2N1cnJlbnRCdWlsZEluZGV4KytdW3Rlc3RJbmRleF0gPSB2YWx1ZTsKKyAgICAgICAgICAgICAg
ICByZXN1bHRzQnlCdWlsZFtjdXJyZW50QnVpbGRJbmRleCsrXVt0ZXN0SW5kZXhdID0gdmFsdWU7
CiAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRCdWlsZEluZGV4ID09IGJ1aWxkQ291bnQpCiAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpAQCAtOTkxLDcgKzk4OCw3
IEBAIGZ1bmN0aW9uIHRlc3RSZXN1bHRzQnlCdWlsZChidWlsZGVyUmVzdWx0cykKIAogICAgIHJl
dHVybiB7CiAgICAgICAgIHRlc3ROYW1lczogdGVzdE5hbWVzLAotICAgICAgICByZXN1bHRzQnlC
dWlsZDogdGVzdFJlc3VsdHNCeUJ1aWxkLAorICAgICAgICByZXN1bHRzQnlCdWlsZDogcmVzdWx0
c0J5QnVpbGQsCiAgICAgICAgIGZsYWt5VGVzdHM6IGZsYWt5VGVzdHMsCiAgICAgICAgIGZsYWt5
RGVsdGFzQnlCdWlsZDogZmxha3lEZWx0YXNCeUJ1aWxkCiAgICAgfTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvZmxha2luZXNzX2Rhc2hib2Fy
ZC5odG1sIGIvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9mbGFraW5l
c3NfZGFzaGJvYXJkLmh0bWwKaW5kZXggNGNjNzIzNDdkM2YyNDg1NTE0ZGNiNTY2YzNjZWI0NGIz
YzFmYWQxMC4uNTA3M2VjMmRjZWIwNGQyZGZkNmM5YWZjNTBmNGU0ZGNhODA5MzdmMyAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9mbGFraW5lc3Nf
ZGFzaGJvYXJkLmh0bWwKKysrIGIvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJv
YXJkcy9mbGFraW5lc3NfZGFzaGJvYXJkLmh0bWwKQEAgLTMxOSwyNCArMzE5LDMyIEBAIHZhciBH
VEVTVF9GQUlMU19NQVJLRVIgPSAnXC5GQUlMU18nOwogdmFyIFRFU1RfVVJMX0JBU0VfUEFUSF9U
UkFDID0gJ2h0dHA6Ly90cmFjLndlYmtpdC5vcmcvYnJvd3Nlci90cnVuay9MYXlvdXRUZXN0cy8n
OwogdmFyIFRFU1RfVVJMX0JBU0VfUEFUSCA9ICJodHRwOi8vc3ZuLndlYmtpdC5vcmcvcmVwb3Np
dG9yeS93ZWJraXQvdHJ1bmsvTGF5b3V0VGVzdHMvIjsKIHZhciBURVNUX1JFU1VMVFNfQkFTRV9Q
QVRIID0gJ2h0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvZi9jaHJvbWl1bS9sYXlvdXRfdGVzdF9y
ZXN1bHRzLyc7CisKKy8vIEZJWE1FOiBNYWtlIHRoaXMgYW4gYXJyYXkuCiB2YXIgUExBVEZPUk1T
ID0gewotJ01BQyc6ICdNQUMnLAotJ0xJTlVYJzogJ0xJTlVYJywKLSdXSU4nOiAnV0lOJywKLSdX
SU4tWFAnOiAnV0lOLVhQJywKLSdXSU4tVklTVEEnOiAnV0lOLVZJU1RBJworICAgICdTTk9XTEVP
UEFSRCc6ICdTTk9XTEVPUEFSRCcsCisgICAgJ0xFT1BBUkQnOiAnTEVPUEFSRCcsCisgICAgJ1hQ
JzogJ1hQJywKKyAgICAnVklTVEEnOiAnVklTVEEnLAorICAgICdXSU43JzogJ1dJTjcnLAorICAg
ICdMVUNJRCc6ICdMVUNJRCcKIH07CisKKy8vIEZJWE1FOiBNYWtlIHRoZSBnX2FsbEV4cGVjdGF0
aW9ucyBkYXRhIHN0cnVjdHVyZSBleHBsaWNpdGx5IGxpc3QgZXZlcnkgcGxhdGZvcm0gaW5zdGVh
ZCBvZiBoYXZpbmcgYSBmYWxsYmFja3MgY29uY2VwdC4KIHZhciBQTEFURk9STV9GQUxMQkFDS1Mg
PSB7Ci0nV0lOJzogJ0FMTCcsCi0nV0lOLVhQJzogJ1dJTicsCi0nV0lOLVZJU1RBJzogJ1dJTics
Ci0nTElOVVgnOiAnQUxMJywKLSdNQUMnOiAnQUxMJworICAgICdXSU4nOiAnQUxMJywKKyAgICAn
WFAnOiAnV0lOJywKKyAgICAnVklTVEEnOiAnV0lOJywKKyAgICAnTUFDJzogJ0FMTCcsCisgICAg
J1NOT1dMRU9QQVJEJzogJ01BQycsCisgICAgJ0xFT1BBUkQnOiAnTUFDJywKKyAgICAnTElOVVgn
OiAnQUxMJywKKyAgICAnTFVDSUQnOiAnTElOVVgnCiB9OwogdmFyIEJVSUxEX1RZUEVTID0geydE
RUJVRyc6ICdEQkcnLCAnUkVMRUFTRSc6ICdSRUxFQVNFJ307CiB2YXIgTUlOX1NFQ09ORFNfRk9S
X1NMT1dfVEVTVCA9IDQ7CiB2YXIgTUlOX1NFQ09ORFNfRk9SX1NMT1dfVEVTVF9ERUJVRyA9IDIg
KiBNSU5fU0VDT05EU19GT1JfU0xPV19URVNUOwotdmFyIEZBSUxfUkVTVUxUUyA9IFsnSU1BR0Un
LCAnSU1BR0UrVEVYVCcsICdURVhUJywgJ1NJTVBMSUZJRUQnLCAnTUlTU0lORyddOwordmFyIEZB
SUxfUkVTVUxUUyA9IFsnSU1BR0UnLCAnSU1BR0UrVEVYVCcsICdURVhUJywgJ01JU1NJTkcnXTsK
IHZhciBDSFVOS19TSVpFID0gMjU7CiB2YXIgTUFYX1JFU1VMVFMgPSAxNTAwOwogCkBAIC01MjUs
OCArNTMzLDI3IEBAIGZ1bmN0aW9uIHBsYXRmb3JtQW5kQnVpbGRUeXBlKGJ1aWxkZXJOYW1lKQog
ICAgICAgICAvLyBJZiB0aGUgYnVpbGQgbmFtZSBkb2VzIG5vdCBjb250YWluIGEgcGxhdGZvcm0K
ICAgICAgICAgLy8gb3IgYnVpbGQgdHlwZSwgYXNzdW1lIFdpbmRvd3MgUmVsZWFzZS4KICAgICAg
ICAgdmFyIGN1cnJlbnRCdWlsZFVwcGVyY2FzZSA9IGJ1aWxkZXJOYW1lLnRvVXBwZXJDYXNlKCk7
Ci0gICAgICAgIHZhciBwbGF0Zm9ybSA9IG1hdGNoaW5nRWxlbWVudChjdXJyZW50QnVpbGRVcHBl
cmNhc2UsIFBMQVRGT1JNUykgfHwgJ1dJTic7Ci0gICAgICAgIHZhciBidWlsZFR5cGUgPSBtYXRj
aGluZ0VsZW1lbnQoY3VycmVudEJ1aWxkVXBwZXJjYXNlLCBCVUlMRF9UWVBFUykgfHwgJ1JFTEVB
U0UnOworICAgICAgICAKKyAgICAgICAgdmFyIHBsYXRmb3JtOworICAgICAgICBpZiAoc3RyaW5n
Q29udGFpbnMoY3VycmVudEJ1aWxkVXBwZXJjYXNlLCAnTUFDJykpIHsKKyAgICAgICAgICAgIGlm
IChzdHJpbmdDb250YWlucyhjdXJyZW50QnVpbGRVcHBlcmNhc2UsICcxMC41JykpCisgICAgICAg
ICAgICAgICAgcGxhdGZvcm0gPSAnTEVPUEFSRCc7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgcGxhdGZvcm0gPSAnU05PV0xFT1BBUkQnOworICAgICAgICB9IGVsc2UgaWYgKHN0
cmluZ0NvbnRhaW5zKGN1cnJlbnRCdWlsZFVwcGVyY2FzZSwgJ1dJTjcnKSkKKyAgICAgICAgICAg
IHBsYXRmb3JtID0gJ1dJTjcnOworICAgICAgICBlbHNlIGlmIChzdHJpbmdDb250YWlucyhjdXJy
ZW50QnVpbGRVcHBlcmNhc2UsICdWSVNUQScpKQorICAgICAgICAgICAgcGxhdGZvcm0gPSAnVklT
VEEnOworICAgICAgICBlbHNlIGlmIChzdHJpbmdDb250YWlucyhjdXJyZW50QnVpbGRVcHBlcmNh
c2UsICdXSU4nKSkKKyAgICAgICAgICAgIHBsYXRmb3JtID0gJ1hQJzsKKyAgICAgICAgZWxzZSBp
ZiAoc3RyaW5nQ29udGFpbnMoY3VycmVudEJ1aWxkVXBwZXJjYXNlLCAnTElOVVgnKSkKKyAgICAg
ICAgICAgIHBsYXRmb3JtID0gJ0xVQ0lEJzsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBw
bGF0Zm9ybSA9ICcnOworICAgICAgICAgICAgY29uc29sZS5sb2coJ0NvdWxkIG5vdCByZXNvbHZl
IHBsYXRmb3JtIGZvciBidWlsZGVyOiAnICsgYnVpbGRlck5hbWUpOworICAgICAgICB9CisgICAg
ICAgIAorICAgICAgICB2YXIgYnVpbGRUeXBlID0gc3RyaW5nQ29udGFpbnMoY3VycmVudEJ1aWxk
VXBwZXJjYXNlLCAnREJHJykgPyAnREVCVUcnIDogJ1JFTEVBU0UnOwogICAgICAgICBnX3BlckJ1
aWxkZXJQbGF0Zm9ybUFuZEJ1aWxkVHlwZVtidWlsZGVyTmFtZV0gPSB7cGxhdGZvcm06IHBsYXRm
b3JtLCBidWlsZFR5cGU6IGJ1aWxkVHlwZX07CiAgICAgfQogICAgIHJldHVybiBnX3BlckJ1aWxk
ZXJQbGF0Zm9ybUFuZEJ1aWxkVHlwZVtidWlsZGVyTmFtZV07CkBAIC03MzMsNyArNzYwLDcgQEAg
ZnVuY3Rpb24gZ2V0RXhwZWN0YXRpb25zKHRlc3QsIHBsYXRmb3JtLCBidWlsZFR5cGUpCiAKICAg
ICB2YXIgcGxhdGZvcm1PYmplY3Q7CiAgICAgd2hpbGUgKHBsYXRmb3JtICYmICEocGxhdGZvcm1P
YmplY3QgPSB0ZXN0T2JqZWN0W3BsYXRmb3JtXSkpCi0gICAgICBwbGF0Zm9ybSA9IFBMQVRGT1JN
X0ZBTExCQUNLU1twbGF0Zm9ybV07CisgICAgICAgIHBsYXRmb3JtID0gUExBVEZPUk1fRkFMTEJB
Q0tTW3BsYXRmb3JtXTsKIAogICAgIGlmIChwbGF0Zm9ybU9iamVjdCkgewogICAgICAgICBpZiAo
cGxhdGZvcm1PYmplY3RbYnVpbGRUeXBlXSkKQEAgLTgzNiwxNiArODYzLDE0IEBAIGZ1bmN0aW9u
IGFkZFRlc3RUb0FsbEV4cGVjdGF0aW9ucyh0ZXN0LCBleHBlY3RhdGlvbnMpCiAgICAgICAgIGFk
ZEZhbGxiYWNrcyhmdW5jdGlvbihwbGF0Zm9ybUtleSkgewogICAgICAgICAgICAgYWRkRmFsbGJh
Y2tzKGZ1bmN0aW9uKGJ1aWxkVHlwZUtleSkgewogICAgICAgICAgICAgICAgIC8vIFNldHRpbmcg
dGhlIEFMTCBrZXkgb3ZlcnJpZGVzIGFueSBwcmV2aW91c2x5IHNlZW4gZXhwZWN0YXRpb25zLgot
ICAgICAgICAgICAgICAgIGlmIChwbGF0Zm9ybUtleSA9PSBBTEwpIHsKLSAgICAgICAgICAgICAg
ICAgICAgLy8gRklYTUU6IFRoaXMgaXMgYnJva2VuLiBQTEFURk9STVMgaXMgYW4gb2JqZWN0LCBu
b3QgYW4gYXJyYXkuCi0gICAgICAgICAgICAgICAgICAgIC8vIEZpZ3VyZSBvdXQgaWYgd2Ugc2hv
dWxkIGp1c3QgYmUgZGVsZXRpbmcgdGhpcyBvciBmaXhpbmcgaXQuCi0gICAgICAgICAgICAgICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgUExBVEZPUk1TLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgaWYgKFBMQVRGT1JNU1tpXSBpbiBnX2FsbEV4cGVjdGF0aW9uc1t0ZXN0
XSkgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2V0dGluZyB0aGUgQUxMIGtleSBvdmVy
cmlkZXMgYW55IHByZXZpb3VzbHkgc2VlbgotICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXhw
ZWN0YXRpb25zLgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJ1aWxkVHlwZUtleSA9PSBB
TEwpCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGdfYWxsRXhwZWN0YXRpb25zW3Rlc3RdW1BM
QVRGT1JNU1tpXV0gPSB7fTsKLSAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgaWYgKHBsYXRmb3JtS2V5ID09IEFMTCAmJiBnX2FsbEV4cGVjdGF0aW9uc1t0ZXN0XSkgewor
ICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBwbGF0Zm9ybSBpbiBQTEFURk9STV9GQUxMQkFD
S1MpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBsYXRmb3JtIGluIGdfYWxsRXhw
ZWN0YXRpb25zW3Rlc3RdKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTZXR0
aW5nIHRoZSBBTEwga2V5IG92ZXJyaWRlcyBhbnkgcHJldmlvdXNseSBzZWVuCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBleHBlY3RhdGlvbnMuCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoYnVpbGRUeXBlS2V5ID09IEFMTCkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBnX2FsbEV4cGVjdGF0aW9uc1t0ZXN0XVtwbGF0Zm9ybV0gPSB7fTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgfSBlbHNlIGlmIChidWlsZFR5cGVLZXkgPT0gQUxMICYmIGdfYWxsRXhwZWN0YXRp
b25zW3Rlc3RdKQogICAgICAgICAgICAgICAgICAgICBnX2FsbEV4cGVjdGF0aW9uc1t0ZXN0XVtw
bGF0Zm9ybUtleV0gPSB7fQpAQCAtODU5LDcgKzg4NCw3IEBAIGZ1bmN0aW9uIGFkZFRlc3RUb0Fs
bEV4cGVjdGF0aW9ucyh0ZXN0LCBleHBlY3RhdGlvbnMpCiAKICAgICAgICAgICAgICAgICB0ZXN0
SG9sZGVyW3BsYXRmb3JtS2V5XVtidWlsZFR5cGVLZXldID0gZXhwZWN0YXRpb25zW2pdOwogICAg
ICAgICAgICAgfSwgbW9kaWZpZXJzLCBCVUlMRF9UWVBFUyk7Ci0gICAgICAgIH0sIG1vZGlmaWVy
cywgUExBVEZPUk1TKTsKKyAgICAgICAgfSwgbW9kaWZpZXJzLCBQTEFURk9STV9GQUxMQkFDS1Mp
OwogICAgIH0KIH0KIApAQCAtOTg2LDcgKzEwMTEsNyBAQCBmdW5jdGlvbiBwcm9jZXNzVGVzdFJ1
bnNGb3JCdWlsZGVyKGJ1aWxkZXJOYW1lKQogICAgICAgICB2YXIgcmF3UmVzdWx0cyA9IHJhd1Rl
c3QucmVzdWx0czsKICAgICAgICAgcmVzdWx0c0ZvclRlc3QucmF3UmVzdWx0cyA9IHJhd1Jlc3Vs
dHM7CiAKLSAgICAgICAgLy8gRklYTUU6IFN3aXRjaCB0byB0ZXN0UmVzdWx0c0J5QnVpbGQKKyAg
ICAgICAgLy8gRklYTUU6IFN3aXRjaCB0byByZXN1bHRzQnlCdWlsZAogICAgICAgICB2YXIgdGlt
ZXMgPSByZXN1bHRzRm9yVGVzdC5yYXdUaW1lczsKICAgICAgICAgdmFyIG51bVRpbWVzU2VlbiA9
IDA7CiAgICAgICAgIHZhciBudW1SZXN1bHRzU2VlbiA9IDA7CkBAIC0xNjg5LDYgKzE3MTQsNyBA
QCBmdW5jdGlvbiBnZW5lcmF0ZVBhZ2VGb3JFeHBlY3RhdGlvbnNVcGRhdGUoKQogICAgICAgICB2
YXIgcmVzdWx0cyA9IGdfdGVzdFRvUmVzdWx0c01hcFt0ZXN0XTsKICAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCByZXN1bHRzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICB2YXIgdGhpc1Jl
c3VsdCA9IHJlc3VsdHNbaV07CisgICAgICAgICAgICAKICAgICAgICAgICAgIGlmICghdGhpc1Jl
c3VsdC5taXNzaW5nICYmICF0aGlzUmVzdWx0LmV4dHJhKQogICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9h
cmRzL2ZsYWtpbmVzc19kYXNoYm9hcmRfdGVzdHMuanMgYi9Ub29scy9UZXN0UmVzdWx0U2VydmVy
L3N0YXRpYy1kYXNoYm9hcmRzL2ZsYWtpbmVzc19kYXNoYm9hcmRfdGVzdHMuanMKaW5kZXggMDE4
ODczYjAyZGI4YWMzMTIwNzAxZjc5NTg5OWUxZGZjN2Q1Nzk5Mi4uOTA5M2U2NDMyODk3Y2QyMjhl
NzQyZTdkYWRlOWRjMDI2MDMyMjU4MSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFJlc3VsdFNlcnZl
ci9zdGF0aWMtZGFzaGJvYXJkcy9mbGFraW5lc3NfZGFzaGJvYXJkX3Rlc3RzLmpzCisrKyBiL1Rv
b2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvZmxha2luZXNzX2Rhc2hib2Fy
ZF90ZXN0cy5qcwpAQCAtMzMsNyArMzMsNyBAQAogLy8gQSB0ZXN0IGp1c3QgY29uc2lzdHMgb2Yg
Y2FsbGluZyBydW5FeHBlY3RhdGlvbnNUZXN0IHdpdGggdGhlIGFwcHJvcHJpYXRlCiAvLyBhcmd1
bWVudHMuCiAKLS8vIEZJWE1FOiBBZGQgdGVzdHMgZm9yIHByb2Nlc3NNaXNzaW5nQW5kRXh0cmFF
eHBlY3RhdGlvbnMKKy8vIEZJWE1FOiBtb3ZlIHRoaXMgb3ZlciB0byB1c2luZyBxdW5pdAogCiAv
LyBDbGVhcnMgb3V0IHRoZSBnbG9iYWwgb2JqZWN0cyBtb2RpZmllZCBvciB1c2VkIGJ5IHByb2Nl
c3NFeHBlY3RhdGlvbnMgYW5kCiAvLyBwb3B1bGF0ZUV4cGVjdGF0aW9uc0RhdGEuIEEgYml0IGdy
b3NzIHNpbmNlIGl0J3MgZGlnZ2luZyBpbnRvIGltcGxlbWVudGF0aW9uCkBAIC00NSw2ICs0NSw4
IEBAIGZ1bmN0aW9uIHNldHVwRXhwZWN0YXRpb25zVGVzdCgpCiAgICAgZ19leHBlY3RhdGlvbnNC
eVRlc3QgPSB7fTsKICAgICBnX3Jlc3VsdHNCeUJ1aWxkZXIgPSB7fTsKICAgICBnX2J1aWxkZXJz
ID0ge307CisgICAgZ19hbGxFeHBlY3RhdGlvbnMgPSBudWxsOworICAgIGdfYWxsVGVzdHMgPSBu
dWxsOwogfQogCiAvLyBQcm9jZXNzZXMgdGhlIGV4cGVjdGF0aW9ucyBmb3IgYSB0ZXN0IGFuZCBh
c3NlcnRzIHRoYXQgdGhlIGZpbmFsIGV4cGVjdGF0aW9ucwpAQCAtNzAsMjEgKzcyLDI4IEBAIGZ1
bmN0aW9uIHJ1bkV4cGVjdGF0aW9uc1Rlc3QoYnVpbGRlciwgdGVzdCwgZXhwZWN0YXRpb25zLCBt
b2RpZmllcnMpCiAgICAgdmFyIHJlc3VsdHNGb3JUZXN0ID0gY3JlYXRlUmVzdWx0c09iamVjdEZv
clRlc3QodGVzdCwgYnVpbGRlcik7CiAgICAgcG9wdWxhdGVFeHBlY3RhdGlvbnNEYXRhKHJlc3Vs
dHNGb3JUZXN0KTsKIAotICAgIGFzc2VydEVxdWFscyhyZXN1bHRzRm9yVGVzdCwgcmVzdWx0c0Zv
clRlc3QuZXhwZWN0YXRpb25zLCBleHBlY3RhdGlvbnMpOwotICAgIGFzc2VydEVxdWFscyhyZXN1
bHRzRm9yVGVzdCwgcmVzdWx0c0ZvclRlc3QubW9kaWZpZXJzLCBtb2RpZmllcnMpOworICAgIHZh
ciBtZXNzYWdlID0gJ0J1aWxkZXI6ICcgKyByZXN1bHRzRm9yVGVzdC5idWlsZGVyICsgJyB0ZXN0
OiAnICsgcmVzdWx0c0ZvclRlc3QudGVzdDsKKyAgICBhc3NlcnRFcXVhbHMocmVzdWx0c0ZvclRl
c3QuZXhwZWN0YXRpb25zLCBleHBlY3RhdGlvbnMsIG1lc3NhZ2UpOworICAgIGFzc2VydEVxdWFs
cyhyZXN1bHRzRm9yVGVzdC5tb2RpZmllcnMsIG1vZGlmaWVycywgbWVzc2FnZSk7CiB9CiAKLWZ1
bmN0aW9uIGFzc2VydEVxdWFscyhyZXN1bHRzRm9yVGVzdCwgYWN0dWFsLCBleHBlY3RlZCkKK2Z1
bmN0aW9uIGFzc2VydEVxdWFscyhhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKQogewotICAgIGlm
IChleHBlY3RlZCAhPT0gYWN0dWFsKQotICAgICAgICB0aHJvdyBFcnJvcignQnVpbGRlcjogJyAr
IHJlc3VsdHNGb3JUZXN0LmJ1aWxkZXIgKyAnIHRlc3Q6ICcgKyByZXN1bHRzRm9yVGVzdC50ZXN0
ICsgJyBnb3Q6ICcgKyBhY3R1YWwgKyAnIGV4cGVjdGVkOiAnICsgZXhwZWN0ZWQpOworICAgIGlm
IChleHBlY3RlZCAhPT0gYWN0dWFsKSB7CisgICAgICAgIGlmIChtZXNzYWdlKQorICAgICAgICAg
ICAgbWVzc2FnZSArPSAnICc7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1lc3NhZ2UgPSAn
JzsKKworICAgICAgICB0aHJvdyBFcnJvcihtZXNzYWdlICsgJ2dvdDogJyArIGFjdHVhbCArICcg
ZXhwZWN0ZWQ6ICcgKyBleHBlY3RlZCk7CisgICAgfQogfQogCiBmdW5jdGlvbiB0aHJvd0Vycm9y
KHJlc3VsdHNGb3JUZXN0cywgYWN0dWFsLCBleHBlY3RlZCkge30KIAogZnVuY3Rpb24gdGVzdFJl
bGVhc2VGYWlsKCkKIHsKLSAgICB2YXIgYnVpbGRlciA9ICdXZWJraXQnOworICAgIHZhciBidWls
ZGVyID0gJ1dlYmtpdCBXaW4nOwogICAgIHZhciB0ZXN0ID0gJ2Zvby8xLmh0bWwnOwogICAgIHZh
ciBleHBlY3RhdGlvbnNBcnJheSA9IFsKICAgICAgICAgeydtb2RpZmllcnMnOiAnUkVMRUFTRScs
ICdleHBlY3RhdGlvbnMnOiAnRkFJTCd9CkBAIC05NSw3ICsxMDQsNyBAQCBmdW5jdGlvbiB0ZXN0
UmVsZWFzZUZhaWwoKQogCiBmdW5jdGlvbiB0ZXN0UmVsZWFzZUZhaWxEZWJ1Z0NyYXNoUmVsZWFz
ZUJ1aWxkZXIoKQogewotICAgIHZhciBidWlsZGVyID0gJ1dlYmtpdCc7CisgICAgdmFyIGJ1aWxk
ZXIgPSAnV2Via2l0IFdpbic7CiAgICAgdmFyIHRlc3QgPSAnZm9vLzEuaHRtbCc7CiAgICAgdmFy
IGV4cGVjdGF0aW9uc0FycmF5ID0gWwogICAgICAgICB7J21vZGlmaWVycyc6ICdSRUxFQVNFJywg
J2V4cGVjdGF0aW9ucyc6ICdGQUlMJ30sCkBAIC0xMDcsNyArMTE2LDcgQEAgZnVuY3Rpb24gdGVz
dFJlbGVhc2VGYWlsRGVidWdDcmFzaFJlbGVhc2VCdWlsZGVyKCkKIAogZnVuY3Rpb24gdGVzdFJl
bGVhc2VGYWlsRGVidWdDcmFzaERlYnVnQnVpbGRlcigpCiB7Ci0gICAgdmFyIGJ1aWxkZXIgPSAn
V2Via2l0KGRiZyknOworICAgIHZhciBidWlsZGVyID0gJ1dlYmtpdCBXaW4gKGRiZyknOwogICAg
IHZhciB0ZXN0ID0gJ2Zvby8xLmh0bWwnOwogICAgIHZhciBleHBlY3RhdGlvbnNBcnJheSA9IFsK
ICAgICAgICAgeydtb2RpZmllcnMnOiAnUkVMRUFTRScsICdleHBlY3RhdGlvbnMnOiAnRkFJTCd9
LApAQCAtMTI3LDE0ICsxMzYsODEgQEAgZnVuY3Rpb24gdGVzdE92ZXJyaWRlSnVzdEJ1aWxkVHlw
ZSgpCiAgICAgICAgIHsnbW9kaWZpZXJzJzogJ1dPTlRGSVggTUFDJywgJ2V4cGVjdGF0aW9ucyc6
ICdGQUlMJ30sCiAgICAgICAgIHsnbW9kaWZpZXJzJzogJ0xJTlVYIERFQlVHJywgJ2V4cGVjdGF0
aW9ucyc6ICdDUkFTSCd9LAogICAgIF07Ci0gICAgcnVuRXhwZWN0YXRpb25zVGVzdCgnV2Via2l0
JywgdGVzdCwgJ0ZBSUwgUEFTUyBUSU1FT1VUJywgJ1dPTlRGSVgnKTsKLSAgICBydW5FeHBlY3Rh
dGlvbnNUZXN0KCdXZWJraXQgKGRiZykoMyknLCB0ZXN0LCAnRkFJTCBQQVNTIFRJTUVPVVQnLCAn
V09OVEZJWCcpOworICAgIHJ1bkV4cGVjdGF0aW9uc1Rlc3QoJ1dlYmtpdCBXaW4nLCB0ZXN0LCAn
RkFJTCBQQVNTIFRJTUVPVVQnLCAnV09OVEZJWCcpOworICAgIHJ1bkV4cGVjdGF0aW9uc1Rlc3Qo
J1dlYmtpdCBXaW4gKGRiZykoMyknLCB0ZXN0LCAnRkFJTCBQQVNTIFRJTUVPVVQnLCAnV09OVEZJ
WCcpOwogICAgIHJ1bkV4cGVjdGF0aW9uc1Rlc3QoJ1dlYmtpdCBMaW51eCcsIHRlc3QsICdGQUlM
IFBBU1MgVElNRU9VVCcsICdXT05URklYJyk7CiAgICAgcnVuRXhwZWN0YXRpb25zVGVzdCgnV2Vi
a2l0IExpbnV4IChkYmcpKDMpJywgdGVzdCwgJ0NSQVNIJywgJ0xJTlVYIERFQlVHJyk7CiAgICAg
cnVuRXhwZWN0YXRpb25zVGVzdCgnV2Via2l0IE1hYzEwLjUnLCB0ZXN0LCAnRkFJTCcsICdXT05U
RklYIE1BQycpOwogICAgIHJ1bkV4cGVjdGF0aW9uc1Rlc3QoJ1dlYmtpdCBNYWMxMC41IChkYmcp
KDMpJywgdGVzdCwgJ0ZBSUwnLCAnV09OVEZJWCBNQUMnKTsKIH0KIAorZnVuY3Rpb24gdGVzdFBs
YXRmb3JtQW5kQnVpbGRUeXBlKCkKK3sKKyAgICB2YXIgcnVuUGxhdGZvcm1BbmRCdWlsZFR5cGVU
ZXN0ID0gZnVuY3Rpb24oYnVpbGRlciwgZXhwZWN0ZWRQbGF0Zm9ybSwgZXhwZWN0ZWRCdWlsZFR5
cGUpIHsKKyAgICAgICAgZ19wZXJCdWlsZGVyUGxhdGZvcm1BbmRCdWlsZFR5cGUgPSB7fTsKKyAg
ICAgICAgYnVpbGRJbmZvID0gcGxhdGZvcm1BbmRCdWlsZFR5cGUoYnVpbGRlcik7CisgICAgICAg
IHZhciBtZXNzYWdlID0gJ0J1aWxkZXI6ICcgKyBidWlsZGVyOworICAgICAgICBhc3NlcnRFcXVh
bHMoYnVpbGRJbmZvLnBsYXRmb3JtLCBleHBlY3RlZFBsYXRmb3JtLCBtZXNzYWdlKTsKKyAgICAg
ICAgYXNzZXJ0RXF1YWxzKGJ1aWxkSW5mby5idWlsZFR5cGUsIGV4cGVjdGVkQnVpbGRUeXBlLCBt
ZXNzYWdlKTsKKyAgICB9CisgICAgcnVuUGxhdGZvcm1BbmRCdWlsZFR5cGVUZXN0KCdXZWJraXQg
V2luIChkZXBzKScsICdYUCcsICdSRUxFQVNFJyk7CisgICAgcnVuUGxhdGZvcm1BbmRCdWlsZFR5
cGVUZXN0KCdXZWJraXQgV2luIChkZXBzKShkYmcpKDEpJywgJ1hQJywgJ0RFQlVHJyk7CisgICAg
cnVuUGxhdGZvcm1BbmRCdWlsZFR5cGVUZXN0KCdXZWJraXQgV2luIChkZXBzKShkYmcpKDIpJywg
J1hQJywgJ0RFQlVHJyk7CisgICAgcnVuUGxhdGZvcm1BbmRCdWlsZFR5cGVUZXN0KCdXZWJraXQg
TGludXggKGRlcHMpJywgJ0xVQ0lEJywgJ1JFTEVBU0UnKTsKKyAgICBydW5QbGF0Zm9ybUFuZEJ1
aWxkVHlwZVRlc3QoJ1dlYmtpdCBMaW51eCAoZGVwcykoZGJnKSgxKScsICdMVUNJRCcsICdERUJV
RycpOworICAgIHJ1blBsYXRmb3JtQW5kQnVpbGRUeXBlVGVzdCgnV2Via2l0IExpbnV4IChkZXBz
KShkYmcpKDIpJywgJ0xVQ0lEJywgJ0RFQlVHJyk7CisgICAgcnVuUGxhdGZvcm1BbmRCdWlsZFR5
cGVUZXN0KCdXZWJraXQgTWFjMTAuNiAoZGVwcyknLCAnU05PV0xFT1BBUkQnLCAnUkVMRUFTRScp
OworICAgIHJ1blBsYXRmb3JtQW5kQnVpbGRUeXBlVGVzdCgnV2Via2l0IE1hYzEwLjYgKGRlcHMp
KGRiZykoMSknLCAnU05PV0xFT1BBUkQnLCAnREVCVUcnKTsKKyAgICBydW5QbGF0Zm9ybUFuZEJ1
aWxkVHlwZVRlc3QoJ1dlYmtpdCBNYWMxMC42IChkZXBzKShkYmcpKDIpJywgJ1NOT1dMRU9QQVJE
JywgJ0RFQlVHJyk7CisgICAgcnVuUGxhdGZvcm1BbmRCdWlsZFR5cGVUZXN0KCdXZWJraXQgV2lu
JywgJ1hQJywgJ1JFTEVBU0UnKTsKKyAgICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ1dl
YmtpdCBWaXN0YScsICdWSVNUQScsICdSRUxFQVNFJyk7CisgICAgcnVuUGxhdGZvcm1BbmRCdWls
ZFR5cGVUZXN0KCdXZWJraXQgV2luNycsICdXSU43JywgJ1JFTEVBU0UnKTsKKyAgICBydW5QbGF0
Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ1dlYmtpdCBXaW4gKGRiZykoMSknLCAnWFAnLCAnREVCVUcn
KTsKKyAgICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ1dlYmtpdCBXaW4gKGRiZykoMikn
LCAnWFAnLCAnREVCVUcnKTsKKyAgICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ1dlYmtp
dCBMaW51eCcsICdMVUNJRCcsICdSRUxFQVNFJyk7CisgICAgcnVuUGxhdGZvcm1BbmRCdWlsZFR5
cGVUZXN0KCdXZWJraXQgTGludXggMzInLCAnTFVDSUQnLCAnUkVMRUFTRScpOworICAgIHJ1blBs
YXRmb3JtQW5kQnVpbGRUeXBlVGVzdCgnV2Via2l0IExpbnV4IChkYmcpKDEpJywgJ0xVQ0lEJywg
J0RFQlVHJyk7CisgICAgcnVuUGxhdGZvcm1BbmRCdWlsZFR5cGVUZXN0KCdXZWJraXQgTGludXgg
KGRiZykoMiknLCAnTFVDSUQnLCAnREVCVUcnKTsKKyAgICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlw
ZVRlc3QoJ1dlYmtpdCBNYWMxMC41JywgJ0xFT1BBUkQnLCAnUkVMRUFTRScpOworICAgIHJ1blBs
YXRmb3JtQW5kQnVpbGRUeXBlVGVzdCgnV2Via2l0IE1hYzEwLjUgKGRiZykoMSknLCAnTEVPUEFS
RCcsICdERUJVRycpOworICAgIHJ1blBsYXRmb3JtQW5kQnVpbGRUeXBlVGVzdCgnV2Via2l0IE1h
YzEwLjUgKGRiZykoMiknLCAnTEVPUEFSRCcsICdERUJVRycpOworICAgIHJ1blBsYXRmb3JtQW5k
QnVpbGRUeXBlVGVzdCgnV2Via2l0IE1hYzEwLjYnLCAnU05PV0xFT1BBUkQnLCAnUkVMRUFTRScp
OworICAgIHJ1blBsYXRmb3JtQW5kQnVpbGRUeXBlVGVzdCgnV2Via2l0IE1hYzEwLjYgKGRiZykn
LCAnU05PV0xFT1BBUkQnLCAnREVCVUcnKTsKKyAgICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRl
c3QoJ0Nocm9taXVtIFdpbiBSZWxlYXNlIChUZXN0cyknLCAnWFAnLCAnUkVMRUFTRScpOworICAg
IHJ1blBsYXRmb3JtQW5kQnVpbGRUeXBlVGVzdCgnQ2hyb21pdW0gTGludXggUmVsZWFzZSAoVGVz
dHMpJywgJ0xVQ0lEJywgJ1JFTEVBU0UnKTsKKyAgICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRl
c3QoJ0Nocm9taXVtIE1hYyBSZWxlYXNlIChUZXN0cyknLCAnU05PV0xFT1BBUkQnLCAnUkVMRUFT
RScpOworICAgIHJ1blBsYXRmb3JtQW5kQnVpbGRUeXBlVGVzdCgnV2Via2l0IFdpbiAtIEdQVScs
ICdYUCcsICdSRUxFQVNFJyk7CisgICAgcnVuUGxhdGZvcm1BbmRCdWlsZFR5cGVUZXN0KCdXZWJr
aXQgVmlzdGEgLSBHUFUnLCAnVklTVEEnLCAnUkVMRUFTRScpOworICAgIHJ1blBsYXRmb3JtQW5k
QnVpbGRUeXBlVGVzdCgnV2Via2l0IFdpbjcgLSBHUFUnLCAnV0lONycsICdSRUxFQVNFJyk7Cisg
ICAgcnVuUGxhdGZvcm1BbmRCdWlsZFR5cGVUZXN0KCdXZWJraXQgV2luIChkYmcpKDEpIC0gR1BV
JywgJ1hQJywgJ0RFQlVHJyk7CisgICAgcnVuUGxhdGZvcm1BbmRCdWlsZFR5cGVUZXN0KCdXZWJr
aXQgV2luIChkYmcpKDIpIC0gR1BVJywgJ1hQJywgJ0RFQlVHJyk7CisgICAgcnVuUGxhdGZvcm1B
bmRCdWlsZFR5cGVUZXN0KCdXZWJraXQgTGludXggLSBHUFUnLCAnTFVDSUQnLCAnUkVMRUFTRScp
OworICAgIHJ1blBsYXRmb3JtQW5kQnVpbGRUeXBlVGVzdCgnV2Via2l0IExpbnV4IDMyIC0gR1BV
JywgJ0xVQ0lEJywgJ1JFTEVBU0UnKTsKKyAgICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRlc3Qo
J1dlYmtpdCBMaW51eCAoZGJnKSgxKSAtIEdQVScsICdMVUNJRCcsICdERUJVRycpOworICAgIHJ1
blBsYXRmb3JtQW5kQnVpbGRUeXBlVGVzdCgnV2Via2l0IExpbnV4IChkYmcpKDIpIC0gR1BVJywg
J0xVQ0lEJywgJ0RFQlVHJyk7CisgICAgcnVuUGxhdGZvcm1BbmRCdWlsZFR5cGVUZXN0KCdXZWJr
aXQgTWFjMTAuNSAtIEdQVScsICdMRU9QQVJEJywgJ1JFTEVBU0UnKTsKKyAgICBydW5QbGF0Zm9y
bUFuZEJ1aWxkVHlwZVRlc3QoJ1dlYmtpdCBNYWMxMC41IChkYmcpKDEpIC0gR1BVJywgJ0xFT1BB
UkQnLCAnREVCVUcnKTsKKyAgICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ1dlYmtpdCBN
YWMxMC41IChkYmcpKDIpIC0gR1BVJywgJ0xFT1BBUkQnLCAnREVCVUcnKTsKKyAgICBydW5QbGF0
Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ1dlYmtpdCBNYWMxMC42IC0gR1BVJywgJ1NOT1dMRU9QQVJE
JywgJ1JFTEVBU0UnKTsKKyAgICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ1dlYmtpdCBN
YWMxMC42IChkYmcpIC0gR1BVJywgJ1NOT1dMRU9QQVJEJywgJ0RFQlVHJyk7CisgICAgcnVuUGxh
dGZvcm1BbmRCdWlsZFR5cGVUZXN0KCdHUFUgV2luNyBUZXN0cyAtIEdQVScsICdXSU43JywgJ1JF
TEVBU0UnKTsKKyAgICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ0dQVSBXaW43IFRlc3Rz
IChkYmcpKDEpIC0gR1BVJywgJ1dJTjcnLCAnREVCVUcnKTsKKyAgICBydW5QbGF0Zm9ybUFuZEJ1
aWxkVHlwZVRlc3QoJ0dQVSBXaW43IFRlc3RzIChkYmcpKDIpIC0gR1BVJywgJ1dJTjcnLCAnREVC
VUcnKTsKKyAgICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ0dQVSBXaW43IHg2NCBUZXN0
cyAoZGJnKSgxKSAtIEdQVScsICdXSU43JywgJ0RFQlVHJyk7CisgICAgcnVuUGxhdGZvcm1BbmRC
dWlsZFR5cGVUZXN0KCdHUFUgV2luNyB4NjQgVGVzdHMgKGRiZykoMikgLSBHUFUnLCAnV0lONycs
ICdERUJVRycpOworICAgIHJ1blBsYXRmb3JtQW5kQnVpbGRUeXBlVGVzdCgnR1BVIFZpc3RhIFRl
c3RzIChkYmcpKDEpIC0gR1BVJywgJ1ZJU1RBJywgJ0RFQlVHJyk7CisgICAgcnVuUGxhdGZvcm1B
bmRCdWlsZFR5cGVUZXN0KCdHUFUgVmlzdGEgVGVzdHMgKGRiZykoMikgLSBHUFUnLCAnVklTVEEn
LCAnREVCVUcnKTsKKyAgICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ0dQVSBWaXN0YSB4
NjQgVGVzdHMgKGRiZykgLSBHUFUnLCAnVklTVEEnLCAnREVCVUcnKTsKKyAgICBydW5QbGF0Zm9y
bUFuZEJ1aWxkVHlwZVRlc3QoJ0dQVSBNYWMgMTAuNiBUZXN0cyAtIEdQVScsICdTTk9XTEVPUEFS
RCcsICdSRUxFQVNFJyk7CisgICAgcnVuUGxhdGZvcm1BbmRCdWlsZFR5cGVUZXN0KCdHUFUgTWFj
IDEwLjYgVGVzdHMgKGRiZykgLSBHUFUnLCAnU05PV0xFT1BBUkQnLCAnREVCVUcnKTsKKyAgICBy
dW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ0dQVSBNYWMgMTAuNSBUZXN0cyAoZGJnKSAtIEdQ
VScsICdMRU9QQVJEJywgJ0RFQlVHJyk7CisgICAgcnVuUGxhdGZvcm1BbmRCdWlsZFR5cGVUZXN0
KCdHUFUgTGludXggVGVzdHMgKGRiZykoMSkgLSBHUFUnLCAnTFVDSUQnLCAnREVCVUcnKTsKKyAg
ICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ0dQVSBMaW51eCBUZXN0cyAoZGJnKSgyKSAt
IEdQVScsICdMVUNJRCcsICdERUJVRycpOworICAgIHJ1blBsYXRmb3JtQW5kQnVpbGRUeXBlVGVz
dCgnR1BVIFdpbjcgVGVzdHMgKGRiZykoMSkgLSBHUFUnLCAnV0lONycsICdERUJVRycpOworICAg
IHJ1blBsYXRmb3JtQW5kQnVpbGRUeXBlVGVzdCgnR1BVIFdpbjcgVGVzdHMgKGRiZykoMikgLSBH
UFUnLCAnV0lONycsICdERUJVRycpOworICAgIHJ1blBsYXRmb3JtQW5kQnVpbGRUeXBlVGVzdCgn
R1BVIExpbnV4IFRlc3RzIHg2NCAtIEdQVScsICdMVUNJRCcsICdSRUxFQVNFJyk7Cit9CisKIGZ1
bmN0aW9uIHJ1blRlc3RzKCkKIHsKICAgICBkb2N1bWVudC5ib2R5LmlubmVySFRNTCA9ICc8cHJl
IGlkPXVuaXR0ZXN0LXJlc3VsdHM+PC9wcmU+JzsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSZXN1
bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvdGltZWxpbmVfZXhwbG9yZXIuaHRtbCBiL1Rvb2xz
L1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvdGltZWxpbmVfZXhwbG9yZXIuaHRt
bAppbmRleCBhZTAyZDM4OWE0NTE2M2RjYzdiOTIzMjcxY2E3MDQ4OGNkNWQ2NjdmLi5lNGIwNmI1
MGVlNzgzYzFmNTA1OWI4ZTczZTYxNWYxNjM1NDIwYTlmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL3RpbWVsaW5lX2V4cGxvcmVyLmh0bWwKKysr
IGIvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy90aW1lbGluZV9leHBs
b3Jlci5odG1sCkBAIC0xNDUsNyArMTQ1LDcgQEAgZnVuY3Rpb24gZ2VuZXJhdGVQYWdlKCkKIGZ1
bmN0aW9uIGluaXRDdXJyZW50QnVpbGRlclRlc3RSZXN1bHRzKCkKIHsKICAgICB2YXIgc3RhcnRU
aW1lID0gRGF0ZS5ub3coKTsKLSAgICBnX2N1cnJlbnRCdWlsZGVyVGVzdFJlc3VsdHMgPSB0ZXN0
UmVzdWx0c0J5QnVpbGQoZ19yZXN1bHRzQnlCdWlsZGVyW2dfY3VycmVudFN0YXRlLmJ1aWxkZXJd
KTsKKyAgICBnX2N1cnJlbnRCdWlsZGVyVGVzdFJlc3VsdHMgPSBkZWNvbXByZXNzUmVzdWx0cyhn
X3Jlc3VsdHNCeUJ1aWxkZXJbZ19jdXJyZW50U3RhdGUuYnVpbGRlcl0pOwogICAgIGNvbnNvbGUu
bG9nKCAnVGltZSB0byBnZXQgdGVzdCByZXN1bHRzIGJ5IGJ1aWxkOiAnICsgKERhdGUubm93KCkg
LSBzdGFydFRpbWUpKTsKIH0KIAo=
</data>
<flag name="review"
          id="96043"
          type_id="1"
          status="+"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>