<?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>23511</bug_id>
          
          <creation_ts>2009-01-23 17:52:07 -0800</creation_ts>
          <short_desc>Move DOMTimer from WebCore/bindings/js to WebCore/page</short_desc>
          <delta_ts>2009-01-26 17:03:26 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dmitry Titov">dimich</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>eric</cc>
    
    <cc>fishd</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>106829</commentid>
    <comment_count>0</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2009-01-23 17:52:07 -0800</bug_when>
    <thetext>DOMTimer, after recent refactoring, does not have any JSC code and is in fact a dom object (derived from ActiveDOMObject). This also will help eliminate the forked version in Chromium.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106834</commentid>
    <comment_count>1</comment_count>
      <attachid>26990</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2009-01-23 17:58:43 -0800</bug_when>
    <thetext>Created attachment 26990
Patch to move the file

Decided to do it in 2 patches, to keep svn history nice.
First patch - only moves the file. 
Second patch will also make Chromium will compile after the next merge.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106837</commentid>
    <comment_count>2</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2009-01-23 18:14:25 -0800</bug_when>
    <thetext>In fact, there is nothing else needed except the patch that&apos;s attached. The next merge will auto-unfork dom/DOMTimer.h :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107025</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-01-26 00:34:51 -0800</bug_when>
    <thetext>If I&apos;m not mistaken, WebCore/dom is actually for DOM Core classes, so DOMTimer should go to WebCore/page. Sam, is this correct?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107034</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2009-01-26 08:05:53 -0800</bug_when>
    <thetext>Yes, page/ would be better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107055</commentid>
    <comment_count>5</comment_count>
      <attachid>27042</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2009-01-26 11:41:50 -0800</bug_when>
    <thetext>Created attachment 27042
Updated patch

Changed from dom/ to page/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107057</commentid>
    <comment_count>6</comment_count>
      <attachid>27042</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-01-26 11:59:47 -0800</bug_when>
    <thetext>Comment on attachment 27042
Updated patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107115</commentid>
    <comment_count>7</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2009-01-26 17:03:26 -0800</bug_when>
    <thetext>Landed in r40271</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26990</attachid>
            <date>2009-01-23 17:58:43 -0800</date>
            <delta_ts>2009-01-26 11:41:50 -0800</delta_ts>
            <desc>Patch to move the file</desc>
            <filename>moving.txt</filename>
            <type>text/plain</type>
            <size>29741</size>
            <attacher name="Dmitry Titov">dimich</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MDIwMykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjQgQEAKKzIwMDktMDEtMjMgIERtaXRyeSBUaXRvdiAgPGRpbWljaEBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTExCisgICAgICAgIE1v
