<?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>30800</bug_id>
          
          <creation_ts>2009-10-26 17:38:43 -0700</creation_ts>
          <short_desc>Cache recently computed date data</short_desc>
          <delta_ts>2009-10-27 15:21:16 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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="Geoffrey Garen">ggaren</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>158041</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2009-10-26 17:38:43 -0700</bug_when>
    <thetext>Patch coming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>158042</commentid>
    <comment_count>1</comment_count>
      <attachid>41921</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2009-10-26 17:39:13 -0700</bug_when>
    <thetext>Created attachment 41921
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>158046</commentid>
    <comment_count>2</comment_count>
      <attachid>41921</attachid>
    <who name="">mitz</who>
    <bug_when>2009-10-26 17:43:36 -0700</bug_when>
    <thetext>Comment on attachment 41921
patch

This patch is missing the new files (they’re also not listed in the change log).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>158048</commentid>
    <comment_count>3</comment_count>
      <attachid>41921</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-10-26 17:47:30 -0700</bug_when>
    <thetext>Comment on attachment 41921
patch

&gt; -        bool getGregorianDateTime(bool outputIsUTC, WTF::GregorianDateTime&amp;) const;
&gt; +        bool getGregorianDateTime(ExecState* exec, bool outputIsUTC, WTF::GregorianDateTime&amp;) const;

No need for the argument name &quot;exec&quot; here.

You forgot to &quot;svn add&quot; the new files so I could not review them. review- because this is not a complete patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>158306</commentid>
    <comment_count>4</comment_count>
      <attachid>41973</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2009-10-27 12:07:28 -0700</bug_when>
    <thetext>Created attachment 41973
patch - now with 100% more new files!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>158389</commentid>
    <comment_count>5</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2009-10-27 15:21:16 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/50174</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41921</attachid>
            <date>2009-10-26 17:39:13 -0700</date>
            <delta_ts>2009-10-27 12:07:28 -0700</delta_ts>
            <desc>patch</desc>
            <filename>ro.txt</filename>
            <type>text/plain</type>
            <size>24482</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDUwMDk5KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTUgQEAKKzIwMDktMTAtMjYgIEdlb2ZmcmV5
IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MzA4MDAKKyAgICAgICAgQ2FjaGUgcmVjZW50bHkgY29tcHV0ZWQgZGF0ZSBkYXRhLgorICAg
ICAgICAKKyAgICAgICAgU3VuU3BpZGVyIHJlcG9ydHMgYSB+MC41JSBzcGVlZHVwLCBtb3N0bHkg
ZnJvbSBkYXRlLWZvcm1hdC10b2Z0ZS5qcy4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgor
ICAgICAgICAqIEphdmFTY3JpcHRDb3JlLmd5cGk6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
dmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvajoKKyAgICAgICAgKiBK
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGRlZCBuZXcgZmlsZS4K
KworICAgICAgICAqIHJ1bnRpbWUvRGF0ZUluc3RhbmNlLmNwcDoKKyAgICAgICAgKEpTQzo6RGF0
ZUluc3RhbmNlOjpEYXRlSW5zdGFuY2UpOgorICAgICAgICAoSlNDOjpEYXRlSW5zdGFuY2U6Omdl
dEdyZWdvcmlhbkRhdGVUaW1lKTogVXNlIHRoZSBzaGFyZWQgY2FjaGUuCisKKyAgICAgICAgKiBy
dW50aW1lL0RhdGVJbnN0YW5jZS5oOiBSZW5hbWVkIG1fY2FjaGUgdG8gbV9kYXRhLCB0byBhdm9p
ZCB0aGUgY29uZnVzaW9uCisgICAgICAgIG9mIGEgImNhY2hlIGNhY2hlIi4KKworICAgICAgICAq
IHJ1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmZvcm1hdExvY2FsZURh
dGUpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jVG9TdHJpbmcpOgorICAgICAgICAoSlND
OjpkYXRlUHJvdG9GdW5jVG9VVENTdHJpbmcpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5j
VG9JU09TdHJpbmcpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jVG9EYXRlU3RyaW5nKToK
KyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY1RvVGltZVN0cmluZyk6CisgICAgICAgIChKU0M6
OmRhdGVQcm90b0Z1bmNHZXRGdWxsWWVhcik6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNH
ZXRVVENGdWxsWWVhcik6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNUb0dNVFN0cmluZyk6
CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXRNb250aCk6CisgICAgICAgIChKU0M6OmRh
dGVQcm90b0Z1bmNHZXRVVENNb250aCk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXRE
YXRlKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY0dldFVUQ0RhdGUpOgorICAgICAgICAo
SlNDOjpkYXRlUHJvdG9GdW5jR2V0RGF5KToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY0dl
dFVUQ0RheSk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXRIb3Vycyk6CisgICAgICAg
IChKU0M6OmRhdGVQcm90b0Z1bmNHZXRVVENIb3Vycyk6CisgICAgICAgIChKU0M6OmRhdGVQcm90
b0Z1bmNHZXRNaW51dGVzKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY0dldFVUQ01pbnV0
ZXMpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jR2V0U2Vjb25kcyk6CisgICAgICAgIChK
U0M6OmRhdGVQcm90b0Z1bmNHZXRVVENTZWNvbmRzKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3Rv
RnVuY0dldFRpbWV6b25lT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6c2V0TmV3VmFsdWVGcm9tVGlt
ZUFyZ3MpOgorICAgICAgICAoSlNDOjpzZXROZXdWYWx1ZUZyb21EYXRlQXJncyk6CisgICAgICAg
IChKU0M6OmRhdGVQcm90b0Z1bmNTZXRZZWFyKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVu
Y0dldFllYXIpOiBQYXNzIGFuIEV4ZWNTdGF0ZSB0byB0aGVzZSBmdW5jdGlvbnMsIHNvIHRoZXkK
KyAgICAgICAgY2FuIGFjY2VzcyB0aGUgRGF0ZUluc3RhbmNlQ2FjaGUuCisKKyAgICAgICAgKiBy
dW50aW1lL0pTR2xvYmFsRGF0YS5oOiBLZWVwIGEgRGF0ZUluc3RhbmNlQ2FjaGUuCisKIDIwMDkt
MTAtMjYgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29nbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUu
YW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0JKHJldmlzaW9u
IDUwMDk5KQorKysgSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkK
QEAgLTM5MCw2ICszOTAsNyBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlKYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0RhdGVDb252ZXJzaW9uLmggXAogCUphdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRGF0ZUluc3RhbmNlLmNwcCBcCiAJSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFu
Y2UuaCBcCisJSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2VDYWNoZS5oIFwKIAlK
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwIFwKIAlKYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuaCBcCiAJSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJv
ci5jcHAgXApJbmRleDogSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5neXBpCShyZXZpc2lvbiA1MDA5
OSkKKysrIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkK
QEAgLTE5NCw2ICsxOTQsNyBAQAogICAgICAgICAgICAgJ3J1bnRpbWUvRGF0ZUNvbnZlcnNpb24u
aCcsCiAgICAgICAgICAgICAncnVudGltZS9EYXRlSW5zdGFuY2UuY3BwJywKICAgICAgICAgICAg
ICdydW50aW1lL0RhdGVJbnN0YW5jZS5oJywKKyAgICAgICAgICAgICdydW50aW1lL0RhdGVJbnN0
YW5jZUNhY2hlLmgnLAogICAgICAgICAgICAgJ3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAnLAog
ICAgICAgICAgICAgJ3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5oJywKICAgICAgICAgICAgICdydW50
aW1lL0Vycm9yLmNwcCcsCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3By
b2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3Byb2oJKHJldmlzaW9uIDUwMDk5KQorKysgSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagkod29y
a2luZyBjb3B5KQpAQCAtNjY1LDYgKzY2NSwxMCBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJ
PEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxydW50aW1lXERhdGVJbnN0YW5jZUNhY2hl
LmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIu
LlwuLlxydW50aW1lXERhdGVQcm90b3R5cGUuY3BwIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KSW5k
ZXg6IEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gNTAwOTkpCisrKyBKYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0x
NTcsNiArMTU3LDcgQEAKIAkJMTQ4RjIxQjcxMDdFQzU0NzAwNDJFQzJDIC8qIE5vZGVzLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2OTJBODZEMDI1
NTU5N0QwMUZGNjBGNyAvKiBOb2Rlcy5jcHAgKi87IH07CiAJCTE0OEYyMUJDMTA3RUM1NEQwMDQy
RUMyQyAvKiBQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTNGMEIzQTkwOUJCNERDMDAwNjhGQ0UzIC8qIFBhcnNlci5jcHAgKi87IH07CiAJ
CTE0OTU1OUVFMEREQ0RERjcwMDY0ODA4NyAvKiBEZWJ1Z2dlckNhbGxGcmFtZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDk1NTlFRDBERENEREY3
MDA2NDgwODcgLyogRGVidWdnZXJDYWxsRnJhbWUuY3BwICovOyB9OworCQkxNEExNTYzMjEwOTY2
MzY1MDA2RkEyNjAgLyogRGF0ZUluc3RhbmNlQ2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0QTE1NjMwMTA5NjYzNjUwMDZGQTI2MCAvKiBEYXRl
SW5zdGFuY2VDYWNoZS5oICovOyB9OwogCQkxNEEyM0Q3NTBGNEUxQUJCMDAyM0NEQUQgLyogSklU
U3R1YnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MTRBMjNENkMwRjRFMTlDRTAwMjNDREFEIC8qIEpJVFN0dWJzLmNwcCAqLzsgfTsKIAkJMTRBNDJF
M0YwRjRGNjBFRTAwNTk5MDk5IC8qIFRpbWVvdXRDaGVja2VyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0QTQyRTNEMEY0RjYwRUUwMDU5OTA5OSAv
KiBUaW1lb3V0Q2hlY2tlci5jcHAgKi87IH07CiAJCTE0QTQyRTQwMEY0RjYwRUUwMDU5OTA5OSAv
KiBUaW1lb3V0Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMTRBNDJFM0UwRjRGNjBFRTAwNTk5MDk5IC8qIFRpbWVvdXRDaGVja2VyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTYxNSw2ICs2
MTYsNyBAQAogCQkxNDhDRDFENzEwOENGOTAyMDA4MTYzQzYgLyogSlNDb250ZXh0UmVmUHJpdmF0
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0NvbnRleHRSZWZQcml2YXRl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0OTU1OUVEMEREQ0RERjcwMDY0ODA4
NyAvKiBEZWJ1Z2dlckNhbGxGcmFtZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBEZWJ1Z2dlckNhbGxGcmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTE0OUIyNEZGMEQ4QUY2RDEwMDlDQjhDNyAvKiBSZWdpc3Rlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZWdpc3Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkxNEExNTYzMDEwOTY2MzY1MDA2RkEyNjAgLyogRGF0ZUluc3RhbmNlQ2FjaGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0ZUluc3RhbmNlQ2FjaGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTRBMjNENkMwRjRFMTlDRTAwMjNDREFEIC8qIEpJVFN0
dWJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpJVFN0dWJzLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTRBMzk2QTYwQ0QyOTMzMTAwQjVCNEZG
IC8qIFN5bWJvbFRhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN5bWJv
bFRhYmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0QTQyRTNEMEY0RjYwRUUw
MDU5OTA5OSAvKiBUaW1lb3V0Q2hlY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBUaW1lb3V0Q2hlY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xNDE2LDcgKzE0MTgsNiBAQAogCQk3RUY2RTBCQjBFQjdBMUVDMDA3OUFGQUYgLyogcnVu
dGltZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJQTdG
QjYwNEIxMDNGNUVBQjAwMTdBMjg2IC8qIFByb3BlcnR5RGVzY3JpcHRvci5oICovLAogCQkJCUJD
RjYwNTExMEUyMDNFRjgwMEI5QTY0RCAvKiBBcmdMaXN0LmNwcCAqLywKIAkJCQlCQ0Y2MDUxMjBF
MjAzRUY4MDBCOUE2NEQgLyogQXJnTGlzdC5oICovLAogCQkJCUJDMjU3REU1MEUxRjUxQzUwMDE2
QjZDOSAvKiBBcmd1bWVudHMuY3BwICovLApAQCAtMTQ1MCw2ICsxNDUxLDcgQEAKIAkJCQlEMjEy
MDIyOTBBRDQzMTBDMDBFRDc5QjYgLyogRGF0ZUNvbnZlcnNpb24uaCAqLywKIAkJCQlCQzExNjYw
MDBFMTk5N0IxMDA4MDY2REQgLyogRGF0ZUluc3RhbmNlLmNwcCAqLywKIAkJCQlCQzExNjYwMTBF
MTk5N0IxMDA4MDY2REQgLyogRGF0ZUluc3RhbmNlLmggKi8sCisJCQkJMTRBMTU2MzAxMDk2NjM2
NTAwNkZBMjYwIC8qIERhdGVJbnN0YW5jZUNhY2hlLmggKi8sCiAJCQkJQkNEMjAzNDcwRTE3MTM1
RTAwMkM3RTgyIC8qIERhdGVQcm90b3R5cGUuY3BwICovLAogCQkJCUJDRDIwMzQ4MEUxNzEzNUUw
MDJDN0U4MiAvKiBEYXRlUHJvdG90eXBlLmggKi8sCiAJCQkJQkMzMzdCRUEwRTFCMDBDQjAwNzY5
MThBIC8qIEVycm9yLmNwcCAqLywKQEAgLTE1MTMsNiArMTUxNSw3IEBACiAJCQkJQkMwMkU5QjYw
RTE4NDJGQTAwMEY5Mjk3IC8qIEpTU3RyaW5nLmNwcCAqLywKIAkJCQlGNjkyQTg2MjAyNTU1OTdE
MDFGRjYwRjcgLyogSlNTdHJpbmcuaCAqLywKIAkJCQkxNEFCQjQ1NDA5OUMyQTBGMDBFMkEyNEYg
LyogSlNUeXBlLmggKi8sCisJCQkJNjUwN0QyOTcwRTg3MUU0QTAwRDdEODk2IC8qIEpTVHlwZUlu
Zm8uaCAqLywKIAkJCQlGNjkyQTg4NzAyNTU1OTdEMDFGRjYwRjcgLyogSlNWYWx1ZS5jcHAgKi8s
CiAJCQkJMTRBQkIzNkUwOTlDMDc2NDAwRTJBMjRGIC8qIEpTVmFsdWUuaCAqLywKIAkJCQlCQzIy
QTM5QTBFMTZFMTQ4MDBBRjIxQzggLyogSlNWYXJpYWJsZU9iamVjdC5jcHAgKi8sCkBAIC0xNTIz
LDYgKzE1MjYsOSBAQAogCQkJCUE3RTJFQTY5MEZCNDYwQ0YwMDYwMUYwNiAvKiBMaXRlcmFsUGFy
c2VyLmggKi8sCiAJCQkJRjY5MkE4NjgwMjU1NTk3RDAxRkY2MEY3IC8qIExvb2t1cC5jcHAgKi8s
CiAJCQkJRjY5MkE4NjkwMjU1NTk3RDAxRkY2MEY3IC8qIExvb2t1cC5oICovLAorCQkJCUE3NEIz
NDk4MTAyQTVGOEUwMDMyQUI5OCAvKiBNYXJrU3RhY2suY3BwICovLAorCQkJCUE3Nzk1NThGMTAx
QTc0RDUwMDExNEU1NSAvKiBNYXJrU3RhY2suaCAqLywKKwkJCQlBN0M1MzBFMzEwMkEzODEzMDA1
QkM3NDEgLyogTWFya1N0YWNrUG9zaXguY3BwICovLAogCQkJCUY2OTJBODZBMDI1NTU5N0QwMUZG
NjBGNyAvKiBNYXRoT2JqZWN0LmNwcCAqLywKIAkJCQlGNjkyQTg2QjAyNTU1OTdEMDFGRjYwRjcg
LyogTWF0aE9iamVjdC5oICovLAogCQkJCUJDMDJFOTA4MEUxODM5REIwMDBGOTI5NyAvKiBOYXRp
dmVFcnJvckNvbnN0cnVjdG9yLmNwcCAqLywKQEAgLTE1NDMsNiArMTU0OSw4IEBACiAJCQkJQkMy
NjgwQzkwRTE2RDRFOTAwQTA2RTkyIC8qIE9iamVjdFByb3RvdHlwZS5oICovLAogCQkJCUY2OTJB
ODc3MDI1NTU5N0QwMUZGNjBGNyAvKiBPcGVyYXRpb25zLmNwcCAqLywKIAkJCQlGNjkyQTg3ODAy
NTU1OTdEMDFGRjYwRjcgLyogT3BlcmF0aW9ucy5oICovLAorCQkJCUE3RkI2MEEzMTAzRjdEQzIw
MDE3QTI4NiAvKiBQcm9wZXJ0eURlc2NyaXB0b3IuY3BwICovLAorCQkJCUE3RkI2MDRCMTAzRjVF
QUIwMDE3QTI4NiAvKiBQcm9wZXJ0eURlc2NyaXB0b3IuaCAqLywKIAkJCQlCQzk1NDM3QzBFQkE3
MEZEMDA3MkI2RDMgLyogUHJvcGVydHlNYXBIYXNoVGFibGUuaCAqLywKIAkJCQk2NTQwMEMwRjBB
NjlCQUYyMDA1MDk4ODcgLyogUHJvcGVydHlOYW1lQXJyYXkuY3BwICovLAogCQkJCTY1NDAwQzEw
MEE2OUJBRjIwMDUwOTg4NyAvKiBQcm9wZXJ0eU5hbWVBcnJheS5oICovLApAQCAtMTU4MywxMyAr
MTU5MSw4IEBACiAJCQkJMTRBNDJFM0UwRjRGNjBFRTAwNTk5MDk5IC8qIFRpbWVvdXRDaGVja2Vy
LmggKi8sCiAJCQkJNUQ1MzcyNkQwRTFDNTQ2QjAwMjFFNTQ5IC8qIFRyYWNpbmcuZCAqLywKIAkJ
CQk1RDUzNzI2RTBFMUM1NDg4MDAyMUU1NDkgLyogVHJhY2luZy5oICovLAotCQkJCTY1MDdEMjk3
MEU4NzFFNEEwMEQ3RDg5NiAvKiBKU1R5cGVJbmZvLmggKi8sCiAJCQkJRjY5MkE4ODUwMjU1NTk3
RDAxRkY2MEY3IC8qIFVTdHJpbmcuY3BwICovLAogCQkJCUY2OTJBODg2MDI1NTU5N0QwMUZGNjBG
NyAvKiBVU3RyaW5nLmggKi8sCi0JCQkJQTc3OTU1OEYxMDFBNzRENTAwMTE0RTU1IC8qIE1hcmtT
dGFjay5oICovLAotCQkJCUE3QzUzMEUzMTAyQTM4MTMwMDVCQzc0MSAvKiBNYXJrU3RhY2tQb3Np
eC5jcHAgKi8sCi0JCQkJQTc0QjM0OTgxMDJBNUY4RTAwMzJBQjk4IC8qIE1hcmtTdGFjay5jcHAg
Ki8sCi0JCQkJQTdGQjYwQTMxMDNGN0RDMjAwMTdBMjg2IC8qIFByb3BlcnR5RGVzY3JpcHRvci5j
cHAgKi8sCiAJCQkpOwogCQkJcGF0aCA9IHJ1bnRpbWU7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOwpAQCAtMTk5OCw2ICsyMDAxLDcgQEAKIAkJCQlBN0ZCNjEwMDEwNDBDMzhCMDAxN0EyODYg
LyogUHJvcGVydHlEZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzg3Q0RCOTEwNzEy
QUQ0MDAwNjE0Q0YgLyogSlNPTk9iamVjdC5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0OENE
MUQ4MTA4Q0Y5MDIwMDgxNjNDNiAvKiBKU0NvbnRleHRSZWZQcml2YXRlLmggaW4gSGVhZGVycyAq
LywKKwkJCQkxNEExNTYzMjEwOTY2MzY1MDA2RkEyNjAgLyogRGF0ZUluc3RhbmNlQ2FjaGUuaCBp
biBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwogCQl9OwpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlLmNw
cAkocmV2aXNpb24gNTAwOTkpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJbnN0YW5j
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDU5ICszMiw0MiBAQCB1c2luZyBuYW1lc3BhY2Ug
V1RGOwogCiBuYW1lc3BhY2UgSlNDIHsKIAotc3RydWN0IERhdGVJbnN0YW5jZTo6Q2FjaGUgewot
ICAgIGRvdWJsZSBtX2dyZWdvcmlhbkRhdGVUaW1lQ2FjaGVkRm9yTVM7Ci0gICAgR3JlZ29yaWFu
RGF0ZVRpbWUgbV9jYWNoZWRHcmVnb3JpYW5EYXRlVGltZTsKLSAgICBkb3VibGUgbV9ncmVnb3Jp
YW5EYXRlVGltZVVUQ0NhY2hlZEZvck1TOwotICAgIEdyZWdvcmlhbkRhdGVUaW1lIG1fY2FjaGVk
R3JlZ29yaWFuRGF0ZVRpbWVVVEM7Ci19OwotCiBjb25zdCBDbGFzc0luZm8gRGF0ZUluc3RhbmNl
OjppbmZvID0geyJEYXRlIiwgMCwgMCwgMH07CiAKIERhdGVJbnN0YW5jZTo6RGF0ZUluc3RhbmNl
KE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlKQogICAgIDogSlNXcmFwcGVy
T2JqZWN0KHN0cnVjdHVyZSkKLSAgICAsIG1fY2FjaGUoMCkKIHsKIH0KIAogRGF0ZUluc3RhbmNl
OjpEYXRlSW5zdGFuY2UoRXhlY1N0YXRlKiBleGVjLCBkb3VibGUgdGltZSkKICAgICA6IEpTV3Jh
cHBlck9iamVjdChleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmRhdGVTdHJ1Y3R1cmUoKSkK
LSAgICAsIG1fY2FjaGUoMCkKIHsKICAgICBzZXRJbnRlcm5hbFZhbHVlKGpzTnVtYmVyKGV4ZWMs
IHRpbWVDbGlwKHRpbWUpKSk7CiB9CiAKLURhdGVJbnN0YW5jZTo6fkRhdGVJbnN0YW5jZSgpCiti
b29sIERhdGVJbnN0YW5jZTo6Z2V0R3JlZ29yaWFuRGF0ZVRpbWUoRXhlY1N0YXRlKiBleGVjLCBi
b29sIG91dHB1dElzVVRDLCBHcmVnb3JpYW5EYXRlVGltZSYgdCkgY29uc3QKIHsKLSAgICBkZWxl
dGUgbV9jYWNoZTsKLX0KLQotYm9vbCBEYXRlSW5zdGFuY2U6OmdldEdyZWdvcmlhbkRhdGVUaW1l
KGJvb2wgb3V0cHV0SXNVVEMsIEdyZWdvcmlhbkRhdGVUaW1lJiB0KSBjb25zdAotewotICAgIGlm
ICghbV9jYWNoZSkgewotICAgICAgICBtX2NhY2hlID0gbmV3IENhY2hlOwotICAgICAgICBtX2Nh
Y2hlLT5tX2dyZWdvcmlhbkRhdGVUaW1lQ2FjaGVkRm9yTVMgPSBOYU47Ci0gICAgICAgIG1fY2Fj
aGUtPm1fZ3JlZ29yaWFuRGF0ZVRpbWVVVENDYWNoZWRGb3JNUyA9IE5hTjsKLSAgICB9Ci0KICAg
ICBkb3VibGUgbWlsbGkgPSBpbnRlcm5hbE51bWJlcigpOwogICAgIGlmIChpc25hbihtaWxsaSkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIGlmICghbV9kYXRhKQorICAgICAgICBtX2Rh
dGEgPSBleGVjLT5nbG9iYWxEYXRhKCkuZGF0ZUluc3RhbmNlQ2FjaGUuYWRkKG1pbGxpKTsKKwog
ICAgIGlmIChvdXRwdXRJc1VUQykgewotICAgICAgICBpZiAobV9jYWNoZS0+bV9ncmVnb3JpYW5E
YXRlVGltZVVUQ0NhY2hlZEZvck1TICE9IG1pbGxpKSB7Ci0gICAgICAgICAgICBXVEY6Om1zVG9H
cmVnb3JpYW5EYXRlVGltZShpbnRlcm5hbE51bWJlcigpLCB0cnVlLCBtX2NhY2hlLT5tX2NhY2hl
ZEdyZWdvcmlhbkRhdGVUaW1lVVRDKTsKLSAgICAgICAgICAgIG1fY2FjaGUtPm1fZ3JlZ29yaWFu
RGF0ZVRpbWVVVENDYWNoZWRGb3JNUyA9IG1pbGxpOworICAgICAgICBpZiAobV9kYXRhLT5tX2dy
ZWdvcmlhbkRhdGVUaW1lVVRDQ2FjaGVkRm9yTVMgIT0gbWlsbGkpIHsKKyAgICAgICAgICAgIFdU
Rjo6bXNUb0dyZWdvcmlhbkRhdGVUaW1lKGludGVybmFsTnVtYmVyKCksIHRydWUsIG1fZGF0YS0+
bV9jYWNoZWRHcmVnb3JpYW5EYXRlVGltZVVUQyk7CisgICAgICAgICAgICBtX2RhdGEtPm1fZ3Jl
Z29yaWFuRGF0ZVRpbWVVVENDYWNoZWRGb3JNUyA9IG1pbGxpOwogICAgICAgICB9Ci0gICAgICAg
IHQuY29weUZyb20obV9jYWNoZS0+bV9jYWNoZWRHcmVnb3JpYW5EYXRlVGltZVVUQyk7CisgICAg
ICAgIHQuY29weUZyb20obV9kYXRhLT5tX2NhY2hlZEdyZWdvcmlhbkRhdGVUaW1lVVRDKTsKICAg
ICB9IGVsc2UgewotICAgICAgICBpZiAobV9jYWNoZS0+bV9ncmVnb3JpYW5EYXRlVGltZUNhY2hl
ZEZvck1TICE9IG1pbGxpKSB7Ci0gICAgICAgICAgICBXVEY6Om1zVG9HcmVnb3JpYW5EYXRlVGlt
ZShpbnRlcm5hbE51bWJlcigpLCBmYWxzZSwgbV9jYWNoZS0+bV9jYWNoZWRHcmVnb3JpYW5EYXRl
VGltZSk7Ci0gICAgICAgICAgICBtX2NhY2hlLT5tX2dyZWdvcmlhbkRhdGVUaW1lQ2FjaGVkRm9y
TVMgPSBtaWxsaTsKKyAgICAgICAgaWYgKG1fZGF0YS0+bV9ncmVnb3JpYW5EYXRlVGltZUNhY2hl
ZEZvck1TICE9IG1pbGxpKSB7CisgICAgICAgICAgICBXVEY6Om1zVG9HcmVnb3JpYW5EYXRlVGlt
ZShpbnRlcm5hbE51bWJlcigpLCBmYWxzZSwgbV9kYXRhLT5tX2NhY2hlZEdyZWdvcmlhbkRhdGVU
aW1lKTsKKyAgICAgICAgICAgIG1fZGF0YS0+bV9ncmVnb3JpYW5EYXRlVGltZUNhY2hlZEZvck1T
ID0gbWlsbGk7CiAgICAgICAgIH0KLSAgICAgICAgdC5jb3B5RnJvbShtX2NhY2hlLT5tX2NhY2hl
ZEdyZWdvcmlhbkRhdGVUaW1lKTsKKyAgICAgICAgdC5jb3B5RnJvbShtX2RhdGEtPm1fY2FjaGVk
R3JlZ29yaWFuRGF0ZVRpbWUpOwogICAgIH0KLSAgICAKKwogICAgIHJldHVybiB0cnVlOwogfQog
CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJbnN0YW5jZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlLmgJKHJldmlzaW9uIDUwMDk5
KQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2UuaAkod29ya2luZyBjb3B5
KQpAQCAtMzMsNyArMzMsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwdWJsaWM6CiAgICAgICAg
IERhdGVJbnN0YW5jZShFeGVjU3RhdGUqLCBkb3VibGUpOwogICAgICAgICBleHBsaWNpdCBEYXRl
SW5zdGFuY2UoTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPik7Ci0gICAgICAgIHZpcnR1YWwg
fkRhdGVJbnN0YW5jZSgpOwogCiAgICAgICAgIGRvdWJsZSBpbnRlcm5hbE51bWJlcigpIGNvbnN0
IHsgcmV0dXJuIGludGVybmFsVmFsdWUoKS51bmNoZWNrZWRHZXROdW1iZXIoKTsgfQogCkBAIC00
NCw3ICs0Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyBKU19FWFBPUlRE
QVRBIGNvbnN0IENsYXNzSW5mbyBpbmZvOwogCi0gICAgICAgIGJvb2wgZ2V0R3JlZ29yaWFuRGF0
ZVRpbWUoYm9vbCBvdXRwdXRJc1VUQywgV1RGOjpHcmVnb3JpYW5EYXRlVGltZSYpIGNvbnN0Owor
ICAgICAgICBib29sIGdldEdyZWdvcmlhbkRhdGVUaW1lKEV4ZWNTdGF0ZSogZXhlYywgYm9vbCBv
dXRwdXRJc1VUQywgV1RGOjpHcmVnb3JpYW5EYXRlVGltZSYpIGNvbnN0OwogCiAgICAgICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTVmFsdWUgcHJvdG90
eXBlKQogICAgICAgICB7CkBAIC01Nyw5ICs1Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHBy
aXZhdGU6CiAgICAgICAgIHZpcnR1YWwgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8oKSBjb25z
dCB7IHJldHVybiAmaW5mbzsgfQogCi0KLSAgICAgICAgc3RydWN0IENhY2hlOwotICAgICAgICBt
dXRhYmxlIENhY2hlKiBtX2NhY2hlOworICAgICAgICBtdXRhYmxlIFJlZlB0cjxEYXRlSW5zdGFu
Y2VEYXRhPiBtX2RhdGE7CiAgICAgfTsKIAogICAgIERhdGVJbnN0YW5jZSogYXNEYXRlSW5zdGFu
Y2UoSlNWYWx1ZSk7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5j
cHAJKHJldmlzaW9uIDUwMDk5KQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90
eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU1LDcgKzI1NSw3IEBAIHN0YXRpYyBKU0NlbGwq
IGZvcm1hdExvY2FsZURhdGUoRXhlY1N0YXQKIHsKICAgICBHcmVnb3JpYW5EYXRlVGltZSBncmVn
b3JpYW5EYXRlVGltZTsKICAgICBjb25zdCBib29sIG91dHB1dElzVVRDID0gZmFsc2U7Ci0gICAg
aWYgKCFkYXRlT2JqZWN0LT5nZXRHcmVnb3JpYW5EYXRlVGltZShvdXRwdXRJc1VUQywgZ3JlZ29y
aWFuRGF0ZVRpbWUpKQorICAgIGlmICghZGF0ZU9iamVjdC0+Z2V0R3JlZ29yaWFuRGF0ZVRpbWUo
ZXhlYywgb3V0cHV0SXNVVEMsIGdyZWdvcmlhbkRhdGVUaW1lKSkKICAgICAgICAgcmV0dXJuIGpz
Tm9udHJpdmlhbFN0cmluZyhleGVjLCAiSW52YWxpZCBEYXRlIik7CiAgICAgcmV0dXJuIGZvcm1h
dExvY2FsZURhdGUoZXhlYywgZ3JlZ29yaWFuRGF0ZVRpbWUsIGZvcm1hdCk7CiB9CkBAIC00MjYs
NyArNDI2LDcgQEAgSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNUb1N0cgogICAg
IERhdGVJbnN0YW5jZSogdGhpc0RhdGVPYmogPSBhc0RhdGVJbnN0YW5jZSh0aGlzVmFsdWUpOyAK
IAogICAgIEdyZWdvcmlhbkRhdGVUaW1lIHQ7Ci0gICAgaWYgKCF0aGlzRGF0ZU9iai0+Z2V0R3Jl
Z29yaWFuRGF0ZVRpbWUob3V0cHV0SXNVVEMsIHQpKQorICAgIGlmICghdGhpc0RhdGVPYmotPmdl
dEdyZWdvcmlhbkRhdGVUaW1lKGV4ZWMsIG91dHB1dElzVVRDLCB0KSkKICAgICAgICAgcmV0dXJu
IGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCAiSW52YWxpZCBEYXRlIik7CiAgICAgcmV0dXJuIGpz
Tm9udHJpdmlhbFN0cmluZyhleGVjLCBmb3JtYXREYXRlKHQpICsgIiAiICsgZm9ybWF0VGltZSh0
LCBvdXRwdXRJc1VUQykpOwogfQpAQCAtNDQxLDcgKzQ0MSw3IEBAIEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBkYXRlUHJvdG9GdW5jVG9VVEMKICAgICBEYXRlSW5zdGFuY2UqIHRoaXNEYXRlT2JqID0g
YXNEYXRlSW5zdGFuY2UodGhpc1ZhbHVlKTsgCiAKICAgICBHcmVnb3JpYW5EYXRlVGltZSB0Owot
ICAgIGlmICghdGhpc0RhdGVPYmotPmdldEdyZWdvcmlhbkRhdGVUaW1lKG91dHB1dElzVVRDLCB0
KSkKKyAgICBpZiAoIXRoaXNEYXRlT2JqLT5nZXRHcmVnb3JpYW5EYXRlVGltZShleGVjLCBvdXRw
dXRJc1VUQywgdCkpCiAgICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywgIklu
dmFsaWQgRGF0ZSIpOwogICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywgZm9ybWF0
RGF0ZVVUQ1ZhcmlhbnQodCkgKyAiICIgKyBmb3JtYXRUaW1lKHQsIG91dHB1dElzVVRDKSk7CiB9
CkBAIC00NTYsNyArNDU2LDcgQEAgSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNU
b0lTTwogICAgIERhdGVJbnN0YW5jZSogdGhpc0RhdGVPYmogPSBhc0RhdGVJbnN0YW5jZSh0aGlz
VmFsdWUpOyAKICAgICAKICAgICBHcmVnb3JpYW5EYXRlVGltZSB0OwotICAgIGlmICghdGhpc0Rh
dGVPYmotPmdldEdyZWdvcmlhbkRhdGVUaW1lKG91dHB1dElzVVRDLCB0KSkKKyAgICBpZiAoIXRo
aXNEYXRlT2JqLT5nZXRHcmVnb3JpYW5EYXRlVGltZShleGVjLCBvdXRwdXRJc1VUQywgdCkpCiAg
ICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywgIkludmFsaWQgRGF0ZSIpOwog
ICAgIC8vIE1heGltdW0gYW1vdW50IG9mIHNwYWNlIHdlIG5lZWQgaW4gYnVmZmVyOiA2IChtYXgu
IGRpZ2l0cyBpbiB5ZWFyKSArIDIgKiA1ICgyIGNoYXJhY3RlcnMgZWFjaCBmb3IgbW9udGgsIGRh
eSwgaG91ciwgbWludXRlLCBzZWNvbmQpICsgNCAoLiArIDMgZGlnaXRzIGZvciBtaWxsaXNlY29u
ZHMpCiAgICAgLy8gNiBmb3IgZm9ybWF0dGluZyBhbmQgb25lIGZvciBudWxsIHRlcm1pbmF0aW9u
ID0gMjcuICBXZSBhZGQgb25lIGV4dHJhIGNoYXJhY3RlciB0byBhbGxvdyB1cyB0byBmb3JjZSBu
dWxsIHRlcm1pbmF0aW9uLgpAQCAtNDc2LDcgKzQ3Niw3IEBAIEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBkYXRlUHJvdG9GdW5jVG9EYXQKICAgICBEYXRlSW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNE
YXRlSW5zdGFuY2UodGhpc1ZhbHVlKTsgCiAKICAgICBHcmVnb3JpYW5EYXRlVGltZSB0OwotICAg
IGlmICghdGhpc0RhdGVPYmotPmdldEdyZWdvcmlhbkRhdGVUaW1lKG91dHB1dElzVVRDLCB0KSkK
KyAgICBpZiAoIXRoaXNEYXRlT2JqLT5nZXRHcmVnb3JpYW5EYXRlVGltZShleGVjLCBvdXRwdXRJ
c1VUQywgdCkpCiAgICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywgIkludmFs
aWQgRGF0ZSIpOwogICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywgZm9ybWF0RGF0
ZSh0KSk7CiB9CkBAIC00OTEsNyArNDkxLDcgQEAgSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQ
cm90b0Z1bmNUb1RpbQogICAgIERhdGVJbnN0YW5jZSogdGhpc0RhdGVPYmogPSBhc0RhdGVJbnN0
YW5jZSh0aGlzVmFsdWUpOyAKIAogICAgIEdyZWdvcmlhbkRhdGVUaW1lIHQ7Ci0gICAgaWYgKCF0
aGlzRGF0ZU9iai0+Z2V0R3JlZ29yaWFuRGF0ZVRpbWUob3V0cHV0SXNVVEMsIHQpKQorICAgIGlm
ICghdGhpc0RhdGVPYmotPmdldEdyZWdvcmlhbkRhdGVUaW1lKGV4ZWMsIG91dHB1dElzVVRDLCB0
KSkKICAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCAiSW52YWxpZCBEYXRl
Iik7CiAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCBmb3JtYXRUaW1lKHQsIG91
dHB1dElzVVRDKSk7CiB9CkBAIC01NDEsNyArNTQxLDcgQEAgSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGRhdGVQcm90b0Z1bmNHZXRGdQogICAgIERhdGVJbnN0YW5jZSogdGhpc0RhdGVPYmogPSBhc0Rh
dGVJbnN0YW5jZSh0aGlzVmFsdWUpOyAKIAogICAgIEdyZWdvcmlhbkRhdGVUaW1lIHQ7Ci0gICAg
aWYgKCF0aGlzRGF0ZU9iai0+Z2V0R3JlZ29yaWFuRGF0ZVRpbWUob3V0cHV0SXNVVEMsIHQpKQor
ICAgIGlmICghdGhpc0RhdGVPYmotPmdldEdyZWdvcmlhbkRhdGVUaW1lKGV4ZWMsIG91dHB1dElz
VVRDLCB0KSkKICAgICAgICAgcmV0dXJuIGpzTmFOKGV4ZWMpOwogICAgIHJldHVybiBqc051bWJl
cihleGVjLCAxOTAwICsgdC55ZWFyKTsKIH0KQEAgLTU1Niw3ICs1NTYsNyBAQCBKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFVUCiAgICAgRGF0ZUluc3RhbmNlKiB0aGlzRGF0
ZU9iaiA9IGFzRGF0ZUluc3RhbmNlKHRoaXNWYWx1ZSk7IAogCiAgICAgR3JlZ29yaWFuRGF0ZVRp
bWUgdDsKLSAgICBpZiAoIXRoaXNEYXRlT2JqLT5nZXRHcmVnb3JpYW5EYXRlVGltZShvdXRwdXRJ
c1VUQywgdCkpCisgICAgaWYgKCF0aGlzRGF0ZU9iai0+Z2V0R3JlZ29yaWFuRGF0ZVRpbWUoZXhl
Yywgb3V0cHV0SXNVVEMsIHQpKQogICAgICAgICByZXR1cm4ganNOYU4oZXhlYyk7CiAgICAgcmV0
dXJuIGpzTnVtYmVyKGV4ZWMsIDE5MDAgKyB0LnllYXIpOwogfQpAQCAtNTcxLDcgKzU3MSw3IEBA
IEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9HTVQKICAgICBEYXRlSW5zdGFu
Y2UqIHRoaXNEYXRlT2JqID0gYXNEYXRlSW5zdGFuY2UodGhpc1ZhbHVlKTsgCiAKICAgICBHcmVn
b3JpYW5EYXRlVGltZSB0OwotICAgIGlmICghdGhpc0RhdGVPYmotPmdldEdyZWdvcmlhbkRhdGVU
aW1lKG91dHB1dElzVVRDLCB0KSkKKyAgICBpZiAoIXRoaXNEYXRlT2JqLT5nZXRHcmVnb3JpYW5E
YXRlVGltZShleGVjLCBvdXRwdXRJc1VUQywgdCkpCiAgICAgICAgIHJldHVybiBqc05vbnRyaXZp
YWxTdHJpbmcoZXhlYywgIkludmFsaWQgRGF0ZSIpOwogICAgIHJldHVybiBqc05vbnRyaXZpYWxT
dHJpbmcoZXhlYywgZm9ybWF0RGF0ZVVUQ1ZhcmlhbnQodCkgKyAiICIgKyBmb3JtYXRUaW1lKHQs
IG91dHB1dElzVVRDKSk7CiB9CkBAIC01ODYsNyArNTg2LDcgQEAgSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGRhdGVQcm90b0Z1bmNHZXRNbwogICAgIERhdGVJbnN0YW5jZSogdGhpc0RhdGVPYmogPSBh
c0RhdGVJbnN0YW5jZSh0aGlzVmFsdWUpOyAKIAogICAgIEdyZWdvcmlhbkRhdGVUaW1lIHQ7Ci0g
ICAgaWYgKCF0aGlzRGF0ZU9iai0+Z2V0R3JlZ29yaWFuRGF0ZVRpbWUob3V0cHV0SXNVVEMsIHQp
KQorICAgIGlmICghdGhpc0RhdGVPYmotPmdldEdyZWdvcmlhbkRhdGVUaW1lKGV4ZWMsIG91dHB1
dElzVVRDLCB0KSkKICAgICAgICAgcmV0dXJuIGpzTmFOKGV4ZWMpOwogICAgIHJldHVybiBqc051
bWJlcihleGVjLCB0Lm1vbnRoKTsKIH0KQEAgLTYwMSw3ICs2MDEsNyBAQCBKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFVUCiAgICAgRGF0ZUluc3RhbmNlKiB0aGlzRGF0ZU9i
aiA9IGFzRGF0ZUluc3RhbmNlKHRoaXNWYWx1ZSk7IAogCiAgICAgR3JlZ29yaWFuRGF0ZVRpbWUg
dDsKLSAgICBpZiAoIXRoaXNEYXRlT2JqLT5nZXRHcmVnb3JpYW5EYXRlVGltZShvdXRwdXRJc1VU
QywgdCkpCisgICAgaWYgKCF0aGlzRGF0ZU9iai0+Z2V0R3JlZ29yaWFuRGF0ZVRpbWUoZXhlYywg
b3V0cHV0SXNVVEMsIHQpKQogICAgICAgICByZXR1cm4ganNOYU4oZXhlYyk7CiAgICAgcmV0dXJu
IGpzTnVtYmVyKGV4ZWMsIHQubW9udGgpOwogfQpAQCAtNjE2LDcgKzYxNiw3IEBAIEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0RGEKICAgICBEYXRlSW5zdGFuY2UqIHRoaXNE
YXRlT2JqID0gYXNEYXRlSW5zdGFuY2UodGhpc1ZhbHVlKTsgCiAKICAgICBHcmVnb3JpYW5EYXRl
VGltZSB0OwotICAgIGlmICghdGhpc0RhdGVPYmotPmdldEdyZWdvcmlhbkRhdGVUaW1lKG91dHB1
dElzVVRDLCB0KSkKKyAgICBpZiAoIXRoaXNEYXRlT2JqLT5nZXRHcmVnb3JpYW5EYXRlVGltZShl
eGVjLCBvdXRwdXRJc1VUQywgdCkpCiAgICAgICAgIHJldHVybiBqc05hTihleGVjKTsKICAgICBy
ZXR1cm4ganNOdW1iZXIoZXhlYywgdC5tb250aERheSk7CiB9CkBAIC02MzEsNyArNjMxLDcgQEAg
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRVVAogICAgIERhdGVJbnN0YW5j
ZSogdGhpc0RhdGVPYmogPSBhc0RhdGVJbnN0YW5jZSh0aGlzVmFsdWUpOyAKIAogICAgIEdyZWdv
cmlhbkRhdGVUaW1lIHQ7Ci0gICAgaWYgKCF0aGlzRGF0ZU9iai0+Z2V0R3JlZ29yaWFuRGF0ZVRp
bWUob3V0cHV0SXNVVEMsIHQpKQorICAgIGlmICghdGhpc0RhdGVPYmotPmdldEdyZWdvcmlhbkRh
dGVUaW1lKGV4ZWMsIG91dHB1dElzVVRDLCB0KSkKICAgICAgICAgcmV0dXJuIGpzTmFOKGV4ZWMp
OwogICAgIHJldHVybiBqc051bWJlcihleGVjLCB0Lm1vbnRoRGF5KTsKIH0KQEAgLTY0Niw3ICs2
NDYsNyBAQCBKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldERhCiAgICAgRGF0
ZUluc3RhbmNlKiB0aGlzRGF0ZU9iaiA9IGFzRGF0ZUluc3RhbmNlKHRoaXNWYWx1ZSk7IAogCiAg
ICAgR3JlZ29yaWFuRGF0ZVRpbWUgdDsKLSAgICBpZiAoIXRoaXNEYXRlT2JqLT5nZXRHcmVnb3Jp
YW5EYXRlVGltZShvdXRwdXRJc1VUQywgdCkpCisgICAgaWYgKCF0aGlzRGF0ZU9iai0+Z2V0R3Jl
Z29yaWFuRGF0ZVRpbWUoZXhlYywgb3V0cHV0SXNVVEMsIHQpKQogICAgICAgICByZXR1cm4ganNO
YU4oZXhlYyk7CiAgICAgcmV0dXJuIGpzTnVtYmVyKGV4ZWMsIHQud2Vla0RheSk7CiB9CkBAIC02
NjEsNyArNjYxLDcgQEAgSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRVVAog
ICAgIERhdGVJbnN0YW5jZSogdGhpc0RhdGVPYmogPSBhc0RhdGVJbnN0YW5jZSh0aGlzVmFsdWUp
OyAKIAogICAgIEdyZWdvcmlhbkRhdGVUaW1lIHQ7Ci0gICAgaWYgKCF0aGlzRGF0ZU9iai0+Z2V0
R3JlZ29yaWFuRGF0ZVRpbWUob3V0cHV0SXNVVEMsIHQpKQorICAgIGlmICghdGhpc0RhdGVPYmot
PmdldEdyZWdvcmlhbkRhdGVUaW1lKGV4ZWMsIG91dHB1dElzVVRDLCB0KSkKICAgICAgICAgcmV0
dXJuIGpzTmFOKGV4ZWMpOwogICAgIHJldHVybiBqc051bWJlcihleGVjLCB0LndlZWtEYXkpOwog
fQpAQCAtNjc2LDcgKzY3Niw3IEBAIEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5j
R2V0SG8KICAgICBEYXRlSW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNEYXRlSW5zdGFuY2UodGhp
c1ZhbHVlKTsgCiAKICAgICBHcmVnb3JpYW5EYXRlVGltZSB0OwotICAgIGlmICghdGhpc0RhdGVP
YmotPmdldEdyZWdvcmlhbkRhdGVUaW1lKG91dHB1dElzVVRDLCB0KSkKKyAgICBpZiAoIXRoaXNE
YXRlT2JqLT5nZXRHcmVnb3JpYW5EYXRlVGltZShleGVjLCBvdXRwdXRJc1VUQywgdCkpCiAgICAg
ICAgIHJldHVybiBqc05hTihleGVjKTsKICAgICByZXR1cm4ganNOdW1iZXIoZXhlYywgdC5ob3Vy
KTsKIH0KQEAgLTY5MSw3ICs2OTEsNyBAQCBKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3Rv
RnVuY0dldFVUCiAgICAgRGF0ZUluc3RhbmNlKiB0aGlzRGF0ZU9iaiA9IGFzRGF0ZUluc3RhbmNl
KHRoaXNWYWx1ZSk7IAogCiAgICAgR3JlZ29yaWFuRGF0ZVRpbWUgdDsKLSAgICBpZiAoIXRoaXNE
YXRlT2JqLT5nZXRHcmVnb3JpYW5EYXRlVGltZShvdXRwdXRJc1VUQywgdCkpCisgICAgaWYgKCF0
aGlzRGF0ZU9iai0+Z2V0R3JlZ29yaWFuRGF0ZVRpbWUoZXhlYywgb3V0cHV0SXNVVEMsIHQpKQog
ICAgICAgICByZXR1cm4ganNOYU4oZXhlYyk7CiAgICAgcmV0dXJuIGpzTnVtYmVyKGV4ZWMsIHQu
aG91cik7CiB9CkBAIC03MDYsNyArNzA2LDcgQEAgSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQ
cm90b0Z1bmNHZXRNaQogICAgIERhdGVJbnN0YW5jZSogdGhpc0RhdGVPYmogPSBhc0RhdGVJbnN0
YW5jZSh0aGlzVmFsdWUpOyAKIAogICAgIEdyZWdvcmlhbkRhdGVUaW1lIHQ7Ci0gICAgaWYgKCF0
aGlzRGF0ZU9iai0+Z2V0R3JlZ29yaWFuRGF0ZVRpbWUob3V0cHV0SXNVVEMsIHQpKQorICAgIGlm
ICghdGhpc0RhdGVPYmotPmdldEdyZWdvcmlhbkRhdGVUaW1lKGV4ZWMsIG91dHB1dElzVVRDLCB0
KSkKICAgICAgICAgcmV0dXJuIGpzTmFOKGV4ZWMpOwogICAgIHJldHVybiBqc051bWJlcihleGVj
LCB0Lm1pbnV0ZSk7CiB9CkBAIC03MjEsNyArNzIxLDcgQEAgSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGRhdGVQcm90b0Z1bmNHZXRVVAogICAgIERhdGVJbnN0YW5jZSogdGhpc0RhdGVPYmogPSBhc0Rh
dGVJbnN0YW5jZSh0aGlzVmFsdWUpOyAKIAogICAgIEdyZWdvcmlhbkRhdGVUaW1lIHQ7Ci0gICAg
aWYgKCF0aGlzRGF0ZU9iai0+Z2V0R3JlZ29yaWFuRGF0ZVRpbWUob3V0cHV0SXNVVEMsIHQpKQor
ICAgIGlmICghdGhpc0RhdGVPYmotPmdldEdyZWdvcmlhbkRhdGVUaW1lKGV4ZWMsIG91dHB1dElz
VVRDLCB0KSkKICAgICAgICAgcmV0dXJuIGpzTmFOKGV4ZWMpOwogICAgIHJldHVybiBqc051bWJl
cihleGVjLCB0Lm1pbnV0ZSk7CiB9CkBAIC03MzYsNyArNzM2LDcgQEAgSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRTZQogICAgIERhdGVJbnN0YW5jZSogdGhpc0RhdGVPYmog
PSBhc0RhdGVJbnN0YW5jZSh0aGlzVmFsdWUpOyAKIAogICAgIEdyZWdvcmlhbkRhdGVUaW1lIHQ7
Ci0gICAgaWYgKCF0aGlzRGF0ZU9iai0+Z2V0R3JlZ29yaWFuRGF0ZVRpbWUob3V0cHV0SXNVVEMs
IHQpKQorICAgIGlmICghdGhpc0RhdGVPYmotPmdldEdyZWdvcmlhbkRhdGVUaW1lKGV4ZWMsIG91
dHB1dElzVVRDLCB0KSkKICAgICAgICAgcmV0dXJuIGpzTmFOKGV4ZWMpOwogICAgIHJldHVybiBq
c051bWJlcihleGVjLCB0LnNlY29uZCk7CiB9CkBAIC03NTEsNyArNzUxLDcgQEAgSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRVVAogICAgIERhdGVJbnN0YW5jZSogdGhpc0Rh
dGVPYmogPSBhc0RhdGVJbnN0YW5jZSh0aGlzVmFsdWUpOyAKIAogICAgIEdyZWdvcmlhbkRhdGVU
aW1lIHQ7Ci0gICAgaWYgKCF0aGlzRGF0ZU9iai0+Z2V0R3JlZ29yaWFuRGF0ZVRpbWUob3V0cHV0
SXNVVEMsIHQpKQorICAgIGlmICghdGhpc0RhdGVPYmotPmdldEdyZWdvcmlhbkRhdGVUaW1lKGV4
ZWMsIG91dHB1dElzVVRDLCB0KSkKICAgICAgICAgcmV0dXJuIGpzTmFOKGV4ZWMpOwogICAgIHJl
dHVybiBqc051bWJlcihleGVjLCB0LnNlY29uZCk7CiB9CkBAIC03OTYsNyArNzk2LDcgQEAgSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRUaQogICAgIERhdGVJbnN0YW5jZSog
dGhpc0RhdGVPYmogPSBhc0RhdGVJbnN0YW5jZSh0aGlzVmFsdWUpOyAKIAogICAgIEdyZWdvcmlh
bkRhdGVUaW1lIHQ7Ci0gICAgaWYgKCF0aGlzRGF0ZU9iai0+Z2V0R3JlZ29yaWFuRGF0ZVRpbWUo
b3V0cHV0SXNVVEMsIHQpKQorICAgIGlmICghdGhpc0RhdGVPYmotPmdldEdyZWdvcmlhbkRhdGVU
aW1lKGV4ZWMsIG91dHB1dElzVVRDLCB0KSkKICAgICAgICAgcmV0dXJuIGpzTmFOKGV4ZWMpOwog
ICAgIHJldHVybiBqc051bWJlcihleGVjLCAtZ210b2Zmc2V0KHQpIC8gbWludXRlc1BlckhvdXIp
OwogfQpAQCAtODMyLDcgKzgzMiw3IEBAIHN0YXRpYyBKU1ZhbHVlIHNldE5ld1ZhbHVlRnJvbVRp
bWVBcmdzKEUKICAgICBkb3VibGUgbXMgPSBtaWxsaSAtIHNlY3MgKiBtc1BlclNlY29uZDsKIAog
ICAgIEdyZWdvcmlhbkRhdGVUaW1lIHQ7Ci0gICAgdGhpc0RhdGVPYmotPmdldEdyZWdvcmlhbkRh
dGVUaW1lKGlucHV0SXNVVEMsIHQpOworICAgIHRoaXNEYXRlT2JqLT5nZXRHcmVnb3JpYW5EYXRl
VGltZShleGVjLCBpbnB1dElzVVRDLCB0KTsKIAogICAgIGlmICghZmlsbFN0cnVjdHVyZXNVc2lu
Z1RpbWVBcmdzKGV4ZWMsIGFyZ3MsIG51bUFyZ3NUb1VzZSwgJm1zLCAmdCkpIHsKICAgICAgICAg
SlNWYWx1ZSByZXN1bHQgPSBqc05hTihleGVjKTsKQEAgLTg2OCw3ICs4NjgsNyBAQCBzdGF0aWMg
SlNWYWx1ZSBzZXROZXdWYWx1ZUZyb21EYXRlQXJncyhFCiAgICAgZWxzZSB7CiAgICAgICAgIGRv
dWJsZSBzZWNzID0gZmxvb3IobWlsbGkgLyBtc1BlclNlY29uZCk7CiAgICAgICAgIG1zID0gbWls
bGkgLSBzZWNzICogbXNQZXJTZWNvbmQ7Ci0gICAgICAgIHRoaXNEYXRlT2JqLT5nZXRHcmVnb3Jp
YW5EYXRlVGltZShpbnB1dElzVVRDLCB0KTsKKyAgICAgICAgdGhpc0RhdGVPYmotPmdldEdyZWdv
cmlhbkRhdGVUaW1lKGV4ZWMsIGlucHV0SXNVVEMsIHQpOwogICAgIH0KICAgICAKICAgICBpZiAo
IWZpbGxTdHJ1Y3R1cmVzVXNpbmdEYXRlQXJncyhleGVjLCBhcmdzLCBudW1BcmdzVG9Vc2UsICZt
cywgJnQpKSB7CkBAIC05OTEsNyArOTkxLDcgQEAgSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQ
cm90b0Z1bmNTZXRZZQogICAgIGVsc2UgeyAgIAogICAgICAgICBkb3VibGUgc2VjcyA9IGZsb29y
KG1pbGxpIC8gbXNQZXJTZWNvbmQpOwogICAgICAgICBtcyA9IG1pbGxpIC0gc2VjcyAqIG1zUGVy
U2Vjb25kOwotICAgICAgICB0aGlzRGF0ZU9iai0+Z2V0R3JlZ29yaWFuRGF0ZVRpbWUob3V0cHV0
SXNVVEMsIHQpOworICAgICAgICB0aGlzRGF0ZU9iai0+Z2V0R3JlZ29yaWFuRGF0ZVRpbWUoZXhl
Yywgb3V0cHV0SXNVVEMsIHQpOwogICAgIH0KICAgICAKICAgICBib29sIG9rID0gdHJ1ZTsKQEAg
LTEwMTgsNyArMTAxOCw3IEBAIEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0
WWUKICAgICBEYXRlSW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNEYXRlSW5zdGFuY2UodGhpc1Zh
bHVlKTsgCiAKICAgICBHcmVnb3JpYW5EYXRlVGltZSB0OwotICAgIGlmICghdGhpc0RhdGVPYmot
PmdldEdyZWdvcmlhbkRhdGVUaW1lKG91dHB1dElzVVRDLCB0KSkKKyAgICBpZiAoIXRoaXNEYXRl
T2JqLT5nZXRHcmVnb3JpYW5EYXRlVGltZShleGVjLCBvdXRwdXRJc1VUQywgdCkpCiAgICAgICAg
IHJldHVybiBqc05hTihleGVjKTsKIAogICAgIC8vIE5PVEU6IElFIHJldHVybnMgdGhlIGZ1bGwg
eWVhciBldmVuIGluIGdldFllYXIuCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxE
YXRhLmgJKHJldmlzaW9uIDUwMDk5KQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bERhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2RlZmluZSBKU0dsb2Jh
bERhdGFfaAogCiAjaW5jbHVkZSAiQ29sbGVjdG9yLmgiCisjaW5jbHVkZSAiRGF0ZUluc3RhbmNl
Q2FjaGUuaCIKICNpbmNsdWRlICJFeGVjdXRhYmxlQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiSklU
U3R1YnMuaCIKICNpbmNsdWRlICJKU1ZhbHVlLmgiCkBAIC0xMTYsNyArMTE3LDggQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIGNvbnN0IE1hcmtlZEFyZ3VtZW50QnVmZmVyKiBlbXB0eUxpc3Q7
IC8vIExpc3RzIGFyZSBzdXBwb3NlZCB0byBiZSBhbGxvY2F0ZWQgb24gdGhlIHN0YWNrIHRvIGhh
dmUgdGhlaXIgZWxlbWVudHMgcHJvcGVybHkgbWFya2VkLCB3aGljaCBpcyBub3QgdGhlIGNhc2Ug
aGVyZSAtIGJ1dCB0aGlzIGxpc3QgaGFzIG5vdGhpbmcgdG8gbWFyay4KICAgICAgICAgU21hbGxT
dHJpbmdzIHNtYWxsU3RyaW5nczsKICAgICAgICAgTnVtZXJpY1N0cmluZ3MgbnVtZXJpY1N0cmlu
Z3M7Ci0KKyAgICAgICAgRGF0ZUluc3RhbmNlQ2FjaGUgZGF0ZUluc3RhbmNlQ2FjaGU7CisgICAg
ICAgIAogI2lmIEVOQUJMRShBU1NFTUJMRVIpCiAgICAgICAgIEV4ZWN1dGFibGVBbGxvY2F0b3Ig
ZXhlY3V0YWJsZUFsbG9jYXRvcjsKICNlbmRpZgo=
</data>
<flag name="review"
          id="23392"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41973</attachid>
            <date>2009-10-27 12:07:28 -0700</date>
            <delta_ts>2009-10-27 14:43:32 -0700</delta_ts>
            <desc>patch - now with 100% more new files!</desc>
            <filename>ro.txt</filename>
            <type>text/plain</type>
            <size>27793</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDUwMDk5KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTUgQEAKKzIwMDktMTAtMjYgIEdlb2ZmcmV5
IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MzA4MDAKKyAgICAgICAgQ2FjaGUgcmVjZW50bHkgY29tcHV0ZWQgZGF0ZSBkYXRhLgorICAg
ICAgICAKKyAgICAgICAgU3VuU3BpZGVyIHJlcG9ydHMgYSB+MC41JSBzcGVlZHVwLCBtb3N0bHkg
ZnJvbSBkYXRlLWZvcm1hdC10b2Z0ZS5qcy4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgor
ICAgICAgICAqIEphdmFTY3JpcHRDb3JlLmd5cGk6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
dmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvajoKKyAgICAgICAgKiBK
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGRlZCBuZXcgZmlsZS4K
KworICAgICAgICAqIHJ1bnRpbWUvRGF0ZUluc3RhbmNlLmNwcDoKKyAgICAgICAgKEpTQzo6RGF0
ZUluc3RhbmNlOjpEYXRlSW5zdGFuY2UpOgorICAgICAgICAoSlNDOjpEYXRlSW5zdGFuY2U6Omdl
dEdyZWdvcmlhbkRhdGVUaW1lKTogVXNlIHRoZSBzaGFyZWQgY2FjaGUuCisKKyAgICAgICAgKiBy
dW50aW1lL0RhdGVJbnN0YW5jZS5oOiBSZW5hbWVkIG1fY2FjaGUgdG8gbV9kYXRhLCB0byBhdm9p
ZCB0aGUgY29uZnVzaW9uCisgICAgICAgIG9mIGEgImNhY2hlIGNhY2hlIi4KKworICAgICAgICAq
IHJ1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmZvcm1hdExvY2FsZURh
dGUpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jVG9TdHJpbmcpOgorICAgICAgICAoSlND
OjpkYXRlUHJvdG9GdW5jVG9VVENTdHJpbmcpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5j
VG9JU09TdHJpbmcpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jVG9EYXRlU3RyaW5nKToK
KyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY1RvVGltZVN0cmluZyk6CisgICAgICAgIChKU0M6
OmRhdGVQcm90b0Z1bmNHZXRGdWxsWWVhcik6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNH
ZXRVVENGdWxsWWVhcik6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNUb0dNVFN0cmluZyk6
CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXRNb250aCk6CisgICAgICAgIChKU0M6OmRh
dGVQcm90b0Z1bmNHZXRVVENNb250aCk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXRE
YXRlKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY0dldFVUQ0RhdGUpOgorICAgICAgICAo
SlNDOjpkYXRlUHJvdG9GdW5jR2V0RGF5KToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY0dl
dFVUQ0RheSk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXRIb3Vycyk6CisgICAgICAg
IChKU0M6OmRhdGVQcm90b0Z1bmNHZXRVVENIb3Vycyk6CisgICAgICAgIChKU0M6OmRhdGVQcm90
b0Z1bmNHZXRNaW51dGVzKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY0dldFVUQ01pbnV0
ZXMpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jR2V0U2Vjb25kcyk6CisgICAgICAgIChK
U0M6OmRhdGVQcm90b0Z1bmNHZXRVVENTZWNvbmRzKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3Rv
RnVuY0dldFRpbWV6b25lT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6c2V0TmV3VmFsdWVGcm9tVGlt
ZUFyZ3MpOgorICAgICAgICAoSlNDOjpzZXROZXdWYWx1ZUZyb21EYXRlQXJncyk6CisgICAgICAg
IChKU0M6OmRhdGVQcm90b0Z1bmNTZXRZZWFyKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVu
Y0dldFllYXIpOiBQYXNzIGFuIEV4ZWNTdGF0ZSB0byB0aGVzZSBmdW5jdGlvbnMsIHNvIHRoZXkK
KyAgICAgICAgY2FuIGFjY2VzcyB0aGUgRGF0ZUluc3RhbmNlQ2FjaGUuCisKKyAgICAgICAgKiBy
dW50aW1lL0pTR2xvYmFsRGF0YS5oOiBLZWVwIGEgRGF0ZUluc3RhbmNlQ2FjaGUuCisKIDIwMDkt
MTAtMjYgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29nbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUu
YW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0JKHJldmlzaW9u
IDUwMDk5KQorKysgSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkK
QEAgLTM5MCw2ICszOTAsNyBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlKYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0RhdGVDb252ZXJzaW9uLmggXAogCUphdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRGF0ZUluc3RhbmNlLmNwcCBcCiAJSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFu
Y2UuaCBcCisJSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2VDYWNoZS5oIFwKIAlK
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwIFwKIAlKYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuaCBcCiAJSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJv
ci5jcHAgXApJbmRleDogSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5neXBpCShyZXZpc2lvbiA1MDA5
OSkKKysrIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkK
QEAgLTE5NCw2ICsxOTQsNyBAQAogICAgICAgICAgICAgJ3J1bnRpbWUvRGF0ZUNvbnZlcnNpb24u
aCcsCiAgICAgICAgICAgICAncnVudGltZS9EYXRlSW5zdGFuY2UuY3BwJywKICAgICAgICAgICAg
ICdydW50aW1lL0RhdGVJbnN0YW5jZS5oJywKKyAgICAgICAgICAgICdydW50aW1lL0RhdGVJbnN0
YW5jZUNhY2hlLmgnLAogICAgICAgICAgICAgJ3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAnLAog
ICAgICAgICAgICAgJ3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5oJywKICAgICAgICAgICAgICdydW50
aW1lL0Vycm9yLmNwcCcsCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3By
b2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3Byb2oJKHJldmlzaW9uIDUwMDk5KQorKysgSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagkod29y
a2luZyBjb3B5KQpAQCAtNjY1LDYgKzY2NSwxMCBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJ
PEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxydW50aW1lXERhdGVJbnN0YW5jZUNhY2hl
LmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIu
LlwuLlxydW50aW1lXERhdGVQcm90b3R5cGUuY3BwIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KSW5k
ZXg6IEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gNTAwOTkpCisrKyBKYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0x
NTcsNiArMTU3LDcgQEAKIAkJMTQ4RjIxQjcxMDdFQzU0NzAwNDJFQzJDIC8qIE5vZGVzLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2OTJBODZEMDI1
NTU5N0QwMUZGNjBGNyAvKiBOb2Rlcy5jcHAgKi87IH07CiAJCTE0OEYyMUJDMTA3RUM1NEQwMDQy
RUMyQyAvKiBQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTNGMEIzQTkwOUJCNERDMDAwNjhGQ0UzIC8qIFBhcnNlci5jcHAgKi87IH07CiAJ
CTE0OTU1OUVFMEREQ0RERjcwMDY0ODA4NyAvKiBEZWJ1Z2dlckNhbGxGcmFtZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDk1NTlFRDBERENEREY3
MDA2NDgwODcgLyogRGVidWdnZXJDYWxsRnJhbWUuY3BwICovOyB9OworCQkxNEExNTYzMjEwOTY2
MzY1MDA2RkEyNjAgLyogRGF0ZUluc3RhbmNlQ2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0QTE1NjMwMTA5NjYzNjUwMDZGQTI2MCAvKiBEYXRl
SW5zdGFuY2VDYWNoZS5oICovOyB9OwogCQkxNEEyM0Q3NTBGNEUxQUJCMDAyM0NEQUQgLyogSklU
U3R1YnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MTRBMjNENkMwRjRFMTlDRTAwMjNDREFEIC8qIEpJVFN0dWJzLmNwcCAqLzsgfTsKIAkJMTRBNDJF
M0YwRjRGNjBFRTAwNTk5MDk5IC8qIFRpbWVvdXRDaGVja2VyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0QTQyRTNEMEY0RjYwRUUwMDU5OTA5OSAv
KiBUaW1lb3V0Q2hlY2tlci5jcHAgKi87IH07CiAJCTE0QTQyRTQwMEY0RjYwRUUwMDU5OTA5OSAv
KiBUaW1lb3V0Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMTRBNDJFM0UwRjRGNjBFRTAwNTk5MDk5IC8qIFRpbWVvdXRDaGVja2VyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTYxNSw2ICs2
MTYsNyBAQAogCQkxNDhDRDFENzEwOENGOTAyMDA4MTYzQzYgLyogSlNDb250ZXh0UmVmUHJpdmF0
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0NvbnRleHRSZWZQcml2YXRl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0OTU1OUVEMEREQ0RERjcwMDY0ODA4
NyAvKiBEZWJ1Z2dlckNhbGxGcmFtZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBEZWJ1Z2dlckNhbGxGcmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTE0OUIyNEZGMEQ4QUY2RDEwMDlDQjhDNyAvKiBSZWdpc3Rlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZWdpc3Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkxNEExNTYzMDEwOTY2MzY1MDA2RkEyNjAgLyogRGF0ZUluc3RhbmNlQ2FjaGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0ZUluc3RhbmNlQ2FjaGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTRBMjNENkMwRjRFMTlDRTAwMjNDREFEIC8qIEpJVFN0
dWJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpJVFN0dWJzLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTRBMzk2QTYwQ0QyOTMzMTAwQjVCNEZG
IC8qIFN5bWJvbFRhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN5bWJv
bFRhYmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0QTQyRTNEMEY0RjYwRUUw
MDU5OTA5OSAvKiBUaW1lb3V0Q2hlY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBUaW1lb3V0Q2hlY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xNDE2LDcgKzE0MTgsNiBAQAogCQk3RUY2RTBCQjBFQjdBMUVDMDA3OUFGQUYgLyogcnVu
dGltZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJQTdG
QjYwNEIxMDNGNUVBQjAwMTdBMjg2IC8qIFByb3BlcnR5RGVzY3JpcHRvci5oICovLAogCQkJCUJD
RjYwNTExMEUyMDNFRjgwMEI5QTY0RCAvKiBBcmdMaXN0LmNwcCAqLywKIAkJCQlCQ0Y2MDUxMjBF
MjAzRUY4MDBCOUE2NEQgLyogQXJnTGlzdC5oICovLAogCQkJCUJDMjU3REU1MEUxRjUxQzUwMDE2
QjZDOSAvKiBBcmd1bWVudHMuY3BwICovLApAQCAtMTQ1MCw2ICsxNDUxLDcgQEAKIAkJCQlEMjEy
MDIyOTBBRDQzMTBDMDBFRDc5QjYgLyogRGF0ZUNvbnZlcnNpb24uaCAqLywKIAkJCQlCQzExNjYw
MDBFMTk5N0IxMDA4MDY2REQgLyogRGF0ZUluc3RhbmNlLmNwcCAqLywKIAkJCQlCQzExNjYwMTBF
MTk5N0IxMDA4MDY2REQgLyogRGF0ZUluc3RhbmNlLmggKi8sCisJCQkJMTRBMTU2MzAxMDk2NjM2
NTAwNkZBMjYwIC8qIERhdGVJbnN0YW5jZUNhY2hlLmggKi8sCiAJCQkJQkNEMjAzNDcwRTE3MTM1
RTAwMkM3RTgyIC8qIERhdGVQcm90b3R5cGUuY3BwICovLAogCQkJCUJDRDIwMzQ4MEUxNzEzNUUw
MDJDN0U4MiAvKiBEYXRlUHJvdG90eXBlLmggKi8sCiAJCQkJQkMzMzdCRUEwRTFCMDBDQjAwNzY5
MThBIC8qIEVycm9yLmNwcCAqLywKQEAgLTE1MTMsNiArMTUxNSw3IEBACiAJCQkJQkMwMkU5QjYw
RTE4NDJGQTAwMEY5Mjk3IC8qIEpTU3RyaW5nLmNwcCAqLywKIAkJCQlGNjkyQTg2MjAyNTU1OTdE
MDFGRjYwRjcgLyogSlNTdHJpbmcuaCAqLywKIAkJCQkxNEFCQjQ1NDA5OUMyQTBGMDBFMkEyNEYg
LyogSlNUeXBlLmggKi8sCisJCQkJNjUwN0QyOTcwRTg3MUU0QTAwRDdEODk2IC8qIEpTVHlwZUlu
Zm8uaCAqLywKIAkJCQlGNjkyQTg4NzAyNTU1OTdEMDFGRjYwRjcgLyogSlNWYWx1ZS5jcHAgKi8s
CiAJCQkJMTRBQkIzNkUwOTlDMDc2NDAwRTJBMjRGIC8qIEpTVmFsdWUuaCAqLywKIAkJCQlCQzIy
QTM5QTBFMTZFMTQ4MDBBRjIxQzggLyogSlNWYXJpYWJsZU9iamVjdC5jcHAgKi8sCkBAIC0xNTIz
LDYgKzE1MjYsOSBAQAogCQkJCUE3RTJFQTY5MEZCNDYwQ0YwMDYwMUYwNiAvKiBMaXRlcmFsUGFy
c2VyLmggKi8sCiAJCQkJRjY5MkE4NjgwMjU1NTk3RDAxRkY2MEY3IC8qIExvb2t1cC5jcHAgKi8s
CiAJCQkJRjY5MkE4NjkwMjU1NTk3RDAxRkY2MEY3IC8qIExvb2t1cC5oICovLAorCQkJCUE3NEIz
NDk4MTAyQTVGOEUwMDMyQUI5OCAvKiBNYXJrU3RhY2suY3BwICovLAorCQkJCUE3Nzk1NThGMTAx
QTc0RDUwMDExNEU1NSAvKiBNYXJrU3RhY2suaCAqLywKKwkJCQlBN0M1MzBFMzEwMkEzODEzMDA1
QkM3NDEgLyogTWFya1N0YWNrUG9zaXguY3BwICovLAogCQkJCUY2OTJBODZBMDI1NTU5N0QwMUZG
NjBGNyAvKiBNYXRoT2JqZWN0LmNwcCAqLywKIAkJCQlGNjkyQTg2QjAyNTU1OTdEMDFGRjYwRjcg
LyogTWF0aE9iamVjdC5oICovLAogCQkJCUJDMDJFOTA4MEUxODM5REIwMDBGOTI5NyAvKiBOYXRp
dmVFcnJvckNvbnN0cnVjdG9yLmNwcCAqLywKQEAgLTE1NDMsNiArMTU0OSw4IEBACiAJCQkJQkMy
NjgwQzkwRTE2RDRFOTAwQTA2RTkyIC8qIE9iamVjdFByb3RvdHlwZS5oICovLAogCQkJCUY2OTJB
ODc3MDI1NTU5N0QwMUZGNjBGNyAvKiBPcGVyYXRpb25zLmNwcCAqLywKIAkJCQlGNjkyQTg3ODAy
NTU1OTdEMDFGRjYwRjcgLyogT3BlcmF0aW9ucy5oICovLAorCQkJCUE3RkI2MEEzMTAzRjdEQzIw
MDE3QTI4NiAvKiBQcm9wZXJ0eURlc2NyaXB0b3IuY3BwICovLAorCQkJCUE3RkI2MDRCMTAzRjVF
QUIwMDE3QTI4NiAvKiBQcm9wZXJ0eURlc2NyaXB0b3IuaCAqLywKIAkJCQlCQzk1NDM3QzBFQkE3
MEZEMDA3MkI2RDMgLyogUHJvcGVydHlNYXBIYXNoVGFibGUuaCAqLywKIAkJCQk2NTQwMEMwRjBB
NjlCQUYyMDA1MDk4ODcgLyogUHJvcGVydHlOYW1lQXJyYXkuY3BwICovLAogCQkJCTY1NDAwQzEw
MEE2OUJBRjIwMDUwOTg4NyAvKiBQcm9wZXJ0eU5hbWVBcnJheS5oICovLApAQCAtMTU4MywxMyAr
MTU5MSw4IEBACiAJCQkJMTRBNDJFM0UwRjRGNjBFRTAwNTk5MDk5IC8qIFRpbWVvdXRDaGVja2Vy
LmggKi8sCiAJCQkJNUQ1MzcyNkQwRTFDNTQ2QjAwMjFFNTQ5IC8qIFRyYWNpbmcuZCAqLywKIAkJ
CQk1RDUzNzI2RTBFMUM1NDg4MDAyMUU1NDkgLyogVHJhY2luZy5oICovLAotCQkJCTY1MDdEMjk3
MEU4NzFFNEEwMEQ3RDg5NiAvKiBKU1R5cGVJbmZvLmggKi8sCiAJCQkJRjY5MkE4ODUwMjU1NTk3
RDAxRkY2MEY3IC8qIFVTdHJpbmcuY3BwICovLAogCQkJCUY2OTJBODg2MDI1NTU5N0QwMUZGNjBG
NyAvKiBVU3RyaW5nLmggKi8sCi0JCQkJQTc3OTU1OEYxMDFBNzRENTAwMTE0RTU1IC8qIE1hcmtT
dGFjay5oICovLAotCQkJCUE3QzUzMEUzMTAyQTM4MTMwMDVCQzc0MSAvKiBNYXJrU3RhY2tQb3Np
eC5jcHAgKi8sCi0JCQkJQTc0QjM0OTgxMDJBNUY4RTAwMzJBQjk4IC8qIE1hcmtTdGFjay5jcHAg
Ki8sCi0JCQkJQTdGQjYwQTMxMDNGN0RDMjAwMTdBMjg2IC8qIFByb3BlcnR5RGVzY3JpcHRvci5j
cHAgKi8sCiAJCQkpOwogCQkJcGF0aCA9IHJ1bnRpbWU7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOwpAQCAtMTk5OCw2ICsyMDAxLDcgQEAKIAkJCQlBN0ZCNjEwMDEwNDBDMzhCMDAxN0EyODYg
LyogUHJvcGVydHlEZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzg3Q0RCOTEwNzEy
QUQ0MDAwNjE0Q0YgLyogSlNPTk9iamVjdC5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0OENE
MUQ4MTA4Q0Y5MDIwMDgxNjNDNiAvKiBKU0NvbnRleHRSZWZQcml2YXRlLmggaW4gSGVhZGVycyAq
LywKKwkJCQkxNEExNTYzMjEwOTY2MzY1MDA2RkEyNjAgLyogRGF0ZUluc3RhbmNlQ2FjaGUuaCBp
biBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwogCQl9OwpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlLmNw
cAkocmV2aXNpb24gNTAwOTkpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJbnN0YW5j
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDU5ICszMiw0MiBAQCB1c2luZyBuYW1lc3BhY2Ug
V1RGOwogCiBuYW1lc3BhY2UgSlNDIHsKIAotc3RydWN0IERhdGVJbnN0YW5jZTo6Q2FjaGUgewot
ICAgIGRvdWJsZSBtX2dyZWdvcmlhbkRhdGVUaW1lQ2FjaGVkRm9yTVM7Ci0gICAgR3JlZ29yaWFu
RGF0ZVRpbWUgbV9jYWNoZWRHcmVnb3JpYW5EYXRlVGltZTsKLSAgICBkb3VibGUgbV9ncmVnb3Jp
YW5EYXRlVGltZVVUQ0NhY2hlZEZvck1TOwotICAgIEdyZWdvcmlhbkRhdGVUaW1lIG1fY2FjaGVk
R3JlZ29yaWFuRGF0ZVRpbWVVVEM7Ci19OwotCiBjb25zdCBDbGFzc0luZm8gRGF0ZUluc3RhbmNl
OjppbmZvID0geyJEYXRlIiwgMCwgMCwgMH07CiAKIERhdGVJbnN0YW5jZTo6RGF0ZUluc3RhbmNl
KE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlKQogICAgIDogSlNXcmFwcGVy
T2JqZWN0KHN0cnVjdHVyZSkKLSAgICAsIG1fY2FjaGUoMCkKIHsKIH0KIAogRGF0ZUluc3RhbmNl
OjpEYXRlSW5zdGFuY2UoRXhlY1N0YXRlKiBleGVjLCBkb3VibGUgdGltZSkKICAgICA6IEpTV3Jh
cHBlck9iamVjdChleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmRhdGVTdHJ1Y3R1cmUoKSkK
LSAgICAsIG1fY2FjaGUoMCkKIHsKICAgICBzZXRJbnRlcm5hbFZhbHVlKGpzTnVtYmVyKGV4ZWMs
IHRpbWVDbGlwKHRpbWUpKSk7CiB9CiAKLURhdGVJbnN0YW5jZTo6fkRhdGVJbnN0YW5jZSgpCiti
b29sIERhdGVJbnN0YW5jZTo6Z2V0R3JlZ29yaWFuRGF0ZVRpbWUoRXhlY1N0YXRlKiBleGVjLCBi
b29sIG91dHB1dElzVVRDLCBHcmVnb3JpYW5EYXRlVGltZSYgdCkgY29uc3QKIHsKLSAgICBkZWxl
dGUgbV9jYWNoZTsKLX0KLQotYm9vbCBEYXRlSW5zdGFuY2U6OmdldEdyZWdvcmlhbkRhdGVUaW1l
KGJvb2wgb3V0cHV0SXNVVEMsIEdyZWdvcmlhbkRhdGVUaW1lJiB0KSBjb25zdAotewotICAgIGlm
ICghbV9jYWNoZSkgewotICAgICAgICBtX2NhY2hlID0gbmV3IENhY2hlOwotICAgICAgICBtX2Nh
Y2hlLT5tX2dyZWdvcmlhbkRhdGVUaW1lQ2FjaGVkRm9yTVMgPSBOYU47Ci0gICAgICAgIG1fY2Fj
aGUtPm1fZ3JlZ29yaWFuRGF0ZVRpbWVVVENDYWNoZWRGb3JNUyA9IE5hTjsKLSAgICB9Ci0KICAg
ICBkb3VibGUgbWlsbGkgPSBpbnRlcm5hbE51bWJlcigpOwogICAgIGlmIChpc25hbihtaWxsaSkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIGlmICghbV9kYXRhKQorICAgICAgICBtX2Rh
dGEgPSBleGVjLT5nbG9iYWxEYXRhKCkuZGF0ZUluc3RhbmNlQ2FjaGUuYWRkKG1pbGxpKTsKKwog
ICAgIGlmIChvdXRwdXRJc1VUQykgewotICAgICAgICBpZiAobV9jYWNoZS0+bV9ncmVnb3JpYW5E
YXRlVGltZVVUQ0NhY2hlZEZvck1TICE9IG1pbGxpKSB7Ci0gICAgICAgICAgICBXVEY6Om1zVG9H
cmVnb3JpYW5EYXRlVGltZShpbnRlcm5hbE51bWJlcigpLCB0cnVlLCBtX2NhY2hlLT5tX2NhY2hl
ZEdyZWdvcmlhbkRhdGVUaW1lVVRDKTsKLSAgICAgICAgICAgIG1fY2FjaGUtPm1fZ3JlZ29yaWFu
RGF0ZVRpbWVVVENDYWNoZWRGb3JNUyA9IG1pbGxpOworICAgICAgICBpZiAobV9kYXRhLT5tX2dy
ZWdvcmlhbkRhdGVUaW1lVVRDQ2FjaGVkRm9yTVMgIT0gbWlsbGkpIHsKKyAgICAgICAgICAgIFdU
Rjo6bXNUb0dyZWdvcmlhbkRhdGVUaW1lKGludGVybmFsTnVtYmVyKCksIHRydWUsIG1fZGF0YS0+
bV9jYWNoZWRHcmVnb3JpYW5EYXRlVGltZVVUQyk7CisgICAgICAgICAgICBtX2RhdGEtPm1fZ3Jl
Z29yaWFuRGF0ZVRpbWVVVENDYWNoZWRGb3JNUyA9IG1pbGxpOwogICAgICAgICB9Ci0gICAgICAg
IHQuY29weUZyb20obV9jYWNoZS0+bV9jYWNoZWRHcmVnb3JpYW5EYXRlVGltZVVUQyk7CisgICAg
ICAgIHQuY29weUZyb20obV9kYXRhLT5tX2NhY2hlZEdyZWdvcmlhbkRhdGVUaW1lVVRDKTsKICAg
ICB9IGVsc2UgewotICAgICAgICBpZiAobV9jYWNoZS0+bV9ncmVnb3JpYW5EYXRlVGltZUNhY2hl
ZEZvck1TICE9IG1pbGxpKSB7Ci0gICAgICAgICAgICBXVEY6Om1zVG9HcmVnb3JpYW5EYXRlVGlt
ZShpbnRlcm5hbE51bWJlcigpLCBmYWxzZSwgbV9jYWNoZS0+bV9jYWNoZWRHcmVnb3JpYW5EYXRl
VGltZSk7Ci0gICAgICAgICAgICBtX2NhY2hlLT5tX2dyZWdvcmlhbkRhdGVUaW1lQ2FjaGVkRm9y
TVMgPSBtaWxsaTsKKyAgICAgICAgaWYgKG1fZGF0YS0+bV9ncmVnb3JpYW5EYXRlVGltZUNhY2hl
ZEZvck1TICE9IG1pbGxpKSB7CisgICAgICAgICAgICBXVEY6Om1zVG9HcmVnb3JpYW5EYXRlVGlt
ZShpbnRlcm5hbE51bWJlcigpLCBmYWxzZSwgbV9kYXRhLT5tX2NhY2hlZEdyZWdvcmlhbkRhdGVU
aW1lKTsKKyAgICAgICAgICAgIG1fZGF0YS0+bV9ncmVnb3JpYW5EYXRlVGltZUNhY2hlZEZvck1T
ID0gbWlsbGk7CiAgICAgICAgIH0KLSAgICAgICAgdC5jb3B5RnJvbShtX2NhY2hlLT5tX2NhY2hl
ZEdyZWdvcmlhbkRhdGVUaW1lKTsKKyAgICAgICAgdC5jb3B5RnJvbShtX2RhdGEtPm1fY2FjaGVk
R3JlZ29yaWFuRGF0ZVRpbWUpOwogICAgIH0KLSAgICAKKwogICAgIHJldHVybiB0cnVlOwogfQog
CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJbnN0YW5jZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlLmgJKHJldmlzaW9uIDUwMDk5
KQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2UuaAkod29ya2luZyBjb3B5
KQpAQCAtMzMsNyArMzMsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwdWJsaWM6CiAgICAgICAg
IERhdGVJbnN0YW5jZShFeGVjU3RhdGUqLCBkb3VibGUpOwogICAgICAgICBleHBsaWNpdCBEYXRl
SW5zdGFuY2UoTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPik7Ci0gICAgICAgIHZpcnR1YWwg
fkRhdGVJbnN0YW5jZSgpOwogCiAgICAgICAgIGRvdWJsZSBpbnRlcm5hbE51bWJlcigpIGNvbnN0
IHsgcmV0dXJuIGludGVybmFsVmFsdWUoKS51bmNoZWNrZWRHZXROdW1iZXIoKTsgfQogCkBAIC00
NCw3ICs0Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyBKU19FWFBPUlRE
QVRBIGNvbnN0IENsYXNzSW5mbyBpbmZvOwogCi0gICAgICAgIGJvb2wgZ2V0R3JlZ29yaWFuRGF0
ZVRpbWUoYm9vbCBvdXRwdXRJc1VUQywgV1RGOjpHcmVnb3JpYW5EYXRlVGltZSYpIGNvbnN0Owor
ICAgICAgICBib29sIGdldEdyZWdvcmlhbkRhdGVUaW1lKEV4ZWNTdGF0ZSosIGJvb2wgb3V0cHV0
SXNVVEMsIFdURjo6R3JlZ29yaWFuRGF0ZVRpbWUmKSBjb25zdDsKIAogICAgICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU1ZhbHVlIHByb3RvdHlwZSkK
ICAgICAgICAgewpAQCAtNTcsOSArNTYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcml2YXRl
OgogICAgICAgICB2aXJ0dWFsIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKCkgY29uc3QgeyBy
ZXR1cm4gJmluZm87IH0KIAotCi0gICAgICAgIHN0cnVjdCBDYWNoZTsKLSAgICAgICAgbXV0YWJs
ZSBDYWNoZSogbV9jYWNoZTsKKyAgICAgICAgbXV0YWJsZSBSZWZQdHI8RGF0ZUluc3RhbmNlRGF0
YT4gbV9kYXRhOwogICAgIH07CiAKICAgICBEYXRlSW5zdGFuY2UqIGFzRGF0ZUluc3RhbmNlKEpT
VmFsdWUpOwpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2VDYWNoZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlQ2FjaGUu
aAkocmV2aXNpb24gMCkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlQ2Fj
aGUuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRGF0ZUluc3RhbmNlQ2FjaGVfaAorI2Rl
ZmluZSBEYXRlSW5zdGFuY2VDYWNoZV9oCisKKyNpbmNsdWRlIDx3dGYvRGF0ZU1hdGguaD4KKyNp
bmNsdWRlIDx3dGYvSGFzaEZ1bmN0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKKyAgICBl
eHRlcm4gY29uc3QgZG91YmxlIE5hTjsKKworICAgIGNsYXNzIERhdGVJbnN0YW5jZURhdGEgOiBw
dWJsaWMgUmVmQ291bnRlZDxEYXRlSW5zdGFuY2VEYXRhPiB7CisgICAgcHVibGljOgorICAgICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxEYXRlSW5zdGFuY2VEYXRhPiBjcmVhdGUoKSB7IHJldHVybiBh
ZG9wdFJlZihuZXcgRGF0ZUluc3RhbmNlRGF0YSk7IH0KKworICAgICAgICBkb3VibGUgbV9ncmVn
b3JpYW5EYXRlVGltZUNhY2hlZEZvck1TOworICAgICAgICBXVEY6OkdyZWdvcmlhbkRhdGVUaW1l
IG1fY2FjaGVkR3JlZ29yaWFuRGF0ZVRpbWU7CisgICAgICAgIGRvdWJsZSBtX2dyZWdvcmlhbkRh
dGVUaW1lVVRDQ2FjaGVkRm9yTVM7CisgICAgICAgIFdURjo6R3JlZ29yaWFuRGF0ZVRpbWUgbV9j
YWNoZWRHcmVnb3JpYW5EYXRlVGltZVVUQzsKKworICAgIHByaXZhdGU6CisgICAgICAgIERhdGVJ
bnN0YW5jZURhdGEoKQorICAgICAgICAgICAgOiBtX2dyZWdvcmlhbkRhdGVUaW1lQ2FjaGVkRm9y
TVMoTmFOKQorICAgICAgICAgICAgLCBtX2dyZWdvcmlhbkRhdGVUaW1lVVRDQ2FjaGVkRm9yTVMo
TmFOKQorICAgICAgICB7CisgICAgICAgIH0KKyAgICB9OworCisgICAgY2xhc3MgRGF0ZUluc3Rh
bmNlQ2FjaGUgeworICAgIHB1YmxpYzoKKyAgICAgICAgRGF0ZUluc3RhbmNlQ2FjaGUoKQorICAg
ICAgICB7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNhY2hlU2l6ZTsgKytp
KQorICAgICAgICAgICAgICAgIG1fY2FjaGVbaV0ua2V5ID0gTmFOOworICAgICAgICB9CisgICAg
ICAgIAorICAgICAgICBEYXRlSW5zdGFuY2VEYXRhKiBhZGQoZG91YmxlIGQpCisgICAgICAgIHsK
KyAgICAgICAgICAgIENhY2hlRW50cnkmIGVudHJ5ID0gbG9va3VwKGQpOworICAgICAgICAgICAg
aWYgKGQgPT0gZW50cnkua2V5KQorICAgICAgICAgICAgICAgIHJldHVybiBlbnRyeS52YWx1ZS5n
ZXQoKTsKKworICAgICAgICAgICAgZW50cnkua2V5ID0gZDsKKyAgICAgICAgICAgIGVudHJ5LnZh
bHVlID0gRGF0ZUluc3RhbmNlRGF0YTo6Y3JlYXRlKCk7CisgICAgICAgICAgICByZXR1cm4gZW50
cnkudmFsdWUuZ2V0KCk7CisgICAgICAgIH0KKworICAgIHByaXZhdGU6CisgICAgICAgIHN0YXRp
YyBjb25zdCBzaXplX3QgY2FjaGVTaXplID0gNjQ7CisKKyAgICAgICAgc3RydWN0IENhY2hlRW50
cnkgeworICAgICAgICAgICAgZG91YmxlIGtleTsKKyAgICAgICAgICAgIFJlZlB0cjxEYXRlSW5z
dGFuY2VEYXRhPiB2YWx1ZTsKKyAgICAgICAgfTsKKworICAgICAgICBDYWNoZUVudHJ5JiBsb29r
dXAoZG91YmxlIGQpIHsgcmV0dXJuIG1fY2FjaGVbV1RGOjpGbG9hdEhhc2g8ZG91YmxlPjo6aGFz
aChkKSAmIChjYWNoZVNpemUgLSAxKV07IH0KKworICAgICAgICBDYWNoZUVudHJ5IG1fY2FjaGVb
Y2FjaGVTaXplXTsKKyAgICB9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIERh
dGVJbnN0YW5jZUNhY2hlX2gKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3Rv
dHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90
eXBlLmNwcAkocmV2aXNpb24gNTAwOTkpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQ
cm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTUsNyArMjU1LDcgQEAgc3RhdGljIEpT
Q2VsbCogZm9ybWF0TG9jYWxlRGF0ZShFeGVjU3RhdAogewogICAgIEdyZWdvcmlhbkRhdGVUaW1l
IGdyZWdvcmlhbkRhdGVUaW1lOwogICAgIGNvbnN0IGJvb2wgb3V0cHV0SXNVVEMgPSBmYWxzZTsK
LSAgICBpZiAoIWRhdGVPYmplY3QtPmdldEdyZWdvcmlhbkRhdGVUaW1lKG91dHB1dElzVVRDLCBn
cmVnb3JpYW5EYXRlVGltZSkpCisgICAgaWYgKCFkYXRlT2JqZWN0LT5nZXRHcmVnb3JpYW5EYXRl
VGltZShleGVjLCBvdXRwdXRJc1VUQywgZ3JlZ29yaWFuRGF0ZVRpbWUpKQogICAgICAgICByZXR1
cm4ganNOb250cml2aWFsU3RyaW5nKGV4ZWMsICJJbnZhbGlkIERhdGUiKTsKICAgICByZXR1cm4g
Zm9ybWF0TG9jYWxlRGF0ZShleGVjLCBncmVnb3JpYW5EYXRlVGltZSwgZm9ybWF0KTsKIH0KQEAg
LTQyNiw3ICs0MjYsNyBAQCBKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1RvU3Ry
CiAgICAgRGF0ZUluc3RhbmNlKiB0aGlzRGF0ZU9iaiA9IGFzRGF0ZUluc3RhbmNlKHRoaXNWYWx1
ZSk7IAogCiAgICAgR3JlZ29yaWFuRGF0ZVRpbWUgdDsKLSAgICBpZiAoIXRoaXNEYXRlT2JqLT5n
ZXRHcmVnb3JpYW5EYXRlVGltZShvdXRwdXRJc1VUQywgdCkpCisgICAgaWYgKCF0aGlzRGF0ZU9i
ai0+Z2V0R3JlZ29yaWFuRGF0ZVRpbWUoZXhlYywgb3V0cHV0SXNVVEMsIHQpKQogICAgICAgICBy
ZXR1cm4ganNOb250cml2aWFsU3RyaW5nKGV4ZWMsICJJbnZhbGlkIERhdGUiKTsKICAgICByZXR1
cm4ganNOb250cml2aWFsU3RyaW5nKGV4ZWMsIGZvcm1hdERhdGUodCkgKyAiICIgKyBmb3JtYXRU
aW1lKHQsIG91dHB1dElzVVRDKSk7CiB9CkBAIC00NDEsNyArNDQxLDcgQEAgSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNUb1VUQwogICAgIERhdGVJbnN0YW5jZSogdGhpc0RhdGVP
YmogPSBhc0RhdGVJbnN0YW5jZSh0aGlzVmFsdWUpOyAKIAogICAgIEdyZWdvcmlhbkRhdGVUaW1l
IHQ7Ci0gICAgaWYgKCF0aGlzRGF0ZU9iai0+Z2V0R3JlZ29yaWFuRGF0ZVRpbWUob3V0cHV0SXNV
VEMsIHQpKQorICAgIGlmICghdGhpc0RhdGVPYmotPmdldEdyZWdvcmlhbkRhdGVUaW1lKGV4ZWMs
IG91dHB1dElzVVRDLCB0KSkKICAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyhleGVj
LCAiSW52YWxpZCBEYXRlIik7CiAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCBm
b3JtYXREYXRlVVRDVmFyaWFudCh0KSArICIgIiArIGZvcm1hdFRpbWUodCwgb3V0cHV0SXNVVEMp
KTsKIH0KQEAgLTQ1Niw3ICs0NTYsNyBAQCBKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3Rv
RnVuY1RvSVNPCiAgICAgRGF0ZUluc3RhbmNlKiB0aGlzRGF0ZU9iaiA9IGFzRGF0ZUluc3RhbmNl
KHRoaXNWYWx1ZSk7IAogICAgIAogICAgIEdyZWdvcmlhbkRhdGVUaW1lIHQ7Ci0gICAgaWYgKCF0
aGlzRGF0ZU9iai0+Z2V0R3JlZ29yaWFuRGF0ZVRpbWUob3V0cHV0SXNVVEMsIHQpKQorICAgIGlm
ICghdGhpc0RhdGVPYmotPmdldEdyZWdvcmlhbkRhdGVUaW1lKGV4ZWMsIG91dHB1dElzVVRDLCB0
KSkKICAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCAiSW52YWxpZCBEYXRl
Iik7CiAgICAgLy8gTWF4aW11bSBhbW91bnQgb2Ygc3BhY2Ugd2UgbmVlZCBpbiBidWZmZXI6IDYg
KG1heC4gZGlnaXRzIGluIHllYXIpICsgMiAqIDUgKDIgY2hhcmFjdGVycyBlYWNoIGZvciBtb250
aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZCkgKyA0ICguICsgMyBkaWdpdHMgZm9yIG1pbGxp
c2Vjb25kcykKICAgICAvLyA2IGZvciBmb3JtYXR0aW5nIGFuZCBvbmUgZm9yIG51bGwgdGVybWlu
YXRpb24gPSAyNy4gIFdlIGFkZCBvbmUgZXh0cmEgY2hhcmFjdGVyIHRvIGFsbG93IHVzIHRvIGZv
cmNlIG51bGwgdGVybWluYXRpb24uCkBAIC00NzYsNyArNDc2LDcgQEAgSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGRhdGVQcm90b0Z1bmNUb0RhdAogICAgIERhdGVJbnN0YW5jZSogdGhpc0RhdGVPYmog
PSBhc0RhdGVJbnN0YW5jZSh0aGlzVmFsdWUpOyAKIAogICAgIEdyZWdvcmlhbkRhdGVUaW1lIHQ7
Ci0gICAgaWYgKCF0aGlzRGF0ZU9iai0+Z2V0R3JlZ29yaWFuRGF0ZVRpbWUob3V0cHV0SXNVVEMs
IHQpKQorICAgIGlmICghdGhpc0RhdGVPYmotPmdldEdyZWdvcmlhbkRhdGVUaW1lKGV4ZWMsIG91
dHB1dElzVVRDLCB0KSkKICAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCAi
SW52YWxpZCBEYXRlIik7CiAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCBmb3Jt
YXREYXRlKHQpKTsKIH0KQEAgLTQ5MSw3ICs0OTEsNyBAQCBKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZGF0ZVByb3RvRnVuY1RvVGltCiAgICAgRGF0ZUluc3RhbmNlKiB0aGlzRGF0ZU9iaiA9IGFzRGF0
ZUluc3RhbmNlKHRoaXNWYWx1ZSk7IAogCiAgICAgR3JlZ29yaWFuRGF0ZVRpbWUgdDsKLSAgICBp
ZiAoIXRoaXNEYXRlT2JqLT5nZXRHcmVnb3JpYW5EYXRlVGltZShvdXRwdXRJc1VUQywgdCkpCisg
ICAgaWYgKCF0aGlzRGF0ZU9iai0+Z2V0R3JlZ29yaWFuRGF0ZVRpbWUoZXhlYywgb3V0cHV0SXNV
VEMsIHQpKQogICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKGV4ZWMsICJJbnZhbGlk
IERhdGUiKTsKICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKGV4ZWMsIGZvcm1hdFRpbWUo
dCwgb3V0cHV0SXNVVEMpKTsKIH0KQEAgLTU0MSw3ICs1NDEsNyBAQCBKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZGF0ZVByb3RvRnVuY0dldEZ1CiAgICAgRGF0ZUluc3RhbmNlKiB0aGlzRGF0ZU9iaiA9
IGFzRGF0ZUluc3RhbmNlKHRoaXNWYWx1ZSk7IAogCiAgICAgR3JlZ29yaWFuRGF0ZVRpbWUgdDsK
LSAgICBpZiAoIXRoaXNEYXRlT2JqLT5nZXRHcmVnb3JpYW5EYXRlVGltZShvdXRwdXRJc1VUQywg
dCkpCisgICAgaWYgKCF0aGlzRGF0ZU9iai0+Z2V0R3JlZ29yaWFuRGF0ZVRpbWUoZXhlYywgb3V0
cHV0SXNVVEMsIHQpKQogICAgICAgICByZXR1cm4ganNOYU4oZXhlYyk7CiAgICAgcmV0dXJuIGpz
TnVtYmVyKGV4ZWMsIDE5MDAgKyB0LnllYXIpOwogfQpAQCAtNTU2LDcgKzU1Niw3IEBAIEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0VVQKICAgICBEYXRlSW5zdGFuY2UqIHRo
aXNEYXRlT2JqID0gYXNEYXRlSW5zdGFuY2UodGhpc1ZhbHVlKTsgCiAKICAgICBHcmVnb3JpYW5E
YXRlVGltZSB0OwotICAgIGlmICghdGhpc0RhdGVPYmotPmdldEdyZWdvcmlhbkRhdGVUaW1lKG91
dHB1dElzVVRDLCB0KSkKKyAgICBpZiAoIXRoaXNEYXRlT2JqLT5nZXRHcmVnb3JpYW5EYXRlVGlt
ZShleGVjLCBvdXRwdXRJc1VUQywgdCkpCiAgICAgICAgIHJldHVybiBqc05hTihleGVjKTsKICAg
ICByZXR1cm4ganNOdW1iZXIoZXhlYywgMTkwMCArIHQueWVhcik7CiB9CkBAIC01NzEsNyArNTcx
LDcgQEAgSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNUb0dNVAogICAgIERhdGVJ
bnN0YW5jZSogdGhpc0RhdGVPYmogPSBhc0RhdGVJbnN0YW5jZSh0aGlzVmFsdWUpOyAKIAogICAg
IEdyZWdvcmlhbkRhdGVUaW1lIHQ7Ci0gICAgaWYgKCF0aGlzRGF0ZU9iai0+Z2V0R3JlZ29yaWFu
RGF0ZVRpbWUob3V0cHV0SXNVVEMsIHQpKQorICAgIGlmICghdGhpc0RhdGVPYmotPmdldEdyZWdv
cmlhbkRhdGVUaW1lKGV4ZWMsIG91dHB1dElzVVRDLCB0KSkKICAgICAgICAgcmV0dXJuIGpzTm9u
dHJpdmlhbFN0cmluZyhleGVjLCAiSW52YWxpZCBEYXRlIik7CiAgICAgcmV0dXJuIGpzTm9udHJp
dmlhbFN0cmluZyhleGVjLCBmb3JtYXREYXRlVVRDVmFyaWFudCh0KSArICIgIiArIGZvcm1hdFRp
bWUodCwgb3V0cHV0SXNVVEMpKTsKIH0KQEAgLTU4Niw3ICs1ODYsNyBAQCBKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldE1vCiAgICAgRGF0ZUluc3RhbmNlKiB0aGlzRGF0ZU9i
aiA9IGFzRGF0ZUluc3RhbmNlKHRoaXNWYWx1ZSk7IAogCiAgICAgR3JlZ29yaWFuRGF0ZVRpbWUg
dDsKLSAgICBpZiAoIXRoaXNEYXRlT2JqLT5nZXRHcmVnb3JpYW5EYXRlVGltZShvdXRwdXRJc1VU
QywgdCkpCisgICAgaWYgKCF0aGlzRGF0ZU9iai0+Z2V0R3JlZ29yaWFuRGF0ZVRpbWUoZXhlYywg
b3V0cHV0SXNVVEMsIHQpKQogICAgICAgICByZXR1cm4ganNOYU4oZXhlYyk7CiAgICAgcmV0dXJu
IGpzTnVtYmVyKGV4ZWMsIHQubW9udGgpOwogfQpAQCAtNjAxLDcgKzYwMSw3IEBAIEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0VVQKICAgICBEYXRlSW5zdGFuY2UqIHRoaXNE
YXRlT2JqID0gYXNEYXRlSW5zdGFuY2UodGhpc1ZhbHVlKTsgCiAKICAgICBHcmVnb3JpYW5EYXRl
VGltZSB0OwotICAgIGlmICghdGhpc0RhdGVPYmotPmdldEdyZWdvcmlhbkRhdGVUaW1lKG91dHB1
dElzVVRDLCB0KSkKKyAgICBpZiAoIXRoaXNEYXRlT2JqLT5nZXRHcmVnb3JpYW5EYXRlVGltZShl
eGVjLCBvdXRwdXRJc1VUQywgdCkpCiAgICAgICAgIHJldHVybiBqc05hTihleGVjKTsKICAgICBy
ZXR1cm4ganNOdW1iZXIoZXhlYywgdC5tb250aCk7CiB9CkBAIC02MTYsNyArNjE2LDcgQEAgSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXREYQogICAgIERhdGVJbnN0YW5jZSog
dGhpc0RhdGVPYmogPSBhc0RhdGVJbnN0YW5jZSh0aGlzVmFsdWUpOyAKIAogICAgIEdyZWdvcmlh
bkRhdGVUaW1lIHQ7Ci0gICAgaWYgKCF0aGlzRGF0ZU9iai0+Z2V0R3JlZ29yaWFuRGF0ZVRpbWUo
b3V0cHV0SXNVVEMsIHQpKQorICAgIGlmICghdGhpc0RhdGVPYmotPmdldEdyZWdvcmlhbkRhdGVU
aW1lKGV4ZWMsIG91dHB1dElzVVRDLCB0KSkKICAgICAgICAgcmV0dXJuIGpzTmFOKGV4ZWMpOwog
ICAgIHJldHVybiBqc051bWJlcihleGVjLCB0Lm1vbnRoRGF5KTsKIH0KQEAgLTYzMSw3ICs2MzEs
NyBAQCBKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFVUCiAgICAgRGF0ZUlu
c3RhbmNlKiB0aGlzRGF0ZU9iaiA9IGFzRGF0ZUluc3RhbmNlKHRoaXNWYWx1ZSk7IAogCiAgICAg
R3JlZ29yaWFuRGF0ZVRpbWUgdDsKLSAgICBpZiAoIXRoaXNEYXRlT2JqLT5nZXRHcmVnb3JpYW5E
YXRlVGltZShvdXRwdXRJc1VUQywgdCkpCisgICAgaWYgKCF0aGlzRGF0ZU9iai0+Z2V0R3JlZ29y
aWFuRGF0ZVRpbWUoZXhlYywgb3V0cHV0SXNVVEMsIHQpKQogICAgICAgICByZXR1cm4ganNOYU4o
ZXhlYyk7CiAgICAgcmV0dXJuIGpzTnVtYmVyKGV4ZWMsIHQubW9udGhEYXkpOwogfQpAQCAtNjQ2
LDcgKzY0Niw3IEBAIEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0RGEKICAg
ICBEYXRlSW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNEYXRlSW5zdGFuY2UodGhpc1ZhbHVlKTsg
CiAKICAgICBHcmVnb3JpYW5EYXRlVGltZSB0OwotICAgIGlmICghdGhpc0RhdGVPYmotPmdldEdy
ZWdvcmlhbkRhdGVUaW1lKG91dHB1dElzVVRDLCB0KSkKKyAgICBpZiAoIXRoaXNEYXRlT2JqLT5n
ZXRHcmVnb3JpYW5EYXRlVGltZShleGVjLCBvdXRwdXRJc1VUQywgdCkpCiAgICAgICAgIHJldHVy
biBqc05hTihleGVjKTsKICAgICByZXR1cm4ganNOdW1iZXIoZXhlYywgdC53ZWVrRGF5KTsKIH0K
QEAgLTY2MSw3ICs2NjEsNyBAQCBKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dl
dFVUCiAgICAgRGF0ZUluc3RhbmNlKiB0aGlzRGF0ZU9iaiA9IGFzRGF0ZUluc3RhbmNlKHRoaXNW
YWx1ZSk7IAogCiAgICAgR3JlZ29yaWFuRGF0ZVRpbWUgdDsKLSAgICBpZiAoIXRoaXNEYXRlT2Jq
LT5nZXRHcmVnb3JpYW5EYXRlVGltZShvdXRwdXRJc1VUQywgdCkpCisgICAgaWYgKCF0aGlzRGF0
ZU9iai0+Z2V0R3JlZ29yaWFuRGF0ZVRpbWUoZXhlYywgb3V0cHV0SXNVVEMsIHQpKQogICAgICAg
ICByZXR1cm4ganNOYU4oZXhlYyk7CiAgICAgcmV0dXJuIGpzTnVtYmVyKGV4ZWMsIHQud2Vla0Rh
eSk7CiB9CkBAIC02NzYsNyArNjc2LDcgQEAgSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90
b0Z1bmNHZXRIbwogICAgIERhdGVJbnN0YW5jZSogdGhpc0RhdGVPYmogPSBhc0RhdGVJbnN0YW5j
ZSh0aGlzVmFsdWUpOyAKIAogICAgIEdyZWdvcmlhbkRhdGVUaW1lIHQ7Ci0gICAgaWYgKCF0aGlz
RGF0ZU9iai0+Z2V0R3JlZ29yaWFuRGF0ZVRpbWUob3V0cHV0SXNVVEMsIHQpKQorICAgIGlmICgh
dGhpc0RhdGVPYmotPmdldEdyZWdvcmlhbkRhdGVUaW1lKGV4ZWMsIG91dHB1dElzVVRDLCB0KSkK
ICAgICAgICAgcmV0dXJuIGpzTmFOKGV4ZWMpOwogICAgIHJldHVybiBqc051bWJlcihleGVjLCB0
LmhvdXIpOwogfQpAQCAtNjkxLDcgKzY5MSw3IEBAIEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRl
UHJvdG9GdW5jR2V0VVQKICAgICBEYXRlSW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNEYXRlSW5z
dGFuY2UodGhpc1ZhbHVlKTsgCiAKICAgICBHcmVnb3JpYW5EYXRlVGltZSB0OwotICAgIGlmICgh
dGhpc0RhdGVPYmotPmdldEdyZWdvcmlhbkRhdGVUaW1lKG91dHB1dElzVVRDLCB0KSkKKyAgICBp
ZiAoIXRoaXNEYXRlT2JqLT5nZXRHcmVnb3JpYW5EYXRlVGltZShleGVjLCBvdXRwdXRJc1VUQywg
dCkpCiAgICAgICAgIHJldHVybiBqc05hTihleGVjKTsKICAgICByZXR1cm4ganNOdW1iZXIoZXhl
YywgdC5ob3VyKTsKIH0KQEAgLTcwNiw3ICs3MDYsNyBAQCBKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZGF0ZVByb3RvRnVuY0dldE1pCiAgICAgRGF0ZUluc3RhbmNlKiB0aGlzRGF0ZU9iaiA9IGFzRGF0
ZUluc3RhbmNlKHRoaXNWYWx1ZSk7IAogCiAgICAgR3JlZ29yaWFuRGF0ZVRpbWUgdDsKLSAgICBp
ZiAoIXRoaXNEYXRlT2JqLT5nZXRHcmVnb3JpYW5EYXRlVGltZShvdXRwdXRJc1VUQywgdCkpCisg
ICAgaWYgKCF0aGlzRGF0ZU9iai0+Z2V0R3JlZ29yaWFuRGF0ZVRpbWUoZXhlYywgb3V0cHV0SXNV
VEMsIHQpKQogICAgICAgICByZXR1cm4ganNOYU4oZXhlYyk7CiAgICAgcmV0dXJuIGpzTnVtYmVy
KGV4ZWMsIHQubWludXRlKTsKIH0KQEAgLTcyMSw3ICs3MjEsNyBAQCBKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZGF0ZVByb3RvRnVuY0dldFVUCiAgICAgRGF0ZUluc3RhbmNlKiB0aGlzRGF0ZU9iaiA9
IGFzRGF0ZUluc3RhbmNlKHRoaXNWYWx1ZSk7IAogCiAgICAgR3JlZ29yaWFuRGF0ZVRpbWUgdDsK
LSAgICBpZiAoIXRoaXNEYXRlT2JqLT5nZXRHcmVnb3JpYW5EYXRlVGltZShvdXRwdXRJc1VUQywg
dCkpCisgICAgaWYgKCF0aGlzRGF0ZU9iai0+Z2V0R3JlZ29yaWFuRGF0ZVRpbWUoZXhlYywgb3V0
cHV0SXNVVEMsIHQpKQogICAgICAgICByZXR1cm4ganNOYU4oZXhlYyk7CiAgICAgcmV0dXJuIGpz
TnVtYmVyKGV4ZWMsIHQubWludXRlKTsKIH0KQEAgLTczNiw3ICs3MzYsNyBAQCBKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFNlCiAgICAgRGF0ZUluc3RhbmNlKiB0aGlzRGF0
ZU9iaiA9IGFzRGF0ZUluc3RhbmNlKHRoaXNWYWx1ZSk7IAogCiAgICAgR3JlZ29yaWFuRGF0ZVRp
bWUgdDsKLSAgICBpZiAoIXRoaXNEYXRlT2JqLT5nZXRHcmVnb3JpYW5EYXRlVGltZShvdXRwdXRJ
c1VUQywgdCkpCisgICAgaWYgKCF0aGlzRGF0ZU9iai0+Z2V0R3JlZ29yaWFuRGF0ZVRpbWUoZXhl
Yywgb3V0cHV0SXNVVEMsIHQpKQogICAgICAgICByZXR1cm4ganNOYU4oZXhlYyk7CiAgICAgcmV0
dXJuIGpzTnVtYmVyKGV4ZWMsIHQuc2Vjb25kKTsKIH0KQEAgLTc1MSw3ICs3NTEsNyBAQCBKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFVUCiAgICAgRGF0ZUluc3RhbmNlKiB0
aGlzRGF0ZU9iaiA9IGFzRGF0ZUluc3RhbmNlKHRoaXNWYWx1ZSk7IAogCiAgICAgR3JlZ29yaWFu
RGF0ZVRpbWUgdDsKLSAgICBpZiAoIXRoaXNEYXRlT2JqLT5nZXRHcmVnb3JpYW5EYXRlVGltZShv
dXRwdXRJc1VUQywgdCkpCisgICAgaWYgKCF0aGlzRGF0ZU9iai0+Z2V0R3JlZ29yaWFuRGF0ZVRp
bWUoZXhlYywgb3V0cHV0SXNVVEMsIHQpKQogICAgICAgICByZXR1cm4ganNOYU4oZXhlYyk7CiAg
ICAgcmV0dXJuIGpzTnVtYmVyKGV4ZWMsIHQuc2Vjb25kKTsKIH0KQEAgLTc5Niw3ICs3OTYsNyBA
QCBKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFRpCiAgICAgRGF0ZUluc3Rh
bmNlKiB0aGlzRGF0ZU9iaiA9IGFzRGF0ZUluc3RhbmNlKHRoaXNWYWx1ZSk7IAogCiAgICAgR3Jl
Z29yaWFuRGF0ZVRpbWUgdDsKLSAgICBpZiAoIXRoaXNEYXRlT2JqLT5nZXRHcmVnb3JpYW5EYXRl
VGltZShvdXRwdXRJc1VUQywgdCkpCisgICAgaWYgKCF0aGlzRGF0ZU9iai0+Z2V0R3JlZ29yaWFu
RGF0ZVRpbWUoZXhlYywgb3V0cHV0SXNVVEMsIHQpKQogICAgICAgICByZXR1cm4ganNOYU4oZXhl
Yyk7CiAgICAgcmV0dXJuIGpzTnVtYmVyKGV4ZWMsIC1nbXRvZmZzZXQodCkgLyBtaW51dGVzUGVy
SG91cik7CiB9CkBAIC04MzIsNyArODMyLDcgQEAgc3RhdGljIEpTVmFsdWUgc2V0TmV3VmFsdWVG
cm9tVGltZUFyZ3MoRQogICAgIGRvdWJsZSBtcyA9IG1pbGxpIC0gc2VjcyAqIG1zUGVyU2Vjb25k
OwogCiAgICAgR3JlZ29yaWFuRGF0ZVRpbWUgdDsKLSAgICB0aGlzRGF0ZU9iai0+Z2V0R3JlZ29y
aWFuRGF0ZVRpbWUoaW5wdXRJc1VUQywgdCk7CisgICAgdGhpc0RhdGVPYmotPmdldEdyZWdvcmlh
bkRhdGVUaW1lKGV4ZWMsIGlucHV0SXNVVEMsIHQpOwogCiAgICAgaWYgKCFmaWxsU3RydWN0dXJl
c1VzaW5nVGltZUFyZ3MoZXhlYywgYXJncywgbnVtQXJnc1RvVXNlLCAmbXMsICZ0KSkgewogICAg
ICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTmFOKGV4ZWMpOwpAQCAtODY4LDcgKzg2OCw3IEBAIHN0
YXRpYyBKU1ZhbHVlIHNldE5ld1ZhbHVlRnJvbURhdGVBcmdzKEUKICAgICBlbHNlIHsKICAgICAg
ICAgZG91YmxlIHNlY3MgPSBmbG9vcihtaWxsaSAvIG1zUGVyU2Vjb25kKTsKICAgICAgICAgbXMg
PSBtaWxsaSAtIHNlY3MgKiBtc1BlclNlY29uZDsKLSAgICAgICAgdGhpc0RhdGVPYmotPmdldEdy
ZWdvcmlhbkRhdGVUaW1lKGlucHV0SXNVVEMsIHQpOworICAgICAgICB0aGlzRGF0ZU9iai0+Z2V0
R3JlZ29yaWFuRGF0ZVRpbWUoZXhlYywgaW5wdXRJc1VUQywgdCk7CiAgICAgfQogICAgIAogICAg
IGlmICghZmlsbFN0cnVjdHVyZXNVc2luZ0RhdGVBcmdzKGV4ZWMsIGFyZ3MsIG51bUFyZ3NUb1Vz
ZSwgJm1zLCAmdCkpIHsKQEAgLTk5MSw3ICs5OTEsNyBAQCBKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZGF0ZVByb3RvRnVuY1NldFllCiAgICAgZWxzZSB7ICAgCiAgICAgICAgIGRvdWJsZSBzZWNzID0g
Zmxvb3IobWlsbGkgLyBtc1BlclNlY29uZCk7CiAgICAgICAgIG1zID0gbWlsbGkgLSBzZWNzICog
bXNQZXJTZWNvbmQ7Ci0gICAgICAgIHRoaXNEYXRlT2JqLT5nZXRHcmVnb3JpYW5EYXRlVGltZShv
dXRwdXRJc1VUQywgdCk7CisgICAgICAgIHRoaXNEYXRlT2JqLT5nZXRHcmVnb3JpYW5EYXRlVGlt
ZShleGVjLCBvdXRwdXRJc1VUQywgdCk7CiAgICAgfQogICAgIAogICAgIGJvb2wgb2sgPSB0cnVl
OwpAQCAtMTAxOCw3ICsxMDE4LDcgQEAgSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1
bmNHZXRZZQogICAgIERhdGVJbnN0YW5jZSogdGhpc0RhdGVPYmogPSBhc0RhdGVJbnN0YW5jZSh0
aGlzVmFsdWUpOyAKIAogICAgIEdyZWdvcmlhbkRhdGVUaW1lIHQ7Ci0gICAgaWYgKCF0aGlzRGF0
ZU9iai0+Z2V0R3JlZ29yaWFuRGF0ZVRpbWUob3V0cHV0SXNVVEMsIHQpKQorICAgIGlmICghdGhp
c0RhdGVPYmotPmdldEdyZWdvcmlhbkRhdGVUaW1lKGV4ZWMsIG91dHB1dElzVVRDLCB0KSkKICAg
ICAgICAgcmV0dXJuIGpzTmFOKGV4ZWMpOwogCiAgICAgLy8gTk9URTogSUUgcmV0dXJucyB0aGUg
ZnVsbCB5ZWFyIGV2ZW4gaW4gZ2V0WWVhci4KSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbERhdGEuaAkocmV2aXNpb24gNTAwOTkpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjZGVmaW5lIEpT
R2xvYmFsRGF0YV9oCiAKICNpbmNsdWRlICJDb2xsZWN0b3IuaCIKKyNpbmNsdWRlICJEYXRlSW5z
dGFuY2VDYWNoZS5oIgogI2luY2x1ZGUgIkV4ZWN1dGFibGVBbGxvY2F0b3IuaCIKICNpbmNsdWRl
ICJKSVRTdHVicy5oIgogI2luY2x1ZGUgIkpTVmFsdWUuaCIKQEAgLTExNiw3ICsxMTcsOCBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgY29uc3QgTWFya2VkQXJndW1lbnRCdWZmZXIqIGVtcHR5
TGlzdDsgLy8gTGlzdHMgYXJlIHN1cHBvc2VkIHRvIGJlIGFsbG9jYXRlZCBvbiB0aGUgc3RhY2sg
dG8gaGF2ZSB0aGVpciBlbGVtZW50cyBwcm9wZXJseSBtYXJrZWQsIHdoaWNoIGlzIG5vdCB0aGUg
Y2FzZSBoZXJlIC0gYnV0IHRoaXMgbGlzdCBoYXMgbm90aGluZyB0byBtYXJrLgogICAgICAgICBT
bWFsbFN0cmluZ3Mgc21hbGxTdHJpbmdzOwogICAgICAgICBOdW1lcmljU3RyaW5ncyBudW1lcmlj
U3RyaW5nczsKLQorICAgICAgICBEYXRlSW5zdGFuY2VDYWNoZSBkYXRlSW5zdGFuY2VDYWNoZTsK
KyAgICAgICAgCiAjaWYgRU5BQkxFKEFTU0VNQkxFUikKICAgICAgICAgRXhlY3V0YWJsZUFsbG9j
YXRvciBleGVjdXRhYmxlQWxsb2NhdG9yOwogI2VuZGlmCg==
</data>
<flag name="review"
          id="23455"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>