<?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>226994</bug_id>
          
          <creation_ts>2021-06-14 15:52:10 -0700</creation_ts>
          <short_desc>Add basic detection of unresponsive Network / GPU Processes</short_desc>
          <delta_ts>2021-09-08 14:33:38 -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>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=230016</see_also>
          <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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>ggaren</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>sihui_liu</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1769584</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-14 15:52:10 -0700</bug_when>
    <thetext>Add basic detection of unresponsive Network / GPU Processes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769588</commentid>
    <comment_count>1</comment_count>
      <attachid>431376</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-14 16:00:17 -0700</bug_when>
    <thetext>Created attachment 431376
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769823</commentid>
    <comment_count>2</comment_count>
      <attachid>431445</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-15 09:04:46 -0700</bug_when>
    <thetext>Created attachment 431445
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769873</commentid>
    <comment_count>3</comment_count>
      <attachid>431445</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-06-15 11:03:59 -0700</bug_when>
    <thetext>Comment on attachment 431445
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769874</commentid>
    <comment_count>4</comment_count>
      <attachid>431445</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-06-15 11:07:34 -0700</bug_when>
    <thetext>Comment on attachment 431445
Patch

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

&gt; Source/WebKit/UIProcess/AuxiliaryProcessProxy.cpp:355
&gt; +void AuxiliaryProcessProxy::startResponsivenessTimer(UseLazyStop useLazyStop)

Not new to this patch, but I think the code would be clearer if it were two separate functions: startResponsivenessTimerAfterLaunch() (conditional) and startResponsivenessTimer() (unconditional).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769885</commentid>
    <comment_count>5</comment_count>
      <attachid>431445</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-15 11:30:58 -0700</bug_when>
    <thetext>Comment on attachment 431445
Patch

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

&gt;&gt; Source/WebKit/UIProcess/AuxiliaryProcessProxy.cpp:355
&gt;&gt; +void AuxiliaryProcessProxy::startResponsivenessTimer(UseLazyStop useLazyStop)
&gt; 
&gt; Not new to this patch, but I think the code would be clearer if it were two separate functions: startResponsivenessTimerAfterLaunch() (conditional) and startResponsivenessTimer() (unconditional).

But then nobody would call startResponsivenessTimerAfterLaunch() besides startResponsivenessTimer()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769947</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-15 13:53:35 -0700</bug_when>
    <thetext>Committed r278895 (238837@main): &lt;https://commits.webkit.org/238837@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 431445.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769949</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-06-15 13:54:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/79360129&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770252</commentid>
    <comment_count>8</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-06-16 10:29:55 -0700</bug_when>
    <thetext>&gt; &gt;&gt; Source/WebKit/UIProcess/AuxiliaryProcessProxy.cpp:355
&gt; &gt;&gt; +void AuxiliaryProcessProxy::startResponsivenessTimer(UseLazyStop useLazyStop)
&gt; &gt; 
&gt; &gt; Not new to this patch, but I think the code would be clearer if it were two separate functions: startResponsivenessTimerAfterLaunch() (conditional) and startResponsivenessTimer() (unconditional).
&gt; 
&gt; But then nobody would call startResponsivenessTimerAfterLaunch() besides
&gt; startResponsivenessTimer()?

I would have all callers call startResponsivenessTimerAfterLaunch(), except for startResponsivenessTimer() and didFinishLaunching().

