<?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>154486</bug_id>
          
          <creation_ts>2016-02-19 18:24:25 -0800</creation_ts>
          <short_desc>Improvements to Intl code</short_desc>
          <delta_ts>2016-02-21 17:55:42 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sukolsak Sakshuwong">sukolsak</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>andy</cc>
    
    <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>ggaren</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1166648</commentid>
    <comment_count>0</comment_count>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2016-02-19 18:24:25 -0800</bug_when>
    <thetext>- Use std::unique_ptr to store ICU objects (See Comment 10 in https://bugs.webkit.org/show_bug.cgi?id=147603#c10)
- Pass Vector::size() to ICU functions that take a buffer size instead of Vector::capacity()
- If U_SUCCESS(status) is true, it means there is no error, but there could be warnings. ICU functions ignore warnings. So, there is no need to reset status to U_ZERO_ERROR.
- Remove the initialization of the String instance variables of IntlDateTimeFormat. These values are never read and cause unnecessary memory allocation.
- Fix coding style</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1166649</commentid>
    <comment_count>1</comment_count>
      <attachid>271835</attachid>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2016-02-19 18:33:57 -0800</bug_when>
    <thetext>Created attachment 271835
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1166651</commentid>
    <comment_count>2</comment_count>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2016-02-19 18:43:43 -0800</bug_when>
    <thetext>Oops, wrong link. For the comment about std::unique_ptr, see Comment 10 in https://bugs.webkit.org/show_bug.cgi?id=147605#c10</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1166660</commentid>
    <comment_count>3</comment_count>
      <attachid>271835</attachid>
    <who name="Andy VanWagoner">andy</who>
    <bug_when>2016-02-19 18:58:45 -0800</bug_when>
    <thetext>Comment on attachment 271835
Patch

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

&gt; Source/JavaScriptCore/runtime/IntlDateTimeFormat.cpp:674
&gt; +    m_dateFormat = std::unique_ptr&lt;UDateFormat, UDateFormatDeleter&gt;(udat_open(UDAT_IGNORE, UDAT_IGNORE, m_locale.utf8().data(), timeZoneView.upconvertedCharacters(), timeZoneView.length(), pattern.upconvertedCharacters(), pattern.length(), &amp;status));

Since ICU headers were updated to v52, UDAT_PATTERN is preferred over UDAT_IGNORE. Mind changing that while you are in here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1166661</commentid>
    <comment_count>4</comment_count>
      <attachid>271839</attachid>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2016-02-19 19:08:45 -0800</bug_when>
    <thetext>Created attachment 271839
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1166664</commentid>
    <comment_count>5</comment_count>
      <attachid>271840</attachid>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2016-02-19 19:10:45 -0800</bug_when>
    <thetext>Created attachment 271840
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1166665</commentid>
    <comment_count>6</comment_count>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2016-02-19 19:11:52 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 271835 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=271835&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/IntlDateTimeFormat.cpp:674
&gt; &gt; +    m_dateFormat = std::unique_ptr&lt;UDateFormat, UDateFormatDeleter&gt;(udat_open(UDAT_IGNORE, UDAT_IGNORE, m_locale.utf8().data(), timeZoneView.upconvertedCharacters(), timeZoneView.length(), pattern.upconvertedCharacters(), pattern.length(), &amp;status));
&gt; 
&gt; Since ICU headers were updated to v52, UDAT_PATTERN is preferred over
&gt; UDAT_IGNORE. Mind changing that while you are in here?

Done. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1166829</commentid>
    <comment_count>7</comment_count>
      <attachid>271840</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-02-21 08:24:54 -0800</bug_when>
    <thetext>Comment on attachment 271840
Patch

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

&gt; Source/JavaScriptCore/runtime/IntlCollator.cpp:329
&gt; +    auto collator = std::unique_ptr&lt;UCollator, UCollatorDeleter&gt;(ucol_open(m_locale.utf8().data(), &amp;status));

Use std::make_unique from StdLibExtras.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1166860</commentid>
    <comment_count>8</comment_count>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2016-02-21 13:27:03 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; Comment on attachment 271840 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=271840&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/IntlCollator.cpp:329
&gt; &gt; +    auto collator = std::unique_ptr&lt;UCollator, UCollatorDeleter&gt;(ucol_open(m_locale.utf8().data(), &amp;status));
&gt; 
&gt; Use std::make_unique from StdLibExtras.h

I don&apos;t think that works, because ucol_open is not a C++ constructor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1166893</commentid>
    <comment_count>9</comment_count>
      <attachid>271840</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-02-21 17:15:40 -0800</bug_when>
    <thetext>Comment on attachment 271840
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/runtime/IntlCollator.cpp:329
&gt;&gt;&gt; +    auto collator = std::unique_ptr&lt;UCollator, UCollatorDeleter&gt;(ucol_open(m_locale.utf8().data(), &amp;status));
&gt;&gt; 
&gt;&gt; Use std::make_unique from StdLibExtras.h
&gt; 
&gt; I don&apos;t think that works, because ucol_open is not a C++ constructor.

That’s right. Can’t use make_unique here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1166908</commentid>
    <comment_count>10</comment_count>
      <attachid>271840</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-02-21 17:55:38 -0800</bug_when>
    <thetext>Comment on attachment 271840
Patch

Clearing flags on attachment: 271840

Committed r196887: &lt;http://trac.webkit.org/changeset/196887&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1166909</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-02-21 17:55:42 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>271835</attachid>
            <date>2016-02-19 18:33:57 -0800</date>
            <delta_ts>2016-02-19 19:08:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>21649</size>
            <attacher name="Sukolsak Sakshuwong">sukolsak</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGY2NjMwYzQ0YjA3Y2JhYmVkNmU4NmQyNWI5YzA2
MTE2OWE4M2RlYmMuLmM3MjRhYzc5MGQxMDkwZGIxMzlhNjU4NTVmYzAwMzM0ZjhlZjI4NmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDE2LTAyLTE5ICBTdWtv
bHNhayBTYWtzaHV3b25nICA8c3Vrb2xzYWtAZ21haWwuY29tPgorCisgICAgICAgIEltcHJvdmVt
ZW50cyB0byBJbnRsIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1NDQ4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoaXMgcGF0Y2ggZG9lcyBzZXZlcmFsIHRoaW5nczoKKyAgICAgICAgLSBVc2Ug
c3RkOjp1bmlxdWVfcHRyIHRvIHN0b3JlIElDVSBvYmplY3RzLgorICAgICAgICAtIFBhc3MgVmVj
dG9yOjpzaXplKCkgdG8gSUNVIGZ1bmN0aW9ucyB0aGF0IHRha2UgYSBidWZmZXIgc2l6ZSBpbnN0
ZWFkCisgICAgICAgICAgb2YgVmVjdG9yOjpjYXBhY2l0eSgpLgorICAgICAgICAtIElmIFVfU1VD
Q0VTUyhzdGF0dXMpIGlzIHRydWUsIGl0IG1lYW5zIHRoZXJlIGlzIG5vIGVycm9yLCBidXQgdGhl
cmUKKyAgICAgICAgICBjb3VsZCBiZSB3YXJuaW5ncy4gSUNVIGZ1bmN0aW9ucyBpZ25vcmUgd2Fy
bmluZ3MuIFNvLCB0aGVyZSBpcyBubyBuZWVkCisgICAgICAgICAgdG8gcmVzZXQgc3RhdHVzIHRv
IFVfWkVST19FUlJPUi4KKyAgICAgICAgLSBSZW1vdmUgdGhlIGluaXRpYWxpemF0aW9uIG9mIHRo
ZSBTdHJpbmcgaW5zdGFuY2UgdmFyaWFibGVzIG9mCisgICAgICAgICAgSW50bERhdGVUaW1lRm9y
bWF0LiBUaGVzZSB2YWx1ZXMgYXJlIG5ldmVyIHJlYWQgYW5kIGNhdXNlIHVubmVjZXNzYXJ5Cisg
ICAgICAgICAgbWVtb3J5IGFsbG9jYXRpb24uCisgICAgICAgIC0gRml4IGNvZGluZyBzdHlsZS4K
KyAgICAgICAgLSBTb21lIHNtYWxsIG9wdGltaXphdGlvbi4KKworICAgICAgICAqIHJ1bnRpbWUv
SW50bENvbGxhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SW50bENvbGxhdG9yOjpVQ29sbGF0b3JE
ZWxldGVyOjpvcGVyYXRvcigpKToKKyAgICAgICAgKEpTQzo6SW50bENvbGxhdG9yOjpjcmVhdGVD
b2xsYXRvcik6CisgICAgICAgIChKU0M6OkludGxDb2xsYXRvcjo6Y29tcGFyZVN0cmluZ3MpOgor
ICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3I6On5JbnRsQ29sbGF0b3IpOiBEZWxldGVkLgorICAg
ICAgICAqIHJ1bnRpbWUvSW50bENvbGxhdG9yLmg6CisgICAgICAgICogcnVudGltZS9JbnRsRGF0
ZVRpbWVGb3JtYXQuY3BwOgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OlVEYXRl
Rm9ybWF0RGVsZXRlcjo6b3BlcmF0b3IoKSk6CisgICAgICAgIChKU0M6OmRlZmF1bHRUaW1lWm9u
ZSk6CisgICAgICAgIChKU0M6OmNhbm9uaWNhbGl6ZVRpbWVab25lTmFtZSk6CisgICAgICAgIChK
U0M6OnRvRGF0ZVRpbWVPcHRpb25zQW55RGF0ZSk6CisgICAgICAgIChKU0M6OkludGxEYXRlVGlt
ZUZvcm1hdDo6aW5pdGlhbGl6ZURhdGVUaW1lRm9ybWF0KToKKyAgICAgICAgKEpTQzo6SW50bERh
dGVUaW1lRm9ybWF0Ojp3ZWVrZGF5U3RyaW5nKToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1l
Rm9ybWF0Ojpmb3JtYXQpOgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6On5JbnRs
RGF0ZVRpbWVGb3JtYXQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpsb2NhbGVEYXRhKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5oOgorICAgICAgICAq
IHJ1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIHJ1
bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKiBydW50aW1l
L0ludGxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpudW1iZXJpbmdTeXN0ZW1zRm9yTG9jYWxl
KToKKwogMjAxNi0wMi0xOSAgU3Vrb2xzYWsgU2Frc2h1d29uZyAgPHN1a29sc2FrQGdtYWlsLmNv
bT4KIAogICAgICAgICBbSU5UTF0gSW1wbGVtZW50IE51bWJlciBGb3JtYXQgRnVuY3Rpb25zCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3IuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yLmNwcAppbmRleCAy
YjlkNDFkN2U2NzA4YjU0MjExMzkyZTg3OTExNzA2ZjliMzRjZDg2Li42MWQzNWE1M2U4ZmQzZWUy
NDkxYTc3NjJhYWFhYzc2ZDAxYTgyZjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsQ29sbGF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxDb2xsYXRvci5jcHAKQEAgLTUwLDYgKzUwLDEyIEBAIHN0YXRpYyBjb25zdCBj
aGFyKiBjb25zdCByZWxldmFudEV4dGVuc2lvbktleXNbMl0gPSB7ICJjbyIsICJrbiIgfTsKIHN0
YXRpYyBjb25zdCBzaXplX3QgaW5kZXhPZkV4dGVuc2lvbktleUNvID0gMDsKIHN0YXRpYyBjb25z
dCBzaXplX3QgaW5kZXhPZkV4dGVuc2lvbktleUtuID0gMTsKIAordm9pZCBJbnRsQ29sbGF0b3I6
OlVDb2xsYXRvckRlbGV0ZXI6Om9wZXJhdG9yKCkoVUNvbGxhdG9yKiBjb2xsYXRvcikgY29uc3QK
K3sKKyAgICBpZiAoY29sbGF0b3IpCisgICAgICAgIHVjb2xfY2xvc2UoY29sbGF0b3IpOworfQor
CiBJbnRsQ29sbGF0b3IqIEludGxDb2xsYXRvcjo6Y3JlYXRlKFZNJiB2bSwgSW50bENvbGxhdG9y
Q29uc3RydWN0b3IqIGNvbnN0cnVjdG9yKQogewogICAgIEludGxDb2xsYXRvciogZm9ybWF0ID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bENvbGxhdG9yPih2bS5oZWFwKSkgSW50bENv
bGxhdG9yKHZtLCBjb25zdHJ1Y3Rvci0+Y29sbGF0b3JTdHJ1Y3R1cmUoKSk7CkBAIC02NywxMiAr
NzMsNiBAQCBJbnRsQ29sbGF0b3I6OkludGxDb2xsYXRvcihWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQogewogfQogCi1JbnRsQ29sbGF0b3I6On5JbnRsQ29sbGF0b3IoKQotewotICAgIGlm
IChtX2NvbGxhdG9yKQotICAgICAgICB1Y29sX2Nsb3NlKG1fY29sbGF0b3IpOwotfQotCiB2b2lk
IEludGxDb2xsYXRvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogewogICAgIEJhc2U6OmZpbmlz
aENyZWF0aW9uKHZtKTsKQEAgLTMyNiw3ICszMjYsNyBAQCB2b2lkIEludGxDb2xsYXRvcjo6Y3Jl
YXRlQ29sbGF0b3IoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICB9CiAKICAgICBVRXJyb3JDb2RlIHN0
YXR1cyA9IFVfWkVST19FUlJPUjsKLSAgICBVQ29sbGF0b3IqIGNvbGxhdG9yID0gdWNvbF9vcGVu
KG1fbG9jYWxlLnV0ZjgoKS5kYXRhKCksICZzdGF0dXMpOworICAgIGF1dG8gY29sbGF0b3IgPSBz
dGQ6OnVuaXF1ZV9wdHI8VUNvbGxhdG9yLCBVQ29sbGF0b3JEZWxldGVyPih1Y29sX29wZW4obV9s
b2NhbGUudXRmOCgpLmRhdGEoKSwgJnN0YXR1cykpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVz
KSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0zNDcsMjQgKzM0NywyMiBAQCB2b2lkIEludGxDb2xs
YXRvcjo6Y3JlYXRlQ29sbGF0b3IoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICBkZWZhdWx0OgogICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9Ci0gICAgdWNvbF9zZXRBdHRyaWJ1dGUo
Y29sbGF0b3IsIFVDT0xfU1RSRU5HVEgsIHN0cmVuZ3RoLCAmc3RhdHVzKTsKLSAgICB1Y29sX3Nl
dEF0dHJpYnV0ZShjb2xsYXRvciwgVUNPTF9DQVNFX0xFVkVMLCBjYXNlTGV2ZWwsICZzdGF0dXMp
OworICAgIHVjb2xfc2V0QXR0cmlidXRlKGNvbGxhdG9yLmdldCgpLCBVQ09MX1NUUkVOR1RILCBz
dHJlbmd0aCwgJnN0YXR1cyk7CisgICAgdWNvbF9zZXRBdHRyaWJ1dGUoY29sbGF0b3IuZ2V0KCks
IFVDT0xfQ0FTRV9MRVZFTCwgY2FzZUxldmVsLCAmc3RhdHVzKTsKIAotICAgIHVjb2xfc2V0QXR0
cmlidXRlKGNvbGxhdG9yLCBVQ09MX05VTUVSSUNfQ09MTEFUSU9OLCBtX251bWVyaWMgPyBVQ09M
X09OIDogVUNPTF9PRkYsICZzdGF0dXMpOworICAgIHVjb2xfc2V0QXR0cmlidXRlKGNvbGxhdG9y
LmdldCgpLCBVQ09MX05VTUVSSUNfQ09MTEFUSU9OLCBtX251bWVyaWMgPyBVQ09MX09OIDogVUNP
TF9PRkYsICZzdGF0dXMpOwogCiAgICAgLy8gRklYTUU6IFNldHRpbmcgVUNPTF9BTFRFUk5BVEVf
SEFORExJTkcgdG8gVUNPTF9TSElGVEVEIGNhdXNlcyBwdW5jdHVhdGlvbiBhbmQgd2hpdGVzcGFj
ZSB0byBiZQogICAgIC8vIGlnbm9yZWQuIFRoZXJlIGlzIGN1cnJlbnRseSBubyB3YXkgdG8gaWdu
b3JlIG9ubHkgcHVuY3R1YXRpb24uCi0gICAgdWNvbF9zZXRBdHRyaWJ1dGUoY29sbGF0b3IsIFVD
T0xfQUxURVJOQVRFX0hBTkRMSU5HLCBtX2lnbm9yZVB1bmN0dWF0aW9uID8gVUNPTF9TSElGVEVE
IDogVUNPTF9ERUZBVUxULCAmc3RhdHVzKTsKKyAgICB1Y29sX3NldEF0dHJpYnV0ZShjb2xsYXRv
ci5nZXQoKSwgVUNPTF9BTFRFUk5BVEVfSEFORExJTkcsIG1faWdub3JlUHVuY3R1YXRpb24gPyBV
Q09MX1NISUZURUQgOiBVQ09MX0RFRkFVTFQsICZzdGF0dXMpOwogCiAgICAgLy8gIlRoZSBtZXRo
b2QgaXMgcmVxdWlyZWQgdG8gcmV0dXJuIDAgd2hlbiBjb21wYXJpbmcgU3RyaW5ncyB0aGF0IGFy
ZSBjb25zaWRlcmVkIGNhbm9uaWNhbGx5CiAgICAgLy8gZXF1aXZhbGVudCBieSB0aGUgVW5pY29k
ZSBzdGFuZGFyZC4iCi0gICAgdWNvbF9zZXRBdHRyaWJ1dGUoY29sbGF0b3IsIFVDT0xfTk9STUFM
SVpBVElPTl9NT0RFLCBVQ09MX09OLCAmc3RhdHVzKTsKLSAgICBpZiAoVV9GQUlMVVJFKHN0YXR1
cykpIHsKLSAgICAgICAgdWNvbF9jbG9zZShjb2xsYXRvcik7CisgICAgdWNvbF9zZXRBdHRyaWJ1
dGUoY29sbGF0b3IuZ2V0KCksIFVDT0xfTk9STUFMSVpBVElPTl9NT0RFLCBVQ09MX09OLCAmc3Rh
dHVzKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCiAgICAgICAgIHJldHVybjsKLSAgICB9
CiAKLSAgICBtX2NvbGxhdG9yID0gY29sbGF0b3I7CisgICAgbV9jb2xsYXRvciA9IFdURk1vdmUo
Y29sbGF0b3IpOwogfQogCiBKU1ZhbHVlIEludGxDb2xsYXRvcjo6Y29tcGFyZVN0cmluZ3MoRXhl
Y1N0YXRlJiBzdGF0ZSwgU3RyaW5nVmlldyB4LCBTdHJpbmdWaWV3IHkpCkBAIC0zNzksNyArMzc3
LDcgQEAgSlNWYWx1ZSBJbnRsQ29sbGF0b3I6OmNvbXBhcmVTdHJpbmdzKEV4ZWNTdGF0ZSYgc3Rh
dGUsIFN0cmluZ1ZpZXcgeCwgU3RyaW5nVmlldwogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9a
RVJPX0VSUk9SOwogICAgIFVDaGFySXRlcmF0b3IgaXRlcmF0b3JYID0gY3JlYXRlSXRlcmF0b3Io
eCk7CiAgICAgVUNoYXJJdGVyYXRvciBpdGVyYXRvclkgPSBjcmVhdGVJdGVyYXRvcih5KTsKLSAg
ICBhdXRvIHJlc3VsdCA9IHVjb2xfc3RyY29sbEl0ZXIobV9jb2xsYXRvciwgJml0ZXJhdG9yWCwg
Jml0ZXJhdG9yWSwgJnN0YXR1cyk7CisgICAgYXV0byByZXN1bHQgPSB1Y29sX3N0cmNvbGxJdGVy
KG1fY29sbGF0b3IuZ2V0KCksICZpdGVyYXRvclgsICZpdGVyYXRvclksICZzdGF0dXMpOwogICAg
IGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKICAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dF
eGNlcHRpb24oJnN0YXRlLCBjcmVhdGVFcnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVk
IHRvIGNvbXBhcmUgc3RyaW5ncy4iKSkpOwogICAgIHJldHVybiBqc051bWJlcihyZXN1bHQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3IuaAppbmRleCBkMzll
NWQyMzRlY2NhMzkyOTVkODdlZjM1NWQ0NmQyMjU2YjcwNGVkLi5hN2FkZGY5NDgxNTY0NjkyNDY4
MGI2ZTFhNWYxOWQxNTE1OGQ3ZWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsQ29sbGF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsQ29sbGF0b3IuaApAQCAtNTUsNyArNTUsNiBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoK
ICAgICBJbnRsQ29sbGF0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKLSAgICB+SW50bENvbGxhdG9yKCk7
CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3ko
SlNDZWxsKik7CiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90Vmlz
aXRvciYpOwpAQCAtNjQsNiArNjMsMTAgQEAgcHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIFVzYWdl
IHsgU29ydCwgU2VhcmNoIH07CiAgICAgZW51bSBjbGFzcyBTZW5zaXRpdml0eSB7IEJhc2UsIEFj
Y2VudCwgQ2FzZSwgVmFyaWFudCB9OwogCisgICAgc3RydWN0IFVDb2xsYXRvckRlbGV0ZXIgewor
ICAgICAgICB2b2lkIG9wZXJhdG9yKCkoVUNvbGxhdG9yKikgY29uc3Q7CisgICAgfTsKKwogICAg
IHZvaWQgY3JlYXRlQ29sbGF0b3IoRXhlY1N0YXRlJik7CiAgICAgc3RhdGljIGNvbnN0IGNoYXIq
IHVzYWdlU3RyaW5nKFVzYWdlKTsKICAgICBzdGF0aWMgY29uc3QgY2hhciogc2Vuc2l0aXZpdHlT
dHJpbmcoU2Vuc2l0aXZpdHkpOwpAQCAtNzMsNyArNzYsNyBAQCBwcml2YXRlOgogICAgIFN0cmlu
ZyBtX2NvbGxhdGlvbjsKICAgICBTZW5zaXRpdml0eSBtX3NlbnNpdGl2aXR5OwogICAgIFdyaXRl
QmFycmllcjxKU0JvdW5kRnVuY3Rpb24+IG1fYm91bmRDb21wYXJlOwotICAgIFVDb2xsYXRvciog
bV9jb2xsYXRvciB7IG51bGxwdHIgfTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VUNvbGxhdG9yLCBV
Q29sbGF0b3JEZWxldGVyPiBtX2NvbGxhdG9yOwogICAgIGJvb2wgbV9udW1lcmljOwogICAgIGJv
b2wgbV9pZ25vcmVQdW5jdHVhdGlvbjsKICAgICBib29sIG1faW5pdGlhbGl6ZWRDb2xsYXRvciB7
IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
RGF0ZVRpbWVGb3JtYXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERh
dGVUaW1lRm9ybWF0LmNwcAppbmRleCBhYTUzYzg1MzNhZWEyZjBhMWJkYjdhZDk2MWQ3MTE4ZjBm
MThhMzc5Li43YzUxYjZiYWU0NGUzY2M4NjQ2ZTM2YzFhM2ZiODVhYjBmMjNjNmM5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5j
cHAKQEAgLTM5LDcgKzM5LDYgQEAKICNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKICNp
bmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCiAjaW5jbHVkZSA8dW5pY29kZS91Y2FsLmg+Ci0j
aW5jbHVkZSA8dW5pY29kZS91ZGF0Lmg+CiAjaW5jbHVkZSA8dW5pY29kZS91ZGF0cGcuaD4KICNp
bmNsdWRlIDx1bmljb2RlL3VlbnVtLmg+CiAKQEAgLTUxLDYgKzUwLDEyIEBAIHN0YXRpYyBjb25z
dCBjaGFyKiBjb25zdCByZWxldmFudEV4dGVuc2lvbktleXNbMl0gPSB7ICJjYSIsICJudSIgfTsK
IHN0YXRpYyBjb25zdCBzaXplX3QgaW5kZXhPZkV4dGVuc2lvbktleUNhID0gMDsKIHN0YXRpYyBj
b25zdCBzaXplX3QgaW5kZXhPZkV4dGVuc2lvbktleU51ID0gMTsKIAordm9pZCBJbnRsRGF0ZVRp
bWVGb3JtYXQ6OlVEYXRlRm9ybWF0RGVsZXRlcjo6b3BlcmF0b3IoKShVRGF0ZUZvcm1hdCogZGF0
ZUZvcm1hdCkgY29uc3QKK3sKKyAgICBpZiAoZGF0ZUZvcm1hdCkKKyAgICAgICAgdWRhdF9jbG9z
ZShkYXRlRm9ybWF0KTsKK30KKwogSW50bERhdGVUaW1lRm9ybWF0KiBJbnRsRGF0ZVRpbWVGb3Jt
YXQ6OmNyZWF0ZShWTSYgdm0sIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yKiBjb25zdHJ1
Y3RvcikKIHsKICAgICBJbnRsRGF0ZVRpbWVGb3JtYXQqIGZvcm1hdCA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPEludGxEYXRlVGltZUZvcm1hdD4odm0uaGVhcCkpIEludGxEYXRlVGltZUZv
cm1hdCh2bSwgY29uc3RydWN0b3ItPmRhdGVUaW1lRm9ybWF0U3RydWN0dXJlKCkpOwpAQCAtNjgs
MTIgKzczLDYgQEAgSW50bERhdGVUaW1lRm9ybWF0OjpJbnRsRGF0ZVRpbWVGb3JtYXQoVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKIH0KIAotSW50bERhdGVUaW1lRm9ybWF0Ojp+SW50
bERhdGVUaW1lRm9ybWF0KCkKLXsKLSAgICBpZiAobV9kYXRlRm9ybWF0KQotICAgICAgICB1ZGF0
X2Nsb3NlKG1fZGF0ZUZvcm1hdCk7Ci19Ci0KIHZvaWQgSW50bERhdGVUaW1lRm9ybWF0OjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0pCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwpAQCAt
MTA3LDIxICsxMDYsMjAgQEAgc3RhdGljIFN0cmluZyBkZWZhdWx0VGltZVpvbmUoKQogCiAgICAg
VUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CiAgICAgVmVjdG9yPFVDaGFyLCAzMj4g
YnVmZmVyKDMyKTsKLSAgICBhdXRvIGJ1ZmZlckxlbmd0aCA9IHVjYWxfZ2V0RGVmYXVsdFRpbWVa
b25lKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5jYXBhY2l0eSgpLCAmc3RhdHVzKTsKKyAgICBhdXRv
IGJ1ZmZlckxlbmd0aCA9IHVjYWxfZ2V0RGVmYXVsdFRpbWVab25lKGJ1ZmZlci5kYXRhKCksIGJ1
ZmZlci5zaXplKCksICZzdGF0dXMpOwogICAgIGlmIChzdGF0dXMgPT0gVV9CVUZGRVJfT1ZFUkZM
T1dfRVJST1IpIHsKICAgICAgICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgICAgICBidWZm
ZXIgPSBWZWN0b3I8VUNoYXIsIDMyPihidWZmZXJMZW5ndGgpOworICAgICAgICBidWZmZXIuZ3Jv
dyhidWZmZXJMZW5ndGgpOwogICAgICAgICB1Y2FsX2dldERlZmF1bHRUaW1lWm9uZShidWZmZXIu
ZGF0YSgpLCBidWZmZXJMZW5ndGgsICZzdGF0dXMpOwogICAgIH0KICAgICBpZiAoVV9TVUNDRVNT
KHN0YXR1cykpIHsKICAgICAgICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgICAgICBVQm9v
bCBpc1N5c3RlbUlEID0gZmFsc2U7CiAgICAgICAgIFZlY3RvcjxVQ2hhciwgMzI+IGNhbm9uaWNh
bEJ1ZmZlcigzMik7Ci0gICAgICAgIGF1dG8gY2Fub25pY2FsTGVuZ3RoID0gdWNhbF9nZXRDYW5v
bmljYWxUaW1lWm9uZUlEKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlckxlbmd0aCwgY2Fub25pY2FsQnVm
ZmVyLmRhdGEoKSwgY2Fub25pY2FsQnVmZmVyLmNhcGFjaXR5KCksICZpc1N5c3RlbUlELCAmc3Rh
dHVzKTsKKyAgICAgICAgYXV0byBjYW5vbmljYWxMZW5ndGggPSB1Y2FsX2dldENhbm9uaWNhbFRp
bWVab25lSUQoYnVmZmVyLmRhdGEoKSwgYnVmZmVyTGVuZ3RoLCBjYW5vbmljYWxCdWZmZXIuZGF0
YSgpLCBjYW5vbmljYWxCdWZmZXIuc2l6ZSgpLCBudWxscHRyLCAmc3RhdHVzKTsKICAgICAgICAg
aWYgKHN0YXR1cyA9PSBVX0JVRkZFUl9PVkVSRkxPV19FUlJPUikgewogICAgICAgICAgICAgc3Rh
dHVzID0gVV9aRVJPX0VSUk9SOwotICAgICAgICAgICAgY2Fub25pY2FsQnVmZmVyID0gVmVjdG9y
PFVDaGFyLCAzMj4oY2Fub25pY2FsTGVuZ3RoKTsKLSAgICAgICAgICAgIHVjYWxfZ2V0Q2Fub25p
Y2FsVGltZVpvbmVJRChidWZmZXIuZGF0YSgpLCBidWZmZXJMZW5ndGgsIGNhbm9uaWNhbEJ1ZmZl
ci5kYXRhKCksIGNhbm9uaWNhbExlbmd0aCwgJmlzU3lzdGVtSUQsICZzdGF0dXMpOworICAgICAg
ICAgICAgY2Fub25pY2FsQnVmZmVyLmdyb3coY2Fub25pY2FsTGVuZ3RoKTsKKyAgICAgICAgICAg
IHVjYWxfZ2V0Q2Fub25pY2FsVGltZVpvbmVJRChidWZmZXIuZGF0YSgpLCBidWZmZXJMZW5ndGgs
IGNhbm9uaWNhbEJ1ZmZlci5kYXRhKCksIGNhbm9uaWNhbExlbmd0aCwgbnVsbHB0ciwgJnN0YXR1
cyk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKFVfU1VDQ0VTUyhzdGF0dXMpKQogICAgICAgICAg
ICAgcmV0dXJuIFN0cmluZyhjYW5vbmljYWxCdWZmZXIuZGF0YSgpLCBjYW5vbmljYWxMZW5ndGgp
OwpAQCAtMTYwLDE0ICsxNTgsMTIgQEAgc3RhdGljIFN0cmluZyBjYW5vbmljYWxpemVUaW1lWm9u
ZU5hbWUoY29uc3QgU3RyaW5nJiB0aW1lWm9uZU5hbWUpCiAgICAgICAgIC8vIDIuIElmIGlhbmFU
aW1lWm9uZSBpcyBhIExpbmsgbmFtZSwgdGhlbiBsZXQgaWFuYVRpbWVab25lIGJlIHRoZSBjb3Jy
ZXNwb25kaW5nIFpvbmUgbmFtZSBhcyBzcGVjaWZpZWQgaW4gdGhlIOKAnGJhY2t3YXJk4oCdIGZp
bGUgb2YgdGhlIElBTkEgVGltZSBab25lIERhdGFiYXNlLgogCiAgICAgICAgIFZlY3RvcjxVQ2hh
ciwgMzI+IGJ1ZmZlcihpYW5hVGltZVpvbmVMZW5ndGgpOwotICAgICAgICBVQm9vbCBpc1N5c3Rl
bUlEID0gZmFsc2U7CiAgICAgICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKLSAgICAgICAgYXV0
byBjYW5vbmljYWxMZW5ndGggPSB1Y2FsX2dldENhbm9uaWNhbFRpbWVab25lSUQoaWFuYVRpbWVa
b25lLCBpYW5hVGltZVpvbmVMZW5ndGgsIGJ1ZmZlci5kYXRhKCksIGlhbmFUaW1lWm9uZUxlbmd0
aCwgJmlzU3lzdGVtSUQsICZzdGF0dXMpOworICAgICAgICBhdXRvIGNhbm9uaWNhbExlbmd0aCA9
IHVjYWxfZ2V0Q2Fub25pY2FsVGltZVpvbmVJRChpYW5hVGltZVpvbmUsIGlhbmFUaW1lWm9uZUxl
bmd0aCwgYnVmZmVyLmRhdGEoKSwgaWFuYVRpbWVab25lTGVuZ3RoLCBudWxscHRyLCAmc3RhdHVz
KTsKICAgICAgICAgaWYgKHN0YXR1cyA9PSBVX0JVRkZFUl9PVkVSRkxPV19FUlJPUikgewotICAg
ICAgICAgICAgYnVmZmVyID0gVmVjdG9yPFVDaGFyLCAzMj4oY2Fub25pY2FsTGVuZ3RoKTsKLSAg
ICAgICAgICAgIGlzU3lzdGVtSUQgPSBmYWxzZTsKKyAgICAgICAgICAgIGJ1ZmZlci5ncm93KGNh
bm9uaWNhbExlbmd0aCk7CiAgICAgICAgICAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAg
ICAgICAgICB1Y2FsX2dldENhbm9uaWNhbFRpbWVab25lSUQoaWFuYVRpbWVab25lLCBpYW5hVGlt
ZVpvbmVMZW5ndGgsIGJ1ZmZlci5kYXRhKCksIGNhbm9uaWNhbExlbmd0aCwgJmlzU3lzdGVtSUQs
ICZzdGF0dXMpOworICAgICAgICAgICAgdWNhbF9nZXRDYW5vbmljYWxUaW1lWm9uZUlEKGlhbmFU
aW1lWm9uZSwgaWFuYVRpbWVab25lTGVuZ3RoLCBidWZmZXIuZGF0YSgpLCBjYW5vbmljYWxMZW5n
dGgsIG51bGxwdHIsICZzdGF0dXMpOwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVChVX1NVQ0NF
U1Moc3RhdHVzKSk7CiAgICAgICAgIGNhbm9uaWNhbCA9IFN0cmluZyhidWZmZXIuZGF0YSgpLCBj
YW5vbmljYWxMZW5ndGgpOwpAQCAtMTkxLDExICsxODcsOSBAQCBzdGF0aWMgVmVjdG9yPFN0cmlu
Zz4gbG9jYWxlRGF0YShjb25zdCBTdHJpbmcmIGxvY2FsZSwgc2l6ZV90IGtleUluZGV4KQogICAg
ICAgICBVRW51bWVyYXRpb24qIGNhbGVuZGFycyA9IHVjYWxfZ2V0S2V5d29yZFZhbHVlc0Zvckxv
Y2FsZSgiY2FsZW5kYXIiLCBsb2NhbGUudXRmOCgpLmRhdGEoKSwgZmFsc2UsICZzdGF0dXMpOwog
ICAgICAgICBBU1NFUlQoVV9TVUNDRVNTKHN0YXR1cykpOwogCi0gICAgICAgIHN0YXR1cyA9IFVf
WkVST19FUlJPUjsKICAgICAgICAgaW50MzJfdCBuYW1lTGVuZ3RoOwogICAgICAgICB3aGlsZSAo
Y29uc3QgY2hhciogYXZhaWxhYmxlTmFtZSA9IHVlbnVtX25leHQoY2FsZW5kYXJzLCAmbmFtZUxl
bmd0aCwgJnN0YXR1cykpIHsKICAgICAgICAgICAgIEFTU0VSVChVX1NVQ0NFU1Moc3RhdHVzKSk7
Ci0gICAgICAgICAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CiAgICAgICAgICAgICBTdHJpbmcg
Y2FsZW5kYXIgPSBTdHJpbmcoYXZhaWxhYmxlTmFtZSwgbmFtZUxlbmd0aCk7CiAgICAgICAgICAg
ICBrZXlMb2NhbGVEYXRhLmFwcGVuZChjYWxlbmRhcik7CiAgICAgICAgICAgICAvLyBFbnN1cmUg
YWxpYXNlcyB1c2VkIGluIGxhbmd1YWdlIHRhZyBhcmUgYWxsb3dlZC4KQEAgLTMwMywxNSArMjk3
LDE3IEBAIHN0YXRpYyBKU09iamVjdCogdG9EYXRlVGltZU9wdGlvbnNBbnlEYXRlKEV4ZWNTdGF0
ZSYgZXhlYywgSlNWYWx1ZSBvcmlnaW5hbE9wdGlvCiAgICAgICAgIC8vIGEuIEZvciBlYWNoIG9m
IHRoZSBwcm9wZXJ0eSBuYW1lcyAieWVhciIsICJtb250aCIsICJkYXkiOgogICAgICAgICAvLyBp
LiBMZXQgc3RhdHVzIGJlIENyZWF0ZURhdGVQcm9wZXJ0eU9yVGhyb3cob3B0aW9ucywgcHJvcCwg
Im51bWVyaWMiKS4KICAgICAgICAgLy8gaWkuIFJldHVybklmQWJydXB0KHN0YXR1cykuCi0gICAg
ICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+eWVhciwganNOb250
cml2aWFsU3RyaW5nKCZleGVjLCBBU0NJSUxpdGVyYWwoIm51bWVyaWMiKSkpOworICAgICAgICBK
U1N0cmluZyogbnVtZXJpYyA9IGpzTm9udHJpdmlhbFN0cmluZygmZXhlYywgQVNDSUlMaXRlcmFs
KCJudW1lcmljIikpOworCisgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+eWVhciwgbnVtZXJpYyk7CiAgICAgICAgIGlmIChleGVjLmhhZEV4Y2VwdGlvbigp
KQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICAgICAgb3B0aW9ucy0+cHV0RGly
ZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5tb250aCwganNOb250cml2aWFsU3RyaW5nKCZleGVj
LCBBU0NJSUxpdGVyYWwoIm51bWVyaWMiKSkpOworICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPm1vbnRoLCBudW1lcmljKTsKICAgICAgICAgaWYgKGV4ZWMu
aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgICAgICBv
cHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmRheSwganNOb250cml2aWFs
U3RyaW5nKCZleGVjLCBBU0NJSUxpdGVyYWwoIm51bWVyaWMiKSkpOworICAgICAgICBvcHRpb25z
LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmRheSwgbnVtZXJpYyk7CiAgICAgICAg
IGlmIChleGVjLmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQpAQCAtNDQ5LDcgKzQ0NSw3IEBAIHZvaWQgSW50bERhdGVUaW1lRm9ybWF0Ojppbml0aWFs
aXplRGF0ZVRpbWVGb3JtYXQoRXhlY1N0YXRlJiBleGVjLCBKU1ZhbHVlIGxvY2FsCiAgICAgaWYg
KGV4ZWMuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybjsKICAgICAvLyAxMC4gU2V0IG9w
dC5bW2xvY2FsZU1hdGNoZXJdXSB0byBtYXRjaGVyLgotICAgIGxvY2FsZU9wdC5zZXQodm0ucHJv
cGVydHlOYW1lcy0+bG9jYWxlTWF0Y2hlci5zdHJpbmcoKSwgbG9jYWxlTWF0Y2hlcik7CisgICAg
bG9jYWxlT3B0LmFkZCh2bS5wcm9wZXJ0eU5hbWVzLT5sb2NhbGVNYXRjaGVyLnN0cmluZygpLCBs
b2NhbGVNYXRjaGVyKTsKIAogICAgIC8vIDExLiBMZXQgbG9jYWxlRGF0YSBiZSB0aGUgdmFsdWUg
b2YgJURhdGVUaW1lRm9ybWF0JS5bW2xvY2FsZURhdGFdXS4KICAgICAvLyAxMi4gTGV0IHIgYmUg
UmVzb2x2ZUxvY2FsZSggJURhdGVUaW1lRm9ybWF0JS5bW2F2YWlsYWJsZUxvY2FsZXNdXSwgcmVx
dWVzdGVkTG9jYWxlcywgb3B0LCAlRGF0ZVRpbWVGb3JtYXQlLltbcmVsZXZhbnRFeHRlbnNpb25L
ZXlzXV0sIGxvY2FsZURhdGEpLgpAQCAtNTgyLDcgKzU3OCw3IEBAIHZvaWQgSW50bERhdGVUaW1l
Rm9ybWF0Ojppbml0aWFsaXplRGF0ZVRpbWVGb3JtYXQoRXhlY1N0YXRlJiBleGVjLCBKU1ZhbHVl
IGxvY2FsCiAKICAgICAvLyBXZSBuZWVkIGhvdXIxMiB0byBtYWtlIHRoZSBob3VyIHNrZWxldG9u
IHBhdHRlcm4gZGVjaXNpb24sIHNvIGRvIHRoaXMgZWFybHkuCiAgICAgLy8gMzIuIExldCBocjEy
IGJlIEdldE9wdGlvbihvcHRpb25zLCAiaG91cjEyIiwgImJvb2xlYW4iLCB1bmRlZmluZWQsIHVu
ZGVmaW5lZCkuCi0gICAgYm9vbCBpc0hvdXIxMlVuZGVmaW5lZCA9IHRydWU7CisgICAgYm9vbCBp
c0hvdXIxMlVuZGVmaW5lZDsKICAgICBib29sIGhyMTIgPSBpbnRsQm9vbGVhbk9wdGlvbihleGVj
LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5ob3VyMTIsIGlzSG91cjEyVW5kZWZpbmVkKTsK
ICAgICAvLyAzMy4gUmV0dXJuSWZBYnJ1cHQoaHIxMikuCiAgICAgaWYgKGV4ZWMuaGFkRXhjZXB0
aW9uKCkpCkBAIC02NTgsMTAgKzY1NCwxMCBAQCB2b2lkIEludGxEYXRlVGltZUZvcm1hdDo6aW5p
dGlhbGl6ZURhdGVUaW1lRm9ybWF0KEV4ZWNTdGF0ZSYgZXhlYywgSlNWYWx1ZSBsb2NhbAogICAg
IFN0cmluZ1ZpZXcgc2tlbGV0b25WaWV3KHNrZWxldG9uKTsKICAgICBWZWN0b3I8VUNoYXIsIDMy
PiBwYXR0ZXJuQnVmZmVyKDMyKTsKICAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAgYXV0
byBwYXR0ZXJuTGVuZ3RoID0gdWRhdHBnX2dldEJlc3RQYXR0ZXJuKGdlbmVyYXRvciwgc2tlbGV0
b25WaWV3LnVwY29udmVydGVkQ2hhcmFjdGVycygpLCBza2VsZXRvblZpZXcubGVuZ3RoKCksIHBh
dHRlcm5CdWZmZXIuZGF0YSgpLCBwYXR0ZXJuQnVmZmVyLmNhcGFjaXR5KCksICZzdGF0dXMpOwor
ICAgIGF1dG8gcGF0dGVybkxlbmd0aCA9IHVkYXRwZ19nZXRCZXN0UGF0dGVybihnZW5lcmF0b3Is
IHNrZWxldG9uVmlldy51cGNvbnZlcnRlZENoYXJhY3RlcnMoKSwgc2tlbGV0b25WaWV3Lmxlbmd0
aCgpLCBwYXR0ZXJuQnVmZmVyLmRhdGEoKSwgcGF0dGVybkJ1ZmZlci5zaXplKCksICZzdGF0dXMp
OwogICAgIGlmIChzdGF0dXMgPT0gVV9CVUZGRVJfT1ZFUkZMT1dfRVJST1IpIHsKICAgICAgICAg
c3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgICAgICBwYXR0ZXJuQnVmZmVyID0gVmVjdG9yPFVD
aGFyLCAzMj4ocGF0dGVybkxlbmd0aCk7CisgICAgICAgIHBhdHRlcm5CdWZmZXIuZ3JvdyhwYXR0
ZXJuTGVuZ3RoKTsKICAgICAgICAgdWRhdHBnX2dldEJlc3RQYXR0ZXJuKGdlbmVyYXRvciwgc2tl
bGV0b25WaWV3LnVwY29udmVydGVkQ2hhcmFjdGVycygpLCBza2VsZXRvblZpZXcubGVuZ3RoKCks
IHBhdHRlcm5CdWZmZXIuZGF0YSgpLCBwYXR0ZXJuTGVuZ3RoLCAmc3RhdHVzKTsKICAgICB9CiAg
ICAgdWRhdHBnX2Nsb3NlKGdlbmVyYXRvcik7CkBAIC02NzUsNyArNjcxLDcgQEAgdm9pZCBJbnRs
RGF0ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVEYXRlVGltZUZvcm1hdChFeGVjU3RhdGUmIGV4ZWMs
IEpTVmFsdWUgbG9jYWwKIAogICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKICAgICBTdHJpbmdW
aWV3IHRpbWVab25lVmlldyhtX3RpbWVab25lKTsKLSAgICBtX2RhdGVGb3JtYXQgPSB1ZGF0X29w
ZW4oVURBVF9JR05PUkUsIFVEQVRfSUdOT1JFLCBtX2xvY2FsZS51dGY4KCkuZGF0YSgpLCB0aW1l
Wm9uZVZpZXcudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCksIHRpbWVab25lVmlldy5sZW5ndGgoKSwg
cGF0dGVybi51cGNvbnZlcnRlZENoYXJhY3RlcnMoKSwgcGF0dGVybi5sZW5ndGgoKSwgJnN0YXR1
cyk7CisgICAgbV9kYXRlRm9ybWF0ID0gc3RkOjp1bmlxdWVfcHRyPFVEYXRlRm9ybWF0LCBVRGF0
ZUZvcm1hdERlbGV0ZXI+KHVkYXRfb3BlbihVREFUX0lHTk9SRSwgVURBVF9JR05PUkUsIG1fbG9j
YWxlLnV0ZjgoKS5kYXRhKCksIHRpbWVab25lVmlldy51cGNvbnZlcnRlZENoYXJhY3RlcnMoKSwg
dGltZVpvbmVWaWV3Lmxlbmd0aCgpLCBwYXR0ZXJuLnVwY29udmVydGVkQ2hhcmFjdGVycygpLCBw
YXR0ZXJuLmxlbmd0aCgpLCAmc3RhdHVzKSk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7
CiAgICAgICAgIHRocm93VHlwZUVycm9yKCZleGVjLCBBU0NJSUxpdGVyYWwoImZhaWxlZCB0byBp
bml0aWFsaXplIERhdGVUaW1lRm9ybWF0IikpOwogICAgICAgICByZXR1cm47CkBAIC02ODgsMTgg
KzY4NCwxNyBAQCB2b2lkIEludGxEYXRlVGltZUZvcm1hdDo6aW5pdGlhbGl6ZURhdGVUaW1lRm9y
bWF0KEV4ZWNTdGF0ZSYgZXhlYywgSlNWYWx1ZSBsb2NhbAogICAgIG1faW5pdGlhbGl6ZWREYXRl
VGltZUZvcm1hdCA9IHRydWU7CiAKICAgICAvLyAzOS4gUmV0dXJuIGRhdGVUaW1lRm9ybWF0Lgot
ICAgIHJldHVybjsKIH0KIAogY29uc3QgY2hhciogSW50bERhdGVUaW1lRm9ybWF0Ojp3ZWVrZGF5
U3RyaW5nKFdlZWtkYXkgd2Vla2RheSkKIHsKICAgICBzd2l0Y2ggKHdlZWtkYXkpIHsKICAgICBj
YXNlIFdlZWtkYXk6Ok5hcnJvdzoKLSAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgibmFycm93
Iik7CisgICAgICAgIHJldHVybiAibmFycm93IjsKICAgICBjYXNlIFdlZWtkYXk6OlNob3J0Ogot
ICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJzaG9ydCIpOworICAgICAgICByZXR1cm4gInNo
b3J0IjsKICAgICBjYXNlIFdlZWtkYXk6Okxvbmc6Ci0gICAgICAgIHJldHVybiBBU0NJSUxpdGVy
YWwoImxvbmciKTsKKyAgICAgICAgcmV0dXJuICJsb25nIjsKICAgICBjYXNlIFdlZWtkYXk6Ok5v
bmU6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKQEAgLTkwMCwxMSArODk1LDExIEBAIEpTVmFsdWUgSW50bERhdGVUaW1lRm9ybWF0Ojpmb3Jt
YXQoRXhlY1N0YXRlJiBleGVjLCBkb3VibGUgdmFsdWUpCiAgICAgLy8gRGVsZWdhdGUgcmVtYWlu
aW5nIHN0ZXBzIHRvIElDVS4KICAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsK
ICAgICBWZWN0b3I8VUNoYXIsIDMyPiByZXN1bHQoMzIpOwotICAgIGF1dG8gcmVzdWx0TGVuZ3Ro
ID0gdWRhdF9mb3JtYXQobV9kYXRlRm9ybWF0LCB2YWx1ZSwgcmVzdWx0LmRhdGEoKSwgcmVzdWx0
LmNhcGFjaXR5KCksIG51bGxwdHIsICZzdGF0dXMpOworICAgIGF1dG8gcmVzdWx0TGVuZ3RoID0g
dWRhdF9mb3JtYXQobV9kYXRlRm9ybWF0LmdldCgpLCB2YWx1ZSwgcmVzdWx0LmRhdGEoKSwgcmVz
dWx0LnNpemUoKSwgbnVsbHB0ciwgJnN0YXR1cyk7CiAgICAgaWYgKHN0YXR1cyA9PSBVX0JVRkZF
Ul9PVkVSRkxPV19FUlJPUikgewogICAgICAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAg
ICAgIHJlc3VsdCA9IFZlY3RvcjxVQ2hhciwgMzI+KHJlc3VsdExlbmd0aCk7Ci0gICAgICAgIHVk
YXRfZm9ybWF0KG1fZGF0ZUZvcm1hdCwgdmFsdWUsIHJlc3VsdC5kYXRhKCksIHJlc3VsdExlbmd0
aCwgbnVsbHB0ciwgJnN0YXR1cyk7CisgICAgICAgIHJlc3VsdC5ncm93KHJlc3VsdExlbmd0aCk7
CisgICAgICAgIHVkYXRfZm9ybWF0KG1fZGF0ZUZvcm1hdC5nZXQoKSwgdmFsdWUsIHJlc3VsdC5k
YXRhKCksIHJlc3VsdExlbmd0aCwgbnVsbHB0ciwgJnN0YXR1cyk7CiAgICAgfQogICAgIGlmIChV
X0ZBSUxVUkUoc3RhdHVzKSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZleGVjLCBB
U0NJSUxpdGVyYWwoImZhaWxlZCB0byBmb3JtYXQgZGF0ZSB2YWx1ZSIpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmgKaW5kZXggN2Rj
NTdkMDc1ODI0MjkwMWJhYzY0ZTNhZTc3OTRmODg5YmU0MjhlNC4uYTI1YzE2MDVjZWY3MzcwNjky
NTQ4MzU2NGEyOWYwYzgxZGViYjkxNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmgKQEAgLTU0LDcgKzU0LDYgQEAgcHVibGljOgog
CiBwcm90ZWN0ZWQ6CiAgICAgSW50bERhdGVUaW1lRm9ybWF0KFZNJiwgU3RydWN0dXJlKik7Ci0g
ICAgfkludGxEYXRlVGltZUZvcm1hdCgpOwogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsK
ICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogICAgIHN0YXRpYyB2b2lkIHZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKQEAgLTcwLDYgKzY5LDExIEBAIHByaXZh
dGU6CiAgICAgZW51bSBjbGFzcyBTZWNvbmQgeyBOb25lLCBUd29EaWdpdCwgTnVtZXJpYyB9Owog
ICAgIGVudW0gY2xhc3MgVGltZVpvbmVOYW1lIHsgTm9uZSwgU2hvcnQsIExvbmcgfTsKIAorICAg
IHN0cnVjdCBVRGF0ZUZvcm1hdERlbGV0ZXIgeworICAgICAgICB2b2lkIG9wZXJhdG9yKCkoVURh
dGVGb3JtYXQqKSBjb25zdDsKKyAgICB9OworCisgICAgdm9pZCBzZXRGb3JtYXRzRnJvbVBhdHRl
cm4oY29uc3QgU3RyaW5nVmlldyYpOwogICAgIHN0YXRpYyBjb25zdCBjaGFyKiB3ZWVrZGF5U3Ry
aW5nKFdlZWtkYXkpOwogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBlcmFTdHJpbmcoRXJhKTsKICAg
ICBzdGF0aWMgY29uc3QgY2hhciogeWVhclN0cmluZyhZZWFyKTsKQEAgLTgxLDE0ICs4NSwxMyBA
QCBwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdCBjaGFyKiB0aW1lWm9uZU5hbWVTdHJpbmcoVGlt
ZVpvbmVOYW1lKTsKIAogICAgIGJvb2wgbV9pbml0aWFsaXplZERhdGVUaW1lRm9ybWF0IHsgZmFs
c2UgfTsKLSAgICB2b2lkIHNldEZvcm1hdHNGcm9tUGF0dGVybihjb25zdCBTdHJpbmdWaWV3Jik7
CiAgICAgV3JpdGVCYXJyaWVyPEpTQm91bmRGdW5jdGlvbj4gbV9ib3VuZEZvcm1hdDsKLSAgICBV
RGF0ZUZvcm1hdCogbV9kYXRlRm9ybWF0IHsgbnVsbHB0ciB9OworICAgIHN0ZDo6dW5pcXVlX3B0
cjxVRGF0ZUZvcm1hdCwgVURhdGVGb3JtYXREZWxldGVyPiBtX2RhdGVGb3JtYXQ7CiAKLSAgICBT
dHJpbmcgbV9sb2NhbGUgeyBBU0NJSUxpdGVyYWwoImVuIikgfTsKLSAgICBTdHJpbmcgbV9jYWxl
bmRhciB7IEFTQ0lJTGl0ZXJhbCgiZ3JlZ29yaWFuIikgfTsKLSAgICBTdHJpbmcgbV9udW1iZXJp
bmdTeXN0ZW0geyBBU0NJSUxpdGVyYWwoImxhdG4iKSB9OwotICAgIFN0cmluZyBtX3RpbWVab25l
IHsgQVNDSUlMaXRlcmFsKCJVVEMiKSB9OworICAgIFN0cmluZyBtX2xvY2FsZTsKKyAgICBTdHJp
bmcgbV9jYWxlbmRhcjsKKyAgICBTdHJpbmcgbV9udW1iZXJpbmdTeXN0ZW07CisgICAgU3RyaW5n
IG1fdGltZVpvbmU7CiAgICAgYm9vbCBtX2hvdXIxMiB7IHRydWUgfTsKICAgICBXZWVrZGF5IG1f
d2Vla2RheSB7IFdlZWtkYXk6Ok5vbmUgfTsKICAgICBFcmEgbV9lcmEgeyBFcmE6Ok5vbmUgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZv
cm1hdENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxE
YXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcAppbmRleCA2YTdjMmU0YWZhMzc0ZDc3ZmU1ZmIw
YmUyYzdjN2NiNTQzMDc3NGFjLi4yMGY3OTU0ZDQ3MGRkMDQyYzRkMmVkNWNiZTg1MjljMDllM2Ni
ODliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRp
bWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwCkBAIC0yMyw3ICsyMyw2IEBACiAg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotCiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaCIKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdENv
bnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJG
b3JtYXRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggMDdmYTY1NGUzZmI0ZDg4NmRlNGRiMDJlODJiMTc4
OWNiYmFiYzU2My4uZWQyZTZlNzlmZjgzYzNlNDhiNTQzMmY2MGE4MTdjN2FlNGQ3YzQ5ZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdENv
bnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVt
YmVyRm9ybWF0Q29uc3RydWN0b3IuY3BwCkBAIC0yMyw3ICsyMyw2IEBACiAgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKaW5kZXggMzk1YTA0MzBjN2YwOGIyMjA1MWIx
ZWFjNTRmOWZjMDBiNzk2MmVlNC4uZjhmYzU2ZjZkMjYzOWY0NWVlMjVjMjJjMzEwN2ZhMmM0MjBk
ZjI2OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVj
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAK
QEAgLTk2NywyMiArOTY3LDIwIEBAIFZlY3RvcjxTdHJpbmc+IG51bWJlcmluZ1N5c3RlbXNGb3JM
b2NhbGUoY29uc3QgU3RyaW5nJiBsb2NhbGUpCiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFZl
Y3RvcjxTdHJpbmc+PiBjYWNoZWROdW1iZXJpbmdTeXN0ZW1zOwogICAgIFZlY3RvcjxTdHJpbmc+
JiBhdmFpbGFibGVOdW1iZXJpbmdTeXN0ZW1zID0gY2FjaGVkTnVtYmVyaW5nU3lzdGVtcy5nZXQo
KTsKICAgICBpZiAoYXZhaWxhYmxlTnVtYmVyaW5nU3lzdGVtcy5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgVUVycm9yQ29kZSBzdGF0dXMoVV9aRVJPX0VSUk9SKTsKKyAgICAgICAgVUVycm9yQ29kZSBz
dGF0dXMgPSBVX1pFUk9fRVJST1I7CiAgICAgICAgIFVFbnVtZXJhdGlvbiogbnVtYmVyaW5nU3lz
dGVtTmFtZXMgPSB1bnVtc3lzX29wZW5BdmFpbGFibGVOYW1lcygmc3RhdHVzKTsKICAgICAgICAg
QVNTRVJUKFVfU1VDQ0VTUyhzdGF0dXMpKTsKLSAgICAgICAgc3RhdHVzID0gVV9aRVJPX0VSUk9S
OwogCiAgICAgICAgIGludDMyX3QgcmVzdWx0TGVuZ3RoOwogICAgICAgICAvLyBOdW1iZXJpbmcg
c3lzdGVtIG5hbWVzIGFyZSBhbHdheXMgQVNDSUksIHNvIHVzZSBjaGFyW10uCiAgICAgICAgIHdo
aWxlIChjb25zdCBjaGFyKiByZXN1bHQgPSB1ZW51bV9uZXh0KG51bWJlcmluZ1N5c3RlbU5hbWVz
LCAmcmVzdWx0TGVuZ3RoLCAmc3RhdHVzKSkgewogICAgICAgICAgICAgQVNTRVJUKFVfU1VDQ0VT
UyhzdGF0dXMpKTsKLSAgICAgICAgICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKICAgICAgICAg
ICAgIGF2YWlsYWJsZU51bWJlcmluZ1N5c3RlbXMuYXBwZW5kKFN0cmluZyhyZXN1bHQsIHJlc3Vs
dExlbmd0aCkpOwogICAgICAgICB9CiAgICAgICAgIHVlbnVtX2Nsb3NlKG51bWJlcmluZ1N5c3Rl
bU5hbWVzKTsKICAgICB9CiAKLSAgICBVRXJyb3JDb2RlIHN0YXR1cyhVX1pFUk9fRVJST1IpOwor
ICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAgIFVOdW1iZXJpbmdTeXN0
ZW0qIGRlZmF1bHRTeXN0ZW0gPSB1bnVtc3lzX29wZW4obG9jYWxlLnV0ZjgoKS5kYXRhKCksICZz
dGF0dXMpOwogICAgIEFTU0VSVChVX1NVQ0NFU1Moc3RhdHVzKSk7CiAgICAgU3RyaW5nIGRlZmF1
bHRTeXN0ZW1OYW1lKHVudW1zeXNfZ2V0TmFtZShkZWZhdWx0U3lzdGVtKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>271839</attachid>
            <date>2016-02-19 19:08:45 -0800</date>
            <delta_ts>2016-02-19 19:10:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-154486-20160219190856.patch</filename>
            <type>text/plain</type>
            <size>21737</size>
            <attacher name="Sukolsak Sakshuwong">sukolsak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk2ODUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
NjYzMGM0NGIwN2NiYWJlZDZlODZkMjViOWMwNjExNjlhODNkZWJjLi5jNzI0YWM3OTBkMTA5MGRi
MTM5YTY1ODU1ZmMwMDMzNGY4ZWYyODZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw0NyBAQAogMjAxNi0wMi0xOSAgU3Vrb2xzYWsgU2Frc2h1d29uZyAgPHN1a29sc2FrQGdt
YWlsLmNvbT4KIAorICAgICAgICBJbXByb3ZlbWVudHMgdG8gSW50bCBjb2RlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQ0ODYKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGRvZXMgc2V2
ZXJhbCB0aGluZ3M6CisgICAgICAgIC0gVXNlIHN0ZDo6dW5pcXVlX3B0ciB0byBzdG9yZSBJQ1Ug
b2JqZWN0cy4KKyAgICAgICAgLSBQYXNzIFZlY3Rvcjo6c2l6ZSgpIHRvIElDVSBmdW5jdGlvbnMg
dGhhdCB0YWtlIGEgYnVmZmVyIHNpemUgaW5zdGVhZAorICAgICAgICAgIG9mIFZlY3Rvcjo6Y2Fw
YWNpdHkoKS4KKyAgICAgICAgLSBJZiBVX1NVQ0NFU1Moc3RhdHVzKSBpcyB0cnVlLCBpdCBtZWFu
cyB0aGVyZSBpcyBubyBlcnJvciwgYnV0IHRoZXJlCisgICAgICAgICAgY291bGQgYmUgd2Fybmlu
Z3MuIElDVSBmdW5jdGlvbnMgaWdub3JlIHdhcm5pbmdzLiBTbywgdGhlcmUgaXMgbm8gbmVlZAor
ICAgICAgICAgIHRvIHJlc2V0IHN0YXR1cyB0byBVX1pFUk9fRVJST1IuCisgICAgICAgIC0gUmVt
b3ZlIHRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgU3RyaW5nIGluc3RhbmNlIHZhcmlhYmxlcyBv
ZgorICAgICAgICAgIEludGxEYXRlVGltZUZvcm1hdC4gVGhlc2UgdmFsdWVzIGFyZSBuZXZlciBy
ZWFkIGFuZCBjYXVzZSB1bm5lY2Vzc2FyeQorICAgICAgICAgIG1lbW9yeSBhbGxvY2F0aW9uLgor
ICAgICAgICAtIEZpeCBjb2Rpbmcgc3R5bGUuCisgICAgICAgIC0gU29tZSBzbWFsbCBvcHRpbWl6
YXRpb24uCisKKyAgICAgICAgKiBydW50aW1lL0ludGxDb2xsYXRvci5jcHA6CisgICAgICAgIChK
U0M6OkludGxDb2xsYXRvcjo6VUNvbGxhdG9yRGVsZXRlcjo6b3BlcmF0b3IoKSk6CisgICAgICAg
IChKU0M6OkludGxDb2xsYXRvcjo6Y3JlYXRlQ29sbGF0b3IpOgorICAgICAgICAoSlNDOjpJbnRs
Q29sbGF0b3I6OmNvbXBhcmVTdHJpbmdzKToKKyAgICAgICAgKEpTQzo6SW50bENvbGxhdG9yOjp+
SW50bENvbGxhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0ludGxDb2xsYXRvci5o
OgorICAgICAgICAqIHJ1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcDoKKyAgICAgICAgKEpT
Qzo6SW50bERhdGVUaW1lRm9ybWF0OjpVRGF0ZUZvcm1hdERlbGV0ZXI6Om9wZXJhdG9yKCkpOgor
ICAgICAgICAoSlNDOjpkZWZhdWx0VGltZVpvbmUpOgorICAgICAgICAoSlNDOjpjYW5vbmljYWxp
emVUaW1lWm9uZU5hbWUpOgorICAgICAgICAoSlNDOjp0b0RhdGVUaW1lT3B0aW9uc0FueURhdGUp
OgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVEYXRlVGltZUZv
cm1hdCk6CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdDo6d2Vla2RheVN0cmluZyk6
CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdDo6Zm9ybWF0KToKKyAgICAgICAgKEpT
Qzo6SW50bERhdGVUaW1lRm9ybWF0Ojp+SW50bERhdGVUaW1lRm9ybWF0KTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6bG9jYWxlRGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9JbnRs
RGF0ZVRpbWVGb3JtYXQuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENv
bnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1
Y3Rvci5jcHA6CisgICAgICAgICogcnVudGltZS9JbnRsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpT
Qzo6bnVtYmVyaW5nU3lzdGVtc0ZvckxvY2FsZSk6CisKKzIwMTYtMDItMTkgIFN1a29sc2FrIFNh
a3NodXdvbmcgIDxzdWtvbHNha0BnbWFpbC5jb20+CisKICAgICAgICAgW0lOVExdIEltcGxlbWVu
dCBOdW1iZXIgRm9ybWF0IEZ1bmN0aW9ucwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3NjA1CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsQ29sbGF0b3IuY3BwCmluZGV4IDJiOWQ0MWQ3ZTY3MDhiNTQyMTEzOTJlODc5MTE3
MDZmOWIzNGNkODYuLjYxZDM1YTUzZThmZDNlZTI0OTFhNzc2MmFhYWFjNzZkMDFhODJmM2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yLmNwcApAQCAt
NTAsNiArNTAsMTIgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHJlbGV2YW50RXh0ZW5zaW9u
S2V5c1syXSA9IHsgImNvIiwgImtuIiB9Owogc3RhdGljIGNvbnN0IHNpemVfdCBpbmRleE9mRXh0
ZW5zaW9uS2V5Q28gPSAwOwogc3RhdGljIGNvbnN0IHNpemVfdCBpbmRleE9mRXh0ZW5zaW9uS2V5
S24gPSAxOwogCit2b2lkIEludGxDb2xsYXRvcjo6VUNvbGxhdG9yRGVsZXRlcjo6b3BlcmF0b3Io
KShVQ29sbGF0b3IqIGNvbGxhdG9yKSBjb25zdAoreworICAgIGlmIChjb2xsYXRvcikKKyAgICAg
ICAgdWNvbF9jbG9zZShjb2xsYXRvcik7Cit9CisKIEludGxDb2xsYXRvciogSW50bENvbGxhdG9y
OjpjcmVhdGUoVk0mIHZtLCBJbnRsQ29sbGF0b3JDb25zdHJ1Y3RvciogY29uc3RydWN0b3IpCiB7
CiAgICAgSW50bENvbGxhdG9yKiBmb3JtYXQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJ
bnRsQ29sbGF0b3I+KHZtLmhlYXApKSBJbnRsQ29sbGF0b3Iodm0sIGNvbnN0cnVjdG9yLT5jb2xs
YXRvclN0cnVjdHVyZSgpKTsKQEAgLTY3LDEyICs3Myw2IEBAIEludGxDb2xsYXRvcjo6SW50bENv
bGxhdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CiB9CiAKLUludGxDb2xsYXRv
cjo6fkludGxDb2xsYXRvcigpCi17Ci0gICAgaWYgKG1fY29sbGF0b3IpCi0gICAgICAgIHVjb2xf
Y2xvc2UobV9jb2xsYXRvcik7Ci19Ci0KIHZvaWQgSW50bENvbGxhdG9yOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0pCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwpAQCAtMzI2LDcgKzMy
Niw3IEBAIHZvaWQgSW50bENvbGxhdG9yOjpjcmVhdGVDb2xsYXRvcihFeGVjU3RhdGUmIHN0YXRl
KQogICAgIH0KIAogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgIFVD
b2xsYXRvciogY29sbGF0b3IgPSB1Y29sX29wZW4obV9sb2NhbGUudXRmOCgpLmRhdGEoKSwgJnN0
YXR1cyk7CisgICAgYXV0byBjb2xsYXRvciA9IHN0ZDo6dW5pcXVlX3B0cjxVQ29sbGF0b3IsIFVD
b2xsYXRvckRlbGV0ZXI+KHVjb2xfb3BlbihtX2xvY2FsZS51dGY4KCkuZGF0YSgpLCAmc3RhdHVz
KSk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQogICAgICAgICByZXR1cm47CiAKQEAgLTM0
NywyNCArMzQ3LDIyIEBAIHZvaWQgSW50bENvbGxhdG9yOjpjcmVhdGVDb2xsYXRvcihFeGVjU3Rh
dGUmIHN0YXRlKQogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgIH0KLSAgICB1Y29sX3NldEF0dHJpYnV0ZShjb2xsYXRvciwgVUNPTF9TVFJFTkdUSCwgc3Ry
ZW5ndGgsICZzdGF0dXMpOwotICAgIHVjb2xfc2V0QXR0cmlidXRlKGNvbGxhdG9yLCBVQ09MX0NB
U0VfTEVWRUwsIGNhc2VMZXZlbCwgJnN0YXR1cyk7CisgICAgdWNvbF9zZXRBdHRyaWJ1dGUoY29s
bGF0b3IuZ2V0KCksIFVDT0xfU1RSRU5HVEgsIHN0cmVuZ3RoLCAmc3RhdHVzKTsKKyAgICB1Y29s
X3NldEF0dHJpYnV0ZShjb2xsYXRvci5nZXQoKSwgVUNPTF9DQVNFX0xFVkVMLCBjYXNlTGV2ZWws
ICZzdGF0dXMpOwogCi0gICAgdWNvbF9zZXRBdHRyaWJ1dGUoY29sbGF0b3IsIFVDT0xfTlVNRVJJ
Q19DT0xMQVRJT04sIG1fbnVtZXJpYyA/IFVDT0xfT04gOiBVQ09MX09GRiwgJnN0YXR1cyk7Cisg
ICAgdWNvbF9zZXRBdHRyaWJ1dGUoY29sbGF0b3IuZ2V0KCksIFVDT0xfTlVNRVJJQ19DT0xMQVRJ
T04sIG1fbnVtZXJpYyA/IFVDT0xfT04gOiBVQ09MX09GRiwgJnN0YXR1cyk7CiAKICAgICAvLyBG
SVhNRTogU2V0dGluZyBVQ09MX0FMVEVSTkFURV9IQU5ETElORyB0byBVQ09MX1NISUZURUQgY2F1
c2VzIHB1bmN0dWF0aW9uIGFuZCB3aGl0ZXNwYWNlIHRvIGJlCiAgICAgLy8gaWdub3JlZC4gVGhl
cmUgaXMgY3VycmVudGx5IG5vIHdheSB0byBpZ25vcmUgb25seSBwdW5jdHVhdGlvbi4KLSAgICB1
Y29sX3NldEF0dHJpYnV0ZShjb2xsYXRvciwgVUNPTF9BTFRFUk5BVEVfSEFORExJTkcsIG1faWdu
b3JlUHVuY3R1YXRpb24gPyBVQ09MX1NISUZURUQgOiBVQ09MX0RFRkFVTFQsICZzdGF0dXMpOwor
ICAgIHVjb2xfc2V0QXR0cmlidXRlKGNvbGxhdG9yLmdldCgpLCBVQ09MX0FMVEVSTkFURV9IQU5E
TElORywgbV9pZ25vcmVQdW5jdHVhdGlvbiA/IFVDT0xfU0hJRlRFRCA6IFVDT0xfREVGQVVMVCwg
JnN0YXR1cyk7CiAKICAgICAvLyAiVGhlIG1ldGhvZCBpcyByZXF1aXJlZCB0byByZXR1cm4gMCB3
aGVuIGNvbXBhcmluZyBTdHJpbmdzIHRoYXQgYXJlIGNvbnNpZGVyZWQgY2Fub25pY2FsbHkKICAg
ICAvLyBlcXVpdmFsZW50IGJ5IHRoZSBVbmljb2RlIHN0YW5kYXJkLiIKLSAgICB1Y29sX3NldEF0
dHJpYnV0ZShjb2xsYXRvciwgVUNPTF9OT1JNQUxJWkFUSU9OX01PREUsIFVDT0xfT04sICZzdGF0
dXMpOwotICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewotICAgICAgICB1Y29sX2Nsb3NlKGNv
bGxhdG9yKTsKKyAgICB1Y29sX3NldEF0dHJpYnV0ZShjb2xsYXRvci5nZXQoKSwgVUNPTF9OT1JN
QUxJWkFUSU9OX01PREUsIFVDT0xfT04sICZzdGF0dXMpOworICAgIGlmIChVX0ZBSUxVUkUoc3Rh
dHVzKSkKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAotICAgIG1fY29sbGF0b3IgPSBjb2xsYXRv
cjsKKyAgICBtX2NvbGxhdG9yID0gV1RGTW92ZShjb2xsYXRvcik7CiB9CiAKIEpTVmFsdWUgSW50
bENvbGxhdG9yOjpjb21wYXJlU3RyaW5ncyhFeGVjU3RhdGUmIHN0YXRlLCBTdHJpbmdWaWV3IHgs
IFN0cmluZ1ZpZXcgeSkKQEAgLTM3OSw3ICszNzcsNyBAQCBKU1ZhbHVlIEludGxDb2xsYXRvcjo6
Y29tcGFyZVN0cmluZ3MoRXhlY1N0YXRlJiBzdGF0ZSwgU3RyaW5nVmlldyB4LCBTdHJpbmdWaWV3
CiAgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CiAgICAgVUNoYXJJdGVyYXRv
ciBpdGVyYXRvclggPSBjcmVhdGVJdGVyYXRvcih4KTsKICAgICBVQ2hhckl0ZXJhdG9yIGl0ZXJh
dG9yWSA9IGNyZWF0ZUl0ZXJhdG9yKHkpOwotICAgIGF1dG8gcmVzdWx0ID0gdWNvbF9zdHJjb2xs
SXRlcihtX2NvbGxhdG9yLCAmaXRlcmF0b3JYLCAmaXRlcmF0b3JZLCAmc3RhdHVzKTsKKyAgICBh
dXRvIHJlc3VsdCA9IHVjb2xfc3RyY29sbEl0ZXIobV9jb2xsYXRvci5nZXQoKSwgJml0ZXJhdG9y
WCwgJml0ZXJhdG9yWSwgJnN0YXR1cyk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQogICAg
ICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZUVycm9y
KCZzdGF0ZSwgQVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gY29tcGFyZSBzdHJpbmdzLiIpKSk7CiAg
ICAgcmV0dXJuIGpzTnVtYmVyKHJlc3VsdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxDb2xsYXRvci5oCmluZGV4IGQzOWU1ZDIzNGVjY2EzOTI5NWQ4N2VmMzU1ZDQ2ZDIy
NTZiNzA0ZWQuLmE3YWRkZjk0ODE1NjQ2OTI0NjgwYjZlMWE1ZjE5ZDE1MTU4ZDdlY2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5oCkBAIC01NSw3ICs1
NSw2IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIEludGxDb2xsYXRvcihWTSYsIFN0cnVj
dHVyZSopOwotICAgIH5JbnRsQ29sbGF0b3IoKTsKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZN
Jik7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKICAgICBzdGF0aWMgdm9pZCB2
aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CkBAIC02NCw2ICs2MywxMCBAQCBw
cml2YXRlOgogICAgIGVudW0gY2xhc3MgVXNhZ2UgeyBTb3J0LCBTZWFyY2ggfTsKICAgICBlbnVt
IGNsYXNzIFNlbnNpdGl2aXR5IHsgQmFzZSwgQWNjZW50LCBDYXNlLCBWYXJpYW50IH07CiAKKyAg
ICBzdHJ1Y3QgVUNvbGxhdG9yRGVsZXRlciB7CisgICAgICAgIHZvaWQgb3BlcmF0b3IoKShVQ29s
bGF0b3IqKSBjb25zdDsKKyAgICB9OworCiAgICAgdm9pZCBjcmVhdGVDb2xsYXRvcihFeGVjU3Rh
dGUmKTsKICAgICBzdGF0aWMgY29uc3QgY2hhciogdXNhZ2VTdHJpbmcoVXNhZ2UpOwogICAgIHN0
YXRpYyBjb25zdCBjaGFyKiBzZW5zaXRpdml0eVN0cmluZyhTZW5zaXRpdml0eSk7CkBAIC03Myw3
ICs3Niw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fY29sbGF0aW9uOwogICAgIFNlbnNpdGl2
aXR5IG1fc2Vuc2l0aXZpdHk7CiAgICAgV3JpdGVCYXJyaWVyPEpTQm91bmRGdW5jdGlvbj4gbV9i
b3VuZENvbXBhcmU7Ci0gICAgVUNvbGxhdG9yKiBtX2NvbGxhdG9yIHsgbnVsbHB0ciB9OworICAg
IHN0ZDo6dW5pcXVlX3B0cjxVQ29sbGF0b3IsIFVDb2xsYXRvckRlbGV0ZXI+IG1fY29sbGF0b3I7
CiAgICAgYm9vbCBtX251bWVyaWM7CiAgICAgYm9vbCBtX2lnbm9yZVB1bmN0dWF0aW9uOwogICAg
IGJvb2wgbV9pbml0aWFsaXplZENvbGxhdG9yIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCmluZGV4IGFhNTNj
ODUzM2FlYTJmMGExYmRiN2FkOTYxZDcxMThmMGYxOGEzNzkuLmZiNjlkOTEyYjFhMWUwMTk3MmI4
OWQ2OGI5YzliODA0N2IzZDQyMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcApAQCAtMzksNyArMzksNiBAQAogI2luY2x1
ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIK
ICNpbmNsdWRlIDx1bmljb2RlL3VjYWwuaD4KLSNpbmNsdWRlIDx1bmljb2RlL3VkYXQuaD4KICNp
bmNsdWRlIDx1bmljb2RlL3VkYXRwZy5oPgogI2luY2x1ZGUgPHVuaWNvZGUvdWVudW0uaD4KIApA
QCAtNTEsNiArNTAsMTIgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHJlbGV2YW50RXh0ZW5z
aW9uS2V5c1syXSA9IHsgImNhIiwgIm51IiB9Owogc3RhdGljIGNvbnN0IHNpemVfdCBpbmRleE9m
RXh0ZW5zaW9uS2V5Q2EgPSAwOwogc3RhdGljIGNvbnN0IHNpemVfdCBpbmRleE9mRXh0ZW5zaW9u
S2V5TnUgPSAxOwogCit2b2lkIEludGxEYXRlVGltZUZvcm1hdDo6VURhdGVGb3JtYXREZWxldGVy
OjpvcGVyYXRvcigpKFVEYXRlRm9ybWF0KiBkYXRlRm9ybWF0KSBjb25zdAoreworICAgIGlmIChk
YXRlRm9ybWF0KQorICAgICAgICB1ZGF0X2Nsb3NlKGRhdGVGb3JtYXQpOworfQorCiBJbnRsRGF0
ZVRpbWVGb3JtYXQqIEludGxEYXRlVGltZUZvcm1hdDo6Y3JlYXRlKFZNJiB2bSwgSW50bERhdGVU
aW1lRm9ybWF0Q29uc3RydWN0b3IqIGNvbnN0cnVjdG9yKQogewogICAgIEludGxEYXRlVGltZUZv
cm1hdCogZm9ybWF0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bERhdGVUaW1lRm9y
bWF0Pih2bS5oZWFwKSkgSW50bERhdGVUaW1lRm9ybWF0KHZtLCBjb25zdHJ1Y3Rvci0+ZGF0ZVRp
bWVGb3JtYXRTdHJ1Y3R1cmUoKSk7CkBAIC02OCwxMiArNzMsNiBAQCBJbnRsRGF0ZVRpbWVGb3Jt
YXQ6OkludGxEYXRlVGltZUZvcm1hdChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewog
fQogCi1JbnRsRGF0ZVRpbWVGb3JtYXQ6On5JbnRsRGF0ZVRpbWVGb3JtYXQoKQotewotICAgIGlm
IChtX2RhdGVGb3JtYXQpCi0gICAgICAgIHVkYXRfY2xvc2UobV9kYXRlRm9ybWF0KTsKLX0KLQog
dm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKICAgICBC
YXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CkBAIC0xMDcsMjEgKzEwNiwyMCBAQCBzdGF0aWMgU3Ry
aW5nIGRlZmF1bHRUaW1lWm9uZSgpCiAKICAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19F
UlJPUjsKICAgICBWZWN0b3I8VUNoYXIsIDMyPiBidWZmZXIoMzIpOwotICAgIGF1dG8gYnVmZmVy
TGVuZ3RoID0gdWNhbF9nZXREZWZhdWx0VGltZVpvbmUoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLmNh
cGFjaXR5KCksICZzdGF0dXMpOworICAgIGF1dG8gYnVmZmVyTGVuZ3RoID0gdWNhbF9nZXREZWZh
dWx0VGltZVpvbmUoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSwgJnN0YXR1cyk7CiAgICAg
aWYgKHN0YXR1cyA9PSBVX0JVRkZFUl9PVkVSRkxPV19FUlJPUikgewogICAgICAgICBzdGF0dXMg
PSBVX1pFUk9fRVJST1I7Ci0gICAgICAgIGJ1ZmZlciA9IFZlY3RvcjxVQ2hhciwgMzI+KGJ1ZmZl
ckxlbmd0aCk7CisgICAgICAgIGJ1ZmZlci5ncm93KGJ1ZmZlckxlbmd0aCk7CiAgICAgICAgIHVj
YWxfZ2V0RGVmYXVsdFRpbWVab25lKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlckxlbmd0aCwgJnN0YXR1
cyk7CiAgICAgfQogICAgIGlmIChVX1NVQ0NFU1Moc3RhdHVzKSkgewogICAgICAgICBzdGF0dXMg
PSBVX1pFUk9fRVJST1I7Ci0gICAgICAgIFVCb29sIGlzU3lzdGVtSUQgPSBmYWxzZTsKICAgICAg
ICAgVmVjdG9yPFVDaGFyLCAzMj4gY2Fub25pY2FsQnVmZmVyKDMyKTsKLSAgICAgICAgYXV0byBj
YW5vbmljYWxMZW5ndGggPSB1Y2FsX2dldENhbm9uaWNhbFRpbWVab25lSUQoYnVmZmVyLmRhdGEo
KSwgYnVmZmVyTGVuZ3RoLCBjYW5vbmljYWxCdWZmZXIuZGF0YSgpLCBjYW5vbmljYWxCdWZmZXIu
Y2FwYWNpdHkoKSwgJmlzU3lzdGVtSUQsICZzdGF0dXMpOworICAgICAgICBhdXRvIGNhbm9uaWNh
bExlbmd0aCA9IHVjYWxfZ2V0Q2Fub25pY2FsVGltZVpvbmVJRChidWZmZXIuZGF0YSgpLCBidWZm
ZXJMZW5ndGgsIGNhbm9uaWNhbEJ1ZmZlci5kYXRhKCksIGNhbm9uaWNhbEJ1ZmZlci5zaXplKCks
IG51bGxwdHIsICZzdGF0dXMpOwogICAgICAgICBpZiAoc3RhdHVzID09IFVfQlVGRkVSX09WRVJG
TE9XX0VSUk9SKSB7CiAgICAgICAgICAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAgICAg
ICAgICBjYW5vbmljYWxCdWZmZXIgPSBWZWN0b3I8VUNoYXIsIDMyPihjYW5vbmljYWxMZW5ndGgp
OwotICAgICAgICAgICAgdWNhbF9nZXRDYW5vbmljYWxUaW1lWm9uZUlEKGJ1ZmZlci5kYXRhKCks
IGJ1ZmZlckxlbmd0aCwgY2Fub25pY2FsQnVmZmVyLmRhdGEoKSwgY2Fub25pY2FsTGVuZ3RoLCAm
aXNTeXN0ZW1JRCwgJnN0YXR1cyk7CisgICAgICAgICAgICBjYW5vbmljYWxCdWZmZXIuZ3Jvdyhj
YW5vbmljYWxMZW5ndGgpOworICAgICAgICAgICAgdWNhbF9nZXRDYW5vbmljYWxUaW1lWm9uZUlE
KGJ1ZmZlci5kYXRhKCksIGJ1ZmZlckxlbmd0aCwgY2Fub25pY2FsQnVmZmVyLmRhdGEoKSwgY2Fu
b25pY2FsTGVuZ3RoLCBudWxscHRyLCAmc3RhdHVzKTsKICAgICAgICAgfQogICAgICAgICBpZiAo
VV9TVUNDRVNTKHN0YXR1cykpCiAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKGNhbm9uaWNhbEJ1
ZmZlci5kYXRhKCksIGNhbm9uaWNhbExlbmd0aCk7CkBAIC0xNjAsMTQgKzE1OCwxMiBAQCBzdGF0
aWMgU3RyaW5nIGNhbm9uaWNhbGl6ZVRpbWVab25lTmFtZShjb25zdCBTdHJpbmcmIHRpbWVab25l
TmFtZSkKICAgICAgICAgLy8gMi4gSWYgaWFuYVRpbWVab25lIGlzIGEgTGluayBuYW1lLCB0aGVu
IGxldCBpYW5hVGltZVpvbmUgYmUgdGhlIGNvcnJlc3BvbmRpbmcgWm9uZSBuYW1lIGFzIHNwZWNp
ZmllZCBpbiB0aGUg4oCcYmFja3dhcmTigJ0gZmlsZSBvZiB0aGUgSUFOQSBUaW1lIFpvbmUgRGF0
YWJhc2UuCiAKICAgICAgICAgVmVjdG9yPFVDaGFyLCAzMj4gYnVmZmVyKGlhbmFUaW1lWm9uZUxl
bmd0aCk7Ci0gICAgICAgIFVCb29sIGlzU3lzdGVtSUQgPSBmYWxzZTsKICAgICAgICAgc3RhdHVz
ID0gVV9aRVJPX0VSUk9SOwotICAgICAgICBhdXRvIGNhbm9uaWNhbExlbmd0aCA9IHVjYWxfZ2V0
Q2Fub25pY2FsVGltZVpvbmVJRChpYW5hVGltZVpvbmUsIGlhbmFUaW1lWm9uZUxlbmd0aCwgYnVm
ZmVyLmRhdGEoKSwgaWFuYVRpbWVab25lTGVuZ3RoLCAmaXNTeXN0ZW1JRCwgJnN0YXR1cyk7Cisg
ICAgICAgIGF1dG8gY2Fub25pY2FsTGVuZ3RoID0gdWNhbF9nZXRDYW5vbmljYWxUaW1lWm9uZUlE
KGlhbmFUaW1lWm9uZSwgaWFuYVRpbWVab25lTGVuZ3RoLCBidWZmZXIuZGF0YSgpLCBpYW5hVGlt
ZVpvbmVMZW5ndGgsIG51bGxwdHIsICZzdGF0dXMpOwogICAgICAgICBpZiAoc3RhdHVzID09IFVf
QlVGRkVSX09WRVJGTE9XX0VSUk9SKSB7Ci0gICAgICAgICAgICBidWZmZXIgPSBWZWN0b3I8VUNo
YXIsIDMyPihjYW5vbmljYWxMZW5ndGgpOwotICAgICAgICAgICAgaXNTeXN0ZW1JRCA9IGZhbHNl
OworICAgICAgICAgICAgYnVmZmVyLmdyb3coY2Fub25pY2FsTGVuZ3RoKTsKICAgICAgICAgICAg
IHN0YXR1cyA9IFVfWkVST19FUlJPUjsKLSAgICAgICAgICAgIHVjYWxfZ2V0Q2Fub25pY2FsVGlt
ZVpvbmVJRChpYW5hVGltZVpvbmUsIGlhbmFUaW1lWm9uZUxlbmd0aCwgYnVmZmVyLmRhdGEoKSwg
Y2Fub25pY2FsTGVuZ3RoLCAmaXNTeXN0ZW1JRCwgJnN0YXR1cyk7CisgICAgICAgICAgICB1Y2Fs
X2dldENhbm9uaWNhbFRpbWVab25lSUQoaWFuYVRpbWVab25lLCBpYW5hVGltZVpvbmVMZW5ndGgs
IGJ1ZmZlci5kYXRhKCksIGNhbm9uaWNhbExlbmd0aCwgbnVsbHB0ciwgJnN0YXR1cyk7CiAgICAg
ICAgIH0KICAgICAgICAgQVNTRVJUKFVfU1VDQ0VTUyhzdGF0dXMpKTsKICAgICAgICAgY2Fub25p
Y2FsID0gU3RyaW5nKGJ1ZmZlci5kYXRhKCksIGNhbm9uaWNhbExlbmd0aCk7CkBAIC0xOTEsMTEg
KzE4Nyw5IEBAIHN0YXRpYyBWZWN0b3I8U3RyaW5nPiBsb2NhbGVEYXRhKGNvbnN0IFN0cmluZyYg
bG9jYWxlLCBzaXplX3Qga2V5SW5kZXgpCiAgICAgICAgIFVFbnVtZXJhdGlvbiogY2FsZW5kYXJz
ID0gdWNhbF9nZXRLZXl3b3JkVmFsdWVzRm9yTG9jYWxlKCJjYWxlbmRhciIsIGxvY2FsZS51dGY4
KCkuZGF0YSgpLCBmYWxzZSwgJnN0YXR1cyk7CiAgICAgICAgIEFTU0VSVChVX1NVQ0NFU1Moc3Rh
dHVzKSk7CiAKLSAgICAgICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAgICAgICBpbnQzMl90
IG5hbWVMZW5ndGg7CiAgICAgICAgIHdoaWxlIChjb25zdCBjaGFyKiBhdmFpbGFibGVOYW1lID0g
dWVudW1fbmV4dChjYWxlbmRhcnMsICZuYW1lTGVuZ3RoLCAmc3RhdHVzKSkgewogICAgICAgICAg
ICAgQVNTRVJUKFVfU1VDQ0VTUyhzdGF0dXMpKTsKLSAgICAgICAgICAgIHN0YXR1cyA9IFVfWkVS
T19FUlJPUjsKICAgICAgICAgICAgIFN0cmluZyBjYWxlbmRhciA9IFN0cmluZyhhdmFpbGFibGVO
YW1lLCBuYW1lTGVuZ3RoKTsKICAgICAgICAgICAgIGtleUxvY2FsZURhdGEuYXBwZW5kKGNhbGVu
ZGFyKTsKICAgICAgICAgICAgIC8vIEVuc3VyZSBhbGlhc2VzIHVzZWQgaW4gbGFuZ3VhZ2UgdGFn
IGFyZSBhbGxvd2VkLgpAQCAtMzAzLDE1ICsyOTcsMTcgQEAgc3RhdGljIEpTT2JqZWN0KiB0b0Rh
dGVUaW1lT3B0aW9uc0FueURhdGUoRXhlY1N0YXRlJiBleGVjLCBKU1ZhbHVlIG9yaWdpbmFsT3B0
aW8KICAgICAgICAgLy8gYS4gRm9yIGVhY2ggb2YgdGhlIHByb3BlcnR5IG5hbWVzICJ5ZWFyIiwg
Im1vbnRoIiwgImRheSI6CiAgICAgICAgIC8vIGkuIExldCBzdGF0dXMgYmUgQ3JlYXRlRGF0ZVBy
b3BlcnR5T3JUaHJvdyhvcHRpb25zLCBwcm9wLCAibnVtZXJpYyIpLgogICAgICAgICAvLyBpaS4g
UmV0dXJuSWZBYnJ1cHQoc3RhdHVzKS4KLSAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT55ZWFyLCBqc05vbnRyaXZpYWxTdHJpbmcoJmV4ZWMsIEFTQ0lJTGl0
ZXJhbCgibnVtZXJpYyIpKSk7CisgICAgICAgIEpTU3RyaW5nKiBudW1lcmljID0ganNOb250cml2
aWFsU3RyaW5nKCZleGVjLCBBU0NJSUxpdGVyYWwoIm51bWVyaWMiKSk7CisKKyAgICAgICAgb3B0
aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT55ZWFyLCBudW1lcmljKTsKICAg
ICAgICAgaWYgKGV4ZWMuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAotICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm1v
bnRoLCBqc05vbnRyaXZpYWxTdHJpbmcoJmV4ZWMsIEFTQ0lJTGl0ZXJhbCgibnVtZXJpYyIpKSk7
CisgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bW9udGgs
IG51bWVyaWMpOwogICAgICAgICBpZiAoZXhlYy5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+ZGF5LCBqc05vbnRyaXZpYWxTdHJpbmcoJmV4ZWMsIEFTQ0lJTGl0ZXJhbCgi
bnVtZXJpYyIpKSk7CisgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+ZGF5LCBudW1lcmljKTsKICAgICAgICAgaWYgKGV4ZWMuaGFkRXhjZXB0aW9uKCkpCiAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBAIC00NDksNyArNDQ1LDcgQEAgdm9p
ZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVEYXRlVGltZUZvcm1hdChFeGVjU3RhdGUm
IGV4ZWMsIEpTVmFsdWUgbG9jYWwKICAgICBpZiAoZXhlYy5oYWRFeGNlcHRpb24oKSkKICAgICAg
ICAgcmV0dXJuOwogICAgIC8vIDEwLiBTZXQgb3B0LltbbG9jYWxlTWF0Y2hlcl1dIHRvIG1hdGNo
ZXIuCi0gICAgbG9jYWxlT3B0LnNldCh2bS5wcm9wZXJ0eU5hbWVzLT5sb2NhbGVNYXRjaGVyLnN0
cmluZygpLCBsb2NhbGVNYXRjaGVyKTsKKyAgICBsb2NhbGVPcHQuYWRkKHZtLnByb3BlcnR5TmFt
ZXMtPmxvY2FsZU1hdGNoZXIuc3RyaW5nKCksIGxvY2FsZU1hdGNoZXIpOwogCiAgICAgLy8gMTEu
IExldCBsb2NhbGVEYXRhIGJlIHRoZSB2YWx1ZSBvZiAlRGF0ZVRpbWVGb3JtYXQlLltbbG9jYWxl
RGF0YV1dLgogICAgIC8vIDEyLiBMZXQgciBiZSBSZXNvbHZlTG9jYWxlKCAlRGF0ZVRpbWVGb3Jt
YXQlLltbYXZhaWxhYmxlTG9jYWxlc11dLCByZXF1ZXN0ZWRMb2NhbGVzLCBvcHQsICVEYXRlVGlt
ZUZvcm1hdCUuW1tyZWxldmFudEV4dGVuc2lvbktleXNdXSwgbG9jYWxlRGF0YSkuCkBAIC01ODIs
NyArNTc4LDcgQEAgdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVEYXRlVGltZUZv
cm1hdChFeGVjU3RhdGUmIGV4ZWMsIEpTVmFsdWUgbG9jYWwKIAogICAgIC8vIFdlIG5lZWQgaG91
cjEyIHRvIG1ha2UgdGhlIGhvdXIgc2tlbGV0b24gcGF0dGVybiBkZWNpc2lvbiwgc28gZG8gdGhp
cyBlYXJseS4KICAgICAvLyAzMi4gTGV0IGhyMTIgYmUgR2V0T3B0aW9uKG9wdGlvbnMsICJob3Vy
MTIiLCAiYm9vbGVhbiIsIHVuZGVmaW5lZCwgdW5kZWZpbmVkKS4KLSAgICBib29sIGlzSG91cjEy
VW5kZWZpbmVkID0gdHJ1ZTsKKyAgICBib29sIGlzSG91cjEyVW5kZWZpbmVkOwogICAgIGJvb2wg
aHIxMiA9IGludGxCb29sZWFuT3B0aW9uKGV4ZWMsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMt
PmhvdXIxMiwgaXNIb3VyMTJVbmRlZmluZWQpOwogICAgIC8vIDMzLiBSZXR1cm5JZkFicnVwdCho
cjEyKS4KICAgICBpZiAoZXhlYy5oYWRFeGNlcHRpb24oKSkKQEAgLTY1OCwxMCArNjU0LDEwIEBA
IHZvaWQgSW50bERhdGVUaW1lRm9ybWF0Ojppbml0aWFsaXplRGF0ZVRpbWVGb3JtYXQoRXhlY1N0
YXRlJiBleGVjLCBKU1ZhbHVlIGxvY2FsCiAgICAgU3RyaW5nVmlldyBza2VsZXRvblZpZXcoc2tl
bGV0b24pOwogICAgIFZlY3RvcjxVQ2hhciwgMzI+IHBhdHRlcm5CdWZmZXIoMzIpOwogICAgIHN0
YXR1cyA9IFVfWkVST19FUlJPUjsKLSAgICBhdXRvIHBhdHRlcm5MZW5ndGggPSB1ZGF0cGdfZ2V0
QmVzdFBhdHRlcm4oZ2VuZXJhdG9yLCBza2VsZXRvblZpZXcudXBjb252ZXJ0ZWRDaGFyYWN0ZXJz
KCksIHNrZWxldG9uVmlldy5sZW5ndGgoKSwgcGF0dGVybkJ1ZmZlci5kYXRhKCksIHBhdHRlcm5C
dWZmZXIuY2FwYWNpdHkoKSwgJnN0YXR1cyk7CisgICAgYXV0byBwYXR0ZXJuTGVuZ3RoID0gdWRh
dHBnX2dldEJlc3RQYXR0ZXJuKGdlbmVyYXRvciwgc2tlbGV0b25WaWV3LnVwY29udmVydGVkQ2hh
cmFjdGVycygpLCBza2VsZXRvblZpZXcubGVuZ3RoKCksIHBhdHRlcm5CdWZmZXIuZGF0YSgpLCBw
YXR0ZXJuQnVmZmVyLnNpemUoKSwgJnN0YXR1cyk7CiAgICAgaWYgKHN0YXR1cyA9PSBVX0JVRkZF
Ul9PVkVSRkxPV19FUlJPUikgewogICAgICAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAg
ICAgIHBhdHRlcm5CdWZmZXIgPSBWZWN0b3I8VUNoYXIsIDMyPihwYXR0ZXJuTGVuZ3RoKTsKKyAg
ICAgICAgcGF0dGVybkJ1ZmZlci5ncm93KHBhdHRlcm5MZW5ndGgpOwogICAgICAgICB1ZGF0cGdf
Z2V0QmVzdFBhdHRlcm4oZ2VuZXJhdG9yLCBza2VsZXRvblZpZXcudXBjb252ZXJ0ZWRDaGFyYWN0
ZXJzKCksIHNrZWxldG9uVmlldy5sZW5ndGgoKSwgcGF0dGVybkJ1ZmZlci5kYXRhKCksIHBhdHRl
cm5MZW5ndGgsICZzdGF0dXMpOwogICAgIH0KICAgICB1ZGF0cGdfY2xvc2UoZ2VuZXJhdG9yKTsK
QEAgLTY3NSw3ICs2NzEsNyBAQCB2b2lkIEludGxEYXRlVGltZUZvcm1hdDo6aW5pdGlhbGl6ZURh
dGVUaW1lRm9ybWF0KEV4ZWNTdGF0ZSYgZXhlYywgSlNWYWx1ZSBsb2NhbAogCiAgICAgc3RhdHVz
ID0gVV9aRVJPX0VSUk9SOwogICAgIFN0cmluZ1ZpZXcgdGltZVpvbmVWaWV3KG1fdGltZVpvbmUp
OwotICAgIG1fZGF0ZUZvcm1hdCA9IHVkYXRfb3BlbihVREFUX0lHTk9SRSwgVURBVF9JR05PUkUs
IG1fbG9jYWxlLnV0ZjgoKS5kYXRhKCksIHRpbWVab25lVmlldy51cGNvbnZlcnRlZENoYXJhY3Rl
cnMoKSwgdGltZVpvbmVWaWV3Lmxlbmd0aCgpLCBwYXR0ZXJuLnVwY29udmVydGVkQ2hhcmFjdGVy
cygpLCBwYXR0ZXJuLmxlbmd0aCgpLCAmc3RhdHVzKTsKKyAgICBtX2RhdGVGb3JtYXQgPSBzdGQ6
OnVuaXF1ZV9wdHI8VURhdGVGb3JtYXQsIFVEYXRlRm9ybWF0RGVsZXRlcj4odWRhdF9vcGVuKFVE
QVRfUEFUVEVSTiwgVURBVF9QQVRURVJOLCBtX2xvY2FsZS51dGY4KCkuZGF0YSgpLCB0aW1lWm9u
ZVZpZXcudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCksIHRpbWVab25lVmlldy5sZW5ndGgoKSwgcGF0
dGVybi51cGNvbnZlcnRlZENoYXJhY3RlcnMoKSwgcGF0dGVybi5sZW5ndGgoKSwgJnN0YXR1cykp
OwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewogICAgICAgICB0aHJvd1R5cGVFcnJvcigm
ZXhlYywgQVNDSUlMaXRlcmFsKCJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBEYXRlVGltZUZvcm1hdCIp
KTsKICAgICAgICAgcmV0dXJuOwpAQCAtNjg4LDE4ICs2ODQsMTcgQEAgdm9pZCBJbnRsRGF0ZVRp
bWVGb3JtYXQ6OmluaXRpYWxpemVEYXRlVGltZUZvcm1hdChFeGVjU3RhdGUmIGV4ZWMsIEpTVmFs
dWUgbG9jYWwKICAgICBtX2luaXRpYWxpemVkRGF0ZVRpbWVGb3JtYXQgPSB0cnVlOwogCiAgICAg
Ly8gMzkuIFJldHVybiBkYXRlVGltZUZvcm1hdC4KLSAgICByZXR1cm47CiB9CiAKIGNvbnN0IGNo
YXIqIEludGxEYXRlVGltZUZvcm1hdDo6d2Vla2RheVN0cmluZyhXZWVrZGF5IHdlZWtkYXkpCiB7
CiAgICAgc3dpdGNoICh3ZWVrZGF5KSB7CiAgICAgY2FzZSBXZWVrZGF5OjpOYXJyb3c6Ci0gICAg
ICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIm5hcnJvdyIpOworICAgICAgICByZXR1cm4gIm5hcnJv
dyI7CiAgICAgY2FzZSBXZWVrZGF5OjpTaG9ydDoKLSAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJh
bCgic2hvcnQiKTsKKyAgICAgICAgcmV0dXJuICJzaG9ydCI7CiAgICAgY2FzZSBXZWVrZGF5OjpM
b25nOgotICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJsb25nIik7CisgICAgICAgIHJldHVy
biAibG9uZyI7CiAgICAgY2FzZSBXZWVrZGF5OjpOb25lOgogICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC05MDAsMTEgKzg5NSwxMSBAQCBK
U1ZhbHVlIEludGxEYXRlVGltZUZvcm1hdDo6Zm9ybWF0KEV4ZWNTdGF0ZSYgZXhlYywgZG91Ymxl
IHZhbHVlKQogICAgIC8vIERlbGVnYXRlIHJlbWFpbmluZyBzdGVwcyB0byBJQ1UuCiAgICAgVUVy
cm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CiAgICAgVmVjdG9yPFVDaGFyLCAzMj4gcmVz
dWx0KDMyKTsKLSAgICBhdXRvIHJlc3VsdExlbmd0aCA9IHVkYXRfZm9ybWF0KG1fZGF0ZUZvcm1h
dCwgdmFsdWUsIHJlc3VsdC5kYXRhKCksIHJlc3VsdC5jYXBhY2l0eSgpLCBudWxscHRyLCAmc3Rh
dHVzKTsKKyAgICBhdXRvIHJlc3VsdExlbmd0aCA9IHVkYXRfZm9ybWF0KG1fZGF0ZUZvcm1hdC5n
ZXQoKSwgdmFsdWUsIHJlc3VsdC5kYXRhKCksIHJlc3VsdC5zaXplKCksIG51bGxwdHIsICZzdGF0
dXMpOwogICAgIGlmIChzdGF0dXMgPT0gVV9CVUZGRVJfT1ZFUkZMT1dfRVJST1IpIHsKICAgICAg
ICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgICAgICByZXN1bHQgPSBWZWN0b3I8VUNoYXIs
IDMyPihyZXN1bHRMZW5ndGgpOwotICAgICAgICB1ZGF0X2Zvcm1hdChtX2RhdGVGb3JtYXQsIHZh
bHVlLCByZXN1bHQuZGF0YSgpLCByZXN1bHRMZW5ndGgsIG51bGxwdHIsICZzdGF0dXMpOworICAg
ICAgICByZXN1bHQuZ3JvdyhyZXN1bHRMZW5ndGgpOworICAgICAgICB1ZGF0X2Zvcm1hdChtX2Rh
dGVGb3JtYXQuZ2V0KCksIHZhbHVlLCByZXN1bHQuZGF0YSgpLCByZXN1bHRMZW5ndGgsIG51bGxw
dHIsICZzdGF0dXMpOwogICAgIH0KICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCiAgICAgICAg
IHJldHVybiB0aHJvd1R5cGVFcnJvcigmZXhlYywgQVNDSUlMaXRlcmFsKCJmYWlsZWQgdG8gZm9y
bWF0IGRhdGUgdmFsdWUiKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxEYXRlVGltZUZvcm1hdC5oCmluZGV4IDdkYzU3ZDA3NTgyNDI5MDFiYWM2NGUzYWU3Nzk0
Zjg4OWJlNDI4ZTQuLmEyNWMxNjA1Y2VmNzM3MDY5MjU0ODM1NjRhMjlmMGM4MWRlYmI5MTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1h
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1h
dC5oCkBAIC01NCw3ICs1NCw2IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIEludGxEYXRl
VGltZUZvcm1hdChWTSYsIFN0cnVjdHVyZSopOwotICAgIH5JbnRsRGF0ZVRpbWVGb3JtYXQoKTsK
ICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShK
U0NlbGwqKTsKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNp
dG9yJik7CkBAIC03MCw2ICs2OSwxMSBAQCBwcml2YXRlOgogICAgIGVudW0gY2xhc3MgU2Vjb25k
IHsgTm9uZSwgVHdvRGlnaXQsIE51bWVyaWMgfTsKICAgICBlbnVtIGNsYXNzIFRpbWVab25lTmFt
ZSB7IE5vbmUsIFNob3J0LCBMb25nIH07CiAKKyAgICBzdHJ1Y3QgVURhdGVGb3JtYXREZWxldGVy
IHsKKyAgICAgICAgdm9pZCBvcGVyYXRvcigpKFVEYXRlRm9ybWF0KikgY29uc3Q7CisgICAgfTsK
KworICAgIHZvaWQgc2V0Rm9ybWF0c0Zyb21QYXR0ZXJuKGNvbnN0IFN0cmluZ1ZpZXcmKTsKICAg
ICBzdGF0aWMgY29uc3QgY2hhciogd2Vla2RheVN0cmluZyhXZWVrZGF5KTsKICAgICBzdGF0aWMg
Y29uc3QgY2hhciogZXJhU3RyaW5nKEVyYSk7CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHllYXJT
dHJpbmcoWWVhcik7CkBAIC04MSwxNCArODUsMTMgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgY29u
c3QgY2hhciogdGltZVpvbmVOYW1lU3RyaW5nKFRpbWVab25lTmFtZSk7CiAKICAgICBib29sIG1f
aW5pdGlhbGl6ZWREYXRlVGltZUZvcm1hdCB7IGZhbHNlIH07Ci0gICAgdm9pZCBzZXRGb3JtYXRz
RnJvbVBhdHRlcm4oY29uc3QgU3RyaW5nVmlldyYpOwogICAgIFdyaXRlQmFycmllcjxKU0JvdW5k
RnVuY3Rpb24+IG1fYm91bmRGb3JtYXQ7Ci0gICAgVURhdGVGb3JtYXQqIG1fZGF0ZUZvcm1hdCB7
IG51bGxwdHIgfTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VURhdGVGb3JtYXQsIFVEYXRlRm9ybWF0
RGVsZXRlcj4gbV9kYXRlRm9ybWF0OwogCi0gICAgU3RyaW5nIG1fbG9jYWxlIHsgQVNDSUlMaXRl
cmFsKCJlbiIpIH07Ci0gICAgU3RyaW5nIG1fY2FsZW5kYXIgeyBBU0NJSUxpdGVyYWwoImdyZWdv
cmlhbiIpIH07Ci0gICAgU3RyaW5nIG1fbnVtYmVyaW5nU3lzdGVtIHsgQVNDSUlMaXRlcmFsKCJs
YXRuIikgfTsKLSAgICBTdHJpbmcgbV90aW1lWm9uZSB7IEFTQ0lJTGl0ZXJhbCgiVVRDIikgfTsK
KyAgICBTdHJpbmcgbV9sb2NhbGU7CisgICAgU3RyaW5nIG1fY2FsZW5kYXI7CisgICAgU3RyaW5n
IG1fbnVtYmVyaW5nU3lzdGVtOworICAgIFN0cmluZyBtX3RpbWVab25lOwogICAgIGJvb2wgbV9o
b3VyMTIgeyB0cnVlIH07CiAgICAgV2Vla2RheSBtX3dlZWtkYXkgeyBXZWVrZGF5OjpOb25lIH07
CiAgICAgRXJhIG1fZXJhIHsgRXJhOjpOb25lIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5j
cHAKaW5kZXggNmE3YzJlNGFmYTM3NGQ3N2ZlNWZiMGJlMmM3YzdjYjU0MzA3NzRhYy4uMjBmNzk1
NGQ0NzBkZDA0MmM0ZDJlZDVjYmU4NTI5YzA5ZTNjYjg5YiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENvbnN0
cnVjdG9yLmNwcApAQCAtMjMsNyArMjMsNiBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICovCiAKLQogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkludGxEYXRl
VGltZUZvcm1hdENvbnN0cnVjdG9yLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuY3BwCmluZGV4
IDA3ZmE2NTRlM2ZiNGQ4ODZkZTRkYjAyZTgyYjE3ODljYmJhYmM1NjMuLmVkMmU2ZTc5ZmY4M2Mz
ZTQ4YjU0MzJmNjBhODE3YzdhZTRkN2M0OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmNwcApA
QCAtMjMsNyArMjMsNiBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKLQogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXRDb25z
dHJ1Y3Rvci5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3Qu
Y3BwCmluZGV4IDM5NWEwNDMwYzdmMDhiMjIwNTFiMWVhYzU0ZjlmYzAwYjc5NjJlZTQuLmY4ZmM1
NmY2ZDI2MzlmNDVlZTI1YzIyYzMxMDdmYTJjNDIwZGYyNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCkBAIC05NjcsMjIgKzk2NywyMCBAQCBWZWN0
b3I8U3RyaW5nPiBudW1iZXJpbmdTeXN0ZW1zRm9yTG9jYWxlKGNvbnN0IFN0cmluZyYgbG9jYWxl
KQogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxWZWN0b3I8U3RyaW5nPj4gY2FjaGVkTnVtYmVy
aW5nU3lzdGVtczsKICAgICBWZWN0b3I8U3RyaW5nPiYgYXZhaWxhYmxlTnVtYmVyaW5nU3lzdGVt
cyA9IGNhY2hlZE51bWJlcmluZ1N5c3RlbXMuZ2V0KCk7CiAgICAgaWYgKGF2YWlsYWJsZU51bWJl
cmluZ1N5c3RlbXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIFVFcnJvckNvZGUgc3RhdHVzKFVfWkVS
T19FUlJPUik7CisgICAgICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAg
ICAgICBVRW51bWVyYXRpb24qIG51bWJlcmluZ1N5c3RlbU5hbWVzID0gdW51bXN5c19vcGVuQXZh
aWxhYmxlTmFtZXMoJnN0YXR1cyk7CiAgICAgICAgIEFTU0VSVChVX1NVQ0NFU1Moc3RhdHVzKSk7
Ci0gICAgICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKIAogICAgICAgICBpbnQzMl90IHJlc3Vs
dExlbmd0aDsKICAgICAgICAgLy8gTnVtYmVyaW5nIHN5c3RlbSBuYW1lcyBhcmUgYWx3YXlzIEFT
Q0lJLCBzbyB1c2UgY2hhcltdLgogICAgICAgICB3aGlsZSAoY29uc3QgY2hhciogcmVzdWx0ID0g
dWVudW1fbmV4dChudW1iZXJpbmdTeXN0ZW1OYW1lcywgJnJlc3VsdExlbmd0aCwgJnN0YXR1cykp
IHsKICAgICAgICAgICAgIEFTU0VSVChVX1NVQ0NFU1Moc3RhdHVzKSk7Ci0gICAgICAgICAgICBz
dGF0dXMgPSBVX1pFUk9fRVJST1I7CiAgICAgICAgICAgICBhdmFpbGFibGVOdW1iZXJpbmdTeXN0
ZW1zLmFwcGVuZChTdHJpbmcocmVzdWx0LCByZXN1bHRMZW5ndGgpKTsKICAgICAgICAgfQogICAg
ICAgICB1ZW51bV9jbG9zZShudW1iZXJpbmdTeXN0ZW1OYW1lcyk7CiAgICAgfQogCi0gICAgVUVy
cm9yQ29kZSBzdGF0dXMoVV9aRVJPX0VSUk9SKTsKKyAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVf
WkVST19FUlJPUjsKICAgICBVTnVtYmVyaW5nU3lzdGVtKiBkZWZhdWx0U3lzdGVtID0gdW51bXN5
c19vcGVuKGxvY2FsZS51dGY4KCkuZGF0YSgpLCAmc3RhdHVzKTsKICAgICBBU1NFUlQoVV9TVUND
RVNTKHN0YXR1cykpOwogICAgIFN0cmluZyBkZWZhdWx0U3lzdGVtTmFtZSh1bnVtc3lzX2dldE5h
bWUoZGVmYXVsdFN5c3RlbSkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>271840</attachid>
            <date>2016-02-19 19:10:45 -0800</date>
            <delta_ts>2016-02-21 17:55:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>21651</size>
            <attacher name="Sukolsak Sakshuwong">sukolsak</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGY2NjMwYzQ0YjA3Y2JhYmVkNmU4NmQyNWI5YzA2
MTE2OWE4M2RlYmMuLmM3MjRhYzc5MGQxMDkwZGIxMzlhNjU4NTVmYzAwMzM0ZjhlZjI4NmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDE2LTAyLTE5ICBTdWtv
bHNhayBTYWtzaHV3b25nICA8c3Vrb2xzYWtAZ21haWwuY29tPgorCisgICAgICAgIEltcHJvdmVt
ZW50cyB0byBJbnRsIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1NDQ4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoaXMgcGF0Y2ggZG9lcyBzZXZlcmFsIHRoaW5nczoKKyAgICAgICAgLSBVc2Ug
c3RkOjp1bmlxdWVfcHRyIHRvIHN0b3JlIElDVSBvYmplY3RzLgorICAgICAgICAtIFBhc3MgVmVj
dG9yOjpzaXplKCkgdG8gSUNVIGZ1bmN0aW9ucyB0aGF0IHRha2UgYSBidWZmZXIgc2l6ZSBpbnN0
ZWFkCisgICAgICAgICAgb2YgVmVjdG9yOjpjYXBhY2l0eSgpLgorICAgICAgICAtIElmIFVfU1VD
Q0VTUyhzdGF0dXMpIGlzIHRydWUsIGl0IG1lYW5zIHRoZXJlIGlzIG5vIGVycm9yLCBidXQgdGhl
cmUKKyAgICAgICAgICBjb3VsZCBiZSB3YXJuaW5ncy4gSUNVIGZ1bmN0aW9ucyBpZ25vcmUgd2Fy
bmluZ3MuIFNvLCB0aGVyZSBpcyBubyBuZWVkCisgICAgICAgICAgdG8gcmVzZXQgc3RhdHVzIHRv
IFVfWkVST19FUlJPUi4KKyAgICAgICAgLSBSZW1vdmUgdGhlIGluaXRpYWxpemF0aW9uIG9mIHRo
ZSBTdHJpbmcgaW5zdGFuY2UgdmFyaWFibGVzIG9mCisgICAgICAgICAgSW50bERhdGVUaW1lRm9y
bWF0LiBUaGVzZSB2YWx1ZXMgYXJlIG5ldmVyIHJlYWQgYW5kIGNhdXNlIHVubmVjZXNzYXJ5Cisg
ICAgICAgICAgbWVtb3J5IGFsbG9jYXRpb24uCisgICAgICAgIC0gRml4IGNvZGluZyBzdHlsZS4K
KyAgICAgICAgLSBTb21lIHNtYWxsIG9wdGltaXphdGlvbi4KKworICAgICAgICAqIHJ1bnRpbWUv
SW50bENvbGxhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SW50bENvbGxhdG9yOjpVQ29sbGF0b3JE
ZWxldGVyOjpvcGVyYXRvcigpKToKKyAgICAgICAgKEpTQzo6SW50bENvbGxhdG9yOjpjcmVhdGVD
b2xsYXRvcik6CisgICAgICAgIChKU0M6OkludGxDb2xsYXRvcjo6Y29tcGFyZVN0cmluZ3MpOgor
ICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3I6On5JbnRsQ29sbGF0b3IpOiBEZWxldGVkLgorICAg
ICAgICAqIHJ1bnRpbWUvSW50bENvbGxhdG9yLmg6CisgICAgICAgICogcnVudGltZS9JbnRsRGF0
ZVRpbWVGb3JtYXQuY3BwOgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OlVEYXRl
Rm9ybWF0RGVsZXRlcjo6b3BlcmF0b3IoKSk6CisgICAgICAgIChKU0M6OmRlZmF1bHRUaW1lWm9u
ZSk6CisgICAgICAgIChKU0M6OmNhbm9uaWNhbGl6ZVRpbWVab25lTmFtZSk6CisgICAgICAgIChK
U0M6OnRvRGF0ZVRpbWVPcHRpb25zQW55RGF0ZSk6CisgICAgICAgIChKU0M6OkludGxEYXRlVGlt
ZUZvcm1hdDo6aW5pdGlhbGl6ZURhdGVUaW1lRm9ybWF0KToKKyAgICAgICAgKEpTQzo6SW50bERh
dGVUaW1lRm9ybWF0Ojp3ZWVrZGF5U3RyaW5nKToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1l
Rm9ybWF0Ojpmb3JtYXQpOgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6On5JbnRs
RGF0ZVRpbWVGb3JtYXQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpsb2NhbGVEYXRhKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5oOgorICAgICAgICAq
IHJ1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIHJ1
bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKiBydW50aW1l
L0ludGxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpudW1iZXJpbmdTeXN0ZW1zRm9yTG9jYWxl
KToKKwogMjAxNi0wMi0xOSAgU3Vrb2xzYWsgU2Frc2h1d29uZyAgPHN1a29sc2FrQGdtYWlsLmNv
bT4KIAogICAgICAgICBbSU5UTF0gSW1wbGVtZW50IE51bWJlciBGb3JtYXQgRnVuY3Rpb25zCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3IuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yLmNwcAppbmRleCAy
YjlkNDFkN2U2NzA4YjU0MjExMzkyZTg3OTExNzA2ZjliMzRjZDg2Li42MWQzNWE1M2U4ZmQzZWUy
NDkxYTc3NjJhYWFhYzc2ZDAxYTgyZjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsQ29sbGF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxDb2xsYXRvci5jcHAKQEAgLTUwLDYgKzUwLDEyIEBAIHN0YXRpYyBjb25zdCBj
aGFyKiBjb25zdCByZWxldmFudEV4dGVuc2lvbktleXNbMl0gPSB7ICJjbyIsICJrbiIgfTsKIHN0
YXRpYyBjb25zdCBzaXplX3QgaW5kZXhPZkV4dGVuc2lvbktleUNvID0gMDsKIHN0YXRpYyBjb25z
dCBzaXplX3QgaW5kZXhPZkV4dGVuc2lvbktleUtuID0gMTsKIAordm9pZCBJbnRsQ29sbGF0b3I6
OlVDb2xsYXRvckRlbGV0ZXI6Om9wZXJhdG9yKCkoVUNvbGxhdG9yKiBjb2xsYXRvcikgY29uc3QK
K3sKKyAgICBpZiAoY29sbGF0b3IpCisgICAgICAgIHVjb2xfY2xvc2UoY29sbGF0b3IpOworfQor
CiBJbnRsQ29sbGF0b3IqIEludGxDb2xsYXRvcjo6Y3JlYXRlKFZNJiB2bSwgSW50bENvbGxhdG9y
Q29uc3RydWN0b3IqIGNvbnN0cnVjdG9yKQogewogICAgIEludGxDb2xsYXRvciogZm9ybWF0ID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bENvbGxhdG9yPih2bS5oZWFwKSkgSW50bENv
bGxhdG9yKHZtLCBjb25zdHJ1Y3Rvci0+Y29sbGF0b3JTdHJ1Y3R1cmUoKSk7CkBAIC02NywxMiAr
NzMsNiBAQCBJbnRsQ29sbGF0b3I6OkludGxDb2xsYXRvcihWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQogewogfQogCi1JbnRsQ29sbGF0b3I6On5JbnRsQ29sbGF0b3IoKQotewotICAgIGlm
IChtX2NvbGxhdG9yKQotICAgICAgICB1Y29sX2Nsb3NlKG1fY29sbGF0b3IpOwotfQotCiB2b2lk
IEludGxDb2xsYXRvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogewogICAgIEJhc2U6OmZpbmlz
aENyZWF0aW9uKHZtKTsKQEAgLTMyNiw3ICszMjYsNyBAQCB2b2lkIEludGxDb2xsYXRvcjo6Y3Jl
YXRlQ29sbGF0b3IoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICB9CiAKICAgICBVRXJyb3JDb2RlIHN0
YXR1cyA9IFVfWkVST19FUlJPUjsKLSAgICBVQ29sbGF0b3IqIGNvbGxhdG9yID0gdWNvbF9vcGVu
KG1fbG9jYWxlLnV0ZjgoKS5kYXRhKCksICZzdGF0dXMpOworICAgIGF1dG8gY29sbGF0b3IgPSBz
dGQ6OnVuaXF1ZV9wdHI8VUNvbGxhdG9yLCBVQ29sbGF0b3JEZWxldGVyPih1Y29sX29wZW4obV9s
b2NhbGUudXRmOCgpLmRhdGEoKSwgJnN0YXR1cykpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVz
KSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0zNDcsMjQgKzM0NywyMiBAQCB2b2lkIEludGxDb2xs
YXRvcjo6Y3JlYXRlQ29sbGF0b3IoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICBkZWZhdWx0OgogICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9Ci0gICAgdWNvbF9zZXRBdHRyaWJ1dGUo
Y29sbGF0b3IsIFVDT0xfU1RSRU5HVEgsIHN0cmVuZ3RoLCAmc3RhdHVzKTsKLSAgICB1Y29sX3Nl
dEF0dHJpYnV0ZShjb2xsYXRvciwgVUNPTF9DQVNFX0xFVkVMLCBjYXNlTGV2ZWwsICZzdGF0dXMp
OworICAgIHVjb2xfc2V0QXR0cmlidXRlKGNvbGxhdG9yLmdldCgpLCBVQ09MX1NUUkVOR1RILCBz
dHJlbmd0aCwgJnN0YXR1cyk7CisgICAgdWNvbF9zZXRBdHRyaWJ1dGUoY29sbGF0b3IuZ2V0KCks
IFVDT0xfQ0FTRV9MRVZFTCwgY2FzZUxldmVsLCAmc3RhdHVzKTsKIAotICAgIHVjb2xfc2V0QXR0
cmlidXRlKGNvbGxhdG9yLCBVQ09MX05VTUVSSUNfQ09MTEFUSU9OLCBtX251bWVyaWMgPyBVQ09M
X09OIDogVUNPTF9PRkYsICZzdGF0dXMpOworICAgIHVjb2xfc2V0QXR0cmlidXRlKGNvbGxhdG9y
LmdldCgpLCBVQ09MX05VTUVSSUNfQ09MTEFUSU9OLCBtX251bWVyaWMgPyBVQ09MX09OIDogVUNP
TF9PRkYsICZzdGF0dXMpOwogCiAgICAgLy8gRklYTUU6IFNldHRpbmcgVUNPTF9BTFRFUk5BVEVf
SEFORExJTkcgdG8gVUNPTF9TSElGVEVEIGNhdXNlcyBwdW5jdHVhdGlvbiBhbmQgd2hpdGVzcGFj
ZSB0byBiZQogICAgIC8vIGlnbm9yZWQuIFRoZXJlIGlzIGN1cnJlbnRseSBubyB3YXkgdG8gaWdu
b3JlIG9ubHkgcHVuY3R1YXRpb24uCi0gICAgdWNvbF9zZXRBdHRyaWJ1dGUoY29sbGF0b3IsIFVD
T0xfQUxURVJOQVRFX0hBTkRMSU5HLCBtX2lnbm9yZVB1bmN0dWF0aW9uID8gVUNPTF9TSElGVEVE
IDogVUNPTF9ERUZBVUxULCAmc3RhdHVzKTsKKyAgICB1Y29sX3NldEF0dHJpYnV0ZShjb2xsYXRv
ci5nZXQoKSwgVUNPTF9BTFRFUk5BVEVfSEFORExJTkcsIG1faWdub3JlUHVuY3R1YXRpb24gPyBV
Q09MX1NISUZURUQgOiBVQ09MX0RFRkFVTFQsICZzdGF0dXMpOwogCiAgICAgLy8gIlRoZSBtZXRo
b2QgaXMgcmVxdWlyZWQgdG8gcmV0dXJuIDAgd2hlbiBjb21wYXJpbmcgU3RyaW5ncyB0aGF0IGFy
ZSBjb25zaWRlcmVkIGNhbm9uaWNhbGx5CiAgICAgLy8gZXF1aXZhbGVudCBieSB0aGUgVW5pY29k
ZSBzdGFuZGFyZC4iCi0gICAgdWNvbF9zZXRBdHRyaWJ1dGUoY29sbGF0b3IsIFVDT0xfTk9STUFM
SVpBVElPTl9NT0RFLCBVQ09MX09OLCAmc3RhdHVzKTsKLSAgICBpZiAoVV9GQUlMVVJFKHN0YXR1
cykpIHsKLSAgICAgICAgdWNvbF9jbG9zZShjb2xsYXRvcik7CisgICAgdWNvbF9zZXRBdHRyaWJ1
dGUoY29sbGF0b3IuZ2V0KCksIFVDT0xfTk9STUFMSVpBVElPTl9NT0RFLCBVQ09MX09OLCAmc3Rh
dHVzKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCiAgICAgICAgIHJldHVybjsKLSAgICB9
CiAKLSAgICBtX2NvbGxhdG9yID0gY29sbGF0b3I7CisgICAgbV9jb2xsYXRvciA9IFdURk1vdmUo
Y29sbGF0b3IpOwogfQogCiBKU1ZhbHVlIEludGxDb2xsYXRvcjo6Y29tcGFyZVN0cmluZ3MoRXhl
Y1N0YXRlJiBzdGF0ZSwgU3RyaW5nVmlldyB4LCBTdHJpbmdWaWV3IHkpCkBAIC0zNzksNyArMzc3
LDcgQEAgSlNWYWx1ZSBJbnRsQ29sbGF0b3I6OmNvbXBhcmVTdHJpbmdzKEV4ZWNTdGF0ZSYgc3Rh
dGUsIFN0cmluZ1ZpZXcgeCwgU3RyaW5nVmlldwogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9a
RVJPX0VSUk9SOwogICAgIFVDaGFySXRlcmF0b3IgaXRlcmF0b3JYID0gY3JlYXRlSXRlcmF0b3Io
eCk7CiAgICAgVUNoYXJJdGVyYXRvciBpdGVyYXRvclkgPSBjcmVhdGVJdGVyYXRvcih5KTsKLSAg
ICBhdXRvIHJlc3VsdCA9IHVjb2xfc3RyY29sbEl0ZXIobV9jb2xsYXRvciwgJml0ZXJhdG9yWCwg
Jml0ZXJhdG9yWSwgJnN0YXR1cyk7CisgICAgYXV0byByZXN1bHQgPSB1Y29sX3N0cmNvbGxJdGVy
KG1fY29sbGF0b3IuZ2V0KCksICZpdGVyYXRvclgsICZpdGVyYXRvclksICZzdGF0dXMpOwogICAg
IGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKICAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dF
eGNlcHRpb24oJnN0YXRlLCBjcmVhdGVFcnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVk
IHRvIGNvbXBhcmUgc3RyaW5ncy4iKSkpOwogICAgIHJldHVybiBqc051bWJlcihyZXN1bHQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3IuaAppbmRleCBkMzll
NWQyMzRlY2NhMzkyOTVkODdlZjM1NWQ0NmQyMjU2YjcwNGVkLi5hN2FkZGY5NDgxNTY0NjkyNDY4
MGI2ZTFhNWYxOWQxNTE1OGQ3ZWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsQ29sbGF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsQ29sbGF0b3IuaApAQCAtNTUsNyArNTUsNiBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoK
ICAgICBJbnRsQ29sbGF0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKLSAgICB+SW50bENvbGxhdG9yKCk7
CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3ko
SlNDZWxsKik7CiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90Vmlz
aXRvciYpOwpAQCAtNjQsNiArNjMsMTAgQEAgcHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIFVzYWdl
IHsgU29ydCwgU2VhcmNoIH07CiAgICAgZW51bSBjbGFzcyBTZW5zaXRpdml0eSB7IEJhc2UsIEFj
Y2VudCwgQ2FzZSwgVmFyaWFudCB9OwogCisgICAgc3RydWN0IFVDb2xsYXRvckRlbGV0ZXIgewor
ICAgICAgICB2b2lkIG9wZXJhdG9yKCkoVUNvbGxhdG9yKikgY29uc3Q7CisgICAgfTsKKwogICAg
IHZvaWQgY3JlYXRlQ29sbGF0b3IoRXhlY1N0YXRlJik7CiAgICAgc3RhdGljIGNvbnN0IGNoYXIq
IHVzYWdlU3RyaW5nKFVzYWdlKTsKICAgICBzdGF0aWMgY29uc3QgY2hhciogc2Vuc2l0aXZpdHlT
dHJpbmcoU2Vuc2l0aXZpdHkpOwpAQCAtNzMsNyArNzYsNyBAQCBwcml2YXRlOgogICAgIFN0cmlu
ZyBtX2NvbGxhdGlvbjsKICAgICBTZW5zaXRpdml0eSBtX3NlbnNpdGl2aXR5OwogICAgIFdyaXRl
QmFycmllcjxKU0JvdW5kRnVuY3Rpb24+IG1fYm91bmRDb21wYXJlOwotICAgIFVDb2xsYXRvciog
bV9jb2xsYXRvciB7IG51bGxwdHIgfTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VUNvbGxhdG9yLCBV
Q29sbGF0b3JEZWxldGVyPiBtX2NvbGxhdG9yOwogICAgIGJvb2wgbV9udW1lcmljOwogICAgIGJv
b2wgbV9pZ25vcmVQdW5jdHVhdGlvbjsKICAgICBib29sIG1faW5pdGlhbGl6ZWRDb2xsYXRvciB7
IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
RGF0ZVRpbWVGb3JtYXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERh
dGVUaW1lRm9ybWF0LmNwcAppbmRleCBhYTUzYzg1MzNhZWEyZjBhMWJkYjdhZDk2MWQ3MTE4ZjBm
MThhMzc5Li5mYjY5ZDkxMmIxYTFlMDE5NzJiODlkNjhiOWM5YjgwNDdiM2Q0MjFlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5j
cHAKQEAgLTM5LDcgKzM5LDYgQEAKICNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKICNp
bmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCiAjaW5jbHVkZSA8dW5pY29kZS91Y2FsLmg+Ci0j
aW5jbHVkZSA8dW5pY29kZS91ZGF0Lmg+CiAjaW5jbHVkZSA8dW5pY29kZS91ZGF0cGcuaD4KICNp
bmNsdWRlIDx1bmljb2RlL3VlbnVtLmg+CiAKQEAgLTUxLDYgKzUwLDEyIEBAIHN0YXRpYyBjb25z
dCBjaGFyKiBjb25zdCByZWxldmFudEV4dGVuc2lvbktleXNbMl0gPSB7ICJjYSIsICJudSIgfTsK
IHN0YXRpYyBjb25zdCBzaXplX3QgaW5kZXhPZkV4dGVuc2lvbktleUNhID0gMDsKIHN0YXRpYyBj
b25zdCBzaXplX3QgaW5kZXhPZkV4dGVuc2lvbktleU51ID0gMTsKIAordm9pZCBJbnRsRGF0ZVRp
bWVGb3JtYXQ6OlVEYXRlRm9ybWF0RGVsZXRlcjo6b3BlcmF0b3IoKShVRGF0ZUZvcm1hdCogZGF0
ZUZvcm1hdCkgY29uc3QKK3sKKyAgICBpZiAoZGF0ZUZvcm1hdCkKKyAgICAgICAgdWRhdF9jbG9z
ZShkYXRlRm9ybWF0KTsKK30KKwogSW50bERhdGVUaW1lRm9ybWF0KiBJbnRsRGF0ZVRpbWVGb3Jt
YXQ6OmNyZWF0ZShWTSYgdm0sIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yKiBjb25zdHJ1
Y3RvcikKIHsKICAgICBJbnRsRGF0ZVRpbWVGb3JtYXQqIGZvcm1hdCA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPEludGxEYXRlVGltZUZvcm1hdD4odm0uaGVhcCkpIEludGxEYXRlVGltZUZv
cm1hdCh2bSwgY29uc3RydWN0b3ItPmRhdGVUaW1lRm9ybWF0U3RydWN0dXJlKCkpOwpAQCAtNjgs
MTIgKzczLDYgQEAgSW50bERhdGVUaW1lRm9ybWF0OjpJbnRsRGF0ZVRpbWVGb3JtYXQoVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKIH0KIAotSW50bERhdGVUaW1lRm9ybWF0Ojp+SW50
bERhdGVUaW1lRm9ybWF0KCkKLXsKLSAgICBpZiAobV9kYXRlRm9ybWF0KQotICAgICAgICB1ZGF0
X2Nsb3NlKG1fZGF0ZUZvcm1hdCk7Ci19Ci0KIHZvaWQgSW50bERhdGVUaW1lRm9ybWF0OjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0pCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwpAQCAt
MTA3LDIxICsxMDYsMjAgQEAgc3RhdGljIFN0cmluZyBkZWZhdWx0VGltZVpvbmUoKQogCiAgICAg
VUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CiAgICAgVmVjdG9yPFVDaGFyLCAzMj4g
YnVmZmVyKDMyKTsKLSAgICBhdXRvIGJ1ZmZlckxlbmd0aCA9IHVjYWxfZ2V0RGVmYXVsdFRpbWVa
b25lKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5jYXBhY2l0eSgpLCAmc3RhdHVzKTsKKyAgICBhdXRv
IGJ1ZmZlckxlbmd0aCA9IHVjYWxfZ2V0RGVmYXVsdFRpbWVab25lKGJ1ZmZlci5kYXRhKCksIGJ1
ZmZlci5zaXplKCksICZzdGF0dXMpOwogICAgIGlmIChzdGF0dXMgPT0gVV9CVUZGRVJfT1ZFUkZM
T1dfRVJST1IpIHsKICAgICAgICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgICAgICBidWZm
ZXIgPSBWZWN0b3I8VUNoYXIsIDMyPihidWZmZXJMZW5ndGgpOworICAgICAgICBidWZmZXIuZ3Jv
dyhidWZmZXJMZW5ndGgpOwogICAgICAgICB1Y2FsX2dldERlZmF1bHRUaW1lWm9uZShidWZmZXIu
ZGF0YSgpLCBidWZmZXJMZW5ndGgsICZzdGF0dXMpOwogICAgIH0KICAgICBpZiAoVV9TVUNDRVNT
KHN0YXR1cykpIHsKICAgICAgICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgICAgICBVQm9v
bCBpc1N5c3RlbUlEID0gZmFsc2U7CiAgICAgICAgIFZlY3RvcjxVQ2hhciwgMzI+IGNhbm9uaWNh
bEJ1ZmZlcigzMik7Ci0gICAgICAgIGF1dG8gY2Fub25pY2FsTGVuZ3RoID0gdWNhbF9nZXRDYW5v
bmljYWxUaW1lWm9uZUlEKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlckxlbmd0aCwgY2Fub25pY2FsQnVm
ZmVyLmRhdGEoKSwgY2Fub25pY2FsQnVmZmVyLmNhcGFjaXR5KCksICZpc1N5c3RlbUlELCAmc3Rh
dHVzKTsKKyAgICAgICAgYXV0byBjYW5vbmljYWxMZW5ndGggPSB1Y2FsX2dldENhbm9uaWNhbFRp
bWVab25lSUQoYnVmZmVyLmRhdGEoKSwgYnVmZmVyTGVuZ3RoLCBjYW5vbmljYWxCdWZmZXIuZGF0
YSgpLCBjYW5vbmljYWxCdWZmZXIuc2l6ZSgpLCBudWxscHRyLCAmc3RhdHVzKTsKICAgICAgICAg
aWYgKHN0YXR1cyA9PSBVX0JVRkZFUl9PVkVSRkxPV19FUlJPUikgewogICAgICAgICAgICAgc3Rh
dHVzID0gVV9aRVJPX0VSUk9SOwotICAgICAgICAgICAgY2Fub25pY2FsQnVmZmVyID0gVmVjdG9y
PFVDaGFyLCAzMj4oY2Fub25pY2FsTGVuZ3RoKTsKLSAgICAgICAgICAgIHVjYWxfZ2V0Q2Fub25p
Y2FsVGltZVpvbmVJRChidWZmZXIuZGF0YSgpLCBidWZmZXJMZW5ndGgsIGNhbm9uaWNhbEJ1ZmZl
ci5kYXRhKCksIGNhbm9uaWNhbExlbmd0aCwgJmlzU3lzdGVtSUQsICZzdGF0dXMpOworICAgICAg
ICAgICAgY2Fub25pY2FsQnVmZmVyLmdyb3coY2Fub25pY2FsTGVuZ3RoKTsKKyAgICAgICAgICAg
IHVjYWxfZ2V0Q2Fub25pY2FsVGltZVpvbmVJRChidWZmZXIuZGF0YSgpLCBidWZmZXJMZW5ndGgs
IGNhbm9uaWNhbEJ1ZmZlci5kYXRhKCksIGNhbm9uaWNhbExlbmd0aCwgbnVsbHB0ciwgJnN0YXR1
cyk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKFVfU1VDQ0VTUyhzdGF0dXMpKQogICAgICAgICAg
ICAgcmV0dXJuIFN0cmluZyhjYW5vbmljYWxCdWZmZXIuZGF0YSgpLCBjYW5vbmljYWxMZW5ndGgp
OwpAQCAtMTYwLDE0ICsxNTgsMTIgQEAgc3RhdGljIFN0cmluZyBjYW5vbmljYWxpemVUaW1lWm9u
ZU5hbWUoY29uc3QgU3RyaW5nJiB0aW1lWm9uZU5hbWUpCiAgICAgICAgIC8vIDIuIElmIGlhbmFU
aW1lWm9uZSBpcyBhIExpbmsgbmFtZSwgdGhlbiBsZXQgaWFuYVRpbWVab25lIGJlIHRoZSBjb3Jy
ZXNwb25kaW5nIFpvbmUgbmFtZSBhcyBzcGVjaWZpZWQgaW4gdGhlIOKAnGJhY2t3YXJk4oCdIGZp
bGUgb2YgdGhlIElBTkEgVGltZSBab25lIERhdGFiYXNlLgogCiAgICAgICAgIFZlY3RvcjxVQ2hh
ciwgMzI+IGJ1ZmZlcihpYW5hVGltZVpvbmVMZW5ndGgpOwotICAgICAgICBVQm9vbCBpc1N5c3Rl
bUlEID0gZmFsc2U7CiAgICAgICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKLSAgICAgICAgYXV0
byBjYW5vbmljYWxMZW5ndGggPSB1Y2FsX2dldENhbm9uaWNhbFRpbWVab25lSUQoaWFuYVRpbWVa
b25lLCBpYW5hVGltZVpvbmVMZW5ndGgsIGJ1ZmZlci5kYXRhKCksIGlhbmFUaW1lWm9uZUxlbmd0
aCwgJmlzU3lzdGVtSUQsICZzdGF0dXMpOworICAgICAgICBhdXRvIGNhbm9uaWNhbExlbmd0aCA9
IHVjYWxfZ2V0Q2Fub25pY2FsVGltZVpvbmVJRChpYW5hVGltZVpvbmUsIGlhbmFUaW1lWm9uZUxl
bmd0aCwgYnVmZmVyLmRhdGEoKSwgaWFuYVRpbWVab25lTGVuZ3RoLCBudWxscHRyLCAmc3RhdHVz
KTsKICAgICAgICAgaWYgKHN0YXR1cyA9PSBVX0JVRkZFUl9PVkVSRkxPV19FUlJPUikgewotICAg
ICAgICAgICAgYnVmZmVyID0gVmVjdG9yPFVDaGFyLCAzMj4oY2Fub25pY2FsTGVuZ3RoKTsKLSAg
ICAgICAgICAgIGlzU3lzdGVtSUQgPSBmYWxzZTsKKyAgICAgICAgICAgIGJ1ZmZlci5ncm93KGNh
bm9uaWNhbExlbmd0aCk7CiAgICAgICAgICAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAg
ICAgICAgICB1Y2FsX2dldENhbm9uaWNhbFRpbWVab25lSUQoaWFuYVRpbWVab25lLCBpYW5hVGlt
ZVpvbmVMZW5ndGgsIGJ1ZmZlci5kYXRhKCksIGNhbm9uaWNhbExlbmd0aCwgJmlzU3lzdGVtSUQs
ICZzdGF0dXMpOworICAgICAgICAgICAgdWNhbF9nZXRDYW5vbmljYWxUaW1lWm9uZUlEKGlhbmFU
aW1lWm9uZSwgaWFuYVRpbWVab25lTGVuZ3RoLCBidWZmZXIuZGF0YSgpLCBjYW5vbmljYWxMZW5n
dGgsIG51bGxwdHIsICZzdGF0dXMpOwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVChVX1NVQ0NF
U1Moc3RhdHVzKSk7CiAgICAgICAgIGNhbm9uaWNhbCA9IFN0cmluZyhidWZmZXIuZGF0YSgpLCBj
YW5vbmljYWxMZW5ndGgpOwpAQCAtMTkxLDExICsxODcsOSBAQCBzdGF0aWMgVmVjdG9yPFN0cmlu
Zz4gbG9jYWxlRGF0YShjb25zdCBTdHJpbmcmIGxvY2FsZSwgc2l6ZV90IGtleUluZGV4KQogICAg
ICAgICBVRW51bWVyYXRpb24qIGNhbGVuZGFycyA9IHVjYWxfZ2V0S2V5d29yZFZhbHVlc0Zvckxv
Y2FsZSgiY2FsZW5kYXIiLCBsb2NhbGUudXRmOCgpLmRhdGEoKSwgZmFsc2UsICZzdGF0dXMpOwog
ICAgICAgICBBU1NFUlQoVV9TVUNDRVNTKHN0YXR1cykpOwogCi0gICAgICAgIHN0YXR1cyA9IFVf
WkVST19FUlJPUjsKICAgICAgICAgaW50MzJfdCBuYW1lTGVuZ3RoOwogICAgICAgICB3aGlsZSAo
Y29uc3QgY2hhciogYXZhaWxhYmxlTmFtZSA9IHVlbnVtX25leHQoY2FsZW5kYXJzLCAmbmFtZUxl
bmd0aCwgJnN0YXR1cykpIHsKICAgICAgICAgICAgIEFTU0VSVChVX1NVQ0NFU1Moc3RhdHVzKSk7
Ci0gICAgICAgICAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CiAgICAgICAgICAgICBTdHJpbmcg
Y2FsZW5kYXIgPSBTdHJpbmcoYXZhaWxhYmxlTmFtZSwgbmFtZUxlbmd0aCk7CiAgICAgICAgICAg
ICBrZXlMb2NhbGVEYXRhLmFwcGVuZChjYWxlbmRhcik7CiAgICAgICAgICAgICAvLyBFbnN1cmUg
YWxpYXNlcyB1c2VkIGluIGxhbmd1YWdlIHRhZyBhcmUgYWxsb3dlZC4KQEAgLTMwMywxNSArMjk3
LDE3IEBAIHN0YXRpYyBKU09iamVjdCogdG9EYXRlVGltZU9wdGlvbnNBbnlEYXRlKEV4ZWNTdGF0
ZSYgZXhlYywgSlNWYWx1ZSBvcmlnaW5hbE9wdGlvCiAgICAgICAgIC8vIGEuIEZvciBlYWNoIG9m
IHRoZSBwcm9wZXJ0eSBuYW1lcyAieWVhciIsICJtb250aCIsICJkYXkiOgogICAgICAgICAvLyBp
LiBMZXQgc3RhdHVzIGJlIENyZWF0ZURhdGVQcm9wZXJ0eU9yVGhyb3cob3B0aW9ucywgcHJvcCwg
Im51bWVyaWMiKS4KICAgICAgICAgLy8gaWkuIFJldHVybklmQWJydXB0KHN0YXR1cykuCi0gICAg
ICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+eWVhciwganNOb250
cml2aWFsU3RyaW5nKCZleGVjLCBBU0NJSUxpdGVyYWwoIm51bWVyaWMiKSkpOworICAgICAgICBK
U1N0cmluZyogbnVtZXJpYyA9IGpzTm9udHJpdmlhbFN0cmluZygmZXhlYywgQVNDSUlMaXRlcmFs
KCJudW1lcmljIikpOworCisgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+eWVhciwgbnVtZXJpYyk7CiAgICAgICAgIGlmIChleGVjLmhhZEV4Y2VwdGlvbigp
KQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICAgICAgb3B0aW9ucy0+cHV0RGly
ZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5tb250aCwganNOb250cml2aWFsU3RyaW5nKCZleGVj
LCBBU0NJSUxpdGVyYWwoIm51bWVyaWMiKSkpOworICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPm1vbnRoLCBudW1lcmljKTsKICAgICAgICAgaWYgKGV4ZWMu
aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgICAgICBv
cHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmRheSwganNOb250cml2aWFs
U3RyaW5nKCZleGVjLCBBU0NJSUxpdGVyYWwoIm51bWVyaWMiKSkpOworICAgICAgICBvcHRpb25z
LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmRheSwgbnVtZXJpYyk7CiAgICAgICAg
IGlmIChleGVjLmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQpAQCAtNDQ5LDcgKzQ0NSw3IEBAIHZvaWQgSW50bERhdGVUaW1lRm9ybWF0Ojppbml0aWFs
aXplRGF0ZVRpbWVGb3JtYXQoRXhlY1N0YXRlJiBleGVjLCBKU1ZhbHVlIGxvY2FsCiAgICAgaWYg
KGV4ZWMuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybjsKICAgICAvLyAxMC4gU2V0IG9w
dC5bW2xvY2FsZU1hdGNoZXJdXSB0byBtYXRjaGVyLgotICAgIGxvY2FsZU9wdC5zZXQodm0ucHJv
cGVydHlOYW1lcy0+bG9jYWxlTWF0Y2hlci5zdHJpbmcoKSwgbG9jYWxlTWF0Y2hlcik7CisgICAg
bG9jYWxlT3B0LmFkZCh2bS5wcm9wZXJ0eU5hbWVzLT5sb2NhbGVNYXRjaGVyLnN0cmluZygpLCBs
b2NhbGVNYXRjaGVyKTsKIAogICAgIC8vIDExLiBMZXQgbG9jYWxlRGF0YSBiZSB0aGUgdmFsdWUg
b2YgJURhdGVUaW1lRm9ybWF0JS5bW2xvY2FsZURhdGFdXS4KICAgICAvLyAxMi4gTGV0IHIgYmUg
UmVzb2x2ZUxvY2FsZSggJURhdGVUaW1lRm9ybWF0JS5bW2F2YWlsYWJsZUxvY2FsZXNdXSwgcmVx
dWVzdGVkTG9jYWxlcywgb3B0LCAlRGF0ZVRpbWVGb3JtYXQlLltbcmVsZXZhbnRFeHRlbnNpb25L
ZXlzXV0sIGxvY2FsZURhdGEpLgpAQCAtNTgyLDcgKzU3OCw3IEBAIHZvaWQgSW50bERhdGVUaW1l
Rm9ybWF0Ojppbml0aWFsaXplRGF0ZVRpbWVGb3JtYXQoRXhlY1N0YXRlJiBleGVjLCBKU1ZhbHVl
IGxvY2FsCiAKICAgICAvLyBXZSBuZWVkIGhvdXIxMiB0byBtYWtlIHRoZSBob3VyIHNrZWxldG9u
IHBhdHRlcm4gZGVjaXNpb24sIHNvIGRvIHRoaXMgZWFybHkuCiAgICAgLy8gMzIuIExldCBocjEy
IGJlIEdldE9wdGlvbihvcHRpb25zLCAiaG91cjEyIiwgImJvb2xlYW4iLCB1bmRlZmluZWQsIHVu
ZGVmaW5lZCkuCi0gICAgYm9vbCBpc0hvdXIxMlVuZGVmaW5lZCA9IHRydWU7CisgICAgYm9vbCBp
c0hvdXIxMlVuZGVmaW5lZDsKICAgICBib29sIGhyMTIgPSBpbnRsQm9vbGVhbk9wdGlvbihleGVj
LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5ob3VyMTIsIGlzSG91cjEyVW5kZWZpbmVkKTsK
ICAgICAvLyAzMy4gUmV0dXJuSWZBYnJ1cHQoaHIxMikuCiAgICAgaWYgKGV4ZWMuaGFkRXhjZXB0
aW9uKCkpCkBAIC02NTgsMTAgKzY1NCwxMCBAQCB2b2lkIEludGxEYXRlVGltZUZvcm1hdDo6aW5p
dGlhbGl6ZURhdGVUaW1lRm9ybWF0KEV4ZWNTdGF0ZSYgZXhlYywgSlNWYWx1ZSBsb2NhbAogICAg
IFN0cmluZ1ZpZXcgc2tlbGV0b25WaWV3KHNrZWxldG9uKTsKICAgICBWZWN0b3I8VUNoYXIsIDMy
PiBwYXR0ZXJuQnVmZmVyKDMyKTsKICAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAgYXV0
byBwYXR0ZXJuTGVuZ3RoID0gdWRhdHBnX2dldEJlc3RQYXR0ZXJuKGdlbmVyYXRvciwgc2tlbGV0
b25WaWV3LnVwY29udmVydGVkQ2hhcmFjdGVycygpLCBza2VsZXRvblZpZXcubGVuZ3RoKCksIHBh
dHRlcm5CdWZmZXIuZGF0YSgpLCBwYXR0ZXJuQnVmZmVyLmNhcGFjaXR5KCksICZzdGF0dXMpOwor
ICAgIGF1dG8gcGF0dGVybkxlbmd0aCA9IHVkYXRwZ19nZXRCZXN0UGF0dGVybihnZW5lcmF0b3Is
IHNrZWxldG9uVmlldy51cGNvbnZlcnRlZENoYXJhY3RlcnMoKSwgc2tlbGV0b25WaWV3Lmxlbmd0
aCgpLCBwYXR0ZXJuQnVmZmVyLmRhdGEoKSwgcGF0dGVybkJ1ZmZlci5zaXplKCksICZzdGF0dXMp
OwogICAgIGlmIChzdGF0dXMgPT0gVV9CVUZGRVJfT1ZFUkZMT1dfRVJST1IpIHsKICAgICAgICAg
c3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgICAgICBwYXR0ZXJuQnVmZmVyID0gVmVjdG9yPFVD
aGFyLCAzMj4ocGF0dGVybkxlbmd0aCk7CisgICAgICAgIHBhdHRlcm5CdWZmZXIuZ3JvdyhwYXR0
ZXJuTGVuZ3RoKTsKICAgICAgICAgdWRhdHBnX2dldEJlc3RQYXR0ZXJuKGdlbmVyYXRvciwgc2tl
bGV0b25WaWV3LnVwY29udmVydGVkQ2hhcmFjdGVycygpLCBza2VsZXRvblZpZXcubGVuZ3RoKCks
IHBhdHRlcm5CdWZmZXIuZGF0YSgpLCBwYXR0ZXJuTGVuZ3RoLCAmc3RhdHVzKTsKICAgICB9CiAg
ICAgdWRhdHBnX2Nsb3NlKGdlbmVyYXRvcik7CkBAIC02NzUsNyArNjcxLDcgQEAgdm9pZCBJbnRs
RGF0ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVEYXRlVGltZUZvcm1hdChFeGVjU3RhdGUmIGV4ZWMs
IEpTVmFsdWUgbG9jYWwKIAogICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKICAgICBTdHJpbmdW
aWV3IHRpbWVab25lVmlldyhtX3RpbWVab25lKTsKLSAgICBtX2RhdGVGb3JtYXQgPSB1ZGF0X29w
ZW4oVURBVF9JR05PUkUsIFVEQVRfSUdOT1JFLCBtX2xvY2FsZS51dGY4KCkuZGF0YSgpLCB0aW1l
Wm9uZVZpZXcudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCksIHRpbWVab25lVmlldy5sZW5ndGgoKSwg
cGF0dGVybi51cGNvbnZlcnRlZENoYXJhY3RlcnMoKSwgcGF0dGVybi5sZW5ndGgoKSwgJnN0YXR1
cyk7CisgICAgbV9kYXRlRm9ybWF0ID0gc3RkOjp1bmlxdWVfcHRyPFVEYXRlRm9ybWF0LCBVRGF0
ZUZvcm1hdERlbGV0ZXI+KHVkYXRfb3BlbihVREFUX1BBVFRFUk4sIFVEQVRfUEFUVEVSTiwgbV9s
b2NhbGUudXRmOCgpLmRhdGEoKSwgdGltZVpvbmVWaWV3LnVwY29udmVydGVkQ2hhcmFjdGVycygp
LCB0aW1lWm9uZVZpZXcubGVuZ3RoKCksIHBhdHRlcm4udXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCks
IHBhdHRlcm4ubGVuZ3RoKCksICZzdGF0dXMpKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykp
IHsKICAgICAgICAgdGhyb3dUeXBlRXJyb3IoJmV4ZWMsIEFTQ0lJTGl0ZXJhbCgiZmFpbGVkIHRv
IGluaXRpYWxpemUgRGF0ZVRpbWVGb3JtYXQiKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTY4OCwx
OCArNjg0LDE3IEBAIHZvaWQgSW50bERhdGVUaW1lRm9ybWF0Ojppbml0aWFsaXplRGF0ZVRpbWVG
b3JtYXQoRXhlY1N0YXRlJiBleGVjLCBKU1ZhbHVlIGxvY2FsCiAgICAgbV9pbml0aWFsaXplZERh
dGVUaW1lRm9ybWF0ID0gdHJ1ZTsKIAogICAgIC8vIDM5LiBSZXR1cm4gZGF0ZVRpbWVGb3JtYXQu
Ci0gICAgcmV0dXJuOwogfQogCiBjb25zdCBjaGFyKiBJbnRsRGF0ZVRpbWVGb3JtYXQ6OndlZWtk
YXlTdHJpbmcoV2Vla2RheSB3ZWVrZGF5KQogewogICAgIHN3aXRjaCAod2Vla2RheSkgewogICAg
IGNhc2UgV2Vla2RheTo6TmFycm93OgotICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJuYXJy
b3ciKTsKKyAgICAgICAgcmV0dXJuICJuYXJyb3ciOwogICAgIGNhc2UgV2Vla2RheTo6U2hvcnQ6
Ci0gICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoInNob3J0Iik7CisgICAgICAgIHJldHVybiAi
c2hvcnQiOwogICAgIGNhc2UgV2Vla2RheTo6TG9uZzoKLSAgICAgICAgcmV0dXJuIEFTQ0lJTGl0
ZXJhbCgibG9uZyIpOworICAgICAgICByZXR1cm4gImxvbmciOwogICAgIGNhc2UgV2Vla2RheTo6
Tm9uZToKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBudWxs
cHRyOwpAQCAtOTAwLDExICs4OTUsMTEgQEAgSlNWYWx1ZSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmZv
cm1hdChFeGVjU3RhdGUmIGV4ZWMsIGRvdWJsZSB2YWx1ZSkKICAgICAvLyBEZWxlZ2F0ZSByZW1h
aW5pbmcgc3RlcHMgdG8gSUNVLgogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9S
OwogICAgIFZlY3RvcjxVQ2hhciwgMzI+IHJlc3VsdCgzMik7Ci0gICAgYXV0byByZXN1bHRMZW5n
dGggPSB1ZGF0X2Zvcm1hdChtX2RhdGVGb3JtYXQsIHZhbHVlLCByZXN1bHQuZGF0YSgpLCByZXN1
bHQuY2FwYWNpdHkoKSwgbnVsbHB0ciwgJnN0YXR1cyk7CisgICAgYXV0byByZXN1bHRMZW5ndGgg
PSB1ZGF0X2Zvcm1hdChtX2RhdGVGb3JtYXQuZ2V0KCksIHZhbHVlLCByZXN1bHQuZGF0YSgpLCBy
ZXN1bHQuc2l6ZSgpLCBudWxscHRyLCAmc3RhdHVzKTsKICAgICBpZiAoc3RhdHVzID09IFVfQlVG
RkVSX09WRVJGTE9XX0VSUk9SKSB7CiAgICAgICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKLSAg
ICAgICAgcmVzdWx0ID0gVmVjdG9yPFVDaGFyLCAzMj4ocmVzdWx0TGVuZ3RoKTsKLSAgICAgICAg
dWRhdF9mb3JtYXQobV9kYXRlRm9ybWF0LCB2YWx1ZSwgcmVzdWx0LmRhdGEoKSwgcmVzdWx0TGVu
Z3RoLCBudWxscHRyLCAmc3RhdHVzKTsKKyAgICAgICAgcmVzdWx0Lmdyb3cocmVzdWx0TGVuZ3Ro
KTsKKyAgICAgICAgdWRhdF9mb3JtYXQobV9kYXRlRm9ybWF0LmdldCgpLCB2YWx1ZSwgcmVzdWx0
LmRhdGEoKSwgcmVzdWx0TGVuZ3RoLCBudWxscHRyLCAmc3RhdHVzKTsKICAgICB9CiAgICAgaWYg
KFVfRkFJTFVSRShzdGF0dXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJmV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiZmFpbGVkIHRvIGZvcm1hdCBkYXRlIHZhbHVlIikpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaAppbmRleCA3
ZGM1N2QwNzU4MjQyOTAxYmFjNjRlM2FlNzc5NGY4ODliZTQyOGU0Li5hMjVjMTYwNWNlZjczNzA2
OTI1NDgzNTY0YTI5ZjBjODFkZWJiOTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaApAQCAtNTQsNyArNTQsNiBAQCBwdWJsaWM6
CiAKIHByb3RlY3RlZDoKICAgICBJbnRsRGF0ZVRpbWVGb3JtYXQoVk0mLCBTdHJ1Y3R1cmUqKTsK
LSAgICB+SW50bERhdGVUaW1lRm9ybWF0KCk7CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYp
OwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAgICAgc3RhdGljIHZvaWQgdmlz
aXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwpAQCAtNzAsNiArNjksMTEgQEAgcHJp
dmF0ZToKICAgICBlbnVtIGNsYXNzIFNlY29uZCB7IE5vbmUsIFR3b0RpZ2l0LCBOdW1lcmljIH07
CiAgICAgZW51bSBjbGFzcyBUaW1lWm9uZU5hbWUgeyBOb25lLCBTaG9ydCwgTG9uZyB9OwogCisg
ICAgc3RydWN0IFVEYXRlRm9ybWF0RGVsZXRlciB7CisgICAgICAgIHZvaWQgb3BlcmF0b3IoKShV
RGF0ZUZvcm1hdCopIGNvbnN0OworICAgIH07CisKKyAgICB2b2lkIHNldEZvcm1hdHNGcm9tUGF0
dGVybihjb25zdCBTdHJpbmdWaWV3Jik7CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHdlZWtkYXlT
dHJpbmcoV2Vla2RheSk7CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGVyYVN0cmluZyhFcmEpOwog
ICAgIHN0YXRpYyBjb25zdCBjaGFyKiB5ZWFyU3RyaW5nKFllYXIpOwpAQCAtODEsMTQgKzg1LDEz
IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHRpbWVab25lTmFtZVN0cmluZyhU
aW1lWm9uZU5hbWUpOwogCiAgICAgYm9vbCBtX2luaXRpYWxpemVkRGF0ZVRpbWVGb3JtYXQgeyBm
YWxzZSB9OwotICAgIHZvaWQgc2V0Rm9ybWF0c0Zyb21QYXR0ZXJuKGNvbnN0IFN0cmluZ1ZpZXcm
KTsKICAgICBXcml0ZUJhcnJpZXI8SlNCb3VuZEZ1bmN0aW9uPiBtX2JvdW5kRm9ybWF0OwotICAg
IFVEYXRlRm9ybWF0KiBtX2RhdGVGb3JtYXQgeyBudWxscHRyIH07CisgICAgc3RkOjp1bmlxdWVf
cHRyPFVEYXRlRm9ybWF0LCBVRGF0ZUZvcm1hdERlbGV0ZXI+IG1fZGF0ZUZvcm1hdDsKIAotICAg
IFN0cmluZyBtX2xvY2FsZSB7IEFTQ0lJTGl0ZXJhbCgiZW4iKSB9OwotICAgIFN0cmluZyBtX2Nh
bGVuZGFyIHsgQVNDSUlMaXRlcmFsKCJncmVnb3JpYW4iKSB9OwotICAgIFN0cmluZyBtX251bWJl
cmluZ1N5c3RlbSB7IEFTQ0lJTGl0ZXJhbCgibGF0biIpIH07Ci0gICAgU3RyaW5nIG1fdGltZVpv
bmUgeyBBU0NJSUxpdGVyYWwoIlVUQyIpIH07CisgICAgU3RyaW5nIG1fbG9jYWxlOworICAgIFN0
cmluZyBtX2NhbGVuZGFyOworICAgIFN0cmluZyBtX251bWJlcmluZ1N5c3RlbTsKKyAgICBTdHJp
bmcgbV90aW1lWm9uZTsKICAgICBib29sIG1faG91cjEyIHsgdHJ1ZSB9OwogICAgIFdlZWtkYXkg
bV93ZWVrZGF5IHsgV2Vla2RheTo6Tm9uZSB9OwogICAgIEVyYSBtX2VyYSB7IEVyYTo6Tm9uZSB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1l
Rm9ybWF0Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwCmluZGV4IDZhN2MyZTRhZmEzNzRkNzdmZTVm
YjBiZTJjN2M3Y2I1NDMwNzc0YWMuLjIwZjc5NTRkNDcwZGQwNDJjNGQyZWQ1Y2JlODUyOWMwOWUz
Y2I4OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRl
VGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKQEAgLTIzLDcgKzIzLDYgQEAK
ICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0KICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5oIgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0
Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJl
ckZvcm1hdENvbnN0cnVjdG9yLmNwcAppbmRleCAwN2ZhNjU0ZTNmYjRkODg2ZGU0ZGIwMmU4MmIx
Nzg5Y2JiYWJjNTYzLi5lZDJlNmU3OWZmODNjM2U0OGI1NDMyZjYwYTgxN2M3YWU0ZDdjNDllIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0
Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxO
dW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKQEAgLTIzLDcgKzIzLDYgQEAKICAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0KICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuaCIKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcAppbmRleCAzOTVhMDQzMGM3ZjA4YjIyMDUx
YjFlYWM1NGY5ZmMwMGI3OTYyZWU0Li5mOGZjNTZmNmQyNjM5ZjQ1ZWUyNWMyMmMzMTA3ZmEyYzQy
MGRmMjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNw
cApAQCAtOTY3LDIyICs5NjcsMjAgQEAgVmVjdG9yPFN0cmluZz4gbnVtYmVyaW5nU3lzdGVtc0Zv
ckxvY2FsZShjb25zdCBTdHJpbmcmIGxvY2FsZSkKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
VmVjdG9yPFN0cmluZz4+IGNhY2hlZE51bWJlcmluZ1N5c3RlbXM7CiAgICAgVmVjdG9yPFN0cmlu
Zz4mIGF2YWlsYWJsZU51bWJlcmluZ1N5c3RlbXMgPSBjYWNoZWROdW1iZXJpbmdTeXN0ZW1zLmdl
dCgpOwogICAgIGlmIChhdmFpbGFibGVOdW1iZXJpbmdTeXN0ZW1zLmlzRW1wdHkoKSkgewotICAg
ICAgICBVRXJyb3JDb2RlIHN0YXR1cyhVX1pFUk9fRVJST1IpOworICAgICAgICBVRXJyb3JDb2Rl
IHN0YXR1cyA9IFVfWkVST19FUlJPUjsKICAgICAgICAgVUVudW1lcmF0aW9uKiBudW1iZXJpbmdT
eXN0ZW1OYW1lcyA9IHVudW1zeXNfb3BlbkF2YWlsYWJsZU5hbWVzKCZzdGF0dXMpOwogICAgICAg
ICBBU1NFUlQoVV9TVUNDRVNTKHN0YXR1cykpOwotICAgICAgICBzdGF0dXMgPSBVX1pFUk9fRVJS
T1I7CiAKICAgICAgICAgaW50MzJfdCByZXN1bHRMZW5ndGg7CiAgICAgICAgIC8vIE51bWJlcmlu
ZyBzeXN0ZW0gbmFtZXMgYXJlIGFsd2F5cyBBU0NJSSwgc28gdXNlIGNoYXJbXS4KICAgICAgICAg
d2hpbGUgKGNvbnN0IGNoYXIqIHJlc3VsdCA9IHVlbnVtX25leHQobnVtYmVyaW5nU3lzdGVtTmFt
ZXMsICZyZXN1bHRMZW5ndGgsICZzdGF0dXMpKSB7CiAgICAgICAgICAgICBBU1NFUlQoVV9TVUND
RVNTKHN0YXR1cykpOwotICAgICAgICAgICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAgICAg
ICAgICAgYXZhaWxhYmxlTnVtYmVyaW5nU3lzdGVtcy5hcHBlbmQoU3RyaW5nKHJlc3VsdCwgcmVz
dWx0TGVuZ3RoKSk7CiAgICAgICAgIH0KICAgICAgICAgdWVudW1fY2xvc2UobnVtYmVyaW5nU3lz
dGVtTmFtZXMpOwogICAgIH0KIAotICAgIFVFcnJvckNvZGUgc3RhdHVzKFVfWkVST19FUlJPUik7
CisgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CiAgICAgVU51bWJlcmluZ1N5
c3RlbSogZGVmYXVsdFN5c3RlbSA9IHVudW1zeXNfb3Blbihsb2NhbGUudXRmOCgpLmRhdGEoKSwg
JnN0YXR1cyk7CiAgICAgQVNTRVJUKFVfU1VDQ0VTUyhzdGF0dXMpKTsKICAgICBTdHJpbmcgZGVm
YXVsdFN5c3RlbU5hbWUodW51bXN5c19nZXROYW1lKGRlZmF1bHRTeXN0ZW0pKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>