<?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>170655</bug_id>
          
          <creation_ts>2017-04-09 08:54:26 -0700</creation_ts>
          <short_desc>[JSC] Enable JSRunLoopTimer for JSCOnly and Windows</short_desc>
          <delta_ts>2017-04-11 02:34:44 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit 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="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>benjamin</cc>
    
    <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>clopez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dbates</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1295801</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-04-09 08:54:26 -0700</bug_when>
    <thetext>[JSC] Enable JSRunLoopTimer for JSCOnly and Windows</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1295804</commentid>
    <comment_count>1</comment_count>
      <attachid>306622</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-04-09 08:57:21 -0700</bug_when>
    <thetext>Created attachment 306622
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1295905</commentid>
    <comment_count>2</comment_count>
      <attachid>306622</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-04-09 23:29:04 -0700</bug_when>
    <thetext>Comment on attachment 306622
Patch

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

&gt; Source/JavaScriptCore/jsc.cpp:3891
&gt;      WTF::initializeMainThread();
&gt;      JSC::initializeThreading();
&gt; +    RunLoop::initializeMainRunLoop();

Do we really need this? JS timers use RunLoop::current() not main(). If we need it, then we can remove WTF::initializeMainThread(); because initializeMainRunLoop already initializes the main thread.

&gt; Source/JavaScriptCore/runtime/JSRunLoopTimer.cpp:190
&gt; +    m_timer.stop();
&gt; +    m_timer.startOneShot(s_decade);

RunLoop::Timer::start() already calls stop().

&gt; Source/JavaScriptCore/runtime/JSRunLoopTimer.h:85
&gt; +    static const Seconds s_decade;
&gt; +    RunLoop::Timer&lt;JSRunLoopTimer&gt; m_timer;

Yes, I think we could adopt this implementation at least for non cocoa based ports. I think when we added support for heap timer, RunLoop was still in WebCore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1295918</commentid>
    <comment_count>3</comment_count>
      <attachid>306622</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-04-10 00:46:07 -0700</bug_when>
    <thetext>Comment on attachment 306622
Patch

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

Thanks, I&apos;ll update the patch.

&gt;&gt; Source/JavaScriptCore/jsc.cpp:3891
&gt;&gt; +    RunLoop::initializeMainRunLoop();
&gt; 
&gt; Do we really need this? JS timers use RunLoop::current() not main(). If we need it, then we can remove WTF::initializeMainThread(); because initializeMainRunLoop already initializes the main thread.

Right, it is not necessary. Dropped.

&gt;&gt; Source/JavaScriptCore/runtime/JSRunLoopTimer.cpp:190
&gt;&gt; +    m_timer.startOneShot(s_decade);
&gt; 
&gt; RunLoop::Timer::start() already calls stop().

Nice, dropped.

&gt;&gt; Source/JavaScriptCore/runtime/JSRunLoopTimer.h:85
&gt;&gt; +    RunLoop::Timer&lt;JSRunLoopTimer&gt; m_timer;
&gt; 
&gt; Yes, I think we could adopt this implementation at least for non cocoa based ports. I think when we added support for heap timer, RunLoop was still in WebCore.

Yeah, non cocoa based ports, I&apos;ll change to use this RunLoop::Timer in the subsequent patch.
This patch paves the way for that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1295919</commentid>
    <comment_count>4</comment_count>
      <attachid>306667</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-04-10 00:50:47 -0700</bug_when>
    <thetext>Created attachment 306667
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1296327</commentid>
    <comment_count>5</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-04-11 02:34:44 -0700</bug_when>
    <thetext>Committed r215223: &lt;http://trac.webkit.org/changeset/215223&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>306622</attachid>
            <date>2017-04-09 08:57:21 -0700</date>
            <delta_ts>2017-04-10 00:50:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-170655-20170410005720.patch</filename>
            <type>text/plain</type>
            <size>16500</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1MTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