(Would also be OK if didFinishLaunching() called startResponsivenessTimerAfterLaunch(), I guess, just a little unnecessary; but the rename clarity would still hold, I think.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770257</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-16 10:32:59 -0700</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #8)
&gt; &gt; &gt;&gt; Source/WebKit/UIProcess/AuxiliaryProcessProxy.cpp:355
&gt; &gt; &gt;&gt; +void AuxiliaryProcessProxy::startResponsivenessTimer(UseLazyStop useLazyStop)
&gt; &gt; &gt; 
&gt; &gt; &gt; Not new to this patch, but I think the code would be clearer if it were two separate functions: startResponsivenessTimerAfterLaunch() (conditional) and startResponsivenessTimer() (unconditional).
&gt; &gt; 
&gt; &gt; But then nobody would call startResponsivenessTimerAfterLaunch() besides
&gt; &gt; startResponsivenessTimer()?
&gt; 
&gt; I would have all callers call startResponsivenessTimerAfterLaunch(), except
&gt; for startResponsivenessTimer() and didFinishLaunching().
&gt; 
&gt; (Would also be OK if didFinishLaunching() called
&gt; startResponsivenessTimerAfterLaunch(), I guess, just a little unnecessary;
&gt; but the rename clarity would still hold, I think.)

Callers don&apos;t know if the process is done launching. They would have to check if the process is already launched before calling startResponsivenessTimerAfterLaunch().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1791625</commentid>
    <comment_count>10</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-09-08 14:33:38 -0700</bug_when>
    <thetext>We decided to hold off using responsiveness timer in NetworkProcessProxy in https://bugs.webkit.org/show_bug.cgi?id=230016, because network process gets killed too often for hangs (or some slow operations) and it leads to web process crashes. Relaunching network process seems to not resolve the issue.

We may turn it on after we identify the root cause and get it fixed.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431376</attachid>
            <date>2021-06-14 16:00:17 -0700</date>
            <delta_ts>2021-06-15 09:04:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226994-20210614160016.patch</filename>
            <type>text/plain</type>
            <size>28393</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4ODM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGVjNzNjYzdjODkyZGJlMzli
NTMwZGQ0ZWEyMTg0NDUzN2QwODNhNjQuLjA3MWVmZGQ2ZDVlMmY4NzNiMTA2ZDAyY2Y4MjA3NjAz
YjkyYWQzMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzAgQEAKKzIwMjEtMDYtMTQgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYmFzaWMgZGV0ZWN0aW9uIG9m
IHVucmVzcG9uc2l2ZSBOZXR3b3JrIC8gR1BVIFByb2Nlc3NlcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2OTk0CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSWYgYSBXZWJQcm9jZXNzIEEgYXR0ZW1wdHMg
dG8gY29ubmVjdCB0byB0aGUgR1BVUHJvY2VzcyAvIE5ldHdvcmtQcm9jZXNzIEIgYW5kIHByb2Nl
c3MgQgorICAgICAgICBmYWlscyB0byByZXNwb25kIHdpdGhpbiAzIHNlY29uZHMsIHdlIGNvbnNp
ZGVyIHByb2Nlc3MgQiBhcyB1bnJlc3BvbnNpdmUgYW5kIHRlcm1pbmF0ZQorICAgICAgICBpdC4g
QXMgYSByZXN1bHQsIGl0IHdpbGwgcmUtYXR0ZW1wdCB0byBsYXVuY2ggcHJvY2VzcyBCIGFuZCBj
b25uZWN0IHRvIGl0IGFnYWluLgorCisgICAgICAgIFRoaXMgaGVscHMgaW4gdGhlIGZvbGxvd2lu
ZyBzY2VuYXJpbzoKKyAgICAgICAgMS4gVXNlciBpcyBpbiBhIHRhYiBhbmQgc29tZXRoaW5nIGxv
b2tzIGJyb2tlbiBkdWUgdG8gdGhlIEdQVVByb2Nlc3Mgb3IgTmV0d29ya1Byb2Nlc3MKKyAgICAg
ICAgICAgYmVjb21pbmcgdW5yZXNwb25zaXZlCisgICAgICAgIDIuIFRoZSB1c2VyIHRyaWVzIHRv
IHJlbG9hZCB0aGUgcGFnZSBpbiBhIG5ldyB0YWIKKworICAgICAgICBCZWZvcmUgdGhpcyBwYXRj
aCwgdGhlIHRhYiB3b3VsZCBiZSBzaW1pbGFybHkgYnJva2VuIC8gaHVuZyBiZWNhdXNlIHRoZSBH
UFVQcm9jZXNzIG9yCisgICAgICAgIE5ldHdvcmtQcm9jZXNzIHdvdWxkIGJlIHVucmVzcG9uc2l2
ZS4gQWZ0ZXIgdGhpcyBwYXRjaCwgd2Ugd291bGQgZGV0ZWN0IHRoZSBwcm9jZXNzIGlzCisgICAg
ICAgIGh1bmcgYW5kIGtpbGwgaXQuIEFzIGEgcmVzdWx0LCB0aGUgcGFnZSB3b3VsZCBsb2FkIGNv
cnJlY3RseSBpbiBhIG5ldyB0YWIgKHdpdGggYSBkZWxheSkuCisKKyAgICAgICAgSW4gYSBmb2xs
b3ctdXAsIEkgdGhpbmsgd2Ugc2hvdWxkIGNvbnNpZGVyIGRvaW5nIHRoZSBzYW1lIHRoaW5nIHdo
ZW4gdGhlIHVzZXIgcmVxdWVzdHMKKyAgICAgICAgYSByZWxvYWQsIHNvIHRoYXQgd2UgZG9uJ3Qg
cmVxdWlyZSBvcGVuaW5nIGEgbmV3IHRhYiB0byByZWNvdmVyLiBIb3dldmVyLCB0aGlzIGtlZXBz
CisgICAgICAgIHRoZSBwYXRjaCBzbWFsbCBhbmQgaXMgYSBkZWNlbnQgZmlyc3Qgc3RlcC4KKwor
ICAgICAgICAqIFNoYXJlZC9Qcm9jZXNzVGVybWluYXRpb25SZWFzb24uaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6QXV4
aWxpYXJ5UHJvY2Vzc1Byb3h5OjpBdXhpbGlhcnlQcm9jZXNzUHJveHkpOgorICAgICAgICAoV2Vi
S2l0OjpBdXhpbGlhcnlQcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGluZyk6CisgICAgICAg
IChXZWJLaXQ6OkF1eGlsaWFyeVByb2Nlc3NQcm94eTo6c2h1dERvd25Qcm9jZXNzKToKKyAgICAg
ICAgKFdlYktpdDo6QXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpwbGF0Zm9ybUlzQmVpbmdEZWJ1Z2dl
ZCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OkF1eGlsaWFyeVByb2Nlc3NQcm94eTo6c3RvcFJl
c3BvbnNpdmVuZXNzVGltZXIpOgorICAgICAgICAoV2ViS2l0OjpBdXhpbGlhcnlQcm9jZXNzUHJv
eHk6OnN0YXJ0UmVzcG9uc2l2ZW5lc3NUaW1lcik6CisgICAgICAgIChXZWJLaXQ6OkF1eGlsaWFy
eVByb2Nlc3NQcm94eTo6bWF5QmVjb21lVW5yZXNwb25zaXZlKToKKyAgICAgICAgKFdlYktpdDo6
QXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpkaWRCZWNvbWVVbnJlc3BvbnNpdmUpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6QXV4
aWxpYXJ5UHJvY2Vzc1Byb3h5OjpyZXNwb25zaXZlbmVzc1RpbWVyKToKKyAgICAgICAgKFdlYktp
dDo6QXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpyZXNwb25zaXZlbmVzc1RpbWVyIGNvbnN0KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW06CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6cGxhdGZvcm1Jc0JlaW5nRGVidWdnZWQgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vzc1Byb3h5OjpnZXRHUFVQcm9jZXNzQ29ubmVjdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3NQcm94eTo6Z3B1UHJvY2Vzc0V4aXRlZCk6
CisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3NQcm94eTo6ZGlkQmVjb21lVW5yZXNwb25zaXZl
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRCZWNvbWVVbnJlc3BvbnNpdmUpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlJlc3BvbnNpdmVuZXNzVGltZXI6OnRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViS2l0
OjpSZXNwb25zaXZlbmVzc1RpbWVyOjptYXlCZWNvbWVVbnJlc3BvbnNpdmUgY29uc3QpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9SZXNwb25zaXZlbmVzc1RpbWVyLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6
OmdwdVByb2Nlc3NFeGl0ZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OldlYlByb2Nlc3NQcm94eSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6c2h1dERvd24pOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGluZyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6aXNSZXNwb25zaXZlIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzVGVybWluYXRlZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQcm94eTo6cGxhdGZvcm1Jc0JlaW5nRGVidWdnZWQgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6Om1heUJlY29tZVVucmVzcG9u
c2l2ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6c3RvcFJl
c3BvbnNpdmVuZXNzVGltZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UHJveHk6OnN0YXJ0UmVzcG9uc2l2ZW5lc3NUaW1lcik6IERlbGV0ZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJv
eHk6OnJlc3BvbnNpdmVuZXNzVGltZXIpOiBEZWxldGVkLgorCiAyMDIxLTA2LTE0ICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIFRpZ2h0ZW4gdGhl
IFdlYkF1dGhuIFNhbmRib3gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Byb2Nl
c3NUZXJtaW5hdGlvblJlYXNvbi5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUHJvY2Vzc1Rlcm1p
bmF0aW9uUmVhc29uLmgKaW5kZXggODU3MWM0NjkyZWUwNDk0NjhlOTUwMGJhYTlhMjJjNTk0ODM1
NjIyYS4uMjE5YWNmYzI2NzRmZGY0ZjhlNzMyMmRkZjM5NDY5YzRlYmNhMzVkZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uLmgKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uLmgKQEAgLTM5LDcg
KzM5LDggQEAgZW51bSBjbGFzcyBQcm9jZXNzVGVybWluYXRpb25SZWFzb24gewogCiBlbnVtIGNs
YXNzIEdQVVByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbiB7CiAgICAgQ3Jhc2gsCi0gICAgSWRsZUV4
aXQKKyAgICBJZGxlRXhpdCwKKyAgICBVbnJlc3BvbnNpdmUKIH07CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuY3BwCmluZGV4IDExNDBk
NmM4MWUzN2YyYzhjZmNmMzYxNzgxZjNiOTkyNzBlODhjYjcuLjc3MDdhOTRkNTUxMTM3NTdkYzRl
NThjZGI2M2IxZDNhYWY5ZDEwYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0F1eGlsaWFyeVByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmNwcApAQCAtMzIsMTAgKzMyLDE3IEBACiAjaW5jbHVkZSAi
V2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KIAorI2lmIFBMQVRG
T1JNKENPQ09BKQorI2luY2x1ZGUgIlNhbmRib3hVdGlsaXRpZXMuaCIKKyNpbmNsdWRlIDxzeXMv
c3lzY3RsLmg+CisjaW5jbHVkZSA8d3RmL3NwaS9kYXJ3aW4vU2FuZGJveFNQSS5oPgorI2VuZGlm
CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OkF1eGlsaWFy
eVByb2Nlc3NQcm94eShib29sIGFsd2F5c1J1bnNBdEJhY2tncm91bmRQcmlvcml0eSkKLSAgICA6
IG1fYWx3YXlzUnVuc0F0QmFja2dyb3VuZFByaW9yaXR5KGFsd2F5c1J1bnNBdEJhY2tncm91bmRQ
cmlvcml0eSkKKyAgICA6IG1fcmVzcG9uc2l2ZW5lc3NUaW1lcigqdGhpcykKKyAgICAsIG1fYWx3
YXlzUnVuc0F0QmFja2dyb3VuZFByaW9yaXR5KGFsd2F5c1J1bnNBdEJhY2tncm91bmRQcmlvcml0
eSkKIHsKIH0KIApAQCAtMjUyLDYgKzI1OSwxMSBAQCB2b2lkIEF1eGlsaWFyeVByb2Nlc3NQcm94
eTo6ZGlkRmluaXNoTGF1bmNoaW5nKFByb2Nlc3NMYXVuY2hlciosIElQQzo6Q29ubmVjdGlvbgog
ICAgICAgICAgICAgSVBDOjphZGRBc3luY1JlcGx5SGFuZGxlcigqY29ubmVjdGlvbigpLCBwZW5k
aW5nTWVzc2FnZS5hc3luY1JlcGx5SW5mby0+c2Vjb25kLCBXVEZNb3ZlKHBlbmRpbmdNZXNzYWdl
LmFzeW5jUmVwbHlJbmZvLT5maXJzdCkpOwogICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmRNZXNz
YWdlKFdURk1vdmUocGVuZGluZ01lc3NhZ2UuZW5jb2RlciksIHBlbmRpbmdNZXNzYWdlLnNlbmRP
cHRpb25zKTsKICAgICB9CisKKyAgICBpZiAobV9zaG91bGRTdGFydFJlc3BvbnNpdmVuZXNzVGlt
ZXJXaGVuTGF1bmNoZWQpIHsKKyAgICAgICAgYXV0byB1c2VMYXp5U3RvcCA9ICpzdGQ6OmV4Y2hh
bmdlKG1fc2hvdWxkU3RhcnRSZXNwb25zaXZlbmVzc1RpbWVyV2hlbkxhdW5jaGVkLCBzdGQ6Om51
bGxvcHQpOworICAgICAgICBzdGFydFJlc3BvbnNpdmVuZXNzVGltZXIodXNlTGF6eVN0b3ApOwor
ICAgIH0KIH0KIAogdm9pZCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnJlcGx5VG9QZW5kaW5nTWVz
c2FnZXMoKQpAQCAtMjkyLDYgKzMwNCw3IEBAIHZvaWQgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5Ojpz
aHV0RG93blByb2Nlc3MoKQogCiAgICAgbV9jb25uZWN0aW9uLT5pbnZhbGlkYXRlKCk7CiAgICAg
bV9jb25uZWN0aW9uID0gbnVsbHB0cjsKKyAgICBtX3Jlc3BvbnNpdmVuZXNzVGltZXIuaW52YWxp
ZGF0ZSgpOwogfQogCiB2b2lkIEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6c2V0UHJvY2Vzc1N1cHBy
ZXNzaW9uRW5hYmxlZChib29sIHByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQpCkBAIC0zMTUsNCAr
MzI4LDUxIEBAIHZvaWQgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5Ojpsb2dJbnZhbGlkTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6CiAgICAgUkVMRUFTRV9MT0dfRkFVTFQo
SVBDLCAiUmVjZWl2ZWQgYW4gaW52YWxpZCBtZXNzYWdlICclIiBQVUJMSUNfTE9HX1NUUklORyAi
JyBmcm9tIHRoZSAlIiBQVUJMSUNfTE9HX1NUUklORyAiIHByb2Nlc3MuIiwgZGVzY3JpcHRpb24o
bWVzc2FnZU5hbWUpLCBwcm9jZXNzTmFtZSgpLmNoYXJhY3RlcnMoKSk7CiB9CiAKK2Jvb2wgQXV4
aWxpYXJ5UHJvY2Vzc1Byb3h5OjpwbGF0Zm9ybUlzQmVpbmdEZWJ1Z2dlZCgpIGNvbnN0Cit7Cisj
aWYgUExBVEZPUk0oQ09DT0EpCisgICAgLy8gSWYgdGhlIFVJIHByb2Nlc3MgaXMgc2FuZGJveGVk
IGFuZCBsYWNrcyAncHJvY2Vzcy1pbmZvLXBpZGluZm8nLCBpdCBjYW5ub3QgZmluZCBvdXQgd2hl
dGhlciBvdGhlciBwcm9jZXNzZXMgYXJlIGJlaW5nIGRlYnVnZ2VkLgorICAgIGlmIChjdXJyZW50
UHJvY2Vzc0lzU2FuZGJveGVkKCkgJiYgISFzYW5kYm94X2NoZWNrKGdldHBpZCgpLCAicHJvY2Vz
cy1pbmZvLXBpZGluZm8iLCBTQU5EQk9YX0NIRUNLX05PX1JFUE9SVCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIHN0cnVjdCBraW5mb19wcm9jIGluZm87CisgICAgaW50IG1pYltdID0g
eyBDVExfS0VSTiwgS0VSTl9QUk9DLCBLRVJOX1BST0NfUElELCBwcm9jZXNzSWRlbnRpZmllcigp
IH07CisgICAgc2l6ZV90IHNpemUgPSBzaXplb2YoaW5mbyk7CisgICAgaWYgKHN5c2N0bChtaWIs
IFdURl9BUlJBWV9MRU5HVEgobWliKSwgJmluZm8sICZzaXplLCBudWxscHRyLCAwKSA9PSAtMSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGluZm8ua3BfcHJvYy5wX2ZsYWcg
JiBQX1RSQUNFRDsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKK3ZvaWQg
QXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpzdG9wUmVzcG9uc2l2ZW5lc3NUaW1lcigpCit7CisgICAg
cmVzcG9uc2l2ZW5lc3NUaW1lcigpLnN0b3AoKTsKK30KKwordm9pZCBBdXhpbGlhcnlQcm9jZXNz
UHJveHk6OnN0YXJ0UmVzcG9uc2l2ZW5lc3NUaW1lcihVc2VMYXp5U3RvcCB1c2VMYXp5U3RvcCkK
K3sKKyAgICBpZiAoaXNMYXVuY2hpbmcoKSkgeworICAgICAgICBtX3Nob3VsZFN0YXJ0UmVzcG9u
c2l2ZW5lc3NUaW1lcldoZW5MYXVuY2hlZCA9IHVzZUxhenlTdG9wOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgaWYgKHVzZUxhenlTdG9wID09IFVzZUxhenlTdG9wOjpZZXMpCisgICAg
ICAgIHJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdGFydFdpdGhMYXp5U3RvcCgpOworICAgIGVsc2UK
KyAgICAgICAgcmVzcG9uc2l2ZW5lc3NUaW1lcigpLnN0YXJ0KCk7Cit9CisKK2Jvb2wgQXV4aWxp
YXJ5UHJvY2Vzc1Byb3h5OjptYXlCZWNvbWVVbnJlc3BvbnNpdmUoKQoreworICAgIHJldHVybiAh
cGxhdGZvcm1Jc0JlaW5nRGVidWdnZWQoKTsKK30KKwordm9pZCBBdXhpbGlhcnlQcm9jZXNzUHJv
eHk6OmRpZEJlY29tZVVucmVzcG9uc2l2ZSgpCit7CisgICAgUkVMRUFTRV9MT0dfRVJST1IoUHJv
Y2VzcywgIkF1eGlsaWFyeVByb2Nlc3NQcm94eTo6ZGlkQmVjb21lVW5yZXNwb25zaXZlOiAlIiBQ
VUJMSUNfTE9HX1NUUklORyAiIHByb2Nlc3Mgd2l0aCBQSUQgJWQgYmVjYW1lIHVucmVzcG9uc2l2
ZSIsIHByb2Nlc3NOYW1lKCkuY2hhcmFjdGVycygpLCBwcm9jZXNzSWRlbnRpZmllcigpKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1
eGlsaWFyeVByb2Nlc3NQcm94eS5oCmluZGV4IDlhYjYyOGE2ZmQxYzljNGNlMzQ0ZmQ1OGM1MWI3
OWFjNzdkMGNkNTcuLjUzZWQ1NmVhY2VjMDMzMzUzNDJiMjkxMmMxZWIzOGU5ZWVhZGY5MjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oCkBA
IC0yOCw3ICsyOCw3IEBACiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIk1lc3Nh
Z2VSZWNlaXZlck1hcC5oIgogI2luY2x1ZGUgIlByb2Nlc3NMYXVuY2hlci5oIgotCisjaW5jbHVk
ZSAiUmVzcG9uc2l2ZW5lc3NUaW1lci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUHJvY2Vzc0lkZW50
aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvUHJvY2Vzc0lELmg+CiAjaW5jbHVkZSA8d3RmL1N5c3Rl
bVRyYWNpbmcuaD4KQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNz
IFByb2Nlc3NUaHJvdHRsZXI7CiAKLWNsYXNzIEF1eGlsaWFyeVByb2Nlc3NQcm94eSA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxBdXhpbGlhcnlQcm9jZXNzUHJveHksIFdURjo6RGVzdHJ1
Y3Rpb25UaHJlYWQ6Ok1haW5SdW5Mb29wPiwgcHJpdmF0ZSBQcm9jZXNzTGF1bmNoZXI6OkNsaWVu
dCwgcHVibGljIElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50IHsKK2NsYXNzIEF1eGlsaWFyeVByb2Nl
c3NQcm94eSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxBdXhpbGlhcnlQcm9jZXNzUHJv
eHksIFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW5SdW5Mb29wPiwgcHVibGljIFJlc3BvbnNp
dmVuZXNzVGltZXI6OkNsaWVudCwgcHJpdmF0ZSBQcm9jZXNzTGF1bmNoZXI6OkNsaWVudCwgcHVi
bGljIElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShB
dXhpbGlhcnlQcm9jZXNzUHJveHkpOwogCiBwcm90ZWN0ZWQ6CkBAIC0xMjYsNiArMTI2LDE3IEBA
IHB1YmxpYzoKICAgICBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBjb3JlUHJvY2Vzc0lkZW50
aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3Byb2Nlc3NJZGVudGlmaWVyOyB9CiAKICAgICB2b2lk
IHNldFByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQoYm9vbCk7CisgICAgYm9vbCBwbGF0Zm9ybUlz
QmVpbmdEZWJ1Z2dlZCgpIGNvbnN0OworCisgICAgZW51bSBjbGFzcyBVc2VMYXp5U3RvcCA6IGJv
b2wgeyBObywgWWVzIH07CisgICAgdm9pZCBzdGFydFJlc3BvbnNpdmVuZXNzVGltZXIoVXNlTGF6
eVN0b3AgPSBVc2VMYXp5U3RvcDo6Tm8pOworICAgIHZvaWQgc3RvcFJlc3BvbnNpdmVuZXNzVGlt
ZXIoKTsKKworICAgIFJlc3BvbnNpdmVuZXNzVGltZXImIHJlc3BvbnNpdmVuZXNzVGltZXIoKSB7
IHJldHVybiBtX3Jlc3BvbnNpdmVuZXNzVGltZXI7IH0KKyAgICBjb25zdCBSZXNwb25zaXZlbmVz
c1RpbWVyJiByZXNwb25zaXZlbmVzc1RpbWVyKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zaXZl
bmVzc1RpbWVyOyB9CisKKyAgICB2b2lkIHJlZigpIGZpbmFsIHsgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ6OnJlZigpOyB9CisgICAgdm9pZCBkZXJlZigpIGZpbmFsIHsgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ6OmRlcmVmKCk7IH0KIAogcHJvdGVjdGVkOgogICAgIC8vIFByb2Nlc3NMYXVuY2hlcjo6Q2xp
ZW50CkBAIC0xNDgsMTYgKzE1OSwyNSBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2aXJ0dWFsIGJvb2wg
c2hvdWxkU2VuZFBlbmRpbmdNZXNzYWdlKGNvbnN0IFBlbmRpbmdNZXNzYWdlJikgeyByZXR1cm4g
dHJ1ZTsgfQogCisgICAgLy8gUmVzcG9uc2l2ZW5lc3NUaW1lcjo6Q2xpZW50LgorICAgIHZvaWQg
ZGlkQmVjb21lVW5yZXNwb25zaXZlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRCZWNvbWVSZXNw
b25zaXZlKCkgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCB3aWxsQ2hhbmdlSXNSZXNwb25zaXZlKCkg
b3ZlcnJpZGUgeyB9CisgICAgdm9pZCBkaWRDaGFuZ2VJc1Jlc3BvbnNpdmUoKSBvdmVycmlkZSB7
IH0KKyAgICBib29sIG1heUJlY29tZVVucmVzcG9uc2l2ZSgpIG92ZXJyaWRlOworCiBwcml2YXRl
OgogICAgIHZpcnR1YWwgdm9pZCBjb25uZWN0aW9uV2lsbE9wZW4oSVBDOjpDb25uZWN0aW9uJik7
CiAgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NXaWxsU2h1dERvd24oSVBDOjpDb25uZWN0aW9uJikg
PSAwOwogCisgICAgUmVzcG9uc2l2ZW5lc3NUaW1lciBtX3Jlc3BvbnNpdmVuZXNzVGltZXI7CiAg
ICAgVmVjdG9yPFBlbmRpbmdNZXNzYWdlPiBtX3BlbmRpbmdNZXNzYWdlczsKICAgICBSZWZQdHI8
UHJvY2Vzc0xhdW5jaGVyPiBtX3Byb2Nlc3NMYXVuY2hlcjsKICAgICBSZWZQdHI8SVBDOjpDb25u
ZWN0aW9uPiBtX2Nvbm5lY3Rpb247CiAgICAgSVBDOjpNZXNzYWdlUmVjZWl2ZXJNYXAgbV9tZXNz
YWdlUmVjZWl2ZXJNYXA7CiAgICAgYm9vbCBtX2Fsd2F5c1J1bnNBdEJhY2tncm91bmRQcmlvcml0
eSB7IGZhbHNlIH07CiAgICAgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgbV9wcm9jZXNzSWRl
bnRpZmllciB7IFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH07CisgICAg
c3RkOjpvcHRpb25hbDxVc2VMYXp5U3RvcD4gbV9zaG91bGRTdGFydFJlc3BvbnNpdmVuZXNzVGlt
ZXJXaGVuTGF1bmNoZWQ7CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQppbmRl
eCBjNzI0Y2Y0NGUwYzM4YWE0YTAzNzU4MTczNDA0Mzg0NDFmOTUzOWYzLi41ZGI0OGYwM2ZmOGI0
YzYyYzY0MDI0Njk2ZWJmNDM0NDNhNTg0NDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQpAQCAtMTQ0LDIxICsxNDQs
NiBAQCBSZWZQdHI8T2JqQ09iamVjdEdyYXBoPiBXZWJQcm9jZXNzUHJveHk6OnRyYW5zZm9ybU9i
amVjdHNUb0hhbmRsZXMoT2JqQ09iamVjdEdyYQogICAgIHJldHVybiBPYmpDT2JqZWN0R3JhcGg6
OmNyZWF0ZShPYmpDT2JqZWN0R3JhcGg6OnRyYW5zZm9ybShvYmplY3RHcmFwaC5yb290T2JqZWN0
KCksIFRyYW5zZm9ybWVyKCkpLmdldCgpKTsKIH0KIAotYm9vbCBXZWJQcm9jZXNzUHJveHk6OnBs
YXRmb3JtSXNCZWluZ0RlYnVnZ2VkKCkgY29uc3QKLXsKLSAgICAvLyBJZiB0aGUgVUkgcHJvY2Vz
cyBpcyBzYW5kYm94ZWQgYW5kIGxhY2tzICdwcm9jZXNzLWluZm8tcGlkaW5mbycsIGl0IGNhbm5v
dCBmaW5kIG91dCB3aGV0aGVyIG90aGVyIHByb2Nlc3NlcyBhcmUgYmVpbmcgZGVidWdnZWQuCi0g
ICAgaWYgKGN1cnJlbnRQcm9jZXNzSXNTYW5kYm94ZWQoKSAmJiAhIXNhbmRib3hfY2hlY2soZ2V0
cGlkKCksICJwcm9jZXNzLWluZm8tcGlkaW5mbyIsIFNBTkRCT1hfQ0hFQ0tfTk9fUkVQT1JUKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgc3RydWN0IGtpbmZvX3Byb2MgaW5mbzsKLSAg
ICBpbnQgbWliW10gPSB7IENUTF9LRVJOLCBLRVJOX1BST0MsIEtFUk5fUFJPQ19QSUQsIHByb2Nl
c3NJZGVudGlmaWVyKCkgfTsKLSAgICBzaXplX3Qgc2l6ZSA9IHNpemVvZihpbmZvKTsKLSAgICBp
ZiAoc3lzY3RsKG1pYiwgV1RGX0FSUkFZX0xFTkdUSChtaWIpLCAmaW5mbywgJnNpemUsIG51bGxw
dHIsIDApID09IC0xKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gaW5mby5r
cF9wcm9jLnBfZmxhZyAmIFBfVFJBQ0VEOwotfQotCiBzdGF0aWMgVmVjdG9yPFN0cmluZz4mIG1l
ZGlhVHlwZUNhY2hlKCkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBiODky
Yzk2N2Q4MGVmZjUwYTQzMGUwZjUzNWQ2OTE2NDliZmJlMzhhLi5hZGM0YTRkMTJmMGNkZDY2ODQ1
OTA0YjE4MjFjNmIwYWI2MDI0NGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9H
UFUvR1BVUHJvY2Vzc1Byb3h5LmNwcApAQCAtMzI3LDEyICszMjcsMTQgQEAgdm9pZCBHUFVQcm9j
ZXNzUHJveHk6OmdldEdQVVByb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYgd2ViUHJv
Y2Vzc1Byb3h5LAogICAgIGFkZFNlc3Npb24od2ViUHJvY2Vzc1Byb3h5LndlYnNpdGVEYXRhU3Rv
cmUoKSk7CiAKICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gR1BVUHJv
Y2Vzc1Byb3h5IGlzIHRha2luZyBhIGJhY2tncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgYSB3ZWIg
cHJvY2VzcyBpcyByZXF1ZXN0aW5nIGEgY29ubmVjdGlvbiIsIHRoaXMpOworICAgIHN0YXJ0UmVz
cG9uc2l2ZW5lc3NUaW1lcihVc2VMYXp5U3RvcDo6Tm8pOwogICAgIHNlbmRXaXRoQXN5bmNSZXBs
eShNZXNzYWdlczo6R1BVUHJvY2Vzczo6Q3JlYXRlR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyB7
IHdlYlByb2Nlc3NQcm94eS5jb3JlUHJvY2Vzc0lkZW50aWZpZXIoKSwgd2ViUHJvY2Vzc1Byb3h5
LnNlc3Npb25JRCgpLCBwYXJhbWV0ZXJzIH0sIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRy
KCp0aGlzKSwgcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0oYXV0byYmIGlkZW50aWZpZXIpIG11dGFi
bGUgewogICAgICAgICBpZiAoIXdlYWtUaGlzKSB7CiAgICAgICAgICAgICBSRUxFQVNFX0xPR19F
UlJPUihQcm9jZXNzLCAiR1BVUHJvY2Vzc1Byb3h5OjpnZXRHUFVQcm9jZXNzQ29ubmVjdGlvbjog
R1BVUHJvY2Vzc1Byb3h5IGRlYWxsb2NhdGVkIGR1cmluZyBjb25uZWN0aW9uIGVzdGFibGlzaG1l
bnQiKTsKICAgICAgICAgICAgIHJldHVybiByZXBseSh7IH0pOwogICAgICAgICB9CiAKKyAgICAg
ICAgc3RvcFJlc3BvbnNpdmVuZXNzVGltZXIoKTsKICAgICAgICAgaWYgKCFpZGVudGlmaWVyKSB7
CiAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQcm9jZXNzLCAiR1BVUHJvY2Vzc1Byb3h5
OjpnZXRHUFVQcm9jZXNzQ29ubmVjdGlvbjogY29ubmVjdGlvbiBpZGVudGlmaWVyIGlzIGVtcHR5
Iik7CiAgICAgICAgICAgICByZXR1cm4gcmVwbHkoeyB9KTsKQEAgLTM2MSw2ICszNjMsOSBAQCB2
b2lkIEdQVVByb2Nlc3NQcm94eTo6Z3B1UHJvY2Vzc0V4aXRlZChHUFVQcm9jZXNzVGVybWluYXRp
b25SZWFzb24gcmVhc29uKQogICAgIGNhc2UgR1BVUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uOjpJ
ZGxlRXhpdDoKICAgICAgICAgUkVMRUFTRV9MT0coUHJvY2VzcywgIiVwIC0gR1BVUHJvY2Vzc1By
b3h5OjpncHVQcm9jZXNzRXhpdGVkOiByZWFzb249aWRsZS1leGl0IiwgdGhpcyk7CiAgICAgICAg
IGJyZWFrOworICAgIGNhc2UgR1BVUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uOjpVbnJlc3BvbnNp
dmU6CisgICAgICAgIFJFTEVBU0VfTE9HKFByb2Nlc3MsICIlcCAtIEdQVVByb2Nlc3NQcm94eTo6
Z3B1UHJvY2Vzc0V4aXRlZDogcmVhc29uPXVucmVzcG9uc2l2ZSIsIHRoaXMpOworICAgICAgICBi
cmVhazsKICAgICB9CiAKICAgICBpZiAoc2luZ2xldG9uKCkgPT0gdGhpcykKQEAgLTU5Miw2ICs1
OTcsMTMgQEAgdm9pZCBHUFVQcm9jZXNzUHJveHk6OnVwZGF0ZVByZWZlcmVuY2VzKCkKICNlbmRp
ZgogfQogCit2b2lkIEdQVVByb2Nlc3NQcm94eTo6ZGlkQmVjb21lVW5yZXNwb25zaXZlKCkKK3sK
KyAgICBSRUxFQVNFX0xPR19FUlJPUihQcm9jZXNzLCAiR1BVUHJvY2Vzc1Byb3h5OjpkaWRCZWNv
bWVVbnJlc3BvbnNpdmU6IEdQVVByb2Nlc3Mgd2l0aCBQSUQgJWQgYmVjYW1lIHVucmVzcG9uc2l2
ZSwgdGVybWluYXRpbmcgaXQiLCBwcm9jZXNzSWRlbnRpZmllcigpKTsKKyAgICB0ZXJtaW5hdGUo
KTsKKyAgICBncHVQcm9jZXNzRXhpdGVkKEdQVVByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbjo6VW5y
ZXNwb25zaXZlKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBNRVNTQUdF
X0NIRUNLCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vz
c1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmgK
aW5kZXggOGU0MjE1NDc4NTNhNzY0NTFmNGRlZjc2MTE0ODU3OGE3NGNiMTUxZC4uYWJlMGM5MGVh
ODI3OWE4N2IyOGQ3OTg0M2JkNmVkZGI5M2FjZWRjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuaApAQCAtMTE4LDYgKzExOCw5IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKSBvdmVycmlkZTsKICAgICB2b2lk
IGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VO
YW1lKSBvdmVycmlkZTsKIAorICAgIC8vIFJlc3BvbnNpdmVuZXNzVGltZXI6OkNsaWVudAorICAg
IHZvaWQgZGlkQmVjb21lVW5yZXNwb25zaXZlKCkgZmluYWw7CisKICAgICB2b2lkIHRlcm1pbmF0
ZVdlYlByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIpOwogICAgIHZvaWQgcHJvY2Vz
c0lzUmVhZHlUb0V4aXQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggOGExZWIyNDc4NmU2NzAzZjU5
OGU0YzliMzJhMzMxZjNjYzJkNDg3Yy4uZWZmZjZiYjdlNTA5Yjc0Njc2ZTFjOGM2ODliYWE0NzAx
MDkwMWNmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0xMjIsNiArMTIyLDEyIEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3NQcm94eTo6dGVybWluYXRlKCkKICAgICBuZXR3b3JrUHJvY2Vzc0RpZFRlcm1pbmF0
ZShUZXJtaW5hdGlvblJlYXNvbjo6UmVxdWVzdGVkQnlDbGllbnQpOwogfQogCit2b2lkIE5ldHdv
cmtQcm9jZXNzUHJveHk6OmRpZEJlY29tZVVucmVzcG9uc2l2ZSgpCit7CisgICAgUkVMRUFTRV9M
T0dfRVJST1IoUHJvY2VzcywgIk5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZEJlY29tZVVucmVzcG9u
c2l2ZTogTmV0d29ya1Byb2Nlc3Mgd2l0aCBQSUQgJWQgYmVjYW1lIHVucmVzcG9uc2l2ZSwgdGVy
bWluYXRpbmcgaXQiLCBwcm9jZXNzSWRlbnRpZmllcigpKTsKKyAgICB0ZXJtaW5hdGUoKTsKK30K
Kwogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZW5kQ3JlYXRpb25QYXJhbWV0ZXJzVG9OZXdQ
cm9jZXNzKCkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAtMjM3LDEyICsy
NDMsMTQgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzV2lsbFNodXREb3duKElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Z2V0
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2Vzc1Byb3h5
LCBNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246
OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewogICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5z
aW9uLCAiJXAgLSBOZXR3b3JrUHJvY2Vzc1Byb3h5IGlzIHRha2luZyBhIGJhY2tncm91bmQgYXNz
ZXJ0aW9uIGJlY2F1c2UgYSB3ZWIgcHJvY2VzcyBpcyByZXF1ZXN0aW5nIGEgY29ubmVjdGlvbiIs
IHRoaXMpOworICAgIHN0YXJ0UmVzcG9uc2l2ZW5lc3NUaW1lcihVc2VMYXp5U3RvcDo6Tm8pOwog
ICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkNyZWF0ZU5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIHsgd2ViUHJvY2Vzc1Byb3h5LmNvcmVQcm9jZXNz
SWRlbnRpZmllcigpLCB3ZWJQcm9jZXNzUHJveHkuc2Vzc2lvbklEKCkgfSwgW3RoaXMsIHdlYWtU
aGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCByZXBseSA9IFdURk1vdmUocmVwbHkpXShhdXRvJiYg
aWRlbnRpZmllciwgYXV0byBjb29raWVBY2NlcHRQb2xpY3kpIG11dGFibGUgewogICAgICAgICBp
ZiAoIXdlYWtUaGlzKSB7CiAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQcm9jZXNzLCAi
TmV0d29ya1Byb2Nlc3NQcm94eTo6Z2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOiBOZXR3b3Jr
UHJvY2Vzc1Byb3h5IGRlYWxsb2NhdGVkIGR1cmluZyBjb25uZWN0aW9uIGVzdGFibGlzaG1lbnQi
KTsKICAgICAgICAgICAgIHJldHVybiByZXBseSh7IH0pOwogICAgICAgICB9CiAKKyAgICAgICAg
c3RvcFJlc3BvbnNpdmVuZXNzVGltZXIoKTsKICAgICAgICAgaWYgKCFpZGVudGlmaWVyKSB7CiAg
ICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQcm9jZXNzLCAiTmV0d29ya1Byb2Nlc3NQcm94
eTo6Z2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOiBjb25uZWN0aW9uIGlkZW50aWZpZXIgaXMg
ZW1wdHkiKTsKICAgICAgICAgICAgIHJldHVybiByZXBseSh7IH0pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCA2
YmNmZTFlZTNmY2MzZWU2MWNkYWFiNjYyNGUyM2I3YzI4MWEwN2NmLi42ZDI4ZTFhOWExYWU4OGVl
NGI0Yjg2MzM1ODUzZmFkZTJiYmZiMTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtMjg2LDYgKzI4Niw5IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpNZXNzYWdlTmFtZSkgb3ZlcnJpZGU7CiAgICAgYm9vbCBkaWRSZWNlaXZlU3lu
Y05ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2Rl
ciYsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+Jik7CiAKKyAgICAvLyBSZXNwb25zaXZlbmVzc1Rp
bWVyOjpDbGllbnQKKyAgICB2b2lkIGRpZEJlY29tZVVucmVzcG9uc2l2ZSgpIGZpbmFsOworCiAg
ICAgLy8gTWVzc2FnZSBoYW5kbGVycwogICAgIHZvaWQgZGlkUmVjZWl2ZU5ldHdvcmtQcm9jZXNz
UHJveHlNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwogICAgIHZvaWQg
ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFBBTDo6U2Vzc2lvbklELCBXZWJQYWdl
UHJveHlJZGVudGlmaWVyLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YT4mLCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBib29sLCB1aW50
NjRfdCBjaGFsbGVuZ2VJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9S
ZXNwb25zaXZlbmVzc1RpbWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jlc3BvbnNp
dmVuZXNzVGltZXIuY3BwCmluZGV4IDA3YjhjZWRjY2JmZTBkYjEwYjgzMTYwMzQ5NDVjZTRkN2Uw
Y2Y1OTIuLjQxZjBiMTU3Y2EyMzMwNTVlMzI1MmUwNzU2ZWU4Yjc1MDliY2E2OTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwCkBAIC03MCw3
ICs3MCw3IEBAIHZvaWQgUmVzcG9uc2l2ZW5lc3NUaW1lcjo6dGltZXJGaXJlZCgpCiAKICAgICBh
dXRvIHByb3RlY3RlZENsaWVudCA9IG1ha2VSZWYobV9jbGllbnQpOwogCi0gICAgaWYgKCFtX2Ns
aWVudC5tYXlCZWNvbWVVbnJlc3BvbnNpdmUoKSkgeworICAgIGlmICghbWF5QmVjb21lVW5yZXNw
b25zaXZlKCkpIHsKICAgICAgICAgbV93YWl0aW5nRm9yVGltZXIgPSB0cnVlOwogICAgICAgICBt
X3RpbWVyLnN0YXJ0T25lU2hvdChyZXNwb25zaXZlbmVzc1RpbWVvdXQpOwogICAgICAgICByZXR1
cm47CkBAIC0xMDQsNiArMTA0LDI2IEBAIHZvaWQgUmVzcG9uc2l2ZW5lc3NUaW1lcjo6c3RhcnQo
KQogICAgIH0KIH0KIAorYm9vbCBSZXNwb25zaXZlbmVzc1RpbWVyOjptYXlCZWNvbWVVbnJlc3Bv
bnNpdmUoKSBjb25zdAoreworI2lmICFkZWZpbmVkKE5ERUJVRykgfHwgQVNBTl9FTkFCTEVECisg
ICAgcmV0dXJuIGZhbHNlOworI2Vsc2UKKyAgICBzdGF0aWMgYm9vbCBpc0xpYmdtYWxsb2NFbmFi
bGVkID0gW10geworICAgICAgICBjaGFyKiB2YXJpYWJsZSA9IGdldGVudigiRFlMRF9JTlNFUlRf
TElCUkFSSUVTIik7CisgICAgICAgIGlmICghdmFyaWFibGUpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIGlmICghc3Ryc3RyKHZhcmlhYmxlLCAibGliZ21hbGxvYyIpKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9KCk7Cisg
ICAgaWYgKGlzTGliZ21hbGxvY0VuYWJsZWQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IHJldHVybiBtX2NsaWVudC5tYXlCZWNvbWVVbnJlc3BvbnNpdmUoKTsKKyNlbmRpZgorfQorCiB2
b2lkIFJlc3BvbnNpdmVuZXNzVGltZXI6OnN0YXJ0V2l0aExhenlTdG9wKCkKIHsKICAgICBpZiAo
IW1fd2FpdGluZ0ZvclRpbWVyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9SZXNwb25zaXZlbmVzc1RpbWVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZXNwb25z
aXZlbmVzc1RpbWVyLmgKaW5kZXggNWFhNjU0M2E1ZDQ2ZDZmNzNmOTI1ZTFlMDg3ZjFlMGI1NGFh
NDUzZS4uYjEzNTgxMmU0MTkwY2E4NmE3ZTAyMGM0ZDYwM2E0MmY4ODFkODc5NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVzcG9uc2l2ZW5lc3NUaW1lci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jlc3BvbnNpdmVuZXNzVGltZXIuaApAQCAtNzcsNiArNzcs
OCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZvaWQgdGltZXJGaXJlZCgpOwogCisgICAgYm9v
bCBtYXlCZWNvbWVVbnJlc3BvbnNpdmUoKSBjb25zdDsKKwogICAgIFJlc3BvbnNpdmVuZXNzVGlt
ZXI6OkNsaWVudCYgbV9jbGllbnQ7CiAKICAgICBSdW5Mb29wOjpUaW1lcjxSZXNwb25zaXZlbmVz
c1RpbWVyPiBtX3RpbWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
Y3BwCmluZGV4IDdjOTAyYmU1MDJmNGEyNTIwNTc2MzIwNzRiZGUzNTEzYzhjYjg4ODQuLjgxNmVh
NDMyMzQ1ZjJhOWI3YWQ1MTZkZjQzY2M2MDRiYjQ1OWQyYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTUwMiwxNCArNTAyLDE0IEBAIHZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OmdwdVByb2Nlc3NFeGl0ZWQoUHJvY2Vzc0lEIGlkZW50aWZpZXIsIEdQVVBy
b2Nlc3NUZXJtaW5hdGlvCiAgICAgV0VCUFJPQ0VTU1BPT0xfUkVMRUFTRV9MT0coUHJvY2Vzcywg
ImdwdVByb2Nlc3NEaWRFeGl0OiBQSUQ9JWQsIHJlYXNvbj0ldSIsIGlkZW50aWZpZXIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihyZWFzb24pKTsKICAgICBtX2dwdVByb2Nlc3MgPSBudWxscHRyOwog
Ci0gICAgaWYgKHJlYXNvbiA9PSBHUFVQcm9jZXNzVGVybWluYXRpb25SZWFzb246OkNyYXNoKQor
ICAgIGlmIChyZWFzb24gPT0gR1BVUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uOjpDcmFzaCB8fCBy
ZWFzb24gPT0gR1BVUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uOjpVbnJlc3BvbnNpdmUpCiAgICAg
ICAgIG1fY2xpZW50LmdwdVByb2Nlc3NEaWRDcmFzaCh0aGlzLCBpZGVudGlmaWVyKTsKIAogICAg
IFZlY3RvcjxSZWY8V2ViUHJvY2Vzc1Byb3h5Pj4gcHJvY2Vzc2VzID0gbV9wcm9jZXNzZXM7CiAg
ICAgZm9yIChhdXRvJiBwcm9jZXNzIDogcHJvY2Vzc2VzKQogICAgICAgICBwcm9jZXNzLT5ncHVQ
cm9jZXNzRXhpdGVkKHJlYXNvbik7CiAKLSAgICBpZiAocmVhc29uID09IEdQVVByb2Nlc3NUZXJt
aW5hdGlvblJlYXNvbjo6Q3Jhc2gpIHsKKyAgICBpZiAocmVhc29uID09IEdQVVByb2Nlc3NUZXJt
aW5hdGlvblJlYXNvbjo6Q3Jhc2ggfHwgcmVhc29uID09IEdQVVByb2Nlc3NUZXJtaW5hdGlvblJl
YXNvbjo6VW5yZXNwb25zaXZlKSB7CiAgICAgICAgIGlmICgrK21fcmVjZW50R1BVUHJvY2Vzc0Ny
YXNoQ291bnQgPiBtYXhpbXVtR1BVUHJvY2Vzc1JlbGF1bmNoQXR0ZW1wdHNCZWZvcmVLaWxsaW5n
V2ViUHJvY2Vzc2VzKSB7CiAgICAgICAgICAgICBXRUJQUk9DRVNTUE9PTF9SRUxFQVNFX0xPR19F
UlJPUihQcm9jZXNzLCAiZ3B1UHJvY2Vzc0RpZEV4aXQ6IEdQVSBQcm9jZXNzIGhhcyBjcmFzaGVk
IG1vcmUgdGhhbiAldSB0aW1lcyBpbiB0aGUgbGFzdCAlZyBzZWNvbmRzLCB0ZXJtaW5hdGluZyBh
bGwgV2ViUHJvY2Vzc2VzIiwgbWF4aW11bUdQVVByb2Nlc3NSZWxhdW5jaEF0dGVtcHRzQmVmb3Jl
S2lsbGluZ1dlYlByb2Nlc3NlcywgcmVzZXRHUFVQcm9jZXNzQ3Jhc2hDb3VudERlbGF5LnNlY29u
ZHMoKSk7CiAgICAgICAgICAgICBtX3Jlc2V0R1BVUHJvY2Vzc0NyYXNoQ291bnRUaW1lci5zdG9w
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA4
ODQzZWI1MDZkMWQ2MTJhMjZlMWM5MGQzY2Y1MDI2MzVhMGQ4OTVhLi4wZjdjZjIyYTUwNTVkODU0
MDE4MjI4MjA2N2ZlNzIzYjQ1ZWZlNjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5jcHAKQEAgLTE5Miw3ICsxOTIsNiBAQCBwcml2YXRlOgogCiBXZWJQcm9j
ZXNzUHJveHk6OldlYlByb2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIFdl
YnNpdGVEYXRhU3RvcmUqIHdlYnNpdGVEYXRhU3RvcmUsIElzUHJld2FybWVkIGlzUHJld2FybWVk
KQogICAgIDogQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5KHByb2Nlc3NQb29sLmFsd2F5c1J1bnNBdEJh
Y2tncm91bmRQcmlvcml0eSgpKQotICAgICwgbV9yZXNwb25zaXZlbmVzc1RpbWVyKCp0aGlzKQog
ICAgICwgbV9iYWNrZ3JvdW5kUmVzcG9uc2l2ZW5lc3NUaW1lcigqdGhpcykKICAgICAsIG1fcHJv
Y2Vzc1Bvb2wocHJvY2Vzc1Bvb2wsIGlzUHJld2FybWVkID09IElzUHJld2FybWVkOjpZZXMgPyBJ
c1dlYWs6OlllcyA6IElzV2Vhazo6Tm8pCiAgICAgLCBtX21heUhhdmVVbml2ZXJzYWxGaWxlUmVh
ZFNhbmRib3hFeHRlbnNpb24oZmFsc2UpCkBAIC00NjAsNyArNDU5LDYgQEAgdm9pZCBXZWJQcm9j
ZXNzUHJveHk6OnNodXREb3duKCkKICAgICAgICAgbV93ZWJDb25uZWN0aW9uID0gbnVsbHB0cjsK
ICAgICB9CiAKLSAgICBtX3Jlc3BvbnNpdmVuZXNzVGltZXIuaW52YWxpZGF0ZSgpOwogICAgIG1f
YmFja2dyb3VuZFJlc3BvbnNpdmVuZXNzVGltZXIuaW52YWxpZGF0ZSgpOwogICAgIG1fYWN0aXZp
dHlGb3JIb2xkaW5nTG9ja2VkRmlsZXMgPSBudWxscHRyOwogICAgIG1fYXVkaWJsZU1lZGlhQWN0
aXZpdHkgPSBzdGQ6Om51bGxvcHQ7CkBAIC04MDQsMTMgKzgwMiw2IEBAIHZvaWQgV2ViUHJvY2Vz
c1Byb3h5OjpnZXRXZWJBdXRoblByb2Nlc3NDb25uZWN0aW9uKE1lc3NhZ2VzOjpXZWJQcm9jZXNz
UHJveHk6OkdlCiB9CiAjZW5kaWYKIAotI2lmICFQTEFURk9STShDT0NPQSkKLWJvb2wgV2ViUHJv
Y2Vzc1Byb3h5OjpwbGF0Zm9ybUlzQmVpbmdEZWJ1Z2dlZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IGZhbHNlOwotfQotI2VuZGlmCi0KICNpZiAhUExBVEZPUk0oTUFDKQogYm9vbCBXZWJQcm9jZXNz
UHJveHk6OnNob3VsZEFsbG93Tm9uVmFsaWRJbmplY3RlZENvZGUoKSBjb25zdAogewpAQCAtOTc4
LDMwICs5NjksNiBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkQ2hhbmdlSXNSZXNwb25zaXZl
KCkKICAgICAgICAgcGFnZS0+ZGlkQ2hhbmdlUHJvY2Vzc0lzUmVzcG9uc2l2ZSgpOwogfQogCi1i
b29sIFdlYlByb2Nlc3NQcm94eTo6bWF5QmVjb21lVW5yZXNwb25zaXZlKCkKLXsKLSNpZiAhZGVm
aW5lZChOREVCVUcpIHx8IEFTQU5fRU5BQkxFRAotICAgIC8vIERpc2FibGUgcmVzcG9uc2l2ZW5l
c3MgY2hlY2tzIGluIHNsb3cgYnVpbGRzIHRvIGF2b2lkIGZhbHNlIHBvc2l0aXZlcy4KLSAgICBy
ZXR1cm4gZmFsc2U7Ci0jZWxzZQotICAgIGlmIChwbGF0Zm9ybUlzQmVpbmdEZWJ1Z2dlZCgpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBzdGF0aWMgYm9vbCBpc0xpYmdtYWxsb2NFbmFi
bGVkID0gW10gewotICAgICAgICBjaGFyKiB2YXJpYWJsZSA9IGdldGVudigiRFlMRF9JTlNFUlRf
TElCUkFSSUVTIik7Ci0gICAgICAgIGlmICghdmFyaWFibGUpCi0gICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgIGlmICghc3Ryc3RyKHZhcmlhYmxlLCAibGliZ21hbGxvYyIpKQotICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9KCk7Ci0g
ICAgaWYgKGlzTGliZ21hbGxvY0VuYWJsZWQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IHJldHVybiB0cnVlOwotI2VuZGlmCi19Ci0KICNpZiBFTkFCTEUoSVBDX1RFU1RJTkdfQVBJKQog
dm9pZCBXZWJQcm9jZXNzUHJveHk6OnNldElnbm9yZUludmFsaWRNZXNzYWdlRm9yVGVzdGluZygp
CiB7CkBAIC0xMDUzLDExICsxMDIwLDYgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZEZpbmlz
aExhdW5jaGluZyhQcm9jZXNzTGF1bmNoZXIqIGxhdW5jaGVyLCBJUEM6OkNvbm5lY3QKICAgICBl
bmFibGVSZW1vdGVJbnNwZWN0b3JJZk5lZWRlZCgpOwogI2VuZGlmCiAjZW5kaWYKLQotICAgIGlm
IChtX3Nob3VsZFN0YXJ0UmVzcG9uc2l2ZW5lc3NUaW1lcldoZW5MYXVuY2hlZCkgewotICAgICAg
ICBhdXRvIHVzZUxhenlTdG9wID0gKnN0ZDo6ZXhjaGFuZ2UobV9zaG91bGRTdGFydFJlc3BvbnNp
dmVuZXNzVGltZXJXaGVuTGF1bmNoZWQsIHN0ZDo6bnVsbG9wdCk7Ci0gICAgICAgIHN0YXJ0UmVz
cG9uc2l2ZW5lc3NUaW1lcih1c2VMYXp5U3RvcCk7Ci0gICAgfQogfQogCiBXZWJGcmFtZVByb3h5
KiBXZWJQcm9jZXNzUHJveHk6OndlYkZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlEKSBjb25z
dApAQCAtMTEyOSw3ICsxMDkxLDcgQEAgUmVmUHRyPEFQSTo6VXNlckluaXRpYXRlZEFjdGlvbj4g
V2ViUHJvY2Vzc1Byb3h5Ojp1c2VySW5pdGlhdGVkQWN0aXZpdHkodWludDY0X3QKIAogYm9vbCBX
ZWJQcm9jZXNzUHJveHk6OmlzUmVzcG9uc2l2ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcmVz
cG9uc2l2ZW5lc3NUaW1lci5pc1Jlc3BvbnNpdmUoKSAmJiBtX2JhY2tncm91bmRSZXNwb25zaXZl
bmVzc1RpbWVyLmlzUmVzcG9uc2l2ZSgpOworICAgIHJldHVybiByZXNwb25zaXZlbmVzc1RpbWVy
KCkuaXNSZXNwb25zaXZlKCkgJiYgbV9iYWNrZ3JvdW5kUmVzcG9uc2l2ZW5lc3NUaW1lci5pc1Jl
c3BvbnNpdmUoKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZERlc3Ryb3lVc2VyR2Vz
dHVyZVRva2VuKHVpbnQ2NF90IGlkZW50aWZpZXIpCkBAIC0xMjg1LDI0ICsxMjQ3LDYgQEAgdm9p
ZCBXZWJQcm9jZXNzUHJveHk6OnJlcXVlc3RUZXJtaW5hdGlvbihQcm9jZXNzVGVybWluYXRpb25S
ZWFzb24gcmVhc29uKQogICAgIHByb2Nlc3NEaWRUZXJtaW5hdGVPckZhaWxlZFRvTGF1bmNoKHJl
YXNvbik7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzdG9wUmVzcG9uc2l2ZW5lc3NUaW1l
cigpCi17Ci0gICAgcmVzcG9uc2l2ZW5lc3NUaW1lcigpLnN0b3AoKTsKLX0KLQotdm9pZCBXZWJQ
cm9jZXNzUHJveHk6OnN0YXJ0UmVzcG9uc2l2ZW5lc3NUaW1lcihVc2VMYXp5U3RvcCB1c2VMYXp5
U3RvcCkKLXsKLSAgICBpZiAoaXNMYXVuY2hpbmcoKSkgewotICAgICAgICBtX3Nob3VsZFN0YXJ0
UmVzcG9uc2l2ZW5lc3NUaW1lcldoZW5MYXVuY2hlZCA9IHVzZUxhenlTdG9wOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKHVzZUxhenlTdG9wID09IFVzZUxhenlTdG9wOjpZZXMp
Ci0gICAgICAgIHJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdGFydFdpdGhMYXp5U3RvcCgpOwotICAg
IGVsc2UKLSAgICAgICAgcmVzcG9uc2l2ZW5lc3NUaW1lcigpLnN0YXJ0KCk7Ci19Ci0KIHZvaWQg
V2ViUHJvY2Vzc1Byb3h5OjplbmFibGVTdWRkZW5UZXJtaW5hdGlvbigpCiB7CiAgICAgaWYgKHN0
YXRlKCkgIT0gU3RhdGU6OlJ1bm5pbmcpCkBAIC0xNTc1LDcgKzE1MTksNiBAQCB2b2lkIFdlYlBy
b2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZUJhY2tncm91bmRSZXNwb25zaXZlbmVzc1BpbmcoKQogCiB2
b2lkIFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc1Rlcm1pbmF0ZWQoKQogewotICAgIG1fcmVzcG9u
c2l2ZW5lc3NUaW1lci5wcm9jZXNzVGVybWluYXRlZCgpOwogICAgIG1fYmFja2dyb3VuZFJlc3Bv
bnNpdmVuZXNzVGltZXIucHJvY2Vzc1Rlcm1pbmF0ZWQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCA3ODkyMjk4MzRkNWQ5YWEyODBiYTM1MmJj
ZjRkOWNhNTk2ZGZlMGU4Li5jYjU5YzUzZTQ2OTA1NmQ4ZTgyN2U0NDU0OWIzNzNiNzljYjBlMTE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaApAQCAtMTE4LDcg
KzExOCw3IEBAIHVzaW5nIFdlYlByb2Nlc3NXaXRoQXVkaWJsZU1lZGlhQ291bnRlciA9IFJlZkNv
dW50ZXI8V2ViUHJvY2Vzc1dpdGhBdWRpYmxlTWVkaWFDCiB1c2luZyBXZWJQcm9jZXNzV2l0aEF1
ZGlibGVNZWRpYVRva2VuID0gV2ViUHJvY2Vzc1dpdGhBdWRpYmxlTWVkaWFDb3VudGVyOjpUb2tl
bjsKIGVudW0gY2xhc3MgQ2hlY2tCYWNrRm9yd2FyZExpc3QgOiBib29sIHsgTm8sIFllcyB9Owog
Ci1jbGFzcyBXZWJQcm9jZXNzUHJveHkgOiBwdWJsaWMgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LCBw
dWJsaWMgUmVzcG9uc2l2ZW5lc3NUaW1lcjo6Q2xpZW50LCBwcml2YXRlIFByb2Nlc3NUaHJvdHRs
ZXJDbGllbnQgeworY2xhc3MgV2ViUHJvY2Vzc1Byb3h5IDogcHVibGljIEF1eGlsaWFyeVByb2Nl
c3NQcm94eSwgcHJpdmF0ZSBQcm9jZXNzVGhyb3R0bGVyQ2xpZW50IHsKIHB1YmxpYzoKICAgICB0
eXBlZGVmIEhhc2hNYXA8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBSZWZQdHI8V2ViRnJhbWVQ
cm94eT4+IFdlYkZyYW1lUHJveHlNYXA7CiAgICAgdHlwZWRlZiBIYXNoTWFwPFdlYlBhZ2VQcm94
eUlkZW50aWZpZXIsIFdlYlBhZ2VQcm94eSo+IFdlYlBhZ2VQcm94eU1hcDsKQEAgLTI0MywxMCAr
MjQzLDYgQEAgcHVibGljOgogCiAgICAgdm9pZCByZXF1ZXN0VGVybWluYXRpb24oUHJvY2Vzc1Rl
cm1pbmF0aW9uUmVhc29uKTsKIAotICAgIGVudW0gY2xhc3MgVXNlTGF6eVN0b3AgOiBib29sIHsg
Tm8sIFllcyB9OwotICAgIHZvaWQgc3RhcnRSZXNwb25zaXZlbmVzc1RpbWVyKFVzZUxhenlTdG9w
ID0gVXNlTGF6eVN0b3A6Ok5vKTsKLSAgICB2b2lkIHN0b3BSZXNwb25zaXZlbmVzc1RpbWVyKCk7
Ci0KICAgICBSZWZQdHI8QVBJOjpPYmplY3Q+IHRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHMoQVBJ
OjpPYmplY3QqKTsKICAgICBzdGF0aWMgUmVmUHRyPEFQSTo6T2JqZWN0PiB0cmFuc2Zvcm1PYmpl
Y3RzVG9IYW5kbGVzKEFQSTo6T2JqZWN0Kik7CiAKQEAgLTM1Miw5ICszNDgsNiBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIHVwZGF0ZUF1ZGlibGVNZWRpYUFzc2VydGlvbnMoKTsKIAotICAgIHZvaWQg
cmVmKCkgZmluYWwgeyBUaHJlYWRTYWZlUmVmQ291bnRlZDo6cmVmKCk7IH0KLSAgICB2b2lkIGRl
cmVmKCkgZmluYWwgeyBUaHJlYWRTYWZlUmVmQ291bnRlZDo6ZGVyZWYoKTsgfQotCiAjaWYgRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHZvaWQgZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRl
eHQoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CiAgICAgdm9pZCBzZXRTZXJ2aWNlV29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYpOwpA
QCAtNDcxLDEyICs0NjQsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdldFdlYkF1dGhuUHJvY2Vz
c0Nvbm5lY3Rpb24oTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0V2ViQXV0aG5Qcm9jZXNz
Q29ubmVjdGlvbkRlbGF5ZWRSZXBseSYmKTsKICNlbmRpZgogCi0gICAgYm9vbCBwbGF0Zm9ybUlz
QmVpbmdEZWJ1Z2dlZCgpIGNvbnN0OwogICAgIGJvb2wgc2hvdWxkQWxsb3dOb25WYWxpZEluamVj
dGVkQ29kZSgpIGNvbnN0OwogCiAgICAgc3RhdGljIGNvbnN0IE1lbW9yeUNvbXBhY3RMb29rdXBP
bmx5Um9iaW5Ib29kSGFzaFNldDxTdHJpbmc+JiBwbGF0Zm9ybVBhdGhzV2l0aEFzc3VtZWRSZWFk
QWNjZXNzKCk7CiAKLSAgICBSZXNwb25zaXZlbmVzc1RpbWVyJiByZXNwb25zaXZlbmVzc1RpbWVy
KCkgeyByZXR1cm4gbV9yZXNwb25zaXZlbmVzc1RpbWVyOyB9CiAgICAgdm9pZCB1cGRhdGVCYWNr
Z3JvdW5kUmVzcG9uc2l2ZW5lc3NUaW1lcigpOwogCiAgICAgdm9pZCBwcm9jZXNzRGlkVGVybWlu
YXRlT3JGYWlsZWRUb0xhdW5jaChQcm9jZXNzVGVybWluYXRpb25SZWFzb24pOwpAQCAtNDkzLDcg
KzQ4NCw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRCZWNvbWVSZXNwb25zaXZlKCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCB3aWxsQ2hhbmdlSXNSZXNwb25zaXZlKCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkaWRDaGFuZ2VJc1Jlc3BvbnNpdmUoKSBvdmVycmlkZTsKLSAgICBib29sIG1heUJlY29tZVVu
cmVzcG9uc2l2ZSgpIG92ZXJyaWRlOwogCiAgICAgLy8gSW1wbGVtZW50ZWQgaW4gZ2VuZXJhdGVk
IFdlYlByb2Nlc3NQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKICAgICB2b2lkIGRpZFJlY2VpdmVX
ZWJQcm9jZXNzUHJveHlNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwpA
QCAtNTU5LDcgKzU0OSw2IEBAIHByaXZhdGU6CiAgICAgICAgIFJlZlB0cjxUPiBtX3N0cm9uZ09i
amVjdDsKICAgICB9OwogCi0gICAgUmVzcG9uc2l2ZW5lc3NUaW1lciBtX3Jlc3BvbnNpdmVuZXNz
VGltZXI7CiAgICAgQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyIG1fYmFja2dy
b3VuZFJlc3BvbnNpdmVuZXNzVGltZXI7CiAgICAgCiAgICAgUmVmUHRyPFdlYkNvbm5lY3Rpb25U
b1dlYlByb2Nlc3M+IG1fd2ViQ29ubmVjdGlvbjsKQEAgLTYyMiw3ICs2MTEsNiBAQCBwcml2YXRl
OgogI2lmIFBMQVRGT1JNKElPUykKICAgICBib29sIG1faGFzTWFuYWdlZFNlc3Npb25TYW5kYm94
QWNjZXNzIHsgZmFsc2UgfTsKICNlbmRpZgotICAgIHN0ZDo6b3B0aW9uYWw8VXNlTGF6eVN0b3A+
IG1fc2hvdWxkU3RhcnRSZXNwb25zaXZlbmVzc1RpbWVyV2hlbkxhdW5jaGVkOwogCiAjaWYgUExB
VEZPUk0oV0FUQ0hPUykKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc1Rocm90dGxlcjo6QmFj
a2dyb3VuZEFjdGl2aXR5PiBtX2JhY2tncm91bmRBY3Rpdml0eUZvckZ1bGxzY3JlZW5Gb3JtQ29u
dHJvbHM7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431445</attachid>
            <date>2021-06-15 09:04:46 -0700</date>
            <delta_ts>2021-06-15 13:53:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226994-20210615090445.patch</filename>
            <type>text/plain</type>
            <size>28408</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4ODc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDNjOTVmMWY5MDI5NjQ0NDBi
ZWUyMDBmODhiZTkyYWFmOWU1MzVkNTAuLmU5MjgzN2MzZjQzYzcwYzZjYWY3MjQzMTMxMTliZTU2
NTFjMTQ3NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzAgQEAKKzIwMjEtMDYtMTQgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYmFzaWMgZGV0ZWN0aW9uIG9m
IHVucmVzcG9uc2l2ZSBOZXR3b3JrIC8gR1BVIFByb2Nlc3NlcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2OTk0CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSWYgYSBXZWJQcm9jZXNzIEEgYXR0ZW1wdHMg
dG8gY29ubmVjdCB0byB0aGUgR1BVUHJvY2VzcyAvIE5ldHdvcmtQcm9jZXNzIEIgYW5kIHByb2Nl
c3MgQgorICAgICAgICBmYWlscyB0byByZXNwb25kIHdpdGhpbiAzIHNlY29uZHMsIHdlIGNvbnNp
ZGVyIHByb2Nlc3MgQiBhcyB1bnJlc3BvbnNpdmUgYW5kIHRlcm1pbmF0ZQorICAgICAgICBpdC4g
QXMgYSByZXN1bHQsIGl0IHdpbGwgcmUtYXR0ZW1wdCB0byBsYXVuY2ggcHJvY2VzcyBCIGFuZCBj
b25uZWN0IHRvIGl0IGFnYWluLgorCisgICAgICAgIFRoaXMgaGVscHMgaW4gdGhlIGZvbGxvd2lu
ZyBzY2VuYXJpbzoKKyAgICAgICAgMS4gVXNlciBpcyBpbiBhIHRhYiBhbmQgc29tZXRoaW5nIGxv
b2tzIGJyb2tlbiBkdWUgdG8gdGhlIEdQVVByb2Nlc3Mgb3IgTmV0d29ya1Byb2Nlc3MKKyAgICAg
ICAgICAgYmVjb21pbmcgdW5yZXNwb25zaXZlCisgICAgICAgIDIuIFRoZSB1c2VyIHRyaWVzIHRv
IHJlbG9hZCB0aGUgcGFnZSBpbiBhIG5ldyB0YWIKKworICAgICAgICBCZWZvcmUgdGhpcyBwYXRj
aCwgdGhlIHRhYiB3b3VsZCBiZSBzaW1pbGFybHkgYnJva2VuIC8gaHVuZyBiZWNhdXNlIHRoZSBH
UFVQcm9jZXNzIG9yCisgICAgICAgIE5ldHdvcmtQcm9jZXNzIHdvdWxkIGJlIHVucmVzcG9uc2l2
ZS4gQWZ0ZXIgdGhpcyBwYXRjaCwgd2Ugd291bGQgZGV0ZWN0IHRoZSBwcm9jZXNzIGlzCisgICAg
ICAgIGh1bmcgYW5kIGtpbGwgaXQuIEFzIGEgcmVzdWx0LCB0aGUgcGFnZSB3b3VsZCBsb2FkIGNv
cnJlY3RseSBpbiBhIG5ldyB0YWIgKHdpdGggYSBkZWxheSkuCisKKyAgICAgICAgSW4gYSBmb2xs
b3ctdXAsIEkgdGhpbmsgd2Ugc2hvdWxkIGNvbnNpZGVyIGRvaW5nIHRoZSBzYW1lIHRoaW5nIHdo
ZW4gdGhlIHVzZXIgcmVxdWVzdHMKKyAgICAgICAgYSByZWxvYWQsIHNvIHRoYXQgd2UgZG9uJ3Qg
cmVxdWlyZSBvcGVuaW5nIGEgbmV3IHRhYiB0byByZWNvdmVyLiBIb3dldmVyLCB0aGlzIGtlZXBz
CisgICAgICAgIHRoZSBwYXRjaCBzbWFsbCBhbmQgaXMgYSBkZWNlbnQgZmlyc3Qgc3RlcC4KKwor
ICAgICAgICAqIFNoYXJlZC9Qcm9jZXNzVGVybWluYXRpb25SZWFzb24uaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6QXV4
aWxpYXJ5UHJvY2Vzc1Byb3h5OjpBdXhpbGlhcnlQcm9jZXNzUHJveHkpOgorICAgICAgICAoV2Vi
S2l0OjpBdXhpbGlhcnlQcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGluZyk6CisgICAgICAg
IChXZWJLaXQ6OkF1eGlsaWFyeVByb2Nlc3NQcm94eTo6c2h1dERvd25Qcm9jZXNzKToKKyAgICAg
ICAgKFdlYktpdDo6QXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpwbGF0Zm9ybUlzQmVpbmdEZWJ1Z2dl
ZCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OkF1eGlsaWFyeVByb2Nlc3NQcm94eTo6c3RvcFJl
c3BvbnNpdmVuZXNzVGltZXIpOgorICAgICAgICAoV2ViS2l0OjpBdXhpbGlhcnlQcm9jZXNzUHJv
eHk6OnN0YXJ0UmVzcG9uc2l2ZW5lc3NUaW1lcik6CisgICAgICAgIChXZWJLaXQ6OkF1eGlsaWFy
eVByb2Nlc3NQcm94eTo6bWF5QmVjb21lVW5yZXNwb25zaXZlKToKKyAgICAgICAgKFdlYktpdDo6
QXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpkaWRCZWNvbWVVbnJlc3BvbnNpdmUpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6QXV4
aWxpYXJ5UHJvY2Vzc1Byb3h5OjpyZXNwb25zaXZlbmVzc1RpbWVyKToKKyAgICAgICAgKFdlYktp
dDo6QXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpyZXNwb25zaXZlbmVzc1RpbWVyIGNvbnN0KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW06CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6cGxhdGZvcm1Jc0JlaW5nRGVidWdnZWQgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vzc1Byb3h5OjpnZXRHUFVQcm9jZXNzQ29ubmVjdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3NQcm94eTo6Z3B1UHJvY2Vzc0V4aXRlZCk6
CisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3NQcm94eTo6ZGlkQmVjb21lVW5yZXNwb25zaXZl
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRCZWNvbWVVbnJlc3BvbnNpdmUpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlJlc3BvbnNpdmVuZXNzVGltZXI6OnRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViS2l0
OjpSZXNwb25zaXZlbmVzc1RpbWVyOjptYXlCZWNvbWVVbnJlc3BvbnNpdmUgY29uc3QpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9SZXNwb25zaXZlbmVzc1RpbWVyLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6
OmdwdVByb2Nlc3NFeGl0ZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OldlYlByb2Nlc3NQcm94eSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6c2h1dERvd24pOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGluZyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6aXNSZXNwb25zaXZlIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzVGVybWluYXRlZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQcm94eTo6cGxhdGZvcm1Jc0JlaW5nRGVidWdnZWQgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6Om1heUJlY29tZVVucmVzcG9u
c2l2ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6c3RvcFJl
c3BvbnNpdmVuZXNzVGltZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UHJveHk6OnN0YXJ0UmVzcG9uc2l2ZW5lc3NUaW1lcik6IERlbGV0ZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJv
eHk6OnJlc3BvbnNpdmVuZXNzVGltZXIpOiBEZWxldGVkLgorCiAyMDIxLTA2LTE1ICBZb3Vlbm4g
RmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBDYWNoZXM6OnJlbW92ZUNhY2hl
RW50cnkgc2hvdWxkIGNoZWNrIGZvciBtX3N0b3JhZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1Byb2Nlc3NUZXJtaW5hdGlvblJlYXNvbi5oIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uLmgKaW5kZXggODU3MWM0NjkyZWUwNDk0NjhlOTUw
MGJhYTlhMjJjNTk0ODM1NjIyYS4uMjE5YWNmYzI2NzRmZGY0ZjhlNzMyMmRkZjM5NDY5YzRlYmNh
MzVkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUHJvY2Vzc1Rlcm1pbmF0aW9u
UmVhc29uLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUHJvY2Vzc1Rlcm1pbmF0aW9uUmVh
c29uLmgKQEAgLTM5LDcgKzM5LDggQEAgZW51bSBjbGFzcyBQcm9jZXNzVGVybWluYXRpb25SZWFz
b24gewogCiBlbnVtIGNsYXNzIEdQVVByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbiB7CiAgICAgQ3Jh
c2gsCi0gICAgSWRsZUV4aXQKKyAgICBJZGxlRXhpdCwKKyAgICBVbnJlc3BvbnNpdmUKIH07CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHku
Y3BwCmluZGV4IDExNDBkNmM4MWUzN2YyYzhjZmNmMzYxNzgxZjNiOTkyNzBlODhjYjcuLjc3MDdh
OTRkNTUxMTM3NTdkYzRlNThjZGI2M2IxZDNhYWY5ZDEwYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmNwcApAQCAtMzIsMTAgKzMyLDE3
IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSA8d3RmL1J1bkxvb3Au
aD4KIAorI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgIlNhbmRib3hVdGlsaXRpZXMuaCIK
KyNpbmNsdWRlIDxzeXMvc3lzY3RsLmg+CisjaW5jbHVkZSA8d3RmL3NwaS9kYXJ3aW4vU2FuZGJv
eFNQSS5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBBdXhpbGlhcnlQcm9jZXNz
UHJveHk6OkF1eGlsaWFyeVByb2Nlc3NQcm94eShib29sIGFsd2F5c1J1bnNBdEJhY2tncm91bmRQ
cmlvcml0eSkKLSAgICA6IG1fYWx3YXlzUnVuc0F0QmFja2dyb3VuZFByaW9yaXR5KGFsd2F5c1J1
bnNBdEJhY2tncm91bmRQcmlvcml0eSkKKyAgICA6IG1fcmVzcG9uc2l2ZW5lc3NUaW1lcigqdGhp
cykKKyAgICAsIG1fYWx3YXlzUnVuc0F0QmFja2dyb3VuZFByaW9yaXR5KGFsd2F5c1J1bnNBdEJh
Y2tncm91bmRQcmlvcml0eSkKIHsKIH0KIApAQCAtMjUyLDYgKzI1OSwxMSBAQCB2b2lkIEF1eGls
aWFyeVByb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nKFByb2Nlc3NMYXVuY2hlciosIElQ
Qzo6Q29ubmVjdGlvbgogICAgICAgICAgICAgSVBDOjphZGRBc3luY1JlcGx5SGFuZGxlcigqY29u
bmVjdGlvbigpLCBwZW5kaW5nTWVzc2FnZS5hc3luY1JlcGx5SW5mby0+c2Vjb25kLCBXVEZNb3Zl
KHBlbmRpbmdNZXNzYWdlLmFzeW5jUmVwbHlJbmZvLT5maXJzdCkpOwogICAgICAgICBtX2Nvbm5l
Y3Rpb24tPnNlbmRNZXNzYWdlKFdURk1vdmUocGVuZGluZ01lc3NhZ2UuZW5jb2RlciksIHBlbmRp
bmdNZXNzYWdlLnNlbmRPcHRpb25zKTsKICAgICB9CisKKyAgICBpZiAobV9zaG91bGRTdGFydFJl
c3BvbnNpdmVuZXNzVGltZXJXaGVuTGF1bmNoZWQpIHsKKyAgICAgICAgYXV0byB1c2VMYXp5U3Rv
cCA9ICpzdGQ6OmV4Y2hhbmdlKG1fc2hvdWxkU3RhcnRSZXNwb25zaXZlbmVzc1RpbWVyV2hlbkxh
dW5jaGVkLCBzdGQ6Om51bGxvcHQpOworICAgICAgICBzdGFydFJlc3BvbnNpdmVuZXNzVGltZXIo
dXNlTGF6eVN0b3ApOworICAgIH0KIH0KIAogdm9pZCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnJl
cGx5VG9QZW5kaW5nTWVzc2FnZXMoKQpAQCAtMjkyLDYgKzMwNCw3IEBAIHZvaWQgQXV4aWxpYXJ5
UHJvY2Vzc1Byb3h5OjpzaHV0RG93blByb2Nlc3MoKQogCiAgICAgbV9jb25uZWN0aW9uLT5pbnZh
bGlkYXRlKCk7CiAgICAgbV9jb25uZWN0aW9uID0gbnVsbHB0cjsKKyAgICBtX3Jlc3BvbnNpdmVu
ZXNzVGltZXIuaW52YWxpZGF0ZSgpOwogfQogCiB2b2lkIEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6
c2V0UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZChib29sIHByb2Nlc3NTdXBwcmVzc2lvbkVuYWJs
ZWQpCkBAIC0zMTUsNCArMzI4LDUxIEBAIHZvaWQgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5Ojpsb2dJ
bnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6CiAgICAgUkVM
RUFTRV9MT0dfRkFVTFQoSVBDLCAiUmVjZWl2ZWQgYW4gaW52YWxpZCBtZXNzYWdlICclIiBQVUJM
SUNfTE9HX1NUUklORyAiJyBmcm9tIHRoZSAlIiBQVUJMSUNfTE9HX1NUUklORyAiIHByb2Nlc3Mu
IiwgZGVzY3JpcHRpb24obWVzc2FnZU5hbWUpLCBwcm9jZXNzTmFtZSgpLmNoYXJhY3RlcnMoKSk7
CiB9CiAKK2Jvb2wgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpwbGF0Zm9ybUlzQmVpbmdEZWJ1Z2dl
ZCgpIGNvbnN0Cit7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgLy8gSWYgdGhlIFVJIHByb2Nl
c3MgaXMgc2FuZGJveGVkIGFuZCBsYWNrcyAncHJvY2Vzcy1pbmZvLXBpZGluZm8nLCBpdCBjYW5u
b3QgZmluZCBvdXQgd2hldGhlciBvdGhlciBwcm9jZXNzZXMgYXJlIGJlaW5nIGRlYnVnZ2VkLgor
ICAgIGlmIChjdXJyZW50UHJvY2Vzc0lzU2FuZGJveGVkKCkgJiYgISFzYW5kYm94X2NoZWNrKGdl
dHBpZCgpLCAicHJvY2Vzcy1pbmZvLXBpZGluZm8iLCBTQU5EQk9YX0NIRUNLX05PX1JFUE9SVCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHN0cnVjdCBraW5mb19wcm9jIGluZm87Cisg
ICAgaW50IG1pYltdID0geyBDVExfS0VSTiwgS0VSTl9QUk9DLCBLRVJOX1BST0NfUElELCBwcm9j
ZXNzSWRlbnRpZmllcigpIH07CisgICAgc2l6ZV90IHNpemUgPSBzaXplb2YoaW5mbyk7CisgICAg
aWYgKHN5c2N0bChtaWIsIFdURl9BUlJBWV9MRU5HVEgobWliKSwgJmluZm8sICZzaXplLCBudWxs
cHRyLCAwKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGluZm8u
a3BfcHJvYy5wX2ZsYWcgJiBQX1RSQUNFRDsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2Vu
ZGlmCit9CisKK3ZvaWQgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpzdG9wUmVzcG9uc2l2ZW5lc3NU
aW1lcigpCit7CisgICAgcmVzcG9uc2l2ZW5lc3NUaW1lcigpLnN0b3AoKTsKK30KKwordm9pZCBB
dXhpbGlhcnlQcm9jZXNzUHJveHk6OnN0YXJ0UmVzcG9uc2l2ZW5lc3NUaW1lcihVc2VMYXp5U3Rv
cCB1c2VMYXp5U3RvcCkKK3sKKyAgICBpZiAoaXNMYXVuY2hpbmcoKSkgeworICAgICAgICBtX3No
b3VsZFN0YXJ0UmVzcG9uc2l2ZW5lc3NUaW1lcldoZW5MYXVuY2hlZCA9IHVzZUxhenlTdG9wOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKHVzZUxhenlTdG9wID09IFVzZUxhenlT
dG9wOjpZZXMpCisgICAgICAgIHJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdGFydFdpdGhMYXp5U3Rv
cCgpOworICAgIGVsc2UKKyAgICAgICAgcmVzcG9uc2l2ZW5lc3NUaW1lcigpLnN0YXJ0KCk7Cit9
CisKK2Jvb2wgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjptYXlCZWNvbWVVbnJlc3BvbnNpdmUoKQor
eworICAgIHJldHVybiAhcGxhdGZvcm1Jc0JlaW5nRGVidWdnZWQoKTsKK30KKwordm9pZCBBdXhp
bGlhcnlQcm9jZXNzUHJveHk6OmRpZEJlY29tZVVucmVzcG9uc2l2ZSgpCit7CisgICAgUkVMRUFT
RV9MT0dfRVJST1IoUHJvY2VzcywgIkF1eGlsaWFyeVByb2Nlc3NQcm94eTo6ZGlkQmVjb21lVW5y
ZXNwb25zaXZlOiAlIiBQVUJMSUNfTE9HX1NUUklORyAiIHByb2Nlc3Mgd2l0aCBQSUQgJWQgYmVj
YW1lIHVucmVzcG9uc2l2ZSIsIHByb2Nlc3NOYW1lKCkuY2hhcmFjdGVycygpLCBwcm9jZXNzSWRl
bnRpZmllcigpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oCmluZGV4IDlhYjYyOGE2ZmQxYzlj
NGNlMzQ0ZmQ1OGM1MWI3OWFjNzdkMGNkNTcuLjUzZWQ1NmVhY2VjMDMzMzUzNDJiMjkxMmMxZWIz
OGU5ZWVhZGY5MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFy
eVByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVBy
b2Nlc3NQcm94eS5oCkBAIC0yOCw3ICsyOCw3IEBACiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgog
I2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlck1hcC5oIgogI2luY2x1ZGUgIlByb2Nlc3NMYXVuY2hl
ci5oIgotCisjaW5jbHVkZSAiUmVzcG9uc2l2ZW5lc3NUaW1lci5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvUHJvY2Vzc0lkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvUHJvY2Vzc0lELmg+CiAjaW5j
bHVkZSA8d3RmL1N5c3RlbVRyYWNpbmcuaD4KQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdl
YktpdCB7CiAKIGNsYXNzIFByb2Nlc3NUaHJvdHRsZXI7CiAKLWNsYXNzIEF1eGlsaWFyeVByb2Nl
c3NQcm94eSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxBdXhpbGlhcnlQcm9jZXNzUHJv
eHksIFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW5SdW5Mb29wPiwgcHJpdmF0ZSBQcm9jZXNz
TGF1bmNoZXI6OkNsaWVudCwgcHVibGljIElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50IHsKK2NsYXNz
IEF1eGlsaWFyeVByb2Nlc3NQcm94eSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxBdXhp
bGlhcnlQcm9jZXNzUHJveHksIFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW5SdW5Mb29wPiwg
cHVibGljIFJlc3BvbnNpdmVuZXNzVGltZXI6OkNsaWVudCwgcHJpdmF0ZSBQcm9jZXNzTGF1bmNo
ZXI6OkNsaWVudCwgcHVibGljIElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50IHsKICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShBdXhpbGlhcnlQcm9jZXNzUHJveHkpOwogCiBwcm90ZWN0ZWQ6CkBAIC0x
MjYsNiArMTI2LDE3IEBAIHB1YmxpYzoKICAgICBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBj
b3JlUHJvY2Vzc0lkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3Byb2Nlc3NJZGVudGlmaWVy
OyB9CiAKICAgICB2b2lkIHNldFByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQoYm9vbCk7CisgICAg
Ym9vbCBwbGF0Zm9ybUlzQmVpbmdEZWJ1Z2dlZCgpIGNvbnN0OworCisgICAgZW51bSBjbGFzcyBV
c2VMYXp5U3RvcCA6IGJvb2wgeyBObywgWWVzIH07CisgICAgdm9pZCBzdGFydFJlc3BvbnNpdmVu
ZXNzVGltZXIoVXNlTGF6eVN0b3AgPSBVc2VMYXp5U3RvcDo6Tm8pOworICAgIHZvaWQgc3RvcFJl
c3BvbnNpdmVuZXNzVGltZXIoKTsKKworICAgIFJlc3BvbnNpdmVuZXNzVGltZXImIHJlc3BvbnNp
dmVuZXNzVGltZXIoKSB7IHJldHVybiBtX3Jlc3BvbnNpdmVuZXNzVGltZXI7IH0KKyAgICBjb25z
dCBSZXNwb25zaXZlbmVzc1RpbWVyJiByZXNwb25zaXZlbmVzc1RpbWVyKCkgY29uc3QgeyByZXR1
cm4gbV9yZXNwb25zaXZlbmVzc1RpbWVyOyB9CisKKyAgICB2b2lkIHJlZigpIGZpbmFsIHsgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ6OnJlZigpOyB9CisgICAgdm9pZCBkZXJlZigpIGZpbmFsIHsgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ6OmRlcmVmKCk7IH0KIAogcHJvdGVjdGVkOgogICAgIC8vIFByb2Nl
c3NMYXVuY2hlcjo6Q2xpZW50CkBAIC0xNDgsMTYgKzE1OSwyNSBAQCBwcm90ZWN0ZWQ6CiAKICAg
ICB2aXJ0dWFsIGJvb2wgc2hvdWxkU2VuZFBlbmRpbmdNZXNzYWdlKGNvbnN0IFBlbmRpbmdNZXNz
YWdlJikgeyByZXR1cm4gdHJ1ZTsgfQogCisgICAgLy8gUmVzcG9uc2l2ZW5lc3NUaW1lcjo6Q2xp
ZW50LgorICAgIHZvaWQgZGlkQmVjb21lVW5yZXNwb25zaXZlKCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBkaWRCZWNvbWVSZXNwb25zaXZlKCkgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCB3aWxsQ2hhbmdl
SXNSZXNwb25zaXZlKCkgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBkaWRDaGFuZ2VJc1Jlc3BvbnNp
dmUoKSBvdmVycmlkZSB7IH0KKyAgICBib29sIG1heUJlY29tZVVucmVzcG9uc2l2ZSgpIG92ZXJy
aWRlOworCiBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBjb25uZWN0aW9uV2lsbE9wZW4oSVBD
OjpDb25uZWN0aW9uJik7CiAgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NXaWxsU2h1dERvd24oSVBD
OjpDb25uZWN0aW9uJikgPSAwOwogCisgICAgUmVzcG9uc2l2ZW5lc3NUaW1lciBtX3Jlc3BvbnNp
dmVuZXNzVGltZXI7CiAgICAgVmVjdG9yPFBlbmRpbmdNZXNzYWdlPiBtX3BlbmRpbmdNZXNzYWdl
czsKICAgICBSZWZQdHI8UHJvY2Vzc0xhdW5jaGVyPiBtX3Byb2Nlc3NMYXVuY2hlcjsKICAgICBS
ZWZQdHI8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CiAgICAgSVBDOjpNZXNzYWdlUmVj
ZWl2ZXJNYXAgbV9tZXNzYWdlUmVjZWl2ZXJNYXA7CiAgICAgYm9vbCBtX2Fsd2F5c1J1bnNBdEJh
Y2tncm91bmRQcmlvcml0eSB7IGZhbHNlIH07CiAgICAgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZp
ZXIgbV9wcm9jZXNzSWRlbnRpZmllciB7IFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyOjpnZW5l
cmF0ZSgpIH07CisgICAgc3RkOjpvcHRpb25hbDxVc2VMYXp5U3RvcD4gbV9zaG91bGRTdGFydFJl
c3BvbnNpdmVuZXNzVGltZXJXaGVuTGF1bmNoZWQ7CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1By
b3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJv
eHlDb2NvYS5tbQppbmRleCBjNzI0Y2Y0NGUwYzM4YWE0YTAzNzU4MTczNDA0Mzg0NDFmOTUzOWYz
Li41ZGI0OGYwM2ZmOGI0YzYyYzY0MDI0Njk2ZWJmNDM0NDNhNTg0NDMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQpA
QCAtMTQ0LDIxICsxNDQsNiBAQCBSZWZQdHI8T2JqQ09iamVjdEdyYXBoPiBXZWJQcm9jZXNzUHJv
eHk6OnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXMoT2JqQ09iamVjdEdyYQogICAgIHJldHVybiBP
YmpDT2JqZWN0R3JhcGg6OmNyZWF0ZShPYmpDT2JqZWN0R3JhcGg6OnRyYW5zZm9ybShvYmplY3RH
cmFwaC5yb290T2JqZWN0KCksIFRyYW5zZm9ybWVyKCkpLmdldCgpKTsKIH0KIAotYm9vbCBXZWJQ
cm9jZXNzUHJveHk6OnBsYXRmb3JtSXNCZWluZ0RlYnVnZ2VkKCkgY29uc3QKLXsKLSAgICAvLyBJ
ZiB0aGUgVUkgcHJvY2VzcyBpcyBzYW5kYm94ZWQgYW5kIGxhY2tzICdwcm9jZXNzLWluZm8tcGlk
aW5mbycsIGl0IGNhbm5vdCBmaW5kIG91dCB3aGV0aGVyIG90aGVyIHByb2Nlc3NlcyBhcmUgYmVp
bmcgZGVidWdnZWQuCi0gICAgaWYgKGN1cnJlbnRQcm9jZXNzSXNTYW5kYm94ZWQoKSAmJiAhIXNh
bmRib3hfY2hlY2soZ2V0cGlkKCksICJwcm9jZXNzLWluZm8tcGlkaW5mbyIsIFNBTkRCT1hfQ0hF
Q0tfTk9fUkVQT1JUKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgc3RydWN0IGtpbmZv
X3Byb2MgaW5mbzsKLSAgICBpbnQgbWliW10gPSB7IENUTF9LRVJOLCBLRVJOX1BST0MsIEtFUk5f
UFJPQ19QSUQsIHByb2Nlc3NJZGVudGlmaWVyKCkgfTsKLSAgICBzaXplX3Qgc2l6ZSA9IHNpemVv
ZihpbmZvKTsKLSAgICBpZiAoc3lzY3RsKG1pYiwgV1RGX0FSUkFZX0xFTkdUSChtaWIpLCAmaW5m
bywgJnNpemUsIG51bGxwdHIsIDApID09IC0xKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICByZXR1cm4gaW5mby5rcF9wcm9jLnBfZmxhZyAmIFBfVFJBQ0VEOwotfQotCiBzdGF0aWMgVmVj
dG9yPFN0cmluZz4mIG1lZGlhVHlwZUNhY2hlKCkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNN
YWluKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nl
c3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5
LmNwcAppbmRleCBiODkyYzk2N2Q4MGVmZjUwYTQzMGUwZjUzNWQ2OTE2NDliZmJlMzhhLi5hZGM0
YTRkMTJmMGNkZDY2ODQ1OTA0YjE4MjFjNmIwYWI2MDI0NGU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmNwcApAQCAtMzI3LDEyICszMjcsMTQg
QEAgdm9pZCBHUFVQcm9jZXNzUHJveHk6OmdldEdQVVByb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nl
c3NQcm94eSYgd2ViUHJvY2Vzc1Byb3h5LAogICAgIGFkZFNlc3Npb24od2ViUHJvY2Vzc1Byb3h5
LndlYnNpdGVEYXRhU3RvcmUoKSk7CiAKICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lv
biwgIiVwIC0gR1BVUHJvY2Vzc1Byb3h5IGlzIHRha2luZyBhIGJhY2tncm91bmQgYXNzZXJ0aW9u
IGJlY2F1c2UgYSB3ZWIgcHJvY2VzcyBpcyByZXF1ZXN0aW5nIGEgY29ubmVjdGlvbiIsIHRoaXMp
OworICAgIHN0YXJ0UmVzcG9uc2l2ZW5lc3NUaW1lcihVc2VMYXp5U3RvcDo6Tm8pOwogICAgIHNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6R1BVUHJvY2Vzczo6Q3JlYXRlR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyB7IHdlYlByb2Nlc3NQcm94eS5jb3JlUHJvY2Vzc0lkZW50aWZpZXIoKSwg
d2ViUHJvY2Vzc1Byb3h5LnNlc3Npb25JRCgpLCBwYXJhbWV0ZXJzIH0sIFt0aGlzLCB3ZWFrVGhp
cyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0oYXV0byYmIGlk
ZW50aWZpZXIpIG11dGFibGUgewogICAgICAgICBpZiAoIXdlYWtUaGlzKSB7CiAgICAgICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUihQcm9jZXNzLCAiR1BVUHJvY2Vzc1Byb3h5OjpnZXRHUFVQcm9j
ZXNzQ29ubmVjdGlvbjogR1BVUHJvY2Vzc1Byb3h5IGRlYWxsb2NhdGVkIGR1cmluZyBjb25uZWN0
aW9uIGVzdGFibGlzaG1lbnQiKTsKICAgICAgICAgICAgIHJldHVybiByZXBseSh7IH0pOwogICAg
ICAgICB9CiAKKyAgICAgICAgc3RvcFJlc3BvbnNpdmVuZXNzVGltZXIoKTsKICAgICAgICAgaWYg
KCFpZGVudGlmaWVyKSB7CiAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQcm9jZXNzLCAi
R1BVUHJvY2Vzc1Byb3h5OjpnZXRHUFVQcm9jZXNzQ29ubmVjdGlvbjogY29ubmVjdGlvbiBpZGVu
dGlmaWVyIGlzIGVtcHR5Iik7CiAgICAgICAgICAgICByZXR1cm4gcmVwbHkoeyB9KTsKQEAgLTM2
MSw2ICszNjMsOSBAQCB2b2lkIEdQVVByb2Nlc3NQcm94eTo6Z3B1UHJvY2Vzc0V4aXRlZChHUFVQ
cm9jZXNzVGVybWluYXRpb25SZWFzb24gcmVhc29uKQogICAgIGNhc2UgR1BVUHJvY2Vzc1Rlcm1p
bmF0aW9uUmVhc29uOjpJZGxlRXhpdDoKICAgICAgICAgUkVMRUFTRV9MT0coUHJvY2VzcywgIiVw
IC0gR1BVUHJvY2Vzc1Byb3h5OjpncHVQcm9jZXNzRXhpdGVkOiByZWFzb249aWRsZS1leGl0Iiwg
dGhpcyk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgR1BVUHJvY2Vzc1Rlcm1pbmF0aW9uUmVh
c29uOjpVbnJlc3BvbnNpdmU6CisgICAgICAgIFJFTEVBU0VfTE9HKFByb2Nlc3MsICIlcCAtIEdQ
VVByb2Nlc3NQcm94eTo6Z3B1UHJvY2Vzc0V4aXRlZDogcmVhc29uPXVucmVzcG9uc2l2ZSIsIHRo
aXMpOworICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBpZiAoc2luZ2xldG9uKCkgPT0gdGhp
cykKQEAgLTU5Miw2ICs1OTcsMTMgQEAgdm9pZCBHUFVQcm9jZXNzUHJveHk6OnVwZGF0ZVByZWZl
cmVuY2VzKCkKICNlbmRpZgogfQogCit2b2lkIEdQVVByb2Nlc3NQcm94eTo6ZGlkQmVjb21lVW5y
ZXNwb25zaXZlKCkKK3sKKyAgICBSRUxFQVNFX0xPR19FUlJPUihQcm9jZXNzLCAiR1BVUHJvY2Vz
c1Byb3h5OjpkaWRCZWNvbWVVbnJlc3BvbnNpdmU6IEdQVVByb2Nlc3Mgd2l0aCBQSUQgJWQgYmVj
YW1lIHVucmVzcG9uc2l2ZSwgdGVybWluYXRpbmcgaXQiLCBwcm9jZXNzSWRlbnRpZmllcigpKTsK
KyAgICB0ZXJtaW5hdGUoKTsKKyAgICBncHVQcm9jZXNzRXhpdGVkKEdQVVByb2Nlc3NUZXJtaW5h
dGlvblJlYXNvbjo6VW5yZXNwb25zaXZlKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAK
ICN1bmRlZiBNRVNTQUdFX0NIRUNLCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BV
UHJvY2Vzc1Byb3h5LmgKaW5kZXggOGU0MjE1NDc4NTNhNzY0NTFmNGRlZjc2MTE0ODU3OGE3NGNi
MTUxZC4uYWJlMGM5MGVhODI3OWE4N2IyOGQ3OTg0M2JkNmVkZGI5M2FjZWRjMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuaApAQCAtMTE4LDYgKzEx
OCw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKSBvdmVy
cmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
LCBJUEM6Ok1lc3NhZ2VOYW1lKSBvdmVycmlkZTsKIAorICAgIC8vIFJlc3BvbnNpdmVuZXNzVGlt
ZXI6OkNsaWVudAorICAgIHZvaWQgZGlkQmVjb21lVW5yZXNwb25zaXZlKCkgZmluYWw7CisKICAg
ICB2b2lkIHRlcm1pbmF0ZVdlYlByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIpOwog
ICAgIHZvaWQgcHJvY2Vzc0lzUmVhZHlUb0V4aXQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggYmY3
OGE1MjlkNmIyMjM4Y2Y5NjZjMWE1ODYwZWU4OTUzZjJlODcwZS4uMzRkNTdjY2YwZjMwZGY0YTBi
Mjk1MWU5Zjk2ODc0MzFmOGZmMzIwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0xMjIsNiArMTIyLDEy
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6dGVybWluYXRlKCkKICAgICBuZXR3b3JrUHJv
Y2Vzc0RpZFRlcm1pbmF0ZShUZXJtaW5hdGlvblJlYXNvbjo6UmVxdWVzdGVkQnlDbGllbnQpOwog
fQogCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZEJlY29tZVVucmVzcG9uc2l2ZSgpCit7
CisgICAgUkVMRUFTRV9MT0dfRVJST1IoUHJvY2VzcywgIk5ldHdvcmtQcm9jZXNzUHJveHk6OmRp
ZEJlY29tZVVucmVzcG9uc2l2ZTogTmV0d29ya1Byb2Nlc3Mgd2l0aCBQSUQgJWQgYmVjYW1lIHVu
cmVzcG9uc2l2ZSwgdGVybWluYXRpbmcgaXQiLCBwcm9jZXNzSWRlbnRpZmllcigpKTsKKyAgICB0
ZXJtaW5hdGUoKTsKK30KKwogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZW5kQ3JlYXRpb25Q
YXJhbWV0ZXJzVG9OZXdQcm9jZXNzKCkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OwpAQCAtMjM3LDEyICsyNDMsMTQgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpwcm9jZXNz
V2lsbFNodXREb3duKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKIHZvaWQgTmV0d29ya1By
b2Nlc3NQcm94eTo6Z2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYg
d2ViUHJvY2Vzc1Byb3h5LCBNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewogICAgIFJFTEVBU0VfTE9H
KFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBOZXR3b3JrUHJvY2Vzc1Byb3h5IGlzIHRha2luZyBh
IGJhY2tncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgYSB3ZWIgcHJvY2VzcyBpcyByZXF1ZXN0aW5n
IGEgY29ubmVjdGlvbiIsIHRoaXMpOworICAgIHN0YXJ0UmVzcG9uc2l2ZW5lc3NUaW1lcihVc2VM
YXp5U3RvcDo6Tm8pOwogICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1By
b2Nlc3M6OkNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIHsgd2ViUHJvY2Vzc1By
b3h5LmNvcmVQcm9jZXNzSWRlbnRpZmllcigpLCB3ZWJQcm9jZXNzUHJveHkuc2Vzc2lvbklEKCkg
fSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCByZXBseSA9IFdURk1vdmUo
cmVwbHkpXShhdXRvJiYgaWRlbnRpZmllciwgYXV0byBjb29raWVBY2NlcHRQb2xpY3kpIG11dGFi
bGUgewogICAgICAgICBpZiAoIXdlYWtUaGlzKSB7CiAgICAgICAgICAgICBSRUxFQVNFX0xPR19F
UlJPUihQcm9jZXNzLCAiTmV0d29ya1Byb2Nlc3NQcm94eTo6Z2V0TmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uOiBOZXR3b3JrUHJvY2Vzc1Byb3h5IGRlYWxsb2NhdGVkIGR1cmluZyBjb25uZWN0aW9u
IGVzdGFibGlzaG1lbnQiKTsKICAgICAgICAgICAgIHJldHVybiByZXBseSh7IH0pOwogICAgICAg
ICB9CiAKKyAgICAgICAgc3RvcFJlc3BvbnNpdmVuZXNzVGltZXIoKTsKICAgICAgICAgaWYgKCFp
ZGVudGlmaWVyKSB7CiAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQcm9jZXNzLCAiTmV0
d29ya1Byb2Nlc3NQcm94eTo6Z2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOiBjb25uZWN0aW9u
IGlkZW50aWZpZXIgaXMgZW1wdHkiKTsKICAgICAgICAgICAgIHJldHVybiByZXBseSh7IH0pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuaAppbmRleCBiYjAxMTQwZTQzMzBlZmU4NjI2NTg1NmU0ZDE2NGVjMDkzYTE1NTYwLi4w
MGE4NDNiZGViMmExNDY4YzYxNmU1MzRmZDhlYmYxNWMzNTRkZDk3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAt
Mjg2LDYgKzI4Niw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlTmFtZSkgb3ZlcnJpZGU7CiAgICAgYm9v
bCBkaWRSZWNlaXZlU3luY05ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6RGVjb2RlciYsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+Jik7CiAKKyAgICAvLyBS
ZXNwb25zaXZlbmVzc1RpbWVyOjpDbGllbnQKKyAgICB2b2lkIGRpZEJlY29tZVVucmVzcG9uc2l2
ZSgpIGZpbmFsOworCiAgICAgLy8gTWVzc2FnZSBoYW5kbGVycwogICAgIHZvaWQgZGlkUmVjZWl2
ZU5ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2Rl
ciYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFBBTDo6U2Vz
c2lvbklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mLCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSYmLCBib29sLCB1aW50NjRfdCBjaGFsbGVuZ2VJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9SZXNwb25zaXZlbmVzc1RpbWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwCmluZGV4IDA3YjhjZWRjY2JmZTBkYjEwYjgz
MTYwMzQ5NDVjZTRkN2UwY2Y1OTIuLjQxZjBiMTU3Y2EyMzMwNTVlMzI1MmUwNzU2ZWU4Yjc1MDli
Y2E2OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jlc3BvbnNpdmVuZXNz
VGltZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jlc3BvbnNpdmVuZXNzVGlt
ZXIuY3BwCkBAIC03MCw3ICs3MCw3IEBAIHZvaWQgUmVzcG9uc2l2ZW5lc3NUaW1lcjo6dGltZXJG
aXJlZCgpCiAKICAgICBhdXRvIHByb3RlY3RlZENsaWVudCA9IG1ha2VSZWYobV9jbGllbnQpOwog
Ci0gICAgaWYgKCFtX2NsaWVudC5tYXlCZWNvbWVVbnJlc3BvbnNpdmUoKSkgeworICAgIGlmICgh
bWF5QmVjb21lVW5yZXNwb25zaXZlKCkpIHsKICAgICAgICAgbV93YWl0aW5nRm9yVGltZXIgPSB0
cnVlOwogICAgICAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdChyZXNwb25zaXZlbmVzc1RpbWVvdXQp
OwogICAgICAgICByZXR1cm47CkBAIC0xMDQsNiArMTA0LDI2IEBAIHZvaWQgUmVzcG9uc2l2ZW5l
c3NUaW1lcjo6c3RhcnQoKQogICAgIH0KIH0KIAorYm9vbCBSZXNwb25zaXZlbmVzc1RpbWVyOjpt
YXlCZWNvbWVVbnJlc3BvbnNpdmUoKSBjb25zdAoreworI2lmICFkZWZpbmVkKE5ERUJVRykgfHwg
QVNBTl9FTkFCTEVECisgICAgcmV0dXJuIGZhbHNlOworI2Vsc2UKKyAgICBzdGF0aWMgYm9vbCBp
c0xpYmdtYWxsb2NFbmFibGVkID0gW10geworICAgICAgICBjaGFyKiB2YXJpYWJsZSA9IGdldGVu
digiRFlMRF9JTlNFUlRfTElCUkFSSUVTIik7CisgICAgICAgIGlmICghdmFyaWFibGUpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICghc3Ryc3RyKHZhcmlhYmxlLCAibGli
Z21hbGxvYyIpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICB9KCk7CisgICAgaWYgKGlzTGliZ21hbGxvY0VuYWJsZWQpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIHJldHVybiBtX2NsaWVudC5tYXlCZWNvbWVVbnJlc3BvbnNpdmUoKTsK
KyNlbmRpZgorfQorCiB2b2lkIFJlc3BvbnNpdmVuZXNzVGltZXI6OnN0YXJ0V2l0aExhenlTdG9w
KCkKIHsKICAgICBpZiAoIW1fd2FpdGluZ0ZvclRpbWVyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9SZXNwb25zaXZlbmVzc1RpbWVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9SZXNwb25zaXZlbmVzc1RpbWVyLmgKaW5kZXggNWFhNjU0M2E1ZDQ2ZDZmNzNmOTI1
ZTFlMDg3ZjFlMGI1NGFhNDUzZS4uYjEzNTgxMmU0MTkwY2E4NmE3ZTAyMGM0ZDYwM2E0MmY4ODFk
ODc5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVzcG9uc2l2ZW5lc3NU
aW1lci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jlc3BvbnNpdmVuZXNzVGltZXIu
aApAQCAtNzcsNiArNzcsOCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZvaWQgdGltZXJGaXJl
ZCgpOwogCisgICAgYm9vbCBtYXlCZWNvbWVVbnJlc3BvbnNpdmUoKSBjb25zdDsKKwogICAgIFJl
c3BvbnNpdmVuZXNzVGltZXI6OkNsaWVudCYgbV9jbGllbnQ7CiAKICAgICBSdW5Mb29wOjpUaW1l
cjxSZXNwb25zaXZlbmVzc1RpbWVyPiBtX3RpbWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IDdjOTAyYmU1MDJmNGEyNTIwNTc2MzIwNzRiZGUzNTEz
YzhjYjg4ODQuLjgxNmVhNDMyMzQ1ZjJhOWI3YWQ1MTZkZjQzY2M2MDRiYjQ1OWQyYTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTUwMiwxNCArNTAy
LDE0IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmdwdVByb2Nlc3NFeGl0ZWQoUHJvY2Vzc0lEIGlk
ZW50aWZpZXIsIEdQVVByb2Nlc3NUZXJtaW5hdGlvCiAgICAgV0VCUFJPQ0VTU1BPT0xfUkVMRUFT
RV9MT0coUHJvY2VzcywgImdwdVByb2Nlc3NEaWRFeGl0OiBQSUQ9JWQsIHJlYXNvbj0ldSIsIGlk
ZW50aWZpZXIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihyZWFzb24pKTsKICAgICBtX2dwdVByb2Nl
c3MgPSBudWxscHRyOwogCi0gICAgaWYgKHJlYXNvbiA9PSBHUFVQcm9jZXNzVGVybWluYXRpb25S
ZWFzb246OkNyYXNoKQorICAgIGlmIChyZWFzb24gPT0gR1BVUHJvY2Vzc1Rlcm1pbmF0aW9uUmVh
c29uOjpDcmFzaCB8fCByZWFzb24gPT0gR1BVUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uOjpVbnJl
c3BvbnNpdmUpCiAgICAgICAgIG1fY2xpZW50LmdwdVByb2Nlc3NEaWRDcmFzaCh0aGlzLCBpZGVu
dGlmaWVyKTsKIAogICAgIFZlY3RvcjxSZWY8V2ViUHJvY2Vzc1Byb3h5Pj4gcHJvY2Vzc2VzID0g
bV9wcm9jZXNzZXM7CiAgICAgZm9yIChhdXRvJiBwcm9jZXNzIDogcHJvY2Vzc2VzKQogICAgICAg
ICBwcm9jZXNzLT5ncHVQcm9jZXNzRXhpdGVkKHJlYXNvbik7CiAKLSAgICBpZiAocmVhc29uID09
IEdQVVByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbjo6Q3Jhc2gpIHsKKyAgICBpZiAocmVhc29uID09
IEdQVVByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbjo6Q3Jhc2ggfHwgcmVhc29uID09IEdQVVByb2Nl
c3NUZXJtaW5hdGlvblJlYXNvbjo6VW5yZXNwb25zaXZlKSB7CiAgICAgICAgIGlmICgrK21fcmVj
ZW50R1BVUHJvY2Vzc0NyYXNoQ291bnQgPiBtYXhpbXVtR1BVUHJvY2Vzc1JlbGF1bmNoQXR0ZW1w
dHNCZWZvcmVLaWxsaW5nV2ViUHJvY2Vzc2VzKSB7CiAgICAgICAgICAgICBXRUJQUk9DRVNTUE9P
TF9SRUxFQVNFX0xPR19FUlJPUihQcm9jZXNzLCAiZ3B1UHJvY2Vzc0RpZEV4aXQ6IEdQVSBQcm9j
ZXNzIGhhcyBjcmFzaGVkIG1vcmUgdGhhbiAldSB0aW1lcyBpbiB0aGUgbGFzdCAlZyBzZWNvbmRz
LCB0ZXJtaW5hdGluZyBhbGwgV2ViUHJvY2Vzc2VzIiwgbWF4aW11bUdQVVByb2Nlc3NSZWxhdW5j
aEF0dGVtcHRzQmVmb3JlS2lsbGluZ1dlYlByb2Nlc3NlcywgcmVzZXRHUFVQcm9jZXNzQ3Jhc2hD
b3VudERlbGF5LnNlY29uZHMoKSk7CiAgICAgICAgICAgICBtX3Jlc2V0R1BVUHJvY2Vzc0NyYXNo
Q291bnRUaW1lci5zdG9wKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5LmNwcAppbmRleCA4ODQzZWI1MDZkMWQ2MTJhMjZlMWM5MGQzY2Y1MDI2MzVhMGQ4OTVhLi4w
ZjdjZjIyYTUwNTVkODU0MDE4MjI4MjA2N2ZlNzIzYjQ1ZWZlNjQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTE5Miw3ICsxOTIsNiBAQCBwcml2
YXRlOgogCiBXZWJQcm9jZXNzUHJveHk6OldlYlByb2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYg
cHJvY2Vzc1Bvb2wsIFdlYnNpdGVEYXRhU3RvcmUqIHdlYnNpdGVEYXRhU3RvcmUsIElzUHJld2Fy
bWVkIGlzUHJld2FybWVkKQogICAgIDogQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5KHByb2Nlc3NQb29s
LmFsd2F5c1J1bnNBdEJhY2tncm91bmRQcmlvcml0eSgpKQotICAgICwgbV9yZXNwb25zaXZlbmVz
c1RpbWVyKCp0aGlzKQogICAgICwgbV9iYWNrZ3JvdW5kUmVzcG9uc2l2ZW5lc3NUaW1lcigqdGhp
cykKICAgICAsIG1fcHJvY2Vzc1Bvb2wocHJvY2Vzc1Bvb2wsIGlzUHJld2FybWVkID09IElzUHJl
d2FybWVkOjpZZXMgPyBJc1dlYWs6OlllcyA6IElzV2Vhazo6Tm8pCiAgICAgLCBtX21heUhhdmVV
bml2ZXJzYWxGaWxlUmVhZFNhbmRib3hFeHRlbnNpb24oZmFsc2UpCkBAIC00NjAsNyArNDU5LDYg
QEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnNodXREb3duKCkKICAgICAgICAgbV93ZWJDb25uZWN0
aW9uID0gbnVsbHB0cjsKICAgICB9CiAKLSAgICBtX3Jlc3BvbnNpdmVuZXNzVGltZXIuaW52YWxp
ZGF0ZSgpOwogICAgIG1fYmFja2dyb3VuZFJlc3BvbnNpdmVuZXNzVGltZXIuaW52YWxpZGF0ZSgp
OwogICAgIG1fYWN0aXZpdHlGb3JIb2xkaW5nTG9ja2VkRmlsZXMgPSBudWxscHRyOwogICAgIG1f
YXVkaWJsZU1lZGlhQWN0aXZpdHkgPSBzdGQ6Om51bGxvcHQ7CkBAIC04MDQsMTMgKzgwMiw2IEBA
IHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpnZXRXZWJBdXRoblByb2Nlc3NDb25uZWN0aW9uKE1lc3Nh
Z2VzOjpXZWJQcm9jZXNzUHJveHk6OkdlCiB9CiAjZW5kaWYKIAotI2lmICFQTEFURk9STShDT0NP
QSkKLWJvb2wgV2ViUHJvY2Vzc1Byb3h5OjpwbGF0Zm9ybUlzQmVpbmdEZWJ1Z2dlZCgpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotI2VuZGlmCi0KICNpZiAhUExBVEZPUk0oTUFDKQog
Ym9vbCBXZWJQcm9jZXNzUHJveHk6OnNob3VsZEFsbG93Tm9uVmFsaWRJbmplY3RlZENvZGUoKSBj
b25zdAogewpAQCAtOTc4LDMwICs5NjksNiBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkQ2hh
bmdlSXNSZXNwb25zaXZlKCkKICAgICAgICAgcGFnZS0+ZGlkQ2hhbmdlUHJvY2Vzc0lzUmVzcG9u
c2l2ZSgpOwogfQogCi1ib29sIFdlYlByb2Nlc3NQcm94eTo6bWF5QmVjb21lVW5yZXNwb25zaXZl
KCkKLXsKLSNpZiAhZGVmaW5lZChOREVCVUcpIHx8IEFTQU5fRU5BQkxFRAotICAgIC8vIERpc2Fi
bGUgcmVzcG9uc2l2ZW5lc3MgY2hlY2tzIGluIHNsb3cgYnVpbGRzIHRvIGF2b2lkIGZhbHNlIHBv
c2l0aXZlcy4KLSAgICByZXR1cm4gZmFsc2U7Ci0jZWxzZQotICAgIGlmIChwbGF0Zm9ybUlzQmVp
bmdEZWJ1Z2dlZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBzdGF0aWMgYm9vbCBp
c0xpYmdtYWxsb2NFbmFibGVkID0gW10gewotICAgICAgICBjaGFyKiB2YXJpYWJsZSA9IGdldGVu
digiRFlMRF9JTlNFUlRfTElCUkFSSUVTIik7Ci0gICAgICAgIGlmICghdmFyaWFibGUpCi0gICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmICghc3Ryc3RyKHZhcmlhYmxlLCAibGli
Z21hbGxvYyIpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICB9KCk7Ci0gICAgaWYgKGlzTGliZ21hbGxvY0VuYWJsZWQpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIHJldHVybiB0cnVlOwotI2VuZGlmCi19Ci0KICNpZiBFTkFCTEUoSVBD
X1RFU1RJTkdfQVBJKQogdm9pZCBXZWJQcm9jZXNzUHJveHk6OnNldElnbm9yZUludmFsaWRNZXNz
YWdlRm9yVGVzdGluZygpCiB7CkBAIC0xMDUzLDExICsxMDIwLDYgQEAgdm9pZCBXZWJQcm9jZXNz
UHJveHk6OmRpZEZpbmlzaExhdW5jaGluZyhQcm9jZXNzTGF1bmNoZXIqIGxhdW5jaGVyLCBJUEM6
OkNvbm5lY3QKICAgICBlbmFibGVSZW1vdGVJbnNwZWN0b3JJZk5lZWRlZCgpOwogI2VuZGlmCiAj
ZW5kaWYKLQotICAgIGlmIChtX3Nob3VsZFN0YXJ0UmVzcG9uc2l2ZW5lc3NUaW1lcldoZW5MYXVu
Y2hlZCkgewotICAgICAgICBhdXRvIHVzZUxhenlTdG9wID0gKnN0ZDo6ZXhjaGFuZ2UobV9zaG91
bGRTdGFydFJlc3BvbnNpdmVuZXNzVGltZXJXaGVuTGF1bmNoZWQsIHN0ZDo6bnVsbG9wdCk7Ci0g
ICAgICAgIHN0YXJ0UmVzcG9uc2l2ZW5lc3NUaW1lcih1c2VMYXp5U3RvcCk7Ci0gICAgfQogfQog
CiBXZWJGcmFtZVByb3h5KiBXZWJQcm9jZXNzUHJveHk6OndlYkZyYW1lKEZyYW1lSWRlbnRpZmll
ciBmcmFtZUlEKSBjb25zdApAQCAtMTEyOSw3ICsxMDkxLDcgQEAgUmVmUHRyPEFQSTo6VXNlcklu
aXRpYXRlZEFjdGlvbj4gV2ViUHJvY2Vzc1Byb3h5Ojp1c2VySW5pdGlhdGVkQWN0aXZpdHkodWlu
dDY0X3QKIAogYm9vbCBXZWJQcm9jZXNzUHJveHk6OmlzUmVzcG9uc2l2ZSgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIG1fcmVzcG9uc2l2ZW5lc3NUaW1lci5pc1Jlc3BvbnNpdmUoKSAmJiBtX2JhY2tn
cm91bmRSZXNwb25zaXZlbmVzc1RpbWVyLmlzUmVzcG9uc2l2ZSgpOworICAgIHJldHVybiByZXNw
b25zaXZlbmVzc1RpbWVyKCkuaXNSZXNwb25zaXZlKCkgJiYgbV9iYWNrZ3JvdW5kUmVzcG9uc2l2
ZW5lc3NUaW1lci5pc1Jlc3BvbnNpdmUoKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRp
ZERlc3Ryb3lVc2VyR2VzdHVyZVRva2VuKHVpbnQ2NF90IGlkZW50aWZpZXIpCkBAIC0xMjg1LDI0
ICsxMjQ3LDYgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlcXVlc3RUZXJtaW5hdGlvbihQcm9j
ZXNzVGVybWluYXRpb25SZWFzb24gcmVhc29uKQogICAgIHByb2Nlc3NEaWRUZXJtaW5hdGVPckZh
aWxlZFRvTGF1bmNoKHJlYXNvbik7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzdG9wUmVz
cG9uc2l2ZW5lc3NUaW1lcigpCi17Ci0gICAgcmVzcG9uc2l2ZW5lc3NUaW1lcigpLnN0b3AoKTsK
LX0KLQotdm9pZCBXZWJQcm9jZXNzUHJveHk6OnN0YXJ0UmVzcG9uc2l2ZW5lc3NUaW1lcihVc2VM
YXp5U3RvcCB1c2VMYXp5U3RvcCkKLXsKLSAgICBpZiAoaXNMYXVuY2hpbmcoKSkgewotICAgICAg
ICBtX3Nob3VsZFN0YXJ0UmVzcG9uc2l2ZW5lc3NUaW1lcldoZW5MYXVuY2hlZCA9IHVzZUxhenlT
dG9wOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKHVzZUxhenlTdG9wID09IFVz
ZUxhenlTdG9wOjpZZXMpCi0gICAgICAgIHJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdGFydFdpdGhM
YXp5U3RvcCgpOwotICAgIGVsc2UKLSAgICAgICAgcmVzcG9uc2l2ZW5lc3NUaW1lcigpLnN0YXJ0
KCk7Ci19Ci0KIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjplbmFibGVTdWRkZW5UZXJtaW5hdGlvbigp
CiB7CiAgICAgaWYgKHN0YXRlKCkgIT0gU3RhdGU6OlJ1bm5pbmcpCkBAIC0xNTc1LDcgKzE1MTks
NiBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZUJhY2tncm91bmRSZXNwb25zaXZl
bmVzc1BpbmcoKQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc1Rlcm1pbmF0ZWQoKQog
ewotICAgIG1fcmVzcG9uc2l2ZW5lc3NUaW1lci5wcm9jZXNzVGVybWluYXRlZCgpOwogICAgIG1f
YmFja2dyb3VuZFJlc3BvbnNpdmVuZXNzVGltZXIucHJvY2Vzc1Rlcm1pbmF0ZWQoKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCA3ODkyMjk4MzRk
NWQ5YWEyODBiYTM1MmJjZjRkOWNhNTk2ZGZlMGU4Li5jYjU5YzUzZTQ2OTA1NmQ4ZTgyN2U0NDU0
OWIzNzNiNzljYjBlMTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuaApAQCAtMTE4LDcgKzExOCw3IEBAIHVzaW5nIFdlYlByb2Nlc3NXaXRoQXVkaWJsZU1lZGlh
Q291bnRlciA9IFJlZkNvdW50ZXI8V2ViUHJvY2Vzc1dpdGhBdWRpYmxlTWVkaWFDCiB1c2luZyBX
ZWJQcm9jZXNzV2l0aEF1ZGlibGVNZWRpYVRva2VuID0gV2ViUHJvY2Vzc1dpdGhBdWRpYmxlTWVk
aWFDb3VudGVyOjpUb2tlbjsKIGVudW0gY2xhc3MgQ2hlY2tCYWNrRm9yd2FyZExpc3QgOiBib29s
IHsgTm8sIFllcyB9OwogCi1jbGFzcyBXZWJQcm9jZXNzUHJveHkgOiBwdWJsaWMgQXV4aWxpYXJ5
UHJvY2Vzc1Byb3h5LCBwdWJsaWMgUmVzcG9uc2l2ZW5lc3NUaW1lcjo6Q2xpZW50LCBwcml2YXRl
IFByb2Nlc3NUaHJvdHRsZXJDbGllbnQgeworY2xhc3MgV2ViUHJvY2Vzc1Byb3h5IDogcHVibGlj
IEF1eGlsaWFyeVByb2Nlc3NQcm94eSwgcHJpdmF0ZSBQcm9jZXNzVGhyb3R0bGVyQ2xpZW50IHsK
IHB1YmxpYzoKICAgICB0eXBlZGVmIEhhc2hNYXA8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBS
ZWZQdHI8V2ViRnJhbWVQcm94eT4+IFdlYkZyYW1lUHJveHlNYXA7CiAgICAgdHlwZWRlZiBIYXNo
TWFwPFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYlBhZ2VQcm94eSo+IFdlYlBhZ2VQcm94eU1h
cDsKQEAgLTI0MywxMCArMjQzLDYgQEAgcHVibGljOgogCiAgICAgdm9pZCByZXF1ZXN0VGVybWlu
YXRpb24oUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uKTsKIAotICAgIGVudW0gY2xhc3MgVXNlTGF6
eVN0b3AgOiBib29sIHsgTm8sIFllcyB9OwotICAgIHZvaWQgc3RhcnRSZXNwb25zaXZlbmVzc1Rp
bWVyKFVzZUxhenlTdG9wID0gVXNlTGF6eVN0b3A6Ok5vKTsKLSAgICB2b2lkIHN0b3BSZXNwb25z
aXZlbmVzc1RpbWVyKCk7Ci0KICAgICBSZWZQdHI8QVBJOjpPYmplY3Q+IHRyYW5zZm9ybUhhbmRs
ZXNUb09iamVjdHMoQVBJOjpPYmplY3QqKTsKICAgICBzdGF0aWMgUmVmUHRyPEFQSTo6T2JqZWN0
PiB0cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKEFQSTo6T2JqZWN0Kik7CiAKQEAgLTM1Miw5ICsz
NDgsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHVwZGF0ZUF1ZGlibGVNZWRpYUFzc2VydGlvbnMo
KTsKIAotICAgIHZvaWQgcmVmKCkgZmluYWwgeyBUaHJlYWRTYWZlUmVmQ291bnRlZDo6cmVmKCk7
IH0KLSAgICB2b2lkIGRlcmVmKCkgZmluYWwgeyBUaHJlYWRTYWZlUmVmQ291bnRlZDo6ZGVyZWYo
KTsgfQotCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHZvaWQgZXN0YWJsaXNoU2Vy
dmljZVdvcmtlckNvbnRleHQoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRTZXJ2aWNlV29ya2VyVXNlckFnZW50KGNv
bnN0IFN0cmluZyYpOwpAQCAtNDcxLDEyICs0NjQsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdl
dFdlYkF1dGhuUHJvY2Vzc0Nvbm5lY3Rpb24oTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0
V2ViQXV0aG5Qcm9jZXNzQ29ubmVjdGlvbkRlbGF5ZWRSZXBseSYmKTsKICNlbmRpZgogCi0gICAg
Ym9vbCBwbGF0Zm9ybUlzQmVpbmdEZWJ1Z2dlZCgpIGNvbnN0OwogICAgIGJvb2wgc2hvdWxkQWxs
b3dOb25WYWxpZEluamVjdGVkQ29kZSgpIGNvbnN0OwogCiAgICAgc3RhdGljIGNvbnN0IE1lbW9y
eUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaFNldDxTdHJpbmc+JiBwbGF0Zm9ybVBhdGhz
V2l0aEFzc3VtZWRSZWFkQWNjZXNzKCk7CiAKLSAgICBSZXNwb25zaXZlbmVzc1RpbWVyJiByZXNw
b25zaXZlbmVzc1RpbWVyKCkgeyByZXR1cm4gbV9yZXNwb25zaXZlbmVzc1RpbWVyOyB9CiAgICAg
dm9pZCB1cGRhdGVCYWNrZ3JvdW5kUmVzcG9uc2l2ZW5lc3NUaW1lcigpOwogCiAgICAgdm9pZCBw
cm9jZXNzRGlkVGVybWluYXRlT3JGYWlsZWRUb0xhdW5jaChQcm9jZXNzVGVybWluYXRpb25SZWFz
b24pOwpAQCAtNDkzLDcgKzQ4NCw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRCZWNvbWVSZXNw
b25zaXZlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCB3aWxsQ2hhbmdlSXNSZXNwb25zaXZlKCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkaWRDaGFuZ2VJc1Jlc3BvbnNpdmUoKSBvdmVycmlkZTsKLSAgICBi
b29sIG1heUJlY29tZVVucmVzcG9uc2l2ZSgpIG92ZXJyaWRlOwogCiAgICAgLy8gSW1wbGVtZW50
ZWQgaW4gZ2VuZXJhdGVkIFdlYlByb2Nlc3NQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKICAgICB2
b2lkIGRpZFJlY2VpdmVXZWJQcm9jZXNzUHJveHlNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQ
Qzo6RGVjb2RlciYpOwpAQCAtNTU5LDcgKzU0OSw2IEBAIHByaXZhdGU6CiAgICAgICAgIFJlZlB0
cjxUPiBtX3N0cm9uZ09iamVjdDsKICAgICB9OwogCi0gICAgUmVzcG9uc2l2ZW5lc3NUaW1lciBt
X3Jlc3BvbnNpdmVuZXNzVGltZXI7CiAgICAgQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVz
c1RpbWVyIG1fYmFja2dyb3VuZFJlc3BvbnNpdmVuZXNzVGltZXI7CiAgICAgCiAgICAgUmVmUHRy
PFdlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IG1fd2ViQ29ubmVjdGlvbjsKQEAgLTYyMiw3ICs2
MTEsNiBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKElPUykKICAgICBib29sIG1faGFzTWFuYWdl
ZFNlc3Npb25TYW5kYm94QWNjZXNzIHsgZmFsc2UgfTsKICNlbmRpZgotICAgIHN0ZDo6b3B0aW9u
YWw8VXNlTGF6eVN0b3A+IG1fc2hvdWxkU3RhcnRSZXNwb25zaXZlbmVzc1RpbWVyV2hlbkxhdW5j
aGVkOwogCiAjaWYgUExBVEZPUk0oV0FUQ0hPUykKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vz
c1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5PiBtX2JhY2tncm91bmRBY3Rpdml0eUZvckZ1
bGxzY3JlZW5Gb3JtQ29udHJvbHM7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>