<?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>144528</bug_id>
          
          <creation_ts>2015-05-02 12:04:09 -0700</creation_ts>
          <short_desc>Assertion failure (!needsLayout()) loading inkedmag.com</short_desc>
          <delta_ts>2015-05-04 12:19:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>jhoneycutt</cc>
    
    <cc>joepeck</cc>
    
    <cc>jonlee</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1091117</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-05-02 12:04:09 -0700</bug_when>
    <thetext>Assertion failure (!needsLayout()) loading inkedmag.com</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091120</commentid>
    <comment_count>1</comment_count>
      <attachid>252241</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-05-02 12:12:30 -0700</bug_when>
    <thetext>Created attachment 252241
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091121</commentid>
    <comment_count>2</comment_count>
      <attachid>252242</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-05-02 12:13:42 -0700</bug_when>
    <thetext>Created attachment 252242
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091122</commentid>
    <comment_count>3</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-05-02 12:13:55 -0700</bug_when>
    <thetext>rdar://problem/20788681</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091129</commentid>
    <comment_count>4</comment_count>
      <attachid>252242</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-05-02 12:31:43 -0700</bug_when>
    <thetext>Comment on attachment 252242
Patch

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

GTK and EFL build errors are both:
Source/WebCore/rendering/RenderReplaced.cpp:143:5: error: &apos;SetLayoutNeededForbiddenScope&apos; is not a member of &apos;WebCore::RenderObject&apos;

r=me assuming you fix the release build, but please consider my comments too

&gt; Source/WebCore/platform/graphics/BitmapImage.cpp:91
&gt; +void BitmapImage::startTimer(double delay)

In new code, we should be using standard library types, not doubles, for time and duration values. I think std::chrono::milliseconds might be what we want here and it’s probably worth considering rewriting the code to use it.

&gt; Source/WebCore/platform/graphics/BitmapImage.cpp:94
&gt; +    m_frameTimer = std::make_unique&lt;Timer&gt;(*this, &amp;BitmapImage::advanceAnimation);
&gt; +    m_frameTimer-&gt;startOneShot(delay);

Should we assert there is no existing timer? If there is, then destroying it is a side effect that doesn’t seem like part of the function name “start timer”.

Surprisingly low level graphics class to have a timer in it. I realize you were just refactoring, but I am still surprised. In modern code we would use a lambda instead of a pointer to member function for the timer.

&gt; Source/WebCore/platform/graphics/BitmapImage.h:339
&gt; +    bool m_pendingNotifyAfterCaughtUpToLastFrame : 1;

I find this name confusing. The noun here seems to be “notify” as in “this is a notify”, which doesn’t make sense. How would you describe this boolean flag in colloquial English? Maybe that would point to a better name for it.

&gt; Source/WebCore/rendering/RenderReplaced.cpp:143
&gt; +    RenderObject::SetLayoutNeededForbiddenScope scope(this);

Looks like this class is defined for builds without NDEBUG only. Would be better if it was a harmless inlined no-op in those builds, but otherwise you need to put #ifndef NDEBUG around this. Also, it should take a RenderObject&amp;, not a RenderObject*.

Shouldn’t need the RenderObject:: prefix here. This is a member function of a class derived from RenderObject so that should already be in scope without an explicit qualifier.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091136</commentid>
    <comment_count>5</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-05-02 14:02:01 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 252242 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=252242&amp;action=review
&gt; 
&gt; GTK and EFL build errors are both:
&gt; Source/WebCore/rendering/RenderReplaced.cpp:143:5: error:
&gt; &apos;SetLayoutNeededForbiddenScope&apos; is not a member of &apos;WebCore::RenderObject&apos;
&gt; 
&gt; r=me assuming you fix the release build, but please consider my comments too
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/BitmapImage.cpp:91
&gt; &gt; +void BitmapImage::startTimer(double delay)
&gt; 
&gt; In new code, we should be using standard library types, not doubles, for
&gt; time and duration values. I think std::chrono::milliseconds might be what we
&gt; want here and it’s probably worth considering rewriting the code to use it.

I&apos;d prefer to switch the entire class over to std::chrono later.

&gt; &gt; Source/WebCore/platform/graphics/BitmapImage.cpp:94
&gt; &gt; +    m_frameTimer = std::make_unique&lt;Timer&gt;(*this, &amp;BitmapImage::advanceAnimation);
&gt; &gt; +    m_frameTimer-&gt;startOneShot(delay);
&gt; 
&gt; Should we assert there is no existing timer? If there is, then destroying it
&gt; is a side effect that doesn’t seem like part of the function name “start
&gt; timer”.

Added assert.

&gt; Surprisingly low level graphics class to have a timer in it. I realize you
&gt; were just refactoring, but I am still surprised. In modern code we would use
&gt; a lambda instead of a pointer to member function for the timer.

Agreed; timer cleanup can come in a separate patch.

&gt; &gt; Source/WebCore/platform/graphics/BitmapImage.h:339
&gt; &gt; +    bool m_pendingNotifyAfterCaughtUpToLastFrame : 1;
&gt; 
&gt; I find this name confusing. The noun here seems to be “notify” as in “this
&gt; is a notify”, which doesn’t make sense. How would you describe this boolean
&gt; flag in colloquial English? Maybe that would point to a better name for it.

Renamed.

&gt; &gt; Source/WebCore/rendering/RenderReplaced.cpp:143
&gt; &gt; +    RenderObject::SetLayoutNeededForbiddenScope scope(this);
&gt; 
&gt; Looks like this class is defined for builds without NDEBUG only. Would be
&gt; better if it was a harmless inlined no-op in those builds, but otherwise you
&gt; need to put #ifndef NDEBUG around this. Also, it should take a
&gt; RenderObject&amp;, not a RenderObject*.

Wrapping in #ifndef NDEBUG for now, will clean up in a separate patch.

&gt; Shouldn’t need the RenderObject:: prefix here. This is a member function of
&gt; a class derived from RenderObject so that should already be in scope without
&gt; an explicit qualifier.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091137</commentid>
    <comment_count>6</comment_count>
      <attachid>252245</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-05-02 14:11:17 -0700</bug_when>
    <thetext>Created attachment 252245
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091226</commentid>
    <comment_count>7</comment_count>
      <attachid>252245</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-05-03 09:16:31 -0700</bug_when>
    <thetext>Comment on attachment 252245
For EWS

Bring Darin&apos;s review forward.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091227</commentid>
    <comment_count>8</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-05-03 09:16:45 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/183732</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091408</commentid>
    <comment_count>9</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-05-04 09:51:09 -0700</bug_when>
    <thetext>This broke a test on Windows: https://webkit-test-results.appspot.com/dashboards/flakiness_dashboard.html#showAllRuns=true&amp;tests=fast%2Fimages%2Fanimated-gif-body-outside-viewport.html

Should we roll out?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091415</commentid>
    <comment_count>10</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-05-04 10:09:50 -0700</bug_when>
    <thetext>No, I&apos;ll take a look when I get in soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091469</commentid>
    <comment_count>11</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-05-04 12:19:17 -0700</bug_when>
    <thetext>Windows test skipped in https://trac.webkit.org/r183756.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252241</attachid>
            <date>2015-05-02 12:12:30 -0700</date>
            <delta_ts>2015-05-02 12:13:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-144528-20150502121117.patch</filename>
            <type>text/plain</type>
            <size>25322</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzNzE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2RmMmRjYTI5MDk3MTg0
