<?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>205279</bug_id>
          
          <creation_ts>2019-12-16 09:19:40 -0800</creation_ts>
          <short_desc>Changed jsc shell timeout mechanism to leverage the VMTraps and use CPUTime.</short_desc>
          <delta_ts>2019-12-17 00:51:02 -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>JavaScriptCore</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>205298</blocked>
    
    <blocked>204894</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>ap</cc>
    
    <cc>fpizlo</cc>
    
    <cc>jbedard</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1598924</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-12-16 09:19:40 -0800</bug_when>
    <thetext>This fixes all the timeouts that occur due to CPU time starvation when running JSC tests on a debug build.

What this means is that the timeout mechanism may trigger asynchronous OSR exits.  If a test requires no OSR exits, that test should requireOption(&quot;--usePollingTraps=true&quot;) so that the VMTraps will use its polling implementation instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598925</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-12-16 09:20:52 -0800</bug_when>
    <thetext>&lt;rdar://problem/57971874&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598929</commentid>
    <comment_count>2</comment_count>
      <attachid>385775</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-12-16 09:30:13 -0800</bug_when>
    <thetext>Created attachment 385775
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1599018</commentid>
    <comment_count>3</comment_count>
      <attachid>385775</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-12-16 12:13:34 -0800</bug_when>
    <thetext>Comment on attachment 385775
proposed patch.

Does this mean all our tests are now using VMTraps all the time? Wouldn&apos;t it be good to run tests without that?

