<?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>28714</bug_id>
          
          <creation_ts>2009-08-25 10:47:27 -0700</creation_ts>
          <short_desc>Need to write tests for worker lifecycle mechanisms</short_desc>
          <delta_ts>2009-08-27 14:57:45 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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="Andrew Wilson">atwilson</reporter>
          <assigned_to name="Andrew Wilson">atwilson</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>142636</commentid>
    <comment_count>0</comment_count>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-08-25 10:47:27 -0700</bug_when>
    <thetext>We don&apos;t yet have any tests that cover worker lifecycle management.

In particular, we don&apos;t test whether threads exit under the following conditions:

1) dedicated workers orphaned (no references in parent document)
2) fire-and-forget workers (orphaned workers that fire off an async operation and so should exit once the operation completes)
3) shared workers exiting when their parent document closes
4) shared workers *not* exiting when their parent document closes if they still have an active parent somewhere

Now that we expose the number of running workers in layoutTestController.workerThreadCount, it should be possible to test all of these cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142643</commentid>
    <comment_count>1</comment_count>
      <attachid>38557</attachid>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-08-25 11:01:33 -0700</bug_when>
    <thetext>Created attachment 38557
patch containing new layout tests

This patch has no code changes, only new/refactored tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143075</commentid>
    <comment_count>2</comment_count>
      <attachid>38557</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-08-26 23:54:26 -0700</bug_when>
    <thetext>Comment on attachment 38557
patch containing new layout tests



&gt; diff --git a/LayoutTests/fast/workers/resources/create-shared-worker-frame.html b/LayoutTests/fast/workers/resources/create-shared-worker-frame.html
&gt; \ No newline at end of file

Please fix.

&gt; diff --git a/LayoutTests/fast/workers/resources/worker-util.js b/LayoutTests/fast/workers/resources/worker-util.js

