<?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>207364</bug_id>
          
          <creation_ts>2020-02-06 15:41:51 -0800</creation_ts>
          <short_desc>[Web Animations] Ensure CSS Transition and CSS Animation events are queued, sorted and dispatched by their timeline</short_desc>
          <delta_ts>2020-02-14 22:29:12 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Animations</component>
          <version>Safari Technology Preview</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=207361</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=207629</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>207629</dependson>
          <blocked>207760</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Antoine Quint">graouts</assigned_to>
          <cc>ap</cc>
    
    <cc>cdumez</cc>
    
    <cc>dbates</cc>
    
    <cc>dino</cc>
    
    <cc>dstockwell</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>graouts</cc>
    
    <cc>graouts</cc>
    
    <cc>kangil.han</cc>
    
    <cc>rniwa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1615896</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-02-06 15:41:51 -0800</bug_when>
    <thetext>transitionstart/transitionend events are dispatched via enqueueDOMEvent() which adds them to the DeclarativeAnimation&apos;s m_eventQueue, which is a MainThreadGenericEventQueue which dispatches the events via a zero-delay timer.

Conversely, DocumentTimeline::internalUpdateAnimationsAndSendEvents() explicitly dispatches the Web Animations related events (like &quot;finish&quot;) immediately, as would be expected from https://drafts.csswg.org/web-animations/#update-animations-and-send-events

Is this difference deliberate?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1615910</commentid>
    <comment_count>1</comment_count>
      <attachid>390020</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-02-06 16:09:58 -0800</bug_when>
    <thetext>Created attachment 390020
Testcase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1615911</commentid>
    <comment_count>2</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-02-06 16:10:09 -0800</bug_when>
    <thetext>This is web-detectable (see test case).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1615921</commentid>
    <comment_count>3</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-02-06 16:23:36 -0800</bug_when>
    <thetext>Issue about this: https://github.com/w3c/csswg-drafts/issues/4553</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1616032</commentid>
    <comment_count>4</comment_count>
      <attachid>390051</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-02-06 20:11:24 -0800</bug_when>
    <thetext>Created attachment 390051
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1616137</commentid>
    <comment_count>5</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-02-07 07:16:39 -0800</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #0)
&gt; transitionstart/transitionend events are dispatched via enqueueDOMEvent()
&gt; which adds them to the DeclarativeAnimation&apos;s m_eventQueue, which is a
&gt; MainThreadGenericEventQueue which dispatches the events via a zero-delay
&gt; timer.
&gt; 
&gt; Conversely, DocumentTimeline::internalUpdateAnimationsAndSendEvents()
&gt; explicitly dispatches the Web Animations related events (like &quot;finish&quot;)
&gt; immediately, as would be expected from
&gt; https://drafts.csswg.org/web-animations/#update-animations-and-send-events
&gt; 
&gt; Is this difference deliberate?

No, it&apos;s a bug. We should dispatch all events in DocumentTimeline::internalUpdateAnimationsAndSendEvents(). It&apos;s been on my to-do list but didn&apos;t seem like a pressing issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1617952</commentid>
    <comment_count>6</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-02-12 06:52:58 -0800</bug_when>
    <thetext>&lt;rdar://problem/59370413&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1617970</commentid>
    <comment_count>7</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-02-12 07:25:18 -0800</bug_when>
    <thetext>Bug 207629 has a patch up for some required refactoring for all animation event types to share a single interface. This will allow them all to be queued, sorted and dispatched by DocumentTimeline.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1617971</commentid>
    <comment_count>8</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-02-12 07:26:47 -0800</bug_when>
    <thetext>Renaming this Radar to make it clear what work it entails.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618928</commentid>
    <comment_count>9</comment_count>
      <attachid>390752</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-02-14 03:34:43 -0800</bug_when>
    <thetext>Created attachment 390752
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618959</commentid>
    <comment_count>10</comment_count>
      <attachid>390760</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-02-14 07:00:41 -0800</bug_when>
    <thetext>Created attachment 390760
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618961</commentid>
    <comment_count>11</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-02-14 07:07:19 -0800</bug_when>
    <thetext>Note that the patch for review is _not_ expected to build since it depends on the one for https://bugs.webkit.org/show_bug.cgi?id=207629. We can retry it once it lands, but the &quot;WIP Patch&quot; contained the dependency as well and showed positive bot results.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1619019</commentid>
    <comment_count>12</comment_count>
      <attachid>390760</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-02-14 08:39:04 -0800</bug_when>
    <thetext>Comment on attachment 390760
Patch

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

&gt; Source/WebCore/animation/DocumentTimeline.cpp:394
&gt; +    // enqueueAnimationEvent() calls scheduleAnimationResolution() to ensure that the &quot;update animations and send events&quot;
&gt; +    // procedure is run and enqueued events are dispatched in the next frame. However, events that are enqueued while
&gt; +    // this procedure is running should not schedule animation resolution until the event queue has been cleared.
&gt; +    m_shouldScheduleAnimationResolutionForNewPendingEvents = false;

This is a bit confusing because I&apos;d expect scheduleAnimationResolution() to queue up something that is going to happen later, which makes me wonder why calling it in this block is bad. What&apos;s the timing difference between calling scheduleAnimationResolution() here, and calling it later via scheduleNextTick()?

&gt; Source/WebCore/animation/DocumentTimeline.cpp:728
&gt; +    String eventType = event.type().string();

eventType is unused

&gt; Source/WebCore/animation/WebAnimation.cpp:1206
&gt; +    return pending() || playState() == PlayState::Running || m_hasScheduledEventsDuringTick;

Why does the WebAnimation have to stick around until the event is dispatched? Does the event need to reference back to the WebAnimation? Or do we need to be able to unschedule the event sometimes?

&gt; LayoutTests/imported/w3c/ChangeLog:16
&gt; +        However, in order to not regress our WPT score, the issue of &quot;style change&quot; events will be addressed in a follow-up patch.

We should file GitHub issues on tests we think aren&apos;t cross-browser compatible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1619051</commentid>
    <comment_count>13</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-02-14 09:48:51 -0800</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #12)
&gt; Comment on attachment 390760 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=390760&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/animation/DocumentTimeline.cpp:394
&gt; &gt; +    // enqueueAnimationEvent() calls scheduleAnimationResolution() to ensure that the &quot;update animations and send events&quot;
&gt; &gt; +    // procedure is run and enqueued events are dispatched in the next frame. However, events that are enqueued while
&gt; &gt; +    // this procedure is running should not schedule animation resolution until the event queue has been cleared.
&gt; &gt; +    m_shouldScheduleAnimationResolutionForNewPendingEvents = false;
&gt; 
&gt; This is a bit confusing because I&apos;d expect scheduleAnimationResolution() to
&gt; queue up something that is going to happen later, which makes me wonder why
&gt; calling it in this block is bad. What&apos;s the timing difference between
&gt; calling scheduleAnimationResolution() here, and calling it later via
&gt; scheduleNextTick()?