ZmE2NzU3ZmJjYzczYTJiNDg3MGI1OWMwYi4uODkzZGUzODZiOTlkODFhOGEzZWI3MjVlMmEwNzZk
NTUwODMwMzViZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDE1LTA1LTAyICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFzc2VydGlvbiBm
YWlsdXJlICghbmVlZHNMYXlvdXQoKSkgbG9hZGluZyBpbmtlZG1hZy5jb20KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NDUyOAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgV2hlbiBhbmltYXRl
ZCBHSUZzIGdldCBpbnRvIGNhdGNoLXVwIG1vZGUsIHdoaWNoIGlzIGNvbW1vbiBvbiBpbmtlZG1h
Zy5jb20sCisgICAgICAgIEJpdG1hcEltYWdlOjphZHZhbmNlQW5pbWF0aW9uKCkgY2FuIHN5bmNo
cm9ub3VzbHkgY2FsbCBpdCdzIG9ic2VydmVyJ3MKKyAgICAgICAgYW5pbWF0aW9uQWR2YW5jZWQo
KS4gVGhpcyBjb3VsZCBjYXVzZSBSZW5kZXJJbWFnZTo6cmVwYWludE9yTWFya0ZvckxheW91dCgp
CisgICAgICAgIHRvIHJlcGFpbnQgb3IgbWFyayBpdHNlbGYgYXMgbmVlZGluZyBsYXlvdXQgaW4g
dGhlIG1pZGRsZSBvZiBwYWludGluZy4KKyAgICAgICAgSWYgcGFpbnRpbmcgbXVsdGlwbGUgdGls
ZXMsIHRoaXMgY291bGQgb2NjdXIgd2hlbiBwYWludGluZyB0aGUgZmlyc3QgdGlsZSwKKyAgICAg
ICAgYW5kIHRoZW4gcGFpbnRpbmcgdGhlIHNlY29uZCB0aWxlIHdvdWxkIGFzc2VydCBpbiBSZW5k
ZXJWaWV3OjpwYWludCgpLgorICAgICAgICAKKyAgICAgICAgSXQncyBhbHdheXMgd3JvbmcgdG8g
c3luY2hyb25vdXNseSBjYWxsIHRoZSBvYnNlcnZlciB3aGVuIGFkdmFuY2luZworICAgICAgICB0
aGUgYW5pbWF0aW9uLCBzaW5jZSB0aGlzIGhhcHBlbnMgd2hlbiBwYWludGluZywgYW5kIHlvdSBj
YW4ndCByZXBhaW50CisgICAgICAgIHdoZW4gcGFpbnRpbmcuIFRoZSBsb25nIGNvbW1lbnQgYW5k
IGNhbGwgdG8gc3RhcnRBbmltYXRpb24oRG9Ob3RDYXRjaFVwKQorICAgICAgICB3YXMgcmVxdWly
ZWQgdG8gZXhwbGFpbiBhbmQgd29yayBhcm91bmQgdGhpcywgYnV0IGl0J3Mgc2ltcGxlciB0byBq
dXN0CisgICAgICAgIGFkdmFuY2UgdGhlIGFuaW1hdGlvbiBvbiBhIHplcm8tZGVsYXkgdGltZXIu
CisgICAgICAgIAorICAgICAgICBTcGVjaWFsIGhhbmRsaW5nIGlzIHJlcXVpcmVkIGZvciB0aGUg
Y2FzZSB3aGVyZSBpbnRlcm5hbEFkdmFuY2VBbmltYXRpb24oKQorICAgICAgICBpcyBjYXRjaGlu
ZyB1cCwgYW5kIHJlYWNoZXMgdGhlIGVuZCBvZiBhIG5vbi1yZXBlYXRpbmcgaW1hZ2U7IHRoZXJl
LCB3ZQorICAgICAgICBoYXZlIHRvIHNldCBhIGZsYWcgYW5kIGRvIHRoZSBub3RpZnkgb24gYSB6
ZXJvLWRlbGF5IHRpbWVyLgorICAgICAgICAKKyAgICAgICAgTG90cyBvZiBjb21tZW50IGNsZWFu
dXAuCisKKyAgICAgICAgVGVzdDogZmFzdC9pbWFnZXMvc2V0LW5lZWRzLWxheW91dC1pbi1wYWlu
dGluZy5odG1sCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6Qml0bWFwSW1hZ2U6OnN0YXJ0VGltZXIpOiBVdGlsaXR5IHRvIGNyZWF0ZSBhbmQg
c3RhcnQgdGhlIHRpbWVyLgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OnJlcGV0aXRp
b25Db3VudCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6c3RhcnRBbmltYXRpb24p
OiBFYXJseSByZXR1cm4gaW4gdGhlIERvTm90Q2F0Y2hVcCBjbGF1c2UuCisgICAgICAgIElmIHNr
aXBwaW5nLCBhbmQgaW50ZXJuYWxBZHZhbmNlQW5pbWF0aW9uKCkgcmV0dXJucyBmYWxzZSAobWVh
bmluZyBpdCBtdXN0IGhhdmUKKyAgICAgICAgcmVhY2hlZCB0aGUgZW5kKSwgdGhlbiBxdWV1ZSB1
cCBhIG5vdGlmeS4gQ2hhbmdlIHRoZSBub3JtYWwgYmVoYXZpb3IgdG8ganVzdAorICAgICAgICBz
dGFydCB0aGUgdGltZXIuCisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6c3RvcEFuaW1h
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6aW50ZXJuYWxBZHZhbmNlQW5p
bWF0aW9uKTogTm90aWZ5IGlmIHRoZSBmbGFnIGlzIHNldC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9CaXRtYXBJbWFnZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSZXBsYWNl
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZXBsYWNlZDo6cGFpbnQpOiBBZGQgYSBT
ZXRMYXlvdXROZWVkZWRGb3JiaWRkZW5TY29wZSB0bworICAgICAgICBkZXRlY3Qgc2V0TmVlZHNM
YXlvdXRzIHdoZW4gcGFpbnRpbmcgcmVwbGFjZWQgZWxlbWVudHMsIGluY2x1ZGluZyBpbWFnZXMu
CisKIDIwMTUtMDUtMDIgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4K
IAogICAgICAgICBVc2UgUmVmIGluc3RlYWQgb2YgUGFzc1JlZlB0ciBpbiBXZWJDb3JlL3N2ZyAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcApp
bmRleCAzZjZlYzJiZDQ3NjVhYTE4OTEzM2QzYWM4MWNkOTAyM2UwYjYxYzQyLi41OWZlODlkMDY5
OTNlMzNjY2VmMmQwMjMzMjc0Yjg5ZDEwMTEyZGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCkBAIC03Myw3ICs3Myw3IEBAIEJpdG1h
cEltYWdlOjpCaXRtYXBJbWFnZShJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikKICAgICAsIG1fc2l6
ZUF2YWlsYWJsZShmYWxzZSkKICAgICAsIG1faGFzVW5pZm9ybUZyYW1lU2l6ZSh0cnVlKQogICAg
ICwgbV9oYXZlRnJhbWVDb3VudChmYWxzZSkKLSAgICAsIG1fY2FjaGVkSW1hZ2UoMCkKKyAgICAs
IG1fcGVuZGluZ05vdGlmeUFmdGVyQ2F1Z2h0VXBUb0xhc3RGcmFtZShmYWxzZSkKIHsKIH0KIApA
QCAtODgsNiArODgsMTIgQEAgdm9pZCBCaXRtYXBJbWFnZTo6Y2xlYXJUaW1lcigpCiAgICAgbV9m
cmFtZVRpbWVyID0gbnVsbHB0cjsKIH0KIAordm9pZCBCaXRtYXBJbWFnZTo6c3RhcnRUaW1lcihk
b3VibGUgZGVsYXkpCit7CisgICAgbV9mcmFtZVRpbWVyID0gc3RkOjptYWtlX3VuaXF1ZTxUaW1l
cj4oKnRoaXMsICZCaXRtYXBJbWFnZTo6YWR2YW5jZUFuaW1hdGlvbik7CisgICAgbV9mcmFtZVRp
bWVyLT5zdGFydE9uZVNob3QoZGVsYXkpOworfQorCiAjaWYgIVVTRShDRykKIGJvb2wgQml0bWFw
SW1hZ2U6OmRlY29kZWREYXRhSXNQdXJnZWFibGUoKSBjb25zdAogewpAQCAtNDczLDcgKzQ3OSw3
IEBAIGJvb2wgQml0bWFwSW1hZ2U6Om5vdFNvbGlkQ29sb3IoKQogaW50IEJpdG1hcEltYWdlOjpy
ZXBldGl0aW9uQ291bnQoYm9vbCBpbWFnZUtub3duVG9CZUNvbXBsZXRlKQogewogICAgIGlmICgo
bV9yZXBldGl0aW9uQ291bnRTdGF0dXMgPT0gVW5rbm93bikgfHwgKChtX3JlcGV0aXRpb25Db3Vu
dFN0YXR1cyA9PSBVbmNlcnRhaW4pICYmIGltYWdlS25vd25Ub0JlQ29tcGxldGUpKSB7Ci0gICAg
ICAgIC8vIFNuYWcgdGhlIHJlcGV0aXRpb24gY291bnQuICBJZiB8aW1hZ2VLbm93blRvQmVDb21w
bGV0ZXwgaXMgZmFsc2UsIHRoZQorICAgICAgICAvLyBTbmFnIHRoZSByZXBldGl0aW9uIGNvdW50
LiBJZiB8aW1hZ2VLbm93blRvQmVDb21wbGV0ZXwgaXMgZmFsc2UsIHRoZQogICAgICAgICAvLyBy
ZXBldGl0aW9uIGNvdW50IG1heSBub3QgYmUgYWNjdXJhdGUgeWV0IGZvciBHSUZzOyBpbiB0aGlz
IGNhc2UgdGhlCiAgICAgICAgIC8vIGRlY29kZXIgd2lsbCBkZWZhdWx0IHRvIGNBbmltYXRpb25M
b29wT25jZSwgYW5kIHdlJ2xsIHRyeSBhbmQgcmVhZAogICAgICAgICAvLyB0aGUgY291bnQgYWdh
aW4gb25jZSB0aGUgd2hvbGUgaW1hZ2UgaXMgZGVjb2RlZC4KQEAgLTUwNSwxMyArNTExLDEzIEBA
IHZvaWQgQml0bWFwSW1hZ2U6OnN0YXJ0QW5pbWF0aW9uKENhdGNoVXBBbmltYXRpb24gY2F0Y2hV
cElmTmVjZXNzYXJ5KQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBEb24ndCBhZHZhbmNlIHBh
c3QgdGhlIGxhc3QgZnJhbWUgaWYgd2UgaGF2ZW4ndCBkZWNvZGVkIHRoZSB3aG9sZSBpbWFnZQot
ICAgIC8vIHlldCBhbmQgb3VyIHJlcGV0aXRpb24gY291bnQgaXMgcG90ZW50aWFsbHkgdW5zZXQu
ICBUaGUgcmVwZXRpdGlvbiBjb3VudAorICAgIC8vIHlldCBhbmQgb3VyIHJlcGV0aXRpb24gY291
bnQgaXMgcG90ZW50aWFsbHkgdW5zZXQuIFRoZSByZXBldGl0aW9uIGNvdW50CiAgICAgLy8gaW4g
YSBHSUYgY2FuIHBvdGVudGlhbGx5IGNvbWUgYWZ0ZXIgYWxsIHRoZSByZXN0IG9mIHRoZSBpbWFn
ZSBkYXRhLCBzbwogICAgIC8vIHdhaXQgb24gaXQuCiAgICAgaWYgKCFtX2FsbERhdGFSZWNlaXZl
ZCAmJiByZXBldGl0aW9uQ291bnQoZmFsc2UpID09IGNBbmltYXRpb25Mb29wT25jZSAmJiBtX2N1
cnJlbnRGcmFtZSA+PSAoZnJhbWVDb3VudCgpIC0gMSkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IC8vIERldGVybWluZSB0aW1lIGZvciBuZXh0IGZyYW1lIHRvIHN0YXJ0LiAgQnkgaWdub3Jpbmcg
cGFpbnQgYW5kIHRpbWVyIGxhZworICAgIC8vIERldGVybWluZSB0aW1lIGZvciBuZXh0IGZyYW1l
IHRvIHN0YXJ0LiBCeSBpZ25vcmluZyBwYWludCBhbmQgdGltZXIgbGFnCiAgICAgLy8gaW4gdGhp
cyBjYWxjdWxhdGlvbiwgd2UgbWFrZSB0aGUgYW5pbWF0aW9uIGFwcGVhciB0byBydW4gYXQgaXRz
IGRlc2lyZWQKICAgICAvLyByYXRlIHJlZ2FyZGxlc3Mgb2YgaG93IGZhc3QgaXQncyBiZWluZyBy
ZXBhaW50ZWQuCiAgICAgY29uc3QgZG91YmxlIGN1cnJlbnREdXJhdGlvbiA9IGZyYW1lRHVyYXRp
b25BdEluZGV4KG1fY3VycmVudEZyYW1lKTsKQEAgLTUyMCw3ICs1MjYsNyBAQCB2b2lkIEJpdG1h
cEltYWdlOjpzdGFydEFuaW1hdGlvbihDYXRjaFVwQW5pbWF0aW9uIGNhdGNoVXBJZk5lY2Vzc2Fy
eSkKICNpZiAhUExBVEZPUk0oSU9TKQogICAgIC8vIFdoZW4gYW4gYW5pbWF0ZWQgaW1hZ2UgaXMg
bW9yZSB0aGFuIGZpdmUgbWludXRlcyBvdXQgb2YgZGF0ZSwgdGhlCiAgICAgLy8gdXNlciBwcm9i
YWJseSBkb2Vzbid0IGNhcmUgYWJvdXQgcmVzeW5jaW5nIGFuZCB3ZSBjb3VsZCBidXJuIGEgbG90
IG9mCi0gICAgLy8gdGltZSBsb29waW5nIHRocm91Z2ggZnJhbWVzIGJlbG93LiAgSnVzdCByZXNl
dCB0aGUgdGltaW5ncy4KKyAgICAvLyB0aW1lIGxvb3BpbmcgdGhyb3VnaCBmcmFtZXMgYmVsb3cu
IEp1c3QgcmVzZXQgdGhlIHRpbWluZ3MuCiAgICAgY29uc3QgZG91YmxlIGNBbmltYXRpb25SZXN5
bmNDdXRvZmYgPSA1ICogNjA7CiAgICAgaWYgKCh0aW1lIC0gbV9kZXNpcmVkRnJhbWVTdGFydFRp
bWUpID4gY0FuaW1hdGlvblJlc3luY0N1dG9mZikKICAgICAgICAgbV9kZXNpcmVkRnJhbWVTdGFy
dFRpbWUgPSB0aW1lICsgY3VycmVudER1cmF0aW9uOwpAQCAtNTMzLDcgKzUzOSw3IEBAIHZvaWQg
Qml0bWFwSW1hZ2U6OnN0YXJ0QW5pbWF0aW9uKENhdGNoVXBBbmltYXRpb24gY2F0Y2hVcElmTmVj
ZXNzYXJ5KQogICAgIC8vIFRoZSBpbWFnZSBtYXkgbG9hZCBtb3JlIHNsb3dseSB0aGFuIGl0J3Mg
c3VwcG9zZWQgdG8gYW5pbWF0ZSwgc28gdGhhdCBieQogICAgIC8vIHRoZSB0aW1lIHdlIHJlYWNo
IHRoZSBlbmQgb2YgdGhlIGZpcnN0IHJlcGV0aXRpb24sIHdlJ3JlIHdlbGwgYmVoaW5kLgogICAg
IC8vIENsYW1wIHRoZSBkZXNpcmVkIGZyYW1lIHN0YXJ0IHRpbWUgaW4gdGhpcyBjYXNlLCBzbyB0
aGF0IHdlIGRvbid0IHNraXAKLSAgICAvLyBmcmFtZXMgKG9yIHdob2xlIGl0ZXJhdGlvbnMpIHRy
eWluZyB0byAiY2F0Y2ggdXAiLiAgVGhpcyBpcyBhIHRyYWRlb2ZmOgorICAgIC8vIGZyYW1lcyAo
b3Igd2hvbGUgaXRlcmF0aW9ucykgdHJ5aW5nIHRvICJjYXRjaCB1cCIuIFRoaXMgaXMgYSB0cmFk
ZW9mZjoKICAgICAvLyBJdCBndWFyYW50ZWVzIHVzZXJzIHNlZSB0aGUgd2hvbGUgYW5pbWF0aW9u
IHRoZSBzZWNvbmQgdGltZSB0aHJvdWdoIGFuZAogICAgIC8vIGRvbid0IG1pc3MgYW55IHJlcGV0
aXRpb25zLCBhbmQgaXMgY2xvc2VyIHRvIHdoYXQgb3RoZXIgYnJvd3NlcnMgZG87IG9uCiAgICAg
Ly8gdGhlIG90aGVyIGhhbmQsIGl0IG1ha2VzIGFuaW1hdGlvbnMgImxlc3MgYWNjdXJhdGUiIGZv
ciBwYWdlcyB0aGF0IHRyeSB0bwpAQCAtNTQ1LDU1ICs1NTEsNDIgQEAgdm9pZCBCaXRtYXBJbWFn
ZTo6c3RhcnRBbmltYXRpb24oQ2F0Y2hVcEFuaW1hdGlvbiBjYXRjaFVwSWZOZWNlc3NhcnkpCiAK
ICAgICBpZiAoY2F0Y2hVcElmTmVjZXNzYXJ5ID09IERvTm90Q2F0Y2hVcCB8fCB0aW1lIDwgbV9k
ZXNpcmVkRnJhbWVTdGFydFRpbWUpIHsKICAgICAgICAgLy8gSGF2ZW4ndCB5ZXQgcmVhY2hlZCB0
aW1lIGZvciBuZXh0IGZyYW1lIHRvIHN0YXJ0OyBkZWxheSB1bnRpbCB0aGVuLgotICAgICAgICBt
X2ZyYW1lVGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRpbWVyPigqdGhpcywgJkJpdG1hcEltYWdl
OjphZHZhbmNlQW5pbWF0aW9uKTsKLSAgICAgICAgbV9mcmFtZVRpbWVyLT5zdGFydE9uZVNob3Qo
c3RkOjptYXgobV9kZXNpcmVkRnJhbWVTdGFydFRpbWUgLSB0aW1lLCAwLikpOwotICAgIH0gZWxz
ZSB7Ci0gICAgICAgIC8vIFdlJ3ZlIGFscmVhZHkgcmVhY2hlZCBvciBwYXNzZWQgdGhlIHRpbWUg
Zm9yIHRoZSBuZXh0IGZyYW1lIHRvIHN0YXJ0LgotICAgICAgICAvLyBTZWUgaWYgd2UndmUgYWxz
byBwYXNzZWQgdGhlIHRpbWUgZm9yIGZyYW1lcyBhZnRlciB0aGF0IHRvIHN0YXJ0LCBpbgotICAg
ICAgICAvLyBjYXNlIHdlIG5lZWQgdG8gc2tpcCBzb21lIGZyYW1lcyBlbnRpcmVseS4gIFJlbWVt
YmVyIG5vdCB0byBhZHZhbmNlCi0gICAgICAgIC8vIHRvIGFuIGluY29tcGxldGUgZnJhbWUuCi0g
ICAgICAgIGZvciAoc2l6ZV90IGZyYW1lQWZ0ZXJOZXh0ID0gKG5leHRGcmFtZSArIDEpICUgZnJh
bWVDb3VudCgpOyBmcmFtZUlzQ29tcGxldGVBdEluZGV4KGZyYW1lQWZ0ZXJOZXh0KTsgZnJhbWVB
ZnRlck5leHQgPSAobmV4dEZyYW1lICsgMSkgJSBmcmFtZUNvdW50KCkpIHsKLSAgICAgICAgICAg
IC8vIFNob3VsZCB3ZSBza2lwIHRoZSBuZXh0IGZyYW1lPwotICAgICAgICAgICAgZG91YmxlIGZy
YW1lQWZ0ZXJOZXh0U3RhcnRUaW1lID0gbV9kZXNpcmVkRnJhbWVTdGFydFRpbWUgKyBmcmFtZUR1
cmF0aW9uQXRJbmRleChuZXh0RnJhbWUpOwotICAgICAgICAgICAgaWYgKHRpbWUgPCBmcmFtZUFm
dGVyTmV4dFN0YXJ0VGltZSkKLSAgICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgICAg
Ly8gWWVzOyBza2lwIG92ZXIgaXQgd2l0aG91dCBub3RpZnlpbmcgb3VyIG9ic2VydmVycy4KLSAg
ICAgICAgICAgIGlmICghaW50ZXJuYWxBZHZhbmNlQW5pbWF0aW9uKFNraXBwaW5nRnJhbWVzVG9D
YXRjaFVwKSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2Rlc2lyZWRG
cmFtZVN0YXJ0VGltZSA9IGZyYW1lQWZ0ZXJOZXh0U3RhcnRUaW1lOwotICAgICAgICAgICAgbmV4
dEZyYW1lID0gZnJhbWVBZnRlck5leHQ7Ci0gICAgICAgIH0KKyAgICAgICAgc3RhcnRUaW1lcihz
dGQ6Om1heDxkb3VibGU+KG1fZGVzaXJlZEZyYW1lU3RhcnRUaW1lIC0gdGltZSwgMCkpOworICAg
ICAgICByZXR1cm47CisgICAgfQogCi0gICAgICAgIC8vIERyYXcgdGhlIG5leHQgZnJhbWUgaW1t
ZWRpYXRlbHkuICBOb3RlIHRoYXQgbV9kZXNpcmVkRnJhbWVTdGFydFRpbWUKLSAgICAgICAgLy8g
bWF5IGJlIGluIHRoZSBwYXN0LCBtZWFuaW5nIHRoZSBuZXh0IHRpbWUgdGhyb3VnaCB0aGlzIGZ1
bmN0aW9uIHdlJ2xsCi0gICAgICAgIC8vIGtpY2sgb2ZmIHRoZSBuZXh0IGFkdmFuY2VtZW50IHNv
b25lciB0aGFuIHRoaXMgZnJhbWUncyBkdXJhdGlvbiB3b3VsZAotICAgICAgICAvLyBzdWdnZXN0
LgotICAgICAgICBpZiAoaW50ZXJuYWxBZHZhbmNlQW5pbWF0aW9uKCkpIHsKLSAgICAgICAgICAg
IC8vIFRoZSBpbWFnZSByZWdpb24gaGFzIGJlZW4gbWFya2VkIGRpcnR5LCBidXQgb25jZSB3ZSBy
ZXR1cm4gdG8gb3VyCi0gICAgICAgICAgICAvLyBjYWxsZXIsIGRyYXcoKSB3aWxsIGNsZWFyIGl0
LCBhbmQgbm90aGluZyB3aWxsIGNhdXNlIHRoZQotICAgICAgICAgICAgLy8gYW5pbWF0aW9uIHRv
IGFkdmFuY2UgYWdhaW4uICBXZSBuZWVkIHRvIHN0YXJ0IHRoZSB0aW1lciBmb3IgdGhlCi0gICAg
ICAgICAgICAvLyBuZXh0IGZyYW1lIHJ1bm5pbmcsIG9yIHRoZSBhbmltYXRpb24gY2FuIGhhbmcu
ICAoQ29tcGFyZSB0aGlzCi0gICAgICAgICAgICAvLyB3aXRoIHdoZW4gYWR2YW5jZUFuaW1hdGlv
bigpIGlzIGNhbGxlZCwgYW5kIHRoZSByZWdpb24gaXMgZGlydGllZAotICAgICAgICAgICAgLy8g
d2hpbGUgZHJhdygpIGlzIG5vdCBpbiB0aGUgY2FsbHN0YWNrLCBtZWFuaW5nIGRyYXcoKSBnZXRz
IGNhbGxlZAotICAgICAgICAgICAgLy8gdG8gdXBkYXRlIHRoZSByZWdpb24gYW5kIHRodXMgc3Rh
cnRBbmltYXRpb24oKSBpcyByZWFjaGVkIGFnYWluLikKLSAgICAgICAgICAgIC8vIE5PVEU6IEZv
ciBsYXJnZSBpbWFnZXMgd2l0aCBzbG93IG9yIGhlYXZpbHktbG9hZGVkIHN5c3RlbXMsCi0gICAg
ICAgICAgICAvLyB0aHJvd2luZyBhd2F5IGRhdGEgYXMgd2UgZ28gKHNlZSBkZXN0cm95RGVjb2Rl
ZERhdGEoKSkgbWVhbnMgd2UKLSAgICAgICAgICAgIC8vIGNhbiBzcGVuZCBzbyBtdWNoIHRpbWUg
cmUtZGVjb2RpbmcgZGF0YSBhYm92ZSB0aGF0IGJ5IHRoZSB0aW1lIHdlCi0gICAgICAgICAgICAv
LyByZWFjaCBoZXJlIHdlJ3JlIGJlaGluZCBhZ2Fpbi4gIElmIHdlIGxldCBzdGFydEFuaW1hdGlv
bigpIHJ1bgotICAgICAgICAgICAgLy8gdGhlIGNhdGNoLXVwIGNvZGUgYWdhaW4sIHdlIGNhbiBn
ZXQgbG9uZyBkZWxheXMgd2l0aG91dCBwYWludGluZwotICAgICAgICAgICAgLy8gYXMgd2UgcmFj
ZSB0aGUgdGltZXIsIG9yIGV2ZW4gaW5maW5pdGUgcmVjdXJzaW9uLiAgSW4gdGhpcwotICAgICAg
ICAgICAgLy8gc2l0dWF0aW9uIHRoZSBiZXN0IHdlIGNhbiBkbyBpcyB0byBzaW1wbHkgY2hhbmdl
IGZyYW1lcyBhcyBmYXN0Ci0gICAgICAgICAgICAvLyBhcyBwb3NzaWJsZSwgc28gZm9yY2Ugc3Rh
cnRBbmltYXRpb24oKSB0byBzZXQgYSB6ZXJvLWRlbGF5IHRpbWVyCi0gICAgICAgICAgICAvLyBh
bmQgYmFpbCBvdXQgaWYgd2UncmUgbm90IGNhdWdodCB1cC4KLSAgICAgICAgICAgIHN0YXJ0QW5p
bWF0aW9uKERvTm90Q2F0Y2hVcCk7CisgICAgQVNTRVJUKCFtX2ZyYW1lVGltZXIpOworCisgICAg
Ly8gV2UndmUgYWxyZWFkeSByZWFjaGVkIG9yIHBhc3NlZCB0aGUgdGltZSBmb3IgdGhlIG5leHQg
ZnJhbWUgdG8gc3RhcnQuCisgICAgLy8gU2VlIGlmIHdlJ3ZlIGFsc28gcGFzc2VkIHRoZSB0aW1l
IGZvciBmcmFtZXMgYWZ0ZXIgdGhhdCB0byBzdGFydCwgaW4KKyAgICAvLyBjYXNlIHdlIG5lZWQg
dG8gc2tpcCBzb21lIGZyYW1lcyBlbnRpcmVseS4gUmVtZW1iZXIgbm90IHRvIGFkdmFuY2UKKyAg
ICAvLyB0byBhbiBpbmNvbXBsZXRlIGZyYW1lLgorICAgIGZvciAoc2l6ZV90IGZyYW1lQWZ0ZXJO
ZXh0ID0gKG5leHRGcmFtZSArIDEpICUgZnJhbWVDb3VudCgpOyBmcmFtZUlzQ29tcGxldGVBdElu
ZGV4KGZyYW1lQWZ0ZXJOZXh0KTsgZnJhbWVBZnRlck5leHQgPSAobmV4dEZyYW1lICsgMSkgJSBm
cmFtZUNvdW50KCkpIHsKKyAgICAgICAgLy8gU2hvdWxkIHdlIHNraXAgdGhlIG5leHQgZnJhbWU/
CisgICAgICAgIGRvdWJsZSBmcmFtZUFmdGVyTmV4dFN0YXJ0VGltZSA9IG1fZGVzaXJlZEZyYW1l
U3RhcnRUaW1lICsgZnJhbWVEdXJhdGlvbkF0SW5kZXgobmV4dEZyYW1lKTsKKyAgICAgICAgaWYg
KHRpbWUgPCBmcmFtZUFmdGVyTmV4dFN0YXJ0VGltZSkKKyAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgIC8vIFllczsgc2tpcCBvdmVyIGl0IHdpdGhvdXQgbm90aWZ5aW5nIG91ciBvYnNlcnZl
cnMuIElmIHdlIGhpdCB0aGUgZW5kIHdoaWxlIGNhdGNoaW5nIHVwLAorICAgICAgICAvLyB0ZWxs
IHRoZSBvYnNlcnZlciBhc3luY2hyb25vdXNseS4KKyAgICAgICAgaWYgKCFpbnRlcm5hbEFkdmFu
Y2VBbmltYXRpb24oU2tpcHBpbmdGcmFtZXNUb0NhdGNoVXApKSB7CisgICAgICAgICAgICBtX3Bl
bmRpbmdOb3RpZnlBZnRlckNhdWdodFVwVG9MYXN0RnJhbWUgPSB0cnVlOworICAgICAgICAgICAg
c3RhcnRUaW1lcigwKTsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQorICAgICAgICBt
X2Rlc2lyZWRGcmFtZVN0YXJ0VGltZSA9IGZyYW1lQWZ0ZXJOZXh0U3RhcnRUaW1lOworICAgICAg
ICBuZXh0RnJhbWUgPSBmcmFtZUFmdGVyTmV4dDsKICAgICB9CisKKyAgICAvLyBEcmF3IHRoZSBu
ZXh0IGZyYW1lIGFzIHNvb24gYXMgcG9zc2libGUuIE5vdGUgdGhhdCBtX2Rlc2lyZWRGcmFtZVN0
YXJ0VGltZQorICAgIC8vIG1heSBiZSBpbiB0aGUgcGFzdCwgbWVhbmluZyB0aGUgbmV4dCB0aW1l
IHRocm91Z2ggdGhpcyBmdW5jdGlvbiB3ZSdsbAorICAgIC8vIGtpY2sgb2ZmIHRoZSBuZXh0IGFk
dmFuY2VtZW50IHNvb25lciB0aGFuIHRoaXMgZnJhbWUncyBkdXJhdGlvbiB3b3VsZCBzdWdnZXN0
LgorICAgIHN0YXJ0VGltZXIoMCk7CiB9CiAKIHZvaWQgQml0bWFwSW1hZ2U6OnN0b3BBbmltYXRp
b24oKQogewotICAgIC8vIFRoaXMgdGltZXIgaXMgdXNlZCB0byBhbmltYXRlIGFsbCBvY2N1cnJl
bmNlcyBvZiB0aGlzIGltYWdlLiAgRG9uJ3QgaW52YWxpZGF0ZQorICAgIC8vIFRoaXMgdGltZXIg
aXMgdXNlZCB0byBhbmltYXRlIGFsbCBvY2N1cnJlbmNlcyBvZiB0aGlzIGltYWdlLiBEb24ndCBp
bnZhbGlkYXRlCiAgICAgLy8gdGhlIHRpbWVyIHVubGVzcyBhbGwgcmVuZGVyZXJzIGhhdmUgc3Rv
cHBlZCBkcmF3aW5nLgogICAgIGNsZWFyVGltZXIoKTsKIH0KQEAgLTY1Nyw2ICs2NTAsMTIgQEAg
dm9pZCBCaXRtYXBJbWFnZTo6YWR2YW5jZUFuaW1hdGlvbigpCiBib29sIEJpdG1hcEltYWdlOjpp
bnRlcm5hbEFkdmFuY2VBbmltYXRpb24oQW5pbWF0aW9uQWR2YW5jZW1lbnQgYWR2YW5jZW1lbnQp
CiB7CiAgICAgY2xlYXJUaW1lcigpOworCisgICAgaWYgKG1fcGVuZGluZ05vdGlmeUFmdGVyQ2F1
Z2h0VXBUb0xhc3RGcmFtZSkgeworICAgICAgICBpbWFnZU9ic2VydmVyKCktPmFuaW1hdGlvbkFk
dmFuY2VkKHRoaXMpOworICAgICAgICBtX3BlbmRpbmdOb3RpZnlBZnRlckNhdWdodFVwVG9MYXN0
RnJhbWUgPSBmYWxzZTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KICAgICAKICAgICAr
K21fY3VycmVudEZyYW1lOwogICAgIGJvb2wgYWR2YW5jZWRBbmltYXRpb24gPSB0cnVlOwpAQCAt
NjY0LDcgKzY2Myw3IEBAIGJvb2wgQml0bWFwSW1hZ2U6OmludGVybmFsQWR2YW5jZUFuaW1hdGlv
bihBbmltYXRpb25BZHZhbmNlbWVudCBhZHZhbmNlbWVudCkKICAgICBpZiAobV9jdXJyZW50RnJh
bWUgPj0gZnJhbWVDb3VudCgpKSB7CiAgICAgICAgICsrbV9yZXBldGl0aW9uc0NvbXBsZXRlOwog
Ci0gICAgICAgIC8vIEdldCB0aGUgcmVwZXRpdGlvbiBjb3VudCBhZ2Fpbi4gIElmIHdlIHdlcmVu
J3QgYWJsZSB0byBnZXQgYQorICAgICAgICAvLyBHZXQgdGhlIHJlcGV0aXRpb24gY291bnQgYWdh
aW4uIElmIHdlIHdlcmVuJ3QgYWJsZSB0byBnZXQgYQogICAgICAgICAvLyByZXBldGl0aW9uIGNv
dW50IGJlZm9yZSwgd2Ugc2hvdWxkIGhhdmUgZGVjb2RlZCB0aGUgd2hvbGUgaW1hZ2UgYnkKICAg
ICAgICAgLy8gbm93LCBzbyBpdCBzaG91bGQgbm93IGJlIGF2YWlsYWJsZS4KICAgICAgICAgLy8g
Tm90ZSB0aGF0IHdlIGRvbid0IG5lZWQgdG8gc3BlY2lhbC1jYXNlIGNBbmltYXRpb25Mb29wT25j
ZSBoZXJlCkBAIC02ODMsNyArNjgyLDcgQEAgYm9vbCBCaXRtYXBJbWFnZTo6aW50ZXJuYWxBZHZh
bmNlQW5pbWF0aW9uKEFuaW1hdGlvbkFkdmFuY2VtZW50IGFkdmFuY2VtZW50KQogCiAgICAgLy8g
V2UgbmVlZCB0byBkcmF3IHRoaXMgZnJhbWUgaWYgd2UgYWR2YW5jZWQgdG8gaXQgd2hpbGUgbm90
IHNraXBwaW5nLCBvciBpZgogICAgIC8vIHdoaWxlIHRyeWluZyB0byBza2lwIGZyYW1lcyB3ZSBo
aXQgdGhlIGxhc3QgZnJhbWUgYW5kIHRodXMgaGFkIHRvIHN0b3AuCi0gICAgaWYgKChhZHZhbmNl
bWVudCA9PSBOb3JtYWwgJiYgYWR2YW5jZWRBbmltYXRpb24pIHx8IChhZHZhbmNlbWVudCA9PSBT
a2lwcGluZ0ZyYW1lc1RvQ2F0Y2hVcCAmJiAhYWR2YW5jZWRBbmltYXRpb24pKQorICAgIGlmIChh
ZHZhbmNlbWVudCA9PSBOb3JtYWwgJiYgYWR2YW5jZWRBbmltYXRpb24pCiAgICAgICAgIGltYWdl
T2JzZXJ2ZXIoKS0+YW5pbWF0aW9uQWR2YW5jZWQodGhpcyk7CiAKICAgICByZXR1cm4gYWR2YW5j
ZWRBbmltYXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9CaXRtYXBJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFw
SW1hZ2UuaAppbmRleCAyNzZhNmFlN2FkYjNlODg3NTNjOGYwM2Q5OWM5Y2YzMjZhYTE1NzkzLi4y
OTk3ODhhZDA4MDdkNzMyZTZmZDZlZGFjYmIzZDYxNzNjYTljZDRjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKQEAgLTEzNiw4ICsxMzYsOCBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGRhdGFDaGFuZ2VkKGJvb2wgYWxsRGF0YVJlY2Vp
dmVkKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNv
bnN0IG92ZXJyaWRlOwogCi0gICAgLy8gSXQgbWF5IGxvb2sgdW51c3VhbCB0aGF0IHRoZXJlIGlz
IG5vIHN0YXJ0IGFuaW1hdGlvbiBjYWxsIGFzIHB1YmxpYyBBUEkuICBUaGlzIGlzIGJlY2F1c2UK
LSAgICAvLyB3ZSBzdGFydCBhbmQgc3RvcCBhbmltYXRpbmcgbGF6aWx5LiAgQW5pbWF0aW9uIGJl
Z2lucyB3aGVuZXZlciBzb21lb25lIGRyYXdzIHRoZSBpbWFnZS4gIEl0IHdpbGwKKyAgICAvLyBJ
dCBtYXkgbG9vayB1bnVzdWFsIHRoYXQgdGhlcmUgaXMgbm8gc3RhcnQgYW5pbWF0aW9uIGNhbGwg
YXMgcHVibGljIEFQSS4gVGhpcyBpcyBiZWNhdXNlCisgICAgLy8gd2Ugc3RhcnQgYW5kIHN0b3Ag
YW5pbWF0aW5nIGxhemlseS4gQW5pbWF0aW9uIGJlZ2lucyB3aGVuZXZlciBzb21lb25lIGRyYXdz
IHRoZSBpbWFnZS4gSXQgd2lsbAogICAgIC8vIGF1dG9tYXRpY2FsbHkgcGF1c2Ugb25jZSBhbGwg
b2JzZXJ2ZXJzIG5vIGxvbmdlciB3YW50IHRvIHJlbmRlciB0aGUgaW1hZ2UgYW55d2hlcmUuCiAg
ICAgdmlydHVhbCB2b2lkIHN0b3BBbmltYXRpb24oKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZv
aWQgcmVzZXRBbmltYXRpb24oKSBvdmVycmlkZTsKQEAgLTIyOCwxMCArMjI4LDEwIEBAIHByb3Rl
Y3RlZDoKICAgICAvLyBDYWxsZWQgYmVmb3JlIGFjY2Vzc2luZyBtX2ZyYW1lc1tpbmRleF0gZm9y
IGluZm8gd2l0aG91dCBkZWNvZGluZy4gUmV0dXJucyBmYWxzZSBvbiBpbmRleCBvdXQgb2YgYm91
bmRzLgogICAgIGJvb2wgZW5zdXJlRnJhbWVJc0NhY2hlZChzaXplX3QgaW5kZXgsIEltYWdlRnJh
bWVDYWNoaW5nID0gQ2FjaGVNZXRhZGF0YUFuZEZyYW1lKTsKIAotICAgIC8vIENhbGxlZCB0byBp
bnZhbGlkYXRlIGNhY2hlZCBkYXRhLiAgV2hlbiB8ZGVzdHJveUFsbHwgaXMgdHJ1ZSwgd2Ugd2lw
ZSBvdXQKKyAgICAvLyBDYWxsZWQgdG8gaW52YWxpZGF0ZSBjYWNoZWQgZGF0YS4gV2hlbiB8ZGVz
dHJveUFsbHwgaXMgdHJ1ZSwgd2Ugd2lwZSBvdXQKICAgICAvLyB0aGUgZW50aXJlIGZyYW1lIGJ1
ZmZlciBjYWNoZSBhbmQgdGVsbCB0aGUgaW1hZ2Ugc291cmNlIHRvIGRlc3Ryb3kKICAgICAvLyBl
dmVyeXRoaW5nOyB0aGlzIGlzIHVzZWQgd2hlbiBlLmcuIHdlIHdhbnQgdG8gZnJlZSBzb21lIHJv
b20gaW4gdGhlIGltYWdlCi0gICAgLy8gY2FjaGUuICBJZiB8ZGVzdHJveUFsbHwgaXMgZmFsc2Us
IHdlIG9ubHkgZGVsZXRlIGZyYW1lcyB1cCB0byB0aGUgY3VycmVudAorICAgIC8vIGNhY2hlLiBJ
ZiB8ZGVzdHJveUFsbHwgaXMgZmFsc2UsIHdlIG9ubHkgZGVsZXRlIGZyYW1lcyB1cCB0byB0aGUg
Y3VycmVudAogICAgIC8vIG9uZTsgdGhpcyBpcyB1c2VkIHdoaWxlIGFuaW1hdGluZyBsYXJnZSBp
bWFnZXMgdG8ga2VlcCBtZW1vcnkgZm9vdHByaW50CiAgICAgLy8gbG93IHdpdGhvdXQgcmVkZWNv
ZGluZyB0aGUgd2hvbGUgaW1hZ2Ugb24gZXZlcnkgZnJhbWUuCiAgICAgdmlydHVhbCB2b2lkIGRl
c3Ryb3lEZWNvZGVkRGF0YShib29sIGRlc3Ryb3lBbGwgPSB0cnVlKSBvdmVycmlkZTsKQEAgLTI0
OSw3ICsyNDksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBpc1NpemVBdmFpbGFibGUoKTsKIAog
ICAgIC8vIENhbGxlZCBhZnRlciBhc2tpbmcgdGhlIHNvdXJjZSBmb3IgYW55IGluZm9ybWF0aW9u
IHRoYXQgbWF5IHJlcXVpcmUKLSAgICAvLyBkZWNvZGluZyBwYXJ0IG9mIHRoZSBpbWFnZSAoZS5n
LiwgdGhlIGltYWdlIHNpemUpLiAgV2UgbmVlZCB0byByZXBvcnQKKyAgICAvLyBkZWNvZGluZyBw
YXJ0IG9mIHRoZSBpbWFnZSAoZS5nLiwgdGhlIGltYWdlIHNpemUpLiBXZSBuZWVkIHRvIHJlcG9y
dAogICAgIC8vIHRoZSBwYXJ0aWFsbHkgZGVjb2RlZCBkYXRhIHRvIG91ciBvYnNlcnZlciBzbyBp
dCBoYXMgYW4gYWNjdXJhdGUKICAgICAvLyBhY2NvdW50IG9mIHRoZSBCaXRtYXBJbWFnZSdzIG1l
bW9yeSB1c2FnZS4KICAgICB2b2lkIGRpZERlY29kZVByb3BlcnRpZXMoKSBjb25zdDsKQEAgLTI2
MCw3ICsyNjAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0QW5pbWF0aW9u
KENhdGNoVXBBbmltYXRpb24gPSBDYXRjaFVwKSBvdmVycmlkZTsKICAgICB2b2lkIGFkdmFuY2VB
bmltYXRpb24oKTsKIAotICAgIC8vIEZ1bmN0aW9uIHRoYXQgZG9lcyB0aGUgcmVhbCB3b3JrIG9m
IGFkdmFuY2luZyB0aGUgYW5pbWF0aW9uLiAgV2hlbgorICAgIC8vIEZ1bmN0aW9uIHRoYXQgZG9l
cyB0aGUgcmVhbCB3b3JrIG9mIGFkdmFuY2luZyB0aGUgYW5pbWF0aW9uLiBXaGVuCiAgICAgLy8g
c2tpcHBpbmdGcmFtZXMgaXMgdHJ1ZSwgd2UncmUgaW4gdGhlIG1pZGRsZSBvZiBhIGxvb3AgdHJ5
aW5nIHRvIHNraXAgb3ZlcgogICAgIC8vIGEgYnVuY2ggb2YgYW5pbWF0aW9uIGZyYW1lcywgc28g
d2Ugc2hvdWxkIG5vdCBkbyB0aGluZ3MgbGlrZSBkZWNvZGUgZWFjaAogICAgIC8vIG9uZSBvciBu
b3RpZnkgb3VyIG9ic2VydmVycy4KQEAgLTI3MSw3ICsyNzEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
Ly8gSGFuZGxlIHBsYXRmb3JtLXNwZWNpZmljIGRhdGEKICAgICB2b2lkIGludmFsaWRhdGVQbGF0
Zm9ybURhdGEoKTsKIAotICAgIC8vIENoZWNrcyB0byBzZWUgaWYgdGhlIGltYWdlIGlzIGEgMXgx
IHNvbGlkIGNvbG9yLiAgV2Ugb3B0aW1pemUgdGhlc2UgaW1hZ2VzIGFuZCBqdXN0IGRvIGEgZmls
bCByZWN0IGluc3RlYWQuCisgICAgLy8gQ2hlY2tzIHRvIHNlZSBpZiB0aGUgaW1hZ2UgaXMgYSAx
eDEgc29saWQgY29sb3IuIFdlIG9wdGltaXplIHRoZXNlIGltYWdlcyBhbmQganVzdCBkbyBhIGZp
bGwgcmVjdCBpbnN0ZWFkLgogICAgIC8vIFRoaXMgY2hlY2sgc2hvdWxkIGhhcHBlbiByZWdhcmRs
ZXNzIHdoZXRoZXIgbV9jaGVja2VkRm9yU29saWRDb2xvciBpcyBhbHJlYWR5IHNldCwgYXMgdGhl
IGZyYW1lIG1heSBoYXZlCiAgICAgLy8gY2hhbmdlZC4KICAgICB2b2lkIGNoZWNrRm9yU29saWRD
b2xvcigpOwpAQCAtMjg2LDYgKzI4Niw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgdmly
dHVhbCBib29sIGRlY29kZWREYXRhSXNQdXJnZWFibGUoKSBjb25zdCBvdmVycmlkZTsKICAgICB2
b2lkIGNsZWFyVGltZXIoKTsKKyAgICB2b2lkIHN0YXJ0VGltZXIoZG91YmxlIGRlbGF5KTsKIAog
ICAgIEltYWdlU291cmNlIG1fc291cmNlOwogICAgIG11dGFibGUgSW50U2l6ZSBtX3NpemU7IC8v
IFRoZSBzaXplIHRvIHVzZSBmb3IgdGhlIG92ZXJhbGwgaW1hZ2UgKHdpbGwganVzdCBiZSB0aGUg
c2l6ZSBvZiB0aGUgZmlyc3QgaW1hZ2UpLgpAQCAtMzAwLDcgKzMwMSw3IEBAIHByaXZhdGU6CiAg
ICAgVmVjdG9yPEZyYW1lRGF0YSwgMT4gbV9mcmFtZXM7IC8vIEFuIGFycmF5IG9mIHRoZSBjYWNo
ZWQgZnJhbWVzIG9mIHRoZSBhbmltYXRpb24uIFdlIGhhdmUgdG8gcmVmIGZyYW1lcyB0byBwaW4g
dGhlbSBpbiB0aGUgY2FjaGUuCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGltZXI+IG1fZnJhbWVU
aW1lcjsKLSAgICBpbnQgbV9yZXBldGl0aW9uQ291bnQ7IC8vIEhvdyBtYW55IHRvdGFsIGFuaW1h
dGlvbiBsb29wcyB3ZSBzaG91bGQgZG8uICBUaGlzIHdpbGwgYmUgY0FuaW1hdGlvbk5vbmUgaWYg
dGhpcyBpbWFnZSB0eXBlIGlzIGluY2FwYWJsZSBvZiBhbmltYXRpb24uCisgICAgaW50IG1fcmVw
ZXRpdGlvbkNvdW50OyAvLyBIb3cgbWFueSB0b3RhbCBhbmltYXRpb24gbG9vcHMgd2Ugc2hvdWxk
IGRvLiBUaGlzIHdpbGwgYmUgY0FuaW1hdGlvbk5vbmUgaWYgdGhpcyBpbWFnZSB0eXBlIGlzIGlu
Y2FwYWJsZSBvZiBhbmltYXRpb24uCiAgICAgUmVwZXRpdGlvbkNvdW50U3RhdHVzIG1fcmVwZXRp
dGlvbkNvdW50U3RhdHVzOwogICAgIGludCBtX3JlcGV0aXRpb25zQ29tcGxldGU7ICAvLyBIb3cg
bWFueSByZXBldGl0aW9ucyB3ZSd2ZSBmaW5pc2hlZC4KICAgICBkb3VibGUgbV9kZXNpcmVkRnJh
bWVTdGFydFRpbWU7ICAvLyBUaGUgc3lzdGVtIHRpbWUgYXQgd2hpY2ggd2UgaG9wZSB0byBzZWUg
dGhlIG5leHQgY2FsbCB0byBzdGFydEFuaW1hdGlvbigpLgpAQCAtMzA5LDcgKzMxMCw3IEBAIHBy
aXZhdGU6CiAgICAgbXV0YWJsZSBSZXRhaW5QdHI8TlNJbWFnZT4gbV9uc0ltYWdlOyAvLyBBIGNh
Y2hlZCBOU0ltYWdlIG9mIGZyYW1lIDAuIE9ubHkgYnVpbHQgbGF6aWx5IGlmIHNvbWVvbmUgYWN0
dWFsbHkgcXVlcmllcyBmb3Igb25lLgogI2VuZGlmCiAjaWYgVVNFKENHKQotICAgIG11dGFibGUg
UmV0YWluUHRyPENGRGF0YVJlZj4gbV90aWZmUmVwOyAvLyBDYWNoZWQgVElGRiByZXAgZm9yIGZy
YW1lIDAuICBPbmx5IGJ1aWx0IGxhemlseSBpZiBzb21lb25lIHF1ZXJpZXMgZm9yIG9uZS4KKyAg
ICBtdXRhYmxlIFJldGFpblB0cjxDRkRhdGFSZWY+IG1fdGlmZlJlcDsgLy8gQ2FjaGVkIFRJRkYg
cmVwIGZvciBmcmFtZSAwLiBPbmx5IGJ1aWx0IGxhemlseSBpZiBzb21lb25lIHF1ZXJpZXMgZm9y
IG9uZS4KICNlbmRpZgogCiAgICAgQ29sb3IgbV9zb2xpZENvbG9yOyAgLy8gSWYgd2UncmUgYSAx
eDEgc29saWQgY29sb3IsIHRoaXMgaXMgdGhlIGNvbG9yIHRvIHVzZSB0byBmaWxsLgpAQCAtMzM1
LDYgKzMzNiw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3NpemVBdmFpbGFibGUgOiAxOyAvLyBX
aGV0aGVyIG9yIG5vdCB3ZSBjYW4gb2J0YWluIHRoZSBzaXplIG9mIHRoZSBmaXJzdCBpbWFnZSBm
cmFtZSB5ZXQgZnJvbSBJbWFnZUlPLgogICAgIG11dGFibGUgYm9vbCBtX2hhc1VuaWZvcm1GcmFt
ZVNpemUgOiAxOwogICAgIG11dGFibGUgYm9vbCBtX2hhdmVGcmFtZUNvdW50IDogMTsKKyAgICBi
b29sIG1fcGVuZGluZ05vdGlmeUFmdGVyQ2F1Z2h0VXBUb0xhc3RGcmFtZSA6IDE7CiAKICAgICBS
ZWZQdHI8SW1hZ2U+IG1fY2FjaGVkSW1hZ2U7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJSZXBsYWNlZC5jcHAKaW5kZXggZmVkNWI2MzVjMTEyOGY5NjczOTVjY2ZiMzlkZDcw
ZDZjMGNjZmQ4YS4uOTBmNWNiYWFiOGViM2FkMzhhZWU5ODJkYjAyMzA2Zjg3ZjUwYWY0MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCkBAIC0xMzksNyAr
MTM5LDggQEAgdm9pZCBSZW5kZXJSZXBsYWNlZDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8s
IGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKIHsKICAgICBpZiAoIXNob3VsZFBhaW50
KHBhaW50SW5mbywgcGFpbnRPZmZzZXQpKQogICAgICAgICByZXR1cm47Ci0gICAgCisKKyAgICBS
ZW5kZXJPYmplY3Q6OlNldExheW91dE5lZWRlZEZvcmJpZGRlblNjb3BlIHNjb3BlKHRoaXMpOwog
ICAgIExheW91dFBvaW50IGFkanVzdGVkUGFpbnRPZmZzZXQgPSBwYWludE9mZnNldCArIGxvY2F0
aW9uKCk7CiAgICAgCiAgICAgaWYgKGhhc0JveERlY29yYXRpb25zKCkgJiYgcGFpbnRJbmZvLnBo
YXNlID09IFBhaW50UGhhc2VGb3JlZ3JvdW5kKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGVhM2M4M2UyZTNjM2RlYTdhMmRk
M2I5NmRlMmQ0MmVkZTE2NmM1MTkuLjBlMzU4YjhjNWIzNDdkMjVlOTJmZmIyZDUxZDZjNTcwNGJh
NDBhNjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxNS0wNS0wMiAgU2ltb24gRnJhc2VyICA8
c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBBc3NlcnRpb24gZmFpbHVyZSAoIW5l
ZWRzTGF5b3V0KCkpIGxvYWRpbmcgaW5rZWRtYWcuY29tCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQ1MjgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFRlc3QgdGhhdCBzbGVlcHMgZm9yIGEg
d2hpbGUgdG8gZm9yY2UgYW4gaW1hZ2UgaW50byBjYXRjaHVwIG1vZGUuCisKKyAgICAgICAgKiBm
YXN0L2ltYWdlcy9yZXNvdXJjZXMvc3Bpbm5lci5naWY6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
aW1hZ2VzL3NldC1uZWVkcy1sYXlvdXQtaW4tcGFpbnRpbmctZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2ltYWdlcy9zZXQtbmVlZHMtbGF5b3V0LWluLXBhaW50aW5nLmh0bWw6
IEFkZGVkLgorCiAyMDE1LTA1LTAxICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUu
Y29tPgogCiAgICAgICAgIEF2b2lkIGNvbXBvc2l0aW5nIHVwZGF0ZXMgYWZ0ZXIgc3R5bGUgcmVj
YWxjcyB3aGljaCBoYXZlIG5vIGNvbXBvc2l0aW5nIGltcGxpY2F0aW9ucwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvcmVzb3VyY2VzL3NwaW5uZXIuZ2lmIGIvTGF5b3V0VGVz
dHMvZmFzdC9pbWFnZXMvcmVzb3VyY2VzL3NwaW5uZXIuZ2lmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdhNDllY2Y5
Zjg0NzcwZjM1MzNhMDlkODIxMzU3ZDY3YjgzYWJhYTQKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFs
IDMyMDgKemNtYyhpWDs0I0g5PnBKZEZFN2hgSXswMyYxQSNVbTV1dDRlM04pKDwwUmpZTTVmQjdL
VnBNUktNSVo9LUJfdHFnCnoyeH53fE5NZVd6QX0lMVUlXzBxSVZffmJIX1VIaDFpe2pwdEokNnNt
SU47UCZQMVcjV3Mtfip2ZSFPKy0tdWoqWQp6SWo4RCF7ZTdLWDV8e3VKbTstPjFBM3J1VUd8Ykcq
akU7XkBPLStyRGtHSHFDX3hBUl9lKkpvR1p0bHNHQ3UrNjIKenY5U15PKkUwV3paMU1AOyU8JkJJ
UyE+RyU0ZChhRnw4QnhiLWtGZlBRQH43NU49Oy1ZPmBCUGpjUThSPG57OzU7CnpMQlJaMWgoZXR8
d1B4WGxnK35FcyMmRTx4RE0yJGtJPllDUUV0YEUmcXQtQmpyIyRASjhqQCExPTRsKFlxbitMTAp6
e2k7TGUhc2BDLSp2MTR5SF9JVjUkRHFsVTtCUkM4eUJ9d0A9Zi02UjRXSSheYnVRdEttdCRgYFRr
RG9jVERKR1UKeks3VVI/QmMqMz5KKSRBJVpXPmdPPyNDfU9JfDYlcCRrPiN+KnJyJmk4LStqdyl0
YVVnWldfSjlQZ2tOa2ItS0NCCnp0ZSQ9R0xNcDR1RlF4Y2NhPHNjJnU1QkpaUkQ3d0hhI2hDdjJI
JEdKOX1mMX0/RiFaQmEtLXZIYCNjX2N7dnxsSAp6RFcmS3NGZE5Hc090ZmAqPjU7UGdlZVVyY3JF
QCF7JjlNNzZTakJrSkY1b05nZDFkflNlUmhGOFQwSntAR1RQVVgKeio2ZHEoUn19XmklRVMzfD8m
U2IrWntOJClmJTt+X2wqIXZ3O15fU3VqQSFOWUxEVUZoIy1jUlojKEhCK0d9fnt+CnokUnRCJkEk
JDdvdEhLSThXdzsra2J1aDNHSl4jYmVOWjZQfjVKRT8yUTB+ZS1ZemVpVHd5JWBDSkJ5dEk3UTUl
VQp6UXduMkxGX09mcDQyX2M4MjJuSEhSQmIwYUImYD1+Vn4oQHlFO0dMN3AwOHIpdj5gPnBDVHV3
SWBjPnQlYG58I2QKekVYa3pxSXl0a3Y8QFN4bHFyIVdNR1ZZX28+QnUyZk44V1NiUm5McHFNMF9U
dXF4PW1wdGReRiVVc2R4KFJtK3krCnpVdE15WkcjKVcwRVFiR2o5XmN4MjkpSEgzPm5NbTV1ZFkj
czRXRTtUdVB2NEQyYHRQU3l5TVFxVzV5Z09nSkBTTAp6c3E4VWhZcTJxdjhROHNDP04yQ3J5SSh4
JnFaezUlSX1aXkxWVlZka2tfVDx1TVByZmt3eztSbmVsI1AlWHtafWMKejVERSN8Pzd9RHBnPDhD
czRlbUBnJVlecDJsYlRxUjZUeiptI25xSDV0eCZEY2xBU3JOS2lafk9VdTsjZWRRMk84CnpYOyp3
WmwxbDlkPFpObE5OVFIqQGJAWGAhLVo8IWRFdS1XY1N0JigkO2Ardjd0YSFyeChKNWRXWGRMYzt7
TngkWAp6YWgzN1hgUTEja2RxP1JrYzNuZXVvfEJ4Nm00cH5zVWcqYEIlbGVsclRoc3Z5P3IpPjNX
PUQ0JGAkUU52KkR+KzUKemdoPitRO2EtTGgpSnlUSHRCMk5HVTkzXj5CKV8rbUhkc2hPVEM4Tkhr
M0dsV2ZhcUV8dD5BamojNjJMdWMrSylaCnp1a2xRJUE/cjw9Qmh0NHk4MkdiNzl6Nzs2TyshTUx1
VWtqUlYmfW4wX1RnZUthZCowRFc7UDN5dmFHX0luc0t5Ngp6aTRaQn07IStRIzlAVTt+SzgzYndQ
T2R3Q2t6MzJea3NyRXpne2BHRjs5VVY+MmdRIX5ORDxycm5zJEhZVU1Wen4KekZeWkdKclNhSiN0
MUFIVSNKMV9fT2tRKCYkXzRDWSlBUkw3QGo2IWR6MUloUl5MVCh3S2ZIMUh6UWZNWkZNfGZ1Cnpp
QFgyUl8tJUJ2cWdLe0Y4Yk1yNUJ+STU0aEo7WigkI1Bmb0drKzUlJWtyejZgMDNTNFNXWTRmdTZu
aD1HUjh0OAp6YHctQ2lkN3AzTW5NeFE7eiE7JVdOWkl5N0VZcEReSjFeZ20qY31sfHJrODk4QTQ/
QHt1eyM4bHhUfUl3eUA/NiYKenJZVFVTKio8VHBwIXg8Slg9Ki05RE17VD8tPmdCRHNzPTU+WiY5
c24/RFBoIUR9ejgzYnYzS0hWQTlpclIweHooCno3NkktPDthcnNpRTUjYj0+I2EmRmZDX3hwKFlu
IUFBVVo7MWQ8O2xeU29gIzgpd2tYeW1RTXFjZj9sfiNNbytxeAp6KyZfenA+SUxyQSV3UiUoWVNo
b31ocG9PPz1DeVMzQHl7KDNLdj4mKzBheWdFbjlhNDdHXk4lamJnUkN5OXMzQDgKejZEV3xDe1Bv
TXxifWpYTlZ0KCEzWFE5ZllxQyg3WkRoPDFlSXopZilyeGgzJm9vWFJLbzBqbW1BZClnc1Q5dzM2
CnpMNERueW9je351RyVKKE9fLXk/KTdVN14+QCk1SXJFPj9sRVk4PFl1QmV8XzhsRE8ySmZFNypF
RXBVVWxSanpqZAp6TVhXTVlCNyVVJmwzY3BGO0FUdzY8ZDhgezIrNSt6JU0zKWxBaF9wKGNNNHVY
QmNVaXYxODs0TWZfN3pGaEVPS1oKenRpWjxgTFZ6MTZCM0FARTBMYTh4cFU8NSs9cUgmWEBgV1k2
YHt8OGsxX0ZRKEZ0KllmNmFWUUA8ZyRUMiVTRF51CnojbFB0d3AwQChpTkV0UztieUtsVGg+Z0xp
RFl0dTtBejMhXlA1RkpWVnR2TGNlPk54UStEOFBoZWRKQVBoKTtJJQp6fEFrTGdzKC1xQiY5QVB9
bmNgTEZNbWN4ZCFpdWJLK1dOITgpR0lRK3NmZjNkVzV0c2U8NnZuU0YrRj5PdmBofEcKeiQjXndq
TVV2Mnxxe1M3PyRtYztZT3c5Rzw9eWFxTHRGbTJrTiRvSHhSVHloVkx9SDxmST0jMGUtN056fGtS
Rl88Cno+a1Eya3RWWUtIJTF4d2B3Kj96VnVeUnxuNjY3X0IhIzY+eHxNfStfXmlVZSlAZVUqMVI1
TWNXNTdYVU9vVl5uYQp6M1cmLTgrVitpc1R4aFctZURnPX1iQXxNSVV9PVNPd3k7PU1DZUpCUnUl
WmZpMVEydkZEe3hpbV40UXNHN0tOdy0Kemkze1dxPl96VFdAMXlUUEtAJCokTnI1VlVYZGFCQiFe
bXhiRzZZdmppTUxTVytYek0rOFpKZ3w0RkhkRChvaCE8Cnp5ITlBK2hJSjF+ZT8odS1lRSluWCF9
SiFzZFBFVTIqfDs+eTJ3ZylTY3xNK2gpWHJrakR0IUJZKG0/RD1DS1k8eAp6JjFXQ3ZXWVpaQ3FT
WTNxI299LVczVUBJR1V9ODMzcWVZMGAxMTFtJTQjdXRVQVptM3UyfDt4NXlhel9XeWghVWkKemkx
OWQjUTZIQVRjZ0NpMTspbnxleXo+Tm07cioyTjQ1PFgoVzNSc0VYfm45dkdSaEB2KnY2RjJ1SDVg
TmNxNFczCnpQVyhmSEZtRDdSZj51QCkzbXZJZGIhZkdgdGZJYzsxVmAqajBUK1pvNWFLNXhWNy0x
cDJ2UWU5eTJTOUEqUCVAaAp6SXwxWSZsTmNJI2ckSmI5Ymk9UilvQiswRHRnXmxmOCY3PWk/Ozw3
TEpxPTg0SmpmeTVDRT5ILTgrZWJ1ZVNSTW8KentKP2xhYCNKN0l6dD5tRkp8TXJ2aUEqMG08LUtT
U3A4WmNJQWZ3LWtqNk1+Q0EpQ0J6SVpAdndQclRRUzdicF8/Cno+aD5AckZkfngwQCF4QkBwVSt6
PCp9PCFsVklwVHJWT0R+eSM8fTV1cUswMUlQXzI+Vk1eP0hAP1Q5ZFoqZmw3Ugp6S196dWBhTURD
TXpAPV9kdjU4TSYqV1VJSGtgcTd5dUspYHcjQ0xRU2ZTXi18eUlsbk4wVH1KKUUxUG9KZkNVWSgK
enM4aWdWLSN6Q3s/VlNVVD1vazspdCskUSkmNTczYik/OHd9XmZOLUZedUl8ITFwM2J3cXp1eUsw
ZXlRdVkrOVNiCnpiRT0/ckRwMHtPZT8hclRrdV9wV0g0TUQoY1hvQENpI2t5VkgkTE08KFkwOD8l
YSVAPXQmPlZ7Uj4jTzh6ezJYcAp6MkxtKXhTe2Y8WSZXUmMyMnA5T2YjVFN7VEJFO2E4SzlzQ3Jn
K2w1UU5yRnxhT34ra1licT53UD41I0ltc1omd3MKejdGby0mcWteRVEkQkU3JF9ZVChRKmomTV4y
OGtzbUs/aGZLVzAhbDBxNjQ+dmA3NUZaS3Z5ZyQ/dSRzOShmdmswCnpMQl9vSiQ+N19gSm02aXxy
ajU0MXRtM3hkUzBMeHM7VzYheEVBVHYxJXYoa0I4YjV9UjlwQDledyh0LTV3RWg5dgpDSWtANWcK
CmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvaW1h
Z2VzL3NldC1uZWVkcy1sYXlvdXQtaW4tcGFpbnRpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC9pbWFnZXMvc2V0LW5lZWRzLWxheW91dC1pbi1wYWludGluZy1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGViZjFiZGJjODc4NGY1YTgwMTNjNjdiOGMyZmVlYTE2MmE5NjkwNgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3NldC1uZWVkcy1sYXlvdXQt
aW4tcGFpbnRpbmctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorVGhpcyB0ZXN0IHNob3Vs
ZCBub3QgYXNzZXJ0IGluIGRlYnVnIGJ1aWxkcy4KKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2ltYWdlcy9zZXQtbmVlZHMtbGF5b3V0LWluLXBhaW50aW5nLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2ltYWdlcy9zZXQtbmVlZHMtbGF5b3V0LWluLXBhaW50aW5nLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZDk1YWY0OTI5YjgzMDk5ZDViNDE3MDU5NmY2ZTEzYjc0ZGIyYmVjMgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3NldC1uZWVkcy1sYXlvdXQtaW4tcGFp
bnRpbmcuaHRtbApAQCAtMCwwICsxLDUzIEBACis8IURPQ1RZUEUgaHRtbD4KKworPGh0bWw+Cis8
aGVhZD4KKyAgICA8c3R5bGU+CisgICAgICAgIC5ib3ggeworICAgICAgICAgICAgaGVpZ2h0OiAx
MDBweDsKKyAgICAgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgICAgIGJhY2tncm91bmQt
Y29sb3I6IGJsdWU7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGltZyB7CisgICAgICAg
ICAgICBoZWlnaHQ6IDkwJTsKKyAgICAgICAgICAgIHdpZHRoOiA5MCU7CisgICAgICAgIH0KKyAg
ICA8L3N0eWxlPgorICAgIDxzY3JpcHQ+CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikg
eworICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICB0ZXN0
UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNs
ZWVwKG1zKSB7CisgICAgICAgICAgICB2YXIgZW5kVGltZSA9IChuZXcgRGF0ZSgpLmdldFRpbWUo
KSkgKyBtczsKKyAgICAgICAgICAgIHdoaWxlICgobmV3IERhdGUoKS5nZXRUaW1lKCkpIDwgZW5k
VGltZSkgeworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICBjb25z
dCBtYXhJdGVyYXRpb25zID0gMjA7CisgICAgICAgIHZhciBpdGVyYXRpb24gPSAwOworICAgICAg
ICBmdW5jdGlvbiBzdGFydFRlc3QoKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaW50ZXJ2
YWwgPSB3aW5kb3cuc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgLy8g
U2xlZXAgdG8gZ2V0IHRoZSBHSUYgaW50byBjYXRjaHVwIG1vZGUuCisgICAgICAgICAgICAgICAg
c2xlZXAoNTApOworICAgICAgICAgICAgICAgIGlmICgrK2l0ZXJhdGlvbiA9PSBtYXhJdGVyYXRp
b25zKSB7CisgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5jbGVhckludGVydmFsKGludGVydmFs
KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAg
ICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfSwgMjApOworICAgICAgICB9CisKKyAgICAgICAgd2luZG93LmFkZEV2
ZW50TGlzdGVuZXIoJ2xvYWQnLCBzdGFydFRlc3QpOworICAgIDwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+CisgICAgPHA+VGhpcyB0ZXN0IHNob3VsZCBub3QgYXNzZXJ0IGluIGRlYnVnIGJ1aWxk
cy48L3A+CisgICAgPGRpdiBjbGFzcz0iYm94Ij4KKyAgICAgICAgPGltZyBzcmM9InJlc291cmNl
cy9zcGlubmVyLmdpZiIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiPgorICAgIDwvZGl2PgorPC9i
b2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252242</attachid>
            <date>2015-05-02 12:13:42 -0700</date>
            <delta_ts>2015-05-02 14:11:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-144528-20150502121229.patch</filename>
            <type>text/plain</type>
            <size>25388</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzNzE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2RmMmRjYTI5MDk3MTg0