&gt; +function gc()
&gt; +{
&gt; +    for (var i = 0; i &lt; 10000; i++) { // force garbage collection (FF requires about 9K allocations before a collect)
&gt; +        var s = new String(&quot;abc&quot;);
&gt; +    }

I think there is a layoutTestController.gc() function that you may want to use if it is there.

 
&gt; +function waitUntilThreadCountMatches(callback, count)
...
&gt; +        setTimeout(function() { waitUntilThreadCountMatches(callback, count); }, 100);

A shorter poll interval would be good to ensure that the test runs quickly.


&gt; +function ensureThreadCountMatches(callback, count)
&gt; +{
&gt; +    // Just wait until the thread count matches, then wait another 100ms to see if it changes, then fire the callback.

100ms is a bit long for a unit test.  Is there any way to make this smaller?

&gt; +    waitUntilThreadCountMatches(function() {
&gt; +            setTimeout(function() { waitUntilThreadCountMatches(callback, count); },  100);

You have an extra space before the 100.


&gt; +    if (window.layoutTestController &amp;&amp; window.layoutTestController.notifyDone)

Seems odd to check &quot;window.layoutTestController.notifyDone&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143077</commentid>
    <comment_count>3</comment_count>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-08-27 00:05:15 -0700</bug_when>
    <thetext>(In reply to comment #2)

&gt; 
&gt; I think there is a layoutTestController.gc() function that you may want to use
&gt; if it is there.

Hmmm, my intent was to use that, but I guess it wasn&apos;t in the version of the routine I copy/pasted. Yet another reason to have a central copy in a utility file like this, I guess. I&apos;ll fix this up.

&gt; 
&gt; 
&gt; &gt; +function waitUntilThreadCountMatches(callback, count)
&gt; ...
&gt; &gt; +        setTimeout(function() { waitUntilThreadCountMatches(callback, count); }, 100);
&gt; 
&gt; A shorter poll interval would be good to ensure that the test runs quickly.

OK, I&apos;ll change the poll timer to 10ms.

&gt; 
&gt; 
&gt; &gt; +function ensureThreadCountMatches(callback, count)
&gt; &gt; +{
&gt; &gt; +    // Just wait until the thread count matches, then wait another 100ms to see if it changes, then fire the callback.
&gt; 
&gt; 100ms is a bit long for a unit test.  Is there any way to make this smaller?

I&apos;m not sure how. The point of the code is to make sure that we&apos;ve hit a &quot;steady-state&quot; in the number of threads, so I have to give it time for other threads to possibly exit. If you have any ideas on how to improve this, let me know - I&apos;m concerned about dropping this below 100ms as smaller values might not give other threads time to exit, allowing the test to pass inappropriately.

&gt; 
&gt; &gt; +    if (window.layoutTestController &amp;&amp; window.layoutTestController.notifyDone)
&gt; 
&gt; Seems odd to check &quot;window.layoutTestController.notifyDone&quot;?

Yeah, I was trying to make these tests run in a browser by trying to mock up a version of window.layoutTestController. I eventually abandoned this in favor of a different approach, but I must&apos;ve forgotten to remove this check. I&apos;ll fix this.

Thanks for the feedback!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143210</commentid>
    <comment_count>4</comment_count>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-08-27 14:57:45 -0700</bug_when>
    <thetext>Committed as r47837.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38557</attachid>
            <date>2009-08-25 11:01:33 -0700</date>
            <delta_ts>2009-08-26 23:54:26 -0700</delta_ts>
            <desc>patch containing new layout tests</desc>
            <filename>z</filename>
            <type>text/plain</type>
            <size>15713</size>
            <attacher name="Andrew Wilson">atwilson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzNWRmOThlLi41MWIxOTJiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMDktMDgt
MjUgIERyZXcgV2lsc29uICA8YXR3aWxzb25AZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOZWVkIHRvIHdyaXRlIHRlc3RzIGZvciB3
b3JrZXIgbGlmZWN5Y2xlIG1lY2hhbmlzbXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yODcxNAorCisgICAgICAgICogZmFzdC93b3JrZXJzL2RlZGlj
YXRlZC13b3JrZXItbGlmZWN5Y2xlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFz
dC93b3JrZXJzL2RlZGljYXRlZC13b3JrZXItbGlmZWN5Y2xlLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGZhc3Qvd29ya2Vycy9yZXNvdXJjZXMvY3JlYXRlLXNoYXJlZC13b3JrZXItZnJhbWUuaHRt
bDogQWRkZWQuCisgICAgICAgICogZmFzdC93b3JrZXJzL3Jlc291cmNlcy9kZWRpY2F0ZWQtd29y
a2VyLWxpZmVjeWNsZS5qczogQWRkZWQuCisgICAgICAgIEJyb2tlIG91dCAib3JwaGFuZWQgd29y
a2VyIiBsaWZlY3ljbGUgdGVzdHMgYmVjYXVzZSB0aGV5IG9ubHkgYXBwbHkgdG8gZGVkaWNhdGVk
IHdvcmtlcnMuCisgICAgICAgIChydW5UZXN0cy53b3JrZXIub25tZXNzYWdlKToKKyAgICAgICAg
KHJ1blRlc3RzKToKKyAgICAgICAgKG9ycGhhbmVkV29ya2VyRXhpdGVkLndvcmtlci5vbm1lc3Nh
Z2UpOgorICAgICAgICAob3JwaGFuZWRXb3JrZXJFeGl0ZWQpOgorICAgICAgICAob3JwaGFuZWRU
aW1lb3V0V29ya2VyRXhpdGVkKToKKyAgICAgICAgKiBmYXN0L3dvcmtlcnMvcmVzb3VyY2VzL3No
YXJlZC13b3JrZXItbGlmZWN5Y2xlLmpzOiBBZGRlZC4KKyAgICAgICAgQWRkZWQgdGVzdHMgZm9y
IHRoZSB2YXJpb3VzIHNoYXJlZCB3b3JrZXIgbGlmZWN5Y2xlIGNhc2VzIChtYWtlcyBzdXJlIHRo
YXQgcmVmY291bnRzIGFyZSBwcm9wZXJseSB1cGRhdGVkIHdoZW4gZG9jdW1lbnRzIGNsb3NlKS4K
KyAgICAgICAgKHJ1blRlc3RzKToKKyAgICAgICAgKGNyZWF0ZVdvcmtlckZyYW1lKToKKyAgICAg
ICAgKGNsb3NlRnJhbWUpOgorICAgICAgICAoY2xvc2VGcmFtZTEpOgorICAgICAgICAoY2xvc2VG
cmFtZTIpOgorICAgICAgICAoY2xvc2VGcmFtZTMpOgorICAgICAgICAoY2xvc2VGcmFtZTQpOgor
ICAgICAgICAoY29tcGxldGUpOgorICAgICAgICAqIGZhc3Qvd29ya2Vycy9yZXNvdXJjZXMvd29y
a2VyLWxpZmVjeWNsZS5qczoKKyAgICAgICAgVXBkYXRlZCB0ZXN0IHNvIGl0IGNhbiBydW4gaW4g
YSBicm93c2VyICh3aXRoIGluY29ycmVjdCBvdXRwdXQpIHRvIGFpZCBpbiBkZWJ1Z2dpbmcuCisg
ICAgICAgIChydW5UZXN0cy53b3JrZXIub25tZXNzYWdlKToKKyAgICAgICAgKHJ1blRlc3RzKToK
KyAgICAgICAgKHdvcmtlckV4aXRlZCk6CisgICAgICAgICogZmFzdC93b3JrZXJzL3Jlc291cmNl
cy93b3JrZXItdXRpbC5qczogQWRkZWQuCisgICAgICAgIE1vdmVkIHNvbWUgY29tbW9uIHV0aWxp
dGllcyBvdXQgb2Ygd29ya2VyLWxpZmVjeWNsZS5qcyBhbmQgaW50byB0aGlzIGZpbGUgc28gdGhl
eSBjYW4gYmUgc2hhcmVkIHdpdGggb3RoZXIgdGVzdHMuCisgICAgICAgIChsb2cpOgorICAgICAg
ICAoZ2MpOgorICAgICAgICAod2FpdFVudGlsV29ya2VyVGhyZWFkc0V4aXQpOgorICAgICAgICAo
d2FpdFVudGlsVGhyZWFkQ291bnRNYXRjaGVzLnJldHVybik6CisgICAgICAgICh3YWl0VW50aWxU
aHJlYWRDb3VudE1hdGNoZXMpOgorICAgICAgICAoZW5zdXJlVGhyZWFkQ291bnRNYXRjaGVzKToK
KyAgICAgICAgKGRvbmUpOgorICAgICAgICAqIGZhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLWZy
YW1lLWxpZmVjeWNsZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvd29ya2Vy
cy9zaGFyZWQtd29ya2VyLWZyYW1lLWxpZmVjeWNsZS5odG1sLWRpc2FibGVkOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1saWZlY3ljbGUuaHRtbC1kaXNhYmxl
ZDoKKyAgICAgICAgKiBmYXN0L3dvcmtlcnMvd29ya2VyLWxpZmVjeWNsZS5odG1sOgorCiAyMDA5
LTA4LTE5ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIE5vIHJl
dmlldy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9kZWRpY2F0ZWQtd29y
a2VyLWxpZmVjeWNsZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvZGVk
aWNhdGVkLXdvcmtlci1saWZlY3ljbGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmExOGY1NDgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L3dvcmtlcnMvZGVkaWNhdGVkLXdvcmtlci1saWZlY3ljbGUtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTIgQEAKK1RoaXMgdGVzdCBjaGVja3Mgd2hldGhlciBvcnBoYW5lZCB3b3JrZXJzIGV4
aXQgdW5kZXIgdmFyaW91cyBjb25kaXRpb25zCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitQQVNTIE9ycGhhbmVkIHdvcmtlciB0aHJlYWQgY3JlYXRlZC4KK1BBU1MgT3JwaGFuZWQg
d29ya2VyIHRocmVhZCBleGl0ZWQuCitQQVNTIE9ycGhhbmVkIHRpbWVvdXQgd29ya2VyIHRocmVh
ZCBjcmVhdGVkLgorUEFTUyBPcnBoYW5lZCB0aW1lb3V0IHdvcmtlciB0aHJlYWQgZXhpdGVkLgor
CitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9k
ZWRpY2F0ZWQtd29ya2VyLWxpZmVjeWNsZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJz
L2RlZGljYXRlZC13b3JrZXItbGlmZWN5Y2xlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uZDc5MWExNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
d29ya2Vycy9kZWRpY2F0ZWQtd29ya2VyLWxpZmVjeWNsZS5odG1sCkBAIC0wLDAgKzEsMTEgQEAK
KzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9w
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dvcmtl
ci1jcmVhdGUtY29tbW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd29y
a2VyLXV0aWwuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9kZWRpY2F0ZWQt
d29ya2VyLWxpZmVjeWNsZS5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L3dvcmtlcnMvcmVzb3VyY2VzL2NyZWF0ZS1zaGFyZWQtd29ya2VyLWZyYW1l
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvcmVzb3VyY2VzL2NyZWF0ZS1zaGFyZWQt
d29ya2VyLWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTcx
YWZkZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9yZXNvdXJj
ZXMvY3JlYXRlLXNoYXJlZC13b3JrZXItZnJhbWUuaHRtbApAQCAtMCwwICsxLDkgQEAKKzxib2R5
PgorPHNjcmlwdD4KK3ZhciB3b3JrZXJOYW1lcyA9IHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gudG9T
dHJpbmcoKS5zdWJzdHJpbmcoMSk7Cit2YXIgbmFtZUFycmF5ID0gd29ya2VyTmFtZXMuc3BsaXQo
IiwiKTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgbmFtZUFycmF5Lmxlbmd0aDsgaSsrKSB7CisgICAg
dmFyIHdvcmtlciA9IG5ldyBTaGFyZWRXb3JrZXIoInNoYXJlZC13b3JrZXItY29tbW9uLmpzIiwg
bmFtZUFycmF5W2ldKTsKK30KKzwvc2NyaXB0PgorPC9ib2R5PgpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9yZXNvdXJjZXMv
ZGVkaWNhdGVkLXdvcmtlci1saWZlY3ljbGUuanMgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMv
cmVzb3VyY2VzL2RlZGljYXRlZC13b3JrZXItbGlmZWN5Y2xlLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjc3MWU3OGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L3dvcmtlcnMvcmVzb3VyY2VzL2RlZGljYXRlZC13b3JrZXItbGlmZWN5Y2xlLmpzCkBA
IC0wLDAgKzEsNjEgQEAKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgY2hlY2tzIHdoZXRoZXIgb3Jw
aGFuZWQgd29ya2VycyBleGl0IHVuZGVyIHZhcmlvdXMgY29uZGl0aW9ucyIpOworCitpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAg
ICB3YWl0VW50aWxXb3JrZXJUaHJlYWRzRXhpdChydW5UZXN0cyk7Cit9IGVsc2UgeworICAgIGRl
YnVnKCJOT1RFOiBUaGlzIHRlc3QgcmVsaWVzIG9uIGZ1bmN0aW9uYWxpdHkgaW4gRHVtcFJlbmRl
clRyZWUgdG8gZGV0ZWN0IHdoZW4gd29ya2VycyBoYXZlIGV4aXRlZCAtIHRlc3QgcmVzdWx0cyB3
aWxsIGJlIGluY29ycmVjdCB3aGVuIHJ1biBpbiBhIGJyb3dzZXIuIik7CisgICAgcnVuVGVzdHMo
KTsKK30KKworLy8gQ29udGFpbnMgdGVzdHMgZm9yIGRlZGljYXRlZC13b3JrZXItc3BlY2lmaWMg
bGlmZWN5Y2xlIGZ1bmN0aW9uYWxpdHkuCitmdW5jdGlvbiBydW5UZXN0cygpCit7CisgICAgLy8g
U3RhcnQgYSB3b3JrZXIsIGRyb3AvR0Mgb3VyIHJlZmVyZW5jZSB0byBpdCwgbWFrZSBzdXJlIGl0
IGV4aXRzLgorICAgIHZhciB3b3JrZXIgPSBjcmVhdGVXb3JrZXIoKTsKKyAgICB3b3JrZXIucG9z
dE1lc3NhZ2UoInBpbmciKTsKKyAgICB3b3JrZXIub25tZXNzYWdlID0gZnVuY3Rpb24oZXZlbnQp
IHsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICAg
ICAgaWYgKGxheW91dFRlc3RDb250cm9sbGVyLndvcmtlclRocmVhZENvdW50ID09IDEpCisgICAg
ICAgICAgICAgICAgdGVzdFBhc3NlZCgiT3JwaGFuZWQgd29ya2VyIHRocmVhZCBjcmVhdGVkLiIp
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkFmdGVyIHRo
cmVhZCBjcmVhdGlvbjogbGF5b3V0VGVzdENvbnRyb2xsZXIud29ya2VyVGhyZWFkQ291bnQgPSAi
ICsgbGF5b3V0VGVzdENvbnRyb2xsZXIud29ya2VyVGhyZWFkQ291bnQpOworICAgICAgICB9CisK
KyAgICAgICAgLy8gT3JwaGFuIG91ciB3b3JrZXIgKG5vIG1vcmUgcmVmZXJlbmNlcyB0byBpdCkg
YW5kIHdhaXQgZm9yIGl0IHRvIGV4aXQuCisgICAgICAgIHdvcmtlci5vbm1lc3NhZ2UgPSAwOwor
ICAgICAgICB3b3JrZXIgPSAwOworICAgICAgICB3YWl0VW50aWxXb3JrZXJUaHJlYWRzRXhpdChv
cnBoYW5lZFdvcmtlckV4aXRlZCk7CisgICAgfQorfQorCitmdW5jdGlvbiBvcnBoYW5lZFdvcmtl
ckV4aXRlZCgpCit7CisgICAgdGVzdFBhc3NlZCgiT3JwaGFuZWQgd29ya2VyIHRocmVhZCBleGl0
ZWQuIik7CisgICAgLy8gU3RhcnQgYSB3b3JrZXIsIGRyb3AvR0Mgb3VyIHJlZmVyZW5jZSB0byBp
dCwgbWFrZSBzdXJlIGl0IGV4aXRzLgorICAgIHZhciB3b3JrZXIgPSBjcmVhdGVXb3JrZXIoKTsK
KyAgICB3b3JrZXIucG9zdE1lc3NhZ2UoInBpbmciKTsKKyAgICB3b3JrZXIub25tZXNzYWdlID0g
ZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgeworICAgICAgICAgICAgaWYgKGxheW91dFRlc3RDb250cm9sbGVyLndvcmtlclRocmVhZENv
dW50ID09IDEpCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiT3JwaGFuZWQgdGltZW91dCB3
b3JrZXIgdGhyZWFkIGNyZWF0ZWQuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgdGVzdEZhaWxlZCgiQWZ0ZXIgdGhyZWFkIGNyZWF0aW9uOiBsYXlvdXRUZXN0Q29udHJvbGxl
ci53b3JrZXJUaHJlYWRDb3VudCA9ICIgKyBsYXlvdXRUZXN0Q29udHJvbGxlci53b3JrZXJUaHJl
YWRDb3VudCk7CisgICAgICAgIH0KKyAgICAgICAgLy8gU2VuZCBhIG1lc3NhZ2UgdGhhdCBzdGFy
dHMgdXAgYW4gYXN5bmMgb3BlcmF0aW9uLCB0byBtYWtlIHN1cmUgdGhlIHRocmVhZCBleGl0cyB3
aGVuIGl0IGNvbXBsZXRlcy4KKyAgICAgICAgLy8gRklYTUU6IERpc2FibGVkIGZvciBub3cgLSBy
ZS1lbmFibGUgd2hlbiBidWcgMjg3MDIgaXMgZml4ZWQuCisgICAgICAgIC8vd29ya2VyLnBvc3RN
ZXNzYWdlKCJldmFsIHNldFRpbWVvdXQoJycsIDEwKSIpOworCisgICAgICAgIC8vIE9ycGhhbiBv
dXIgd29ya2VyIChubyBtb3JlIHJlZmVyZW5jZXMgdG8gaXQpIGFuZCB3YWl0IGZvciBpdCB0byBl
eGl0LgorICAgICAgICB3b3JrZXIub25tZXNzYWdlID0gMDsKKyAgICAgICAgd29ya2VyID0gMDsK
KyAgICAgICAgd2FpdFVudGlsV29ya2VyVGhyZWFkc0V4aXQob3JwaGFuZWRUaW1lb3V0V29ya2Vy
RXhpdGVkKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIG9ycGhhbmVkVGltZW91dFdvcmtlckV4aXRl
ZCgpCit7CisgICAgdGVzdFBhc3NlZCgiT3JwaGFuZWQgdGltZW91dCB3b3JrZXIgdGhyZWFkIGV4
aXRlZC4iKTsKKyAgICBkb25lKCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3dv
cmtlcnMvcmVzb3VyY2VzL3NoYXJlZC13b3JrZXItbGlmZWN5Y2xlLmpzIGIvTGF5b3V0VGVzdHMv
ZmFzdC93b3JrZXJzL3Jlc291cmNlcy9zaGFyZWQtd29ya2VyLWxpZmVjeWNsZS5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZWNiZTBiCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3Jlc291cmNlcy9zaGFyZWQtd29ya2VyLWxpZmVjeWNs
ZS5qcwpAQCAtMCwwICsxLDY0IEBACitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IGNoZWNrcyB3aGV0
aGVyIHNoYXJlZCB3b3JrZXJzIGV4aXQgd2hlbiB0aGUgcGFyZW50IGRvY3VtZW50IGNsb3NlcyIp
OworCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRp
bERvbmUoKTsKKyAgICB3YWl0VW50aWxXb3JrZXJUaHJlYWRzRXhpdChydW5UZXN0cyk7Cit9IGVs
c2UgeworICAgIGRlYnVnKCJOT1RFOiBUaGlzIHRlc3QgcmVsaWVzIG9uIGZ1bmN0aW9uYWxpdHkg
aW4gRHVtcFJlbmRlclRyZWUgdG8gZGV0ZWN0IHdoZW4gd29ya2VycyBoYXZlIGV4aXRlZCAtIHRl
c3QgcmVzdWx0cyB3aWxsIGJlIGluY29ycmVjdCB3aGVuIHJ1biBpbiBhIGJyb3dzZXIuIik7Cisg
ICAgcnVuVGVzdHMoKTsKK30KKworZnVuY3Rpb24gcnVuVGVzdHMoKQoreworICAgIGNyZWF0ZVdv
cmtlckZyYW1lKCJmcmFtZTEiLCAid29ya2VyMSIpOworICAgIGNyZWF0ZVdvcmtlckZyYW1lKCJm
cmFtZTIiLCAid29ya2VyMSx3b3JrZXIyIik7CisgICAgY3JlYXRlV29ya2VyRnJhbWUoImZyYW1l
MyIsICJ3b3JrZXIzIik7CisgICAgY3JlYXRlV29ya2VyRnJhbWUoImZyYW1lNCIsICJ3b3JrZXIx
Iik7CisKKyAgICB3YWl0VW50aWxUaHJlYWRDb3VudE1hdGNoZXMoY2xvc2VGcmFtZTEsIDMpOwor
fQorCitmdW5jdGlvbiBjcmVhdGVXb3JrZXJGcmFtZShpZCwgd29ya2VyTmFtZXMpCit7CisgICAg
ZG9jdW1lbnQud3JpdGUoIjxpZnJhbWUgaWQ9JyIgKyBpZCArICInIHNyYz0ncmVzb3VyY2VzL2Ny
ZWF0ZS1zaGFyZWQtd29ya2VyLWZyYW1lLmh0bWw/IiArIHdvcmtlck5hbWVzICsgIic+PC9pZnJh
bWU+Iik7Cit9CisKK2Z1bmN0aW9uIGNsb3NlRnJhbWUoaWQpCit7CisgICAgdmFyIGZyYW1lID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpOworICAgIGZyYW1lLnBhcmVudE5vZGUucmVtb3Zl
Q2hpbGQoZnJhbWUpOworfQorCitmdW5jdGlvbiBjbG9zZUZyYW1lMSgpCit7CisgICAgY2xvc2VG
cmFtZSgiZnJhbWUxIik7CisgICAgZW5zdXJlVGhyZWFkQ291bnRNYXRjaGVzKGNsb3NlRnJhbWUy
LCAzKTsKK30KKworZnVuY3Rpb24gY2xvc2VGcmFtZTIoKQoreworICAgIHRlc3RQYXNzZWQoIkZy
YW1lMSBjbG9zZWQsIHNoYXJlZCB3b3JrZXJzIGtlcHQgcnVubmluZyIpOworICAgIGNsb3NlRnJh
bWUoImZyYW1lMiIpOworICAgIGVuc3VyZVRocmVhZENvdW50TWF0Y2hlcyhjbG9zZUZyYW1lMywg
Mik7Cit9CisKK2Z1bmN0aW9uIGNsb3NlRnJhbWUzKCkKK3sKKyAgICB0ZXN0UGFzc2VkKCJGcmFt
ZTIgY2xvc2VkLCBzaGFyZWQgd29ya2VyMiBleGl0ZWQiKTsKKyAgICBjbG9zZUZyYW1lKCJmcmFt
ZTMiKTsKKyAgICBlbnN1cmVUaHJlYWRDb3VudE1hdGNoZXMoY2xvc2VGcmFtZTQsIDEpOworfQor
CitmdW5jdGlvbiBjbG9zZUZyYW1lNCgpCit7CisgICAgdGVzdFBhc3NlZCgiRnJhbWUzIGNsb3Nl
ZCwgc2hhcmVkIHdvcmtlcjMgZXhpdGVkIik7CisgICAgY2xvc2VGcmFtZSgiZnJhbWU0Iik7Cisg
ICAgd2FpdFVudGlsV29ya2VyVGhyZWFkc0V4aXQoY29tcGxldGUpOworfQorCitmdW5jdGlvbiBj
b21wbGV0ZSgpCit7CisgICAgdGVzdFBhc3NlZCgiRnJhbWU0IGNsb3NlZCwgYWxsIHdvcmtlcnMg
Y2xvc2VkIik7CisgICAgZG9uZSgpOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC93
b3JrZXJzL3Jlc291cmNlcy93b3JrZXItbGlmZWN5Y2xlLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC93
b3JrZXJzL3Jlc291cmNlcy93b3JrZXItbGlmZWN5Y2xlLmpzCmluZGV4IDkxMmMwZmUuLmQ2NGEz
ZjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9yZXNvdXJjZXMvd29ya2Vy
LWxpZmVjeWNsZS5qcworKysgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvcmVzb3VyY2VzL3dv
cmtlci1saWZlY3ljbGUuanMKQEAgLTEsMzggKzEsMjYgQEAKLWZ1bmN0aW9uIGxvZyhtZXNzYWdl
KQotewotICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lckhUTUwgKz0g
bWVzc2FnZSArICI8YnI+IjsKLX0KIAogaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
ewogICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CiAgICAgd2FpdFVudGlsV29ya2VyVGhyZWFkc0V4
aXQocnVuVGVzdHMpOwogfSBlbHNlIHsKLSAgICBsb2coIkZBSUw6IFRlc3QgcmVsaWVzIG9uIHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci4gUGxlYXNlIHJ1biB0aGlzIHRlc3QgdmlhIER1bXBS
ZW5kZXJUcmVlIik7Ci0gICAgZG9uZSgpOwotfQotCi1mdW5jdGlvbiB3YWl0VW50aWxXb3JrZXJU
aHJlYWRzRXhpdChjYWxsYmFjaykKLXsKLSAgICBpZiAobGF5b3V0VGVzdENvbnRyb2xsZXIud29y
a2VyVGhyZWFkQ291bnQgPT0gMCkgewotICAgICAgICAvLyBXb3JrZXIgdGhyZWFkcyBoYXZlIGV4
aXRlZC4KLSAgICAgICAgY2FsbGJhY2soKTsKLSAgICB9IGVsc2UgewotICAgICAgICAvLyBQb2xs
IHVudGlsIHdvcmtlciB0aHJlYWRzIGhhdmUgZXhpdGVkLgotICAgICAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeyB3YWl0VW50aWxXb3JrZXJUaHJlYWRzRXhpdChjYWxsYmFjayk7IH0sIDEwMCk7
Ci0gICAgfQorICAgIGxvZygiTk9URTogVGVzdCByZWxpZXMgb24gd2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyIHRvIGRldGVjdCB3aGVuIHdvcmtlciB0aHJlYWRzIGhhdmUgZXhpdGVkLiBQbGVh
c2UgcnVuIHRoaXMgdGVzdCB2aWEgRHVtcFJlbmRlclRyZWUiKTsKKyAgICB3YWl0VW50aWxXb3Jr
ZXJUaHJlYWRzRXhpdChydW5UZXN0cyk7CiB9CiAKIGZ1bmN0aW9uIHJ1blRlc3RzKCkKIHsKLSAg
ICBsb2coIlBBU1M6IHdvcmtlclRocmVhZENvdW50ID0gIiArIGxheW91dFRlc3RDb250cm9sbGVy
LndvcmtlclRocmVhZENvdW50KTsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQorICAgICAgICBsb2coIlBBU1M6IHdvcmtlclRocmVhZENvdW50ID0gIiArIGxheW91dFRlc3RD
b250cm9sbGVyLndvcmtlclRocmVhZENvdW50KTsKICAgICB2YXIgd29ya2VyID0gY3JlYXRlV29y
a2VyKCk7CiAgICAgd29ya2VyLnBvc3RNZXNzYWdlKCJwaW5nIik7CiAgICAgd29ya2VyLm9ubWVz
c2FnZSA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGlmIChsYXlvdXRUZXN0Q29udHJvbGxl
ci53b3JrZXJUaHJlYWRDb3VudCA9PSAxKQotICAgICAgICAgICAgbG9nKCJQQVNTOiBXb3JrZXIg
dGhyZWFkIGNyZWF0ZWQiKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbG9nKCJGQUlMOiBB
ZnRlciB0aHJlYWQgY3JlYXRpb246IGxheW91dFRlc3RDb250cm9sbGVyLndvcmtlclRocmVhZENv
dW50ID0gIiArIGxheW91dFRlc3RDb250cm9sbGVyLndvcmtlclRocmVhZENvdW50KTsKKyAgICAg
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICAgICAgaWYgKGxh
eW91dFRlc3RDb250cm9sbGVyLndvcmtlclRocmVhZENvdW50ID09IDEpCisgICAgICAgICAgICAg
ICAgbG9nKCJQQVNTOiBXb3JrZXIgdGhyZWFkIGNyZWF0ZWQiKTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICBsb2coIkZBSUw6IEFmdGVyIHRocmVhZCBjcmVhdGlvbjogbGF5b3V0
VGVzdENvbnRyb2xsZXIud29ya2VyVGhyZWFkQ291bnQgPSAiICsgbGF5b3V0VGVzdENvbnRyb2xs
ZXIud29ya2VyVGhyZWFkQ291bnQpOworICAgICAgICB9CiAKICAgICAgICAgLy8gU2h1dGRvd24g
dGhlIHdvcmtlci4KICAgICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKCJjbG9zZSIpOwpAQCAtNDUs
MTEgKzMzLDMgQEAgZnVuY3Rpb24gd29ya2VyRXhpdGVkKCkKICAgICBsb2coIlBBU1M6IFdvcmtl
ciBleGl0ZWQgd2hlbiBjbG9zZSgpIGNhbGxlZC4iKTsKICAgICBkb25lKCk7CiB9Ci0KLWZ1bmN0
aW9uIGRvbmUoKQotewotICAgIGxvZygiRE9ORSIpOwotICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsK
LX0KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3Jlc291cmNlcy93b3Jr
ZXItdXRpbC5qcyBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9yZXNvdXJjZXMvd29ya2VyLXV0
aWwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzIwZWE1YwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9yZXNvdXJjZXMvd29ya2VyLXV0
aWwuanMKQEAgLTAsMCArMSw1NSBAQAorLy8gVXNlZnVsIHV0aWxpdGllcyBmb3Igd29ya2VyIHRl
c3RzCisKK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJyZXN1bHQiKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8YnI+IjsKK30KKworZnVuY3Rp
b24gZ2MoKQoreworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeyAvLyBmb3Jj
ZSBnYXJiYWdlIGNvbGxlY3Rpb24gKEZGIHJlcXVpcmVzIGFib3V0IDlLIGFsbG9jYXRpb25zIGJl
Zm9yZSBhIGNvbGxlY3QpCisgICAgICAgIHZhciBzID0gbmV3IFN0cmluZygiYWJjIik7CisgICAg
fQorfQorCitmdW5jdGlvbiB3YWl0VW50aWxXb3JrZXJUaHJlYWRzRXhpdChjYWxsYmFjaykKK3sK
KyAgICB3YWl0VW50aWxUaHJlYWRDb3VudE1hdGNoZXMoY2FsbGJhY2ssIDApOworfQorCitmdW5j
dGlvbiB3YWl0VW50aWxUaHJlYWRDb3VudE1hdGNoZXMoY2FsbGJhY2ssIGNvdW50KQoreworICAg
IC8vIFdoZW4gcnVubmluZyBpbiBhIGJyb3dzZXIsIGp1c3Qgd2FpdCBmb3Igb25lIHNlY29uZCB0
aGVuIGNhbGwgdGhlIGNhbGxiYWNrLgorICAgIGlmICghd2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSB7CisgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IGdjKCk7IGNhbGxiYWNrKCk7
IH0sIDEwMDApOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGxheW91dFRlc3RD
b250cm9sbGVyLndvcmtlclRocmVhZENvdW50ID09IGNvdW50KSB7CisgICAgICAgIC8vIFdvcmtl
ciB0aHJlYWRzIGhhdmUgZXhpdGVkLgorICAgICAgICBjYWxsYmFjaygpOworICAgIH0gZWxzZSB7
CisgICAgICAgIC8vIFBvbGwgdW50aWwgd29ya2VyIHRocmVhZHMgaGF2ZSBiZWVuIEdDJ2QvZXhp
dGVkLgorICAgICAgICBnYygpOworICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyB3YWl0
VW50aWxUaHJlYWRDb3VudE1hdGNoZXMoY2FsbGJhY2ssIGNvdW50KTsgfSwgMTAwKTsKKyAgICB9
Cit9CisKK2Z1bmN0aW9uIGVuc3VyZVRocmVhZENvdW50TWF0Y2hlcyhjYWxsYmFjaywgY291bnQp
Cit7CisgICAgLy8gSnVzdCB3YWl0IHVudGlsIHRoZSB0aHJlYWQgY291bnQgbWF0Y2hlcywgdGhl
biB3YWl0IGFub3RoZXIgMTAwbXMgdG8gc2VlIGlmIGl0IGNoYW5nZXMsIHRoZW4gZmlyZSB0aGUg
Y2FsbGJhY2suCisgICAgd2FpdFVudGlsVGhyZWFkQ291bnRNYXRjaGVzKGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgd2FpdFVudGlsVGhyZWFkQ291bnRN
YXRjaGVzKGNhbGxiYWNrLCBjb3VudCk7IH0sICAxMDApOworICAgICAgICB9LCBjb3VudCk7Cit9
CisKK2Z1bmN0aW9uIGRvbmUoKQoreworICAgIGlmICh3aW5kb3cuZGVidWcpCisgICAgICAgIGRl
YnVnKCc8YnI+PHNwYW4gY2xhc3M9InBhc3MiPlRFU1QgQ09NUExFVEU8L3NwYW4+Jyk7CisgICAg
ZWxzZQorICAgICAgICBsb2coIkRPTkUiKTsKKworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIgJiYgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUpCisgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLWZyYW1lLWxpZmVjeWNsZS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1mcmFtZS1s
aWZlY3ljbGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LmU5NmI2MjgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvc2hh
cmVkLXdvcmtlci1mcmFtZS1saWZlY3ljbGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAK
K1RoaXMgdGVzdCBjaGVja3Mgd2hldGhlciBzaGFyZWQgd29ya2VycyBleGl0IHdoZW4gdGhlIHBh
cmVudCBkb2N1bWVudCBjbG9zZXMKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BB
U1MgRnJhbWUxIGNsb3NlZCwgc2hhcmVkIHdvcmtlcnMga2VwdCBydW5uaW5nCitQQVNTIEZyYW1l
MiBjbG9zZWQsIHNoYXJlZCB3b3JrZXIyIGV4aXRlZAorUEFTUyBGcmFtZTMgY2xvc2VkLCBzaGFy
ZWQgd29ya2VyMyBleGl0ZWQKK1BBU1MgRnJhbWU0IGNsb3NlZCwgYWxsIHdvcmtlcnMgY2xvc2Vk
CisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJz
L3NoYXJlZC13b3JrZXItZnJhbWUtbGlmZWN5Y2xlLmh0bWwtZGlzYWJsZWQgYi9MYXlvdXRUZXN0
cy9mYXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1mcmFtZS1saWZlY3ljbGUuaHRtbC1kaXNhYmxl
ZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzhiMjg2Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXItZnJhbWUtbGlm
ZWN5Y2xlLmh0bWwtZGlzYWJsZWQKQEAgLTAsMCArMSwxMSBAQAorPGhlYWQ+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8
c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLXdvcmtlci1jcmVhdGUtY29t
bW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd29ya2VyLXV0aWwuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQtd29ya2VyLWxpZmVjeWNs
ZS5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3dv
cmtlcnMvc2hhcmVkLXdvcmtlci1saWZlY3ljbGUuaHRtbC1kaXNhYmxlZCBiL0xheW91dFRlc3Rz
L2Zhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLWxpZmVjeWNsZS5odG1sLWRpc2FibGVkCmluZGV4
IDY2Y2M4MjcuLmNmYjBjM2UgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9z
aGFyZWQtd29ya2VyLWxpZmVjeWNsZS5odG1sLWRpc2FibGVkCisrKyBiL0xheW91dFRlc3RzL2Zh
c3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLWxpZmVjeWNsZS5odG1sLWRpc2FibGVkCkBAIC0yLDUg
KzIsNiBAQAogPHA+VGVzdCBTaGFyZWRXb3JrZXIgbGlmZWN5Y2xlLiBXaWxsIHByaW50IFBBU1Mg
bXVsdGlwbGUgdGltZXMsIGZvbGxvd2VkIGJ5IERPTkUuPC9wPgogPGRpdiBpZD1yZXN1bHQ+PC9k
aXY+CiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC13b3JrZXItY3JlYXRlLWNvbW1vbi5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dvcmtlci11dGlsLmpzIj48L3Nj
cmlwdD4KIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd29ya2VyLWxpZmVjeWNsZS5qcyI+PC9zY3Jp
cHQ+CiA8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2Vy
LWxpZmVjeWNsZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci1saWZlY3lj
bGUuaHRtbAppbmRleCA3NDlmM2JkLi4yZWI1ODlmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9m
YXN0L3dvcmtlcnMvd29ya2VyLWxpZmVjeWNsZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
d29ya2Vycy93b3JrZXItbGlmZWN5Y2xlLmh0bWwKQEAgLTIsNSArMiw2IEBACiA8cD5UZXN0IFdv
cmtlciBsaWZlY3ljbGUuIFdpbGwgcHJpbnQgUEFTUyBtdWx0aXBsZSB0aW1lcywgZm9sbG93ZWQg
YnkgRE9ORS48L3A+CiA8ZGl2IGlkPXJlc3VsdD48L2Rpdj4KIDxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvd29ya2VyLWNyZWF0ZS1jb21tb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291
cmNlcy93b3JrZXItdXRpbC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dv
cmtlci1saWZlY3ljbGUuanMiPjwvc2NyaXB0PgogPC9ib2R5Pgo=
</data>
<flag name="review"
          id="19566"
          type_id="1"
          status="+"
          setter="levin"
    />
    <flag name="commit-queue"
          id="19658"
          type_id="3"
          status="-"
          setter="levin"
    />
          </attachment>
      

    </bug>

</bugzilla>