<?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>31372</bug_id>
          
          <creation_ts>2009-11-11 13:11:08 -0800</creation_ts>
          <short_desc>WebInspector: Adds Timer record tests for Timeline agent records</short_desc>
          <delta_ts>2009-11-30 06:32:27 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>30467</dup_id>
          
          <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="Eric Ayers">zundel</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>knorton</cc>
    
    <cc>pfeldman</cc>
    
    <cc>timothy</cc>
    
    <cc>zundel</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>162645</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Ayers">zundel</who>
    <bug_when>2009-11-11 13:11:08 -0800</bug_when>
    <thetext>Adds test of a setTimeout(), a cancelTimeout(), and an interval timer with a cancel too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162676</commentid>
    <comment_count>1</comment_count>
      <attachid>43001</attachid>
    <who name="Eric Ayers">zundel</who>
    <bug_when>2009-11-11 14:12:34 -0800</bug_when>
    <thetext>Created attachment 43001
WebInspector: Adds unit test for Timer records from the Timeline agent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162810</commentid>
    <comment_count>2</comment_count>
      <attachid>43001</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-11-11 23:53:15 -0800</bug_when>
    <thetext>Comment on attachment 43001
WebInspector: Adds unit test for Timer records from the Timeline agent. 

&gt; +// Look for the TimerFire event that correlates to the 
&gt; +// to the &lt;script&gt; tag below.

to the is used twice


&gt; +   function analyzeTimerFire(record) 

I think I&apos;ve seen this pattern before. Can we extract something receiving timelineMark and a printcallback or something?

&gt; +        var numChildren = record.children ? record.children.length : 0;
&gt; +        // Look for a MarkTimeline as a direct child.
&gt; +        for (var i = 0; i &lt; numChildren; ++i) {
&gt; +            var child = record.children[i];
&gt; +            if (child.type === timelineAgentRecordType.MarkTimeline &amp;&amp; child.data.message === timelineMark) {
&gt; +                return record;
&gt; +            }
&gt; +        }

This snippet should really be reused.