OTkxYzE0NWRlZjdhNjY1OTliNDJkODdkOWM0ZmUyY2I0M2M2Njk3Li5iZDNmYjU2ODMyYjE5NTYw
ZmY4MDhmODM3M2NhZWQ0ODljMzdiYWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAxNy0wNC0wOSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXSBFbmFibGUgSlNSdW5Mb29wVGltZXIgZm9yIEpTQ09ubHkg
YW5kIFdpbmRvd3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3MDY1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICoganNjLmNwcDoKKyAgICAgICAgKGpzY21haW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNS
dW5Mb29wVGltZXIuY3BwOgorICAgICAgICAoSlNDOjpKU1J1bkxvb3BUaW1lcjo6SlNSdW5Mb29w
VGltZXIpOgorICAgICAgICAoSlNDOjpKU1J1bkxvb3BUaW1lcjo6c2NoZWR1bGVUaW1lcik6Cisg
ICAgICAgIChKU0M6OkpTUnVuTG9vcFRpbWVyOjpjYW5jZWxUaW1lcik6CisgICAgICAgICogcnVu
dGltZS9KU1J1bkxvb3BUaW1lci5oOgorCiAyMDE3LTA0LTA4ICBZb3Vlbm4gRmFibGV0ICA8eW91
ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJSVEMgdGVzdHMgZ2FyZGVuaW5nCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDcz
NDg3YmExZGQwMDA5ZTQ3MDRhN2QxNTMwYjExM2QzMzNmMTY5N2QuLjVlNDE0ZWQxYzg4M2JlYjQz
MDhhYjJlOTcxNmNhYzM5NGMzNDgyZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTctMDQtMDkg
IFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0pTQ10g
RW5hYmxlIEpTUnVuTG9vcFRpbWVyIGZvciBKU0NPbmx5IGFuZCBXaW5kb3dzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzA2NTUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIG1ha2VzIFJ1
bkxvb3A6OlRpbWVyIGluIEdlbmVyaWMgYW5kIFdpbmRvd3MgdGhyZWFkLXNhZmUgdG8gdXNlIGl0
CisgICAgICAgIGluIEpTQydzIEpTUnVuTG9vcFRpbWVyLiBFdmVudHVhbGx5LCB3ZSB3b3VsZCBs
aWtlIHRvIHJlcGxhY2UgSlNSdW5Mb29wVGltZXIncworICAgICAgICBwbGF0Zm9ybS1kZXBlbmRl
bnQgaW1wbGVtZW50YXRpb24gdG8gV1RGOjpSdW5Mb29wOjpUaW1lci4KKworICAgICAgICAqIHd0
Zi9SdW5Mb29wLmg6CisgICAgICAgICogd3RmL2NmL1J1bkxvb3BDRi5jcHA6CisgICAgICAgIChX
VEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RhcnQpOgorICAgICAgICAqIHd0Zi9nZW5lcmljL1J1
bkxvb3BHZW5lcmljLmNwcDoKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjpTY2hl
ZHVsZWRUYXNrOjpFYXJsaWVzdFNjaGVkdWxlOjpvcGVyYXRvcigpKToKKyAgICAgICAgKFdURjo6
UnVuTG9vcDo6cG9wdWxhdGVUYXNrcyk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OnJ1bkltcGwp
OgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpzY2hlZHVsZSk6CisgICAgICAgIChXVEY6OlJ1bkxv
b3A6OnNjaGVkdWxlQW5kV2FrZVVwKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNl
Ojp+VGltZXJCYXNlKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjpzdGFydCk6
CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RvcCk6CisgICAgICAgIChXVEY6
OlJ1bkxvb3A6OlRpbWVyQmFzZTo6aXNBY3RpdmUpOgorICAgICAgICAqIHd0Zi9nbGliL1J1bkxv
b3BHTGliLmNwcDoKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjpUaW1lckJhc2Up
OgorICAgICAgICAqIHd0Zi93aW4vUnVuTG9vcFdpbi5jcHA6CisgICAgICAgIChXVEY6OlJ1bkxv
b3A6OlRpbWVyQmFzZTo6dGltZXJGaXJlZCk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVy
QmFzZTo6c3RhcnQpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OnN0b3ApOgor
ICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OmlzQWN0aXZlKToKKwogMjAxNy0wNC0w
NyAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJl
dmlld2VkLCByZW1vdmUgY29uc3RleHByIGZ1bmN0aW9uIHNpbmNlIEdUSyBkaWRuJ3QgbGlrZSBp
dC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggOTA5NTBiOTg1OTdmZjM5OGQ0MjEzZGRmOTA5MDdi
ZDNjMTdkMjdiOS4uNzgyYzcwNjFhZTg0ODQ1ZGI2NTYwZDc4NWIzM2Q5NWZjZmY0MDg0OCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2pzYy5jcHAKQEAgLTkxLDYgKzkxLDcgQEAKICNpbmNsdWRlIDx3dGYvQ3VycmVu
dFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3RmL1N0
cmluZ1ByaW50U3RyZWFtLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgog
CkBAIC0zODg3LDYgKzM4ODgsNyBAQCBpbnQganNjbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3Yp
CiAgICAgLy8gSW5pdGlhbGl6ZSBKU0MgYmVmb3JlIGdldHRpbmcgVk0uCiAgICAgV1RGOjppbml0
aWFsaXplTWFpblRocmVhZCgpOwogICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZygpOworICAg
IFJ1bkxvb3A6OmluaXRpYWxpemVNYWluUnVuTG9vcCgpOwogICAgIHN0YXJ0VGltZW91dFRocmVh
ZElmTmVlZGVkKCk7CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIEpTQzo6V2FzbTo6ZW5h
YmxlRmFzdE1lbW9yeSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNSdW5Mb29wVGltZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNS
dW5Mb29wVGltZXIuY3BwCmluZGV4IGQ4NmIzY2VjNjIxNGU5ODNlMjZiYzBlYTQzNjlmNzAzYjQ4
ZDNjNzguLjIzYWEzMTI0NGI1OWVmMTE0MTcxMmE5MDNmODlmNzdlYWI2YTIxNzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUnVuTG9vcFRpbWVyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1J1bkxvb3BUaW1lci5jcHAKQEAgLTE2
MSwyMyArMTYxLDM2IEBAIHZvaWQgSlNSdW5Mb29wVGltZXI6OmNhbmNlbFRpbWVyKCkKICAgICBn
X3NvdXJjZV9zZXRfcmVhZHlfdGltZShtX3RpbWVyLmdldCgpLCBnX2dldF9tb25vdG9uaWNfdGlt
ZSgpICsgc19kZWNhZGUgKiBHX1VTRUNfUEVSX1NFQyk7CiAgICAgbV9pc1NjaGVkdWxlZCA9IGZh
bHNlOwogfQorCiAjZWxzZQorCitjb25zdCBTZWNvbmRzIEpTUnVuTG9vcFRpbWVyOjpzX2RlY2Fk
ZSB7IDYwICogNjAgKiAyNCAqIDM2NSAqIDEwIH07CisKIEpTUnVuTG9vcFRpbWVyOjpKU1J1bkxv
b3BUaW1lcihWTSogdm0pCiAgICAgOiBtX3ZtKHZtKQorICAgICwgbV9hcGlMb2NrKCZ2bS0+YXBp
TG9jaygpKQorICAgICwgbV90aW1lcihSdW5Mb29wOjpjdXJyZW50KCksIHRoaXMsICZKU1J1bkxv
b3BUaW1lcjo6dGltZXJEaWRGaXJlKQogeworICAgIG1fdGltZXIuc3RhcnRPbmVTaG90KHNfZGVj
YWRlKTsKIH0KIAogSlNSdW5Mb29wVGltZXI6On5KU1J1bkxvb3BUaW1lcigpCiB7CiB9CiAKLXZv
aWQgSlNSdW5Mb29wVGltZXI6OnNjaGVkdWxlVGltZXIoZG91YmxlKQordm9pZCBKU1J1bkxvb3BU
aW1lcjo6c2NoZWR1bGVUaW1lcihkb3VibGUgaW50ZXJ2YWxJblNlY29uZHMpCiB7CisgICAgbV90
aW1lci5zdGFydE9uZVNob3QoaW50ZXJ2YWxJblNlY29uZHMpOworICAgIG1faXNTY2hlZHVsZWQg
PSB0cnVlOwogfQogCiB2b2lkIEpTUnVuTG9vcFRpbWVyOjpjYW5jZWxUaW1lcigpCiB7CisgICAg
bV90aW1lci5zdG9wKCk7CisgICAgbV90aW1lci5zdGFydE9uZVNob3Qoc19kZWNhZGUpOworICAg
IG1faXNTY2hlZHVsZWQgPSBmYWxzZTsKIH0KKwogI2VuZGlmCi0gICAgCisKIH0gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNSdW5M
b29wVGltZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUnVuTG9vcFRpbWVy
LmgKaW5kZXggM2IxOWE4ZjM3MDhkOGZhYWRjOGQ2Njg1Y2I5ZDFkOTJlZWE3M2Y2NS4uMDBmM2U2
YmJjY2VjNTg3ZmQ5OWU5OGVkMTYwNTNmZDY1Nzc1OTgwNiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNSdW5Mb29wVGltZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1J1bkxvb3BUaW1lci5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5j
bHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3RmL1Ro
cmVhZFNhZmVSZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCkBAIC03
OSw2ICs4MCw5IEBAIGNsYXNzIEpTUnVuTG9vcFRpbWVyIDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPEpTUnVuTG9vcFRpbWVyPiB7CiAjZWxpZiBVU0UoR0xJQikKICAgICBzdGF0aWMgY29u
c3QgbG9uZyBzX2RlY2FkZTsKICAgICBHUmVmUHRyPEdTb3VyY2U+IG1fdGltZXI7CisjZWxzZQor
ICAgIHN0YXRpYyBjb25zdCBTZWNvbmRzIHNfZGVjYWRlOworICAgIFJ1bkxvb3A6OlRpbWVyPEpT
UnVuTG9vcFRpbWVyPiBtX3RpbWVyOwogI2VuZGlmCiAgICAgCiBwcml2YXRlOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvUnVuTG9vcC5oIGIvU291cmNlL1dURi93dGYvUnVuTG9vcC5oCmlu
ZGV4IDNlYzRlYzIzOGIwYzEyOGE5OTU4ZmQ1NjY3ZmIxYzJmMzkzMjhiMjIuLjkyY2MxNTBmZGQy
OTk1MDQ5NTIyMjJkMDgyNjgzN2Y0YmJkYjIwMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L1J1bkxvb3AuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmgKQEAgLTEwMyw3ICsxMDMs
NyBAQCBjbGFzcyBSdW5Mb29wIDogcHVibGljIEZ1bmN0aW9uRGlzcGF0Y2hlciB7CiAgICAgcHJp
dmF0ZToKICAgICAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc3RhcnQoZG91YmxlIG5leHRG
aXJlSW50ZXJ2YWwsIGJvb2wgcmVwZWF0KTsKIAotICAgICAgICBSdW5Mb29wJiBtX3J1bkxvb3A7
CisgICAgICAgIFJlZjxSdW5Mb29wPiBtX3J1bkxvb3A7CiAKICNpZiBVU0UoV0lORE9XU19FVkVO
VF9MT09QKQogICAgICAgICBzdGF0aWMgdm9pZCB0aW1lckZpcmVkKFJ1bkxvb3AqLCB1aW50NjRf
dCBJRCk7CkBAIC0xMTgsNiArMTE4LDkgQEAgY2xhc3MgUnVuTG9vcCA6IHB1YmxpYyBGdW5jdGlv
bkRpc3BhdGNoZXIgewogICAgICAgICBib29sIG1faXNSZXBlYXRpbmcgeyBmYWxzZSB9OwogICAg
ICAgICBTZWNvbmRzIG1fZmlyZUludGVydmFsIHsgMCB9OwogI2VsaWYgVVNFKEdFTkVSSUNfRVZF
TlRfTE9PUCkKKyAgICAgICAgYm9vbCBpc0FjdGl2ZShjb25zdCBBYnN0cmFjdExvY2tlciYpIGNv
bnN0OworICAgICAgICB2b2lkIHN0b3AoY29uc3QgQWJzdHJhY3RMb2NrZXImKTsKKwogICAgICAg
ICBjbGFzcyBTY2hlZHVsZWRUYXNrOwogICAgICAgICBSZWZQdHI8U2NoZWR1bGVkVGFzaz4gbV9z
Y2hlZHVsZWRUYXNrOwogI2VuZGlmCkBAIC0xNTksNiArMTYyLDcgQEAgY2xhc3MgUnVuTG9vcCA6
IHB1YmxpYyBGdW5jdGlvbkRpc3BhdGNoZXIgewogICAgIEhXTkQgbV9ydW5Mb29wTWVzc2FnZVdp
bmRvdzsKIAogICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgVGltZXJCYXNlKj4gVGltZXJN
YXA7CisgICAgTG9jayBtX2FjdGl2ZVRpbWVyc0xvY2s7CiAgICAgVGltZXJNYXAgbV9hY3RpdmVU
aW1lcnM7CiAjZWxpZiBVU0UoQ09DT0FfRVZFTlRfTE9PUCkKICAgICBzdGF0aWMgdm9pZCBwZXJm
b3JtV29yayh2b2lkKik7CkBAIC0xNzIsNyArMTc2LDcgQEAgY2xhc3MgUnVuTG9vcCA6IHB1Ymxp
YyBGdW5jdGlvbkRpc3BhdGNoZXIgewogICAgIHZvaWQgc2NoZWR1bGUoUmVmPFRpbWVyQmFzZTo6
U2NoZWR1bGVkVGFzaz4mJik7CiAgICAgdm9pZCBzY2hlZHVsZShjb25zdCBBYnN0cmFjdExvY2tl
ciYsIFJlZjxUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s+JiYpOwogICAgIHZvaWQgd2FrZVVwKGNv
bnN0IEFic3RyYWN0TG9ja2VyJik7Ci0gICAgdm9pZCBzY2hlZHVsZUFuZFdha2VVcChSZWY8VGlt
ZXJCYXNlOjpTY2hlZHVsZWRUYXNrPiYmKTsKKyAgICB2b2lkIHNjaGVkdWxlQW5kV2FrZVVwKGNv
bnN0IEFic3RyYWN0TG9ja2VyJiwgUmVmPFRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzaz4mJik7CiAK
ICAgICBlbnVtIGNsYXNzIFJ1bk1vZGUgewogICAgICAgICBJdGVyYXRlLApAQCAtMTg0LDEyICsx
ODgsMTQgQEAgY2xhc3MgUnVuTG9vcCA6IHB1YmxpYyBGdW5jdGlvbkRpc3BhdGNoZXIgewogICAg
ICAgICBTdG9wcGluZywKICAgICB9OwogICAgIHZvaWQgcnVuSW1wbChSdW5Nb2RlKTsKLSAgICBi
b29sIHBvcHVsYXRlVGFza3MoUnVuTW9kZSwgU3RhdHVzJiwgRGVxdWU8UmVmPFRpbWVyQmFzZTo6
U2NoZWR1bGVkVGFzaz4+Jik7CisgICAgYm9vbCBwb3B1bGF0ZVRhc2tzKFJ1bk1vZGUsIFN0YXR1
cyYsIERlcXVlPFJlZlB0cjxUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s+PiYpOworCisgICAgZnJp
ZW5kIGNsYXNzIFRpbWVyQmFzZTsKIAogICAgIExvY2sgbV9sb29wTG9jazsKICAgICBDb25kaXRp
b24gbV9yZWFkeVRvUnVuOwogICAgIENvbmRpdGlvbiBtX3N0b3BDb25kaXRpb247Ci0gICAgVmVj
dG9yPFJlZjxUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s+PiBtX3NjaGVkdWxlczsKKyAgICBWZWN0
b3I8UmVmUHRyPFRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzaz4+IG1fc2NoZWR1bGVzOwogICAgIFZl
Y3RvcjxTdGF0dXMqPiBtX21haW5Mb29wczsKICAgICBib29sIG1fc2h1dGRvd24geyBmYWxzZSB9
OwogICAgIGJvb2wgbV9wZW5kaW5nVGFza3MgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvY2YvUnVuTG9vcENGLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2NmL1J1bkxvb3BDRi5j
cHAKaW5kZXggZDQ2ZGI2ZjRmODE0OTk1NTJjYTQxNWI1ZTAwYWJmNzAyYmE5MDI4OS4uNDFmOGY5
NTc1YzY4MzAyZjM4NjJkYzIyM2ZlNTQyN2E4YWUyNDQxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvY2YvUnVuTG9vcENGLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jZi9SdW5Mb29wQ0Yu
Y3BwCkBAIC0xMDIsNyArMTAyLDcgQEAgdm9pZCBSdW5Mb29wOjpUaW1lckJhc2U6OnN0YXJ0KGRv
dWJsZSBuZXh0RmlyZUludGVydmFsLCBib29sIHJlcGVhdCkKICAgICBDRlJ1bkxvb3BUaW1lckNv
bnRleHQgY29udGV4dCA9IHsgMCwgdGhpcywgMCwgMCwgMCB9OwogICAgIENGVGltZUludGVydmFs
IHJlcGVhdEludGVydmFsID0gcmVwZWF0ID8gbmV4dEZpcmVJbnRlcnZhbCA6IDA7CiAgICAgbV90
aW1lciA9IGFkb3B0Q0YoQ0ZSdW5Mb29wVGltZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
Q0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50KCkgKyBuZXh0RmlyZUludGVydmFsLCByZXBlYXRJbnRl
cnZhbCwgMCwgMCwgdGltZXJGaXJlZCwgJmNvbnRleHQpKTsKLSAgICBDRlJ1bkxvb3BBZGRUaW1l
cihtX3J1bkxvb3AubV9ydW5Mb29wLmdldCgpLCBtX3RpbWVyLmdldCgpLCBrQ0ZSdW5Mb29wQ29t
bW9uTW9kZXMpOworICAgIENGUnVuTG9vcEFkZFRpbWVyKG1fcnVuTG9vcC0+bV9ydW5Mb29wLmdl
dCgpLCBtX3RpbWVyLmdldCgpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwogfQogCiB2b2lkIFJ1
bkxvb3A6OlRpbWVyQmFzZTo6c3RvcCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9nZW5l
cmljL1J1bkxvb3BHZW5lcmljLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2dlbmVyaWMvUnVuTG9vcEdl
bmVyaWMuY3BwCmluZGV4IDAyNjllY2ZhNWY4MjU0MzAyYTQ3ZGUzZjc0MDQzZmVjN2U1ODc1MzMu
LjEzZTI3MTRjMjlkNDliZTU0Y2Q2YzhjMzQ2ZThjNzZjNzVlOTI0ZWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL2dlbmVyaWMvUnVuTG9vcEdlbmVyaWMuY3BwCisrKyBiL1NvdXJjZS9XVEYv
d3RmL2dlbmVyaWMvUnVuTG9vcEdlbmVyaWMuY3BwCkBAIC03Myw3ICs3Myw3IEBAIFdURl9NQUtF
X05PTkNPUFlBQkxFKFNjaGVkdWxlZFRhc2spOwogICAgIH0KIAogICAgIHN0cnVjdCBFYXJsaWVz
dFNjaGVkdWxlIHsKLSAgICAgICAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IFJlZjxTY2hlZHVsZWRU
YXNrPiYgbGhzLCBjb25zdCBSZWY8U2NoZWR1bGVkVGFzaz4mIHJocykKKyAgICAgICAgYm9vbCBv
cGVyYXRvcigpKGNvbnN0IFJlZlB0cjxTY2hlZHVsZWRUYXNrPiYgbGhzLCBjb25zdCBSZWZQdHI8
U2NoZWR1bGVkVGFzaz4mIHJocykKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGxocy0+
c2NoZWR1bGVkVGltZVBvaW50KCkgPiByaHMtPnNjaGVkdWxlZFRpbWVQb2ludCgpOwogICAgICAg
ICB9CkBAIC0xMTIsNyArMTEyLDcgQEAgUnVuTG9vcDo6flJ1bkxvb3AoKQogICAgICAgICBtX3N0
b3BDb25kaXRpb24ud2FpdChtX2xvb3BMb2NrKTsKIH0KIAotaW5saW5lIGJvb2wgUnVuTG9vcDo6
cG9wdWxhdGVUYXNrcyhSdW5Nb2RlIHJ1bk1vZGUsIFN0YXR1cyYgc3RhdHVzT2ZUaGlzTG9vcCwg
RGVxdWU8UmVmPFRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzaz4+JiBmaXJlZFRpbWVycykKK2lubGlu
ZSBib29sIFJ1bkxvb3A6OnBvcHVsYXRlVGFza3MoUnVuTW9kZSBydW5Nb2RlLCBTdGF0dXMmIHN0
YXR1c09mVGhpc0xvb3AsIERlcXVlPFJlZlB0cjxUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s+PiYg
ZmlyZWRUaW1lcnMpCiB7CiAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb29wTG9jayk7CiAKQEAg
LTEzOSw3ICsxMzksNyBAQCBpbmxpbmUgYm9vbCBSdW5Mb29wOjpwb3B1bGF0ZVRhc2tzKFJ1bk1v
ZGUgcnVuTW9kZSwgU3RhdHVzJiBzdGF0dXNPZlRoaXNMb29wLCBEZQogICAgIC8vIENoZWNrIGV4
cGlyZWQgdGltZXJzLgogICAgIE1vbm90b25pY1RpbWUgbm93ID0gTW9ub3RvbmljVGltZTo6bm93
KCk7CiAgICAgd2hpbGUgKCFtX3NjaGVkdWxlcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgUmVmPFRp
bWVyQmFzZTo6U2NoZWR1bGVkVGFzaz4gZWFybGllc3QgPSBtX3NjaGVkdWxlcy5maXJzdCgpLmNv
cHlSZWYoKTsKKyAgICAgICAgUmVmUHRyPFRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzaz4gZWFybGll
c3QgPSBtX3NjaGVkdWxlcy5maXJzdCgpOwogICAgICAgICBpZiAoZWFybGllc3QtPnNjaGVkdWxl
ZFRpbWVQb2ludCgpID4gbm93KQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIHN0ZDo6cG9w
X2hlYXAobV9zY2hlZHVsZXMuYmVnaW4oKSwgbV9zY2hlZHVsZXMuZW5kKCksIFRpbWVyQmFzZTo6
U2NoZWR1bGVkVGFzazo6RWFybGllc3RTY2hlZHVsZSgpKTsKQEAgLTE2MCwxOSArMTYwLDE5IEBA
IHZvaWQgUnVuTG9vcDo6cnVuSW1wbChSdW5Nb2RlIHJ1bk1vZGUpCiAgICAgICAgIG1fbWFpbkxv
b3BzLmFwcGVuZCgmc3RhdHVzT2ZUaGlzTG9vcCk7CiAgICAgfQogCi0gICAgRGVxdWU8UmVmPFRp
bWVyQmFzZTo6U2NoZWR1bGVkVGFzaz4+IGZpcmVkVGltZXJzOworICAgIERlcXVlPFJlZlB0cjxU
aW1lckJhc2U6OlNjaGVkdWxlZFRhc2s+PiBmaXJlZFRpbWVyczsKICAgICB3aGlsZSAodHJ1ZSkg
ewogICAgICAgICBpZiAoIXBvcHVsYXRlVGFza3MocnVuTW9kZSwgc3RhdHVzT2ZUaGlzTG9vcCwg
ZmlyZWRUaW1lcnMpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIC8vIERpc3BhdGNo
IHNjaGVkdWxlZCB0aW1lcnMuCiAgICAgICAgIHdoaWxlICghZmlyZWRUaW1lcnMuaXNFbXB0eSgp
KSB7Ci0gICAgICAgICAgICBSZWY8VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrPiB0YXNrID0gZmly
ZWRUaW1lcnMudGFrZUZpcnN0KCk7CisgICAgICAgICAgICBSZWZQdHI8VGltZXJCYXNlOjpTY2hl
ZHVsZWRUYXNrPiB0YXNrID0gZmlyZWRUaW1lcnMudGFrZUZpcnN0KCk7CiAgICAgICAgICAgICBp
ZiAodGFzay0+ZmlyZWQoKSkgewogICAgICAgICAgICAgICAgIC8vIFJlc2NoZWR1bGUgYmVjYXVz
ZSB0aGUgdGltZXIgcmVxdWlyZXMgcmVwZWF0aW5nLgogICAgICAgICAgICAgICAgIC8vIFNpbmNl
IHdlIHdpbGwgcXVlcnkgdGhlIHRpbWVycycgdGltZSBwb2ludHMgYmVmb3JlIHNsZWVwaW5nLAog
ICAgICAgICAgICAgICAgIC8vIHdlIGRvIG5vdCBjYWxsIHdha2VVcCgpIGhlcmUuCi0gICAgICAg
ICAgICAgICAgc2NoZWR1bGUoV1RGTW92ZSh0YXNrKSk7CisgICAgICAgICAgICAgICAgc2NoZWR1
bGUoKnRhc2spOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIHBlcmZvcm1Xb3Jr
KCk7CkBAIC0yMjAsNyArMjIwLDcgQEAgdm9pZCBSdW5Mb29wOjp3YWtlVXAoKQogCiB2b2lkIFJ1
bkxvb3A6OnNjaGVkdWxlKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgUmVmPFRpbWVyQmFzZTo6U2No
ZWR1bGVkVGFzaz4mJiB0YXNrKQogewotICAgIG1fc2NoZWR1bGVzLmFwcGVuZChXVEZNb3ZlKHRh
c2spKTsKKyAgICBtX3NjaGVkdWxlcy5hcHBlbmQodGFzay5wdHIoKSk7CiAgICAgc3RkOjpwdXNo
X2hlYXAobV9zY2hlZHVsZXMuYmVnaW4oKSwgbV9zY2hlZHVsZXMuZW5kKCksIFRpbWVyQmFzZTo6
U2NoZWR1bGVkVGFzazo6RWFybGllc3RTY2hlZHVsZSgpKTsKIH0KIApAQCAtMjMwLDkgKzIzMCw4
IEBAIHZvaWQgUnVuTG9vcDo6c2NoZWR1bGUoUmVmPFRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzaz4m
JiB0YXNrKQogICAgIHNjaGVkdWxlKGxvY2tlciwgV1RGTW92ZSh0YXNrKSk7CiB9CiAKLXZvaWQg
UnVuTG9vcDo6c2NoZWR1bGVBbmRXYWtlVXAoUmVmPFRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzaz4m
JiB0YXNrKQordm9pZCBSdW5Mb29wOjpzY2hlZHVsZUFuZFdha2VVcChjb25zdCBBYnN0cmFjdExv
Y2tlciYgbG9ja2VyLCBSZWY8VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrPiYmIHRhc2spCiB7Ci0g
ICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb29wTG9jayk7CiAgICAgc2NoZWR1bGUobG9ja2VyLCBX
VEZNb3ZlKHRhc2spKTsKICAgICB3YWtlVXAobG9ja2VyKTsKIH0KQEAgLTI0NywxMSArMjQ2LDYg
QEAgdm9pZCBSdW5Mb29wOjpkaXNwYXRjaEFmdGVyKFNlY29uZHMgZGVsYXksIEZ1bmN0aW9uPHZv
aWQoKT4mJiBmdW5jdGlvbikKIAogLy8gU2luY2UgUnVuTG9vcCBkb2VzIG5vdCBvd24gdGhlIHJl
Z2lzdGVyZWQgVGltZXJCYXNlLAogLy8gVGltZXJCYXNlIGFuZCBpdHMgb3duZXIgc2hvdWxkIG1h
bmFnZSB0aGVzZSBsaWZldGltZS4KLS8vCi0vLyBBbmQgbW9yZSBpbXBvcnRhbnRseSwgVGltZXJC
YXNlIG9wZXJhdGlvbnMgYXJlIG5vdCB0aHJlYWQtc2FmZS4KLS8vIFNvIHRocmVhZHMgdGhhdCBk
byBub3QgYmVsb25nIHRvIHRoZSBTY2hlZHVsZWRUYXNrJ3MgUnVuTG9vcAotLy8gc2hvdWxkIG5v
dCBvcGVyYXRlIHRoZSBSdW5Mb29wOjpUaW1lckJhc2UuCi0vLyBUaGlzIGlzIHRoZSBzYW1lIHRv
IHRoZSBSdW5Mb29wV2luLCB3aGljaCBpcyBSdW5Mb29wIGZvciBXaW5kb3dzLgogUnVuTG9vcDo6
VGltZXJCYXNlOjpUaW1lckJhc2UoUnVuTG9vcCYgcnVuTG9vcCkKICAgICA6IG1fcnVuTG9vcChy
dW5Mb29wKQogICAgICwgbV9zY2hlZHVsZWRUYXNrKG51bGxwdHIpCkBAIC0yNjAsMTkgKzI1NCwy
MSBAQCBSdW5Mb29wOjpUaW1lckJhc2U6OlRpbWVyQmFzZShSdW5Mb29wJiBydW5Mb29wKQogCiBS
dW5Mb29wOjpUaW1lckJhc2U6On5UaW1lckJhc2UoKQogewotICAgIHN0b3AoKTsKKyAgICBMb2Nr
SG9sZGVyIGxvY2tlcihtX3J1bkxvb3AtPm1fbG9vcExvY2spOworICAgIHN0b3AobG9ja2VyKTsK
IH0KIAogdm9pZCBSdW5Mb29wOjpUaW1lckJhc2U6OnN0YXJ0KGRvdWJsZSBpbnRlcnZhbCwgYm9v
bCByZXBlYXRpbmcpCiB7Ci0gICAgc3RvcCgpOworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fcnVu
TG9vcC0+bV9sb29wTG9jayk7CisgICAgc3RvcChsb2NrZXIpOwogICAgIG1fc2NoZWR1bGVkVGFz
ayA9IFNjaGVkdWxlZFRhc2s6OmNyZWF0ZShbdGhpc10gewogICAgICAgICBmaXJlZCgpOwogICAg
IH0sIFNlY29uZHMoaW50ZXJ2YWwpLCByZXBlYXRpbmcpOwotICAgIG1fcnVuTG9vcC5zY2hlZHVs
ZUFuZFdha2VVcCgqbV9zY2hlZHVsZWRUYXNrKTsKKyAgICBtX3J1bkxvb3AtPnNjaGVkdWxlQW5k
V2FrZVVwKGxvY2tlciwgKm1fc2NoZWR1bGVkVGFzayk7CiB9CiAKLXZvaWQgUnVuTG9vcDo6VGlt
ZXJCYXNlOjpzdG9wKCkKK3ZvaWQgUnVuTG9vcDo6VGltZXJCYXNlOjpzdG9wKGNvbnN0IEFic3Ry
YWN0TG9ja2VyJikKIHsKICAgICBpZiAobV9zY2hlZHVsZWRUYXNrKSB7CiAgICAgICAgIG1fc2No
ZWR1bGVkVGFzay0+ZGVhY3RpdmF0ZSgpOwpAQCAtMjgwLDggKzI3NiwyMCBAQCB2b2lkIFJ1bkxv
b3A6OlRpbWVyQmFzZTo6c3RvcCgpCiAgICAgfQogfQogCit2b2lkIFJ1bkxvb3A6OlRpbWVyQmFz
ZTo6c3RvcCgpCit7CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9ydW5Mb29wLT5tX2xvb3BMb2Nr
KTsKKyAgICBzdG9wKGxvY2tlcik7Cit9CisKIGJvb2wgUnVuTG9vcDo6VGltZXJCYXNlOjppc0Fj
dGl2ZSgpIGNvbnN0CiB7CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9ydW5Mb29wLT5tX2xvb3BM
b2NrKTsKKyAgICByZXR1cm4gaXNBY3RpdmUobG9ja2VyKTsKK30KKworYm9vbCBSdW5Mb29wOjpU
aW1lckJhc2U6OmlzQWN0aXZlKGNvbnN0IEFic3RyYWN0TG9ja2VyJikgY29uc3QKK3sKICAgICBy
ZXR1cm4gbV9zY2hlZHVsZWRUYXNrOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9n
bGliL1J1bkxvb3BHTGliLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvUnVuTG9vcEdMaWIuY3Bw
CmluZGV4IDY1OTdmZjAyN2FhNWY5NDgwOWNiNjNiYTQ0MGUzNWZjOGZjZTI2ZTMuLmEzYjkzYzRh
MjZiOGE2NGFjZjRiNmY2OTUwYTYzNWM3ZDBiMDVjZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL2dsaWIvUnVuTG9vcEdMaWIuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvUnVuTG9v
cEdMaWIuY3BwCkBAIC0xNjgsNyArMTY4LDcgQEAgUnVuTG9vcDo6VGltZXJCYXNlOjpUaW1lckJh
c2UoUnVuTG9vcCYgcnVuTG9vcCkKICAgICAgICAgICAgIHRpbWVyLT51cGRhdGVSZWFkeVRpbWUo
KTsKICAgICAgICAgcmV0dXJuIEdfU09VUkNFX0NPTlRJTlVFOwogICAgIH0sIHRoaXMsIG51bGxw
dHIpOwotICAgIGdfc291cmNlX2F0dGFjaChtX3NvdXJjZS5nZXQoKSwgbV9ydW5Mb29wLm1fbWFp
bkNvbnRleHQuZ2V0KCkpOworICAgIGdfc291cmNlX2F0dGFjaChtX3NvdXJjZS5nZXQoKSwgbV9y
dW5Mb29wLT5tX21haW5Db250ZXh0LmdldCgpKTsKIH0KIAogUnVuTG9vcDo6VGltZXJCYXNlOjp+
VGltZXJCYXNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9SdW5Mb29wV2luLmNw
cCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9SdW5Mb29wV2luLmNwcAppbmRleCA0YjQ1YWQ0NTg5Zjc4
ZDVjM2NhMGJlZWY4Y2UxZjE0OGJlZWMwMDE3Li44NzQ2YjFlZWEwMzgxNDVkZmU4NDg4OTllNTQ1
MzZhMzdjOGRlYjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4vUnVuTG9vcFdpbi5j
cHAKKysrIGIvU291cmNlL1dURi93dGYvd2luL1J1bkxvb3BXaW4uY3BwCkBAIC0xMTcsMTcgKzEx
NywyMSBAQCB2b2lkIFJ1bkxvb3A6Ondha2VVcCgpCiAKIHZvaWQgUnVuTG9vcDo6VGltZXJCYXNl
Ojp0aW1lckZpcmVkKFJ1bkxvb3AqIHJ1bkxvb3AsIHVpbnQ2NF90IElEKQogewotICAgIFRpbWVy
TWFwOjppdGVyYXRvciBpdCA9IHJ1bkxvb3AtPm1fYWN0aXZlVGltZXJzLmZpbmQoSUQpOwotICAg
IGlmIChpdCA9PSBydW5Mb29wLT5tX2FjdGl2ZVRpbWVycy5lbmQoKSkgewotICAgICAgICAvLyBU
aGUgdGltZXIgbXVzdCBoYXZlIGJlZW4gc3RvcHBlZCBhZnRlciB0aGUgV01fVElNRVIgbWVzc2Fn
ZSB3YXMgcG9zdGVkIHRvIHRoZSBtZXNzYWdlIHF1ZXVlLgotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgVGltZXJCYXNlKiB0aW1lciA9IGl0LT52YWx1ZTsKLQotICAgIGlmICghdGltZXIt
Pm1faXNSZXBlYXRpbmcpIHsKLSAgICAgICAgcnVuTG9vcC0+bV9hY3RpdmVUaW1lcnMucmVtb3Zl
KGl0KTsKLSAgICAgICAgOjpLaWxsVGltZXIocnVuTG9vcC0+bV9ydW5Mb29wTWVzc2FnZVdpbmRv
dywgSUQpOworICAgIFRpbWVyQmFzZSogdGltZXIgPSBudWxscHRyOworICAgIHsKKyAgICAgICAg
TG9ja0hvbGRlciBsb2NrZXIocnVuTG9vcC0+bV9hY3RpdmVUaW1lcnNMb2NrKTsKKyAgICAgICAg
VGltZXJNYXA6Oml0ZXJhdG9yIGl0ID0gcnVuTG9vcC0+bV9hY3RpdmVUaW1lcnMuZmluZChJRCk7
CisgICAgICAgIGlmIChpdCA9PSBydW5Mb29wLT5tX2FjdGl2ZVRpbWVycy5lbmQoKSkgeworICAg
ICAgICAgICAgLy8gVGhlIHRpbWVyIG11c3QgaGF2ZSBiZWVuIHN0b3BwZWQgYWZ0ZXIgdGhlIFdN
X1RJTUVSIG1lc3NhZ2Ugd2FzIHBvc3RlZCB0byB0aGUgbWVzc2FnZSBxdWV1ZS4KKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHRpbWVyID0gaXQtPnZhbHVlOworCisg
ICAgICAgIGlmICghdGltZXItPm1faXNSZXBlYXRpbmcpIHsKKyAgICAgICAgICAgIHJ1bkxvb3At
Pm1fYWN0aXZlVGltZXJzLnJlbW92ZShpdCk7CisgICAgICAgICAgICA6OktpbGxUaW1lcihydW5M
b29wLT5tX3J1bkxvb3BNZXNzYWdlV2luZG93LCBJRCk7CisgICAgICAgIH0KICAgICB9CiAKICAg
ICB0aW1lci0+ZmlyZWQoKTsKQEAgLTE1MywyNCArMTU3LDI3IEBAIFJ1bkxvb3A6OlRpbWVyQmFz
ZTo6flRpbWVyQmFzZSgpCiAKIHZvaWQgUnVuTG9vcDo6VGltZXJCYXNlOjpzdGFydChkb3VibGUg
bmV4dEZpcmVJbnRlcnZhbCwgYm9vbCByZXBlYXQpCiB7CisgICAgTG9ja0hvbGRlciBsb2NrZXIo
bV9ydW5Mb29wLT5tX2FjdGl2ZVRpbWVyc0xvY2spOwogICAgIG1faXNSZXBlYXRpbmcgPSByZXBl
YXQ7Ci0gICAgbV9ydW5Mb29wLm1fYWN0aXZlVGltZXJzLnNldChtX0lELCB0aGlzKTsKLSAgICA6
OlNldFRpbWVyKG1fcnVuTG9vcC5tX3J1bkxvb3BNZXNzYWdlV2luZG93LCBtX0lELCBuZXh0Rmly
ZUludGVydmFsICogMTAwMCwgMCk7CisgICAgbV9ydW5Mb29wLT5tX2FjdGl2ZVRpbWVycy5zZXQo
bV9JRCwgdGhpcyk7CisgICAgOjpTZXRUaW1lcihtX3J1bkxvb3AtPm1fcnVuTG9vcE1lc3NhZ2VX
aW5kb3csIG1fSUQsIG5leHRGaXJlSW50ZXJ2YWwgKiAxMDAwLCAwKTsKIH0KIAogdm9pZCBSdW5M
b29wOjpUaW1lckJhc2U6OnN0b3AoKQogewotICAgIFRpbWVyTWFwOjppdGVyYXRvciBpdCA9IG1f
cnVuTG9vcC5tX2FjdGl2ZVRpbWVycy5maW5kKG1fSUQpOwotICAgIGlmIChpdCA9PSBtX3J1bkxv
b3AubV9hY3RpdmVUaW1lcnMuZW5kKCkpCisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9ydW5Mb29w
LT5tX2FjdGl2ZVRpbWVyc0xvY2spOworICAgIFRpbWVyTWFwOjppdGVyYXRvciBpdCA9IG1fcnVu
TG9vcC0+bV9hY3RpdmVUaW1lcnMuZmluZChtX0lEKTsKKyAgICBpZiAoaXQgPT0gbV9ydW5Mb29w
LT5tX2FjdGl2ZVRpbWVycy5lbmQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9ydW5Mb29w
Lm1fYWN0aXZlVGltZXJzLnJlbW92ZShpdCk7Ci0gICAgOjpLaWxsVGltZXIobV9ydW5Mb29wLm1f
cnVuTG9vcE1lc3NhZ2VXaW5kb3csIG1fSUQpOworICAgIG1fcnVuTG9vcC0+bV9hY3RpdmVUaW1l
cnMucmVtb3ZlKGl0KTsKKyAgICA6OktpbGxUaW1lcihtX3J1bkxvb3AtPm1fcnVuTG9vcE1lc3Nh
Z2VXaW5kb3csIG1fSUQpOwogfQogCiBib29sIFJ1bkxvb3A6OlRpbWVyQmFzZTo6aXNBY3RpdmUo
KSBjb25zdAogewotICAgIHJldHVybiBtX3J1bkxvb3AubV9hY3RpdmVUaW1lcnMuY29udGFpbnMo
bV9JRCk7CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9ydW5Mb29wLT5tX2FjdGl2ZVRpbWVyc0xv
Y2spOworICAgIHJldHVybiBtX3J1bkxvb3AtPm1fYWN0aXZlVGltZXJzLmNvbnRhaW5zKG1fSUQp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXVEYK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>306667</attachid>
            <date>2017-04-10 00:50:47 -0700</date>
            <delta_ts>2017-04-11 02:15:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-170655-20170410165046.patch</filename>
            <type>text/plain</type>
            <size>15695</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1MTcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