ZmE2NzU3ZmJjYzczYTJiNDg3MGI1OWMwYi4uM2RjZjdhNjMwYzY1N2MwYWE3Nzk0ZTFmN2QyZmFm
NmU4M2Q2MWFlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDE1LTA1LTAyICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFzc2VydGlvbiBm
YWlsdXJlICghbmVlZHNMYXlvdXQoKSkgbG9hZGluZyBpbmtlZG1hZy5jb20KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NDUyOAorICAgICAgICByZGFy
Oi8vcHJvYmxlbS8yMDc4ODY4MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorICAgICAgICAKKyAgICAgICAgV2hlbiBhbmltYXRlZCBHSUZzIGdldCBpbnRvIGNhdGNoLXVw
IG1vZGUsIHdoaWNoIGlzIGNvbW1vbiBvbiBpbmtlZG1hZy5jb20sCisgICAgICAgIEJpdG1hcElt
YWdlOjphZHZhbmNlQW5pbWF0aW9uKCkgY2FuIHN5bmNocm9ub3VzbHkgY2FsbCBpdCdzIG9ic2Vy
dmVyJ3MKKyAgICAgICAgYW5pbWF0aW9uQWR2YW5jZWQoKS4gVGhpcyBjb3VsZCBjYXVzZSBSZW5k
ZXJJbWFnZTo6cmVwYWludE9yTWFya0ZvckxheW91dCgpCisgICAgICAgIHRvIHJlcGFpbnQgb3Ig
bWFyayBpdHNlbGYgYXMgbmVlZGluZyBsYXlvdXQgaW4gdGhlIG1pZGRsZSBvZiBwYWludGluZy4K
KyAgICAgICAgSWYgcGFpbnRpbmcgbXVsdGlwbGUgdGlsZXMsIHRoaXMgY291bGQgb2NjdXIgd2hl
biBwYWludGluZyB0aGUgZmlyc3QgdGlsZSwKKyAgICAgICAgYW5kIHRoZW4gcGFpbnRpbmcgdGhl
IHNlY29uZCB0aWxlIHdvdWxkIGFzc2VydCBpbiBSZW5kZXJWaWV3OjpwYWludCgpLgorICAgICAg
ICAKKyAgICAgICAgSXQncyBhbHdheXMgd3JvbmcgdG8gc3luY2hyb25vdXNseSBjYWxsIHRoZSBv
YnNlcnZlciB3aGVuIGFkdmFuY2luZworICAgICAgICB0aGUgYW5pbWF0aW9uLCBzaW5jZSB0aGlz
IGhhcHBlbnMgd2hlbiBwYWludGluZywgYW5kIHlvdSBjYW4ndCByZXBhaW50CisgICAgICAgIHdo
ZW4gcGFpbnRpbmcuIFRoZSBsb25nIGNvbW1lbnQgYW5kIGNhbGwgdG8gc3RhcnRBbmltYXRpb24o
RG9Ob3RDYXRjaFVwKQorICAgICAgICB3YXMgcmVxdWlyZWQgdG8gZXhwbGFpbiBhbmQgd29yayBh
cm91bmQgdGhpcywgYnV0IGl0J3Mgc2ltcGxlciB0byBqdXN0CisgICAgICAgIGFkdmFuY2UgdGhl
IGFuaW1hdGlvbiBvbiBhIHplcm8tZGVsYXkgdGltZXIuCisgICAgICAgIAorICAgICAgICBTcGVj
aWFsIGhhbmRsaW5nIGlzIHJlcXVpcmVkIGZvciB0aGUgY2FzZSB3aGVyZSBpbnRlcm5hbEFkdmFu
Y2VBbmltYXRpb24oKQorICAgICAgICBpcyBjYXRjaGluZyB1cCwgYW5kIHJlYWNoZXMgdGhlIGVu
ZCBvZiBhIG5vbi1yZXBlYXRpbmcgaW1hZ2U7IHRoZXJlLCB3ZQorICAgICAgICBoYXZlIHRvIHNl
dCBhIGZsYWcgYW5kIGRvIHRoZSBub3RpZnkgb24gYSB6ZXJvLWRlbGF5IHRpbWVyLgorICAgICAg
ICAKKyAgICAgICAgTG90cyBvZiBjb21tZW50IGNsZWFudXAuCisKKyAgICAgICAgVGVzdDogZmFz
dC9pbWFnZXMvc2V0LW5lZWRzLWxheW91dC1pbi1wYWludGluZy5odG1sCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRt
YXBJbWFnZTo6Qml0bWFwSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OnN0
YXJ0VGltZXIpOiBVdGlsaXR5IHRvIGNyZWF0ZSBhbmQgc3RhcnQgdGhlIHRpbWVyLgorICAgICAg
ICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OnJlcGV0aXRpb25Db3VudCk6CisgICAgICAgIChXZWJD
b3JlOjpCaXRtYXBJbWFnZTo6c3RhcnRBbmltYXRpb24pOiBFYXJseSByZXR1cm4gaW4gdGhlIERv
Tm90Q2F0Y2hVcCBjbGF1c2UuCisgICAgICAgIElmIHNraXBwaW5nLCBhbmQgaW50ZXJuYWxBZHZh
bmNlQW5pbWF0aW9uKCkgcmV0dXJucyBmYWxzZSAobWVhbmluZyBpdCBtdXN0IGhhdmUKKyAgICAg
ICAgcmVhY2hlZCB0aGUgZW5kKSwgdGhlbiBxdWV1ZSB1cCBhIG5vdGlmeS4gQ2hhbmdlIHRoZSBu
b3JtYWwgYmVoYXZpb3IgdG8ganVzdAorICAgICAgICBzdGFydCB0aGUgdGltZXIuCisgICAgICAg
IChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6c3RvcEFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpCaXRtYXBJbWFnZTo6aW50ZXJuYWxBZHZhbmNlQW5pbWF0aW9uKTogTm90aWZ5IGlmIHRoZSBm
bGFnIGlzIHNldC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJSZXBsYWNlZDo6cGFpbnQpOiBBZGQgYSBTZXRMYXlvdXROZWVkZWRGb3JiaWRkZW5T
Y29wZSB0bworICAgICAgICBkZXRlY3Qgc2V0TmVlZHNMYXlvdXRzIHdoZW4gcGFpbnRpbmcgcmVw
bGFjZWQgZWxlbWVudHMsIGluY2x1ZGluZyBpbWFnZXMuCisKIDIwMTUtMDUtMDIgIEd5dXlvdW5n
IEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBVc2UgUmVmIGluc3Rl
YWQgb2YgUGFzc1JlZlB0ciBpbiBXZWJDb3JlL3N2ZyAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAppbmRleCAzZjZlYzJiZDQ3NjVhYTE4OTEz
M2QzYWM4MWNkOTAyM2UwYjYxYzQyLi41OWZlODlkMDY5OTNlMzNjY2VmMmQwMjMzMjc0Yjg5ZDEw
MTEyZGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRt
YXBJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFw
SW1hZ2UuY3BwCkBAIC03Myw3ICs3Myw3IEBAIEJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShJbWFn
ZU9ic2VydmVyKiBvYnNlcnZlcikKICAgICAsIG1fc2l6ZUF2YWlsYWJsZShmYWxzZSkKICAgICAs
IG1faGFzVW5pZm9ybUZyYW1lU2l6ZSh0cnVlKQogICAgICwgbV9oYXZlRnJhbWVDb3VudChmYWxz
ZSkKLSAgICAsIG1fY2FjaGVkSW1hZ2UoMCkKKyAgICAsIG1fcGVuZGluZ05vdGlmeUFmdGVyQ2F1
Z2h0VXBUb0xhc3RGcmFtZShmYWxzZSkKIHsKIH0KIApAQCAtODgsNiArODgsMTIgQEAgdm9pZCBC
aXRtYXBJbWFnZTo6Y2xlYXJUaW1lcigpCiAgICAgbV9mcmFtZVRpbWVyID0gbnVsbHB0cjsKIH0K
IAordm9pZCBCaXRtYXBJbWFnZTo6c3RhcnRUaW1lcihkb3VibGUgZGVsYXkpCit7CisgICAgbV9m
cmFtZVRpbWVyID0gc3RkOjptYWtlX3VuaXF1ZTxUaW1lcj4oKnRoaXMsICZCaXRtYXBJbWFnZTo6
YWR2YW5jZUFuaW1hdGlvbik7CisgICAgbV9mcmFtZVRpbWVyLT5zdGFydE9uZVNob3QoZGVsYXkp
OworfQorCiAjaWYgIVVTRShDRykKIGJvb2wgQml0bWFwSW1hZ2U6OmRlY29kZWREYXRhSXNQdXJn
ZWFibGUoKSBjb25zdAogewpAQCAtNDczLDcgKzQ3OSw3IEBAIGJvb2wgQml0bWFwSW1hZ2U6Om5v
dFNvbGlkQ29sb3IoKQogaW50IEJpdG1hcEltYWdlOjpyZXBldGl0aW9uQ291bnQoYm9vbCBpbWFn
ZUtub3duVG9CZUNvbXBsZXRlKQogewogICAgIGlmICgobV9yZXBldGl0aW9uQ291bnRTdGF0dXMg
PT0gVW5rbm93bikgfHwgKChtX3JlcGV0aXRpb25Db3VudFN0YXR1cyA9PSBVbmNlcnRhaW4pICYm
IGltYWdlS25vd25Ub0JlQ29tcGxldGUpKSB7Ci0gICAgICAgIC8vIFNuYWcgdGhlIHJlcGV0aXRp
b24gY291bnQuICBJZiB8aW1hZ2VLbm93blRvQmVDb21wbGV0ZXwgaXMgZmFsc2UsIHRoZQorICAg
ICAgICAvLyBTbmFnIHRoZSByZXBldGl0aW9uIGNvdW50LiBJZiB8aW1hZ2VLbm93blRvQmVDb21w
bGV0ZXwgaXMgZmFsc2UsIHRoZQogICAgICAgICAvLyByZXBldGl0aW9uIGNvdW50IG1heSBub3Qg
YmUgYWNjdXJhdGUgeWV0IGZvciBHSUZzOyBpbiB0aGlzIGNhc2UgdGhlCiAgICAgICAgIC8vIGRl
Y29kZXIgd2lsbCBkZWZhdWx0IHRvIGNBbmltYXRpb25Mb29wT25jZSwgYW5kIHdlJ2xsIHRyeSBh
bmQgcmVhZAogICAgICAgICAvLyB0aGUgY291bnQgYWdhaW4gb25jZSB0aGUgd2hvbGUgaW1hZ2Ug
aXMgZGVjb2RlZC4KQEAgLTUwNSwxMyArNTExLDEzIEBAIHZvaWQgQml0bWFwSW1hZ2U6OnN0YXJ0
QW5pbWF0aW9uKENhdGNoVXBBbmltYXRpb24gY2F0Y2hVcElmTmVjZXNzYXJ5KQogICAgICAgICBy
ZXR1cm47CiAKICAgICAvLyBEb24ndCBhZHZhbmNlIHBhc3QgdGhlIGxhc3QgZnJhbWUgaWYgd2Ug
aGF2ZW4ndCBkZWNvZGVkIHRoZSB3aG9sZSBpbWFnZQotICAgIC8vIHlldCBhbmQgb3VyIHJlcGV0
aXRpb24gY291bnQgaXMgcG90ZW50aWFsbHkgdW5zZXQuICBUaGUgcmVwZXRpdGlvbiBjb3VudAor
ICAgIC8vIHlldCBhbmQgb3VyIHJlcGV0aXRpb24gY291bnQgaXMgcG90ZW50aWFsbHkgdW5zZXQu
IFRoZSByZXBldGl0aW9uIGNvdW50CiAgICAgLy8gaW4gYSBHSUYgY2FuIHBvdGVudGlhbGx5IGNv
bWUgYWZ0ZXIgYWxsIHRoZSByZXN0IG9mIHRoZSBpbWFnZSBkYXRhLCBzbwogICAgIC8vIHdhaXQg
b24gaXQuCiAgICAgaWYgKCFtX2FsbERhdGFSZWNlaXZlZCAmJiByZXBldGl0aW9uQ291bnQoZmFs
c2UpID09IGNBbmltYXRpb25Mb29wT25jZSAmJiBtX2N1cnJlbnRGcmFtZSA+PSAoZnJhbWVDb3Vu
dCgpIC0gMSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIC8vIERldGVybWluZSB0aW1lIGZvciBu
ZXh0IGZyYW1lIHRvIHN0YXJ0LiAgQnkgaWdub3JpbmcgcGFpbnQgYW5kIHRpbWVyIGxhZworICAg
IC8vIERldGVybWluZSB0aW1lIGZvciBuZXh0IGZyYW1lIHRvIHN0YXJ0LiBCeSBpZ25vcmluZyBw
YWludCBhbmQgdGltZXIgbGFnCiAgICAgLy8gaW4gdGhpcyBjYWxjdWxhdGlvbiwgd2UgbWFrZSB0
aGUgYW5pbWF0aW9uIGFwcGVhciB0byBydW4gYXQgaXRzIGRlc2lyZWQKICAgICAvLyByYXRlIHJl
Z2FyZGxlc3Mgb2YgaG93IGZhc3QgaXQncyBiZWluZyByZXBhaW50ZWQuCiAgICAgY29uc3QgZG91
YmxlIGN1cnJlbnREdXJhdGlvbiA9IGZyYW1lRHVyYXRpb25BdEluZGV4KG1fY3VycmVudEZyYW1l
KTsKQEAgLTUyMCw3ICs1MjYsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpzdGFydEFuaW1hdGlvbihD
YXRjaFVwQW5pbWF0aW9uIGNhdGNoVXBJZk5lY2Vzc2FyeSkKICNpZiAhUExBVEZPUk0oSU9TKQog
ICAgIC8vIFdoZW4gYW4gYW5pbWF0ZWQgaW1hZ2UgaXMgbW9yZSB0aGFuIGZpdmUgbWludXRlcyBv
dXQgb2YgZGF0ZSwgdGhlCiAgICAgLy8gdXNlciBwcm9iYWJseSBkb2Vzbid0IGNhcmUgYWJvdXQg
cmVzeW5jaW5nIGFuZCB3ZSBjb3VsZCBidXJuIGEgbG90IG9mCi0gICAgLy8gdGltZSBsb29waW5n
IHRocm91Z2ggZnJhbWVzIGJlbG93LiAgSnVzdCByZXNldCB0aGUgdGltaW5ncy4KKyAgICAvLyB0
aW1lIGxvb3BpbmcgdGhyb3VnaCBmcmFtZXMgYmVsb3cuIEp1c3QgcmVzZXQgdGhlIHRpbWluZ3Mu
CiAgICAgY29uc3QgZG91YmxlIGNBbmltYXRpb25SZXN5bmNDdXRvZmYgPSA1ICogNjA7CiAgICAg
aWYgKCh0aW1lIC0gbV9kZXNpcmVkRnJhbWVTdGFydFRpbWUpID4gY0FuaW1hdGlvblJlc3luY0N1
dG9mZikKICAgICAgICAgbV9kZXNpcmVkRnJhbWVTdGFydFRpbWUgPSB0aW1lICsgY3VycmVudER1
cmF0aW9uOwpAQCAtNTMzLDcgKzUzOSw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OnN0YXJ0QW5pbWF0
aW9uKENhdGNoVXBBbmltYXRpb24gY2F0Y2hVcElmTmVjZXNzYXJ5KQogICAgIC8vIFRoZSBpbWFn
ZSBtYXkgbG9hZCBtb3JlIHNsb3dseSB0aGFuIGl0J3Mgc3VwcG9zZWQgdG8gYW5pbWF0ZSwgc28g
dGhhdCBieQogICAgIC8vIHRoZSB0aW1lIHdlIHJlYWNoIHRoZSBlbmQgb2YgdGhlIGZpcnN0IHJl
cGV0aXRpb24sIHdlJ3JlIHdlbGwgYmVoaW5kLgogICAgIC8vIENsYW1wIHRoZSBkZXNpcmVkIGZy
YW1lIHN0YXJ0IHRpbWUgaW4gdGhpcyBjYXNlLCBzbyB0aGF0IHdlIGRvbid0IHNraXAKLSAgICAv
LyBmcmFtZXMgKG9yIHdob2xlIGl0ZXJhdGlvbnMpIHRyeWluZyB0byAiY2F0Y2ggdXAiLiAgVGhp
cyBpcyBhIHRyYWRlb2ZmOgorICAgIC8vIGZyYW1lcyAob3Igd2hvbGUgaXRlcmF0aW9ucykgdHJ5
aW5nIHRvICJjYXRjaCB1cCIuIFRoaXMgaXMgYSB0cmFkZW9mZjoKICAgICAvLyBJdCBndWFyYW50
ZWVzIHVzZXJzIHNlZSB0aGUgd2hvbGUgYW5pbWF0aW9uIHRoZSBzZWNvbmQgdGltZSB0aHJvdWdo
IGFuZAogICAgIC8vIGRvbid0IG1pc3MgYW55IHJlcGV0aXRpb25zLCBhbmQgaXMgY2xvc2VyIHRv
IHdoYXQgb3RoZXIgYnJvd3NlcnMgZG87IG9uCiAgICAgLy8gdGhlIG90aGVyIGhhbmQsIGl0IG1h
a2VzIGFuaW1hdGlvbnMgImxlc3MgYWNjdXJhdGUiIGZvciBwYWdlcyB0aGF0IHRyeSB0bwpAQCAt
NTQ1LDU1ICs1NTEsNDIgQEAgdm9pZCBCaXRtYXBJbWFnZTo6c3RhcnRBbmltYXRpb24oQ2F0Y2hV
cEFuaW1hdGlvbiBjYXRjaFVwSWZOZWNlc3NhcnkpCiAKICAgICBpZiAoY2F0Y2hVcElmTmVjZXNz
YXJ5ID09IERvTm90Q2F0Y2hVcCB8fCB0aW1lIDwgbV9kZXNpcmVkRnJhbWVTdGFydFRpbWUpIHsK
ICAgICAgICAgLy8gSGF2ZW4ndCB5ZXQgcmVhY2hlZCB0aW1lIGZvciBuZXh0IGZyYW1lIHRvIHN0
YXJ0OyBkZWxheSB1bnRpbCB0aGVuLgotICAgICAgICBtX2ZyYW1lVGltZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFRpbWVyPigqdGhpcywgJkJpdG1hcEltYWdlOjphZHZhbmNlQW5pbWF0aW9uKTsKLSAg
ICAgICAgbV9mcmFtZVRpbWVyLT5zdGFydE9uZVNob3Qoc3RkOjptYXgobV9kZXNpcmVkRnJhbWVT
dGFydFRpbWUgLSB0aW1lLCAwLikpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIFdlJ3ZlIGFs
cmVhZHkgcmVhY2hlZCBvciBwYXNzZWQgdGhlIHRpbWUgZm9yIHRoZSBuZXh0IGZyYW1lIHRvIHN0
YXJ0LgotICAgICAgICAvLyBTZWUgaWYgd2UndmUgYWxzbyBwYXNzZWQgdGhlIHRpbWUgZm9yIGZy
YW1lcyBhZnRlciB0aGF0IHRvIHN0YXJ0LCBpbgotICAgICAgICAvLyBjYXNlIHdlIG5lZWQgdG8g
c2tpcCBzb21lIGZyYW1lcyBlbnRpcmVseS4gIFJlbWVtYmVyIG5vdCB0byBhZHZhbmNlCi0gICAg
ICAgIC8vIHRvIGFuIGluY29tcGxldGUgZnJhbWUuCi0gICAgICAgIGZvciAoc2l6ZV90IGZyYW1l
QWZ0ZXJOZXh0ID0gKG5leHRGcmFtZSArIDEpICUgZnJhbWVDb3VudCgpOyBmcmFtZUlzQ29tcGxl
dGVBdEluZGV4KGZyYW1lQWZ0ZXJOZXh0KTsgZnJhbWVBZnRlck5leHQgPSAobmV4dEZyYW1lICsg
MSkgJSBmcmFtZUNvdW50KCkpIHsKLSAgICAgICAgICAgIC8vIFNob3VsZCB3ZSBza2lwIHRoZSBu
ZXh0IGZyYW1lPwotICAgICAgICAgICAgZG91YmxlIGZyYW1lQWZ0ZXJOZXh0U3RhcnRUaW1lID0g
bV9kZXNpcmVkRnJhbWVTdGFydFRpbWUgKyBmcmFtZUR1cmF0aW9uQXRJbmRleChuZXh0RnJhbWUp
OwotICAgICAgICAgICAgaWYgKHRpbWUgPCBmcmFtZUFmdGVyTmV4dFN0YXJ0VGltZSkKLSAgICAg
ICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgLy8gWWVzOyBza2lwIG92ZXIgaXQgd2l0
aG91dCBub3RpZnlpbmcgb3VyIG9ic2VydmVycy4KLSAgICAgICAgICAgIGlmICghaW50ZXJuYWxB
ZHZhbmNlQW5pbWF0aW9uKFNraXBwaW5nRnJhbWVzVG9DYXRjaFVwKSkKLSAgICAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgICAgICBtX2Rlc2lyZWRGcmFtZVN0YXJ0VGltZSA9IGZyYW1lQWZ0
ZXJOZXh0U3RhcnRUaW1lOwotICAgICAgICAgICAgbmV4dEZyYW1lID0gZnJhbWVBZnRlck5leHQ7
Ci0gICAgICAgIH0KKyAgICAgICAgc3RhcnRUaW1lcihzdGQ6Om1heDxkb3VibGU+KG1fZGVzaXJl
ZEZyYW1lU3RhcnRUaW1lIC0gdGltZSwgMCkpOworICAgICAgICByZXR1cm47CisgICAgfQogCi0g
ICAgICAgIC8vIERyYXcgdGhlIG5leHQgZnJhbWUgaW1tZWRpYXRlbHkuICBOb3RlIHRoYXQgbV9k
ZXNpcmVkRnJhbWVTdGFydFRpbWUKLSAgICAgICAgLy8gbWF5IGJlIGluIHRoZSBwYXN0LCBtZWFu
aW5nIHRoZSBuZXh0IHRpbWUgdGhyb3VnaCB0aGlzIGZ1bmN0aW9uIHdlJ2xsCi0gICAgICAgIC8v
IGtpY2sgb2ZmIHRoZSBuZXh0IGFkdmFuY2VtZW50IHNvb25lciB0aGFuIHRoaXMgZnJhbWUncyBk
dXJhdGlvbiB3b3VsZAotICAgICAgICAvLyBzdWdnZXN0LgotICAgICAgICBpZiAoaW50ZXJuYWxB
ZHZhbmNlQW5pbWF0aW9uKCkpIHsKLSAgICAgICAgICAgIC8vIFRoZSBpbWFnZSByZWdpb24gaGFz
IGJlZW4gbWFya2VkIGRpcnR5LCBidXQgb25jZSB3ZSByZXR1cm4gdG8gb3VyCi0gICAgICAgICAg
ICAvLyBjYWxsZXIsIGRyYXcoKSB3aWxsIGNsZWFyIGl0LCBhbmQgbm90aGluZyB3aWxsIGNhdXNl
IHRoZQotICAgICAgICAgICAgLy8gYW5pbWF0aW9uIHRvIGFkdmFuY2UgYWdhaW4uICBXZSBuZWVk
IHRvIHN0YXJ0IHRoZSB0aW1lciBmb3IgdGhlCi0gICAgICAgICAgICAvLyBuZXh0IGZyYW1lIHJ1
bm5pbmcsIG9yIHRoZSBhbmltYXRpb24gY2FuIGhhbmcuICAoQ29tcGFyZSB0aGlzCi0gICAgICAg
ICAgICAvLyB3aXRoIHdoZW4gYWR2YW5jZUFuaW1hdGlvbigpIGlzIGNhbGxlZCwgYW5kIHRoZSBy
ZWdpb24gaXMgZGlydGllZAotICAgICAgICAgICAgLy8gd2hpbGUgZHJhdygpIGlzIG5vdCBpbiB0
aGUgY2FsbHN0YWNrLCBtZWFuaW5nIGRyYXcoKSBnZXRzIGNhbGxlZAotICAgICAgICAgICAgLy8g
dG8gdXBkYXRlIHRoZSByZWdpb24gYW5kIHRodXMgc3RhcnRBbmltYXRpb24oKSBpcyByZWFjaGVk
IGFnYWluLikKLSAgICAgICAgICAgIC8vIE5PVEU6IEZvciBsYXJnZSBpbWFnZXMgd2l0aCBzbG93
IG9yIGhlYXZpbHktbG9hZGVkIHN5c3RlbXMsCi0gICAgICAgICAgICAvLyB0aHJvd2luZyBhd2F5
IGRhdGEgYXMgd2UgZ28gKHNlZSBkZXN0cm95RGVjb2RlZERhdGEoKSkgbWVhbnMgd2UKLSAgICAg
ICAgICAgIC8vIGNhbiBzcGVuZCBzbyBtdWNoIHRpbWUgcmUtZGVjb2RpbmcgZGF0YSBhYm92ZSB0
aGF0IGJ5IHRoZSB0aW1lIHdlCi0gICAgICAgICAgICAvLyByZWFjaCBoZXJlIHdlJ3JlIGJlaGlu
ZCBhZ2Fpbi4gIElmIHdlIGxldCBzdGFydEFuaW1hdGlvbigpIHJ1bgotICAgICAgICAgICAgLy8g
dGhlIGNhdGNoLXVwIGNvZGUgYWdhaW4sIHdlIGNhbiBnZXQgbG9uZyBkZWxheXMgd2l0aG91dCBw
YWludGluZwotICAgICAgICAgICAgLy8gYXMgd2UgcmFjZSB0aGUgdGltZXIsIG9yIGV2ZW4gaW5m
aW5pdGUgcmVjdXJzaW9uLiAgSW4gdGhpcwotICAgICAgICAgICAgLy8gc2l0dWF0aW9uIHRoZSBi
ZXN0IHdlIGNhbiBkbyBpcyB0byBzaW1wbHkgY2hhbmdlIGZyYW1lcyBhcyBmYXN0Ci0gICAgICAg
ICAgICAvLyBhcyBwb3NzaWJsZSwgc28gZm9yY2Ugc3RhcnRBbmltYXRpb24oKSB0byBzZXQgYSB6
ZXJvLWRlbGF5IHRpbWVyCi0gICAgICAgICAgICAvLyBhbmQgYmFpbCBvdXQgaWYgd2UncmUgbm90
IGNhdWdodCB1cC4KLSAgICAgICAgICAgIHN0YXJ0QW5pbWF0aW9uKERvTm90Q2F0Y2hVcCk7Cisg
ICAgQVNTRVJUKCFtX2ZyYW1lVGltZXIpOworCisgICAgLy8gV2UndmUgYWxyZWFkeSByZWFjaGVk
IG9yIHBhc3NlZCB0aGUgdGltZSBmb3IgdGhlIG5leHQgZnJhbWUgdG8gc3RhcnQuCisgICAgLy8g
U2VlIGlmIHdlJ3ZlIGFsc28gcGFzc2VkIHRoZSB0aW1lIGZvciBmcmFtZXMgYWZ0ZXIgdGhhdCB0
byBzdGFydCwgaW4KKyAgICAvLyBjYXNlIHdlIG5lZWQgdG8gc2tpcCBzb21lIGZyYW1lcyBlbnRp
cmVseS4gUmVtZW1iZXIgbm90IHRvIGFkdmFuY2UKKyAgICAvLyB0byBhbiBpbmNvbXBsZXRlIGZy
YW1lLgorICAgIGZvciAoc2l6ZV90IGZyYW1lQWZ0ZXJOZXh0ID0gKG5leHRGcmFtZSArIDEpICUg
ZnJhbWVDb3VudCgpOyBmcmFtZUlzQ29tcGxldGVBdEluZGV4KGZyYW1lQWZ0ZXJOZXh0KTsgZnJh
bWVBZnRlck5leHQgPSAobmV4dEZyYW1lICsgMSkgJSBmcmFtZUNvdW50KCkpIHsKKyAgICAgICAg
Ly8gU2hvdWxkIHdlIHNraXAgdGhlIG5leHQgZnJhbWU/CisgICAgICAgIGRvdWJsZSBmcmFtZUFm
dGVyTmV4dFN0YXJ0VGltZSA9IG1fZGVzaXJlZEZyYW1lU3RhcnRUaW1lICsgZnJhbWVEdXJhdGlv
bkF0SW5kZXgobmV4dEZyYW1lKTsKKyAgICAgICAgaWYgKHRpbWUgPCBmcmFtZUFmdGVyTmV4dFN0
YXJ0VGltZSkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIC8vIFllczsgc2tpcCBvdmVy
IGl0IHdpdGhvdXQgbm90aWZ5aW5nIG91ciBvYnNlcnZlcnMuIElmIHdlIGhpdCB0aGUgZW5kIHdo
aWxlIGNhdGNoaW5nIHVwLAorICAgICAgICAvLyB0ZWxsIHRoZSBvYnNlcnZlciBhc3luY2hyb25v
dXNseS4KKyAgICAgICAgaWYgKCFpbnRlcm5hbEFkdmFuY2VBbmltYXRpb24oU2tpcHBpbmdGcmFt
ZXNUb0NhdGNoVXApKSB7CisgICAgICAgICAgICBtX3BlbmRpbmdOb3RpZnlBZnRlckNhdWdodFVw
VG9MYXN0RnJhbWUgPSB0cnVlOworICAgICAgICAgICAgc3RhcnRUaW1lcigwKTsKKyAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQorICAgICAgICBtX2Rlc2lyZWRGcmFtZVN0YXJ0VGltZSA9
IGZyYW1lQWZ0ZXJOZXh0U3RhcnRUaW1lOworICAgICAgICBuZXh0RnJhbWUgPSBmcmFtZUFmdGVy
TmV4dDsKICAgICB9CisKKyAgICAvLyBEcmF3IHRoZSBuZXh0IGZyYW1lIGFzIHNvb24gYXMgcG9z
c2libGUuIE5vdGUgdGhhdCBtX2Rlc2lyZWRGcmFtZVN0YXJ0VGltZQorICAgIC8vIG1heSBiZSBp
biB0aGUgcGFzdCwgbWVhbmluZyB0aGUgbmV4dCB0aW1lIHRocm91Z2ggdGhpcyBmdW5jdGlvbiB3
ZSdsbAorICAgIC8vIGtpY2sgb2ZmIHRoZSBuZXh0IGFkdmFuY2VtZW50IHNvb25lciB0aGFuIHRo
aXMgZnJhbWUncyBkdXJhdGlvbiB3b3VsZCBzdWdnZXN0LgorICAgIHN0YXJ0VGltZXIoMCk7CiB9
CiAKIHZvaWQgQml0bWFwSW1hZ2U6OnN0b3BBbmltYXRpb24oKQogewotICAgIC8vIFRoaXMgdGlt
ZXIgaXMgdXNlZCB0byBhbmltYXRlIGFsbCBvY2N1cnJlbmNlcyBvZiB0aGlzIGltYWdlLiAgRG9u
J3QgaW52YWxpZGF0ZQorICAgIC8vIFRoaXMgdGltZXIgaXMgdXNlZCB0byBhbmltYXRlIGFsbCBv
Y2N1cnJlbmNlcyBvZiB0aGlzIGltYWdlLiBEb24ndCBpbnZhbGlkYXRlCiAgICAgLy8gdGhlIHRp
bWVyIHVubGVzcyBhbGwgcmVuZGVyZXJzIGhhdmUgc3RvcHBlZCBkcmF3aW5nLgogICAgIGNsZWFy
VGltZXIoKTsKIH0KQEAgLTY1Nyw2ICs2NTAsMTIgQEAgdm9pZCBCaXRtYXBJbWFnZTo6YWR2YW5j
ZUFuaW1hdGlvbigpCiBib29sIEJpdG1hcEltYWdlOjppbnRlcm5hbEFkdmFuY2VBbmltYXRpb24o
QW5pbWF0aW9uQWR2YW5jZW1lbnQgYWR2YW5jZW1lbnQpCiB7CiAgICAgY2xlYXJUaW1lcigpOwor
CisgICAgaWYgKG1fcGVuZGluZ05vdGlmeUFmdGVyQ2F1Z2h0VXBUb0xhc3RGcmFtZSkgeworICAg
ICAgICBpbWFnZU9ic2VydmVyKCktPmFuaW1hdGlvbkFkdmFuY2VkKHRoaXMpOworICAgICAgICBt
X3BlbmRpbmdOb3RpZnlBZnRlckNhdWdodFVwVG9MYXN0RnJhbWUgPSBmYWxzZTsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KICAgICAKICAgICArK21fY3VycmVudEZyYW1lOwogICAgIGJv
b2wgYWR2YW5jZWRBbmltYXRpb24gPSB0cnVlOwpAQCAtNjY0LDcgKzY2Myw3IEBAIGJvb2wgQml0
bWFwSW1hZ2U6OmludGVybmFsQWR2YW5jZUFuaW1hdGlvbihBbmltYXRpb25BZHZhbmNlbWVudCBh
ZHZhbmNlbWVudCkKICAgICBpZiAobV9jdXJyZW50RnJhbWUgPj0gZnJhbWVDb3VudCgpKSB7CiAg
ICAgICAgICsrbV9yZXBldGl0aW9uc0NvbXBsZXRlOwogCi0gICAgICAgIC8vIEdldCB0aGUgcmVw
ZXRpdGlvbiBjb3VudCBhZ2Fpbi4gIElmIHdlIHdlcmVuJ3QgYWJsZSB0byBnZXQgYQorICAgICAg
ICAvLyBHZXQgdGhlIHJlcGV0aXRpb24gY291bnQgYWdhaW4uIElmIHdlIHdlcmVuJ3QgYWJsZSB0
byBnZXQgYQogICAgICAgICAvLyByZXBldGl0aW9uIGNvdW50IGJlZm9yZSwgd2Ugc2hvdWxkIGhh
dmUgZGVjb2RlZCB0aGUgd2hvbGUgaW1hZ2UgYnkKICAgICAgICAgLy8gbm93LCBzbyBpdCBzaG91
bGQgbm93IGJlIGF2YWlsYWJsZS4KICAgICAgICAgLy8gTm90ZSB0aGF0IHdlIGRvbid0IG5lZWQg
dG8gc3BlY2lhbC1jYXNlIGNBbmltYXRpb25Mb29wT25jZSBoZXJlCkBAIC02ODMsNyArNjgyLDcg
QEAgYm9vbCBCaXRtYXBJbWFnZTo6aW50ZXJuYWxBZHZhbmNlQW5pbWF0aW9uKEFuaW1hdGlvbkFk
dmFuY2VtZW50IGFkdmFuY2VtZW50KQogCiAgICAgLy8gV2UgbmVlZCB0byBkcmF3IHRoaXMgZnJh
bWUgaWYgd2UgYWR2YW5jZWQgdG8gaXQgd2hpbGUgbm90IHNraXBwaW5nLCBvciBpZgogICAgIC8v
IHdoaWxlIHRyeWluZyB0byBza2lwIGZyYW1lcyB3ZSBoaXQgdGhlIGxhc3QgZnJhbWUgYW5kIHRo
dXMgaGFkIHRvIHN0b3AuCi0gICAgaWYgKChhZHZhbmNlbWVudCA9PSBOb3JtYWwgJiYgYWR2YW5j
ZWRBbmltYXRpb24pIHx8IChhZHZhbmNlbWVudCA9PSBTa2lwcGluZ0ZyYW1lc1RvQ2F0Y2hVcCAm
JiAhYWR2YW5jZWRBbmltYXRpb24pKQorICAgIGlmIChhZHZhbmNlbWVudCA9PSBOb3JtYWwgJiYg
YWR2YW5jZWRBbmltYXRpb24pCiAgICAgICAgIGltYWdlT2JzZXJ2ZXIoKS0+YW5pbWF0aW9uQWR2
YW5jZWQodGhpcyk7CiAKICAgICByZXR1cm4gYWR2YW5jZWRBbmltYXRpb247CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAppbmRleCAyNzZhNmFlN2Fk
YjNlODg3NTNjOGYwM2Q5OWM5Y2YzMjZhYTE1NzkzLi4yOTk3ODhhZDA4MDdkNzMyZTZmZDZlZGFj
YmIzZDYxNzNjYTljZDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9CaXRtYXBJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0JpdG1hcEltYWdlLmgKQEAgLTEzNiw4ICsxMzYsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBi
b29sIGRhdGFDaGFuZ2VkKGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBvdmVycmlkZTsKICAgICB2aXJ0
dWFsIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgLy8g
SXQgbWF5IGxvb2sgdW51c3VhbCB0aGF0IHRoZXJlIGlzIG5vIHN0YXJ0IGFuaW1hdGlvbiBjYWxs
IGFzIHB1YmxpYyBBUEkuICBUaGlzIGlzIGJlY2F1c2UKLSAgICAvLyB3ZSBzdGFydCBhbmQgc3Rv
cCBhbmltYXRpbmcgbGF6aWx5LiAgQW5pbWF0aW9uIGJlZ2lucyB3aGVuZXZlciBzb21lb25lIGRy
YXdzIHRoZSBpbWFnZS4gIEl0IHdpbGwKKyAgICAvLyBJdCBtYXkgbG9vayB1bnVzdWFsIHRoYXQg
dGhlcmUgaXMgbm8gc3RhcnQgYW5pbWF0aW9uIGNhbGwgYXMgcHVibGljIEFQSS4gVGhpcyBpcyBi
ZWNhdXNlCisgICAgLy8gd2Ugc3RhcnQgYW5kIHN0b3AgYW5pbWF0aW5nIGxhemlseS4gQW5pbWF0
aW9uIGJlZ2lucyB3aGVuZXZlciBzb21lb25lIGRyYXdzIHRoZSBpbWFnZS4gSXQgd2lsbAogICAg
IC8vIGF1dG9tYXRpY2FsbHkgcGF1c2Ugb25jZSBhbGwgb2JzZXJ2ZXJzIG5vIGxvbmdlciB3YW50
IHRvIHJlbmRlciB0aGUgaW1hZ2UgYW55d2hlcmUuCiAgICAgdmlydHVhbCB2b2lkIHN0b3BBbmlt
YXRpb24oKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzZXRBbmltYXRpb24oKSBvdmVy
cmlkZTsKQEAgLTIyOCwxMCArMjI4LDEwIEBAIHByb3RlY3RlZDoKICAgICAvLyBDYWxsZWQgYmVm
b3JlIGFjY2Vzc2luZyBtX2ZyYW1lc1tpbmRleF0gZm9yIGluZm8gd2l0aG91dCBkZWNvZGluZy4g
UmV0dXJucyBmYWxzZSBvbiBpbmRleCBvdXQgb2YgYm91bmRzLgogICAgIGJvb2wgZW5zdXJlRnJh
bWVJc0NhY2hlZChzaXplX3QgaW5kZXgsIEltYWdlRnJhbWVDYWNoaW5nID0gQ2FjaGVNZXRhZGF0
YUFuZEZyYW1lKTsKIAotICAgIC8vIENhbGxlZCB0byBpbnZhbGlkYXRlIGNhY2hlZCBkYXRhLiAg
V2hlbiB8ZGVzdHJveUFsbHwgaXMgdHJ1ZSwgd2Ugd2lwZSBvdXQKKyAgICAvLyBDYWxsZWQgdG8g
aW52YWxpZGF0ZSBjYWNoZWQgZGF0YS4gV2hlbiB8ZGVzdHJveUFsbHwgaXMgdHJ1ZSwgd2Ugd2lw
ZSBvdXQKICAgICAvLyB0aGUgZW50aXJlIGZyYW1lIGJ1ZmZlciBjYWNoZSBhbmQgdGVsbCB0aGUg
aW1hZ2Ugc291cmNlIHRvIGRlc3Ryb3kKICAgICAvLyBldmVyeXRoaW5nOyB0aGlzIGlzIHVzZWQg
d2hlbiBlLmcuIHdlIHdhbnQgdG8gZnJlZSBzb21lIHJvb20gaW4gdGhlIGltYWdlCi0gICAgLy8g
Y2FjaGUuICBJZiB8ZGVzdHJveUFsbHwgaXMgZmFsc2UsIHdlIG9ubHkgZGVsZXRlIGZyYW1lcyB1
cCB0byB0aGUgY3VycmVudAorICAgIC8vIGNhY2hlLiBJZiB8ZGVzdHJveUFsbHwgaXMgZmFsc2Us
IHdlIG9ubHkgZGVsZXRlIGZyYW1lcyB1cCB0byB0aGUgY3VycmVudAogICAgIC8vIG9uZTsgdGhp
cyBpcyB1c2VkIHdoaWxlIGFuaW1hdGluZyBsYXJnZSBpbWFnZXMgdG8ga2VlcCBtZW1vcnkgZm9v
dHByaW50CiAgICAgLy8gbG93IHdpdGhvdXQgcmVkZWNvZGluZyB0aGUgd2hvbGUgaW1hZ2Ugb24g
ZXZlcnkgZnJhbWUuCiAgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YShib29sIGRl
c3Ryb3lBbGwgPSB0cnVlKSBvdmVycmlkZTsKQEAgLTI0OSw3ICsyNDksNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgYm9vbCBpc1NpemVBdmFpbGFibGUoKTsKIAogICAgIC8vIENhbGxlZCBhZnRlciBhc2tp
bmcgdGhlIHNvdXJjZSBmb3IgYW55IGluZm9ybWF0aW9uIHRoYXQgbWF5IHJlcXVpcmUKLSAgICAv
LyBkZWNvZGluZyBwYXJ0IG9mIHRoZSBpbWFnZSAoZS5nLiwgdGhlIGltYWdlIHNpemUpLiAgV2Ug
bmVlZCB0byByZXBvcnQKKyAgICAvLyBkZWNvZGluZyBwYXJ0IG9mIHRoZSBpbWFnZSAoZS5nLiwg
dGhlIGltYWdlIHNpemUpLiBXZSBuZWVkIHRvIHJlcG9ydAogICAgIC8vIHRoZSBwYXJ0aWFsbHkg
ZGVjb2RlZCBkYXRhIHRvIG91ciBvYnNlcnZlciBzbyBpdCBoYXMgYW4gYWNjdXJhdGUKICAgICAv
LyBhY2NvdW50IG9mIHRoZSBCaXRtYXBJbWFnZSdzIG1lbW9yeSB1c2FnZS4KICAgICB2b2lkIGRp
ZERlY29kZVByb3BlcnRpZXMoKSBjb25zdDsKQEAgLTI2MCw3ICsyNjAsNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0QW5pbWF0aW9uKENhdGNoVXBBbmltYXRpb24gPSBDYXRj
aFVwKSBvdmVycmlkZTsKICAgICB2b2lkIGFkdmFuY2VBbmltYXRpb24oKTsKIAotICAgIC8vIEZ1
bmN0aW9uIHRoYXQgZG9lcyB0aGUgcmVhbCB3b3JrIG9mIGFkdmFuY2luZyB0aGUgYW5pbWF0aW9u
LiAgV2hlbgorICAgIC8vIEZ1bmN0aW9uIHRoYXQgZG9lcyB0aGUgcmVhbCB3b3JrIG9mIGFkdmFu
Y2luZyB0aGUgYW5pbWF0aW9uLiBXaGVuCiAgICAgLy8gc2tpcHBpbmdGcmFtZXMgaXMgdHJ1ZSwg
d2UncmUgaW4gdGhlIG1pZGRsZSBvZiBhIGxvb3AgdHJ5aW5nIHRvIHNraXAgb3ZlcgogICAgIC8v
IGEgYnVuY2ggb2YgYW5pbWF0aW9uIGZyYW1lcywgc28gd2Ugc2hvdWxkIG5vdCBkbyB0aGluZ3Mg
bGlrZSBkZWNvZGUgZWFjaAogICAgIC8vIG9uZSBvciBub3RpZnkgb3VyIG9ic2VydmVycy4KQEAg
LTI3MSw3ICsyNzEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gSGFuZGxlIHBsYXRmb3JtLXNwZWNp
ZmljIGRhdGEKICAgICB2b2lkIGludmFsaWRhdGVQbGF0Zm9ybURhdGEoKTsKIAotICAgIC8vIENo
ZWNrcyB0byBzZWUgaWYgdGhlIGltYWdlIGlzIGEgMXgxIHNvbGlkIGNvbG9yLiAgV2Ugb3B0aW1p
emUgdGhlc2UgaW1hZ2VzIGFuZCBqdXN0IGRvIGEgZmlsbCByZWN0IGluc3RlYWQuCisgICAgLy8g
Q2hlY2tzIHRvIHNlZSBpZiB0aGUgaW1hZ2UgaXMgYSAxeDEgc29saWQgY29sb3IuIFdlIG9wdGlt
aXplIHRoZXNlIGltYWdlcyBhbmQganVzdCBkbyBhIGZpbGwgcmVjdCBpbnN0ZWFkLgogICAgIC8v
IFRoaXMgY2hlY2sgc2hvdWxkIGhhcHBlbiByZWdhcmRsZXNzIHdoZXRoZXIgbV9jaGVja2VkRm9y
U29saWRDb2xvciBpcyBhbHJlYWR5IHNldCwgYXMgdGhlIGZyYW1lIG1heSBoYXZlCiAgICAgLy8g
Y2hhbmdlZC4KICAgICB2b2lkIGNoZWNrRm9yU29saWRDb2xvcigpOwpAQCAtMjg2LDYgKzI4Niw3
IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGRlY29kZWREYXRhSXNQ
dXJnZWFibGUoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIGNsZWFyVGltZXIoKTsKKyAgICB2
b2lkIHN0YXJ0VGltZXIoZG91YmxlIGRlbGF5KTsKIAogICAgIEltYWdlU291cmNlIG1fc291cmNl
OwogICAgIG11dGFibGUgSW50U2l6ZSBtX3NpemU7IC8vIFRoZSBzaXplIHRvIHVzZSBmb3IgdGhl
IG92ZXJhbGwgaW1hZ2UgKHdpbGwganVzdCBiZSB0aGUgc2l6ZSBvZiB0aGUgZmlyc3QgaW1hZ2Up
LgpAQCAtMzAwLDcgKzMwMSw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPEZyYW1lRGF0YSwgMT4g
bV9mcmFtZXM7IC8vIEFuIGFycmF5IG9mIHRoZSBjYWNoZWQgZnJhbWVzIG9mIHRoZSBhbmltYXRp
b24uIFdlIGhhdmUgdG8gcmVmIGZyYW1lcyB0byBwaW4gdGhlbSBpbiB0aGUgY2FjaGUuCiAKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8VGltZXI+IG1fZnJhbWVUaW1lcjsKLSAgICBpbnQgbV9yZXBldGl0
aW9uQ291bnQ7IC8vIEhvdyBtYW55IHRvdGFsIGFuaW1hdGlvbiBsb29wcyB3ZSBzaG91bGQgZG8u
ICBUaGlzIHdpbGwgYmUgY0FuaW1hdGlvbk5vbmUgaWYgdGhpcyBpbWFnZSB0eXBlIGlzIGluY2Fw
YWJsZSBvZiBhbmltYXRpb24uCisgICAgaW50IG1fcmVwZXRpdGlvbkNvdW50OyAvLyBIb3cgbWFu
eSB0b3RhbCBhbmltYXRpb24gbG9vcHMgd2Ugc2hvdWxkIGRvLiBUaGlzIHdpbGwgYmUgY0FuaW1h
dGlvbk5vbmUgaWYgdGhpcyBpbWFnZSB0eXBlIGlzIGluY2FwYWJsZSBvZiBhbmltYXRpb24uCiAg
ICAgUmVwZXRpdGlvbkNvdW50U3RhdHVzIG1fcmVwZXRpdGlvbkNvdW50U3RhdHVzOwogICAgIGlu
dCBtX3JlcGV0aXRpb25zQ29tcGxldGU7ICAvLyBIb3cgbWFueSByZXBldGl0aW9ucyB3ZSd2ZSBm
aW5pc2hlZC4KICAgICBkb3VibGUgbV9kZXNpcmVkRnJhbWVTdGFydFRpbWU7ICAvLyBUaGUgc3lz
dGVtIHRpbWUgYXQgd2hpY2ggd2UgaG9wZSB0byBzZWUgdGhlIG5leHQgY2FsbCB0byBzdGFydEFu
aW1hdGlvbigpLgpAQCAtMzA5LDcgKzMxMCw3IEBAIHByaXZhdGU6CiAgICAgbXV0YWJsZSBSZXRh
aW5QdHI8TlNJbWFnZT4gbV9uc0ltYWdlOyAvLyBBIGNhY2hlZCBOU0ltYWdlIG9mIGZyYW1lIDAu
IE9ubHkgYnVpbHQgbGF6aWx5IGlmIHNvbWVvbmUgYWN0dWFsbHkgcXVlcmllcyBmb3Igb25lLgog
I2VuZGlmCiAjaWYgVVNFKENHKQotICAgIG11dGFibGUgUmV0YWluUHRyPENGRGF0YVJlZj4gbV90
aWZmUmVwOyAvLyBDYWNoZWQgVElGRiByZXAgZm9yIGZyYW1lIDAuICBPbmx5IGJ1aWx0IGxhemls
eSBpZiBzb21lb25lIHF1ZXJpZXMgZm9yIG9uZS4KKyAgICBtdXRhYmxlIFJldGFpblB0cjxDRkRh
dGFSZWY+IG1fdGlmZlJlcDsgLy8gQ2FjaGVkIFRJRkYgcmVwIGZvciBmcmFtZSAwLiBPbmx5IGJ1
aWx0IGxhemlseSBpZiBzb21lb25lIHF1ZXJpZXMgZm9yIG9uZS4KICNlbmRpZgogCiAgICAgQ29s
b3IgbV9zb2xpZENvbG9yOyAgLy8gSWYgd2UncmUgYSAxeDEgc29saWQgY29sb3IsIHRoaXMgaXMg
dGhlIGNvbG9yIHRvIHVzZSB0byBmaWxsLgpAQCAtMzM1LDYgKzMzNiw3IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBtX3NpemVBdmFpbGFibGUgOiAxOyAvLyBXaGV0aGVyIG9yIG5vdCB3ZSBjYW4gb2J0
YWluIHRoZSBzaXplIG9mIHRoZSBmaXJzdCBpbWFnZSBmcmFtZSB5ZXQgZnJvbSBJbWFnZUlPLgog
ICAgIG11dGFibGUgYm9vbCBtX2hhc1VuaWZvcm1GcmFtZVNpemUgOiAxOwogICAgIG11dGFibGUg
Ym9vbCBtX2hhdmVGcmFtZUNvdW50IDogMTsKKyAgICBib29sIG1fcGVuZGluZ05vdGlmeUFmdGVy
Q2F1Z2h0VXBUb0xhc3RGcmFtZSA6IDE7CiAKICAgICBSZWZQdHI8SW1hZ2U+IG1fY2FjaGVkSW1h
Z2U7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxh
Y2VkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKaW5k
ZXggZmVkNWI2MzVjMTEyOGY5NjczOTVjY2ZiMzlkZDcwZDZjMGNjZmQ4YS4uOTBmNWNiYWFiOGVi
M2FkMzhhZWU5ODJkYjAyMzA2Zjg3ZjUwYWY0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyUmVwbGFjZWQuY3BwCkBAIC0xMzksNyArMTM5LDggQEAgdm9pZCBSZW5kZXJSZXBs
YWNlZDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWlu
dE9mZnNldCkKIHsKICAgICBpZiAoIXNob3VsZFBhaW50KHBhaW50SW5mbywgcGFpbnRPZmZzZXQp
KQogICAgICAgICByZXR1cm47Ci0gICAgCisKKyAgICBSZW5kZXJPYmplY3Q6OlNldExheW91dE5l
ZWRlZEZvcmJpZGRlblNjb3BlIHNjb3BlKHRoaXMpOwogICAgIExheW91dFBvaW50IGFkanVzdGVk
UGFpbnRPZmZzZXQgPSBwYWludE9mZnNldCArIGxvY2F0aW9uKCk7CiAgICAgCiAgICAgaWYgKGhh
c0JveERlY29yYXRpb25zKCkgJiYgcGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VGb3JlZ3Jv
dW5kKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IGVhM2M4M2UyZTNjM2RlYTdhMmRkM2I5NmRlMmQ0MmVkZTE2NmM1MTkuLjFm
ZjAzMzVhZTcwMDEzNjY4NWRiNDAxZmJiYjM0NzI0M2E0NDM4YWMgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NyBAQAorMjAxNS0wNS0wMiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4K
KworICAgICAgICBBc3NlcnRpb24gZmFpbHVyZSAoIW5lZWRzTGF5b3V0KCkpIGxvYWRpbmcgaW5r
ZWRtYWcuY29tCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNDQ1MjgKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vMjA3ODg2ODEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFRlc3QgdGhhdCBzbGVl
cHMgZm9yIGEgd2hpbGUgdG8gZm9yY2UgYW4gaW1hZ2UgaW50byBjYXRjaHVwIG1vZGUuCisKKyAg
ICAgICAgKiBmYXN0L2ltYWdlcy9yZXNvdXJjZXMvc3Bpbm5lci5naWY6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvaW1hZ2VzL3NldC1uZWVkcy1sYXlvdXQtaW4tcGFpbnRpbmctZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ltYWdlcy9zZXQtbmVlZHMtbGF5b3V0LWluLXBhaW50
aW5nLmh0bWw6IEFkZGVkLgorCiAyMDE1LTA1LTAxICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFz
ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEF2b2lkIGNvbXBvc2l0aW5nIHVwZGF0ZXMgYWZ0ZXIg
c3R5bGUgcmVjYWxjcyB3aGljaCBoYXZlIG5vIGNvbXBvc2l0aW5nIGltcGxpY2F0aW9ucwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvcmVzb3VyY2VzL3NwaW5uZXIuZ2lmIGIv
TGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvcmVzb3VyY2VzL3NwaW5uZXIuZ2lmCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjdhNDllY2Y5Zjg0NzcwZjM1MzNhMDlkODIxMzU3ZDY3YjgzYWJhYTQKR0lUIGJpbmFyeSBwYXRj
aApsaXRlcmFsIDMyMDgKemNtYyhpWDs0I0g5PnBKZEZFN2hgSXswMyYxQSNVbTV1dDRlM04pKDww
UmpZTTVmQjdLVnBNUktNSVo9LUJfdHFnCnoyeH53fE5NZVd6QX0lMVUlXzBxSVZffmJIX1VIaDFp
e2pwdEokNnNtSU47UCZQMVcjV3Mtfip2ZSFPKy0tdWoqWQp6SWo4RCF7ZTdLWDV8e3VKbTstPjFB
M3J1VUd8YkcqakU7XkBPLStyRGtHSHFDX3hBUl9lKkpvR1p0bHNHQ3UrNjIKenY5U15PKkUwV3pa
MU1AOyU8JkJJUyE+RyU0ZChhRnw4QnhiLWtGZlBRQH43NU49Oy1ZPmBCUGpjUThSPG57OzU7CnpM
QlJaMWgoZXR8d1B4WGxnK35FcyMmRTx4RE0yJGtJPllDUUV0YEUmcXQtQmpyIyRASjhqQCExPTRs
KFlxbitMTAp6e2k7TGUhc2BDLSp2MTR5SF9JVjUkRHFsVTtCUkM4eUJ9d0A9Zi02UjRXSSheYnVR
dEttdCRgYFRrRG9jVERKR1UKeks3VVI/QmMqMz5KKSRBJVpXPmdPPyNDfU9JfDYlcCRrPiN+KnJy
Jmk4LStqdyl0YVVnWldfSjlQZ2tOa2ItS0NCCnp0ZSQ9R0xNcDR1RlF4Y2NhPHNjJnU1QkpaUkQ3
d0hhI2hDdjJIJEdKOX1mMX0/RiFaQmEtLXZIYCNjX2N7dnxsSAp6RFcmS3NGZE5Hc090ZmAqPjU7
UGdlZVVyY3JFQCF7JjlNNzZTakJrSkY1b05nZDFkflNlUmhGOFQwSntAR1RQVVgKeio2ZHEoUn19
XmklRVMzfD8mU2IrWntOJClmJTt+X2wqIXZ3O15fU3VqQSFOWUxEVUZoIy1jUlojKEhCK0d9fnt+
CnokUnRCJkEkJDdvdEhLSThXdzsra2J1aDNHSl4jYmVOWjZQfjVKRT8yUTB+ZS1ZemVpVHd5JWBD
SkJ5dEk3UTUlVQp6UXduMkxGX09mcDQyX2M4MjJuSEhSQmIwYUImYD1+Vn4oQHlFO0dMN3AwOHIp
dj5gPnBDVHV3SWBjPnQlYG58I2QKekVYa3pxSXl0a3Y8QFN4bHFyIVdNR1ZZX28+QnUyZk44V1Ni
Um5McHFNMF9UdXF4PW1wdGReRiVVc2R4KFJtK3krCnpVdE15WkcjKVcwRVFiR2o5XmN4MjkpSEgz
Pm5NbTV1ZFkjczRXRTtUdVB2NEQyYHRQU3l5TVFxVzV5Z09nSkBTTAp6c3E4VWhZcTJxdjhROHND
P04yQ3J5SSh4JnFaezUlSX1aXkxWVlZka2tfVDx1TVByZmt3eztSbmVsI1AlWHtafWMKejVERSN8
Pzd9RHBnPDhDczRlbUBnJVlecDJsYlRxUjZUeiptI25xSDV0eCZEY2xBU3JOS2lafk9VdTsjZWRR
Mk84CnpYOyp3WmwxbDlkPFpObE5OVFIqQGJAWGAhLVo8IWRFdS1XY1N0JigkO2Ardjd0YSFyeChK
NWRXWGRMYzt7TngkWAp6YWgzN1hgUTEja2RxP1JrYzNuZXVvfEJ4Nm00cH5zVWcqYEIlbGVsclRo
c3Z5P3IpPjNXPUQ0JGAkUU52KkR+KzUKemdoPitRO2EtTGgpSnlUSHRCMk5HVTkzXj5CKV8rbUhk
c2hPVEM4TkhrM0dsV2ZhcUV8dD5BamojNjJMdWMrSylaCnp1a2xRJUE/cjw9Qmh0NHk4MkdiNzl6
Nzs2TyshTUx1VWtqUlYmfW4wX1RnZUthZCowRFc7UDN5dmFHX0luc0t5Ngp6aTRaQn07IStRIzlA
VTt+SzgzYndQT2R3Q2t6MzJea3NyRXpne2BHRjs5VVY+MmdRIX5ORDxycm5zJEhZVU1Wen4KekZe
WkdKclNhSiN0MUFIVSNKMV9fT2tRKCYkXzRDWSlBUkw3QGo2IWR6MUloUl5MVCh3S2ZIMUh6UWZN
WkZNfGZ1CnppQFgyUl8tJUJ2cWdLe0Y4Yk1yNUJ+STU0aEo7WigkI1Bmb0drKzUlJWtyejZgMDNT
NFNXWTRmdTZuaD1HUjh0OAp6YHctQ2lkN3AzTW5NeFE7eiE7JVdOWkl5N0VZcEReSjFeZ20qY31s
fHJrODk4QTQ/QHt1eyM4bHhUfUl3eUA/NiYKenJZVFVTKio8VHBwIXg8Slg9Ki05RE17VD8tPmdC
RHNzPTU+WiY5c24/RFBoIUR9ejgzYnYzS0hWQTlpclIweHooCno3NkktPDthcnNpRTUjYj0+I2Em
RmZDX3hwKFluIUFBVVo7MWQ8O2xeU29gIzgpd2tYeW1RTXFjZj9sfiNNbytxeAp6KyZfenA+SUxy
QSV3UiUoWVNob31ocG9PPz1DeVMzQHl7KDNLdj4mKzBheWdFbjlhNDdHXk4lamJnUkN5OXMzQDgK
ejZEV3xDe1BvTXxifWpYTlZ0KCEzWFE5ZllxQyg3WkRoPDFlSXopZilyeGgzJm9vWFJLbzBqbW1B
ZClnc1Q5dzM2CnpMNERueW9je351RyVKKE9fLXk/KTdVN14+QCk1SXJFPj9sRVk4PFl1QmV8Xzhs
RE8ySmZFNypFRXBVVWxSanpqZAp6TVhXTVlCNyVVJmwzY3BGO0FUdzY8ZDhgezIrNSt6JU0zKWxB
aF9wKGNNNHVYQmNVaXYxODs0TWZfN3pGaEVPS1oKenRpWjxgTFZ6MTZCM0FARTBMYTh4cFU8NSs9
cUgmWEBgV1k2YHt8OGsxX0ZRKEZ0KllmNmFWUUA8ZyRUMiVTRF51CnojbFB0d3AwQChpTkV0Uzti
eUtsVGg+Z0xpRFl0dTtBejMhXlA1RkpWVnR2TGNlPk54UStEOFBoZWRKQVBoKTtJJQp6fEFrTGdz
KC1xQiY5QVB9bmNgTEZNbWN4ZCFpdWJLK1dOITgpR0lRK3NmZjNkVzV0c2U8NnZuU0YrRj5PdmBo
fEcKeiQjXndqTVV2Mnxxe1M3PyRtYztZT3c5Rzw9eWFxTHRGbTJrTiRvSHhSVHloVkx9SDxmST0j
MGUtN056fGtSRl88Cno+a1Eya3RWWUtIJTF4d2B3Kj96VnVeUnxuNjY3X0IhIzY+eHxNfStfXmlV
ZSlAZVUqMVI1TWNXNTdYVU9vVl5uYQp6M1cmLTgrVitpc1R4aFctZURnPX1iQXxNSVV9PVNPd3k7
PU1DZUpCUnUlWmZpMVEydkZEe3hpbV40UXNHN0tOdy0Kemkze1dxPl96VFdAMXlUUEtAJCokTnI1
VlVYZGFCQiFebXhiRzZZdmppTUxTVytYek0rOFpKZ3w0RkhkRChvaCE8Cnp5ITlBK2hJSjF+ZT8o
dS1lRSluWCF9SiFzZFBFVTIqfDs+eTJ3ZylTY3xNK2gpWHJrakR0IUJZKG0/RD1DS1k8eAp6JjFX
Q3ZXWVpaQ3FTWTNxI299LVczVUBJR1V9ODMzcWVZMGAxMTFtJTQjdXRVQVptM3UyfDt4NXlhel9X
eWghVWkKemkxOWQjUTZIQVRjZ0NpMTspbnxleXo+Tm07cioyTjQ1PFgoVzNSc0VYfm45dkdSaEB2
KnY2RjJ1SDVgTmNxNFczCnpQVyhmSEZtRDdSZj51QCkzbXZJZGIhZkdgdGZJYzsxVmAqajBUK1pv
NWFLNXhWNy0xcDJ2UWU5eTJTOUEqUCVAaAp6SXwxWSZsTmNJI2ckSmI5Ymk9UilvQiswRHRnXmxm
OCY3PWk/Ozw3TEpxPTg0SmpmeTVDRT5ILTgrZWJ1ZVNSTW8KentKP2xhYCNKN0l6dD5tRkp8TXJ2
aUEqMG08LUtTU3A4WmNJQWZ3LWtqNk1+Q0EpQ0J6SVpAdndQclRRUzdicF8/Cno+aD5AckZkfngw
QCF4QkBwVSt6PCp9PCFsVklwVHJWT0R+eSM8fTV1cUswMUlQXzI+Vk1eP0hAP1Q5ZFoqZmw3Ugp6
S196dWBhTURDTXpAPV9kdjU4TSYqV1VJSGtgcTd5dUspYHcjQ0xRU2ZTXi18eUlsbk4wVH1KKUUx
UG9KZkNVWSgKenM4aWdWLSN6Q3s/VlNVVD1vazspdCskUSkmNTczYik/OHd9XmZOLUZedUl8ITFw
M2J3cXp1eUswZXlRdVkrOVNiCnpiRT0/ckRwMHtPZT8hclRrdV9wV0g0TUQoY1hvQENpI2t5Vkgk
TE08KFkwOD8lYSVAPXQmPlZ7Uj4jTzh6ezJYcAp6MkxtKXhTe2Y8WSZXUmMyMnA5T2YjVFN7VEJF
O2E4SzlzQ3JnK2w1UU5yRnxhT34ra1licT53UD41I0ltc1omd3MKejdGby0mcWteRVEkQkU3JF9Z
VChRKmomTV4yOGtzbUs/aGZLVzAhbDBxNjQ+dmA3NUZaS3Z5ZyQ/dSRzOShmdmswCnpMQl9vSiQ+
N19gSm02aXxyajU0MXRtM3hkUzBMeHM7VzYheEVBVHYxJXYoa0I4YjV9UjlwQDledyh0LTV3RWg5
dgpDSWtANWcKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvaW1hZ2VzL3NldC1uZWVkcy1sYXlvdXQtaW4tcGFpbnRpbmctZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvc2V0LW5lZWRzLWxheW91dC1pbi1wYWludGluZy1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGViZjFiZGJjODc4NGY1YTgwMTNjNjdiOGMyZmVlYTE2MmE5
NjkwNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3NldC1uZWVk
cy1sYXlvdXQtaW4tcGFpbnRpbmctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorVGhpcyB0
ZXN0IHNob3VsZCBub3QgYXNzZXJ0IGluIGRlYnVnIGJ1aWxkcy4KKworCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9zZXQtbmVlZHMtbGF5b3V0LWluLXBhaW50aW5nLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9zZXQtbmVlZHMtbGF5b3V0LWluLXBhaW50aW5nLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZDk1YWY0OTI5YjgzMDk5ZDViNDE3MDU5NmY2ZTEzYjc0ZGIyYmVjMgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3NldC1uZWVkcy1sYXlv
dXQtaW4tcGFpbnRpbmcuaHRtbApAQCAtMCwwICsxLDUzIEBACis8IURPQ1RZUEUgaHRtbD4KKwor
PGh0bWw+Cis8aGVhZD4KKyAgICA8c3R5bGU+CisgICAgICAgIC5ib3ggeworICAgICAgICAgICAg
aGVpZ2h0OiAxMDBweDsKKyAgICAgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgICAgIGJh
Y2tncm91bmQtY29sb3I6IGJsdWU7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGltZyB7
CisgICAgICAgICAgICBoZWlnaHQ6IDkwJTsKKyAgICAgICAgICAgIHdpZHRoOiA5MCU7CisgICAg
ICAgIH0KKyAgICA8L3N0eWxlPgorICAgIDxzY3JpcHQ+CisgICAgICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikgeworICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAg
ICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIHNsZWVwKG1zKSB7CisgICAgICAgICAgICB2YXIgZW5kVGltZSA9IChuZXcgRGF0ZSgp
LmdldFRpbWUoKSkgKyBtczsKKyAgICAgICAgICAgIHdoaWxlICgobmV3IERhdGUoKS5nZXRUaW1l
KCkpIDwgZW5kVGltZSkgeworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAg
ICAgICBjb25zdCBtYXhJdGVyYXRpb25zID0gMjA7CisgICAgICAgIHZhciBpdGVyYXRpb24gPSAw
OworICAgICAgICBmdW5jdGlvbiBzdGFydFRlc3QoKQorICAgICAgICB7CisgICAgICAgICAgICB2
YXIgaW50ZXJ2YWwgPSB3aW5kb3cuc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICAgICAgLy8gU2xlZXAgdG8gZ2V0IHRoZSBHSUYgaW50byBjYXRjaHVwIG1vZGUuCisgICAgICAg
ICAgICAgICAgc2xlZXAoNTApOworICAgICAgICAgICAgICAgIGlmICgrK2l0ZXJhdGlvbiA9PSBt
YXhJdGVyYXRpb25zKSB7CisgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5jbGVhckludGVydmFs
KGludGVydmFsKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
ICAgICAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfSwgMjApOworICAgICAgICB9CisKKyAgICAgICAgd2lu
ZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBzdGFydFRlc3QpOworICAgIDwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+CisgICAgPHA+VGhpcyB0ZXN0IHNob3VsZCBub3QgYXNzZXJ0IGluIGRl
YnVnIGJ1aWxkcy48L3A+CisgICAgPGRpdiBjbGFzcz0iYm94Ij4KKyAgICAgICAgPGltZyBzcmM9
InJlc291cmNlcy9zcGlubmVyLmdpZiIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiPgorICAgIDwv
ZGl2PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252245</attachid>
            <date>2015-05-02 14:11:17 -0700</date>
            <delta_ts>2015-05-03 09:16:31 -0700</delta_ts>
            <desc>For EWS</desc>
            <filename>bug-144528-20150502141004.patch</filename>
            <type>text/plain</type>
            <size>21763</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzNzE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2RmMmRjYTI5MDk3MTg0