Have you verified timeouts still fire?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1599019</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-12-16 12:18:41 -0800</bug_when>
    <thetext>(In reply to Saam Barati from comment #3)
&gt; Comment on attachment 385775 [details]
&gt; proposed patch.
&gt; 
&gt; Does this mean all our tests are now using VMTraps all the time? Wouldn&apos;t it
&gt; be good to run tests without that?

Why would it matter for the majority of tests?  The only ones where I think it might matter are for tests that are trying to verify we don&apos;t OSR exit.  For those cases, the test can add &quot;--usePollingTraps=true&quot; to its required options, and all will be well.  Is there another reason why we need to have traps off?

&gt; Have you verified timeouts still fire?

Yes, I did.  I said so in the ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1599021</commentid>
    <comment_count>5</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-12-16 12:19:38 -0800</bug_when>
    <thetext>(In reply to Mark Lam from comment #4)
&gt; (In reply to Saam Barati from comment #3)
&gt; &gt; Comment on attachment 385775 [details]
&gt; &gt; proposed patch.
&gt; &gt; 
&gt; &gt; Does this mean all our tests are now using VMTraps all the time? Wouldn&apos;t it
&gt; &gt; be good to run tests without that?
&gt; 
&gt; Why would it matter for the majority of tests?  The only ones where I think
&gt; it might matter are for tests that are trying to verify we don&apos;t OSR exit. 
&gt; For those cases, the test can add &quot;--usePollingTraps=true&quot; to its required
&gt; options, and all will be well.  Is there another reason why we need to have
&gt; traps off?

Alternatively, we can default to usePollingTraps=true on jsc tests and have tests that want to test signal traps turn it off?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1599029</commentid>
    <comment_count>6</comment_count>
      <attachid>385775</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-12-16 12:30:51 -0800</bug_when>
    <thetext>Comment on attachment 385775
proposed patch.

Can we change what our timeout numbers are if we make this change? Those numbers are tuned for CPU starvation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1599032</commentid>
    <comment_count>7</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-12-16 12:33:57 -0800</bug_when>
    <thetext>(In reply to Saam Barati from comment #6)
&gt; Comment on attachment 385775 [details]
&gt; proposed patch.
&gt; 
&gt; Can we change what our timeout numbers are if we make this change? Those
&gt; numbers are tuned for CPU starvation.

I think we should totally do that.  But we should do that in a separate patch.  

Re your earlier question about whether we want to test without VMTraps completely, do you think there is such a need?  If so, I can always add a jsc shell option to allow the use of the old wall clock time timeout for the test that needs it.  My instinct says this is rare, and we should hold off on adding this option until a need arises.  It&apos;s not difficult to add.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1599079</commentid>
    <comment_count>8</comment_count>
      <attachid>385775</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-12-16 13:51:06 -0800</bug_when>
    <thetext>Comment on attachment 385775
proposed patch.

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

r=me

Let&apos;s please also file a bug for changing our timeouts.

&gt; Source/JavaScriptCore/jsc.cpp:2453
&gt; +    Thread::create(&quot;jsc Timeout Thread&quot;, [=] () {
&gt; +        sleep(remainingTime);
&gt; +        VMInspector::forEachVM([&amp;] (VM&amp; vm) -&gt; VMInspector::FunctorStatus {
&gt; +            if (&amp;vm != s_vm)
&gt; +                return VMInspector::FunctorStatus::Continue;
&gt; +            vm.notifyNeedShellTimeoutCheck();
&gt; +            return VMInspector::FunctorStatus::Done;
&gt; +        });
&gt; +    });

This can be a helper shared here and in startTimeoutThreadIfNeeded

&gt; Source/JavaScriptCore/jsc.cpp:2477
&gt; +        sleep(timeoutDuration / 5.0);

As we talked about in person, let&apos;s remove the / 5.0 that you used for testing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1599121</commentid>
    <comment_count>9</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-12-16 14:36:33 -0800</bug_when>
    <thetext>Thanks for the review.  Landed in r253581: &lt;http://trac.webkit.org/r253581&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1599253</commentid>
    <comment_count>10</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-12-16 19:18:29 -0800</bug_when>
    <thetext>Going to roll out the patch while I investigate why the release build is failing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1599258</commentid>
    <comment_count>11</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-12-16 19:27:07 -0800</bug_when>
    <thetext>Rolled out in r253609: &lt;http://trac.webkit.org/r253609&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1599264</commentid>
    <comment_count>12</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2019-12-16 19:37:26 -0800</bug_when>
    <thetext>Looks like this caused a variety of failures:
- broke 74 tests, as EWS predicted;
- broke webkit-jsc-cloop-test;
- made release tests 2x slower.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1599293</commentid>
    <comment_count>13</comment_count>
      <attachid>385858</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-12-16 23:26:10 -0800</bug_when>
    <thetext>Created attachment 385858
patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1599309</commentid>
    <comment_count>14</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-12-17 00:51:02 -0800</bug_when>
    <thetext>Re-landed in r253613: &lt;http://trac.webkit.org/r253613&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385775</attachid>
            <date>2019-12-16 09:30:13 -0800</date>
            <delta_ts>2019-12-16 23:26:10 -0800</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-205279.patch</filename>
            <type>text/plain</type>
            <size>16004</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjUzNTU3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBA
CisyMDE5LTEyLTE2ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBD
aGFuZ2VkIGpzYyBzaGVsbCB0aW1lb3V0IG1lY2hhbmlzbSB0byBsZXZlcmFnZSB0aGUgVk1UcmFw
cyBhbmQgdXNlIENQVVRpbWUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDUyNzkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU3OTcxODc0PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgZml4ZXMg
YWxsIHRoZSB0aW1lb3V0cyB0aGF0IG9jY3VyIGR1ZSB0byBDUFUgdGltZSBzdGFydmF0aW9uIHdo
ZW4KKyAgICAgICAgcnVubmluZyBKU0MgdGVzdHMgb24gYSBkZWJ1ZyBidWlsZC4KKworICAgICAg
ICBXaGF0IHRoaXMgbWVhbnMgaXMgdGhhdCB0aGUgdGltZW91dCBtZWNoYW5pc20gbWF5IHRyaWdn
ZXIgYXN5bmNocm9ub3VzCisgICAgICAgIE9TUiBleGl0cy4gIElmIGEgdGVzdCByZXF1aXJlcyBu
byBPU1IgZXhpdHMsIHRoYXQgdGVzdCBzaG91bGQKKyAgICAgICAgcmVxdWlyZU9wdGlvbigiLS11
c2VQb2xsaW5nVHJhcHM9dHJ1ZSIpIHNvIHRoYXQgdGhlIFZNVHJhcHMgd2lsbCB1c2UgaXRzCisg
ICAgICAgIHBvbGxpbmcgaW1wbGVtZW50YXRpb24gaW5zdGVhZC4KKworICAgICAgICBJJ3ZlIHRl
c3RlZCB0aGlzIHdpdGggYSBmdWxsIHJ1biBvZiB0aGUgSlNDIHN0cmVzcyB0ZXN0cyB3aXRoIGEg
ZGVidWcKKyAgICAgICAgYnVpbGQgYW5kIHNhdyAwIHRpbWVvdXRzLiAgSSd2ZSBhbHNvIHRlc3Rl
ZCBpdCB3aXRoIGEgY29udHJpdmVkIHRlc3RzIHRoYXQKKyAgICAgICAgbG9vcHMgZm9yZXZlciwg
YW5kIHNhdyB0aGUgZXhwZWN0ZWQgdGltZW91dCBjcmFzaC4KKworICAgICAgICAqIGludGVycHJl
dGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGVQ
cm9ncmFtKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGVDYWxsKToKKyAgICAg
ICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGVDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpJ
bnRlcnByZXRlcjo6ZXhlY3V0ZSk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpleGVjdXRl
TW9kdWxlUHJvZ3JhbSk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXJJbmxpbmVz
Lmg6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpleGVjdXRlKToKKyAgICAgICAgKiBqc2Mu
Y3BwOgorICAgICAgICAodGltZW91dENoZWNrQ2FsbGJhY2spOgorICAgICAgICAoaW5pdGlhbGl6
ZVRpbWVvdXRJZk5lZWRlZCk6CisgICAgICAgIChzdGFydFRpbWVvdXRUaHJlYWRJZk5lZWRlZCk6
CisgICAgICAgIChydW5KU0MpOgorICAgICAgICAoanNjbWFpbik6CisgICAgICAgICogcnVudGlt
ZS9KU0NDb25maWcuaDoKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgIChKU0M6OlZN
Ojpub3RpZnlOZWVkU2hlbGxUaW1lb3V0Q2hlY2spOgorICAgICAgICAqIHJ1bnRpbWUvVk1UcmFw
cy5jcHA6CisgICAgICAgIChKU0M6OlZNVHJhcHM6OmhhbmRsZVRyYXBzKToKKyAgICAgICAgKiBy
dW50aW1lL1ZNVHJhcHMuaDoKKyAgICAgICAgKEpTQzo6Vk1UcmFwczo6TWFzazo6TWFzayk6Cisg
ICAgICAgIChKU0M6OlZNVHJhcHM6Ok1hc2s6OmFsbEV2ZW50VHlwZXMpOgorICAgICAgICAoSlND
OjpWTVRyYXBzOjpNYXNrOjppbml0KToKKyAgICAgICAgKEpTQzo6Vk1UcmFwczo6aW50ZXJydXB0
aW5nVHJhcHMpOgorICAgICAgICAqIHRvb2xzL1ZNSW5zcGVjdG9yLmNwcDoKKyAgICAgICAgKEpT
Qzo6Vk1JbnNwZWN0b3I6OmZvckVhY2hWTSk6CisgICAgICAgICogdG9vbHMvVk1JbnNwZWN0b3Iu
aDoKKwogMjAxOS0xMi0xNCAgQWRyaWFuIFBlcmV6IGRlIENhc3RybyAgPGFwZXJlekBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFtHVEtdW1dQRV0gRml4IHZhcmlvdXMgbm9uLXVuaWZpZWQgYnVpbGQg
aXNzdWVzIGludHJvZHVjZWQgc2luY2UgcjI1MTY5OApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2pzYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJ
KHJldmlzaW9uIDI1MzU0MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03MCw2ICs3MCw3IEBACiAjaW5jbHVkZSAiU3VwZXJTYW1wbGVyLmgiCiAj
aW5jbHVkZSAiVGVzdFJ1bm5lclV0aWxzLmgiCiAjaW5jbHVkZSAiVHlwZWRBcnJheUlubGluZXMu
aCIKKyNpbmNsdWRlICJWTUluc3BlY3Rvci5oIgogI2luY2x1ZGUgIldhc21DYXBhYmlsaXRpZXMu
aCIKICNpbmNsdWRlICJXYXNtQ29udGV4dC5oIgogI2luY2x1ZGUgIldhc21GYXVsdFNpZ25hbEhh
bmRsZXIuaCIKQEAgLTg0LDYgKzg1LDcgQEAKICNpbmNsdWRlIDx0aHJlYWQ+CiAjaW5jbHVkZSA8
dHlwZV90cmFpdHM+CiAjaW5jbHVkZSA8d3RmL0JveC5oPgorI2luY2x1ZGUgPHd0Zi9DUFVUaW1l
Lmg+CiAjaW5jbHVkZSA8d3RmL0NvbW1hUHJpbnRlci5oPgogI2luY2x1ZGUgPHd0Zi9GaWxlU3lz
dGVtLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KQEAgLTI0MjcsMjQgKzI0MjksNjEg
QEAgaW50IGpzY21haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KTsKIAogc3RhdGljIGRvdWJsZSBz
X2Rlc2lyZWRUaW1lb3V0Owogc3RhdGljIGRvdWJsZSBzX3RpbWVvdXRNdWx0aXBsaWVyID0gMS4w
Oworc3RhdGljIFNlY29uZHMgc190aW1lb3V0RHVyYXRpb247CitzdGF0aWMgU2Vjb25kcyBzX21h
eEFsbG93ZWRDUFVUaW1lOworc3RhdGljIFZNKiBzX3ZtOworCitzdGF0aWMgdm9pZCB0aW1lb3V0
Q2hlY2tDYWxsYmFjayhWTSYgdm0pCit7CisgICAgUkVMRUFTRV9BU1NFUlQoJnZtID09IHNfdm0p
OworICAgIGF1dG8gY3B1VGltZSA9IENQVVRpbWU6OmZvckN1cnJlbnRUaHJlYWQoKTsKKyAgICBp
ZiAoY3B1VGltZSA+PSBzX21heEFsbG93ZWRDUFVUaW1lKSB7CisgICAgICAgIGRhdGFMb2coIlRp
bWVkIG91dCBhZnRlciAiLCBzX3RpbWVvdXREdXJhdGlvbiwgIiBzZWNvbmRzIVxuIik7CisgICAg
ICAgIENSQVNIKCk7CisgICAgfQorICAgIGF1dG8gcmVtYWluaW5nVGltZSA9IHNfbWF4QWxsb3dl
ZENQVVRpbWUgLSBjcHVUaW1lOworICAgIFRocmVhZDo6Y3JlYXRlKCJqc2MgVGltZW91dCBUaHJl
YWQiLCBbPV0gKCkgeworICAgICAgICBzbGVlcChyZW1haW5pbmdUaW1lKTsKKyAgICAgICAgVk1J
bnNwZWN0b3I6OmZvckVhY2hWTShbJl0gKFZNJiB2bSkgLT4gVk1JbnNwZWN0b3I6OkZ1bmN0b3JT
dGF0dXMgeworICAgICAgICAgICAgaWYgKCZ2bSAhPSBzX3ZtKQorICAgICAgICAgICAgICAgIHJl
dHVybiBWTUluc3BlY3Rvcjo6RnVuY3RvclN0YXR1czo6Q29udGludWU7CisgICAgICAgICAgICB2
bS5ub3RpZnlOZWVkU2hlbGxUaW1lb3V0Q2hlY2soKTsKKyAgICAgICAgICAgIHJldHVybiBWTUlu
c3BlY3Rvcjo6RnVuY3RvclN0YXR1czo6RG9uZTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CiAK
LXN0YXRpYyB2b2lkIHN0YXJ0VGltZW91dFRocmVhZElmTmVlZGVkKCkKK3N0YXRpYyB2b2lkIGlu
aXRpYWxpemVUaW1lb3V0SWZOZWVkZWQoKQogewogICAgIGlmIChjaGFyKiB0aW1lb3V0U3RyaW5n
ID0gZ2V0ZW52KCJKU0NURVNUX3RpbWVvdXQiKSkgewogICAgICAgICBpZiAoc3NjYW5mKHRpbWVv
dXRTdHJpbmcsICIlbGYiLCAmc19kZXNpcmVkVGltZW91dCkgIT0gMSkgewogICAgICAgICAgICAg
ZGF0YUxvZygiV0FSTklORzogdGltZW91dCBzdHJpbmcgaXMgbWFsZm9ybWVkLCBnb3QgIiwgdGlt
ZW91dFN0cmluZywKICAgICAgICAgICAgICAgICAiIGJ1dCBleHBlY3RlZCBhIG51bWJlci4gTm90
IHVzaW5nIGEgdGltZW91dC5cbiIpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgVGhy
ZWFkOjpjcmVhdGUoImpzYyBUaW1lb3V0IFRocmVhZCIsIFtdICgpIHsKLSAgICAgICAgICAgICAg
ICBTZWNvbmRzIHRpbWVvdXREdXJhdGlvbihzX2Rlc2lyZWRUaW1lb3V0ICogc190aW1lb3V0TXVs
dGlwbGllcik7Ci0gICAgICAgICAgICAgICAgc2xlZXAodGltZW91dER1cmF0aW9uKTsKLSAgICAg
ICAgICAgICAgICBkYXRhTG9nKCJUaW1lZCBvdXQgYWZ0ZXIgIiwgdGltZW91dER1cmF0aW9uLCAi
IHNlY29uZHMhXG4iKTsKLSAgICAgICAgICAgICAgICBDUkFTSCgpOwotICAgICAgICAgICAgfSk7
Ci0gICAgICAgIH0KKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBnX2pzY0NvbmZpZy5zaGVs
bFRpbWVvdXRDaGVja0NhbGxiYWNrID0gdGltZW91dENoZWNrQ2FsbGJhY2s7CiAgICAgfQogfQog
CitzdGF0aWMgdm9pZCBzdGFydFRpbWVvdXRUaHJlYWRJZk5lZWRlZChWTSYgdm0pCit7CisgICAg
aWYgKCFnX2pzY0NvbmZpZy5zaGVsbFRpbWVvdXRDaGVja0NhbGxiYWNrKQorICAgICAgICByZXR1
cm47CisKKyAgICBzX3ZtID0gJnZtOworICAgIHNfdGltZW91dER1cmF0aW9uID0gU2Vjb25kcyhz
X2Rlc2lyZWRUaW1lb3V0ICogc190aW1lb3V0TXVsdGlwbGllcik7CisgICAgc19tYXhBbGxvd2Vk
Q1BVVGltZSA9IENQVVRpbWU6OmZvckN1cnJlbnRUaHJlYWQoKSArIHNfdGltZW91dER1cmF0aW9u
OworICAgIFRocmVhZDo6Y3JlYXRlKCJqc2MgVGltZW91dCBUaHJlYWQiLCBbXSAoKSB7CisgICAg
ICAgIFNlY29uZHMgdGltZW91dER1cmF0aW9uKHNfZGVzaXJlZFRpbWVvdXQgKiBzX3RpbWVvdXRN
dWx0aXBsaWVyKTsKKyAgICAgICAgc2xlZXAodGltZW91dER1cmF0aW9uIC8gNS4wKTsKKyAgICAg
ICAgVk1JbnNwZWN0b3I6OmZvckVhY2hWTShbJl0gKFZNJiB2bSkgLT4gVk1JbnNwZWN0b3I6OkZ1
bmN0b3JTdGF0dXMgeworICAgICAgICAgICAgaWYgKCZ2bSAhPSBzX3ZtKQorICAgICAgICAgICAg
ICAgIHJldHVybiBWTUluc3BlY3Rvcjo6RnVuY3RvclN0YXR1czo6Q29udGludWU7CisgICAgICAg
ICAgICB2bS5ub3RpZnlOZWVkU2hlbGxUaW1lb3V0Q2hlY2soKTsKKyAgICAgICAgICAgIHJldHVy
biBWTUluc3BlY3Rvcjo6RnVuY3RvclN0YXR1czo6RG9uZTsKKyAgICAgICAgfSk7CisgICAgfSk7
Cit9CisKIGludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKIHsKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKSAmJiBDUFUoQVJNX1RIVU1CMikKQEAgLTI5OTksNiArMzAzOCw3IEBAIGludCBy
dW5KU0MoY29uc3QgQ29tbWFuZExpbmUmIG9wdGlvbnMsIGIKICAgICB7CiAgICAgICAgIEpTTG9j
a0hvbGRlciBsb2NrZXIodm0pOwogCisgICAgICAgIHN0YXJ0VGltZW91dFRocmVhZElmTmVlZGVk
KHZtKTsKICAgICAgICAgaWYgKG9wdGlvbnMubV9wcm9maWxlICYmICF2bS5tX3BlckJ5dGVjb2Rl
UHJvZmlsZXIpCiAgICAgICAgICAgICB2bS5tX3BlckJ5dGVjb2RlUHJvZmlsZXIgPSBtYWtlVW5p
cXVlPFByb2ZpbGVyOjpEYXRhYmFzZT4odm0pOwogCkBAIC0zMDk5LDcgKzMxMzksNyBAQCBpbnQg
anNjbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAKICAgICAvLyBJbml0aWFsaXplIEpTQyBi
ZWZvcmUgZ2V0dGluZyBWTS4KICAgICBKU0M6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKLSAgICBz
dGFydFRpbWVvdXRUaHJlYWRJZk5lZWRlZCgpOworICAgIGluaXRpYWxpemVUaW1lb3V0SWZOZWVk
ZWQoKTsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgSlNDOjpXYXNtOjplbmFibGVGYXN0
TWVtb3J5KCk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcAkocmV2aXNpb24gMjUzNTQyKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODIwLDkgKzgyMCw5IEBAIGZhaWxlZEpTT05QOgogICAgICAgICBjb2RlQmxvY2sgPSBqc0Nh
c3Q8UHJvZ3JhbUNvZGVCbG9jayo+KHRlbXBDb2RlQmxvY2spOwogICAgIH0KIAotICAgIFZNVHJh
cHM6Ok1hc2sgbWFzayhWTVRyYXBzOjpOZWVkVGVybWluYXRpb24sIFZNVHJhcHM6Ok5lZWRXYXRj
aGRvZ0NoZWNrKTsKLSAgICBpZiAoVU5MSUtFTFkodm0ubmVlZFRyYXBIYW5kbGluZyhtYXNrKSkp
IHsKLSAgICAgICAgdm0uaGFuZGxlVHJhcHMoZ2xvYmFsT2JqZWN0LCB2bS50b3BDYWxsRnJhbWUs
IG1hc2spOworICAgIGNvbnN0ZXhwciBhdXRvIHRyYXBzTWFzayA9IFZNVHJhcHM6OmludGVycnVw
dGluZ1RyYXBzKCk7CisgICAgaWYgKFVOTElLRUxZKHZtLm5lZWRUcmFwSGFuZGxpbmcodHJhcHNN
YXNrKSkpIHsKKyAgICAgICAgdm0uaGFuZGxlVHJhcHMoZ2xvYmFsT2JqZWN0LCB2bS50b3BDYWxs
RnJhbWUsIHRyYXBzTWFzayk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgdGhyb3dTY29wZS5leGNlcHRpb24oKSk7CiAgICAgfQogCkBAIC04ODEsOSArODgxLDkgQEAg
SlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNhbGwoSlNHbG9iYQogICAgIH0gZWxzZQogICAg
ICAgICBuZXdDb2RlQmxvY2sgPSAwOwogCi0gICAgVk1UcmFwczo6TWFzayBtYXNrKFZNVHJhcHM6
Ok5lZWRUZXJtaW5hdGlvbiwgVk1UcmFwczo6TmVlZFdhdGNoZG9nQ2hlY2spOwotICAgIGlmIChV
TkxJS0VMWSh2bS5uZWVkVHJhcEhhbmRsaW5nKG1hc2spKSkgewotICAgICAgICB2bS5oYW5kbGVU
cmFwcyhnbG9iYWxPYmplY3QsIHZtLnRvcENhbGxGcmFtZSwgbWFzayk7CisgICAgY29uc3RleHBy
IGF1dG8gdHJhcHNNYXNrID0gVk1UcmFwczo6aW50ZXJydXB0aW5nVHJhcHMoKTsKKyAgICBpZiAo
VU5MSUtFTFkodm0ubmVlZFRyYXBIYW5kbGluZyh0cmFwc01hc2spKSkgeworICAgICAgICB2bS5o
YW5kbGVUcmFwcyhnbG9iYWxPYmplY3QsIHZtLnRvcENhbGxGcmFtZSwgdHJhcHNNYXNrKTsKICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB0aHJvd1Njb3BlLmV4Y2VwdGlv
bigpKTsKICAgICB9CiAKQEAgLTk1Miw5ICs5NTIsOSBAQCBKU09iamVjdCogSW50ZXJwcmV0ZXI6
OmV4ZWN1dGVDb25zdHJ1Y3QoCiAgICAgfSBlbHNlCiAgICAgICAgIG5ld0NvZGVCbG9jayA9IDA7
CiAKLSAgICBWTVRyYXBzOjpNYXNrIG1hc2soVk1UcmFwczo6TmVlZFRlcm1pbmF0aW9uLCBWTVRy
YXBzOjpOZWVkV2F0Y2hkb2dDaGVjayk7Ci0gICAgaWYgKFVOTElLRUxZKHZtLm5lZWRUcmFwSGFu
ZGxpbmcobWFzaykpKSB7Ci0gICAgICAgIHZtLmhhbmRsZVRyYXBzKGdsb2JhbE9iamVjdCwgdm0u
dG9wQ2FsbEZyYW1lLCBtYXNrKTsKKyAgICBjb25zdGV4cHIgYXV0byB0cmFwc01hc2sgPSBWTVRy
YXBzOjppbnRlcnJ1cHRpbmdUcmFwcygpOworICAgIGlmIChVTkxJS0VMWSh2bS5uZWVkVHJhcEhh
bmRsaW5nKHRyYXBzTWFzaykpKSB7CisgICAgICAgIHZtLmhhbmRsZVRyYXBzKGdsb2JhbE9iamVj
dCwgdm0udG9wQ2FsbEZyYW1lLCB0cmFwc01hc2spOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIG51bGxwdHIpOwogICAgIH0KIApAQCAtMTEzNiw5ICsxMTM2LDkgQEAg
SlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0YQogICAgICAgICB9CiAgICAg
fQogCi0gICAgVk1UcmFwczo6TWFzayBtYXNrKFZNVHJhcHM6Ok5lZWRUZXJtaW5hdGlvbiwgVk1U
cmFwczo6TmVlZFdhdGNoZG9nQ2hlY2spOwotICAgIGlmIChVTkxJS0VMWSh2bS5uZWVkVHJhcEhh
bmRsaW5nKG1hc2spKSkgewotICAgICAgICB2bS5oYW5kbGVUcmFwcyhnbG9iYWxPYmplY3QsIHZt
LnRvcENhbGxGcmFtZSwgbWFzayk7CisgICAgY29uc3RleHByIGF1dG8gdHJhcHNNYXNrID0gVk1U
cmFwczo6aW50ZXJydXB0aW5nVHJhcHMoKTsKKyAgICBpZiAoVU5MSUtFTFkodm0ubmVlZFRyYXBI
YW5kbGluZyh0cmFwc01hc2spKSkgeworICAgICAgICB2bS5oYW5kbGVUcmFwcyhnbG9iYWxPYmpl
Y3QsIHZtLnRvcENhbGxGcmFtZSwgdHJhcHNNYXNrKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCB0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKTsKICAgICB9CiAKQEAgLTEx
ODYsOSArMTE4Niw5IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGVNb2R1bGVQcm9ncmEK
ICAgICAgICAgY29kZUJsb2NrID0ganNDYXN0PE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqPih0ZW1w
Q29kZUJsb2NrKTsKICAgICB9CiAKLSAgICBWTVRyYXBzOjpNYXNrIG1hc2soVk1UcmFwczo6TmVl
ZFRlcm1pbmF0aW9uLCBWTVRyYXBzOjpOZWVkV2F0Y2hkb2dDaGVjayk7Ci0gICAgaWYgKFVOTElL
RUxZKHZtLm5lZWRUcmFwSGFuZGxpbmcobWFzaykpKSB7Ci0gICAgICAgIHZtLmhhbmRsZVRyYXBz
KGdsb2JhbE9iamVjdCwgdm0udG9wQ2FsbEZyYW1lLCBtYXNrKTsKKyAgICBjb25zdGV4cHIgYXV0
byB0cmFwc01hc2sgPSBWTVRyYXBzOjppbnRlcnJ1cHRpbmdUcmFwcygpOworICAgIGlmIChVTkxJ
S0VMWSh2bS5uZWVkVHJhcEhhbmRsaW5nKHRyYXBzTWFzaykpKSB7CisgICAgICAgIHZtLmhhbmRs
ZVRyYXBzKGdsb2JhbE9iamVjdCwgdm0udG9wQ2FsbEZyYW1lLCB0cmFwc01hc2spOwogICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHRocm93U2NvcGUuZXhjZXB0aW9uKCkp
OwogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVy
cHJldGVySW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9JbnRlcnByZXRlcklubGluZXMuaAkocmV2aXNpb24gMjUzNTQyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVySW5saW5lcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2Ug
U3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYt
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTc0LDkgKzc0LDkgQEAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIEludGVy
cHJldGVyOjpleGVjdQogCiAgICAgU3RhY2tTdGF0czo6Q2hlY2tQb2ludCBzdGFja0NoZWNrUG9p
bnQ7CiAKLSAgICBWTVRyYXBzOjpNYXNrIG1hc2soVk1UcmFwczo6TmVlZFRlcm1pbmF0aW9uLCBW
TVRyYXBzOjpOZWVkV2F0Y2hkb2dDaGVjayk7Ci0gICAgaWYgKFVOTElLRUxZKHZtLm5lZWRUcmFw
SGFuZGxpbmcobWFzaykpKSB7Ci0gICAgICAgIHZtLmhhbmRsZVRyYXBzKGNsb3N1cmUucHJvdG9D
YWxsRnJhbWUtPmdsb2JhbE9iamVjdCwgY2xvc3VyZS5vbGRDYWxsRnJhbWUsIG1hc2spOworICAg
IGNvbnN0ZXhwciBhdXRvIHRyYXBzTWFzayA9IFZNVHJhcHM6OmludGVycnVwdGluZ1RyYXBzKCk7
CisgICAgaWYgKFVOTElLRUxZKHZtLm5lZWRUcmFwSGFuZGxpbmcodHJhcHNNYXNrKSkpIHsKKyAg
ICAgICAgdm0uaGFuZGxlVHJhcHMoY2xvc3VyZS5wcm90b0NhbGxGcmFtZS0+Z2xvYmFsT2JqZWN0
LCBjbG9zdXJlLm9sZENhbGxGcmFtZSwgdHJhcHNNYXNrKTsKICAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCB0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKTsKICAgICB9CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0NvbmZpZy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0NvbmZpZy5oCShyZXZpc2lvbiAy
NTM1NDIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NDb25maWcuaAkod29y
a2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgRXhl
Y3V0YWJsZUFsbG9jYXRvcjsKIGNsYXNzIEZpeGVkVk1Qb29sRXhlY3V0YWJsZUFsbG9jYXRvcjsK
K2NsYXNzIFZNOwogCiAjaWYgQ1BVKEFSTTY0KSB8fCBQTEFURk9STShXQVRDSE9TKQogY29uc3Rl
eHByIHNpemVfdCBQYWdlU2l6ZSA9IDE2ICogS0I7CkBAIC04Miw2ICs4Myw4IEBAIHN0cnVjdCBD
b25maWcgewogI2VuZGlmCiAKICAgICAgICAgICAgIE9wdGlvbnNTdG9yYWdlIG9wdGlvbnM7CisK
KyAgICAgICAgICAgIHZvaWQgKCpzaGVsbFRpbWVvdXRDaGVja0NhbGxiYWNrKShWTSYpOwogICAg
ICAgICB9OwogICAgICAgICBjaGFyIGVuc3VyZVNpemVbQ29uZmlnU2l6ZVRvUHJvdGVjdF07CiAg
ICAgfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkocmV2aXNpb24gMjUzNTQy
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkod29ya2luZyBjb3B5KQpA
QCAtMTA2Niw2ICsxMDY2LDcgQEAgcHVibGljOgogICAgIHZvaWQqIG5lZWRUcmFwSGFuZGxpbmdB
ZGRyZXNzKCkgeyByZXR1cm4gbV90cmFwcy5uZWVkVHJhcEhhbmRsaW5nQWRkcmVzcygpOyB9CiAK
ICAgICB2b2lkIG5vdGlmeU5lZWREZWJ1Z2dlckJyZWFrKCkgeyBtX3RyYXBzLmZpcmVUcmFwKFZN
VHJhcHM6Ok5lZWREZWJ1Z2dlckJyZWFrKTsgfQorICAgIHZvaWQgbm90aWZ5TmVlZFNoZWxsVGlt
ZW91dENoZWNrKCkgeyBtX3RyYXBzLmZpcmVUcmFwKFZNVHJhcHM6Ok5lZWRTaGVsbFRpbWVvdXRD
aGVjayk7IH0KICAgICB2b2lkIG5vdGlmeU5lZWRUZXJtaW5hdGlvbigpIHsgbV90cmFwcy5maXJl
VHJhcChWTVRyYXBzOjpOZWVkVGVybWluYXRpb24pOyB9CiAgICAgdm9pZCBub3RpZnlOZWVkV2F0
Y2hkb2dDaGVjaygpIHsgbV90cmFwcy5maXJlVHJhcChWTVRyYXBzOjpOZWVkV2F0Y2hkb2dDaGVj
ayk7IH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1UcmFwcy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1UcmFwcy5jcHAJ
KHJldmlzaW9uIDI1MzU0MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNVHJh
cHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTcsMTMgKzM1NywxOCBAQCB2b2lkIFZNVHJhcHM6
OmhhbmRsZVRyYXBzKEpTR2xvYmFsT2JqZWN0CiAgICAgICAgICAgICBkYXRhTG9nKCJWTSAiLCBS
YXdQb2ludGVyKCZ2bSksICIgb24gcGlkICIsIGdldEN1cnJlbnRQcm9jZXNzSUQoKSwgIiByZWNl
aXZlZCBOZWVkRGVidWdnZXJCcmVhayB0cmFwXG4iKTsKICAgICAgICAgICAgIGludmFsaWRhdGVD
b2RlQmxvY2tzT25TdGFjayhjYWxsRnJhbWUpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgCisKICAgICAgICAgY2FzZSBOZWVkV2F0Y2hkb2dDaGVjazoKICAgICAgICAgICAg
IEFTU0VSVCh2bS53YXRjaGRvZygpKTsKICAgICAgICAgICAgIGlmIChMSUtFTFkoIXZtLndhdGNo
ZG9nKCktPnNob3VsZFRlcm1pbmF0ZShnbG9iYWxPYmplY3QpKSkKICAgICAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgICAgIEZBTExUSFJPVUdIOwogCisgICAgICAgIGNhc2UgTmVlZFNo
ZWxsVGltZW91dENoZWNrOgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZ19qc2NDb25maWcu
c2hlbGxUaW1lb3V0Q2hlY2tDYWxsYmFjayk7CisgICAgICAgICAgICBnX2pzY0NvbmZpZy5zaGVs
bFRpbWVvdXRDaGVja0NhbGxiYWNrKHZtKTsKKyAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAg
IGNhc2UgTmVlZFRlcm1pbmF0aW9uOgogICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFs
T2JqZWN0LCBzY29wZSwgY3JlYXRlVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbigmdm0pKTsK
ICAgICAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNVHJhcHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TVRyYXBzLmgJKHJldmlzaW9uIDI1MzU0MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNVHJhcHMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE3LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01Miw2ICs1Miw3IEBAIHB1YmxpYzoKICAgICBl
bnVtIEV2ZW50VHlwZSB7CiAgICAgICAgIC8vIFNvcnRlZCBpbiBzZXJ2aWNpbmcgcHJpb3JpdHkg
b3JkZXIgZnJvbSBoaWdoZXN0IHRvIGxvd2VzdC4KICAgICAgICAgTmVlZERlYnVnZ2VyQnJlYWss
CisgICAgICAgIE5lZWRTaGVsbFRpbWVvdXRDaGVjaywKICAgICAgICAgTmVlZFRlcm1pbmF0aW9u
LAogICAgICAgICBOZWVkV2F0Y2hkb2dDaGVjaywKICAgICAgICAgTnVtYmVyT2ZFdmVudFR5cGVz
LCAvLyBUaGlzIGVudHJ5IG11c3QgYmUgbGFzdCBpbiB0aGlzIGxpc3QuCkBAIC02MSwxMyArNjIs
MTYgQEAgcHVibGljOgogICAgIGNsYXNzIE1hc2sgewogICAgIHB1YmxpYzoKICAgICAgICAgZW51
bSBBbGxFdmVudFR5cGVzIHsgQWxsRXZlbnRUeXBlc1RhZyB9OwotICAgICAgICBNYXNrKEFsbEV2
ZW50VHlwZXMpCisgICAgICAgIGNvbnN0ZXhwciBNYXNrKEFsbEV2ZW50VHlwZXMpCiAgICAgICAg
ICAgICA6IG1fbWFzayhzdGQ6Om51bWVyaWNfbGltaXRzPEJpdEZpZWxkPjo6bWF4KCkpCiAgICAg
ICAgIHsgfQotICAgICAgICBzdGF0aWMgTWFzayBhbGxFdmVudFR5cGVzKCkgeyByZXR1cm4gTWFz
ayhBbGxFdmVudFR5cGVzVGFnKTsgfQorICAgICAgICBzdGF0aWMgY29uc3RleHByIE1hc2sgYWxs
RXZlbnRUeXBlcygpIHsgcmV0dXJuIE1hc2soQWxsRXZlbnRUeXBlc1RhZyk7IH0KKworICAgICAg
ICBjb25zdGV4cHIgTWFzayhjb25zdCBNYXNrJikgPSBkZWZhdWx0OworICAgICAgICBjb25zdGV4
cHIgTWFzayhNYXNrJiYpID0gZGVmYXVsdDsKIAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4u
LiBBcmd1bWVudHM+Ci0gICAgICAgIE1hc2soQXJndW1lbnRzLi4uIGFyZ3MpCisgICAgICAgIGNv
bnN0ZXhwciBNYXNrKEFyZ3VtZW50cy4uLiBhcmdzKQogICAgICAgICAgICAgOiBtX21hc2soMCkK
ICAgICAgICAgewogICAgICAgICAgICAgaW5pdChhcmdzLi4uKTsKQEAgLTc3LDE4ICs4MSwyMCBA
QCBwdWJsaWM6CiAKICAgICBwcml2YXRlOgogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBB
cmd1bWVudHM+Ci0gICAgICAgIHZvaWQgaW5pdChFdmVudFR5cGUgZXZlbnRUeXBlLCBBcmd1bWVu
dHMuLi4gYXJncykKKyAgICAgICAgY29uc3RleHByIHZvaWQgaW5pdChFdmVudFR5cGUgZXZlbnRU
eXBlLCBBcmd1bWVudHMuLi4gYXJncykKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKGV2
ZW50VHlwZSA8IE51bWJlck9mRXZlbnRUeXBlcyk7CiAgICAgICAgICAgICBtX21hc2sgfD0gKDEg
PDwgZXZlbnRUeXBlKTsKICAgICAgICAgICAgIGluaXQoYXJncy4uLik7CiAgICAgICAgIH0KIAot
ICAgICAgICB2b2lkIGluaXQoKSB7IH0KKyAgICAgICAgY29uc3RleHByIHZvaWQgaW5pdCgpIHsg
fQogCiAgICAgICAgIEJpdEZpZWxkIG1fbWFzazsKICAgICB9OwogCisgICAgc3RhdGljIGNvbnN0
ZXhwciBNYXNrIGludGVycnVwdGluZ1RyYXBzKCkgeyByZXR1cm4gTWFzayhOZWVkU2hlbGxUaW1l
b3V0Q2hlY2ssIE5lZWRUZXJtaW5hdGlvbiwgTmVlZFdhdGNoZG9nQ2hlY2spOyB9CisKICAgICB+
Vk1UcmFwcygpOwogICAgIFZNVHJhcHMoKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rvb2xzL1ZNSW5zcGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvdG9vbHMvVk1JbnNwZWN0b3IuY3BwCShyZXZpc2lvbiAyNTM1NDIpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvdG9vbHMvVk1JbnNwZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYs
NiArMTA2LDEzIEBAIHN0YXRpYyBib29sIGVuc3VyZUlzU2FmZVRvTG9jayhMb2NrJiBsb2MKIH07
CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIAordm9pZCBWTUluc3BlY3Rvcjo6Zm9yRWFjaFZNKEZ1
bmN0aW9uPEZ1bmN0b3JTdGF0dXMoVk0mKT4mJiBmdW5jKQoreworICAgIFZNSW5zcGVjdG9yJiBp
bnNwZWN0b3IgPSBpbnN0YW5jZSgpOworICAgIExvY2tlciBsb2NrKGluc3BlY3Rvci5nZXRMb2Nr
KCkpOworICAgIGluc3BlY3Rvci5pdGVyYXRlKGZ1bmMpOworfQorCiBhdXRvIFZNSW5zcGVjdG9y
Ojppc1ZhbGlkRXhlY3V0YWJsZU1lbW9yeShjb25zdCBWTUluc3BlY3Rvcjo6TG9ja2VyJiwgdm9p
ZCogbWFjaGluZVBDKSAtPiBFeHBlY3RlZDxib29sLCBFcnJvcj4KIHsKICNpZiBFTkFCTEUoSklU
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1ZNSW5zcGVjdG9yLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1ZNSW5zcGVjdG9yLmgJKHJldmlz
aW9uIDI1MzU0MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9WTUluc3BlY3Rvci5o
CSh3b3JraW5nIGNvcHkpCkBAIC02MCw2ICs2MCw4IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgRnVuY3Rvcj4KICAgICB2b2lkIGl0ZXJhdGUoY29uc3QgTG9ja2VyJiwgY29uc3Qg
RnVuY3RvciYgZnVuY3RvcikgeyBpdGVyYXRlKGZ1bmN0b3IpOyB9CiAKKyAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgdm9pZCBmb3JFYWNoVk0oRnVuY3Rpb248RnVuY3RvclN0YXR1cyhWTSYp
PiYmKTsKKwogICAgIEV4cGVjdGVkPExvY2tlciwgRXJyb3I+IGxvY2soU2Vjb25kcyB0aW1lb3V0
ID0gU2Vjb25kczo6aW5maW5pdHkoKSk7CiAKICAgICBFeHBlY3RlZDxib29sLCBFcnJvcj4gaXNW
YWxpZEV4ZWN1dGFibGVNZW1vcnkoY29uc3QgTG9ja2VyJiwgdm9pZCopOwo=
</data>
<flag name="review"
          id="401569"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385858</attachid>
            <date>2019-12-16 23:26:10 -0800</date>
            <delta_ts>2019-12-16 23:26:10 -0800</delta_ts>
            <desc>patch for landing.</desc>
            <filename>bug-205279.patch</filename>
            <type>text/plain</type>
            <size>16117</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjUzNjEwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYxIEBA
CisyMDE5LTEyLTE2ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZWxhbmRpbmcgcjI1MzU4MTogQ2hhbmdlZCBqc2Mgc2hlbGwgdGltZW91dCBtZWNoYW5pc20gdG8g
bGV2ZXJhZ2UgdGhlIFZNVHJhcHMgYW5kIHVzZSBDUFVUaW1lLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1Mjc5CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS81Nzk3MTg3ND4KKworICAgICAgICBSZXZpZXdlZCBieSBTYWFtIEJhcmF0aS4KKworICAg
ICAgICBUaGlzIGZpeGVzIGFsbCB0aGUgdGltZW91dHMgdGhhdCBvY2N1ciBkdWUgdG8gQ1BVIHRp
bWUgc3RhcnZhdGlvbiB3aGVuCisgICAgICAgIHJ1bm5pbmcgSlNDIHRlc3RzIG9uIGEgZGVidWcg
YnVpbGQuCisKKyAgICAgICAgV2hhdCB0aGlzIG1lYW5zIGlzIHRoYXQgdGhlIHRpbWVvdXQgbWVj
aGFuaXNtIG1heSB0cmlnZ2VyIGFzeW5jaHJvbm91cworICAgICAgICBPU1IgZXhpdHMuICBJZiBh
IHRlc3QgcmVxdWlyZXMgbm8gT1NSIGV4aXRzLCB0aGF0IHRlc3Qgc2hvdWxkCisgICAgICAgIHJl
cXVpcmVPcHRpb24oIi0tdXNlUG9sbGluZ1RyYXBzPXRydWUiKSBzbyB0aGF0IHRoZSBWTVRyYXBz
IHdpbGwgdXNlIGl0cworICAgICAgICBwb2xsaW5nIGltcGxlbWVudGF0aW9uIGluc3RlYWQuCisK
KyAgICAgICAgSSd2ZSB0ZXN0ZWQgdGhpcyB3aXRoIGEgZnVsbCBydW4gb2YgdGhlIEpTQyBzdHJl
c3MgdGVzdHMgd2l0aCBhIGRlYnVnCisgICAgICAgIGJ1aWxkIGFuZCBzYXcgMCB0aW1lb3V0cy4g
IEkndmUgYWxzbyB0ZXN0ZWQgaXQgd2l0aCBhIGNvbnRyaXZlZCB0ZXN0cyB0aGF0CisgICAgICAg
IGxvb3BzIGZvcmV2ZXIsIGFuZCBzYXcgdGhlIGV4cGVjdGVkIHRpbWVvdXQgY3Jhc2guCisKKyAg
ICAgICAgV2lsbCBsb29rIGludG8gcmUtdHVuaW5nIG5lZWRlZCB0aW1lb3V0IHZhbHVlIChhbmQg
b3RoZXIgSlNDIHRlc3RzIHRpbWVvdXQKKyAgICAgICAgY2xlYW51cCkgaW4gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTI5OC4KKworICAgICAgICBVcGRhdGU6IGlu
IHRoZSBwcmV2aW91c2x5IGxhbmRlZCBwYXRjaCwgSSBkaWQgYSBsYXN0IG1pbnV0ZSBzb3J0IG9m
IHRoZSBjYXNlcworICAgICAgICBJbnQgdGhlIHN3aXRjaCBzdGF0ZW1lbnQgaW4gVk1UcmFwczo6
aGFuZGxlVHJhcHMoKSBiZWZvcmUgcG9zdGluZyBteSBwYXRjaC4KKyAgICAgICAgVGhpcyBpcyBp
bmNvcnJlY3QgdG8gZG8gc2luY2Ugb25lIG9mIHRoZSBjYXNlcyBuZWVkIHRvIGZhbGwgdGhyb3Vn
aCB0byBhbm90aGVyCisgICAgICAgIGNhc2UuICBUaGlzIHBhdGNoIHVuZG9lcyB0aGUgc29ydGlu
ZyB0byB0aGUgb3JkZXIgSSBvcmlnaW5hbGx5IGhhZCB0aGUgY2FzZXMKKyAgICAgICAgaW4gZHVy
aW5nIGRldmVsb3BtZW50IGFuZCB0ZXN0aW5nLgorCisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZVByb2dyYW0p
OgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZUNhbGwpOgorICAgICAgICAoSlND
OjpJbnRlcnByZXRlcjo6ZXhlY3V0ZUNvbnN0cnVjdCk6CisgICAgICAgIChKU0M6OkludGVycHJl
dGVyOjpleGVjdXRlKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGVNb2R1bGVQ
cm9ncmFtKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlcklubGluZXMuaDoKKyAg
ICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGUpOgorICAgICAgICAqIGpzYy5jcHA6Cisg
ICAgICAgIChzdGFydFRpbWVvdXRUaW1lcik6CisgICAgICAgICh0aW1lb3V0Q2hlY2tDYWxsYmFj
ayk6CisgICAgICAgIChpbml0aWFsaXplVGltZW91dElmTmVlZGVkKToKKyAgICAgICAgKHN0YXJ0
VGltZW91dFRocmVhZElmTmVlZGVkKToKKyAgICAgICAgKHJ1bkpTQyk6CisgICAgICAgIChqc2Nt
YWluKToKKyAgICAgICAgKiBydW50aW1lL0pTQ0NvbmZpZy5oOgorICAgICAgICAqIHJ1bnRpbWUv
Vk0uaDoKKyAgICAgICAgKEpTQzo6Vk06Om5vdGlmeU5lZWRTaGVsbFRpbWVvdXRDaGVjayk6Cisg
ICAgICAgICogcnVudGltZS9WTVRyYXBzLmNwcDoKKyAgICAgICAgKEpTQzo6Vk1UcmFwczo6aGFu
ZGxlVHJhcHMpOgorICAgICAgICAqIHJ1bnRpbWUvVk1UcmFwcy5oOgorICAgICAgICAoSlNDOjpW
TVRyYXBzOjpNYXNrOjpNYXNrKToKKyAgICAgICAgKEpTQzo6Vk1UcmFwczo6TWFzazo6YWxsRXZl
bnRUeXBlcyk6CisgICAgICAgIChKU0M6OlZNVHJhcHM6Ok1hc2s6OmluaXQpOgorICAgICAgICAo
SlNDOjpWTVRyYXBzOjppbnRlcnJ1cHRpbmdUcmFwcyk6CisgICAgICAgICogdG9vbHMvVk1JbnNw
ZWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpWTUluc3BlY3Rvcjo6Zm9yRWFjaFZNKToKKyAgICAg
ICAgKiB0b29scy9WTUluc3BlY3Rvci5oOgorCiAyMDE5LTEyLTE2ICBNYXJrIExhbSAgPG1hcmsu
bGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBSb2xsaW5nIG91dDogcjI1MzU4MSBpcyBmYWlsaW5n
IHRlc3RzIG9uIGEgcmVsZWFzZSBidWlsZC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
c2MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCShyZXZp
c2lvbiAyNTM2MTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzAsNiArNzAsNyBAQAogI2luY2x1ZGUgIlN1cGVyU2FtcGxlci5oIgogI2luY2x1
ZGUgIlRlc3RSdW5uZXJVdGlscy5oIgogI2luY2x1ZGUgIlR5cGVkQXJyYXlJbmxpbmVzLmgiCisj
aW5jbHVkZSAiVk1JbnNwZWN0b3IuaCIKICNpbmNsdWRlICJXYXNtQ2FwYWJpbGl0aWVzLmgiCiAj
aW5jbHVkZSAiV2FzbUNvbnRleHQuaCIKICNpbmNsdWRlICJXYXNtRmF1bHRTaWduYWxIYW5kbGVy
LmgiCkBAIC04NCw2ICs4NSw3IEBACiAjaW5jbHVkZSA8dGhyZWFkPgogI2luY2x1ZGUgPHR5cGVf
dHJhaXRzPgogI2luY2x1ZGUgPHd0Zi9Cb3guaD4KKyNpbmNsdWRlIDx3dGYvQ1BVVGltZS5oPgog
I2luY2x1ZGUgPHd0Zi9Db21tYVByaW50ZXIuaD4KICNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5o
PgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CkBAIC0yNDI3LDI0ICsyNDI5LDU4IEBAIGlu
dCBqc2NtYWluKGludCBhcmdjLCBjaGFyKiogYXJndik7CiAKIHN0YXRpYyBkb3VibGUgc19kZXNp
cmVkVGltZW91dDsKIHN0YXRpYyBkb3VibGUgc190aW1lb3V0TXVsdGlwbGllciA9IDEuMDsKK3N0
YXRpYyBTZWNvbmRzIHNfdGltZW91dER1cmF0aW9uOworc3RhdGljIFNlY29uZHMgc19tYXhBbGxv
d2VkQ1BVVGltZTsKK3N0YXRpYyBWTSogc192bTsKKworc3RhdGljIHZvaWQgc3RhcnRUaW1lb3V0
VGltZXIoU2Vjb25kcyBkdXJhdGlvbikKK3sKKyAgICBUaHJlYWQ6OmNyZWF0ZSgianNjIFRpbWVv
dXQgVGhyZWFkIiwgWz1dICgpIHsKKyAgICAgICAgc2xlZXAoZHVyYXRpb24pOworICAgICAgICBW
TUluc3BlY3Rvcjo6Zm9yRWFjaFZNKFsmXSAoVk0mIHZtKSAtPiBWTUluc3BlY3Rvcjo6RnVuY3Rv
clN0YXR1cyB7CisgICAgICAgICAgICBpZiAoJnZtICE9IHNfdm0pCisgICAgICAgICAgICAgICAg
cmV0dXJuIFZNSW5zcGVjdG9yOjpGdW5jdG9yU3RhdHVzOjpDb250aW51ZTsKKyAgICAgICAgICAg
IHZtLm5vdGlmeU5lZWRTaGVsbFRpbWVvdXRDaGVjaygpOworICAgICAgICAgICAgcmV0dXJuIFZN
SW5zcGVjdG9yOjpGdW5jdG9yU3RhdHVzOjpEb25lOworICAgICAgICB9KTsKKyAgICB9KTsKK30K
Kworc3RhdGljIHZvaWQgdGltZW91dENoZWNrQ2FsbGJhY2soVk0mIHZtKQoreworICAgIFJFTEVB
U0VfQVNTRVJUKCZ2bSA9PSBzX3ZtKTsKKyAgICBhdXRvIGNwdVRpbWUgPSBDUFVUaW1lOjpmb3JD
dXJyZW50VGhyZWFkKCk7CisgICAgaWYgKGNwdVRpbWUgPj0gc19tYXhBbGxvd2VkQ1BVVGltZSkg
eworICAgICAgICBkYXRhTG9nKCJUaW1lZCBvdXQgYWZ0ZXIgIiwgc190aW1lb3V0RHVyYXRpb24s
ICIgc2Vjb25kcyFcbiIpOworICAgICAgICBDUkFTSCgpOworICAgIH0KKyAgICBhdXRvIHJlbWFp
bmluZ1RpbWUgPSBzX21heEFsbG93ZWRDUFVUaW1lIC0gY3B1VGltZTsKKyAgICBzdGFydFRpbWVv
dXRUaW1lcihyZW1haW5pbmdUaW1lKTsKK30KIAotc3RhdGljIHZvaWQgc3RhcnRUaW1lb3V0VGhy
ZWFkSWZOZWVkZWQoKQorc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVRpbWVvdXRJZk5lZWRlZCgpCiB7
CiAgICAgaWYgKGNoYXIqIHRpbWVvdXRTdHJpbmcgPSBnZXRlbnYoIkpTQ1RFU1RfdGltZW91dCIp
KSB7CiAgICAgICAgIGlmIChzc2NhbmYodGltZW91dFN0cmluZywgIiVsZiIsICZzX2Rlc2lyZWRU
aW1lb3V0KSAhPSAxKSB7CiAgICAgICAgICAgICBkYXRhTG9nKCJXQVJOSU5HOiB0aW1lb3V0IHN0
cmluZyBpcyBtYWxmb3JtZWQsIGdvdCAiLCB0aW1lb3V0U3RyaW5nLAogICAgICAgICAgICAgICAg
ICIgYnV0IGV4cGVjdGVkIGEgbnVtYmVyLiBOb3QgdXNpbmcgYSB0aW1lb3V0LlxuIik7Ci0gICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBUaHJlYWQ6OmNyZWF0ZSgianNjIFRpbWVvdXQgVGhy
ZWFkIiwgW10gKCkgewotICAgICAgICAgICAgICAgIFNlY29uZHMgdGltZW91dER1cmF0aW9uKHNf
ZGVzaXJlZFRpbWVvdXQgKiBzX3RpbWVvdXRNdWx0aXBsaWVyKTsKLSAgICAgICAgICAgICAgICBz
bGVlcCh0aW1lb3V0RHVyYXRpb24pOwotICAgICAgICAgICAgICAgIGRhdGFMb2coIlRpbWVkIG91
dCBhZnRlciAiLCB0aW1lb3V0RHVyYXRpb24sICIgc2Vjb25kcyFcbiIpOwotICAgICAgICAgICAg
ICAgIENSQVNIKCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfQorICAgICAgICB9IGVsc2UK
KyAgICAgICAgICAgIGdfanNjQ29uZmlnLnNoZWxsVGltZW91dENoZWNrQ2FsbGJhY2sgPSB0aW1l
b3V0Q2hlY2tDYWxsYmFjazsKICAgICB9CiB9CiAKK3N0YXRpYyB2b2lkIHN0YXJ0VGltZW91dFRo
cmVhZElmTmVlZGVkKFZNJiB2bSkKK3sKKyAgICBpZiAoIWdfanNjQ29uZmlnLnNoZWxsVGltZW91
dENoZWNrQ2FsbGJhY2spCisgICAgICAgIHJldHVybjsKKworICAgIHNfdm0gPSAmdm07CisgICAg
c190aW1lb3V0RHVyYXRpb24gPSBTZWNvbmRzKHNfZGVzaXJlZFRpbWVvdXQgKiBzX3RpbWVvdXRN
dWx0aXBsaWVyKTsKKyAgICBzX21heEFsbG93ZWRDUFVUaW1lID0gQ1BVVGltZTo6Zm9yQ3VycmVu
dFRocmVhZCgpICsgc190aW1lb3V0RHVyYXRpb247CisgICAgU2Vjb25kcyB0aW1lb3V0RHVyYXRp
b24oc19kZXNpcmVkVGltZW91dCAqIHNfdGltZW91dE11bHRpcGxpZXIpOworICAgIHN0YXJ0VGlt
ZW91dFRpbWVyKHRpbWVvdXREdXJhdGlvbik7Cit9CisKIGludCBtYWluKGludCBhcmdjLCBjaGFy
KiogYXJndikKIHsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBDUFUoQVJNX1RIVU1CMikK
QEAgLTI5OTksNiArMzAzNSw3IEBAIGludCBydW5KU0MoY29uc3QgQ29tbWFuZExpbmUmIG9wdGlv
bnMsIGIKICAgICB7CiAgICAgICAgIEpTTG9ja0hvbGRlciBsb2NrZXIodm0pOwogCisgICAgICAg
IHN0YXJ0VGltZW91dFRocmVhZElmTmVlZGVkKHZtKTsKICAgICAgICAgaWYgKG9wdGlvbnMubV9w
cm9maWxlICYmICF2bS5tX3BlckJ5dGVjb2RlUHJvZmlsZXIpCiAgICAgICAgICAgICB2bS5tX3Bl
ckJ5dGVjb2RlUHJvZmlsZXIgPSBtYWtlVW5pcXVlPFByb2ZpbGVyOjpEYXRhYmFzZT4odm0pOwog
CkBAIC0zMDk5LDcgKzMxMzYsNyBAQCBpbnQganNjbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3Yp
CiAKICAgICAvLyBJbml0aWFsaXplIEpTQyBiZWZvcmUgZ2V0dGluZyBWTS4KICAgICBKU0M6Omlu
aXRpYWxpemVUaHJlYWRpbmcoKTsKLSAgICBzdGFydFRpbWVvdXRUaHJlYWRJZk5lZWRlZCgpOwor
ICAgIGluaXRpYWxpemVUaW1lb3V0SWZOZWVkZWQoKTsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkp
CiAgICAgSlNDOjpXYXNtOjplbmFibGVGYXN0TWVtb3J5KCk7CiAjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkocmV2
aXNpb24gMjUzNjEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVy
cHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODIwLDkgKzgyMCw5IEBAIGZhaWxlZEpTT05Q
OgogICAgICAgICBjb2RlQmxvY2sgPSBqc0Nhc3Q8UHJvZ3JhbUNvZGVCbG9jayo+KHRlbXBDb2Rl
QmxvY2spOwogICAgIH0KIAotICAgIFZNVHJhcHM6Ok1hc2sgbWFzayhWTVRyYXBzOjpOZWVkVGVy
bWluYXRpb24sIFZNVHJhcHM6Ok5lZWRXYXRjaGRvZ0NoZWNrKTsKLSAgICBpZiAoVU5MSUtFTFko
dm0ubmVlZFRyYXBIYW5kbGluZyhtYXNrKSkpIHsKLSAgICAgICAgdm0uaGFuZGxlVHJhcHMoZ2xv
YmFsT2JqZWN0LCB2bS50b3BDYWxsRnJhbWUsIG1hc2spOworICAgIGNvbnN0ZXhwciBhdXRvIHRy
YXBzTWFzayA9IFZNVHJhcHM6OmludGVycnVwdGluZ1RyYXBzKCk7CisgICAgaWYgKFVOTElLRUxZ
KHZtLm5lZWRUcmFwSGFuZGxpbmcodHJhcHNNYXNrKSkpIHsKKyAgICAgICAgdm0uaGFuZGxlVHJh
cHMoZ2xvYmFsT2JqZWN0LCB2bS50b3BDYWxsRnJhbWUsIHRyYXBzTWFzayk7CiAgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgdGhyb3dTY29wZS5leGNlcHRpb24oKSk7CiAg
ICAgfQogCkBAIC04ODEsOSArODgxLDkgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNh
bGwoSlNHbG9iYQogICAgIH0gZWxzZQogICAgICAgICBuZXdDb2RlQmxvY2sgPSAwOwogCi0gICAg
Vk1UcmFwczo6TWFzayBtYXNrKFZNVHJhcHM6Ok5lZWRUZXJtaW5hdGlvbiwgVk1UcmFwczo6TmVl
ZFdhdGNoZG9nQ2hlY2spOwotICAgIGlmIChVTkxJS0VMWSh2bS5uZWVkVHJhcEhhbmRsaW5nKG1h
c2spKSkgewotICAgICAgICB2bS5oYW5kbGVUcmFwcyhnbG9iYWxPYmplY3QsIHZtLnRvcENhbGxG
cmFtZSwgbWFzayk7CisgICAgY29uc3RleHByIGF1dG8gdHJhcHNNYXNrID0gVk1UcmFwczo6aW50
ZXJydXB0aW5nVHJhcHMoKTsKKyAgICBpZiAoVU5MSUtFTFkodm0ubmVlZFRyYXBIYW5kbGluZyh0
cmFwc01hc2spKSkgeworICAgICAgICB2bS5oYW5kbGVUcmFwcyhnbG9iYWxPYmplY3QsIHZtLnRv
cENhbGxGcmFtZSwgdHJhcHNNYXNrKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCB0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKTsKICAgICB9CiAKQEAgLTk1Miw5ICs5NTIs
OSBAQCBKU09iamVjdCogSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDb25zdHJ1Y3QoCiAgICAgfSBlbHNl
CiAgICAgICAgIG5ld0NvZGVCbG9jayA9IDA7CiAKLSAgICBWTVRyYXBzOjpNYXNrIG1hc2soVk1U
cmFwczo6TmVlZFRlcm1pbmF0aW9uLCBWTVRyYXBzOjpOZWVkV2F0Y2hkb2dDaGVjayk7Ci0gICAg
aWYgKFVOTElLRUxZKHZtLm5lZWRUcmFwSGFuZGxpbmcobWFzaykpKSB7Ci0gICAgICAgIHZtLmhh
bmRsZVRyYXBzKGdsb2JhbE9iamVjdCwgdm0udG9wQ2FsbEZyYW1lLCBtYXNrKTsKKyAgICBjb25z
dGV4cHIgYXV0byB0cmFwc01hc2sgPSBWTVRyYXBzOjppbnRlcnJ1cHRpbmdUcmFwcygpOworICAg
IGlmIChVTkxJS0VMWSh2bS5uZWVkVHJhcEhhbmRsaW5nKHRyYXBzTWFzaykpKSB7CisgICAgICAg
IHZtLmhhbmRsZVRyYXBzKGdsb2JhbE9iamVjdCwgdm0udG9wQ2FsbEZyYW1lLCB0cmFwc01hc2sp
OwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIG51bGxwdHIpOwogICAg
IH0KIApAQCAtMTEzNiw5ICsxMTM2LDkgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShF
dmFsRXhlY3V0YQogICAgICAgICB9CiAgICAgfQogCi0gICAgVk1UcmFwczo6TWFzayBtYXNrKFZN
VHJhcHM6Ok5lZWRUZXJtaW5hdGlvbiwgVk1UcmFwczo6TmVlZFdhdGNoZG9nQ2hlY2spOwotICAg
IGlmIChVTkxJS0VMWSh2bS5uZWVkVHJhcEhhbmRsaW5nKG1hc2spKSkgewotICAgICAgICB2bS5o
YW5kbGVUcmFwcyhnbG9iYWxPYmplY3QsIHZtLnRvcENhbGxGcmFtZSwgbWFzayk7CisgICAgY29u
c3RleHByIGF1dG8gdHJhcHNNYXNrID0gVk1UcmFwczo6aW50ZXJydXB0aW5nVHJhcHMoKTsKKyAg
ICBpZiAoVU5MSUtFTFkodm0ubmVlZFRyYXBIYW5kbGluZyh0cmFwc01hc2spKSkgeworICAgICAg
ICB2bS5oYW5kbGVUcmFwcyhnbG9iYWxPYmplY3QsIHZtLnRvcENhbGxGcmFtZSwgdHJhcHNNYXNr
KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB0aHJvd1Njb3BlLmV4
Y2VwdGlvbigpKTsKICAgICB9CiAKQEAgLTExODYsOSArMTE4Niw5IEBAIEpTVmFsdWUgSW50ZXJw
cmV0ZXI6OmV4ZWN1dGVNb2R1bGVQcm9ncmEKICAgICAgICAgY29kZUJsb2NrID0ganNDYXN0PE1v
ZHVsZVByb2dyYW1Db2RlQmxvY2sqPih0ZW1wQ29kZUJsb2NrKTsKICAgICB9CiAKLSAgICBWTVRy
YXBzOjpNYXNrIG1hc2soVk1UcmFwczo6TmVlZFRlcm1pbmF0aW9uLCBWTVRyYXBzOjpOZWVkV2F0
Y2hkb2dDaGVjayk7Ci0gICAgaWYgKFVOTElLRUxZKHZtLm5lZWRUcmFwSGFuZGxpbmcobWFzaykp
KSB7Ci0gICAgICAgIHZtLmhhbmRsZVRyYXBzKGdsb2JhbE9iamVjdCwgdm0udG9wQ2FsbEZyYW1l
LCBtYXNrKTsKKyAgICBjb25zdGV4cHIgYXV0byB0cmFwc01hc2sgPSBWTVRyYXBzOjppbnRlcnJ1
cHRpbmdUcmFwcygpOworICAgIGlmIChVTkxJS0VMWSh2bS5uZWVkVHJhcEhhbmRsaW5nKHRyYXBz
TWFzaykpKSB7CisgICAgICAgIHZtLmhhbmRsZVRyYXBzKGdsb2JhbE9iamVjdCwgdm0udG9wQ2Fs
bEZyYW1lLCB0cmFwc01hc2spOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIHRocm93U2NvcGUuZXhjZXB0aW9uKCkpOwogICAgIH0KIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVySW5saW5lcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlcklubGluZXMuaAko
cmV2aXNpb24gMjUzNjEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVySW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAq
IENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTc0LDkgKzc0LDkgQEAg
QUxXQVlTX0lOTElORSBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdQogCiAgICAgU3RhY2tTdGF0
czo6Q2hlY2tQb2ludCBzdGFja0NoZWNrUG9pbnQ7CiAKLSAgICBWTVRyYXBzOjpNYXNrIG1hc2so
Vk1UcmFwczo6TmVlZFRlcm1pbmF0aW9uLCBWTVRyYXBzOjpOZWVkV2F0Y2hkb2dDaGVjayk7Ci0g
ICAgaWYgKFVOTElLRUxZKHZtLm5lZWRUcmFwSGFuZGxpbmcobWFzaykpKSB7Ci0gICAgICAgIHZt
LmhhbmRsZVRyYXBzKGNsb3N1cmUucHJvdG9DYWxsRnJhbWUtPmdsb2JhbE9iamVjdCwgY2xvc3Vy
ZS5vbGRDYWxsRnJhbWUsIG1hc2spOworICAgIGNvbnN0ZXhwciBhdXRvIHRyYXBzTWFzayA9IFZN
VHJhcHM6OmludGVycnVwdGluZ1RyYXBzKCk7CisgICAgaWYgKFVOTElLRUxZKHZtLm5lZWRUcmFw
SGFuZGxpbmcodHJhcHNNYXNrKSkpIHsKKyAgICAgICAgdm0uaGFuZGxlVHJhcHMoY2xvc3VyZS5w
cm90b0NhbGxGcmFtZS0+Z2xvYmFsT2JqZWN0LCBjbG9zdXJlLm9sZENhbGxGcmFtZSwgdHJhcHNN
YXNrKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB0aHJvd1Njb3Bl
LmV4Y2VwdGlvbigpKTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ0NvbmZpZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ0NvbmZpZy5oCShyZXZpc2lvbiAyNTM2MTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NDb25maWcuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgRXhlY3V0YWJsZUFsbG9jYXRvcjsKIGNsYXNzIEZpeGVk
Vk1Qb29sRXhlY3V0YWJsZUFsbG9jYXRvcjsKK2NsYXNzIFZNOwogCiAjaWYgQ1BVKEFSTTY0KSB8
fCBQTEFURk9STShXQVRDSE9TKQogY29uc3RleHByIHNpemVfdCBQYWdlU2l6ZSA9IDE2ICogS0I7
CkBAIC04Miw2ICs4Myw4IEBAIHN0cnVjdCBDb25maWcgewogI2VuZGlmCiAKICAgICAgICAgICAg
IE9wdGlvbnNTdG9yYWdlIG9wdGlvbnM7CisKKyAgICAgICAgICAgIHZvaWQgKCpzaGVsbFRpbWVv
dXRDaGVja0NhbGxiYWNrKShWTSYpOwogICAgICAgICB9OwogICAgICAgICBjaGFyIGVuc3VyZVNp
emVbQ29uZmlnU2l6ZVRvUHJvdGVjdF07CiAgICAgfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uaAkocmV2aXNpb24gMjUzNjEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uaAkod29ya2luZyBjb3B5KQpAQCAtMTA2Nyw2ICsxMDY3LDcgQEAgcHVibGljOgog
ICAgIHZvaWQqIG5lZWRUcmFwSGFuZGxpbmdBZGRyZXNzKCkgeyByZXR1cm4gbV90cmFwcy5uZWVk
VHJhcEhhbmRsaW5nQWRkcmVzcygpOyB9CiAKICAgICB2b2lkIG5vdGlmeU5lZWREZWJ1Z2dlckJy
ZWFrKCkgeyBtX3RyYXBzLmZpcmVUcmFwKFZNVHJhcHM6Ok5lZWREZWJ1Z2dlckJyZWFrKTsgfQor
ICAgIHZvaWQgbm90aWZ5TmVlZFNoZWxsVGltZW91dENoZWNrKCkgeyBtX3RyYXBzLmZpcmVUcmFw
KFZNVHJhcHM6Ok5lZWRTaGVsbFRpbWVvdXRDaGVjayk7IH0KICAgICB2b2lkIG5vdGlmeU5lZWRU
ZXJtaW5hdGlvbigpIHsgbV90cmFwcy5maXJlVHJhcChWTVRyYXBzOjpOZWVkVGVybWluYXRpb24p
OyB9CiAgICAgdm9pZCBub3RpZnlOZWVkV2F0Y2hkb2dDaGVjaygpIHsgbV90cmFwcy5maXJlVHJh
cChWTVRyYXBzOjpOZWVkV2F0Y2hkb2dDaGVjayk7IH0KIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk1UcmFwcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk1UcmFwcy5jcHAJKHJldmlzaW9uIDI1MzYxMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNVHJhcHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTcs
NyArMzU3LDEyIEBAIHZvaWQgVk1UcmFwczo6aGFuZGxlVHJhcHMoSlNHbG9iYWxPYmplY3QKICAg
ICAgICAgICAgIGRhdGFMb2coIlZNICIsIFJhd1BvaW50ZXIoJnZtKSwgIiBvbiBwaWQgIiwgZ2V0
Q3VycmVudFByb2Nlc3NJRCgpLCAiIHJlY2VpdmVkIE5lZWREZWJ1Z2dlckJyZWFrIHRyYXBcbiIp
OwogICAgICAgICAgICAgaW52YWxpZGF0ZUNvZGVCbG9ja3NPblN0YWNrKGNhbGxGcmFtZSk7CiAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAKKworICAgICAgICBjYXNlIE5lZWRT
aGVsbFRpbWVvdXRDaGVjazoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGdfanNjQ29uZmln
LnNoZWxsVGltZW91dENoZWNrQ2FsbGJhY2spOworICAgICAgICAgICAgZ19qc2NDb25maWcuc2hl
bGxUaW1lb3V0Q2hlY2tDYWxsYmFjayh2bSk7CisgICAgICAgICAgICBicmVhazsKKwogICAgICAg
ICBjYXNlIE5lZWRXYXRjaGRvZ0NoZWNrOgogICAgICAgICAgICAgQVNTRVJUKHZtLndhdGNoZG9n
KCkpOwogICAgICAgICAgICAgaWYgKExJS0VMWSghdm0ud2F0Y2hkb2coKS0+c2hvdWxkVGVybWlu
YXRlKGdsb2JhbE9iamVjdCkpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk1UcmFwcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
VHJhcHMuaAkocmV2aXNpb24gMjUzNjEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk1UcmFwcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTUyLDYgKzUyLDcgQEAgcHVibGljOgogICAgIGVu
dW0gRXZlbnRUeXBlIHsKICAgICAgICAgLy8gU29ydGVkIGluIHNlcnZpY2luZyBwcmlvcml0eSBv
cmRlciBmcm9tIGhpZ2hlc3QgdG8gbG93ZXN0LgogICAgICAgICBOZWVkRGVidWdnZXJCcmVhaywK
KyAgICAgICAgTmVlZFNoZWxsVGltZW91dENoZWNrLAogICAgICAgICBOZWVkVGVybWluYXRpb24s
CiAgICAgICAgIE5lZWRXYXRjaGRvZ0NoZWNrLAogICAgICAgICBOdW1iZXJPZkV2ZW50VHlwZXMs
IC8vIFRoaXMgZW50cnkgbXVzdCBiZSBsYXN0IGluIHRoaXMgbGlzdC4KQEAgLTYxLDEzICs2Miwx
NiBAQCBwdWJsaWM6CiAgICAgY2xhc3MgTWFzayB7CiAgICAgcHVibGljOgogICAgICAgICBlbnVt
IEFsbEV2ZW50VHlwZXMgeyBBbGxFdmVudFR5cGVzVGFnIH07Ci0gICAgICAgIE1hc2soQWxsRXZl
bnRUeXBlcykKKyAgICAgICAgY29uc3RleHByIE1hc2soQWxsRXZlbnRUeXBlcykKICAgICAgICAg
ICAgIDogbV9tYXNrKHN0ZDo6bnVtZXJpY19saW1pdHM8Qml0RmllbGQ+OjptYXgoKSkKICAgICAg
ICAgeyB9Ci0gICAgICAgIHN0YXRpYyBNYXNrIGFsbEV2ZW50VHlwZXMoKSB7IHJldHVybiBNYXNr
KEFsbEV2ZW50VHlwZXNUYWcpOyB9CisgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgTWFzayBhbGxF
dmVudFR5cGVzKCkgeyByZXR1cm4gTWFzayhBbGxFdmVudFR5cGVzVGFnKTsgfQorCisgICAgICAg
IGNvbnN0ZXhwciBNYXNrKGNvbnN0IE1hc2smKSA9IGRlZmF1bHQ7CisgICAgICAgIGNvbnN0ZXhw
ciBNYXNrKE1hc2smJikgPSBkZWZhdWx0OwogCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4u
IEFyZ3VtZW50cz4KLSAgICAgICAgTWFzayhBcmd1bWVudHMuLi4gYXJncykKKyAgICAgICAgY29u
c3RleHByIE1hc2soQXJndW1lbnRzLi4uIGFyZ3MpCiAgICAgICAgICAgICA6IG1fbWFzaygwKQog
ICAgICAgICB7CiAgICAgICAgICAgICBpbml0KGFyZ3MuLi4pOwpAQCAtNzcsMTggKzgxLDIwIEBA
IHB1YmxpYzoKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFy
Z3VtZW50cz4KLSAgICAgICAgdm9pZCBpbml0KEV2ZW50VHlwZSBldmVudFR5cGUsIEFyZ3VtZW50
cy4uLiBhcmdzKQorICAgICAgICBjb25zdGV4cHIgdm9pZCBpbml0KEV2ZW50VHlwZSBldmVudFR5
cGUsIEFyZ3VtZW50cy4uLiBhcmdzKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoZXZl
bnRUeXBlIDwgTnVtYmVyT2ZFdmVudFR5cGVzKTsKICAgICAgICAgICAgIG1fbWFzayB8PSAoMSA8
PCBldmVudFR5cGUpOwogICAgICAgICAgICAgaW5pdChhcmdzLi4uKTsKICAgICAgICAgfQogCi0g
ICAgICAgIHZvaWQgaW5pdCgpIHsgfQorICAgICAgICBjb25zdGV4cHIgdm9pZCBpbml0KCkgeyB9
CiAKICAgICAgICAgQml0RmllbGQgbV9tYXNrOwogICAgIH07CiAKKyAgICBzdGF0aWMgY29uc3Rl
eHByIE1hc2sgaW50ZXJydXB0aW5nVHJhcHMoKSB7IHJldHVybiBNYXNrKE5lZWRTaGVsbFRpbWVv
dXRDaGVjaywgTmVlZFRlcm1pbmF0aW9uLCBOZWVkV2F0Y2hkb2dDaGVjayk7IH0KKwogICAgIH5W
TVRyYXBzKCk7CiAgICAgVk1UcmFwcygpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
dG9vbHMvVk1JbnNwZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90b29scy9WTUluc3BlY3Rvci5jcHAJKHJldmlzaW9uIDI1MzYxMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS90b29scy9WTUluc3BlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNiw2
ICsxMDYsMTMgQEAgc3RhdGljIGJvb2wgZW5zdXJlSXNTYWZlVG9Mb2NrKExvY2smIGxvYwogfTsK
ICNlbmRpZiAvLyBFTkFCTEUoSklUKQogCit2b2lkIFZNSW5zcGVjdG9yOjpmb3JFYWNoVk0oRnVu
Y3Rpb248RnVuY3RvclN0YXR1cyhWTSYpPiYmIGZ1bmMpCit7CisgICAgVk1JbnNwZWN0b3ImIGlu
c3BlY3RvciA9IGluc3RhbmNlKCk7CisgICAgTG9ja2VyIGxvY2soaW5zcGVjdG9yLmdldExvY2so
KSk7CisgICAgaW5zcGVjdG9yLml0ZXJhdGUoZnVuYyk7Cit9CisKIGF1dG8gVk1JbnNwZWN0b3I6
OmlzVmFsaWRFeGVjdXRhYmxlTWVtb3J5KGNvbnN0IFZNSW5zcGVjdG9yOjpMb2NrZXImLCB2b2lk
KiBtYWNoaW5lUEMpIC0+IEV4cGVjdGVkPGJvb2wsIEVycm9yPgogewogI2lmIEVOQUJMRShKSVQp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvVk1JbnNwZWN0b3IuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvVk1JbnNwZWN0b3IuaAkocmV2aXNp
b24gMjUzNjEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1ZNSW5zcGVjdG9yLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTYwLDYgKzYwLDggQEAgcHVibGljOgogICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBGdW5jdG9yPgogICAgIHZvaWQgaXRlcmF0ZShjb25zdCBMb2NrZXImLCBjb25zdCBG
dW5jdG9yJiBmdW5jdG9yKSB7IGl0ZXJhdGUoZnVuY3Rvcik7IH0KIAorICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyB2b2lkIGZvckVhY2hWTShGdW5jdGlvbjxGdW5jdG9yU3RhdHVzKFZNJik+
JiYpOworCiAgICAgRXhwZWN0ZWQ8TG9ja2VyLCBFcnJvcj4gbG9jayhTZWNvbmRzIHRpbWVvdXQg
PSBTZWNvbmRzOjppbmZpbml0eSgpKTsKIAogICAgIEV4cGVjdGVkPGJvb2wsIEVycm9yPiBpc1Zh
bGlkRXhlY3V0YWJsZU1lbW9yeShjb25zdCBMb2NrZXImLCB2b2lkKik7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>