NWM4OGQwNWZmMzk5NTczZDI0NmE5ODhlMWNjNjY5NGVkYTYxNWU2Li5lODQ1NzFiODQ3MGI2YjAy
MjdmZjQ1NjY4YTVhYjVkYjQ3Y2ZlZGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAxNy0wNC0xMCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXSBFbmFibGUgSlNSdW5Mb29wVGltZXIgZm9yIEpTQ09ubHkg
YW5kIFdpbmRvd3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3MDY1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogcnVudGltZS9KU1J1bkxvb3BUaW1lci5jcHA6CisgICAgICAgIChKU0M6OkpTUnVuTG9v
cFRpbWVyOjpKU1J1bkxvb3BUaW1lcik6CisgICAgICAgIChKU0M6OkpTUnVuTG9vcFRpbWVyOjpz
Y2hlZHVsZVRpbWVyKToKKyAgICAgICAgKEpTQzo6SlNSdW5Mb29wVGltZXI6OmNhbmNlbFRpbWVy
KToKKyAgICAgICAgKiBydW50aW1lL0pTUnVuTG9vcFRpbWVyLmg6CisKIDIwMTctMDQtMDggIE9s
aXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgdXNlIG9mIHN0
cmNweSBmcm9tIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V1RGL0NoYW5nZUxvZwppbmRleCBlMWRhN2ZkYWFmYmVjYTkwM2JjYzBkYjc3YmE1ZWFjM2YxOTVi
NjUwLi44MzM3NDFkYWYyYWY4NWI2OGRhZDhlODA5YmRkNGIzMDNhZmNlYzNiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDM1IEBACisyMDE3LTA0LTEwICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwu
Y29tPgorCisgICAgICAgIFtKU0NdIEVuYWJsZSBKU1J1bkxvb3BUaW1lciBmb3IgSlNDT25seSBh
bmQgV2luZG93cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTcwNjU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhpcyBwYXRjaCBtYWtlcyBSdW5Mb29wOjpUaW1lciBpbiBHZW5lcmljIGFuZCBXaW5kb3dz
IHRocmVhZC1zYWZlIHRvIHVzZSBpdAorICAgICAgICBpbiBKU0MncyBKU1J1bkxvb3BUaW1lci4g
RXZlbnR1YWxseSwgd2Ugd291bGQgbGlrZSB0byByZXBsYWNlIEpTUnVuTG9vcFRpbWVyJ3MKKyAg
ICAgICAgcGxhdGZvcm0tZGVwZW5kZW50IGltcGxlbWVudGF0aW9uIHRvIFdURjo6UnVuTG9vcDo6
VGltZXIuCisKKyAgICAgICAgKiB3dGYvUnVuTG9vcC5oOgorICAgICAgICAqIHd0Zi9jZi9SdW5M
b29wQ0YuY3BwOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OnN0YXJ0KToKKyAg
ICAgICAgKiB3dGYvZ2VuZXJpYy9SdW5Mb29wR2VuZXJpYy5jcHA6CisgICAgICAgIChXVEY6OlJ1
bkxvb3A6OlRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzazo6RWFybGllc3RTY2hlZHVsZTo6b3BlcmF0
b3IoKSk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OnBvcHVsYXRlVGFza3MpOgorICAgICAgICAo
V1RGOjpSdW5Mb29wOjpydW5JbXBsKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6c2NoZWR1bGUp
OgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpzY2hlZHVsZUFuZFdha2VVcCk6CisgICAgICAgIChX
VEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6flRpbWVyQmFzZSk6CisgICAgICAgIChXVEY6OlJ1bkxv
b3A6OlRpbWVyQmFzZTo6c3RhcnQpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6
OnN0b3ApOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OmlzQWN0aXZlKToKKyAg
ICAgICAgKiB3dGYvZ2xpYi9SdW5Mb29wR0xpYi5jcHA6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6
OlRpbWVyQmFzZTo6VGltZXJCYXNlKToKKyAgICAgICAgKiB3dGYvd2luL1J1bkxvb3BXaW4uY3Bw
OgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OnRpbWVyRmlyZWQpOgorICAgICAg
ICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OnN0YXJ0KToKKyAgICAgICAgKFdURjo6UnVuTG9v
cDo6VGltZXJCYXNlOjpzdG9wKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjpp
c0FjdGl2ZSk6CisKIDIwMTctMDQtMDkgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CiAKICAgICAgICAgW1dURl0gQW5ub3RhdGUgU2Vjb25kcycgbWVtYmVyIGZ1bmN0aW9u
cyBhbmQgb3BlcmF0b3JzIHdpdGggY29uc3RleHByCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1J1bkxvb3BUaW1lci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1J1bkxvb3BUaW1lci5jcHAKaW5kZXggZDg2YjNjZWM2MjE0ZTk4M2UyNmJj
MGVhNDM2OWY3MDNiNDhkM2M3OC4uZmQ3OWQ1OTgwNGE3ZjQ4MmVkZjk0Nzg3ZWVkZGE3NDhiZGZk
MmY5MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNSdW5Mb29w
VGltZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUnVuTG9vcFRp
bWVyLmNwcApAQCAtMTYxLDIzICsxNjEsMzUgQEAgdm9pZCBKU1J1bkxvb3BUaW1lcjo6Y2FuY2Vs
VGltZXIoKQogICAgIGdfc291cmNlX3NldF9yZWFkeV90aW1lKG1fdGltZXIuZ2V0KCksIGdfZ2V0
X21vbm90b25pY190aW1lKCkgKyBzX2RlY2FkZSAqIEdfVVNFQ19QRVJfU0VDKTsKICAgICBtX2lz
U2NoZWR1bGVkID0gZmFsc2U7CiB9CisKICNlbHNlCisKK2NvbnN0IFNlY29uZHMgSlNSdW5Mb29w
VGltZXI6OnNfZGVjYWRlIHsgNjAgKiA2MCAqIDI0ICogMzY1ICogMTAgfTsKKwogSlNSdW5Mb29w
VGltZXI6OkpTUnVuTG9vcFRpbWVyKFZNKiB2bSkKICAgICA6IG1fdm0odm0pCisgICAgLCBtX2Fw
aUxvY2soJnZtLT5hcGlMb2NrKCkpCisgICAgLCBtX3RpbWVyKFJ1bkxvb3A6OmN1cnJlbnQoKSwg
dGhpcywgJkpTUnVuTG9vcFRpbWVyOjp0aW1lckRpZEZpcmUpCiB7CisgICAgbV90aW1lci5zdGFy
dE9uZVNob3Qoc19kZWNhZGUpOwogfQogCiBKU1J1bkxvb3BUaW1lcjo6fkpTUnVuTG9vcFRpbWVy
KCkKIHsKIH0KIAotdm9pZCBKU1J1bkxvb3BUaW1lcjo6c2NoZWR1bGVUaW1lcihkb3VibGUpCit2
b2lkIEpTUnVuTG9vcFRpbWVyOjpzY2hlZHVsZVRpbWVyKGRvdWJsZSBpbnRlcnZhbEluU2Vjb25k
cykKIHsKKyAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdChpbnRlcnZhbEluU2Vjb25kcyk7CisgICAg
bV9pc1NjaGVkdWxlZCA9IHRydWU7CiB9CiAKIHZvaWQgSlNSdW5Mb29wVGltZXI6OmNhbmNlbFRp
bWVyKCkKIHsKKyAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdChzX2RlY2FkZSk7CisgICAgbV9pc1Nj
aGVkdWxlZCA9IGZhbHNlOwogfQorCiAjZW5kaWYKLSAgICAKKwogfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1J1bkxvb3BUaW1l
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNSdW5Mb29wVGltZXIuaAppbmRl
eCAzYjE5YThmMzcwOGQ4ZmFhZGM4ZDY2ODVjYjlkMWQ5MmVlYTczZjY1Li4wMGYzZTZiYmNjZWM1
ODdmZDk5ZTk4ZWQxNjA1M2ZkNjU3NzU5ODA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1J1bkxvb3BUaW1lci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTUnVuTG9vcFRpbWVyLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlIDx3
dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAKQEAgLTc5LDYgKzgw
LDkgQEAgY2xhc3MgSlNSdW5Mb29wVGltZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
SlNSdW5Mb29wVGltZXI+IHsKICNlbGlmIFVTRShHTElCKQogICAgIHN0YXRpYyBjb25zdCBsb25n
IHNfZGVjYWRlOwogICAgIEdSZWZQdHI8R1NvdXJjZT4gbV90aW1lcjsKKyNlbHNlCisgICAgc3Rh
dGljIGNvbnN0IFNlY29uZHMgc19kZWNhZGU7CisgICAgUnVuTG9vcDo6VGltZXI8SlNSdW5Mb29w
VGltZXI+IG1fdGltZXI7CiAjZW5kaWYKICAgICAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9SdW5Mb29wLmggYi9Tb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmgKaW5kZXggM2Vj
NGVjMjM4YjBjMTI4YTk5NThmZDU2NjdmYjFjMmYzOTMyOGIyMi4uOTJjYzE1MGZkZDI5OTUwNDk1
MjIyMmQwODI2ODM3ZjRiYmRiMjAzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUnVuTG9v
cC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1J1bkxvb3AuaApAQCAtMTAzLDcgKzEwMyw3IEBAIGNs
YXNzIFJ1bkxvb3AgOiBwdWJsaWMgRnVuY3Rpb25EaXNwYXRjaGVyIHsKICAgICBwcml2YXRlOgog
ICAgICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBzdGFydChkb3VibGUgbmV4dEZpcmVJbnRl
cnZhbCwgYm9vbCByZXBlYXQpOwogCi0gICAgICAgIFJ1bkxvb3AmIG1fcnVuTG9vcDsKKyAgICAg
ICAgUmVmPFJ1bkxvb3A+IG1fcnVuTG9vcDsKIAogI2lmIFVTRShXSU5ET1dTX0VWRU5UX0xPT1Ap
CiAgICAgICAgIHN0YXRpYyB2b2lkIHRpbWVyRmlyZWQoUnVuTG9vcCosIHVpbnQ2NF90IElEKTsK
QEAgLTExOCw2ICsxMTgsOSBAQCBjbGFzcyBSdW5Mb29wIDogcHVibGljIEZ1bmN0aW9uRGlzcGF0
Y2hlciB7CiAgICAgICAgIGJvb2wgbV9pc1JlcGVhdGluZyB7IGZhbHNlIH07CiAgICAgICAgIFNl
Y29uZHMgbV9maXJlSW50ZXJ2YWwgeyAwIH07CiAjZWxpZiBVU0UoR0VORVJJQ19FVkVOVF9MT09Q
KQorICAgICAgICBib29sIGlzQWN0aXZlKGNvbnN0IEFic3RyYWN0TG9ja2VyJikgY29uc3Q7Cisg
ICAgICAgIHZvaWQgc3RvcChjb25zdCBBYnN0cmFjdExvY2tlciYpOworCiAgICAgICAgIGNsYXNz
IFNjaGVkdWxlZFRhc2s7CiAgICAgICAgIFJlZlB0cjxTY2hlZHVsZWRUYXNrPiBtX3NjaGVkdWxl
ZFRhc2s7CiAjZW5kaWYKQEAgLTE1OSw2ICsxNjIsNyBAQCBjbGFzcyBSdW5Mb29wIDogcHVibGlj
IEZ1bmN0aW9uRGlzcGF0Y2hlciB7CiAgICAgSFdORCBtX3J1bkxvb3BNZXNzYWdlV2luZG93Owog
CiAgICAgdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBUaW1lckJhc2UqPiBUaW1lck1hcDsKKyAg
ICBMb2NrIG1fYWN0aXZlVGltZXJzTG9jazsKICAgICBUaW1lck1hcCBtX2FjdGl2ZVRpbWVyczsK
ICNlbGlmIFVTRShDT0NPQV9FVkVOVF9MT09QKQogICAgIHN0YXRpYyB2b2lkIHBlcmZvcm1Xb3Jr
KHZvaWQqKTsKQEAgLTE3Miw3ICsxNzYsNyBAQCBjbGFzcyBSdW5Mb29wIDogcHVibGljIEZ1bmN0
aW9uRGlzcGF0Y2hlciB7CiAgICAgdm9pZCBzY2hlZHVsZShSZWY8VGltZXJCYXNlOjpTY2hlZHVs
ZWRUYXNrPiYmKTsKICAgICB2b2lkIHNjaGVkdWxlKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgUmVm
PFRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzaz4mJik7CiAgICAgdm9pZCB3YWtlVXAoY29uc3QgQWJz
dHJhY3RMb2NrZXImKTsKLSAgICB2b2lkIHNjaGVkdWxlQW5kV2FrZVVwKFJlZjxUaW1lckJhc2U6
OlNjaGVkdWxlZFRhc2s+JiYpOworICAgIHZvaWQgc2NoZWR1bGVBbmRXYWtlVXAoY29uc3QgQWJz
dHJhY3RMb2NrZXImLCBSZWY8VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrPiYmKTsKIAogICAgIGVu
dW0gY2xhc3MgUnVuTW9kZSB7CiAgICAgICAgIEl0ZXJhdGUsCkBAIC0xODQsMTIgKzE4OCwxNCBA
QCBjbGFzcyBSdW5Mb29wIDogcHVibGljIEZ1bmN0aW9uRGlzcGF0Y2hlciB7CiAgICAgICAgIFN0
b3BwaW5nLAogICAgIH07CiAgICAgdm9pZCBydW5JbXBsKFJ1bk1vZGUpOwotICAgIGJvb2wgcG9w
dWxhdGVUYXNrcyhSdW5Nb2RlLCBTdGF0dXMmLCBEZXF1ZTxSZWY8VGltZXJCYXNlOjpTY2hlZHVs
ZWRUYXNrPj4mKTsKKyAgICBib29sIHBvcHVsYXRlVGFza3MoUnVuTW9kZSwgU3RhdHVzJiwgRGVx
dWU8UmVmUHRyPFRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzaz4+Jik7CisKKyAgICBmcmllbmQgY2xh
c3MgVGltZXJCYXNlOwogCiAgICAgTG9jayBtX2xvb3BMb2NrOwogICAgIENvbmRpdGlvbiBtX3Jl
YWR5VG9SdW47CiAgICAgQ29uZGl0aW9uIG1fc3RvcENvbmRpdGlvbjsKLSAgICBWZWN0b3I8UmVm
PFRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzaz4+IG1fc2NoZWR1bGVzOworICAgIFZlY3RvcjxSZWZQ
dHI8VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrPj4gbV9zY2hlZHVsZXM7CiAgICAgVmVjdG9yPFN0
YXR1cyo+IG1fbWFpbkxvb3BzOwogICAgIGJvb2wgbV9zaHV0ZG93biB7IGZhbHNlIH07CiAgICAg
Ym9vbCBtX3BlbmRpbmdUYXNrcyB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9jZi9SdW5Mb29wQ0YuY3BwIGIvU291cmNlL1dURi93dGYvY2YvUnVuTG9vcENGLmNwcAppbmRl
eCBkNDZkYjZmNGY4MTQ5OTU1MmNhNDE1YjVlMDBhYmY3MDJiYTkwMjg5Li40MWY4Zjk1NzVjNjgz
MDJmMzg2MmRjMjIzZmU1NDI3YThhZTI0NDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9j
Zi9SdW5Mb29wQ0YuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL2NmL1J1bkxvb3BDRi5jcHAKQEAg
LTEwMiw3ICsxMDIsNyBAQCB2b2lkIFJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RhcnQoZG91YmxlIG5l
eHRGaXJlSW50ZXJ2YWwsIGJvb2wgcmVwZWF0KQogICAgIENGUnVuTG9vcFRpbWVyQ29udGV4dCBj
b250ZXh0ID0geyAwLCB0aGlzLCAwLCAwLCAwIH07CiAgICAgQ0ZUaW1lSW50ZXJ2YWwgcmVwZWF0
SW50ZXJ2YWwgPSByZXBlYXQgPyBuZXh0RmlyZUludGVydmFsIDogMDsKICAgICBtX3RpbWVyID0g
YWRvcHRDRihDRlJ1bkxvb3BUaW1lckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBDRkFic29s
dXRlVGltZUdldEN1cnJlbnQoKSArIG5leHRGaXJlSW50ZXJ2YWwsIHJlcGVhdEludGVydmFsLCAw
LCAwLCB0aW1lckZpcmVkLCAmY29udGV4dCkpOwotICAgIENGUnVuTG9vcEFkZFRpbWVyKG1fcnVu
TG9vcC5tX3J1bkxvb3AuZ2V0KCksIG1fdGltZXIuZ2V0KCksIGtDRlJ1bkxvb3BDb21tb25Nb2Rl
cyk7CisgICAgQ0ZSdW5Mb29wQWRkVGltZXIobV9ydW5Mb29wLT5tX3J1bkxvb3AuZ2V0KCksIG1f
dGltZXIuZ2V0KCksIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7CiB9CiAKIHZvaWQgUnVuTG9vcDo6
VGltZXJCYXNlOjpzdG9wKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dlbmVyaWMvUnVu
TG9vcEdlbmVyaWMuY3BwIGIvU291cmNlL1dURi93dGYvZ2VuZXJpYy9SdW5Mb29wR2VuZXJpYy5j
cHAKaW5kZXggMDI2OWVjZmE1ZjgyNTQzMDJhNDdkZTNmNzQwNDNmZWM3ZTU4NzUzMy4uMTNlMjcx
NGMyOWQ0OWJlNTRjZDZjOGMzNDZlOGM3NmM3NWU5MjRlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvZ2VuZXJpYy9SdW5Mb29wR2VuZXJpYy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvZ2Vu
ZXJpYy9SdW5Mb29wR2VuZXJpYy5jcHAKQEAgLTczLDcgKzczLDcgQEAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoU2NoZWR1bGVkVGFzayk7CiAgICAgfQogCiAgICAgc3RydWN0IEVhcmxpZXN0U2NoZWR1
bGUgewotICAgICAgICBib29sIG9wZXJhdG9yKCkoY29uc3QgUmVmPFNjaGVkdWxlZFRhc2s+JiBs
aHMsIGNvbnN0IFJlZjxTY2hlZHVsZWRUYXNrPiYgcmhzKQorICAgICAgICBib29sIG9wZXJhdG9y
KCkoY29uc3QgUmVmUHRyPFNjaGVkdWxlZFRhc2s+JiBsaHMsIGNvbnN0IFJlZlB0cjxTY2hlZHVs
ZWRUYXNrPiYgcmhzKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbGhzLT5zY2hlZHVs
ZWRUaW1lUG9pbnQoKSA+IHJocy0+c2NoZWR1bGVkVGltZVBvaW50KCk7CiAgICAgICAgIH0KQEAg
LTExMiw3ICsxMTIsNyBAQCBSdW5Mb29wOjp+UnVuTG9vcCgpCiAgICAgICAgIG1fc3RvcENvbmRp
dGlvbi53YWl0KG1fbG9vcExvY2spOwogfQogCi1pbmxpbmUgYm9vbCBSdW5Mb29wOjpwb3B1bGF0
ZVRhc2tzKFJ1bk1vZGUgcnVuTW9kZSwgU3RhdHVzJiBzdGF0dXNPZlRoaXNMb29wLCBEZXF1ZTxS
ZWY8VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrPj4mIGZpcmVkVGltZXJzKQoraW5saW5lIGJvb2wg
UnVuTG9vcDo6cG9wdWxhdGVUYXNrcyhSdW5Nb2RlIHJ1bk1vZGUsIFN0YXR1cyYgc3RhdHVzT2ZU
aGlzTG9vcCwgRGVxdWU8UmVmUHRyPFRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzaz4+JiBmaXJlZFRp
bWVycykKIHsKICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvb3BMb2NrKTsKIApAQCAtMTM5LDcg
KzEzOSw3IEBAIGlubGluZSBib29sIFJ1bkxvb3A6OnBvcHVsYXRlVGFza3MoUnVuTW9kZSBydW5N
b2RlLCBTdGF0dXMmIHN0YXR1c09mVGhpc0xvb3AsIERlCiAgICAgLy8gQ2hlY2sgZXhwaXJlZCB0
aW1lcnMuCiAgICAgTW9ub3RvbmljVGltZSBub3cgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKICAg
ICB3aGlsZSAoIW1fc2NoZWR1bGVzLmlzRW1wdHkoKSkgewotICAgICAgICBSZWY8VGltZXJCYXNl
OjpTY2hlZHVsZWRUYXNrPiBlYXJsaWVzdCA9IG1fc2NoZWR1bGVzLmZpcnN0KCkuY29weVJlZigp
OworICAgICAgICBSZWZQdHI8VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrPiBlYXJsaWVzdCA9IG1f
c2NoZWR1bGVzLmZpcnN0KCk7CiAgICAgICAgIGlmIChlYXJsaWVzdC0+c2NoZWR1bGVkVGltZVBv
aW50KCkgPiBub3cpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgc3RkOjpwb3BfaGVhcCht
X3NjaGVkdWxlcy5iZWdpbigpLCBtX3NjaGVkdWxlcy5lbmQoKSwgVGltZXJCYXNlOjpTY2hlZHVs
ZWRUYXNrOjpFYXJsaWVzdFNjaGVkdWxlKCkpOwpAQCAtMTYwLDE5ICsxNjAsMTkgQEAgdm9pZCBS
dW5Mb29wOjpydW5JbXBsKFJ1bk1vZGUgcnVuTW9kZSkKICAgICAgICAgbV9tYWluTG9vcHMuYXBw
ZW5kKCZzdGF0dXNPZlRoaXNMb29wKTsKICAgICB9CiAKLSAgICBEZXF1ZTxSZWY8VGltZXJCYXNl
OjpTY2hlZHVsZWRUYXNrPj4gZmlyZWRUaW1lcnM7CisgICAgRGVxdWU8UmVmUHRyPFRpbWVyQmFz
ZTo6U2NoZWR1bGVkVGFzaz4+IGZpcmVkVGltZXJzOwogICAgIHdoaWxlICh0cnVlKSB7CiAgICAg
ICAgIGlmICghcG9wdWxhdGVUYXNrcyhydW5Nb2RlLCBzdGF0dXNPZlRoaXNMb29wLCBmaXJlZFRp
bWVycykpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgLy8gRGlzcGF0Y2ggc2NoZWR1
bGVkIHRpbWVycy4KICAgICAgICAgd2hpbGUgKCFmaXJlZFRpbWVycy5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgICAgIFJlZjxUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s+IHRhc2sgPSBmaXJlZFRpbWVy
cy50YWtlRmlyc3QoKTsKKyAgICAgICAgICAgIFJlZlB0cjxUaW1lckJhc2U6OlNjaGVkdWxlZFRh
c2s+IHRhc2sgPSBmaXJlZFRpbWVycy50YWtlRmlyc3QoKTsKICAgICAgICAgICAgIGlmICh0YXNr
LT5maXJlZCgpKSB7CiAgICAgICAgICAgICAgICAgLy8gUmVzY2hlZHVsZSBiZWNhdXNlIHRoZSB0
aW1lciByZXF1aXJlcyByZXBlYXRpbmcuCiAgICAgICAgICAgICAgICAgLy8gU2luY2Ugd2Ugd2ls
bCBxdWVyeSB0aGUgdGltZXJzJyB0aW1lIHBvaW50cyBiZWZvcmUgc2xlZXBpbmcsCiAgICAgICAg
ICAgICAgICAgLy8gd2UgZG8gbm90IGNhbGwgd2FrZVVwKCkgaGVyZS4KLSAgICAgICAgICAgICAg
ICBzY2hlZHVsZShXVEZNb3ZlKHRhc2spKTsKKyAgICAgICAgICAgICAgICBzY2hlZHVsZSgqdGFz
ayk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgcGVyZm9ybVdvcmsoKTsKQEAg
LTIyMCw3ICsyMjAsNyBAQCB2b2lkIFJ1bkxvb3A6Ondha2VVcCgpCiAKIHZvaWQgUnVuTG9vcDo6
c2NoZWR1bGUoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBSZWY8VGltZXJCYXNlOjpTY2hlZHVsZWRU
YXNrPiYmIHRhc2spCiB7Ci0gICAgbV9zY2hlZHVsZXMuYXBwZW5kKFdURk1vdmUodGFzaykpOwor
ICAgIG1fc2NoZWR1bGVzLmFwcGVuZCh0YXNrLnB0cigpKTsKICAgICBzdGQ6OnB1c2hfaGVhcCht
X3NjaGVkdWxlcy5iZWdpbigpLCBtX3NjaGVkdWxlcy5lbmQoKSwgVGltZXJCYXNlOjpTY2hlZHVs
ZWRUYXNrOjpFYXJsaWVzdFNjaGVkdWxlKCkpOwogfQogCkBAIC0yMzAsOSArMjMwLDggQEAgdm9p
ZCBSdW5Mb29wOjpzY2hlZHVsZShSZWY8VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrPiYmIHRhc2sp
CiAgICAgc2NoZWR1bGUobG9ja2VyLCBXVEZNb3ZlKHRhc2spKTsKIH0KIAotdm9pZCBSdW5Mb29w
OjpzY2hlZHVsZUFuZFdha2VVcChSZWY8VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrPiYmIHRhc2sp
Cit2b2lkIFJ1bkxvb3A6OnNjaGVkdWxlQW5kV2FrZVVwKGNvbnN0IEFic3RyYWN0TG9ja2VyJiBs
b2NrZXIsIFJlZjxUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s+JiYgdGFzaykKIHsKLSAgICBMb2Nr
SG9sZGVyIGxvY2tlcihtX2xvb3BMb2NrKTsKICAgICBzY2hlZHVsZShsb2NrZXIsIFdURk1vdmUo
dGFzaykpOwogICAgIHdha2VVcChsb2NrZXIpOwogfQpAQCAtMjQ3LDExICsyNDYsNiBAQCB2b2lk
IFJ1bkxvb3A6OmRpc3BhdGNoQWZ0ZXIoU2Vjb25kcyBkZWxheSwgRnVuY3Rpb248dm9pZCgpPiYm
IGZ1bmN0aW9uKQogCiAvLyBTaW5jZSBSdW5Mb29wIGRvZXMgbm90IG93biB0aGUgcmVnaXN0ZXJl
ZCBUaW1lckJhc2UsCiAvLyBUaW1lckJhc2UgYW5kIGl0cyBvd25lciBzaG91bGQgbWFuYWdlIHRo
ZXNlIGxpZmV0aW1lLgotLy8KLS8vIEFuZCBtb3JlIGltcG9ydGFudGx5LCBUaW1lckJhc2Ugb3Bl
cmF0aW9ucyBhcmUgbm90IHRocmVhZC1zYWZlLgotLy8gU28gdGhyZWFkcyB0aGF0IGRvIG5vdCBi
ZWxvbmcgdG8gdGhlIFNjaGVkdWxlZFRhc2sncyBSdW5Mb29wCi0vLyBzaG91bGQgbm90IG9wZXJh
dGUgdGhlIFJ1bkxvb3A6OlRpbWVyQmFzZS4KLS8vIFRoaXMgaXMgdGhlIHNhbWUgdG8gdGhlIFJ1
bkxvb3BXaW4sIHdoaWNoIGlzIFJ1bkxvb3AgZm9yIFdpbmRvd3MuCiBSdW5Mb29wOjpUaW1lckJh
c2U6OlRpbWVyQmFzZShSdW5Mb29wJiBydW5Mb29wKQogICAgIDogbV9ydW5Mb29wKHJ1bkxvb3Ap
CiAgICAgLCBtX3NjaGVkdWxlZFRhc2sobnVsbHB0cikKQEAgLTI2MCwxOSArMjU0LDIxIEBAIFJ1
bkxvb3A6OlRpbWVyQmFzZTo6VGltZXJCYXNlKFJ1bkxvb3AmIHJ1bkxvb3ApCiAKIFJ1bkxvb3A6
OlRpbWVyQmFzZTo6flRpbWVyQmFzZSgpCiB7Ci0gICAgc3RvcCgpOworICAgIExvY2tIb2xkZXIg
bG9ja2VyKG1fcnVuTG9vcC0+bV9sb29wTG9jayk7CisgICAgc3RvcChsb2NrZXIpOwogfQogCiB2
b2lkIFJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RhcnQoZG91YmxlIGludGVydmFsLCBib29sIHJlcGVh
dGluZykKIHsKLSAgICBzdG9wKCk7CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9ydW5Mb29wLT5t
X2xvb3BMb2NrKTsKKyAgICBzdG9wKGxvY2tlcik7CiAgICAgbV9zY2hlZHVsZWRUYXNrID0gU2No
ZWR1bGVkVGFzazo6Y3JlYXRlKFt0aGlzXSB7CiAgICAgICAgIGZpcmVkKCk7CiAgICAgfSwgU2Vj
b25kcyhpbnRlcnZhbCksIHJlcGVhdGluZyk7Ci0gICAgbV9ydW5Mb29wLnNjaGVkdWxlQW5kV2Fr
ZVVwKCptX3NjaGVkdWxlZFRhc2spOworICAgIG1fcnVuTG9vcC0+c2NoZWR1bGVBbmRXYWtlVXAo
bG9ja2VyLCAqbV9zY2hlZHVsZWRUYXNrKTsKIH0KIAotdm9pZCBSdW5Mb29wOjpUaW1lckJhc2U6
OnN0b3AoKQordm9pZCBSdW5Mb29wOjpUaW1lckJhc2U6OnN0b3AoY29uc3QgQWJzdHJhY3RMb2Nr
ZXImKQogewogICAgIGlmIChtX3NjaGVkdWxlZFRhc2spIHsKICAgICAgICAgbV9zY2hlZHVsZWRU
YXNrLT5kZWFjdGl2YXRlKCk7CkBAIC0yODAsOCArMjc2LDIwIEBAIHZvaWQgUnVuTG9vcDo6VGlt
ZXJCYXNlOjpzdG9wKCkKICAgICB9CiB9CiAKK3ZvaWQgUnVuTG9vcDo6VGltZXJCYXNlOjpzdG9w
KCkKK3sKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3J1bkxvb3AtPm1fbG9vcExvY2spOworICAg
IHN0b3AobG9ja2VyKTsKK30KKwogYm9vbCBSdW5Mb29wOjpUaW1lckJhc2U6OmlzQWN0aXZlKCkg
Y29uc3QKIHsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3J1bkxvb3AtPm1fbG9vcExvY2spOwor
ICAgIHJldHVybiBpc0FjdGl2ZShsb2NrZXIpOworfQorCitib29sIFJ1bkxvb3A6OlRpbWVyQmFz
ZTo6aXNBY3RpdmUoY29uc3QgQWJzdHJhY3RMb2NrZXImKSBjb25zdAorewogICAgIHJldHVybiBt
X3NjaGVkdWxlZFRhc2s7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dsaWIvUnVu
TG9vcEdMaWIuY3BwIGIvU291cmNlL1dURi93dGYvZ2xpYi9SdW5Mb29wR0xpYi5jcHAKaW5kZXgg
NjU5N2ZmMDI3YWE1Zjk0ODA5Y2I2M2JhNDQwZTM1ZmM4ZmNlMjZlMy4uYTNiOTNjNGEyNmI4YTY0
YWNmNGI2ZjY5NTBhNjM1YzdkMGIwNWNlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvZ2xp
Yi9SdW5Mb29wR0xpYi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvZ2xpYi9SdW5Mb29wR0xpYi5j
cHAKQEAgLTE2OCw3ICsxNjgsNyBAQCBSdW5Mb29wOjpUaW1lckJhc2U6OlRpbWVyQmFzZShSdW5M
b29wJiBydW5Mb29wKQogICAgICAgICAgICAgdGltZXItPnVwZGF0ZVJlYWR5VGltZSgpOwogICAg
ICAgICByZXR1cm4gR19TT1VSQ0VfQ09OVElOVUU7CiAgICAgfSwgdGhpcywgbnVsbHB0cik7Ci0g
ICAgZ19zb3VyY2VfYXR0YWNoKG1fc291cmNlLmdldCgpLCBtX3J1bkxvb3AubV9tYWluQ29udGV4
dC5nZXQoKSk7CisgICAgZ19zb3VyY2VfYXR0YWNoKG1fc291cmNlLmdldCgpLCBtX3J1bkxvb3At
Pm1fbWFpbkNvbnRleHQuZ2V0KCkpOwogfQogCiBSdW5Mb29wOjpUaW1lckJhc2U6On5UaW1lckJh
c2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvd2luL1J1bkxvb3BXaW4uY3BwIGIvU291
cmNlL1dURi93dGYvd2luL1J1bkxvb3BXaW4uY3BwCmluZGV4IDRiNDVhZDQ1ODlmNzhkNWMzY2Ew
YmVlZjhjZTFmMTQ4YmVlYzAwMTcuLjg3NDZiMWVlYTAzODE0NWRmZTg0ODg5OWU1NDUzNmEzN2M4
ZGViNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3dpbi9SdW5Mb29wV2luLmNwcAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi93aW4vUnVuTG9vcFdpbi5jcHAKQEAgLTExNywxNyArMTE3LDIxIEBA
IHZvaWQgUnVuTG9vcDo6d2FrZVVwKCkKIAogdm9pZCBSdW5Mb29wOjpUaW1lckJhc2U6OnRpbWVy
RmlyZWQoUnVuTG9vcCogcnVuTG9vcCwgdWludDY0X3QgSUQpCiB7Ci0gICAgVGltZXJNYXA6Oml0
ZXJhdG9yIGl0ID0gcnVuTG9vcC0+bV9hY3RpdmVUaW1lcnMuZmluZChJRCk7Ci0gICAgaWYgKGl0
ID09IHJ1bkxvb3AtPm1fYWN0aXZlVGltZXJzLmVuZCgpKSB7Ci0gICAgICAgIC8vIFRoZSB0aW1l
ciBtdXN0IGhhdmUgYmVlbiBzdG9wcGVkIGFmdGVyIHRoZSBXTV9USU1FUiBtZXNzYWdlIHdhcyBw
b3N0ZWQgdG8gdGhlIG1lc3NhZ2UgcXVldWUuCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBUaW1lckJhc2UqIHRpbWVyID0gaXQtPnZhbHVlOwotCi0gICAgaWYgKCF0aW1lci0+bV9pc1Jl
cGVhdGluZykgewotICAgICAgICBydW5Mb29wLT5tX2FjdGl2ZVRpbWVycy5yZW1vdmUoaXQpOwot
ICAgICAgICA6OktpbGxUaW1lcihydW5Mb29wLT5tX3J1bkxvb3BNZXNzYWdlV2luZG93LCBJRCk7
CisgICAgVGltZXJCYXNlKiB0aW1lciA9IG51bGxwdHI7CisgICAgeworICAgICAgICBMb2NrSG9s
ZGVyIGxvY2tlcihydW5Mb29wLT5tX2FjdGl2ZVRpbWVyc0xvY2spOworICAgICAgICBUaW1lck1h
cDo6aXRlcmF0b3IgaXQgPSBydW5Mb29wLT5tX2FjdGl2ZVRpbWVycy5maW5kKElEKTsKKyAgICAg
ICAgaWYgKGl0ID09IHJ1bkxvb3AtPm1fYWN0aXZlVGltZXJzLmVuZCgpKSB7CisgICAgICAgICAg
ICAvLyBUaGUgdGltZXIgbXVzdCBoYXZlIGJlZW4gc3RvcHBlZCBhZnRlciB0aGUgV01fVElNRVIg
bWVzc2FnZSB3YXMgcG9zdGVkIHRvIHRoZSBtZXNzYWdlIHF1ZXVlLgorICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisKKyAgICAgICAgdGltZXIgPSBpdC0+dmFsdWU7CisKKyAgICAgICAg
aWYgKCF0aW1lci0+bV9pc1JlcGVhdGluZykgeworICAgICAgICAgICAgcnVuTG9vcC0+bV9hY3Rp
dmVUaW1lcnMucmVtb3ZlKGl0KTsKKyAgICAgICAgICAgIDo6S2lsbFRpbWVyKHJ1bkxvb3AtPm1f
cnVuTG9vcE1lc3NhZ2VXaW5kb3csIElEKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHRpbWVy
LT5maXJlZCgpOwpAQCAtMTUzLDI0ICsxNTcsMjcgQEAgUnVuTG9vcDo6VGltZXJCYXNlOjp+VGlt
ZXJCYXNlKCkKIAogdm9pZCBSdW5Mb29wOjpUaW1lckJhc2U6OnN0YXJ0KGRvdWJsZSBuZXh0Rmly
ZUludGVydmFsLCBib29sIHJlcGVhdCkKIHsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3J1bkxv
b3AtPm1fYWN0aXZlVGltZXJzTG9jayk7CiAgICAgbV9pc1JlcGVhdGluZyA9IHJlcGVhdDsKLSAg
ICBtX3J1bkxvb3AubV9hY3RpdmVUaW1lcnMuc2V0KG1fSUQsIHRoaXMpOwotICAgIDo6U2V0VGlt
ZXIobV9ydW5Mb29wLm1fcnVuTG9vcE1lc3NhZ2VXaW5kb3csIG1fSUQsIG5leHRGaXJlSW50ZXJ2
YWwgKiAxMDAwLCAwKTsKKyAgICBtX3J1bkxvb3AtPm1fYWN0aXZlVGltZXJzLnNldChtX0lELCB0
aGlzKTsKKyAgICA6OlNldFRpbWVyKG1fcnVuTG9vcC0+bV9ydW5Mb29wTWVzc2FnZVdpbmRvdywg
bV9JRCwgbmV4dEZpcmVJbnRlcnZhbCAqIDEwMDAsIDApOwogfQogCiB2b2lkIFJ1bkxvb3A6OlRp
bWVyQmFzZTo6c3RvcCgpCiB7Ci0gICAgVGltZXJNYXA6Oml0ZXJhdG9yIGl0ID0gbV9ydW5Mb29w
Lm1fYWN0aXZlVGltZXJzLmZpbmQobV9JRCk7Ci0gICAgaWYgKGl0ID09IG1fcnVuTG9vcC5tX2Fj
dGl2ZVRpbWVycy5lbmQoKSkKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3J1bkxvb3AtPm1fYWN0
aXZlVGltZXJzTG9jayk7CisgICAgVGltZXJNYXA6Oml0ZXJhdG9yIGl0ID0gbV9ydW5Mb29wLT5t
X2FjdGl2ZVRpbWVycy5maW5kKG1fSUQpOworICAgIGlmIChpdCA9PSBtX3J1bkxvb3AtPm1fYWN0
aXZlVGltZXJzLmVuZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3J1bkxvb3AubV9hY3Rp
dmVUaW1lcnMucmVtb3ZlKGl0KTsKLSAgICA6OktpbGxUaW1lcihtX3J1bkxvb3AubV9ydW5Mb29w
TWVzc2FnZVdpbmRvdywgbV9JRCk7CisgICAgbV9ydW5Mb29wLT5tX2FjdGl2ZVRpbWVycy5yZW1v
dmUoaXQpOworICAgIDo6S2lsbFRpbWVyKG1fcnVuTG9vcC0+bV9ydW5Mb29wTWVzc2FnZVdpbmRv
dywgbV9JRCk7CiB9CiAKIGJvb2wgUnVuTG9vcDo6VGltZXJCYXNlOjppc0FjdGl2ZSgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIG1fcnVuTG9vcC5tX2FjdGl2ZVRpbWVycy5jb250YWlucyhtX0lEKTsK
KyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3J1bkxvb3AtPm1fYWN0aXZlVGltZXJzTG9jayk7Cisg
ICAgcmV0dXJuIG1fcnVuTG9vcC0+bV9hY3RpdmVUaW1lcnMuY29udGFpbnMobV9JRCk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdURgo=
</data>
<flag name="review"
          id="328011"
          type_id="1"
          status="+"
          setter="cgarcia"
    />
          </attachment>
      

    </bug>

</bugzilla>