&gt; +function analyzeTimerFire(record) 
&gt; +{
&gt; +    var numChildren = record.children ? record.children.length : 0;
&gt; +    for (var i = 0; i &lt; numChildren; ++i) {
&gt; +        var child = record.children[i];
&gt; +        if (child.type === timelineAgentRecordType.MarkTimeline &amp;&amp; child.data.message === timelineMark) {
&gt; +            printTimelineRecordProperties(record);
&gt; +            return true;
&gt; +        }
&gt; +    }
&gt; +    return false;

ditto


&gt; +    // Look for the install that corresponds to the timer fire.
&gt; +    for (var i = 0 ; i &lt; numRecords; ++i) {
&gt; +        var record = timelineRecords[i];
&gt; +        found = findTimerRecord(timelineAgentRecordType.TimerInstall, record, timerId);
&gt; +        if (found)
&gt; +            break;

This pattern is also happening all the time.

JavaScript is a dynamic language allowing you to pass functions as parameters, etc. 
- Implementing forEachRecord would do some code reuse for you.
- findRecord(type, goldenData) where golden is a set of properties that should be set in data would also cover lots of stuff.
like the snipet above would convert into findRecord(timelineAgentRecordType.MarkTimeline, { message : timelineMark }); 
or printTimelineRecordProperties(timelineAgentRecordType.MarkTimeline, { message : timelineMark }) to reuse even more.
- the approach above would convert findTimerInstall into findRecort(timelineAgentRecordType.TimerInstall, { timerId : timerId }); and should work for eval as well.

In other words, please extract some methods. As you create more tests we get more and more code duplication.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167227</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Ayers">zundel</who>
    <bug_when>2009-11-30 06:32:27 -0800</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 30467 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43001</attachid>
            <date>2009-11-11 14:12:34 -0800</date>
            <delta_ts>2009-11-11 23:53:14 -0800</delta_ts>
            <desc>WebInspector: Adds unit test for Timer records from the Timeline agent. </desc>
            <filename>webkit-31372-1.patch</filename>
            <type>text/plain</type>
            <size>14857</size>
            <attacher name="Eric Ayers">zundel</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDUwODQyKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMDktMTEtMTEgIEVyaWMgWi4gQXllcnMgIDx6
dW5kZWxAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGRzIHRlc3QgZm9yIFRpbWVyIHJlY29yZHMgZnJvbSBJbnNwZWN0b3IgVGlt
ZWxpbmUuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTMxMzcyCisKKyAgICAgICAgKiBpbnNwZWN0b3IvdGltZWxpbmUtdGVzdC5qczoKKyAgICAgICAg
KiBpbnNwZWN0b3IvdGltZWxpbmUtdGltZXItMS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGluc3BlY3Rvci90aW1lbGluZS10aW1lci0xLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGlu
c3BlY3Rvci90aW1lbGluZS10aW1lci0yLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
aW5zcGVjdG9yL3RpbWVsaW5lLXRpbWVyLTIuaHRtbDogQWRkZWQuCisgICAgICAgICogaW5zcGVj
dG9yL3RpbWVsaW5lLXRpbWVyLTMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNw
ZWN0b3IvdGltZWxpbmUtdGltZXItMy5odG1sOiBBZGRlZC4KKwogMjAwOS0xMS0xMSAgQnJpYW4g
V2VpbnN0ZWluICA8YndlaW5zdGVpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
RGFyaW4gQWRsZXIuCkluZGV4OiBMYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUtdGVzdC5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUtdGVzdC5qcwko
cmV2aXNpb24gNTA4MzMpCisrKyBMYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUtdGVzdC5q
cwkod29ya2luZyBjb3B5KQpAQCAtOCw3ICs4LDkgQEAgdmFyIHRpbWVsaW5lQWdlbnRSZWNvcmRU
eXBlID0ge307CiB2YXIgdGltZWxpbmVOb25EZXRlcm1pbmlzdGljUHJvcHMgPSB7IAogICAgIGNo
aWxkcmVuIDogMSwKICAgICBlbmRUaW1lIDogMSwgCisgICAgaWRlbnRpZmllciA6IDEsCiAgICAg
c3RhcnRUaW1lIDogMSwKKyAgICB0aW1lcklkIDogMSwKICAgICB1cmwgOiAxCiB9OwogCkluZGV4
OiBMYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUtdGltZXItMS1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lLXRpbWVyLTEtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lLXRp
bWVyLTEtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI1IEBACitUZXN0cyB0
aGUgVGltZWxpbmUgQVBJIGluc3RydW1lbnRhdGlvbiBvZiBhIFRpbWVyIHNldCBhbmQgZmlyZQor
CitUaW1lckZpcmUKKy0tLS0+IE1hcmtUaW1lbGluZSA6IFRJTUVSIEZJUkUKKworVGltZXJGaXJl
IFByb3BlcnRpZXM6CisrIHN0YXJ0VGltZSA6ICogREVGSU5FRCAqCisrIGRhdGEgOiB7CisrLSB0
aW1lcklkIDogKiBERUZJTkVEICoKKysgfQorKyBjaGlsZHJlbiA6ICogREVGSU5FRCAqCisrIGVu
ZFRpbWUgOiAqIERFRklORUQgKgorKyB0eXBlIDogNworCistLS0tPiBUaW1lckluc3RhbGwKKwor
VGltZXJJbnN0YWxsIFByb3BlcnRpZXM6CisrIHN0YXJ0VGltZSA6ICogREVGSU5FRCAqCisrIGRh
dGEgOiB7CisrLSB0aW1lcklkIDogKiBERUZJTkVEICoKKystIHRpbWVvdXQgOiAwCisrLSBzaW5n
bGVTaG90IDogdHJ1ZQorKyB9CisrIHR5cGUgOiA1CisKSW5kZXg6IExheW91dFRlc3RzL2luc3Bl
Y3Rvci90aW1lbGluZS10aW1lci0xLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL3RpbWVsaW5lLXRpbWVyLTEuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2luc3BlY3Rvci90aW1lbGluZS10aW1lci0xLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MTA0IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Imluc3BlY3Rvci10ZXN0LmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJ0aW1lbGluZS10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQ+Cit2YXIgdGltZWxpbmVNYXJrID0gIlRJTUVSIEZJUkUiOworCitmdW5jdGlvbiBhbmFseXpl
VGltZXJGaXJlKHJlY29yZCkgCit7CisgICAgdmFyIG51bUNoaWxkcmVuID0gcmVjb3JkLmNoaWxk
cmVuID8gcmVjb3JkLmNoaWxkcmVuLmxlbmd0aCA6IDA7CisgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBudW1DaGlsZHJlbjsgKytpKSB7CisgICAgICAgIHZhciBjaGlsZCA9IHJlY29yZC5jaGlsZHJl
bltpXTsKKyAgICAgICAgaWYgKGNoaWxkLnR5cGUgPT09IHRpbWVsaW5lQWdlbnRSZWNvcmRUeXBl
Lk1hcmtUaW1lbGluZSAmJiBjaGlsZC5kYXRhLm1lc3NhZ2UgPT09IHRpbWVsaW5lTWFyaykgewor
ICAgICAgICAgICAgZHVtcFRpbWVsaW5lUmVjb3JkKHJlY29yZCwgMCk7CisgICAgICAgICAgICBv
dXRwdXQoIiIpOworICAgICAgICAgICAgcHJpbnRUaW1lbGluZVJlY29yZFByb3BlcnRpZXMocmVj
b3JkKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQorICAgIHJl
dHVybiBmYWxzZTsKK30KKworZnVuY3Rpb24gZmluZFRpbWVySW5zdGFsbChyZWNvcmQsIHRpbWVy
SWQpIAoreworICAgIGlmIChyZWNvcmQudHlwZSA9PT0gdGltZWxpbmVBZ2VudFJlY29yZFR5cGUu
VGltZXJJbnN0YWxsKQorICAgICAgICBpZiAocmVjb3JkLmRhdGEudGltZXJJZCA9PT0gdGltZXJJ
ZCkgeworICAgICAgICAgICAgZHVtcFRpbWVsaW5lUmVjb3JkKHJlY29yZCwgMSk7CisgICAgICAg
ICAgICBvdXRwdXQoIiIpOworICAgICAgICAgICAgcHJpbnRUaW1lbGluZVJlY29yZFByb3BlcnRp
ZXMocmVjb3JkKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICB2
YXIgbnVtQ2hpbGRyZW4gPSByZWNvcmQuY2hpbGRyZW4gPyByZWNvcmQuY2hpbGRyZW4ubGVuZ3Ro
IDogMDsKKyAgICB2YXIgZm91bmQgPSBmYWxzZTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51
bUNoaWxkcmVuOyArK2kpIHsKKyAgICAgICAgZm91bmQgPSBmaW5kVGltZXJJbnN0YWxsKHJlY29y
ZC5jaGlsZHJlbltpXSwgdGltZXJJZCk7CisgICAgICAgIGlmIChmb3VuZCkKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKy8vIExvb2sgZm9y
IHRoZSBUaW1lckZpcmUgZXZlbnQgdGhhdCBjb3JyZWxhdGVzIHRvIHRoZSAKKy8vIHRvIHRoZSA8
c2NyaXB0PiB0YWcgYmVsb3cuCitmdW5jdGlvbiBhbmFseXplVGltZWxpbmVEYXRhKHRpbWVsaW5l
UmVjb3JkcykgCit7CisgICAgdmFyIHRpbWVySWQgPSB1bmRlZmluZWQ7CisgICAgLy8gVW5jb21t
ZW50IHRvIGRlYnVnZ2luZyB0aGUgbGlzdCBvZiBkYXRhIHJldHVybmVkLgorICAgIC8vIGR1bXBU
aW1lbGluZVJlY29yZHModGltZWxpbmVSZWNvcmRzKTsKKworICAgIC8vIFNlYXJjaCBmb3IgdGhl
IHRpbWVyIGZpcmUgcmVjb3JkIHRoYXQgaXMgbWFya2VkCisgICAgdmFyIG51bVJlY29yZHMgPSB0
aW1lbGluZVJlY29yZHMubGVuZ3RoOworICAgIGZvciAodmFyIGkgPSAwIDsgaSA8IG51bVJlY29y
ZHM7ICsraSkgeworICAgICAgICB2YXIgcmVjb3JkID0gdGltZWxpbmVSZWNvcmRzW2ldOworICAg
ICAgICBpZiAocmVjb3JkLnR5cGUgPT09IHRpbWVsaW5lQWdlbnRSZWNvcmRUeXBlLlRpbWVyRmly
ZSAmJiBhbmFseXplVGltZXJGaXJlKHJlY29yZCkpIHsKKyAgICAgICAgICAgIC8vIHJlbWVtYmVy
IHRoZSB0aW1lcklkCisgICAgICAgICAgICB0aW1lcklkID0gcmVjb3JkLmRhdGEudGltZXJJZDsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gTG9vayBmb3Ig
dGhlIGluc3RhbGwgdGhhdCBjb3JyZXNwb25kcyB0byB0aGUgdGltZXIgZmlyZS4KKyAgICBpZiAo
dGltZXJJZCA9PT0gdW5kZWZpbmVkKSB7CisgICAgICAgIG91dHB1dCgiRmFpbGVkIHRvIGZpbmQg
dGltZXIgZmlyZSBtYXJrZWQgYXMgOiAiICsgdGltZWxpbmVNYXJrKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIG91dHB1dCgiIik7CisgICAgdmFyIGZvdW5kID0gZmFsc2U7CisgICAg
Zm9yICh2YXIgaSA9IDAgOyBpIDwgbnVtUmVjb3JkczsgKytpKSB7CisgICAgICAgIHZhciByZWNv
cmQgPSB0aW1lbGluZVJlY29yZHNbaV07CisgICAgICAgIGZvdW5kID0gZmluZFRpbWVySW5zdGFs
bChyZWNvcmQsIHRpbWVySWQpOworICAgICAgICBpZiAoZm91bmQpCisgICAgICAgICAgICBicmVh
azsKKyAgICB9CisKKyAgICBpZiAoIWZvdW5kKQorICAgICAgICBvdXRwdXQoIkZhaWxlZCB0byBm
aW5kIHRpbWVySW5zdGFsbCByZWNvcmQgd2l0aCBJZDogIiArIHRpbWVySWQpOworIAorICAgICAg
ICAKK30KKworZnVuY3Rpb24gZG9pdCgpIAoreworICAgIHJldHJpZXZlVGltZWxpbmVEYXRhKGFu
YWx5emVUaW1lbGluZURhdGEpOworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHkgb25s
b2FkPSJvbmxvYWQoKSI+Cis8cD4KK1Rlc3RzIHRoZSBUaW1lbGluZSBBUEkgaW5zdHJ1bWVudGF0
aW9uIG9mIGEgVGltZXIgc2V0IGFuZCBmaXJlCis8L3A+CisKKzxzY3JpcHQ+CisgICAgLy8gU2V0
IGEgbWFyayBvbiBhIHRpbWVyIGJlaW5nIHJlY29yZGVkIGluIHRoZSB0aW1lbGluZSBkYXRhLiAK
KyAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgY29uc29sZS5tYXJr
VGltZWxpbmUodGltZWxpbmVNYXJrKTsKKyAgICB9LCAwKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUtdGltZXItMi1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5l
LXRpbWVyLTItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3RpbWVsaW5lLXRpbWVyLTItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDIxIEBACitUZXN0cyB0aGUgVGltZWxpbmUgQVBJIGluc3RydW1lbnRhdGlvbiBvZiBhIHRpbWVy
IHNldCBhbmQgY2FuY2VsCisKK0ZvdW5kIEV2YWx1YXRlU2NyaXB0IHJlY29yZCBtYXJrZWQgd2l0
aCA6IFRJTUVSIElOU1RBTEwKKworVGltZXJJbnN0YWxsIFByb3BlcnRpZXM6CisrIHN0YXJ0VGlt
ZSA6ICogREVGSU5FRCAqCisrIGRhdGEgOiB7CisrLSB0aW1lcklkIDogKiBERUZJTkVEICoKKyst
IHRpbWVvdXQgOiAwCisrLSBzaW5nbGVTaG90IDogdHJ1ZQorKyB9CisrIHR5cGUgOiA1CisKKwor
VGltZXJSZW1vdmUgUHJvcGVydGllczoKKysgc3RhcnRUaW1lIDogKiBERUZJTkVEICoKKysgZGF0
YSA6IHsKKystIHRpbWVySWQgOiAqIERFRklORUQgKgorKyB9CisrIHR5cGUgOiA2CisKSW5kZXg6
IExheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS10aW1lci0yLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lLXRpbWVyLTIuaHRtbAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS10aW1lci0yLmh0bWwJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMTU2IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Imlu
c3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJ0aW1lbGluZS10ZXN0Lmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQ+Cit2YXIgdGltZWxpbmVNYXJrID0gIlRJTUVSIElOU1RBTEwi
OworCitmdW5jdGlvbiBmaW5kVGltZXJSZWNvcmQodHlwZSwgcmVjb3JkLCB0aW1lcklkKSAKK3sK
KyAgICBpZiAocmVjb3JkLnR5cGUgPT09IHR5cGUpIHsKKyAgICAgICAgaWYgKHJlY29yZC5kYXRh
LnRpbWVySWQgPT09IHRpbWVySWQpIHsKKyAgICAgICAgICAgIHByaW50VGltZWxpbmVSZWNvcmRQ
cm9wZXJ0aWVzKHJlY29yZCk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQor
ICAgIH0KKyAgICB2YXIgbnVtQ2hpbGRyZW4gPSByZWNvcmQuY2hpbGRyZW4gPyByZWNvcmQuY2hp
bGRyZW4ubGVuZ3RoIDogMDsKKyAgICB2YXIgZm91bmQgPSBmYWxzZTsKKyAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IG51bUNoaWxkcmVuOyArK2kpIHsKKyAgICAgICAgaWYgKGZvdW5kID0gZmluZFRp
bWVyUmVjb3JkKHR5cGUsIHJlY29yZC5jaGlsZHJlbltpXSwgdGltZXJJZCkpCisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCisvLyBSZXR1cm5z
IHRoZSBFdmFsdWF0ZVNjcmlwdCB0aW1lbGluZSByZWNvcmQgdGhhdCBpcyBtYXJrZWQgYXMgaGF2
aW5nCisvLyBzdGFydGVkIHRoZSB0aW1lci4KK2Z1bmN0aW9uIGZpbmRFdmFsdWF0ZVNjcmlwdChy
ZWNvcmQpIAoreworICAgIGlmIChyZWNvcmQudHlwZSA9PT0gdGltZWxpbmVBZ2VudFJlY29yZFR5
cGUuRXZhbHVhdGVTY3JpcHQpIHsKKyAgICAgICAgdmFyIG51bUNoaWxkcmVuID0gcmVjb3JkLmNo
aWxkcmVuID8gcmVjb3JkLmNoaWxkcmVuLmxlbmd0aCA6IDA7CisgICAgICAgIC8vIExvb2sgZm9y
IGEgTWFya1RpbWVsaW5lIGFzIGEgZGlyZWN0IGNoaWxkLgorICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IG51bUNoaWxkcmVuOyArK2kpIHsKKyAgICAgICAgICAgIHZhciBjaGlsZCA9IHJlY29y
ZC5jaGlsZHJlbltpXTsKKyAgICAgICAgICAgIGlmIChjaGlsZC50eXBlID09PSB0aW1lbGluZUFn
ZW50UmVjb3JkVHlwZS5NYXJrVGltZWxpbmUgJiYgY2hpbGQuZGF0YS5tZXNzYWdlID09PSB0aW1l
bGluZU1hcmspIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVjb3JkOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgfQorCisgICAgdmFyIG51bUNoaWxkcmVuID0gcmVjb3JkLmNoaWxk
cmVuID8gcmVjb3JkLmNoaWxkcmVuLmxlbmd0aCA6IDA7CisgICAgdmFyIHJlc3VsdCA9IHVuZGVm
aW5lZDsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bUNoaWxkcmVuOyArK2kpIHsKKyAgICAg
ICAgcmVzdWx0ID0gZmluZEV2YWx1YXRlU2NyaXB0KHJlY29yZC5jaGlsZHJlbltpXSk7CisgICAg
ICAgIGlmIChyZXN1bHQgIT09IHVuZGVmaW5lZCkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0K
KyAgICByZXR1cm4gcmVzdWx0OworfQorCisvLyBSZXR1cm5zIHRoZSB0aW1lciBJZCBpbnN0YWxs
ZWQgaW4gdGhlIHNjcmlwdCB0YWcuCitmdW5jdGlvbiBmaW5kVGltZXJJZChyZWNvcmQpIAorewor
ICAgIC8vIEZpbmQgYSBFdmFsdWF0ZVNjcmlwdCBjb250YWluaW5nIHRoZSByaWdodCBtYXJrIHRp
bWVsaW5lIHJlY29yZAorICAgIHZhciByZXN1bHQgPSBmaW5kRXZhbHVhdGVTY3JpcHQocmVjb3Jk
KTsKKyAgICBpZiAocmVzdWx0ID09PSB1bmRlZmluZWQpIHsKKyAgICAgICAgcmV0dXJuIHVuZGVm
aW5lZDsKKyAgICB9CisKKyAgICBvdXRwdXQoIkZvdW5kIEV2YWx1YXRlU2NyaXB0IHJlY29yZCBt
YXJrZWQgd2l0aCA6ICIgKyB0aW1lbGluZU1hcmspOworCisgICAgLy8gVGhhdCBzYW1lIFNjcmlw
dCBFdmFsdWF0ZSBzaG91bGQgYWxzbyBoYXZlIGEgVGltZXIgSW5zdGFsbCByZWNvcmQuCisgICAg
dmFyIG51bUNoaWxkcmVuID0gcmVzdWx0ICYmIHJlc3VsdC5jaGlsZHJlbiA/IHJlc3VsdC5jaGls
ZHJlbi5sZW5ndGggOiAwOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtQ2hpbGRyZW47ICsr
aSkgeyAgICAKKyAgICAgICAgdmFyIGNoaWxkID0gcmVzdWx0LmNoaWxkcmVuW2ldOworICAgICAg
ICBpZiAoY2hpbGQudHlwZSA9PT0gdGltZWxpbmVBZ2VudFJlY29yZFR5cGUuVGltZXJJbnN0YWxs
KSB7CisgICAgICAgICAgICBvdXRwdXQoIiIpOworICAgICAgICAgICAgcHJpbnRUaW1lbGluZVJl
Y29yZFByb3BlcnRpZXMoY2hpbGQpOworICAgICAgICAgICAgcmV0dXJuIGNoaWxkLmRhdGEudGlt
ZXJJZDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiB1bmRlZmluZWQ7Cit9CisKKwor
Ly8gTG9vayBmb3IgdGhlIFRpbWVyRmlyZSBldmVudCB0aGF0IGNvcnJlbGF0ZXMgdG8gdGhlIAor
Ly8gdG8gdGhlIDxzY3JpcHQ+IHRhZyBiZWxvdy4KK2Z1bmN0aW9uIGFuYWx5emVUaW1lbGluZURh
dGEodGltZWxpbmVSZWNvcmRzKSAKK3sKKyAgICAvLyBVbmNvbW1lbnQgdG8gZGVidWdnaW5nIHRo
ZSBsaXN0IG9mIGRhdGEgcmV0dXJuZWQuCisgICAgLy8gZHVtcFRpbWVsaW5lUmVjb3Jkcyh0aW1l
bGluZVJlY29yZHMpOworCisgICAgdmFyIHRpbWVySWQgPSB1bmRlZmluZWQ7CisgICAgdmFyIG51
bVJlY29yZHMgPSB0aW1lbGluZVJlY29yZHMgPyB0aW1lbGluZVJlY29yZHMubGVuZ3RoIDogMDsK
KyAgICBmb3IgKHZhciBpID0gMCA7IGkgPCBudW1SZWNvcmRzOyArK2kpIHsKKyAgICAgICAgdmFy
IHJlY29yZCA9IHRpbWVsaW5lUmVjb3Jkc1tpXTsKKyAgICAgICAgdGltZXJJZCA9IGZpbmRUaW1l
cklkKHJlY29yZCk7CisgICAgICAgIGlmICh0aW1lcklkICE9PSB1bmRlZmluZWQpCisgICAgICAg
ICAgICBicmVhazsKKyAgICB9CisKKyAgICBpZiAodGltZXJJZCA9PT0gdW5kZWZpbmVkKSB7Cisg
ICAgICAgIG91dHB1dCgiRmFpbGVkIHRvIGZpbmQgdGltZXIgaW5zdGFsbCBtYXJrZWQgYXMgOiAi
ICsgdGltZWxpbmVNYXJrKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHZhciBmb3Vu
ZCA9IGZhbHNlOworICAgIG91dHB1dCgiIik7CisKKyAgICAvLyBMb29rIGZvciBhIGZpcmUgdGhh
dCBjb3JyZXNwb25kcyB3aXRoIHRoZSBpbnN0YWxsLiAgVGhlcmUKKyAgICAvLyBzaG91bGRuJ3Qg
YmUgb25lLCBpdCBzaG91bGQgYmUgY2FuY2VsbGVkLgorICAgIGZvciAodmFyIGkgPSAwIDsgaSA8
IG51bVJlY29yZHM7ICsraSkgeworICAgICAgICB2YXIgcmVjb3JkID0gdGltZWxpbmVSZWNvcmRz
W2ldOworICAgICAgICBpZiAoZm91bmQgPSBmaW5kVGltZXJSZWNvcmQodGltZWxpbmVBZ2VudFJl
Y29yZFR5cGUuVGltZXJGaXJlLCByZWNvcmQsIHRpbWVySWQpKQorICAgICAgICAgICAgYnJlYWs7
CisgICAgfQorCisgICAgaWYgKGZvdW5kKSB7CisgICAgICAgIG91dHB1dCgiRGlkbid0IGV4cGVj
dCB0aW1lciBmaXJlIHdpdGggSWQ6ICIgKyB0aW1lcklkKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIG91dHB1dCgiIik7CisKKyAgICAvLyBMb29rIGZvciB0aGUgdGltZXJSZW1vdmUK
KyAgICBmb3VuZCA9IGZhbHNlOworICAgIGZvciAodmFyIGkgPSAwIDsgaSA8IG51bVJlY29yZHM7
ICsraSkKKyAgICAgICAgaWYgKGZvdW5kID0gZmluZFRpbWVyUmVjb3JkKHRpbWVsaW5lQWdlbnRS
ZWNvcmRUeXBlLlRpbWVyUmVtb3ZlLCB0aW1lbGluZVJlY29yZHNbaV0sIHRpbWVySWQpKQorICAg
ICAgICAgICAgYnJlYWs7CisKKyAgICBpZiAoIWZvdW5kKSB7CisgICAgICAgIG91dHB1dCgiRmFp
bGVkIHRvIGZpbmQgdGltZXJSZW1vdmUgcmVjb3JkIHdpdGggSWQ6ICIgKyB0aW1lcklkKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KK30KKworZnVuY3Rpb24gZG9pdCgpIAoreworICAgIC8vIEFu
YWx5c2lzIGlzIGRvbmUgYWZ0ZXIgdGhlIHRpbWVyIGlzIGNhbmNlbGxlZC4KK30KKworPC9zY3Jp
cHQ+Cis8L2hlYWQ+CisKKzxib2R5IG9ubG9hZD0ib25sb2FkKCkiPgorPHA+CitUZXN0cyB0aGUg
VGltZWxpbmUgQVBJIGluc3RydW1lbnRhdGlvbiBvZiBhIHRpbWVyIHNldCBhbmQgY2FuY2VsCis8
L3A+CisKKzxzY3JpcHQ+CisKKyAgIC8vIFNldCBhIG1hcmsgb24gYSB0aW1lciBiZWluZyByZWNv
cmRlZCBpbiB0aGUgdGltZWxpbmUgZGF0YS4gCisgICBjb25zb2xlLm1hcmtUaW1lbGluZSh0aW1l
bGluZU1hcmspOworICAgdmFyIGlkID0gc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICBj
b25zb2xlLm1hcmtUaW1lbGluZSgiVGhpcyBzaG91bGQgbmV2ZXIgZmlyZSIpOworICAgfSwgMCk7
CisKKyAgIGNsZWFyVGltZW91dChpZCk7CisKKyAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Cisg
ICAgICAgcmV0cmlldmVUaW1lbGluZURhdGEoYW5hbHl6ZVRpbWVsaW5lRGF0YSk7CisgICB9LCAw
KTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvdGltZWxpbmUtdGltZXItMy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lLXRpbWVyLTMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lLXRpbWVyLTMtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI3IEBACitUZXN0cyB0aGUgVGltZWxpbmUgQVBJIGlu
c3RydW1lbnRhdGlvbiBvZiBhIFRpbWVyIEludGVydmFsIHNldCwgZmlyZSwgYW5kIGNsZWFyCisK
K1RpbWVyRmlyZSBQcm9wZXJ0aWVzOgorKyBzdGFydFRpbWUgOiAqIERFRklORUQgKgorKyBkYXRh
IDogeworKy0gdGltZXJJZCA6ICogREVGSU5FRCAqCisrIH0KKysgY2hpbGRyZW4gOiAqIERFRklO
RUQgKgorKyBlbmRUaW1lIDogKiBERUZJTkVEICoKKysgdHlwZSA6IDcKKworVGltZXJJbnN0YWxs
IFByb3BlcnRpZXM6CisrIHN0YXJ0VGltZSA6ICogREVGSU5FRCAqCisrIGRhdGEgOiB7CisrLSB0
aW1lcklkIDogKiBERUZJTkVEICoKKystIHRpbWVvdXQgOiAwCisrLSBzaW5nbGVTaG90IDogZmFs
c2UKKysgfQorKyB0eXBlIDogNQorCitUaW1lclJlbW92ZSBQcm9wZXJ0aWVzOgorKyBzdGFydFRp
bWUgOiAqIERFRklORUQgKgorKyBkYXRhIDogeworKy0gdGltZXJJZCA6ICogREVGSU5FRCAqCisr
IH0KKysgdHlwZSA6IDYKKwpJbmRleDogTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lLXRp
bWVyLTMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUt
dGltZXItMy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVs
aW5lLXRpbWVyLTMuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMTkgQEAKKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0IHNyYz0iaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9InRpbWVsaW5lLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK3ZhciB0aW1lbGlu
ZU1hcmsgPSAiVElNRVIgRklSRSI7CisKK2Z1bmN0aW9uIGFuYWx5emVUaW1lckZpcmUocmVjb3Jk
KSAKK3sKKyAgICB2YXIgbnVtQ2hpbGRyZW4gPSByZWNvcmQuY2hpbGRyZW4gPyByZWNvcmQuY2hp
bGRyZW4ubGVuZ3RoIDogMDsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bUNoaWxkcmVuOyAr
K2kpIHsKKyAgICAgICAgdmFyIGNoaWxkID0gcmVjb3JkLmNoaWxkcmVuW2ldOworICAgICAgICBp
ZiAoY2hpbGQudHlwZSA9PT0gdGltZWxpbmVBZ2VudFJlY29yZFR5cGUuTWFya1RpbWVsaW5lICYm
IGNoaWxkLmRhdGEubWVzc2FnZSA9PT0gdGltZWxpbmVNYXJrKSB7CisgICAgICAgICAgICBwcmlu
dFRpbWVsaW5lUmVjb3JkUHJvcGVydGllcyhyZWNvcmQpOworICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitmdW5jdGlvbiBm
aW5kVGltZXJSZWNvcmQodHlwZSwgcmVjb3JkLCB0aW1lcklkKSAKK3sKKyAgICBpZiAocmVjb3Jk
LnR5cGUgPT09IHR5cGUpCisgICAgICAgIGlmIChyZWNvcmQuZGF0YS50aW1lcklkID09PSB0aW1l
cklkKSB7CisgICAgICAgICAgICBwcmludFRpbWVsaW5lUmVjb3JkUHJvcGVydGllcyhyZWNvcmQp
OworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgIHZhciBudW1DaGls
ZHJlbiA9IHJlY29yZC5jaGlsZHJlbiA/IHJlY29yZC5jaGlsZHJlbi5sZW5ndGggOiAwOworICAg
IHZhciBmb3VuZCA9IGZhbHNlOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtQ2hpbGRyZW47
ICsraSkgeworICAgICAgICBmb3VuZCA9IGZpbmRUaW1lclJlY29yZCh0eXBlLCByZWNvcmQuY2hp
bGRyZW5baV0sIHRpbWVySWQpOworICAgICAgICBpZiAoZm91bmQpCisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCisvLyBMb29rIGZvciB0aGUg
VGltZXJGaXJlIGV2ZW50IHRoYXQgY29ycmVsYXRlcyB0byB0aGUgCisvLyB0byB0aGUgPHNjcmlw
dD4gdGFnIGJlbG93LgorZnVuY3Rpb24gYW5hbHl6ZVRpbWVsaW5lRGF0YSh0aW1lbGluZVJlY29y
ZHMpIAoreworICAgIHZhciB0aW1lcklkID0gdW5kZWZpbmVkOworICAgIC8vIFVuY29tbWVudCB0
byBkZWJ1Z2dpbmcgdGhlIGxpc3Qgb2YgZGF0YSByZXR1cm5lZC4KKyAgICAvLyBkdW1wVGltZWxp
bmVSZWNvcmRzKHRpbWVsaW5lUmVjb3Jkcyk7CisKKyAgICAvLyBTZWFyY2ggZm9yIHRoZSB0b3Ag
bGV2ZWwgdGltZXJGaXJlIHJlY29yZCB0aGF0IGlzIG1hcmtlZAorICAgIHZhciBudW1SZWNvcmRz
ID0gdGltZWxpbmVSZWNvcmRzLmxlbmd0aDsKKyAgICBmb3IgKHZhciBpID0gMCA7IGkgPCBudW1S
ZWNvcmRzOyArK2kpIHsKKyAgICAgICAgdmFyIHJlY29yZCA9IHRpbWVsaW5lUmVjb3Jkc1tpXTsK
KworICAgICAgICAvLyBVbmNvbW1lbnQgZm9yIGRldGFpbGVkIGRlYnVnZ2luZworICAgICAgICAv
LyBvdXRwdXQoIkRFQlVHOiAiICsgSlNPTi5zdHJpbmdpZnkocmVjb3JkKSk7CisKKyAgICAgICAg
aWYgKHJlY29yZC50eXBlID09PSB0aW1lbGluZUFnZW50UmVjb3JkVHlwZS5UaW1lckZpcmUgJiYg
YW5hbHl6ZVRpbWVyRmlyZShyZWNvcmQpKSB7CisgICAgICAgICAgICB0aW1lcklkID0gcmVjb3Jk
LmRhdGEudGltZXJJZDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAg
IGlmICh0aW1lcklkID09PSB1bmRlZmluZWQpIHsKKyAgICAgICAgb3V0cHV0KCJGYWlsZWQgdG8g
ZmluZCB0aW1lciBmaXJlIG1hcmtlZCBhcyA6ICIgKyB0aW1lbGluZU1hcmspOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgb3V0cHV0KCIiKTsKKyAgICB2YXIgZm91bmQgPSBmYWxzZTsK
KworICAgIC8vIExvb2sgZm9yIHRoZSBpbnN0YWxsIHRoYXQgY29ycmVzcG9uZHMgdG8gdGhlIHRp
bWVyIGZpcmUuCisgICAgZm9yICh2YXIgaSA9IDAgOyBpIDwgbnVtUmVjb3JkczsgKytpKSB7Cisg
ICAgICAgIHZhciByZWNvcmQgPSB0aW1lbGluZVJlY29yZHNbaV07CisgICAgICAgIGZvdW5kID0g
ZmluZFRpbWVyUmVjb3JkKHRpbWVsaW5lQWdlbnRSZWNvcmRUeXBlLlRpbWVySW5zdGFsbCwgcmVj
b3JkLCB0aW1lcklkKTsKKyAgICAgICAgaWYgKGZvdW5kKQorICAgICAgICAgICAgYnJlYWs7Cisg
ICAgfQorICAgIGlmICghZm91bmQpIHsKKyAgICAgICAgb3V0cHV0KCJGYWlsZWQgdG8gZmluZCB0
aW1lckluc3RhbGwgcmVjb3JkIHdpdGggSWQ6ICIgKyB0aW1lcklkKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIG91dHB1dCgiIik7CisKKyAgICAvLyBMb29rIGZvciB0aGUgdGltZXJS
ZW1vdmUKKyAgICBmb3VuZCA9IGZhbHNlOworICAgIGZvciAodmFyIGkgPSAwIDsgaSA8IG51bVJl
Y29yZHM7ICsraSkgeworICAgICAgICBmb3VuZCA9IGZpbmRUaW1lclJlY29yZCh0aW1lbGluZUFn
ZW50UmVjb3JkVHlwZS5UaW1lclJlbW92ZSwgdGltZWxpbmVSZWNvcmRzW2ldLCB0aW1lcklkKTsK
KyAgICAgICAgaWYgKGZvdW5kKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgaWYg
KCFmb3VuZCkgIHsKKyAgICAgICAgb3V0cHV0KCJGYWlsZWQgdG8gZmluZCB0aW1lclJlbW92ZSBy
ZWNvcmQgd2l0aCBJZDogIiArIHRpbWVySWQpOworICAgICAgICByZXR1cm47CisgICAgfQorfQor
CitmdW5jdGlvbiBkb2l0KCkgCit7CisgICAgcmV0cmlldmVUaW1lbGluZURhdGEoYW5hbHl6ZVRp
bWVsaW5lRGF0YSk7ICAgICAgICAgICAgCit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9k
eSBvbmxvYWQ9Im9ubG9hZCgpIj4KKzxwPgorVGVzdHMgdGhlIFRpbWVsaW5lIEFQSSBpbnN0cnVt
ZW50YXRpb24gb2YgYSBUaW1lciBJbnRlcnZhbCBzZXQsIGZpcmUsIGFuZCBjbGVhcgorPC9wPgor
Cis8c2NyaXB0PgorCisgICAgdmFyIGludGVydmFsSWQgPSB3aW5kb3cuc2V0SW50ZXJ2YWwoZnVu
Y3Rpb24oKSB7CisgICAgICAgIC8vIFNldCBhIG1hcmsgb24gYSB0aW1lciBiZWluZyByZWNvcmRl
ZCBpbiB0aGUgdGltZWxpbmUgZGF0YS4gCisgICAgICAgIGNvbnNvbGUubWFya1RpbWVsaW5lKHRp
bWVsaW5lTWFyayk7CisgICAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWxJZCk7CisgICB9LCAw
KTsKKyAgIAorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="24655"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>