ZmE2NzU3ZmJjYzczYTJiNDg3MGI1OWMwYi4uYTZkYmMwYmZiMTc0ZjEzZTU3OGI4ZDhhOGZjNGQz
ZDU2ZDI1Yjc3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDE1LTA1LTAyICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFzc2VydGlvbiBm
YWlsdXJlICghbmVlZHNMYXlvdXQoKSkgbG9hZGluZyBpbmtlZG1hZy5jb20KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NDUyOAorICAgICAgICByZGFy
Oi8vcHJvYmxlbS8yMDc4ODY4MQorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgor
ICAgICAgICAKKyAgICAgICAgV2hlbiBhbmltYXRlZCBHSUZzIGdldCBpbnRvIGNhdGNoLXVwIG1v
ZGUsIHdoaWNoIGlzIGNvbW1vbiBvbiBpbmtlZG1hZy5jb20sCisgICAgICAgIEJpdG1hcEltYWdl
OjphZHZhbmNlQW5pbWF0aW9uKCkgY2FuIHN5bmNocm9ub3VzbHkgY2FsbCBpdCdzIG9ic2VydmVy
J3MKKyAgICAgICAgYW5pbWF0aW9uQWR2YW5jZWQoKS4gVGhpcyBjb3VsZCBjYXVzZSBSZW5kZXJJ
bWFnZTo6cmVwYWludE9yTWFya0ZvckxheW91dCgpCisgICAgICAgIHRvIHJlcGFpbnQgb3IgbWFy
ayBpdHNlbGYgYXMgbmVlZGluZyBsYXlvdXQgaW4gdGhlIG1pZGRsZSBvZiBwYWludGluZy4KKyAg
ICAgICAgSWYgcGFpbnRpbmcgbXVsdGlwbGUgdGlsZXMsIHRoaXMgY291bGQgb2NjdXIgd2hlbiBw
YWludGluZyB0aGUgZmlyc3QgdGlsZSwKKyAgICAgICAgYW5kIHRoZW4gcGFpbnRpbmcgdGhlIHNl
Y29uZCB0aWxlIHdvdWxkIGFzc2VydCBpbiBSZW5kZXJWaWV3OjpwYWludCgpLgorICAgICAgICAK
KyAgICAgICAgSXQncyBhbHdheXMgd3JvbmcgdG8gc3luY2hyb25vdXNseSBjYWxsIHRoZSBvYnNl
cnZlciB3aGVuIGFkdmFuY2luZworICAgICAgICB0aGUgYW5pbWF0aW9uLCBzaW5jZSB0aGlzIGhh
cHBlbnMgd2hlbiBwYWludGluZywgYW5kIHlvdSBjYW4ndCByZXBhaW50CisgICAgICAgIHdoZW4g
cGFpbnRpbmcuIFRoZSBsb25nIGNvbW1lbnQgYW5kIGNhbGwgdG8gc3RhcnRBbmltYXRpb24oRG9O
b3RDYXRjaFVwKQorICAgICAgICB3YXMgcmVxdWlyZWQgdG8gZXhwbGFpbiBhbmQgd29yayBhcm91
bmQgdGhpcywgYnV0IGl0J3Mgc2ltcGxlciB0byBqdXN0CisgICAgICAgIGFkdmFuY2UgdGhlIGFu
aW1hdGlvbiBvbiBhIHplcm8tZGVsYXkgdGltZXIuCisgICAgICAgIAorICAgICAgICBTcGVjaWFs
IGhhbmRsaW5nIGlzIHJlcXVpcmVkIGZvciB0aGUgY2FzZSB3aGVyZSBpbnRlcm5hbEFkdmFuY2VB
bmltYXRpb24oKQorICAgICAgICBpcyBjYXRjaGluZyB1cCwgYW5kIHJlYWNoZXMgdGhlIGVuZCBv
ZiBhIG5vbi1yZXBlYXRpbmcgaW1hZ2U7IHRoZXJlLCB3ZQorICAgICAgICBoYXZlIHRvIHNldCBh
IGZsYWcgYW5kIGRvIHRoZSBub3RpZnkgb24gYSB6ZXJvLWRlbGF5IHRpbWVyLgorICAgICAgICAK
KyAgICAgICAgTG90cyBvZiBjb21tZW50IGNsZWFudXAuCisKKyAgICAgICAgVGVzdDogZmFzdC9p
bWFnZXMvc2V0LW5lZWRzLWxheW91dC1pbi1wYWludGluZy5odG1sCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJ
bWFnZTo6Qml0bWFwSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OnN0YXJ0
VGltZXIpOiBVdGlsaXR5IHRvIGNyZWF0ZSBhbmQgc3RhcnQgdGhlIHRpbWVyLgorICAgICAgICAo
V2ViQ29yZTo6Qml0bWFwSW1hZ2U6OnJlcGV0aXRpb25Db3VudCk6CisgICAgICAgIChXZWJDb3Jl
OjpCaXRtYXBJbWFnZTo6c3RhcnRBbmltYXRpb24pOiBFYXJseSByZXR1cm4gaW4gdGhlIERvTm90
Q2F0Y2hVcCBjbGF1c2UuCisgICAgICAgIElmIHNraXBwaW5nLCBhbmQgaW50ZXJuYWxBZHZhbmNl
QW5pbWF0aW9uKCkgcmV0dXJucyBmYWxzZSAobWVhbmluZyBpdCBtdXN0IGhhdmUKKyAgICAgICAg
cmVhY2hlZCB0aGUgZW5kKSwgdGhlbiBxdWV1ZSB1cCBhIG5vdGlmeS4gQ2hhbmdlIHRoZSBub3Jt
YWwgYmVoYXZpb3IgdG8ganVzdAorICAgICAgICBzdGFydCB0aGUgdGltZXIuCisgICAgICAgIChX
ZWJDb3JlOjpCaXRtYXBJbWFnZTo6c3RvcEFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpC
aXRtYXBJbWFnZTo6aW50ZXJuYWxBZHZhbmNlQW5pbWF0aW9uKTogTm90aWZ5IGlmIHRoZSBmbGFn
IGlzIHNldC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJSZXBsYWNlZDo6cGFpbnQpOiBBZGQgYSBTZXRMYXlvdXROZWVkZWRGb3JiaWRkZW5TY29w
ZSB0bworICAgICAgICBkZXRlY3Qgc2V0TmVlZHNMYXlvdXRzIHdoZW4gcGFpbnRpbmcgcmVwbGFj
ZWQgZWxlbWVudHMsIGluY2x1ZGluZyBpbWFnZXMuCisKIDIwMTUtMDUtMDIgIEd5dXlvdW5nIEtp
bSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBVc2UgUmVmIGluc3RlYWQg
b2YgUGFzc1JlZlB0ciBpbiBXZWJDb3JlL3N2ZyAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAppbmRleCAzZjZlYzJiZDQ3NjVhYTE4OTEzM2Qz
YWM4MWNkOTAyM2UwYjYxYzQyLi5kY2IzNWQ0YjY4OTg0ZTI4YzIyZDM4M2Q1NzljYmQwOTkwMzA3
ODFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJ
bWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuY3BwCkBAIC03Myw3ICs3Myw3IEBAIEJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShJbWFnZU9i
c2VydmVyKiBvYnNlcnZlcikKICAgICAsIG1fc2l6ZUF2YWlsYWJsZShmYWxzZSkKICAgICAsIG1f
aGFzVW5pZm9ybUZyYW1lU2l6ZSh0cnVlKQogICAgICwgbV9oYXZlRnJhbWVDb3VudChmYWxzZSkK
LSAgICAsIG1fY2FjaGVkSW1hZ2UoMCkKKyAgICAsIG1fYW5pbWF0aW9uRmluaXNoZWRXaGVuQ2F0
Y2hpbmdVcChmYWxzZSkKIHsKIH0KIApAQCAtODgsNiArODgsMTMgQEAgdm9pZCBCaXRtYXBJbWFn
ZTo6Y2xlYXJUaW1lcigpCiAgICAgbV9mcmFtZVRpbWVyID0gbnVsbHB0cjsKIH0KIAordm9pZCBC
aXRtYXBJbWFnZTo6c3RhcnRUaW1lcihkb3VibGUgZGVsYXkpCit7CisgICAgQVNTRVJUKCFtX2Zy
YW1lVGltZXIpOworICAgIG1fZnJhbWVUaW1lciA9IHN0ZDo6bWFrZV91bmlxdWU8VGltZXI+KCp0
aGlzLCAmQml0bWFwSW1hZ2U6OmFkdmFuY2VBbmltYXRpb24pOworICAgIG1fZnJhbWVUaW1lci0+
c3RhcnRPbmVTaG90KGRlbGF5KTsKK30KKwogI2lmICFVU0UoQ0cpCiBib29sIEJpdG1hcEltYWdl
OjpkZWNvZGVkRGF0YUlzUHVyZ2VhYmxlKCkgY29uc3QKIHsKQEAgLTQ3Myw3ICs0ODAsNyBAQCBi
b29sIEJpdG1hcEltYWdlOjpub3RTb2xpZENvbG9yKCkKIGludCBCaXRtYXBJbWFnZTo6cmVwZXRp
dGlvbkNvdW50KGJvb2wgaW1hZ2VLbm93blRvQmVDb21wbGV0ZSkKIHsKICAgICBpZiAoKG1fcmVw
ZXRpdGlvbkNvdW50U3RhdHVzID09IFVua25vd24pIHx8ICgobV9yZXBldGl0aW9uQ291bnRTdGF0
dXMgPT0gVW5jZXJ0YWluKSAmJiBpbWFnZUtub3duVG9CZUNvbXBsZXRlKSkgewotICAgICAgICAv
LyBTbmFnIHRoZSByZXBldGl0aW9uIGNvdW50LiAgSWYgfGltYWdlS25vd25Ub0JlQ29tcGxldGV8
IGlzIGZhbHNlLCB0aGUKKyAgICAgICAgLy8gU25hZyB0aGUgcmVwZXRpdGlvbiBjb3VudC4gSWYg
fGltYWdlS25vd25Ub0JlQ29tcGxldGV8IGlzIGZhbHNlLCB0aGUKICAgICAgICAgLy8gcmVwZXRp
dGlvbiBjb3VudCBtYXkgbm90IGJlIGFjY3VyYXRlIHlldCBmb3IgR0lGczsgaW4gdGhpcyBjYXNl
IHRoZQogICAgICAgICAvLyBkZWNvZGVyIHdpbGwgZGVmYXVsdCB0byBjQW5pbWF0aW9uTG9vcE9u
Y2UsIGFuZCB3ZSdsbCB0cnkgYW5kIHJlYWQKICAgICAgICAgLy8gdGhlIGNvdW50IGFnYWluIG9u
Y2UgdGhlIHdob2xlIGltYWdlIGlzIGRlY29kZWQuCkBAIC01MDUsMTMgKzUxMiwxMyBAQCB2b2lk
IEJpdG1hcEltYWdlOjpzdGFydEFuaW1hdGlvbihDYXRjaFVwQW5pbWF0aW9uIGNhdGNoVXBJZk5l
Y2Vzc2FyeSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gRG9uJ3QgYWR2YW5jZSBwYXN0IHRo
ZSBsYXN0IGZyYW1lIGlmIHdlIGhhdmVuJ3QgZGVjb2RlZCB0aGUgd2hvbGUgaW1hZ2UKLSAgICAv
LyB5ZXQgYW5kIG91ciByZXBldGl0aW9uIGNvdW50IGlzIHBvdGVudGlhbGx5IHVuc2V0LiAgVGhl
IHJlcGV0aXRpb24gY291bnQKKyAgICAvLyB5ZXQgYW5kIG91ciByZXBldGl0aW9uIGNvdW50IGlz
IHBvdGVudGlhbGx5IHVuc2V0LiBUaGUgcmVwZXRpdGlvbiBjb3VudAogICAgIC8vIGluIGEgR0lG
IGNhbiBwb3RlbnRpYWxseSBjb21lIGFmdGVyIGFsbCB0aGUgcmVzdCBvZiB0aGUgaW1hZ2UgZGF0
YSwgc28KICAgICAvLyB3YWl0IG9uIGl0LgogICAgIGlmICghbV9hbGxEYXRhUmVjZWl2ZWQgJiYg
cmVwZXRpdGlvbkNvdW50KGZhbHNlKSA9PSBjQW5pbWF0aW9uTG9vcE9uY2UgJiYgbV9jdXJyZW50
RnJhbWUgPj0gKGZyYW1lQ291bnQoKSAtIDEpKQogICAgICAgICByZXR1cm47CiAKLSAgICAvLyBE
ZXRlcm1pbmUgdGltZSBmb3IgbmV4dCBmcmFtZSB0byBzdGFydC4gIEJ5IGlnbm9yaW5nIHBhaW50
IGFuZCB0aW1lciBsYWcKKyAgICAvLyBEZXRlcm1pbmUgdGltZSBmb3IgbmV4dCBmcmFtZSB0byBz
dGFydC4gQnkgaWdub3JpbmcgcGFpbnQgYW5kIHRpbWVyIGxhZwogICAgIC8vIGluIHRoaXMgY2Fs
Y3VsYXRpb24sIHdlIG1ha2UgdGhlIGFuaW1hdGlvbiBhcHBlYXIgdG8gcnVuIGF0IGl0cyBkZXNp
cmVkCiAgICAgLy8gcmF0ZSByZWdhcmRsZXNzIG9mIGhvdyBmYXN0IGl0J3MgYmVpbmcgcmVwYWlu
dGVkLgogICAgIGNvbnN0IGRvdWJsZSBjdXJyZW50RHVyYXRpb24gPSBmcmFtZUR1cmF0aW9uQXRJ
bmRleChtX2N1cnJlbnRGcmFtZSk7CkBAIC01MjAsNyArNTI3LDcgQEAgdm9pZCBCaXRtYXBJbWFn
ZTo6c3RhcnRBbmltYXRpb24oQ2F0Y2hVcEFuaW1hdGlvbiBjYXRjaFVwSWZOZWNlc3NhcnkpCiAj
aWYgIVBMQVRGT1JNKElPUykKICAgICAvLyBXaGVuIGFuIGFuaW1hdGVkIGltYWdlIGlzIG1vcmUg
dGhhbiBmaXZlIG1pbnV0ZXMgb3V0IG9mIGRhdGUsIHRoZQogICAgIC8vIHVzZXIgcHJvYmFibHkg
ZG9lc24ndCBjYXJlIGFib3V0IHJlc3luY2luZyBhbmQgd2UgY291bGQgYnVybiBhIGxvdCBvZgot
ICAgIC8vIHRpbWUgbG9vcGluZyB0aHJvdWdoIGZyYW1lcyBiZWxvdy4gIEp1c3QgcmVzZXQgdGhl
IHRpbWluZ3MuCisgICAgLy8gdGltZSBsb29waW5nIHRocm91Z2ggZnJhbWVzIGJlbG93LiBKdXN0
IHJlc2V0IHRoZSB0aW1pbmdzLgogICAgIGNvbnN0IGRvdWJsZSBjQW5pbWF0aW9uUmVzeW5jQ3V0
b2ZmID0gNSAqIDYwOwogICAgIGlmICgodGltZSAtIG1fZGVzaXJlZEZyYW1lU3RhcnRUaW1lKSA+
IGNBbmltYXRpb25SZXN5bmNDdXRvZmYpCiAgICAgICAgIG1fZGVzaXJlZEZyYW1lU3RhcnRUaW1l
ID0gdGltZSArIGN1cnJlbnREdXJhdGlvbjsKQEAgLTUzMyw3ICs1NDAsNyBAQCB2b2lkIEJpdG1h
cEltYWdlOjpzdGFydEFuaW1hdGlvbihDYXRjaFVwQW5pbWF0aW9uIGNhdGNoVXBJZk5lY2Vzc2Fy
eSkKICAgICAvLyBUaGUgaW1hZ2UgbWF5IGxvYWQgbW9yZSBzbG93bHkgdGhhbiBpdCdzIHN1cHBv
c2VkIHRvIGFuaW1hdGUsIHNvIHRoYXQgYnkKICAgICAvLyB0aGUgdGltZSB3ZSByZWFjaCB0aGUg
ZW5kIG9mIHRoZSBmaXJzdCByZXBldGl0aW9uLCB3ZSdyZSB3ZWxsIGJlaGluZC4KICAgICAvLyBD
bGFtcCB0aGUgZGVzaXJlZCBmcmFtZSBzdGFydCB0aW1lIGluIHRoaXMgY2FzZSwgc28gdGhhdCB3
ZSBkb24ndCBza2lwCi0gICAgLy8gZnJhbWVzIChvciB3aG9sZSBpdGVyYXRpb25zKSB0cnlpbmcg
dG8gImNhdGNoIHVwIi4gIFRoaXMgaXMgYSB0cmFkZW9mZjoKKyAgICAvLyBmcmFtZXMgKG9yIHdo
b2xlIGl0ZXJhdGlvbnMpIHRyeWluZyB0byAiY2F0Y2ggdXAiLiBUaGlzIGlzIGEgdHJhZGVvZmY6
CiAgICAgLy8gSXQgZ3VhcmFudGVlcyB1c2VycyBzZWUgdGhlIHdob2xlIGFuaW1hdGlvbiB0aGUg
c2Vjb25kIHRpbWUgdGhyb3VnaCBhbmQKICAgICAvLyBkb24ndCBtaXNzIGFueSByZXBldGl0aW9u
cywgYW5kIGlzIGNsb3NlciB0byB3aGF0IG90aGVyIGJyb3dzZXJzIGRvOyBvbgogICAgIC8vIHRo
ZSBvdGhlciBoYW5kLCBpdCBtYWtlcyBhbmltYXRpb25zICJsZXNzIGFjY3VyYXRlIiBmb3IgcGFn
ZXMgdGhhdCB0cnkgdG8KQEAgLTU0NSw1NSArNTUyLDQyIEBAIHZvaWQgQml0bWFwSW1hZ2U6OnN0
YXJ0QW5pbWF0aW9uKENhdGNoVXBBbmltYXRpb24gY2F0Y2hVcElmTmVjZXNzYXJ5KQogCiAgICAg
aWYgKGNhdGNoVXBJZk5lY2Vzc2FyeSA9PSBEb05vdENhdGNoVXAgfHwgdGltZSA8IG1fZGVzaXJl
ZEZyYW1lU3RhcnRUaW1lKSB7CiAgICAgICAgIC8vIEhhdmVuJ3QgeWV0IHJlYWNoZWQgdGltZSBm
b3IgbmV4dCBmcmFtZSB0byBzdGFydDsgZGVsYXkgdW50aWwgdGhlbi4KLSAgICAgICAgbV9mcmFt
ZVRpbWVyID0gc3RkOjptYWtlX3VuaXF1ZTxUaW1lcj4oKnRoaXMsICZCaXRtYXBJbWFnZTo6YWR2
YW5jZUFuaW1hdGlvbik7Ci0gICAgICAgIG1fZnJhbWVUaW1lci0+c3RhcnRPbmVTaG90KHN0ZDo6
bWF4KG1fZGVzaXJlZEZyYW1lU3RhcnRUaW1lIC0gdGltZSwgMC4pKTsKLSAgICB9IGVsc2Ugewot
ICAgICAgICAvLyBXZSd2ZSBhbHJlYWR5IHJlYWNoZWQgb3IgcGFzc2VkIHRoZSB0aW1lIGZvciB0
aGUgbmV4dCBmcmFtZSB0byBzdGFydC4KLSAgICAgICAgLy8gU2VlIGlmIHdlJ3ZlIGFsc28gcGFz
c2VkIHRoZSB0aW1lIGZvciBmcmFtZXMgYWZ0ZXIgdGhhdCB0byBzdGFydCwgaW4KLSAgICAgICAg
Ly8gY2FzZSB3ZSBuZWVkIHRvIHNraXAgc29tZSBmcmFtZXMgZW50aXJlbHkuICBSZW1lbWJlciBu
b3QgdG8gYWR2YW5jZQotICAgICAgICAvLyB0byBhbiBpbmNvbXBsZXRlIGZyYW1lLgotICAgICAg
ICBmb3IgKHNpemVfdCBmcmFtZUFmdGVyTmV4dCA9IChuZXh0RnJhbWUgKyAxKSAlIGZyYW1lQ291
bnQoKTsgZnJhbWVJc0NvbXBsZXRlQXRJbmRleChmcmFtZUFmdGVyTmV4dCk7IGZyYW1lQWZ0ZXJO
ZXh0ID0gKG5leHRGcmFtZSArIDEpICUgZnJhbWVDb3VudCgpKSB7Ci0gICAgICAgICAgICAvLyBT
aG91bGQgd2Ugc2tpcCB0aGUgbmV4dCBmcmFtZT8KLSAgICAgICAgICAgIGRvdWJsZSBmcmFtZUFm
dGVyTmV4dFN0YXJ0VGltZSA9IG1fZGVzaXJlZEZyYW1lU3RhcnRUaW1lICsgZnJhbWVEdXJhdGlv
bkF0SW5kZXgobmV4dEZyYW1lKTsKLSAgICAgICAgICAgIGlmICh0aW1lIDwgZnJhbWVBZnRlck5l
eHRTdGFydFRpbWUpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgIC8vIFll
czsgc2tpcCBvdmVyIGl0IHdpdGhvdXQgbm90aWZ5aW5nIG91ciBvYnNlcnZlcnMuCi0gICAgICAg
ICAgICBpZiAoIWludGVybmFsQWR2YW5jZUFuaW1hdGlvbihTa2lwcGluZ0ZyYW1lc1RvQ2F0Y2hV
cCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9kZXNpcmVkRnJhbWVT
dGFydFRpbWUgPSBmcmFtZUFmdGVyTmV4dFN0YXJ0VGltZTsKLSAgICAgICAgICAgIG5leHRGcmFt
ZSA9IGZyYW1lQWZ0ZXJOZXh0OwotICAgICAgICB9CisgICAgICAgIHN0YXJ0VGltZXIoc3RkOjpt
YXg8ZG91YmxlPihtX2Rlc2lyZWRGcmFtZVN0YXJ0VGltZSAtIHRpbWUsIDApKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KIAotICAgICAgICAvLyBEcmF3IHRoZSBuZXh0IGZyYW1lIGltbWVkaWF0
ZWx5LiAgTm90ZSB0aGF0IG1fZGVzaXJlZEZyYW1lU3RhcnRUaW1lCi0gICAgICAgIC8vIG1heSBi
ZSBpbiB0aGUgcGFzdCwgbWVhbmluZyB0aGUgbmV4dCB0aW1lIHRocm91Z2ggdGhpcyBmdW5jdGlv
biB3ZSdsbAotICAgICAgICAvLyBraWNrIG9mZiB0aGUgbmV4dCBhZHZhbmNlbWVudCBzb29uZXIg
dGhhbiB0aGlzIGZyYW1lJ3MgZHVyYXRpb24gd291bGQKLSAgICAgICAgLy8gc3VnZ2VzdC4KLSAg
ICAgICAgaWYgKGludGVybmFsQWR2YW5jZUFuaW1hdGlvbigpKSB7Ci0gICAgICAgICAgICAvLyBU
aGUgaW1hZ2UgcmVnaW9uIGhhcyBiZWVuIG1hcmtlZCBkaXJ0eSwgYnV0IG9uY2Ugd2UgcmV0dXJu
IHRvIG91cgotICAgICAgICAgICAgLy8gY2FsbGVyLCBkcmF3KCkgd2lsbCBjbGVhciBpdCwgYW5k
IG5vdGhpbmcgd2lsbCBjYXVzZSB0aGUKLSAgICAgICAgICAgIC8vIGFuaW1hdGlvbiB0byBhZHZh
bmNlIGFnYWluLiAgV2UgbmVlZCB0byBzdGFydCB0aGUgdGltZXIgZm9yIHRoZQotICAgICAgICAg
ICAgLy8gbmV4dCBmcmFtZSBydW5uaW5nLCBvciB0aGUgYW5pbWF0aW9uIGNhbiBoYW5nLiAgKENv
bXBhcmUgdGhpcwotICAgICAgICAgICAgLy8gd2l0aCB3aGVuIGFkdmFuY2VBbmltYXRpb24oKSBp
cyBjYWxsZWQsIGFuZCB0aGUgcmVnaW9uIGlzIGRpcnRpZWQKLSAgICAgICAgICAgIC8vIHdoaWxl
IGRyYXcoKSBpcyBub3QgaW4gdGhlIGNhbGxzdGFjaywgbWVhbmluZyBkcmF3KCkgZ2V0cyBjYWxs
ZWQKLSAgICAgICAgICAgIC8vIHRvIHVwZGF0ZSB0aGUgcmVnaW9uIGFuZCB0aHVzIHN0YXJ0QW5p
bWF0aW9uKCkgaXMgcmVhY2hlZCBhZ2Fpbi4pCi0gICAgICAgICAgICAvLyBOT1RFOiBGb3IgbGFy
Z2UgaW1hZ2VzIHdpdGggc2xvdyBvciBoZWF2aWx5LWxvYWRlZCBzeXN0ZW1zLAotICAgICAgICAg
ICAgLy8gdGhyb3dpbmcgYXdheSBkYXRhIGFzIHdlIGdvIChzZWUgZGVzdHJveURlY29kZWREYXRh
KCkpIG1lYW5zIHdlCi0gICAgICAgICAgICAvLyBjYW4gc3BlbmQgc28gbXVjaCB0aW1lIHJlLWRl
Y29kaW5nIGRhdGEgYWJvdmUgdGhhdCBieSB0aGUgdGltZSB3ZQotICAgICAgICAgICAgLy8gcmVh
Y2ggaGVyZSB3ZSdyZSBiZWhpbmQgYWdhaW4uICBJZiB3ZSBsZXQgc3RhcnRBbmltYXRpb24oKSBy
dW4KLSAgICAgICAgICAgIC8vIHRoZSBjYXRjaC11cCBjb2RlIGFnYWluLCB3ZSBjYW4gZ2V0IGxv
bmcgZGVsYXlzIHdpdGhvdXQgcGFpbnRpbmcKLSAgICAgICAgICAgIC8vIGFzIHdlIHJhY2UgdGhl
IHRpbWVyLCBvciBldmVuIGluZmluaXRlIHJlY3Vyc2lvbi4gIEluIHRoaXMKLSAgICAgICAgICAg
IC8vIHNpdHVhdGlvbiB0aGUgYmVzdCB3ZSBjYW4gZG8gaXMgdG8gc2ltcGx5IGNoYW5nZSBmcmFt
ZXMgYXMgZmFzdAotICAgICAgICAgICAgLy8gYXMgcG9zc2libGUsIHNvIGZvcmNlIHN0YXJ0QW5p
bWF0aW9uKCkgdG8gc2V0IGEgemVyby1kZWxheSB0aW1lcgotICAgICAgICAgICAgLy8gYW5kIGJh
aWwgb3V0IGlmIHdlJ3JlIG5vdCBjYXVnaHQgdXAuCi0gICAgICAgICAgICBzdGFydEFuaW1hdGlv
bihEb05vdENhdGNoVXApOworICAgIEFTU0VSVCghbV9mcmFtZVRpbWVyKTsKKworICAgIC8vIFdl
J3ZlIGFscmVhZHkgcmVhY2hlZCBvciBwYXNzZWQgdGhlIHRpbWUgZm9yIHRoZSBuZXh0IGZyYW1l
IHRvIHN0YXJ0LgorICAgIC8vIFNlZSBpZiB3ZSd2ZSBhbHNvIHBhc3NlZCB0aGUgdGltZSBmb3Ig
ZnJhbWVzIGFmdGVyIHRoYXQgdG8gc3RhcnQsIGluCisgICAgLy8gY2FzZSB3ZSBuZWVkIHRvIHNr
aXAgc29tZSBmcmFtZXMgZW50aXJlbHkuIFJlbWVtYmVyIG5vdCB0byBhZHZhbmNlCisgICAgLy8g
dG8gYW4gaW5jb21wbGV0ZSBmcmFtZS4KKyAgICBmb3IgKHNpemVfdCBmcmFtZUFmdGVyTmV4dCA9
IChuZXh0RnJhbWUgKyAxKSAlIGZyYW1lQ291bnQoKTsgZnJhbWVJc0NvbXBsZXRlQXRJbmRleChm
cmFtZUFmdGVyTmV4dCk7IGZyYW1lQWZ0ZXJOZXh0ID0gKG5leHRGcmFtZSArIDEpICUgZnJhbWVD
b3VudCgpKSB7CisgICAgICAgIC8vIFNob3VsZCB3ZSBza2lwIHRoZSBuZXh0IGZyYW1lPworICAg
ICAgICBkb3VibGUgZnJhbWVBZnRlck5leHRTdGFydFRpbWUgPSBtX2Rlc2lyZWRGcmFtZVN0YXJ0
VGltZSArIGZyYW1lRHVyYXRpb25BdEluZGV4KG5leHRGcmFtZSk7CisgICAgICAgIGlmICh0aW1l
IDwgZnJhbWVBZnRlck5leHRTdGFydFRpbWUpCisgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICAvLyBZZXM7IHNraXAgb3ZlciBpdCB3aXRob3V0IG5vdGlmeWluZyBvdXIgb2JzZXJ2ZXJzLiBJ
ZiB3ZSBoaXQgdGhlIGVuZCB3aGlsZSBjYXRjaGluZyB1cCwKKyAgICAgICAgLy8gdGVsbCB0aGUg
b2JzZXJ2ZXIgYXN5bmNocm9ub3VzbHkuCisgICAgICAgIGlmICghaW50ZXJuYWxBZHZhbmNlQW5p
bWF0aW9uKFNraXBwaW5nRnJhbWVzVG9DYXRjaFVwKSkgeworICAgICAgICAgICAgbV9hbmltYXRp
b25GaW5pc2hlZFdoZW5DYXRjaGluZ1VwID0gdHJ1ZTsKKyAgICAgICAgICAgIHN0YXJ0VGltZXIo
MCk7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKyAgICAgICAgbV9kZXNpcmVkRnJh
bWVTdGFydFRpbWUgPSBmcmFtZUFmdGVyTmV4dFN0YXJ0VGltZTsKKyAgICAgICAgbmV4dEZyYW1l
ID0gZnJhbWVBZnRlck5leHQ7CiAgICAgfQorCisgICAgLy8gRHJhdyB0aGUgbmV4dCBmcmFtZSBh
cyBzb29uIGFzIHBvc3NpYmxlLiBOb3RlIHRoYXQgbV9kZXNpcmVkRnJhbWVTdGFydFRpbWUKKyAg
ICAvLyBtYXkgYmUgaW4gdGhlIHBhc3QsIG1lYW5pbmcgdGhlIG5leHQgdGltZSB0aHJvdWdoIHRo
aXMgZnVuY3Rpb24gd2UnbGwKKyAgICAvLyBraWNrIG9mZiB0aGUgbmV4dCBhZHZhbmNlbWVudCBz
b29uZXIgdGhhbiB0aGlzIGZyYW1lJ3MgZHVyYXRpb24gd291bGQgc3VnZ2VzdC4KKyAgICBzdGFy
dFRpbWVyKDApOwogfQogCiB2b2lkIEJpdG1hcEltYWdlOjpzdG9wQW5pbWF0aW9uKCkKIHsKLSAg
ICAvLyBUaGlzIHRpbWVyIGlzIHVzZWQgdG8gYW5pbWF0ZSBhbGwgb2NjdXJyZW5jZXMgb2YgdGhp
cyBpbWFnZS4gIERvbid0IGludmFsaWRhdGUKKyAgICAvLyBUaGlzIHRpbWVyIGlzIHVzZWQgdG8g
YW5pbWF0ZSBhbGwgb2NjdXJyZW5jZXMgb2YgdGhpcyBpbWFnZS4gRG9uJ3QgaW52YWxpZGF0ZQog
ICAgIC8vIHRoZSB0aW1lciB1bmxlc3MgYWxsIHJlbmRlcmVycyBoYXZlIHN0b3BwZWQgZHJhd2lu
Zy4KICAgICBjbGVhclRpbWVyKCk7CiB9CkBAIC02NTcsNiArNjUxLDEyIEBAIHZvaWQgQml0bWFw
SW1hZ2U6OmFkdmFuY2VBbmltYXRpb24oKQogYm9vbCBCaXRtYXBJbWFnZTo6aW50ZXJuYWxBZHZh
bmNlQW5pbWF0aW9uKEFuaW1hdGlvbkFkdmFuY2VtZW50IGFkdmFuY2VtZW50KQogewogICAgIGNs
ZWFyVGltZXIoKTsKKworICAgIGlmIChtX2FuaW1hdGlvbkZpbmlzaGVkV2hlbkNhdGNoaW5nVXAp
IHsKKyAgICAgICAgaW1hZ2VPYnNlcnZlcigpLT5hbmltYXRpb25BZHZhbmNlZCh0aGlzKTsKKyAg
ICAgICAgbV9hbmltYXRpb25GaW5pc2hlZFdoZW5DYXRjaGluZ1VwID0gZmFsc2U7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CiAgICAgCiAgICAgKyttX2N1cnJlbnRGcmFtZTsKICAgICBi
b29sIGFkdmFuY2VkQW5pbWF0aW9uID0gdHJ1ZTsKQEAgLTY2NCw3ICs2NjQsNyBAQCBib29sIEJp
dG1hcEltYWdlOjppbnRlcm5hbEFkdmFuY2VBbmltYXRpb24oQW5pbWF0aW9uQWR2YW5jZW1lbnQg
YWR2YW5jZW1lbnQpCiAgICAgaWYgKG1fY3VycmVudEZyYW1lID49IGZyYW1lQ291bnQoKSkgewog
ICAgICAgICArK21fcmVwZXRpdGlvbnNDb21wbGV0ZTsKIAotICAgICAgICAvLyBHZXQgdGhlIHJl
cGV0aXRpb24gY291bnQgYWdhaW4uICBJZiB3ZSB3ZXJlbid0IGFibGUgdG8gZ2V0IGEKKyAgICAg
ICAgLy8gR2V0IHRoZSByZXBldGl0aW9uIGNvdW50IGFnYWluLiBJZiB3ZSB3ZXJlbid0IGFibGUg
dG8gZ2V0IGEKICAgICAgICAgLy8gcmVwZXRpdGlvbiBjb3VudCBiZWZvcmUsIHdlIHNob3VsZCBo
YXZlIGRlY29kZWQgdGhlIHdob2xlIGltYWdlIGJ5CiAgICAgICAgIC8vIG5vdywgc28gaXQgc2hv
dWxkIG5vdyBiZSBhdmFpbGFibGUuCiAgICAgICAgIC8vIE5vdGUgdGhhdCB3ZSBkb24ndCBuZWVk
IHRvIHNwZWNpYWwtY2FzZSBjQW5pbWF0aW9uTG9vcE9uY2UgaGVyZQpAQCAtNjgzLDcgKzY4Myw3
IEBAIGJvb2wgQml0bWFwSW1hZ2U6OmludGVybmFsQWR2YW5jZUFuaW1hdGlvbihBbmltYXRpb25B
ZHZhbmNlbWVudCBhZHZhbmNlbWVudCkKIAogICAgIC8vIFdlIG5lZWQgdG8gZHJhdyB0aGlzIGZy
YW1lIGlmIHdlIGFkdmFuY2VkIHRvIGl0IHdoaWxlIG5vdCBza2lwcGluZywgb3IgaWYKICAgICAv
LyB3aGlsZSB0cnlpbmcgdG8gc2tpcCBmcmFtZXMgd2UgaGl0IHRoZSBsYXN0IGZyYW1lIGFuZCB0
aHVzIGhhZCB0byBzdG9wLgotICAgIGlmICgoYWR2YW5jZW1lbnQgPT0gTm9ybWFsICYmIGFkdmFu
Y2VkQW5pbWF0aW9uKSB8fCAoYWR2YW5jZW1lbnQgPT0gU2tpcHBpbmdGcmFtZXNUb0NhdGNoVXAg
JiYgIWFkdmFuY2VkQW5pbWF0aW9uKSkKKyAgICBpZiAoYWR2YW5jZW1lbnQgPT0gTm9ybWFsICYm
IGFkdmFuY2VkQW5pbWF0aW9uKQogICAgICAgICBpbWFnZU9ic2VydmVyKCktPmFuaW1hdGlvbkFk
dmFuY2VkKHRoaXMpOwogCiAgICAgcmV0dXJuIGFkdmFuY2VkQW5pbWF0aW9uOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKaW5kZXggMjc2YTZhZTdh
ZGIzZTg4NzUzYzhmMDNkOTljOWNmMzI2YWExNTc5My4uYjNiMmQ1MWYxMTMxZDRiOGNlNjBjNjI3
Y2RiMTYyMmFmYmRjYWM3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQml0bWFwSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9CaXRtYXBJbWFnZS5oCkBAIC0xMzYsOCArMTM2LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwg
Ym9vbCBkYXRhQ2hhbmdlZChib29sIGFsbERhdGFSZWNlaXZlZCkgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdCBvdmVycmlkZTsKIAotICAgIC8v
IEl0IG1heSBsb29rIHVudXN1YWwgdGhhdCB0aGVyZSBpcyBubyBzdGFydCBhbmltYXRpb24gY2Fs
bCBhcyBwdWJsaWMgQVBJLiAgVGhpcyBpcyBiZWNhdXNlCi0gICAgLy8gd2Ugc3RhcnQgYW5kIHN0
b3AgYW5pbWF0aW5nIGxhemlseS4gIEFuaW1hdGlvbiBiZWdpbnMgd2hlbmV2ZXIgc29tZW9uZSBk
cmF3cyB0aGUgaW1hZ2UuICBJdCB3aWxsCisgICAgLy8gSXQgbWF5IGxvb2sgdW51c3VhbCB0aGF0
IHRoZXJlIGlzIG5vIHN0YXJ0IGFuaW1hdGlvbiBjYWxsIGFzIHB1YmxpYyBBUEkuIFRoaXMgaXMg
YmVjYXVzZQorICAgIC8vIHdlIHN0YXJ0IGFuZCBzdG9wIGFuaW1hdGluZyBsYXppbHkuIEFuaW1h
dGlvbiBiZWdpbnMgd2hlbmV2ZXIgc29tZW9uZSBkcmF3cyB0aGUgaW1hZ2UuIEl0IHdpbGwKICAg
ICAvLyBhdXRvbWF0aWNhbGx5IHBhdXNlIG9uY2UgYWxsIG9ic2VydmVycyBubyBsb25nZXIgd2Fu
dCB0byByZW5kZXIgdGhlIGltYWdlIGFueXdoZXJlLgogICAgIHZpcnR1YWwgdm9pZCBzdG9wQW5p
bWF0aW9uKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHJlc2V0QW5pbWF0aW9uKCkgb3Zl
cnJpZGU7CkBAIC0yMjgsMTAgKzIyOCwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gQ2FsbGVkIGJl
Zm9yZSBhY2Nlc3NpbmcgbV9mcmFtZXNbaW5kZXhdIGZvciBpbmZvIHdpdGhvdXQgZGVjb2Rpbmcu
IFJldHVybnMgZmFsc2Ugb24gaW5kZXggb3V0IG9mIGJvdW5kcy4KICAgICBib29sIGVuc3VyZUZy
YW1lSXNDYWNoZWQoc2l6ZV90IGluZGV4LCBJbWFnZUZyYW1lQ2FjaGluZyA9IENhY2hlTWV0YWRh
dGFBbmRGcmFtZSk7CiAKLSAgICAvLyBDYWxsZWQgdG8gaW52YWxpZGF0ZSBjYWNoZWQgZGF0YS4g
IFdoZW4gfGRlc3Ryb3lBbGx8IGlzIHRydWUsIHdlIHdpcGUgb3V0CisgICAgLy8gQ2FsbGVkIHRv
IGludmFsaWRhdGUgY2FjaGVkIGRhdGEuIFdoZW4gfGRlc3Ryb3lBbGx8IGlzIHRydWUsIHdlIHdp
cGUgb3V0CiAgICAgLy8gdGhlIGVudGlyZSBmcmFtZSBidWZmZXIgY2FjaGUgYW5kIHRlbGwgdGhl
IGltYWdlIHNvdXJjZSB0byBkZXN0cm95CiAgICAgLy8gZXZlcnl0aGluZzsgdGhpcyBpcyB1c2Vk
IHdoZW4gZS5nLiB3ZSB3YW50IHRvIGZyZWUgc29tZSByb29tIGluIHRoZSBpbWFnZQotICAgIC8v
IGNhY2hlLiAgSWYgfGRlc3Ryb3lBbGx8IGlzIGZhbHNlLCB3ZSBvbmx5IGRlbGV0ZSBmcmFtZXMg
dXAgdG8gdGhlIGN1cnJlbnQKKyAgICAvLyBjYWNoZS4gSWYgfGRlc3Ryb3lBbGx8IGlzIGZhbHNl
LCB3ZSBvbmx5IGRlbGV0ZSBmcmFtZXMgdXAgdG8gdGhlIGN1cnJlbnQKICAgICAvLyBvbmU7IHRo
aXMgaXMgdXNlZCB3aGlsZSBhbmltYXRpbmcgbGFyZ2UgaW1hZ2VzIHRvIGtlZXAgbWVtb3J5IGZv
b3RwcmludAogICAgIC8vIGxvdyB3aXRob3V0IHJlZGVjb2RpbmcgdGhlIHdob2xlIGltYWdlIG9u
IGV2ZXJ5IGZyYW1lLgogICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoYm9vbCBk
ZXN0cm95QWxsID0gdHJ1ZSkgb3ZlcnJpZGU7CkBAIC0yNDksNyArMjQ5LDcgQEAgcHJvdGVjdGVk
OgogICAgIGJvb2wgaXNTaXplQXZhaWxhYmxlKCk7CiAKICAgICAvLyBDYWxsZWQgYWZ0ZXIgYXNr
aW5nIHRoZSBzb3VyY2UgZm9yIGFueSBpbmZvcm1hdGlvbiB0aGF0IG1heSByZXF1aXJlCi0gICAg
Ly8gZGVjb2RpbmcgcGFydCBvZiB0aGUgaW1hZ2UgKGUuZy4sIHRoZSBpbWFnZSBzaXplKS4gIFdl
IG5lZWQgdG8gcmVwb3J0CisgICAgLy8gZGVjb2RpbmcgcGFydCBvZiB0aGUgaW1hZ2UgKGUuZy4s
IHRoZSBpbWFnZSBzaXplKS4gV2UgbmVlZCB0byByZXBvcnQKICAgICAvLyB0aGUgcGFydGlhbGx5
IGRlY29kZWQgZGF0YSB0byBvdXIgb2JzZXJ2ZXIgc28gaXQgaGFzIGFuIGFjY3VyYXRlCiAgICAg
Ly8gYWNjb3VudCBvZiB0aGUgQml0bWFwSW1hZ2UncyBtZW1vcnkgdXNhZ2UuCiAgICAgdm9pZCBk
aWREZWNvZGVQcm9wZXJ0aWVzKCkgY29uc3Q7CkBAIC0yNjAsNyArMjYwLDcgQEAgcHJvdGVjdGVk
OgogICAgIHZpcnR1YWwgdm9pZCBzdGFydEFuaW1hdGlvbihDYXRjaFVwQW5pbWF0aW9uID0gQ2F0
Y2hVcCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBhZHZhbmNlQW5pbWF0aW9uKCk7CiAKLSAgICAvLyBG
dW5jdGlvbiB0aGF0IGRvZXMgdGhlIHJlYWwgd29yayBvZiBhZHZhbmNpbmcgdGhlIGFuaW1hdGlv
bi4gIFdoZW4KKyAgICAvLyBGdW5jdGlvbiB0aGF0IGRvZXMgdGhlIHJlYWwgd29yayBvZiBhZHZh
bmNpbmcgdGhlIGFuaW1hdGlvbi4gV2hlbgogICAgIC8vIHNraXBwaW5nRnJhbWVzIGlzIHRydWUs
IHdlJ3JlIGluIHRoZSBtaWRkbGUgb2YgYSBsb29wIHRyeWluZyB0byBza2lwIG92ZXIKICAgICAv
LyBhIGJ1bmNoIG9mIGFuaW1hdGlvbiBmcmFtZXMsIHNvIHdlIHNob3VsZCBub3QgZG8gdGhpbmdz
IGxpa2UgZGVjb2RlIGVhY2gKICAgICAvLyBvbmUgb3Igbm90aWZ5IG91ciBvYnNlcnZlcnMuCkBA
IC0yNzEsNyArMjcxLDcgQEAgcHJvdGVjdGVkOgogICAgIC8vIEhhbmRsZSBwbGF0Zm9ybS1zcGVj
aWZpYyBkYXRhCiAgICAgdm9pZCBpbnZhbGlkYXRlUGxhdGZvcm1EYXRhKCk7CiAKLSAgICAvLyBD
aGVja3MgdG8gc2VlIGlmIHRoZSBpbWFnZSBpcyBhIDF4MSBzb2xpZCBjb2xvci4gIFdlIG9wdGlt
aXplIHRoZXNlIGltYWdlcyBhbmQganVzdCBkbyBhIGZpbGwgcmVjdCBpbnN0ZWFkLgorICAgIC8v
IENoZWNrcyB0byBzZWUgaWYgdGhlIGltYWdlIGlzIGEgMXgxIHNvbGlkIGNvbG9yLiBXZSBvcHRp
bWl6ZSB0aGVzZSBpbWFnZXMgYW5kIGp1c3QgZG8gYSBmaWxsIHJlY3QgaW5zdGVhZC4KICAgICAv
LyBUaGlzIGNoZWNrIHNob3VsZCBoYXBwZW4gcmVnYXJkbGVzcyB3aGV0aGVyIG1fY2hlY2tlZEZv
clNvbGlkQ29sb3IgaXMgYWxyZWFkeSBzZXQsIGFzIHRoZSBmcmFtZSBtYXkgaGF2ZQogICAgIC8v
IGNoYW5nZWQuCiAgICAgdm9pZCBjaGVja0ZvclNvbGlkQ29sb3IoKTsKQEAgLTI4Niw2ICsyODYs
NyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBkZWNvZGVkRGF0YUlz
UHVyZ2VhYmxlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbGVhclRpbWVyKCk7CisgICAg
dm9pZCBzdGFydFRpbWVyKGRvdWJsZSBkZWxheSk7CiAKICAgICBJbWFnZVNvdXJjZSBtX3NvdXJj
ZTsKICAgICBtdXRhYmxlIEludFNpemUgbV9zaXplOyAvLyBUaGUgc2l6ZSB0byB1c2UgZm9yIHRo
ZSBvdmVyYWxsIGltYWdlICh3aWxsIGp1c3QgYmUgdGhlIHNpemUgb2YgdGhlIGZpcnN0IGltYWdl
KS4KQEAgLTMwMCw3ICszMDEsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxGcmFtZURhdGEsIDE+
IG1fZnJhbWVzOyAvLyBBbiBhcnJheSBvZiB0aGUgY2FjaGVkIGZyYW1lcyBvZiB0aGUgYW5pbWF0
aW9uLiBXZSBoYXZlIHRvIHJlZiBmcmFtZXMgdG8gcGluIHRoZW0gaW4gdGhlIGNhY2hlLgogCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFRpbWVyPiBtX2ZyYW1lVGltZXI7Ci0gICAgaW50IG1fcmVwZXRp
dGlvbkNvdW50OyAvLyBIb3cgbWFueSB0b3RhbCBhbmltYXRpb24gbG9vcHMgd2Ugc2hvdWxkIGRv
LiAgVGhpcyB3aWxsIGJlIGNBbmltYXRpb25Ob25lIGlmIHRoaXMgaW1hZ2UgdHlwZSBpcyBpbmNh
cGFibGUgb2YgYW5pbWF0aW9uLgorICAgIGludCBtX3JlcGV0aXRpb25Db3VudDsgLy8gSG93IG1h
bnkgdG90YWwgYW5pbWF0aW9uIGxvb3BzIHdlIHNob3VsZCBkby4gVGhpcyB3aWxsIGJlIGNBbmlt
YXRpb25Ob25lIGlmIHRoaXMgaW1hZ2UgdHlwZSBpcyBpbmNhcGFibGUgb2YgYW5pbWF0aW9uLgog
ICAgIFJlcGV0aXRpb25Db3VudFN0YXR1cyBtX3JlcGV0aXRpb25Db3VudFN0YXR1czsKICAgICBp
bnQgbV9yZXBldGl0aW9uc0NvbXBsZXRlOyAgLy8gSG93IG1hbnkgcmVwZXRpdGlvbnMgd2UndmUg
ZmluaXNoZWQuCiAgICAgZG91YmxlIG1fZGVzaXJlZEZyYW1lU3RhcnRUaW1lOyAgLy8gVGhlIHN5
c3RlbSB0aW1lIGF0IHdoaWNoIHdlIGhvcGUgdG8gc2VlIHRoZSBuZXh0IGNhbGwgdG8gc3RhcnRB
bmltYXRpb24oKS4KQEAgLTMwOSw3ICszMTAsNyBAQCBwcml2YXRlOgogICAgIG11dGFibGUgUmV0
YWluUHRyPE5TSW1hZ2U+IG1fbnNJbWFnZTsgLy8gQSBjYWNoZWQgTlNJbWFnZSBvZiBmcmFtZSAw
LiBPbmx5IGJ1aWx0IGxhemlseSBpZiBzb21lb25lIGFjdHVhbGx5IHF1ZXJpZXMgZm9yIG9uZS4K
ICNlbmRpZgogI2lmIFVTRShDRykKLSAgICBtdXRhYmxlIFJldGFpblB0cjxDRkRhdGFSZWY+IG1f
dGlmZlJlcDsgLy8gQ2FjaGVkIFRJRkYgcmVwIGZvciBmcmFtZSAwLiAgT25seSBidWlsdCBsYXpp
bHkgaWYgc29tZW9uZSBxdWVyaWVzIGZvciBvbmUuCisgICAgbXV0YWJsZSBSZXRhaW5QdHI8Q0ZE
YXRhUmVmPiBtX3RpZmZSZXA7IC8vIENhY2hlZCBUSUZGIHJlcCBmb3IgZnJhbWUgMC4gT25seSBi
dWlsdCBsYXppbHkgaWYgc29tZW9uZSBxdWVyaWVzIGZvciBvbmUuCiAjZW5kaWYKIAogICAgIENv
bG9yIG1fc29saWRDb2xvcjsgIC8vIElmIHdlJ3JlIGEgMXgxIHNvbGlkIGNvbG9yLCB0aGlzIGlz
IHRoZSBjb2xvciB0byB1c2UgdG8gZmlsbC4KQEAgLTMzNSw2ICszMzYsNyBAQCBwcml2YXRlOgog
ICAgIGJvb2wgbV9zaXplQXZhaWxhYmxlIDogMTsgLy8gV2hldGhlciBvciBub3Qgd2UgY2FuIG9i
dGFpbiB0aGUgc2l6ZSBvZiB0aGUgZmlyc3QgaW1hZ2UgZnJhbWUgeWV0IGZyb20gSW1hZ2VJTy4K
ICAgICBtdXRhYmxlIGJvb2wgbV9oYXNVbmlmb3JtRnJhbWVTaXplIDogMTsKICAgICBtdXRhYmxl
IGJvb2wgbV9oYXZlRnJhbWVDb3VudCA6IDE7CisgICAgYm9vbCBtX2FuaW1hdGlvbkZpbmlzaGVk
V2hlbkNhdGNoaW5nVXAgOiAxOwogCiAgICAgUmVmUHRyPEltYWdlPiBtX2NhY2hlZEltYWdlOwog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCmluZGV4IGZl
ZDViNjM1YzExMjhmOTY3Mzk1Y2NmYjM5ZGQ3MGQ2YzBjY2ZkOGEuLjViOTBmN2E1YjVmMzM2NmI3
MDIwM2ZhYzM5MjlhYTBmNWY2OTA5NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclJlcGxhY2VkLmNwcApAQCAtMTM5LDcgKzEzOSwxMCBAQCB2b2lkIFJlbmRlclJlcGxhY2Vk
OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zm
c2V0KQogewogICAgIGlmICghc2hvdWxkUGFpbnQocGFpbnRJbmZvLCBwYWludE9mZnNldCkpCiAg
ICAgICAgIHJldHVybjsKLSAgICAKKworI2lmbmRlZiBOREVCVUcKKyAgICBTZXRMYXlvdXROZWVk
ZWRGb3JiaWRkZW5TY29wZSBzY29wZSh0aGlzKTsKKyNlbmRpZgogICAgIExheW91dFBvaW50IGFk
anVzdGVkUGFpbnRPZmZzZXQgPSBwYWludE9mZnNldCArIGxvY2F0aW9uKCk7CiAgICAgCiAgICAg
aWYgKGhhc0JveERlY29yYXRpb25zKCkgJiYgcGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VG
b3JlZ3JvdW5kKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IGVhM2M4M2UyZTNjM2RlYTdhMmRkM2I5NmRlMmQ0MmVkZTE2NmM1
MTkuLjNiZmYxYzNkMWFmODUxMzQwODI0NWY2NmMxZmFiN2NkYWI4MTY5NDAgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAxNS0wNS0wMiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxl
LmNvbT4KKworICAgICAgICBBc3NlcnRpb24gZmFpbHVyZSAoIW5lZWRzTGF5b3V0KCkpIGxvYWRp
bmcgaW5rZWRtYWcuY29tCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNDQ1MjgKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vMjA3ODg2ODEKKworICAgICAg
ICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKyAgICAgICAgCisgICAgICAgIFRlc3QgdGhhdCBz
bGVlcHMgZm9yIGEgd2hpbGUgdG8gZm9yY2UgYW4gaW1hZ2UgaW50byBjYXRjaHVwIG1vZGUuCisK
KyAgICAgICAgKiBmYXN0L2ltYWdlcy9yZXNvdXJjZXMvc3Bpbm5lci5naWY6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvaW1hZ2VzL3NldC1uZWVkcy1sYXlvdXQtaW4tcGFpbnRpbmctZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ltYWdlcy9zZXQtbmVlZHMtbGF5b3V0LWluLXBh
aW50aW5nLmh0bWw6IEFkZGVkLgorCiAyMDE1LTA1LTAxICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5m
cmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEF2b2lkIGNvbXBvc2l0aW5nIHVwZGF0ZXMgYWZ0
ZXIgc3R5bGUgcmVjYWxjcyB3aGljaCBoYXZlIG5vIGNvbXBvc2l0aW5nIGltcGxpY2F0aW9ucwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvc2V0LW5lZWRzLWxheW91dC1pbi1w
YWludGluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9zZXQtbmVlZHMt
bGF5b3V0LWluLXBhaW50aW5nLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZWJmMWJkYmM4Nzg0
ZjVhODAxM2M2N2I4YzJmZWVhMTYyYTk2OTA2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9pbWFnZXMvc2V0LW5lZWRzLWxheW91dC1pbi1wYWludGluZy1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwzIEBACitUaGlzIHRlc3Qgc2hvdWxkIG5vdCBhc3NlcnQgaW4gZGVidWcgYnVp
bGRzLgorCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3NldC1uZWVkcy1s
YXlvdXQtaW4tcGFpbnRpbmcuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3NldC1uZWVk
cy1sYXlvdXQtaW4tcGFpbnRpbmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kOTVhZjQ5MjliODMwOTlkNWI0
MTcwNTk2ZjZlMTNiNzRkYjJiZWMyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9pbWFnZXMvc2V0LW5lZWRzLWxheW91dC1pbi1wYWludGluZy5odG1sCkBAIC0wLDAgKzEsNTMg
QEAKKzwhRE9DVFlQRSBodG1sPgorCis8aHRtbD4KKzxoZWFkPgorICAgIDxzdHlsZT4KKyAgICAg
ICAgLmJveCB7CisgICAgICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgICAgICAgd2lkdGg6
IDEwMHB4OworICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsKKyAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgaW1nIHsKKyAgICAgICAgICAgIGhlaWdodDogOTAlOworICAgICAg
ICAgICAgd2lkdGg6IDkwJTsKKyAgICAgICAgfQorICAgIDwvc3R5bGU+CisgICAgPHNjcmlwdD4K
KyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2xlZXAobXMpIHsKKyAgICAgICAgICAgIHZh
ciBlbmRUaW1lID0gKG5ldyBEYXRlKCkuZ2V0VGltZSgpKSArIG1zOworICAgICAgICAgICAgd2hp
bGUgKChuZXcgRGF0ZSgpLmdldFRpbWUoKSkgPCBlbmRUaW1lKSB7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGNvbnN0IG1heEl0ZXJhdGlvbnMgPSAyMDsKKyAg
ICAgICAgdmFyIGl0ZXJhdGlvbiA9IDA7CisgICAgICAgIGZ1bmN0aW9uIHN0YXJ0VGVzdCgpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpbnRlcnZhbCA9IHdpbmRvdy5zZXRJbnRlcnZhbChm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAvLyBTbGVlcCB0byBnZXQgdGhlIEdJRiBpbnRv
IGNhdGNodXAgbW9kZS4KKyAgICAgICAgICAgICAgICBzbGVlcCg1MCk7CisgICAgICAgICAgICAg
ICAgaWYgKCsraXRlcmF0aW9uID09IG1heEl0ZXJhdGlvbnMpIHsKKyAgICAgICAgICAgICAgICAg
ICAgd2luZG93LmNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwpOworICAgICAgICAgICAgICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVy
Lm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LCAyMCk7Cisg
ICAgICAgIH0KKworICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIHN0YXJ0
VGVzdCk7CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8cD5UaGlzIHRlc3Qg
c2hvdWxkIG5vdCBhc3NlcnQgaW4gZGVidWcgYnVpbGRzLjwvcD4KKyAgICA8ZGl2IGNsYXNzPSJi
b3giPgorICAgICAgICA8aW1nIHNyYz0icmVzb3VyY2VzL3NwaW5uZXIuZ2lmIiB3aWR0aD0iMTAw
IiBoZWlnaHQ9IjEwMCI+CisgICAgPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="277084"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>