dmUgRE9NVGltZXIgZnJvbSBiaW5kaW5ncy9qcyB0byBkb20vLgorICAgICAgICBUaGlzIHdhcyBw
cmVwYXJlZCBieSBtb3ZpbmcgYWxsIEpTQyBkZXBlbmRlbmNpZXMgZnJvbSBET01UaW1lcgorICAg
ICAgICB0byBTY2hlZHVsZWRBY3Rpb24gZWFybGllciwgYW5kIGhlbHBzIHVuZm9yayB0aGUgQ2hy
b211aW0gdmVyc2lvbgorICAgICAgICBvZiB0aGUgRE9NVGltZXIuCisKKyAgICAgICAgKiBHTlVt
YWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnNj
b25zOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJDb3JlU291
cmNlcy5ia2w6CisgICAgICAgICogYmluZGluZ3MvanMvRE9NVGltZXIuY3BwOiBSZW1vdmVkLgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0RPTVRpbWVyLmg6IFJlbW92ZWQuCisgICAgICAgICogZG9t
L0RPTVRpbWVyLmNwcDogQ29waWVkIGZyb20gV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01UaW1lci5j
cHAuCisgICAgICAgICogZG9tL0RPTVRpbWVyLmg6IENvcGllZCBmcm9tIFdlYkNvcmUvYmluZGlu
Z3MvanMvRE9NVGltZXIuaC4KKwogMjAwOS0wMS0yMyAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXph
Y2hAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDog
V2ViQ29yZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0dOVW1ha2VmaWxl
LmFtCShyZXZpc2lvbiA0MDIwMSkKKysrIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcg
Y29weSkKQEAgLTIzOCw4ICsyMzgsNiBAQCBJRExfQklORElOR1MgKz0gXAogd2ViY29yZV9zb3Vy
Y2VzICs9IFwKIAlXZWJDb3JlL1dlYkNvcmVQcmVmaXguaCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9q
cy9DYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlci5oIFwKLQlXZWJDb3JlL2JpbmRpbmdzL2pzL0RP
TVRpbWVyLmNwcCBcCi0JV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01UaW1lci5oIFwKIAlXZWJDb3Jl
L2JpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5jcHAgXAogCVdlYkNvcmUvYmluZGluZ3MvanMvR0ND
b250cm9sbGVyLmggXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNBdHRyQ3VzdG9tLmNwcCBcCkBA
IC01NjMsNiArNTYxLDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL2RvbS9ET01J
bXBsZW1lbnRhdGlvbi5oIFwKIAlXZWJDb3JlL2RvbS9ET01TdHJpbmdMaXN0LmNwcCBcCiAJV2Vi
Q29yZS9kb20vRE9NU3RyaW5nTGlzdC5oIFwKKwlXZWJDb3JlL2RvbS9ET01UaW1lci5jcHAgXAor
CVdlYkNvcmUvZG9tL0RPTVRpbWVyLmggXAogCVdlYkNvcmUvZG9tL0RvY1B0ci5oIFwKIAlXZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAgXAogCVdlYkNvcmUvZG9tL0RvY3VtZW50LmggXApJbmRleDog
V2ViQ29yZS9XZWJDb3JlLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUucHJvCShy
ZXZpc2lvbiA0MDIwMSkKKysrIFdlYkNvcmUvV2ViQ29yZS5wcm8JKHdvcmtpbmcgY29weSkKQEAg
LTQwMSw3ICs0MDEsNiBAQCBJRExfQklORElOR1MgKz0gXAogCiAKIFNPVVJDRVMgKz0gXAotICAg
IGJpbmRpbmdzL2pzL0RPTVRpbWVyLmNwcCBcCiAgICAgYmluZGluZ3MvanMvR0NDb250cm9sbGVy
LmNwcCBcCiAgICAgYmluZGluZ3MvanMvSlNBdHRyQ3VzdG9tLmNwcCBcCiAgICAgYmluZGluZ3Mv
anMvSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwIFwKQEAgLTU3MSw2ICs1NzAs
NyBAQCBTT1VSQ0VTICs9IFwKICAgICBkb20vRG9jdW1lbnRUeXBlLmNwcCBcCiAgICAgZG9tL0RP
TUltcGxlbWVudGF0aW9uLmNwcCBcCiAgICAgZG9tL0RPTVN0cmluZ0xpc3QuY3BwIFwKKyAgICBk
b20vRE9NVGltZXIuY3BwIFwKICAgICBkb20vRHluYW1pY05vZGVMaXN0LmNwcCBcCiAgICAgZG9t
L0VkaXRpbmdUZXh0LmNwcCBcCiAgICAgZG9tL0VsZW1lbnQuY3BwIFwKSW5kZXg6IFdlYkNvcmUv
V2ViQ29yZS5zY29ucwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUuc2NvbnMJKHJldmlz
aW9uIDQwMjAxKQorKysgV2ViQ29yZS9XZWJDb3JlLnNjb25zCSh3b3JraW5nIGNvcHkpCkBAIC04
NCw2ICs4NCw3IEBAIHNvdXJjZXNbJ2RvbSddID0gWwogICAgICdkb20vRG9jdW1lbnRUeXBlLmNw
cCcsCiAgICAgJ2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAnLAogICAgICdkb20vRE9NU3RyaW5n
TGlzdC5jcHAnLAorICAgICdkb20vRE9NVGltZXIuY3BwJywKICAgICAnZG9tL0R5bmFtaWNOb2Rl
TGlzdC5jcHAnLAogICAgICdkb20vRWRpdGluZ1RleHQuY3BwJywKICAgICAnZG9tL0VsZW1lbnQu
Y3BwJywKQEAgLTYwMCw3ICs2MDEsNiBAQCBzb3VyY2VzWyd4bWwnXSA9IFsKIAogIyBVc2luZyBK
YXZhU2NyaXB0Q29yZSBmb3Igbm93LCBldmVudHVhbGx5IHRoaXMgbmVlZHMgdG8gYmUgY29uZmln
dXJhYmxlIChhbmQgaW4gc2VwYXJhdGUgZmlsZSkKIHNvdXJjZXNbJ2JpbmRpbmdzL2pzJ10gPSBb
Ci0gICAgImJpbmRpbmdzL2pzL0RPTVRpbWVyLmNwcCIsCiAgICAgImJpbmRpbmdzL2pzL0dDQ29u
dHJvbGxlci5jcHAiLAogICAgICJiaW5kaW5ncy9qcy9KU0F0dHJDdXN0b20uY3BwIiwKICAgICAi
YmluZGluZ3MvanMvSlNBdWRpb0NvbnN0cnVjdG9yLmNwcCIsCkluZGV4OiBXZWJDb3JlL1dlYkNv
cmVTb3VyY2VzLmJrbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmVTb3VyY2VzLmJrbAko
cmV2aXNpb24gNDAyMDEpCisrKyBXZWJDb3JlL1dlYkNvcmVTb3VyY2VzLmJrbAkod29ya2luZyBj
b3B5KQpAQCAtMzMsNyArMzMsNiBAQCBUaGlzIGZpbGUgY29udGFpbnMgdGhlIGxpc3Qgb2YgZmls
ZXMgbmVlCiAKIDxtYWtlZmlsZT4KICAgICA8c2V0IGFwcGVuZD0iMSIgdmFyPSJXRUJDT1JFX1NP
VVJDRVNfSlMiPgotICAgICAgICBiaW5kaW5ncy9qcy9ET01UaW1lci5jcHAKICAgICAgICAgYmlu
ZGluZ3MvanMvR0NDb250cm9sbGVyLmNwcAogICAgICAgICBiaW5kaW5ncy9qcy9KU0F0dHJDdXN0
b20uY3BwCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTQXVkaW9Db25zdHJ1Y3Rvci5jcHAKQEAgLTQw
Miw2ICs0MDEsNyBAQCBUaGlzIGZpbGUgY29udGFpbnMgdGhlIGxpc3Qgb2YgZmlsZXMgbmVlCiAg
ICAgICAgIGRvbS9Eb2N1bWVudC5jcHAKICAgICAgICAgZG9tL0RvY3VtZW50RnJhZ21lbnQuY3Bw
CiAgICAgICAgIGRvbS9Eb2N1bWVudFR5cGUuY3BwCisgICAgICAgIGRvbS9ET01UaW1lci5jcHAK
ICAgICAgICAgZG9tL0R5bmFtaWNOb2RlTGlzdC5jcHAKICAgICAgICAgZG9tL0VkaXRpbmdUZXh0
LmNwcAogICAgICAgICBkb20vRWxlbWVudC5jcHAKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvagkocmV2aXNpb24gNDAyMDEpCisrKyBXZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMTIwMiw2ICsxMTIwMiwxNCBAQAog
CQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21c
RE9NVGltZXIuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0
aXZlUGF0aD0iLi5cZG9tXERPTVRpbWVyLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZp
bGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cRHluYW1pY05vZGVMaXN0LmNwcCINCiAJCQkJ
Pg0KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCkBAIC0xNDA0OSwxNCArMTQwNTcsNiBAQAogCQkJ
CQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmlu
ZGluZ3NcanNcRE9NVGltZXIuY3BwIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxl
DQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXERPTVRpbWVyLmgiDQotCQkJCQk+
DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGlu
Z3NcanNcR0NDb250cm9sbGVyLmNwcCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KSW5kZXg6IFdl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA0MDIwMSkK
KysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC0xNzcsMTAgKzE3NywxMCBAQAogCQkxNEVDMjY4MDA5Q0EwN0UwMDBFMUVFRUMgLyog
RXZlbnRUYXJnZXROb2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDE0RUMyNjdFMDlDQTA3RTAwMEUxRUVFQyAvKiBFdmVudFRhcmdldE5vZGUuY3Bw
ICovOyB9OwogCQkxNEZGRTMxRDBBRTE5NjMzMDAxMzZCRjUgLyogSFRNTEZyYW1lRWxlbWVudEJh
c2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0RkZF
MzFCMEFFMTk2MzMwMDEzNkJGNSAvKiBIVE1MRnJhbWVFbGVtZW50QmFzZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTE0RkZFMzFFMEFFMTk2MzMw
MDEzNkJGNSAvKiBIVE1MRnJhbWVFbGVtZW50QmFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEZGRTMxQzBBRTE5NjMzMDAxMzZCRjUgLyogSFRN
TEZyYW1lRWxlbWVudEJhc2UuY3BwICovOyB9OworCQkxODVFNzdCODBGMkFBOTk5MDAyQzUyOTgg
LyogRE9NVGltZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMTg1RTc3QjYwRjJBQTk5OTAwMkM1Mjk4IC8qIERPTVRpbWVyLmNwcCAqLzsgfTsKKwkJ
MTg1RTc3QjkwRjJBQTk5OTAwMkM1Mjk4IC8qIERPTVRpbWVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxODVFNzdCNzBGMkFBOTk5MDAyQzUyOTggLyog
RE9NVGltZXIuaCAqLzsgfTsKIAkJMThBMDUzN0MwRjI2ODU5QzAwQTUxNzA1IC8qIFdvcmtlclJ1
bkxvb3AuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MThBMDUzN0EwRjI2ODU5QzAwQTUxNzA1IC8qIFdvcmtlclJ1bkxvb3AuY3BwICovOyB9OwogCQkx
OEEwNTM3RDBGMjY4NTlDMDBBNTE3MDUgLyogV29ya2VyUnVuTG9vcC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMThBMDUzN0IwRjI2ODU5QzAwQTUxNzA1
IC8qIFdvcmtlclJ1bkxvb3AuaCAqLzsgfTsKLQkJMThFNjg3ODcwRURCNzkzNTAwQThFOEI3IC8q
IERPTVRpbWVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDE4RTY4Nzg1MEVEQjc5MzQwMEE4RThCNyAvKiBET01UaW1lci5jcHAgKi87IH07Ci0JCTE4
RTY4Nzg4MEVEQjc5MzUwMEE4RThCNyAvKiBET01UaW1lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMThFNjg3ODYwRURCNzkzNTAwQThFOEI3IC8qIERP
TVRpbWVyLmggKi87IH07CiAJCTFBMEQ1NzM2MEE1Qzc3RkUwMDdFREQ0QyAvKiBPdmVyZmxvd0V2
ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFB
MEQ1NzM0MEE1Qzc3RkUwMDdFREQ0QyAvKiBPdmVyZmxvd0V2ZW50LmNwcCAqLzsgfTsKIAkJMUEw
RDU3MzcwQTVDNzdGRTAwN0VERDRDIC8qIE92ZXJmbG93RXZlbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBMEQ1NzM1MEE1Qzc3RkUwMDdFREQ0QyAv
KiBPdmVyZmxvd0V2ZW50LmggKi87IH07CiAJCTFBMEQ1NzQwMEE1Qzc4NjcwMDdFREQ0QyAvKiBK
U092ZXJmbG93RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMUEwRDU3M0UwQTVDNzg2NzAwN0VERDRDIC8qIEpTT3ZlcmZsb3dFdmVudC5jcHAg
Ki87IH07CkBAIC01MDI0LDEwICs1MDI0LDEwIEBACiAJCTE0RUMyNjdFMDlDQTA3RTAwMEUxRUVF
QyAvKiBFdmVudFRhcmdldE5vZGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRXZlbnRUYXJnZXROb2RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MTRGRkUzMUIwQUUxOTYzMzAwMTM2QkY1IC8qIEhUTUxGcmFtZUVsZW1lbnRCYXNlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxGcmFtZUVsZW1lbnRCYXNlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0RkZFMzFDMEFFMTk2MzMwMDEzNkJGNSAvKiBIVE1M
RnJhbWVFbGVtZW50QmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBIVE1MRnJhbWVFbGVtZW50QmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTE4NUU3N0I2MEYyQUE5OTkwMDJDNTI5OCAvKiBET01UaW1lci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01UaW1lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTE4NUU3N0I3MEYyQUE5OTkwMDJDNTI5OCAvKiBET01UaW1lci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01UaW1lci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxOEEwNTM3QTBGMjY4NTlDMDBBNTE3MDUgLyogV29ya2VyUnVuTG9vcC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXb3JrZXJSdW5Mb29wLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMThBMDUzN0IwRjI2ODU5QzAwQTUxNzA1IC8q
IFdvcmtlclJ1bkxvb3AuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya2Vy
UnVuTG9vcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxOEU2ODc4NTBFREI3OTM0
MDBBOEU4QjcgLyogRE9NVGltZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRE9NVGltZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxOEU2ODc4
NjBFREI3OTM1MDBBOEU4QjcgLyogRE9NVGltZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRE9NVGltZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEwRDU3
MzQwQTVDNzdGRTAwN0VERDRDIC8qIE92ZXJmbG93RXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE92ZXJmbG93RXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxQTBENTczNTBBNUM3N0ZFMDA3RURENEMgLyogT3ZlcmZsb3dFdmVudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3ZlcmZsb3dFdmVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTBENTczODBBNUM3ODEyMDA3RURENEMgLyogT3Zl
cmZsb3dFdmVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE92ZXJmbG93RXZlbnQuaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTMxNjksOCArMTMxNjksNiBAQAogCQkJ
CTE0REZCMzNGMEE3REY3NjMwMDE4Rjc2OSAvKiBEZXJpdmVkIFNvdXJjZXMgKi8sCiAJCQkJQkNE
NTMzNjMwRUQ2ODQ4OTAwODg3NDY4IC8qIENhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVyLmggKi8s
CiAJCQkJOTNGOEIzMDYwQTMwMEZFQTAwRjYxQUI4IC8qIENvZGVHZW5lcmF0b3JKUy5wbSAqLywK
LQkJCQkxOEU2ODc4NTBFREI3OTM0MDBBOEU4QjcgLyogRE9NVGltZXIuY3BwICovLAotCQkJCTE4
RTY4Nzg2MEVEQjc5MzUwMEE4RThCNyAvKiBET01UaW1lci5oICovLAogCQkJCTE0MzJFODQ4MEM1
MTQ5M0YwMEIxNTAwRiAvKiBHQ0NvbnRyb2xsZXIuY3BwICovLAogCQkJCTE0MzJFODQ2MEM1MTQ5
MzgwMEIxNTAwRiAvKiBHQ0NvbnRyb2xsZXIuaCAqLywKIAkJCQlFNEVFRkZDNjBEMzQ1NTBDMDA0
NjlBNTggLyogSlNBdWRpb0NvbnN0cnVjdG9yLmNwcCAqLywKQEAgLTE0MjE5LDYgKzE0MjE3LDgg
QEAKIAkJCQlFMTBCQjM3QTBGMTRCNjQxMDA1NjBFMTMgLyogRE9NU3RyaW5nTGlzdC5jcHAgKi8s
CiAJCQkJRTEwQkIzNzcwRjE0QjYyMjAwNTYwRTEzIC8qIERPTVN0cmluZ0xpc3QuaCAqLywKIAkJ
CQlFMTBCQjM3MzBGMTRCNTg1MDA1NjBFMTMgLyogRE9NU3RyaW5nTGlzdC5pZGwgKi8sCisJCQkJ
MTg1RTc3QjYwRjJBQTk5OTAwMkM1Mjk4IC8qIERPTVRpbWVyLmNwcCAqLywKKwkJCQkxODVFNzdC
NzBGMkFBOTk5MDAyQzUyOTggLyogRE9NVGltZXIuaCAqLywKIAkJCQk5M0VFQzFFNzA5QzI4Nzc3
MDBDNTE1RDEgLyogRG9jUHRyLmggKi8sCiAJCQkJQTgxODVGMzQwOTc2NTc2NTAwNTgyNkQ5IC8q
IERvY3VtZW50LmNwcCAqLywKIAkJCQlBODE4NUYzODA5NzY1NzY1MDA1ODI2RDkgLyogRG9jdW1l
bnQuaCAqLywKQEAgLTE1Mjg5LDcgKzE1Mjg5LDYgQEAKIAkJCQlEREU2M0VENTBCN0Q0NUE4MDAy
MjY5OTggLyogRE9NVGV4dEV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NUU3MTFEOTBBQzVE
NTM1MDA1MzI3MEYgLyogRE9NVGV4dEludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0M1
NzMzQTBENjk1QkYxMDA2RUY1MTcgLyogRE9NVGV4dFByaXZhdGUuaCBpbiBIZWFkZXJzICovLAot
CQkJCTE4RTY4Nzg4MEVEQjc5MzUwMEE4RThCNyAvKiBET01UaW1lci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkMxQTM3QkUwOTdDNzE1RjAwMTlGM0Q4IC8qIERPTVRyYXZlcnNhbC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJODU1MjZDRDIwQUIwQjdEOTAwMDMwMkVBIC8qIERPTVRyZWVXYWxrZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTg1MEI0MUMzMEFEOUU3RTcwMEE2RUQ0RiAvKiBET01UcmVlV2Fs
a2VySW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLApAQCAtMTY2MjgsNiArMTY2MjcsNyBAQAogCQkJ
CTFBNTY5RDI1MEQ3RTJCODIwMDdDMzk4MyAvKiBydW50aW1lX3Jvb3QuaCBpbiBIZWFkZXJzICov
LAogCQkJCTkzMzA5RTFFMDk5RTY0OTIwMDU2RTU4MSAvKiB2aXNpYmxlX3VuaXRzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxOEEwNTM3RDBGMjY4NTlDMDBBNTE3MDUgLyogV29ya2VyUnVuTG9vcC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMTg1RTc3QjkwRjJBQTk5OTAwMkM1Mjk4IC8qIERPTVRpbWVy
LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKIAkJfTsKQEAgLTE3MjkxLDcgKzE3MjkxLDYgQEAKIAkJCQk4NTA2NTcwMzBB
QUI0NzYzMDAyRDE1QzAgLyogRE9NU3R5bGVTaGVldExpc3QubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk4NUFDQTk5RDBBOUI1NzU5MDA2NzFFOTAgLyogRE9NVGV4dC5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTkzM0ExNEFBMEI3RDFEMDkwMEE1M0ZGRCAvKiBET01UZXh0RXZlbnQubW0gaW4gU291cmNl
cyAqLywKLQkJCQkxOEU2ODc4NzBFREI3OTM1MDBBOEU4QjcgLyogRE9NVGltZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJODU1MjZDRDMwQUIwQjdEQTAwMDMwMkVBIC8qIERPTVRyZWVXYWxrZXIu
bW0gaW4gU291cmNlcyAqLywKIAkJCQk4NUM3RjQ5MjBBQUY3OURDMDA0MDE0REQgLyogRE9NVUlF
dmVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDMUEzN0JGMDk3QzcxNUYwMDE5RjNEOCAvKiBE
T01VdGlsaXR5Lm1tIGluIFNvdXJjZXMgKi8sCkBAIC0xODU5Nyw2ICsxODU5Niw3IEBACiAJCQkJ
MUE1NjlEMjIwRDdFMkI4MjAwN0MzOTgzIC8qIHJ1bnRpbWVfb2JqZWN0LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTFBNTY5RDI0MEQ3RTJCODIwMDdDMzk4MyAvKiBydW50aW1lX3Jvb3QuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJOTMzMDlFMUQwOTlFNjQ5MjAwNTZFNTgxIC8qIHZpc2libGVfdW5p
dHMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMTg1RTc3QjgwRjJBQTk5OTAwMkM1Mjk4IC8qIERP
TVRpbWVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01U
aW1lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01UaW1lci5jcHAJ
KHJldmlzaW9uIDQwMjAxKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01UaW1lci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsMTc3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgg
QXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICoKLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiRE9NVGltZXIuaCIKLQotI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0j
aW5jbHVkZSAiU2NoZWR1bGVkQWN0aW9uLmgiCi0jaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL1N0ZExpYkV4
dHJhcy5oPgotCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LXN0YXRpYyBjb25zdCBpbnQgbWF4VGltZXJOZXN0aW5nTGV2ZWwgPSA1Owotc3RhdGljIGNvbnN0
IGRvdWJsZSBvbmVNaWxsaXNlY29uZCA9IDAuMDAxOwotc3RhdGljIGNvbnN0IGRvdWJsZSBtaW5U
aW1lckludGVydmFsID0gMC4wMTA7IC8vIDEwIG1pbGxpc2Vjb25kcwotCi1zdGF0aWMgaW50IHRp
bWVyTmVzdGluZ0xldmVsID0gMDsKLQotRE9NVGltZXI6OkRPTVRpbWVyKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIFNjaGVkdWxlZEFjdGlvbiogYWN0aW9uLCBpbnQgdGltZW91dCwg
Ym9vbCBzaW5nbGVTaG90KQotICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQsIHRoaXMpCi0g
ICAgLCBtX2FjdGlvbihhY3Rpb24pCi0gICAgLCBtX25leHRGaXJlSW50ZXJ2YWwoMCkKLSAgICAs
IG1fcmVwZWF0SW50ZXJ2YWwoMCkKLXsKLSAgICBzdGF0aWMgaW50IGxhc3RVc2VkVGltZW91dElk
ID0gMDsKLSAgICArK2xhc3RVc2VkVGltZW91dElkOwotICAgIC8vIEF2b2lkIHdyYXBhcm91bmQg
Z29pbmcgbmVnYXRpdmUgb24gdXMuCi0gICAgaWYgKGxhc3RVc2VkVGltZW91dElkIDw9IDApCi0g
ICAgICAgIGxhc3RVc2VkVGltZW91dElkID0gMTsKLSAgICBtX3RpbWVvdXRJZCA9IGxhc3RVc2Vk
VGltZW91dElkOwotICAgIAotICAgIG1fbmVzdGluZ0xldmVsID0gdGltZXJOZXN0aW5nTGV2ZWwg
KyAxOwotCi0gICAgLy8gRklYTUU6IE1vdmUgdGhlIHRpbWVvdXQgbWFwIGFuZCBBUEkgdG8gU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCB0byBiZSBhYmxlCi0gICAgLy8gdG8gY3JlYXRlIHRpbWVvdXRz
IGZyb20gV29ya2Vycy4KLSAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpICYmIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNEb2N1bWVudCgpKTsKLSAgICBzdGF0aWNfY2FzdDxE
b2N1bWVudCo+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSktPmFkZFRpbWVvdXQobV90aW1lb3V0
SWQsIHRoaXMpOwotCi0gICAgZG91YmxlIGludGVydmFsTWlsbGlzZWNvbmRzID0gbWF4KG9uZU1p
bGxpc2Vjb25kLCB0aW1lb3V0ICogb25lTWlsbGlzZWNvbmQpOwotCi0gICAgLy8gVXNlIGEgbWlu
aW11bSBpbnRlcnZhbCBvZiAxMCBtcyB0byBtYXRjaCBvdGhlciBicm93c2VycywgYnV0IG9ubHkg
b25jZSB3ZSd2ZQotICAgIC8vIG5lc3RlZCBlbm91Z2ggdG8gbm90aWNlIHRoYXQgd2UncmUgcmVw
ZWF0aW5nLgotICAgIC8vIEZhc3RlciB0aW1lcnMgbWlnaHQgYmUgImJldHRlciIsIGJ1dCB0aGV5
J3JlIGluY29tcGF0aWJsZS4KLSAgICBpZiAoaW50ZXJ2YWxNaWxsaXNlY29uZHMgPCBtaW5UaW1l
ckludGVydmFsICYmIG1fbmVzdGluZ0xldmVsID49IG1heFRpbWVyTmVzdGluZ0xldmVsKQotICAg
ICAgICBpbnRlcnZhbE1pbGxpc2Vjb25kcyA9IG1pblRpbWVySW50ZXJ2YWw7Ci0gICAgaWYgKHNp
bmdsZVNob3QpCi0gICAgICAgIHN0YXJ0T25lU2hvdChpbnRlcnZhbE1pbGxpc2Vjb25kcyk7Ci0g
ICAgZWxzZQotICAgICAgICBzdGFydFJlcGVhdGluZyhpbnRlcnZhbE1pbGxpc2Vjb25kcyk7Ci19
Ci0KLURPTVRpbWVyOjp+RE9NVGltZXIoKQotewotICAgIGlmIChzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkpIHsKLSAgICAgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNEb2N1
bWVudCgpKTsKLSAgICAgICAgc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkpLT5yZW1vdmVUaW1lb3V0KG1fdGltZW91dElkKTsKLSAgICB9Ci19Ci0gICAgCi1p
bnQgRE9NVGltZXI6Omluc3RhbGwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgU2No
ZWR1bGVkQWN0aW9uKiBhY3Rpb24sIGludCB0aW1lb3V0LCBib29sIHNpbmdsZVNob3QpCi17Ci0g
ICAgLy8gRE9NVGltZXIgY29uc3RydWN0b3IgbGlua3MgdGhlIG5ldyB0aW1lciBpbnRvIGEgbGlz
dCBvZiBBY3RpdmVET01PYmplY3RzIGhlbGQgYnkgdGhlICdjb250ZXh0Jy4KLSAgICAvLyBUaGUg
dGltZXIgaXMgZGVsZXRlZCB3aGVuIGNvbnRleHQgaXMgZGVsZXRlZCAoRE9NVGltZXI6OmNvbnRl
eHREZXN0cm95ZWQpIG9yIGV4cGxpY2l0bHkgdmlhIERPTVRpbWVyOjpyZW1vdmVCeUlkKCksCi0g
ICAgLy8gb3IgaWYgaXQgaXMgYSBvbmUtdGltZSB0aW1lciBhbmQgaXQgaGFzIGZpcmVkIChET01U
aW1lcjo6ZmlyZWQpLgotICAgIERPTVRpbWVyKiB0aW1lciA9IG5ldyBET01UaW1lcihjb250ZXh0
LCBhY3Rpb24sIHRpbWVvdXQsIHNpbmdsZVNob3QpOwotICAgIHJldHVybiB0aW1lci0+bV90aW1l
b3V0SWQ7Ci19Ci0KLXZvaWQgRE9NVGltZXI6OnJlbW92ZUJ5SWQoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgaW50IHRpbWVvdXRJZCkKLXsKLSAgICAvLyB0aW1lb3V0IElEcyBoYXZl
IHRvIGJlIHBvc2l0aXZlLCBhbmQgMCBhbmQgLTEgYXJlIHVuc2FmZSB0bwotICAgIC8vIGV2ZW4g
bG9vayB1cCBzaW5jZSB0aGV5IGFyZSB0aGUgZW1wdHkgYW5kIGRlbGV0ZWQgdmFsdWUKLSAgICAv
LyByZXNwZWN0aXZlbHkKLSAgICBpZiAodGltZW91dElkIDw9IDApCi0gICAgICAgIHJldHVybjsK
LSAgICBBU1NFUlQoY29udGV4dCAmJiBjb250ZXh0LT5pc0RvY3VtZW50KCkpOwotICAgIGRlbGV0
ZSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQpLT5maW5kVGltZW91dCh0aW1lb3V0SWQp
OwotfQotCi12b2lkIERPTVRpbWVyOjpmaXJlZCgpCi17Ci0gICAgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICB0aW1lck5lc3Rp
bmdMZXZlbCA9IG1fbmVzdGluZ0xldmVsOwotCi0gICAgLy8gU2ltcGxlIGNhc2UgZm9yIG5vbi1v
bmUtc2hvdCB0aW1lcnMuCi0gICAgaWYgKGlzQWN0aXZlKCkpIHsKLSAgICAgICAgaWYgKHJlcGVh
dEludGVydmFsKCkgJiYgcmVwZWF0SW50ZXJ2YWwoKSA8IG1pblRpbWVySW50ZXJ2YWwpIHsKLSAg
ICAgICAgICAgIG1fbmVzdGluZ0xldmVsKys7Ci0gICAgICAgICAgICBpZiAobV9uZXN0aW5nTGV2
ZWwgPj0gbWF4VGltZXJOZXN0aW5nTGV2ZWwpCi0gICAgICAgICAgICAgICAgYXVnbWVudFJlcGVh
dEludGVydmFsKG1pblRpbWVySW50ZXJ2YWwgLSByZXBlYXRJbnRlcnZhbCgpKTsKLSAgICAgICAg
fQotICAgICAgICAKLSAgICAgICAgLy8gTm8gYWNjZXNzIHRvIG1lbWJlciB2YXJpYWJsZXMgYWZ0
ZXIgdGhpcyBwb2ludCwgaXQgY2FuIGRlbGV0ZSB0aGUgdGltZXIuCi0gICAgICAgIG1fYWN0aW9u
LT5leGVjdXRlKGNvbnRleHQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gRGVs
ZXRlIHRpbWVyIGJlZm9yZSBleGVjdXRpbmcgdGhlIGFjdGlvbiBmb3Igb25lLXNob3QgdGltZXJz
LgotICAgIFNjaGVkdWxlZEFjdGlvbiogYWN0aW9uID0gbV9hY3Rpb24ucmVsZWFzZSgpOwotCi0g
ICAgLy8gTm8gYWNjZXNzIHRvIG1lbWJlciB2YXJpYWJsZXMgYWZ0ZXIgdGhpcyBwb2ludC4KLSAg
ICBkZWxldGUgdGhpczsKLSAgICAKLSAgICBhY3Rpb24tPmV4ZWN1dGUoY29udGV4dCk7Ci0gICAg
ZGVsZXRlIGFjdGlvbjsKLSAgICB0aW1lck5lc3RpbmdMZXZlbCA9IDA7Ci19Ci0KLWJvb2wgRE9N
VGltZXI6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGlzQWN0aXZl
KCk7Ci19Ci0KLXZvaWQgRE9NVGltZXI6OmNvbnRleHREZXN0cm95ZWQoKQotewotICAgIEFjdGl2
ZURPTU9iamVjdDo6Y29udGV4dERlc3Ryb3llZCgpOwotICAgIGRlbGV0ZSB0aGlzOwotfQotCi12
b2lkIERPTVRpbWVyOjpzdG9wKCkKLXsKLSAgICBUaW1lckJhc2U6OnN0b3AoKTsKLSAgICAvLyBO
ZWVkIHRvIHJlbGVhc2UgSlMgb2JqZWN0cyBwb3RlbnRpYWxseSBwcm90ZWN0ZWQgYnkgU2NoZWR1
bGVkQWN0aW9uCi0gICAgLy8gYmVjYXVzZSB0aGV5IGNhbiBmb3JtIGNpcmN1bGFyIHJlZmVyZW5j
ZXMgYmFjayB0byB0aGUgU2NyaXB0RXhlY3V0aW9uQ29udGV4dAotICAgIC8vIHdoaWNoIHdpbGwg
Y2F1c2UgYSBtZW1vcnkgbGVhay4KLSAgICBtX2FjdGlvbi5jbGVhcigpOwotfQotCi12b2lkIERP
TVRpbWVyOjpzdXNwZW5kKCkgCi17IAotICAgIEFTU0VSVChtX25leHRGaXJlSW50ZXJ2YWwgPT0g
MCAmJiBtX3JlcGVhdEludGVydmFsID09IDApOyAKLSAgICBtX25leHRGaXJlSW50ZXJ2YWwgPSBu
ZXh0RmlyZUludGVydmFsKCk7Ci0gICAgbV9yZXBlYXRJbnRlcnZhbCA9IHJlcGVhdEludGVydmFs
KCk7Ci0gICAgVGltZXJCYXNlOjpzdG9wKCk7Ci19IAotIAotdm9pZCBET01UaW1lcjo6cmVzdW1l
KCkgCi17IAotICAgIHN0YXJ0KG1fbmV4dEZpcmVJbnRlcnZhbCwgbV9yZXBlYXRJbnRlcnZhbCk7
Ci0gICAgbV9uZXh0RmlyZUludGVydmFsID0gMDsKLSAgICBtX3JlcGVhdEludGVydmFsID0gMDsK
LX0gCi0gCi0gCi1ib29sIERPTVRpbWVyOjpjYW5TdXNwZW5kKCkgY29uc3QgCi17IAotICAgIHJl
dHVybiB0cnVlOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2Jp
bmRpbmdzL2pzL0RPTVRpbWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9E
T01UaW1lci5oCShyZXZpc2lvbiA0MDIwMSkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvRE9NVGlt
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqCi0gKi8KLQotI2lmbmRl
ZiBET01UaW1lcl9oCi0jZGVmaW5lIERPTVRpbWVyX2gKLQotI2luY2x1ZGUgIkFjdGl2ZURPTU9i
amVjdC5oIgotI2luY2x1ZGUgIlRpbWVyLmgiCi0jaW5jbHVkZSA8d3RmL093blB0ci5oPgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFNjaGVkdWxlZEFjdGlvbjsKLQotY2xhc3MgRE9N
VGltZXIgOiBwdWJsaWMgVGltZXJCYXNlLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKLXB1Ymxp
YzoKLSAgICB2aXJ0dWFsIH5ET01UaW1lcigpOwotICAgIC8vIENyZWF0ZXMgYSBuZXcgdGltZXIg
b3duZWQgYnkgc3BlY2lmaWVkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHN0YXJ0cyBpdAotICAg
IC8vIGFuZCByZXR1cm5zIGl0cyBJZC4KLSAgICBzdGF0aWMgaW50IGluc3RhbGwoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIFNjaGVkdWxlZEFjdGlvbiosIGludCB0aW1lb3V0LCBib29sIHNpbmds
ZVNob3QpOwotICAgIHN0YXRpYyB2b2lkIHJlbW92ZUJ5SWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIGludCB0aW1lb3V0SWQpOwotCi0gICAgLy8gQWN0aXZlRE9NT2JqZWN0Ci0gICAgdmlydHVh
bCBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBjb250
ZXh0RGVzdHJveWVkKCk7Ci0gICAgdmlydHVhbCB2b2lkIHN0b3AoKTsKLSAgICB2aXJ0dWFsIGJv
b2wgY2FuU3VzcGVuZCgpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBzdXNwZW5kKCk7Ci0gICAg
dmlydHVhbCB2b2lkIHJlc3VtZSgpOwotCi1wcml2YXRlOgotICAgIERPTVRpbWVyKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBTY2hlZHVsZWRBY3Rpb24qLCBpbnQgdGltZW91dCwgYm9vbCBzaW5n
bGVTaG90KTsKLSAgICB2aXJ0dWFsIHZvaWQgZmlyZWQoKTsKLQotICAgIGludCBtX3RpbWVvdXRJ
ZDsKLSAgICBpbnQgbV9uZXN0aW5nTGV2ZWw7Ci0gICAgT3duUHRyPFNjaGVkdWxlZEFjdGlvbj4g
bV9hY3Rpb247Ci0gICAgZG91YmxlIG1fbmV4dEZpcmVJbnRlcnZhbDsKLSAgICBkb3VibGUgbV9y
ZXBlYXRJbnRlcnZhbDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8v
IERPTVRpbWVyX2gKLQpJbmRleDogV2ViQ29yZS9kb20vRE9NVGltZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvZG9tL0RPTVRpbWVyLmNwcAkocmV2aXNpb24gNDAyMDEpCShmcm9tIFdlYkNv
cmUvYmluZGluZ3MvanMvRE9NVGltZXIuY3BwOjQwMjAxKQorKysgV2ViQ29yZS9kb20vRE9NVGlt
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTc3IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRPTVRpbWVyLmgiCisKKyNpbmNsdWRlICJEb2N1
bWVudC5oIgorI2luY2x1ZGUgIlNjaGVkdWxlZEFjdGlvbi5oIgorI2luY2x1ZGUgIlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0
Zi9TdGRMaWJFeHRyYXMuaD4KKwordXNpbmcgbmFtZXNwYWNlIHN0ZDsKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitzdGF0aWMgY29uc3QgaW50IG1heFRpbWVyTmVzdGluZ0xldmVsID0gNTsKK3N0
YXRpYyBjb25zdCBkb3VibGUgb25lTWlsbGlzZWNvbmQgPSAwLjAwMTsKK3N0YXRpYyBjb25zdCBk
b3VibGUgbWluVGltZXJJbnRlcnZhbCA9IDAuMDEwOyAvLyAxMCBtaWxsaXNlY29uZHMKKworc3Rh
dGljIGludCB0aW1lck5lc3RpbmdMZXZlbCA9IDA7CisKK0RPTVRpbWVyOjpET01UaW1lcihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBTY2hlZHVsZWRBY3Rpb24qIGFjdGlvbiwgaW50
IHRpbWVvdXQsIGJvb2wgc2luZ2xlU2hvdCkKKyAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0
LCB0aGlzKQorICAgICwgbV9hY3Rpb24oYWN0aW9uKQorICAgICwgbV9uZXh0RmlyZUludGVydmFs
KDApCisgICAgLCBtX3JlcGVhdEludGVydmFsKDApCit7CisgICAgc3RhdGljIGludCBsYXN0VXNl
ZFRpbWVvdXRJZCA9IDA7CisgICAgKytsYXN0VXNlZFRpbWVvdXRJZDsKKyAgICAvLyBBdm9pZCB3
cmFwYXJvdW5kIGdvaW5nIG5lZ2F0aXZlIG9uIHVzLgorICAgIGlmIChsYXN0VXNlZFRpbWVvdXRJ
ZCA8PSAwKQorICAgICAgICBsYXN0VXNlZFRpbWVvdXRJZCA9IDE7CisgICAgbV90aW1lb3V0SWQg
PSBsYXN0VXNlZFRpbWVvdXRJZDsKKyAgICAKKyAgICBtX25lc3RpbmdMZXZlbCA9IHRpbWVyTmVz
dGluZ0xldmVsICsgMTsKKworICAgIC8vIEZJWE1FOiBNb3ZlIHRoZSB0aW1lb3V0IG1hcCBhbmQg
QVBJIHRvIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgdG8gYmUgYWJsZQorICAgIC8vIHRvIGNyZWF0
ZSB0aW1lb3V0cyBmcm9tIFdvcmtlcnMuCisgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSAmJiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzRG9jdW1lbnQoKSk7CisgICAgc3Rh
dGljX2Nhc3Q8RG9jdW1lbnQqPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpLT5hZGRUaW1lb3V0
KG1fdGltZW91dElkLCB0aGlzKTsKKworICAgIGRvdWJsZSBpbnRlcnZhbE1pbGxpc2Vjb25kcyA9
IG1heChvbmVNaWxsaXNlY29uZCwgdGltZW91dCAqIG9uZU1pbGxpc2Vjb25kKTsKKworICAgIC8v
IFVzZSBhIG1pbmltdW0gaW50ZXJ2YWwgb2YgMTAgbXMgdG8gbWF0Y2ggb3RoZXIgYnJvd3NlcnMs
IGJ1dCBvbmx5IG9uY2Ugd2UndmUKKyAgICAvLyBuZXN0ZWQgZW5vdWdoIHRvIG5vdGljZSB0aGF0
IHdlJ3JlIHJlcGVhdGluZy4KKyAgICAvLyBGYXN0ZXIgdGltZXJzIG1pZ2h0IGJlICJiZXR0ZXIi
LCBidXQgdGhleSdyZSBpbmNvbXBhdGlibGUuCisgICAgaWYgKGludGVydmFsTWlsbGlzZWNvbmRz
IDwgbWluVGltZXJJbnRlcnZhbCAmJiBtX25lc3RpbmdMZXZlbCA+PSBtYXhUaW1lck5lc3RpbmdM
ZXZlbCkKKyAgICAgICAgaW50ZXJ2YWxNaWxsaXNlY29uZHMgPSBtaW5UaW1lckludGVydmFsOwor
ICAgIGlmIChzaW5nbGVTaG90KQorICAgICAgICBzdGFydE9uZVNob3QoaW50ZXJ2YWxNaWxsaXNl
Y29uZHMpOworICAgIGVsc2UKKyAgICAgICAgc3RhcnRSZXBlYXRpbmcoaW50ZXJ2YWxNaWxsaXNl
Y29uZHMpOworfQorCitET01UaW1lcjo6fkRPTVRpbWVyKCkKK3sKKyAgICBpZiAoc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKSB7CisgICAgICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCktPmlzRG9jdW1lbnQoKSk7CisgICAgICAgIHN0YXRpY19jYXN0PERvY3VtZW50Kj4oc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpKS0+cmVtb3ZlVGltZW91dChtX3RpbWVvdXRJZCk7CisgICAgfQor
fQorICAgIAoraW50IERPTVRpbWVyOjppbnN0YWxsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIFNjaGVkdWxlZEFjdGlvbiogYWN0aW9uLCBpbnQgdGltZW91dCwgYm9vbCBzaW5nbGVT
aG90KQoreworICAgIC8vIERPTVRpbWVyIGNvbnN0cnVjdG9yIGxpbmtzIHRoZSBuZXcgdGltZXIg
aW50byBhIGxpc3Qgb2YgQWN0aXZlRE9NT2JqZWN0cyBoZWxkIGJ5IHRoZSAnY29udGV4dCcuCisg
ICAgLy8gVGhlIHRpbWVyIGlzIGRlbGV0ZWQgd2hlbiBjb250ZXh0IGlzIGRlbGV0ZWQgKERPTVRp
bWVyOjpjb250ZXh0RGVzdHJveWVkKSBvciBleHBsaWNpdGx5IHZpYSBET01UaW1lcjo6cmVtb3Zl
QnlJZCgpLAorICAgIC8vIG9yIGlmIGl0IGlzIGEgb25lLXRpbWUgdGltZXIgYW5kIGl0IGhhcyBm
aXJlZCAoRE9NVGltZXI6OmZpcmVkKS4KKyAgICBET01UaW1lciogdGltZXIgPSBuZXcgRE9NVGlt
ZXIoY29udGV4dCwgYWN0aW9uLCB0aW1lb3V0LCBzaW5nbGVTaG90KTsKKyAgICByZXR1cm4gdGlt
ZXItPm1fdGltZW91dElkOworfQorCit2b2lkIERPTVRpbWVyOjpyZW1vdmVCeUlkKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGludCB0aW1lb3V0SWQpCit7CisgICAgLy8gdGltZW91
dCBJRHMgaGF2ZSB0byBiZSBwb3NpdGl2ZSwgYW5kIDAgYW5kIC0xIGFyZSB1bnNhZmUgdG8KKyAg
ICAvLyBldmVuIGxvb2sgdXAgc2luY2UgdGhleSBhcmUgdGhlIGVtcHR5IGFuZCBkZWxldGVkIHZh
bHVlCisgICAgLy8gcmVzcGVjdGl2ZWx5CisgICAgaWYgKHRpbWVvdXRJZCA8PSAwKQorICAgICAg
ICByZXR1cm47CisgICAgQVNTRVJUKGNvbnRleHQgJiYgY29udGV4dC0+aXNEb2N1bWVudCgpKTsK
KyAgICBkZWxldGUgc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0KS0+ZmluZFRpbWVvdXQo
dGltZW91dElkKTsKK30KKwordm9pZCBET01UaW1lcjo6ZmlyZWQoKQoreworICAgIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAg
dGltZXJOZXN0aW5nTGV2ZWwgPSBtX25lc3RpbmdMZXZlbDsKKworICAgIC8vIFNpbXBsZSBjYXNl
IGZvciBub24tb25lLXNob3QgdGltZXJzLgorICAgIGlmIChpc0FjdGl2ZSgpKSB7CisgICAgICAg
IGlmIChyZXBlYXRJbnRlcnZhbCgpICYmIHJlcGVhdEludGVydmFsKCkgPCBtaW5UaW1lckludGVy
dmFsKSB7CisgICAgICAgICAgICBtX25lc3RpbmdMZXZlbCsrOworICAgICAgICAgICAgaWYgKG1f
bmVzdGluZ0xldmVsID49IG1heFRpbWVyTmVzdGluZ0xldmVsKQorICAgICAgICAgICAgICAgIGF1
Z21lbnRSZXBlYXRJbnRlcnZhbChtaW5UaW1lckludGVydmFsIC0gcmVwZWF0SW50ZXJ2YWwoKSk7
CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIE5vIGFjY2VzcyB0byBtZW1iZXIgdmFy
aWFibGVzIGFmdGVyIHRoaXMgcG9pbnQsIGl0IGNhbiBkZWxldGUgdGhlIHRpbWVyLgorICAgICAg
ICBtX2FjdGlvbi0+ZXhlY3V0ZShjb250ZXh0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIC8vIERlbGV0ZSB0aW1lciBiZWZvcmUgZXhlY3V0aW5nIHRoZSBhY3Rpb24gZm9yIG9uZS1z
aG90IHRpbWVycy4KKyAgICBTY2hlZHVsZWRBY3Rpb24qIGFjdGlvbiA9IG1fYWN0aW9uLnJlbGVh
c2UoKTsKKworICAgIC8vIE5vIGFjY2VzcyB0byBtZW1iZXIgdmFyaWFibGVzIGFmdGVyIHRoaXMg
cG9pbnQuCisgICAgZGVsZXRlIHRoaXM7CisgICAgCisgICAgYWN0aW9uLT5leGVjdXRlKGNvbnRl
eHQpOworICAgIGRlbGV0ZSBhY3Rpb247CisgICAgdGltZXJOZXN0aW5nTGV2ZWwgPSAwOworfQor
Citib29sIERPTVRpbWVyOjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAoreworICAgIHJldHVy
biBpc0FjdGl2ZSgpOworfQorCit2b2lkIERPTVRpbWVyOjpjb250ZXh0RGVzdHJveWVkKCkKK3sK
KyAgICBBY3RpdmVET01PYmplY3Q6OmNvbnRleHREZXN0cm95ZWQoKTsKKyAgICBkZWxldGUgdGhp
czsKK30KKwordm9pZCBET01UaW1lcjo6c3RvcCgpCit7CisgICAgVGltZXJCYXNlOjpzdG9wKCk7
CisgICAgLy8gTmVlZCB0byByZWxlYXNlIEpTIG9iamVjdHMgcG90ZW50aWFsbHkgcHJvdGVjdGVk
IGJ5IFNjaGVkdWxlZEFjdGlvbgorICAgIC8vIGJlY2F1c2UgdGhleSBjYW4gZm9ybSBjaXJjdWxh
ciByZWZlcmVuY2VzIGJhY2sgdG8gdGhlIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKKyAgICAvLyB3
aGljaCB3aWxsIGNhdXNlIGEgbWVtb3J5IGxlYWsuCisgICAgbV9hY3Rpb24uY2xlYXIoKTsKK30K
Kwordm9pZCBET01UaW1lcjo6c3VzcGVuZCgpIAoreyAKKyAgICBBU1NFUlQobV9uZXh0RmlyZUlu
dGVydmFsID09IDAgJiYgbV9yZXBlYXRJbnRlcnZhbCA9PSAwKTsgCisgICAgbV9uZXh0RmlyZUlu
dGVydmFsID0gbmV4dEZpcmVJbnRlcnZhbCgpOworICAgIG1fcmVwZWF0SW50ZXJ2YWwgPSByZXBl
YXRJbnRlcnZhbCgpOworICAgIFRpbWVyQmFzZTo6c3RvcCgpOworfSAKKyAKK3ZvaWQgRE9NVGlt
ZXI6OnJlc3VtZSgpIAoreyAKKyAgICBzdGFydChtX25leHRGaXJlSW50ZXJ2YWwsIG1fcmVwZWF0
SW50ZXJ2YWwpOworICAgIG1fbmV4dEZpcmVJbnRlcnZhbCA9IDA7CisgICAgbV9yZXBlYXRJbnRl
cnZhbCA9IDA7Cit9IAorIAorIAorYm9vbCBET01UaW1lcjo6Y2FuU3VzcGVuZCgpIGNvbnN0IAor
eyAKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
V2ViQ29yZS9kb20vRE9NVGltZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9ET01UaW1l
ci5oCShyZXZpc2lvbiA0MDIwMSkJKGZyb20gV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01UaW1lci5o
OjQwMjAxKQorKysgV2ViQ29yZS9kb20vRE9NVGltZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqCisgKi8KKworI2lmbmRlZiBET01UaW1lcl9oCisjZGVmaW5lIERPTVRp
bWVyX2gKKworI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIlRpbWVyLmgi
CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IFNjaGVkdWxlZEFjdGlvbjsKKworY2xhc3MgRE9NVGltZXIgOiBwdWJsaWMgVGltZXJCYXNlLCBw
dWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5ET01UaW1lcigp
OworICAgIC8vIENyZWF0ZXMgYSBuZXcgdGltZXIgb3duZWQgYnkgc3BlY2lmaWVkIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQsIHN0YXJ0cyBpdAorICAgIC8vIGFuZCByZXR1cm5zIGl0cyBJZC4KKyAg
ICBzdGF0aWMgaW50IGluc3RhbGwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFNjaGVkdWxlZEFj
dGlvbiosIGludCB0aW1lb3V0LCBib29sIHNpbmdsZVNob3QpOworICAgIHN0YXRpYyB2b2lkIHJl
bW92ZUJ5SWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGludCB0aW1lb3V0SWQpOworCisgICAg
Ly8gQWN0aXZlRE9NT2JqZWN0CisgICAgdmlydHVhbCBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgp
IGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBjb250ZXh0RGVzdHJveWVkKCk7CisgICAgdmlydHVh
bCB2b2lkIHN0b3AoKTsKKyAgICB2aXJ0dWFsIGJvb2wgY2FuU3VzcGVuZCgpIGNvbnN0OworICAg
IHZpcnR1YWwgdm9pZCBzdXNwZW5kKCk7CisgICAgdmlydHVhbCB2b2lkIHJlc3VtZSgpOworCitw
cml2YXRlOgorICAgIERPTVRpbWVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBTY2hlZHVsZWRB
Y3Rpb24qLCBpbnQgdGltZW91dCwgYm9vbCBzaW5nbGVTaG90KTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZmlyZWQoKTsKKworICAgIGludCBtX3RpbWVvdXRJZDsKKyAgICBpbnQgbV9uZXN0aW5nTGV2ZWw7
CisgICAgT3duUHRyPFNjaGVkdWxlZEFjdGlvbj4gbV9hY3Rpb247CisgICAgZG91YmxlIG1fbmV4
dEZpcmVJbnRlcnZhbDsKKyAgICBkb3VibGUgbV9yZXBlYXRJbnRlcnZhbDsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIERPTVRpbWVyX2gKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27042</attachid>
            <date>2009-01-26 11:41:50 -0800</date>
            <delta_ts>2009-01-26 11:59:47 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>moving_v2.txt</filename>
            <type>text/plain</type>
            <size>29794</size>
            <attacher name="Dmitry Titov">dimich</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MDIwMykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjQgQEAKKzIwMDktMDEtMjMgIERtaXRyeSBUaXRvdiAgPGRpbWljaEBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTExCisgICAgICAgIE1v
