<?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>85411</bug_id>
          
          <creation_ts>2012-05-02 13:10:37 -0700</creation_ts>
          <short_desc>Opportunistic GC should give up if the Heap is paged out</short_desc>
          <delta_ts>2012-05-03 15:37:34 -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>JavaScriptCore</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="Mark Hahnenberg">mhahnenberg</reporter>
          <assigned_to name="Mark Hahnenberg">mhahnenberg</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>614580</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-05-02 13:10:37 -0700</bug_when>
    <thetext>Opportunistic GC is punishing us severely in limited memory situations because its assumptions about how much time a collection will take are way out of whack when the Heap has been paged out by the OS. We should add a simple detection function to the Heap that detects if its is paged out. It will do this by iterating each block of both the MarkedSpace and CopiedSpace. If that operation takes longer than a fixed amount of time (e.g. 100ms), the function returns true. This function will only be run prior to an opportunistic collection (i.e. it will not run during our normal allocation-triggered collections).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614643</commentid>
    <comment_count>1</comment_count>
      <attachid>139882</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-05-02 14:02:39 -0700</bug_when>
    <thetext>Created attachment 139882
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614761</commentid>
    <comment_count>2</comment_count>
      <attachid>139882</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-05-02 16:06:34 -0700</bug_when>
    <thetext>Comment on attachment 139882
Patch

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

Looks good, but needs refinement.

Please file a bug about the incremental sweep issue you mentioned, and the &quot;calling didAllocate&quot; issue you mentioned in person.

&gt; Source/JavaScriptCore/ChangeLog:14
&gt; +        and CopiedSpace. If that operation takes longer than a fixed amount of time (e.g. 100ms), 
&gt; +        the function returns true. This function will only be run prior to an opportunistic 
&gt; +        collection (i.e. it will not run during our normal allocation-triggered collections).

Bug # or it didn&apos;t happen ;).