Here&apos;s what happens:

    - enqueueAnimationEvent() schedules an animation right away when an event is added (except when the flag is set. This is because events are dispatched during the &quot;update animations and send events&quot; procedure.

    - but events can be enqueued while the &quot;update animations and send events&quot; procedure is running, for instance when WebAnimation::tick() is called.

    - if that happens prior to when events are dispatched, we don&apos;t want to for animation resolution to be scheduled because that means we&apos;ll have a rendering update that is not necessary.

If more events are added _after_ events have been dispatched, or rather after the event queue has been cleared prior to dispatch, then animation resolution will be scheduled for the next frame.

&gt; &gt; Source/WebCore/animation/DocumentTimeline.cpp:728
&gt; &gt; +    String eventType = event.type().string();
&gt; 
&gt; eventType is unused

Nice catch. Leftovers from some earlier debugging code. Wonder why the compiler didn&apos;t catch that!

&gt; &gt; Source/WebCore/animation/WebAnimation.cpp:1206
&gt; &gt; +    return pending() || playState() == PlayState::Running || m_hasScheduledEventsDuringTick;
&gt; 
&gt; Why does the WebAnimation have to stick around until the event is
&gt; dispatched? Does the event need to reference back to the WebAnimation? Or do
&gt; we need to be able to unschedule the event sometimes?

The events don&apos;t need to be unscheduled. I think once they&apos;re queued, they&apos;re expected to be dispatched. I&apos;m not certain that they actually need to stick around for event dispatch, it might actually be because we want them to be around for one more frame after the animation has reverted back to its idle state or gone info its finished state (for fill-forwards animations) once they&apos;re no longer active. This would happen automatically before this change because the events were queued and dispatched asynchronously, and the Animation needed to remain alive for that. We might want to change the terminology sometimes going forwards, but I&apos;d rather keep it that way for now to avoid regressions.

&gt; &gt; LayoutTests/imported/w3c/ChangeLog:16
&gt; &gt; +        However, in order to not regress our WPT score, the issue of &quot;style change&quot; events will be addressed in a follow-up patch.
&gt; 
&gt; We should file GitHub issues on tests we think aren&apos;t cross-browser
&gt; compatible.

Yes, I&apos;ll make a PR to change the tests in question so that they would have caught that issue before this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1619054</commentid>
    <comment_count>14</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-02-14 09:52:18 -0800</bug_when>
    <thetext>Committed r256619: &lt;https://trac.webkit.org/changeset/256619&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1619362</commentid>
    <comment_count>15</comment_count>
      <attachid>390760</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2020-02-14 22:29:12 -0800</bug_when>
    <thetext>Comment on attachment 390760
Patch

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

&gt; LayoutTests/ChangeLog:11
&gt; +        * TestExpectations: imported/w3c/web-platform-tests/web-animations/timing-model/timelines/update-and-send-events.html is no longer flaky.

It is still flaky or failing on most queues, see bug 207790.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>390020</attachid>
            <date>2020-02-06 16:09:58 -0800</date>
            <delta_ts>2020-02-06 16:09:58 -0800</delta_ts>
            <desc>Testcase</desc>
            <filename>flip-transition-events.html</filename>
            <type>text/html</type>
            <size>2033</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+Cgo8aHRtbD4KPGhlYWQ+CiAgICA8c3R5bGU+CiAgICAgICAgLmJveCB7
CiAgICAgICAgICAgIGhlaWdodDogMTAwcHg7CiAgICAgICAgICAgIHdpZHRoOiAxMDBweDsKICAg
ICAgICAgICAgbWFyZ2luOiAyMHB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVl
bjsKICAgICAgICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuNXM7CiAgICAgICAgICAgIHRy
YW5zZm9ybTogcm90YXRlM2QoMCwgMCwgMSwgMGRlZykKICAgICAgICB9CiAgICAgICAgCiAgICAg
ICAgLmJveDpob3ZlciB7CiAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlM2QoMCwgMCwgMSwg
LTE4MGRlZyk7CiAgICAgICAgfQogICAgPC9zdHlsZT4KICAgIDxzY3JpcHQ+CiAgICAgICAgCiAg
ICAgICAgZnVuY3Rpb24gbG9nU3RyaW5nKHMpCiAgICAgICAgewogICAgICAgICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnbG9nZ2luZycpLnRleHRDb250ZW50ICs9IHMgKyAnXG4nOwogICAg
ICAgIH0KICAgICAgICAKICAgICAgICBsZXQga2VlcFJhZmZpbmcgPSBmYWxzZTsKICAgICAgICBm
dW5jdGlvbiBzdGFydFJBRigpCiAgICAgICAgewogICAgICAgICAgICBrZWVwUmFmZmluZyA9IHRy
dWU7CiAgICAgICAgICAgIHJhZmZ5KCk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGZ1bmN0
aW9uIHN0b3BSQUYoKQogICAgICAgIHsKICAgICAgICAgICAga2VlcFJhZmZpbmcgPSBmYWxzZTsK
ICAgICAgICB9CiAgICAgICAgCiAgICAgICAgZnVuY3Rpb24gcmFmZnkoKQogICAgICAgIHsKICAg
ICAgICAgICAgbG9nU3RyaW5nKCdyYWYnKTsKICAgICAgICAgICAgaWYgKGtlZXBSYWZmaW5nKQog
ICAgICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHJhZmZ5KTsKICAgICAgICB9Cgog
ICAgICAgIGZ1bmN0aW9uIGRvU2V0dXAoKQogICAgICAgIHsKICAgICAgICAgICAgbGV0IGJveCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0YXJnZXQnKTsKICAgICAgICAgICAgYm94LmFkZEV2
ZW50TGlzdGVuZXIoJ3RyYW5zaXRpb25zdGFydCcsIChldmVudCkgPT4gewogICAgICAgICAgICAg
ICAgbG9nU3RyaW5nKGV2ZW50LnR5cGUpOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
ICBsZXQgYW5pbWF0aW9ucyA9IGJveC5nZXRBbmltYXRpb25zKCk7CiAgICAgICAgICAgICAgICBs
b2dTdHJpbmcoJ2dldEFuaW1hdGlvbnMgcmV0dXJuZWQgJyArIGFuaW1hdGlvbnMpOwogICAgICAg
ICAgICAgICAgYW5pbWF0aW9uc1swXS5hZGRFdmVudExpc3RlbmVyKCdmaW5pc2gnLCAoZXZlbnQp
ID0+IHsKICAgICAgICAgICAgICAgICAgICBsb2dTdHJpbmcoZXZlbnQudHlwZSk7CiAgICAgICAg
ICAgICAgICB9KQogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBzdGFydFJBRigpOwog
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgIH0sIGZhbHNlKTsKICAgICAgICAgICAgYm94LmFk
ZEV2ZW50TGlzdGVuZXIoJ3RyYW5zaXRpb25lbmQnLCAoZXZlbnQpID0+IHsKICAgICAgICAgICAg
ICAgIGxvZ1N0cmluZyhldmVudC50eXBlKTsKICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoc3Rv
cFJBRiwgMzIpOwogICAgICAgICAgICB9LCBmYWxzZSk7CiAgICAgICAgICAgIGJveC5hZGRFdmVu
dExpc3RlbmVyKCd0cmFuc2l0aW9uY2FuY2VsJywgKGV2ZW50KSA9PiB7CiAgICAgICAgICAgICAg
ICBsb2dTdHJpbmcoZXZlbnQudHlwZSk7CiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KHN0b3BS
QUYsIDMyKTsKICAgICAgICAgICAgfSwgZmFsc2UpOwogICAgICAgIH0KICAgICAgICAKICAgICAg
ICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGRvU2V0dXAsIGZhbHNlKTsKICAgIDwv
c2NyaXB0Pgo8L2hlYWQ+Cjxib2R5PgogICAgPHA+SG92ZXIgdGhlIGJveDwvcD4KICAgIDxkaXYg
aWQ9InRhcmdldCIgY2xhc3M9ImJveCI+CiAgICAgICAgYm94CiAgICA8L2Rpdj4KICAgIAo8cHJl
IGlkPSJsb2dnaW5nIj48L3ByZT4KCjwvYm9keT4KPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390051</attachid>
            <date>2020-02-06 20:11:24 -0800</date>
            <delta_ts>2020-02-14 03:34:43 -0800</delta_ts>
            <desc>WIP patch</desc>
            <filename>no-animation-event-queue.patch</filename>
            <type>text/plain</type>
            <size>8678</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRGVjbGFyYXRpdmVBbmltYXRpb24uY3Bw
CmluZGV4IGJiZTRjMzcwNTc1ZjI5ZWNkZDIzMWE2NTY3YmIwNWQwNmM3YTU0OTcuLmQ3M2RiYjUx
NTZkYzUxMDA1Yjk3ZWRhNTc2NTI1YWE5MmYzMTdiZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FuaW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9uLmNwcApAQCAtNDQsNyArNDQsNiBAQCBX
VEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoRGVjbGFyYXRpdmVBbmltYXRpb24pOwogCiBEZWNs
YXJhdGl2ZUFuaW1hdGlvbjo6RGVjbGFyYXRpdmVBbmltYXRpb24oRWxlbWVudCYgb3duaW5nRWxl
bWVudCwgY29uc3QgQW5pbWF0aW9uJiBiYWNraW5nQW5pbWF0aW9uKQogICAgIDogV2ViQW5pbWF0
aW9uKG93bmluZ0VsZW1lbnQuZG9jdW1lbnQoKSkKLSAgICAsIG1fZXZlbnRRdWV1ZShNYWluVGhy
ZWFkR2VuZXJpY0V2ZW50UXVldWU6OmNyZWF0ZShvd25pbmdFbGVtZW50KSkKICAgICAsIG1fb3du
aW5nRWxlbWVudCgmb3duaW5nRWxlbWVudCkKICAgICAsIG1fYmFja2luZ0FuaW1hdGlvbihjb25z
dF9jYXN0PEFuaW1hdGlvbiY+KGJhY2tpbmdBbmltYXRpb24pKQogewpAQCAtNjUsMTAgKzY0LDgg
QEAgdm9pZCBEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6dGljaygpCiAgICAgLy8gY2FuY2VsZWQgdXNp
bmcgdGhlIFdlYiBBbmltYXRpb25zIEFQSSBhbmQgaXQgc2hvdWxkIGJlIGRpc2Fzc29jaWF0ZWQg
ZnJvbSBpdHMgb3duZXIgZWxlbWVudC4KICAgICAvLyBGcm9tIHRoaXMgcG9pbnQgb24sIHRoaXMg
YW5pbWF0aW9uIGlzIGxpa2UgYW55IG90aGVyIGFuaW1hdGlvbiBhbmQgc2hvdWxkIG5vdCBhcHBl
YXIgaW4gdGhlCiAgICAgLy8gbWFwcyBjb250YWluaW5nIHJ1bm5pbmcgQ1NTIFRyYW5zaXRpb25z
IGFuZCBDU1MgQW5pbWF0aW9ucyBmb3IgYSBnaXZlbiBlbGVtZW50LgotICAgIGlmICh3YXNSZWxl
dmFudCAmJiBwbGF5U3RhdGUoKSA9PSBXZWJBbmltYXRpb246OlBsYXlTdGF0ZTo6SWRsZSkgewor
ICAgIGlmICh3YXNSZWxldmFudCAmJiBwbGF5U3RhdGUoKSA9PSBXZWJBbmltYXRpb246OlBsYXlT
dGF0ZTo6SWRsZSkKICAgICAgICAgZGlzYXNzb2NpYXRlRnJvbU93bmluZ0VsZW1lbnQoKTsKLSAg
ICAgICAgbV9ldmVudFF1ZXVlLT5jbG9zZSgpOwotICAgIH0KIH0KIAogYm9vbCBEZWNsYXJhdGl2
ZUFuaW1hdGlvbjo6Y2FuSGF2ZUdsb2JhbFBvc2l0aW9uKCkKQEAgLTkyLDE3ICs4OSw2IEBAIHZv
aWQgRGVjbGFyYXRpdmVBbmltYXRpb246OmRpc2Fzc29jaWF0ZUZyb21Pd25pbmdFbGVtZW50KCkK
ICAgICBtX293bmluZ0VsZW1lbnQgPSBudWxscHRyOwogfQogCi1ib29sIERlY2xhcmF0aXZlQW5p
bWF0aW9uOjpuZWVkc1RpY2soKSBjb25zdAotewotICAgIHJldHVybiBXZWJBbmltYXRpb246Om5l
ZWRzVGljaygpIHx8IG1fZXZlbnRRdWV1ZS0+aGFzUGVuZGluZ0V2ZW50cygpOwotfQotCi12b2lk
IERlY2xhcmF0aXZlQW5pbWF0aW9uOjpyZW1vdmUoKQotewotICAgIG1fZXZlbnRRdWV1ZS0+Y2xv
c2UoKTsKLSAgICBXZWJBbmltYXRpb246OnJlbW92ZSgpOwotfQotCiB2b2lkIERlY2xhcmF0aXZl
QW5pbWF0aW9uOjpzZXRCYWNraW5nQW5pbWF0aW9uKGNvbnN0IEFuaW1hdGlvbiYgYmFja2luZ0Fu
aW1hdGlvbikKIHsKICAgICBtX2JhY2tpbmdBbmltYXRpb24gPSBjb25zdF9jYXN0PEFuaW1hdGlv
biY+KGJhY2tpbmdBbmltYXRpb24pOwpAQCAtMzUwLDExICszMzYsMjIgQEAgdm9pZCBEZWNsYXJh
dGl2ZUFuaW1hdGlvbjo6aW52YWxpZGF0ZURPTUV2ZW50cyhTZWNvbmRzIGVsYXBzZWRUaW1lKQog
dm9pZCBEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6ZW5xdWV1ZURPTUV2ZW50KGNvbnN0IEF0b21TdHJp
bmcmIGV2ZW50VHlwZSwgU2Vjb25kcyBlbGFwc2VkVGltZSkKIHsKICAgICBBU1NFUlQobV9vd25p
bmdFbGVtZW50KTsKKworICAgIGF1dG8qIGFuaW1hdGlvblRpbWVsaW5lID0gZG93bmNhc3Q8RG9j
dW1lbnRUaW1lbGluZT4odGltZWxpbmUoKSk7CisgICAgaWYgKCFhbmltYXRpb25UaW1lbGluZSkK
KyAgICAgICAgcmV0dXJuOworCiAgICAgYXV0byB0aW1lID0gc2Vjb25kc1RvV2ViQW5pbWF0aW9u
c0FQSVRpbWUoZWxhcHNlZFRpbWUpIC8gMTAwMDsKKworICAgIFJlZlB0cjxFdmVudD4gZXZlbnQ7
CiAgICAgaWYgKGlzPENTU0FuaW1hdGlvbj4odGhpcykpCi0gICAgICAgIG1fZXZlbnRRdWV1ZS0+
ZW5xdWV1ZUV2ZW50KEFuaW1hdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnRUeXBlLCBkb3duY2FzdDxD
U1NBbmltYXRpb24+KHRoaXMpLT5hbmltYXRpb25OYW1lKCksIHRpbWUsIFBzZXVkb0VsZW1lbnQ6
OnBzZXVkb0VsZW1lbnROYW1lRm9yRXZlbnRzKG1fb3duaW5nRWxlbWVudC0+cHNldWRvSWQoKSkp
KTsKKyAgICAgICAgZXZlbnQgPSBBbmltYXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50VHlwZSwgZG93
bmNhc3Q8Q1NTQW5pbWF0aW9uPih0aGlzKS0+YW5pbWF0aW9uTmFtZSgpLCB0aW1lLCBQc2V1ZG9F
bGVtZW50Ojpwc2V1ZG9FbGVtZW50TmFtZUZvckV2ZW50cyhtX293bmluZ0VsZW1lbnQtPnBzZXVk
b0lkKCkpKTsKICAgICBlbHNlIGlmIChpczxDU1NUcmFuc2l0aW9uPih0aGlzKSkKLSAgICAgICAg
bV9ldmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoVHJhbnNpdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnRU
eXBlLCBkb3duY2FzdDxDU1NUcmFuc2l0aW9uPih0aGlzKS0+dHJhbnNpdGlvblByb3BlcnR5KCks
IHRpbWUsIFBzZXVkb0VsZW1lbnQ6OnBzZXVkb0VsZW1lbnROYW1lRm9yRXZlbnRzKG1fb3duaW5n
RWxlbWVudC0+cHNldWRvSWQoKSkpKTsKKyAgICAgICAgZXZlbnQgPSBUcmFuc2l0aW9uRXZlbnQ6
OmNyZWF0ZShldmVudFR5cGUsIGRvd25jYXN0PENTU1RyYW5zaXRpb24+KHRoaXMpLT50cmFuc2l0
aW9uUHJvcGVydHkoKSwgdGltZSwgUHNldWRvRWxlbWVudDo6cHNldWRvRWxlbWVudE5hbWVGb3JF
dmVudHMobV9vd25pbmdFbGVtZW50LT5wc2V1ZG9JZCgpKSk7CisKKyAgICBldmVudC0+c2V0VGFy
Z2V0KG1fb3duaW5nRWxlbWVudCk7CisgICAgYW5pbWF0aW9uVGltZWxpbmUtPmVucXVldWVEZWNs
YXJhdGl2ZUFuaW1hdGlvbkV2ZW50KGV2ZW50LnJlbGVhc2VOb25OdWxsKCkpOworCiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlv
bi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RlY2xh
cmF0aXZlQW5pbWF0aW9uLmgKaW5kZXggMzYzZTk4Y2UzMTc2NmM5NWI2ZTkzM2VkZWM3ZjEyN2I3
OTQ1OGM2MS4uMGM1YmE3YzY4MjEyMzljOGFiMTQ5N2E5NTE1YTUxNDhjNzYzZTY2NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9uLmgKQEAgLTUx
LDYgKzUxLDcgQEAgcHVibGljOgogCiAgICAgT3B0aW9uYWw8ZG91YmxlPiBzdGFydFRpbWUoKSBj
b25zdCBmaW5hbDsKICAgICB2b2lkIHNldFN0YXJ0VGltZShPcHRpb25hbDxkb3VibGU+KSBmaW5h
bDsKKwogICAgIE9wdGlvbmFsPGRvdWJsZT4gYmluZGluZ3NDdXJyZW50VGltZSgpIGNvbnN0IGZp
bmFsOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldEJpbmRpbmdzQ3VycmVudFRpbWUoT3B0aW9u
YWw8ZG91YmxlPikgZmluYWw7CiAgICAgV2ViQW5pbWF0aW9uOjpQbGF5U3RhdGUgYmluZGluZ3NQ
bGF5U3RhdGUoKSBjb25zdCBmaW5hbDsKQEAgLTY0LDcgKzY1LDYgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0VGltZWxpbmUoUmVmUHRyPEFuaW1hdGlvblRpbWVsaW5lPiYmKSBmaW5hbDsKICAgICB2
b2lkIGNhbmNlbCgpIGZpbmFsOwogCi0gICAgYm9vbCBuZWVkc1RpY2soKSBjb25zdCBvdmVycmlk
ZTsKICAgICB2b2lkIHRpY2soKSBvdmVycmlkZTsKIAogICAgIGJvb2wgY2FuSGF2ZUdsb2JhbFBv
c2l0aW9uKCkgZmluYWw7CkBAIC04MSwxMyArODEsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGZs
dXNoUGVuZGluZ1N0eWxlQ2hhbmdlcygpIGNvbnN0OwogICAgIEFuaW1hdGlvbkVmZmVjdFBoYXNl
IHBoYXNlV2l0aG91dEVmZmVjdCgpIGNvbnN0OwogICAgIHZvaWQgZW5xdWV1ZURPTUV2ZW50KGNv
bnN0IEF0b21TdHJpbmcmLCBTZWNvbmRzKTsKLSAgICB2b2lkIHJlbW92ZSgpIGZpbmFsOwogCiAg
ICAgYm9vbCBtX3dhc1BlbmRpbmcgeyBmYWxzZSB9OwogICAgIEFuaW1hdGlvbkVmZmVjdFBoYXNl
IG1fcHJldmlvdXNQaGFzZSB7IEFuaW1hdGlvbkVmZmVjdFBoYXNlOjpJZGxlIH07CiAKLSAgICBV
bmlxdWVSZWY8TWFpblRocmVhZEdlbmVyaWNFdmVudFF1ZXVlPiBtX2V2ZW50UXVldWU7Ci0KICAg
ICBFbGVtZW50KiBtX293bmluZ0VsZW1lbnQ7CiAgICAgUmVmPEFuaW1hdGlvbj4gbV9iYWNraW5n
QW5pbWF0aW9uOwogICAgIGRvdWJsZSBtX3ByZXZpb3VzSXRlcmF0aW9uOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUuY3BwIGIvU291cmNlL1dl
YkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUuY3BwCmluZGV4IGJiYjNiNDA0YzFkMmE5
NDdmZWQyMTM3NWM4ZDViM2VjYjg1MzM4M2MuLjFhNzU2ODBhMGUwMzhiZjEwZjgzYzM1YjRhZTM4
ZmFiMmYyNmVhMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVu
dFRpbWVsaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1l
bGluZS5jcHAKQEAgLTQwNiw3ICs0MDYsNyBAQCB2b2lkIERvY3VtZW50VGltZWxpbmU6OmludGVy
bmFsVXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVudHMoKQogCiAgICAgLy8gNC4gTGV0IGV2ZW50
cyB0byBkaXNwYXRjaCBiZSBhIGNvcHkgb2YgZG9jJ3MgcGVuZGluZyBhbmltYXRpb24gZXZlbnQg
cXVldWUuCiAgICAgLy8gNS4gQ2xlYXIgZG9jJ3MgcGVuZGluZyBhbmltYXRpb24gZXZlbnQgcXVl
dWUuCi0gICAgYXV0byBwZW5kaW5nQW5pbWF0aW9uRXZlbnRzID0gV1RGTW92ZShtX3BlbmRpbmdB
bmltYXRpb25FdmVudHMpOworICAgIGF1dG8gcGVuZGluZ0FuaW1hdGlvbkV2ZW50cyA9IFdURk1v
dmUobV9wZW5kaW5nQW5pbWF0aW9uUGxheWJhY2tFdmVudHMpOwogCiAgICAgLy8gNi4gUGVyZm9y
bSBhIHN0YWJsZSBzb3J0IG9mIHRoZSBhbmltYXRpb24gZXZlbnRzIGluIGV2ZW50cyB0byBkaXNw
YXRjaCBhcyBmb2xsb3dzLgogICAgIHN0ZDo6c3RhYmxlX3NvcnQocGVuZGluZ0FuaW1hdGlvbkV2
ZW50cy5iZWdpbigpLCBwZW5kaW5nQW5pbWF0aW9uRXZlbnRzLmVuZCgpLCBbXSAoY29uc3QgUmVm
PEFuaW1hdGlvblBsYXliYWNrRXZlbnQ+JiBsaHMsIGNvbnN0IFJlZjxBbmltYXRpb25QbGF5YmFj
a0V2ZW50PiYgcmhzKSB7CkBAIC00MjYsNiArNDI2LDExIEBAIHZvaWQgRG9jdW1lbnRUaW1lbGlu
ZTo6aW50ZXJuYWxVcGRhdGVBbmltYXRpb25zQW5kU2VuZEV2ZW50cygpCiAgICAgZm9yIChhdXRv
JiBwZW5kaW5nRXZlbnQgOiBwZW5kaW5nQW5pbWF0aW9uRXZlbnRzKQogICAgICAgICBwZW5kaW5n
RXZlbnQtPnRhcmdldCgpLT5kaXNwYXRjaEV2ZW50KHBlbmRpbmdFdmVudCk7CiAKKyAgICAvLyBS
ZWxhdGl2ZSBkaXNwYXRjaCBvcmRlciBvZiBldmVudHMgbGlrZSAndHJhbnNpdGlvbmVuZCcgd2l0
aCBhbmltYXRpb24gZXZlbnRzIGlzIG5vdCBzcGVjaWZpZWQ6IDxodHRwczovL2dpdGh1Yi5jb20v
dzNjL2Nzc3dnLWRyYWZ0cy9pc3N1ZXMvNDU1Mz4KKyAgICBhdXRvIGRlY2xhcmF0aXZlQW5pbWF0
aW9uRXZlbnRzID0gV1RGTW92ZShtX3BlbmRpbmdEZWNsYXJhdGl2ZUFuaW1hdGlvbkV2ZW50cyk7
CisgICAgZm9yIChhdXRvJiBwZW5kaW5nRXZlbnQgOiBkZWNsYXJhdGl2ZUFuaW1hdGlvbkV2ZW50
cykKKyAgICAgICAgcGVuZGluZ0V2ZW50LT50YXJnZXQoKS0+ZGlzcGF0Y2hFdmVudChwZW5kaW5n
RXZlbnQpOworCiAgICAgLy8gVGhpcyB3aWxsIGNhbmNlbCBhbnkgc2NoZWR1bGVkIGludmFsaWRh
dGlvbiBpZiB3ZSBlbmQgdXAgcmVtb3ZpbmcgYWxsIGFuaW1hdGlvbnMuCiAgICAgZm9yIChhdXRv
JiBhbmltYXRpb24gOiBhbmltYXRpb25zVG9SZW1vdmUpIHsKICAgICAgICAgLy8gQW4gYW5pbWF0
aW9uIHRoYXQgd2FzIGluaXRpYWxseSBtYXJrZWQgYXMgaXJyZWxldmFudCBtYXkgaGF2ZSBjaGFu
Z2VkIHdoaWxlIHdlIHdlcmUgc2VuZGluZyBldmVudHMsIHNvIHdlIHJ1biB0aGUgc2FtZQpAQCAt
NTk3LDYgKzYwMiw3IEBAIGJvb2wgRG9jdW1lbnRUaW1lbGluZTo6aXNSdW5uaW5nQWNjZWxlcmF0
ZWRBbmltYXRpb25PblJlbmRlcmVyKFJlbmRlckVsZW1lbnQmIHJlCiAKICAgICBmb3IgKGNvbnN0
IGF1dG8mIGFuaW1hdGlvbiA6IGFuaW1hdGlvbnNGb3JFbGVtZW50KCpyZW5kZXJlci5lbGVtZW50
KCkpKSB7CiAgICAgICAgIGF1dG8gcGxheVN0YXRlID0gYW5pbWF0aW9uLT5wbGF5U3RhdGUoKTsK
KyAgICAgICAgV1RGTG9nQWx3YXlzKCJTTUZSIC0gRG9jdW1lbnRUaW1lbGluZTo6aXNSdW5uaW5n
QWNjZWxlcmF0ZWRBbmltYXRpb25PblJlbmRlcmVyICVwLCBwbGF5U3RhdGUgJWQiLCAmcmVuZGVy
ZXIsIChpbnQpcGxheVN0YXRlKTsKICAgICAgICAgaWYgKHBsYXlTdGF0ZSAhPSBXZWJBbmltYXRp
b246OlBsYXlTdGF0ZTo6UnVubmluZyAmJiBwbGF5U3RhdGUgIT0gV2ViQW5pbWF0aW9uOjpQbGF5
U3RhdGU6OlBhdXNlZCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBhdXRvKiBlZmZl
Y3QgPSBhbmltYXRpb24tPmVmZmVjdCgpOwpAQCAtNjk2LDcgKzcwMiwxMiBAQCBib29sIERvY3Vt
ZW50VGltZWxpbmU6OnJ1bm5pbmdBbmltYXRpb25zRm9yRWxlbWVudEFyZUFsbEFjY2VsZXJhdGVk
KEVsZW1lbnQmIGVsZQogCiB2b2lkIERvY3VtZW50VGltZWxpbmU6OmVucXVldWVBbmltYXRpb25Q
bGF5YmFja0V2ZW50KEFuaW1hdGlvblBsYXliYWNrRXZlbnQmIGV2ZW50KQogewotICAgIG1fcGVu
ZGluZ0FuaW1hdGlvbkV2ZW50cy5hcHBlbmQoZXZlbnQpOworICAgIG1fcGVuZGluZ0FuaW1hdGlv
blBsYXliYWNrRXZlbnRzLmFwcGVuZChldmVudCk7Cit9CisKK3ZvaWQgRG9jdW1lbnRUaW1lbGlu
ZTo6ZW5xdWV1ZURlY2xhcmF0aXZlQW5pbWF0aW9uRXZlbnQoUmVmPEV2ZW50PiYmIGV2ZW50KQor
eworICAgIG1fcGVuZGluZ0RlY2xhcmF0aXZlQW5pbWF0aW9uRXZlbnRzLmFwcGVuZChXVEZNb3Zl
KGV2ZW50KSk7CiB9CiAKIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBkb3VibGU+PiBEb2N1bWVu
dFRpbWVsaW5lOjphY2NlbGVyYXRlZEFuaW1hdGlvbnNGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1l
bnQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRU
aW1lbGluZS5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUuaApp
bmRleCBjNjAyYzkyZWJlNjZjN2UwODNlY2YyODgyOTA3N2E2YzIxM2U4ZGY1Li43MTQzZGY3ZWE0
N2QzMjlkOGNiOWI2NWU3ZTFjOTNhZjc4YzRlNGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1h
dGlvbi9Eb2N1bWVudFRpbWVsaW5lLmgKQEAgLTcxLDYgKzcxLDcgQEAgcHVibGljOgogICAgIHZv
aWQgZGV0YWNoRnJvbURvY3VtZW50KCk7CiAKICAgICB2b2lkIGVucXVldWVBbmltYXRpb25QbGF5
YmFja0V2ZW50KEFuaW1hdGlvblBsYXliYWNrRXZlbnQmKTsKKyAgICB2b2lkIGVucXVldWVEZWNs
YXJhdGl2ZUFuaW1hdGlvbkV2ZW50KFJlZjxFdmVudD4mJik7CiAgICAgCiAgICAgYm9vbCBzY2hl
ZHVsZWRVcGRhdGUoKSBjb25zdCB7IHJldHVybiBtX2FuaW1hdGlvblJlc29sdXRpb25TY2hlZHVs
ZWQ7IH0KICAgICB2b2lkIHVwZGF0ZUN1cnJlbnRUaW1lKERPTUhpZ2hSZXNUaW1lU3RhbXAgdGlt
ZXN0YW1wKTsKQEAgLTEwNyw3ICsxMDgsOCBAQCBwcml2YXRlOgogICAgIEdlbmVyaWNUYXNrUXVl
dWU8VGltZXI+IG1fY3VycmVudFRpbWVDbGVhcmluZ1Rhc2tRdWV1ZTsKICAgICBIYXNoU2V0PFJl
ZlB0cjxXZWJBbmltYXRpb24+PiBtX2FjY2VsZXJhdGVkQW5pbWF0aW9uc1BlbmRpbmdSdW5uaW5n
U3RhdGVDaGFuZ2U7CiAgICAgSGFzaFNldDxFbGVtZW50Kj4gbV9lbGVtZW50c1dpdGhSdW5uaW5n
QWNjZWxlcmF0ZWRBbmltYXRpb25zOwotICAgIFZlY3RvcjxSZWY8QW5pbWF0aW9uUGxheWJhY2tF
dmVudD4+IG1fcGVuZGluZ0FuaW1hdGlvbkV2ZW50czsKKyAgICBWZWN0b3I8UmVmPEFuaW1hdGlv
blBsYXliYWNrRXZlbnQ+PiBtX3BlbmRpbmdBbmltYXRpb25QbGF5YmFja0V2ZW50czsKKyAgICBW
ZWN0b3I8UmVmPEV2ZW50Pj4gbV9wZW5kaW5nRGVjbGFyYXRpdmVBbmltYXRpb25FdmVudHM7CiAg
ICAgUmVmUHRyPERvY3VtZW50PiBtX2RvY3VtZW50OwogICAgIE1hcmthYmxlPFNlY29uZHMsIFNl
Y29uZHM6Ok1hcmthYmxlVHJhaXRzPiBtX2NhY2hlZEN1cnJlbnRUaW1lOwogICAgIFNlY29uZHMg
bV9vcmlnaW5UaW1lOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390752</attachid>
            <date>2020-02-14 03:34:43 -0800</date>
            <delta_ts>2020-02-14 07:00:37 -0800</delta_ts>
            <desc>WIP patch</desc>
            <filename>207364.patch</filename>
            <type>text/plain</type>
            <size>63289</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2JhY2tpbmcvYW5pbWF0ZS1pbnRv
LXZpZXcuaHRtbCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2JhY2tpbmcvYW5pbWF0ZS1pbnRv
LXZpZXcuaHRtbAppbmRleCAyYjY2OWExMTMxOC4uYzhhZGZjODhlODIgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2NvbXBvc2l0aW5nL2JhY2tpbmcvYW5pbWF0ZS1pbnRvLXZpZXcuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9iYWNraW5nL2FuaW1hdGUtaW50by12aWV3Lmh0bWwK
QEAgLTYwLDE3ICs2MCwxNSBAQAogICAgICAgICB9CiAKICAgICAgICAgd2luZG93LmFkZEV2ZW50
TGlzdGVuZXIoJ2xvYWQnLCAoKSA9PiB7Ci0gICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJh
bWUoKCkgPT4gewotICAgICAgICAgICAgICAgIGxldCBhbmltYXRvciA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCd0YXJnZXQnKTsKLSAgICAgICAgICAgICAgICBhbmltYXRvci5hZGRFdmVudExp
c3RlbmVyKCdhbmltYXRpb25zdGFydCcsICgpID0+IHsKLSAgICAgICAgICAgICAgICAgICAgcmVx
dWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGR1bXBM
YXllcnMoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAg
ICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBsZXQgYW5pbWF0b3IgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgndGFyZ2V0Jyk7CisgICAgICAgICAgICBhbmltYXRvci5hZGRFdmVu
dExpc3RlbmVyKCdhbmltYXRpb25zdGFydCcsICgpID0+IHsKKyAgICAgICAgICAgICAgICByZXF1
ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4geworICAgICAgICAgICAgICAgICAgICBkdW1wTGF5ZXJz
KCk7CisgICAgICAgICAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAgICAgICAgICAg
IH0pOwotICAgICAgICAgICAgICAgIGFuaW1hdG9yLmNsYXNzTGlzdC5hZGQoJ2FuaW1hdGluZycp
OwogICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBhbmltYXRvci5jbGFzc0xpc3QuYWRkKCdh
bmltYXRpbmcnKTsKICAgICAgICAgfSwgZmFsc2UpOwogICAgIDwvc2NyaXB0PgogPC9oZWFkPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLXRyYW5zaXRpb25zL0NTU1RyYW5zaXRpb24tc3RhcnRUaW1lLnRlbnRhdGl2ZS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtdHJhbnNpdGlvbnMvQ1NTVHJhbnNpdGlvbi1zdGFydFRpbWUudGVudGF0aXZlLWV4cGVj
dGVkLnR4dAppbmRleCBmYWRlYTZmZGE5YS4uYWI5YzJhZTYxNWIgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2l0aW9u
cy9DU1NUcmFuc2l0aW9uLXN0YXJ0VGltZS50ZW50YXRpdmUtZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2l0
aW9ucy9DU1NUcmFuc2l0aW9uLXN0YXJ0VGltZS50ZW50YXRpdmUtZXhwZWN0ZWQudHh0CkBAIC0z
LDUgKzMsNSBAQCBQQVNTIFRoZSBzdGFydCB0aW1lIG9mIGEgbmV3bHktY3JlYXRlZCB0cmFuc2l0
aW9uIGlzIHVucmVzb2x2ZWQKIFBBU1MgVGhlIHN0YXJ0IHRpbWUgb2YgdHJhbnNpdGlvbnMgaXMg
YmFzZWQgb24gd2hlbiB0aGV5IGFyZSBnZW5lcmF0ZWQgCiBQQVNTIFRoZSBzdGFydCB0aW1lIG9m
IGEgdHJhbnNpdGlvbiBjYW4gYmUgc2V0IAogUEFTUyBUaGUgc3RhcnQgdGltZSBjYW4gYmUgc2V0
IHRvIHNlZWsgYSB0cmFuc2l0aW9uIAotRkFJTCBTZWVraW5nIGEgdHJhbnNpdGlvbiB1c2luZyBz
dGFydCB0aW1lIGRpc3BhdGNoZXMgdHJhbnNpdGlvbiBldmVudHMgcHJvbWlzZV90ZXN0OiBVbmhh
bmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiRXJyb3I6IFRpbWVkIG91dCB3YWl0
aW5nIGZvciBQcm9taXNlIHRvIHJlc29sdmU6IHRyYW5zaXRpb25zdGFydCIKK1BBU1MgU2Vla2lu
ZyBhIHRyYW5zaXRpb24gdXNpbmcgc3RhcnQgdGltZSBkaXNwYXRjaGVzIHRyYW5zaXRpb24gZXZl
bnRzIAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJhbmltYXRpb25zL2Nzcy10cmFuc2l0
aW9uLWluLWZsaWdodC1yZXZlcnNhbC1hY2NlbGVyYXRlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
YW5pbWF0aW9ucy9jc3MtdHJhbnNpdGlvbi1pbi1mbGlnaHQtcmV2ZXJzYWwtYWNjZWxlcmF0ZWQu
aHRtbAppbmRleCA2ZGE1YmZhNzU0ZC4uMzA3ODNhOGJmZjAgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3dlYmFuaW1hdGlvbnMvY3NzLXRyYW5zaXRpb24taW4tZmxpZ2h0LXJldmVyc2FsLWFjY2Vs
ZXJhdGVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvd2ViYW5pbWF0aW9ucy9jc3MtdHJhbnNpdGlv
bi1pbi1mbGlnaHQtcmV2ZXJzYWwtYWNjZWxlcmF0ZWQuaHRtbApAQCAtNDYsMTkgKzQ2LDIzIEBA
IGZ1bmN0aW9uIHRhcmdldFRlc3QocHJvcGVydHlOYW1lKQogICAgICAgICAgICAgaW5pdGlhbFRy
YW5zaXRpb24gPSBhbmltYXRpb25zWzBdOwogICAgICAgICAgICAgYXNzZXJ0X3RydWUoaW5pdGlh
bFRyYW5zaXRpb24gaW5zdGFuY2VvZiBDU1NUcmFuc2l0aW9uLCAiVGhlcmUgaXMgb25lIGFuaW1h
dGlvbiBhcHBsaWVkIHRvIHRoZSB0YXJnZXQgYWZ0ZXIgc3RhcnRpbmcgdGhlIGluaXRpYWwgdHJh
bnNpdGlvbi4iKTsKIAotICAgICAgICAgICAgLy8gV2FpdCBmb3IgdGhlIGluaXRpYWwgdHJhbnNp
dGlvbiB0byBzdGFydCBhbmQgdGhlbiBhbm90aGVyIGZyYW1lIGJlZm9yZSByZXZlcnNpbmcgdGhl
IHRyYW5zaXRpb24uCisgICAgICAgICAgICAvLyBXYWl0IGZvciB0aGUgaW5pdGlhbCB0cmFuc2l0
aW9uIHRvIHN0YXJ0IGFuZCB0aGVuIHR3byBmcmFtZXMgYmVmb3JlIHJldmVyc2luZyB0aGUgdHJh
bnNpdGlvbiwgdG8gYmUgY2VydGFpbiB0aGF0IHRoZSBhbmltYXRpb24gZGlkIHN0YXJ0LgorICAg
ICAgICAgICAgLy8gSW5kZWVkLCB0aGUgInRyYW5zaXRpb25zdGFydCIgZXZlbnQgd2lsbCBiZSBm
aXJlZCByaWdodCBiZWZvcmUgdGhlIG5leHQgckFGIGNhbGxiYWNrIGlzIGNhbGxlZCwgYXMgdGhl
IGFuaW1hdGlvbiBzdGFydHMgaW4gdGhhdCB2ZXJ5IHNhbWUKKyAgICAgICAgICAgIC8vIGZyYW1l
LCBhbmQgc28gcHJvZ3Jlc3Mgd2lsbCBiZSAwIGFuZCB0aGUgdHJhbnNpdGlvbiB3b3VsZG4ndCBi
ZSByZXZlcnNhYmxlIHVudGlsIHRoZSBuZXh0IGZyYW1lIHdoZW4gdGhlIGFuaW1hdGlvbiBoYXMg
cHJvZ3Jlc3MgPiAwLgogICAgICAgICAgICAgdGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoInRyYW5z
aXRpb25zdGFydCIsIGV2ZW50ID0+IHsKICAgICAgICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9u
RnJhbWUoKCkgPT4gewotICAgICAgICAgICAgICAgICAgICB0YXJnZXQuY2xhc3NMaXN0LnJlbW92
ZSgiaW4tZmxpZ2h0Iik7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFuaW1hdGlvbnMgPSB0
YXJnZXQuZ2V0QW5pbWF0aW9ucygpOwotICAgICAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxz
KGFuaW1hdGlvbnMubGVuZ3RoLCAxLCAiVGhlcmUgaXMgb25lIGFuaW1hdGlvbiBhcHBsaWVkIHRv
IHRoZSB0YXJnZXQgYWZ0ZXIgcmV2ZXJzaW5nIHRoZSBpbml0aWFsIHRyYW5zaXRpb24uIik7Cisg
ICAgICAgICAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7CisgICAgICAg
ICAgICAgICAgICAgICAgICB0YXJnZXQuY2xhc3NMaXN0LnJlbW92ZSgiaW4tZmxpZ2h0Iik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhbmltYXRpb25zID0gdGFyZ2V0LmdldEFuaW1h
dGlvbnMoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoYW5pbWF0aW9u
cy5sZW5ndGgsIDEsICJUaGVyZSBpcyBvbmUgYW5pbWF0aW9uIGFwcGxpZWQgdG8gdGhlIHRhcmdl
dCBhZnRlciByZXZlcnNpbmcgdGhlIGluaXRpYWwgdHJhbnNpdGlvbi4iKTsKIAotICAgICAgICAg
ICAgICAgICAgICByZXZlcnNlZFRyYW5zaXRpb24gPSBhbmltYXRpb25zWzBdOwotICAgICAgICAg
ICAgICAgICAgICBhc3NlcnRfdHJ1ZShyZXZlcnNlZFRyYW5zaXRpb24gaW5zdGFuY2VvZiBDU1NU
cmFuc2l0aW9uLCAiVGhlcmUgaXMgb25lIGFuaW1hdGlvbiBhcHBsaWVkIHRvIHRoZSB0YXJnZXQg
YWZ0ZXIgcmV2ZXJzaW5nIHRoZSBpbml0aWFsIHRyYW5zaXRpb24uIik7Ci0gICAgICAgICAgICAg
ICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKGluaXRpYWxUcmFuc2l0aW9uLCByZXZlcnNlZFRyYW5z
aXRpb24sICJUaGUgYW5pbWF0aW9uIGFwcGxpZWQgdG8gdGhlIHRhcmdldCBhZnRlciByZXZlcnNp
bmcgdGhlIGluaXRpYWwgdHJhbnNpdGlvbiBpcyBkaWZmZXJlbnQgdGhhbiB0aGUgb3JpZ2luYWwg
dHJhbnNpdGlvbi4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldmVyc2VkVHJhbnNpdGlv
biA9IGFuaW1hdGlvbnNbMF07CisgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnRfdHJ1ZShy
ZXZlcnNlZFRyYW5zaXRpb24gaW5zdGFuY2VvZiBDU1NUcmFuc2l0aW9uLCAiVGhlcmUgaXMgb25l
IGFuaW1hdGlvbiBhcHBsaWVkIHRvIHRoZSB0YXJnZXQgYWZ0ZXIgcmV2ZXJzaW5nIHRoZSBpbml0
aWFsIHRyYW5zaXRpb24uIik7CisgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnRfbm90X2Vx
dWFscyhpbml0aWFsVHJhbnNpdGlvbiwgcmV2ZXJzZWRUcmFuc2l0aW9uLCAiVGhlIGFuaW1hdGlv
biBhcHBsaWVkIHRvIHRoZSB0YXJnZXQgYWZ0ZXIgcmV2ZXJzaW5nIHRoZSBpbml0aWFsIHRyYW5z
aXRpb24gaXMgZGlmZmVyZW50IHRoYW4gdGhlIG9yaWdpbmFsIHRyYW5zaXRpb24uIik7CiAKLSAg
ICAgICAgICAgICAgICAgICAgdGFyZ2V0LnJlbW92ZSgpOwotICAgICAgICAgICAgICAgICAgICB0
ZXN0LmRvbmUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldC5yZW1vdmUoKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHRlc3QuZG9uZSgpOworICAgICAgICAgICAgICAgICAgICB9
KTsKICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCA3NDVjNjcwNDdiNi4uOTkxMDJkOTI3OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw1OSBAQAorMjAyMC0wMi0xNCAgQW50b2luZSBRdWludCAgPGdyYW91dHNAd2Via2l0Lm9yZz4K
KworICAgICAgICBbV2ViIEFuaW1hdGlvbnNdIE1ha2UgYWxsIGFuaW1hdGlvbiBldmVudCB0eXBl
cyBpbmhlcml0IGZyb20gdGhlIHNhbWUgYmFzZSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NjI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3VycmVudGx5IHdlIGRpc3BhdGNoIGV2ZW50cyBD
U1MgVHJhbnNpdGlvbnMgYW5kIENTUyBBbmltYXRpb25zIGV2ZW50cyB1c2luZyBhIGRlZGljYXRl
ZCBldmVudCBxdWV1ZSBvbiBEZWNsYXJhdGl2ZUFuaW1hdGlvbiwgd2hpbGUgdGhlIGV2ZW50cwor
ICAgICAgICBhZGRlZCBieSB0aGUgV2ViIEFuaW1hdGlvbnMgc3BlY2lmaWNhdGlvbiAob2YgdHlw
ZSBBbmltYXRpb25QbGF5YmFja0V2ZW50KSBhcmUgZGlzcGF0Y2hlZCB1c2luZyBhIHNoYXJlZCBx
dWV1ZSBvbiB0aGUgRG9jdW1lbnRUaW1lbGluZSB0aGF0IGlzCisgICAgICAgIHByb2Nlc3NlZCBk
dXJpbmcgdGhlICJ1cGRhdGUgYW5pbWF0aW9ucyBhbmQgc2VuZCBldmVudHMgcHJvY2VkdXJlIi4g
VGhlIFdlYiBBbmltYXRpb25zIHNwZWNpZmljYXRpb24gZGljdGF0ZXMgdGhhdCBhbGwgZXZlbnRz
IHNob3VsZCBiZSBkaXNwYXRjaGVkCisgICAgICAgIGR1cmluZyB0aGF0IHByb2NlZHVyZSwgd2hp
Y2ggaW5jbHVkZXMgc29ydGluZyBvZiBzdWNoIGV2ZW50cyBiYXNlZCBvbiB0aGVpciB0aW1lbGlu
ZSB0aW1lIGFuZCBhc3NvY2lhdGVkIGFuaW1hdGlvbiByZWxhdGl2ZSBjb21wb3NpdGUgb3JkZXIu
CisKKyAgICAgICAgSW4gdGhpcyBwYXRjaCwgd2UgcHJlcGFyZSB0aGUgd29yayB0b3dhcmRzIHNw
ZWMgY29tcGxpYW5jZSBmb3IgYW5pbWF0aW9uIGV2ZW50cyBkaXNwYXRjaCBieSBtYWtpbmcgYWxs
IGV2ZW50IHR5cGVzIChBbmltYXRpb25QbGF5YmFja0V2ZW50LAorICAgICAgICBUcmFuc2l0aW9u
RXZlbnQgYW5kIEFuaW1hdGlvbkV2ZW50KSBpbmhlcml0IGZyb20gYSBzaW5nbGUgQW5pbWF0aW9u
RXZlbnRCYXNlIGludGVyZmFjZS4gVGhpcyB3aWxsIGFsbG93IERvY3VtZW50VGltZWxpbmUgdG8g
ZW5xdWV1ZSwgc29ydCBhbmQKKyAgICAgICAgZGlzcGF0Y2ggYWxsIHN1Y2ggZXZlbnRzIHdpdGgg
YSBzaW5nbGUgcXVldWUgaW4gYSBmdXR1cmUgcGF0Y2guCisKKyAgICAgICAgRHVlIHRvIENTU0Fu
aW1hdGlvbkNvbnRyb2xsZXIsIHdlIG11c3QgbWFrZSB0aGUgInRpbWVsaW5lIHRpbWUiIGFuZCAi
YW5pbWF0aW9uIiBwYXJhbWV0ZXJzIG9wdGlvbmFsLiBXaGVuIHdlIGRyb3Agc3VwcG9ydCBmb3Ig
Q1NTQW5pbWF0aW9uQ29udHJvbGxlcgorICAgICAgICB3ZSdsbCBiZSBhYmxlIHRvIGVuZm9yY2Ug
c3Ryb25nZXIgcmVxdWlyZW1lbnRzIGZvciB0aGVzZS4KKworICAgICAgICBObyBuZXcgdGVzdCBz
aW5jZSB0aGlzIHNob3VsZCBub3QgaW50cm9kdWNlIGFueSBiZWhhdmlvciBjaGFuZ2UuCisKKyAg
ICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogYW5pbWF0aW9uL0FuaW1hdGlvbkV2ZW50QmFzZS5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uRXZlbnRCYXNlOjpBbmltYXRpb25FdmVu
dEJhc2UpOgorICAgICAgICAqIGFuaW1hdGlvbi9BbmltYXRpb25FdmVudEJhc2UuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25FdmVudEJhc2U6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpBbmltYXRpb25FdmVudEJhc2U6OmlzQW5pbWF0aW9uUGxheWJhY2tFdmVudCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25FdmVudEJhc2U6OmlzQW5pbWF0aW9u
RXZlbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uRXZlbnRCYXNlOjppc1Ry
YW5zaXRpb25FdmVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25FdmVudEJh
c2U6OnRpbWVsaW5lVGltZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25FdmVu
dEJhc2U6OmFuaW1hdGlvbiBjb25zdCk6CisgICAgICAgICogYW5pbWF0aW9uL0FuaW1hdGlvblBs
YXliYWNrRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uUGxheWJhY2tFdmVu
dDo6QW5pbWF0aW9uUGxheWJhY2tFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25Q
bGF5YmFja0V2ZW50OjpiaW5kaW5nc1RpbWVsaW5lVGltZSBjb25zdCk6CisgICAgICAgICogYW5p
bWF0aW9uL0FuaW1hdGlvblBsYXliYWNrRXZlbnQuaDoKKyAgICAgICAgKiBhbmltYXRpb24vQ1NT
QW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0FuaW1hdGlvbjo6Y3JlYXRlRXZl
bnQpOgorICAgICAgICAqIGFuaW1hdGlvbi9DU1NBbmltYXRpb24uaDoKKyAgICAgICAgKiBhbmlt
YXRpb24vQ1NTVHJhbnNpdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NUcmFuc2l0aW9u
OjpjcmVhdGVFdmVudCk6CisgICAgICAgICogYW5pbWF0aW9uL0NTU1RyYW5zaXRpb24uaDoKKyAg
ICAgICAgKiBhbmltYXRpb24vRGVjbGFyYXRpdmVBbmltYXRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RGVjbGFyYXRpdmVBbmltYXRpb246OmVucXVldWVET01FdmVudCk6CisgICAgICAgICog
YW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9uLmg6CisgICAgICAgICogYW5pbWF0aW9uL1dl
YkFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJBbmltYXRpb246OmVucXVldWVB
bmltYXRpb25QbGF5YmFja0V2ZW50KToKKyAgICAgICAgKiBkb20vQW5pbWF0aW9uRXZlbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uRXZlbnQ6OkFuaW1hdGlvbkV2ZW50KToKKyAg
ICAgICAgKiBkb20vQW5pbWF0aW9uRXZlbnQuaDoKKyAgICAgICAgKiBkb20vVHJhbnNpdGlvbkV2
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zaXRpb25FdmVudDo6VHJhbnNpdGlvbkV2
ZW50KToKKyAgICAgICAgKiBkb20vVHJhbnNpdGlvbkV2ZW50Lmg6CisgICAgICAgICogcGFnZS9h
bmltYXRpb24vQ1NTQW5pbWF0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
U1NBbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZTo6ZmlyZUV2ZW50c0FuZFVwZGF0ZVN0eWxlKToK
KwogMjAyMC0wMi0xMyAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4K
IAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeCBmb3IgV2ViQ29yZSBzaGFyZWQgbGlicmFy
eSBidWlsZHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDM5NzYxMzRkYjhlLi4xYTA0OTE2YWNhOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQKQEAgLTQ0Nyw3ICs0NDcsNyBAQCBhY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJl
ZS9BWElzb2xhdGVkT2JqZWN0LmNwcAogYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29s
YXRlZFRyZWUuY3BwCiAKIGFuaW1hdGlvbi9BbmltYXRpb25FZmZlY3QuY3BwCi1hbmltYXRpb24v
S2V5ZnJhbWVFZmZlY3RTdGFjay5jcHAKK2FuaW1hdGlvbi9BbmltYXRpb25FdmVudEJhc2UuY3Bw
CiBhbmltYXRpb24vQW5pbWF0aW9uUGxheWJhY2tFdmVudC5jcHAKIGFuaW1hdGlvbi9BbmltYXRp
b25UaW1lbGluZS5jcHAKIGFuaW1hdGlvbi9DU1NBbmltYXRpb24uY3BwCkBAIC00NTUsNiArNDU1
LDcgQEAgYW5pbWF0aW9uL0NTU1RyYW5zaXRpb24uY3BwCiBhbmltYXRpb24vRGVjbGFyYXRpdmVB
bmltYXRpb24uY3BwCiBhbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5jcHAKIGFuaW1hdGlvbi9L
ZXlmcmFtZUVmZmVjdC5jcHAKK2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdFN0YWNrLmNwcAogYW5p
bWF0aW9uL1dlYkFuaW1hdGlvbi5jcHAKIGFuaW1hdGlvbi9XZWJBbmltYXRpb25VdGlsaXRpZXMu
Y3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCAwOGQ1YTJkYTUxZS4uM2QwMjFjZWFkZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIwODAsNiArMjA4MCw3
IEBACiAJCTcxMTZFMkNGMUZFRDc2NUIwMEMwNkZERSAvKiBKU0NvbXB1dGVkRWZmZWN0VGltaW5n
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MTE2RTJD
RTFGRUQ3NjUyMDBDMDZGREUgLyogSlNDb21wdXRlZEVmZmVjdFRpbWluZy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcxMTc0NDU5MTRCQzM0RUMw
MEVFNUZDOCAvKiBTVkdUZXh0TWV0cmljc0J1aWxkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxMTc0NDU3MTRCQzM0RTIwMEVFNUZDOCAvKiBTVkdU
ZXh0TWV0cmljc0J1aWxkZXIuaCAqLzsgfTsKIAkJNzExOEZFRDUxNTY4NUNDNjAwMzBCNzlBIC8q
IEpTU1ZHVmlld1NwZWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDcxMThGRUQzMTU2ODVDQzYwMDMwQjc5QSAvKiBKU1NWR1ZpZXdTcGVjLmggKi87IH07
CisJCTcxMUFEMTI2MjM2RDg2RTUwMDZGRjM3QyAvKiBBbmltYXRpb25FdmVudEJhc2UuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxMUFEMTIzMjM2RDg2
RDMwMDZGRjM3QyAvKiBBbmltYXRpb25FdmVudEJhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MTIwNzM0MDIxNkRGQjAwMDBDNzgzMjkgLyog
T3B0aW9uYWxFZmZlY3RUaW1pbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDcxMjA3MzNEMjE2REZBRjEwMEM3ODMyOSAvKiBPcHRpb25hbEVmZmVjdFRp
bWluZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTcxMjA3MzQzMjE2REZCNDEwMEM3ODMyOSAvKiBKU09wdGlvbmFsRWZmZWN0VGltaW5nLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MTIwNzM0MTIxNkRG
QjMxMDBDNzgzMjkgLyogSlNPcHRpb25hbEVmZmVjdFRpbWluZy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcxMjQ3RTM3MUZFQTVGODYwMDhDMDhD
RSAvKiBDb21wb3NpdGVPcGVyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDcxMjQ3RTM1MUZFQTVGODEwMDhDMDhDRSAvKiBDb21wb3NpdGVPcGVy
YXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpA
QCAtOTM3OSw2ICs5MzgwLDggQEAKIAkJNzExNzQ0NTcxNEJDMzRFMjAwRUU1RkM4IC8qIFNWR1Rl
eHRNZXRyaWNzQnVpbGRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdU
ZXh0TWV0cmljc0J1aWxkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzExOEZF
RDIxNTY4NUNDNjAwMzBCNzlBIC8qIEpTU1ZHVmlld1NwZWMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNTVkdWaWV3U3BlYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTcxMThGRUQzMTU2ODVDQzYwMDMwQjc5QSAvKiBKU1NWR1ZpZXdTcGVjLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU1ZHVmlld1NwZWMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzExQUQxMjMyMzZEODZEMzAwNkZGMzdDIC8qIEFuaW1h
dGlvbkV2ZW50QmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBbmltYXRp
b25FdmVudEJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzExQUQxMjUyMzZE
ODZENDAwNkZGMzdDIC8qIEFuaW1hdGlvbkV2ZW50QmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBBbmltYXRpb25FdmVudEJhc2UuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3MTFGQjA3NTFEQzc2ODhGMDBDNEM3MDggLyogcGxhY2FyZC1zdXBw
b3J0LmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gInBsYWNhcmQt
c3VwcG9ydC5qcyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcxMjA3MzNEMjE2REZB
RjEwMEM3ODMyOSAvKiBPcHRpb25hbEVmZmVjdFRpbWluZy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBPcHRpb25hbEVmZmVjdFRpbWluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3MTIwNzMzRjIxNkRGQUYyMDBDNzgzMjkgLyogT3B0aW9uYWxFZmZlY3RUaW1p
bmcuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE9wdGlvbmFsRWZmZWN0VGltaW5nLmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwOTE2LDYgKzIwOTE5LDggQEAKIAkJCQk3
MUVGQ0VENzIwMkIzODhEMDBEN0M0MTEgLyogQW5pbWF0aW9uRWZmZWN0LmggKi8sCiAJCQkJNzFF
RkNFRDYyMDJCMzg4QzAwRDdDNDExIC8qIEFuaW1hdGlvbkVmZmVjdC5pZGwgKi8sCiAJCQkJNzFF
MkM0MjQyMUM5MzUxRDAwMjRGOEM4IC8qIEFuaW1hdGlvbkVmZmVjdFBoYXNlLmggKi8sCisJCQkJ
NzExQUQxMjUyMzZEODZENDAwNkZGMzdDIC8qIEFuaW1hdGlvbkV2ZW50QmFzZS5jcHAgKi8sCisJ
CQkJNzExQUQxMjMyMzZEODZEMzAwNkZGMzdDIC8qIEFuaW1hdGlvbkV2ZW50QmFzZS5oICovLAog
CQkJCTcxNEM3QzYwMUZEQUQyNzkwMEYyQkVFMSAvKiBBbmltYXRpb25QbGF5YmFja0V2ZW50LmNw
cCAqLywKIAkJCQk3MTRDN0M2NTFGREFEMjdCMDBGMkJFRTEgLyogQW5pbWF0aW9uUGxheWJhY2tF
dmVudC5oICovLAogCQkJCTcxNEM3QzY0MUZEQUQyN0IwMEYyQkVFMSAvKiBBbmltYXRpb25QbGF5
YmFja0V2ZW50LmlkbCAqLywKQEAgLTI4OTQxLDYgKzI4OTQ2LDcgQEAKIAkJCQk3MUVGQ0VEQzIw
MkIzOEE5MDBEN0M0MTEgLyogQW5pbWF0aW9uRWZmZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk3
MUUyQzQyNjIxQzkzNTI4MDAyNEY4QzggLyogQW5pbWF0aW9uRWZmZWN0UGhhc2UuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTMxOTg0ODAxMUExRDgxN0IwMEExMzMxOCAvKiBBbmltYXRpb25FdmVudC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNzExQUQxMjYyMzZEODZFNTAwNkZGMzdDIC8qIEFuaW1hdGlv
bkV2ZW50QmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFOTEyQUQwRUZBQzkwNjAwOUQwQ0FG
IC8qIEFuaW1hdGlvbkxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTcxNEM3QzY2MUZEQUQyQTEw
MEYyQkVFMSAvKiBBbmltYXRpb25QbGF5YmFja0V2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk3
MTRDN0M2NzFGREFEMkE5MDBGMkJFRTEgLyogQW5pbWF0aW9uUGxheWJhY2tFdmVudEluaXQuaCBp
biBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1h
dGlvbkV2ZW50QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uRXZl
bnRCYXNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMGRiZjRj
NWY0ZTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0
aW9uRXZlbnRCYXNlLmNwcApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFu
aW1hdGlvbkV2ZW50QmFzZS5oIgorCisjaW5jbHVkZSAiV2ViQW5pbWF0aW9uVXRpbGl0aWVzLmgi
CisjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoQW5pbWF0aW9uRXZlbnRCYXNlKTsKKwor
QW5pbWF0aW9uRXZlbnRCYXNlOjpBbmltYXRpb25FdmVudEJhc2UoY29uc3QgQXRvbVN0cmluZyYg
dHlwZSwgV2ViQW5pbWF0aW9uKiBhbmltYXRpb24sIE9wdGlvbmFsPFNlY29uZHM+IHRpbWVsaW5l
VGltZSkKKyAgICA6IEV2ZW50KHR5cGUsIENhbkJ1YmJsZTo6WWVzLCBJc0NhbmNlbGFibGU6Ok5v
KQorICAgICwgbV9hbmltYXRpb24oYW5pbWF0aW9uKQorICAgICwgbV90aW1lbGluZVRpbWUodGlt
ZWxpbmVUaW1lKQoreworfQorCitBbmltYXRpb25FdmVudEJhc2U6OkFuaW1hdGlvbkV2ZW50QmFz
ZShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBFdmVudEluaXQmIGluaXRpYWxpemVyLCBJ
c1RydXN0ZWQgaXNUcnVzdGVkKQorICAgIDogRXZlbnQodHlwZSwgaW5pdGlhbGl6ZXIsIGlzVHJ1
c3RlZCkKK3sKK30KKworQW5pbWF0aW9uRXZlbnRCYXNlOjp+QW5pbWF0aW9uRXZlbnRCYXNlKCkg
PSBkZWZhdWx0OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uRXZlbnRCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9h
bmltYXRpb24vQW5pbWF0aW9uRXZlbnRCYXNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAuLmM3NzgxNDhhN2FlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvYW5pbWF0aW9uL0FuaW1hdGlvbkV2ZW50QmFzZS5oCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSA8d3RmL01hcmthYmxlLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgV2ViQW5pbWF0aW9uOworCitjbGFzcyBBbmltYXRpb25FdmVu
dEJhc2UgOiBwdWJsaWMgRXZlbnQgeworICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoQW5pbWF0
aW9uRXZlbnRCYXNlKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPEFuaW1hdGlvbkV2ZW50QmFz
ZT4gY3JlYXRlKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIFdlYkFuaW1hdGlvbiogYW5pbWF0aW9u
LCBPcHRpb25hbDxTZWNvbmRzPiB0aW1lbGluZVRpbWUpCisgICAgeworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBBbmltYXRpb25FdmVudEJhc2UodHlwZSwgYW5pbWF0aW9uLCB0aW1lbGlu
ZVRpbWUpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5BbmltYXRpb25FdmVudEJhc2UoKTsKKwor
ICAgIHZpcnR1YWwgYm9vbCBpc0FuaW1hdGlvblBsYXliYWNrRXZlbnQoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0FuaW1hdGlvbkV2ZW50KCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNUcmFuc2l0aW9uRXZlbnQoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQorCisgICAgT3B0aW9uYWw8U2Vjb25kcz4gdGltZWxpbmVUaW1l
KCkgY29uc3QgeyByZXR1cm4gbV90aW1lbGluZVRpbWU7IH0KKyAgICBXZWJBbmltYXRpb24qIGFu
aW1hdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYW5pbWF0aW9uLmdldCgpOyB9CisKK3Byb3RlY3Rl
ZDoKKyAgICBBbmltYXRpb25FdmVudEJhc2UoY29uc3QgQXRvbVN0cmluZyYsIFdlYkFuaW1hdGlv
biosIE9wdGlvbmFsPFNlY29uZHM+KTsKKyAgICBBbmltYXRpb25FdmVudEJhc2UoY29uc3QgQXRv
bVN0cmluZyYsIGNvbnN0IEV2ZW50SW5pdCYsIElzVHJ1c3RlZCk7CisKKyAgICBSZWZQdHI8V2Vi
QW5pbWF0aW9uPiBtX2FuaW1hdGlvbjsKKyAgICBNYXJrYWJsZTxTZWNvbmRzLCBTZWNvbmRzOjpN
YXJrYWJsZVRyYWl0cz4gbV90aW1lbGluZVRpbWU7Cit9OworCit9CisKKyNkZWZpbmUgU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19BTklNQVRJT05fRVZFTlRfQkFTRShUb1ZhbHVlVHlwZU5hbWUsIHBy
ZWRpY2F0ZSkgXAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpUb1ZhbHVl
VHlwZU5hbWUpIFwKK3N0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpBbmltYXRpb25F
dmVudEJhc2UmIHZhbHVlKSB7IHJldHVybiB2YWx1ZS5wcmVkaWNhdGU7IH0gXAorU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19FTkQoKQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRp
b24vQW5pbWF0aW9uUGxheWJhY2tFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24v
QW5pbWF0aW9uUGxheWJhY2tFdmVudC5jcHAKaW5kZXggODQ3ZTU5NGM1NjIuLjgyOWEzYmRhM2Q4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uUGxheWJhY2tF
dmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvblBsYXliYWNr
RXZlbnQuY3BwCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFdURl9NQUtF
X0lTT19BTExPQ0FURURfSU1QTChBbmltYXRpb25QbGF5YmFja0V2ZW50KTsKIAogQW5pbWF0aW9u
UGxheWJhY2tFdmVudDo6QW5pbWF0aW9uUGxheWJhY2tFdmVudChjb25zdCBBdG9tU3RyaW5nJiB0
eXBlLCBjb25zdCBBbmltYXRpb25QbGF5YmFja0V2ZW50SW5pdCYgaW5pdGlhbGl6ZXIsIElzVHJ1
c3RlZCBpc1RydXN0ZWQpCi0gICAgOiBFdmVudCh0eXBlLCBpbml0aWFsaXplciwgaXNUcnVzdGVk
KQorICAgIDogQW5pbWF0aW9uRXZlbnRCYXNlKHR5cGUsIGluaXRpYWxpemVyLCBpc1RydXN0ZWQp
CiB7CiAgICAgaWYgKGluaXRpYWxpemVyLmN1cnJlbnRUaW1lKQogICAgICAgICBtX2N1cnJlbnRU
aW1lID0gU2Vjb25kczo6ZnJvbU1pbGxpc2Vjb25kcygqaW5pdGlhbGl6ZXIuY3VycmVudFRpbWUp
OwpAQCAtNDcsMTAgKzQ3LDkgQEAgQW5pbWF0aW9uUGxheWJhY2tFdmVudDo6QW5pbWF0aW9uUGxh
eWJhY2tFdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBBbmkKICAgICAgICAgbV90
aW1lbGluZVRpbWUgPSBXVEY6Om51bGxvcHQ7CiB9CiAKLUFuaW1hdGlvblBsYXliYWNrRXZlbnQ6
OkFuaW1hdGlvblBsYXliYWNrRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgT3B0aW9uYWw8
U2Vjb25kcz4gY3VycmVudFRpbWUsIE9wdGlvbmFsPFNlY29uZHM+IHRpbWVsaW5lVGltZSkKLSAg
ICA6IEV2ZW50KHR5cGUsIENhbkJ1YmJsZTo6WWVzLCBJc0NhbmNlbGFibGU6Ok5vKQorQW5pbWF0
aW9uUGxheWJhY2tFdmVudDo6QW5pbWF0aW9uUGxheWJhY2tFdmVudChjb25zdCBBdG9tU3RyaW5n
JiB0eXBlLCBPcHRpb25hbDxTZWNvbmRzPiBjdXJyZW50VGltZSwgT3B0aW9uYWw8U2Vjb25kcz4g
dGltZWxpbmVUaW1lLCBXZWJBbmltYXRpb24qIGFuaW1hdGlvbikKKyAgICA6IEFuaW1hdGlvbkV2
ZW50QmFzZSh0eXBlLCBhbmltYXRpb24sIHRpbWVsaW5lVGltZSkKICAgICAsIG1fY3VycmVudFRp
bWUoY3VycmVudFRpbWUpCi0gICAgLCBtX3RpbWVsaW5lVGltZSh0aW1lbGluZVRpbWUpCiB7CiB9
CiAKQEAgLTY1LDkgKzY0LDkgQEAgT3B0aW9uYWw8ZG91YmxlPiBBbmltYXRpb25QbGF5YmFja0V2
ZW50OjpiaW5kaW5nc0N1cnJlbnRUaW1lKCkgY29uc3QKIAogT3B0aW9uYWw8ZG91YmxlPiBBbmlt
YXRpb25QbGF5YmFja0V2ZW50OjpiaW5kaW5nc1RpbWVsaW5lVGltZSgpIGNvbnN0CiB7Ci0gICAg
aWYgKCFtX3RpbWVsaW5lVGltZSkKKyAgICBpZiAoIXRpbWVsaW5lVGltZSgpKQogICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIHJldHVybiBzZWNvbmRzVG9XZWJBbmltYXRpb25zQVBJ
VGltZShtX3RpbWVsaW5lVGltZS52YWx1ZSgpKTsKKyAgICByZXR1cm4gc2Vjb25kc1RvV2ViQW5p
bWF0aW9uc0FQSVRpbWUodGltZWxpbmVUaW1lKCkudmFsdWUoKSk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRp
b25QbGF5YmFja0V2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uUGxh
eWJhY2tFdmVudC5oCmluZGV4IGIyMjg1YjAwODQwLi4zNWZmOTdjNzQzZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvblBsYXliYWNrRXZlbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uUGxheWJhY2tFdmVudC5oCkBAIC0yNSwx
OCArMjUsMTggQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJBbmltYXRpb25FdmVudEJh
c2UuaCIKICNpbmNsdWRlICJBbmltYXRpb25QbGF5YmFja0V2ZW50SW5pdC5oIgotI2luY2x1ZGUg
IkV2ZW50LmgiCiAjaW5jbHVkZSA8d3RmL01hcmthYmxlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotY2xhc3MgQW5pbWF0aW9uUGxheWJhY2tFdmVudCBmaW5hbCA6IHB1YmxpYyBFdmVudCB7
CitjbGFzcyBBbmltYXRpb25QbGF5YmFja0V2ZW50IGZpbmFsIDogcHVibGljIEFuaW1hdGlvbkV2
ZW50QmFzZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChBbmltYXRpb25QbGF5YmFja0V2
ZW50KTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEFuaW1hdGlvblBsYXliYWNrRXZlbnQ+IGNy
ZWF0ZShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBPcHRpb25hbDxTZWNvbmRzPiBjdXJyZW50VGlt
ZSwgT3B0aW9uYWw8U2Vjb25kcz4gdGltZWxpbmVUaW1lKQorICAgIHN0YXRpYyBSZWY8QW5pbWF0
aW9uUGxheWJhY2tFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIE9wdGlvbmFs
PFNlY29uZHM+IGN1cnJlbnRUaW1lLCBPcHRpb25hbDxTZWNvbmRzPiB0aW1lbGluZVRpbWUsIFdl
YkFuaW1hdGlvbiogYW5pbWF0aW9uKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgQW5pbWF0aW9uUGxheWJhY2tFdmVudCh0eXBlLCBjdXJyZW50VGltZSwgdGltZWxpbmVUaW1l
KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFuaW1hdGlvblBsYXliYWNrRXZlbnQo
dHlwZSwgY3VycmVudFRpbWUsIHRpbWVsaW5lVGltZSwgYW5pbWF0aW9uKSk7CiAgICAgfQogCiAg
ICAgc3RhdGljIFJlZjxBbmltYXRpb25QbGF5YmFja0V2ZW50PiBjcmVhdGUoY29uc3QgQXRvbVN0
cmluZyYgdHlwZSwgY29uc3QgQW5pbWF0aW9uUGxheWJhY2tFdmVudEluaXQmIGluaXRpYWxpemVy
LCBJc1RydXN0ZWQgaXNUcnVzdGVkID0gSXNUcnVzdGVkOjpObykKQEAgLTQ2LDE5ICs0NiwyMSBA
QCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5BbmltYXRpb25QbGF5YmFja0V2ZW50KCk7CiAKKyAg
ICBib29sIGlzQW5pbWF0aW9uUGxheWJhY2tFdmVudCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRy
dWU7IH0KKwogICAgIE9wdGlvbmFsPGRvdWJsZT4gYmluZGluZ3NDdXJyZW50VGltZSgpIGNvbnN0
OwogICAgIE9wdGlvbmFsPFNlY29uZHM+IGN1cnJlbnRUaW1lKCkgY29uc3QgeyByZXR1cm4gbV9j
dXJyZW50VGltZTsgfQogICAgIE9wdGlvbmFsPGRvdWJsZT4gYmluZGluZ3NUaW1lbGluZVRpbWUo
KSBjb25zdDsKLSAgICBPcHRpb25hbDxTZWNvbmRzPiB0aW1lbGluZVRpbWUoKSBjb25zdCB7IHJl
dHVybiBtX3RpbWVsaW5lVGltZTsgfQogCiAgICAgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZh
Y2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBBbmltYXRpb25QbGF5YmFja0V2ZW50SW50ZXJm
YWNlVHlwZTsgfQogCiBwcml2YXRlOgotICAgIEFuaW1hdGlvblBsYXliYWNrRXZlbnQoY29uc3Qg
QXRvbVN0cmluZyYsIE9wdGlvbmFsPFNlY29uZHM+LCBPcHRpb25hbDxTZWNvbmRzPik7CisgICAg
QW5pbWF0aW9uUGxheWJhY2tFdmVudChjb25zdCBBdG9tU3RyaW5nJiwgT3B0aW9uYWw8U2Vjb25k
cz4sIE9wdGlvbmFsPFNlY29uZHM+LCBXZWJBbmltYXRpb24qKTsKICAgICBBbmltYXRpb25QbGF5
YmFja0V2ZW50KGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBBbmltYXRpb25QbGF5YmFja0V2ZW50
SW5pdCYsIElzVHJ1c3RlZCk7CiAKICAgICBNYXJrYWJsZTxTZWNvbmRzLCBTZWNvbmRzOjpNYXJr
YWJsZVRyYWl0cz4gbV9jdXJyZW50VGltZTsKLSAgICBNYXJrYWJsZTxTZWNvbmRzLCBTZWNvbmRz
OjpNYXJrYWJsZVRyYWl0cz4gbV90aW1lbGluZVRpbWU7CiB9OwogCiB9CisKK1NQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfQU5JTUFUSU9OX0VWRU5UX0JBU0UoQW5pbWF0aW9uUGxheWJhY2tFdmVudCwg
aXNBbmltYXRpb25QbGF5YmFja0V2ZW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
bmltYXRpb24vQW5pbWF0aW9uVGltZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9u
L0FuaW1hdGlvblRpbWVsaW5lLmNwcAppbmRleCA2Y2I3N2U4MDY0OS4uMWRiYzJlNGVhOGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25UaW1lbGluZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvblRpbWVsaW5lLmNwcApAQCAt
MzUyLDE1ICszNTIsMTcgQEAgdm9pZCBBbmltYXRpb25UaW1lbGluZTo6dXBkYXRlQ1NTQW5pbWF0
aW9uc0ZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgUmUKICAgICBrZXlmcmFtZUVm
ZmVjdFN0YWNrLnNldENTU0FuaW1hdGlvbkxpc3QoY3VycmVudEFuaW1hdGlvbkxpc3QpOwogfQog
Ci1SZWZQdHI8V2ViQW5pbWF0aW9uPiBBbmltYXRpb25UaW1lbGluZTo6Y3NzQW5pbWF0aW9uRm9y
RWxlbWVudEFuZFByb3BlcnR5KEVsZW1lbnQmIGVsZW1lbnQsIENTU1Byb3BlcnR5SUQgcHJvcGVy
dHkpCitzdGF0aWMgS2V5ZnJhbWVFZmZlY3QqIGtleWZyYW1lRWZmZWN0Rm9yRWxlbWVudEFuZFBy
b3BlcnR5KEVsZW1lbnQmIGVsZW1lbnQsIENTU1Byb3BlcnR5SUQgcHJvcGVydHkpCiB7Ci0gICAg
UmVmUHRyPFdlYkFuaW1hdGlvbj4gbWF0Y2hpbmdBbmltYXRpb247Ci0gICAgZm9yIChjb25zdCBh
dXRvJiBhbmltYXRpb24gOiBtX2VsZW1lbnRUb0NTU0FuaW1hdGlvbnNNYXAuZ2V0KCZlbGVtZW50
KSkgewotICAgICAgICBhdXRvKiBlZmZlY3QgPSBhbmltYXRpb24tPmVmZmVjdCgpOwotICAgICAg
ICBpZiAoaXM8S2V5ZnJhbWVFZmZlY3Q+KGVmZmVjdCkgJiYgZG93bmNhc3Q8S2V5ZnJhbWVFZmZl
Y3Q+KGVmZmVjdCktPmFuaW1hdGVkUHJvcGVydGllcygpLmNvbnRhaW5zKHByb3BlcnR5KSkKLSAg
ICAgICAgICAgIG1hdGNoaW5nQW5pbWF0aW9uID0gYW5pbWF0aW9uOworICAgIGlmIChhdXRvKiBr
ZXlmcmFtZUVmZmVjdFN0YWNrID0gZWxlbWVudC5rZXlmcmFtZUVmZmVjdFN0YWNrKCkpIHsKKyAg
ICAgICAgYXV0byBlZmZlY3RzID0ga2V5ZnJhbWVFZmZlY3RTdGFjay0+c29ydGVkRWZmZWN0cygp
OworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGVmZmVjdCA6IG1ha2VSZXZlcnNlZFJhbmdlKGVm
ZmVjdHMpKSB7CisgICAgICAgICAgICBpZiAoZWZmZWN0LT5hbmltYXRlc1Byb3BlcnR5KHByb3Bl
cnR5KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZWZmZWN0LmdldCgpOworICAgICAgICB9CiAg
ICAgfQotICAgIHJldHVybiBtYXRjaGluZ0FuaW1hdGlvbjsKKworICAgIHJldHVybiBudWxscHRy
OwogfQogCiBzdGF0aWMgYm9vbCBwcm9wZXJ0eUluU3R5bGVNYXRjaGVzVmFsdWVGb3JUcmFuc2l0
aW9uSW5NYXAoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxl
LCBBbmltYXRpb25UaW1lbGluZTo6UHJvcGVydHlUb1RyYW5zaXRpb25NYXAmIHRyYW5zaXRpb25z
KQpAQCAtNDYwLDkgKzQ2MiwyMSBAQCB2b2lkIEFuaW1hdGlvblRpbWVsaW5lOjp1cGRhdGVDU1NU
cmFuc2l0aW9uc0ZvckVsZW1lbnRBbmRQcm9wZXJ0eShFbGVtZW50JiBlbGVtZQogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAKLSAgICAgICAgaWYgKGF1dG8gZXhpc3RpbmdBbmltYXRpb24gPSBj
c3NBbmltYXRpb25Gb3JFbGVtZW50QW5kUHJvcGVydHkoZWxlbWVudCwgcHJvcGVydHkpKQotICAg
ICAgICAgICAgcmV0dXJuIGRvd25jYXN0PENTU0FuaW1hdGlvbj4oZXhpc3RpbmdBbmltYXRpb24u
Z2V0KCkpLT51bmFuaW1hdGVkU3R5bGUoKTsKKyAgICAgICAgaWYgKGF1dG8qIGtleWZyYW1lRWZm
ZWN0ID0ga2V5ZnJhbWVFZmZlY3RGb3JFbGVtZW50QW5kUHJvcGVydHkoZWxlbWVudCwgcHJvcGVy
dHkpKSB7CisgICAgICAgICAgICAvLyBJZiB3ZSBhbHJlYWR5IGhhdmUgYSBrZXlmcmFtZSBlZmZl
Y3QgdGFyZ2V0aW5nIHRoaXMgcHJvcGVydHksIHdlIHNob3VsZCB1c2UgaXRzIHVuYW5pbWF0ZWQg
c3R5bGUgdG8gZGV0ZXJtaW5lIHdoYXQgdGhlIHBvdGVudGlhbAorICAgICAgICAgICAgLy8gc3Rh
cnQgdmFsdWUgb2YgdGhlIHRyYW5zaXRpb24gc2hvdWQgYmUgdG8gbWFrZSBzdXJlIHRoYXQgd2Ug
ZG9uJ3QgYWNjb3VudCBmb3IgYW5pbWF0ZWQgdmFsdWVzIHRoYXQgd291bGQgaGF2ZSBiZWVuIGJs
ZW5kZWQgb250bworICAgICAgICAgICAgLy8gdGhlIHN0eWxlIGFwcGxpZWQgZHVyaW5nIHRoZSBs
YXN0IHN0eWxlIHJlc29sdXRpb24uCisgICAgICAgICAgICBpZiAoYXV0byogdW5hbmltYXRlZFN0
eWxlID0ga2V5ZnJhbWVFZmZlY3QtPnVuYW5pbWF0ZWRTdHlsZSgpKQorICAgICAgICAgICAgICAg
IHJldHVybiAqdW5hbmltYXRlZFN0eWxlOworCisgICAgICAgICAgICAvLyBJZiB3ZSBoYXZlIGEg
a2V5ZnJhbWUgZWZmZWN0IHRhcmdldGluZyB0aGlzIHByb3BlcnR5LCBidXQgaXQgZG9lc24ndCB5
ZXQgaGF2ZSBhbiB1bmFuaW1hdGVkIHN0eWxlLCB0aGlzIGlzIGJlY2F1c2UgaXQgaGFzIG5vdAor
ICAgICAgICAgICAgLy8gaGFkIGEgY2hhbmNlIHRvIGFwcGx5IGl0c2VsZiB3aXRoIGEgbm9uLW51
bGwgcHJvZ3Jlc3MuIEluIHRoaXMgY2FzZSwgdGhlIGJlZm9yZS1jaGFuZ2UgYW5kIGFmdGVyLWNo
YW5nZSBzdHlsZXMgc2hvdWxkIGJlIHRoZQorICAgICAgICAgICAgLy8gc2FtZSBpbiBvcmRlciB0
byBwcmV2ZW50IGEgdHJhbnNpdGlvbiBmcm9tIGJlaW5nIHRyaWdnZXJlZCBhcyB0aGUgdW5hbmlt
YXRlZCBzdHlsZSBmb3IgdGhpcyBrZXlmcmFtZSBlZmZlY3Qgd2lsbCBtb3N0IGxpa2VseQorICAg
ICAgICAgICAgLy8gYmUgdGhpcyBhZnRlci1jaGFuZ2Ugc3R5bGUsIG9yIGFueSBmdXR1cmUgc3R5
bGUgY2hhbmdlIHRoYXQgbWF5IGhhcHBlbiBiZWZvcmUgdGhlIGtleWZyYW1lIGVmZmVjdCBzdGFy
dHMgYmxlbmRpbmcgYW5pbWF0ZWQgdmFsdWVzLgorICAgICAgICAgICAgcmV0dXJuIGFmdGVyQ2hh
bmdlU3R5bGU7CisgICAgICAgIH0KIAorICAgICAgICAvLyBJbiBhbnkgb3RoZXIgc2NlbmFyaW8s
IHRoZSBiZWZvcmUtY2hhbmdlIHN0eWxlIHNob3VsZCBiZSB0aGUgcHJldmlvdXNseSByZXNvbHZl
ZCBzdHlsZSBmb3IgdGhpcyBlbGVtZW50LgogICAgICAgICByZXR1cm4gY3VycmVudFN0eWxlOwog
ICAgIH0oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlv
blRpbWVsaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uVGltZWxpbmUu
aAppbmRleCA3YjhhOGI4MTk2NC4uZWIyMWFjOGIyN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FuaW1hdGlvbi9BbmltYXRpb25UaW1lbGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fu
aW1hdGlvbi9BbmltYXRpb25UaW1lbGluZS5oCkBAIC04OCw3ICs4OCw2IEBAIHByaXZhdGU6CiAg
ICAgdXNpbmcgRWxlbWVudFRvQ1NTQW5pbWF0aW9uc01hcCA9IEhhc2hNYXA8RWxlbWVudCosIENT
U0FuaW1hdGlvbkNvbGxlY3Rpb24+OwogCiAgICAgdm9pZCB1cGRhdGVHbG9iYWxQb3NpdGlvbihX
ZWJBbmltYXRpb24mKTsKLSAgICBSZWZQdHI8V2ViQW5pbWF0aW9uPiBjc3NBbmltYXRpb25Gb3JF
bGVtZW50QW5kUHJvcGVydHkoRWxlbWVudCYsIENTU1Byb3BlcnR5SUQpOwogICAgIFByb3BlcnR5
VG9UcmFuc2l0aW9uTWFwJiBlbnN1cmVSdW5uaW5nVHJhbnNpdGlvbnNCeVByb3BlcnR5KEVsZW1l
bnQmKTsKICAgICB2b2lkIHVwZGF0ZUNTU1RyYW5zaXRpb25zRm9yRWxlbWVudEFuZFByb3BlcnR5
KEVsZW1lbnQmLCBDU1NQcm9wZXJ0eUlELCBjb25zdCBSZW5kZXJTdHlsZSYgY3VycmVudFN0eWxl
LCBjb25zdCBSZW5kZXJTdHlsZSYgYWZ0ZXJDaGFuZ2VTdHlsZSwgUHJvcGVydHlUb1RyYW5zaXRp
b25NYXAmLCBQcm9wZXJ0eVRvVHJhbnNpdGlvbk1hcCYsIGNvbnN0IE1vbm90b25pY1RpbWUpOwog
ICAgIHZvaWQgcmVtb3ZlQ1NTQW5pbWF0aW9uQ3JlYXRlZEJ5TWFya3VwKEVsZW1lbnQmLCBDU1NB
bmltYXRpb24mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NBbmlt
YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU0FuaW1hdGlvbi5jcHAKaW5k
ZXggNThhZGEwM2Y4NGMuLjJkMWIzYTUyNjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
bmltYXRpb24vQ1NTQW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24v
Q1NTQW5pbWF0aW9uLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkNTU0FuaW1hdGlv
bi5oIgogCiAjaW5jbHVkZSAiQW5pbWF0aW9uLmgiCisjaW5jbHVkZSAiQW5pbWF0aW9uRXZlbnQu
aCIKICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKQEAgLTM4LDcgKzM5LDcgQEAgV1RGX01B
S0VfSVNPX0FMTE9DQVRFRF9JTVBMKENTU0FuaW1hdGlvbik7CiAKIFJlZjxDU1NBbmltYXRpb24+
IENTU0FuaW1hdGlvbjo6Y3JlYXRlKEVsZW1lbnQmIG93bmluZ0VsZW1lbnQsIGNvbnN0IEFuaW1h
dGlvbiYgYmFja2luZ0FuaW1hdGlvbiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlLCBjb25z
dCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBhZG9wdFJlZigq
bmV3IENTU0FuaW1hdGlvbihvd25pbmdFbGVtZW50LCBiYWNraW5nQW5pbWF0aW9uLCBuZXdTdHls
ZSkpOworICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRSZWYoKm5ldyBDU1NBbmltYXRpb24ob3duaW5n
RWxlbWVudCwgYmFja2luZ0FuaW1hdGlvbikpOwogICAgIHJlc3VsdC0+aW5pdGlhbGl6ZShvbGRT
dHlsZSwgbmV3U3R5bGUpOwogCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVh
dGVXZWJBbmltYXRpb24ocmVzdWx0LmdldCgpKTsKQEAgLTQ2LDEwICs0Nyw5IEBAIFJlZjxDU1NB
bmltYXRpb24+IENTU0FuaW1hdGlvbjo6Y3JlYXRlKEVsZW1lbnQmIG93bmluZ0VsZW1lbnQsIGNv
bnN0IEFuaW1hdGlvbiYKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1DU1NBbmltYXRpb246OkNT
U0FuaW1hdGlvbihFbGVtZW50JiBlbGVtZW50LCBjb25zdCBBbmltYXRpb24mIGJhY2tpbmdBbmlt
YXRpb24sIGNvbnN0IFJlbmRlclN0eWxlJiB1bmFuaW1hdGVkU3R5bGUpCitDU1NBbmltYXRpb246
OkNTU0FuaW1hdGlvbihFbGVtZW50JiBlbGVtZW50LCBjb25zdCBBbmltYXRpb24mIGJhY2tpbmdB
bmltYXRpb24pCiAgICAgOiBEZWNsYXJhdGl2ZUFuaW1hdGlvbihlbGVtZW50LCBiYWNraW5nQW5p
bWF0aW9uKQogICAgICwgbV9hbmltYXRpb25OYW1lKGJhY2tpbmdBbmltYXRpb24ubmFtZSgpKQot
ICAgICwgbV91bmFuaW1hdGVkU3R5bGUoUmVuZGVyU3R5bGU6OmNsb25lUHRyKHVuYW5pbWF0ZWRT
dHlsZSkpCiB7CiB9CiAKQEAgLTEyNyw0ICsxMjcsOSBAQCBFeGNlcHRpb25Pcjx2b2lkPiBDU1NB
bmltYXRpb246OmJpbmRpbmdzUGF1c2UoKQogICAgIHJldHVybiBEZWNsYXJhdGl2ZUFuaW1hdGlv
bjo6YmluZGluZ3NQYXVzZSgpOwogfQogCitSZWY8QW5pbWF0aW9uRXZlbnRCYXNlPiBDU1NBbmlt
YXRpb246OmNyZWF0ZUV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgZG91YmxlIGVs
YXBzZWRUaW1lLCBjb25zdCBTdHJpbmcmIHBzZXVkb0lkLCBPcHRpb25hbDxTZWNvbmRzPiB0aW1l
bGluZVRpbWUpCit7CisgICAgcmV0dXJuIEFuaW1hdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnRUeXBl
LCBtX2FuaW1hdGlvbk5hbWUsIGVsYXBzZWRUaW1lLCBwc2V1ZG9JZCwgdGltZWxpbmVUaW1lLCB0
aGlzKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYW5pbWF0aW9uL0NTU0FuaW1hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9u
L0NTU0FuaW1hdGlvbi5oCmluZGV4IDhhODA2YWFjMmFlLi5jYmUwYjQyMGM2YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU0FuaW1hdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FuaW1hdGlvbi9DU1NBbmltYXRpb24uaApAQCAtNDIsMTkgKzQyLDE4IEBAIHB1Ymxp
YzoKIAogICAgIGJvb2wgaXNDU1NBbmltYXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0
cnVlOyB9CiAgICAgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lKCkgY29uc3QgeyByZXR1cm4g
bV9hbmltYXRpb25OYW1lOyB9Ci0gICAgY29uc3QgUmVuZGVyU3R5bGUmIHVuYW5pbWF0ZWRTdHls
ZSgpIGNvbnN0IHsgcmV0dXJuICptX3VuYW5pbWF0ZWRTdHlsZTsgfQogCiAgICAgRXhjZXB0aW9u
T3I8dm9pZD4gYmluZGluZ3NQbGF5KCkgZmluYWw7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gYmlu
ZGluZ3NQYXVzZSgpIGZpbmFsOwogCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBzeW5jUHJvcGVydGll
c1dpdGhCYWNraW5nQW5pbWF0aW9uKCkgZmluYWw7CisgICAgUmVmPEFuaW1hdGlvbkV2ZW50QmFz
ZT4gY3JlYXRlRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBkb3VibGUgZWxhcHNl
ZFRpbWUsIGNvbnN0IFN0cmluZyYgcHNldWRvSWQsIE9wdGlvbmFsPFNlY29uZHM+IHRpbWVsaW5l
VGltZSkgZmluYWw7CiAKIHByaXZhdGU6Ci0gICAgQ1NTQW5pbWF0aW9uKEVsZW1lbnQmLCBjb25z
dCBBbmltYXRpb24mLCBjb25zdCBSZW5kZXJTdHlsZSYpOworICAgIENTU0FuaW1hdGlvbihFbGVt
ZW50JiwgY29uc3QgQW5pbWF0aW9uJik7CiAKICAgICBTdHJpbmcgbV9hbmltYXRpb25OYW1lOwot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gbV91bmFuaW1hdGVkU3R5bGU7CiAgICAg
Ym9vbCBtX3N0aWNreVBhdXNlZCB7IGZhbHNlIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hbmltYXRpb24vQ1NTVHJhbnNpdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmlt
YXRpb24vQ1NTVHJhbnNpdGlvbi5jcHAKaW5kZXggNmE2NmI4NzgxNDguLjU4NTliMmUzNGY4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTVHJhbnNpdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU1RyYW5zaXRpb24uY3BwCkBAIC0zMCw2ICsz
MCw3IEBACiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1l
bnRhdGlvbi5oIgogI2luY2x1ZGUgIktleWZyYW1lRWZmZWN0LmgiCisjaW5jbHVkZSAiVHJhbnNp
dGlvbkV2ZW50LmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtODUsNCArODYsOSBAQCB2b2lkIENTU1RyYW5zaXRpb246OnNldFRp
bWluZ1Byb3BlcnRpZXMoU2Vjb25kcyBkZWxheSwgU2Vjb25kcyBkdXJhdGlvbikKICAgICB1bnN1
c3BlbmRFZmZlY3RJbnZhbGlkYXRpb24oKTsKIH0KIAorUmVmPEFuaW1hdGlvbkV2ZW50QmFzZT4g
Q1NTVHJhbnNpdGlvbjo6Y3JlYXRlRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBk
b3VibGUgZWxhcHNlZFRpbWUsIGNvbnN0IFN0cmluZyYgcHNldWRvSWQsIE9wdGlvbmFsPFNlY29u
ZHM+IHRpbWVsaW5lVGltZSkKK3sKKyAgICByZXR1cm4gVHJhbnNpdGlvbkV2ZW50OjpjcmVhdGUo
ZXZlbnRUeXBlLCBnZXRQcm9wZXJ0eU5hbWVTdHJpbmcobV9wcm9wZXJ0eSksIGVsYXBzZWRUaW1l
LCBwc2V1ZG9JZCwgdGltZWxpbmVUaW1lLCB0aGlzKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU1RyYW5zaXRpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NUcmFuc2l0aW9uLmgKaW5kZXggNDIyNGFi
NTc2ODcuLmQxODI4NWNiYjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24v
Q1NTVHJhbnNpdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NUcmFuc2l0
aW9uLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIK
ICNpbmNsdWRlICJEZWNsYXJhdGl2ZUFuaW1hdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi9Nb25vdG9u
aWNUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC01NSw2ICs1Niw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgQ1NTVHJhbnNpdGlvbihFbGVt
ZW50JiwgQ1NTUHJvcGVydHlJRCwgTW9ub3RvbmljVGltZSBnZW5lcmF0aW9uVGltZSwgY29uc3Qg
QW5pbWF0aW9uJiwgY29uc3QgUmVuZGVyU3R5bGUmIG9sZFN0eWxlLCBjb25zdCBSZW5kZXJTdHls
ZSYgdGFyZ2V0U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiByZXZlcnNpbmdBZGp1c3RlZFN0YXJ0
U3R5bGUsIGRvdWJsZSk7CiAgICAgdm9pZCBzZXRUaW1pbmdQcm9wZXJ0aWVzKFNlY29uZHMgZGVs
YXksIFNlY29uZHMgZHVyYXRpb24pOworICAgIFJlZjxBbmltYXRpb25FdmVudEJhc2U+IGNyZWF0
ZUV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgZG91YmxlIGVsYXBzZWRUaW1lLCBj
b25zdCBTdHJpbmcmIHBzZXVkb0lkLCBPcHRpb25hbDxTZWNvbmRzPiB0aW1lbGluZVRpbWUpIGZp
bmFsOwogCiAgICAgQ1NTUHJvcGVydHlJRCBtX3Byb3BlcnR5OwogICAgIE1vbm90b25pY1RpbWUg
bV9nZW5lcmF0aW9uVGltZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9E
ZWNsYXJhdGl2ZUFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRGVjbGFy
YXRpdmVBbmltYXRpb24uY3BwCmluZGV4IGJiZTRjMzcwNTc1Li42MjZiODBlYmQ2MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRGVjbGFyYXRpdmVBbmltYXRpb24uY3BwCkBA
IC0yNyw3ICsyNyw2IEBACiAjaW5jbHVkZSAiRGVjbGFyYXRpdmVBbmltYXRpb24uaCIKIAogI2lu
Y2x1ZGUgIkFuaW1hdGlvbi5oIgotI2luY2x1ZGUgIkFuaW1hdGlvbkV2ZW50LmgiCiAjaW5jbHVk
ZSAiQ1NTQW5pbWF0aW9uLmgiCiAjaW5jbHVkZSAiQ1NTVHJhbnNpdGlvbi5oIgogI2luY2x1ZGUg
IkRvY3VtZW50VGltZWxpbmUuaCIKQEAgLTM1LDcgKzM0LDYgQEAKICNpbmNsdWRlICJFdmVudE5h
bWVzLmgiCiAjaW5jbHVkZSAiS2V5ZnJhbWVFZmZlY3QuaCIKICNpbmNsdWRlICJQc2V1ZG9FbGVt
ZW50LmgiCi0jaW5jbHVkZSAiVHJhbnNpdGlvbkV2ZW50LmgiCiAjaW5jbHVkZSA8d3RmL0lzb01h
bGxvY0lubGluZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDQsNyArNDIsNiBAQCBX
VEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoRGVjbGFyYXRpdmVBbmltYXRpb24pOwogCiBEZWNs
YXJhdGl2ZUFuaW1hdGlvbjo6RGVjbGFyYXRpdmVBbmltYXRpb24oRWxlbWVudCYgb3duaW5nRWxl
bWVudCwgY29uc3QgQW5pbWF0aW9uJiBiYWNraW5nQW5pbWF0aW9uKQogICAgIDogV2ViQW5pbWF0
aW9uKG93bmluZ0VsZW1lbnQuZG9jdW1lbnQoKSkKLSAgICAsIG1fZXZlbnRRdWV1ZShNYWluVGhy
ZWFkR2VuZXJpY0V2ZW50UXVldWU6OmNyZWF0ZShvd25pbmdFbGVtZW50KSkKICAgICAsIG1fb3du
aW5nRWxlbWVudCgmb3duaW5nRWxlbWVudCkKICAgICAsIG1fYmFja2luZ0FuaW1hdGlvbihjb25z
dF9jYXN0PEFuaW1hdGlvbiY+KGJhY2tpbmdBbmltYXRpb24pKQogewpAQCAtNjUsMTAgKzYyLDgg
QEAgdm9pZCBEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6dGljaygpCiAgICAgLy8gY2FuY2VsZWQgdXNp
bmcgdGhlIFdlYiBBbmltYXRpb25zIEFQSSBhbmQgaXQgc2hvdWxkIGJlIGRpc2Fzc29jaWF0ZWQg
ZnJvbSBpdHMgb3duZXIgZWxlbWVudC4KICAgICAvLyBGcm9tIHRoaXMgcG9pbnQgb24sIHRoaXMg
YW5pbWF0aW9uIGlzIGxpa2UgYW55IG90aGVyIGFuaW1hdGlvbiBhbmQgc2hvdWxkIG5vdCBhcHBl
YXIgaW4gdGhlCiAgICAgLy8gbWFwcyBjb250YWluaW5nIHJ1bm5pbmcgQ1NTIFRyYW5zaXRpb25z
IGFuZCBDU1MgQW5pbWF0aW9ucyBmb3IgYSBnaXZlbiBlbGVtZW50LgotICAgIGlmICh3YXNSZWxl
dmFudCAmJiBwbGF5U3RhdGUoKSA9PSBXZWJBbmltYXRpb246OlBsYXlTdGF0ZTo6SWRsZSkgewor
ICAgIGlmICh3YXNSZWxldmFudCAmJiBwbGF5U3RhdGUoKSA9PSBXZWJBbmltYXRpb246OlBsYXlT
dGF0ZTo6SWRsZSkKICAgICAgICAgZGlzYXNzb2NpYXRlRnJvbU93bmluZ0VsZW1lbnQoKTsKLSAg
ICAgICAgbV9ldmVudFF1ZXVlLT5jbG9zZSgpOwotICAgIH0KIH0KIAogYm9vbCBEZWNsYXJhdGl2
ZUFuaW1hdGlvbjo6Y2FuSGF2ZUdsb2JhbFBvc2l0aW9uKCkKQEAgLTkyLDE3ICs4Nyw2IEBAIHZv
aWQgRGVjbGFyYXRpdmVBbmltYXRpb246OmRpc2Fzc29jaWF0ZUZyb21Pd25pbmdFbGVtZW50KCkK
ICAgICBtX293bmluZ0VsZW1lbnQgPSBudWxscHRyOwogfQogCi1ib29sIERlY2xhcmF0aXZlQW5p
bWF0aW9uOjpuZWVkc1RpY2soKSBjb25zdAotewotICAgIHJldHVybiBXZWJBbmltYXRpb246Om5l
ZWRzVGljaygpIHx8IG1fZXZlbnRRdWV1ZS0+aGFzUGVuZGluZ0V2ZW50cygpOwotfQotCi12b2lk
IERlY2xhcmF0aXZlQW5pbWF0aW9uOjpyZW1vdmUoKQotewotICAgIG1fZXZlbnRRdWV1ZS0+Y2xv
c2UoKTsKLSAgICBXZWJBbmltYXRpb246OnJlbW92ZSgpOwotfQotCiB2b2lkIERlY2xhcmF0aXZl
QW5pbWF0aW9uOjpzZXRCYWNraW5nQW5pbWF0aW9uKGNvbnN0IEFuaW1hdGlvbiYgYmFja2luZ0Fu
aW1hdGlvbikKIHsKICAgICBtX2JhY2tpbmdBbmltYXRpb24gPSBjb25zdF9jYXN0PEFuaW1hdGlv
biY+KGJhY2tpbmdBbmltYXRpb24pOwpAQCAtMzUxLDEwICszMzUsMTEgQEAgdm9pZCBEZWNsYXJh
dGl2ZUFuaW1hdGlvbjo6ZW5xdWV1ZURPTUV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlw
ZSwgU2Vjb25kcwogewogICAgIEFTU0VSVChtX293bmluZ0VsZW1lbnQpOwogICAgIGF1dG8gdGlt
ZSA9IHNlY29uZHNUb1dlYkFuaW1hdGlvbnNBUElUaW1lKGVsYXBzZWRUaW1lKSAvIDEwMDA7Ci0g
ICAgaWYgKGlzPENTU0FuaW1hdGlvbj4odGhpcykpCi0gICAgICAgIG1fZXZlbnRRdWV1ZS0+ZW5x
dWV1ZUV2ZW50KEFuaW1hdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnRUeXBlLCBkb3duY2FzdDxDU1NB
bmltYXRpb24+KHRoaXMpLT5hbmltYXRpb25OYW1lKCksIHRpbWUsIFBzZXVkb0VsZW1lbnQ6OnBz
ZXVkb0VsZW1lbnROYW1lRm9yRXZlbnRzKG1fb3duaW5nRWxlbWVudC0+cHNldWRvSWQoKSkpKTsK
LSAgICBlbHNlIGlmIChpczxDU1NUcmFuc2l0aW9uPih0aGlzKSkKLSAgICAgICAgbV9ldmVudFF1
ZXVlLT5lbnF1ZXVlRXZlbnQoVHJhbnNpdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnRUeXBlLCBkb3du
Y2FzdDxDU1NUcmFuc2l0aW9uPih0aGlzKS0+dHJhbnNpdGlvblByb3BlcnR5KCksIHRpbWUsIFBz
ZXVkb0VsZW1lbnQ6OnBzZXVkb0VsZW1lbnROYW1lRm9yRXZlbnRzKG1fb3duaW5nRWxlbWVudC0+
cHNldWRvSWQoKSkpKTsKKyAgICBjb25zdCBhdXRvJiBwc2V1ZG9JZCA9IFBzZXVkb0VsZW1lbnQ6
OnBzZXVkb0VsZW1lbnROYW1lRm9yRXZlbnRzKG1fb3duaW5nRWxlbWVudC0+cHNldWRvSWQoKSk7
CisgICAgYXV0byB0aW1lbGluZVRpbWUgPSB0aW1lbGluZSgpID8gdGltZWxpbmUoKS0+Y3VycmVu
dFRpbWUoKSA6IFdURjo6bnVsbG9wdDsKKyAgICBhdXRvIGV2ZW50ID0gY3JlYXRlRXZlbnQoZXZl
bnRUeXBlLCB0aW1lLCBwc2V1ZG9JZCwgdGltZWxpbmVUaW1lKTsKKyAgICBldmVudC0+c2V0VGFy
Z2V0KG1fb3duaW5nRWxlbWVudCk7CisgICAgZW5xdWV1ZUFuaW1hdGlvbkV2ZW50KFdURk1vdmUo
ZXZlbnQpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9hbmltYXRpb24vRGVjbGFyYXRpdmVBbmltYXRpb24uaAppbmRleCAzNjNlOThjZTMxNy4uYTM3
ZmM2ZjQ3NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9EZWNsYXJhdGl2
ZUFuaW1hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9EZWNsYXJhdGl2ZUFu
aW1hdGlvbi5oCkBAIC0yNyw3ICsyNyw2IEBACiAKICNpbmNsdWRlICJBbmltYXRpb25FZmZlY3Qu
aCIKICNpbmNsdWRlICJBbmltYXRpb25FZmZlY3RQaGFzZS5oIgotI2luY2x1ZGUgIkdlbmVyaWNF
dmVudFF1ZXVlLmgiCiAjaW5jbHVkZSAiV2ViQW5pbWF0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL1Jl
Zi5oPgogCkBAIC02NCw3ICs2Myw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFRpbWVsaW5lKFJl
ZlB0cjxBbmltYXRpb25UaW1lbGluZT4mJikgZmluYWw7CiAgICAgdm9pZCBjYW5jZWwoKSBmaW5h
bDsKIAotICAgIGJvb2wgbmVlZHNUaWNrKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCB0aWNr
KCkgb3ZlcnJpZGU7CiAKICAgICBib29sIGNhbkhhdmVHbG9iYWxQb3NpdGlvbigpIGZpbmFsOwpA
QCAtNzQsNiArNzIsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6
ZShjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHls
ZSk7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNQcm9wZXJ0aWVzV2l0aEJhY2tpbmdBbmltYXRpb24o
KTsKKyAgICB2aXJ0dWFsIFJlZjxBbmltYXRpb25FdmVudEJhc2U+IGNyZWF0ZUV2ZW50KGNvbnN0
IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgZG91YmxlIGVsYXBzZWRUaW1lLCBjb25zdCBTdHJpbmcm
IHBzZXVkb0lkLCBPcHRpb25hbDxTZWNvbmRzPiB0aW1lbGluZVRpbWUpID0gMDsKICAgICB2b2lk
IGludmFsaWRhdGVET01FdmVudHMoU2Vjb25kcyBlbGFwc2VkVGltZSA9IDBfcyk7CiAKIHByaXZh
dGU6CkBAIC04MSwxMyArODAsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGZsdXNoUGVuZGluZ1N0
eWxlQ2hhbmdlcygpIGNvbnN0OwogICAgIEFuaW1hdGlvbkVmZmVjdFBoYXNlIHBoYXNlV2l0aG91
dEVmZmVjdCgpIGNvbnN0OwogICAgIHZvaWQgZW5xdWV1ZURPTUV2ZW50KGNvbnN0IEF0b21TdHJp
bmcmLCBTZWNvbmRzKTsKLSAgICB2b2lkIHJlbW92ZSgpIGZpbmFsOwogCiAgICAgYm9vbCBtX3dh
c1BlbmRpbmcgeyBmYWxzZSB9OwogICAgIEFuaW1hdGlvbkVmZmVjdFBoYXNlIG1fcHJldmlvdXNQ
aGFzZSB7IEFuaW1hdGlvbkVmZmVjdFBoYXNlOjpJZGxlIH07CiAKLSAgICBVbmlxdWVSZWY8TWFp
blRocmVhZEdlbmVyaWNFdmVudFF1ZXVlPiBtX2V2ZW50UXVldWU7Ci0KICAgICBFbGVtZW50KiBt
X293bmluZ0VsZW1lbnQ7CiAgICAgUmVmPEFuaW1hdGlvbj4gbV9iYWNraW5nQW5pbWF0aW9uOwog
ICAgIGRvdWJsZSBtX3ByZXZpb3VzSXRlcmF0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0
aW9uL0RvY3VtZW50VGltZWxpbmUuY3BwCmluZGV4IGJmODJkYjQ2MzE4Li4xMmYzM2VkNWE5MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lLmNwcApAQCAt
MjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkRvY3VtZW50VGlt
ZWxpbmUuaCIKIAotI2luY2x1ZGUgIkFuaW1hdGlvblBsYXliYWNrRXZlbnQuaCIKKyNpbmNsdWRl
ICJBbmltYXRpb25FdmVudEJhc2UuaCIKICNpbmNsdWRlICJDU1NBbmltYXRpb24uaCIKICNpbmNs
dWRlICJDU1NUcmFuc2l0aW9uLmgiCiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCkBAIC04OCw2ICs4
OCw3IEBAIHZvaWQgRG9jdW1lbnRUaW1lbGluZTo6ZGV0YWNoRnJvbURvY3VtZW50KCkKICAgICBp
ZiAobV9kb2N1bWVudCkKICAgICAgICAgbV9kb2N1bWVudC0+cmVtb3ZlVGltZWxpbmUoKnRoaXMp
OwogCisgICAgbV9wZW5kaW5nQW5pbWF0aW9uRXZlbnRzLmNsZWFyKCk7CiAgICAgbV9jdXJyZW50
VGltZUNsZWFyaW5nVGFza1F1ZXVlLmNsb3NlKCk7CiAgICAgbV9lbGVtZW50c1dpdGhSdW5uaW5n
QWNjZWxlcmF0ZWRBbmltYXRpb25zLmNsZWFyKCk7CiAKQEAgLTk1LDcgKzk2LDcgQEAgdm9pZCBE
b2N1bWVudFRpbWVsaW5lOjpkZXRhY2hGcm9tRG9jdW1lbnQoKQogICAgIHdoaWxlICghYW5pbWF0
aW9uc1RvUmVtb3ZlLmlzRW1wdHkoKSkKICAgICAgICAgYW5pbWF0aW9uc1RvUmVtb3ZlLmZpcnN0
KCktPnJlbW92ZSgpOwogCi0gICAgdW5zY2hlZHVsZUFuaW1hdGlvblJlc29sdXRpb24oKTsKKyAg
ICBjbGVhclRpY2tTY2hlZHVsZVRpbWVyKCk7CiAgICAgbV9kb2N1bWVudCA9IG51bGxwdHI7CiB9
CiAKQEAgLTIzNCw3ICsyMzUsNyBAQCB2b2lkIERvY3VtZW50VGltZWxpbmU6OnN1c3BlbmRBbmlt
YXRpb25zKCkKIAogICAgIGFwcGx5UGVuZGluZ0FjY2VsZXJhdGVkQW5pbWF0aW9ucygpOwogCi0g
ICAgdW5zY2hlZHVsZUFuaW1hdGlvblJlc29sdXRpb24oKTsKKyAgICBjbGVhclRpY2tTY2hlZHVs
ZVRpbWVyKCk7CiB9CiAKIHZvaWQgRG9jdW1lbnRUaW1lbGluZTo6cmVzdW1lQW5pbWF0aW9ucygp
CkBAIC0zMjcsMzEgKzMyOCwzMSBAQCB2b2lkIERvY3VtZW50VGltZWxpbmU6OnJlbW92ZUFuaW1h
dGlvbihXZWJBbmltYXRpb24mIGFuaW1hdGlvbikKIHsKICAgICBBbmltYXRpb25UaW1lbGluZTo6
cmVtb3ZlQW5pbWF0aW9uKGFuaW1hdGlvbik7CiAKLSAgICBpZiAoIXNob3VsZFJ1blVwZGF0ZUFu
aW1hdGlvbnNBbmRTZW5kRXZlbnRzSWdub3JpbmdTdXNwZW5zaW9uU3RhdGUoKSkKLSAgICAgICAg
dW5zY2hlZHVsZUFuaW1hdGlvblJlc29sdXRpb24oKTsKKyAgICBpZiAobV9hbmltYXRpb25zLmlz
RW1wdHkoKSkKKyAgICAgICAgY2xlYXJUaWNrU2NoZWR1bGVUaW1lcigpOwogfQogCiB2b2lkIERv
Y3VtZW50VGltZWxpbmU6OnNjaGVkdWxlQW5pbWF0aW9uUmVzb2x1dGlvbigpCiB7Ci0gICAgaWYg
KG1faXNTdXNwZW5kZWQgfHwgbV9hbmltYXRpb25SZXNvbHV0aW9uU2NoZWR1bGVkIHx8ICFzaG91
bGRSdW5VcGRhdGVBbmltYXRpb25zQW5kU2VuZEV2ZW50c0lnbm9yaW5nU3VzcGVuc2lvblN0YXRl
KCkpCisgICAgaWYgKG1faXNTdXNwZW5kZWQgfHwgbV9hbmltYXRpb25SZXNvbHV0aW9uU2NoZWR1
bGVkIHx8ICFtX2RvY3VtZW50IHx8ICFtX2RvY3VtZW50LT5wYWdlKCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGlmICghbV9kb2N1bWVudCB8fCAhbV9kb2N1bWVudC0+cGFnZSgpKQorICAgIC8v
IFdlIG5lZWQgc29tZSByZWxldmFudCBhbmltYXRpb25zIG9yIHBlbmRpbmcgZXZlbnRzIHRvIHBy
b2NlZWQuCisgICAgaWYgKCFzaG91bGRSdW5VcGRhdGVBbmltYXRpb25zQW5kU2VuZEV2ZW50c0ln
bm9yaW5nU3VzcGVuc2lvblN0YXRlKCkpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIG1f
ZG9jdW1lbnQtPnBhZ2UoKS0+cmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyKCkuc2NoZWR1bGVUaW1l
ZFJlbmRlcmluZ1VwZGF0ZSgpOwogICAgIG1fYW5pbWF0aW9uUmVzb2x1dGlvblNjaGVkdWxlZCA9
IHRydWU7CiB9CiAKLXZvaWQgRG9jdW1lbnRUaW1lbGluZTo6dW5zY2hlZHVsZUFuaW1hdGlvblJl
c29sdXRpb24oKQordm9pZCBEb2N1bWVudFRpbWVsaW5lOjpjbGVhclRpY2tTY2hlZHVsZVRpbWVy
KCkKIHsKICAgICBtX3RpY2tTY2hlZHVsZVRpbWVyLnN0b3AoKTsKLSAgICBtX2FuaW1hdGlvblJl
c29sdXRpb25TY2hlZHVsZWQgPSBmYWxzZTsKIH0KIAogYm9vbCBEb2N1bWVudFRpbWVsaW5lOjpz
aG91bGRSdW5VcGRhdGVBbmltYXRpb25zQW5kU2VuZEV2ZW50c0lnbm9yaW5nU3VzcGVuc2lvblN0
YXRlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gIW1fYW5pbWF0aW9ucy5pc0VtcHR5KCkgfHwgIW1f
YWNjZWxlcmF0ZWRBbmltYXRpb25zUGVuZGluZ1J1bm5pbmdTdGF0ZUNoYW5nZS5pc0VtcHR5KCk7
CisgICAgcmV0dXJuICFtX2FuaW1hdGlvbnMuaXNFbXB0eSgpIHx8ICFtX3BlbmRpbmdBbmltYXRp
b25FdmVudHMuaXNFbXB0eSgpIHx8ICFtX2FjY2VsZXJhdGVkQW5pbWF0aW9uc1BlbmRpbmdSdW5u
aW5nU3RhdGVDaGFuZ2UuaXNFbXB0eSgpOwogfQogCiB2b2lkIERvY3VtZW50VGltZWxpbmU6OnVw
ZGF0ZUN1cnJlbnRUaW1lKERPTUhpZ2hSZXNUaW1lU3RhbXAgdGltZXN0YW1wKQpAQCAtMzU5LDE5
ICszNjAsMjMgQEAgdm9pZCBEb2N1bWVudFRpbWVsaW5lOjp1cGRhdGVDdXJyZW50VGltZShET01I
aWdoUmVzVGltZVN0YW1wIHRpbWVzdGFtcCkKICAgICAvLyBXZSBuZWVkIHRvIGZyZWV6ZSB0aGUg
Y3VycmVudCB0aW1lIGV2ZW4gaWYgbm8gYW5pbWF0aW9uIGlzIHJ1bm5pbmcuCiAgICAgLy8gZG9j
dW1lbnQudGltZWxpbmUuY3VycmVudFRpbWUgbWF5IGJlIGNhbGxlZCBmcm9tIGEgckFGIGNhbGxi
YWNrIGFuZAogICAgIC8vIGl0IGhhcyB0byBtYXRjaCB0aGUgckFGIHRpbWVzdGFtcC4KLSAgICBp
ZiAoIW1faXNTdXNwZW5kZWQpCisgICAgaWYgKCFtX2lzU3VzcGVuZGVkIHx8ICFzaG91bGRSdW5V
cGRhdGVBbmltYXRpb25zQW5kU2VuZEV2ZW50c0lnbm9yaW5nU3VzcGVuc2lvblN0YXRlKCkpCiAg
ICAgICAgIGNhY2hlQ3VycmVudFRpbWUodGltZXN0YW1wKTsKIH0KIAogdm9pZCBEb2N1bWVudFRp
bWVsaW5lOjp1cGRhdGVBbmltYXRpb25zQW5kU2VuZEV2ZW50cygpCiB7Ci0gICAgaWYgKG1faXNT
dXNwZW5kZWQgfHwgIXNob3VsZFJ1blVwZGF0ZUFuaW1hdGlvbnNBbmRTZW5kRXZlbnRzSWdub3Jp
bmdTdXNwZW5zaW9uU3RhdGUoKSkKLSAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gVXBkYXRpbmcg
YW5pbWF0aW9ucyBhbmQgc2VuZGluZyBldmVudHMgbWF5IGludmFsaWRhdGUgdGhlIHRpbWluZyBv
ZiBzb21lIGFuaW1hdGlvbnMsIHNvIHdlIG11c3Qgc2V0IHRoZSBtX2FuaW1hdGlvblJlc29sdXRp
b25TY2hlZHVsZWQKICAgICAvLyBmbGFnIHRvIGZhbHNlIHByaW9yIHRvIHJ1bm5pbmcgdGhhdCBw
cm9jZWR1cmUgdG8gYWxsb3cgYW5pbWF0aW9uIHdpdGggdGltaW5nIG1vZGVsIHVwZGF0ZXMgdG8g
c2NoZWR1bGUgdXBkYXRlcy4KICAgICBtX2FuaW1hdGlvblJlc29sdXRpb25TY2hlZHVsZWQgPSBm
YWxzZTsKIAorICAgIGlmIChtX2lzU3VzcGVuZGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBp
ZiAoIXNob3VsZFJ1blVwZGF0ZUFuaW1hdGlvbnNBbmRTZW5kRXZlbnRzSWdub3JpbmdTdXNwZW5z
aW9uU3RhdGUoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaW50ZXJuYWxVcGRhdGVBbmltYXRp
b25zQW5kU2VuZEV2ZW50cygpOwogICAgIGFwcGx5UGVuZGluZ0FjY2VsZXJhdGVkQW5pbWF0aW9u
cygpOwogCkBAIC0zODMsNiArMzg4LDExIEBAIHZvaWQgRG9jdW1lbnRUaW1lbGluZTo6aW50ZXJu
YWxVcGRhdGVBbmltYXRpb25zQW5kU2VuZEV2ZW50cygpCiB7CiAgICAgbV9udW1iZXJPZkFuaW1h
dGlvblRpbWVsaW5lSW52YWxpZGF0aW9uc0ZvclRlc3RpbmcrKzsKIAorICAgIC8vIGVucXVldWVB
bmltYXRpb25FdmVudCgpIGNhbGxzIHNjaGVkdWxlQW5pbWF0aW9uUmVzb2x1dGlvbigpIHRvIGVu
c3VyZSB0aGF0IHRoZSAidXBkYXRlIGFuaW1hdGlvbnMgYW5kIHNlbmQgZXZlbnRzIgorICAgIC8v
IHByb2NlZHVyZSBpcyBydW4gYW5kIGVucXVldWVkIGV2ZW50cyBhcmUgZGlzcGF0Y2hlZCBpbiB0
aGUgbmV4dCBmcmFtZS4gSG93ZXZlciwgZXZlbnRzIHRoYXQgYXJlIGVucXVldWVkIHdoaWxlCisg
ICAgLy8gdGhpcyBwcm9jZWR1cmUgaXMgcnVubmluZyBzaG91bGQgbm90IHNjaGVkdWxlIGFuaW1h
dGlvbiByZXNvbHV0aW9uIHVudGlsIHRoZSBldmVudCBxdWV1ZSBoYXMgYmVlbiBjbGVhcmVkLgor
ICAgIG1fc2hvdWxkU2NoZWR1bGVBbmltYXRpb25SZXNvbHV0aW9uRm9yTmV3UGVuZGluZ0V2ZW50
cyA9IGZhbHNlOworCiAgICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL3dlYi1hbmltYXRp
b25zLyN1cGRhdGUtYW5pbWF0aW9ucy1hbmQtc2VuZC1ldmVudHMKIAogICAgIC8vIDEuIFVwZGF0
ZSB0aGUgY3VycmVudCB0aW1lIG9mIGFsbCB0aW1lbGluZXMgYXNzb2NpYXRlZCB3aXRoIGRvYyBw
YXNzaW5nIG5vdyBhcyB0aGUgdGltZXN0YW1wLgpAQCAtNDIxLDkgKzQzMSwxMCBAQCB2b2lkIERv
Y3VtZW50VGltZWxpbmU6OmludGVybmFsVXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVudHMoKQog
ICAgIC8vIDQuIExldCBldmVudHMgdG8gZGlzcGF0Y2ggYmUgYSBjb3B5IG9mIGRvYydzIHBlbmRp
bmcgYW5pbWF0aW9uIGV2ZW50IHF1ZXVlLgogICAgIC8vIDUuIENsZWFyIGRvYydzIHBlbmRpbmcg
YW5pbWF0aW9uIGV2ZW50IHF1ZXVlLgogICAgIGF1dG8gcGVuZGluZ0FuaW1hdGlvbkV2ZW50cyA9
IFdURk1vdmUobV9wZW5kaW5nQW5pbWF0aW9uRXZlbnRzKTsKKyAgICBtX3Nob3VsZFNjaGVkdWxl
QW5pbWF0aW9uUmVzb2x1dGlvbkZvck5ld1BlbmRpbmdFdmVudHMgPSB0cnVlOwogCiAgICAgLy8g
Ni4gUGVyZm9ybSBhIHN0YWJsZSBzb3J0IG9mIHRoZSBhbmltYXRpb24gZXZlbnRzIGluIGV2ZW50
cyB0byBkaXNwYXRjaCBhcyBmb2xsb3dzLgotICAgIHN0ZDo6c3RhYmxlX3NvcnQocGVuZGluZ0Fu
aW1hdGlvbkV2ZW50cy5iZWdpbigpLCBwZW5kaW5nQW5pbWF0aW9uRXZlbnRzLmVuZCgpLCBbXSAo
Y29uc3QgUmVmPEFuaW1hdGlvblBsYXliYWNrRXZlbnQ+JiBsaHMsIGNvbnN0IFJlZjxBbmltYXRp
b25QbGF5YmFja0V2ZW50PiYgcmhzKSB7CisgICAgc3RkOjpzdGFibGVfc29ydChwZW5kaW5nQW5p
bWF0aW9uRXZlbnRzLmJlZ2luKCksIHBlbmRpbmdBbmltYXRpb25FdmVudHMuZW5kKCksIFtdIChj
b25zdCBSZWY8QW5pbWF0aW9uRXZlbnRCYXNlPiYgbGhzLCBjb25zdCBSZWY8QW5pbWF0aW9uRXZl
bnRCYXNlPiYgcmhzKSB7CiAgICAgICAgIC8vIDEuIFNvcnQgdGhlIGV2ZW50cyBieSB0aGVpciBz
Y2hlZHVsZWQgZXZlbnQgdGltZSBzdWNoIHRoYXQgZXZlbnRzIHRoYXQgd2VyZSBzY2hlZHVsZWQg
dG8gb2NjdXIgZWFybGllciwgc29ydCBiZWZvcmUgZXZlbnRzIHNjaGVkdWxlZCB0byBvY2N1ciBs
YXRlcgogICAgICAgICAvLyBhbmQgZXZlbnRzIHdob3NlIHNjaGVkdWxlZCBldmVudCB0aW1lIGlz
IHVucmVzb2x2ZWQgc29ydCBiZWZvcmUgZXZlbnRzIHdpdGggYSByZXNvbHZlZCBzY2hlZHVsZWQg
ZXZlbnQgdGltZS4KICAgICAgICAgLy8gMi4gV2l0aGluIGV2ZW50cyB3aXRoIGVxdWFsIHNjaGVk
dWxlZCBldmVudCB0aW1lcywgc29ydCBieSB0aGVpciBjb21wb3NpdGUgb3JkZXIuIEZJWE1FOiBX
ZSBkb24ndCBkbyB0aGlzLgpAQCAtNDM3LDggKzQ0OCw4IEBAIHZvaWQgRG9jdW1lbnRUaW1lbGlu
ZTo6aW50ZXJuYWxVcGRhdGVBbmltYXRpb25zQW5kU2VuZEV2ZW50cygpCiAgICAgfSk7CiAKICAg
ICAvLyA3LiBEaXNwYXRjaCBlYWNoIG9mIHRoZSBldmVudHMgaW4gZXZlbnRzIHRvIGRpc3BhdGNo
IGF0IHRoZWlyIGNvcnJlc3BvbmRpbmcgdGFyZ2V0IHVzaW5nIHRoZSBvcmRlciBlc3RhYmxpc2hl
ZCBpbiB0aGUgcHJldmlvdXMgc3RlcC4KLSAgICBmb3IgKGF1dG8mIHBlbmRpbmdFdmVudCA6IHBl
bmRpbmdBbmltYXRpb25FdmVudHMpCi0gICAgICAgIHBlbmRpbmdFdmVudC0+dGFyZ2V0KCktPmRp
c3BhdGNoRXZlbnQocGVuZGluZ0V2ZW50KTsKKyAgICBmb3IgKGF1dG8mIHBlbmRpbmdBbmltYXRp
b25FdmVudCA6IHBlbmRpbmdBbmltYXRpb25FdmVudHMpCisgICAgICAgIHBlbmRpbmdBbmltYXRp
b25FdmVudC0+dGFyZ2V0KCktPmRpc3BhdGNoRXZlbnQocGVuZGluZ0FuaW1hdGlvbkV2ZW50KTsK
IAogICAgIC8vIFRoaXMgd2lsbCBjYW5jZWwgYW55IHNjaGVkdWxlZCBpbnZhbGlkYXRpb24gaWYg
d2UgZW5kIHVwIHJlbW92aW5nIGFsbCBhbmltYXRpb25zLgogICAgIGZvciAoYXV0byYgYW5pbWF0
aW9uIDogYW5pbWF0aW9uc1RvUmVtb3ZlKSB7CkBAIC01NDcsNiArNTU4LDEwIEBAIHZvaWQgRG9j
dW1lbnRUaW1lbGluZTo6dHJhbnNpdGlvbkRpZENvbXBsZXRlKFJlZlB0cjxDU1NUcmFuc2l0aW9u
PiB0cmFuc2l0aW9uKQogCiB2b2lkIERvY3VtZW50VGltZWxpbmU6OnNjaGVkdWxlTmV4dFRpY2so
KQogeworICAgIC8vIElmIHdlIGhhdmUgcGVuZGluZyBhbmltYXRpb24gZXZlbnRzLCB3ZSBuZWVk
IHRvIHNjaGVkdWxlIGFuIHVwZGF0ZSByaWdodCBhd2F5LgorICAgIGlmICghbV9wZW5kaW5nQW5p
bWF0aW9uRXZlbnRzLmlzRW1wdHkoKSkKKyAgICAgICAgc2NoZWR1bGVBbmltYXRpb25SZXNvbHV0
aW9uKCk7CisKICAgICAvLyBUaGVyZSBpcyBubyB0aWNrIHRvIHNjaGVkdWxlIGlmIHdlIGRvbid0
IGhhdmUgYW55IHJlbGV2YW50IGFuaW1hdGlvbnMuCiAgICAgaWYgKG1fYW5pbWF0aW9ucy5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTY2NSw3ICs2ODAsNyBAQCB2b2lkIERvY3VtZW50
VGltZWxpbmU6OmFuaW1hdGlvbkFjY2VsZXJhdGVkUnVubmluZ1N0YXRlRGlkQ2hhbmdlKFdlYkFu
aW1hdGlvbiYgYQogICAgIGlmIChzaG91bGRSdW5VcGRhdGVBbmltYXRpb25zQW5kU2VuZEV2ZW50
c0lnbm9yaW5nU3VzcGVuc2lvblN0YXRlKCkpCiAgICAgICAgIHNjaGVkdWxlQW5pbWF0aW9uUmVz
b2x1dGlvbigpOwogICAgIGVsc2UKLSAgICAgICAgdW5zY2hlZHVsZUFuaW1hdGlvblJlc29sdXRp
b24oKTsKKyAgICAgICAgY2xlYXJUaWNrU2NoZWR1bGVUaW1lcigpOwogfQogCiB2b2lkIERvY3Vt
ZW50VGltZWxpbmU6OnVwZGF0ZUxpc3RPZkVsZW1lbnRzV2l0aFJ1bm5pbmdBY2NlbGVyYXRlZEFu
aW1hdGlvbnNGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQpCkBAIC03MDgsOSArNzIzLDEyIEBA
IGJvb2wgRG9jdW1lbnRUaW1lbGluZTo6cnVubmluZ0FuaW1hdGlvbnNGb3JFbGVtZW50QXJlQWxs
QWNjZWxlcmF0ZWQoRWxlbWVudCYgZWxlCiAgICAgcmV0dXJuIG1fZWxlbWVudHNXaXRoUnVubmlu
Z0FjY2VsZXJhdGVkQW5pbWF0aW9ucy5jb250YWlucygmZWxlbWVudCk7CiB9CiAKLXZvaWQgRG9j
dW1lbnRUaW1lbGluZTo6ZW5xdWV1ZUFuaW1hdGlvblBsYXliYWNrRXZlbnQoQW5pbWF0aW9uUGxh
eWJhY2tFdmVudCYgZXZlbnQpCit2b2lkIERvY3VtZW50VGltZWxpbmU6OmVucXVldWVBbmltYXRp
b25FdmVudChBbmltYXRpb25FdmVudEJhc2UmIGV2ZW50KQogeworICAgIFN0cmluZyBldmVudFR5
cGUgPSBldmVudC50eXBlKCkuc3RyaW5nKCk7CiAgICAgbV9wZW5kaW5nQW5pbWF0aW9uRXZlbnRz
LmFwcGVuZChldmVudCk7CisgICAgaWYgKG1fc2hvdWxkU2NoZWR1bGVBbmltYXRpb25SZXNvbHV0
aW9uRm9yTmV3UGVuZGluZ0V2ZW50cykKKyAgICAgICAgc2NoZWR1bGVBbmltYXRpb25SZXNvbHV0
aW9uKCk7CiB9CiAKIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBkb3VibGU+PiBEb2N1bWVudFRp
bWVsaW5lOjphY2NlbGVyYXRlZEFuaW1hdGlvbnNGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQp
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1l
bGluZS5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUuaAppbmRl
eCAxZmNiODA2MDcxMC4uNTkyYTlkNTRmMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fu
aW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9u
L0RvY3VtZW50VGltZWxpbmUuaApAQCAtMzUsNyArMzUsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNsYXNzIEFuaW1hdGlvblBsYXliYWNrRXZlbnQ7CitjbGFzcyBBbmltYXRpb25FdmVu
dEJhc2U7CiBjbGFzcyBSZW5kZXJFbGVtZW50OwogCiBjbGFzcyBEb2N1bWVudFRpbWVsaW5lIGZp
bmFsIDogcHVibGljIEFuaW1hdGlvblRpbWVsaW5lLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8RG9j
dW1lbnRUaW1lbGluZT4KQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAgIGJvb2wgcnVubmlu
Z0FuaW1hdGlvbnNGb3JFbGVtZW50QXJlQWxsQWNjZWxlcmF0ZWQoRWxlbWVudCYpIGNvbnN0Owog
ICAgIHZvaWQgZGV0YWNoRnJvbURvY3VtZW50KCk7CiAKLSAgICB2b2lkIGVucXVldWVBbmltYXRp
b25QbGF5YmFja0V2ZW50KEFuaW1hdGlvblBsYXliYWNrRXZlbnQmKTsKKyAgICB2b2lkIGVucXVl
dWVBbmltYXRpb25FdmVudChBbmltYXRpb25FdmVudEJhc2UmKTsKICAgICAKICAgICBib29sIHNj
aGVkdWxlZFVwZGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYW5pbWF0aW9uUmVzb2x1dGlvblNjaGVk
dWxlZDsgfQogICAgIHZvaWQgdXBkYXRlQ3VycmVudFRpbWUoRE9NSGlnaFJlc1RpbWVTdGFtcCB0
aW1lc3RhbXApOwpAQCAtOTIsMTEgKzkyLDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNhY2hlQ3Vy
cmVudFRpbWUoRE9NSGlnaFJlc1RpbWVTdGFtcCk7CiAgICAgdm9pZCBtYXliZUNsZWFyQ2FjaGVk
Q3VycmVudFRpbWUoKTsKICAgICB2b2lkIHNjaGVkdWxlSW52YWxpZGF0aW9uVGFza0lmTmVlZGVk
KCk7Ci0gICAgdm9pZCBwZXJmb3JtSW52YWxpZGF0aW9uVGFzaygpOwogICAgIHZvaWQgc2NoZWR1
bGVBbmltYXRpb25SZXNvbHV0aW9uKCk7Ci0gICAgdm9pZCB1bnNjaGVkdWxlQW5pbWF0aW9uUmVz
b2x1dGlvbigpOworICAgIHZvaWQgY2xlYXJUaWNrU2NoZWR1bGVUaW1lcigpOwogICAgIHZvaWQg
aW50ZXJuYWxVcGRhdGVBbmltYXRpb25zQW5kU2VuZEV2ZW50cygpOwotICAgIHZvaWQgcGVyZm9y
bUV2ZW50RGlzcGF0Y2hUYXNrKCk7CiAgICAgdm9pZCB1cGRhdGVMaXN0T2ZFbGVtZW50c1dpdGhS
dW5uaW5nQWNjZWxlcmF0ZWRBbmltYXRpb25zRm9yRWxlbWVudChFbGVtZW50Jik7CiAgICAgdm9p
ZCB0cmFuc2l0aW9uRGlkQ29tcGxldGUoUmVmUHRyPENTU1RyYW5zaXRpb24+KTsKICAgICB2b2lk
IHNjaGVkdWxlTmV4dFRpY2soKTsKQEAgLTEwOCw3ICsxMDYsNyBAQCBwcml2YXRlOgogICAgIEdl
bmVyaWNUYXNrUXVldWU8VGltZXI+IG1fY3VycmVudFRpbWVDbGVhcmluZ1Rhc2tRdWV1ZTsKICAg
ICBIYXNoU2V0PFJlZlB0cjxXZWJBbmltYXRpb24+PiBtX2FjY2VsZXJhdGVkQW5pbWF0aW9uc1Bl
bmRpbmdSdW5uaW5nU3RhdGVDaGFuZ2U7CiAgICAgSGFzaFNldDxFbGVtZW50Kj4gbV9lbGVtZW50
c1dpdGhSdW5uaW5nQWNjZWxlcmF0ZWRBbmltYXRpb25zOwotICAgIFZlY3RvcjxSZWY8QW5pbWF0
aW9uUGxheWJhY2tFdmVudD4+IG1fcGVuZGluZ0FuaW1hdGlvbkV2ZW50czsKKyAgICBWZWN0b3I8
UmVmPEFuaW1hdGlvbkV2ZW50QmFzZT4+IG1fcGVuZGluZ0FuaW1hdGlvbkV2ZW50czsKICAgICBS
ZWZQdHI8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CiAgICAgTWFya2FibGU8U2Vjb25kcywgU2Vjb25k
czo6TWFya2FibGVUcmFpdHM+IG1fY2FjaGVkQ3VycmVudFRpbWU7CiAgICAgU2Vjb25kcyBtX29y
aWdpblRpbWU7CkBAIC0xMTYsNiArMTE0LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNTdXNw
ZW5kZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV93YWl0aW5nT25WTUlkbGUgeyBmYWxzZSB9Owog
ICAgIGJvb2wgbV9hbmltYXRpb25SZXNvbHV0aW9uU2NoZWR1bGVkIHsgZmFsc2UgfTsKKyAgICBi
b29sIG1fc2hvdWxkU2NoZWR1bGVBbmltYXRpb25SZXNvbHV0aW9uRm9yTmV3UGVuZGluZ0V2ZW50
cyB7IHRydWUgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuY3BwCmluZGV4IGIzMWNlZjYwYWMxLi4wOWVjZDdh
NjJhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuY3BwCkBA
IC03NzEsNiArNzcxLDIwIEBAIHZvaWQgS2V5ZnJhbWVFZmZlY3Q6OnVwZGF0ZUJsZW5kaW5nS2V5
ZnJhbWVzKFJlbmRlclN0eWxlJiBlbGVtZW50U3R5bGUpCiAgICAgc2V0QmxlbmRpbmdLZXlmcmFt
ZXMoa2V5ZnJhbWVMaXN0KTsKIH0KIAorYm9vbCBLZXlmcmFtZUVmZmVjdDo6YW5pbWF0ZXNQcm9w
ZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5KSBjb25zdAoreworICAgIGlmICghbV9ibGVuZGlu
Z0tleWZyYW1lcy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBtX2JsZW5kaW5nS2V5ZnJhbWVz
LnByb3BlcnRpZXMoKS5jb250YWlucyhwcm9wZXJ0eSk7CisKKyAgICBmb3IgKGF1dG8mIGtleWZy
YW1lIDogbV9wYXJzZWRLZXlmcmFtZXMpIHsKKyAgICAgICAgZm9yIChhdXRvIGtleWZyYW1lUHJv
cGVydHkgOiBrZXlmcmFtZS51bnBhcnNlZFN0eWxlLmtleXMoKSkgeworICAgICAgICAgICAgaWYg
KGtleWZyYW1lUHJvcGVydHkgPT0gcHJvcGVydHkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBib29sIEtleWZy
YW1lRWZmZWN0Ojpmb3JjZUxheW91dElmTmVlZGVkKCkKIHsKICAgICBpZiAoIW1fbmVlZHNGb3Jj
ZWRMYXlvdXQgfHwgIW1fdGFyZ2V0KQpAQCAtNzkyLDYgKzgwNiw3IEBAIGJvb2wgS2V5ZnJhbWVF
ZmZlY3Q6OmZvcmNlTGF5b3V0SWZOZWVkZWQoKQogdm9pZCBLZXlmcmFtZUVmZmVjdDo6Y2xlYXJC
bGVuZGluZ0tleWZyYW1lcygpCiB7CiAgICAgbV9ibGVuZGluZ0tleWZyYW1lc1NvdXJjZSA9IEJs
ZW5kaW5nS2V5ZnJhbWVzU291cmNlOjpXZWJBbmltYXRpb247CisgICAgbV91bmFuaW1hdGVkU3R5
bGUgPSBudWxscHRyOwogICAgIG1fYmxlbmRpbmdLZXlmcmFtZXMuY2xlYXIoKTsKIH0KIApAQCAt
OTEwLDEyICs5MjUsMTIgQEAgdm9pZCBLZXlmcmFtZUVmZmVjdDo6Y29tcHV0ZURlY2xhcmF0aXZl
QW5pbWF0aW9uQmxlbmRpbmdLZXlmcmFtZXMoY29uc3QgUmVuZGVyU3QKIHsKICAgICBBU1NFUlQo
aXM8RGVjbGFyYXRpdmVBbmltYXRpb24+KGFuaW1hdGlvbigpKSk7CiAgICAgaWYgKGlzPENTU0Fu
aW1hdGlvbj4oYW5pbWF0aW9uKCkpKQotICAgICAgICBjb21wdXRlQ1NTQW5pbWF0aW9uQmxlbmRp
bmdLZXlmcmFtZXMoKTsKKyAgICAgICAgY29tcHV0ZUNTU0FuaW1hdGlvbkJsZW5kaW5nS2V5ZnJh
bWVzKG5ld1N0eWxlKTsKICAgICBlbHNlIGlmIChpczxDU1NUcmFuc2l0aW9uPihhbmltYXRpb24o
KSkpCiAgICAgICAgIGNvbXB1dGVDU1NUcmFuc2l0aW9uQmxlbmRpbmdLZXlmcmFtZXMob2xkU3R5
bGUsIG5ld1N0eWxlKTsKIH0KIAotdm9pZCBLZXlmcmFtZUVmZmVjdDo6Y29tcHV0ZUNTU0FuaW1h
dGlvbkJsZW5kaW5nS2V5ZnJhbWVzKCkKK3ZvaWQgS2V5ZnJhbWVFZmZlY3Q6OmNvbXB1dGVDU1NB
bmltYXRpb25CbGVuZGluZ0tleWZyYW1lcyhjb25zdCBSZW5kZXJTdHlsZSYgdW5hbmltYXRlZFN0
eWxlKQogewogICAgIEFTU0VSVChpczxDU1NBbmltYXRpb24+KGFuaW1hdGlvbigpKSk7CiAKQEAg
LTkyNCw3ICs5MzksNyBAQCB2b2lkIEtleWZyYW1lRWZmZWN0Ojpjb21wdXRlQ1NTQW5pbWF0aW9u
QmxlbmRpbmdLZXlmcmFtZXMoKQogCiAgICAgS2V5ZnJhbWVMaXN0IGtleWZyYW1lTGlzdChiYWNr
aW5nQW5pbWF0aW9uLm5hbWUoKSk7CiAgICAgaWYgKGF1dG8qIHN0eWxlU2NvcGUgPSBTdHlsZTo6
U2NvcGU6OmZvck9yZGluYWwoKm1fdGFyZ2V0LCBiYWNraW5nQW5pbWF0aW9uLm5hbWVTdHlsZVNj
b3BlT3JkaW5hbCgpKSkKLSAgICAgICAgc3R5bGVTY29wZS0+cmVzb2x2ZXIoKS5rZXlmcmFtZVN0
eWxlc0ZvckFuaW1hdGlvbigqbV90YXJnZXQsICZjc3NBbmltYXRpb24tPnVuYW5pbWF0ZWRTdHls
ZSgpLCBrZXlmcmFtZUxpc3QpOworICAgICAgICBzdHlsZVNjb3BlLT5yZXNvbHZlcigpLmtleWZy
YW1lU3R5bGVzRm9yQW5pbWF0aW9uKCptX3RhcmdldCwgJnVuYW5pbWF0ZWRTdHlsZSwga2V5ZnJh
bWVMaXN0KTsKIAogICAgIC8vIEVuc3VyZSByZXNvdXJjZSBsb2FkcyBmb3IgYWxsIHRoZSBmcmFt
ZXMuCiAgICAgZm9yIChhdXRvJiBrZXlmcmFtZSA6IGtleWZyYW1lTGlzdC5rZXlmcmFtZXMoKSkg
ewpAQCAtMTA5MSw2ICsxMTA2LDkgQEAgdm9pZCBLZXlmcmFtZUVmZmVjdDo6YXBwbHkoUmVuZGVy
U3R5bGUmIHRhcmdldFN0eWxlKQogICAgIGlmICghY29tcHV0ZWRUaW1pbmcucHJvZ3Jlc3MpCiAg
ICAgICAgIHJldHVybjsKIAorICAgIGlmICghbV91bmFuaW1hdGVkU3R5bGUpCisgICAgICAgIG1f
dW5hbmltYXRlZFN0eWxlID0gUmVuZGVyU3R5bGU6OmNsb25lUHRyKHRhcmdldFN0eWxlKTsKKwog
ICAgIHNldEFuaW1hdGVkUHJvcGVydGllc0luU3R5bGUodGFyZ2V0U3R5bGUsIGNvbXB1dGVkVGlt
aW5nLnByb2dyZXNzLnZhbHVlKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
bmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlm
cmFtZUVmZmVjdC5oCmluZGV4IGU4OGQyMjU1NmQyLi5iMjg1NThhYzRiNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmgKQEAgLTE0NCw2ICsxNDQsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBjb21wdXRlRGVjbGFyYXRpdmVBbmltYXRpb25CbGVuZGluZ0tleWZyYW1l
cyhjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHls
ZSk7CiAgICAgY29uc3QgS2V5ZnJhbWVMaXN0JiBibGVuZGluZ0tleWZyYW1lcygpIGNvbnN0IHsg
cmV0dXJuIG1fYmxlbmRpbmdLZXlmcmFtZXM7IH0KICAgICBjb25zdCBIYXNoU2V0PENTU1Byb3Bl
cnR5SUQ+JiBhbmltYXRlZFByb3BlcnRpZXMoKSBjb25zdCB7IHJldHVybiBtX2JsZW5kaW5nS2V5
ZnJhbWVzLnByb3BlcnRpZXMoKTsgfQorICAgIGJvb2wgYW5pbWF0ZXNQcm9wZXJ0eShDU1NQcm9w
ZXJ0eUlEKSBjb25zdDsKIAogICAgIGJvb2wgY29tcHV0ZUV4dGVudE9mVHJhbnNmb3JtQW5pbWF0
aW9uKExheW91dFJlY3QmKSBjb25zdDsKICAgICBib29sIGNvbXB1dGVUcmFuc2Zvcm1lZEV4dGVu
dFZpYVRyYW5zZm9ybUxpc3QoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBM
YXlvdXRSZWN0JikgY29uc3Q7CkBAIC0xNTQsNiArMTU1LDggQEAgcHVibGljOgogICAgIGJvb2wg
aXNDdXJyZW50bHlBZmZlY3RpbmdQcm9wZXJ0eShDU1NQcm9wZXJ0eUlELCBBY2NlbGVyYXRlZCA9
IEFjY2VsZXJhdGVkOjpObykgY29uc3Q7CiAgICAgYm9vbCBpc1J1bm5pbmdBY2NlbGVyYXRlZEFu
aW1hdGlvbkZvclByb3BlcnR5KENTU1Byb3BlcnR5SUQpIGNvbnN0OwogCisgICAgY29uc3QgUmVu
ZGVyU3R5bGUqIHVuYW5pbWF0ZWRTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5hbmltYXRlZFN0
eWxlLmdldCgpOyB9CisKIHByaXZhdGU6CiAgICAgS2V5ZnJhbWVFZmZlY3QoRWxlbWVudCopOwog
CkBAIC0xNzMsNyArMTc2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbXB1dGVTdGFja2luZ0Nv
bnRleHRJbXBhY3QoKTsKICAgICB2b2lkIGNsZWFyQmxlbmRpbmdLZXlmcmFtZXMoKTsKICAgICB2
b2lkIHVwZGF0ZUJsZW5kaW5nS2V5ZnJhbWVzKFJlbmRlclN0eWxlJik7Ci0gICAgdm9pZCBjb21w
dXRlQ1NTQW5pbWF0aW9uQmxlbmRpbmdLZXlmcmFtZXMoKTsKKyAgICB2b2lkIGNvbXB1dGVDU1NB
bmltYXRpb25CbGVuZGluZ0tleWZyYW1lcyhjb25zdCBSZW5kZXJTdHlsZSYpOwogICAgIHZvaWQg
Y29tcHV0ZUNTU1RyYW5zaXRpb25CbGVuZGluZ0tleWZyYW1lcyhjb25zdCBSZW5kZXJTdHlsZSog
b2xkU3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSk7CiAgICAgdm9pZCBjb21wdXRl
QWNjZWxlcmF0ZWRQcm9wZXJ0aWVzU3RhdGUoKTsKICAgICB2b2lkIHNldEJsZW5kaW5nS2V5ZnJh
bWVzKEtleWZyYW1lTGlzdCYpOwpAQCAtMTkwLDYgKzE5Myw4IEBAIHByaXZhdGU6CiAgICAgVmVj
dG9yPEFjY2VsZXJhdGVkQWN0aW9uPiBtX3BlbmRpbmdBY2NlbGVyYXRlZEFjdGlvbnM7CiAgICAg
UmVmUHRyPEVsZW1lbnQ+IG1fdGFyZ2V0OwogCisgICAgc3RkOjp1bmlxdWVfcHRyPGNvbnN0IFJl
bmRlclN0eWxlPiBtX3VuYW5pbWF0ZWRTdHlsZTsKKwogICAgIEFjY2VsZXJhdGVkQWN0aW9uIG1f
bGFzdFJlY29yZGVkQWNjZWxlcmF0ZWRBY3Rpb24geyBBY2NlbGVyYXRlZEFjdGlvbjo6U3RvcCB9
OwogICAgIEJsZW5kaW5nS2V5ZnJhbWVzU291cmNlIG1fYmxlbmRpbmdLZXlmcmFtZXNTb3VyY2Ug
eyBCbGVuZGluZ0tleWZyYW1lc1NvdXJjZTo6V2ViQW5pbWF0aW9uIH07CiAgICAgSXRlcmF0aW9u
Q29tcG9zaXRlT3BlcmF0aW9uIG1faXRlcmF0aW9uQ29tcG9zaXRlT3BlcmF0aW9uIHsgSXRlcmF0
aW9uQ29tcG9zaXRlT3BlcmF0aW9uOjpSZXBsYWNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlv
bi9XZWJBbmltYXRpb24uY3BwCmluZGV4IGQ0MjExY2M1ZWM1Li40NWUyNDdmOWIyOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5jcHAKQEAgLTY4MywxNSArNjgzLDIw
IEBAIHZvaWQgV2ViQW5pbWF0aW9uOjp3aWxsQ2hhbmdlUmVuZGVyZXIoKQogCiB2b2lkIFdlYkFu
aW1hdGlvbjo6ZW5xdWV1ZUFuaW1hdGlvblBsYXliYWNrRXZlbnQoY29uc3QgQXRvbVN0cmluZyYg
dHlwZSwgT3B0aW9uYWw8U2Vjb25kcz4gY3VycmVudFRpbWUsIE9wdGlvbmFsPFNlY29uZHM+IHRp
bWVsaW5lVGltZSkKIHsKLSAgICBhdXRvIGV2ZW50ID0gQW5pbWF0aW9uUGxheWJhY2tFdmVudDo6
Y3JlYXRlKHR5cGUsIGN1cnJlbnRUaW1lLCB0aW1lbGluZVRpbWUpOworICAgIGF1dG8gZXZlbnQg
PSBBbmltYXRpb25QbGF5YmFja0V2ZW50OjpjcmVhdGUodHlwZSwgY3VycmVudFRpbWUsIHRpbWVs
aW5lVGltZSwgdGhpcyk7CiAgICAgZXZlbnQtPnNldFRhcmdldCh0aGlzKTsKKyAgICBlbnF1ZXVl
QW5pbWF0aW9uRXZlbnQoV1RGTW92ZShldmVudCkpOworfQogCit2b2lkIFdlYkFuaW1hdGlvbjo6
ZW5xdWV1ZUFuaW1hdGlvbkV2ZW50KFJlZjxBbmltYXRpb25FdmVudEJhc2U+JiYgZXZlbnQpCit7
CiAgICAgaWYgKGlzPERvY3VtZW50VGltZWxpbmU+KG1fdGltZWxpbmUpKSB7CiAgICAgICAgIC8v
IElmIGFuaW1hdGlvbiBoYXMgYSBkb2N1bWVudCBmb3IgdGltaW5nLCB0aGVuIGFwcGVuZCBldmVu
dCB0byBpdHMgZG9jdW1lbnQgZm9yIHRpbWluZydzIHBlbmRpbmcgYW5pbWF0aW9uIGV2ZW50IHF1
ZXVlIGFsb25nCiAgICAgICAgIC8vIHdpdGggaXRzIHRhcmdldCwgYW5pbWF0aW9uLiBJZiBhbmlt
YXRpb24gaXMgYXNzb2NpYXRlZCB3aXRoIGFuIGFjdGl2ZSB0aW1lbGluZSB0aGF0IGRlZmluZXMg
YSBwcm9jZWR1cmUgdG8gY29udmVydCB0aW1lbGluZSB0aW1lcwogICAgICAgICAvLyB0byBvcmln
aW4tcmVsYXRpdmUgdGltZSwgbGV0IHRoZSBzY2hlZHVsZWQgZXZlbnQgdGltZSBiZSB0aGUgcmVz
dWx0IG9mIGFwcGx5aW5nIHRoYXQgcHJvY2VkdXJlIHRvIHRpbWVsaW5lIHRpbWUuIE90aGVyd2lz
ZSwgdGhlCiAgICAgICAgIC8vIHNjaGVkdWxlZCBldmVudCB0aW1lIGlzIGFuIHVucmVzb2x2ZWQg
dGltZSB2YWx1ZS4KLSAgICAgICAgZG93bmNhc3Q8RG9jdW1lbnRUaW1lbGluZT4oKm1fdGltZWxp
bmUpLmVucXVldWVBbmltYXRpb25QbGF5YmFja0V2ZW50KFdURk1vdmUoZXZlbnQpKTsKKyAgICAg
ICAgbV9oYXNTY2hlZHVsZWRFdmVudHNEdXJpbmdUaWNrID0gdHJ1ZTsKKyAgICAgICAgZG93bmNh
c3Q8RG9jdW1lbnRUaW1lbGluZT4oKm1fdGltZWxpbmUpLmVucXVldWVBbmltYXRpb25FdmVudChX
VEZNb3ZlKGV2ZW50KSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gT3RoZXJ3aXNlLCBxdWV1
ZSBhIHRhc2sgdG8gZGlzcGF0Y2ggZXZlbnQgYXQgYW5pbWF0aW9uLiBUaGUgdGFzayBzb3VyY2Ug
Zm9yIHRoaXMgdGFzayBpcyB0aGUgRE9NIG1hbmlwdWxhdGlvbiB0YXNrIHNvdXJjZS4KICAgICAg
ICAgcXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50KCp0aGlzLCBUYXNrU291cmNlOjpET01NYW5pcHVs
YXRpb24sIFdURk1vdmUoZXZlbnQpKTsKQEAgLTExOTgsMTEgKzEyMDMsMTIgQEAgYm9vbCBXZWJB
bmltYXRpb246OmlzQ29tcGxldGVseUFjY2VsZXJhdGVkKCkgY29uc3QKIAogYm9vbCBXZWJBbmlt
YXRpb246Om5lZWRzVGljaygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHBlbmRpbmcoKSB8fCBwbGF5
U3RhdGUoKSA9PSBQbGF5U3RhdGU6OlJ1bm5pbmc7CisgICAgcmV0dXJuIHBlbmRpbmcoKSB8fCBw
bGF5U3RhdGUoKSA9PSBQbGF5U3RhdGU6OlJ1bm5pbmcgfHwgbV9oYXNTY2hlZHVsZWRFdmVudHNE
dXJpbmdUaWNrOwogfQogCiB2b2lkIFdlYkFuaW1hdGlvbjo6dGljaygpCiB7CisgICAgbV9oYXNT
Y2hlZHVsZWRFdmVudHNEdXJpbmdUaWNrID0gZmFsc2U7CiAgICAgdXBkYXRlRmluaXNoZWRTdGF0
ZShEaWRTZWVrOjpObywgU3luY2hyb25vdXNseU5vdGlmeTo6WWVzKTsKICAgICBtX3Nob3VsZFNr
aXBVcGRhdGluZ0ZpbmlzaGVkU3RhdGVXaGVuUmVzb2x2aW5nID0gdHJ1ZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5oIGIvU291cmNlL1dlYkNv
cmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5oCmluZGV4IDMwMzJmMjgxZGRjLi43MjRhYmMxYTVj
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uaApAQCAtNDIsNyArNDIs
NyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBbmltYXRpb25FZmZlY3Q7Ci1jbGFz
cyBBbmltYXRpb25QbGF5YmFja0V2ZW50OworY2xhc3MgQW5pbWF0aW9uRXZlbnRCYXNlOwogY2xh
c3MgQW5pbWF0aW9uVGltZWxpbmU7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEVsZW1lbnQ7CkBA
IC0xNTUsNiArMTU1LDggQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IFdlYkFu
aW1hdGlvbihEb2N1bWVudCYpOwogCisgICAgdm9pZCBlbnF1ZXVlQW5pbWF0aW9uRXZlbnQoUmVm
PEFuaW1hdGlvbkV2ZW50QmFzZT4mJik7CisKIHByaXZhdGU6CiAgICAgZW51bSBjbGFzcyBEaWRT
ZWVrIDogdWludDhfdCB7IFllcywgTm8gfTsKICAgICBlbnVtIGNsYXNzIFN5bmNocm9ub3VzbHlO
b3RpZnkgOiB1aW50OF90IHsgWWVzLCBObyB9OwpAQCAtMjAxLDYgKzIwMyw3IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBtX2ZpbmlzaE5vdGlmaWNhdGlvblN0ZXBzTWljcm90YXNrUGVuZGluZzsKICAg
ICBib29sIG1faXNSZWxldmFudDsKICAgICBib29sIG1fc2hvdWxkU2tpcFVwZGF0aW5nRmluaXNo
ZWRTdGF0ZVdoZW5SZXNvbHZpbmc7CisgICAgYm9vbCBtX2hhc1NjaGVkdWxlZEV2ZW50c0R1cmlu
Z1RpY2sgeyBmYWxzZSB9OwogICAgIFRpbWVUb1J1blBlbmRpbmdUYXNrIG1fdGltZVRvUnVuUGVu
ZGluZ1BsYXlUYXNrIHsgVGltZVRvUnVuUGVuZGluZ1Rhc2s6Ok5vdFNjaGVkdWxlZCB9OwogICAg
IFRpbWVUb1J1blBlbmRpbmdUYXNrIG1fdGltZVRvUnVuUGVuZGluZ1BhdXNlVGFzayB7IFRpbWVU
b1J1blBlbmRpbmdUYXNrOjpOb3RTY2hlZHVsZWQgfTsKICAgICBSZXBsYWNlU3RhdGUgbV9yZXBs
YWNlU3RhdGUgeyBSZXBsYWNlU3RhdGU6OkFjdGl2ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0FuaW1hdGlvbkV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BbmltYXRp
b25FdmVudC5jcHAKaW5kZXggZGM4OTg2NGRkYTIuLjhmYjE5ZDU5MDc5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vQW5pbWF0aW9uRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9BbmltYXRpb25FdmVudC5jcHAKQEAgLTMzLDE1ICszMywxNSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoQW5pbWF0aW9uRXZlbnQpOwogCiBB
bmltYXRpb25FdmVudDo6QW5pbWF0aW9uRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgY29u
c3QgSW5pdCYgaW5pdGlhbGl6ZXIsIElzVHJ1c3RlZCBpc1RydXN0ZWQpCi0gICAgOiBFdmVudCh0
eXBlLCBpbml0aWFsaXplciwgaXNUcnVzdGVkKQorICAgIDogQW5pbWF0aW9uRXZlbnRCYXNlKHR5
cGUsIGluaXRpYWxpemVyLCBpc1RydXN0ZWQpCiAgICAgLCBtX2FuaW1hdGlvbk5hbWUoaW5pdGlh
bGl6ZXIuYW5pbWF0aW9uTmFtZSkKICAgICAsIG1fZWxhcHNlZFRpbWUoaW5pdGlhbGl6ZXIuZWxh
cHNlZFRpbWUpCiAgICAgLCBtX3BzZXVkb0VsZW1lbnQoaW5pdGlhbGl6ZXIucHNldWRvRWxlbWVu
dCkKIHsKIH0KIAotQW5pbWF0aW9uRXZlbnQ6OkFuaW1hdGlvbkV2ZW50KGNvbnN0IEF0b21TdHJp
bmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgZG91YmxlIGVsYXBzZWRUaW1l
LCBjb25zdCBTdHJpbmcmIHBzZXVkb0VsZW1lbnQpCi0gICAgOiBFdmVudCh0eXBlLCBDYW5CdWJi
bGU6OlllcywgSXNDYW5jZWxhYmxlOjpObykKK0FuaW1hdGlvbkV2ZW50OjpBbmltYXRpb25FdmVu
dChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGRv
dWJsZSBlbGFwc2VkVGltZSwgY29uc3QgU3RyaW5nJiBwc2V1ZG9FbGVtZW50LCBPcHRpb25hbDxT
ZWNvbmRzPiB0aW1lbGluZVRpbWUsIFdlYkFuaW1hdGlvbiogYW5pbWF0aW9uKQorICAgIDogQW5p
bWF0aW9uRXZlbnRCYXNlKHR5cGUsIGFuaW1hdGlvbiwgdGltZWxpbmVUaW1lKQogICAgICwgbV9h
bmltYXRpb25OYW1lKGFuaW1hdGlvbk5hbWUpCiAgICAgLCBtX2VsYXBzZWRUaW1lKGVsYXBzZWRU
aW1lKQogICAgICwgbV9wc2V1ZG9FbGVtZW50KHBzZXVkb0VsZW1lbnQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vQW5pbWF0aW9uRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9B
bmltYXRpb25FdmVudC5oCmluZGV4IDAxZWFlMzczMWRjLi43OTU1ZDcxMWNhYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0FuaW1hdGlvbkV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0FuaW1hdGlvbkV2ZW50LmgKQEAgLTI1LDE2ICsyNSwxNiBAQAogCiAjcHJhZ21hIG9u
Y2UKIAotI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiQW5pbWF0aW9uRXZlbnRCYXNlLmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQW5pbWF0aW9uRXZlbnQgZmluYWwgOiBw
dWJsaWMgRXZlbnQgeworY2xhc3MgQW5pbWF0aW9uRXZlbnQgZmluYWwgOiBwdWJsaWMgQW5pbWF0
aW9uRXZlbnRCYXNlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEFuaW1hdGlvbkV2ZW50
KTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEFuaW1hdGlvbkV2ZW50PiBjcmVhdGUoY29uc3Qg
QXRvbVN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBkb3VibGUgZWxh
cHNlZFRpbWUsIGNvbnN0IFN0cmluZyYgcHNldWRvRWxlbWVudCkKKyAgICBzdGF0aWMgUmVmPEFu
aW1hdGlvbkV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5n
JiBhbmltYXRpb25OYW1lLCBkb3VibGUgZWxhcHNlZFRpbWUsIGNvbnN0IFN0cmluZyYgcHNldWRv
RWxlbWVudCwgT3B0aW9uYWw8U2Vjb25kcz4gdGltZWxpbmVUaW1lLCBXZWJBbmltYXRpb24qIGFu
aW1hdGlvbikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFuaW1hdGlvbkV2
ZW50KHR5cGUsIGFuaW1hdGlvbk5hbWUsIGVsYXBzZWRUaW1lLCBwc2V1ZG9FbGVtZW50KSk7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFuaW1hdGlvbkV2ZW50KHR5cGUsIGFuaW1hdGlv
bk5hbWUsIGVsYXBzZWRUaW1lLCBwc2V1ZG9FbGVtZW50LCB0aW1lbGluZVRpbWUsIGFuaW1hdGlv
bikpOwogICAgIH0KIAogICAgIHN0cnVjdCBJbml0IDogRXZlbnRJbml0IHsKQEAgLTUwLDYgKzUw
LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+QW5pbWF0aW9uRXZlbnQoKTsKIAorICAgIGJv
b2wgaXNBbmltYXRpb25FdmVudCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKwogICAg
IGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSgpIGNvbnN0OwogICAgIGRvdWJsZSBlbGFwc2Vk
VGltZSgpIGNvbnN0OwogICAgIGNvbnN0IFN0cmluZyYgcHNldWRvRWxlbWVudCgpIGNvbnN0OwpA
QCAtNTcsNyArNTksNyBAQCBwdWJsaWM6CiAgICAgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZh
Y2UoKSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBBbmltYXRpb25FdmVudChjb25z
dCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGRvdWJsZSBl
bGFwc2VkVGltZSwgY29uc3QgU3RyaW5nJiBwc2V1ZG9FbGVtZW50KTsKKyAgICBBbmltYXRpb25F
dmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUs
IGRvdWJsZSBlbGFwc2VkVGltZSwgY29uc3QgU3RyaW5nJiBwc2V1ZG9FbGVtZW50LCBPcHRpb25h
bDxTZWNvbmRzPiB0aW1lbGluZVRpbWUsIFdlYkFuaW1hdGlvbiopOwogICAgIEFuaW1hdGlvbkV2
ZW50KGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBJbml0JiwgSXNUcnVzdGVkKTsKIAogICAgIFN0
cmluZyBtX2FuaW1hdGlvbk5hbWU7CkBAIC02NiwzICs2OCw1IEBAIHByaXZhdGU6CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQU5JTUFUSU9O
X0VWRU5UX0JBU0UoQW5pbWF0aW9uRXZlbnQsIGlzQW5pbWF0aW9uRXZlbnQoKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmFuc2l0aW9uRXZlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL1RyYW5zaXRpb25FdmVudC5jcHAKaW5kZXggNjk2MWVmMzJkMTMuLjNkNTkyNjU3NTc3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJhbnNpdGlvbkV2ZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJhbnNpdGlvbkV2ZW50LmNwcApAQCAtMzMsOCArMzMsOCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChUcmFu
c2l0aW9uRXZlbnQpOwogCi1UcmFuc2l0aW9uRXZlbnQ6OlRyYW5zaXRpb25FdmVudChjb25zdCBB
dG9tU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSwgZG91YmxlIGVsYXBz
ZWRUaW1lLCBjb25zdCBTdHJpbmcmIHBzZXVkb0VsZW1lbnQpCi0gICAgOiBFdmVudCh0eXBlLCBD
YW5CdWJibGU6OlllcywgSXNDYW5jZWxhYmxlOjpZZXMpCitUcmFuc2l0aW9uRXZlbnQ6OlRyYW5z
aXRpb25FdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHByb3BlcnR5
TmFtZSwgZG91YmxlIGVsYXBzZWRUaW1lLCBjb25zdCBTdHJpbmcmIHBzZXVkb0VsZW1lbnQsIE9w
dGlvbmFsPFNlY29uZHM+IHRpbWVsaW5lVGltZSwgV2ViQW5pbWF0aW9uKiBhbmltYXRpb24pCisg
ICAgOiBBbmltYXRpb25FdmVudEJhc2UodHlwZSwgYW5pbWF0aW9uLCB0aW1lbGluZVRpbWUpCiAg
ICAgLCBtX3Byb3BlcnR5TmFtZShwcm9wZXJ0eU5hbWUpCiAgICAgLCBtX2VsYXBzZWRUaW1lKGVs
YXBzZWRUaW1lKQogICAgICwgbV9wc2V1ZG9FbGVtZW50KHBzZXVkb0VsZW1lbnQpCkBAIC00Miw3
ICs0Miw3IEBAIFRyYW5zaXRpb25FdmVudDo6VHJhbnNpdGlvbkV2ZW50KGNvbnN0IEF0b21TdHJp
bmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcHJvcGVydHlOCiB9CiAKIFRyYW5zaXRpb25FdmVudDo6
VHJhbnNpdGlvbkV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IEluaXQmIGluaXRp
YWxpemVyLCBJc1RydXN0ZWQgaXNUcnVzdGVkKQotICAgIDogRXZlbnQodHlwZSwgaW5pdGlhbGl6
ZXIsIGlzVHJ1c3RlZCkKKyAgICA6IEFuaW1hdGlvbkV2ZW50QmFzZSh0eXBlLCBpbml0aWFsaXpl
ciwgaXNUcnVzdGVkKQogICAgICwgbV9wcm9wZXJ0eU5hbWUoaW5pdGlhbGl6ZXIucHJvcGVydHlO
YW1lKQogICAgICwgbV9lbGFwc2VkVGltZShpbml0aWFsaXplci5lbGFwc2VkVGltZSkKICAgICAs
IG1fcHNldWRvRWxlbWVudChpbml0aWFsaXplci5wc2V1ZG9FbGVtZW50KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL1RyYW5zaXRpb25FdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L1RyYW5zaXRpb25FdmVudC5oCmluZGV4IDQ5NGY5YTRlZWM2Li4yMzEzNmQ3M2YwNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RyYW5zaXRpb25FdmVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9UcmFuc2l0aW9uRXZlbnQuaApAQCAtMjYsMTYgKzI2LDE2IEBACiAKICNwcmFn
bWEgb25jZQogCi0jaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJBbmltYXRpb25FdmVudEJh
c2UuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBUcmFuc2l0aW9uRXZlbnQgZmlu
YWwgOiBwdWJsaWMgRXZlbnQgeworY2xhc3MgVHJhbnNpdGlvbkV2ZW50IGZpbmFsIDogcHVibGlj
IEFuaW1hdGlvbkV2ZW50QmFzZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChUcmFuc2l0
aW9uRXZlbnQpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8VHJhbnNpdGlvbkV2ZW50PiBjcmVh
dGUoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIGRv
dWJsZSBlbGFwc2VkVGltZSwgY29uc3QgU3RyaW5nJiBwc2V1ZG9FbGVtZW50KQorICAgIHN0YXRp
YyBSZWY8VHJhbnNpdGlvbkV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgY29u
c3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIGRvdWJsZSBlbGFwc2VkVGltZSwgY29uc3QgU3RyaW5n
JiBwc2V1ZG9FbGVtZW50LCBPcHRpb25hbDxTZWNvbmRzPiB0aW1lbGluZVRpbWUsIFdlYkFuaW1h
dGlvbiogYW5pbWF0aW9uKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVHJh
bnNpdGlvbkV2ZW50KHR5cGUsIHByb3BlcnR5TmFtZSwgZWxhcHNlZFRpbWUsIHBzZXVkb0VsZW1l
bnQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVHJhbnNpdGlvbkV2ZW50KHR5cGUs
IHByb3BlcnR5TmFtZSwgZWxhcHNlZFRpbWUsIHBzZXVkb0VsZW1lbnQsIHRpbWVsaW5lVGltZSwg
YW5pbWF0aW9uKSk7CiAgICAgfQogCiAgICAgc3RydWN0IEluaXQgOiBFdmVudEluaXQgewpAQCAt
NTEsNiArNTEsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5UcmFuc2l0aW9uRXZlbnQoKTsK
IAorICAgIGJvb2wgaXNUcmFuc2l0aW9uRXZlbnQoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVl
OyB9CisKICAgICBjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSgpIGNvbnN0OwogICAgIGRvdWJs
ZSBlbGFwc2VkVGltZSgpIGNvbnN0OwogICAgIGNvbnN0IFN0cmluZyYgcHNldWRvRWxlbWVudCgp
IGNvbnN0OwpAQCAtNTgsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgRXZlbnRJbnRlcmZhY2UgZXZl
bnRJbnRlcmZhY2UoKSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBUcmFuc2l0aW9u
RXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUs
IGRvdWJsZSBlbGFwc2VkVGltZSwgY29uc3QgU3RyaW5nJiBwc2V1ZG9FbGVtZW50KTsKKyAgICBU
cmFuc2l0aW9uRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBwcm9w
ZXJ0eU5hbWUsIGRvdWJsZSBlbGFwc2VkVGltZSwgY29uc3QgU3RyaW5nJiBwc2V1ZG9FbGVtZW50
LCBPcHRpb25hbDxTZWNvbmRzPiB0aW1lbGluZVRpbWUsIFdlYkFuaW1hdGlvbiopOwogICAgIFRy
YW5zaXRpb25FdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiBpbml0aWFs
aXplciwgSXNUcnVzdGVkKTsKIAogICAgIFN0cmluZyBtX3Byb3BlcnR5TmFtZTsKQEAgLTY3LDMg
KzY5LDUgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19BTklNQVRJT05fRVZFTlRfQkFTRShUcmFuc2l0aW9uRXZlbnQsIGlz
VHJhbnNpdGlvbkV2ZW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1h
dGlvbi9DU1NBbmltYXRpb25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5p
bWF0aW9uL0NTU0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCmluZGV4IGIxNDUzNjAwNTQ3Li4xMWRi
MDYwMDVjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTQW5p
bWF0aW9uQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24v
Q1NTQW5pbWF0aW9uQ29udHJvbGxlci5jcHAKQEAgLTIyNSw5ICsyMjUsOSBAQCB2b2lkIENTU0Fu
aW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlOjpmaXJlRXZlbnRzQW5kVXBkYXRlU3R5bGUoKQogICAg
IGZvciAoYXV0byYgZXZlbnQgOiBldmVudHNUb0Rpc3BhdGNoKSB7CiAgICAgICAgIEVsZW1lbnQm
IGVsZW1lbnQgPSBldmVudC5lbGVtZW50OwogICAgICAgICBpZiAoZXZlbnQuZXZlbnRUeXBlID09
IGV2ZW50TmFtZXMoKS50cmFuc2l0aW9uZW5kRXZlbnQpCi0gICAgICAgICAgICBlbGVtZW50LmRp
c3BhdGNoRXZlbnQoVHJhbnNpdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnQuZXZlbnRUeXBlLCBldmVu
dC5uYW1lLCBldmVudC5lbGFwc2VkVGltZSwgUHNldWRvRWxlbWVudDo6cHNldWRvRWxlbWVudE5h
bWVGb3JFdmVudHMoZWxlbWVudC5wc2V1ZG9JZCgpKSkpOworICAgICAgICAgICAgZWxlbWVudC5k
aXNwYXRjaEV2ZW50KFRyYW5zaXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50LmV2ZW50VHlwZSwgZXZl
bnQubmFtZSwgZXZlbnQuZWxhcHNlZFRpbWUsIFBzZXVkb0VsZW1lbnQ6OnBzZXVkb0VsZW1lbnRO
YW1lRm9yRXZlbnRzKGVsZW1lbnQucHNldWRvSWQoKSksIFdURjo6bnVsbG9wdCwgbnVsbHB0cikp
OwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBlbGVtZW50LmRpc3BhdGNoRXZlbnQoQW5pbWF0
aW9uRXZlbnQ6OmNyZWF0ZShldmVudC5ldmVudFR5cGUsIGV2ZW50Lm5hbWUsIGV2ZW50LmVsYXBz
ZWRUaW1lLCBQc2V1ZG9FbGVtZW50Ojpwc2V1ZG9FbGVtZW50TmFtZUZvckV2ZW50cyhlbGVtZW50
LnBzZXVkb0lkKCkpKSk7CisgICAgICAgICAgICBlbGVtZW50LmRpc3BhdGNoRXZlbnQoQW5pbWF0
aW9uRXZlbnQ6OmNyZWF0ZShldmVudC5ldmVudFR5cGUsIGV2ZW50Lm5hbWUsIGV2ZW50LmVsYXBz
ZWRUaW1lLCBQc2V1ZG9FbGVtZW50Ojpwc2V1ZG9FbGVtZW50TmFtZUZvckV2ZW50cyhlbGVtZW50
LnBzZXVkb0lkKCkpLCBXVEY6Om51bGxvcHQsIG51bGxwdHIpKTsKICAgICB9CiAKICAgICBmb3Ig
KGF1dG8mIGNoYW5nZSA6IG1fZWxlbWVudENoYW5nZXNUb0Rpc3BhdGNoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwCmluZGV4IDdhMzBjNmNiOWRjLi45ZjBjMzJh
MGZlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcApAQCAt
MzA2LDcgKzMwNiw3IEBAIGNvbnN0IFJlbmRlclN0eWxlKiBUcmVlUmVzb2x2ZXI6OnBhcmVudEJv
eFN0eWxlRm9yUHNldWRvKGNvbnN0IEVsZW1lbnRVcGRhdGUmIGVsCiBFbGVtZW50VXBkYXRlIFRy
ZWVSZXNvbHZlcjo6Y3JlYXRlQW5pbWF0ZWRFbGVtZW50VXBkYXRlKHN0ZDo6dW5pcXVlX3B0cjxS
ZW5kZXJTdHlsZT4gbmV3U3R5bGUsIEVsZW1lbnQmIGVsZW1lbnQsIENoYW5nZSBwYXJlbnRDaGFu
Z2UpCiB7CiAgICAgYXV0byogb2xkU3R5bGUgPSBlbGVtZW50LnJlbmRlck9yRGlzcGxheUNvbnRl
bnRzU3R5bGUoKTsKLSAgICAKKwogICAgIE9wdGlvblNldDxBbmltYXRpb25JbXBhY3Q+IGFuaW1h
dGlvbkltcGFjdDsKIAogICAgIC8vIE5ldyBjb2RlIHBhdGggZm9yIENTUyBBbmltYXRpb25zIGFu
ZCBDU1MgVHJhbnNpdGlvbnMuCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390760</attachid>
            <date>2020-02-14 07:00:41 -0800</date>
            <delta_ts>2020-02-14 08:39:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207364-20200214160040.patch</filename>
            <type>text/plain</type>
            <size>42372</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2NTg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTkxMDJkOTI3OTdiMDQ4
Yzg5MDY3MDA5MmNmNGUyYjkyY2QxZjIxMy4uMTk4MDM3MmI4YmJkM2Q4MWY3YjhhODk1NjExZjVi
N2Y5MzFlMTAzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDIwLTAyLTE0ICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgorCisgICAgICAgIFtXZWIgQW5pbWF0aW9u
c10gRW5zdXJlIENTUyBUcmFuc2l0aW9uIGFuZCBDU1MgQW5pbWF0aW9uIGV2ZW50cyBhcmUgcXVl
dWVkLCBzb3J0ZWQgYW5kIGRpc3BhdGNoZWQgYnkgdGhlaXIgdGltZWxpbmUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzM2NAorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNTkzNzA0MTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVW50aWwgbm93LCBBbmltYXRpb25QbGF5YmFja0V2ZW50IGV2ZW50cywg
d2hpY2ggYXJlIG5ldyBldmVudHMgaW50cm9kdWNlZCBieSB0aGUgV2ViIEFuaW1hdGlvbnMgc3Bl
Yywgd2VyZSBlbnF1ZXVlZCBpbiBhIHNoYXJlZCBxdWV1ZSBvbiB0aGUgRG9jdW1lbnRUaW1lbGlu
ZQorICAgICAgICBhbmQgZGlzcGF0Y2hlZCBkdXJpbmcgdGhlICJ1cGRhdGUgYW5pbWF0aW9ucyBh
bmQgc2VuZCBldmVudHMiIHByb2NlZHVyZS4gSG93ZXZlciwgQW5pbWF0aW9uRXZlbnQgYW5kIFRy
YW5zaXRpb25FdmVudCBldmVudHMsIGRpc3BhdGNoZWQgYnkgQ1NTIEFuaW1hdGlvbnMKKyAgICAg
ICAgYW5kIENTUyBUcmFuc2l0aW9ucywgd2VyZSBkaXNwYXRjaGVkIHZpYSBhIGRlZGljYXRlZCBw
ZXItYW5pbWF0aW9uIHF1ZXVlLCB3aGljaCBtZWFudCB0eXBpY2FsbHkgdGhhdCB0aG9zZSBldmVu
dHMgd2VyZSBkaXNwYXRoZWQgb25lIHJ1bmxvb3AgYWZ0ZXIgdGhlCisgICAgICAgIEFuaW1hdGlv
blBsYXliYWNrRXZlbnQgZXZlbnRzLgorCisgICAgICAgIFdlIG5vdyByZW1vdmUgdGhlIGRlZGlj
YXRlZCBwZXItYW5pbWF0aW9uIHF1ZXVlIGFuZCBlbnF1ZXVlIGFsbCBldmVudHMgaW4gdGhlIHNo
YXJlZCBEb2N1bWVudFRpbWVsaW5lIHF1ZXVlIGZvciBkaXNwYXRjaCBkdXJpbmcgdGhlICJ1cGRh
dGUgYW5pbWF0aW9ucyBhbmQgc2VuZAorICAgICAgICBldmVudHMiIHByb2NlZHVyZS4gVG8gZG8g
dGhpcyBjb3JyZWN0bHksIHdlIG5lZWQgdG8gZG8gYSBjb3VwbGUgb2Ygb3RoZXIgdGhpbmdzIHRo
YXQgZW5zdXJlIHdlIGRvbid0IHJlZ3Jlc3MgdGVzdHMuCisKKyAgICAgICAgRmlyc3QsIHdlIHVw
ZGF0ZSB0aGUgRG9jdW1lbnRUaW1lbGluZTo6c2hvdWxkUnVuVXBkYXRlQW5pbWF0aW9uc0FuZFNl
bmRFdmVudHNJZ25vcmluZ1N1c3BlbnNpb25TdGF0ZSgpIHRvIGFjY291bnQgZm9yIHdoZXRoZXIg
dGhlcmUgYXJlIHBlbmRpbmcgYW5pbWF0aW9uIGV2ZW50cywKKyAgICAgICAgZ3VhcmFudGVlaW5n
IHRoYXQgYW4gYW5pbWF0aW9uIHVwZGF0ZSBpcyBzY2hlZHVsZWQgc2hvdWxkIHRoZXJlIGJlIGFu
eS4KKworICAgICAgICBTZWNvbmQsIHdoZW4gYW5pbWF0aW9uIGV2ZW50cyBhcmUgZW5xdWV1ZWQg
aW4gRG9jdW1lbnRUaW1lbGluZTo6ZW5xdWV1ZUFuaW1hdGlvbkV2ZW50KCkgd2Ugc2NoZWR1bGUg
YW4gYW5pbWF0aW9uIHVwZGF0ZSBpZiBuZWVkZWQsIHNpbmNlIHdlIGtub3cgd2Ugbm93CisgICAg
ICAgIGhhdmUgcGVuZGluZyBldmVudHMgdGhhdCB3aWxsIG5lZWQgdG8gYmUgZGVsaXZlcmVkIGlu
IGFuIHVwY29taW5nIHVwZGF0ZS4gV2UgYWxzbyBtYWludGFpbiBhIGZsYWcgYmV0d2VlbiB0aGUg
c3RhcnQgb2YgdGhlICJ1cGRhdGUgYW5pbWF0aW9ucyBhbmQgc2VuZCBldmVudHMiCisgICAgICAg
IHByb2NlZHVyZSBhbmQgdGhlIG1vbWVudCB3aGVuIHRoZSBwZW5kaW5nIGFuaW1hdGlvbiBldmVu
dHMgcXVldWUgaXMgY2xlYXJlZCBwcmlvciB0byBkaXNwYXRjaGluZyBldmVudHMgc28gdGhhdCBl
dmVudHMgZW5xdWV1ZWQgaW4gdGhlIG1lYW50aW1lIGRvIG5vdAorICAgICAgICBwcmVtYXR1cmVs
eSBzY2hlZHVsZSBhbmltYXRpb24gcmVzb2x1dGlvbi4gVGhlIG5lZWQgZm9yIGEgbmV3IGFuaW1h
dGlvbiByZXNvbHV0aW9uIHdpbGwgYmUgY2hlY2tlZCBhdCB0aGUgZW5kIG9mIHRoZSBwcm9jZWR1
cmUuCisKKyAgICAgICAgRmluYWxseSwgZGVjbGFyYXRpdmUgYW5pbWF0aW9ucyB1c2VkIHRvIGhh
dmUgYSBzcGVjaWFsIHN1Y2xhc3Mgb2YgV2ViQW5pbWF0aW9uOjpuZWVkc1RpY2soKSB0aGF0IHdv
dWxkIGNoZWNrIHdoZXRoZXIgdGhleSBoYWQgYW55IHBlbmRpbmcgZXZlbnRzLCBlbnN1cmluZwor
ICAgICAgICB0aGV5IHdvdWxkIG5vdCBiZSByZW1vdmVkIHByZW1hdHVyZWx5LiBXZSBub3cgcmVz
ZXQgYSBmbGFnIHRvIGZhbHNlIGFzIFdlYkFuaW1hdGlvbjo6dGljaygpIGlzIGNhbGxlZCAoYXMg
cGFydCBvZiB0aGUgInVwZGF0ZSBhbmltYXRpb25zIGFuZCBzZW5kIGV2ZW50cyIKKyAgICAgICAg
cHJvY2VkdXJlKSBhbmQgc2V0IGl0IHRvIHRydWUgaW4gY2FzZSBhbiBhbmltYXRpb24gaXMgZW5x
dWV1ZWQuIFRoaXMgZmxhZyBpcyB0aGVuIHVzZWQgaW4gbmVlZHNUaWNrKCkgdG8gZ3VhcmFudGVl
IHRoZSBhbmltYXRpb24gaXMgbm90IHJlbW92ZWQgYmVmb3JlCisgICAgICAgIHRoZSBEb2N1bWVu
dFRpbWVsaW5lIGhhcyBoYWQgYSBjaGFuY2UgdG8gZGlzcGF0Y2ggdGhlIGVucXVldWVkIGV2ZW50
LgorCisgICAgICAgIE5vdGUgYWxzbyB0aGF0LCBmb3IgY2xhcml0eSwgdGhlIERvY3VtZW50VGlt
ZWxpbmU6OnVuc2NoZWR1bGVBbmltYXRpb25SZXNvbHV0aW9uKCkgd2FzIHJlbmFtZWQgdG8gRG9j
dW1lbnRUaW1lbGluZTo6Y2xlYXJUaWNrU2NoZWR1bGVUaW1lcigpIHNpbmNlIGl0IHdvdWxkbid0
CisgICAgICAgIGFjdHVhbGx5IGNhbmNlbCBhIHByZXZpb3VzIGFuaW1hdGlvbiByZXNvbHV0aW9u
IHNjaGVkdWxlLgorCisgICAgICAgICogYW5pbWF0aW9uL0NTU1RyYW5zaXRpb24uaDogRml4IGEg
bmV3bHkgZm91bmQgYnVpbGQgZXJyb3IgZHVlIHRvIHRoZSBtaXNzaW5nIHd0Zi9Nb25vdG9uaWNU
aW1lLmggaGVhZGVyLgorICAgICAgICAqIGFuaW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5j
cHA6IFJlbW92ZSBhbGwgY29kZSByZWxhdGVkIHRvIHRoZSBkZWRpY2F0ZWQgcGVyLWFuaW1hdGlv
biBxdWV1ZSBhbmQgaW5zdGVhZCBjYWxsIHRoZSBuZXcgV2ViQW5pbWF0aW9uOjplbnF1ZXVlQW5p
bWF0aW9uRXZlbnQoKQorICAgICAgICBtZXRob2QgdG8gZW5xdWV1ZSBldmVudHMgb24gdGhlIERv
Y3VtZW50VGltZWxpbmUuCisgICAgICAgIChXZWJDb3JlOjpEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6
RGVjbGFyYXRpdmVBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RGVjbGFyYXRpdmVBbmlt
YXRpb246OnRpY2spOgorICAgICAgICAoV2ViQ29yZTo6RGVjbGFyYXRpdmVBbmltYXRpb246OmVu
cXVldWVET01FdmVudCk6CisgICAgICAgICogYW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9u
Lmg6CisgICAgICAgICogYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRUaW1lbGluZTo6ZGV0YWNoRnJvbURvY3VtZW50KTogRW5zdXJlIHRo
ZSBwZW5kaW5nIGV2ZW50cyBxdWV1ZSBpcyBjbGVhcmVkIHdoZW4gdGhlIHRpbWVsaW5lIGlzIGRl
dGFjaGVkIGZyb20gYSBkb2N1bWVudCwgZW5zdXJpbmcgdGhhdCB0aGVyZSBubworICAgICAgICBs
b25nZXIgZXZlbnRzIHRoYXQgd291bGQgY2F1c2UgYSByZWYtY3ljbGUgKERvY3VtZW50VGltZWxp
bmUgLT4gQW5pbWF0aW9uUGxheWJhY2tFdmVudCAtPiBXZWJBbmltYXRpb24gLT4gRG9jdW1lbnRU
aW1lbGluZSkuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRpbWVsaW5lOjpzdXNwZW5kQW5p
bWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRpbWVsaW5lOjpyZW1vdmVBbmlt
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaW1lbGluZTo6c2NoZWR1bGVBbmlt
YXRpb25SZXNvbHV0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGltZWxpbmU6OmNs
ZWFyVGlja1NjaGVkdWxlVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaW1lbGlu
ZTo6c2hvdWxkUnVuVXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVudHNJZ25vcmluZ1N1c3BlbnNp
b25TdGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRpbWVsaW5lOjp1cGRh
dGVDdXJyZW50VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRpbWVsaW5lOjp1cGRh
dGVBbmltYXRpb25zQW5kU2VuZEV2ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRp
bWVsaW5lOjppbnRlcm5hbFVwZGF0ZUFuaW1hdGlvbnNBbmRTZW5kRXZlbnRzKToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50VGltZWxpbmU6OnNjaGVkdWxlTmV4dFRpY2spOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRUaW1lbGluZTo6YW5pbWF0aW9uQWNjZWxlcmF0ZWRSdW5uaW5nU3Rh
dGVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaW1lbGluZTo6ZW5xdWV1
ZUFuaW1hdGlvbkV2ZW50KToKKyAgICAgICAgKiBhbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5o
OgorICAgICAgICAqIGFuaW1hdGlvbi9XZWJBbmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViQW5pbWF0aW9uOjplbnF1ZXVlQW5pbWF0aW9uUGxheWJhY2tFdmVudCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJBbmltYXRpb246OmVucXVldWVBbmltYXRpb25FdmVudCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJBbmltYXRpb246Om5lZWRzVGljayBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJBbmltYXRpb246OnRpY2spOgorICAgICAgICAqIGFuaW1hdGlvbi9XZWJBbmltYXRp
b24uaDoKKwogMjAyMC0wMi0xNCAgQW50b2luZSBRdWludCAgPGdyYW91dHNAd2Via2l0Lm9yZz4K
IAogICAgICAgICBbV2ViIEFuaW1hdGlvbnNdIE1ha2UgYWxsIGFuaW1hdGlvbiBldmVudCB0eXBl
cyBpbmhlcml0IGZyb20gdGhlIHNhbWUgYmFzZSBjbGFzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYW5pbWF0aW9uL0NTU1RyYW5zaXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlv
bi9DU1NUcmFuc2l0aW9uLmgKaW5kZXggMjMzMTdlZGY2YTk0MmY3YjQ0OWIzODY4MmJjNDBlNmRk
MTQ3YWMxZS4uZDE4Mjg1Y2JiM2E4OWY2YjNkNDhkMzc3MGNkNzMxZWM2ZDVhOTg3ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU1RyYW5zaXRpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTVHJhbnNpdGlvbi5oCkBAIC0yNyw2ICsyNyw3IEBACiAK
ICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCiAjaW5jbHVkZSAiRGVjbGFyYXRpdmVBbmlt
YXRpb24uaCIKKyNpbmNsdWRlIDx3dGYvTW9ub3RvbmljVGltZS5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWYuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1h
dGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5jcHAKaW5kZXggZTMxZDJmNzEwMTVlYjI4MWM4NGU0
NTg2MGUxNTY2ODA5OGE0ZmMwNC4uNjI2YjgwZWJkNjBlYjMyM2JiOTZmYTY0OWIxODk0YWQxN2Jk
Njk0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5p
bWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRGVjbGFyYXRpdmVBbmlt
YXRpb24uY3BwCkBAIC00Miw3ICs0Miw2IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChE
ZWNsYXJhdGl2ZUFuaW1hdGlvbik7CiAKIERlY2xhcmF0aXZlQW5pbWF0aW9uOjpEZWNsYXJhdGl2
ZUFuaW1hdGlvbihFbGVtZW50JiBvd25pbmdFbGVtZW50LCBjb25zdCBBbmltYXRpb24mIGJhY2tp
bmdBbmltYXRpb24pCiAgICAgOiBXZWJBbmltYXRpb24ob3duaW5nRWxlbWVudC5kb2N1bWVudCgp
KQotICAgICwgbV9ldmVudFF1ZXVlKE1haW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1ZTo6Y3JlYXRl
KG93bmluZ0VsZW1lbnQpKQogICAgICwgbV9vd25pbmdFbGVtZW50KCZvd25pbmdFbGVtZW50KQog
ICAgICwgbV9iYWNraW5nQW5pbWF0aW9uKGNvbnN0X2Nhc3Q8QW5pbWF0aW9uJj4oYmFja2luZ0Fu
aW1hdGlvbikpCiB7CkBAIC02MywxMCArNjIsOCBAQCB2b2lkIERlY2xhcmF0aXZlQW5pbWF0aW9u
Ojp0aWNrKCkKICAgICAvLyBjYW5jZWxlZCB1c2luZyB0aGUgV2ViIEFuaW1hdGlvbnMgQVBJIGFu
ZCBpdCBzaG91bGQgYmUgZGlzYXNzb2NpYXRlZCBmcm9tIGl0cyBvd25lciBlbGVtZW50LgogICAg
IC8vIEZyb20gdGhpcyBwb2ludCBvbiwgdGhpcyBhbmltYXRpb24gaXMgbGlrZSBhbnkgb3RoZXIg
YW5pbWF0aW9uIGFuZCBzaG91bGQgbm90IGFwcGVhciBpbiB0aGUKICAgICAvLyBtYXBzIGNvbnRh
aW5pbmcgcnVubmluZyBDU1MgVHJhbnNpdGlvbnMgYW5kIENTUyBBbmltYXRpb25zIGZvciBhIGdp
dmVuIGVsZW1lbnQuCi0gICAgaWYgKHdhc1JlbGV2YW50ICYmIHBsYXlTdGF0ZSgpID09IFdlYkFu
aW1hdGlvbjo6UGxheVN0YXRlOjpJZGxlKSB7CisgICAgaWYgKHdhc1JlbGV2YW50ICYmIHBsYXlT
dGF0ZSgpID09IFdlYkFuaW1hdGlvbjo6UGxheVN0YXRlOjpJZGxlKQogICAgICAgICBkaXNhc3Nv
Y2lhdGVGcm9tT3duaW5nRWxlbWVudCgpOwotICAgICAgICBtX2V2ZW50UXVldWUtPmNsb3NlKCk7
Ci0gICAgfQogfQogCiBib29sIERlY2xhcmF0aXZlQW5pbWF0aW9uOjpjYW5IYXZlR2xvYmFsUG9z
aXRpb24oKQpAQCAtOTAsMTcgKzg3LDYgQEAgdm9pZCBEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6ZGlz
YXNzb2NpYXRlRnJvbU93bmluZ0VsZW1lbnQoKQogICAgIG1fb3duaW5nRWxlbWVudCA9IG51bGxw
dHI7CiB9CiAKLWJvb2wgRGVjbGFyYXRpdmVBbmltYXRpb246Om5lZWRzVGljaygpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIFdlYkFuaW1hdGlvbjo6bmVlZHNUaWNrKCkgfHwgbV9ldmVudFF1ZXVlLT5o
YXNQZW5kaW5nRXZlbnRzKCk7Ci19Ci0KLXZvaWQgRGVjbGFyYXRpdmVBbmltYXRpb246OnJlbW92
ZSgpCi17Ci0gICAgbV9ldmVudFF1ZXVlLT5jbG9zZSgpOwotICAgIFdlYkFuaW1hdGlvbjo6cmVt
b3ZlKCk7Ci19Ci0KIHZvaWQgRGVjbGFyYXRpdmVBbmltYXRpb246OnNldEJhY2tpbmdBbmltYXRp
b24oY29uc3QgQW5pbWF0aW9uJiBiYWNraW5nQW5pbWF0aW9uKQogewogICAgIG1fYmFja2luZ0Fu
aW1hdGlvbiA9IGNvbnN0X2Nhc3Q8QW5pbWF0aW9uJj4oYmFja2luZ0FuaW1hdGlvbik7CkBAIC0z
NTEsNyArMzM3LDkgQEAgdm9pZCBEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6ZW5xdWV1ZURPTUV2ZW50
KGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgU2Vjb25kcwogICAgIGF1dG8gdGltZSA9IHNl
Y29uZHNUb1dlYkFuaW1hdGlvbnNBUElUaW1lKGVsYXBzZWRUaW1lKSAvIDEwMDA7CiAgICAgY29u
c3QgYXV0byYgcHNldWRvSWQgPSBQc2V1ZG9FbGVtZW50Ojpwc2V1ZG9FbGVtZW50TmFtZUZvckV2
ZW50cyhtX293bmluZ0VsZW1lbnQtPnBzZXVkb0lkKCkpOwogICAgIGF1dG8gdGltZWxpbmVUaW1l
ID0gdGltZWxpbmUoKSA/IHRpbWVsaW5lKCktPmN1cnJlbnRUaW1lKCkgOiBXVEY6Om51bGxvcHQ7
Ci0gICAgbV9ldmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoY3JlYXRlRXZlbnQoZXZlbnRUeXBlLCB0
aW1lLCBwc2V1ZG9JZCwgdGltZWxpbmVUaW1lKSk7CisgICAgYXV0byBldmVudCA9IGNyZWF0ZUV2
ZW50KGV2ZW50VHlwZSwgdGltZSwgcHNldWRvSWQsIHRpbWVsaW5lVGltZSk7CisgICAgZXZlbnQt
PnNldFRhcmdldChtX293bmluZ0VsZW1lbnQpOworICAgIGVucXVldWVBbmltYXRpb25FdmVudChX
VEZNb3ZlKGV2ZW50KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5oIGIvU291cmNl
L1dlYkNvcmUvYW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9uLmgKaW5kZXggYWQ0OGM5ODY1
ODM4MzhlMjI2YzI2M2M3MTU4M2UxYjU3NTcxZTBlMS4uMzkzNWFiNGEyNDcwNjQ1YTFjZjIyZGFh
NDY0ZWRjMjFlZTJkNzA1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0Rl
Y2xhcmF0aXZlQW5pbWF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RlY2xh
cmF0aXZlQW5pbWF0aW9uLmgKQEAgLTI3LDcgKzI3LDYgQEAKIAogI2luY2x1ZGUgIkFuaW1hdGlv
bkVmZmVjdC5oIgogI2luY2x1ZGUgIkFuaW1hdGlvbkVmZmVjdFBoYXNlLmgiCi0jaW5jbHVkZSAi
R2VuZXJpY0V2ZW50UXVldWUuaCIKICNpbmNsdWRlICJXZWJBbmltYXRpb24uaCIKICNpbmNsdWRl
IDx3dGYvUmVmLmg+CiAKQEAgLTY1LDcgKzY0LDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0VGlt
ZWxpbmUoUmVmUHRyPEFuaW1hdGlvblRpbWVsaW5lPiYmKSBmaW5hbDsKICAgICB2b2lkIGNhbmNl
bCgpIGZpbmFsOwogCi0gICAgYm9vbCBuZWVkc1RpY2soKSBjb25zdCBvdmVycmlkZTsKICAgICB2
b2lkIHRpY2soKSBvdmVycmlkZTsKIAogICAgIGJvb2wgY2FuSGF2ZUdsb2JhbFBvc2l0aW9uKCkg
ZmluYWw7CkBAIC04MywxMyArODEsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGZsdXNoUGVuZGlu
Z1N0eWxlQ2hhbmdlcygpIGNvbnN0OwogICAgIEFuaW1hdGlvbkVmZmVjdFBoYXNlIHBoYXNlV2l0
aG91dEVmZmVjdCgpIGNvbnN0OwogICAgIHZvaWQgZW5xdWV1ZURPTUV2ZW50KGNvbnN0IEF0b21T
dHJpbmcmLCBTZWNvbmRzKTsKLSAgICB2b2lkIHJlbW92ZSgpIGZpbmFsOwogCiAgICAgYm9vbCBt
X3dhc1BlbmRpbmcgeyBmYWxzZSB9OwogICAgIEFuaW1hdGlvbkVmZmVjdFBoYXNlIG1fcHJldmlv
dXNQaGFzZSB7IEFuaW1hdGlvbkVmZmVjdFBoYXNlOjpJZGxlIH07CiAKLSAgICBVbmlxdWVSZWY8
TWFpblRocmVhZEdlbmVyaWNFdmVudFF1ZXVlPiBtX2V2ZW50UXVldWU7Ci0KICAgICBFbGVtZW50
KiBtX293bmluZ0VsZW1lbnQ7CiAgICAgUmVmPEFuaW1hdGlvbj4gbV9iYWNraW5nQW5pbWF0aW9u
OwogICAgIGRvdWJsZSBtX3ByZXZpb3VzSXRlcmF0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvYW5p
bWF0aW9uL0RvY3VtZW50VGltZWxpbmUuY3BwCmluZGV4IGJmODJkYjQ2MzE4NWM0YzU3NDRiZDQ5
NTkyZDBjOWVlODg3NTA5NTAuLjEyZjMzZWQ1YTkyZDYyMDZkZTdmYzBmNjNhNjg5OWE0NjU5OGVi
MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5l
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5jcHAK
QEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJEb2N1bWVu
dFRpbWVsaW5lLmgiCiAKLSNpbmNsdWRlICJBbmltYXRpb25QbGF5YmFja0V2ZW50LmgiCisjaW5j
bHVkZSAiQW5pbWF0aW9uRXZlbnRCYXNlLmgiCiAjaW5jbHVkZSAiQ1NTQW5pbWF0aW9uLmgiCiAj
aW5jbHVkZSAiQ1NTVHJhbnNpdGlvbi5oIgogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgpAQCAtODgs
NiArODgsNyBAQCB2b2lkIERvY3VtZW50VGltZWxpbmU6OmRldGFjaEZyb21Eb2N1bWVudCgpCiAg
ICAgaWYgKG1fZG9jdW1lbnQpCiAgICAgICAgIG1fZG9jdW1lbnQtPnJlbW92ZVRpbWVsaW5lKCp0
aGlzKTsKIAorICAgIG1fcGVuZGluZ0FuaW1hdGlvbkV2ZW50cy5jbGVhcigpOwogICAgIG1fY3Vy
cmVudFRpbWVDbGVhcmluZ1Rhc2tRdWV1ZS5jbG9zZSgpOwogICAgIG1fZWxlbWVudHNXaXRoUnVu
bmluZ0FjY2VsZXJhdGVkQW5pbWF0aW9ucy5jbGVhcigpOwogCkBAIC05NSw3ICs5Niw3IEBAIHZv
aWQgRG9jdW1lbnRUaW1lbGluZTo6ZGV0YWNoRnJvbURvY3VtZW50KCkKICAgICB3aGlsZSAoIWFu
aW1hdGlvbnNUb1JlbW92ZS5pc0VtcHR5KCkpCiAgICAgICAgIGFuaW1hdGlvbnNUb1JlbW92ZS5m
aXJzdCgpLT5yZW1vdmUoKTsKIAotICAgIHVuc2NoZWR1bGVBbmltYXRpb25SZXNvbHV0aW9uKCk7
CisgICAgY2xlYXJUaWNrU2NoZWR1bGVUaW1lcigpOwogICAgIG1fZG9jdW1lbnQgPSBudWxscHRy
OwogfQogCkBAIC0yMzQsNyArMjM1LDcgQEAgdm9pZCBEb2N1bWVudFRpbWVsaW5lOjpzdXNwZW5k
QW5pbWF0aW9ucygpCiAKICAgICBhcHBseVBlbmRpbmdBY2NlbGVyYXRlZEFuaW1hdGlvbnMoKTsK
IAotICAgIHVuc2NoZWR1bGVBbmltYXRpb25SZXNvbHV0aW9uKCk7CisgICAgY2xlYXJUaWNrU2No
ZWR1bGVUaW1lcigpOwogfQogCiB2b2lkIERvY3VtZW50VGltZWxpbmU6OnJlc3VtZUFuaW1hdGlv
bnMoKQpAQCAtMzI3LDMxICszMjgsMzEgQEAgdm9pZCBEb2N1bWVudFRpbWVsaW5lOjpyZW1vdmVB
bmltYXRpb24oV2ViQW5pbWF0aW9uJiBhbmltYXRpb24pCiB7CiAgICAgQW5pbWF0aW9uVGltZWxp
bmU6OnJlbW92ZUFuaW1hdGlvbihhbmltYXRpb24pOwogCi0gICAgaWYgKCFzaG91bGRSdW5VcGRh
dGVBbmltYXRpb25zQW5kU2VuZEV2ZW50c0lnbm9yaW5nU3VzcGVuc2lvblN0YXRlKCkpCi0gICAg
ICAgIHVuc2NoZWR1bGVBbmltYXRpb25SZXNvbHV0aW9uKCk7CisgICAgaWYgKG1fYW5pbWF0aW9u
cy5pc0VtcHR5KCkpCisgICAgICAgIGNsZWFyVGlja1NjaGVkdWxlVGltZXIoKTsKIH0KIAogdm9p
ZCBEb2N1bWVudFRpbWVsaW5lOjpzY2hlZHVsZUFuaW1hdGlvblJlc29sdXRpb24oKQogewotICAg
IGlmIChtX2lzU3VzcGVuZGVkIHx8IG1fYW5pbWF0aW9uUmVzb2x1dGlvblNjaGVkdWxlZCB8fCAh
c2hvdWxkUnVuVXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVudHNJZ25vcmluZ1N1c3BlbnNpb25T
dGF0ZSgpKQorICAgIGlmIChtX2lzU3VzcGVuZGVkIHx8IG1fYW5pbWF0aW9uUmVzb2x1dGlvblNj
aGVkdWxlZCB8fCAhbV9kb2N1bWVudCB8fCAhbV9kb2N1bWVudC0+cGFnZSgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBpZiAoIW1fZG9jdW1lbnQgfHwgIW1fZG9jdW1lbnQtPnBhZ2UoKSkKKyAg
ICAvLyBXZSBuZWVkIHNvbWUgcmVsZXZhbnQgYW5pbWF0aW9ucyBvciBwZW5kaW5nIGV2ZW50cyB0
byBwcm9jZWVkLgorICAgIGlmICghc2hvdWxkUnVuVXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVu
dHNJZ25vcmluZ1N1c3BlbnNpb25TdGF0ZSgpKQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAg
ICBtX2RvY3VtZW50LT5wYWdlKCktPnJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcigpLnNjaGVkdWxl
VGltZWRSZW5kZXJpbmdVcGRhdGUoKTsKICAgICBtX2FuaW1hdGlvblJlc29sdXRpb25TY2hlZHVs
ZWQgPSB0cnVlOwogfQogCi12b2lkIERvY3VtZW50VGltZWxpbmU6OnVuc2NoZWR1bGVBbmltYXRp
b25SZXNvbHV0aW9uKCkKK3ZvaWQgRG9jdW1lbnRUaW1lbGluZTo6Y2xlYXJUaWNrU2NoZWR1bGVU
aW1lcigpCiB7CiAgICAgbV90aWNrU2NoZWR1bGVUaW1lci5zdG9wKCk7Ci0gICAgbV9hbmltYXRp
b25SZXNvbHV0aW9uU2NoZWR1bGVkID0gZmFsc2U7CiB9CiAKIGJvb2wgRG9jdW1lbnRUaW1lbGlu
ZTo6c2hvdWxkUnVuVXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVudHNJZ25vcmluZ1N1c3BlbnNp
b25TdGF0ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICFtX2FuaW1hdGlvbnMuaXNFbXB0eSgpIHx8
ICFtX2FjY2VsZXJhdGVkQW5pbWF0aW9uc1BlbmRpbmdSdW5uaW5nU3RhdGVDaGFuZ2UuaXNFbXB0
eSgpOworICAgIHJldHVybiAhbV9hbmltYXRpb25zLmlzRW1wdHkoKSB8fCAhbV9wZW5kaW5nQW5p
bWF0aW9uRXZlbnRzLmlzRW1wdHkoKSB8fCAhbV9hY2NlbGVyYXRlZEFuaW1hdGlvbnNQZW5kaW5n
UnVubmluZ1N0YXRlQ2hhbmdlLmlzRW1wdHkoKTsKIH0KIAogdm9pZCBEb2N1bWVudFRpbWVsaW5l
Ojp1cGRhdGVDdXJyZW50VGltZShET01IaWdoUmVzVGltZVN0YW1wIHRpbWVzdGFtcCkKQEAgLTM1
OSwxOSArMzYwLDIzIEBAIHZvaWQgRG9jdW1lbnRUaW1lbGluZTo6dXBkYXRlQ3VycmVudFRpbWUo
RE9NSGlnaFJlc1RpbWVTdGFtcCB0aW1lc3RhbXApCiAgICAgLy8gV2UgbmVlZCB0byBmcmVlemUg
dGhlIGN1cnJlbnQgdGltZSBldmVuIGlmIG5vIGFuaW1hdGlvbiBpcyBydW5uaW5nLgogICAgIC8v
IGRvY3VtZW50LnRpbWVsaW5lLmN1cnJlbnRUaW1lIG1heSBiZSBjYWxsZWQgZnJvbSBhIHJBRiBj
YWxsYmFjayBhbmQKICAgICAvLyBpdCBoYXMgdG8gbWF0Y2ggdGhlIHJBRiB0aW1lc3RhbXAuCi0g
ICAgaWYgKCFtX2lzU3VzcGVuZGVkKQorICAgIGlmICghbV9pc1N1c3BlbmRlZCB8fCAhc2hvdWxk
UnVuVXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVudHNJZ25vcmluZ1N1c3BlbnNpb25TdGF0ZSgp
KQogICAgICAgICBjYWNoZUN1cnJlbnRUaW1lKHRpbWVzdGFtcCk7CiB9CiAKIHZvaWQgRG9jdW1l
bnRUaW1lbGluZTo6dXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVudHMoKQogewotICAgIGlmICht
X2lzU3VzcGVuZGVkIHx8ICFzaG91bGRSdW5VcGRhdGVBbmltYXRpb25zQW5kU2VuZEV2ZW50c0ln
bm9yaW5nU3VzcGVuc2lvblN0YXRlKCkpCi0gICAgICAgIHJldHVybjsKIAogICAgIC8vIFVwZGF0
aW5nIGFuaW1hdGlvbnMgYW5kIHNlbmRpbmcgZXZlbnRzIG1heSBpbnZhbGlkYXRlIHRoZSB0aW1p
bmcgb2Ygc29tZSBhbmltYXRpb25zLCBzbyB3ZSBtdXN0IHNldCB0aGUgbV9hbmltYXRpb25SZXNv
bHV0aW9uU2NoZWR1bGVkCiAgICAgLy8gZmxhZyB0byBmYWxzZSBwcmlvciB0byBydW5uaW5nIHRo
YXQgcHJvY2VkdXJlIHRvIGFsbG93IGFuaW1hdGlvbiB3aXRoIHRpbWluZyBtb2RlbCB1cGRhdGVz
IHRvIHNjaGVkdWxlIHVwZGF0ZXMuCiAgICAgbV9hbmltYXRpb25SZXNvbHV0aW9uU2NoZWR1bGVk
ID0gZmFsc2U7CiAKKyAgICBpZiAobV9pc1N1c3BlbmRlZCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgaWYgKCFzaG91bGRSdW5VcGRhdGVBbmltYXRpb25zQW5kU2VuZEV2ZW50c0lnbm9yaW5nU3Vz
cGVuc2lvblN0YXRlKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIGludGVybmFsVXBkYXRlQW5p
bWF0aW9uc0FuZFNlbmRFdmVudHMoKTsKICAgICBhcHBseVBlbmRpbmdBY2NlbGVyYXRlZEFuaW1h
dGlvbnMoKTsKIApAQCAtMzgzLDYgKzM4OCwxMSBAQCB2b2lkIERvY3VtZW50VGltZWxpbmU6Omlu
dGVybmFsVXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVudHMoKQogewogICAgIG1fbnVtYmVyT2ZB
bmltYXRpb25UaW1lbGluZUludmFsaWRhdGlvbnNGb3JUZXN0aW5nKys7CiAKKyAgICAvLyBlbnF1
ZXVlQW5pbWF0aW9uRXZlbnQoKSBjYWxscyBzY2hlZHVsZUFuaW1hdGlvblJlc29sdXRpb24oKSB0
byBlbnN1cmUgdGhhdCB0aGUgInVwZGF0ZSBhbmltYXRpb25zIGFuZCBzZW5kIGV2ZW50cyIKKyAg
ICAvLyBwcm9jZWR1cmUgaXMgcnVuIGFuZCBlbnF1ZXVlZCBldmVudHMgYXJlIGRpc3BhdGNoZWQg
aW4gdGhlIG5leHQgZnJhbWUuIEhvd2V2ZXIsIGV2ZW50cyB0aGF0IGFyZSBlbnF1ZXVlZCB3aGls
ZQorICAgIC8vIHRoaXMgcHJvY2VkdXJlIGlzIHJ1bm5pbmcgc2hvdWxkIG5vdCBzY2hlZHVsZSBh
bmltYXRpb24gcmVzb2x1dGlvbiB1bnRpbCB0aGUgZXZlbnQgcXVldWUgaGFzIGJlZW4gY2xlYXJl
ZC4KKyAgICBtX3Nob3VsZFNjaGVkdWxlQW5pbWF0aW9uUmVzb2x1dGlvbkZvck5ld1BlbmRpbmdF
dmVudHMgPSBmYWxzZTsKKwogICAgIC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy93ZWItYW5p
bWF0aW9ucy8jdXBkYXRlLWFuaW1hdGlvbnMtYW5kLXNlbmQtZXZlbnRzCiAKICAgICAvLyAxLiBV
cGRhdGUgdGhlIGN1cnJlbnQgdGltZSBvZiBhbGwgdGltZWxpbmVzIGFzc29jaWF0ZWQgd2l0aCBk
b2MgcGFzc2luZyBub3cgYXMgdGhlIHRpbWVzdGFtcC4KQEAgLTQyMSw5ICs0MzEsMTAgQEAgdm9p
ZCBEb2N1bWVudFRpbWVsaW5lOjppbnRlcm5hbFVwZGF0ZUFuaW1hdGlvbnNBbmRTZW5kRXZlbnRz
KCkKICAgICAvLyA0LiBMZXQgZXZlbnRzIHRvIGRpc3BhdGNoIGJlIGEgY29weSBvZiBkb2MncyBw
ZW5kaW5nIGFuaW1hdGlvbiBldmVudCBxdWV1ZS4KICAgICAvLyA1LiBDbGVhciBkb2MncyBwZW5k
aW5nIGFuaW1hdGlvbiBldmVudCBxdWV1ZS4KICAgICBhdXRvIHBlbmRpbmdBbmltYXRpb25FdmVu
dHMgPSBXVEZNb3ZlKG1fcGVuZGluZ0FuaW1hdGlvbkV2ZW50cyk7CisgICAgbV9zaG91bGRTY2hl
ZHVsZUFuaW1hdGlvblJlc29sdXRpb25Gb3JOZXdQZW5kaW5nRXZlbnRzID0gdHJ1ZTsKIAogICAg
IC8vIDYuIFBlcmZvcm0gYSBzdGFibGUgc29ydCBvZiB0aGUgYW5pbWF0aW9uIGV2ZW50cyBpbiBl
dmVudHMgdG8gZGlzcGF0Y2ggYXMgZm9sbG93cy4KLSAgICBzdGQ6OnN0YWJsZV9zb3J0KHBlbmRp
bmdBbmltYXRpb25FdmVudHMuYmVnaW4oKSwgcGVuZGluZ0FuaW1hdGlvbkV2ZW50cy5lbmQoKSwg
W10gKGNvbnN0IFJlZjxBbmltYXRpb25QbGF5YmFja0V2ZW50PiYgbGhzLCBjb25zdCBSZWY8QW5p
bWF0aW9uUGxheWJhY2tFdmVudD4mIHJocykgeworICAgIHN0ZDo6c3RhYmxlX3NvcnQocGVuZGlu
Z0FuaW1hdGlvbkV2ZW50cy5iZWdpbigpLCBwZW5kaW5nQW5pbWF0aW9uRXZlbnRzLmVuZCgpLCBb
XSAoY29uc3QgUmVmPEFuaW1hdGlvbkV2ZW50QmFzZT4mIGxocywgY29uc3QgUmVmPEFuaW1hdGlv
bkV2ZW50QmFzZT4mIHJocykgewogICAgICAgICAvLyAxLiBTb3J0IHRoZSBldmVudHMgYnkgdGhl
aXIgc2NoZWR1bGVkIGV2ZW50IHRpbWUgc3VjaCB0aGF0IGV2ZW50cyB0aGF0IHdlcmUgc2NoZWR1
bGVkIHRvIG9jY3VyIGVhcmxpZXIsIHNvcnQgYmVmb3JlIGV2ZW50cyBzY2hlZHVsZWQgdG8gb2Nj
dXIgbGF0ZXIKICAgICAgICAgLy8gYW5kIGV2ZW50cyB3aG9zZSBzY2hlZHVsZWQgZXZlbnQgdGlt
ZSBpcyB1bnJlc29sdmVkIHNvcnQgYmVmb3JlIGV2ZW50cyB3aXRoIGEgcmVzb2x2ZWQgc2NoZWR1
bGVkIGV2ZW50IHRpbWUuCiAgICAgICAgIC8vIDIuIFdpdGhpbiBldmVudHMgd2l0aCBlcXVhbCBz
Y2hlZHVsZWQgZXZlbnQgdGltZXMsIHNvcnQgYnkgdGhlaXIgY29tcG9zaXRlIG9yZGVyLiBGSVhN
RTogV2UgZG9uJ3QgZG8gdGhpcy4KQEAgLTQzNyw4ICs0NDgsOCBAQCB2b2lkIERvY3VtZW50VGlt
ZWxpbmU6OmludGVybmFsVXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVudHMoKQogICAgIH0pOwog
CiAgICAgLy8gNy4gRGlzcGF0Y2ggZWFjaCBvZiB0aGUgZXZlbnRzIGluIGV2ZW50cyB0byBkaXNw
YXRjaCBhdCB0aGVpciBjb3JyZXNwb25kaW5nIHRhcmdldCB1c2luZyB0aGUgb3JkZXIgZXN0YWJs
aXNoZWQgaW4gdGhlIHByZXZpb3VzIHN0ZXAuCi0gICAgZm9yIChhdXRvJiBwZW5kaW5nRXZlbnQg
OiBwZW5kaW5nQW5pbWF0aW9uRXZlbnRzKQotICAgICAgICBwZW5kaW5nRXZlbnQtPnRhcmdldCgp
LT5kaXNwYXRjaEV2ZW50KHBlbmRpbmdFdmVudCk7CisgICAgZm9yIChhdXRvJiBwZW5kaW5nQW5p
bWF0aW9uRXZlbnQgOiBwZW5kaW5nQW5pbWF0aW9uRXZlbnRzKQorICAgICAgICBwZW5kaW5nQW5p
bWF0aW9uRXZlbnQtPnRhcmdldCgpLT5kaXNwYXRjaEV2ZW50KHBlbmRpbmdBbmltYXRpb25FdmVu
dCk7CiAKICAgICAvLyBUaGlzIHdpbGwgY2FuY2VsIGFueSBzY2hlZHVsZWQgaW52YWxpZGF0aW9u
IGlmIHdlIGVuZCB1cCByZW1vdmluZyBhbGwgYW5pbWF0aW9ucy4KICAgICBmb3IgKGF1dG8mIGFu
aW1hdGlvbiA6IGFuaW1hdGlvbnNUb1JlbW92ZSkgewpAQCAtNTQ3LDYgKzU1OCwxMCBAQCB2b2lk
IERvY3VtZW50VGltZWxpbmU6OnRyYW5zaXRpb25EaWRDb21wbGV0ZShSZWZQdHI8Q1NTVHJhbnNp
dGlvbj4gdHJhbnNpdGlvbikKIAogdm9pZCBEb2N1bWVudFRpbWVsaW5lOjpzY2hlZHVsZU5leHRU
aWNrKCkKIHsKKyAgICAvLyBJZiB3ZSBoYXZlIHBlbmRpbmcgYW5pbWF0aW9uIGV2ZW50cywgd2Ug
bmVlZCB0byBzY2hlZHVsZSBhbiB1cGRhdGUgcmlnaHQgYXdheS4KKyAgICBpZiAoIW1fcGVuZGlu
Z0FuaW1hdGlvbkV2ZW50cy5pc0VtcHR5KCkpCisgICAgICAgIHNjaGVkdWxlQW5pbWF0aW9uUmVz
b2x1dGlvbigpOworCiAgICAgLy8gVGhlcmUgaXMgbm8gdGljayB0byBzY2hlZHVsZSBpZiB3ZSBk
b24ndCBoYXZlIGFueSByZWxldmFudCBhbmltYXRpb25zLgogICAgIGlmIChtX2FuaW1hdGlvbnMu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CkBAIC02NjUsNyArNjgwLDcgQEAgdm9pZCBEb2N1
bWVudFRpbWVsaW5lOjphbmltYXRpb25BY2NlbGVyYXRlZFJ1bm5pbmdTdGF0ZURpZENoYW5nZShX
ZWJBbmltYXRpb24mIGEKICAgICBpZiAoc2hvdWxkUnVuVXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRF
dmVudHNJZ25vcmluZ1N1c3BlbnNpb25TdGF0ZSgpKQogICAgICAgICBzY2hlZHVsZUFuaW1hdGlv
blJlc29sdXRpb24oKTsKICAgICBlbHNlCi0gICAgICAgIHVuc2NoZWR1bGVBbmltYXRpb25SZXNv
bHV0aW9uKCk7CisgICAgICAgIGNsZWFyVGlja1NjaGVkdWxlVGltZXIoKTsKIH0KIAogdm9pZCBE
b2N1bWVudFRpbWVsaW5lOjp1cGRhdGVMaXN0T2ZFbGVtZW50c1dpdGhSdW5uaW5nQWNjZWxlcmF0
ZWRBbmltYXRpb25zRm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50KQpAQCAtNzA4LDkgKzcyMywx
MiBAQCBib29sIERvY3VtZW50VGltZWxpbmU6OnJ1bm5pbmdBbmltYXRpb25zRm9yRWxlbWVudEFy
ZUFsbEFjY2VsZXJhdGVkKEVsZW1lbnQmIGVsZQogICAgIHJldHVybiBtX2VsZW1lbnRzV2l0aFJ1
bm5pbmdBY2NlbGVyYXRlZEFuaW1hdGlvbnMuY29udGFpbnMoJmVsZW1lbnQpOwogfQogCi12b2lk
IERvY3VtZW50VGltZWxpbmU6OmVucXVldWVBbmltYXRpb25QbGF5YmFja0V2ZW50KEFuaW1hdGlv
blBsYXliYWNrRXZlbnQmIGV2ZW50KQordm9pZCBEb2N1bWVudFRpbWVsaW5lOjplbnF1ZXVlQW5p
bWF0aW9uRXZlbnQoQW5pbWF0aW9uRXZlbnRCYXNlJiBldmVudCkKIHsKKyAgICBTdHJpbmcgZXZl
bnRUeXBlID0gZXZlbnQudHlwZSgpLnN0cmluZygpOwogICAgIG1fcGVuZGluZ0FuaW1hdGlvbkV2
ZW50cy5hcHBlbmQoZXZlbnQpOworICAgIGlmIChtX3Nob3VsZFNjaGVkdWxlQW5pbWF0aW9uUmVz
b2x1dGlvbkZvck5ld1BlbmRpbmdFdmVudHMpCisgICAgICAgIHNjaGVkdWxlQW5pbWF0aW9uUmVz
b2x1dGlvbigpOwogfQogCiBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgZG91YmxlPj4gRG9jdW1l
bnRUaW1lbGluZTo6YWNjZWxlcmF0ZWRBbmltYXRpb25zRm9yRWxlbWVudChFbGVtZW50JiBlbGVt
ZW50KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50
VGltZWxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lLmgK
aW5kZXggMWZjYjgwNjA3MTBmZDZhNzVkZDQxMjY1ZjY3MzgyMGI2NGY1NjQxMi4uNTkyYTlkNTRm
MjE5NzI3N2I0MDcxOWM4YjNhMGE3ZWFlN2VkZWFmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmlt
YXRpb24vRG9jdW1lbnRUaW1lbGluZS5oCkBAIC0zNSw3ICszNSw3IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotY2xhc3MgQW5pbWF0aW9uUGxheWJhY2tFdmVudDsKK2NsYXNzIEFuaW1hdGlv
bkV2ZW50QmFzZTsKIGNsYXNzIFJlbmRlckVsZW1lbnQ7CiAKIGNsYXNzIERvY3VtZW50VGltZWxp
bmUgZmluYWwgOiBwdWJsaWMgQW5pbWF0aW9uVGltZWxpbmUsIHB1YmxpYyBDYW5NYWtlV2Vha1B0
cjxEb2N1bWVudFRpbWVsaW5lPgpAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBy
dW5uaW5nQW5pbWF0aW9uc0ZvckVsZW1lbnRBcmVBbGxBY2NlbGVyYXRlZChFbGVtZW50JikgY29u
c3Q7CiAgICAgdm9pZCBkZXRhY2hGcm9tRG9jdW1lbnQoKTsKIAotICAgIHZvaWQgZW5xdWV1ZUFu
aW1hdGlvblBsYXliYWNrRXZlbnQoQW5pbWF0aW9uUGxheWJhY2tFdmVudCYpOworICAgIHZvaWQg
ZW5xdWV1ZUFuaW1hdGlvbkV2ZW50KEFuaW1hdGlvbkV2ZW50QmFzZSYpOwogICAgIAogICAgIGJv
b2wgc2NoZWR1bGVkVXBkYXRlKCkgY29uc3QgeyByZXR1cm4gbV9hbmltYXRpb25SZXNvbHV0aW9u
U2NoZWR1bGVkOyB9CiAgICAgdm9pZCB1cGRhdGVDdXJyZW50VGltZShET01IaWdoUmVzVGltZVN0
YW1wIHRpbWVzdGFtcCk7CkBAIC05MiwxMSArOTIsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgY2Fj
aGVDdXJyZW50VGltZShET01IaWdoUmVzVGltZVN0YW1wKTsKICAgICB2b2lkIG1heWJlQ2xlYXJD
YWNoZWRDdXJyZW50VGltZSgpOwogICAgIHZvaWQgc2NoZWR1bGVJbnZhbGlkYXRpb25UYXNrSWZO
ZWVkZWQoKTsKLSAgICB2b2lkIHBlcmZvcm1JbnZhbGlkYXRpb25UYXNrKCk7CiAgICAgdm9pZCBz
Y2hlZHVsZUFuaW1hdGlvblJlc29sdXRpb24oKTsKLSAgICB2b2lkIHVuc2NoZWR1bGVBbmltYXRp
b25SZXNvbHV0aW9uKCk7CisgICAgdm9pZCBjbGVhclRpY2tTY2hlZHVsZVRpbWVyKCk7CiAgICAg
dm9pZCBpbnRlcm5hbFVwZGF0ZUFuaW1hdGlvbnNBbmRTZW5kRXZlbnRzKCk7Ci0gICAgdm9pZCBw
ZXJmb3JtRXZlbnREaXNwYXRjaFRhc2soKTsKICAgICB2b2lkIHVwZGF0ZUxpc3RPZkVsZW1lbnRz
V2l0aFJ1bm5pbmdBY2NlbGVyYXRlZEFuaW1hdGlvbnNGb3JFbGVtZW50KEVsZW1lbnQmKTsKICAg
ICB2b2lkIHRyYW5zaXRpb25EaWRDb21wbGV0ZShSZWZQdHI8Q1NTVHJhbnNpdGlvbj4pOwogICAg
IHZvaWQgc2NoZWR1bGVOZXh0VGljaygpOwpAQCAtMTA4LDcgKzEwNiw3IEBAIHByaXZhdGU6CiAg
ICAgR2VuZXJpY1Rhc2tRdWV1ZTxUaW1lcj4gbV9jdXJyZW50VGltZUNsZWFyaW5nVGFza1F1ZXVl
OwogICAgIEhhc2hTZXQ8UmVmUHRyPFdlYkFuaW1hdGlvbj4+IG1fYWNjZWxlcmF0ZWRBbmltYXRp
b25zUGVuZGluZ1J1bm5pbmdTdGF0ZUNoYW5nZTsKICAgICBIYXNoU2V0PEVsZW1lbnQqPiBtX2Vs
ZW1lbnRzV2l0aFJ1bm5pbmdBY2NlbGVyYXRlZEFuaW1hdGlvbnM7Ci0gICAgVmVjdG9yPFJlZjxB
bmltYXRpb25QbGF5YmFja0V2ZW50Pj4gbV9wZW5kaW5nQW5pbWF0aW9uRXZlbnRzOworICAgIFZl
Y3RvcjxSZWY8QW5pbWF0aW9uRXZlbnRCYXNlPj4gbV9wZW5kaW5nQW5pbWF0aW9uRXZlbnRzOwog
ICAgIFJlZlB0cjxEb2N1bWVudD4gbV9kb2N1bWVudDsKICAgICBNYXJrYWJsZTxTZWNvbmRzLCBT
ZWNvbmRzOjpNYXJrYWJsZVRyYWl0cz4gbV9jYWNoZWRDdXJyZW50VGltZTsKICAgICBTZWNvbmRz
IG1fb3JpZ2luVGltZTsKQEAgLTExNiw2ICsxMTQsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9p
c1N1c3BlbmRlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3dhaXRpbmdPblZNSWRsZSB7IGZhbHNl
IH07CiAgICAgYm9vbCBtX2FuaW1hdGlvblJlc29sdXRpb25TY2hlZHVsZWQgeyBmYWxzZSB9Owor
ICAgIGJvb2wgbV9zaG91bGRTY2hlZHVsZUFuaW1hdGlvblJlc29sdXRpb25Gb3JOZXdQZW5kaW5n
RXZlbnRzIHsgdHJ1ZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcAppbmRleCBkMDg5NmZiN2NjYjIwYWRhZTQy
YzUwZjhlZDk2NTc3MmE4MDJkZjM4Li40NWUyNDdmOWIyOWZlMTI2ZGQ2MzExZDNkN2JiOTg3YjM1
Y2NkNDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcApAQCAt
Njg1LDEzICs2ODUsMTggQEAgdm9pZCBXZWJBbmltYXRpb246OmVucXVldWVBbmltYXRpb25QbGF5
YmFja0V2ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIE9wdGlvbmEKIHsKICAgICBhdXRvIGV2
ZW50ID0gQW5pbWF0aW9uUGxheWJhY2tFdmVudDo6Y3JlYXRlKHR5cGUsIGN1cnJlbnRUaW1lLCB0
aW1lbGluZVRpbWUsIHRoaXMpOwogICAgIGV2ZW50LT5zZXRUYXJnZXQodGhpcyk7CisgICAgZW5x
dWV1ZUFuaW1hdGlvbkV2ZW50KFdURk1vdmUoZXZlbnQpKTsKK30KIAordm9pZCBXZWJBbmltYXRp
b246OmVucXVldWVBbmltYXRpb25FdmVudChSZWY8QW5pbWF0aW9uRXZlbnRCYXNlPiYmIGV2ZW50
KQorewogICAgIGlmIChpczxEb2N1bWVudFRpbWVsaW5lPihtX3RpbWVsaW5lKSkgewogICAgICAg
ICAvLyBJZiBhbmltYXRpb24gaGFzIGEgZG9jdW1lbnQgZm9yIHRpbWluZywgdGhlbiBhcHBlbmQg
ZXZlbnQgdG8gaXRzIGRvY3VtZW50IGZvciB0aW1pbmcncyBwZW5kaW5nIGFuaW1hdGlvbiBldmVu
dCBxdWV1ZSBhbG9uZwogICAgICAgICAvLyB3aXRoIGl0cyB0YXJnZXQsIGFuaW1hdGlvbi4gSWYg
YW5pbWF0aW9uIGlzIGFzc29jaWF0ZWQgd2l0aCBhbiBhY3RpdmUgdGltZWxpbmUgdGhhdCBkZWZp
bmVzIGEgcHJvY2VkdXJlIHRvIGNvbnZlcnQgdGltZWxpbmUgdGltZXMKICAgICAgICAgLy8gdG8g
b3JpZ2luLXJlbGF0aXZlIHRpbWUsIGxldCB0aGUgc2NoZWR1bGVkIGV2ZW50IHRpbWUgYmUgdGhl
IHJlc3VsdCBvZiBhcHBseWluZyB0aGF0IHByb2NlZHVyZSB0byB0aW1lbGluZSB0aW1lLiBPdGhl
cndpc2UsIHRoZQogICAgICAgICAvLyBzY2hlZHVsZWQgZXZlbnQgdGltZSBpcyBhbiB1bnJlc29s
dmVkIHRpbWUgdmFsdWUuCi0gICAgICAgIGRvd25jYXN0PERvY3VtZW50VGltZWxpbmU+KCptX3Rp
bWVsaW5lKS5lbnF1ZXVlQW5pbWF0aW9uUGxheWJhY2tFdmVudChXVEZNb3ZlKGV2ZW50KSk7Cisg
ICAgICAgIG1faGFzU2NoZWR1bGVkRXZlbnRzRHVyaW5nVGljayA9IHRydWU7CisgICAgICAgIGRv
d25jYXN0PERvY3VtZW50VGltZWxpbmU+KCptX3RpbWVsaW5lKS5lbnF1ZXVlQW5pbWF0aW9uRXZl
bnQoV1RGTW92ZShldmVudCkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIE90aGVyd2lzZSwg
cXVldWUgYSB0YXNrIHRvIGRpc3BhdGNoIGV2ZW50IGF0IGFuaW1hdGlvbi4gVGhlIHRhc2sgc291
cmNlIGZvciB0aGlzIHRhc2sgaXMgdGhlIERPTSBtYW5pcHVsYXRpb24gdGFzayBzb3VyY2UuCiAg
ICAgICAgIHF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVudCgqdGhpcywgVGFza1NvdXJjZTo6RE9NTWFu
aXB1bGF0aW9uLCBXVEZNb3ZlKGV2ZW50KSk7CkBAIC0xMTk4LDExICsxMjAzLDEyIEBAIGJvb2wg
V2ViQW5pbWF0aW9uOjppc0NvbXBsZXRlbHlBY2NlbGVyYXRlZCgpIGNvbnN0CiAKIGJvb2wgV2Vi
QW5pbWF0aW9uOjpuZWVkc1RpY2soKSBjb25zdAogewotICAgIHJldHVybiBwZW5kaW5nKCkgfHwg
cGxheVN0YXRlKCkgPT0gUGxheVN0YXRlOjpSdW5uaW5nOworICAgIHJldHVybiBwZW5kaW5nKCkg
fHwgcGxheVN0YXRlKCkgPT0gUGxheVN0YXRlOjpSdW5uaW5nIHx8IG1faGFzU2NoZWR1bGVkRXZl
bnRzRHVyaW5nVGljazsKIH0KIAogdm9pZCBXZWJBbmltYXRpb246OnRpY2soKQogeworICAgIG1f
aGFzU2NoZWR1bGVkRXZlbnRzRHVyaW5nVGljayA9IGZhbHNlOwogICAgIHVwZGF0ZUZpbmlzaGVk
U3RhdGUoRGlkU2Vlazo6Tm8sIFN5bmNocm9ub3VzbHlOb3RpZnk6Olllcyk7CiAgICAgbV9zaG91
bGRTa2lwVXBkYXRpbmdGaW5pc2hlZFN0YXRlV2hlblJlc29sdmluZyA9IHRydWU7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uaAppbmRleCAzMDMyZjI4MWRkYzM1OWJiNzkz
YmYzYTFlMDZjMjA5NDU0ODExZGVkLi5iMDJlZjlmMzQ1MzM3YzU1MWFmYjJjMWUwMDhkMjAyZjRi
YTI1NzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5oCkBAIC00Miw3
ICs0Miw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFuaW1hdGlvbkVmZmVjdDsK
LWNsYXNzIEFuaW1hdGlvblBsYXliYWNrRXZlbnQ7CitjbGFzcyBBbmltYXRpb25FdmVudEJhc2U7
CiBjbGFzcyBBbmltYXRpb25UaW1lbGluZTsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRWxlbWVu
dDsKQEAgLTExNiw3ICsxMTYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBFeGNlcHRpb25Pcjx2
b2lkPiBiaW5kaW5nc1BsYXkoKSB7IHJldHVybiBwbGF5KCk7IH0KICAgICB2aXJ0dWFsIEV4Y2Vw
dGlvbk9yPHZvaWQ+IGJpbmRpbmdzUGF1c2UoKSB7IHJldHVybiBwYXVzZSgpOyB9CiAKLSAgICB2
aXJ0dWFsIGJvb2wgbmVlZHNUaWNrKCkgY29uc3Q7CisgICAgYm9vbCBuZWVkc1RpY2soKSBjb25z
dDsKICAgICB2aXJ0dWFsIHZvaWQgdGljaygpOwogICAgIFNlY29uZHMgdGltZVRvTmV4dFRpY2so
KSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgcmVzb2x2ZShSZW5kZXJTdHlsZSYpOwpAQCAtMTM1
LDcgKzEzNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFN1c3BlbmRlZChib29sKTsKICAgICBi
b29sIGlzU3VzcGVuZGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc1N1c3BlbmRlZDsgfQogICAgIGJv
b2wgaXNSZXBsYWNlYWJsZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmUoKTsKKyAg
ICB2b2lkIHJlbW92ZSgpOwogICAgIHZvaWQgZW5xdWV1ZUFuaW1hdGlvblBsYXliYWNrRXZlbnQo
Y29uc3QgQXRvbVN0cmluZyYsIE9wdGlvbmFsPFNlY29uZHM+LCBPcHRpb25hbDxTZWNvbmRzPik7
CiAKICAgICB1aW50NjRfdCBnbG9iYWxQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZ2xvYmFs
UG9zaXRpb247IH0KQEAgLTE1NSw2ICsxNTUsOCBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAg
ZXhwbGljaXQgV2ViQW5pbWF0aW9uKERvY3VtZW50Jik7CiAKKyAgICB2b2lkIGVucXVldWVBbmlt
YXRpb25FdmVudChSZWY8QW5pbWF0aW9uRXZlbnRCYXNlPiYmKTsKKwogcHJpdmF0ZToKICAgICBl
bnVtIGNsYXNzIERpZFNlZWsgOiB1aW50OF90IHsgWWVzLCBObyB9OwogICAgIGVudW0gY2xhc3Mg
U3luY2hyb25vdXNseU5vdGlmeSA6IHVpbnQ4X3QgeyBZZXMsIE5vIH07CkBAIC0yMDEsNiArMjAz
LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fZmluaXNoTm90aWZpY2F0aW9uU3RlcHNNaWNyb3Rh
c2tQZW5kaW5nOwogICAgIGJvb2wgbV9pc1JlbGV2YW50OwogICAgIGJvb2wgbV9zaG91bGRTa2lw
VXBkYXRpbmdGaW5pc2hlZFN0YXRlV2hlblJlc29sdmluZzsKKyAgICBib29sIG1faGFzU2NoZWR1
bGVkRXZlbnRzRHVyaW5nVGljayB7IGZhbHNlIH07CiAgICAgVGltZVRvUnVuUGVuZGluZ1Rhc2sg
bV90aW1lVG9SdW5QZW5kaW5nUGxheVRhc2sgeyBUaW1lVG9SdW5QZW5kaW5nVGFzazo6Tm90U2No
ZWR1bGVkIH07CiAgICAgVGltZVRvUnVuUGVuZGluZ1Rhc2sgbV90aW1lVG9SdW5QZW5kaW5nUGF1
c2VUYXNrIHsgVGltZVRvUnVuUGVuZGluZ1Rhc2s6Ok5vdFNjaGVkdWxlZCB9OwogICAgIFJlcGxh
Y2VTdGF0ZSBtX3JlcGxhY2VTdGF0ZSB7IFJlcGxhY2VTdGF0ZTo6QWN0aXZlIH07CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
ZmU2MzUwMDdjMDA1MDM2MjY1ZTQzMzBiOWQ5NzlkMWFmMTJmMTQwMi4uNGYwOTc1YWIwYjgxNGE3
YWI1NmQ3MDk3YTJhZTEzMWFhYWUxN2U3NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIwLTAy
LTE0ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgorCisgICAgICAgIFtXZWIg
QW5pbWF0aW9uc10gRW5zdXJlIENTUyBUcmFuc2l0aW9uIGFuZCBDU1MgQW5pbWF0aW9uIGV2ZW50
cyBhcmUgcXVldWVkLCBzb3J0ZWQgYW5kIGRpc3BhdGNoZWQgYnkgdGhlaXIgdGltZWxpbmUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzM2NAorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNTkzNzA0MTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgRml4IGEgY291cGxlIG9mIHRlc3RzIHRoYXQgbWFkZSBz
b21lIGluY29ycmVjdCBhc3N1bXB0aW9ucy4KKworICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViLWFuaW1hdGlvbnMvdGltaW5nLW1v
ZGVsL3RpbWVsaW5lcy91cGRhdGUtYW5kLXNlbmQtZXZlbnRzLmh0bWwgaXMgbm8gbG9uZ2VyIGZs
YWt5LgorICAgICAgICAqIGNvbXBvc2l0aW5nL2JhY2tpbmcvYW5pbWF0ZS1pbnRvLXZpZXcuaHRt
bDogQmVjYXVzZSB0aGUgImFuaW1hdGlvbnN0YXJ0IiBldmVudCBpcyBub3cgZGlzcGF0Y2hlZCBk
dXJpbmcgdGhlICJ1cGRhdGUgYW5pbWF0aW9ucyBhbmQgc2VuZCBldmVudHMiIHByb2NlZHVyZSwg
d2hpY2ggaGFwcGVucworICAgICAgICBkdXJpbmcgcGFnZSByZW5kZXJpbmcgX2JlZm9yZV8gckFG
IGNhbGxiYWNrcyBhcmUgc2VydmljZWQsIHdlIG11c3QgcmVtb3ZlIHRoZSByQUYgY2FsbGJhY2sg
dXNlZCBwcmlvciB0byBhZGRpbmcgdGhlICJhbmltYXRpb25zdGFydCIgZXZlbnQgbGlzdGVuZXIg
b3IgZWxzZSB3ZSB3b3VsZCBuZXZlcgorICAgICAgICBnZXQgaXQgYW5kIHRoZSB0ZXN0IHdvdWxk
IHRpbWUgb3V0LgorICAgICAgICAqIHdlYmFuaW1hdGlvbnMvY3NzLXRyYW5zaXRpb24taW4tZmxp
Z2h0LXJldmVyc2FsLWFjY2VsZXJhdGVkLmh0bWw6IFdlIG11c3Qgd2FpdCBmb3IgdGhlIGluaXRp
YWwgdHJhbnNpdGlvbiB0byBzdGFydCBhbmQgdGhlbiB0d28gZnJhbWVzIGJlZm9yZSByZXZlcnNp
bmcgdGhlIHRyYW5zaXRpb24sCisgICAgICAgIHRvIGJlIGNlcnRhaW4gdGhhdCB0aGUgYW5pbWF0
aW9uIGRpZCBzdGFydC4gSW5kZWVkLCB0aGUgInRyYW5zaXRpb25zdGFydCIgZXZlbnQgd2lsbCBi
ZSBmaXJlZCByaWdodCBiZWZvcmUgdGhlIG5leHQgckFGIGNhbGxiYWNrIGlzIGNhbGxlZCwgYXMg
dGhlIGFuaW1hdGlvbiBzdGFydHMgaW4gdGhhdAorICAgICAgICB2ZXJ5IHNhbWUgZnJhbWUsIGFu
ZCBzbyBwcm9ncmVzcyB3aWxsIGJlIDAgYW5kIHRoZSB0cmFuc2l0aW9uIHdvdWxkbid0IGJlIHJl
dmVyc2FibGUgdW50aWwgdGhlIG5leHQgZnJhbWUgd2hlbiB0aGUgYW5pbWF0aW9uIGhhcyBwcm9n
cmVzcyA+IDAuCisKIDIwMjAtMDItMTQgIERpZWdvIFBpbm8gR2FyY2lhICA8ZHBpbm9AaWdhbGlh
LmNvbT4KIAogICAgICAgICBbV1BFXSBHYXJkZW5pbmcsIHNldmVyYWwgZW5jcnlwdGVkLW1lZGlh
IHRlc3RzIGFyZSBmYWlsaW5nIG9yIGNyYXNoaW5nCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxv
ZwppbmRleCA5NTMwZGIxOWY1ZTU1MWJiNzFmNGE4MWFiMDA5YjI3NGI5YmZkOWZmLi44Y2U4MzZk
NzI0ZTMxYzg3OTVmZGUwODdkYjBlNzQyOTNhZGNiYTk2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAyMC0wMi0xNCAgQW50b2luZSBRdWludCAgPGdy
YW91dHNAd2Via2l0Lm9yZz4KKworICAgICAgICBbV2ViIEFuaW1hdGlvbnNdIEVuc3VyZSBDU1Mg
VHJhbnNpdGlvbiBhbmQgQ1NTIEFuaW1hdGlvbiBldmVudHMgYXJlIHF1ZXVlZCwgc29ydGVkIGFu
ZCBkaXNwYXRjaGVkIGJ5IHRoZWlyIHRpbWVsaW5lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDczNjQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU5
MzcwNDEzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRoZXJlIGFyZSBzb21lIHByb2dyZXNzaW9ucyBidXQgYWxzbyBzb21lICJyZWdyZXNzaW9ucyIu
IFRoZSBwcm9ncmVzc2lvbnMgYXJlIHJlYWwsIHNob3dpbmcgdGhlIGRlbGl2ZXJ5IG9mIGFsbCBh
bmltYXRpb24gZXZlbnRzIGF0IHRoZSBjb3JyZWN0CisgICAgICAgIHRpbWUuIEhvd2V2ZXIsIHRo
ZSByZWdyZXNzaW9ucyBhcmUgbWlzbGVhZGluZy4gVGhlIGZhY3QgdGhhdCB0aGUgInN0eWxlIGNo
YW5nZSIgdGVzdHMgd291bGQgd29yayB3YXMgZHVlIHRvIGEgZGVzaWduIGlzc3VlIGluIHRoZSB0
ZXN0IHdoaWNoIHdvdWxkCisgICAgICAgIG9ubHkgd2FpdCBvbmUgZnJhbWUgdG8gZGV0ZWN0IHdo
ZXRoZXIgYSBDU1MgVHJhbnNpdGlvbiB3YXMgc3RhcnRlZCBhZnRlciBhIGNoYW5nZSBtYWRlIHRo
cm91Z2ggdGhlIFdlYiBBbmltYXRpb25zIEFQSS4gVGhlc2Ugd291bGQgd29yayBiZWNhdXNlCisg
ICAgICAgIGV2ZW50cyB3ZXJlIHF1ZXVlZCBpbiB0aGUgbmV4dCBmcmFtZSwgYnV0IGRlbGl2ZXJl
ZCBsYXRlciBkdWUgdG8gdGhlIGRlZGljYXRlZCBwZXItYW5pbWF0aW9uIHF1ZXVlIHVzZWQsIHdo
aWNoIG1lYW50IHRoZSB0ZXN0IHdhcyBmb29sZWQgaW50bworICAgICAgICB0aGlua2luZyB0aGUg
Q1NTIFRyYW5zaXRpb24gZGlkIG5vdCBzdGFydCwgYXMgZXhwZWN0ZWQuIENoYW5naW5nIHRob3Nl
IHRlc3QgdG8gdXNlIG1vcmUgdGhhbiBvbmUgZnJhbWUgdG8gdGVzdCBmb3IgdGhlIGxhY2sgb2Yg
YSBDU1MgVHJhbnNpdGlvbgorICAgICAgICB3b3VsZCBoYXZlIHNob3duIHRoZSBGQUlMIHJlc3Vs
dHMuCisKKyAgICAgICAgSG93ZXZlciwgaW4gb3JkZXIgdG8gbm90IHJlZ3Jlc3Mgb3VyIFdQVCBz
Y29yZSwgdGhlIGlzc3VlIG9mICJzdHlsZSBjaGFuZ2UiIGV2ZW50cyB3aWxsIGJlIGFkZHJlc3Nl
ZCBpbiBhIGZvbGxvdy11cCBwYXRjaC4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLXRyYW5zaXRpb25zL0NTU1RyYW5zaXRpb24tc3RhcnRUaW1lLnRlbnRhdGl2ZS1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYi1hbmltYXRpb25zL2lu
dGVyZmFjZXMvQW5pbWF0YWJsZS9hbmltYXRlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWIt
cGxhdGZvcm0tdGVzdHMvd2ViLWFuaW1hdGlvbnMvaW50ZXJmYWNlcy9BbmltYXRpb24vc3R5bGUt
Y2hhbmdlLWV2ZW50cy1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3Rz
L3dlYi1hbmltYXRpb25zL2ludGVyZmFjZXMvS2V5ZnJhbWVFZmZlY3Qvc3R5bGUtY2hhbmdlLWV2
ZW50cy1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYi1hbmlt
YXRpb25zL3RpbWluZy1tb2RlbC90aW1lbGluZXMvdXBkYXRlLWFuZC1zZW5kLWV2ZW50cy1leHBl
Y3RlZC50eHQ6CisKIDIwMjAtMDItMTIgIFJvc3NhbmEgTW9udGVyaXNvICA8cm1vbnRlcmlzb0Bp
Z2FsaWEuY29tPgogCiAgICAgICAgIFtjc3MtZ3JpZF0gTW92ZSBncmlkLWl0ZW0tYXV0by1tYXJn
aW5zLWFsaWdubWVudCB0ZXN0cyB0byBXUFQgZm9sZGVyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA1
M2I1NDkyYWE2YWEwYjEzN2EyNWY3NzhlYjRlMjVjZDllOTdlZDIyLi5lMTM5M2JiMDY2ZGNjZTM1
MjYzZmY1Y2Q1NzUyNTM5OTM4N2MzM2FjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhw
ZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTI2NTYsNyAr
MjY1Niw2IEBAIHdlYmtpdC5vcmcvYi8xNzkwNjkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250CiAKIHdlYmtpdC5vcmcvYi8yMDIxMDcg
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWItYW5pbWF0aW9ucy9pbnRlcmZhY2Vz
L0FuaW1hdGlvbi9zdHlsZS1jaGFuZ2UtZXZlbnRzLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogd2Vi
a2l0Lm9yZy9iLzIwMjEwOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYi1hbmlt
YXRpb25zL2ludGVyZmFjZXMvRG9jdW1lbnRUaW1lbGluZS9zdHlsZS1jaGFuZ2UtZXZlbnRzLmh0
bWwgWyBQYXNzIEZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIwMjEwOSBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYi1hbmltYXRpb25zL3RpbWluZy1tb2RlbC90aW1lbGluZXMvdXBk
YXRlLWFuZC1zZW5kLWV2ZW50cy5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9i
LzE1NzA2OCBbIERlYnVnIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9u
b3NuaWZmL2ltcG9ydHNjcmlwdHMuaHRtbCBbIFBhc3MgQ3Jhc2ggXQogd2Via2l0Lm9yZy9iLzE1
NzA2OCBbIFJlbGVhc2UgXSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL25v
c25pZmYvaW1wb3J0c2NyaXB0cy5odG1sIFsgUGFzcyBGYWlsdXJlIF0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2NvbXBvc2l0aW5nL2JhY2tpbmcvYW5pbWF0ZS1pbnRvLXZpZXcuaHRtbCBiL0xh
eW91dFRlc3RzL2NvbXBvc2l0aW5nL2JhY2tpbmcvYW5pbWF0ZS1pbnRvLXZpZXcuaHRtbAppbmRl
eCAyYjY2OWExMTMxOGU3OGI1MmE2YzBhMzJkYjAyOGU3NDg2OTNiYWU4Li5jOGFkZmM4OGU4Mjkz
NWU2ZjdlOGU2NWEzZTk3MWQ2MWJiZTM1MGVlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9jb21w
b3NpdGluZy9iYWNraW5nL2FuaW1hdGUtaW50by12aWV3Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
Y29tcG9zaXRpbmcvYmFja2luZy9hbmltYXRlLWludG8tdmlldy5odG1sCkBAIC02MCwxNyArNjAs
MTUgQEAKICAgICAgICAgfQogCiAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2Fk
JywgKCkgPT4gewotICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHsKLSAg
ICAgICAgICAgICAgICBsZXQgYW5pbWF0b3IgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGFy
Z2V0Jyk7Ci0gICAgICAgICAgICAgICAgYW5pbWF0b3IuYWRkRXZlbnRMaXN0ZW5lcignYW5pbWF0
aW9uc3RhcnQnLCAoKSA9PiB7Ci0gICAgICAgICAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25G
cmFtZSgoKSA9PiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBkdW1wTGF5ZXJzKCk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgICAgICAgICAgICAg
ICAgIH0pOworICAgICAgICAgICAgbGV0IGFuaW1hdG9yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3RhcmdldCcpOworICAgICAgICAgICAgYW5pbWF0b3IuYWRkRXZlbnRMaXN0ZW5lcignYW5p
bWF0aW9uc3RhcnQnLCAoKSA9PiB7CisgICAgICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZy
YW1lKCgpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgZHVtcExheWVycygpOworICAgICAgICAg
ICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgICAgICAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAg
ICAgICAgICBhbmltYXRvci5jbGFzc0xpc3QuYWRkKCdhbmltYXRpbmcnKTsKICAgICAgICAgICAg
IH0pOworICAgICAgICAgICAgYW5pbWF0b3IuY2xhc3NMaXN0LmFkZCgnYW5pbWF0aW5nJyk7CiAg
ICAgICAgIH0sIGZhbHNlKTsKICAgICA8L3NjcmlwdD4KIDwvaGVhZD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2l0
aW9ucy9DU1NUcmFuc2l0aW9uLXN0YXJ0VGltZS50ZW50YXRpdmUtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zaXRp
b25zL0NTU1RyYW5zaXRpb24tc3RhcnRUaW1lLnRlbnRhdGl2ZS1leHBlY3RlZC50eHQKaW5kZXgg
ZmFkZWE2ZmRhOWFkNGVmNjQyMDdhN2Y0ZjY2MGU5OTkxYTZiYjUzYi4uYWI5YzJhZTYxNWI2ODUz
YWNhMjJhMGIxM2UxZWExOTRjNTc4MjQyMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zaXRpb25zL0NTU1RyYW5zaXRp
b24tc3RhcnRUaW1lLnRlbnRhdGl2ZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zaXRpb25zL0NTU1RyYW5z
aXRpb24tc3RhcnRUaW1lLnRlbnRhdGl2ZS1leHBlY3RlZC50eHQKQEAgLTMsNSArMyw1IEBAIFBB
U1MgVGhlIHN0YXJ0IHRpbWUgb2YgYSBuZXdseS1jcmVhdGVkIHRyYW5zaXRpb24gaXMgdW5yZXNv
bHZlZAogUEFTUyBUaGUgc3RhcnQgdGltZSBvZiB0cmFuc2l0aW9ucyBpcyBiYXNlZCBvbiB3aGVu
IHRoZXkgYXJlIGdlbmVyYXRlZCAKIFBBU1MgVGhlIHN0YXJ0IHRpbWUgb2YgYSB0cmFuc2l0aW9u
IGNhbiBiZSBzZXQgCiBQQVNTIFRoZSBzdGFydCB0aW1lIGNhbiBiZSBzZXQgdG8gc2VlayBhIHRy
YW5zaXRpb24gCi1GQUlMIFNlZWtpbmcgYSB0cmFuc2l0aW9uIHVzaW5nIHN0YXJ0IHRpbWUgZGlz
cGF0Y2hlcyB0cmFuc2l0aW9uIGV2ZW50cyBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rp
b24gd2l0aCB2YWx1ZTogb2JqZWN0ICJFcnJvcjogVGltZWQgb3V0IHdhaXRpbmcgZm9yIFByb21p
c2UgdG8gcmVzb2x2ZTogdHJhbnNpdGlvbnN0YXJ0IgorUEFTUyBTZWVraW5nIGEgdHJhbnNpdGlv
biB1c2luZyBzdGFydCB0aW1lIGRpc3BhdGNoZXMgdHJhbnNpdGlvbiBldmVudHMgCiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViLWFu
aW1hdGlvbnMvaW50ZXJmYWNlcy9BbmltYXRhYmxlL2FuaW1hdGUtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWItYW5pbWF0aW9ucy9p
bnRlcmZhY2VzL0FuaW1hdGFibGUvYW5pbWF0ZS1leHBlY3RlZC50eHQKaW5kZXggNzUxNDQyNmNh
MGYxZWIxNGMyNTQzNjkyNjJhYzhkOTVjZDk0MTQ1OC4uMTZlYzg1M2I1MTQ2ZWZiN2FmMGM2ZWU3
MTZiYzBjNTkxMThjNDI4ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93ZWItYW5pbWF0aW9ucy9pbnRlcmZhY2VzL0FuaW1hdGFibGUvYW5p
bWF0ZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93ZWItYW5pbWF0aW9ucy9pbnRlcmZhY2VzL0FuaW1hdGFibGUvYW5pbWF0ZS1l
eHBlY3RlZC50eHQKQEAgLTEzMiw3ICsxMzIsNyBAQCBQQVNTIEVsZW1lbnQuYW5pbWF0ZSgpIGNv
cnJlY3RseSBzZXRzIHRoZSBpZCBhdHRyaWJ1dGUKIFBBU1MgRWxlbWVudC5hbmltYXRlKCkgY29y
cmVjdGx5IHNldHMgdGhlIEFuaW1hdGlvbidzIHRpbWVsaW5lIAogUEFTUyBFbGVtZW50LmFuaW1h
dGUoKSBjb3JyZWN0bHkgc2V0cyB0aGUgQW5pbWF0aW9uJ3MgdGltZWxpbmUgd2hlbiB0cmlnZ2Vy
ZWQgb24gYW4gZWxlbWVudCBpbiBhIGRpZmZlcmVudCBkb2N1bWVudCAKIFBBU1MgRWxlbWVudC5h
bmltYXRlKCkgY2FsbHMgcGxheSBvbiB0aGUgQW5pbWF0aW9uIAotUEFTUyBFbGVtZW50LmFuaW1h
dGUoKSBkb2VzIE5PVCB0cmlnZ2VyIGEgc3R5bGUgY2hhbmdlIGV2ZW50IAorRkFJTCBFbGVtZW50
LmFuaW1hdGUoKSBkb2VzIE5PVCB0cmlnZ2VyIGEgc3R5bGUgY2hhbmdlIGV2ZW50IGFzc2VydF9m
YWxzZTogQSB0cmFuc2l0aW9uIHNob3VsZCBOT1QgaGF2ZSBiZWVuIHRyaWdnZXJlZCBleHBlY3Rl
ZCBmYWxzZSBnb3QgdHJ1ZQogUEFTUyBhbmltYXRlKCkgd2l0aCBwc2V1ZG9FbGVtZW50IHBhcmFt
ZXRlciBjcmVhdGVzIGFuIEFuaW1hdGlvbiBvYmplY3QgCiBQQVNTIGFuaW1hdGUoKSB3aXRoIHBz
ZXVkb0VsZW1lbnQgcGFyYW1ldGVyIHdpdGhvdXQgY29udGVudCBjcmVhdGVzIGFuIEFuaW1hdGlv
biBvYmplY3QgCiBQQVNTIGFuaW1hdGUoKSB3aXRoIHBzZXVkb0VsZW1lbnQgcGFyYW1ldGVyICBj
cmVhdGVzIGFuIEFuaW1hdGlvbiBvYmplY3QgZm9yIDo6bWFya2VyIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWItYW5pbWF0aW9ucy9p
bnRlcmZhY2VzL0FuaW1hdGlvbi9zdHlsZS1jaGFuZ2UtZXZlbnRzLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViLWFuaW1hdGlvbnMv
aW50ZXJmYWNlcy9BbmltYXRpb24vc3R5bGUtY2hhbmdlLWV2ZW50cy1leHBlY3RlZC50eHQKaW5k
ZXggNmVlYTg3NDBmN2U1Y2Q1ZGJhOTY5YTdkMjMyODMxY2Y2MDNhZGI3MC4uOGNlODM1NjEwZmMx
OWNkZWE2ZmVkMDI4ZWY2Mjk2MjY2M2ZjYjBjMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWItYW5pbWF0aW9ucy9pbnRlcmZhY2VzL0Fu
aW1hdGlvbi9zdHlsZS1jaGFuZ2UtZXZlbnRzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYi1hbmltYXRpb25zL2ludGVyZmFj
ZXMvQW5pbWF0aW9uL3N0eWxlLWNoYW5nZS1ldmVudHMtZXhwZWN0ZWQudHh0CkBAIC0yMCw3ICsy
MCw3IEBAIEZBSUwgQW5pbWF0aW9uLnBsYXkgcHJvZHVjZXMgZXhwZWN0ZWQgc3R5bGUgY2hhbmdl
IGV2ZW50cyBhc3NlcnRfZmFsc2U6IEEgdHJhbnNpCiBGQUlMIEFuaW1hdGlvbi5wYXVzZSBwcm9k
dWNlcyBleHBlY3RlZCBzdHlsZSBjaGFuZ2UgZXZlbnRzIGFzc2VydF9mYWxzZTogQSB0cmFuc2l0
aW9uIHNob3VsZCBOT1QgaGF2ZSBiZWVuIHRyaWdnZXJlZCBleHBlY3RlZCBmYWxzZSBnb3QgdHJ1
ZQogRkFJTCBBbmltYXRpb24udXBkYXRlUGxheWJhY2tSYXRlIHByb2R1Y2VzIGV4cGVjdGVkIHN0
eWxlIGNoYW5nZSBldmVudHMgYXNzZXJ0X2ZhbHNlOiBBIHRyYW5zaXRpb24gc2hvdWxkIE5PVCBo
YXZlIGJlZW4gdHJpZ2dlcmVkIGV4cGVjdGVkIGZhbHNlIGdvdCB0cnVlCiBGQUlMIEFuaW1hdGlv
bi5yZXZlcnNlIHByb2R1Y2VzIGV4cGVjdGVkIHN0eWxlIGNoYW5nZSBldmVudHMgYXNzZXJ0X2Zh
bHNlOiBBIHRyYW5zaXRpb24gc2hvdWxkIE5PVCBoYXZlIGJlZW4gdHJpZ2dlcmVkIGV4cGVjdGVk
IGZhbHNlIGdvdCB0cnVlCi1QQVNTIEFuaW1hdGlvbi5wZXJzaXN0IHByb2R1Y2VzIGV4cGVjdGVk
IHN0eWxlIGNoYW5nZSBldmVudHMgCitGQUlMIEFuaW1hdGlvbi5wZXJzaXN0IHByb2R1Y2VzIGV4
cGVjdGVkIHN0eWxlIGNoYW5nZSBldmVudHMgYXNzZXJ0X2ZhbHNlOiBBIHRyYW5zaXRpb24gc2hv
dWxkIE5PVCBoYXZlIGJlZW4gdHJpZ2dlcmVkIGV4cGVjdGVkIGZhbHNlIGdvdCB0cnVlCiBGQUlM
IEFuaW1hdGlvbi5jb21taXRTdHlsZXMgcHJvZHVjZXMgZXhwZWN0ZWQgc3R5bGUgY2hhbmdlIGV2
ZW50cyBhc3NlcnRfdHJ1ZTogQSB0cmFuc2l0aW9uIHNob3VsZCBoYXZlIGJlZW4gdHJpZ2dlcmVk
IGV4cGVjdGVkIHRydWUgZ290IGZhbHNlCiBGQUlMIEFuaW1hdGlvbi5BbmltYXRpb24gY29uc3Ry
dWN0b3IgcHJvZHVjZXMgZXhwZWN0ZWQgc3R5bGUgY2hhbmdlIGV2ZW50cyBhc3NlcnRfZmFsc2U6
IEEgdHJhbnNpdGlvbiBzaG91bGQgTk9UIGhhdmUgYmVlbiB0cmlnZ2VyZWQgZXhwZWN0ZWQgZmFs
c2UgZ290IHRydWUKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93ZWItYW5pbWF0aW9ucy9pbnRlcmZhY2VzL0tleWZyYW1lRWZmZWN0L3N0
eWxlLWNoYW5nZS1ldmVudHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWItYW5pbWF0aW9ucy9pbnRlcmZhY2VzL0tleWZyYW1lRWZm
ZWN0L3N0eWxlLWNoYW5nZS1ldmVudHMtZXhwZWN0ZWQudHh0CmluZGV4IGQzMDlhNDc4Mjc5MjJl
NDQ0ZmQ1OGQ5OWJjODdjY2YzNjA1ZGUzMDEuLjM5MzU1NDg2NDlhZTYwZTA0MGEyNGQ1ZTgyODNm
YjU2YjdmOGZmMjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2ViLWFuaW1hdGlvbnMvaW50ZXJmYWNlcy9LZXlmcmFtZUVmZmVjdC9zdHls
ZS1jaGFuZ2UtZXZlbnRzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYi1hbmltYXRpb25zL2ludGVyZmFjZXMvS2V5ZnJhbWVF
ZmZlY3Qvc3R5bGUtY2hhbmdlLWV2ZW50cy1leHBlY3RlZC50eHQKQEAgLTEsMTMgKzEsMTMgQEAK
IAogRkFJTCBBbGwgcHJvcGVydHkga2V5cyBhcmUgcmVjb2duaXplZCBhc3NlcnRfaW5fYXJyYXk6
IFRlc3QgcHJvcGVydHkgJ3BzZXVkb0VsZW1lbnQnIHNob3VsZCBiZSBvbmUgb2YgdGhlIHByb3Bl
cnRpZXMgb24gIEtleWZyYW1lRWZmZWN0IHZhbHVlICJwc2V1ZG9FbGVtZW50IiBub3QgaW4gYXJy
YXkgWyJnZXRUaW1pbmciLCAiZ2V0Q29tcHV0ZWRUaW1pbmciLCAidXBkYXRlVGltaW5nIiwgInRh
cmdldCIsICJpdGVyYXRpb25Db21wb3NpdGUiLCAiY29tcG9zaXRlIiwgImdldEtleWZyYW1lcyIs
ICJzZXRLZXlmcmFtZXMiLCAiS2V5ZnJhbWVFZmZlY3QgY29uc3RydWN0b3IiLCAiS2V5ZnJhbWVF
ZmZlY3QgY29weSBjb25zdHJ1Y3RvciJdCi1QQVNTIEtleWZyYW1lRWZmZWN0LmdldFRpbWluZyBk
b2VzIE5PVCB0cmlnZ2VyIGEgc3R5bGUgY2hhbmdlIGV2ZW50IAotUEFTUyBLZXlmcmFtZUVmZmVj
dC5nZXRDb21wdXRlZFRpbWluZyBkb2VzIE5PVCB0cmlnZ2VyIGEgc3R5bGUgY2hhbmdlIGV2ZW50
IAotUEFTUyBLZXlmcmFtZUVmZmVjdC51cGRhdGVUaW1pbmcgZG9lcyBOT1QgdHJpZ2dlciBhIHN0
eWxlIGNoYW5nZSBldmVudCAKLVBBU1MgS2V5ZnJhbWVFZmZlY3QudGFyZ2V0IGRvZXMgTk9UIHRy
aWdnZXIgYSBzdHlsZSBjaGFuZ2UgZXZlbnQgCi1QQVNTIEtleWZyYW1lRWZmZWN0Lml0ZXJhdGlv
bkNvbXBvc2l0ZSBkb2VzIE5PVCB0cmlnZ2VyIGEgc3R5bGUgY2hhbmdlIGV2ZW50IAotUEFTUyBL
ZXlmcmFtZUVmZmVjdC5jb21wb3NpdGUgZG9lcyBOT1QgdHJpZ2dlciBhIHN0eWxlIGNoYW5nZSBl
dmVudCAKLVBBU1MgS2V5ZnJhbWVFZmZlY3QuZ2V0S2V5ZnJhbWVzIGRvZXMgTk9UIHRyaWdnZXIg
YSBzdHlsZSBjaGFuZ2UgZXZlbnQgCi1QQVNTIEtleWZyYW1lRWZmZWN0LnNldEtleWZyYW1lcyBk
b2VzIE5PVCB0cmlnZ2VyIGEgc3R5bGUgY2hhbmdlIGV2ZW50IAotUEFTUyBLZXlmcmFtZUVmZmVj
dC5LZXlmcmFtZUVmZmVjdCBjb25zdHJ1Y3RvciBkb2VzIE5PVCB0cmlnZ2VyIGEgc3R5bGUgY2hh
bmdlIGV2ZW50IAotUEFTUyBLZXlmcmFtZUVmZmVjdC5LZXlmcmFtZUVmZmVjdCBjb3B5IGNvbnN0
cnVjdG9yIGRvZXMgTk9UIHRyaWdnZXIgYSBzdHlsZSBjaGFuZ2UgZXZlbnQgCitGQUlMIEtleWZy
YW1lRWZmZWN0LmdldFRpbWluZyBkb2VzIE5PVCB0cmlnZ2VyIGEgc3R5bGUgY2hhbmdlIGV2ZW50
IGFzc2VydF9mYWxzZTogQSB0cmFuc2l0aW9uIHNob3VsZCBOT1QgaGF2ZSBiZWVuIHRyaWdnZXJl
ZCBleHBlY3RlZCBmYWxzZSBnb3QgdHJ1ZQorRkFJTCBLZXlmcmFtZUVmZmVjdC5nZXRDb21wdXRl
ZFRpbWluZyBkb2VzIE5PVCB0cmlnZ2VyIGEgc3R5bGUgY2hhbmdlIGV2ZW50IGFzc2VydF9mYWxz
ZTogQSB0cmFuc2l0aW9uIHNob3VsZCBOT1QgaGF2ZSBiZWVuIHRyaWdnZXJlZCBleHBlY3RlZCBm
YWxzZSBnb3QgdHJ1ZQorRkFJTCBLZXlmcmFtZUVmZmVjdC51cGRhdGVUaW1pbmcgZG9lcyBOT1Qg
dHJpZ2dlciBhIHN0eWxlIGNoYW5nZSBldmVudCBhc3NlcnRfZmFsc2U6IEEgdHJhbnNpdGlvbiBz
aG91bGQgTk9UIGhhdmUgYmVlbiB0cmlnZ2VyZWQgZXhwZWN0ZWQgZmFsc2UgZ290IHRydWUKK0ZB
SUwgS2V5ZnJhbWVFZmZlY3QudGFyZ2V0IGRvZXMgTk9UIHRyaWdnZXIgYSBzdHlsZSBjaGFuZ2Ug
ZXZlbnQgYXNzZXJ0X2ZhbHNlOiBBIHRyYW5zaXRpb24gc2hvdWxkIE5PVCBoYXZlIGJlZW4gdHJp
Z2dlcmVkIGV4cGVjdGVkIGZhbHNlIGdvdCB0cnVlCitGQUlMIEtleWZyYW1lRWZmZWN0Lml0ZXJh
dGlvbkNvbXBvc2l0ZSBkb2VzIE5PVCB0cmlnZ2VyIGEgc3R5bGUgY2hhbmdlIGV2ZW50IGFzc2Vy
dF9mYWxzZTogQSB0cmFuc2l0aW9uIHNob3VsZCBOT1QgaGF2ZSBiZWVuIHRyaWdnZXJlZCBleHBl
Y3RlZCBmYWxzZSBnb3QgdHJ1ZQorRkFJTCBLZXlmcmFtZUVmZmVjdC5jb21wb3NpdGUgZG9lcyBO
T1QgdHJpZ2dlciBhIHN0eWxlIGNoYW5nZSBldmVudCBhc3NlcnRfZmFsc2U6IEEgdHJhbnNpdGlv
biBzaG91bGQgTk9UIGhhdmUgYmVlbiB0cmlnZ2VyZWQgZXhwZWN0ZWQgZmFsc2UgZ290IHRydWUK
K0ZBSUwgS2V5ZnJhbWVFZmZlY3QuZ2V0S2V5ZnJhbWVzIGRvZXMgTk9UIHRyaWdnZXIgYSBzdHls
ZSBjaGFuZ2UgZXZlbnQgYXNzZXJ0X2ZhbHNlOiBBIHRyYW5zaXRpb24gc2hvdWxkIE5PVCBoYXZl
IGJlZW4gdHJpZ2dlcmVkIGV4cGVjdGVkIGZhbHNlIGdvdCB0cnVlCitGQUlMIEtleWZyYW1lRWZm
ZWN0LnNldEtleWZyYW1lcyBkb2VzIE5PVCB0cmlnZ2VyIGEgc3R5bGUgY2hhbmdlIGV2ZW50IGFz
c2VydF9mYWxzZTogQSB0cmFuc2l0aW9uIHNob3VsZCBOT1QgaGF2ZSBiZWVuIHRyaWdnZXJlZCBl
eHBlY3RlZCBmYWxzZSBnb3QgdHJ1ZQorRkFJTCBLZXlmcmFtZUVmZmVjdC5LZXlmcmFtZUVmZmVj
dCBjb25zdHJ1Y3RvciBkb2VzIE5PVCB0cmlnZ2VyIGEgc3R5bGUgY2hhbmdlIGV2ZW50IGFzc2Vy
dF9mYWxzZTogQSB0cmFuc2l0aW9uIHNob3VsZCBOT1QgaGF2ZSBiZWVuIHRyaWdnZXJlZCBleHBl
Y3RlZCBmYWxzZSBnb3QgdHJ1ZQorRkFJTCBLZXlmcmFtZUVmZmVjdC5LZXlmcmFtZUVmZmVjdCBj
b3B5IGNvbnN0cnVjdG9yIGRvZXMgTk9UIHRyaWdnZXIgYSBzdHlsZSBjaGFuZ2UgZXZlbnQgYXNz
ZXJ0X2ZhbHNlOiBBIHRyYW5zaXRpb24gc2hvdWxkIE5PVCBoYXZlIGJlZW4gdHJpZ2dlcmVkIGV4
cGVjdGVkIGZhbHNlIGdvdCB0cnVlCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViLWFuaW1hdGlvbnMvdGltaW5nLW1vZGVsL3RpbWVs
aW5lcy91cGRhdGUtYW5kLXNlbmQtZXZlbnRzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViLWFuaW1hdGlvbnMvdGltaW5nLW1vZGVs
L3RpbWVsaW5lcy91cGRhdGUtYW5kLXNlbmQtZXZlbnRzLWV4cGVjdGVkLnR4dAppbmRleCAxYTZh
ZTNmNjE3ZjUwYzllMGRiMzViZGZmZDc5YmQ0YTljNzRmZDQyLi40NGUwNjY4ZmRiODQ5NDA1OTBj
NWQxYzllNDM4NDA3ZGJjZDE0OWQyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYi1hbmltYXRpb25zL3RpbWluZy1tb2RlbC90aW1lbGlu
ZXMvdXBkYXRlLWFuZC1zZW5kLWV2ZW50cy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWItYW5pbWF0aW9ucy90aW1pbmctbW9k
ZWwvdGltZWxpbmVzL3VwZGF0ZS1hbmQtc2VuZC1ldmVudHMtZXhwZWN0ZWQudHh0CkBAIC0yLDkg
KzIsOSBAQAogUEFTUyBGaXJlcyBjYW5jZWwgZXZlbnQgYmVmb3JlIHJlcXVlc3RBbmltYXRpb25G
cmFtZSAKIFBBU1MgRmlyZXMgZmluaXNoIGV2ZW50IGJlZm9yZSByZXF1ZXN0QW5pbWF0aW9uRnJh
bWUgCiBGQUlMIFNvcnRzIGZpbmlzaCBldmVudHMgYnkgY29tcG9zaXRlIG9yZGVyIGFzc2VydF9h
cnJheV9lcXVhbHM6IGZpbmlzaCBldmVudHMgZm9yIHZhcmlvdXMgYW5pbWF0aW9uIHR5cGUgc2hv
dWxkIGJlIHNvcnRlZCBieSBjb21wb3NpdGUgb3JkZXIgcHJvcGVydHkgMCwgZXhwZWN0ZWQgIkNT
U1RyYW5zaXRpb246ZmluaXNoIiBidXQgZ290ICJTY3JpcHRBbmltYXRpb246ZmluaXNoIgotRkFJ
TCBTb3J0cyBjYW5jZWwgZXZlbnRzIGJ5IGNvbXBvc2l0ZSBvcmRlciBhc3NlcnRfYXJyYXlfZXF1
YWxzOiBjYW5jZWwgZXZlbnRzIHNob3VsZCBiZSBzb3J0ZWQgYnkgY29tcG9zaXRlIG9yZGVyIGxl
bmd0aHMgZGlmZmVyLCBleHBlY3RlZCA1IGdvdCAzCi1GQUlMIFF1ZXVlcyBhIGNhbmNlbCBldmVu
dCBpbiB0cmFuc2l0aW9uc3RhcnQgZXZlbnQgY2FsbGJhY2sgYXNzZXJ0X2FwcHJveF9lcXVhbHM6
IEEgckFGIGNhbGxiYWNrIHNob3VsZCBoYXBwZW4gaW4gdGhlIHNhbWUgZnJhbWUgZXhwZWN0ZWQg
MTEyICsvLSAwLjAwMSBidXQgZ290IDk2Ci1GQUlMIFNvcnRzIGV2ZW50cyBmb3IgdGhlIHNhbWUg
dHJhbnNpdGlvbiBhc3NlcnRfYXJyYXlfZXF1YWxzOiBQbGF5YmFjayBhbmQgQ1NTIGV2ZW50cyBm
b3IgdGhlIHNhbWUgdHJhbnNpdGlvbiBzaG91bGQgYmUgc29ydGVkIGJ5IHNjaGVkdWxlIGV2ZW50
IHRpbWUgYW5kIGNvbXBvc2l0ZSBvcmRlciBsZW5ndGhzIGRpZmZlciwgZXhwZWN0ZWQgMiBnb3Qg
MQorRkFJTCBTb3J0cyBjYW5jZWwgZXZlbnRzIGJ5IGNvbXBvc2l0ZSBvcmRlciBhc3NlcnRfYXJy
YXlfZXF1YWxzOiBjYW5jZWwgZXZlbnRzIHNob3VsZCBiZSBzb3J0ZWQgYnkgY29tcG9zaXRlIG9y
ZGVyIHByb3BlcnR5IDAsIGV4cGVjdGVkICJDU1NUcmFuc2l0aW9uOmNhbmNlbCIgYnV0IGdvdCAi
U2NyaXB0QW5pbWF0aW9uOmNhbmNlbCIKK1BBU1MgUXVldWVzIGEgY2FuY2VsIGV2ZW50IGluIHRy
YW5zaXRpb25zdGFydCBldmVudCBjYWxsYmFjayAKK1BBU1MgU29ydHMgZXZlbnRzIGZvciB0aGUg
c2FtZSB0cmFuc2l0aW9uIAogUEFTUyBQbGF5YmFjayBldmVudHMgd2l0aCB0aGUgc2FtZSB0aW1l
bGluZSByZXRhaW4gdGhlIG9yZGVyIGluIHdoaWNoIHRoZXkgYXJlcXVldWVkIAogRkFJTCBBbGwg
dGltZWxpbmVzIGFyZSB1cGRhdGVkIGJlZm9yZSBydW5uaW5nIG1pY3JvdGFza3MgcHJvbWlzZV90
ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiQWJvcnRFcnJvcjog
VGhlIG9wZXJhdGlvbiB3YXMgYWJvcnRlZC4iCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmFuaW1hdGlvbnMvY3NzLXRyYW5zaXRpb24taW4tZmxpZ2h0LXJldmVyc2FsLWFjY2VsZXJhdGVk
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJhbmltYXRpb25zL2Nzcy10cmFuc2l0aW9uLWluLWZsaWdo
dC1yZXZlcnNhbC1hY2NlbGVyYXRlZC5odG1sCmluZGV4IDZkYTViZmE3NTRkY2Q3Y2IxMGE3ZTBi
NDZhNzU3YjY0NmRjYjM4N2UuLjMwNzgzYThiZmYwYmIwMWE0ZWZiNDA1OGJhZGM3MDkxOGEyZTk3
MGYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dlYmFuaW1hdGlvbnMvY3NzLXRyYW5zaXRpb24t
aW4tZmxpZ2h0LXJldmVyc2FsLWFjY2VsZXJhdGVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
YW5pbWF0aW9ucy9jc3MtdHJhbnNpdGlvbi1pbi1mbGlnaHQtcmV2ZXJzYWwtYWNjZWxlcmF0ZWQu
aHRtbApAQCAtNDYsMTkgKzQ2LDIzIEBAIGZ1bmN0aW9uIHRhcmdldFRlc3QocHJvcGVydHlOYW1l
KQogICAgICAgICAgICAgaW5pdGlhbFRyYW5zaXRpb24gPSBhbmltYXRpb25zWzBdOwogICAgICAg
ICAgICAgYXNzZXJ0X3RydWUoaW5pdGlhbFRyYW5zaXRpb24gaW5zdGFuY2VvZiBDU1NUcmFuc2l0
aW9uLCAiVGhlcmUgaXMgb25lIGFuaW1hdGlvbiBhcHBsaWVkIHRvIHRoZSB0YXJnZXQgYWZ0ZXIg
c3RhcnRpbmcgdGhlIGluaXRpYWwgdHJhbnNpdGlvbi4iKTsKIAotICAgICAgICAgICAgLy8gV2Fp
dCBmb3IgdGhlIGluaXRpYWwgdHJhbnNpdGlvbiB0byBzdGFydCBhbmQgdGhlbiBhbm90aGVyIGZy
YW1lIGJlZm9yZSByZXZlcnNpbmcgdGhlIHRyYW5zaXRpb24uCisgICAgICAgICAgICAvLyBXYWl0
IGZvciB0aGUgaW5pdGlhbCB0cmFuc2l0aW9uIHRvIHN0YXJ0IGFuZCB0aGVuIHR3byBmcmFtZXMg
YmVmb3JlIHJldmVyc2luZyB0aGUgdHJhbnNpdGlvbiwgdG8gYmUgY2VydGFpbiB0aGF0IHRoZSBh
bmltYXRpb24gZGlkIHN0YXJ0LgorICAgICAgICAgICAgLy8gSW5kZWVkLCB0aGUgInRyYW5zaXRp
b25zdGFydCIgZXZlbnQgd2lsbCBiZSBmaXJlZCByaWdodCBiZWZvcmUgdGhlIG5leHQgckFGIGNh
bGxiYWNrIGlzIGNhbGxlZCwgYXMgdGhlIGFuaW1hdGlvbiBzdGFydHMgaW4gdGhhdCB2ZXJ5IHNh
bWUKKyAgICAgICAgICAgIC8vIGZyYW1lLCBhbmQgc28gcHJvZ3Jlc3Mgd2lsbCBiZSAwIGFuZCB0
aGUgdHJhbnNpdGlvbiB3b3VsZG4ndCBiZSByZXZlcnNhYmxlIHVudGlsIHRoZSBuZXh0IGZyYW1l
IHdoZW4gdGhlIGFuaW1hdGlvbiBoYXMgcHJvZ3Jlc3MgPiAwLgogICAgICAgICAgICAgdGFyZ2V0
LmFkZEV2ZW50TGlzdGVuZXIoInRyYW5zaXRpb25zdGFydCIsIGV2ZW50ID0+IHsKICAgICAgICAg
ICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4gewotICAgICAgICAgICAgICAgICAg
ICB0YXJnZXQuY2xhc3NMaXN0LnJlbW92ZSgiaW4tZmxpZ2h0Iik7Ci0gICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGFuaW1hdGlvbnMgPSB0YXJnZXQuZ2V0QW5pbWF0aW9ucygpOwotICAgICAgICAg
ICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGFuaW1hdGlvbnMubGVuZ3RoLCAxLCAiVGhlcmUgaXMg
b25lIGFuaW1hdGlvbiBhcHBsaWVkIHRvIHRoZSB0YXJnZXQgYWZ0ZXIgcmV2ZXJzaW5nIHRoZSBp
bml0aWFsIHRyYW5zaXRpb24uIik7CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RBbmltYXRp
b25GcmFtZSgoKSA9PiB7CisgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQuY2xhc3NMaXN0
LnJlbW92ZSgiaW4tZmxpZ2h0Iik7CisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhbmlt
YXRpb25zID0gdGFyZ2V0LmdldEFuaW1hdGlvbnMoKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGFzc2VydF9lcXVhbHMoYW5pbWF0aW9ucy5sZW5ndGgsIDEsICJUaGVyZSBpcyBvbmUgYW5pbWF0
aW9uIGFwcGxpZWQgdG8gdGhlIHRhcmdldCBhZnRlciByZXZlcnNpbmcgdGhlIGluaXRpYWwgdHJh
bnNpdGlvbi4iKTsKIAotICAgICAgICAgICAgICAgICAgICByZXZlcnNlZFRyYW5zaXRpb24gPSBh
bmltYXRpb25zWzBdOwotICAgICAgICAgICAgICAgICAgICBhc3NlcnRfdHJ1ZShyZXZlcnNlZFRy
YW5zaXRpb24gaW5zdGFuY2VvZiBDU1NUcmFuc2l0aW9uLCAiVGhlcmUgaXMgb25lIGFuaW1hdGlv
biBhcHBsaWVkIHRvIHRoZSB0YXJnZXQgYWZ0ZXIgcmV2ZXJzaW5nIHRoZSBpbml0aWFsIHRyYW5z
aXRpb24uIik7Ci0gICAgICAgICAgICAgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKGluaXRpYWxU
cmFuc2l0aW9uLCByZXZlcnNlZFRyYW5zaXRpb24sICJUaGUgYW5pbWF0aW9uIGFwcGxpZWQgdG8g
dGhlIHRhcmdldCBhZnRlciByZXZlcnNpbmcgdGhlIGluaXRpYWwgdHJhbnNpdGlvbiBpcyBkaWZm
ZXJlbnQgdGhhbiB0aGUgb3JpZ2luYWwgdHJhbnNpdGlvbi4iKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJldmVyc2VkVHJhbnNpdGlvbiA9IGFuaW1hdGlvbnNbMF07CisgICAgICAgICAgICAg
ICAgICAgICAgICBhc3NlcnRfdHJ1ZShyZXZlcnNlZFRyYW5zaXRpb24gaW5zdGFuY2VvZiBDU1NU
cmFuc2l0aW9uLCAiVGhlcmUgaXMgb25lIGFuaW1hdGlvbiBhcHBsaWVkIHRvIHRoZSB0YXJnZXQg
YWZ0ZXIgcmV2ZXJzaW5nIHRoZSBpbml0aWFsIHRyYW5zaXRpb24uIik7CisgICAgICAgICAgICAg
ICAgICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhpbml0aWFsVHJhbnNpdGlvbiwgcmV2ZXJzZWRU
cmFuc2l0aW9uLCAiVGhlIGFuaW1hdGlvbiBhcHBsaWVkIHRvIHRoZSB0YXJnZXQgYWZ0ZXIgcmV2
ZXJzaW5nIHRoZSBpbml0aWFsIHRyYW5zaXRpb24gaXMgZGlmZmVyZW50IHRoYW4gdGhlIG9yaWdp
bmFsIHRyYW5zaXRpb24uIik7CiAKLSAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnJlbW92ZSgp
OwotICAgICAgICAgICAgICAgICAgICB0ZXN0LmRvbmUoKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHRhcmdldC5yZW1vdmUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3QuZG9uZSgp
OworICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAg
ICAgIH0pOwogICAgICAgICB9KTsK
</data>
<flag name="review"
          id="406365"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>