dmUgRE9NVGltZXIgZnJvbSBiaW5kaW5ncy9qcyB0byBwYWdlLy4KKyAgICAgICAgVGhpcyB3YXMg
cHJlcGFyZWQgYnkgbW92aW5nIGFsbCBKU0MgZGVwZW5kZW5jaWVzIGZyb20gRE9NVGltZXIKKyAg
ICAgICAgdG8gU2NoZWR1bGVkQWN0aW9uIGVhcmxpZXIsIGFuZCBoZWxwcyB1bmZvcmsgdGhlIENo
cm9tdWltIHZlcnNpb24KKyAgICAgICAgb2YgdGhlIERPTVRpbWVyLgorCisgICAgICAgICogR05V
bWFrZWZpbGUuYW06CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2ViQ29yZS5z
Y29uczoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViQ29yZVNv
dXJjZXMuYmtsOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0RPTVRpbWVyLmNwcDogUmVtb3ZlZC4K
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9ET01UaW1lci5oOiBSZW1vdmVkLgorICAgICAgICAqIHBh
Z2UvRE9NVGltZXIuY3BwOiBDb3BpZWQgZnJvbSBXZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVRpbWVy
LmNwcC4KKyAgICAgICAgKiBwYWdlL0RPTVRpbWVyLmg6IENvcGllZCBmcm9tIFdlYkNvcmUvYmlu
ZGluZ3MvanMvRE9NVGltZXIuaC4KKwogMjAwOS0wMS0yMyAgQ2hyaXMgRmxlaXphY2ggIDxjZmxl
aXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRl
eDogV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0dOVW1ha2Vm
aWxlLmFtCShyZXZpc2lvbiA0MDIwMSkKKysrIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHdvcmtp
bmcgY29weSkKQEAgLTIzOCw4ICsyMzgsNiBAQCBJRExfQklORElOR1MgKz0gXAogd2ViY29yZV9z
b3VyY2VzICs9IFwKIAlXZWJDb3JlL1dlYkNvcmVQcmVmaXguaCBcCiAJV2ViQ29yZS9iaW5kaW5n
cy9qcy9DYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlci5oIFwKLQlXZWJDb3JlL2JpbmRpbmdzL2pz
L0RPTVRpbWVyLmNwcCBcCi0JV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01UaW1lci5oIFwKIAlXZWJD
b3JlL2JpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5jcHAgXAogCVdlYkNvcmUvYmluZGluZ3MvanMv
R0NDb250cm9sbGVyLmggXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNBdHRyQ3VzdG9tLmNwcCBc
CkBAIC0xMTM3LDYgKzExMzUsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvcGFn
ZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuaCBcCiAJV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5j
cHAgXAogCVdlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uaCBcCisJV2ViQ29yZS9wYWdlL0RPTVRp
bWVyLmNwcCBcCisJV2ViQ29yZS9wYWdlL0RPTVRpbWVyLmggXAogCVdlYkNvcmUvcGFnZS9ET01X
aW5kb3cuY3BwIFwKIAlXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmggXAogCVdlYkNvcmUvcGFnZS9E
cmFnQWN0aW9ucy5oIFwKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5wcm8KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9XZWJDb3JlLnBybwkocmV2aXNpb24gNDAyMDEpCisrKyBXZWJDb3JlL1dlYkNvcmUu
cHJvCSh3b3JraW5nIGNvcHkpCkBAIC00MDEsNyArNDAxLDYgQEAgSURMX0JJTkRJTkdTICs9IFwK
IAogCiBTT1VSQ0VTICs9IFwKLSAgICBiaW5kaW5ncy9qcy9ET01UaW1lci5jcHAgXAogICAgIGJp
bmRpbmdzL2pzL0dDQ29udHJvbGxlci5jcHAgXAogICAgIGJpbmRpbmdzL2pzL0pTQXR0ckN1c3Rv
bS5jcHAgXAogICAgIGJpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9t
LmNwcCBcCkBAIC04MjksNiArODI4LDcgQEAgU09VUkNFUyArPSBcCiAgICAgcGFnZS9Db25zb2xl
LmNwcCBcCiAgICAgcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwIFwKICAgICBwYWdlL0RP
TVNlbGVjdGlvbi5jcHAgXAorICAgIHBhZ2UvRE9NVGltZXIuY3BwIFwKICAgICBwYWdlL0RPTVdp
bmRvdy5jcHAgXAogICAgIHBhZ2UvTmF2aWdhdG9yLmNwcCBcCiAgICAgcGFnZS9OYXZpZ2F0b3JC
YXNlLmNwcCBcCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUuc2NvbnMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9XZWJDb3JlLnNjb25zCShyZXZpc2lvbiA0MDIwMSkKKysrIFdlYkNvcmUvV2ViQ29yZS5z
Y29ucwkod29ya2luZyBjb3B5KQpAQCAtMzc0LDYgKzM3NCw3IEBAIHNvdXJjZXNbJ3BhZ2UnXSA9
IFsKICAgICAncGFnZS9Db25zb2xlLmNwcCcsCiAgICAgJ3BhZ2UvQ29udGV4dE1lbnVDb250cm9s
bGVyLmNwcCcsCiAgICAgJ3BhZ2UvRE9NU2VsZWN0aW9uLmNwcCcsCisgICAgJ3BhZ2UvRE9NVGlt
ZXIuY3BwJywKICAgICAncGFnZS9ET01XaW5kb3cuY3BwJywKICAgICAncGFnZS9EcmFnQ29udHJv
bGxlci5jcHAnLAogICAgICdwYWdlL0V2ZW50SGFuZGxlci5jcHAnLApAQCAtNjAwLDcgKzYwMSw2
IEBAIHNvdXJjZXNbJ3htbCddID0gWwogCiAjIFVzaW5nIEphdmFTY3JpcHRDb3JlIGZvciBub3cs
IGV2ZW50dWFsbHkgdGhpcyBuZWVkcyB0byBiZSBjb25maWd1cmFibGUgKGFuZCBpbiBzZXBhcmF0
ZSBmaWxlKQogc291cmNlc1snYmluZGluZ3MvanMnXSA9IFsKLSAgICAiYmluZGluZ3MvanMvRE9N
VGltZXIuY3BwIiwKICAgICAiYmluZGluZ3MvanMvR0NDb250cm9sbGVyLmNwcCIsCiAgICAgImJp
bmRpbmdzL2pzL0pTQXR0ckN1c3RvbS5jcHAiLAogICAgICJiaW5kaW5ncy9qcy9KU0F1ZGlvQ29u
c3RydWN0b3IuY3BwIiwKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZVNvdXJjZXMuYmtsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvV2ViQ29yZVNvdXJjZXMuYmtsCShyZXZpc2lvbiA0MDIwMSkKKysrIFdl
YkNvcmUvV2ViQ29yZVNvdXJjZXMuYmtsCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw2IEBA
IFRoaXMgZmlsZSBjb250YWlucyB0aGUgbGlzdCBvZiBmaWxlcyBuZWUKIAogPG1ha2VmaWxlPgog
ICAgIDxzZXQgYXBwZW5kPSIxIiB2YXI9IldFQkNPUkVfU09VUkNFU19KUyI+Ci0gICAgICAgIGJp
bmRpbmdzL2pzL0RPTVRpbWVyLmNwcAogICAgICAgICBiaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIu
Y3BwCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTQXR0ckN1c3RvbS5jcHAKICAgICAgICAgYmluZGlu
Z3MvanMvSlNBdWRpb0NvbnN0cnVjdG9yLmNwcApAQCAtNjg4LDYgKzY4Nyw3IEBAIFRoaXMgZmls
ZSBjb250YWlucyB0aGUgbGlzdCBvZiBmaWxlcyBuZWUKICAgICAgICAgcGFnZS9Db25zb2xlLmNw
cAogICAgICAgICBwYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKICAgICAgICAgcGFnZS9E
T01TZWxlY3Rpb24uY3BwCisgICAgICAgIHBhZ2UvRE9NVGltZXIuY3BwCiAgICAgICAgIHBhZ2Uv
RE9NV2luZG93LmNwcAogICAgICAgICBwYWdlL0RyYWdDb250cm9sbGVyLmNwcAogICAgICAgICBw
YWdlL0V2ZW50SGFuZGxlci5jcHAKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvagkocmV2aXNpb24gNDAyMDEpCisrKyBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yMTM2LDYgKzIxMzYsMTQgQEAKIAkJCQk+DQogCQkJ
PC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGFnZVxET01UaW1lci5j
cHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIu
LlxwYWdlXERPTVRpbWVyLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxwYWdlXERPTVdpbmRvdy5jcHAiDQogCQkJCT4NCiAJCQkJPEZpbGVD
b25maWd1cmF0aW9uDQpAQCAtMTQwNDksMTQgKzE0MDU3LDYgQEAKIAkJCQkJPg0KIAkJCQk8L0Zp
bGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXERPTVRp
bWVyLmNwcCINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRp
dmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xET01UaW1lci5oIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+
DQotCQkJCTxGaWxlDQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEdDQ29udHJv
bGxlci5jcHAiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gNDAyMDEpCisrKyBXZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTc3LDEw
ICsxNzcsMTAgQEAKIAkJMTRFQzI2ODAwOUNBMDdFMDAwRTFFRUVDIC8qIEV2ZW50VGFyZ2V0Tm9k
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEVD
MjY3RTA5Q0EwN0UwMDBFMUVFRUMgLyogRXZlbnRUYXJnZXROb2RlLmNwcCAqLzsgfTsKIAkJMTRG
RkUzMUQwQUUxOTYzMzAwMTM2QkY1IC8qIEhUTUxGcmFtZUVsZW1lbnRCYXNlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEZGRTMxQjBBRTE5NjMzMDAx
MzZCRjUgLyogSFRNTEZyYW1lRWxlbWVudEJhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxNEZGRTMxRTBBRTE5NjMzMDAxMzZCRjUgLyogSFRN
TEZyYW1lRWxlbWVudEJhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMTRGRkUzMUMwQUUxOTYzMzAwMTM2QkY1IC8qIEhUTUxGcmFtZUVsZW1lbnRC
YXNlLmNwcCAqLzsgfTsKKwkJMTg4NjA0NjQwRjJFNDM5NTAwMEI2NDQzIC8qIERPTVRpbWVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE4ODYwNDYy
MEYyRTQzOTUwMDBCNjQ0MyAvKiBET01UaW1lci5jcHAgKi87IH07CisJCTE4ODYwNDY1MEYyRTQz
OTUwMDBCNjQ0MyAvKiBET01UaW1lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMTg4NjA0NjMwRjJFNDM5NTAwMEI2NDQzIC8qIERPTVRpbWVyLmggKi87
IH07CiAJCTE4QTA1MzdDMEYyNjg1OUMwMEE1MTcwNSAvKiBXb3JrZXJSdW5Mb29wLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE4QTA1MzdBMEYyNjg1
OUMwMEE1MTcwNSAvKiBXb3JrZXJSdW5Mb29wLmNwcCAqLzsgfTsKIAkJMThBMDUzN0QwRjI2ODU5
QzAwQTUxNzA1IC8qIFdvcmtlclJ1bkxvb3AuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDE4QTA1MzdCMEYyNjg1OUMwMEE1MTcwNSAvKiBXb3JrZXJSdW5M
b29wLmggKi87IH07Ci0JCTE4RTY4Nzg3MEVEQjc5MzUwMEE4RThCNyAvKiBET01UaW1lci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxOEU2ODc4NTBF
REI3OTM0MDBBOEU4QjcgLyogRE9NVGltZXIuY3BwICovOyB9OwotCQkxOEU2ODc4ODBFREI3OTM1
MDBBOEU4QjcgLyogRE9NVGltZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDE4RTY4Nzg2MEVEQjc5MzUwMEE4RThCNyAvKiBET01UaW1lci5oICovOyB9
OwogCQkxQTBENTczNjBBNUM3N0ZFMDA3RURENEMgLyogT3ZlcmZsb3dFdmVudC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTBENTczNDBBNUM3N0ZF
MDA3RURENEMgLyogT3ZlcmZsb3dFdmVudC5jcHAgKi87IH07CiAJCTFBMEQ1NzM3MEE1Qzc3RkUw
MDdFREQ0QyAvKiBPdmVyZmxvd0V2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQTBENTczNTBBNUM3N0ZFMDA3RURENEMgLyogT3ZlcmZsb3dFdmVu
dC5oICovOyB9OwogCQkxQTBENTc0MDBBNUM3ODY3MDA3RURENEMgLyogSlNPdmVyZmxvd0V2ZW50
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBMEQ1
NzNFMEE1Qzc4NjcwMDdFREQ0QyAvKiBKU092ZXJmbG93RXZlbnQuY3BwICovOyB9OwpAQCAtNTAy
NCwxMCArNTAyNCwxMCBAQAogCQkxNEVDMjY3RTA5Q0EwN0UwMDBFMUVFRUMgLyogRXZlbnRUYXJn
ZXROb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV2ZW50VGFy
Z2V0Tm9kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0RkZFMzFCMEFFMTk2
MzMwMDEzNkJGNSAvKiBIVE1MRnJhbWVFbGVtZW50QmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBIVE1MRnJhbWVFbGVtZW50QmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxNEZGRTMxQzBBRTE5NjMzMDAxMzZCRjUgLyogSFRNTEZyYW1lRWxlbWVudEJh
c2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTEZyYW1lRWxl
bWVudEJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxODg2MDQ2MjBGMkU0
Mzk1MDAwQjY0NDMgLyogRE9NVGltZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gRE9NVGltZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxODg2
MDQ2MzBGMkU0Mzk1MDAwQjY0NDMgLyogRE9NVGltZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRE9NVGltZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMThB
MDUzN0EwRjI2ODU5QzAwQTUxNzA1IC8qIFdvcmtlclJ1bkxvb3AuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV29ya2VyUnVuTG9vcC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTE4QTA1MzdCMEYyNjg1OUMwMEE1MTcwNSAvKiBXb3JrZXJSdW5Mb29w
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmtlclJ1bkxvb3AuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMThFNjg3ODUwRURCNzkzNDAwQThFOEI3IC8qIERP
TVRpbWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTVRpbWVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMThFNjg3ODYwRURCNzkzNTAwQThF
OEI3IC8qIERPTVRpbWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVRp
bWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBMEQ1NzM0MEE1Qzc3RkUwMDdF
REQ0QyAvKiBPdmVyZmxvd0V2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBPdmVyZmxvd0V2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MUEwRDU3MzUwQTVDNzdGRTAwN0VERDRDIC8qIE92ZXJmbG93RXZlbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE92ZXJmbG93RXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMUEwRDU3MzgwQTVDNzgxMjAwN0VERDRDIC8qIE92ZXJmbG93RXZlbnQuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBPdmVyZmxvd0V2ZW50LmlkbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTEwMDg1LDYgKzEwMDg1LDggQEAKIAkJCQlCQzVBODY4MTBDMzM2
NzYwMDBFRUE2NDkgLyogRE9NU2VsZWN0aW9uLmNwcCAqLywKIAkJCQlCQzVBODY4MjBDMzM2NzYw
MDBFRUE2NDkgLyogRE9NU2VsZWN0aW9uLmggKi8sCiAJCQkJQkM1QTg2ODMwQzMzNjc2MDAwRUVB
NjQ5IC8qIERPTVNlbGVjdGlvbi5pZGwgKi8sCisJCQkJMTg4NjA0NjIwRjJFNDM5NTAwMEI2NDQz
IC8qIERPTVRpbWVyLmNwcCAqLywKKwkJCQkxODg2MDQ2MzBGMkU0Mzk1MDAwQjY0NDMgLyogRE9N
VGltZXIuaCAqLywKIAkJCQkxNDAzQjk5NjA5RUIxM0FGMDA3OTdDN0YgLyogRE9NV2luZG93LmNw
cCAqLywKIAkJCQkxNDAzQjk5NTA5RUIxM0FGMDA3OTdDN0YgLyogRE9NV2luZG93LmggKi8sCiAJ
CQkJMTQwM0I5MEMwOUVCMTI0NTAwNzk3QzdGIC8qIERPTVdpbmRvdy5pZGwgKi8sCkBAIC0xMzE2
OSw4ICsxMzE3MSw2IEBACiAJCQkJMTRERkIzM0YwQTdERjc2MzAwMThGNzY5IC8qIERlcml2ZWQg
U291cmNlcyAqLywKIAkJCQlCQ0Q1MzM2MzBFRDY4NDg5MDA4ODc0NjggLyogQ2FjaGVkU2NyaXB0
U291cmNlUHJvdmlkZXIuaCAqLywKIAkJCQk5M0Y4QjMwNjBBMzAwRkVBMDBGNjFBQjggLyogQ29k
ZUdlbmVyYXRvckpTLnBtICovLAotCQkJCTE4RTY4Nzg1MEVEQjc5MzQwMEE4RThCNyAvKiBET01U
aW1lci5jcHAgKi8sCi0JCQkJMThFNjg3ODYwRURCNzkzNTAwQThFOEI3IC8qIERPTVRpbWVyLmgg
Ki8sCiAJCQkJMTQzMkU4NDgwQzUxNDkzRjAwQjE1MDBGIC8qIEdDQ29udHJvbGxlci5jcHAgKi8s
CiAJCQkJMTQzMkU4NDYwQzUxNDkzODAwQjE1MDBGIC8qIEdDQ29udHJvbGxlci5oICovLAogCQkJ
CUU0RUVGRkM2MEQzNDU1MEMwMDQ2OUE1OCAvKiBKU0F1ZGlvQ29uc3RydWN0b3IuY3BwICovLApA
QCAtMTUyODksNyArMTUyODksNiBAQAogCQkJCURERTYzRUQ1MEI3RDQ1QTgwMDIyNjk5OCAvKiBE
T01UZXh0RXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1RTcxMUQ5MEFDNUQ1MzUwMDUzMjcw
RiAvKiBET01UZXh0SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQzU3MzNBMEQ2OTVC
RjEwMDZFRjUxNyAvKiBET01UZXh0UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMThFNjg3
ODgwRURCNzkzNTAwQThFOEI3IC8qIERPTVRpbWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzFB
MzdCRTA5N0M3MTVGMDAxOUYzRDggLyogRE9NVHJhdmVyc2FsLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk4NTUyNkNEMjBBQjBCN0Q5MDAwMzAyRUEgLyogRE9NVHJlZVdhbGtlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODUwQjQxQzMwQUQ5RTdFNzAwQTZFRDRGIC8qIERPTVRyZWVXYWxrZXJJbnRlcm5h
bC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNjYyOCw2ICsxNjYyNyw3IEBACiAJCQkJMUE1NjlEMjUw
RDdFMkI4MjAwN0MzOTgzIC8qIHJ1bnRpbWVfcm9vdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMz
MDlFMUUwOTlFNjQ5MjAwNTZFNTgxIC8qIHZpc2libGVfdW5pdHMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTE4QTA1MzdEMEYyNjg1OUMwMEE1MTcwNSAvKiBXb3JrZXJSdW5Mb29wLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkxODg2MDQ2NTBGMkU0Mzk1MDAwQjY0NDMgLyogRE9NVGltZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAw
OwogCQl9OwpAQCAtMTcyOTEsNyArMTcyOTEsNiBAQAogCQkJCTg1MDY1NzAzMEFBQjQ3NjMwMDJE
MTVDMCAvKiBET01TdHlsZVNoZWV0TGlzdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTg1QUNBOTlE
MEE5QjU3NTkwMDY3MUU5MCAvKiBET01UZXh0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMzQTE0
QUEwQjdEMUQwOTAwQTUzRkZEIC8qIERPTVRleHRFdmVudC5tbSBpbiBTb3VyY2VzICovLAotCQkJ
CTE4RTY4Nzg3MEVEQjc5MzUwMEE4RThCNyAvKiBET01UaW1lci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk4NTUyNkNEMzBBQjBCN0RBMDAwMzAyRUEgLyogRE9NVHJlZVdhbGtlci5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTg1QzdGNDkyMEFBRjc5REMwMDQwMTRERCAvKiBET01VSUV2ZW50Lm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQkMxQTM3QkYwOTdDNzE1RjAwMTlGM0Q4IC8qIERPTVV0aWxpdHku
bW0gaW4gU291cmNlcyAqLywKQEAgLTE4NTk3LDYgKzE4NTk2LDcgQEAKIAkJCQkxQTU2OUQyMjBE
N0UyQjgyMDA3QzM5ODMgLyogcnVudGltZV9vYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MUE1NjlEMjQwRDdFMkI4MjAwN0MzOTgzIC8qIHJ1bnRpbWVfcm9vdC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk5MzMwOUUxRDA5OUU2NDkyMDA1NkU1ODEgLyogdmlzaWJsZV91bml0cy5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQkxODg2MDQ2NDBGMkU0Mzk1MDAwQjY0NDMgLyogRE9NVGltZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CiAJCX07CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVRpbWVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVRpbWVyLmNwcAkocmV2aXNpb24g
NDAyMDEpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVRpbWVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSwxNzcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJET01UaW1lci5oIgotCi0jaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJT
Y2hlZHVsZWRBY3Rpb24uaCIKLSNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0j
aW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+Ci0K
LXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIGNv
bnN0IGludCBtYXhUaW1lck5lc3RpbmdMZXZlbCA9IDU7Ci1zdGF0aWMgY29uc3QgZG91YmxlIG9u
ZU1pbGxpc2Vjb25kID0gMC4wMDE7Ci1zdGF0aWMgY29uc3QgZG91YmxlIG1pblRpbWVySW50ZXJ2
YWwgPSAwLjAxMDsgLy8gMTAgbWlsbGlzZWNvbmRzCi0KLXN0YXRpYyBpbnQgdGltZXJOZXN0aW5n
TGV2ZWwgPSAwOwotCi1ET01UaW1lcjo6RE9NVGltZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgU2NoZWR1bGVkQWN0aW9uKiBhY3Rpb24sIGludCB0aW1lb3V0LCBib29sIHNpbmds
ZVNob3QpCi0gICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCwgdGhpcykKLSAgICAsIG1fYWN0
aW9uKGFjdGlvbikKLSAgICAsIG1fbmV4dEZpcmVJbnRlcnZhbCgwKQotICAgICwgbV9yZXBlYXRJ
bnRlcnZhbCgwKQotewotICAgIHN0YXRpYyBpbnQgbGFzdFVzZWRUaW1lb3V0SWQgPSAwOwotICAg
ICsrbGFzdFVzZWRUaW1lb3V0SWQ7Ci0gICAgLy8gQXZvaWQgd3JhcGFyb3VuZCBnb2luZyBuZWdh
dGl2ZSBvbiB1cy4KLSAgICBpZiAobGFzdFVzZWRUaW1lb3V0SWQgPD0gMCkKLSAgICAgICAgbGFz
dFVzZWRUaW1lb3V0SWQgPSAxOwotICAgIG1fdGltZW91dElkID0gbGFzdFVzZWRUaW1lb3V0SWQ7
Ci0gICAgCi0gICAgbV9uZXN0aW5nTGV2ZWwgPSB0aW1lck5lc3RpbmdMZXZlbCArIDE7Ci0KLSAg
ICAvLyBGSVhNRTogTW92ZSB0aGUgdGltZW91dCBtYXAgYW5kIEFQSSB0byBTY3JpcHRFeGVjdXRp
b25Db250ZXh0IHRvIGJlIGFibGUKLSAgICAvLyB0byBjcmVhdGUgdGltZW91dHMgZnJvbSBXb3Jr
ZXJzLgotICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgJiYgc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpLT5pc0RvY3VtZW50KCkpOwotICAgIHN0YXRpY19jYXN0PERvY3VtZW50Kj4o
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS0+YWRkVGltZW91dChtX3RpbWVvdXRJZCwgdGhpcyk7
Ci0KLSAgICBkb3VibGUgaW50ZXJ2YWxNaWxsaXNlY29uZHMgPSBtYXgob25lTWlsbGlzZWNvbmQs
IHRpbWVvdXQgKiBvbmVNaWxsaXNlY29uZCk7Ci0KLSAgICAvLyBVc2UgYSBtaW5pbXVtIGludGVy
dmFsIG9mIDEwIG1zIHRvIG1hdGNoIG90aGVyIGJyb3dzZXJzLCBidXQgb25seSBvbmNlIHdlJ3Zl
Ci0gICAgLy8gbmVzdGVkIGVub3VnaCB0byBub3RpY2UgdGhhdCB3ZSdyZSByZXBlYXRpbmcuCi0g
ICAgLy8gRmFzdGVyIHRpbWVycyBtaWdodCBiZSAiYmV0dGVyIiwgYnV0IHRoZXkncmUgaW5jb21w
YXRpYmxlLgotICAgIGlmIChpbnRlcnZhbE1pbGxpc2Vjb25kcyA8IG1pblRpbWVySW50ZXJ2YWwg
JiYgbV9uZXN0aW5nTGV2ZWwgPj0gbWF4VGltZXJOZXN0aW5nTGV2ZWwpCi0gICAgICAgIGludGVy
dmFsTWlsbGlzZWNvbmRzID0gbWluVGltZXJJbnRlcnZhbDsKLSAgICBpZiAoc2luZ2xlU2hvdCkK
LSAgICAgICAgc3RhcnRPbmVTaG90KGludGVydmFsTWlsbGlzZWNvbmRzKTsKLSAgICBlbHNlCi0g
ICAgICAgIHN0YXJ0UmVwZWF0aW5nKGludGVydmFsTWlsbGlzZWNvbmRzKTsKLX0KLQotRE9NVGlt
ZXI6On5ET01UaW1lcigpCi17Ci0gICAgaWYgKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkgewot
ICAgICAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc0RvY3VtZW50KCkpOwot
ICAgICAgICBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkt
PnJlbW92ZVRpbWVvdXQobV90aW1lb3V0SWQpOwotICAgIH0KLX0KLSAgICAKLWludCBET01UaW1l
cjo6aW5zdGFsbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBTY2hlZHVsZWRBY3Rp
b24qIGFjdGlvbiwgaW50IHRpbWVvdXQsIGJvb2wgc2luZ2xlU2hvdCkKLXsKLSAgICAvLyBET01U
aW1lciBjb25zdHJ1Y3RvciBsaW5rcyB0aGUgbmV3IHRpbWVyIGludG8gYSBsaXN0IG9mIEFjdGl2
ZURPTU9iamVjdHMgaGVsZCBieSB0aGUgJ2NvbnRleHQnLgotICAgIC8vIFRoZSB0aW1lciBpcyBk
ZWxldGVkIHdoZW4gY29udGV4dCBpcyBkZWxldGVkIChET01UaW1lcjo6Y29udGV4dERlc3Ryb3ll
ZCkgb3IgZXhwbGljaXRseSB2aWEgRE9NVGltZXI6OnJlbW92ZUJ5SWQoKSwKLSAgICAvLyBvciBp
ZiBpdCBpcyBhIG9uZS10aW1lIHRpbWVyIGFuZCBpdCBoYXMgZmlyZWQgKERPTVRpbWVyOjpmaXJl
ZCkuCi0gICAgRE9NVGltZXIqIHRpbWVyID0gbmV3IERPTVRpbWVyKGNvbnRleHQsIGFjdGlvbiwg
dGltZW91dCwgc2luZ2xlU2hvdCk7Ci0gICAgcmV0dXJuIHRpbWVyLT5tX3RpbWVvdXRJZDsKLX0K
LQotdm9pZCBET01UaW1lcjo6cmVtb3ZlQnlJZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBpbnQgdGltZW91dElkKQotewotICAgIC8vIHRpbWVvdXQgSURzIGhhdmUgdG8gYmUgcG9z
aXRpdmUsIGFuZCAwIGFuZCAtMSBhcmUgdW5zYWZlIHRvCi0gICAgLy8gZXZlbiBsb29rIHVwIHNp
bmNlIHRoZXkgYXJlIHRoZSBlbXB0eSBhbmQgZGVsZXRlZCB2YWx1ZQotICAgIC8vIHJlc3BlY3Rp
dmVseQotICAgIGlmICh0aW1lb3V0SWQgPD0gMCkKLSAgICAgICAgcmV0dXJuOwotICAgIEFTU0VS
VChjb250ZXh0ICYmIGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7Ci0gICAgZGVsZXRlIHN0YXRpY19j
YXN0PERvY3VtZW50Kj4oY29udGV4dCktPmZpbmRUaW1lb3V0KHRpbWVvdXRJZCk7Ci19Ci0KLXZv
aWQgRE9NVGltZXI6OmZpcmVkKCkKLXsKLSAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgIHRpbWVyTmVzdGluZ0xldmVsID0g
bV9uZXN0aW5nTGV2ZWw7Ci0KLSAgICAvLyBTaW1wbGUgY2FzZSBmb3Igbm9uLW9uZS1zaG90IHRp
bWVycy4KLSAgICBpZiAoaXNBY3RpdmUoKSkgewotICAgICAgICBpZiAocmVwZWF0SW50ZXJ2YWwo
KSAmJiByZXBlYXRJbnRlcnZhbCgpIDwgbWluVGltZXJJbnRlcnZhbCkgewotICAgICAgICAgICAg
bV9uZXN0aW5nTGV2ZWwrKzsKLSAgICAgICAgICAgIGlmIChtX25lc3RpbmdMZXZlbCA+PSBtYXhU
aW1lck5lc3RpbmdMZXZlbCkKLSAgICAgICAgICAgICAgICBhdWdtZW50UmVwZWF0SW50ZXJ2YWwo
bWluVGltZXJJbnRlcnZhbCAtIHJlcGVhdEludGVydmFsKCkpOwotICAgICAgICB9Ci0gICAgICAg
IAotICAgICAgICAvLyBObyBhY2Nlc3MgdG8gbWVtYmVyIHZhcmlhYmxlcyBhZnRlciB0aGlzIHBv
aW50LCBpdCBjYW4gZGVsZXRlIHRoZSB0aW1lci4KLSAgICAgICAgbV9hY3Rpb24tPmV4ZWN1dGUo
Y29udGV4dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBEZWxldGUgdGltZXIg
YmVmb3JlIGV4ZWN1dGluZyB0aGUgYWN0aW9uIGZvciBvbmUtc2hvdCB0aW1lcnMuCi0gICAgU2No
ZWR1bGVkQWN0aW9uKiBhY3Rpb24gPSBtX2FjdGlvbi5yZWxlYXNlKCk7Ci0KLSAgICAvLyBObyBh
Y2Nlc3MgdG8gbWVtYmVyIHZhcmlhYmxlcyBhZnRlciB0aGlzIHBvaW50LgotICAgIGRlbGV0ZSB0
aGlzOwotICAgIAotICAgIGFjdGlvbi0+ZXhlY3V0ZShjb250ZXh0KTsKLSAgICBkZWxldGUgYWN0
aW9uOwotICAgIHRpbWVyTmVzdGluZ0xldmVsID0gMDsKLX0KLQotYm9vbCBET01UaW1lcjo6aGFz
UGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKLXsKLSAgICByZXR1cm4gaXNBY3RpdmUoKTsKLX0KLQot
dm9pZCBET01UaW1lcjo6Y29udGV4dERlc3Ryb3llZCgpCi17Ci0gICAgQWN0aXZlRE9NT2JqZWN0
Ojpjb250ZXh0RGVzdHJveWVkKCk7Ci0gICAgZGVsZXRlIHRoaXM7Ci19Ci0KLXZvaWQgRE9NVGlt
ZXI6OnN0b3AoKQotewotICAgIFRpbWVyQmFzZTo6c3RvcCgpOwotICAgIC8vIE5lZWQgdG8gcmVs
ZWFzZSBKUyBvYmplY3RzIHBvdGVudGlhbGx5IHByb3RlY3RlZCBieSBTY2hlZHVsZWRBY3Rpb24K
LSAgICAvLyBiZWNhdXNlIHRoZXkgY2FuIGZvcm0gY2lyY3VsYXIgcmVmZXJlbmNlcyBiYWNrIHRv
IHRoZSBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ci0gICAgLy8gd2hpY2ggd2lsbCBjYXVzZSBhIG1l
bW9yeSBsZWFrLgotICAgIG1fYWN0aW9uLmNsZWFyKCk7Ci19Ci0KLXZvaWQgRE9NVGltZXI6OnN1
c3BlbmQoKSAKLXsgCi0gICAgQVNTRVJUKG1fbmV4dEZpcmVJbnRlcnZhbCA9PSAwICYmIG1fcmVw
ZWF0SW50ZXJ2YWwgPT0gMCk7IAotICAgIG1fbmV4dEZpcmVJbnRlcnZhbCA9IG5leHRGaXJlSW50
ZXJ2YWwoKTsKLSAgICBtX3JlcGVhdEludGVydmFsID0gcmVwZWF0SW50ZXJ2YWwoKTsKLSAgICBU
aW1lckJhc2U6OnN0b3AoKTsKLX0gCi0gCi12b2lkIERPTVRpbWVyOjpyZXN1bWUoKSAKLXsgCi0g
ICAgc3RhcnQobV9uZXh0RmlyZUludGVydmFsLCBtX3JlcGVhdEludGVydmFsKTsKLSAgICBtX25l
eHRGaXJlSW50ZXJ2YWwgPSAwOwotICAgIG1fcmVwZWF0SW50ZXJ2YWwgPSAwOwotfSAKLSAKLSAK
LWJvb2wgRE9NVGltZXI6OmNhblN1c3BlbmQoKSBjb25zdCAKLXsgCi0gICAgcmV0dXJuIHRydWU7
Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMv
RE9NVGltZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVRpbWVyLmgJ
KHJldmlzaW9uIDQwMjAxKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01UaW1lci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDY4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBw
bGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICoKLSAqLwotCi0jaWZuZGVmIERPTVRpbWVy
X2gKLSNkZWZpbmUgRE9NVGltZXJfaAotCi0jaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCi0j
aW5jbHVkZSAiVGltZXIuaCIKLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotY2xhc3MgU2NoZWR1bGVkQWN0aW9uOwotCi1jbGFzcyBET01UaW1lciA6IHB1
YmxpYyBUaW1lckJhc2UsIHB1YmxpYyBBY3RpdmVET01PYmplY3QgewotcHVibGljOgotICAgIHZp
cnR1YWwgfkRPTVRpbWVyKCk7Ci0gICAgLy8gQ3JlYXRlcyBhIG5ldyB0aW1lciBvd25lZCBieSBz
cGVjaWZpZWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgc3RhcnRzIGl0Ci0gICAgLy8gYW5kIHJl
dHVybnMgaXRzIElkLgotICAgIHN0YXRpYyBpbnQgaW5zdGFsbChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgU2NoZWR1bGVkQWN0aW9uKiwgaW50IHRpbWVvdXQsIGJvb2wgc2luZ2xlU2hvdCk7Ci0g
ICAgc3RhdGljIHZvaWQgcmVtb3ZlQnlJZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgaW50IHRp
bWVvdXRJZCk7Ci0KLSAgICAvLyBBY3RpdmVET01PYmplY3QKLSAgICB2aXJ0dWFsIGJvb2wgaGFz
UGVuZGluZ0FjdGl2aXR5KCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIGNvbnRleHREZXN0cm95
ZWQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpOwotICAgIHZpcnR1YWwgYm9vbCBjYW5TdXNw
ZW5kKCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHN1c3BlbmQoKTsKLSAgICB2aXJ0dWFsIHZv
aWQgcmVzdW1lKCk7Ci0KLXByaXZhdGU6Ci0gICAgRE9NVGltZXIoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIFNjaGVkdWxlZEFjdGlvbiosIGludCB0aW1lb3V0LCBib29sIHNpbmdsZVNob3QpOwot
ICAgIHZpcnR1YWwgdm9pZCBmaXJlZCgpOwotCi0gICAgaW50IG1fdGltZW91dElkOwotICAgIGlu
dCBtX25lc3RpbmdMZXZlbDsKLSAgICBPd25QdHI8U2NoZWR1bGVkQWN0aW9uPiBtX2FjdGlvbjsK
LSAgICBkb3VibGUgbV9uZXh0RmlyZUludGVydmFsOwotICAgIGRvdWJsZSBtX3JlcGVhdEludGVy
dmFsOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRE9NVGltZXJf
aAotCkluZGV4OiBXZWJDb3JlL3BhZ2UvRE9NVGltZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGFnZS9ET01UaW1lci5jcHAJKHJldmlzaW9uIDQwMjAxKQkoZnJvbSBXZWJDb3JlL2JpbmRp
bmdzL2pzL0RPTVRpbWVyLmNwcDo0MDIwMSkKKysrIFdlYkNvcmUvcGFnZS9ET01UaW1lci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiRE9NVGltZXIuaCIKKworI2luY2x1ZGUgIkRvY3VtZW50Lmgi
CisjaW5jbHVkZSAiU2NoZWR1bGVkQWN0aW9uLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgorCit1c2luZyBuYW1lc3BhY2Ugc3RkOworCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK3N0YXRpYyBjb25zdCBpbnQgbWF4VGltZXJOZXN0aW5nTGV2ZWwgPSA1Oworc3RhdGljIGNv
bnN0IGRvdWJsZSBvbmVNaWxsaXNlY29uZCA9IDAuMDAxOworc3RhdGljIGNvbnN0IGRvdWJsZSBt
aW5UaW1lckludGVydmFsID0gMC4wMTA7IC8vIDEwIG1pbGxpc2Vjb25kcworCitzdGF0aWMgaW50
IHRpbWVyTmVzdGluZ0xldmVsID0gMDsKKworRE9NVGltZXI6OkRPTVRpbWVyKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIFNjaGVkdWxlZEFjdGlvbiogYWN0aW9uLCBpbnQgdGltZW91
dCwgYm9vbCBzaW5nbGVTaG90KQorICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQsIHRoaXMp
CisgICAgLCBtX2FjdGlvbihhY3Rpb24pCisgICAgLCBtX25leHRGaXJlSW50ZXJ2YWwoMCkKKyAg
ICAsIG1fcmVwZWF0SW50ZXJ2YWwoMCkKK3sKKyAgICBzdGF0aWMgaW50IGxhc3RVc2VkVGltZW91
dElkID0gMDsKKyAgICArK2xhc3RVc2VkVGltZW91dElkOworICAgIC8vIEF2b2lkIHdyYXBhcm91
bmQgZ29pbmcgbmVnYXRpdmUgb24gdXMuCisgICAgaWYgKGxhc3RVc2VkVGltZW91dElkIDw9IDAp
CisgICAgICAgIGxhc3RVc2VkVGltZW91dElkID0gMTsKKyAgICBtX3RpbWVvdXRJZCA9IGxhc3RV
c2VkVGltZW91dElkOworICAgIAorICAgIG1fbmVzdGluZ0xldmVsID0gdGltZXJOZXN0aW5nTGV2
ZWwgKyAxOworCisgICAgLy8gRklYTUU6IE1vdmUgdGhlIHRpbWVvdXQgbWFwIGFuZCBBUEkgdG8g
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCB0byBiZSBhYmxlCisgICAgLy8gdG8gY3JlYXRlIHRpbWVv
dXRzIGZyb20gV29ya2Vycy4KKyAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpICYm
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNEb2N1bWVudCgpKTsKKyAgICBzdGF0aWNfY2Fz
dDxEb2N1bWVudCo+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSktPmFkZFRpbWVvdXQobV90aW1l
b3V0SWQsIHRoaXMpOworCisgICAgZG91YmxlIGludGVydmFsTWlsbGlzZWNvbmRzID0gbWF4KG9u
ZU1pbGxpc2Vjb25kLCB0aW1lb3V0ICogb25lTWlsbGlzZWNvbmQpOworCisgICAgLy8gVXNlIGEg
bWluaW11bSBpbnRlcnZhbCBvZiAxMCBtcyB0byBtYXRjaCBvdGhlciBicm93c2VycywgYnV0IG9u
bHkgb25jZSB3ZSd2ZQorICAgIC8vIG5lc3RlZCBlbm91Z2ggdG8gbm90aWNlIHRoYXQgd2UncmUg
cmVwZWF0aW5nLgorICAgIC8vIEZhc3RlciB0aW1lcnMgbWlnaHQgYmUgImJldHRlciIsIGJ1dCB0
aGV5J3JlIGluY29tcGF0aWJsZS4KKyAgICBpZiAoaW50ZXJ2YWxNaWxsaXNlY29uZHMgPCBtaW5U
aW1lckludGVydmFsICYmIG1fbmVzdGluZ0xldmVsID49IG1heFRpbWVyTmVzdGluZ0xldmVsKQor
ICAgICAgICBpbnRlcnZhbE1pbGxpc2Vjb25kcyA9IG1pblRpbWVySW50ZXJ2YWw7CisgICAgaWYg
KHNpbmdsZVNob3QpCisgICAgICAgIHN0YXJ0T25lU2hvdChpbnRlcnZhbE1pbGxpc2Vjb25kcyk7
CisgICAgZWxzZQorICAgICAgICBzdGFydFJlcGVhdGluZyhpbnRlcnZhbE1pbGxpc2Vjb25kcyk7
Cit9CisKK0RPTVRpbWVyOjp+RE9NVGltZXIoKQoreworICAgIGlmIChzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkpIHsKKyAgICAgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNE
b2N1bWVudCgpKTsKKyAgICAgICAgc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkpLT5yZW1vdmVUaW1lb3V0KG1fdGltZW91dElkKTsKKyAgICB9Cit9CisgICAg
CitpbnQgRE9NVGltZXI6Omluc3RhbGwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
U2NoZWR1bGVkQWN0aW9uKiBhY3Rpb24sIGludCB0aW1lb3V0LCBib29sIHNpbmdsZVNob3QpCit7
CisgICAgLy8gRE9NVGltZXIgY29uc3RydWN0b3IgbGlua3MgdGhlIG5ldyB0aW1lciBpbnRvIGEg
bGlzdCBvZiBBY3RpdmVET01PYmplY3RzIGhlbGQgYnkgdGhlICdjb250ZXh0Jy4KKyAgICAvLyBU
aGUgdGltZXIgaXMgZGVsZXRlZCB3aGVuIGNvbnRleHQgaXMgZGVsZXRlZCAoRE9NVGltZXI6OmNv
bnRleHREZXN0cm95ZWQpIG9yIGV4cGxpY2l0bHkgdmlhIERPTVRpbWVyOjpyZW1vdmVCeUlkKCks
CisgICAgLy8gb3IgaWYgaXQgaXMgYSBvbmUtdGltZSB0aW1lciBhbmQgaXQgaGFzIGZpcmVkIChE
T01UaW1lcjo6ZmlyZWQpLgorICAgIERPTVRpbWVyKiB0aW1lciA9IG5ldyBET01UaW1lcihjb250
ZXh0LCBhY3Rpb24sIHRpbWVvdXQsIHNpbmdsZVNob3QpOworICAgIHJldHVybiB0aW1lci0+bV90
aW1lb3V0SWQ7Cit9CisKK3ZvaWQgRE9NVGltZXI6OnJlbW92ZUJ5SWQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgaW50IHRpbWVvdXRJZCkKK3sKKyAgICAvLyB0aW1lb3V0IElEcyBo
YXZlIHRvIGJlIHBvc2l0aXZlLCBhbmQgMCBhbmQgLTEgYXJlIHVuc2FmZSB0bworICAgIC8vIGV2
ZW4gbG9vayB1cCBzaW5jZSB0aGV5IGFyZSB0aGUgZW1wdHkgYW5kIGRlbGV0ZWQgdmFsdWUKKyAg
ICAvLyByZXNwZWN0aXZlbHkKKyAgICBpZiAodGltZW91dElkIDw9IDApCisgICAgICAgIHJldHVy
bjsKKyAgICBBU1NFUlQoY29udGV4dCAmJiBjb250ZXh0LT5pc0RvY3VtZW50KCkpOworICAgIGRl
bGV0ZSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQpLT5maW5kVGltZW91dCh0aW1lb3V0
SWQpOworfQorCit2b2lkIERPTVRpbWVyOjpmaXJlZCgpCit7CisgICAgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICB0aW1lck5l
c3RpbmdMZXZlbCA9IG1fbmVzdGluZ0xldmVsOworCisgICAgLy8gU2ltcGxlIGNhc2UgZm9yIG5v
bi1vbmUtc2hvdCB0aW1lcnMuCisgICAgaWYgKGlzQWN0aXZlKCkpIHsKKyAgICAgICAgaWYgKHJl
cGVhdEludGVydmFsKCkgJiYgcmVwZWF0SW50ZXJ2YWwoKSA8IG1pblRpbWVySW50ZXJ2YWwpIHsK
KyAgICAgICAgICAgIG1fbmVzdGluZ0xldmVsKys7CisgICAgICAgICAgICBpZiAobV9uZXN0aW5n
TGV2ZWwgPj0gbWF4VGltZXJOZXN0aW5nTGV2ZWwpCisgICAgICAgICAgICAgICAgYXVnbWVudFJl
cGVhdEludGVydmFsKG1pblRpbWVySW50ZXJ2YWwgLSByZXBlYXRJbnRlcnZhbCgpKTsKKyAgICAg
ICAgfQorICAgICAgICAKKyAgICAgICAgLy8gTm8gYWNjZXNzIHRvIG1lbWJlciB2YXJpYWJsZXMg
YWZ0ZXIgdGhpcyBwb2ludCwgaXQgY2FuIGRlbGV0ZSB0aGUgdGltZXIuCisgICAgICAgIG1fYWN0
aW9uLT5leGVjdXRlKGNvbnRleHQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8g
RGVsZXRlIHRpbWVyIGJlZm9yZSBleGVjdXRpbmcgdGhlIGFjdGlvbiBmb3Igb25lLXNob3QgdGlt
ZXJzLgorICAgIFNjaGVkdWxlZEFjdGlvbiogYWN0aW9uID0gbV9hY3Rpb24ucmVsZWFzZSgpOwor
CisgICAgLy8gTm8gYWNjZXNzIHRvIG1lbWJlciB2YXJpYWJsZXMgYWZ0ZXIgdGhpcyBwb2ludC4K
KyAgICBkZWxldGUgdGhpczsKKyAgICAKKyAgICBhY3Rpb24tPmV4ZWN1dGUoY29udGV4dCk7Cisg
ICAgZGVsZXRlIGFjdGlvbjsKKyAgICB0aW1lck5lc3RpbmdMZXZlbCA9IDA7Cit9CisKK2Jvb2wg
RE9NVGltZXI6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGlzQWN0
aXZlKCk7Cit9CisKK3ZvaWQgRE9NVGltZXI6OmNvbnRleHREZXN0cm95ZWQoKQoreworICAgIEFj
dGl2ZURPTU9iamVjdDo6Y29udGV4dERlc3Ryb3llZCgpOworICAgIGRlbGV0ZSB0aGlzOworfQor
Cit2b2lkIERPTVRpbWVyOjpzdG9wKCkKK3sKKyAgICBUaW1lckJhc2U6OnN0b3AoKTsKKyAgICAv
LyBOZWVkIHRvIHJlbGVhc2UgSlMgb2JqZWN0cyBwb3RlbnRpYWxseSBwcm90ZWN0ZWQgYnkgU2No
ZWR1bGVkQWN0aW9uCisgICAgLy8gYmVjYXVzZSB0aGV5IGNhbiBmb3JtIGNpcmN1bGFyIHJlZmVy
ZW5jZXMgYmFjayB0byB0aGUgU2NyaXB0RXhlY3V0aW9uQ29udGV4dAorICAgIC8vIHdoaWNoIHdp
bGwgY2F1c2UgYSBtZW1vcnkgbGVhay4KKyAgICBtX2FjdGlvbi5jbGVhcigpOworfQorCit2b2lk
IERPTVRpbWVyOjpzdXNwZW5kKCkgCit7IAorICAgIEFTU0VSVChtX25leHRGaXJlSW50ZXJ2YWwg
PT0gMCAmJiBtX3JlcGVhdEludGVydmFsID09IDApOyAKKyAgICBtX25leHRGaXJlSW50ZXJ2YWwg
PSBuZXh0RmlyZUludGVydmFsKCk7CisgICAgbV9yZXBlYXRJbnRlcnZhbCA9IHJlcGVhdEludGVy
dmFsKCk7CisgICAgVGltZXJCYXNlOjpzdG9wKCk7Cit9IAorIAordm9pZCBET01UaW1lcjo6cmVz
dW1lKCkgCit7IAorICAgIHN0YXJ0KG1fbmV4dEZpcmVJbnRlcnZhbCwgbV9yZXBlYXRJbnRlcnZh
bCk7CisgICAgbV9uZXh0RmlyZUludGVydmFsID0gMDsKKyAgICBtX3JlcGVhdEludGVydmFsID0g
MDsKK30gCisgCisgCitib29sIERPTVRpbWVyOjpjYW5TdXNwZW5kKCkgY29uc3QgCit7IAorICAg
IHJldHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3Jl
L3BhZ2UvRE9NVGltZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRE9NVGltZXIuaAko
cmV2aXNpb24gNDAyMDEpCShmcm9tIFdlYkNvcmUvYmluZGluZ3MvanMvRE9NVGltZXIuaDo0MDIw
MSkKKysrIFdlYkNvcmUvcGFnZS9ET01UaW1lci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICoKKyAqLworCisjaWZuZGVmIERPTVRpbWVyX2gKKyNkZWZpbmUgRE9NVGltZXJf
aAorCisjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiVGltZXIuaCIKKyNp
bmNsdWRlIDx3dGYvT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2No
ZWR1bGVkQWN0aW9uOworCitjbGFzcyBET01UaW1lciA6IHB1YmxpYyBUaW1lckJhc2UsIHB1Ymxp
YyBBY3RpdmVET01PYmplY3QgeworcHVibGljOgorICAgIHZpcnR1YWwgfkRPTVRpbWVyKCk7Cisg
ICAgLy8gQ3JlYXRlcyBhIG5ldyB0aW1lciBvd25lZCBieSBzcGVjaWZpZWQgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCwgc3RhcnRzIGl0CisgICAgLy8gYW5kIHJldHVybnMgaXRzIElkLgorICAgIHN0
YXRpYyBpbnQgaW5zdGFsbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgU2NoZWR1bGVkQWN0aW9u
KiwgaW50IHRpbWVvdXQsIGJvb2wgc2luZ2xlU2hvdCk7CisgICAgc3RhdGljIHZvaWQgcmVtb3Zl
QnlJZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgaW50IHRpbWVvdXRJZCk7CisKKyAgICAvLyBB
Y3RpdmVET01PYmplY3QKKyAgICB2aXJ0dWFsIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29u
c3Q7CisgICAgdmlydHVhbCB2b2lkIGNvbnRleHREZXN0cm95ZWQoKTsKKyAgICB2aXJ0dWFsIHZv
aWQgc3RvcCgpOworICAgIHZpcnR1YWwgYm9vbCBjYW5TdXNwZW5kKCkgY29uc3Q7CisgICAgdmly
dHVhbCB2b2lkIHN1c3BlbmQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lKCk7CisKK3ByaXZh
dGU6CisgICAgRE9NVGltZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFNjaGVkdWxlZEFjdGlv
biosIGludCB0aW1lb3V0LCBib29sIHNpbmdsZVNob3QpOworICAgIHZpcnR1YWwgdm9pZCBmaXJl
ZCgpOworCisgICAgaW50IG1fdGltZW91dElkOworICAgIGludCBtX25lc3RpbmdMZXZlbDsKKyAg
ICBPd25QdHI8U2NoZWR1bGVkQWN0aW9uPiBtX2FjdGlvbjsKKyAgICBkb3VibGUgbV9uZXh0Rmly
ZUludGVydmFsOworICAgIGRvdWJsZSBtX3JlcGVhdEludGVydmFsOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRE9NVGltZXJfaAorCg==
</data>
<flag name="review"
          id="12976"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>