&gt; Source/JavaScriptCore/heap/CopiedSpace.cpp:291
&gt; +        if (itersSinceLastTimeCheck &gt;= 16) {

16 should be a static const at the top of the file.

&gt; Source/JavaScriptCore/heap/CopiedSpace.cpp:293
&gt; +            if (currentTime &gt; timeOut)

timeOut implies an amount of time, not a deadline in absolute time. How about using the word &quot;deadline&quot;?

&gt; Source/JavaScriptCore/heap/MarkedAllocator.cpp:17
&gt; +        if (itersSinceLastTimeCheck &gt;= 16) {

Shared constant, please.

&gt; Source/JavaScriptCore/runtime/GCActivityCallbackCF.cpp:68
&gt; +    double startTime = WTF::monotonicallyIncreasingTime();
&gt; +    if (heap-&gt;isPagedOut(startTime + pagingTimeOut)) {

This should only happen on systems that page, so !PLATFORM(IOS).

&gt; Source/JavaScriptCore/runtime/GCActivityCallbackCF.cpp:69
&gt; +        heap-&gt;activityCallback()-&gt;willCollect();

I think it would be better just to cancel the timer, rather than calling this API duplicitously.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614811</commentid>
    <comment_count>3</comment_count>
      <attachid>139914</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-05-02 16:44:00 -0700</bug_when>
    <thetext>Created attachment 139914
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614828</commentid>
    <comment_count>4</comment_count>
      <attachid>139914</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-05-02 17:00:07 -0700</bug_when>
    <thetext>Comment on attachment 139914
Patch

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

R=me with one fix for that comment.

&gt; Source/JavaScriptCore/heap/CopiedSpace.cpp:295
&gt; +        if (itersSinceLastTimeCheck &gt;= Heap::s_timeCheckResolution) {
&gt; +            double currentTime = WTF::monotonicallyIncreasingTime();
&gt; +            if (currentTime &gt; deadline)
&gt; +                return true;
&gt; +        }

Shouldn&apos;t this be setting itersSinceLastTimeCheck to 0 if we don&apos;t return true?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614838</commentid>
    <comment_count>5</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-05-02 17:13:14 -0700</bug_when>
    <thetext>Committed r115915: &lt;http://trac.webkit.org/changeset/115915&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>615709</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-05-03 15:37:34 -0700</bug_when>
    <thetext>&lt;rdar://problem/11294420&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139882</attachid>
            <date>2012-05-02 14:02:39 -0700</date>
            <delta_ts>2012-05-02 16:43:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85411-20120502140238.patch</filename>
            <type>text/plain</type>
            <size>10625</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTE1ODc4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYwIEBA
CisyMDEyLTA1LTAyICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgT3Bwb3J0dW5pc3RpYyBHQyBzaG91bGQgZ2l2ZSB1cCBpZiB0aGUgSGVhcCBpcyBw
YWdlZCBvdXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTg1NDExCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
T3Bwb3J0dW5pc3RpYyBHQyBpcyBwdW5pc2hpbmcgdXMgc2V2ZXJlbHkgaW4gbGltaXRlZCBtZW1v
cnkgc2l0dWF0aW9ucyBiZWNhdXNlIGl0cyAKKyAgICAgICAgYXNzdW1wdGlvbnMgYWJvdXQgaG93
IG11Y2ggdGltZSBhIGNvbGxlY3Rpb24gd2lsbCB0YWtlIGFyZSB3YXkgb3V0IG9mIHdoYWNrIHdo
ZW4gdGhlIEhlYXAgCisgICAgICAgIGhhcyBiZWVuIHBhZ2VkIG91dCBieSB0aGUgT1MuIFdlIHNo
b3VsZCBhZGQgYSBzaW1wbGUgZGV0ZWN0aW9uIGZ1bmN0aW9uIHRvIHRoZSBIZWFwIHRoYXQgCisg
ICAgICAgIGRldGVjdHMgaWYgaXRzIGlzIHBhZ2VkIG91dC4gSXQgd2lsbCBkbyB0aGlzIGJ5IGl0
ZXJhdGluZyBlYWNoIGJsb2NrIG9mIGJvdGggdGhlIE1hcmtlZFNwYWNlIAorICAgICAgICBhbmQg
Q29waWVkU3BhY2UuIElmIHRoYXQgb3BlcmF0aW9uIHRha2VzIGxvbmdlciB0aGFuIGEgZml4ZWQg
YW1vdW50IG9mIHRpbWUgKGUuZy4gMTAwbXMpLCAKKyAgICAgICAgdGhlIGZ1bmN0aW9uIHJldHVy
bnMgdHJ1ZS4gVGhpcyBmdW5jdGlvbiB3aWxsIG9ubHkgYmUgcnVuIHByaW9yIHRvIGFuIG9wcG9y
dHVuaXN0aWMgCisgICAgICAgIGNvbGxlY3Rpb24gKGkuZS4gaXQgd2lsbCBub3QgcnVuIGR1cmlu
ZyBvdXIgbm9ybWFsIGFsbG9jYXRpb24tdHJpZ2dlcmVkIGNvbGxlY3Rpb25zKS4KKworICAgICAg
ICBJbiBteSB0ZXN0cywgc3RlYWR5IHN0YXRlIHdhcyBkcmFzdGljYWxseSBpbXByb3ZlZCBpbiBo
aWdoIG1lbW9yeSBwcmVzc3VyZSBzaXR1YXRpb25zIChpLmUuIAorICAgICAgICB0aGUgYnJvd3Nl
ciB3YXMgc3RpbGwgdXNhYmxlLCBzaWduaWZpY2FudCByZWR1Y3Rpb24gaW4gU1BPRHMpLiBPY2Nh
c2lvbmFsbHksIGEgbm9ybWFsIEdDCisgICAgICAgIHdvdWxkIGJlIHRyaWdnZXJlZCBkdWUgdG8g
cGFnZXMgZG9pbmcgdGhpbmdzIGluIHRoZSBiYWNrZ3JvdW5kLCB3aGljaCB3b3VsZCBjYXVzZSBh
IAorICAgICAgICBzaWduaWZpY2FudCBwYXVzZS4gQXMgd2UgY2xvc2UgcGFnZXMgd2Ugbm93IGNh
dXNlIG5vcm1hbCBjb2xsZWN0aW9ucyByYXRoZXIgdGhhbiBmdWxsIAorICAgICAgICBjb2xsZWN0
aW9ucywgd2hpY2ggcHJldmVudHMgdXMgZnJvbSBjb2xsZWN0aW5nIGFsbCBvZiB0aGUgZGVhZCBt
ZW1vcnkgaW1tZWRpYXRlbHkuIE9uZSAKKyAgICAgICAgbmljZSB3YXkgdG8gZGVhbCB3aXRoIHRo
aXMgaXNzdWUgbWlnaHQgYmUgdG8gZG8gaW5jcmVtZW50YWwgc3dlZXBpbmcuCisKKyAgICAgICAg
KiBoZWFwL0NvcGllZFNwYWNlLmNwcDoKKyAgICAgICAgKEpTQzo6aXNCbG9ja0xpc3RQYWdlZE91
dCk6IEhlbHBlciBmdW5jdGlvbiB0byByZWR1Y2UgY29kZSBkdXBsaWNhdGlvbiB3aGVuIGl0ZXJh
dGluZyBvdmVyIAorICAgICAgICB0by1zcGFjZSwgZnJvbS1zcGFjZSwgYW5kIHRoZSBvdmVyc2l6
ZSBibG9ja3MuCisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpDb3BpZWRTcGFjZTo6aXNQ
YWdlZE91dCk6IFRyaWVzIHRvIGRldGVybWluZSB3aGV0aGVyIG9yIG5vdCBDb3BpZWRTcGFjZSBp
cyBwYWdlZCBvdXQKKyAgICAgICAgYnkgaXRlcmF0aW5nIGFsbCBvZiB0aGUgYmxvY2tzLgorICAg
ICAgICAqIGhlYXAvQ29waWVkU3BhY2UuaDoKKyAgICAgICAgKENvcGllZFNwYWNlKToKKyAgICAg
ICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjppc1BhZ2VkT3V0KTogVHJp
ZXMgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIEhlYXAgaXMgcGFnZWQgb3V0IGJ5IGFza2luZyB0
aGUgCisgICAgICAgIE1hcmtlZFNwYWNlIGFuZCBDb3BpZWRTcGFjZSBpZiB0aGV5IGFyZSBwYWdl
ZCBvdXQuCisgICAgICAgIChKU0MpOgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAo
SlNDOjpIZWFwOjppbmNyZWFzZUxhc3RHQ0xlbmd0aCk6IEFkZGVkIHRoaXMgc28gdGhhdCB0aGUg
R0MgdGltZXIgY2FuIGxpbmVhcmx5IGJhY2sgb2ZmIAorICAgICAgICBlYWNoIHRpbWUgaXQgZGV0
ZXJtaW5lcyB0aGF0IHRoZSBIZWFwIGlzIHBhZ2VkIG91dC4KKyAgICAgICAgKEhlYXApOgorICAg
ICAgICAqIGhlYXAvTWFya2VkQWxsb2NhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6TWFya2VkQWxs
b2NhdG9yOjppc1BhZ2VkT3V0KTogVHJpZXMgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgcGFydGljdWxh
ciBNYXJrZWRBbGxvY2F0b3IncworICAgICAgICBsaXN0IG9mIGJsb2NrcyBhcmUgcGFnZWQgb3V0
LgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBoZWFwL01hcmtlZEFsbG9jYXRvci5oOgorICAg
ICAgICAoTWFya2VkQWxsb2NhdG9yKToKKyAgICAgICAgKiBoZWFwL01hcmtlZFNwYWNlLmNwcDog
Rm9yIGVhY2ggTWFya2VkQWxsb2NhdG9yLCBjaGVjayB0byBzZWUgaWYgdGhleSdyZSBwYWdlZCBv
dXQuCisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjppc1BhZ2VkT3V0KToKKyAgICAgICAgKiBo
ZWFwL01hcmtlZFNwYWNlLmg6CisgICAgICAgIChNYXJrZWRTcGFjZSk6CisgICAgICAgICogcnVu
dGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2tDRi5jcHA6IEFkZGVkIGEgY29uc3RhbnQgb2YgMTAwbXMg
Zm9yIHRoZSB0aW1lb3V0IGluIGRldGVybWluaW5nCisgICAgICAgIHdoZXRoZXIgdGhlIEhlYXAg
aXMgcGFnZWQgb3V0IG9yIG5vdC4gCisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpEZWZh
dWx0R0NBY3Rpdml0eUNhbGxiYWNrUGxhdGZvcm1EYXRhOjp0aW1lckRpZEZpcmUpOiBBZGRlZCB0
aGUgY2hlY2sgdG8gc2VlIGlmIHdlIAorICAgICAgICBzaG91bGQgYXR0ZW1wdCBhIGNvbGxlY3Rp
b24gYmFzZWQgb24gd2hldGhlciBvciBub3Qgd2UgY2FuIGl0ZXJhdGUgdGhlIGJsb2NrcyBvZiB0
aGUgSGVhcCBpbiAKKyAgICAgICAgMTAwbXMuIElmIHdlIGNhbid0LCB3ZSBjYW5jZWwgdGhlIHRp
bWVyIGFuZCB0ZWxsIHRoZSBIZWFwIHdlIGp1c3Qgd2FzdGVkIDEwMG1zIG1vcmUgdHJ5aW5nIHRv
IAorICAgICAgICBkbyBhIGNvbGxlY3Rpb24uIFRoaXMgZ2l2ZXMgdXMgYSBuaWNlIGxpbmVhciBi
YWNrb2ZmIHNvIHdlJ3JlIG5vdCBjb25zdGFudGx5IHJlLXRyeWluZyBpbgorICAgICAgICBzdGVh
ZHkgc3RhdGUgcGFnZWQtb3V0LW5lc3MuCisKIDIwMTItMDUtMDIgIFlvbmcgTGkgIDx5b2xpQHJp
bS5jb20+CiAKICAgICAgICAgRml4IEdDQyBYODYgYnVpbGQgZXJyb3IKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0NvcGllZFNwYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9Db3BpZWRTcGFjZS5jcHAJKHJldmlzaW9uIDExNTg1NykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvcGllZFNwYWNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjgxLDQgKzI4MSwyOCBAQCBzaXplX3QgQ29waWVkU3BhY2U6OmNhcGFjaXR5KCkKICAg
ICByZXR1cm4gY2FsY3VsYXRlZENhcGFjaXR5OwogfQogCitzdGF0aWMgYm9vbCBpc0Jsb2NrTGlz
dFBhZ2VkT3V0KGRvdWJsZSB0aW1lT3V0LCBEb3VibHlMaW5rZWRMaXN0PEhlYXBCbG9jaz4qIGxp
c3QpCit7CisgICAgdW5zaWduZWQgaXRlcnNTaW5jZUxhc3RUaW1lQ2hlY2sgPSAwOworICAgIEhl
YXBCbG9jayogY3VycmVudCA9IGxpc3QtPmhlYWQoKTsKKyAgICB3aGlsZSAoY3VycmVudCkgewor
ICAgICAgICBjdXJyZW50ID0gY3VycmVudC0+bmV4dCgpOworICAgICAgICArK2l0ZXJzU2luY2VM
YXN0VGltZUNoZWNrOworICAgICAgICBpZiAoaXRlcnNTaW5jZUxhc3RUaW1lQ2hlY2sgPj0gMTYp
IHsKKyAgICAgICAgICAgIGRvdWJsZSBjdXJyZW50VGltZSA9IFdURjo6bW9ub3RvbmljYWxseUlu
Y3JlYXNpbmdUaW1lKCk7CisgICAgICAgICAgICBpZiAoY3VycmVudFRpbWUgPiB0aW1lT3V0KQor
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0
dXJuIGZhbHNlOworfQorCitib29sIENvcGllZFNwYWNlOjppc1BhZ2VkT3V0KGRvdWJsZSB0aW1l
T3V0KQoreworICAgIHJldHVybiBpc0Jsb2NrTGlzdFBhZ2VkT3V0KHRpbWVPdXQsIG1fdG9TcGFj
ZSkgCisgICAgICAgIHx8IGlzQmxvY2tMaXN0UGFnZWRPdXQodGltZU91dCwgbV9mcm9tU3BhY2Up
IAorICAgICAgICB8fCBpc0Jsb2NrTGlzdFBhZ2VkT3V0KHRpbWVPdXQsICZtX292ZXJzaXplQmxv
Y2tzKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9Db3BpZWRTcGFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0NvcGllZFNwYWNlLmgJKHJldmlzaW9uIDExNTg1NykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0NvcGllZFNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTcwLDYgKzcwLDcg
QEAgcHVibGljOgogICAgIHNpemVfdCBjYXBhY2l0eSgpOwogCiAgICAgdm9pZCBmcmVlQWxsQmxv
Y2tzKCk7CisgICAgYm9vbCBpc1BhZ2VkT3V0KGRvdWJsZSB0aW1lT3V0KTsKIAogICAgIHN0YXRp
YyBDb3BpZWRCbG9jayogYmxvY2tGb3Iodm9pZCopOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwLmNwcAkocmV2aXNpb24gMTE1ODU3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0NSw2ICszNDUsMTEgQEAgSGVhcDo6
fkhlYXAoKQogICAgIEFTU0VSVCghY2FwYWNpdHkoKSk7CiB9CiAKK2Jvb2wgSGVhcDo6aXNQYWdl
ZE91dChkb3VibGUgdGltZU91dCkKK3sKKyAgICByZXR1cm4gbV9vYmplY3RTcGFjZS5pc1BhZ2Vk
T3V0KHRpbWVPdXQpIHx8IG1fc3RvcmFnZVNwYWNlLmlzUGFnZWRPdXQodGltZU91dCk7Cit9CisK
IC8vIFRoZSBKU0dsb2JhbERhdGEgaXMgYmVpbmcgZGVzdHJveWVkIGFuZCB0aGUgY29sbGVjdG9y
IHdpbGwgbmV2ZXIgcnVuIGFnYWluLgogLy8gUnVuIGFsbCBwZW5kaW5nIGZpbmFsaXplcnMgbm93
IGJlY2F1c2Ugd2Ugd29uJ3QgZ2V0IGFub3RoZXIgY2hhbmNlLgogdm9pZCBIZWFwOjpsYXN0Q2hh
bmNlVG9GaW5hbGl6ZSgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCShyZXZpc2lv
biAxMTU4NTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE0OSwxMSArMTQ5LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lk
IGdldENvbnNlcnZhdGl2ZVJlZ2lzdGVyUm9vdHMoSGFzaFNldDxKU0NlbGwqPiYgcm9vdHMpOwog
CiAgICAgICAgIGRvdWJsZSBsYXN0R0NMZW5ndGgoKSB7IHJldHVybiBtX2xhc3RHQ0xlbmd0aDsg
fQorICAgICAgICB2b2lkIGluY3JlYXNlTGFzdEdDTGVuZ3RoKGRvdWJsZSBhbW91bnQpIHsgbV9s
YXN0R0NMZW5ndGggKz0gYW1vdW50OyB9CiAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9p
ZCBkaXNjYXJkQWxsQ29tcGlsZWRDb2RlKCk7CiAKICAgICAgICAgdm9pZCBkaWRBbGxvY2F0ZShz
aXplX3QpOwogCisgICAgICAgIGJvb2wgaXNQYWdlZE91dChkb3VibGUgdGltZU91dCk7CisKICAg
ICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgQ29kZUJsb2NrOwogICAgICAgICBmcmll
bmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuY3BwCShyZXZpc2lvbiAxMTU4NTcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zLDkgKzMsMjggQEAKIAogI2luY2x1ZGUgIkdDQWN0aXZpdHlDYWxsYmFjay5oIgog
I2luY2x1ZGUgIkhlYXAuaCIKKyNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KIAogbmFtZXNw
YWNlIEpTQyB7CiAKK2Jvb2wgTWFya2VkQWxsb2NhdG9yOjppc1BhZ2VkT3V0KGRvdWJsZSB0aW1l
T3V0KQoreworICAgIHVuc2lnbmVkIGl0ZXJzU2luY2VMYXN0VGltZUNoZWNrID0gMDsKKyAgICBI
ZWFwQmxvY2sqIGJsb2NrID0gbV9ibG9ja0xpc3QuaGVhZCgpOworICAgIHdoaWxlIChibG9jaykg
eworICAgICAgICBibG9jayA9IGJsb2NrLT5uZXh0KCk7CisgICAgICAgICsraXRlcnNTaW5jZUxh
c3RUaW1lQ2hlY2s7CisgICAgICAgIGlmIChpdGVyc1NpbmNlTGFzdFRpbWVDaGVjayA+PSAxNikg
eworICAgICAgICAgICAgZG91YmxlIGN1cnJlbnRUaW1lID0gV1RGOjptb25vdG9uaWNhbGx5SW5j
cmVhc2luZ1RpbWUoKTsKKyAgICAgICAgICAgIGlmIChjdXJyZW50VGltZSA+IHRpbWVPdXQpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICBpdGVyc1NpbmNlTGFzdFRp
bWVDaGVjayA9IDA7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
IGlubGluZSB2b2lkKiBNYXJrZWRBbGxvY2F0b3I6OnRyeUFsbG9jYXRlSGVscGVyKCkKIHsKICAg
ICBpZiAoIW1fZnJlZUxpc3QuaGVhZCkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFya2VkQWxsb2NhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFya2VkQWxsb2NhdG9yLmgJKHJldmlzaW9uIDExNTg1NykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3
ICszMiw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZEJsb2NrKE1hcmtlZEJsb2NrKik7CiAgICAg
dm9pZCByZW1vdmVCbG9jayhNYXJrZWRCbG9jayopOwogICAgIHZvaWQgaW5pdChIZWFwKiwgTWFy
a2VkU3BhY2UqLCBzaXplX3QgY2VsbFNpemUsIGJvb2wgY2VsbHNOZWVkRGVzdHJ1Y3Rpb24pOwot
ICAgIAorCisgICAgYm9vbCBpc1BhZ2VkT3V0KGRvdWJsZSB0aW1lT3V0KTsKKyAgIAogcHJpdmF0
ZToKICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmNwcAkocmV2aXNpb24gMTE1
ODU3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03MCw2ICs3MCwyMCBAQCB2b2lkIE1hcmtlZFNwYWNlOjpjYW5vbmljYWxp
emVDZWxsTGl2ZW5lCiAgICAgfQogfQogCitib29sIE1hcmtlZFNwYWNlOjppc1BhZ2VkT3V0KGRv
dWJsZSB0aW1lT3V0KQoreworICAgIGZvciAoc2l6ZV90IGNlbGxTaXplID0gcHJlY2lzZVN0ZXA7
IGNlbGxTaXplIDw9IHByZWNpc2VDdXRvZmY7IGNlbGxTaXplICs9IHByZWNpc2VTdGVwKSB7Cisg
ICAgICAgIGlmIChhbGxvY2F0b3JGb3IoY2VsbFNpemUpLmlzUGFnZWRPdXQodGltZU91dCkgfHwg
ZGVzdHJ1Y3RvckFsbG9jYXRvckZvcihjZWxsU2l6ZSkuaXNQYWdlZE91dCh0aW1lT3V0KSkKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGZvciAoc2l6ZV90IGNlbGxTaXpl
ID0gaW1wcmVjaXNlU3RlcDsgY2VsbFNpemUgPD0gaW1wcmVjaXNlQ3V0b2ZmOyBjZWxsU2l6ZSAr
PSBpbXByZWNpc2VTdGVwKSB7CisgICAgICAgIGlmIChhbGxvY2F0b3JGb3IoY2VsbFNpemUpLmlz
UGFnZWRPdXQodGltZU91dCkgfHwgZGVzdHJ1Y3RvckFsbG9jYXRvckZvcihjZWxsU2l6ZSkuaXNQ
YWdlZE91dCh0aW1lT3V0KSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAg
IHJldHVybiBmYWxzZTsKK30KIAogdm9pZCBNYXJrZWRTcGFjZTo6ZnJlZUJsb2NrcyhNYXJrZWRC
bG9jayogaGVhZCkKIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNw
YWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3Bh
Y2UuaAkocmV2aXNpb24gMTE1ODU3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a2VkU3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNzgsNiArNzgsOCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBkaWRBZGRCbG9jayhNYXJrZWRCbG9jayopOwogICAgIHZvaWQgZGlkQ29uc3VtZUZyZWVM
aXN0KE1hcmtlZEJsb2NrKik7CiAKKyAgICBib29sIGlzUGFnZWRPdXQoZG91YmxlIHRpbWVPdXQp
OworCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAg
ICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJh
Y2tDRi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR0NB
Y3Rpdml0eUNhbGxiYWNrQ0YuY3BwCShyZXZpc2lvbiAxMTU4NTcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2tDRi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTU2LDYgKzU2LDcgQEAgc3RydWN0IERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2tQbGF0Zm9y
bQogY29uc3QgZG91YmxlIGdjVGltZVNsaWNlUGVyTUIgPSAwLjAxOyAvLyBQZXJjZW50YWdlIG9m
IENQVSB0aW1lIHdlIHdpbGwgc3BlbmQgdG8gcmVjbGFpbSAxIE1CCiBjb25zdCBkb3VibGUgbWF4
R0NUaW1lU2xpY2UgPSAwLjA1OyAvLyBUaGUgbWF4aW11bSBhbW91bnQgb2YgQ1BVIHRpbWUgd2Ug
d2FudCB0byB1c2UgZm9yIG9wcG9ydHVuaXN0aWMgdGltZXItdHJpZ2dlcmVkIGNvbGxlY3Rpb25z
LgogY29uc3QgZG91YmxlIHRpbWVyU2xvcCA9IDIuMDsgLy8gRnVkZ2UgZmFjdG9yIHRvIGF2b2lk
IHBlcmZvcm1hbmNlIGNvc3Qgb2YgcmVzZXR0aW5nIHRpbWVyLgorY29uc3QgZG91YmxlIHBhZ2lu
Z1RpbWVPdXQgPSAwLjE7IC8vIFRpbWUgaW4gc2Vjb25kcyB0byBhbGxvdyBvcHBvcnR1bmlzdGlj
IHRpbWVyIHRvIGl0ZXJhdGUgb3ZlciBhbGwgYmxvY2tzIHRvIHNlZSBpZiB0aGUgSGVhcCBpcyBw
YWdlZCBvdXQuCiBjb25zdCBDRlRpbWVJbnRlcnZhbCBkZWNhZGUgPSA2MCAqIDYwICogMjQgKiAz
NjUgKiAxMDsKIGNvbnN0IENGVGltZUludGVydmFsIGhvdXIgPSA2MCAqIDYwOwogCkBAIC02Myw2
ICs2NCwxMiBAQCB2b2lkIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2tQbGF0Zm9ybURhCiB7CiAg
ICAgSGVhcCogaGVhcCA9IHN0YXRpY19jYXN0PEhlYXAqPihpbmZvKTsKICAgICBBUElFbnRyeVNo
aW0gc2hpbShoZWFwLT5nbG9iYWxEYXRhKCkpOworICAgIGRvdWJsZSBzdGFydFRpbWUgPSBXVEY6
Om1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOworICAgIGlmIChoZWFwLT5pc1BhZ2VkT3V0
KHN0YXJ0VGltZSArIHBhZ2luZ1RpbWVPdXQpKSB7CisgICAgICAgIGhlYXAtPmFjdGl2aXR5Q2Fs
bGJhY2soKS0+d2lsbENvbGxlY3QoKTsKKyAgICAgICAgaGVhcC0+aW5jcmVhc2VMYXN0R0NMZW5n
dGgocGFnaW5nVGltZU91dCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgaGVhcC0+Y29s
bGVjdEFsbEdhcmJhZ2UoKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139914</attachid>
            <date>2012-05-02 16:44:00 -0700</date>
            <delta_ts>2012-05-02 17:00:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85411-20120502164359.patch</filename>
            <type>text/plain</type>
            <size>13125</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTE1OTEwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcwIEBA
CisyMDEyLTA1LTAyICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgT3Bwb3J0dW5pc3RpYyBHQyBzaG91bGQgZ2l2ZSB1cCBpZiB0aGUgSGVhcCBpcyBw
YWdlZCBvdXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTg1NDExCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
T3Bwb3J0dW5pc3RpYyBHQyBpcyBwdW5pc2hpbmcgdXMgc2V2ZXJlbHkgaW4gbGltaXRlZCBtZW1v
cnkgc2l0dWF0aW9ucyBiZWNhdXNlIGl0cyAKKyAgICAgICAgYXNzdW1wdGlvbnMgYWJvdXQgaG93
IG11Y2ggdGltZSBhIGNvbGxlY3Rpb24gd2lsbCB0YWtlIGFyZSB3YXkgb3V0IG9mIHdoYWNrIHdo
ZW4gdGhlIEhlYXAgCisgICAgICAgIGhhcyBiZWVuIHBhZ2VkIG91dCBieSB0aGUgT1MuIFdlIHNo
b3VsZCBhZGQgYSBzaW1wbGUgZGV0ZWN0aW9uIGZ1bmN0aW9uIHRvIHRoZSBIZWFwIHRoYXQgCisg
ICAgICAgIGRldGVjdHMgaWYgaXRzIGlzIHBhZ2VkIG91dC4gSXQgd2lsbCBkbyB0aGlzIGJ5IGl0
ZXJhdGluZyBlYWNoIGJsb2NrIG9mIGJvdGggdGhlIE1hcmtlZFNwYWNlIAorICAgICAgICBhbmQg
Q29waWVkU3BhY2UuIElmIHRoYXQgb3BlcmF0aW9uIHRha2VzIGxvbmdlciB0aGFuIGEgZml4ZWQg
YW1vdW50IG9mIHRpbWUgKGUuZy4gMTAwbXMpLCAKKyAgICAgICAgdGhlIGZ1bmN0aW9uIHJldHVy
bnMgdHJ1ZS4gVGhpcyBmdW5jdGlvbiB3aWxsIG9ubHkgYmUgcnVuIHByaW9yIHRvIGFuIG9wcG9y
dHVuaXN0aWMgCisgICAgICAgIGNvbGxlY3Rpb24gKGkuZS4gaXQgd2lsbCBub3QgcnVuIGR1cmlu
ZyBvdXIgbm9ybWFsIGFsbG9jYXRpb24tdHJpZ2dlcmVkIGNvbGxlY3Rpb25zKS4KKworICAgICAg
ICBJbiBteSB0ZXN0cywgc3RlYWR5IHN0YXRlIHdhcyBkcmFzdGljYWxseSBpbXByb3ZlZCBpbiBo
aWdoIG1lbW9yeSBwcmVzc3VyZSBzaXR1YXRpb25zIChpLmUuIAorICAgICAgICB0aGUgYnJvd3Nl
ciB3YXMgc3RpbGwgdXNhYmxlLCBzaWduaWZpY2FudCByZWR1Y3Rpb24gaW4gU1BPRHMpLiBPY2Nh
c2lvbmFsbHksIGEgbm9ybWFsIEdDCisgICAgICAgIHdvdWxkIGJlIHRyaWdnZXJlZCBkdWUgdG8g
cGFnZXMgZG9pbmcgdGhpbmdzIGluIHRoZSBiYWNrZ3JvdW5kLCB3aGljaCB3b3VsZCBjYXVzZSBh
IAorICAgICAgICBzaWduaWZpY2FudCBwYXVzZS4gQXMgd2UgY2xvc2UgcGFnZXMgd2Ugbm93IGNh
dXNlIG5vcm1hbCBjb2xsZWN0aW9ucyByYXRoZXIgdGhhbiBmdWxsIAorICAgICAgICBjb2xsZWN0
aW9ucywgd2hpY2ggcHJldmVudHMgdXMgZnJvbSBjb2xsZWN0aW5nIGFsbCBvZiB0aGUgZGVhZCBt
ZW1vcnkgaW1tZWRpYXRlbHkuIE9uZSAKKyAgICAgICAgbmljZSB3YXkgdG8gZGVhbCB3aXRoIHRo
aXMgaXNzdWUgbWlnaHQgYmUgdG8gZG8gaW5jcmVtZW50YWwgc3dlZXBpbmcuCisKKworICAgICAg
ICAqIGhlYXAvQ29waWVkU3BhY2UuY3BwOgorICAgICAgICAoSlNDOjppc0Jsb2NrTGlzdFBhZ2Vk
T3V0KTogSGVscGVyIGZ1bmN0aW9uIHRvIHJlZHVjZSBjb2RlIGR1cGxpY2F0aW9uIHdoZW4gaXRl
cmF0aW5nIG92ZXIgCisgICAgICAgIHRvLXNwYWNlLCBmcm9tLXNwYWNlLCBhbmQgdGhlIG92ZXJz
aXplIGJsb2Nrcy4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkNvcGllZFNwYWNlOjpp
c1BhZ2VkT3V0KTogVHJpZXMgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IENvcGllZFNwYWNl
IGlzIHBhZ2VkIG91dAorICAgICAgICBieSBpdGVyYXRpbmcgYWxsIG9mIHRoZSBibG9ja3MuCisg
ICAgICAgICogaGVhcC9Db3BpZWRTcGFjZS5oOgorICAgICAgICAoQ29waWVkU3BhY2UpOgorICAg
ICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6OmlzUGFnZWRPdXQpOiBU
cmllcyB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUgSGVhcCBpcyBwYWdlZCBvdXQgYnkgYXNraW5n
IHRoZSAKKyAgICAgICAgTWFya2VkU3BhY2UgYW5kIENvcGllZFNwYWNlIGlmIHRoZXkgYXJlIHBh
Z2VkIG91dC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgICogaGVhcC9IZWFwLmg6CisgICAgICAg
IChIZWFwKToKKyAgICAgICAgKEpTQzo6SGVhcDo6aW5jcmVhc2VMYXN0R0NMZW5ndGgpOiBBZGRl
ZCB0aGlzIHNvIHRoYXQgdGhlIEdDIHRpbWVyIGNhbiBsaW5lYXJseSBiYWNrIG9mZiAKKyAgICAg
ICAgZWFjaCB0aW1lIGl0IGRldGVybWluZXMgdGhhdCB0aGUgSGVhcCBpcyBwYWdlZCBvdXQuCisg
ICAgICAgICogaGVhcC9NYXJrZWRBbGxvY2F0b3IuY3BwOgorICAgICAgICAoSlNDOjpNYXJrZWRB
bGxvY2F0b3I6OmlzUGFnZWRPdXQpOiBUcmllcyB0byBkZXRlcm1pbmUgaWYgdGhpcyBwYXJ0aWN1
bGFyIE1hcmtlZEFsbG9jYXRvcidzCisgICAgICAgIGxpc3Qgb2YgYmxvY2tzIGFyZSBwYWdlZCBv
dXQuCisgICAgICAgIChKU0MpOgorICAgICAgICAqIGhlYXAvTWFya2VkQWxsb2NhdG9yLmg6Cisg
ICAgICAgIChNYXJrZWRBbGxvY2F0b3IpOgorICAgICAgICAqIGhlYXAvTWFya2VkU3BhY2UuY3Bw
OgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6aXNQYWdlZE91dCk6IEZvciBlYWNoIE1hcmtl
ZEFsbG9jYXRvciwgY2hlY2sgdG8gc2VlIGlmIHRoZXkncmUgcGFnZWQgb3V0LgorICAgICAgICAq
IGhlYXAvTWFya2VkU3BhY2UuaDoKKyAgICAgICAgKE1hcmtlZFNwYWNlKToKKyAgICAgICAgKiBy
dW50aW1lL0dDQWN0aXZpdHlDYWxsYmFjay5jcHA6CisgICAgICAgIChKU0M6OkRlZmF1bHRHQ0Fj
dGl2aXR5Q2FsbGJhY2s6OmNhbmNlbCk6CisgICAgICAgIChKU0MpOgorICAgICAgICAqIHJ1bnRp
bWUvR0NBY3Rpdml0eUNhbGxiYWNrLmg6CisgICAgICAgIChKU0M6OkdDQWN0aXZpdHlDYWxsYmFj
azo6Y2FuY2VsKToKKyAgICAgICAgKERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2spOgorICAgICAg
ICAqIHJ1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrQ0YuY3BwOiBBZGRlZCBhIGNvbnN0YW50IG9m
IDEwMG1zIGZvciB0aGUgdGltZW91dCBpbiBkZXRlcm1pbmluZworICAgICAgICB3aGV0aGVyIHRo
ZSBIZWFwIGlzIHBhZ2VkIG91dCBvciBub3QuCisgICAgICAgIChKU0MpOgorICAgICAgICAoSlND
OjpEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrUGxhdGZvcm1EYXRhOjp0aW1lckRpZEZpcmUpOiBB
ZGRlZCB0aGUgY2hlY2sgdG8gc2VlIGlmIHdlIAorICAgICAgICBzaG91bGQgYXR0ZW1wdCBhIGNv
bGxlY3Rpb24gYmFzZWQgb24gd2hldGhlciBvciBub3Qgd2UgY2FuIGl0ZXJhdGUgdGhlIGJsb2Nr
cyBvZiB0aGUgSGVhcCBpbiAKKyAgICAgICAgMTAwbXMuIElmIHdlIGNhbid0LCB3ZSBjYW5jZWwg
dGhlIHRpbWVyIGFuZCB0ZWxsIHRoZSBIZWFwIHdlIGp1c3Qgd2FzdGVkIDEwMG1zIG1vcmUgdHJ5
aW5nIHRvIAorICAgICAgICBkbyBhIGNvbGxlY3Rpb24uIFRoaXMgZ2l2ZXMgdXMgYSBuaWNlIGxp
bmVhciBiYWNrb2ZmIHNvIHdlJ3JlIG5vdCBjb25zdGFudGx5IHJlLXRyeWluZyBpbgorICAgICAg
ICBzdGVhZHkgc3RhdGUgcGFnZWQtb3V0LW5lc3MuCisgICAgICAgIChKU0M6OkRlZmF1bHRHQ0Fj
dGl2aXR5Q2FsbGJhY2s6OmNhbmNlbCk6IEFkZGVkIHRoaXMgZnVuY3Rpb24gd2hpY2gsIHdoaWxl
IGN1cnJlbnRseSBkb2luZyAKKyAgICAgICAgZXhhY3RseSB0aGUgc2FtZSB0aGluZyBhcyB3aWxs
Q29sbGVjdCwgaXMgbW9yZSBvYnZpb3VzIGFzIHRvIHdoYXQgaXQncyBkb2luZyB3aGVuIHdlIGNh
bGwgaXQgCisgICAgICAgIGluIHRpbWVyRGlkRmlyZS4KKwogMjAxMi0wNS0wMiAgWW9uZyBMaSAg
PHlvbGlAcmltLmNvbT4KIAogICAgICAgICBGaXggR0NDIFg4NiBidWlsZCBlcnJvcgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29waWVkU3BhY2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvcGllZFNwYWNlLmNwcAkocmV2aXNpb24gMTE1
ODgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29waWVkU3BhY2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yODEsNCArMjgxLDI4IEBAIHNpemVfdCBDb3BpZWRTcGFjZTo6Y2FwYWNp
dHkoKQogICAgIHJldHVybiBjYWxjdWxhdGVkQ2FwYWNpdHk7CiB9CiAKK3N0YXRpYyBib29sIGlz
QmxvY2tMaXN0UGFnZWRPdXQoZG91YmxlIGRlYWRsaW5lLCBEb3VibHlMaW5rZWRMaXN0PEhlYXBC
bG9jaz4qIGxpc3QpCit7CisgICAgdW5zaWduZWQgaXRlcnNTaW5jZUxhc3RUaW1lQ2hlY2sgPSAw
OworICAgIEhlYXBCbG9jayogY3VycmVudCA9IGxpc3QtPmhlYWQoKTsKKyAgICB3aGlsZSAoY3Vy
cmVudCkgeworICAgICAgICBjdXJyZW50ID0gY3VycmVudC0+bmV4dCgpOworICAgICAgICArK2l0
ZXJzU2luY2VMYXN0VGltZUNoZWNrOworICAgICAgICBpZiAoaXRlcnNTaW5jZUxhc3RUaW1lQ2hl
Y2sgPj0gSGVhcDo6c190aW1lQ2hlY2tSZXNvbHV0aW9uKSB7CisgICAgICAgICAgICBkb3VibGUg
Y3VycmVudFRpbWUgPSBXVEY6Om1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOworICAgICAg
ICAgICAgaWYgKGN1cnJlbnRUaW1lID4gZGVhZGxpbmUpCisgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wg
Q29waWVkU3BhY2U6OmlzUGFnZWRPdXQoZG91YmxlIGRlYWRsaW5lKQoreworICAgIHJldHVybiBp
c0Jsb2NrTGlzdFBhZ2VkT3V0KGRlYWRsaW5lLCBtX3RvU3BhY2UpIAorICAgICAgICB8fCBpc0Js
b2NrTGlzdFBhZ2VkT3V0KGRlYWRsaW5lLCBtX2Zyb21TcGFjZSkgCisgICAgICAgIHx8IGlzQmxv
Y2tMaXN0UGFnZWRPdXQoZGVhZGxpbmUsICZtX292ZXJzaXplQmxvY2tzKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db3BpZWRTcGFj
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvcGllZFNwYWNl
LmgJKHJldmlzaW9uIDExNTg4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvcGll
ZFNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTcwLDYgKzcwLDcgQEAgcHVibGljOgogICAgIHNp
emVfdCBjYXBhY2l0eSgpOwogCiAgICAgdm9pZCBmcmVlQWxsQmxvY2tzKCk7CisgICAgYm9vbCBp
c1BhZ2VkT3V0KGRvdWJsZSBkZWFkbGluZSk7CiAKICAgICBzdGF0aWMgQ29waWVkQmxvY2sqIGJs
b2NrRm9yKHZvaWQqKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJl
dmlzaW9uIDExNTg4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNDUsNiArMzQ1LDExIEBAIEhlYXA6On5IZWFwKCkKICAgICBBU1NF
UlQoIWNhcGFjaXR5KCkpOwogfQogCitib29sIEhlYXA6OmlzUGFnZWRPdXQoZG91YmxlIGRlYWRs
aW5lKQoreworICAgIHJldHVybiBtX29iamVjdFNwYWNlLmlzUGFnZWRPdXQoZGVhZGxpbmUpIHx8
IG1fc3RvcmFnZVNwYWNlLmlzUGFnZWRPdXQoZGVhZGxpbmUpOworfQorCiAvLyBUaGUgSlNHbG9i
YWxEYXRhIGlzIGJlaW5nIGRlc3Ryb3llZCBhbmQgdGhlIGNvbGxlY3RvciB3aWxsIG5ldmVyIHJ1
biBhZ2Fpbi4KIC8vIFJ1biBhbGwgcGVuZGluZyBmaW5hbGl6ZXJzIG5vdyBiZWNhdXNlIHdlIHdv
bid0IGdldCBhbm90aGVyIGNoYW5jZS4KIHZvaWQgSGVhcDo6bGFzdENoYW5jZVRvRmluYWxpemUo
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkocmV2aXNpb24gMTE1ODgxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCSh3b3JraW5nIGNvcHkpCkBAIC03Niw2
ICs3NiwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIEhlYXAqIGhlYXAoY29u
c3QgSlNWYWx1ZSk7IC8vIDAgZm9yIGltbWVkaWF0ZSB2YWx1ZXMKICAgICAgICAgc3RhdGljIEhl
YXAqIGhlYXAoY29uc3QgSlNDZWxsKik7CiAKKyAgICAgICAgLy8gVGhpcyBjb25zdGFudCBkZXRl
cm1pbmVzIGhvdyBtYW55IGJsb2NrcyB3ZSBpdGVyYXRlIGJldHdlZW4gY2hlY2tzIG9mIG91ciAK
KyAgICAgICAgLy8gZGVhZGxpbmUgd2hlbiBjYWxsaW5nIEhlYXA6OmlzUGFnZWRPdXQuIERlY3Jl
YXNpbmcgaXQgd2lsbCBjYXVzZSB1cyB0byBkZXRlY3QgCisgICAgICAgIC8vIG92ZXJzdGVwcGlu
ZyBvdXIgZGVhZGxpbmUgbW9yZSBxdWlja2x5LCB3aGlsZSBpbmNyZWFzaW5nIGl0IHdpbGwgY2F1
c2UgCisgICAgICAgIC8vIG91ciBzY2FuIHRvIHJ1biBmYXN0ZXIuIAorICAgICAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgc190aW1lQ2hlY2tSZXNvbHV0aW9uID0gMTY7CisKICAgICAgICAgc3Rh
dGljIGJvb2wgaXNNYXJrZWQoY29uc3Qgdm9pZCopOwogICAgICAgICBzdGF0aWMgYm9vbCB0ZXN0
QW5kU2V0TWFya2VkKGNvbnN0IHZvaWQqKTsKICAgICAgICAgc3RhdGljIHZvaWQgc2V0TWFya2Vk
KGNvbnN0IHZvaWQqKTsKQEAgLTE0OSwxMSArMTU1LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICB2b2lkIGdldENvbnNlcnZhdGl2ZVJlZ2lzdGVyUm9vdHMoSGFzaFNldDxKU0NlbGwqPiYg
cm9vdHMpOwogCiAgICAgICAgIGRvdWJsZSBsYXN0R0NMZW5ndGgoKSB7IHJldHVybiBtX2xhc3RH
Q0xlbmd0aDsgfQorICAgICAgICB2b2lkIGluY3JlYXNlTGFzdEdDTGVuZ3RoKGRvdWJsZSBhbW91
bnQpIHsgbV9sYXN0R0NMZW5ndGggKz0gYW1vdW50OyB9CiAKICAgICAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgdm9pZCBkaXNjYXJkQWxsQ29tcGlsZWRDb2RlKCk7CiAKICAgICAgICAgdm9pZCBkaWRB
bGxvY2F0ZShzaXplX3QpOwogCisgICAgICAgIGJvb2wgaXNQYWdlZE91dChkb3VibGUgZGVhZGxp
bmUpOworCiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIENvZGVCbG9jazsKICAg
ICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmNwcAkocmV2aXNpb24gMTE1
ODgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMyw5ICszLDI4IEBACiAKICNpbmNsdWRlICJHQ0FjdGl2aXR5Q2Fs
bGJhY2suaCIKICNpbmNsdWRlICJIZWFwLmgiCisjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+
CiAKIG5hbWVzcGFjZSBKU0MgewogCitib29sIE1hcmtlZEFsbG9jYXRvcjo6aXNQYWdlZE91dChk
b3VibGUgZGVhZGxpbmUpCit7CisgICAgdW5zaWduZWQgaXRlcnNTaW5jZUxhc3RUaW1lQ2hlY2sg
PSAwOworICAgIEhlYXBCbG9jayogYmxvY2sgPSBtX2Jsb2NrTGlzdC5oZWFkKCk7CisgICAgd2hp
bGUgKGJsb2NrKSB7CisgICAgICAgIGJsb2NrID0gYmxvY2stPm5leHQoKTsKKyAgICAgICAgKytp
dGVyc1NpbmNlTGFzdFRpbWVDaGVjazsKKyAgICAgICAgaWYgKGl0ZXJzU2luY2VMYXN0VGltZUNo
ZWNrID49IEhlYXA6OnNfdGltZUNoZWNrUmVzb2x1dGlvbikgeworICAgICAgICAgICAgZG91Ymxl
IGN1cnJlbnRUaW1lID0gV1RGOjptb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKKyAgICAg
ICAgICAgIGlmIChjdXJyZW50VGltZSA+IGRlYWRsaW5lKQorICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICAgICAgaXRlcnNTaW5jZUxhc3RUaW1lQ2hlY2sgPSAwOworICAgICAg
ICB9CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCiBpbmxpbmUgdm9pZCogTWFya2Vk
QWxsb2NhdG9yOjp0cnlBbGxvY2F0ZUhlbHBlcigpCiB7CiAgICAgaWYgKCFtX2ZyZWVMaXN0Lmhl
YWQpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRv
ci5oCShyZXZpc2lvbiAxMTU4ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
ZWRBbGxvY2F0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsOSBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBhZGRCbG9jayhNYXJrZWRCbG9jayopOwogICAgIHZvaWQgcmVtb3ZlQmxvY2soTWFy
a2VkQmxvY2sqKTsKICAgICB2b2lkIGluaXQoSGVhcCosIE1hcmtlZFNwYWNlKiwgc2l6ZV90IGNl
bGxTaXplLCBib29sIGNlbGxzTmVlZERlc3RydWN0aW9uKTsKLSAgICAKKworICAgIGJvb2wgaXNQ
YWdlZE91dChkb3VibGUgZGVhZGxpbmUpOworICAgCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFz
cyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9NYXJrZWRTcGFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFya2VkU3BhY2UuY3BwCShyZXZpc2lvbiAxMTU4ODEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwLDYg
KzcwLDIwIEBAIHZvaWQgTWFya2VkU3BhY2U6OmNhbm9uaWNhbGl6ZUNlbGxMaXZlbmUKICAgICB9
CiB9CiAKK2Jvb2wgTWFya2VkU3BhY2U6OmlzUGFnZWRPdXQoZG91YmxlIGRlYWRsaW5lKQorewor
ICAgIGZvciAoc2l6ZV90IGNlbGxTaXplID0gcHJlY2lzZVN0ZXA7IGNlbGxTaXplIDw9IHByZWNp
c2VDdXRvZmY7IGNlbGxTaXplICs9IHByZWNpc2VTdGVwKSB7CisgICAgICAgIGlmIChhbGxvY2F0
b3JGb3IoY2VsbFNpemUpLmlzUGFnZWRPdXQoZGVhZGxpbmUpIHx8IGRlc3RydWN0b3JBbGxvY2F0
b3JGb3IoY2VsbFNpemUpLmlzUGFnZWRPdXQoZGVhZGxpbmUpKQorICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorCisgICAgZm9yIChzaXplX3QgY2VsbFNpemUgPSBpbXByZWNpc2VTdGVw
OyBjZWxsU2l6ZSA8PSBpbXByZWNpc2VDdXRvZmY7IGNlbGxTaXplICs9IGltcHJlY2lzZVN0ZXAp
IHsKKyAgICAgICAgaWYgKGFsbG9jYXRvckZvcihjZWxsU2l6ZSkuaXNQYWdlZE91dChkZWFkbGlu
ZSkgfHwgZGVzdHJ1Y3RvckFsbG9jYXRvckZvcihjZWxsU2l6ZSkuaXNQYWdlZE91dChkZWFkbGlu
ZSkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7
Cit9CiAKIHZvaWQgTWFya2VkU3BhY2U6OmZyZWVCbG9ja3MoTWFya2VkQmxvY2sqIGhlYWQpCiB7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgJKHJldmlzaW9u
IDExNTg4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTc4LDYgKzc4LDggQEAgcHVibGljOgogICAgIHZvaWQgZGlkQWRkQmxv
Y2soTWFya2VkQmxvY2sqKTsKICAgICB2b2lkIGRpZENvbnN1bWVGcmVlTGlzdChNYXJrZWRCbG9j
ayopOwogCisgICAgYm9vbCBpc1BhZ2VkT3V0KGRvdWJsZSBkZWFkbGluZSk7CisKIHByaXZhdGU6
CiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dDQWN0aXZpdHlDYWxsYmFjay5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNr
LmNwcAkocmV2aXNpb24gMTE1ODgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
R0NBY3Rpdml0eUNhbGxiYWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsNSArNTQsOSBAQCB2
b2lkIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OnN5bmNocm9uCiB7CiB9CiAKK3ZvaWQgRGVm
YXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6Y2FuY2VsKCkKK3sKK30KKwogfQogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2suaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2suaAko
cmV2aXNpb24gMTE1ODgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR0NBY3Rp
dml0eUNhbGxiYWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBkaWRBbGxvY2F0ZShzaXplX3QpIHsgfQogICAgIHZpcnR1YWwgdm9p
ZCB3aWxsQ29sbGVjdCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZSgpIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBjYW5jZWwoKSB7IH0KIAogcHJvdGVjdGVkOgogICAgIEdDQWN0aXZp
dHlDYWxsYmFjaygpIHt9CkBAIC02Myw2ICs2NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgZGlkQWxsb2NhdGUoc2l6ZV90KTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbENvbGxlY3QoKTsK
ICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2FuY2Vs
KCk7CiAKICNpZiBVU0UoQ0YpCiBwcm90ZWN0ZWQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2tDRi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrQ0YuY3BwCShyZXZpc2lv
biAxMTU4ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HQ0FjdGl2aXR5Q2Fs
bGJhY2tDRi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDYgKzU2LDcgQEAgc3RydWN0IERlZmF1
bHRHQ0FjdGl2aXR5Q2FsbGJhY2tQbGF0Zm9ybQogY29uc3QgZG91YmxlIGdjVGltZVNsaWNlUGVy
TUIgPSAwLjAxOyAvLyBQZXJjZW50YWdlIG9mIENQVSB0aW1lIHdlIHdpbGwgc3BlbmQgdG8gcmVj
bGFpbSAxIE1CCiBjb25zdCBkb3VibGUgbWF4R0NUaW1lU2xpY2UgPSAwLjA1OyAvLyBUaGUgbWF4
aW11bSBhbW91bnQgb2YgQ1BVIHRpbWUgd2Ugd2FudCB0byB1c2UgZm9yIG9wcG9ydHVuaXN0aWMg
dGltZXItdHJpZ2dlcmVkIGNvbGxlY3Rpb25zLgogY29uc3QgZG91YmxlIHRpbWVyU2xvcCA9IDIu
MDsgLy8gRnVkZ2UgZmFjdG9yIHRvIGF2b2lkIHBlcmZvcm1hbmNlIGNvc3Qgb2YgcmVzZXR0aW5n
IHRpbWVyLgorY29uc3QgZG91YmxlIHBhZ2luZ1RpbWVPdXQgPSAwLjE7IC8vIFRpbWUgaW4gc2Vj
b25kcyB0byBhbGxvdyBvcHBvcnR1bmlzdGljIHRpbWVyIHRvIGl0ZXJhdGUgb3ZlciBhbGwgYmxv
Y2tzIHRvIHNlZSBpZiB0aGUgSGVhcCBpcyBwYWdlZCBvdXQuCiBjb25zdCBDRlRpbWVJbnRlcnZh
bCBkZWNhZGUgPSA2MCAqIDYwICogMjQgKiAzNjUgKiAxMDsKIGNvbnN0IENGVGltZUludGVydmFs
IGhvdXIgPSA2MCAqIDYwOwogCkBAIC02Myw2ICs2NCwxNCBAQCB2b2lkIERlZmF1bHRHQ0FjdGl2
aXR5Q2FsbGJhY2tQbGF0Zm9ybURhCiB7CiAgICAgSGVhcCogaGVhcCA9IHN0YXRpY19jYXN0PEhl
YXAqPihpbmZvKTsKICAgICBBUElFbnRyeVNoaW0gc2hpbShoZWFwLT5nbG9iYWxEYXRhKCkpOwor
I2lmICFQTEFURk9STShJT1MpCisgICAgZG91YmxlIHN0YXJ0VGltZSA9IFdURjo6bW9ub3Rvbmlj
YWxseUluY3JlYXNpbmdUaW1lKCk7CisgICAgaWYgKGhlYXAtPmlzUGFnZWRPdXQoc3RhcnRUaW1l
ICsgcGFnaW5nVGltZU91dCkpIHsKKyAgICAgICAgaGVhcC0+YWN0aXZpdHlDYWxsYmFjaygpLT5j
YW5jZWwoKTsKKyAgICAgICAgaGVhcC0+aW5jcmVhc2VMYXN0R0NMZW5ndGgocGFnaW5nVGltZU91
dCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKICAgICBoZWFwLT5jb2xsZWN0QWxs
R2FyYmFnZSgpOwogfQogCkBAIC0xMzUsNCArMTQ0LDkgQEAgdm9pZCBEZWZhdWx0R0NBY3Rpdml0
eUNhbGxiYWNrOjpzeW5jaHJvbgogICAgIENGUnVuTG9vcEFkZFRpbWVyKGQtPnJ1bkxvb3AuZ2V0
KCksIGQtPnRpbWVyLmdldCgpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwogfQogCit2b2lkIERl
ZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmNhbmNlbCgpCit7CisgICAgY2FuY2VsVGltZXIoZC5n
ZXQoKSk7Cit9CisKIH0K
</data>
<flag name="review"
          id="145650"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>