<?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>222968</bug_id>
          
          <creation_ts>2021-03-09 03:47:30 -0800</creation_ts>
          <short_desc>Implement CSS overscroll-behavior for synchronous scroll</short_desc>
          <delta_ts>2022-02-03 13:34:04 -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>Scrolling</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>176454</blocked>
    
    <blocked>220139</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="cathiechen">cathiechen</reporter>
          <assigned_to name="cathiechen">cathiechen</assigned_to>
          <cc>bramus</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>jamesr</cc>
    
    <cc>jonlee</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>luiz</cc>
    
    <cc>nmouchtaris</cc>
    
    <cc>pdr</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>the.bull</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>twilco.o</cc>
    
    <cc>tyler_w</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1737524</commentid>
    <comment_count>0</comment_count>
    <who name="cathiechen">cathiechen</who>
    <bug_when>2021-03-09 03:47:30 -0800</bug_when>
    <thetext>Support CSS property overscroll-behavior for synchronous scroll.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1737526</commentid>
    <comment_count>1</comment_count>
      <attachid>422685</attachid>
    <who name="cathiechen">cathiechen</who>
    <bug_when>2021-03-09 03:51:11 -0800</bug_when>
    <thetext>Created attachment 422685
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1739401</commentid>
    <comment_count>2</comment_count>
      <attachid>423165</attachid>
    <who name="cathiechen">cathiechen</who>
    <bug_when>2021-03-15 06:04:20 -0700</bug_when>
    <thetext>Created attachment 423165
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1739412</commentid>
    <comment_count>3</comment_count>
      <attachid>423168</attachid>
    <who name="cathiechen">cathiechen</who>
    <bug_when>2021-03-15 06:19:20 -0700</bug_when>
    <thetext>Created attachment 423168
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1739842</commentid>
    <comment_count>4</comment_count>
      <attachid>423300</attachid>
    <who name="cathiechen">cathiechen</who>
    <bug_when>2021-03-15 22:43:27 -0700</bug_when>
    <thetext>Created attachment 423300
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1739900</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-03-16 04:48:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/75472790&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1741133</commentid>
    <comment_count>6</comment_count>
      <attachid>423579</attachid>
    <who name="cathiechen">cathiechen</who>
    <bug_when>2021-03-18 03:34:11 -0700</bug_when>
    <thetext>Created attachment 423579
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1742239</commentid>
    <comment_count>7</comment_count>
      <attachid>423886</attachid>
    <who name="cathiechen">cathiechen</who>
    <bug_when>2021-03-22 08:38:30 -0700</bug_when>
    <thetext>Created attachment 423886
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1742656</commentid>
    <comment_count>8</comment_count>
      <attachid>423886</attachid>
    <who name="cathiechen">cathiechen</who>
    <bug_when>2021-03-22 20:36:36 -0700</bug_when>
    <thetext>Comment on attachment 423886
Patch

I think overscroll-behahvior of sync scroll is ready to review:)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1743412</commentid>
    <comment_count>9</comment_count>
      <attachid>424158</attachid>
    <who name="cathiechen">cathiechen</who>
    <bug_when>2021-03-24 10:59:54 -0700</bug_when>
    <thetext>Created attachment 424158
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819954</commentid>
    <comment_count>10</comment_count>
      <attachid>445794</attachid>
    <who name="Nikos Mouchtaris">nmouchtaris</who>
    <bug_when>2021-12-02 16:57:24 -0800</bug_when>
    <thetext>Created attachment 445794
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820306</commentid>
    <comment_count>11</comment_count>
      <attachid>445896</attachid>
    <who name="Nikos Mouchtaris">nmouchtaris</who>
    <bug_when>2021-12-03 14:02:04 -0800</bug_when>
    <thetext>Created attachment 445896
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820310</commentid>
    <comment_count>12</comment_count>
      <attachid>445897</attachid>
    <who name="Nikos Mouchtaris">nmouchtaris</who>
    <bug_when>2021-12-03 14:15:43 -0800</bug_when>
    <thetext>Created attachment 445897
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821886</commentid>
    <comment_count>13</comment_count>
      <attachid>446466</attachid>
    <who name="Nikos Mouchtaris">nmouchtaris</who>
    <bug_when>2021-12-08 17:25:25 -0800</bug_when>
    <thetext>Created attachment 446466
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822225</commentid>
    <comment_count>14</comment_count>
      <attachid>446466</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-12-09 11:20:33 -0800</bug_when>
    <thetext>Comment on attachment 446466
Patch

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

&gt; Source/WebCore/page/EventHandler.cpp:2922
&gt; +static bool shouldBlockScrollChainingWithScrollableArea(const ScrollableArea* scrollableArea, FloatSize&amp; biasedDelta)

I don&apos;t like &quot;scroll chaining&quot;.

&gt; Source/WebCore/page/EventHandler.cpp:2930
&gt; +        biasedDelta.setWidth(scrollableArea-&gt;horizontalOverscrollBehavior()!= OverscrollBehavior::Auto ? 0 : biasedDelta.width());
&gt; +        biasedDelta.setHeight(scrollableArea-&gt;verticalOverscrollBehavior()!= OverscrollBehavior::Auto ? 0 : biasedDelta.height());

Spacing here.

&gt; Source/WebCore/page/EventHandler.cpp:2943
&gt; +    if (frameView &amp;&amp; (frameView-&gt;horizontalOverscrollBehavior() != OverscrollBehavior::Auto || frameView-&gt;verticalOverscrollBehavior() != OverscrollBehavior::Auto)) {
&gt; +        if (frameView-&gt;horizontalOverscrollBehavior() != OverscrollBehavior::Auto &amp;&amp; !biasedDelta.height() &amp;&amp; biasedDelta.width())
&gt; +            return true;
&gt; +        if ((frameView-&gt;horizontalOverscrollBehavior() != OverscrollBehavior::Auto &amp;&amp; frameView-&gt;verticalOverscrollBehavior() != OverscrollBehavior::Auto) || (frameView-&gt;horizontalOverscrollBehavior()!= OverscrollBehavior::Auto &amp;&amp; !biasedDelta.height()) || (frameView-&gt;verticalOverscrollBehavior()!= OverscrollBehavior::Auto &amp;&amp; !biasedDelta.width()))
&gt; +            return true;
&gt; +        biasedDelta.setWidth(frameView-&gt;horizontalOverscrollBehavior()!= OverscrollBehavior::Auto ? 0 : biasedDelta.width());
&gt; +        biasedDelta.setHeight(frameView-&gt;verticalOverscrollBehavior()!= OverscrollBehavior::Auto ? 0 : biasedDelta.height());

There are so many &quot;horizontalOverscrollBehavior() != OverscrollBehavior::Auto&quot; checks in this code. Maybe add a helper function that makes this more readable.

&gt; Source/WebCore/page/EventHandler.cpp:3064
&gt; +        adjustedWheelEvent = adjustedWheelEvent.copyWithDeltaAndVelocity(filteredDelta, adjustedWheelEvent.scrollingVelocity());
&gt; +        handledEvent = processWheelEventForScrolling(adjustedWheelEvent, scrollableArea, handling);
&gt; +        processWheelEventForScrollSnap(adjustedWheelEvent, scrollableArea);

I find it odd that this main thread code implements overscroll behavior by zeroing out the deltas on the events, but the scrolling thread code does it by cutting of the ancestor node traversal. Let&apos;s be consistent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822343</commentid>
    <comment_count>15</comment_count>
      <attachid>446608</attachid>
    <who name="Nikos Mouchtaris">nmouchtaris</who>
    <bug_when>2021-12-09 14:39:45 -0800</bug_when>
    <thetext>Created attachment 446608
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822887</commentid>
    <comment_count>16</comment_count>
      <attachid>446608</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2021-12-10 12:29:36 -0800</bug_when>
    <thetext>Comment on attachment 446608
Patch

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

&gt; Source/WebCore/page/EventHandler.cpp:3127
&gt; +                if (boxScrollableArea-&gt;horizontalOverscrollBehavior() != OverscrollBehavior::Auto &amp;&amp; !filteredPlatformDelta.height())

can this use hasHorizontalOverscrollBehavior?

&gt; Source/WebCore/page/mac/EventHandlerMac.mm:818
&gt; +        if ((scrollableArea-&gt;horizontalOverscrollBehavior() != OverscrollBehavior::Auto &amp;&amp; scrollableArea-&gt;verticalOverscrollBehavior() != OverscrollBehavior::Auto) || (scrollableArea-&gt;horizontalOverscrollBehavior() != OverscrollBehavior::Auto &amp;&amp; !wheelEvent.delta().height()) || (scrollableArea-&gt;verticalOverscrollBehavior() != OverscrollBehavior::Auto &amp;&amp; !wheelEvent.delta().width()))

can this use has{Horizontal,Vertical}OverscrollBehavior?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822888</commentid>
    <comment_count>17</comment_count>
      <attachid>446608</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2021-12-10 12:29:37 -0800</bug_when>
    <thetext>Comment on attachment 446608
Patch

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

&gt; Source/WebCore/page/EventHandler.cpp:3127
&gt; +                if (boxScrollableArea-&gt;horizontalOverscrollBehavior() != OverscrollBehavior::Auto &amp;&amp; !filteredPlatformDelta.height())

can this use hasHorizontalOverscrollBehavior?

&gt; Source/WebCore/page/mac/EventHandlerMac.mm:818
&gt; +        if ((scrollableArea-&gt;horizontalOverscrollBehavior() != OverscrollBehavior::Auto &amp;&amp; scrollableArea-&gt;verticalOverscrollBehavior() != OverscrollBehavior::Auto) || (scrollableArea-&gt;horizontalOverscrollBehavior() != OverscrollBehavior::Auto &amp;&amp; !wheelEvent.delta().height()) || (scrollableArea-&gt;verticalOverscrollBehavior() != OverscrollBehavior::Auto &amp;&amp; !wheelEvent.delta().width()))

can this use has{Horizontal,Vertical}OverscrollBehavior?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822955</commentid>
    <comment_count>18</comment_count>
      <attachid>446805</attachid>
    <who name="Nikos Mouchtaris">nmouchtaris</who>
    <bug_when>2021-12-10 13:53:42 -0800</bug_when>
    <thetext>Created attachment 446805
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822958</commentid>
    <comment_count>19</comment_count>
    <who name="Nikos Mouchtaris">nmouchtaris</who>
    <bug_when>2021-12-10 13:57:03 -0800</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #14)
&gt; Comment on attachment 446466 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=446466&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/EventHandler.cpp:3064
&gt; &gt; +        adjustedWheelEvent = adjustedWheelEvent.copyWithDeltaAndVelocity(filteredDelta, adjustedWheelEvent.scrollingVelocity());
&gt; &gt; +        handledEvent = processWheelEventForScrolling(adjustedWheelEvent, scrollableArea, handling);
&gt; &gt; +        processWheelEventForScrollSnap(adjustedWheelEvent, scrollableArea);
&gt; 
&gt; I find it odd that this main thread code implements overscroll behavior by
&gt; zeroing out the deltas on the events, but the scrolling thread code does it
&gt; by cutting of the ancestor node traversal. Let&apos;s be consistent.

The traversal is getting cut off in EventHandler::handleWheelEventInAppropriateEnclosingBox based on the result of shouldBlockScrollPropogationWithScrollableArea.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822970</commentid>
    <comment_count>20</comment_count>
      <attachid>446805</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-12-10 14:16:12 -0800</bug_when>
    <thetext>Comment on attachment 446805
Patch

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

&gt; Source/WebCore/page/EventHandler.cpp:2922
&gt; +static bool shouldBlockScrollPropogationWithScrollableArea(const ScrollableArea* scrollableArea, FloatSize&amp; biasedDelta)

&quot;Propogation&quot;

Maybe this should be a function on ScrollableArea? And can we find out how to do this without having to modify event deltas?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823038</commentid>
    <comment_count>21</comment_count>
      <attachid>446830</attachid>
    <who name="Nikos Mouchtaris">nmouchtaris</who>
    <bug_when>2021-12-10 15:35:05 -0800</bug_when>
    <thetext>Created attachment 446830
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823042</commentid>
    <comment_count>22</comment_count>
    <who name="Nikos Mouchtaris">nmouchtaris</who>
    <bug_when>2021-12-10 15:37:30 -0800</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #20)
&gt; Comment on attachment 446805 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=446805&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/EventHandler.cpp:2922
&gt; &gt; +static bool shouldBlockScrollPropogationWithScrollableArea(const ScrollableArea* scrollableArea, FloatSize&amp; biasedDelta)
&gt; 
&gt; &quot;Propogation&quot;
&gt; 
&gt; Maybe this should be a function on ScrollableArea? And can we find out how
&gt; to do this without having to modify event deltas?

I think we have to modify the deltas for the case where we are only blocking in one direction, we have to zero out the delta for that direction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835182</commentid>
    <comment_count>23</comment_count>
      <attachid>446830</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-01-28 16:38:22 -0800</bug_when>
    <thetext>Comment on attachment 446830
Patch

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

&gt; Source/WebCore/page/EventHandler.cpp:3029
&gt; +    PlatformWheelEvent adjustedWheelEvent = PlatformWheelEvent(event);

auto

&gt; Source/WebCore/page/EventHandler.cpp:3057
&gt; +    FloatSize filteredDelta(wheelEvent.deltaX(), wheelEvent.deltaY());

auto filteredDelta = wheelEvent.delta()

&gt; Source/WebCore/page/EventHandler.cpp:3058
&gt; +    scrollableArea.shouldBlockScrollPropagation(filteredDelta);

That looks like a no-op until you notice that shouldBlockScrollPropagation() modifies the delta. Can we apply the same cleanup we did in bug 220139?

&gt; Source/WebCore/page/EventHandler.cpp:3096
&gt; +    FloatSize biasedDelta(wheelEvent.deltaX(), wheelEvent.deltaY());

auto biasedDelta = ....

&gt; Source/WebCore/platform/ScrollableArea.cpp:811
&gt; +bool ScrollableArea::shouldBlockScrollPropagation(FloatSize&amp; biasedDelta) const

This code should be changed to be more similar to the async structure (separate out the question from the modification).

&gt; LayoutTests/fast/scrolling/sync-scroll-overscroll-behavior-element.html:1
&gt; +&lt;!doctype html&gt;

Same comments about these tests as in bug 220139.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835203</commentid>
    <comment_count>24</comment_count>
      <attachid>450298</attachid>
    <who name="Nikos Mouchtaris">nmouchtaris</who>
    <bug_when>2022-01-28 17:51:10 -0800</bug_when>
    <thetext>Created attachment 450298
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835232</commentid>
    <comment_count>25</comment_count>
      <attachid>450298</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-01-28 20:33:47 -0800</bug_when>
    <thetext>Comment on attachment 450298
Patch

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

I&apos;d like to see one more round. Also, we need to test this code path. You need some tests that either don&apos;t have async overflow scroll enabled.

&gt; Source/WebCore/page/EventHandler.cpp:3103
&gt; +                if (boxScrollableArea-&gt;hasHorizontalOverscrollBehavior() &amp;&amp; !filteredPlatformDelta.height())

Need ScrollableArea::horizontalOverscrollBehaviorPreventsPropagation() etc just like the async code path.

Again here, the lack of symmetry between vertical and horizontal is confusing.

&gt; Source/WebCore/page/FrameView.h:706
&gt; +    bool hasHorizontalOverscrollBehavior() const final { return horizontalOverscrollBehavior() != OverscrollBehavior::Auto; }
&gt; +    bool hasVerticalOverscrollBehavior() const final { return verticalOverscrollBehavior() != OverscrollBehavior::Auto; }

Can&apos;t these live on ScrollableArea?

&gt; Source/WebCore/page/mac/EventHandlerMac.mm:819
&gt; +        if ((scrollableArea-&gt;hasHorizontalOverscrollBehavior() &amp;&amp; scrollableArea-&gt;hasVerticalOverscrollBehavior()) || (scrollableArea-&gt;hasHorizontalOverscrollBehavior() &amp;&amp; !wheelEvent.delta().height()) || (scrollableArea-&gt;hasVerticalOverscrollBehavior() &amp;&amp; !wheelEvent.delta().width()))
&gt; +            return nullptr;

I feel like this could be wrapped up a helper called something like overscrollBehaviorPreventsScrollPropagation(FloatSize delta). Also it should use horizontalOverscrollBehaviorPreventsPropagation() terminology.

&gt; Source/WebCore/platform/ScrollableArea.cpp:821
&gt; +bool ScrollableArea::shouldBlockScrollPropagation(const FloatSize&amp; biasedDelta) const

Oh it&apos;s here. Why didn&apos;t EventHandlerMac call this?

&gt; Source/WebCore/platform/ScrollableArea.h:375
&gt; +    virtual bool hasHorizontalOverscrollBehavior() const { return false; }
&gt; +    virtual bool hasVerticalOverscrollBehavior() const { return false; }

horizontalOverscrollBehaviorPreventsPropagation etc

&gt; Source/WebCore/rendering/RenderLayer.cpp:2312
&gt; +//                ASSERT_UNUSED(foundAncestor, foundAncestor);

Why? Also you can&apos;t land this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835239</commentid>
    <comment_count>26</comment_count>
      <attachid>450309</attachid>
    <who name="Nikos Mouchtaris">nmouchtaris</who>
    <bug_when>2022-01-28 21:09:47 -0800</bug_when>
    <thetext>Created attachment 450309
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835245</commentid>
    <comment_count>27</comment_count>
      <attachid>450311</attachid>
    <who name="Nikos Mouchtaris">nmouchtaris</who>
    <bug_when>2022-01-28 21:55:55 -0800</bug_when>
    <thetext>Created attachment 450311
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835259</commentid>
    <comment_count>28</comment_count>
      <attachid>450319</attachid>
    <who name="Nikos Mouchtaris">nmouchtaris</who>
    <bug_when>2022-01-28 23:04:25 -0800</bug_when>
    <thetext>Created attachment 450319
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836136</commentid>
    <comment_count>29</comment_count>
      <attachid>450319</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-02-01 13:58:51 -0800</bug_when>
    <thetext>Comment on attachment 450319
Patch

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

I&apos;d still like the tests to be rewritten.

&gt; Source/WebCore/page/FrameView.h:706
&gt; +    bool horizontalOverscrollBehaviorPreventsPropagation() const final { return horizontalOverscrollBehavior() != OverscrollBehavior::Auto; }
&gt; +    bool verticalOverscrollBehaviorPreventsPropagation() const final { return verticalOverscrollBehavior() != OverscrollBehavior::Auto; }

Why aren&apos;t these just on the base class? horizontalOverscrollBehavior() is virtual, so this doesn&apos;t need to be.

&gt; Source/WebCore/page/mac/EventHandlerMac.mm:819
&gt; +        if (scrollableArea-&gt;shouldBlockScrollPropagation(wheelEvent.delta()))
&gt; +            return nullptr;

Is this the right place to call this, allowing a &quot;over scroll-behavior: contain&quot; scroller to rubberband?

&gt; Source/WebCore/platform/ScrollableArea.cpp:822
&gt; +    return ((horizontalOverscrollBehaviorPreventsPropagation() || verticalOverscrollBehaviorPreventsPropagation()) &amp;&amp; ((horizontalOverscrollBehaviorPreventsPropagation() &amp;&amp; verticalOverscrollBehaviorPreventsPropagation()) || (horizontalOverscrollBehaviorPreventsPropagation() &amp;&amp; !biasedDelta.height()) || (verticalOverscrollBehaviorPreventsPropagation() &amp;&amp; !biasedDelta.width())));

I&apos;d wrap this line more.

&gt; Source/WebCore/platform/ScrollableArea.h:378
&gt; +    virtual bool horizontalOverscrollBehaviorPreventsPropagation() const { return false; }
&gt; +    virtual bool verticalOverscrollBehaviorPreventsPropagation() const { return false; }

Can&apos;t these just be:

bool horizontalOverscrollBehaviorPreventsPropagation() const { return horizontalOverscrollBehavior() != OverscrollBehavior::Auto; }
bool verticalOverscrollBehaviorPreventsPropagation() const { return verticalOverscrollBehavior() != OverscrollBehavior::Auto; }

&gt; Source/WebCore/rendering/RenderLayerScrollableArea.h:241
&gt; +    bool horizontalOverscrollBehaviorPreventsPropagation() const final { return horizontalOverscrollBehavior() != OverscrollBehavior::Auto; }
&gt; +    bool verticalOverscrollBehaviorPreventsPropagation() const final { return verticalOverscrollBehavior() != OverscrollBehavior::Auto; }

And you can remove these.

&gt; LayoutTests/platform/ios/TestExpectations:821
&gt; +# Overscroll-behavior is not supported on iOS yet: https://bugs.webkit.org/show_bug.cgi?id=233788
&gt; +fast/scrolling/sync-scroll-overscroll-behavior-element.html [ Skip ]
&gt; +fast/scrolling/sync-scroll-overscroll-behavior-iframe.html [ Skip ]
&gt; +fast/scrolling/sync-scroll-overscroll-behavior-unscrollable-element.html [ Skip ]
&gt; +fast/scrolling/sync-scroll-overscroll-behavior-unscrollable-iframe.html [ Skip ]

Not true any more.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836592</commentid>
    <comment_count>30</comment_count>
      <attachid>450690</attachid>
    <who name="Nikos Mouchtaris">nmouchtaris</who>
    <bug_when>2022-02-02 12:46:52 -0800</bug_when>
    <thetext>Created attachment 450690
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836598</commentid>
    <comment_count>31</comment_count>
      <attachid>450692</attachid>
    <who name="Nikos Mouchtaris">nmouchtaris</who>
    <bug_when>2022-02-02 12:57:30 -0800</bug_when>
    <thetext>Created attachment 450692
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836599</commentid>
    <comment_count>32</comment_count>
    <who name="Nikos Mouchtaris">nmouchtaris</who>
    <bug_when>2022-02-02 13:01:37 -0800</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #29)
&gt; Comment on attachment 450319 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=450319&amp;action=review
&gt; 
&gt; I&apos;d still like the tests to be rewritten.
Tracked in https://bugs.webkit.org/show_bug.cgi?id=235847.
&gt; 
&gt; &gt; Source/WebCore/page/FrameView.h:706
&gt; &gt; +    bool horizontalOverscrollBehaviorPreventsPropagation() const final { return horizontalOverscrollBehavior() != OverscrollBehavior::Auto; }
&gt; &gt; +    bool verticalOverscrollBehaviorPreventsPropagation() const final { return verticalOverscrollBehavior() != OverscrollBehavior::Auto; }
&gt; 
&gt; Why aren&apos;t these just on the base class? horizontalOverscrollBehavior() is
&gt; virtual, so this doesn&apos;t need to be.
&gt; 
Fixed.
&gt; &gt; Source/WebCore/page/mac/EventHandlerMac.mm:819
&gt; &gt; +        if (scrollableArea-&gt;shouldBlockScrollPropagation(wheelEvent.delta()))
&gt; &gt; +            return nullptr;
&gt; 
&gt; Is this the right place to call this, allowing a &quot;over scroll-behavior:
&gt; contain&quot; scroller to rubberband?
Added similar code to async in handleWheelEventInAppropriateEnclosingBox to allow node to handle rubber banding.
&gt; 
&gt; &gt; Source/WebCore/platform/ScrollableArea.cpp:822
&gt; &gt; +    return ((horizontalOverscrollBehaviorPreventsPropagation() || verticalOverscrollBehaviorPreventsPropagation()) &amp;&amp; ((horizontalOverscrollBehaviorPreventsPropagation() &amp;&amp; verticalOverscrollBehaviorPreventsPropagation()) || (horizontalOverscrollBehaviorPreventsPropagation() &amp;&amp; !biasedDelta.height()) || (verticalOverscrollBehaviorPreventsPropagation() &amp;&amp; !biasedDelta.width())));
&gt; 
&gt; I&apos;d wrap this line more.
&gt; 
Fixed.
&gt; &gt; Source/WebCore/platform/ScrollableArea.h:378
&gt; &gt; +    virtual bool horizontalOverscrollBehaviorPreventsPropagation() const { return false; }
&gt; &gt; +    virtual bool verticalOverscrollBehaviorPreventsPropagation() const { return false; }
&gt; 
&gt; Can&apos;t these just be:
&gt; 
&gt; bool horizontalOverscrollBehaviorPreventsPropagation() const { return
&gt; horizontalOverscrollBehavior() != OverscrollBehavior::Auto; }
&gt; bool verticalOverscrollBehaviorPreventsPropagation() const { return
&gt; verticalOverscrollBehavior() != OverscrollBehavior::Auto; }
Fixed.
&gt; 
&gt; &gt; Source/WebCore/rendering/RenderLayerScrollableArea.h:241
&gt; &gt; +    bool horizontalOverscrollBehaviorPreventsPropagation() const final { return horizontalOverscrollBehavior() != OverscrollBehavior::Auto; }
&gt; &gt; +    bool verticalOverscrollBehaviorPreventsPropagation() const final { return verticalOverscrollBehavior() != OverscrollBehavior::Auto; }
&gt; 
&gt; And you can remove these.
Fixed.
&gt; 
&gt; &gt; LayoutTests/platform/ios/TestExpectations:821
&gt; &gt; +# Overscroll-behavior is not supported on iOS yet: https://bugs.webkit.org/show_bug.cgi?id=233788
&gt; &gt; +fast/scrolling/sync-scroll-overscroll-behavior-element.html [ Skip ]
&gt; &gt; +fast/scrolling/sync-scroll-overscroll-behavior-iframe.html [ Skip ]
&gt; &gt; +fast/scrolling/sync-scroll-overscroll-behavior-unscrollable-element.html [ Skip ]
&gt; &gt; +fast/scrolling/sync-scroll-overscroll-behavior-unscrollable-iframe.html [ Skip ]
&gt; 
&gt; Not true any more.
Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836605</commentid>
    <comment_count>33</comment_count>
      <attachid>450692</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-02-02 13:11:55 -0800</bug_when>
    <thetext>Comment on attachment 450692
Patch

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

&gt; Source/WebCore/platform/ScrollableArea.h:379
&gt; +    bool overscrollBehaviorAllowRubberBand() const { return horizontalOverscrollBehavior() != OverscrollBehavior::None || verticalOverscrollBehavior() != OverscrollBehavior::None; }

overscrollBehaviorAllowRubberBand -&gt; overscrollBehaviorAllowsRubberBand</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836778</commentid>
    <comment_count>34</comment_count>
      <attachid>450737</attachid>
    <who name="Nikos Mouchtaris">nmouchtaris</who>
    <bug_when>2022-02-02 23:35:19 -0800</bug_when>
    <thetext>Created attachment 450737
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837085</commentid>
    <comment_count>35</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-03 13:33:56 -0800</bug_when>
    <thetext>Committed r289074 (246780@main): &lt;https://commits.webkit.org/246780@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 450737.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422685</attachid>
            <date>2021-03-09 03:51:11 -0800</date>
            <delta_ts>2021-03-15 06:04:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222968-20210309195109.patch</filename>
            <type>text/plain</type>
            <size>60999</size>
            <attacher name="cathiechen">cathiechen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0MDYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTA0MDEwNGE5NWQ5ZmQy
MWE1MGUzN2Y3NzUyYjNhNTYxNGM5NTIwOS4uMzcyOGZhZjY2Y2Y0OTAzNzYyYmU2ZTBmMWRlMTYx
ZWUyZjIxYzAwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc0IEBACisyMDIxLTAzLTA5ICBDYXRo
aWUgQ2hlbiAgPGNhdGhpZWNoZW5AaWdhbGlhLmNvbT4KKworICAgICAgICBTdXBwb3J0IENTUyBv
dmVyc2Nyb2xsLWJlaGF2aW9yIGZvciBzeW5jaHJvbm91cyBzY3JvbGwKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjk2OAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJhc2VkIG9uIEZyw6lkw6lyaWMgV2Fu
ZydzIHBhdGNoLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYnJpbmdzIGluaXRpYWwgc3VwcG9ydCBv
ZiBDU1MgcHJvcGVydHkgb3ZlcnNjcm9sbC1iZWhhdmlvci4gT3ZlcnNjcm9sbC1iZWhhdmlvciBz
ZXRzIHdoYXQKKyAgICAgICAgdGhlIGJyb3dzZXIgZG9lcyB3aGVuIHJlYWNoaW5nIHRoZSBib3Vu
ZGFyeSBvZiBhIHNjcm9sbGluZyBhcmVhLiBGaXJlZm94IGFuZCBDaHJvbWl1bS12YXJpYW50IGJy
b3dzZXJzCisgICAgICAgIGFscmVhZHkgc3VwcG9ydCBpdC4gSXRzIHNwZWNpZmljYXRpb24gY2Fu
IGJlIGZvdW5kIGF0IGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3Mtb3ZlcnNjcm9sbC0xLyNv
dmVyc2Nyb2xsLWJlaGF2aW9yLXByb3BlcnRpZXMKKyAgICAgICAgVGhpcyBwYXRjaCBhaW1zIHRv
IHN1cHBvcnQgaXQgZm9yIHRoZSBzeW5jaHJvbm91cyBzY3JvbGwuIFRoZSBhc3luY2hyb25vdXMg
c2Nyb2xsIG9uIE1hYyB3aWxsIGJlIGNvdmVyZWQgbGF0ZXIuCisKKyAgICAgICAgQWNjb3JkaW5n
IHRvIHRoZSB2YWx1ZSBvZiBvdmVyc2Nyb2xsLWJlaGF2aW9yLCB0aGlzIHBhdGNoIGNvbnRyb2xz
IHRoZSBzY3JvbGwgY2hhaW5pbmcsIHRoZSBzY3JvbGwgc3RyZXRjaCwKKyAgICAgICAgYW5kIHN3
aXBlIGdlc3R1cmVzIGdlbmVyYXRpb24gb2YgdGhlIHN5bmNocm9ub3VzIHNjcm9sbC4gVG8gY29u
dHJvbCB0aGUgc2Nyb2xsIGNoYWluaW5nLAorICAgICAgICBtX3Njcm9sbENoYWluaW5nQmxvY2tl
ciBpcyBhZGRlZCB0byBFdmVudEhhbmxkZXIsIGl0IGlzIGdlbmVyYXRlZCBhY2NvcmRpbmcgdG8g
b3ZlcnNjcm9sbC1iZWhhdmlvciB2YWx1ZXMuCisgICAgICAgIEl0IGluZGljYXRlcyB3aGV0aGVy
IHRoZSBzY3JvbGwgY2hhaW5pbmcgb2YgdGhpcyBmcmFtZSBzaG91bGQgYmUgc3RvcHBlZCBvciBu
b3QuCisgICAgICAgIFRoZSBzY3JvbGwgY2hhaW5pbmcgaXMgaGFuZGxlZCBkaWZmZXJlbnRseSBi
eSBXSEVFTF9FVkVOVF9MQVRDSElORyBzZXR0aW5nLiBJZiBXSEVFTF9FVkVOVF9MQVRDSElORyBp
cyBvZmYsCisgICAgICAgIHRoZSBzY3JvbGwgY2hhaW5pbmcgaXMgaGFuZGxlZCBkaXJlY3RseSBp
biBFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94
KCkuCisgICAgICAgIElmIFdIRUVMX0VWRU5UX0xBVENISU5HIGlzIG9uLCB0aGUgbGF0Y2hlZCBz
Y3JvbGwgdGFyZ2V0IGlzIGFsd2F5cyBGcmFtZVZpZXcgaWYgaXQgbmVlZHMgdG8gc3RvcCB0aGUg
c2Nyb2xsIGNoYWluaW5nLgorICAgICAgICBJZiBjdXJyZW50IGZyYW1lIGlzIGEgc3ViZnJhbWUs
IHRoZSB2YWx1ZSBvZiBtX3Njcm9sbENoYWluaW5nQmxvY2tlciB3aWxsIGJlIHBhc3NlZCB0byBp
dHMgcGFyZW50IGZyYW1lLgorICAgICAgICBBbmQgZXZlbnR1YWxseSwgbGV0IHRoZSBtYWluZnJh
bWUgaGFuZGxlIG1fc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLiBUaGUgbWFpbmZyYW1lIGJsb2NrcyB2
ZXJ0aWNhbCBzY3JvbGwgY2hhaW5pbmcgZGlyZWN0bHksCisgICAgICAgIGFuZCBob3Jpem9udGFs
bHkgaXQgd2lsbCBsZXQgdGhlIHZpZXdzIGRlY2lkZSB3aGV0aGVyIGl0IHNob3VsZCBnZW5lcmF0
ZSBzd2lwZSBnZXN0dXJlcyBvciBub3QuCisgICAgICAgIEFib3V0IHRoZSBzY3JvbGwgc3RyZXRj
aCwgaXQgaXMgY2FuY2VsZWQgaWYgdGhlIHZhbHVlIG9mIG92ZXJzY3JvbGwtYmVoYXZpb3IgaXMg
bm9uZS4KKworICAgICAgICBUZXN0czogZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlv
ci1lbGVtZW50Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwt
YmVoYXZpb3ItaWZyYW1lLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvc2Nyb2xsaW5nL292ZXJz
Y3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRtbAorICAgICAgICAgICAgICAg
ZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLmh0
bWwKKworICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnVwZGF0ZVBhcmVudEZyYW1lU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKTogVXBkYXRlIG1fc2Nyb2xs
Q2hhaW5pbmdCbG9ja2VyIGZvciBwYXJlbnQgZnJhbWUuCisgICAgICAgIChXZWJDb3JlOjpjaGVj
a1Njcm9sbENoYWluaW5nQmxvY2tlckZvckZyYW1lVmlldyk6IENoZWNrIGlmIG1fc2Nyb2xsQ2hh
aW5pbmdCbG9ja2VyIGJsb2NrcyB0aGUgc2Nyb2xsIGNoYWluaW5nIG9uIEZyYW1lVmlldywKKyAg
ICAgICAgZGVhbCB3aXRoIGhvcml6b250YWwgYW5kIHZlcnRpY2FsIHNjcm9sbCBjaGFpbmluZyBk
aWZmZXJlbnRseSwgYW5kIHVwZGF0ZSB0aGUgZGVsdGEgb2YgV2hlZWxFdmVudCBpZiBpdCBkb2Vz
bid0IGJsb2NrIHRoZSBzY3JvbGwgY2hhaW5pbmcuCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhh
bmRsZXI6OmhhbmRsZVdoZWVsRXZlbnRJbnRlcm5hbCk6IElmIGl0J3MgbWFpbiBmcmFtZSwgYmxv
Y2sgc2Nyb2xsIGNoYWluaW5nIGJ5IHRoZSB2YWx1ZSBvZiBtX3Njcm9sbENoYWluaW5nQmxvY2tl
ci4KKyAgICAgICAgSWYgaXQncyBzdWJmcmFtZSwgcGFzcyBtX3Njcm9sbENoYWluaW5nQmxvY2tl
ciB2YWx1ZSB0byBwYXJlbnQgZnJhbWUuIAorICAgICAgICAoV2ViQ29yZTo6ZGlkU2Nyb2xsSW5T
Y3JvbGxhYmxlQXJlYSk6IEZpbHRlciB0aGUgc2Nyb2xsIGRlbHRhIGJ5IHRoZSBTY3JvbGxDaGFp
bmluZ0Jsb2NrZXIgdmFsdWUuCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRs
ZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94KTogQmxvY2sgc2Nyb2xsIGNoYWlu
aW5nIGFjY29yZGluZyB0byB0aGUgdmFsdWUgb2YgbV9zY3JvbGxDaGFpbmluZ0Jsb2NrZXIuCisg
ICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnVwZGF0ZVNjcm9sbENoYWluaW5nQmxvY2tl
cik6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnJlc2V0U2Nyb2xsQ2hhaW5pbmdC
bG9ja2VyKToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5oOgorICAgICAgICAqIHBhZ2Uv
RnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6aG9yaXpvbnRhbE92
ZXJzY3JvbGxCZWhhdmlvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnZl
cnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmll
dy5oOgorICAgICAgICAqIHBhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbToKKyAgICAgICAgKFdl
YkNvcmU6OmZpbmRFbmNsb3NpbmdTY3JvbGxhYmxlQ29udGFpbmVyKTogVXBkYXRlIHRoZSB2YWx1
ZSBvZiBTY3JvbGxDaGFpbmluZ0Jsb2NrZXIgYW5kIHJldHVybiBudWxsIGlmIHNob3VsZEJsb2Nr
U2Nyb2xsQ2hhaW5pbmcoKS4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZGV0ZXJt
aW5lV2hlZWxFdmVudFRhcmdldCk6IElmIHNob3VsZEJsb2NrU2Nyb2xsQ2hhaW5pbmcoKSwgRnJh
bWVWaWV3IHdpbGwgYmUgdGhlIGxhdGNoZWQgc2Nyb2xsIHRhcmdldC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtV2hl
ZWxFdmVudDo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwpOiBNb3ZlZCBmcm9tIFNj
cm9sbENvbnRyb2xsZXIubW0KKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxUeXBlcy5oOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsQ2hhaW5pbmdCbG9ja2VyOjpzaG91bGRCbG9ja1Njcm9sbENo
YWluaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbENoYWluaW5nQmxvY2tlcjo6ZmlsdGVy
RGVsdGEpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGFibGVBcmVhOjp1cGRhdGVTY3JvbGxDaGFpbmluZ0Jsb2NrZXJTdGF0
ZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGFibGVBcmVhOjpob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGFibGVBcmVhOjp2ZXJ0aWNhbE92ZXJzY3Jv
bGxCZWhhdmlvciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9y
TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JNYWM6OnNob3VsZEZvcndh
cmRXaGVlbEV2ZW50c1RvUGFyZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFu
aW1hdG9yTWFjOjphbGxvd3NWZXJ0aWNhbFN0cmV0Y2hpbmcgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsQW5pbWF0b3JNYWM6OmFsbG93c0hvcml6b250YWxTdHJldGNoaW5nIGNvbnN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xsQ29udHJvbGxlci5tbToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbENvbnRyb2xsZXI6OmRpcmVjdGlvbkZyb21FdmVudCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxDb250cm9sbGVyOjp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0
aWNhbCk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJs
ZUFyZWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6
aG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMYXllclNjcm9sbGFibGVBcmVhOjp2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvciBjb25z
dCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuaDoKKwog
MjAyMS0wMy0wNyAgTGF1cm8gTW91cmEgIDxsbW91cmFAaWdhbGlhLmNvbT4KIAogICAgICAgICBV
bnJldmlld2VkLiBGaXggLVd1bnVzZWQtcGFyYW1ldGVyIHdhcm5pbmcgYWZ0ZXIgcjI3NDAzMwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDM1NDZmOTYwNjc1NjQ1YWU3MDYxMmQ1Yzlh
OTg1MjVjNWE5ZGRkNjMuLmM2MTc5NzUzNGEzNGUwMDhkNDE3ZmRlN2UxZjYxMDU2ZmM3Zjg2NGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMS0wMy0w
OSAgQ2F0aGllIENoZW4gIDxjYXRoaWVjaGVuQGlnYWxpYS5jb20+CisKKyAgICAgICAgU3VwcG9y
dCBDU1Mgb3ZlcnNjcm9sbC1iZWhhdmlvciBmb3Igc3luY2hyb25vdXMgc2Nyb2xsCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI5NjgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCYXNlZCBvbiBGcsOpZMOp
cmljIFdhbmcncyBwYXRjaC4KKworICAgICAgICBOZWVkIHRvIGZpbmQgYSB3YXkgdG8gYmxvY2sg
dGhlIGNyb3NzLWZyYW1lIHNjcm9sbCBjaGFpbmluZyBpbiBXSzEuCisKKyAgICAgICAgKiBXZWJW
aWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBzY3JvbGxXaGVlbDpd
KToKKwogMjAyMS0wMy0wNiAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAg
ICAgU2ltcGxpZnkgRHVtcFJlbmRlclRyZWUgV2ViUHJlZmVyZW5jZXMgcmVzZXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCBhMDRhOWUzNTBhNmI0N2I3M2NiOWRhYjcwMzZm
NmUzODRhZjdiMDQ0Li44NDc0NzBhODEwYWEzZjYyODdmNmU4Nzc2MWY1OTE2NjhkNTllZjExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0yODU4LDYgKzI4NTgsNTYgQEAg
Ym9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2
ZW50JiB3aGVlbEV2ZW50LCBPcHRpb24KICAgICByZXR1cm4gaGFuZGxlZDsKIH0KIAorI2lmIEVO
QUJMRShXSEVFTF9FVkVOVF9MQVRDSElORykKK3N0YXRpYyB2b2lkIHVwZGF0ZVBhcmVudEZyYW1l
U2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKGNvbnN0IFNjcm9sbGFibGVBcmVhKiBzY3JvbGxhYmxlQXJl
YSwgRnJhbWUmIGZyYW1lLCBTY3JvbGxDaGFpbmluZ0Jsb2NrZXImIGJsb2NrZXIpCit7CisgICAg
YXV0byogcGFyZW50ID0gZnJhbWUudHJlZSgpLnBhcmVudCgpOworICAgIGlmICghc2Nyb2xsYWJs
ZUFyZWEpCisgICAgICAgIHNjcm9sbGFibGVBcmVhID0gZnJhbWUudmlldygpOworICAgIGlmICgh
ZnJhbWUucGFnZSgpIHx8ICFwYXJlbnQgfHwgIXNjcm9sbGFibGVBcmVhKQorICAgICAgICByZXR1
cm47CisgICAgc2Nyb2xsYWJsZUFyZWEtPnVwZGF0ZVNjcm9sbENoYWluaW5nQmxvY2tlclN0YXRl
KGJsb2NrZXIpOworICAgIHBhcmVudC0+ZXZlbnRIYW5kbGVyKCkudXBkYXRlU2Nyb2xsQ2hhaW5p
bmdCbG9ja2VyKGJsb2NrZXIpOworfQorCitzdGF0aWMgYm9vbCBjaGVja1Njcm9sbENoYWluaW5n
QmxvY2tlckZvckZyYW1lVmlldyhjb25zdCBTY3JvbGxhYmxlQXJlYSogc2Nyb2xsYWJsZUFyZWEs
IEZyYW1lJiBmcmFtZSwgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBTY3JvbGxDaGFp
bmluZ0Jsb2NrZXIgc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLCBib29sJiBoYW5kbGVkRXZlbnQpCit7
CisgICAgaWYgKCFzY3JvbGxhYmxlQXJlYSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
aWYgKHNjcm9sbGFibGVBcmVhICE9IGZyYW1lLnZpZXcoKSkgeworICAgICAgICAvLyBXaGVlbCBl
dmVudCBpcyBnb2luZyB0byBiZSBoYW5kbGVkIGJ5IEZyYW1lVmlldyBpbiBwcm9jZXNzV2hlZWxF
dmVudEZvclNjcm9sbGluZygpLAorICAgICAgICAvLyBzaG91bGQgbGV0IHNjcm9sbGFibGVBcmVh
J3Mgb3ZlcnNjcm9sbC1iZWhhdmlvciBlZmZlY3QgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLgorICAg
ICAgICBzY3JvbGxhYmxlQXJlYS0+dXBkYXRlU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyU3RhdGUoc2Ny
b2xsQ2hhaW5pbmdCbG9ja2VyKTsKKyAgICB9CisKKyAgICBGbG9hdFNpemUgZmlsdGVyZWREZWx0
YSh3aGVlbEV2ZW50LmRlbHRhWCgpLCB3aGVlbEV2ZW50LmRlbHRhWSgpKTsKKyAgICBhdXRvIGJp
YXNlZERlbHRhID0gUGxhdGZvcm1XaGVlbEV2ZW50Ojp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNW
ZXJ0aWNhbChmaWx0ZXJlZERlbHRhKTsKKyAgICBpZiAoc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLmJs
b2NrWCAmJiAhYmlhc2VkRGVsdGEuaGVpZ2h0KCkpIHsKKyAgICAgICAgLy8gSWYgdGhlIGhvcml6
b250YWwgc2Nyb2xsIGNoYWluaW5nIGlzIGJsb2NrZWQgYnkgb3ZlcnNjcm9sbC1iZWhhdmlvciBp
biBhIHN1YmZyYW1lLgorICAgICAgICAvLyBJdCBwcm9wYWdhdGVzIGl0cyBTY3JvbGxDaGFpbmlu
Z0Jsb2NrZXIgdG8gcGFyZW50IGZyYW1lcyBhbmQgZXZlbnR1YWxseSBsZXQgbWFpbmZyYW1lCisg
ICAgICAgIC8vIGRlY2lkZSB3aGV0aGVyIG5lZWQgdG8gdHJpZ2dlciBhIHN3aXBlIGdlc3R1cmUg
b3Igbm90LgorICAgICAgICBpZiAoZnJhbWUuaXNNYWluRnJhbWUoKSkgeworICAgICAgICAgICAg
Ly8gSW4gbWFpbiBmcmFtZSwgdHJpZ2dlciB0aGUgc3dpcGUgZ2VzdHVyZSBpZiBuZWVkZWQuCisg
ICAgICAgICAgICBoYW5kbGVkRXZlbnQgPSAhYmlhc2VkRGVsdGEud2lkdGgoKTsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIHVwZGF0ZVBhcmVudEZyYW1lU2Nyb2xsQ2hhaW5pbmdCbG9j
a2VyKHNjcm9sbGFibGVBcmVhLCBmcmFtZSwgc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKTsKKyAgICAg
ICAgICAgIGhhbmRsZWRFdmVudCA9IGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKworICAgIGlmIChTY3JvbGxDaGFpbmluZ0Jsb2NrZXI6OnNob3VsZEJsb2Nr
U2Nyb2xsQ2hhaW5pbmcoc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLCBiaWFzZWREZWx0YSkpIHsKKyAg
ICAgICAgaGFuZGxlZEV2ZW50ID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
CisgICAgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyOjpmaWx0ZXJEZWx0YShzY3JvbGxDaGFpbmluZ0Js
b2NrZXIsIGJpYXNlZERlbHRhLCBmaWx0ZXJlZERlbHRhKTsKKyAgICB3aGVlbEV2ZW50ID0gd2hl
ZWxFdmVudC5jb3B5V2l0aERlbHRhc0FuZFZlbG9jaXR5KGZpbHRlcmVkRGVsdGEud2lkdGgoKSwg
ZmlsdGVyZWREZWx0YS5oZWlnaHQoKSwgd2hlZWxFdmVudC5zY3JvbGxpbmdWZWxvY2l0eSgpKTsK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisjZW5kaWYKKwogYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRs
ZVdoZWVsRXZlbnRJbnRlcm5hbChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50LCBPcHRp
b25TZXQ8V2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwcz4gcHJvY2Vzc2luZ1N0ZXBzLCBPcHRpb25T
ZXQ8RXZlbnRIYW5kbGluZz4mIGhhbmRsaW5nKQogewogICAgIGF1dG8qIGRvY3VtZW50ID0gbV9m
cmFtZS5kb2N1bWVudCgpOwpAQCAtMjg5MCw2ICsyOTQwLDggQEAgYm9vbCBFdmVudEhhbmRsZXI6
OmhhbmRsZVdoZWVsRXZlbnRJbnRlcm5hbChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50
LCBPcHQKICAgICBhdXRvIGRlZmVycmVyID0gV2hlZWxFdmVudFRlc3RNb25pdG9yQ29tcGxldGlv
bkRlZmVycmVyIHsgbW9uaXRvci5nZXQoKSwgdGhpcywgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpE
ZWZlclJlYXNvbjo6SGFuZGxpbmdXaGVlbEV2ZW50T25NYWluVGhyZWFkIH07CiAjZW5kaWYKIAor
ICAgIHJlc2V0U2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKCk7CisKICAgICBtX2lzSGFuZGxpbmdXaGVl
bEV2ZW50ID0gdHJ1ZTsKICAgICBhdXRvIGFsbG93c1Njcm9sbGluZ1N0YXRlID0gU2V0Rm9yU2Nv
cGUobV9jdXJyZW50V2hlZWxFdmVudEFsbG93c1Njcm9sbGluZywgcHJvY2Vzc2luZ1N0ZXBzLmNv
bnRhaW5zKFdoZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHM6Ok1haW5UaHJlYWRGb3JTY3JvbGxpbmcp
KTsKICAgICAKQEAgLTI5MTQsMTEgKzI5NjYsMTcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRs
ZVdoZWVsRXZlbnRJbnRlcm5hbChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50LCBPcHQK
ICAgICAvLyBpdHNlbGYgZmluZHMgYW5kIHRyaWVzIHRvIHNjcm9sbCBvdmVyZmxvdyBzY3JvbGxl
cnMuCiAgICAgZGV0ZXJtaW5lV2hlZWxFdmVudFRhcmdldChldmVudCwgZWxlbWVudCwgc2Nyb2xs
YWJsZUFyZWEsIGlzT3ZlcldpZGdldCk7CiAKKyAgICBhdXRvIG9sZEJsb2NrZXIgPSBtX3Njcm9s
bENoYWluaW5nQmxvY2tlcjsKICAgICBpZiAoZWxlbWVudCkgewogICAgICAgICBpZiAoaXNPdmVy
V2lkZ2V0KSB7CiAgICAgICAgICAgICBpZiAoV2Vha1B0cjxXaWRnZXQ+IHdpZGdldCA9IHdpZGdl
dEZvckVsZW1lbnQoKmVsZW1lbnQpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHBhc3NXaGVlbEV2
ZW50VG9XaWRnZXQoZXZlbnQsICp3aWRnZXQuZ2V0KCksIHByb2Nlc3NpbmdTdGVwcykpCiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBjb21wbGV0ZVdpZGdldFdoZWVsRXZlbnQoZXZlbnQsIHdp
ZGdldCwgc2Nyb2xsYWJsZUFyZWEpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKG1fc2Nyb2xs
Q2hhaW5pbmdCbG9ja2VyLmJsb2NrWCAhPSBvbGRCbG9ja2VyLmJsb2NrWCB8fCBtX3Njcm9sbENo
YWluaW5nQmxvY2tlci5ibG9ja1kgIT0gb2xkQmxvY2tlci5ibG9ja1kpIHsKKyAgICAgICAgICAg
ICAgICAgICAgLy8gSWYgbV9zY3JvbGxDaGFpbmluZ0Jsb2NrZXIgaXMgY2hhbmdlZCBpbiBzdWJm
cmFtZXMsIHRoZSBsYWNoZWQgc3RhdGUgc2hvdWxkIGJlIGNhbGN1bGF0ZWQgYWdhaW4uCisgICAg
ICAgICAgICAgICAgICAgIGNsZWFyTGF0Y2hlZFN0YXRlKCk7CisgICAgICAgICAgICAgICAgICAg
IGRldGVybWluZVdoZWVsRXZlbnRUYXJnZXQoZXZlbnQsIGVsZW1lbnQsIHNjcm9sbGFibGVBcmVh
LCBpc092ZXJXaWRnZXQpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAg
ICAgfQogCkBAIC0yOTUwLDEyICszMDA4LDI5IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVX
aGVlbEV2ZW50SW50ZXJuYWwoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCwgT3B0CiAj
aWYgRU5BQkxFKFdIRUVMX0VWRU5UX0xBVENISU5HKQogICAgIGlmIChhbGxvd1Njcm9sbGluZykK
ICAgICAgICAgYWxsb3dTY3JvbGxpbmcgPSBtX2ZyYW1lLnBhZ2UoKS0+c2Nyb2xsTGF0Y2hpbmdD
b250cm9sbGVyKCkubGF0Y2hpbmdBbGxvd3NTY3JvbGxpbmdJbkZyYW1lKG1fZnJhbWUsIHNjcm9s
bGFibGVBcmVhKTsKKyAgICBpZiAoIShhbGxvd1Njcm9sbGluZyB8fCBtX2ZyYW1lLmlzTWFpbkZy
YW1lKCkpKQorICAgICAgICB1cGRhdGVQYXJlbnRGcmFtZVNjcm9sbENoYWluaW5nQmxvY2tlcihz
Y3JvbGxhYmxlQXJlYS5nZXQoKSwgbV9mcmFtZSwgbV9zY3JvbGxDaGFpbmluZ0Jsb2NrZXIpOwog
I2VuZGlmCiAKICAgICBpZiAoYWxsb3dTY3JvbGxpbmcpIHsKLSAgICAgICAgLy8gRklYTUU6IHBy
b2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKCkgaXMgb25seSBjYWxsZWQgZm9yIEZyYW1lVmll
dyBzY3JvbGxpbmcsIG5vdCBvdmVyZmxvdyBzY3JvbGxpbmcsIHdoaWNoIGlzIGNvbmZ1c2luZy4K
LSAgICAgICAgaGFuZGxlZEV2ZW50ID0gcHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxpbmcoZXZl
bnQsIHNjcm9sbGFibGVBcmVhLCBoYW5kbGluZyk7Ci0gICAgICAgIHByb2Nlc3NXaGVlbEV2ZW50
Rm9yU2Nyb2xsU25hcChldmVudCwgc2Nyb2xsYWJsZUFyZWEpOworICAgICAgICBQbGF0Zm9ybVdo
ZWVsRXZlbnQgYWRqdXN0ZWRXaGVlbEV2ZW50ID0gUGxhdGZvcm1XaGVlbEV2ZW50KGV2ZW50KTsK
KyAgICAgICAgYm9vbCBzY3JvbGxDaGFpbmluZ1N0b3BwZWQgPSBmYWxzZTsKKyNpZiBFTkFCTEUo
V0hFRUxfRVZFTlRfTEFUQ0hJTkcpCisgICAgICAgIHNjcm9sbENoYWluaW5nU3RvcHBlZCA9IGNo
ZWNrU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyRm9yRnJhbWVWaWV3KHNjcm9sbGFibGVBcmVhLmdldCgp
LCBtX2ZyYW1lLCBhZGp1c3RlZFdoZWVsRXZlbnQsIG1fc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLCBo
YW5kbGVkRXZlbnQpOworI2VuZGlmCisgICAgICAgIGlmICghc2Nyb2xsQ2hhaW5pbmdTdG9wcGVk
KSB7CisgICAgICAgICAgICAvLyBGSVhNRTogcHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxpbmco
KSBpcyBvbmx5IGNhbGxlZCBmb3IgRnJhbWVWaWV3IHNjcm9sbGluZywgbm90IG92ZXJmbG93IHNj
cm9sbGluZywgd2hpY2ggaXMgY29uZnVzaW5nLgorICAgICAgICAgICAgaGFuZGxlZEV2ZW50ID0g
cHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxpbmcoYWRqdXN0ZWRXaGVlbEV2ZW50LCBzY3JvbGxh
YmxlQXJlYSwgaGFuZGxpbmcpOworICAgICAgICAgICAgcHJvY2Vzc1doZWVsRXZlbnRGb3JTY3Jv
bGxTbmFwKGFkanVzdGVkV2hlZWxFdmVudCwgc2Nyb2xsYWJsZUFyZWEpOworICAgICAgICB9Cisj
aWYgIUVOQUJMRShXSEVFTF9FVkVOVF9MQVRDSElORykKKyAgICAgICAgaWYgKGF1dG8qIHZpZXcg
PSBtX2ZyYW1lLnZpZXcoKSkgeworICAgICAgICAgICAgaWYgKCFoYW5kbGVkRXZlbnQpIHsKKyAg
ICAgICAgICAgICAgICBhdXRvIGJpYXNlZERlbHRhID0gUGxhdGZvcm1XaGVlbEV2ZW50Ojp3aGVl
bERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbChhZGp1c3RlZFdoZWVsRXZlbnQuZGVsdGEoKSk7
CisgICAgICAgICAgICAgICAgaGFuZGxlZEV2ZW50ID0gU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyOjpz
aG91bGRCbG9ja1Njcm9sbENoYWluaW5nKG1fc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLCBiaWFzZWRE
ZWx0YSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyNlbmRpZgogICAgIH0KIAogICAgIHJl
dHVybiBoYW5kbGVkRXZlbnQ7CkBAIC0yOTcyLDIwICszMDQ3LDIzIEBAIHN0YXRpYyB2b2lkIGhh
bmRsZVdoZWVsRXZlbnRQaGFzZUluU2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJsZUFyZWEmIHNjcm9s
bGFibGVBcmVhCiAjZW5kaWYKIH0KIAotc3RhdGljIGJvb2wgZGlkU2Nyb2xsSW5TY3JvbGxhYmxl
QXJlYShTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEsIGNvbnN0IFdoZWVsRXZlbnQmIHdo
ZWVsRXZlbnQpCitzdGF0aWMgYm9vbCBkaWRTY3JvbGxJblNjcm9sbGFibGVBcmVhKFNjcm9sbGFi
bGVBcmVhJiBzY3JvbGxhYmxlQXJlYSwgY29uc3QgV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgY29u
c3QgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyJiBibG9ja2VyKQogeworICAgIEZsb2F0U2l6ZSBmaWx0
ZXJlZERlbHRhKHdoZWVsRXZlbnQuZGVsdGFYKCksIHdoZWVsRXZlbnQuZGVsdGFZKCkpOworICAg
IGF1dG8gYmlhc2VkRGVsdGEgPSBQbGF0Zm9ybVdoZWVsRXZlbnQ6OndoZWVsRGVsdGFCaWFzaW5n
VG93YXJkc1ZlcnRpY2FsKGZpbHRlcmVkRGVsdGEpOworICAgIFNjcm9sbENoYWluaW5nQmxvY2tl
cjo6ZmlsdGVyRGVsdGEoYmxvY2tlciwgYmlhc2VkRGVsdGEsIGZpbHRlcmVkRGVsdGEpOwogICAg
IFNjcm9sbEdyYW51bGFyaXR5IHNjcm9sbEdyYW51bGFyaXR5ID0gd2hlZWxHcmFudWxhcml0eVRv
U2Nyb2xsR3JhbnVsYXJpdHkod2hlZWxFdmVudC5kZWx0YU1vZGUoKSk7CiAgICAgYm9vbCBkaWRI
YW5kbGVXaGVlbEV2ZW50ID0gZmFsc2U7Ci0gICAgaWYgKGZsb2F0IGFic29sdXRlRGVsdGEgPSBz
dGQ6OmFicyh3aGVlbEV2ZW50LmRlbHRhWCgpKSkKLSAgICAgICAgZGlkSGFuZGxlV2hlZWxFdmVu
dCB8PSBzY3JvbGxhYmxlQXJlYS5zY3JvbGwod2hlZWxFdmVudC5kZWx0YVgoKSA+IDAgPyBTY3Jv
bGxSaWdodCA6IFNjcm9sbExlZnQsIHNjcm9sbEdyYW51bGFyaXR5LCBhYnNvbHV0ZURlbHRhKTsK
KyAgICBpZiAoZmxvYXQgYWJzb2x1dGVEZWx0YSA9IHN0ZDo6YWJzKGZpbHRlcmVkRGVsdGEud2lk
dGgoKSkpCisgICAgICAgIGRpZEhhbmRsZVdoZWVsRXZlbnQgfD0gc2Nyb2xsYWJsZUFyZWEuc2Ny
b2xsKGZpbHRlcmVkRGVsdGEud2lkdGgoKSA+IDAgPyBTY3JvbGxSaWdodCA6IFNjcm9sbExlZnQs
IHNjcm9sbEdyYW51bGFyaXR5LCBhYnNvbHV0ZURlbHRhKTsKIAotICAgIGlmIChmbG9hdCBhYnNv
bHV0ZURlbHRhID0gc3RkOjphYnMod2hlZWxFdmVudC5kZWx0YVkoKSkpCi0gICAgICAgIGRpZEhh
bmRsZVdoZWVsRXZlbnQgfD0gc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsKHdoZWVsRXZlbnQuZGVsdGFZ
KCkgPiAwID8gU2Nyb2xsRG93biA6IFNjcm9sbFVwLCBzY3JvbGxHcmFudWxhcml0eSwgYWJzb2x1
dGVEZWx0YSk7CisgICAgaWYgKGZsb2F0IGFic29sdXRlRGVsdGEgPSBzdGQ6OmFicyhmaWx0ZXJl
ZERlbHRhLmhlaWdodCgpKSkKKyAgICAgICAgZGlkSGFuZGxlV2hlZWxFdmVudCB8PSBzY3JvbGxh
YmxlQXJlYS5zY3JvbGwoZmlsdGVyZWREZWx0YS5oZWlnaHQoKSA+IDAgPyBTY3JvbGxEb3duIDog
U2Nyb2xsVXAsIHNjcm9sbEdyYW51bGFyaXR5LCBhYnNvbHV0ZURlbHRhKTsKIAogICAgIHJldHVy
biBkaWRIYW5kbGVXaGVlbEV2ZW50OwogfQogCi1ib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlV2hl
ZWxFdmVudEluQXBwcm9wcmlhdGVFbmNsb3NpbmdCb3goTm9kZSogc3RhcnROb2RlLCBjb25zdCBX
aGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBjb25zdCBGbG9hdFNpemUmIGZpbHRlcmVkUGxhdGZvcm1E
ZWx0YSwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJlZFZlbG9jaXR5LCBPcHRpb25TZXQ8RXZlbnRI
YW5kbGluZz4gZXZlbnRIYW5kbGluZykKK2Jvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2
ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2luZ0JveChOb2RlKiBzdGFydE5vZGUsIGNvbnN0IFdoZWVs
RXZlbnQmIHdoZWVsRXZlbnQsIEZsb2F0U2l6ZSYgZmlsdGVyZWRQbGF0Zm9ybURlbHRhLCBjb25z
dCBGbG9hdFNpemUmIGZpbHRlcmVkVmVsb2NpdHksIE9wdGlvblNldDxFdmVudEhhbmRsaW5nPiBl
dmVudEhhbmRsaW5nKQogewogICAgIGJvb2wgc2hvdWxkSGFuZGxlRXZlbnQgPSB3aGVlbEV2ZW50
LmRlbHRhWCgpIHx8IHdoZWVsRXZlbnQuZGVsdGFZKCk7CiAjaWYgRU5BQkxFKFdIRUVMX0VWRU5U
X0xBVENISU5HKQpAQCAtMzAwNywyMSArMzA4NSwyOSBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFu
ZGxlV2hlZWxFdmVudEluQXBwcm9wcmlhdGVFbmNsb3NpbmdCb3goTm9kZSogc3RhcnROb2RlLCBj
bwogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoaXM8UmVuZGVyTGlzdEJveD4oaW5p
dGlhbEVuY2xvc2luZ0JveCkpCi0gICAgICAgIHJldHVybiBkaWRTY3JvbGxJblNjcm9sbGFibGVB
cmVhKGRvd25jYXN0PFJlbmRlckxpc3RCb3g+KGluaXRpYWxFbmNsb3NpbmdCb3gpLCB3aGVlbEV2
ZW50KTsKKyAgICAgICAgcmV0dXJuIGRpZFNjcm9sbEluU2Nyb2xsYWJsZUFyZWEoZG93bmNhc3Q8
UmVuZGVyTGlzdEJveD4oaW5pdGlhbEVuY2xvc2luZ0JveCksIHdoZWVsRXZlbnQsIG1fc2Nyb2xs
Q2hhaW5pbmdCbG9ja2VyKTsKIAorICAgIGF1dG8gYmlhc2VkRGVsdGEgPSBQbGF0Zm9ybVdoZWVs
RXZlbnQ6OndoZWVsRGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRpY2FsKEZsb2F0U2l6ZSh3aGVlbEV2
ZW50LmRlbHRhWCgpLCB3aGVlbEV2ZW50LmRlbHRhWSgpKSk7CiAgICAgUmVuZGVyQm94KiBjdXJy
ZW50RW5jbG9zaW5nQm94ID0gJmluaXRpYWxFbmNsb3NpbmdCb3g7CiAgICAgd2hpbGUgKGN1cnJl
bnRFbmNsb3NpbmdCb3gpIHsKICAgICAgICAgaWYgKGF1dG8qIGJveExheWVyID0gY3VycmVudEVu
Y2xvc2luZ0JveC0+bGF5ZXIoKSA/IGN1cnJlbnRFbmNsb3NpbmdCb3gtPmxheWVyKCktPnNjcm9s
bGFibGVBcmVhKCkgOiBudWxscHRyKSB7CiAgICAgICAgICAgICBhdXRvIHBsYXRmb3JtRXZlbnQg
PSB3aGVlbEV2ZW50LnVuZGVybHlpbmdQbGF0Zm9ybUV2ZW50KCk7CiAgICAgICAgICAgICBib29s
IHNjcm9sbGluZ1dhc0hhbmRsZWQ7CiAgICAgICAgICAgICBpZiAocGxhdGZvcm1FdmVudCkgewor
ICAgICAgICAgICAgICAgIFNjcm9sbENoYWluaW5nQmxvY2tlcjo6ZmlsdGVyRGVsdGEobV9zY3Jv
bGxDaGFpbmluZ0Jsb2NrZXIsIGJpYXNlZERlbHRhLCBmaWx0ZXJlZFBsYXRmb3JtRGVsdGEpOwog
ICAgICAgICAgICAgICAgIGF1dG8gY29waWVkRXZlbnQgPSBwbGF0Zm9ybUV2ZW50LT5jb3B5V2l0
aERlbHRhc0FuZFZlbG9jaXR5KGZpbHRlcmVkUGxhdGZvcm1EZWx0YS53aWR0aCgpLCBmaWx0ZXJl
ZFBsYXRmb3JtRGVsdGEuaGVpZ2h0KCksIGZpbHRlcmVkVmVsb2NpdHkpOwogICAgICAgICAgICAg
ICAgIHNjcm9sbGluZ1dhc0hhbmRsZWQgPSBoYW5kbGVXaGVlbEV2ZW50SW5TY3JvbGxhYmxlQXJl
YShjb3BpZWRFdmVudCwgKmJveExheWVyLCBldmVudEhhbmRsaW5nKTsKICAgICAgICAgICAgIH0g
ZWxzZQotICAgICAgICAgICAgICAgIHNjcm9sbGluZ1dhc0hhbmRsZWQgPSBkaWRTY3JvbGxJblNj
cm9sbGFibGVBcmVhKCpib3hMYXllciwgd2hlZWxFdmVudCk7CisgICAgICAgICAgICAgICAgc2Ny
b2xsaW5nV2FzSGFuZGxlZCA9IGRpZFNjcm9sbEluU2Nyb2xsYWJsZUFyZWEoKmJveExheWVyLCB3
aGVlbEV2ZW50LCBtX3Njcm9sbENoYWluaW5nQmxvY2tlcik7CiAKICAgICAgICAgICAgIGlmIChz
Y3JvbGxpbmdXYXNIYW5kbGVkKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAg
ICAgICAgICBpZiAoY3VycmVudEVuY2xvc2luZ0JveC0+ZWxlbWVudCgpICE9IGN1cnJlbnRFbmNs
b3NpbmdCb3gtPmRvY3VtZW50KCkuZG9jdW1lbnRFbGVtZW50KCkpIHsKKyAgICAgICAgICAgICAg
ICBib3hMYXllci0+dXBkYXRlU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyU3RhdGUobV9zY3JvbGxDaGFp
bmluZ0Jsb2NrZXIpOworICAgICAgICAgICAgICAgIGlmIChTY3JvbGxDaGFpbmluZ0Jsb2NrZXI6
OnNob3VsZEJsb2NrU2Nyb2xsQ2hhaW5pbmcobV9zY3JvbGxDaGFpbmluZ0Jsb2NrZXIsIGJpYXNl
ZERlbHRhKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9
CiAgICAgICAgIH0KIAogICAgICAgICBjdXJyZW50RW5jbG9zaW5nQm94ID0gY3VycmVudEVuY2xv
c2luZ0JveC0+Y29udGFpbmluZ0Jsb2NrKCk7CkBAIC00NjI2LDQgKzQ3MTIsMTUgQEAgYm9vbCBF
dmVudEhhbmRsZXI6OnBhc3NNb3VzZU1vdmVFdmVudFRvU3ViZnJhbWUoTW91c2VFdmVudFdpdGhI
aXRUZXN0UmVzdWx0cyYgbW8KIH0KICNlbmRpZiAvLyAhUExBVEZPUk0oQ09DT0EpICYmICFQTEFU
Rk9STShXSU4pCiAKK3ZvaWQgRXZlbnRIYW5kbGVyOjp1cGRhdGVTY3JvbGxDaGFpbmluZ0Jsb2Nr
ZXIoY29uc3QgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyJiBibG9ja2VyKQoreworICAgIG1fc2Nyb2xs
Q2hhaW5pbmdCbG9ja2VyLmJsb2NrWCB8PSBibG9ja2VyLmJsb2NrWDsKKyAgICBtX3Njcm9sbENo
YWluaW5nQmxvY2tlci5ibG9ja1kgfD0gYmxvY2tlci5ibG9ja1k7Cit9CisKK3ZvaWQgRXZlbnRI
YW5kbGVyOjpyZXNldFNjcm9sbENoYWluaW5nQmxvY2tlcigpCit7CisgICAgbV9zY3JvbGxDaGFp
bmluZ0Jsb2NrZXIgPSB7IGZhbHNlLCBmYWxzZSB9OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAppbmRleCA1ZDA0MjAzOGJmMzRiZjg5ZmZl
M2RiOTk0NzYzNzM3ODg5NDUyODc5Li40YjQ3ZmE2NDg4YTE1NTU0OTNjMzI5MjgwYmVmMjQzZmZj
Yjg4NTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKQEAgLTIxNCw2ICsyMTQsOSBA
QCBwdWJsaWM6CiAgICAgdm9pZCBkZWZhdWx0V2hlZWxFdmVudEhhbmRsZXIoTm9kZSosIFdoZWVs
RXZlbnQmKTsKICAgICB2b2lkIHdoZWVsRXZlbnRXYXNQcm9jZXNzZWRCeU1haW5UaHJlYWQoY29u
c3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgT3B0aW9uU2V0PEV2ZW50SGFuZGxpbmc+KTsKIAorICAg
IHZvaWQgdXBkYXRlU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKGNvbnN0IFNjcm9sbENoYWluaW5nQmxv
Y2tlciYpOworICAgIHZvaWQgcmVzZXRTY3JvbGxDaGFpbmluZ0Jsb2NrZXIoKTsKKwogICAgIGJv
b2wgaGFuZGxlUGFzdGVHbG9iYWxTZWxlY3Rpb24oY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7
CiAKICNpZiBFTkFCTEUoSU9TX1RPVUNIX0VWRU5UUykgfHwgRU5BQkxFKElPU19HRVNUVVJFX0VW
RU5UUykKQEAgLTQ3MCw3ICs0NzMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcHJvY2Vzc1doZWVs
RXZlbnRGb3JTY3JvbGxTbmFwKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIGNvbnN0IFdlYWtQ
dHI8U2Nyb2xsYWJsZUFyZWE+Jik7CiAgICAgYm9vbCBjb21wbGV0ZVdpZGdldFdoZWVsRXZlbnQo
Y29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgY29uc3QgV2Vha1B0cjxXaWRnZXQ+JiwgY29uc3Qg
V2Vha1B0cjxTY3JvbGxhYmxlQXJlYT4mKTsKIAotICAgIGJvb2wgaGFuZGxlV2hlZWxFdmVudElu
QXBwcm9wcmlhdGVFbmNsb3NpbmdCb3goTm9kZSogc3RhcnROb2RlLCBjb25zdCBXaGVlbEV2ZW50
JiwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJlZFBsYXRmb3JtRGVsdGEsIGNvbnN0IEZsb2F0U2l6
ZSYgZmlsdGVyZWRWZWxvY2l0eSwgT3B0aW9uU2V0PEV2ZW50SGFuZGxpbmc+KTsKKyAgICBib29s
IGhhbmRsZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94KE5vZGUqIHN0YXJ0Tm9k
ZSwgY29uc3QgV2hlZWxFdmVudCYsIEZsb2F0U2l6ZSYgZmlsdGVyZWRQbGF0Zm9ybURlbHRhLCBj
b25zdCBGbG9hdFNpemUmIGZpbHRlcmVkVmVsb2NpdHksIE9wdGlvblNldDxFdmVudEhhbmRsaW5n
Pik7CiAKICAgICBib29sIGhhbmRsZVdoZWVsRXZlbnRJblNjcm9sbGFibGVBcmVhKGNvbnN0IFBs
YXRmb3JtV2hlZWxFdmVudCYsIFNjcm9sbGFibGVBcmVhJiwgT3B0aW9uU2V0PEV2ZW50SGFuZGxp
bmc+KTsKICAgICBPcHRpb25hbDxXaGVlbFNjcm9sbEdlc3R1cmVTdGF0ZT4gdXBkYXRlV2hlZWxH
ZXN0dXJlU3RhdGUoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgT3B0aW9uU2V0PEV2ZW50SGFu
ZGxpbmc+KTsKQEAgLTY0Niw2ICs2NDksOCBAQCBwcml2YXRlOgogICAgIEludFBvaW50IG1fdGFy
Z2V0QXV0b3Njcm9sbFBvc2l0aW9uSW5VbnNjcm9sbGVkUm9vdFZpZXdDb29yZGluYXRlczsKICAg
ICBPcHRpb25hbDxJbnRQb2ludD4gbV9pbml0aWFsVGFyZ2V0QXV0b3Njcm9sbFBvc2l0aW9uSW5V
bnNjcm9sbGVkUm9vdFZpZXdDb29yZGluYXRlczsKICNlbmRpZgorCisgICAgU2Nyb2xsQ2hhaW5p
bmdCbG9ja2VyIG1fc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIHsgZmFsc2UsIGZhbHNlIH07CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXgg
NjgzZTM2ZWY1NWYyYTkzNWQ5MGFiNTUwZGM1OTYxYTIwZjkwOGMzOS4uYTY4OWRiM2RhMDhjZGVl
ZjBkYWY0NGM2ZmRhZDAyOWJlMzg5OGU2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApA
QCAtNDE5LDYgKzQxOSwyNiBAQCBib29sIEZyYW1lVmlldzo6ZGlkRmlyc3RMYXlvdXQoKSBjb25z
dAogICAgIHJldHVybiBsYXlvdXRDb250ZXh0KCkuZGlkRmlyc3RMYXlvdXQoKTsKIH0KIAorT3Zl
cnNjcm9sbEJlaGF2aW9yIEZyYW1lVmlldzo6aG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigp
IGNvbnN0Cit7CisgICAgYXV0byogZG9jdW1lbnQgPSBmcmFtZSgpLmRvY3VtZW50KCk7CisgICAg
YXV0byBzY3JvbGxpbmdPYmplY3QgPSBkb2N1bWVudCAmJiBkb2N1bWVudC0+ZG9jdW1lbnRFbGVt
ZW50KCkgPyBkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCktPnJlbmRlcmVyKCkgOiBudWxscHRy
OworICAgIC8vIEFuIGVsZW1lbnQgdGhhdCBpcyBub3Qgc2Nyb2xsIGNvbnRhaW5lciBtdXN0IGFj
Y2VwdCBidXQgaWdub3JlIHRoZSB2YWx1ZXMgb2YgdGhpcyBwcm9wZXJ0eS4KKyAgICBpZiAoc2Ny
b2xsaW5nT2JqZWN0ICYmIHJlbmRlclZpZXcoKSAmJiByZW5kZXJWaWV3KCktPmNhbkJlU2Nyb2xs
ZWRBbmRIYXNTY3JvbGxhYmxlQXJlYSgpKQorICAgICAgICByZXR1cm4gc2Nyb2xsaW5nT2JqZWN0
LT5zdHlsZSgpLm92ZXJzY3JvbGxCZWhhdmlvclgoKTsKKyAgICByZXR1cm4gU2Nyb2xsYWJsZUFy
ZWE6Omhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKTsKK30KKworT3ZlcnNjcm9sbEJlaGF2
aW9yIEZyYW1lVmlldzo6dmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSAgY29uc3QKK3sKKyAg
ICBhdXRvKiBkb2N1bWVudCA9IGZyYW1lKCkuZG9jdW1lbnQoKTsKKyAgICBhdXRvIHNjcm9sbGlu
Z09iamVjdCA9IGRvY3VtZW50ICYmIGRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKSA/IGRvY3Vt
ZW50LT5kb2N1bWVudEVsZW1lbnQoKS0+cmVuZGVyZXIoKSA6IG51bGxwdHI7CisgICAgLy8gQW4g
ZWxlbWVudCB0aGF0IGlzIG5vdCBzY3JvbGwgY29udGFpbmVyIG11c3QgYWNjZXB0IGJ1dCBpZ25v
cmUgdGhlIHZhbHVlcyBvZiB0aGlzIHByb3BlcnR5LgorICAgIGlmIChzY3JvbGxpbmdPYmplY3Qg
JiYgcmVuZGVyVmlldygpICYmIHJlbmRlclZpZXcoKS0+Y2FuQmVTY3JvbGxlZEFuZEhhc1Njcm9s
bGFibGVBcmVhKCkpCisgICAgICAgIHJldHVybiBzY3JvbGxpbmdPYmplY3QtPnN0eWxlKCkub3Zl
cnNjcm9sbEJlaGF2aW9yWSgpOworICAgIHJldHVybiBTY3JvbGxhYmxlQXJlYTo6dmVydGljYWxP
dmVyc2Nyb2xsQmVoYXZpb3IoKTsKK30KKwogdm9pZCBGcmFtZVZpZXc6OmludmFsaWRhdGVSZWN0
KGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgaWYgKCFwYXJlbnQoKSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmgKaW5kZXggY2U3ZTlhMTY3Y2EwNzRmOGMyMWMxZmQ2ZWE3NWY5MTVhZmFhNDVh
Ni4uYjEzYzdiMmJkZDBlNjJiOWJmMzg2MzhhZmYwNWRjNTJlZjdiZGY1YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lVmlldy5oCkBAIC02ODEsNiArNjgxLDkgQEAgcHVibGljOgogCiAgICAgU3RyaW5nIGRl
YnVnRGVzY3JpcHRpb24oKSBjb25zdCBmaW5hbDsKIAorICAgIE92ZXJzY3JvbGxCZWhhdmlvciBo
b3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29uc3QgZmluYWw7CisgICAgT3ZlcnNjcm9s
bEJlaGF2aW9yIHZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29uc3QgZmluYWw7CisKICAg
ICAvLyBTY3JvbGxWaWV3CiAgICAgdm9pZCB1cGRhdGVTY3JvbGxiYXJTdGVwcygpIG92ZXJyaWRl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0KaW5kZXggODY0
NjVmODA1ZTIwNTM1Njg3MDY0YzJmZjc2MDRkNWI4OWE0MjQ3ZC4uOWNlNjM4ZDU0NmY3N2Y5MmE0
YzUxYTY3N2U0YTE4ZmYxNzU1YjA2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9t
YWMvRXZlbnRIYW5kbGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50
SGFuZGxlck1hYy5tbQpAQCAtNzk3LDEzICs3OTcsMTggQEAgc3RhdGljIFNjcm9sbGFibGVBcmVh
KiBzY3JvbGxhYmxlQXJlYUZvckJveChSZW5kZXJCb3gmIGJveCkKIH0KIAogLy8gRklYTUU6IFRo
aXMgY291bGQgYmUgd3JpdHRlbiBpbiB0ZXJtcyBvZiBTY3JvbGxhYmxlQXJlYTo6ZW5jbG9zaW5n
U2Nyb2xsYWJsZUFyZWEoKS4KLXN0YXRpYyBDb250YWluZXJOb2RlKiBmaW5kRW5jbG9zaW5nU2Ny
b2xsYWJsZUNvbnRhaW5lcihDb250YWluZXJOb2RlKiBub2RlLCBjb25zdCBQbGF0Zm9ybVdoZWVs
RXZlbnQmIHdoZWVsRXZlbnQpCisvLyBEbyBub3QgdXBkYXRlIG1fc2Nyb2xsQ2hhaW5pbmdCbG9j
a2VyIGhlcmUsIHVwZGF0ZSBpdCBpbiBFdmVudEhhbmRsZXI6OmRlZmF1bHRXaGVlbEV2ZW50SGFu
ZGxlciBsYXRlciB3aGVuIHBhc3MgRXZlbnRQYXRoLAorLy8gb3RoZXJ3aXNlIHRoZSBXaGVlbEV2
ZW50IGRlbHRhIG9mIGVsZW1lbnQgd2l0aCAhb3ZlcnNjcm9sbC1iZWhhdmlvcjphdXRvIHdpbGwg
YmUgY2hhbmdlZC4KK3N0YXRpYyBDb250YWluZXJOb2RlKiBmaW5kRW5jbG9zaW5nU2Nyb2xsYWJs
ZUNvbnRhaW5lcihDb250YWluZXJOb2RlKiBub2RlLCBjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQm
IHdoZWVsRXZlbnQsIFNjcm9sbENoYWluaW5nQmxvY2tlciYgc2Nyb2xsQ2hhaW5pbmdCbG9ja2Vy
KQogewotICAgIGF1dG8gYmlhc2VkRGVsdGEgPSBTY3JvbGxDb250cm9sbGVyOjp3aGVlbERlbHRh
Qmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbCh3aGVlbEV2ZW50KTsKKyAgICBhdXRvIGJpYXNlZERlbHRh
ID0gUGxhdGZvcm1XaGVlbEV2ZW50Ojp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbCh3
aGVlbEV2ZW50LmRlbHRhKCkpOwogCiAgICAgLy8gRmluZCB0aGUgZmlyc3Qgbm9kZSB3aXRoIGEg
dmFsaWQgc2Nyb2xsYWJsZSBhcmVhIHN0YXJ0aW5nIHdpdGggdGhlIGN1cnJlbnQKICAgICAvLyBu
b2RlIGFuZCB0cmF2ZXJzaW5nIGl0cyBwYXJlbnRzIChvciBzaGFkb3cgaG9zdHMpLgogICAgIGZv
ciAoQ29udGFpbmVyTm9kZSogY2FuZGlkYXRlID0gbm9kZTsgY2FuZGlkYXRlOyBjYW5kaWRhdGUg
PSBjYW5kaWRhdGUtPnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKSkgeworICAgICAgICBpZiAoU2Ny
b2xsQ2hhaW5pbmdCbG9ja2VyOjpzaG91bGRCbG9ja1Njcm9sbENoYWluaW5nKHNjcm9sbENoYWlu
aW5nQmxvY2tlciwgYmlhc2VkRGVsdGEpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
ICAgICAgICAgaWYgKGlzPEhUTUxJRnJhbWVFbGVtZW50PigqY2FuZGlkYXRlKSkKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCkBAIC04MTMsNyArODE4LDcgQEAgc3RhdGljIENvbnRhaW5lck5vZGUq
IGZpbmRFbmNsb3NpbmdTY3JvbGxhYmxlQ29udGFpbmVyKENvbnRhaW5lck5vZGUqIG5vZGUsIGNv
bnMKICAgICAgICAgUmVuZGVyQm94KiBib3ggPSBjYW5kaWRhdGUtPnJlbmRlckJveCgpOwogICAg
ICAgICBpZiAoIWJveCB8fCAhYm94LT5jYW5CZVNjcm9sbGVkQW5kSGFzU2Nyb2xsYWJsZUFyZWEo
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAKKwogICAgICAgICBhdXRvKiBzY3Jv
bGxhYmxlQXJlYSA9IHNjcm9sbGFibGVBcmVhRm9yQm94KCpib3gpOwogICAgICAgICBpZiAoIXNj
cm9sbGFibGVBcmVhKQogICAgICAgICAgICAgY29udGludWU7CkBAIC04MjYsOCArODMxLDExIEBA
IHN0YXRpYyBDb250YWluZXJOb2RlKiBmaW5kRW5jbG9zaW5nU2Nyb2xsYWJsZUNvbnRhaW5lcihD
b250YWluZXJOb2RlKiBub2RlLCBjb25zCiAKICAgICAgICAgaWYgKGJpYXNlZERlbHRhLndpZHRo
KCkgJiYgIXNjcm9sbGFibGVBcmVhLT5pc1Bpbm5lZEZvclNjcm9sbERlbHRhT25BeGlzKC1iaWFz
ZWREZWx0YS53aWR0aCgpLCBTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwpKQogICAgICAgICAg
ICAgcmV0dXJuIGNhbmRpZGF0ZTsKKworICAgICAgICBpZiAoY2FuZGlkYXRlICE9IGNhbmRpZGF0
ZS0+ZG9jdW1lbnQoKS5kb2N1bWVudEVsZW1lbnQoKSkKKyAgICAgICAgICAgIHNjcm9sbGFibGVB
cmVhLT51cGRhdGVTY3JvbGxDaGFpbmluZ0Jsb2NrZXJTdGF0ZShzY3JvbGxDaGFpbmluZ0Jsb2Nr
ZXIpOwogICAgIH0KLSAgICAKKwogICAgIHJldHVybiBudWxscHRyOwogfQogCkBAIC04NzIsMTAg
Kzg4MCwxMSBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6ZGV0ZXJtaW5lV2hlZWxFdmVudFRhcmdldChj
b25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbgogICAgIGlmICghdmlldykKICAgICAg
ICAgcmV0dXJuOwogCisgICAgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIGJsb2NrZXIgPSBtX3Njcm9s
bENoYWluaW5nQmxvY2tlcjsKICAgICBpZiAoZXZlbnRUYXJnZXRJc1BsYXRmb3JtV2lkZ2V0KHdo
ZWVsRXZlbnRUYXJnZXQuZ2V0KCkpKQogICAgICAgICBzY3JvbGxhYmxlQXJlYSA9IHNjcm9sbGFi
bGVBcmVhRm9yRXZlbnRUYXJnZXQod2hlZWxFdmVudFRhcmdldC5nZXQoKSk7CiAgICAgZWxzZSB7
Ci0gICAgICAgIGF1dG8qIHNjcm9sbGFibGVDb250YWluZXIgPSBmaW5kRW5jbG9zaW5nU2Nyb2xs
YWJsZUNvbnRhaW5lcih3aGVlbEV2ZW50VGFyZ2V0LmdldCgpLCB3aGVlbEV2ZW50KTsKKyAgICAg
ICAgYXV0byogc2Nyb2xsYWJsZUNvbnRhaW5lciA9IGZpbmRFbmNsb3NpbmdTY3JvbGxhYmxlQ29u
dGFpbmVyKHdoZWVsRXZlbnRUYXJnZXQuZ2V0KCksIHdoZWVsRXZlbnQsIGJsb2NrZXIpOwogICAg
ICAgICBpZiAoc2Nyb2xsYWJsZUNvbnRhaW5lcikKICAgICAgICAgICAgIHNjcm9sbGFibGVBcmVh
ID0gc2Nyb2xsYWJsZUFyZWFGb3JDb250YWluZXJOb2RlKCpzY3JvbGxhYmxlQ29udGFpbmVyKTsK
ICAgICAgICAgZWxzZQpAQCAtODkzLDYgKzkwMiw5IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpkZXRl
cm1pbmVXaGVlbEV2ZW50VGFyZ2V0KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVu
CiAgICAgaWYgKG1fZnJhbWUuaXNNYWluRnJhbWUoKSAmJiB3aGVlbEV2ZW50LmlzR2VzdHVyZVN0
YXJ0KCkpCiAgICAgICAgIHBhZ2UtPndoZWVsRXZlbnREZWx0YUZpbHRlcigpLT5iZWdpbkZpbHRl
cmluZ0RlbHRhcygpOwogCisgICAgLy8gV2hlbiB0aGUgbGFjaGVkIG5vZGUgaXMgZGV0ZXJtaW5l
ZCwgd2Ugc2hvdWxkIHVwZGF0ZSBtX3Njcm9sbENoYWluaW5nQmxvY2tlciBoZXJlLCBmb3IgaXQg
d29uJ3QgcGFzcyB0aGUgdHJlZSBpbiBFdmVudEhhbmRsZXI6OmRlZmF1bHRXaGVlbEV2ZW50SGFu
ZGxlci4KKyAgICAvLyBPdGhlcndpc2UsIG1fc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIHNob3VsZCBi
ZSB1cGRhdGUgaW4gRXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50SW5BcHByb3ByaWF0ZUVu
Y2xvc2luZ0JveC4KKyAgICB1cGRhdGVTY3JvbGxDaGFpbmluZ0Jsb2NrZXIoYmxvY2tlcik7CiAg
ICAgcGFnZS0+c2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyKCkudXBkYXRlQW5kRmV0Y2hMYXRjaGlu
Z1N0YXRlRm9yRnJhbWUobV9mcmFtZSwgd2hlZWxFdmVudCwgd2hlZWxFdmVudFRhcmdldCwgc2Ny
b2xsYWJsZUFyZWEsIGlzT3ZlcldpZGdldCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGxhdGZvcm1XaGVlbEV2ZW50LmgKaW5kZXggZDcxNjkzNDZhMjQwMjNjMmE0Nzg3YWUzNDU0
MGEzNzYwN2MwYTJkNS4uNjQxNzk3YTZmNDE4NzUzMzhjYTcxZWE3MzkxNjBkMTBiMDZmODhlNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50LmgKQEAgLTI2
LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgorI2lu
Y2x1ZGUgIkZsb2F0U2l6ZS5oIgogI2luY2x1ZGUgIkludFBvaW50LmgiCiAjaW5jbHVkZSAiUGxh
dGZvcm1FdmVudC5oIgogI2luY2x1ZGUgPHd0Zi9XaW5kb3dzRXh0cmFzLmg+CkBAIC0xNzQsNiAr
MTc1LDggQEAgcHVibGljOgogICAgIFBsYXRmb3JtV2hlZWxFdmVudChIV05ELCBXUEFSQU0sIExQ
QVJBTSwgYm9vbCBpc01vdXNlSFdoZWVsKTsKICNlbmRpZgogCisgICAgc3RhdGljIEZsb2F0U2l6
ZSB3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbChjb25zdCBGbG9hdFNpemUmKTsKKwog
cHJvdGVjdGVkOgogICAgIFBsYXRmb3JtV2hlZWxFdmVudEdyYW51bGFyaXR5IG1fZ3JhbnVsYXJp
dHkgeyBTY3JvbGxCeVBpeGVsV2hlZWxFdmVudCB9OwogICAgIGJvb2wgbV9kaXJlY3Rpb25JbnZl
cnRlZEZyb21EZXZpY2UgeyBmYWxzZSB9OwpAQCAtMjY0LDYgKzI2NywxOSBAQCBpbmxpbmUgRmxv
YXRQb2ludCBQbGF0Zm9ybVdoZWVsRXZlbnQ6OnN3aXBlVmVsb2NpdHkoKSBjb25zdAogCiAjZW5k
aWYgLy8gRU5BQkxFKEtJTkVUSUNfU0NST0xMSU5HKQogCitpbmxpbmUgRmxvYXRTaXplIFBsYXRm
b3JtV2hlZWxFdmVudDo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoY29uc3QgRmxv
YXRTaXplJiBkZWx0YSkKK3sKKyAgICBhdXRvIGRlbHRhWCA9IGRlbHRhLndpZHRoKCk7CisgICAg
YXV0byBkZWx0YVkgPSBkZWx0YS5oZWlnaHQoKTsKKworICAgIGlmIChmYWJzZihkZWx0YVkpID49
IGZhYnNmKGRlbHRhWCkpCisgICAgICAgIGRlbHRhWCA9IDA7CisgICAgZWxzZQorICAgICAgICBk
ZWx0YVkgPSAwOworCisgICAgcmV0dXJuIHsgZGVsdGFYLCBkZWx0YVkgfTsKK30KKwogV0VCQ09S
RV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNv
bnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpOwogV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIFdoZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHMp
OwogV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0
cmVhbSYsIEV2ZW50SGFuZGxpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsVHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFR5cGVzLmgK
aW5kZXggMGIxYzQwNTYzZThjYmI4MjJhOWZlYmE0YzBjNDY1ZjhhNTc0YTkzYi4uZjhmNzFjMmUx
ZmY3YjllNGQyZTc1NjllN2IxOTIxYjgyMjFmODRlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsVHlwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxUeXBlcy5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUg
IkZsb2F0UG9pbnQuaCIKKyNpbmNsdWRlICJGbG9hdFNpemUuaCIKICNpbmNsdWRlICJJbnRQb2lu
dC5oIgogI2luY2x1ZGUgPGNzdGRpbnQ+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KQEAg
LTI1OSw2ICsyNjAsMzQgQEAgZW51bSBjbGFzcyBTY3JvbGxTbmFwUG9pbnRTZWxlY3Rpb25NZXRo
b2QgOiB1aW50OF90IHsKICAgICBDbG9zZXN0LAogfTsKIAorc3RydWN0IFNjcm9sbENoYWluaW5n
QmxvY2tlciB7CisgICAgYm9vbCBibG9ja1ggeyBmYWxzZSB9OworICAgIGJvb2wgYmxvY2tZIHsg
ZmFsc2UgfTsKKworICAgIHN0YXRpYyBib29sIHNob3VsZEJsb2NrU2Nyb2xsQ2hhaW5pbmcoY29u
c3QgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyJiBibG9ja2VyLCBjb25zdCBGbG9hdFNpemUmIGJpYXNl
ZERlbHRhKQorICAgIHsKKyAgICAgICAgaWYgKChibG9ja2VyLmJsb2NrWCAmJiBibG9ja2VyLmJs
b2NrWSkKKyAgICAgICAgICAgIHx8IChibG9ja2VyLmJsb2NrWCAmJiAhYmlhc2VkRGVsdGEuaGVp
Z2h0KCkpCisgICAgICAgICAgICB8fCAoYmxvY2tlci5ibG9ja1kgJiYgIWJpYXNlZERlbHRhLndp
ZHRoKCkpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBmaWx0ZXJEZWx0YShjb25zdCBTY3JvbGxDaGFpbmlu
Z0Jsb2NrZXImIGJsb2NrZXIsIGNvbnN0IEZsb2F0U2l6ZSYgYmlhc2VkRGVsdGEsIEZsb2F0U2l6
ZSYgZmlsdGVyZWREZWx0YSkKKyAgICB7CisgICAgICAgIGlmIChibG9ja2VyLmJsb2NrWCkgewor
ICAgICAgICAgICAgZmlsdGVyZWREZWx0YS5zZXRXaWR0aCgwKTsKKyAgICAgICAgICAgIGlmICgh
Ymlhc2VkRGVsdGEuaGVpZ2h0KCkpCisgICAgICAgICAgICAgICAgZmlsdGVyZWREZWx0YS5zZXRI
ZWlnaHQoMCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGJsb2NrZXIuYmxvY2tZKSB7CisgICAg
ICAgICAgICBmaWx0ZXJlZERlbHRhLnNldEhlaWdodCgwKTsKKyAgICAgICAgICAgIGlmICghYmlh
c2VkRGVsdGEud2lkdGgoKSkKKyAgICAgICAgICAgICAgICBmaWx0ZXJlZERlbHRhLnNldFdpZHRo
KDApOworICAgICAgICB9CisgICAgfQorfTsKKwogdXNpbmcgU2Nyb2xsYmFyQ29udHJvbFN0YXRl
ID0gdW5zaWduZWQ7CiB1c2luZyBTY3JvbGxiYXJDb250cm9sUGFydE1hc2sgPSB1bnNpZ25lZDsK
IHVzaW5nIFNjcm9sbGluZ05vZGVJRCA9IHVpbnQ2NF90OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsYWJsZUFyZWEuY3BwCmluZGV4IDc5ZjllOTgwOThhOGRkY2EyYjQ5Y2U5NzdkMjE0
M2UxY2I2Y2FmODUuLmMwNDNjMGFjM2U5MTg1YjI5Y2NkZDA2Njg1Yzk4ZjY5ZDNiMjFjZmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKQEAgLTgwMyw2ICs4
MDMsMTIgQEAgdm9pZCBTY3JvbGxhYmxlQXJlYTo6Y29tcHV0ZVNjcm9sbGJhclZhbHVlQW5kT3Zl
cmhhbmcoZmxvYXQgY3VycmVudFBvc2l0aW9uLCBmbG8KICAgICB9CiB9CiAKK3ZvaWQgU2Nyb2xs
YWJsZUFyZWE6OnVwZGF0ZVNjcm9sbENoYWluaW5nQmxvY2tlclN0YXRlKFNjcm9sbENoYWluaW5n
QmxvY2tlciYgYmxvY2tlcikgY29uc3QKK3sKKyAgICBibG9ja2VyLmJsb2NrWCB8PSBob3Jpem9u
dGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgIT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpBdXRvOworICAg
IGJsb2NrZXIuYmxvY2tZIHw9IHZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgIT0gT3ZlcnNj
cm9sbEJlaGF2aW9yOjpBdXRvOworfQorCiBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJl
YW0mIHRzLCBjb25zdCBTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEpCiB7CiAgICAgdHMg
PDwgc2Nyb2xsYWJsZUFyZWEuZGVidWdEZXNjcmlwdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbGFibGVBcmVhLmgKaW5kZXggN2ViN2I1NDAyODI4NDBhYjdiNWYzMWZkZmE2YjJi
ZmQ1OGViMTlkYy4uOTg3N2NkNTEyYzVlZTg5MzA2YzUzN2U0ZWVlZTcyMjhjY2VhMmYwNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCkBAIC0xMTksNiArMTE5LDEw
IEBAIHB1YmxpYzoKICAgICBib29sIGNvbnN0cmFpbnNTY3JvbGxpbmdUb0NvbnRlbnRFZGdlKCkg
Y29uc3QgeyByZXR1cm4gbV9jb25zdHJhaW5zU2Nyb2xsaW5nVG9Db250ZW50RWRnZTsgfQogICAg
IHZvaWQgc2V0Q29uc3RyYWluc1Njcm9sbGluZ1RvQ29udGVudEVkZ2UoYm9vbCBjb25zdHJhaW5z
U2Nyb2xsaW5nVG9Db250ZW50RWRnZSkgeyBtX2NvbnN0cmFpbnNTY3JvbGxpbmdUb0NvbnRlbnRF
ZGdlID0gY29uc3RyYWluc1Njcm9sbGluZ1RvQ29udGVudEVkZ2U7IH0KIAorICAgIHZpcnR1YWwg
T3ZlcnNjcm9sbEJlaGF2aW9yIGhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdCB7
IHJldHVybiBPdmVyc2Nyb2xsQmVoYXZpb3I6OkF1dG87IH0KKyAgICB2aXJ0dWFsIE92ZXJzY3Jv
bGxCZWhhdmlvciB2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpIGNvbnN0IHsgcmV0dXJuIE92
ZXJzY3JvbGxCZWhhdmlvcjo6QXV0bzsgfQorICAgIHZvaWQgdXBkYXRlU2Nyb2xsQ2hhaW5pbmdC
bG9ja2VyU3RhdGUoU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyJikgY29uc3Q7CisKICAgICB2b2lkIHNl
dFZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eShTY3JvbGxFbGFzdGljaXR5IHNjcm9sbEVsYXN0aWNp
dHkpIHsgbV92ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkgPSBzY3JvbGxFbGFzdGljaXR5OyB9CiAg
ICAgU2Nyb2xsRWxhc3RpY2l0eSB2ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkoKSBjb25zdCB7IHJl
dHVybiBzdGF0aWNfY2FzdDxTY3JvbGxFbGFzdGljaXR5PihtX3ZlcnRpY2FsU2Nyb2xsRWxhc3Rp
Y2l0eSk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9s
bEFuaW1hdG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1h
dG9yTWFjLm1tCmluZGV4IDhlMDBiZDcxOGJmNTBiNjM0ZDhiMjk2NjY4Y2NkZWI1YmM4NDI5ZWUu
LjAzMWMzZTc0NmU5MzJmMjhkZmNiMTI2MWQyMDUwNDY0MWViNjVhZjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0KQEAgLTEyMjcsOSAr
MTIyNyw5IEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3JNYWM6OmhhbmRsZVdoZWVsRXZlbnRQaGFzZShQ
bGF0Zm9ybVdoZWVsRXZlbnRQaGFzZSBwaGFzZSkKIGJvb2wgU2Nyb2xsQW5pbWF0b3JNYWM6OnNo
b3VsZEZvcndhcmRXaGVlbEV2ZW50c1RvUGFyZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYg
d2hlZWxFdmVudCkgY29uc3QKIHsKICAgICBpZiAoc3RkOjphYnMod2hlZWxFdmVudC5kZWx0YVko
KSkgPj0gc3RkOjphYnMod2hlZWxFdmVudC5kZWx0YVgoKSkpCi0gICAgICAgIHJldHVybiAhYWxs
b3dzVmVydGljYWxTdHJldGNoaW5nKHdoZWVsRXZlbnQpOworICAgICAgICByZXR1cm4gbV9zY3Jv
bGxhYmxlQXJlYS52ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpID09IE92ZXJzY3JvbGxCZWhh
dmlvcjo6QXV0byAmJiAhYWxsb3dzVmVydGljYWxTdHJldGNoaW5nKHdoZWVsRXZlbnQpOwogCi0g
ICAgcmV0dXJuICFhbGxvd3NIb3Jpem9udGFsU3RyZXRjaGluZyh3aGVlbEV2ZW50KTsKKyAgICBy
ZXR1cm4gbV9zY3JvbGxhYmxlQXJlYS5ob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgPT0g
T3ZlcnNjcm9sbEJlaGF2aW9yOjpBdXRvICYmICFhbGxvd3NIb3Jpem9udGFsU3RyZXRjaGluZyh3
aGVlbEV2ZW50KTsKIH0KICAgICAKIGJvb2wgU2Nyb2xsQW5pbWF0b3JNYWM6OmhhbmRsZVdoZWVs
RXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50KQpAQCAtMTI5NCw2ICsx
Mjk0LDkgQEAgc3RhdGljIGJvb2wgZ2VzdHVyZVNob3VsZEJlZ2luU25hcChjb25zdCBQbGF0Zm9y
bVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIFNjcm9sbEUKIAogYm9vbCBTY3JvbGxBbmltYXRvck1h
Yzo6YWxsb3dzVmVydGljYWxTdHJldGNoaW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hl
ZWxFdmVudCkgY29uc3QKIHsKKyAgICBpZiAobV9zY3JvbGxhYmxlQXJlYS52ZXJ0aWNhbE92ZXJz
Y3JvbGxCZWhhdmlvcigpID09IE92ZXJzY3JvbGxCZWhhdmlvcjo6Tm9uZSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCiAgICAgc3dpdGNoIChtX3Njcm9sbGFibGVBcmVhLnZlcnRpY2FsU2Nyb2xs
RWxhc3RpY2l0eSgpKSB7CiAgICAgY2FzZSBTY3JvbGxFbGFzdGljaXR5QXV0b21hdGljOiB7CiAg
ICAgICAgIFNjcm9sbGJhciogaFNjcm9sbGVyID0gbV9zY3JvbGxhYmxlQXJlYS5ob3Jpem9udGFs
U2Nyb2xsYmFyKCk7CkBAIC0xMzE4LDYgKzEzMjEsOSBAQCBib29sIFNjcm9sbEFuaW1hdG9yTWFj
OjphbGxvd3NWZXJ0aWNhbFN0cmV0Y2hpbmcoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVl
bAogCiBib29sIFNjcm9sbEFuaW1hdG9yTWFjOjphbGxvd3NIb3Jpem9udGFsU3RyZXRjaGluZyhj
b25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpIGNvbnN0CiB7CisgICAgaWYgKG1f
c2Nyb2xsYWJsZUFyZWEuaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpID09IE92ZXJzY3Jv
bGxCZWhhdmlvcjo6Tm9uZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgc3dpdGNoICht
X3Njcm9sbGFibGVBcmVhLmhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5KCkpIHsKICAgICBjYXNl
IFNjcm9sbEVsYXN0aWNpdHlBdXRvbWF0aWM6IHsKICAgICAgICAgU2Nyb2xsYmFyKiBoU2Nyb2xs
ZXIgPSBtX3Njcm9sbGFibGVBcmVhLmhvcml6b250YWxTY3JvbGxiYXIoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxDb250cm9sbGVyLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbENvbnRyb2xsZXIubW0KaW5kZXggMGRlODFlMDZm
NjM4ZTljNzcwZDg3NDg2NTNiMGM1ZmU2MTFjNGVlYS4uNjM0ZmI3OTBlMDg2ZmFlZDk1ODFkOGY5
NzlkOGEyY2QzMjUyODRlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1Njcm9sbENvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Nj
cm9sbENvbnRyb2xsZXIubW0KQEAgLTMxMywxOSArMzEzLDYgQEAgYm9vbCBTY3JvbGxDb250cm9s
bGVyOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVu
dCkKICAgICByZXR1cm4gaGFuZGxlZDsKIH0KIAotRmxvYXRTaXplIFNjcm9sbENvbnRyb2xsZXI6
OndoZWVsRGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRpY2FsKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVu
dCYgd2hlZWxFdmVudCkKLXsKLSAgICBhdXRvIGRlbHRhWCA9IHdoZWVsRXZlbnQuZGVsdGFYKCk7
Ci0gICAgYXV0byBkZWx0YVkgPSB3aGVlbEV2ZW50LmRlbHRhWSgpOwotCi0gICAgaWYgKGZhYnNm
KGRlbHRhWSkgPj0gZmFic2YoZGVsdGFYKSkKLSAgICAgICAgZGVsdGFYID0gMDsKLSAgICBlbHNl
Ci0gICAgICAgIGRlbHRhWSA9IDA7Ci0KLSAgICByZXR1cm4geyBkZWx0YVgsIGRlbHRhWSB9Owot
fQotCiBPcHRpb25hbDxTY3JvbGxEaXJlY3Rpb24+IFNjcm9sbENvbnRyb2xsZXI6OmRpcmVjdGlv
bkZyb21FdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIE9wdGlvbmFs
PFNjcm9sbEV2ZW50QXhpcz4gYXhpcywgV2hlZWxBeGlzQmlhcyBiaWFzKQogewogICAgIC8vIEZJ
WE1FOiBJdCdzIGltcG9zc2libGUgdG8gaW5mZXIgZGlyZWN0aW9uIGZyb20gYSBzaW5nbGUgZXZl
bnQsIHNpbmNlIHRoZSBzdGFydCBvZiBhIGdlc3R1cmUgaXMgZWl0aGVyIHplcm8gb3IKQEAgLTMz
Myw3ICszMjAsNyBAQCBPcHRpb25hbDxTY3JvbGxEaXJlY3Rpb24+IFNjcm9sbENvbnRyb2xsZXI6
OmRpcmVjdGlvbkZyb21FdmVudChjb25zdCBQbGF0Zm9ybVdoZQogCiAgICAgYXV0byB3aGVlbERl
bHRhID0gRmxvYXRTaXplIHsgd2hlZWxFdmVudC5kZWx0YVgoKSwgd2hlZWxFdmVudC5kZWx0YVko
KSB9OwogICAgIGlmIChiaWFzID09IFdoZWVsQXhpc0JpYXM6OlZlcnRpY2FsKQotICAgICAgICB3
aGVlbERlbHRhID0gd2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwod2hlZWxFdmVudCk7
CisgICAgICAgIHdoZWVsRGVsdGEgPSBQbGF0Zm9ybVdoZWVsRXZlbnQ6OndoZWVsRGVsdGFCaWFz
aW5nVG93YXJkc1ZlcnRpY2FsKHdoZWVsRXZlbnQuZGVsdGEoKSk7CiAKICAgICBpZiAoYXhpcykg
ewogICAgICAgICBzd2l0Y2ggKGF4aXMudmFsdWUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuY3BwCmluZGV4IGI2Yjdh
YjBhMjEyNTI0ZWZlODdhYzM3ZWFkY2JlMTIwMDdjYzVlNjUuLmFiMTkwMzEyNzgwNWM5MzEwNmZh
ZmY5MmExNzA3NWU2MWRmOGIyZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5jcHAKQEAgLTE4MTYsNCArMTgxNiwyMiBA
QCBTdHJpbmcgUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6ZGVidWdEZXNjcmlwdGlvbigpIGNv
bnN0CiAgICAgcmV0dXJuIG1fbGF5ZXIuZGVidWdEZXNjcmlwdGlvbigpOwogfQogCitPdmVyc2Ny
b2xsQmVoYXZpb3IgUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6aG9yaXpvbnRhbE92ZXJzY3Jv
bGxCZWhhdmlvcigpIGNvbnN0Cit7CisgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlID0gbV9s
YXllci5yZW5kZXJlcigpLnN0eWxlKCk7CisgICAgLy8gQW4gZWxlbWVudCB0aGF0IGlzIG5vdCBz
Y3JvbGwgY29udGFpbmVyIG11c3QgYWNjZXB0IGJ1dCBpZ25vcmUgdGhlIHZhbHVlcyBvZiB0aGlz
IHByb3BlcnR5LgorICAgIGlmIChtX2xheWVyLnJlbmRlckJveCgpICYmIG1fbGF5ZXIucmVuZGVy
Qm94KCktPmNhbkJlU2Nyb2xsZWRBbmRIYXNTY3JvbGxhYmxlQXJlYSgpKQorICAgICAgICByZXR1
cm4gc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWCgpOworICAgIHJldHVybiBTY3JvbGxhYmxlQXJl
YTo6aG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpOworfQorCitPdmVyc2Nyb2xsQmVoYXZp
b3IgUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6dmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3Io
KSBjb25zdAoreworICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9IG1fbGF5ZXIucmVuZGVy
ZXIoKS5zdHlsZSgpOworICAgIC8vIEFuIGVsZW1lbnQgdGhhdCBpcyBub3Qgc2Nyb2xsIGNvbnRh
aW5lciBtdXN0IGFjY2VwdCBidXQgaWdub3JlIHRoZSB2YWx1ZXMgb2YgdGhpcyBwcm9wZXJ0eS4K
KyAgICBpZiAobV9sYXllci5yZW5kZXJCb3goKSAmJiBtX2xheWVyLnJlbmRlckJveCgpLT5jYW5C
ZVNjcm9sbGVkQW5kSGFzU2Nyb2xsYWJsZUFyZWEoKSkKKyAgICAgICAgcmV0dXJuIHN0eWxlLm92
ZXJzY3JvbGxCZWhhdmlvclkoKTsKKyAgICByZXR1cm4gU2Nyb2xsYWJsZUFyZWE6OnZlcnRpY2Fs
T3ZlcnNjcm9sbEJlaGF2aW9yKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVh
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5o
CmluZGV4IGRlMjZiMzA0ODk2NjY2YTVjZGQ2NGI1MGY3NmQ2ZDUxZWQ2M2VhZDMuLjUzOGE3OTRj
MDYzOTEzZDQwNjYwZGFjZWU5NTllNjMxMGQ2MzYzZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuaApAQCAtMTI5LDYgKzEy
OSw5IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgc2Nyb2xsKFNjcm9sbERpcmVjdGlvbiwgU2Nyb2xs
R3JhbnVsYXJpdHksIGZsb2F0IG11bHRpcGxpZXIgPSAxKTsKIAorICAgIE92ZXJzY3JvbGxCZWhh
dmlvciBob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29uc3QgZmluYWw7CisgICAgT3Zl
cnNjcm9sbEJlaGF2aW9yIHZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29uc3QgZmluYWw7
CisKIHB1YmxpYzoKICAgICAvLyBBbGwgbWV0aG9kcyBpbiB0aGlzIHNlY3Rpb24gb3ZlcnJpZGUg
U2Nyb2xsYWJsZWFBcmVhIG1ldGhvZHMgKGZpbmFsKS4KICAgICB2b2lkIGF2YWlsYWJsZUNvbnRl
bnRTaXplQ2hhbmdlZChBdmFpbGFibGVTaXplQ2hhbmdlUmVhc29uKSBmaW5hbDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0gYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IGRiOTZiNDA0
ODA2MDM4N2E5NDM2MzQ4ZmQyZDM5MGM0NDg4MWUzODEuLmE1NjQ5OGVkMTFkZDgxMjEwZDJhMWI2
MzNjOTc4ZjEzZTkxMjg5MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJIVE1MVmlldy5tbQpAQCAtNDA4NSw2ICs0MDg1LDggQEAgc3RhdGljIEJPT0wgY3VycmVu
dFNjcm9sbElzQmxpdChOU1ZpZXcgKmNsaXBWaWV3KQogICAgIGF1dG8qIGZyYW1lID0gY29yZShb
c2VsZiBfZnJhbWVdKTsKICAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+ZXZlbnRIYW5kbGVyKCku
d2hlZWxFdmVudChldmVudCkpIHsKICNpZiBQTEFURk9STShNQUMpCisgICAgICAgIC8vIEZJWE1F
OiBOZWVkIHRvIGZpbmQgYSB3YXkgdG8gYmxvY2sgdGhlIGNyb3NzLWZyYW1lIHNjcm9sbCBjaGFp
bmluZyBpbiBXSzEuCisgICAgICAgIC8vIFdlIGNhbiBub3QganVzdCBza2lwIHRoZSBzY3JvbGwg
aGVyZSwgaXQgbm90IG9ubHkgYmxvY2tzIHNjcm9sbCBjaGFpbmluZyBidXQgYWxzbyBibG9ja3Mg
dGhlIHNjcm9sbCBvbiBjdXJyZW50IHZpZXcuCiAgICAgICAgIFtzdXBlciBzY3JvbGxXaGVlbDpl
dmVudF07CiAjZW5kaWYKICAgICB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNDAyNjIwNmI1NGMzNmQzNGExYTM2MTZjZjU4
ZGRmODcyMDBkZmEyNS4uYjFiY2VmNjI0OTY0ODdhMDc5ODUzNGRlYmViMzMwZThmN2UxMDE2MSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDIxLTAzLTA5ICBDYXRoaWUgQ2hlbiAgPGNhdGhpZWNo
ZW5AaWdhbGlhLmNvbT4KKworICAgICAgICBTdXBwb3J0IENTUyBvdmVyc2Nyb2xsLWJlaGF2aW9y
IGZvciBzeW5jaHJvbm91cyBzY3JvbGwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyMjk2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEJhc2VkIG9uIEZyw6lkw6lyaWMgV2FuZydzIHBhdGNoLgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggdXNlcyBVSUhlbHBlci5tb3VzZVdoZWVsU2Nyb2xsQXQgdG8gdGVzdCBv
dmVyc2Nyb2xsLWJlaGF2aW9yIG9uIG92ZXJmbG93IGVsZW1lbnRzIGFuZCBpZnJhbWVzLgorICAg
ICAgICBCZWNhdXNlIFVJSGVscGVyLm1vdXNlV2hlZWxTY3JvbGxBdCBpcyBub3Qgc3VwcG9ydGVk
IG9uIEdUSyBhbmQgV1BFLCBzbyB3ZSB3aWxsIGdldCB0aW1lb3V0IGZhaWx1cmVzIG9uIGl0Lgor
ICAgICAgICBJdCBvbmx5IHRlc3QgdGhlIGJlaGF2aW9yIG9uIHN5bmNocm9ub3Ugc2Nyb2xsLCBz
byB0aGUgdGVzdHMgYXJlIHNraXBwZWQgb24gaU9TLgorICAgICAgICBGb3IgV0sxLCB0aGUgaWZy
YW1lIHRlc3RzIGZhaWwgZm9yIGxhY2sgb2YgaW50ZXJmYWNlcyB0byBjb250cm9sIHNjcm9sbCBj
aGFpbmluZyBpbiBXZWJIVE1MVmlldy4KKworICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL292ZXJz
Y3JvbGwtYmVoYXZpb3ItZWxlbWVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZp
b3ItaWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL292ZXJzY3Jv
bGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1l
bGVtZW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwt
YmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGZhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFt
ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9yZXNvdXJjZXMvb3ZlcnNj
cm9sbC1iZWhhdmlvci1zdXBwb3J0LmpzOiBBZGRlZC4KKyAgICAgICAgKGdldERlbHRhcyk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZv
cm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMS9UZXN0
RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL3dwZS9UZXN0RXhwZWN0YXRpb25zOgor
CisyMDIxLTAyLTA0ICBSb2IgQnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CisKKyAgICAgICAgTWFr
ZSBzaG91bGRDb21wdXRlTG9naWNhbFdpZHRoRnJvbUFzcGVjdFJhdGlvQW5kSW5zZXRzIHdyaXRp
bmcgbW9kZSBhd2FyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjIxMzI4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTWFudWVsIFJlZ28gQ2FzYXNub3Zh
cy4KKworICAgICAgICBFbmFibGUgc29tZSB0ZXN0cyB0aGF0IHBhc3Mgbm93LgorCisgICAgICAg
ICogVGVzdEV4cGVjdGF0aW9uczoKKwogMjAyMS0wMy0wNyAgTGF1cm8gTW91cmEgIDxsbW91cmFA
aWdhbGlhLmNvbT4KIAogICAgICAgICBbR0xJQl0gR2FyZGVuaW5nIGFuZCB1cGRhdGluZyBiYXNl
bGluZXMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwt
YmVoYXZpb3ItZWxlbWVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGlu
Zy9vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI3
MTUwZmY2MGI1ZGJkZDBiNGE3YWM2ZjgzZmI1NmY1N2NkMmNkODIKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjAgQEAKKworUEFTUyBFbGVtZW50IGhvcml6b250YWwg
c2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIGF1dG8uCitQQVNTIEVs
ZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRv
IGF1dG8uCitQQVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3Jv
bGwtYmVoYXZpb3I6IGNvbnRhaW4gYXV0by4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwg
dGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gYXV0by4KK1BBU1MgRWxlbWVu
dCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBh
dXRvLgorUEFTUyBFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1i
ZWhhdmlvcjogbm9uZSBhdXRvLgorUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qg
d2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIGNvbnRhaW4uCitQQVNTIEVsZW1lbnQgdmVy
dGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIGNvbnRhaW4u
CitQQVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVo
YXZpb3I6IGNvbnRhaW4gY29udGFpbi4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVz
dCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gY29udGFpbi4KK1BBU1MgRWxlbWVu
dCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBj
b250YWluLgorUEFTUyBFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9s
bC1iZWhhdmlvcjogbm9uZSBjb250YWluLgorUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xs
IHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIG5vbmUuCitQQVNTIEVsZW1lbnQg
dmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIG5vbmUu
CitQQVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVo
YXZpb3I6IGNvbnRhaW4gbm9uZS4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3
aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gbm9uZS4KK1BBU1MgRWxlbWVudCBob3Jp
em9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBub25lLgor
UEFTUyBFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlv
cjogbm9uZSBub25lLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9v
dmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xs
aW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmExZjQ4MTJk
YzhjNjg1MzRlMDBiNTNmZDZmZTY3YWZhZDIzMjA1ZDUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQuaHRtbApA
QCAtMCwwICsxLDg3IEBACis8IWRvY3R5cGUgaHRtbD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvb3ZlcnNjcm9sbC1iZWhhdmlvci1zdXBwb3J0LmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0i
aGVscCIgaHJlZj0iaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1vdmVyc2Nyb2xsLWJlaGF2
aW9yIj4KKzxzdHlsZT4KKyAgICAuc2Nyb2xsaW5nIHsKKyAgICAgICAgb3ZlcmZsb3c6IHNjcm9s
bDsKKyAgICB9CisgICAgLnNjcm9sbENvbnRlbnQgeworICAgICAgICB3aWR0aDogMzAwcHg7Cisg
ICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgfQorICAgICNyb290IHsKKyAgICAgICAgd2lkdGg6
IDIwMHB4OworICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAgIH0KKyAgICAjc2Nyb2xsZXIgewor
ICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgfQorPC9z
dHlsZT4KKzxkaXYgaWQ9J3Jvb3QnIGNsYXNzPSJzY3JvbGxpbmciPgorICAgIDxkaXYgaWQ9J3Nj
cm9sbGVyJyBjbGFzcz0ic2Nyb2xsaW5nIj4KKyAgICAgICAgPGRpdiBjbGFzcz0ic2Nyb2xsQ29u
dGVudCI+PC9kaXY+CisgICAgPC9kaXY+CisgICAgPGRpdiBjbGFzcz0ic2Nyb2xsQ29udGVudCI+
PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4KK2NvbnN0IHJvb3QgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgncm9vdCcpOworY29uc3Qgc2Nyb2xsZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnc2Nyb2xsZXInKTsKK3ZhciBvdmVyc2Nyb2xsRGF0YXMgPSBbWyJhdXRvIiwgImF1dG8iLCB0
cnVlLCB0cnVlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFsiY29udGFpbiIsICJhdXRvIiwg
ZmFsc2UsIHRydWVdLAorICAgICAgICAgICAgICAgICAgICAgICAgWyJub25lIiwgImF1dG8iLCBm
YWxzZSwgdHJ1ZV0sCisgICAgICAgICAgICAgICAgICAgICAgICBbImF1dG8iLCAiY29udGFpbiIs
IHRydWUsIGZhbHNlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFsiY29udGFpbiIsICJjb250
YWluIiwgZmFsc2UsIGZhbHNlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFsibm9uZSIsICJj
b250YWluIiwgZmFsc2UsIGZhbHNlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFsiYXV0byIs
ICJub25lIiwgdHJ1ZSwgZmFsc2VdLAorICAgICAgICAgICAgICAgICAgICAgICAgWyJjb250YWlu
IiwgIm5vbmUiLCBmYWxzZSwgZmFsc2VdLAorICAgICAgICAgICAgICAgICAgICAgICAgWyJub25l
IiwgIm5vbmUiLCBmYWxzZSwgZmFsc2VdXTsKKworZnVuY3Rpb24gcmVzZXRUZXN0KCkgeworICAg
IC8vIFRyeSB2YXJpb3VzIG1ldGhvZHMgdG8gZW5zdXJlIHRoZSBlbGVtZW50IHBvc2l0aW9uIGlz
IHJlc2V0IGltbWVkaWF0ZWx5LgorICAgIHNjcm9sbGVyLnNjcm9sbExlZnQgPSAzMDA7CisgICAg
c2Nyb2xsZXIuc2Nyb2xsVG9wID0gMzAwOworICAgIHNjcm9sbGVyLnNjcm9sbFRvKDMwMCwgMzAw
KTsKKworICAgIHJvb3Quc2Nyb2xsTGVmdCA9IDA7CisgICAgcm9vdC5zY3JvbGxUb3AgPSAwOwor
ICAgIHJvb3Quc2Nyb2xsVG8oMCwgMCk7Cit9CisKK2Z1bmN0aW9uIHN0YXJ0VGVzdCgpIHsKKyAg
ICBvdmVyc2Nyb2xsRGF0YXMuZm9yRWFjaCgoW292ZXJzY3JvbGxYLCBvdmVyc2Nyb2xsWSwgcHJv
cGFnYXRlWCwgcHJvcGFnYXRlWV0pID0+IHsKKyAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsK
KyAgICAgICAgICAgIHJlc2V0VGVzdCgpOworICAgICAgICAgICAgc2Nyb2xsZXIuc3R5bGUub3Zl
cnNjcm9sbEJlaGF2aW9yWCA9IG92ZXJzY3JvbGxYOworICAgICAgICAgICAgc2Nyb2xsZXIuc3R5
bGUub3ZlcnNjcm9sbEJlaGF2aW9yWSA9IG92ZXJzY3JvbGxZOworCisgICAgICAgICAgICB2YXIg
eCA9IHNjcm9sbGVyLmNsaWVudFdpZHRoIC8gMjsKKyAgICAgICAgICAgIHZhciB5ID0gc2Nyb2xs
ZXIuY2xpZW50SGVpZ2h0IC8gMjsKKyAgICAgICAgICAgIHZhciBkZWx0YSA9IGdldERlbHRhcygi
cmlnaHQiKTsKKyAgICAgICAgICAgIHJldHVybiBVSUhlbHBlci5tb3VzZVdoZWVsU2Nyb2xsQXQo
eCwgeSwgZGVsdGEuWCwgZGVsdGEuWSwgZGVsdGEuWCwgZGVsdGEuWSkudGhlbigoKSA9PiB7Cisg
ICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbExlZnQgPiAwLCBwcm9wYWdh
dGVYLCAnQ29udGludWUgdXAgdGhlIGhvcml6b250YWwgc2Nyb2xsIGNoYWluaW5nJyk7CisgICAg
ICAgICAgICB9KTsKKyAgICAgICAgfSwgJ0VsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3
aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6ICcgKyBvdmVyc2Nyb2xsWCArICcgJyArIG92ZXJzY3Jv
bGxZICsgJy4nKTsKKworICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgICAgICAgICAg
cmVzZXRUZXN0KCk7CisgICAgICAgICAgICBzY3JvbGxlci5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZp
b3JYID0gb3ZlcnNjcm9sbFg7CisgICAgICAgICAgICBzY3JvbGxlci5zdHlsZS5vdmVyc2Nyb2xs
QmVoYXZpb3JZID0gb3ZlcnNjcm9sbFk7CisKKyAgICAgICAgICAgIHZhciB4ID0gc2Nyb2xsZXIu
Y2xpZW50V2lkdGggLyAyOworICAgICAgICAgICAgdmFyIHkgPSBzY3JvbGxlci5jbGllbnRIZWln
aHQgLyAyOworICAgICAgICAgICAgdmFyIGRlbHRhID0gZ2V0RGVsdGFzKCJkb3duIik7CisgICAg
ICAgICAgICByZXR1cm4gVUlIZWxwZXIubW91c2VXaGVlbFNjcm9sbEF0KHgsIHksIGRlbHRhLlgs
IGRlbHRhLlksIGRlbHRhLlgsIGRlbHRhLlkpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAg
IGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxUb3AgPiAwLCBwcm9wYWdhdGVZLCAnQ29udGludWUg
dXAgdGhlIHZlcnRpY2FsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAgICAgICAgfSk7CisgICAg
ICAgIH0sICdFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhh
dmlvcjogJyArIG92ZXJzY3JvbGxYICsgJyAnICsgb3ZlcnNjcm9sbFkgKyAnLicpOworICAgIH0p
OworfQorCithZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgc3RhcnRUZXN0KTsKKzwvc2NyaXB0Pgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
c2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi45MDBhMGI3ZDkwNWI4N2MxZGI3NjI2OTRmZDAwNjM4ZjE5NzY5NTM3
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9s
bC1iZWhhdmlvci1pZnJhbWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjEgQEAKKworCitQQVNT
IElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjog
YXV0byBhdXRvLgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Ny
b2xsLWJlaGF2aW9yOiBhdXRvIGF1dG8uCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0
ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBhdXRvLgorUEFTUyBJZnJhbWUg
dmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGF1
dG8uCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1i
ZWhhdmlvcjogbm9uZSBhdXRvLgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0
aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIGF1dG8uCitQQVNTIElmcmFtZSBob3Jpem9udGFs
IHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBjb250YWluLgorUEFT
UyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBh
dXRvIGNvbnRhaW4uCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3Zl
cnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBjb250YWluLgorUEFTUyBJZnJhbWUgdmVydGljYWwg
c2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGNvbnRhaW4uCitQ
QVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlv
cjogbm9uZSBjb250YWluLgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBv
dmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIGNvbnRhaW4uCitQQVNTIElmcmFtZSBob3Jpem9udGFs
IHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBub25lLgorUEFTUyBJ
ZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRv
IG5vbmUuCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9s
bC1iZWhhdmlvcjogY29udGFpbiBub25lLgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRl
c3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIG5vbmUuCitQQVNTIElmcmFtZSBo
b3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBub25l
LgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2
aW9yOiBub25lIG5vbmUuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5n
L292ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9s
bGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk1OWFlMDgw
MDAzZGZhZGE2MmJiMWMyNDQwYTVhOTQ4M2VjYmVmODUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS5odG1sCkBA
IC0wLDAgKzEsODkgQEAKKzwhZG9jdHlwZSBodG1sPgorCis8c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNl
cy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXN1cHBvcnQuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJo
ZWxwIiBocmVmPSJodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLW92ZXJzY3JvbGwtYmVoYXZp
b3IiPgorPHN0eWxlPgorICAgIC5zY3JvbGxpbmcgeworICAgICAgICBvdmVyZmxvdzogc2Nyb2xs
OworICAgIH0KKyAgICAuc2Nyb2xsQ29udGVudCB7CisgICAgICAgIHdpZHRoOiAzMDBweDsKKyAg
ICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50
KDEzNWRlZywgcmVkLCBibHVlKTsKKyAgICB9CisgICAgI3Jvb3QgeworICAgICAgICB3aWR0aDog
MjAwcHg7CisgICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgfQorICAgICNzY3JvbGxlciB7Cisg
ICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgICAgb3Zl
cnNjcm9sbC1iZWhhdmlvci15OiBhdXRvOworICAgIH0KKzwvc3R5bGU+Cis8ZGl2IGlkPSdyb290
JyBjbGFzcz0ic2Nyb2xsaW5nIj4KKyAgICA8aWZyYW1lIGlkPSdzY3JvbGxlcicgc3JjZG9jPSI8
aHRtbD48ZGl2IHN0eWxlPSd3aWR0aDogMzAwcHg7IGhlaWdodDogMzAwcHg7Jz48L2Rpdj48L2h0
bWw+CisgICAgICAgICI+PC9pZnJhbWU+CisgICAgPGRpdiBjbGFzcz0ic2Nyb2xsQ29udGVudCI+
PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4KKyAgICBjb25zdCByb290ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ3Jvb3QnKTsKKyAgICBjb25zdCBzY3JvbGxlciA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdzY3JvbGxlcicpOworICAgIHZhciBvdmVyc2Nyb2xsRGF0YXMgPSBbWyJhdXRv
IiwgImF1dG8iLCB0cnVlLCB0cnVlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImNv
bnRhaW4iLCAiYXV0byIsIGZhbHNlLCB0cnVlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBbIm5vbmUiLCAiYXV0byIsIGZhbHNlLCB0cnVlXSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBbImF1dG8iLCAiY29udGFpbiIsIHRydWUsIGZhbHNlXSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBbImNvbnRhaW4iLCAiY29udGFpbiIsIGZhbHNlLCBmYWxzZV0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgWyJub25lIiwgImNvbnRhaW4iLCBmYWxzZSwgZmFsc2VdLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiYXV0byIsICJub25lIiwgdHJ1ZSwgZmFsc2Vd
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiY29udGFpbiIsICJub25lIiwgZmFsc2Us
IGZhbHNlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIm5vbmUiLCAibm9uZSIsIGZh
bHNlLCBmYWxzZV1dOworICAgIGZ1bmN0aW9uIHJlc2V0VGVzdCgpIHsKKyAgICAgICAgLy8gVHJ5
IHZhcmlvdXMgbWV0aG9kcyB0byBlbnN1cmUgdGhlIGVsZW1lbnQgcG9zaXRpb24gaXMgcmVzZXQg
aW1tZWRpYXRlbHkuCisgICAgICAgIHNjcm9sbGVyLmNvbnRlbnRXaW5kb3cuc2Nyb2xsWCA9IDMw
MDsKKyAgICAgICAgc2Nyb2xsZXIuY29udGVudFdpbmRvdy5zY3JvbGxZID0gMzAwOworICAgICAg
ICBzY3JvbGxlci5jb250ZW50V2luZG93LnNjcm9sbFRvKDMwMCwgMzAwKTsKKworICAgICAgICBy
b290LnNjcm9sbExlZnQgPSAwOworICAgICAgICByb290LnNjcm9sbFRvcCA9IDA7CisgICAgICAg
IHJvb3Quc2Nyb2xsVG8oMCwgMCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gb3ZlcnNjcm9sbEJl
aGF2aW9yVGVzdCgpIHsKKyAgICAgICAgb3ZlcnNjcm9sbERhdGFzLmZvckVhY2goKFtvdmVyc2Ny
b2xsWCwgb3ZlcnNjcm9sbFksIHByb3BhZ2F0ZVgsIHByb3BhZ2F0ZVldKSA9PiB7CisgICAgICAg
ICAgICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgICAgICAgICAgICAgIHJlc2V0VGVzdCgpOwor
ICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSBzY3JvbGxlci5jb250ZW50V2luZG93LmRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJodG1sIilbMF07CisgICAgICAgICAgICAgICAgdGFy
Z2V0LnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclggPSBvdmVyc2Nyb2xsWDsKKyAgICAgICAgICAg
ICAgICB0YXJnZXQuc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWSA9IG92ZXJzY3JvbGxZOworCisg
ICAgICAgICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAgICAg
ICAgICAgICAgdmFyIHkgPSBzY3JvbGxlci5jbGllbnRIZWlnaHQgLyAyOworICAgICAgICAgICAg
ICAgIHZhciBkZWx0YSA9IGdldERlbHRhcygicmlnaHQiKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gVUlIZWxwZXIubW91c2VXaGVlbFNjcm9sbEF0KHgsIHksIGRlbHRhLlgsIGRlbHRhLlksIGRl
bHRhLlgsIGRlbHRhLlkpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgICAgICBhc3NlcnRf
ZXF1YWxzKHJvb3Quc2Nyb2xsTGVmdCA+IDAsIHByb3BhZ2F0ZVgsICdDb250aW51ZSB1cCB0aGUg
aG9yaXpvbnRhbCBzY3JvbGwgY2hhaW5pbmcnKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgIH0sICdJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwt
YmVoYXZpb3I6ICcgKyBvdmVyc2Nyb2xsWCArICcgJyArIG92ZXJzY3JvbGxZICsgJy4nKTsKKwor
ICAgICAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAgICAgICByZXNldFRl
c3QoKTsKKyAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gc2Nyb2xsZXIuY29udGVudFdpbmRv
dy5kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaHRtbCIpWzBdOworICAgICAgICAgICAg
ICAgIHRhcmdldC5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JYID0gb3ZlcnNjcm9sbFg7CisgICAg
ICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclkgPSBvdmVyc2Nyb2xs
WTsKKworICAgICAgICAgICAgICAgIHZhciB4ID0gc2Nyb2xsZXIuY2xpZW50V2lkdGggLyAyOwor
ICAgICAgICAgICAgICAgIHZhciB5ID0gc2Nyb2xsZXIuY2xpZW50SGVpZ2h0IC8gMjsKKyAgICAg
ICAgICAgICAgICB2YXIgZGVsdGEgPSBnZXREZWx0YXMoImRvd24iKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gVUlIZWxwZXIubW91c2VXaGVlbFNjcm9sbEF0KHgsIHksIGRlbHRhLlgsIGRlbHRh
LlksIGRlbHRhLlgsIGRlbHRhLlkpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgICAgICBh
c3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsVG9wID4gMCwgcHJvcGFnYXRlWSwgJ0NvbnRpbnVlIHVw
IHRoZSB2ZXJ0aWNhbCBzY3JvbGwgY2hhaW5pbmcnKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAg
ICAgICAgICAgIH0sICdJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xs
LWJlaGF2aW9yOiAnICsgb3ZlcnNjcm9sbFggKyAnICcgKyBvdmVyc2Nyb2xsWSArICcuJyk7Cisg
ICAgICAgIH0pOworICAgIH0KKworICAgIHNjcm9sbGVyLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQi
LCBvdmVyc2Nyb2xsQmVoYXZpb3JUZXN0KTsKKzwvc2NyaXB0PgpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3Jv
bGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVu
dC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjM5NWI2NDg4ZDA4NzBiOTU2MWMwMjg2NzlkN2Ux
NWE0N2ZjZTZlOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5n
L292ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsNCBAQAorCitQQVNTIFVuc2Nyb2xsYWJsZSBlbGVtZW50IGhvcml6b250YWwgc2Ny
b2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLgorUEFTUyBVbnNjcm9sbGFi
bGUgZWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6
IG5vbmUuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3Jv
bGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
c2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mNDFiNzI4YzQyMWQ3NDc0ODU2ZmJiMjhlY2Y3NzkxZjRjMzAyMmYyCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhh
dmlvci11bnNjcm9sbGFibGUtZWxlbWVudC5odG1sCkBAIC0wLDAgKzEsNjcgQEAKKzwhZG9jdHlw
ZSBodG1sPgorCis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXN1
cHBvcnQuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL2RyYWZ0
cy5jc3N3Zy5vcmcvY3NzLW92ZXJzY3JvbGwtYmVoYXZpb3IiPgorPHN0eWxlPgorICAgIC5zY3Jv
bGxpbmcgeworICAgICAgICBvdmVyZmxvdzogc2Nyb2xsOworICAgIH0KKyAgICAuc2Nyb2xsQ29u
dGVudCB7CisgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAg
ICB9CisgICAgI3Jvb3QgeworICAgICAgICB3aWR0aDogMjAwcHg7CisgICAgICAgIGhlaWdodDog
MjAwcHg7CisgICAgfQorICAgICNzY3JvbGxlciB7CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAg
ICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgICAgb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZTsK
KyAgICAgICAgb3ZlcmZsb3c6IHZpc2libGU7CisgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1n
cmFkaWVudCgxMzVkZWcsIHJlZCwgYmx1ZSk7CisgICAgfQorPC9zdHlsZT4KKzxkaXYgaWQ9InJv
b3QiIGNsYXNzPSJzY3JvbGxpbmciPgorICAgIDxkaXYgaWQ9InNjcm9sbGVyIj4KKyAgICAgICAg
PGRpdiBjbGFzcz0ic2Nyb2xsQ29udGVudCI+PC9kaXY+CisgICAgPC9kaXY+CisgICAgPGRpdiBj
bGFzcz0ic2Nyb2xsQ29udGVudCI+PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4KK2NvbnN0IHJv
b3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncm9vdCcpOworY29uc3Qgc2Nyb2xsZXIgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2Nyb2xsZXInKTsKK2Z1bmN0aW9uIHJlc2V0VGVzdCgp
IHsKKyAgICByb290LnNjcm9sbExlZnQgPSAwOworICAgIHJvb3Quc2Nyb2xsVG9wID0gMDsKKyAg
ICByb290LnNjcm9sbFRvKDAsIDApOworfQorCitmdW5jdGlvbiBzdGFydFRlc3QoKSB7CisgICAg
ICAgIHByb21pc2VfdGVzdCgoKSA9PiB7CisgICAgICAgICAgICByZXNldFRlc3QoKTsKKyAgICAg
ICAgICAgIHZhciB4ID0gc2Nyb2xsZXIuY2xpZW50V2lkdGggLyAyOworICAgICAgICAgICAgdmFy
IHkgPSBzY3JvbGxlci5jbGllbnRIZWlnaHQgLyAyOworICAgICAgICAgICAgdmFyIGRlbHRhID0g
Z2V0RGVsdGFzKCJyaWdodCIpOworICAgICAgICAgICAgcmV0dXJuIFVJSGVscGVyLm1vdXNlV2hl
ZWxTY3JvbGxBdCh4LCB5LCBkZWx0YS5YLCBkZWx0YS5ZLCBkZWx0YS5YLCBkZWx0YS5ZKS50aGVu
KCgpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsTGVmdCA+
IDAsIHRydWUsICdDb250aW51ZSB1cCB0aGUgaG9yaXpvbnRhbCBzY3JvbGwgY2hhaW5pbmcnKTsK
KyAgICAgICAgICAgIH0pOworICAgICAgICB9LCAnVW5zY3JvbGxhYmxlIGVsZW1lbnQgaG9yaXpv
bnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuJyk7CisKKyAg
ICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAgIHJlc2V0VGVzdCgpOworICAg
ICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAgICAgICAgICB2
YXIgeSA9IHNjcm9sbGVyLmNsaWVudEhlaWdodCAvIDI7CisgICAgICAgICAgICB2YXIgZGVsdGEg
PSBnZXREZWx0YXMoImRvd24iKTsKKyAgICAgICAgICAgIHJldHVybiBVSUhlbHBlci5tb3VzZVdo
ZWVsU2Nyb2xsQXQoeCwgeSwgZGVsdGEuWCwgZGVsdGEuWSwgZGVsdGEuWCwgZGVsdGEuWSkudGhl
bigoKSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbFRvcCA+
IDAsIHRydWUsICdDb250aW51ZSB1cCB0aGUgdmVydGljYWwgc2Nyb2xsIGNoYWluaW5nJyk7Cisg
ICAgICAgICAgICB9KTsKKyAgICAgICAgfSwgJ1Vuc2Nyb2xsYWJsZSBlbGVtZW50IHZlcnRpY2Fs
IHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4nKTsKK30KKworYWRk
RXZlbnRMaXN0ZW5lcigibG9hZCIsIHN0YXJ0VGVzdCk7Cis8L3NjcmlwdD4KXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9v
dmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUt
aWZyYW1lLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZmE1OWNjYmE3OWFlZmYzM2RhNzBlOTNk
NDg4YTA3ZWVjOWM1NjkxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3Jv
bGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDUgQEAKKworCitQQVNTIFVuc2Nyb2xsYWJsZSBpZnJhbWUgaG9yaXpvbnRh
bCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuCitQQVNTIFVuc2Ny
b2xsYWJsZSBpZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2
aW9yOiBub25lLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9vdmVy
c2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjk2MTE2NGE5NzU1YzVhNzE1NjFmNTg0ZGU4M2EwNGFlOTlkZTEyZDAKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJl
aGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUuaHRtbApAQCAtMCwwICsxLDY3IEBACis8IWRvY3R5
cGUgaHRtbD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb3ZlcnNjcm9sbC1iZWhhdmlvci1z
dXBwb3J0LmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9kcmFm
dHMuY3Nzd2cub3JnL2Nzcy1vdmVyc2Nyb2xsLWJlaGF2aW9yIj4KKzxzdHlsZT4KKyAgICAuc2Ny
b2xsaW5nIHsKKyAgICAgICAgb3ZlcmZsb3c6IHNjcm9sbDsKKyAgICB9CisgICAgLnNjcm9sbENv
bnRlbnQgeworICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgIGhlaWdodDogMzAwcHg7Cisg
ICAgfQorICAgICNyb290IHsKKyAgICAgICAgd2lkdGg6IDIwMHB4OworICAgICAgICBoZWlnaHQ6
IDIwMHB4OworICAgIH0KKyAgICAjc2Nyb2xsZXIgeworICAgICAgICB3aWR0aDogMjAwcHg7Cisg
ICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgICAgIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmU7
CisgICAgICAgIG92ZXJmbG93OiB2aXNpYmxlOworICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXIt
Z3JhZGllbnQoMTM1ZGVnLCByZWQsIGJsdWUpOworICAgIH0KKzwvc3R5bGU+Cis8ZGl2IGlkPSdy
b290JyBjbGFzcz0ic2Nyb2xsaW5nIj4KKyAgICA8aWZyYW1lIGlkPSdzY3JvbGxlcicgc3JjZG9j
PSI8aHRtbCBzdHlsZT0nb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZTsnPjxkaXYgc3R5bGU9J3dp
ZHRoOiAxMDBweDsgaGVpZ2h0OiAxMDBweDsnPjwvZGl2PjwvaHRtbD4KKyAgICAgICAgIj48L2lm
cmFtZT4KKyAgICA8ZGl2IGNsYXNzPSJzY3JvbGxDb250ZW50Ij48L2Rpdj4KKzwvZGl2PgorCis8
c2NyaXB0PgorY29uc3Qgcm9vdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyb290Jyk7Citj
b25zdCBzY3JvbGxlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY3JvbGxlcicpOworCitm
dW5jdGlvbiByZXNldFRlc3QoKSB7CisgICAgcm9vdC5zY3JvbGxMZWZ0ID0gMDsKKyAgICByb290
LnNjcm9sbFRvcCA9IDA7CisgICAgcm9vdC5zY3JvbGxUbygwLCAwKTsKK30KKworZnVuY3Rpb24g
c3RhcnRUZXN0KCkgeworICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgICAgICAgICAg
cmVzZXRUZXN0KCk7CisgICAgICAgICAgICB2YXIgeCA9IHNjcm9sbGVyLmNsaWVudFdpZHRoIC8g
MjsKKyAgICAgICAgICAgIHZhciB5ID0gc2Nyb2xsZXIuY2xpZW50SGVpZ2h0IC8gMjsKKyAgICAg
ICAgICAgIHZhciBkZWx0YSA9IGdldERlbHRhcygicmlnaHQiKTsKKyAgICAgICAgICAgIHJldHVy
biBVSUhlbHBlci5tb3VzZVdoZWVsU2Nyb2xsQXQoeCwgeSwgZGVsdGEuWCwgZGVsdGEuWSwgZGVs
dGEuWCwgZGVsdGEuWSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFs
cyhyb290LnNjcm9sbExlZnQgPiAwLCB0cnVlLCAnQ29udGludWUgdXAgdGhlIGhvcml6b250YWwg
c2Nyb2xsIGNoYWluaW5nJyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSwgJ1Vuc2Nyb2xs
YWJsZSBpZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZp
b3I6IG5vbmUuJyk7CisKKyAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAg
IHJlc2V0VGVzdCgpOworICAgICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAv
IDI7CisgICAgICAgICAgICB2YXIgeSA9IHNjcm9sbGVyLmNsaWVudEhlaWdodCAvIDI7CisgICAg
ICAgICAgICB2YXIgZGVsdGEgPSBnZXREZWx0YXMoImRvd24iKTsKKyAgICAgICAgICAgIHJldHVy
biBVSUhlbHBlci5tb3VzZVdoZWVsU2Nyb2xsQXQoeCwgeSwgZGVsdGEuWCwgZGVsdGEuWSwgZGVs
dGEuWCwgZGVsdGEuWSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFs
cyhyb290LnNjcm9sbFRvcCA+IDAsIHRydWUsICdDb250aW51ZSB1cCB0aGUgdmVydGljYWwgc2Ny
b2xsIGNoYWluaW5nJyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSwgJ1Vuc2Nyb2xsYWJs
ZSBpZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBu
b25lLicpOworfQorCithZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgc3RhcnRUZXN0KTsKKzwvc2Ny
aXB0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3Qvc2Nyb2xsaW5nL3Jlc291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXN1cHBvcnQuanMg
Yi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9yZXNvdXJjZXMvb3ZlcnNjcm9sbC1iZWhhdmlv
ci1zdXBwb3J0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM5ZWYyMDYwNmFjOTdkMjk5ZTE1NmE2NjZlODAzNTM1
NjMxNmIwZmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9y
ZXNvdXJjZXMvb3ZlcnNjcm9sbC1iZWhhdmlvci1zdXBwb3J0LmpzCkBAIC0wLDAgKzEsMTYgQEAK
K2Z1bmN0aW9uIGdldERlbHRhcyhkaXJlY3Rpb24pIHsKKyAgICB2YXIgZGVsdGFYID0gMDsKKyAg
ICB2YXIgZGVsdGFZID0gMDsKKyAgICBpZiAoZGlyZWN0aW9uID09ICJkb3duIikKKyAgICAgICAg
ZGVsdGFZID0gLTU7CisgICAgZWxzZSBpZiAoZGlyZWN0aW9uID09ICJ1cCIpCisgICAgICAgIGRl
bHRhWSA9IDU7CisgICAgZWxzZSBpZiAoZGlyZWN0aW9uID09ICJyaWdodCIpCisgICAgICAgIGRl
bHRhWCA9IC01OworICAgIGVsc2UgaWYgKGRpcmVjdGlvbiA9PSAibGVmdCIpCisgICAgICAgIGRl
bHRhWCA9IDU7CisgICAgcmV0dXJuIHsKKyAgICAgICAgWDogZGVsdGFYLAorICAgICAgICBZOiBk
ZWx0YVkKKyAgICB9OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rl
c3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9u
cwppbmRleCAzNTI0NjVjMjU4ODY4YjMyM2E4ZjVjMDg5MTQwNGNkYTM0MmQwMDFjLi41ZWJjNTBl
MWExMzBkN2EwZmNmNTkyMWY2MTA4YzU0OWI0YjYxYjlkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9ndGsvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTc3Miw2ICsxNzcyLDEwIEBAIHdlYmtpdC5vcmcv
Yi8yMTIyMDIgd2Via2l0Lm9yZy9iLzE1ODkxNyBmYXN0L3Njcm9sbGluZy9vdmVyZmxvdy1zY3Jv
bGwtcGFzdC1tYXguCiB3ZWJraXQub3JnL2IvMjEyMjAyIGZhc3Qvc2Nyb2xsaW5nL3Byb2dyYW1t
YXRpYy1zY3JvbGwtdG8temVyby16ZXJvLmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8yMTIy
MDIgZmFzdC9zY3JvbGxpbmcvcnRsLXBvaW50LWluLWlmcmFtZS5odG1sIFsgU2tpcCBdCiB3ZWJr
aXQub3JnL2IvMjEyMjAyIGNvbXBvc2l0aW5nL2ZpeGVkLXdpdGgtbWFpbi10aHJlYWQtc2Nyb2xs
aW5nLmh0bWwgWyBTa2lwIF0KK2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItZWxl
bWVudC5odG1sIFsgU2tpcCBdCitmYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLWlm
cmFtZS5odG1sIFsgU2tpcCBdCitmYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXVu
c2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWwgWyBTa2lwIF0KK2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3Jv
bGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sIFsgU2tpcCBdCiAKIHdlYmtpdC5v
cmcvYi8yMTA3OTYgaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NsZWFyLWluLW1l
bW9yeS1hbmQtcGVyc2lzdGVudC1zdG9yZS1vbmUtaG91ci5odG1sIFsgVGltZW91dCBQYXNzIF0K
IHdlYmtpdC5vcmcvYi8yMTA3OTYgaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL29w
ZXJhdGluZy1kYXRlcy1hbGwtd2Vic2l0ZS1kYXRhLXJlbW92ZWQuaHRtbCBbIFRpbWVvdXQgUGFz
cyBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9u
cyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDViMTIy
YzNiZDQ0YWQ1OTE5NDJhNGJmYWViYTY4ZjY5NzIxZjk5ZGMuLjcxMGZmZmI2ZmQ1MzEzOGI4MTk4
YWZhYmI4NTNhOWE2ZTMzN2NmZTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lv
cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhw
ZWN0YXRpb25zCkBAIC03OTUsNiArNzk1LDEyIEBAIHN2Zy90ZXh0L3NlbGVjdC10ZXh0LXN2Z2Zv
bnQuaHRtbCBbIFNraXAgXQogc3ZnL3RleHQvc2VsZWN0aW9uLWRvdWJsZWNsaWNrLnN2ZyBbIFNr
aXAgXQogc3ZnL3RleHQvc2VsZWN0aW9uLXRyaXBsZWNsaWNrLnN2ZyBbIFNraXAgXQogCisjIE92
ZXJzY3JvbGwtYmVoYXZpb3IgaXMgbm90IHN1cHBvcnRlZCBvbiBpT1MKK2Zhc3Qvc2Nyb2xsaW5n
L292ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC5odG1sIFsgU2tpcCBdCitmYXN0L3Njcm9sbGlu
Zy9vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS5odG1sIFsgU2tpcCBdCitmYXN0L3Njcm9sbGlu
Zy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWwgWyBTa2lwIF0K
K2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5o
dG1sIFsgU2tpcCBdCisKICMgSU9TIGRvZXMgbm90IGltcGxlbWVudCBzZXRBdXRvbWF0aWNMaW5r
RGV0ZWN0aW9uRW5hYmxlZAogZWRpdGluZy9pbnNlcnRpbmcvdHlwaW5nLXNwYWNlLXRvLXRyaWdn
ZXItc21hcnQtbGluay5odG1sIFsgU2tpcCBdCiBlZGl0aW5nL2luc2VydGluZy9zbWFydC1saW5r
LXdoZW4tY2FyZXQtaXMtbW92ZWQtYmVmb3JlLVVSTC5odG1sIFsgU2tpcCBdCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggMzM0NTEwODRlYTZk
OTA5NTcxY2ExNDg4ZTZjMWQwZmVlZjIwMmQ2My4uMGRiMjJjMjcxN2Q2YmIzZTU2MDAyNDUwZjY4
OTgyNTU0NTIzNDM2YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9U
ZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4
cGVjdGF0aW9ucwpAQCAtNDUzLDYgKzQ1MywxMCBAQCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3Mtc2Nyb2xsLXNuYXAvc2Nyb2xsLXRhcmdldC1wYWRkaW5nLTAwMS5odAog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXNjcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLXN0b3AtY2hhbmdlLmh0bWwgWyBGYWlsdXJlIF0KIGNzczMvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXBhZGRpbmctbWFpbmZyYW1lLXBhZ2luZy5odG1sIFsgRmFpbHVyZSBdCiAKKyMgTGFjayBv
ZiB3YXlzIHRvIGNvbnRyb2wgdGhlIGNyb3NzLWZyYW1lIHNjcm9sbCBjaGFpbmluZyBpbiBXSzEu
CitmYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS5odG1sIFsgU2tpcCBd
CitmYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUu
aHRtbCBbIFNraXAgXQorCiAjIyMgRU5EIE9GICgyKSBGYWlsdXJlcyB3aXRob3V0IGJ1ZyByZXBv
cnRzCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dwZS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vd3BlL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggNjdkZmE3MzQ1NjNlZGYzOTVl
ZWZjNzE3ODFmYWI4OGYyYWRhMGRhZi4uMzgyNTVkNDZmNzk3OGIwMDA3ZDkxNWNjYTgzNThiMzQz
MTViODM2OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd3BlL1Rlc3RFeHBlY3Rh
dGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd3BlL1Rlc3RFeHBlY3RhdGlvbnMKQEAg
LTg4OSw2ICs4ODksMTIgQEAgd2Via2l0Lm9yZy9iLzIxMjIwMiBmYXN0L3Njcm9sbGluZy9ydGwt
cG9pbnQtaW4taWZyYW1lLmh0bWwgWyBUaW1lb3V0IF0KICMgd2Via2l0Lm9yZy9iLzE4ODUwNiBm
YXN0L2RvbS90aW1lci10aHJvdHRsaW5nLWhpZGRlbi1wYWdlLmh0bWwgWyBGYWlsdXJlIF0KIHdl
YmtpdC5vcmcvYi8yMTIzNTAgZmFzdC9kb20vdGltZXItdGhyb3R0bGluZy1oaWRkZW4tcGFnZS5o
dG1sIFsgVGltZW91dCBdCiAKKyMgVGltaW5nIG91dCBkdWUgdG8gbWlzc2luZyBmdW5jdGlvbmFs
aXR5LgorZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50Lmh0bWwgWyBT
a2lwIF0KK2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0bWwgWyBT
a2lwIF0KK2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVs
ZW1lbnQuaHRtbCBbIFNraXAgXQorZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci11
bnNjcm9sbGFibGUtaWZyYW1lLmh0bWwgWyBTa2lwIF0KKwogIy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8KICMgOC4gVEVTVFMgRkFJTElORwogIy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423165</attachid>
            <date>2021-03-15 06:04:20 -0700</date>
            <delta_ts>2021-03-15 06:19:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222968-20210315210419.patch</filename>
            <type>text/plain</type>
            <size>60842</size>
            <attacher name="cathiechen">cathiechen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0MDYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTA0MDEwNGE5NWQ5ZmQy
MWE1MGUzN2Y3NzUyYjNhNTYxNGM5NTIwOS4uMmUxNDUzMjBiYzIwZDg4YjlkMGZmMGU2ODA2NzEx
ZTBhNDgxM2VjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc0IEBACisyMDIxLTAzLTE1ICBDYXRo
aWUgQ2hlbiAgPGNhdGhpZWNoZW5AaWdhbGlhLmNvbT4KKworICAgICAgICBTdXBwb3J0IENTUyBv
dmVyc2Nyb2xsLWJlaGF2aW9yIGZvciBzeW5jaHJvbm91cyBzY3JvbGwKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjk2OAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJhc2VkIG9uIEZyw6lkw6lyaWMgV2Fu
ZydzIHBhdGNoLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYnJpbmdzIGluaXRpYWwgc3VwcG9ydCBv
ZiBDU1MgcHJvcGVydHkgb3ZlcnNjcm9sbC1iZWhhdmlvci4gT3ZlcnNjcm9sbC1iZWhhdmlvciBz
ZXRzIHdoYXQKKyAgICAgICAgdGhlIGJyb3dzZXIgZG9lcyB3aGVuIHJlYWNoaW5nIHRoZSBib3Vu
ZGFyeSBvZiBhIHNjcm9sbGluZyBhcmVhLiBGaXJlZm94IGFuZCBDaHJvbWl1bS12YXJpYW50IGJy
b3dzZXJzCisgICAgICAgIGFscmVhZHkgc3VwcG9ydCBpdC4gSXRzIHNwZWNpZmljYXRpb24gY2Fu
IGJlIGZvdW5kIGF0IGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3Mtb3ZlcnNjcm9sbC0xLyNv
dmVyc2Nyb2xsLWJlaGF2aW9yLXByb3BlcnRpZXMKKyAgICAgICAgVGhpcyBwYXRjaCBhaW1zIHRv
IHN1cHBvcnQgaXQgZm9yIHRoZSBzeW5jaHJvbm91cyBzY3JvbGwuIFRoZSBhc3luY2hyb25vdXMg
c2Nyb2xsIG9uIE1hYyB3aWxsIGJlIGNvdmVyZWQgbGF0ZXIuCisKKyAgICAgICAgQWNjb3JkaW5n
IHRvIHRoZSB2YWx1ZSBvZiBvdmVyc2Nyb2xsLWJlaGF2aW9yLCB0aGlzIHBhdGNoIGNvbnRyb2xz
IHRoZSBzY3JvbGwgY2hhaW5pbmcsIHRoZSBzY3JvbGwgc3RyZXRjaCwKKyAgICAgICAgYW5kIHN3
aXBlIGdlc3R1cmVzIGdlbmVyYXRpb24gb2YgdGhlIHN5bmNocm9ub3VzIHNjcm9sbC4gVG8gY29u
dHJvbCB0aGUgc2Nyb2xsIGNoYWluaW5nLAorICAgICAgICBtX3Njcm9sbENoYWluaW5nQmxvY2tl
ciBpcyBhZGRlZCB0byBFdmVudEhhbmxkZXIsIGl0IGlzIGdlbmVyYXRlZCBhY2NvcmRpbmcgdG8g
b3ZlcnNjcm9sbC1iZWhhdmlvciB2YWx1ZXMuCisgICAgICAgIEl0IGluZGljYXRlcyB3aGV0aGVy
IHRoZSBzY3JvbGwgY2hhaW5pbmcgb2YgdGhpcyBmcmFtZSBzaG91bGQgYmUgc3RvcHBlZCBvciBu
b3QuCisgICAgICAgIFRoZSBzY3JvbGwgY2hhaW5pbmcgaXMgaGFuZGxlZCBkaWZmZXJlbnRseSBi
eSBXSEVFTF9FVkVOVF9MQVRDSElORyBzZXR0aW5nLiBJZiBXSEVFTF9FVkVOVF9MQVRDSElORyBp
cyBvZmYsCisgICAgICAgIHRoZSBzY3JvbGwgY2hhaW5pbmcgaXMgaGFuZGxlZCBkaXJlY3RseSBp
biBFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94
KCkuCisgICAgICAgIElmIFdIRUVMX0VWRU5UX0xBVENISU5HIGlzIG9uLCB0aGUgbGF0Y2hlZCBz
Y3JvbGwgdGFyZ2V0IGlzIGFsd2F5cyBGcmFtZVZpZXcgaWYgaXQgbmVlZHMgdG8gc3RvcCB0aGUg
c2Nyb2xsIGNoYWluaW5nLgorICAgICAgICBJZiBjdXJyZW50IGZyYW1lIGlzIGEgc3ViZnJhbWUs
IHRoZSB2YWx1ZSBvZiBtX3Njcm9sbENoYWluaW5nQmxvY2tlciB3aWxsIGJlIHBhc3NlZCB0byBp
dHMgcGFyZW50IGZyYW1lLgorICAgICAgICBBbmQgZXZlbnR1YWxseSwgbGV0IHRoZSBtYWluZnJh
bWUgaGFuZGxlIG1fc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLiBUaGUgbWFpbmZyYW1lIGJsb2NrcyB2
ZXJ0aWNhbCBzY3JvbGwgY2hhaW5pbmcgZGlyZWN0bHksCisgICAgICAgIGFuZCBob3Jpem9udGFs
bHkgaXQgd2lsbCBsZXQgdGhlIHZpZXdzIGRlY2lkZSB3aGV0aGVyIGl0IHNob3VsZCBnZW5lcmF0
ZSBzd2lwZSBnZXN0dXJlcyBvciBub3QuCisgICAgICAgIEFib3V0IHRoZSBzY3JvbGwgc3RyZXRj
aCwgaXQgaXMgY2FuY2VsZWQgaWYgdGhlIHZhbHVlIG9mIG92ZXJzY3JvbGwtYmVoYXZpb3IgaXMg
bm9uZS4KKworICAgICAgICBUZXN0czogZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNj
cm9sbC1iZWhhdmlvci1lbGVtZW50Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvc2Nyb2xsaW5n
L3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0bWwKKyAgICAgICAgICAg
ICAgIGZhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3Jv
bGxhYmxlLWVsZW1lbnQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9zY3JvbGxpbmcvc3luYy1z
Y3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLmh0bWwKKworICAg
ICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZVBh
cmVudEZyYW1lU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKTogVXBkYXRlIG1fc2Nyb2xsQ2hhaW5pbmdC
bG9ja2VyIGZvciBwYXJlbnQgZnJhbWUuCisgICAgICAgIChXZWJDb3JlOjpjaGVja1Njcm9sbENo
YWluaW5nQmxvY2tlckZvckZyYW1lVmlldyk6IENoZWNrIGlmIG1fc2Nyb2xsQ2hhaW5pbmdCbG9j
a2VyIGJsb2NrcyB0aGUgc2Nyb2xsIGNoYWluaW5nIG9uIEZyYW1lVmlldywKKyAgICAgICAgZGVh
bCB3aXRoIGhvcml6b250YWwgYW5kIHZlcnRpY2FsIHNjcm9sbCBjaGFpbmluZyBkaWZmZXJlbnRs
eSwgYW5kIHVwZGF0ZSB0aGUgZGVsdGEgb2YgV2hlZWxFdmVudCBpZiBpdCBkb2Vzbid0IGJsb2Nr
IHRoZSBzY3JvbGwgY2hhaW5pbmcuCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6Omhh
bmRsZVdoZWVsRXZlbnRJbnRlcm5hbCk6IElmIGl0J3MgbWFpbiBmcmFtZSwgYmxvY2sgc2Nyb2xs
IGNoYWluaW5nIGJ5IHRoZSB2YWx1ZSBvZiBtX3Njcm9sbENoYWluaW5nQmxvY2tlci4KKyAgICAg
ICAgSWYgaXQncyBzdWJmcmFtZSwgcGFzcyBtX3Njcm9sbENoYWluaW5nQmxvY2tlciB2YWx1ZSB0
byBwYXJlbnQgZnJhbWUuIAorICAgICAgICAoV2ViQ29yZTo6ZGlkU2Nyb2xsSW5TY3JvbGxhYmxl
QXJlYSk6IEZpbHRlciB0aGUgc2Nyb2xsIGRlbHRhIGJ5IHRoZSBTY3JvbGxDaGFpbmluZ0Jsb2Nr
ZXIgdmFsdWUuCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZl
bnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94KTogQmxvY2sgc2Nyb2xsIGNoYWluaW5nIGFjY29y
ZGluZyB0byB0aGUgdmFsdWUgb2YgbV9zY3JvbGxDaGFpbmluZ0Jsb2NrZXIuCisgICAgICAgIChX
ZWJDb3JlOjpFdmVudEhhbmRsZXI6OnVwZGF0ZVNjcm9sbENoYWluaW5nQmxvY2tlcik6CisgICAg
ICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnJlc2V0U2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKToK
KyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5oOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6aG9yaXpvbnRhbE92ZXJzY3JvbGxC
ZWhhdmlvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnZlcnRpY2FsT3Zl
cnNjcm9sbEJlaGF2aW9yIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5oOgorICAg
ICAgICAqIHBhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmZp
bmRFbmNsb3NpbmdTY3JvbGxhYmxlQ29udGFpbmVyKTogVXBkYXRlIHRoZSB2YWx1ZSBvZiBTY3Jv
bGxDaGFpbmluZ0Jsb2NrZXIgYW5kIHJldHVybiBudWxsIGlmIHNob3VsZEJsb2NrU2Nyb2xsQ2hh
aW5pbmcoKS4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZGV0ZXJtaW5lV2hlZWxF
dmVudFRhcmdldCk6IElmIHNob3VsZEJsb2NrU2Nyb2xsQ2hhaW5pbmcoKSwgRnJhbWVWaWV3IHdp
bGwgYmUgdGhlIGxhdGNoZWQgc2Nyb2xsIHRhcmdldC4KKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0
Zm9ybVdoZWVsRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtV2hlZWxFdmVudDo6
d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwpOiBNb3ZlZCBmcm9tIFNjcm9sbENvbnRy
b2xsZXIubW0KKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxUeXBlcy5oOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsQ2hhaW5pbmdCbG9ja2VyOjpzaG91bGRCbG9ja1Njcm9sbENoYWluaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbENoYWluaW5nQmxvY2tlcjo6ZmlsdGVyRGVsdGEpOgor
ICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGFibGVBcmVhOjp1cGRhdGVTY3JvbGxDaGFpbmluZ0Jsb2NrZXJTdGF0ZSBjb25zdCk6
CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGFibGVBcmVhOjpob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGFibGVBcmVhOjp2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlv
ciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JNYWM6OnNob3VsZEZvcndhcmRXaGVlbEV2
ZW50c1RvUGFyZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTWFj
OjphbGxvd3NWZXJ0aWNhbFN0cmV0Y2hpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsQW5pbWF0b3JNYWM6OmFsbG93c0hvcml6b250YWxTdHJldGNoaW5nIGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xsQ29udHJvbGxlci5tbToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbENvbnRyb2xsZXI6OmRpcmVjdGlvbkZyb21FdmVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxDb250cm9sbGVyOjp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbCk6IERl
bGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6aG9yaXpvbnRh
bE92ZXJzY3JvbGxCZWhhdmlvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
clNjcm9sbGFibGVBcmVhOjp2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvciBjb25zdCk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuaDoKKwogMjAyMS0wMy0w
NyAgTGF1cm8gTW91cmEgIDxsbW91cmFAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2Vk
LiBGaXggLVd1bnVzZWQtcGFyYW1ldGVyIHdhcm5pbmcgYWZ0ZXIgcjI3NDAzMwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvQ2hhbmdlTG9nCmluZGV4IDM1NDZmOTYwNjc1NjQ1YWU3MDYxMmQ1YzlhOTg1MjVjNWE5
ZGRkNjMuLmYwY2ViOWQ0ZTg2ZDJkZjYyMTU1YzUwOWVjYTViZjExOTRhOGM1OGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMS0wMy0xNSAgQ2F0aGll
IENoZW4gIDxjYXRoaWVjaGVuQGlnYWxpYS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBDU1Mgb3Zl
cnNjcm9sbC1iZWhhdmlvciBmb3Igc3luY2hyb25vdXMgc2Nyb2xsCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI5NjgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCYXNlZCBvbiBGcsOpZMOpcmljIFdhbmcn
cyBwYXRjaC4KKworICAgICAgICBOZWVkIHRvIGZpbmQgYSB3YXkgdG8gYmxvY2sgdGhlIGNyb3Nz
LWZyYW1lIHNjcm9sbCBjaGFpbmluZyBpbiBXSzEuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhU
TUxWaWV3Lm1tOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBzY3JvbGxXaGVlbDpdKToKKwogMjAy
MS0wMy0wNiAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgU2ltcGxp
ZnkgRHVtcFJlbmRlclRyZWUgV2ViUHJlZmVyZW5jZXMgcmVzZXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZl
bnRIYW5kbGVyLmNwcAppbmRleCBhMDRhOWUzNTBhNmI0N2I3M2NiOWRhYjcwMzZmNmUzODRhZjdi
MDQ0Li4yYTgxYzZhMDIzNjM0YWIwYThjNjk1Y2JkYzYyMGNhNjcyYTZiMzkwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0yODU4LDYgKzI4NTgsNTYgQEAgYm9vbCBFdmVu
dEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVl
bEV2ZW50LCBPcHRpb24KICAgICByZXR1cm4gaGFuZGxlZDsKIH0KIAorI2lmIEVOQUJMRShXSEVF
TF9FVkVOVF9MQVRDSElORykKK3N0YXRpYyB2b2lkIHVwZGF0ZVBhcmVudEZyYW1lU2Nyb2xsQ2hh
aW5pbmdCbG9ja2VyKGNvbnN0IFNjcm9sbGFibGVBcmVhKiBzY3JvbGxhYmxlQXJlYSwgRnJhbWUm
IGZyYW1lLCBTY3JvbGxDaGFpbmluZ0Jsb2NrZXImIGJsb2NrZXIpCit7CisgICAgYXV0byogcGFy
ZW50ID0gZnJhbWUudHJlZSgpLnBhcmVudCgpOworICAgIGlmICghc2Nyb2xsYWJsZUFyZWEpCisg
ICAgICAgIHNjcm9sbGFibGVBcmVhID0gZnJhbWUudmlldygpOworICAgIGlmICghZnJhbWUucGFn
ZSgpIHx8ICFwYXJlbnQgfHwgIXNjcm9sbGFibGVBcmVhKQorICAgICAgICByZXR1cm47CisgICAg
c2Nyb2xsYWJsZUFyZWEtPnVwZGF0ZVNjcm9sbENoYWluaW5nQmxvY2tlclN0YXRlKGJsb2NrZXIp
OworICAgIHBhcmVudC0+ZXZlbnRIYW5kbGVyKCkudXBkYXRlU2Nyb2xsQ2hhaW5pbmdCbG9ja2Vy
KGJsb2NrZXIpOworfQorCitzdGF0aWMgYm9vbCBjaGVja1Njcm9sbENoYWluaW5nQmxvY2tlckZv
ckZyYW1lVmlldyhjb25zdCBTY3JvbGxhYmxlQXJlYSogc2Nyb2xsYWJsZUFyZWEsIEZyYW1lJiBm
cmFtZSwgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBTY3JvbGxDaGFpbmluZ0Jsb2Nr
ZXIgc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLCBib29sJiBoYW5kbGVkRXZlbnQpCit7CisgICAgaWYg
KCFzY3JvbGxhYmxlQXJlYSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKHNjcm9s
bGFibGVBcmVhICE9IGZyYW1lLnZpZXcoKSkgeworICAgICAgICAvLyBXaGVlbCBldmVudCBpcyBn
b2luZyB0byBiZSBoYW5kbGVkIGJ5IEZyYW1lVmlldyBpbiBwcm9jZXNzV2hlZWxFdmVudEZvclNj
cm9sbGluZygpLAorICAgICAgICAvLyBzaG91bGQgbGV0IHNjcm9sbGFibGVBcmVhJ3Mgb3ZlcnNj
cm9sbC1iZWhhdmlvciBlZmZlY3QgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLgorICAgICAgICBzY3Jv
bGxhYmxlQXJlYS0+dXBkYXRlU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyU3RhdGUoc2Nyb2xsQ2hhaW5p
bmdCbG9ja2VyKTsKKyAgICB9CisKKyAgICBGbG9hdFNpemUgZmlsdGVyZWREZWx0YSh3aGVlbEV2
ZW50LmRlbHRhWCgpLCB3aGVlbEV2ZW50LmRlbHRhWSgpKTsKKyAgICBhdXRvIGJpYXNlZERlbHRh
ID0gUGxhdGZvcm1XaGVlbEV2ZW50Ojp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbChm
aWx0ZXJlZERlbHRhKTsKKyAgICBpZiAoc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLmJsb2NrWCAmJiAh
Ymlhc2VkRGVsdGEuaGVpZ2h0KCkpIHsKKyAgICAgICAgLy8gSWYgdGhlIGhvcml6b250YWwgc2Ny
b2xsIGNoYWluaW5nIGlzIGJsb2NrZWQgYnkgb3ZlcnNjcm9sbC1iZWhhdmlvciBpbiBhIHN1YmZy
YW1lLgorICAgICAgICAvLyBJdCBwcm9wYWdhdGVzIGl0cyBTY3JvbGxDaGFpbmluZ0Jsb2NrZXIg
dG8gcGFyZW50IGZyYW1lcyBhbmQgZXZlbnR1YWxseSBsZXQgbWFpbmZyYW1lCisgICAgICAgIC8v
IGRlY2lkZSB3aGV0aGVyIG5lZWQgdG8gdHJpZ2dlciBhIHN3aXBlIGdlc3R1cmUgb3Igbm90Lgor
ICAgICAgICBpZiAoZnJhbWUuaXNNYWluRnJhbWUoKSkgeworICAgICAgICAgICAgLy8gSW4gbWFp
biBmcmFtZSwgdHJpZ2dlciB0aGUgc3dpcGUgZ2VzdHVyZSBpZiBuZWVkZWQuCisgICAgICAgICAg
ICBoYW5kbGVkRXZlbnQgPSAhYmlhc2VkRGVsdGEud2lkdGgoKTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIHVwZGF0ZVBhcmVudEZyYW1lU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKHNjcm9s
bGFibGVBcmVhLCBmcmFtZSwgc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKTsKKyAgICAgICAgICAgIGhh
bmRsZWRFdmVudCA9IGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKworICAgIGlmIChTY3JvbGxDaGFpbmluZ0Jsb2NrZXI6OnNob3VsZEJsb2NrU2Nyb2xsQ2hh
aW5pbmcoc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLCBiaWFzZWREZWx0YSkpIHsKKyAgICAgICAgaGFu
ZGxlZEV2ZW50ID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgU2Ny
b2xsQ2hhaW5pbmdCbG9ja2VyOjpmaWx0ZXJEZWx0YShzY3JvbGxDaGFpbmluZ0Jsb2NrZXIsIGJp
YXNlZERlbHRhLCBmaWx0ZXJlZERlbHRhKTsKKyAgICB3aGVlbEV2ZW50ID0gd2hlZWxFdmVudC5j
b3B5V2l0aERlbHRhc0FuZFZlbG9jaXR5KGZpbHRlcmVkRGVsdGEud2lkdGgoKSwgZmlsdGVyZWRE
ZWx0YS5oZWlnaHQoKSwgd2hlZWxFdmVudC5zY3JvbGxpbmdWZWxvY2l0eSgpKTsKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisjZW5kaWYKKwogYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZl
bnRJbnRlcm5hbChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50LCBPcHRpb25TZXQ8V2hl
ZWxFdmVudFByb2Nlc3NpbmdTdGVwcz4gcHJvY2Vzc2luZ1N0ZXBzLCBPcHRpb25TZXQ8RXZlbnRI
YW5kbGluZz4mIGhhbmRsaW5nKQogewogICAgIGF1dG8qIGRvY3VtZW50ID0gbV9mcmFtZS5kb2N1
bWVudCgpOwpAQCAtMjg5MCw2ICsyOTQwLDggQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVdo
ZWVsRXZlbnRJbnRlcm5hbChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50LCBPcHQKICAg
ICBhdXRvIGRlZmVycmVyID0gV2hlZWxFdmVudFRlc3RNb25pdG9yQ29tcGxldGlvbkRlZmVycmVy
IHsgbW9uaXRvci5nZXQoKSwgdGhpcywgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpEZWZlclJlYXNv
bjo6SGFuZGxpbmdXaGVlbEV2ZW50T25NYWluVGhyZWFkIH07CiAjZW5kaWYKIAorICAgIHJlc2V0
U2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKCk7CisKICAgICBtX2lzSGFuZGxpbmdXaGVlbEV2ZW50ID0g
dHJ1ZTsKICAgICBhdXRvIGFsbG93c1Njcm9sbGluZ1N0YXRlID0gU2V0Rm9yU2NvcGUobV9jdXJy
ZW50V2hlZWxFdmVudEFsbG93c1Njcm9sbGluZywgcHJvY2Vzc2luZ1N0ZXBzLmNvbnRhaW5zKFdo
ZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHM6Ok1haW5UaHJlYWRGb3JTY3JvbGxpbmcpKTsKICAgICAK
QEAgLTI5MTQsMTEgKzI5NjYsMTkgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZl
bnRJbnRlcm5hbChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50LCBPcHQKICAgICAvLyBp
dHNlbGYgZmluZHMgYW5kIHRyaWVzIHRvIHNjcm9sbCBvdmVyZmxvdyBzY3JvbGxlcnMuCiAgICAg
ZGV0ZXJtaW5lV2hlZWxFdmVudFRhcmdldChldmVudCwgZWxlbWVudCwgc2Nyb2xsYWJsZUFyZWEs
IGlzT3ZlcldpZGdldCk7CiAKKyAgICBhdXRvIG9sZEJsb2NrZXIgPSBtX3Njcm9sbENoYWluaW5n
QmxvY2tlcjsKICAgICBpZiAoZWxlbWVudCkgewogICAgICAgICBpZiAoaXNPdmVyV2lkZ2V0KSB7
CiAgICAgICAgICAgICBpZiAoV2Vha1B0cjxXaWRnZXQ+IHdpZGdldCA9IHdpZGdldEZvckVsZW1l
bnQoKmVsZW1lbnQpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHBhc3NXaGVlbEV2ZW50VG9XaWRn
ZXQoZXZlbnQsICp3aWRnZXQuZ2V0KCksIHByb2Nlc3NpbmdTdGVwcykpCiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBjb21wbGV0ZVdpZGdldFdoZWVsRXZlbnQoZXZlbnQsIHdpZGdldCwgc2Ny
b2xsYWJsZUFyZWEpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKG1fc2Nyb2xsQ2hhaW5pbmdC
bG9ja2VyLmJsb2NrWCAhPSBvbGRCbG9ja2VyLmJsb2NrWCB8fCBtX3Njcm9sbENoYWluaW5nQmxv
Y2tlci5ibG9ja1kgIT0gb2xkQmxvY2tlci5ibG9ja1kpIHsKKyAgICAgICAgICAgICAgICAgICAg
Ly8gSWYgbV9zY3JvbGxDaGFpbmluZ0Jsb2NrZXIgaXMgY2hhbmdlZCBpbiBzdWJmcmFtZXMsIHRo
ZSBsYWNoZWQgc3RhdGUgc2hvdWxkIGJlIGNhbGN1bGF0ZWQgYWdhaW4uCisgICAgICAgICAgICAg
ICAgICAgIGlmIChldmVudC5pc0dlc3R1cmVTdGFydCgpKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBjbGVhckxhdGNoZWRTdGF0ZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgZGV0ZXJt
aW5lV2hlZWxFdmVudFRhcmdldChldmVudCwgZWxlbWVudCwgc2Nyb2xsYWJsZUFyZWEsIGlzT3Zl
cldpZGdldCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtMjk1MCwxMiArMzAxMCwyOSBAQCBib29sIEV2ZW50
SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudEludGVybmFsKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVu
dCYgZXZlbnQsIE9wdAogI2lmIEVOQUJMRShXSEVFTF9FVkVOVF9MQVRDSElORykKICAgICBpZiAo
YWxsb3dTY3JvbGxpbmcpCiAgICAgICAgIGFsbG93U2Nyb2xsaW5nID0gbV9mcmFtZS5wYWdlKCkt
PnNjcm9sbExhdGNoaW5nQ29udHJvbGxlcigpLmxhdGNoaW5nQWxsb3dzU2Nyb2xsaW5nSW5GcmFt
ZShtX2ZyYW1lLCBzY3JvbGxhYmxlQXJlYSk7CisgICAgaWYgKCEoYWxsb3dTY3JvbGxpbmcgfHwg
bV9mcmFtZS5pc01haW5GcmFtZSgpKSkKKyAgICAgICAgdXBkYXRlUGFyZW50RnJhbWVTY3JvbGxD
aGFpbmluZ0Jsb2NrZXIoc2Nyb2xsYWJsZUFyZWEuZ2V0KCksIG1fZnJhbWUsIG1fc2Nyb2xsQ2hh
aW5pbmdCbG9ja2VyKTsKICNlbmRpZgogCiAgICAgaWYgKGFsbG93U2Nyb2xsaW5nKSB7Ci0gICAg
ICAgIC8vIEZJWE1FOiBwcm9jZXNzV2hlZWxFdmVudEZvclNjcm9sbGluZygpIGlzIG9ubHkgY2Fs
bGVkIGZvciBGcmFtZVZpZXcgc2Nyb2xsaW5nLCBub3Qgb3ZlcmZsb3cgc2Nyb2xsaW5nLCB3aGlj
aCBpcyBjb25mdXNpbmcuCi0gICAgICAgIGhhbmRsZWRFdmVudCA9IHByb2Nlc3NXaGVlbEV2ZW50
Rm9yU2Nyb2xsaW5nKGV2ZW50LCBzY3JvbGxhYmxlQXJlYSwgaGFuZGxpbmcpOwotICAgICAgICBw
cm9jZXNzV2hlZWxFdmVudEZvclNjcm9sbFNuYXAoZXZlbnQsIHNjcm9sbGFibGVBcmVhKTsKKyAg
ICAgICAgUGxhdGZvcm1XaGVlbEV2ZW50IGFkanVzdGVkV2hlZWxFdmVudCA9IFBsYXRmb3JtV2hl
ZWxFdmVudChldmVudCk7CisgICAgICAgIGJvb2wgc2Nyb2xsQ2hhaW5pbmdTdG9wcGVkID0gZmFs
c2U7CisjaWYgRU5BQkxFKFdIRUVMX0VWRU5UX0xBVENISU5HKQorICAgICAgICBzY3JvbGxDaGFp
bmluZ1N0b3BwZWQgPSBjaGVja1Njcm9sbENoYWluaW5nQmxvY2tlckZvckZyYW1lVmlldyhzY3Jv
bGxhYmxlQXJlYS5nZXQoKSwgbV9mcmFtZSwgYWRqdXN0ZWRXaGVlbEV2ZW50LCBtX3Njcm9sbENo
YWluaW5nQmxvY2tlciwgaGFuZGxlZEV2ZW50KTsKKyNlbmRpZgorICAgICAgICBpZiAoIXNjcm9s
bENoYWluaW5nU3RvcHBlZCkgeworICAgICAgICAgICAgLy8gRklYTUU6IHByb2Nlc3NXaGVlbEV2
ZW50Rm9yU2Nyb2xsaW5nKCkgaXMgb25seSBjYWxsZWQgZm9yIEZyYW1lVmlldyBzY3JvbGxpbmcs
IG5vdCBvdmVyZmxvdyBzY3JvbGxpbmcsIHdoaWNoIGlzIGNvbmZ1c2luZy4KKyAgICAgICAgICAg
IGhhbmRsZWRFdmVudCA9IHByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKGFkanVzdGVkV2hl
ZWxFdmVudCwgc2Nyb2xsYWJsZUFyZWEsIGhhbmRsaW5nKTsKKyAgICAgICAgICAgIHByb2Nlc3NX
aGVlbEV2ZW50Rm9yU2Nyb2xsU25hcChhZGp1c3RlZFdoZWVsRXZlbnQsIHNjcm9sbGFibGVBcmVh
KTsKKyAgICAgICAgfQorI2lmICFFTkFCTEUoV0hFRUxfRVZFTlRfTEFUQ0hJTkcpCisgICAgICAg
IGlmIChhdXRvKiB2aWV3ID0gbV9mcmFtZS52aWV3KCkpIHsKKyAgICAgICAgICAgIGlmICghaGFu
ZGxlZEV2ZW50KSB7CisgICAgICAgICAgICAgICAgYXV0byBiaWFzZWREZWx0YSA9IFBsYXRmb3Jt
V2hlZWxFdmVudDo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoYWRqdXN0ZWRXaGVl
bEV2ZW50LmRlbHRhKCkpOworICAgICAgICAgICAgICAgIGhhbmRsZWRFdmVudCA9IFNjcm9sbENo
YWluaW5nQmxvY2tlcjo6c2hvdWxkQmxvY2tTY3JvbGxDaGFpbmluZyhtX3Njcm9sbENoYWluaW5n
QmxvY2tlciwgYmlhc2VkRGVsdGEpOworICAgICAgICAgICAgfQorICAgICAgICB9CisjZW5kaWYK
ICAgICB9CiAKICAgICByZXR1cm4gaGFuZGxlZEV2ZW50OwpAQCAtMjk3MiwyMCArMzA0OSwyMyBA
QCBzdGF0aWMgdm9pZCBoYW5kbGVXaGVlbEV2ZW50UGhhc2VJblNjcm9sbGFibGVBcmVhKFNjcm9s
bGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYQogI2VuZGlmCiB9CiAKLXN0YXRpYyBib29sIGRpZFNj
cm9sbEluU2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhLCBjb25z
dCBXaGVlbEV2ZW50JiB3aGVlbEV2ZW50KQorc3RhdGljIGJvb2wgZGlkU2Nyb2xsSW5TY3JvbGxh
YmxlQXJlYShTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEsIGNvbnN0IFdoZWVsRXZlbnQm
IHdoZWVsRXZlbnQsIGNvbnN0IFNjcm9sbENoYWluaW5nQmxvY2tlciYgYmxvY2tlcikKIHsKKyAg
ICBGbG9hdFNpemUgZmlsdGVyZWREZWx0YSh3aGVlbEV2ZW50LmRlbHRhWCgpLCB3aGVlbEV2ZW50
LmRlbHRhWSgpKTsKKyAgICBhdXRvIGJpYXNlZERlbHRhID0gUGxhdGZvcm1XaGVlbEV2ZW50Ojp3
aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbChmaWx0ZXJlZERlbHRhKTsKKyAgICBTY3Jv
bGxDaGFpbmluZ0Jsb2NrZXI6OmZpbHRlckRlbHRhKGJsb2NrZXIsIGJpYXNlZERlbHRhLCBmaWx0
ZXJlZERlbHRhKTsKICAgICBTY3JvbGxHcmFudWxhcml0eSBzY3JvbGxHcmFudWxhcml0eSA9IHdo
ZWVsR3JhbnVsYXJpdHlUb1Njcm9sbEdyYW51bGFyaXR5KHdoZWVsRXZlbnQuZGVsdGFNb2RlKCkp
OwogICAgIGJvb2wgZGlkSGFuZGxlV2hlZWxFdmVudCA9IGZhbHNlOwotICAgIGlmIChmbG9hdCBh
YnNvbHV0ZURlbHRhID0gc3RkOjphYnMod2hlZWxFdmVudC5kZWx0YVgoKSkpCi0gICAgICAgIGRp
ZEhhbmRsZVdoZWVsRXZlbnQgfD0gc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsKHdoZWVsRXZlbnQuZGVs
dGFYKCkgPiAwID8gU2Nyb2xsUmlnaHQgOiBTY3JvbGxMZWZ0LCBzY3JvbGxHcmFudWxhcml0eSwg
YWJzb2x1dGVEZWx0YSk7CisgICAgaWYgKGZsb2F0IGFic29sdXRlRGVsdGEgPSBzdGQ6OmFicyhm
aWx0ZXJlZERlbHRhLndpZHRoKCkpKQorICAgICAgICBkaWRIYW5kbGVXaGVlbEV2ZW50IHw9IHNj
cm9sbGFibGVBcmVhLnNjcm9sbChmaWx0ZXJlZERlbHRhLndpZHRoKCkgPiAwID8gU2Nyb2xsUmln
aHQgOiBTY3JvbGxMZWZ0LCBzY3JvbGxHcmFudWxhcml0eSwgYWJzb2x1dGVEZWx0YSk7CiAKLSAg
ICBpZiAoZmxvYXQgYWJzb2x1dGVEZWx0YSA9IHN0ZDo6YWJzKHdoZWVsRXZlbnQuZGVsdGFZKCkp
KQotICAgICAgICBkaWRIYW5kbGVXaGVlbEV2ZW50IHw9IHNjcm9sbGFibGVBcmVhLnNjcm9sbCh3
aGVlbEV2ZW50LmRlbHRhWSgpID4gMCA/IFNjcm9sbERvd24gOiBTY3JvbGxVcCwgc2Nyb2xsR3Jh
bnVsYXJpdHksIGFic29sdXRlRGVsdGEpOworICAgIGlmIChmbG9hdCBhYnNvbHV0ZURlbHRhID0g
c3RkOjphYnMoZmlsdGVyZWREZWx0YS5oZWlnaHQoKSkpCisgICAgICAgIGRpZEhhbmRsZVdoZWVs
RXZlbnQgfD0gc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsKGZpbHRlcmVkRGVsdGEuaGVpZ2h0KCkgPiAw
ID8gU2Nyb2xsRG93biA6IFNjcm9sbFVwLCBzY3JvbGxHcmFudWxhcml0eSwgYWJzb2x1dGVEZWx0
YSk7CiAKICAgICByZXR1cm4gZGlkSGFuZGxlV2hlZWxFdmVudDsKIH0KIAotYm9vbCBFdmVudEhh
bmRsZXI6OmhhbmRsZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94KE5vZGUqIHN0
YXJ0Tm9kZSwgY29uc3QgV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgY29uc3QgRmxvYXRTaXplJiBm
aWx0ZXJlZFBsYXRmb3JtRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyZWRWZWxvY2l0eSwg
T3B0aW9uU2V0PEV2ZW50SGFuZGxpbmc+IGV2ZW50SGFuZGxpbmcpCitib29sIEV2ZW50SGFuZGxl
cjo6aGFuZGxlV2hlZWxFdmVudEluQXBwcm9wcmlhdGVFbmNsb3NpbmdCb3goTm9kZSogc3RhcnRO
b2RlLCBjb25zdCBXaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBGbG9hdFNpemUmIGZpbHRlcmVkUGxh
dGZvcm1EZWx0YSwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJlZFZlbG9jaXR5LCBPcHRpb25TZXQ8
RXZlbnRIYW5kbGluZz4gZXZlbnRIYW5kbGluZykKIHsKICAgICBib29sIHNob3VsZEhhbmRsZUV2
ZW50ID0gd2hlZWxFdmVudC5kZWx0YVgoKSB8fCB3aGVlbEV2ZW50LmRlbHRhWSgpOwogI2lmIEVO
QUJMRShXSEVFTF9FVkVOVF9MQVRDSElORykKQEAgLTMwMDcsMjEgKzMwODcsMjkgQEAgYm9vbCBF
dmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94KE5v
ZGUqIHN0YXJ0Tm9kZSwgY28KICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGlzPFJl
bmRlckxpc3RCb3g+KGluaXRpYWxFbmNsb3NpbmdCb3gpKQotICAgICAgICByZXR1cm4gZGlkU2Ny
b2xsSW5TY3JvbGxhYmxlQXJlYShkb3duY2FzdDxSZW5kZXJMaXN0Qm94Pihpbml0aWFsRW5jbG9z
aW5nQm94KSwgd2hlZWxFdmVudCk7CisgICAgICAgIHJldHVybiBkaWRTY3JvbGxJblNjcm9sbGFi
bGVBcmVhKGRvd25jYXN0PFJlbmRlckxpc3RCb3g+KGluaXRpYWxFbmNsb3NpbmdCb3gpLCB3aGVl
bEV2ZW50LCBtX3Njcm9sbENoYWluaW5nQmxvY2tlcik7CiAKKyAgICBhdXRvIGJpYXNlZERlbHRh
ID0gUGxhdGZvcm1XaGVlbEV2ZW50Ojp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbChG
bG9hdFNpemUod2hlZWxFdmVudC5kZWx0YVgoKSwgd2hlZWxFdmVudC5kZWx0YVkoKSkpOwogICAg
IFJlbmRlckJveCogY3VycmVudEVuY2xvc2luZ0JveCA9ICZpbml0aWFsRW5jbG9zaW5nQm94Owog
ICAgIHdoaWxlIChjdXJyZW50RW5jbG9zaW5nQm94KSB7CiAgICAgICAgIGlmIChhdXRvKiBib3hM
YXllciA9IGN1cnJlbnRFbmNsb3NpbmdCb3gtPmxheWVyKCkgPyBjdXJyZW50RW5jbG9zaW5nQm94
LT5sYXllcigpLT5zY3JvbGxhYmxlQXJlYSgpIDogbnVsbHB0cikgewogICAgICAgICAgICAgYXV0
byBwbGF0Zm9ybUV2ZW50ID0gd2hlZWxFdmVudC51bmRlcmx5aW5nUGxhdGZvcm1FdmVudCgpOwog
ICAgICAgICAgICAgYm9vbCBzY3JvbGxpbmdXYXNIYW5kbGVkOwogICAgICAgICAgICAgaWYgKHBs
YXRmb3JtRXZlbnQpIHsKKyAgICAgICAgICAgICAgICBTY3JvbGxDaGFpbmluZ0Jsb2NrZXI6OmZp
bHRlckRlbHRhKG1fc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLCBiaWFzZWREZWx0YSwgZmlsdGVyZWRQ
bGF0Zm9ybURlbHRhKTsKICAgICAgICAgICAgICAgICBhdXRvIGNvcGllZEV2ZW50ID0gcGxhdGZv
cm1FdmVudC0+Y29weVdpdGhEZWx0YXNBbmRWZWxvY2l0eShmaWx0ZXJlZFBsYXRmb3JtRGVsdGEu
d2lkdGgoKSwgZmlsdGVyZWRQbGF0Zm9ybURlbHRhLmhlaWdodCgpLCBmaWx0ZXJlZFZlbG9jaXR5
KTsKICAgICAgICAgICAgICAgICBzY3JvbGxpbmdXYXNIYW5kbGVkID0gaGFuZGxlV2hlZWxFdmVu
dEluU2Nyb2xsYWJsZUFyZWEoY29waWVkRXZlbnQsICpib3hMYXllciwgZXZlbnRIYW5kbGluZyk7
CiAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBzY3JvbGxpbmdXYXNIYW5kbGVk
ID0gZGlkU2Nyb2xsSW5TY3JvbGxhYmxlQXJlYSgqYm94TGF5ZXIsIHdoZWVsRXZlbnQpOworICAg
ICAgICAgICAgICAgIHNjcm9sbGluZ1dhc0hhbmRsZWQgPSBkaWRTY3JvbGxJblNjcm9sbGFibGVB
cmVhKCpib3hMYXllciwgd2hlZWxFdmVudCwgbV9zY3JvbGxDaGFpbmluZ0Jsb2NrZXIpOwogCiAg
ICAgICAgICAgICBpZiAoc2Nyb2xsaW5nV2FzSGFuZGxlZCkKICAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKworICAgICAgICAgICAgaWYgKGN1cnJlbnRFbmNsb3NpbmdCb3gtPmVsZW1lbnQo
KSAhPSBjdXJyZW50RW5jbG9zaW5nQm94LT5kb2N1bWVudCgpLmRvY3VtZW50RWxlbWVudCgpKSB7
CisgICAgICAgICAgICAgICAgYm94TGF5ZXItPnVwZGF0ZVNjcm9sbENoYWluaW5nQmxvY2tlclN0
YXRlKG1fc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKTsKKyAgICAgICAgICAgICAgICBpZiAoU2Nyb2xs
Q2hhaW5pbmdCbG9ja2VyOjpzaG91bGRCbG9ja1Njcm9sbENoYWluaW5nKG1fc2Nyb2xsQ2hhaW5p
bmdCbG9ja2VyLCBiaWFzZWREZWx0YSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgY3VycmVudEVuY2xvc2luZ0Jv
eCA9IGN1cnJlbnRFbmNsb3NpbmdCb3gtPmNvbnRhaW5pbmdCbG9jaygpOwpAQCAtNDYyNiw0ICs0
NzE0LDE1IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpwYXNzTW91c2VNb3ZlRXZlbnRUb1N1YmZyYW1l
KE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIG1vCiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JN
KENPQ09BKSAmJiAhUExBVEZPUk0oV0lOKQogCit2b2lkIEV2ZW50SGFuZGxlcjo6dXBkYXRlU2Ny
b2xsQ2hhaW5pbmdCbG9ja2VyKGNvbnN0IFNjcm9sbENoYWluaW5nQmxvY2tlciYgYmxvY2tlcikK
K3sKKyAgICBtX3Njcm9sbENoYWluaW5nQmxvY2tlci5ibG9ja1ggfD0gYmxvY2tlci5ibG9ja1g7
CisgICAgbV9zY3JvbGxDaGFpbmluZ0Jsb2NrZXIuYmxvY2tZIHw9IGJsb2NrZXIuYmxvY2tZOwor
fQorCit2b2lkIEV2ZW50SGFuZGxlcjo6cmVzZXRTY3JvbGxDaGFpbmluZ0Jsb2NrZXIoKQorewor
ICAgIG1fc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyID0geyBmYWxzZSwgZmFsc2UgfTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKaW5kZXggNWQw
NDIwMzhiZjM0YmY4OWZmZTNkYjk5NDc2MzczNzg4OTQ1Mjg3OS4uNGI0N2ZhNjQ4OGExNTU1NDkz
YzMyOTI4MGJlZjI0M2ZmY2I4ODU2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9F
dmVudEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCkBA
IC0yMTQsNiArMjE0LDkgQEAgcHVibGljOgogICAgIHZvaWQgZGVmYXVsdFdoZWVsRXZlbnRIYW5k
bGVyKE5vZGUqLCBXaGVlbEV2ZW50Jik7CiAgICAgdm9pZCB3aGVlbEV2ZW50V2FzUHJvY2Vzc2Vk
QnlNYWluVGhyZWFkKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIE9wdGlvblNldDxFdmVudEhh
bmRsaW5nPik7CiAKKyAgICB2b2lkIHVwZGF0ZVNjcm9sbENoYWluaW5nQmxvY2tlcihjb25zdCBT
Y3JvbGxDaGFpbmluZ0Jsb2NrZXImKTsKKyAgICB2b2lkIHJlc2V0U2Nyb2xsQ2hhaW5pbmdCbG9j
a2VyKCk7CisKICAgICBib29sIGhhbmRsZVBhc3RlR2xvYmFsU2VsZWN0aW9uKGNvbnN0IFBsYXRm
b3JtTW91c2VFdmVudCYpOwogCiAjaWYgRU5BQkxFKElPU19UT1VDSF9FVkVOVFMpIHx8IEVOQUJM
RShJT1NfR0VTVFVSRV9FVkVOVFMpCkBAIC00NzAsNyArNDczLDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsU25hcChjb25zdCBQbGF0Zm9ybVdoZWVsRXZl
bnQmLCBjb25zdCBXZWFrUHRyPFNjcm9sbGFibGVBcmVhPiYpOwogICAgIGJvb2wgY29tcGxldGVX
aWRnZXRXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIGNvbnN0IFdlYWtQdHI8
V2lkZ2V0PiYsIGNvbnN0IFdlYWtQdHI8U2Nyb2xsYWJsZUFyZWE+Jik7CiAKLSAgICBib29sIGhh
bmRsZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94KE5vZGUqIHN0YXJ0Tm9kZSwg
Y29uc3QgV2hlZWxFdmVudCYsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyZWRQbGF0Zm9ybURlbHRh
LCBjb25zdCBGbG9hdFNpemUmIGZpbHRlcmVkVmVsb2NpdHksIE9wdGlvblNldDxFdmVudEhhbmRs
aW5nPik7CisgICAgYm9vbCBoYW5kbGVXaGVlbEV2ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2luZ0Jv
eChOb2RlKiBzdGFydE5vZGUsIGNvbnN0IFdoZWVsRXZlbnQmLCBGbG9hdFNpemUmIGZpbHRlcmVk
UGxhdGZvcm1EZWx0YSwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJlZFZlbG9jaXR5LCBPcHRpb25T
ZXQ8RXZlbnRIYW5kbGluZz4pOwogCiAgICAgYm9vbCBoYW5kbGVXaGVlbEV2ZW50SW5TY3JvbGxh
YmxlQXJlYShjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBTY3JvbGxhYmxlQXJlYSYsIE9wdGlv
blNldDxFdmVudEhhbmRsaW5nPik7CiAgICAgT3B0aW9uYWw8V2hlZWxTY3JvbGxHZXN0dXJlU3Rh
dGU+IHVwZGF0ZVdoZWVsR2VzdHVyZVN0YXRlKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIE9w
dGlvblNldDxFdmVudEhhbmRsaW5nPik7CkBAIC02NDYsNiArNjQ5LDggQEAgcHJpdmF0ZToKICAg
ICBJbnRQb2ludCBtX3RhcmdldEF1dG9zY3JvbGxQb3NpdGlvbkluVW5zY3JvbGxlZFJvb3RWaWV3
Q29vcmRpbmF0ZXM7CiAgICAgT3B0aW9uYWw8SW50UG9pbnQ+IG1faW5pdGlhbFRhcmdldEF1dG9z
Y3JvbGxQb3NpdGlvbkluVW5zY3JvbGxlZFJvb3RWaWV3Q29vcmRpbmF0ZXM7CiAjZW5kaWYKKwor
ICAgIFNjcm9sbENoYWluaW5nQmxvY2tlciBtX3Njcm9sbENoYWluaW5nQmxvY2tlciB7IGZhbHNl
LCBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVZpZXcuY3BwCmluZGV4IDY4M2UzNmVmNTVmMmE5MzVkOTBhYjU1MGRjNTk2MWEyMGY5MDhjMzku
LmE2ODlkYjNkYTA4Y2RlZWYwZGFmNDRjNmZkYWQwMjliZTM4OThlNjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lVmlldy5jcHAKQEAgLTQxOSw2ICs0MTksMjYgQEAgYm9vbCBGcmFtZVZpZXc6OmRpZEZp
cnN0TGF5b3V0KCkgY29uc3QKICAgICByZXR1cm4gbGF5b3V0Q29udGV4dCgpLmRpZEZpcnN0TGF5
b3V0KCk7CiB9CiAKK092ZXJzY3JvbGxCZWhhdmlvciBGcmFtZVZpZXc6Omhvcml6b250YWxPdmVy
c2Nyb2xsQmVoYXZpb3IoKSBjb25zdAoreworICAgIGF1dG8qIGRvY3VtZW50ID0gZnJhbWUoKS5k
b2N1bWVudCgpOworICAgIGF1dG8gc2Nyb2xsaW5nT2JqZWN0ID0gZG9jdW1lbnQgJiYgZG9jdW1l
bnQtPmRvY3VtZW50RWxlbWVudCgpID8gZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpLT5yZW5k
ZXJlcigpIDogbnVsbHB0cjsKKyAgICAvLyBBbiBlbGVtZW50IHRoYXQgaXMgbm90IHNjcm9sbCBj
b250YWluZXIgbXVzdCBhY2NlcHQgYnV0IGlnbm9yZSB0aGUgdmFsdWVzIG9mIHRoaXMgcHJvcGVy
dHkuCisgICAgaWYgKHNjcm9sbGluZ09iamVjdCAmJiByZW5kZXJWaWV3KCkgJiYgcmVuZGVyVmll
dygpLT5jYW5CZVNjcm9sbGVkQW5kSGFzU2Nyb2xsYWJsZUFyZWEoKSkKKyAgICAgICAgcmV0dXJu
IHNjcm9sbGluZ09iamVjdC0+c3R5bGUoKS5vdmVyc2Nyb2xsQmVoYXZpb3JYKCk7CisgICAgcmV0
dXJuIFNjcm9sbGFibGVBcmVhOjpob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCk7Cit9CisK
K092ZXJzY3JvbGxCZWhhdmlvciBGcmFtZVZpZXc6OnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9y
KCkgIGNvbnN0Cit7CisgICAgYXV0byogZG9jdW1lbnQgPSBmcmFtZSgpLmRvY3VtZW50KCk7Cisg
ICAgYXV0byBzY3JvbGxpbmdPYmplY3QgPSBkb2N1bWVudCAmJiBkb2N1bWVudC0+ZG9jdW1lbnRF
bGVtZW50KCkgPyBkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCktPnJlbmRlcmVyKCkgOiBudWxs
cHRyOworICAgIC8vIEFuIGVsZW1lbnQgdGhhdCBpcyBub3Qgc2Nyb2xsIGNvbnRhaW5lciBtdXN0
IGFjY2VwdCBidXQgaWdub3JlIHRoZSB2YWx1ZXMgb2YgdGhpcyBwcm9wZXJ0eS4KKyAgICBpZiAo
c2Nyb2xsaW5nT2JqZWN0ICYmIHJlbmRlclZpZXcoKSAmJiByZW5kZXJWaWV3KCktPmNhbkJlU2Ny
b2xsZWRBbmRIYXNTY3JvbGxhYmxlQXJlYSgpKQorICAgICAgICByZXR1cm4gc2Nyb2xsaW5nT2Jq
ZWN0LT5zdHlsZSgpLm92ZXJzY3JvbGxCZWhhdmlvclkoKTsKKyAgICByZXR1cm4gU2Nyb2xsYWJs
ZUFyZWE6OnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCk7Cit9CisKIHZvaWQgRnJhbWVWaWV3
OjppbnZhbGlkYXRlUmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIGlmICghcGFyZW50
KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCmluZGV4IGNlN2U5YTE2N2NhMDc0ZjhjMjFjMWZk
NmVhNzVmOTE1YWZhYTQ1YTYuLmIxM2M3YjJiZGQwZTYyYjliZjM4NjM4YWZmMDVkYzUyZWY3YmRm
NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaApAQCAtNjgxLDYgKzY4MSw5IEBAIHB1YmxpYzoK
IAogICAgIFN0cmluZyBkZWJ1Z0Rlc2NyaXB0aW9uKCkgY29uc3QgZmluYWw7CiAKKyAgICBPdmVy
c2Nyb2xsQmVoYXZpb3IgaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpIGNvbnN0IGZpbmFs
OworICAgIE92ZXJzY3JvbGxCZWhhdmlvciB2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpIGNv
bnN0IGZpbmFsOworCiAgICAgLy8gU2Nyb2xsVmlldwogICAgIHZvaWQgdXBkYXRlU2Nyb2xsYmFy
U3RlcHMoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMv
RXZlbnRIYW5kbGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVy
TWFjLm1tCmluZGV4IDg2NDY1ZjgwNWUyMDUzNTY4NzA2NGMyZmY3NjA0ZDViODlhNDI0N2QuLjlj
ZTYzOGQ1NDZmNzdmOTJhNGM1MWE2NzdlNGExOGZmMTc1NWIwNmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0KQEAgLTc5NywxMyArNzk3LDE4IEBAIHN0YXRp
YyBTY3JvbGxhYmxlQXJlYSogc2Nyb2xsYWJsZUFyZWFGb3JCb3goUmVuZGVyQm94JiBib3gpCiB9
CiAKIC8vIEZJWE1FOiBUaGlzIGNvdWxkIGJlIHdyaXR0ZW4gaW4gdGVybXMgb2YgU2Nyb2xsYWJs
ZUFyZWE6OmVuY2xvc2luZ1Njcm9sbGFibGVBcmVhKCkuCi1zdGF0aWMgQ29udGFpbmVyTm9kZSog
ZmluZEVuY2xvc2luZ1Njcm9sbGFibGVDb250YWluZXIoQ29udGFpbmVyTm9kZSogbm9kZSwgY29u
c3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50KQorLy8gRG8gbm90IHVwZGF0ZSBtX3Nj
cm9sbENoYWluaW5nQmxvY2tlciBoZXJlLCB1cGRhdGUgaXQgaW4gRXZlbnRIYW5kbGVyOjpkZWZh
dWx0V2hlZWxFdmVudEhhbmRsZXIgbGF0ZXIgd2hlbiBwYXNzIEV2ZW50UGF0aCwKKy8vIG90aGVy
d2lzZSB0aGUgV2hlZWxFdmVudCBkZWx0YSBvZiBlbGVtZW50IHdpdGggIW92ZXJzY3JvbGwtYmVo
YXZpb3I6YXV0byB3aWxsIGJlIGNoYW5nZWQuCitzdGF0aWMgQ29udGFpbmVyTm9kZSogZmluZEVu
Y2xvc2luZ1Njcm9sbGFibGVDb250YWluZXIoQ29udGFpbmVyTm9kZSogbm9kZSwgY29uc3QgUGxh
dGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBTY3JvbGxDaGFpbmluZ0Jsb2NrZXImIHNjcm9s
bENoYWluaW5nQmxvY2tlcikKIHsKLSAgICBhdXRvIGJpYXNlZERlbHRhID0gU2Nyb2xsQ29udHJv
bGxlcjo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwod2hlZWxFdmVudCk7CisgICAg
YXV0byBiaWFzZWREZWx0YSA9IFBsYXRmb3JtV2hlZWxFdmVudDo6d2hlZWxEZWx0YUJpYXNpbmdU
b3dhcmRzVmVydGljYWwod2hlZWxFdmVudC5kZWx0YSgpKTsKIAogICAgIC8vIEZpbmQgdGhlIGZp
cnN0IG5vZGUgd2l0aCBhIHZhbGlkIHNjcm9sbGFibGUgYXJlYSBzdGFydGluZyB3aXRoIHRoZSBj
dXJyZW50CiAgICAgLy8gbm9kZSBhbmQgdHJhdmVyc2luZyBpdHMgcGFyZW50cyAob3Igc2hhZG93
IGhvc3RzKS4KICAgICBmb3IgKENvbnRhaW5lck5vZGUqIGNhbmRpZGF0ZSA9IG5vZGU7IGNhbmRp
ZGF0ZTsgY2FuZGlkYXRlID0gY2FuZGlkYXRlLT5wYXJlbnRPclNoYWRvd0hvc3ROb2RlKCkpIHsK
KyAgICAgICAgaWYgKFNjcm9sbENoYWluaW5nQmxvY2tlcjo6c2hvdWxkQmxvY2tTY3JvbGxDaGFp
bmluZyhzY3JvbGxDaGFpbmluZ0Jsb2NrZXIsIGJpYXNlZERlbHRhKSkKKyAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOworCiAgICAgICAgIGlmIChpczxIVE1MSUZyYW1lRWxlbWVudD4oKmNhbmRp
ZGF0ZSkpCiAgICAgICAgICAgICBjb250aW51ZTsKIApAQCAtODEzLDcgKzgxOCw3IEBAIHN0YXRp
YyBDb250YWluZXJOb2RlKiBmaW5kRW5jbG9zaW5nU2Nyb2xsYWJsZUNvbnRhaW5lcihDb250YWlu
ZXJOb2RlKiBub2RlLCBjb25zCiAgICAgICAgIFJlbmRlckJveCogYm94ID0gY2FuZGlkYXRlLT5y
ZW5kZXJCb3goKTsKICAgICAgICAgaWYgKCFib3ggfHwgIWJveC0+Y2FuQmVTY3JvbGxlZEFuZEhh
c1Njcm9sbGFibGVBcmVhKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgCisKICAg
ICAgICAgYXV0byogc2Nyb2xsYWJsZUFyZWEgPSBzY3JvbGxhYmxlQXJlYUZvckJveCgqYm94KTsK
ICAgICAgICAgaWYgKCFzY3JvbGxhYmxlQXJlYSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAt
ODI2LDggKzgzMSwxMSBAQCBzdGF0aWMgQ29udGFpbmVyTm9kZSogZmluZEVuY2xvc2luZ1Njcm9s
bGFibGVDb250YWluZXIoQ29udGFpbmVyTm9kZSogbm9kZSwgY29ucwogCiAgICAgICAgIGlmIChi
aWFzZWREZWx0YS53aWR0aCgpICYmICFzY3JvbGxhYmxlQXJlYS0+aXNQaW5uZWRGb3JTY3JvbGxE
ZWx0YU9uQXhpcygtYmlhc2VkRGVsdGEud2lkdGgoKSwgU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9u
dGFsKSkKICAgICAgICAgICAgIHJldHVybiBjYW5kaWRhdGU7CisKKyAgICAgICAgaWYgKGNhbmRp
ZGF0ZSAhPSBjYW5kaWRhdGUtPmRvY3VtZW50KCkuZG9jdW1lbnRFbGVtZW50KCkpCisgICAgICAg
ICAgICBzY3JvbGxhYmxlQXJlYS0+dXBkYXRlU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyU3RhdGUoc2Ny
b2xsQ2hhaW5pbmdCbG9ja2VyKTsKICAgICB9Ci0gICAgCisKICAgICByZXR1cm4gbnVsbHB0cjsK
IH0KIApAQCAtODcyLDEwICs4ODAsMTEgQEAgdm9pZCBFdmVudEhhbmRsZXI6OmRldGVybWluZVdo
ZWVsRXZlbnRUYXJnZXQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW4KICAgICBp
ZiAoIXZpZXcpCiAgICAgICAgIHJldHVybjsKIAorICAgIFNjcm9sbENoYWluaW5nQmxvY2tlciBi
bG9ja2VyID0gbV9zY3JvbGxDaGFpbmluZ0Jsb2NrZXI7CiAgICAgaWYgKGV2ZW50VGFyZ2V0SXNQ
bGF0Zm9ybVdpZGdldCh3aGVlbEV2ZW50VGFyZ2V0LmdldCgpKSkKICAgICAgICAgc2Nyb2xsYWJs
ZUFyZWEgPSBzY3JvbGxhYmxlQXJlYUZvckV2ZW50VGFyZ2V0KHdoZWVsRXZlbnRUYXJnZXQuZ2V0
KCkpOwogICAgIGVsc2UgewotICAgICAgICBhdXRvKiBzY3JvbGxhYmxlQ29udGFpbmVyID0gZmlu
ZEVuY2xvc2luZ1Njcm9sbGFibGVDb250YWluZXIod2hlZWxFdmVudFRhcmdldC5nZXQoKSwgd2hl
ZWxFdmVudCk7CisgICAgICAgIGF1dG8qIHNjcm9sbGFibGVDb250YWluZXIgPSBmaW5kRW5jbG9z
aW5nU2Nyb2xsYWJsZUNvbnRhaW5lcih3aGVlbEV2ZW50VGFyZ2V0LmdldCgpLCB3aGVlbEV2ZW50
LCBibG9ja2VyKTsKICAgICAgICAgaWYgKHNjcm9sbGFibGVDb250YWluZXIpCiAgICAgICAgICAg
ICBzY3JvbGxhYmxlQXJlYSA9IHNjcm9sbGFibGVBcmVhRm9yQ29udGFpbmVyTm9kZSgqc2Nyb2xs
YWJsZUNvbnRhaW5lcik7CiAgICAgICAgIGVsc2UKQEAgLTg5Myw2ICs5MDIsOSBAQCB2b2lkIEV2
ZW50SGFuZGxlcjo6ZGV0ZXJtaW5lV2hlZWxFdmVudFRhcmdldChjb25zdCBQbGF0Zm9ybVdoZWVs
RXZlbnQmIHdoZWVsRXZlbgogICAgIGlmIChtX2ZyYW1lLmlzTWFpbkZyYW1lKCkgJiYgd2hlZWxF
dmVudC5pc0dlc3R1cmVTdGFydCgpKQogICAgICAgICBwYWdlLT53aGVlbEV2ZW50RGVsdGFGaWx0
ZXIoKS0+YmVnaW5GaWx0ZXJpbmdEZWx0YXMoKTsKIAorICAgIC8vIFdoZW4gdGhlIGxhY2hlZCBu
b2RlIGlzIGRldGVybWluZWQsIHdlIHNob3VsZCB1cGRhdGUgbV9zY3JvbGxDaGFpbmluZ0Jsb2Nr
ZXIgaGVyZSwgZm9yIGl0IHdvbid0IHBhc3MgdGhlIHRyZWUgaW4gRXZlbnRIYW5kbGVyOjpkZWZh
dWx0V2hlZWxFdmVudEhhbmRsZXIuCisgICAgLy8gT3RoZXJ3aXNlLCBtX3Njcm9sbENoYWluaW5n
QmxvY2tlciBzaG91bGQgYmUgdXBkYXRlIGluIEV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVu
dEluQXBwcm9wcmlhdGVFbmNsb3NpbmdCb3guCisgICAgdXBkYXRlU2Nyb2xsQ2hhaW5pbmdCbG9j
a2VyKGJsb2NrZXIpOwogICAgIHBhZ2UtPnNjcm9sbExhdGNoaW5nQ29udHJvbGxlcigpLnVwZGF0
ZUFuZEZldGNoTGF0Y2hpbmdTdGF0ZUZvckZyYW1lKG1fZnJhbWUsIHdoZWVsRXZlbnQsIHdoZWVs
RXZlbnRUYXJnZXQsIHNjcm9sbGFibGVBcmVhLCBpc092ZXJXaWRnZXQpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oCmluZGV4IGQ3MTY5MzQ2YTI0
MDIzYzJhNDc4N2FlMzQ1NDBhMzc2MDdjMGEyZDUuLjY0MTc5N2E2ZjQxODc1MzM4Y2E3MWVhNzM5
MTYwZDEwYjA2Zjg4ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRm
b3JtV2hlZWxFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hl
ZWxFdmVudC5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkZs
b2F0UG9pbnQuaCIKKyNpbmNsdWRlICJGbG9hdFNpemUuaCIKICNpbmNsdWRlICJJbnRQb2ludC5o
IgogI2luY2x1ZGUgIlBsYXRmb3JtRXZlbnQuaCIKICNpbmNsdWRlIDx3dGYvV2luZG93c0V4dHJh
cy5oPgpAQCAtMTc0LDYgKzE3NSw4IEBAIHB1YmxpYzoKICAgICBQbGF0Zm9ybVdoZWVsRXZlbnQo
SFdORCwgV1BBUkFNLCBMUEFSQU0sIGJvb2wgaXNNb3VzZUhXaGVlbCk7CiAjZW5kaWYKIAorICAg
IHN0YXRpYyBGbG9hdFNpemUgd2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoY29uc3Qg
RmxvYXRTaXplJik7CisKIHByb3RlY3RlZDoKICAgICBQbGF0Zm9ybVdoZWVsRXZlbnRHcmFudWxh
cml0eSBtX2dyYW51bGFyaXR5IHsgU2Nyb2xsQnlQaXhlbFdoZWVsRXZlbnQgfTsKICAgICBib29s
IG1fZGlyZWN0aW9uSW52ZXJ0ZWRGcm9tRGV2aWNlIHsgZmFsc2UgfTsKQEAgLTI2NCw2ICsyNjcs
MTkgQEAgaW5saW5lIEZsb2F0UG9pbnQgUGxhdGZvcm1XaGVlbEV2ZW50Ojpzd2lwZVZlbG9jaXR5
KCkgY29uc3QKIAogI2VuZGlmIC8vIEVOQUJMRShLSU5FVElDX1NDUk9MTElORykKIAoraW5saW5l
IEZsb2F0U2l6ZSBQbGF0Zm9ybVdoZWVsRXZlbnQ6OndoZWVsRGVsdGFCaWFzaW5nVG93YXJkc1Zl
cnRpY2FsKGNvbnN0IEZsb2F0U2l6ZSYgZGVsdGEpCit7CisgICAgYXV0byBkZWx0YVggPSBkZWx0
YS53aWR0aCgpOworICAgIGF1dG8gZGVsdGFZID0gZGVsdGEuaGVpZ2h0KCk7CisKKyAgICBpZiAo
ZmFic2YoZGVsdGFZKSA+PSBmYWJzZihkZWx0YVgpKQorICAgICAgICBkZWx0YVggPSAwOworICAg
IGVsc2UKKyAgICAgICAgZGVsdGFZID0gMDsKKworICAgIHJldHVybiB7IGRlbHRhWCwgZGVsdGFZ
IH07Cit9CisKIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6
OlRleHRTdHJlYW0mLCBjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKTsKIFdFQkNPUkVfRVhQT1JU
IFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBXaGVlbEV2ZW50
UHJvY2Vzc2luZ1N0ZXBzKTsKIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0
b3I8PChXVEY6OlRleHRTdHJlYW0mLCBFdmVudEhhbmRsaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxUeXBlcy5oCmluZGV4IDBiMWM0MDU2M2U4Y2JiODIyYTlmZWJhNGMwYzQ2NWY4YTU3
NGE5M2IuLmY4ZjcxYzJlMWZmN2I5ZTRkMmU3NTY5ZTdiMTkyMWI4MjIxZjg0ZTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFR5cGVzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsVHlwZXMuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBv
bmNlCiAKICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCisjaW5jbHVkZSAiRmxvYXRTaXplLmgiCiAj
aW5jbHVkZSAiSW50UG9pbnQuaCIKICNpbmNsdWRlIDxjc3RkaW50PgogI2luY2x1ZGUgPHd0Zi9B
c3NlcnRpb25zLmg+CkBAIC0yNTksNiArMjYwLDM0IEBAIGVudW0gY2xhc3MgU2Nyb2xsU25hcFBv
aW50U2VsZWN0aW9uTWV0aG9kIDogdWludDhfdCB7CiAgICAgQ2xvc2VzdCwKIH07CiAKK3N0cnVj
dCBTY3JvbGxDaGFpbmluZ0Jsb2NrZXIgeworICAgIGJvb2wgYmxvY2tYIHsgZmFsc2UgfTsKKyAg
ICBib29sIGJsb2NrWSB7IGZhbHNlIH07CisKKyAgICBzdGF0aWMgYm9vbCBzaG91bGRCbG9ja1Nj
cm9sbENoYWluaW5nKGNvbnN0IFNjcm9sbENoYWluaW5nQmxvY2tlciYgYmxvY2tlciwgY29uc3Qg
RmxvYXRTaXplJiBiaWFzZWREZWx0YSkKKyAgICB7CisgICAgICAgIGlmICgoYmxvY2tlci5ibG9j
a1ggJiYgYmxvY2tlci5ibG9ja1kpCisgICAgICAgICAgICB8fCAoYmxvY2tlci5ibG9ja1ggJiYg
IWJpYXNlZERlbHRhLmhlaWdodCgpKQorICAgICAgICAgICAgfHwgKGJsb2NrZXIuYmxvY2tZICYm
ICFiaWFzZWREZWx0YS53aWR0aCgpKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgZmlsdGVyRGVsdGEoY29u
c3QgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyJiBibG9ja2VyLCBjb25zdCBGbG9hdFNpemUmIGJpYXNl
ZERlbHRhLCBGbG9hdFNpemUmIGZpbHRlcmVkRGVsdGEpCisgICAgeworICAgICAgICBpZiAoYmxv
Y2tlci5ibG9ja1gpIHsKKyAgICAgICAgICAgIGZpbHRlcmVkRGVsdGEuc2V0V2lkdGgoMCk7Cisg
ICAgICAgICAgICBpZiAoIWJpYXNlZERlbHRhLmhlaWdodCgpKQorICAgICAgICAgICAgICAgIGZp
bHRlcmVkRGVsdGEuc2V0SGVpZ2h0KDApOworICAgICAgICB9CisgICAgICAgIGlmIChibG9ja2Vy
LmJsb2NrWSkgeworICAgICAgICAgICAgZmlsdGVyZWREZWx0YS5zZXRIZWlnaHQoMCk7CisgICAg
ICAgICAgICBpZiAoIWJpYXNlZERlbHRhLndpZHRoKCkpCisgICAgICAgICAgICAgICAgZmlsdGVy
ZWREZWx0YS5zZXRXaWR0aCgwKTsKKyAgICAgICAgfQorICAgIH0KK307CisKIHVzaW5nIFNjcm9s
bGJhckNvbnRyb2xTdGF0ZSA9IHVuc2lnbmVkOwogdXNpbmcgU2Nyb2xsYmFyQ29udHJvbFBhcnRN
YXNrID0gdW5zaWduZWQ7CiB1c2luZyBTY3JvbGxpbmdOb2RlSUQgPSB1aW50NjRfdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcAppbmRleCA3OWY5ZTk4MDk4YThk
ZGNhMmI0OWNlOTc3ZDIxNDNlMWNiNmNhZjg1Li5jMDQzYzBhYzNlOTE4NWIyOWNjZGQwNjY4NWM5
OGY2OWQzYjIxY2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxh
YmxlQXJlYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEu
Y3BwCkBAIC04MDMsNiArODAzLDEyIEBAIHZvaWQgU2Nyb2xsYWJsZUFyZWE6OmNvbXB1dGVTY3Jv
bGxiYXJWYWx1ZUFuZE92ZXJoYW5nKGZsb2F0IGN1cnJlbnRQb3NpdGlvbiwgZmxvCiAgICAgfQog
fQogCit2b2lkIFNjcm9sbGFibGVBcmVhOjp1cGRhdGVTY3JvbGxDaGFpbmluZ0Jsb2NrZXJTdGF0
ZShTY3JvbGxDaGFpbmluZ0Jsb2NrZXImIGJsb2NrZXIpIGNvbnN0Cit7CisgICAgYmxvY2tlci5i
bG9ja1ggfD0gaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpICE9IE92ZXJzY3JvbGxCZWhh
dmlvcjo6QXV0bzsKKyAgICBibG9ja2VyLmJsb2NrWSB8PSB2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhh
dmlvcigpICE9IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0bzsKK30KKwogVGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVB
cmVhKQogewogICAgIHRzIDw8IHNjcm9sbGFibGVBcmVhLmRlYnVnRGVzY3JpcHRpb24oKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCmluZGV4IDdlYjdiNTQwMjgyODQw
YWI3YjVmMzFmZGZhNmIyYmZkNThlYjE5ZGMuLjk4NzdjZDUxMmM1ZWU4OTMwNmM1MzdlNGVlZWU3
MjI4Y2NlYTJmMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFi
bGVBcmVhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaApA
QCAtMTE5LDYgKzExOSwxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBjb25zdHJhaW5zU2Nyb2xsaW5n
VG9Db250ZW50RWRnZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29uc3RyYWluc1Njcm9sbGluZ1RvQ29u
dGVudEVkZ2U7IH0KICAgICB2b2lkIHNldENvbnN0cmFpbnNTY3JvbGxpbmdUb0NvbnRlbnRFZGdl
KGJvb2wgY29uc3RyYWluc1Njcm9sbGluZ1RvQ29udGVudEVkZ2UpIHsgbV9jb25zdHJhaW5zU2Ny
b2xsaW5nVG9Db250ZW50RWRnZSA9IGNvbnN0cmFpbnNTY3JvbGxpbmdUb0NvbnRlbnRFZGdlOyB9
CiAKKyAgICB2aXJ0dWFsIE92ZXJzY3JvbGxCZWhhdmlvciBob3Jpem9udGFsT3ZlcnNjcm9sbEJl
aGF2aW9yKCkgY29uc3QgeyByZXR1cm4gT3ZlcnNjcm9sbEJlaGF2aW9yOjpBdXRvOyB9CisgICAg
dmlydHVhbCBPdmVyc2Nyb2xsQmVoYXZpb3IgdmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBj
b25zdCB7IHJldHVybiBPdmVyc2Nyb2xsQmVoYXZpb3I6OkF1dG87IH0KKyAgICB2b2lkIHVwZGF0
ZVNjcm9sbENoYWluaW5nQmxvY2tlclN0YXRlKFNjcm9sbENoYWluaW5nQmxvY2tlciYpIGNvbnN0
OworCiAgICAgdm9pZCBzZXRWZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkoU2Nyb2xsRWxhc3RpY2l0
eSBzY3JvbGxFbGFzdGljaXR5KSB7IG1fdmVydGljYWxTY3JvbGxFbGFzdGljaXR5ID0gc2Nyb2xs
RWxhc3RpY2l0eTsgfQogICAgIFNjcm9sbEVsYXN0aWNpdHkgdmVydGljYWxTY3JvbGxFbGFzdGlj
aXR5KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U2Nyb2xsRWxhc3RpY2l0eT4obV92ZXJ0
aWNhbFNjcm9sbEVsYXN0aWNpdHkpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQppbmRleCA4ZTAwYmQ3MThiZjUwYjYzNGQ4YjI5NjY2
OGNjZGViNWJjODQyOWVlLi4wMzFjM2U3NDZlOTMyZjI4ZGZjYjEyNjFkMjA1MDQ2NDFlYjY1YWYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JN
YWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFj
Lm1tCkBAIC0xMjI3LDkgKzEyMjcsOSBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yTWFjOjpoYW5kbGVX
aGVlbEV2ZW50UGhhc2UoUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2UgcGhhc2UpCiBib29sIFNjcm9s
bEFuaW1hdG9yTWFjOjpzaG91bGRGb3J3YXJkV2hlZWxFdmVudHNUb1BhcmVudChjb25zdCBQbGF0
Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpIGNvbnN0CiB7CiAgICAgaWYgKHN0ZDo6YWJzKHdo
ZWVsRXZlbnQuZGVsdGFZKCkpID49IHN0ZDo6YWJzKHdoZWVsRXZlbnQuZGVsdGFYKCkpKQotICAg
ICAgICByZXR1cm4gIWFsbG93c1ZlcnRpY2FsU3RyZXRjaGluZyh3aGVlbEV2ZW50KTsKKyAgICAg
ICAgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWEudmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSA9
PSBPdmVyc2Nyb2xsQmVoYXZpb3I6OkF1dG8gJiYgIWFsbG93c1ZlcnRpY2FsU3RyZXRjaGluZyh3
aGVlbEV2ZW50KTsKIAotICAgIHJldHVybiAhYWxsb3dzSG9yaXpvbnRhbFN0cmV0Y2hpbmcod2hl
ZWxFdmVudCk7CisgICAgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWEuaG9yaXpvbnRhbE92ZXJzY3Jv
bGxCZWhhdmlvcigpID09IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0byAmJiAhYWxsb3dzSG9yaXpv
bnRhbFN0cmV0Y2hpbmcod2hlZWxFdmVudCk7CiB9CiAgICAgCiBib29sIFNjcm9sbEFuaW1hdG9y
TWFjOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVu
dCkKQEAgLTEyOTQsNiArMTI5NCw5IEBAIHN0YXRpYyBib29sIGdlc3R1cmVTaG91bGRCZWdpblNu
YXAoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBTY3JvbGxFCiAKIGJvb2wg
U2Nyb2xsQW5pbWF0b3JNYWM6OmFsbG93c1ZlcnRpY2FsU3RyZXRjaGluZyhjb25zdCBQbGF0Zm9y
bVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpIGNvbnN0CiB7CisgICAgaWYgKG1fc2Nyb2xsYWJsZUFy
ZWEudmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSA9PSBPdmVyc2Nyb2xsQmVoYXZpb3I6Ok5v
bmUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIHN3aXRjaCAobV9zY3JvbGxhYmxlQXJl
YS52ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkoKSkgewogICAgIGNhc2UgU2Nyb2xsRWxhc3RpY2l0
eUF1dG9tYXRpYzogewogICAgICAgICBTY3JvbGxiYXIqIGhTY3JvbGxlciA9IG1fc2Nyb2xsYWJs
ZUFyZWEuaG9yaXpvbnRhbFNjcm9sbGJhcigpOwpAQCAtMTMxOCw2ICsxMzIxLDkgQEAgYm9vbCBT
Y3JvbGxBbmltYXRvck1hYzo6YWxsb3dzVmVydGljYWxTdHJldGNoaW5nKGNvbnN0IFBsYXRmb3Jt
V2hlZWxFdmVudCYgd2hlZWwKIAogYm9vbCBTY3JvbGxBbmltYXRvck1hYzo6YWxsb3dzSG9yaXpv
bnRhbFN0cmV0Y2hpbmcoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50KSBjb25z
dAogeworICAgIGlmIChtX3Njcm9sbGFibGVBcmVhLmhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZp
b3IoKSA9PSBPdmVyc2Nyb2xsQmVoYXZpb3I6Ok5vbmUpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KwogICAgIHN3aXRjaCAobV9zY3JvbGxhYmxlQXJlYS5ob3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0
eSgpKSB7CiAgICAgY2FzZSBTY3JvbGxFbGFzdGljaXR5QXV0b21hdGljOiB7CiAgICAgICAgIFNj
cm9sbGJhciogaFNjcm9sbGVyID0gbV9zY3JvbGxhYmxlQXJlYS5ob3Jpem9udGFsU2Nyb2xsYmFy
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQ29udHJv
bGxlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxDb250cm9sbGVyLm1t
CmluZGV4IDBkZTgxZTA2ZjYzOGU5Yzc3MGQ4NzQ4NjUzYjBjNWZlNjExYzRlZWEuLjYzNGZiNzkw
ZTA4NmZhZWQ5NTgxZDhmOTc5ZDhhMmNkMzI1Mjg0ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9TY3JvbGxDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9TY3JvbGxDb250cm9sbGVyLm1tCkBAIC0zMTMsMTkgKzMxMyw2IEBAIGJv
b2wgU2Nyb2xsQ29udHJvbGxlcjo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVs
RXZlbnQmIHdoZWVsRXZlbnQpCiAgICAgcmV0dXJuIGhhbmRsZWQ7CiB9CiAKLUZsb2F0U2l6ZSBT
Y3JvbGxDb250cm9sbGVyOjp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbChjb25zdCBQ
bGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpCi17Ci0gICAgYXV0byBkZWx0YVggPSB3aGVl
bEV2ZW50LmRlbHRhWCgpOwotICAgIGF1dG8gZGVsdGFZID0gd2hlZWxFdmVudC5kZWx0YVkoKTsK
LQotICAgIGlmIChmYWJzZihkZWx0YVkpID49IGZhYnNmKGRlbHRhWCkpCi0gICAgICAgIGRlbHRh
WCA9IDA7Ci0gICAgZWxzZQotICAgICAgICBkZWx0YVkgPSAwOwotCi0gICAgcmV0dXJuIHsgZGVs
dGFYLCBkZWx0YVkgfTsKLX0KLQogT3B0aW9uYWw8U2Nyb2xsRGlyZWN0aW9uPiBTY3JvbGxDb250
cm9sbGVyOjpkaXJlY3Rpb25Gcm9tRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVl
bEV2ZW50LCBPcHRpb25hbDxTY3JvbGxFdmVudEF4aXM+IGF4aXMsIFdoZWVsQXhpc0JpYXMgYmlh
cykKIHsKICAgICAvLyBGSVhNRTogSXQncyBpbXBvc3NpYmxlIHRvIGluZmVyIGRpcmVjdGlvbiBm
cm9tIGEgc2luZ2xlIGV2ZW50LCBzaW5jZSB0aGUgc3RhcnQgb2YgYSBnZXN0dXJlIGlzIGVpdGhl
ciB6ZXJvIG9yCkBAIC0zMzMsNyArMzIwLDcgQEAgT3B0aW9uYWw8U2Nyb2xsRGlyZWN0aW9uPiBT
Y3JvbGxDb250cm9sbGVyOjpkaXJlY3Rpb25Gcm9tRXZlbnQoY29uc3QgUGxhdGZvcm1XaGUKIAog
ICAgIGF1dG8gd2hlZWxEZWx0YSA9IEZsb2F0U2l6ZSB7IHdoZWVsRXZlbnQuZGVsdGFYKCksIHdo
ZWVsRXZlbnQuZGVsdGFZKCkgfTsKICAgICBpZiAoYmlhcyA9PSBXaGVlbEF4aXNCaWFzOjpWZXJ0
aWNhbCkKLSAgICAgICAgd2hlZWxEZWx0YSA9IHdoZWVsRGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRp
Y2FsKHdoZWVsRXZlbnQpOworICAgICAgICB3aGVlbERlbHRhID0gUGxhdGZvcm1XaGVlbEV2ZW50
Ojp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbCh3aGVlbEV2ZW50LmRlbHRhKCkpOwog
CiAgICAgaWYgKGF4aXMpIHsKICAgICAgICAgc3dpdGNoIChheGlzLnZhbHVlKCkpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVh
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVh
LmNwcAppbmRleCBiNmI3YWIwYTIxMjUyNGVmZTg3YWMzN2VhZGNiZTEyMDA3Y2M1ZTY1Li5hYjE5
MDMxMjc4MDVjOTMxMDZmYWZmOTJhMTcwNzVlNjFkZjhiMmUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuY3BwCkBAIC0x
ODE2LDQgKzE4MTYsMjIgQEAgU3RyaW5nIFJlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWE6OmRlYnVn
RGVzY3JpcHRpb24oKSBjb25zdAogICAgIHJldHVybiBtX2xheWVyLmRlYnVnRGVzY3JpcHRpb24o
KTsKIH0KIAorT3ZlcnNjcm9sbEJlaGF2aW9yIFJlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWE6Omhv
cml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdAoreworICAgIGNvbnN0IFJlbmRlclN0
eWxlJiBzdHlsZSA9IG1fbGF5ZXIucmVuZGVyZXIoKS5zdHlsZSgpOworICAgIC8vIEFuIGVsZW1l
bnQgdGhhdCBpcyBub3Qgc2Nyb2xsIGNvbnRhaW5lciBtdXN0IGFjY2VwdCBidXQgaWdub3JlIHRo
ZSB2YWx1ZXMgb2YgdGhpcyBwcm9wZXJ0eS4KKyAgICBpZiAobV9sYXllci5yZW5kZXJCb3goKSAm
JiBtX2xheWVyLnJlbmRlckJveCgpLT5jYW5CZVNjcm9sbGVkQW5kSGFzU2Nyb2xsYWJsZUFyZWEo
KSkKKyAgICAgICAgcmV0dXJuIHN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclgoKTsKKyAgICByZXR1
cm4gU2Nyb2xsYWJsZUFyZWE6Omhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKTsKK30KKwor
T3ZlcnNjcm9sbEJlaGF2aW9yIFJlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWE6OnZlcnRpY2FsT3Zl
cnNjcm9sbEJlaGF2aW9yKCkgY29uc3QKK3sKKyAgICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUg
PSBtX2xheWVyLnJlbmRlcmVyKCkuc3R5bGUoKTsKKyAgICAvLyBBbiBlbGVtZW50IHRoYXQgaXMg
bm90IHNjcm9sbCBjb250YWluZXIgbXVzdCBhY2NlcHQgYnV0IGlnbm9yZSB0aGUgdmFsdWVzIG9m
IHRoaXMgcHJvcGVydHkuCisgICAgaWYgKG1fbGF5ZXIucmVuZGVyQm94KCkgJiYgbV9sYXllci5y
ZW5kZXJCb3goKS0+Y2FuQmVTY3JvbGxlZEFuZEhhc1Njcm9sbGFibGVBcmVhKCkpCisgICAgICAg
IHJldHVybiBzdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JZKCk7CisgICAgcmV0dXJuIFNjcm9sbGFi
bGVBcmVhOjp2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJTY3JvbGxhYmxlQXJlYS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
U2Nyb2xsYWJsZUFyZWEuaAppbmRleCBkZTI2YjMwNDg5NjY2NmE1Y2RkNjRiNTBmNzZkNmQ1MWVk
NjNlYWQzLi41MzhhNzk0YzA2MzkxM2Q0MDY2MGRhY2VlOTU5ZTYzMTBkNjM2M2Y1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVh
LmgKQEAgLTEyOSw2ICsxMjksOSBAQCBwdWJsaWM6CiAKICAgICBib29sIHNjcm9sbChTY3JvbGxE
aXJlY3Rpb24sIFNjcm9sbEdyYW51bGFyaXR5LCBmbG9hdCBtdWx0aXBsaWVyID0gMSk7CiAKKyAg
ICBPdmVyc2Nyb2xsQmVoYXZpb3IgaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpIGNvbnN0
IGZpbmFsOworICAgIE92ZXJzY3JvbGxCZWhhdmlvciB2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlv
cigpIGNvbnN0IGZpbmFsOworCiBwdWJsaWM6CiAgICAgLy8gQWxsIG1ldGhvZHMgaW4gdGhpcyBz
ZWN0aW9uIG92ZXJyaWRlIFNjcm9sbGFibGVhQXJlYSBtZXRob2RzIChmaW5hbCkuCiAgICAgdm9p
ZCBhdmFpbGFibGVDb250ZW50U2l6ZUNoYW5nZWQoQXZhaWxhYmxlU2l6ZUNoYW5nZVJlYXNvbikg
ZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhU
TUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5t
bQppbmRleCBkYjk2YjQwNDgwNjAzODdhOTQzNjM0OGZkMmQzOTBjNDQ4ODFlMzgxLi5hNTY0OThl
ZDExZGQ4MTIxMGQyYTFiNjMzYzk3OGYxM2U5MTI4OTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTQwODUsNiArNDA4NSw4IEBAIHN0
YXRpYyBCT09MIGN1cnJlbnRTY3JvbGxJc0JsaXQoTlNWaWV3ICpjbGlwVmlldykKICAgICBhdXRv
KiBmcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSk7CiAgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUt
PmV2ZW50SGFuZGxlcigpLndoZWVsRXZlbnQoZXZlbnQpKSB7CiAjaWYgUExBVEZPUk0oTUFDKQor
ICAgICAgICAvLyBGSVhNRTogTmVlZCB0byBmaW5kIGEgd2F5IHRvIGJsb2NrIHRoZSBjcm9zcy1m
cmFtZSBzY3JvbGwgY2hhaW5pbmcgaW4gV0sxLgorICAgICAgICAvLyBXZSBjYW4gbm90IGp1c3Qg
c2tpcCB0aGUgc2Nyb2xsIGhlcmUsIGl0IG5vdCBvbmx5IGJsb2NrcyBzY3JvbGwgY2hhaW5pbmcg
YnV0IGFsc28gYmxvY2tzIHRoZSBzY3JvbGwgb24gY3VycmVudCB2aWV3LgogICAgICAgICBbc3Vw
ZXIgc2Nyb2xsV2hlZWw6ZXZlbnRdOwogI2VuZGlmCiAgICAgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDQwMjYyMDZiNTRj
MzZkMzRhMWEzNjE2Y2Y1OGRkZjg3MjAwZGZhMjUuLjQzNmY4OTIwNGViYzBjYWJhYTJlY2RmYTZk
YmQ3MmFlZGFjZDdiNjYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MyBAQAorMjAyMS0wMy0xNSAgQ2F0aGll
IENoZW4gIDxjYXRoaWVjaGVuQGlnYWxpYS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBDU1Mgb3Zl
cnNjcm9sbC1iZWhhdmlvciBmb3Igc3luY2hyb25vdXMgc2Nyb2xsCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI5NjgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCYXNlZCBvbiBGcsOpZMOpcmljIFdhbmcn
cyBwYXRjaC4KKworICAgICAgICBUZXN0IG92ZXJzY3JvbGwtYmVoYXZpb3IgZm9yIG92ZXJmbG93
IGVsZW1lbnRzIGFuZCBpZnJhbWVzLiBUaGUgdGVzdHMgdHJpZ2dlciB3aGVlbCBzY3JvbGwgZXZl
bnRzCisgICAgICAgIGFuZCB3YWl0IC41cywgdGhlbiBjaGVjayB3aGV0aGVyIHNjcm9sbCBvY2N1
cnMgb3Igbm90LgorICAgICAgICBUaGUgdGVzdHMgYXJlIHNraXBwZWQgb24gaU9TIGZvciBvbmx5
IHN5bmNocm9ub3VzIHNjcm9sbCBhcmUgdGVzdGVkLgorICAgICAgICBGb3IgV0sxLCB0aGUgaWZy
YW1lIHRlc3RzIGZhaWwgYmVjYXVzZSBsYWNrIG9mIGludGVyZmFjZXMgdG8gY29udHJvbCBzY3Jv
bGwgY2hhaW5pbmcgaW4gV2ViSFRNTFZpZXcuCisKKyAgICAgICAgKiBUZXN0RXhwZWN0YXRpb25z
OiBXYWl0aW5nIC41cyBmb3IgZWFjaCBjYXNlIG1ha2VzIHRoZSB0ZXN0IHNsb3cuCisgICAgICAg
ICogZmFzdC9zY3JvbGxpbmcvcmVzb3VyY2VzL292ZXJzY3JvbGwtYmVoYXZpb3Itc3VwcG9ydC5q
czogQWRkZWQuCisgICAgICAgIChnZXREZWx0YXMpOgorICAgICAgICAoYXN5bmMgbW91c2VXaGVl
bFNjcm9sbEFuZFdhaXQpOgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92
ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGZhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Ny
b2xsLWJlaGF2aW9yLWlmcmFtZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
c2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVo
YXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xs
YWJsZS1lbGVtZW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL3N5bmMt
c2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3Jv
bGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2sx
L1Rlc3RFeHBlY3RhdGlvbnM6CisKKzIwMjEtMDItMDQgIFJvYiBCdWlzICA8cmJ1aXNAaWdhbGlh
LmNvbT4KKworICAgICAgICBNYWtlIHNob3VsZENvbXB1dGVMb2dpY2FsV2lkdGhGcm9tQXNwZWN0
UmF0aW9BbmRJbnNldHMgd3JpdGluZyBtb2RlIGF3YXJlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjEzMjgKKworICAgICAgICBSZXZpZXdlZCBieSBN
YW51ZWwgUmVnbyBDYXNhc25vdmFzLgorCisgICAgICAgIEVuYWJsZSBzb21lIHRlc3RzIHRoYXQg
cGFzcyBub3cuCisKKyAgICAgICAgKiBUZXN0RXhwZWN0YXRpb25zOgorCiAyMDIxLTAzLTA3ICBM
YXVybyBNb3VyYSAgPGxtb3VyYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHTElCXSBHYXJkZW5p
bmcgYW5kIHVwZGF0aW5nIGJhc2VsaW5lcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvVGVzdEV4
cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggNDRkMDk1Yzkw
NDNiMGE0YTY5MTE5M2Q5NjNiYmQwMTM3ZGNiNTAyZC4uYzJmMmRlNGI4NjdiZmY3MDU1NmZmYzE5
MDVlMDM0YTNjYjQ5MjMzMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9u
cworKysgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCkBAIC00ODM5LDMgKzQ4MzksOCBA
QCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtY291bnRlci1zdHlsZXMv
dXBwZXItcm9tYW4vY3NzMy1jb3VudGVyLQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvY3NzLWNvdW50ZXItc3R5bGVzL3VwcGVyLXJvbWFuL2NzczMtY291bnRlci1zdHlsZXMt
MDI0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL2Nzcy1jb3VudGVyLXN0eWxlcy91cHBlci1yb21hbi9jc3MzLWNvdW50ZXItc3R5
bGVzLTAyNGEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogCisjIE5lZWQgdG8gd2FpdCBhbmQg
Y2hlY2sgd2hldGhlciBzY3JvbGwgb2NjdXJzCitmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1v
dmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQuaHRtbCBbIFNsb3cgXQorZmFzdC9zY3JvbGxpbmcv
c3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUuaHRtbCBbIFNsb3cgXQorZmFz
dC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUt
ZWxlbWVudC5odG1sIFsgU2xvdyBdCitmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Ny
b2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUuaHRtbCBbIFNsb3cgXQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvcmVzb3VyY2VzL292ZXJzY3JvbGwtYmVoYXZp
b3Itc3VwcG9ydC5qcyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3Jlc291cmNlcy9vdmVy
c2Nyb2xsLWJlaGF2aW9yLXN1cHBvcnQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjMzZjM2YzBlMDZjM2VkZGRh
OWU2Y2FhZDAyZjZjZjNiNjQ4ZThiZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3Qvc2Nyb2xsaW5nL3Jlc291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXN1cHBvcnQuanMKQEAg
LTAsMCArMSw0MCBAQAorZnVuY3Rpb24gZ2V0RGVsdGFzKGRpcmVjdGlvbikgeworICAgIHZhciBk
ZWx0YVggPSAwOworICAgIHZhciBkZWx0YVkgPSAwOworICAgIGlmIChkaXJlY3Rpb24gPT0gImRv
d24iKQorICAgICAgICBkZWx0YVkgPSAtNTsKKyAgICBlbHNlIGlmIChkaXJlY3Rpb24gPT0gInVw
IikKKyAgICAgICAgZGVsdGFZID0gNTsKKyAgICBlbHNlIGlmIChkaXJlY3Rpb24gPT0gInJpZ2h0
IikKKyAgICAgICAgZGVsdGFYID0gLTU7CisgICAgZWxzZSBpZiAoZGlyZWN0aW9uID09ICJsZWZ0
IikKKyAgICAgICAgZGVsdGFYID0gNTsKKyAgICByZXR1cm4geworICAgICAgICBYOiBkZWx0YVgs
CisgICAgICAgIFk6IGRlbHRhWQorICAgIH07Cit9CisKK2FzeW5jIGZ1bmN0aW9uIG1vdXNlV2hl
ZWxTY3JvbGxBbmRXYWl0KHgsIHksIGJlZ2luWCwgYmVnaW5ZLCBkZWx0YVgsIGRlbHRhWSkKK3sK
KyAgICBpZiAoYmVnaW5YID09PSB1bmRlZmluZWQpCisgICAgICAgIGJlZ2luWCA9IDA7CisgICAg
aWYgKGJlZ2luWSA9PT0gdW5kZWZpbmVkKQorICAgICAgICBiZWdpblkgPSAtMTsKKworICAgIGlm
IChkZWx0YVggPT09IHVuZGVmaW5lZCkKKyAgICAgICAgZGVsdGFYID0gMDsKKyAgICBpZiAoZGVs
dGFZID09PSB1bmRlZmluZWQpCisgICAgICAgIGRlbHRhWSA9IC0xMDsKKworICAgIGV2ZW50U2Vu
ZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgs
IHkpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhiZWdpblgsIGJlZ2luWSwgImJlZ2FuIiwgIm5vbmUiKTsKKyAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZGVsdGFYLCBkZWx0YVksICJj
aGFuZ2VkIiwgIm5vbmUiKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgImVuZGVkIiwgIm5vbmUiKTsKKyAgICByZXR1cm4gbmV3
IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAg
ICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHJlc29sdmUpOworICAgICAgICB9LCA1MDApOwor
ICAgIH0pOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1z
Y3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVu
dC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjcxNTBmZjYwYjVkYmRkMGI0YTdhYzZmODNmYjU2
ZjU3Y2QyY2Q4MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5n
L3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwyMCBAQAorCitQQVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRo
IG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gYXV0by4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBz
Y3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gYXV0by4KK1BBU1MgRWxl
bWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29u
dGFpbiBhdXRvLgorUEFTUyBFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNj
cm9sbC1iZWhhdmlvcjogY29udGFpbiBhdXRvLgorUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Ny
b2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIGF1dG8uCitQQVNTIEVsZW1l
bnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIGF1
dG8uCitQQVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwt
YmVoYXZpb3I6IGF1dG8gY29udGFpbi4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVz
dCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gY29udGFpbi4KK1BBU1MgRWxlbWVudCBo
b3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBj
b250YWluLgorUEFTUyBFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9s
bC1iZWhhdmlvcjogY29udGFpbiBjb250YWluLgorUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Ny
b2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIGNvbnRhaW4uCitQQVNTIEVs
ZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25l
IGNvbnRhaW4uCitQQVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJz
Y3JvbGwtYmVoYXZpb3I6IGF1dG8gbm9uZS4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwg
dGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gbm9uZS4KK1BBU1MgRWxlbWVudCBo
b3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBu
b25lLgorUEFTUyBFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1i
ZWhhdmlvcjogY29udGFpbiBub25lLgorUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRl
c3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIG5vbmUuCitQQVNTIEVsZW1lbnQgdmVy
dGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIG5vbmUuCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJz
Y3JvbGwtYmVoYXZpb3ItZWxlbWVudC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcv
c3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50Lmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OTE2YzMxNDFiYWQ4MGNlZjIyYmUxZjFhMGVkZTA1NmYyY2RjMjExMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVo
YXZpb3ItZWxlbWVudC5odG1sCkBAIC0wLDAgKzEsODYgQEAKKzwhZG9jdHlwZSBodG1sPgorCis8
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXN1cHBvcnQuanMi
Pjwvc2NyaXB0PgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL2RyYWZ0cy5jc3N3Zy5v
cmcvY3NzLW92ZXJzY3JvbGwtYmVoYXZpb3IiPgorPHN0eWxlPgorICAgIC5zY3JvbGxpbmcgewor
ICAgICAgICBvdmVyZmxvdzogc2Nyb2xsOworICAgIH0KKyAgICAuc2Nyb2xsQ29udGVudCB7Cisg
ICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICB9CisgICAg
I3Jvb3QgeworICAgICAgICB3aWR0aDogMjAwcHg7CisgICAgICAgIGhlaWdodDogMjAwcHg7Cisg
ICAgfQorICAgICNzY3JvbGxlciB7CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgaGVp
Z2h0OiAxMDBweDsKKyAgICB9Cis8L3N0eWxlPgorPGRpdiBpZD0ncm9vdCcgY2xhc3M9InNjcm9s
bGluZyI+CisgICAgPGRpdiBpZD0nc2Nyb2xsZXInIGNsYXNzPSJzY3JvbGxpbmciPgorICAgICAg
ICA8ZGl2IGNsYXNzPSJzY3JvbGxDb250ZW50Ij48L2Rpdj4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2
IGNsYXNzPSJzY3JvbGxDb250ZW50Ij48L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0PgorY29uc3Qg
cm9vdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyb290Jyk7Citjb25zdCBzY3JvbGxlciA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY3JvbGxlcicpOwordmFyIG92ZXJzY3JvbGxEYXRh
cyA9IFtbImF1dG8iLCAiYXV0byIsIHRydWUsIHRydWVdLAorICAgICAgICAgICAgICAgICAgICAg
ICAgWyJjb250YWluIiwgImF1dG8iLCBmYWxzZSwgdHJ1ZV0sCisgICAgICAgICAgICAgICAgICAg
ICAgICBbIm5vbmUiLCAiYXV0byIsIGZhbHNlLCB0cnVlXSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIFsiYXV0byIsICJjb250YWluIiwgdHJ1ZSwgZmFsc2VdLAorICAgICAgICAgICAgICAgICAg
ICAgICAgWyJjb250YWluIiwgImNvbnRhaW4iLCBmYWxzZSwgZmFsc2VdLAorICAgICAgICAgICAg
ICAgICAgICAgICAgWyJub25lIiwgImNvbnRhaW4iLCBmYWxzZSwgZmFsc2VdLAorICAgICAgICAg
ICAgICAgICAgICAgICAgWyJhdXRvIiwgIm5vbmUiLCB0cnVlLCBmYWxzZV0sCisgICAgICAgICAg
ICAgICAgICAgICAgICBbImNvbnRhaW4iLCAibm9uZSIsIGZhbHNlLCBmYWxzZV0sCisgICAgICAg
ICAgICAgICAgICAgICAgICBbIm5vbmUiLCAibm9uZSIsIGZhbHNlLCBmYWxzZV1dOworCitmdW5j
dGlvbiByZXNldFRlc3QoKSB7CisgICAgLy8gVHJ5IHZhcmlvdXMgbWV0aG9kcyB0byBlbnN1cmUg
dGhlIGVsZW1lbnQgcG9zaXRpb24gaXMgcmVzZXQgaW1tZWRpYXRlbHkuCisgICAgc2Nyb2xsZXIu
c2Nyb2xsTGVmdCA9IDMwMDsKKyAgICBzY3JvbGxlci5zY3JvbGxUb3AgPSAzMDA7CisgICAgc2Ny
b2xsZXIuc2Nyb2xsVG8oMzAwLCAzMDApOworCisgICAgcm9vdC5zY3JvbGxMZWZ0ID0gMDsKKyAg
ICByb290LnNjcm9sbFRvcCA9IDA7CisgICAgcm9vdC5zY3JvbGxUbygwLCAwKTsKK30KKworZnVu
Y3Rpb24gc3RhcnRUZXN0KCkgeworICAgIG92ZXJzY3JvbGxEYXRhcy5mb3JFYWNoKChbb3ZlcnNj
cm9sbFgsIG92ZXJzY3JvbGxZLCBwcm9wYWdhdGVYLCBwcm9wYWdhdGVZXSkgPT4geworICAgICAg
ICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgICAgICAgICAgcmVzZXRUZXN0KCk7CisgICAgICAg
ICAgICBzY3JvbGxlci5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JYID0gb3ZlcnNjcm9sbFg7Cisg
ICAgICAgICAgICBzY3JvbGxlci5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JZID0gb3ZlcnNjcm9s
bFk7CisKKyAgICAgICAgICAgIHZhciB4ID0gc2Nyb2xsZXIuY2xpZW50V2lkdGggLyAyOworICAg
ICAgICAgICAgdmFyIHkgPSBzY3JvbGxlci5jbGllbnRIZWlnaHQgLyAyOworICAgICAgICAgICAg
dmFyIGRlbHRhID0gZ2V0RGVsdGFzKCJyaWdodCIpOworICAgICAgICAgICAgcmV0dXJuIG1vdXNl
V2hlZWxTY3JvbGxBbmRXYWl0KHgsIHksIGRlbHRhLlgsIGRlbHRhLlksIGRlbHRhLlgsIGRlbHRh
LlkpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3Jv
bGxMZWZ0ID4gMCwgcHJvcGFnYXRlWCwgJ0NvbnRpbnVlIHVwIHRoZSBob3Jpem9udGFsIHNjcm9s
bCBjaGFpbmluZycpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0sICdFbGVtZW50IGhvcml6
b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiAnICsgb3ZlcnNjcm9s
bFggKyAnICcgKyBvdmVyc2Nyb2xsWSArICcuJyk7CisKKyAgICAgICAgcHJvbWlzZV90ZXN0KCgp
ID0+IHsKKyAgICAgICAgICAgIHJlc2V0VGVzdCgpOworICAgICAgICAgICAgc2Nyb2xsZXIuc3R5
bGUub3ZlcnNjcm9sbEJlaGF2aW9yWCA9IG92ZXJzY3JvbGxYOworICAgICAgICAgICAgc2Nyb2xs
ZXIuc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWSA9IG92ZXJzY3JvbGxZOworCisgICAgICAgICAg
ICB2YXIgeCA9IHNjcm9sbGVyLmNsaWVudFdpZHRoIC8gMjsKKyAgICAgICAgICAgIHZhciB5ID0g
c2Nyb2xsZXIuY2xpZW50SGVpZ2h0IC8gMjsKKyAgICAgICAgICAgIHZhciBkZWx0YSA9IGdldERl
bHRhcygiZG93biIpOworICAgICAgICAgICAgcmV0dXJuIG1vdXNlV2hlZWxTY3JvbGxBbmRXYWl0
KHgsIHksIGRlbHRhLlgsIGRlbHRhLlksIGRlbHRhLlgsIGRlbHRhLlkpLnRoZW4oKCkgPT4gewor
ICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxUb3AgPiAwLCBwcm9wYWdh
dGVZLCAnQ29udGludWUgdXAgdGhlIHZlcnRpY2FsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAg
ICAgICAgfSk7CisgICAgICAgIH0sICdFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGgg
b3ZlcnNjcm9sbC1iZWhhdmlvcjogJyArIG92ZXJzY3JvbGxYICsgJyAnICsgb3ZlcnNjcm9sbFkg
KyAnLicpOworICAgIH0pOworfQorCithZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgc3RhcnRUZXN0
KTsKKzwvc2NyaXB0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3It
aWZyYW1lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Ny
b2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45
MDBhMGI3ZDkwNWI4N2MxZGI3NjI2OTRmZDAwNjM4ZjE5NzY5NTM3Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhh
dmlvci1pZnJhbWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjEgQEAKKworCitQQVNTIElmcmFt
ZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBh
dXRvLgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJl
aGF2aW9yOiBhdXRvIGF1dG8uCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdp
dGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBhdXRvLgorUEFTUyBJZnJhbWUgdmVydGlj
YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGF1dG8uCitQ
QVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlv
cjogbm9uZSBhdXRvLgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVy
c2Nyb2xsLWJlaGF2aW9yOiBub25lIGF1dG8uCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9s
bCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBjb250YWluLgorUEFTUyBJZnJh
bWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIGNv
bnRhaW4uCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9s
bC1iZWhhdmlvcjogY29udGFpbiBjb250YWluLgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xs
IHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGNvbnRhaW4uCitQQVNTIElm
cmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9u
ZSBjb250YWluLgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Ny
b2xsLWJlaGF2aW9yOiBub25lIGNvbnRhaW4uCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9s
bCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBub25lLgorUEFTUyBJZnJhbWUg
dmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIG5vbmUu
CitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhh
dmlvcjogY29udGFpbiBub25lLgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0
aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIG5vbmUuCitQQVNTIElmcmFtZSBob3Jpem9u
dGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBub25lLgorUEFT
UyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBu
b25lIG5vbmUuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMt
c2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmUyODg0NWRiNTA1YjRlMmU5ZDA0NTM4MjlkZjU5ZTUyZjYwMzg1MzMKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVy
c2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS5odG1sCkBAIC0wLDAgKzEsODggQEAKKzwhZG9jdHlwZSBo
dG1sPgorCis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXN1
cHBvcnQuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL2RyYWZ0
cy5jc3N3Zy5vcmcvY3NzLW92ZXJzY3JvbGwtYmVoYXZpb3IiPgorPHN0eWxlPgorICAgIC5zY3Jv
bGxpbmcgeworICAgICAgICBvdmVyZmxvdzogc2Nyb2xsOworICAgIH0KKyAgICAuc2Nyb2xsQ29u
dGVudCB7CisgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAg
ICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmVkLCBibHVlKTsKKyAg
ICB9CisgICAgI3Jvb3QgeworICAgICAgICB3aWR0aDogMjAwcHg7CisgICAgICAgIGhlaWdodDog
MjAwcHg7CisgICAgfQorICAgICNzY3JvbGxlciB7CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAg
ICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgICAgb3ZlcnNjcm9sbC1iZWhhdmlvci15OiBhdXRv
OworICAgIH0KKzwvc3R5bGU+Cis8ZGl2IGlkPSdyb290JyBjbGFzcz0ic2Nyb2xsaW5nIj4KKyAg
ICA8aWZyYW1lIGlkPSdzY3JvbGxlcicgc3JjZG9jPSI8aHRtbD48ZGl2IHN0eWxlPSd3aWR0aDog
MzAwcHg7IGhlaWdodDogMzAwcHg7Jz48L2Rpdj48L2h0bWw+CisgICAgICAgICI+PC9pZnJhbWU+
CisgICAgPGRpdiBjbGFzcz0ic2Nyb2xsQ29udGVudCI+PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlw
dD4KKyAgICBjb25zdCByb290ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jvb3QnKTsKKyAg
ICBjb25zdCBzY3JvbGxlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY3JvbGxlcicpOwor
ICAgIHZhciBvdmVyc2Nyb2xsRGF0YXMgPSBbWyJhdXRvIiwgImF1dG8iLCB0cnVlLCB0cnVlXSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImNvbnRhaW4iLCAiYXV0byIsIGZhbHNlLCB0
cnVlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIm5vbmUiLCAiYXV0byIsIGZhbHNl
LCB0cnVlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImF1dG8iLCAiY29udGFpbiIs
IHRydWUsIGZhbHNlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImNvbnRhaW4iLCAi
Y29udGFpbiIsIGZhbHNlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJu
b25lIiwgImNvbnRhaW4iLCBmYWxzZSwgZmFsc2VdLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFsiYXV0byIsICJub25lIiwgdHJ1ZSwgZmFsc2VdLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFsiY29udGFpbiIsICJub25lIiwgZmFsc2UsIGZhbHNlXSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBbIm5vbmUiLCAibm9uZSIsIGZhbHNlLCBmYWxzZV1dOworICAgIGZ1bmN0
aW9uIHJlc2V0VGVzdCgpIHsKKyAgICAgICAgLy8gVHJ5IHZhcmlvdXMgbWV0aG9kcyB0byBlbnN1
cmUgdGhlIGVsZW1lbnQgcG9zaXRpb24gaXMgcmVzZXQgaW1tZWRpYXRlbHkuCisgICAgICAgIHNj
cm9sbGVyLmNvbnRlbnRXaW5kb3cuc2Nyb2xsWCA9IDMwMDsKKyAgICAgICAgc2Nyb2xsZXIuY29u
dGVudFdpbmRvdy5zY3JvbGxZID0gMzAwOworICAgICAgICBzY3JvbGxlci5jb250ZW50V2luZG93
LnNjcm9sbFRvKDMwMCwgMzAwKTsKKworICAgICAgICByb290LnNjcm9sbExlZnQgPSAwOworICAg
ICAgICByb290LnNjcm9sbFRvcCA9IDA7CisgICAgICAgIHJvb3Quc2Nyb2xsVG8oMCwgMCk7Cisg
ICAgfQorCisgICAgZnVuY3Rpb24gb3ZlcnNjcm9sbEJlaGF2aW9yVGVzdCgpIHsKKyAgICAgICAg
b3ZlcnNjcm9sbERhdGFzLmZvckVhY2goKFtvdmVyc2Nyb2xsWCwgb3ZlcnNjcm9sbFksIHByb3Bh
Z2F0ZVgsIHByb3BhZ2F0ZVldKSA9PiB7CisgICAgICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4g
eworICAgICAgICAgICAgICAgIHJlc2V0VGVzdCgpOworICAgICAgICAgICAgICAgIHZhciB0YXJn
ZXQgPSBzY3JvbGxlci5jb250ZW50V2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJodG1sIilbMF07CisgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLm92ZXJzY3JvbGxCZWhh
dmlvclggPSBvdmVyc2Nyb2xsWDsKKyAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUub3ZlcnNj
cm9sbEJlaGF2aW9yWSA9IG92ZXJzY3JvbGxZOworCisgICAgICAgICAgICAgICAgdmFyIHggPSBz
Y3JvbGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAgICAgICAgICAgICAgdmFyIHkgPSBzY3JvbGxl
ci5jbGllbnRIZWlnaHQgLyAyOworICAgICAgICAgICAgICAgIHZhciBkZWx0YSA9IGdldERlbHRh
cygicmlnaHQiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbW91c2VXaGVlbFNjcm9sbEFuZFdh
aXQoeCwgeSwgZGVsdGEuWCwgZGVsdGEuWSwgZGVsdGEuWCwgZGVsdGEuWSkudGhlbigoKSA9PiB7
CisgICAgICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxMZWZ0ID4gMCwg
cHJvcGFnYXRlWCwgJ0NvbnRpbnVlIHVwIHRoZSBob3Jpem9udGFsIHNjcm9sbCBjaGFpbmluZycp
OworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSwgJ0lmcmFtZSBob3Jpem9udGFs
IHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogJyArIG92ZXJzY3JvbGxYICsg
JyAnICsgb3ZlcnNjcm9sbFkgKyAnLicpOworCisgICAgICAgICAgICBwcm9taXNlX3Rlc3QoKCkg
PT4geworICAgICAgICAgICAgICAgIHJlc2V0VGVzdCgpOworICAgICAgICAgICAgICAgIHZhciB0
YXJnZXQgPSBzY3JvbGxlci5jb250ZW50V2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJodG1sIilbMF07CisgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLm92ZXJzY3JvbGxC
ZWhhdmlvclggPSBvdmVyc2Nyb2xsWDsKKyAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUub3Zl
cnNjcm9sbEJlaGF2aW9yWSA9IG92ZXJzY3JvbGxZOworCisgICAgICAgICAgICAgICAgdmFyIHgg
PSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAgICAgICAgICAgICAgdmFyIHkgPSBzY3Jv
bGxlci5jbGllbnRIZWlnaHQgLyAyOworICAgICAgICAgICAgICAgIHZhciBkZWx0YSA9IGdldERl
bHRhcygiZG93biIpOworICAgICAgICAgICAgICAgIHJldHVybiBtb3VzZVdoZWVsU2Nyb2xsQW5k
V2FpdCh4LCB5LCBkZWx0YS5YLCBkZWx0YS5ZLCBkZWx0YS5YLCBkZWx0YS5ZKS50aGVuKCgpID0+
IHsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbFRvcCA+IDAs
IHByb3BhZ2F0ZVksICdDb250aW51ZSB1cCB0aGUgdmVydGljYWwgc2Nyb2xsIGNoYWluaW5nJyk7
CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9LCAnSWZyYW1lIHZlcnRpY2FsIHNj
cm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogJyArIG92ZXJzY3JvbGxYICsgJyAn
ICsgb3ZlcnNjcm9sbFkgKyAnLicpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBzY3JvbGxl
ci5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgb3ZlcnNjcm9sbEJlaGF2aW9yVGVzdCk7Cis8L3Nj
cmlwdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xs
YWJsZS1lbGVtZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5
bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmYzOTViNjQ4OGQwODcwYjk1NjFjMDI4Njc5ZDdlMTVhNDdmY2U2
ZTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNj
cm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50LWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDQgQEAKKworUEFTUyBVbnNjcm9sbGFibGUgZWxlbWVudCBob3Jpem9udGFs
IHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4KK1BBU1MgVW5zY3Jv
bGxhYmxlIGVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2
aW9yOiBub25lLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5j
LXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9y
LXVuc2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2NiNzczMzY1OWUyYmM0YWJk
NjUyNzE4OWNmNTA2ZDZmZWZhMjMwNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxl
LWVsZW1lbnQuaHRtbApAQCAtMCwwICsxLDY2IEBACis8IWRvY3R5cGUgaHRtbD4KKworPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvb3ZlcnNjcm9sbC1iZWhhdmlvci1zdXBwb3J0LmpzIj48L3Nj
cmlwdD4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nz
cy1vdmVyc2Nyb2xsLWJlaGF2aW9yIj4KKzxzdHlsZT4KKyAgICAuc2Nyb2xsaW5nIHsKKyAgICAg
ICAgb3ZlcmZsb3c6IHNjcm9sbDsKKyAgICB9CisgICAgLnNjcm9sbENvbnRlbnQgeworICAgICAg
ICB3aWR0aDogMzAwcHg7CisgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgfQorICAgICNyb290
IHsKKyAgICAgICAgd2lkdGg6IDIwMHB4OworICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAgIH0K
KyAgICAjc2Nyb2xsZXIgeworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDog
MTAwcHg7CisgICAgICAgIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmU7CisgICAgICAgIG92ZXJm
bG93OiB2aXNpYmxlOworICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVn
LCByZWQsIGJsdWUpOworICAgIH0KKzwvc3R5bGU+Cis8ZGl2IGlkPSJyb290IiBjbGFzcz0ic2Ny
b2xsaW5nIj4KKyAgICA8ZGl2IGlkPSJzY3JvbGxlciI+CisgICAgICAgIDxkaXYgY2xhc3M9InNj
cm9sbENvbnRlbnQiPjwvZGl2PgorICAgIDwvZGl2PgorICAgIDxkaXYgY2xhc3M9InNjcm9sbENv
bnRlbnQiPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+Citjb25zdCByb290ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ3Jvb3QnKTsKK2NvbnN0IHNjcm9sbGVyID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ3Njcm9sbGVyJyk7CitmdW5jdGlvbiByZXNldFRlc3QoKSB7CisgICAgcm9vdC5z
Y3JvbGxMZWZ0ID0gMDsKKyAgICByb290LnNjcm9sbFRvcCA9IDA7CisgICAgcm9vdC5zY3JvbGxU
bygwLCAwKTsKK30KKworZnVuY3Rpb24gc3RhcnRUZXN0KCkgeworICAgICAgICBwcm9taXNlX3Rl
c3QoKCkgPT4geworICAgICAgICAgICAgcmVzZXRUZXN0KCk7CisgICAgICAgICAgICB2YXIgeCA9
IHNjcm9sbGVyLmNsaWVudFdpZHRoIC8gMjsKKyAgICAgICAgICAgIHZhciB5ID0gc2Nyb2xsZXIu
Y2xpZW50SGVpZ2h0IC8gMjsKKyAgICAgICAgICAgIHZhciBkZWx0YSA9IGdldERlbHRhcygicmln
aHQiKTsKKyAgICAgICAgICAgIHJldHVybiBtb3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCh4LCB5LCBk
ZWx0YS5YLCBkZWx0YS5ZLCBkZWx0YS5YLCBkZWx0YS5ZKS50aGVuKCgpID0+IHsKKyAgICAgICAg
ICAgICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsTGVmdCA+IDAsIHRydWUsICdDb250aW51
ZSB1cCB0aGUgaG9yaXpvbnRhbCBzY3JvbGwgY2hhaW5pbmcnKTsKKyAgICAgICAgICAgIH0pOwor
ICAgICAgICB9LCAnVW5zY3JvbGxhYmxlIGVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3
aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuJyk7CisKKyAgICAgICAgcHJvbWlzZV90ZXN0
KCgpID0+IHsKKyAgICAgICAgICAgIHJlc2V0VGVzdCgpOworICAgICAgICAgICAgdmFyIHggPSBz
Y3JvbGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAgICAgICAgICB2YXIgeSA9IHNjcm9sbGVyLmNs
aWVudEhlaWdodCAvIDI7CisgICAgICAgICAgICB2YXIgZGVsdGEgPSBnZXREZWx0YXMoImRvd24i
KTsKKyAgICAgICAgICAgIHJldHVybiBtb3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCh4LCB5LCBkZWx0
YS5YLCBkZWx0YS5ZLCBkZWx0YS5YLCBkZWx0YS5ZKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAg
ICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsVG9wID4gMCwgdHJ1ZSwgJ0NvbnRpbnVlIHVw
IHRoZSB2ZXJ0aWNhbCBzY3JvbGwgY2hhaW5pbmcnKTsKKyAgICAgICAgICAgIH0pOworICAgICAg
ICB9LCAnVW5zY3JvbGxhYmxlIGVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVy
c2Nyb2xsLWJlaGF2aW9yOiBub25lLicpOworfQorCithZGRFdmVudExpc3RlbmVyKCJsb2FkIiwg
c3RhcnRUZXN0KTsKKzwvc2NyaXB0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwt
YmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9m
YXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJs
ZS1pZnJhbWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdmYTU5Y2NiYTc5YWVmZjMzZGE3MGU5
M2Q0ODhhMDdlZWM5YzU2OTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Nj
cm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJh
bWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorCisKK1BBU1MgVW5zY3JvbGxhYmxlIGlm
cmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9u
ZS4KK1BBU1MgVW5zY3JvbGxhYmxlIGlmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92
ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
c2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlm
cmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNj
cm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTI0MjVh
ZmM2MzdkZjUxZTQ0MTU0MjZhYjQ2N2M2MTRlMzhlZjYxNgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3It
dW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sCkBAIC0wLDAgKzEsNjYgQEAKKzwhZG9jdHlwZSBodG1s
PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXN1cHBv
cnQuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL2RyYWZ0cy5j
c3N3Zy5vcmcvY3NzLW92ZXJzY3JvbGwtYmVoYXZpb3IiPgorPHN0eWxlPgorICAgIC5zY3JvbGxp
bmcgeworICAgICAgICBvdmVyZmxvdzogc2Nyb2xsOworICAgIH0KKyAgICAuc2Nyb2xsQ29udGVu
dCB7CisgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICB9
CisgICAgI3Jvb3QgeworICAgICAgICB3aWR0aDogMjAwcHg7CisgICAgICAgIGhlaWdodDogMjAw
cHg7CisgICAgfQorICAgICNzY3JvbGxlciB7CisgICAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAg
ICAgaGVpZ2h0OiAyMDBweDsKKyAgICAgICAgb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZTsKKyAg
ICAgICAgb3ZlcmZsb3c6IHZpc2libGU7CisgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFk
aWVudCgxMzVkZWcsIHJlZCwgYmx1ZSk7CisgICAgfQorPC9zdHlsZT4KKzxkaXYgaWQ9J3Jvb3Qn
IGNsYXNzPSJzY3JvbGxpbmciPgorICAgIDxpZnJhbWUgaWQ9J3Njcm9sbGVyJyBzcmNkb2M9Ijxo
dG1sIHN0eWxlPSdvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lOyc+PGRpdiBzdHlsZT0nd2lkdGg6
IDEwMHB4OyBoZWlnaHQ6IDEwMHB4Oyc+PC9kaXY+PC9odG1sPgorICAgICAgICAiPjwvaWZyYW1l
PgorICAgIDxkaXYgY2xhc3M9InNjcm9sbENvbnRlbnQiPjwvZGl2PgorPC9kaXY+CisKKzxzY3Jp
cHQ+Citjb25zdCByb290ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jvb3QnKTsKK2NvbnN0
IHNjcm9sbGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Njcm9sbGVyJyk7CisKK2Z1bmN0
aW9uIHJlc2V0VGVzdCgpIHsKKyAgICByb290LnNjcm9sbExlZnQgPSAwOworICAgIHJvb3Quc2Ny
b2xsVG9wID0gMDsKKyAgICByb290LnNjcm9sbFRvKDAsIDApOworfQorCitmdW5jdGlvbiBzdGFy
dFRlc3QoKSB7CisgICAgICAgIHByb21pc2VfdGVzdCgoKSA9PiB7CisgICAgICAgICAgICByZXNl
dFRlc3QoKTsKKyAgICAgICAgICAgIHZhciB4ID0gc2Nyb2xsZXIuY2xpZW50V2lkdGggLyAyOwor
ICAgICAgICAgICAgdmFyIHkgPSBzY3JvbGxlci5jbGllbnRIZWlnaHQgLyAyOworICAgICAgICAg
ICAgdmFyIGRlbHRhID0gZ2V0RGVsdGFzKCJyaWdodCIpOworICAgICAgICAgICAgcmV0dXJuIG1v
dXNlV2hlZWxTY3JvbGxBbmRXYWl0KHgsIHksIGRlbHRhLlgsIGRlbHRhLlksIGRlbHRhLlgsIGRl
bHRhLlkpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5z
Y3JvbGxMZWZ0ID4gMCwgdHJ1ZSwgJ0NvbnRpbnVlIHVwIHRoZSBob3Jpem9udGFsIHNjcm9sbCBj
aGFpbmluZycpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0sICdVbnNjcm9sbGFibGUgaWZy
YW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25l
LicpOworCisgICAgICAgIHByb21pc2VfdGVzdCgoKSA9PiB7CisgICAgICAgICAgICByZXNldFRl
c3QoKTsKKyAgICAgICAgICAgIHZhciB4ID0gc2Nyb2xsZXIuY2xpZW50V2lkdGggLyAyOworICAg
ICAgICAgICAgdmFyIHkgPSBzY3JvbGxlci5jbGllbnRIZWlnaHQgLyAyOworICAgICAgICAgICAg
dmFyIGRlbHRhID0gZ2V0RGVsdGFzKCJkb3duIik7CisgICAgICAgICAgICByZXR1cm4gbW91c2VX
aGVlbFNjcm9sbEFuZFdhaXQoeCwgeSwgZGVsdGEuWCwgZGVsdGEuWSwgZGVsdGEuWCwgZGVsdGEu
WSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9s
bFRvcCA+IDAsIHRydWUsICdDb250aW51ZSB1cCB0aGUgdmVydGljYWwgc2Nyb2xsIGNoYWluaW5n
Jyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSwgJ1Vuc2Nyb2xsYWJsZSBpZnJhbWUgdmVy
dGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLicpOworfQor
CithZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgc3RhcnRUZXN0KTsKKzwvc2NyaXB0PgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lv
cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3Rh
dGlvbnMKaW5kZXggNWIxMjJjM2JkNDRhZDU5MTk0MmE0YmZhZWJhNjhmNjk3MjFmOTlkYy4uNDQ4
OGUwYmExM2QyZDFiNGYxZmIwM2Q4ZGU5NDA2NGUzNWFlN2JmZiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTc5NSw2ICs3OTUsMTIgQEAgc3ZnL3RleHQv
c2VsZWN0LXRleHQtc3ZnZm9udC5odG1sIFsgU2tpcCBdCiBzdmcvdGV4dC9zZWxlY3Rpb24tZG91
YmxlY2xpY2suc3ZnIFsgU2tpcCBdCiBzdmcvdGV4dC9zZWxlY3Rpb24tdHJpcGxlY2xpY2suc3Zn
IFsgU2tpcCBdCiAKKyMgT3ZlcnNjcm9sbC1iZWhhdmlvciBpcyBub3Qgc3VwcG9ydGVkIG9uIGlP
UworZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50
Lmh0bWwgWyBTa2lwIF0KK2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVo
YXZpb3ItaWZyYW1lLmh0bWwgWyBTa2lwIF0KK2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92
ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRtbCBbIFNraXAgXQorZmFz
dC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUt
aWZyYW1lLmh0bWwgWyBTa2lwIF0KKwogIyBJT1MgZG9lcyBub3QgaW1wbGVtZW50IHNldEF1dG9t
YXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkCiBlZGl0aW5nL2luc2VydGluZy90eXBpbmctc3BhY2Ut
dG8tdHJpZ2dlci1zbWFydC1saW5rLmh0bWwgWyBTa2lwIF0KIGVkaXRpbmcvaW5zZXJ0aW5nL3Nt
YXJ0LWxpbmstd2hlbi1jYXJldC1pcy1tb3ZlZC1iZWZvcmUtVVJMLmh0bWwgWyBTa2lwIF0KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAzMzQ1
MTA4NGVhNmQ5MDk1NzFjYTE0ODhlNmMxZDBmZWVmMjAyZDYzLi40NDlmZjMxZjYyMmFmY2VjN2Ji
NTQ0MjY4ZjFmNDgzNzQ0NTJiODgwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdr
MS9UZXN0RXhwZWN0YXRpb25zCkBAIC00NTMsNiArNDUzLDEwIEBAIGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1zY3JvbGwtc25hcC9zY3JvbGwtdGFyZ2V0LXBhZGRpbmct
MDAxLmh0CiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mtc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtc3RvcC1jaGFuZ2UuaHRtbCBbIEZhaWx1cmUgXQogY3NzMy9zY3JvbGwt
c25hcC9zY3JvbGwtcGFkZGluZy1tYWluZnJhbWUtcGFnaW5nLmh0bWwgWyBGYWlsdXJlIF0KIAor
IyBMYWNrIG9mIHdheXMgdG8gY29udHJvbCB0aGUgY3Jvc3MtZnJhbWUgc2Nyb2xsIGNoYWluaW5n
IGluIFdLMS4KK2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3It
aWZyYW1lLmh0bWwgWyBTa2lwIF0KK2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3Jv
bGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sIFsgU2tpcCBdCisKICMjIyBFTkQg
T0YgKDIpIEZhaWx1cmVzIHdpdGhvdXQgYnVnIHJlcG9ydHMKICMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423168</attachid>
            <date>2021-03-15 06:19:20 -0700</date>
            <delta_ts>2021-03-15 22:43:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222968-20210315211918.patch</filename>
            <type>text/plain</type>
            <size>60989</size>
            <attacher name="cathiechen">cathiechen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0NDE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWJmNDc4OWYyMmE2OTA3
MzY0ZTQyNWUxZmNhYTJkOTI3MDQ2NTRlYS4uNTQ2Njg4OTVkZmZiMzk4MjViOTI2NmIxYjRmOThm
NWJiMGEwNDdlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc0IEBACisyMDIxLTAzLTE1ICBDYXRo
aWUgQ2hlbiAgPGNhdGhpZWNoZW5AaWdhbGlhLmNvbT4KKworICAgICAgICBTdXBwb3J0IENTUyBv
dmVyc2Nyb2xsLWJlaGF2aW9yIGZvciBzeW5jaHJvbm91cyBzY3JvbGwKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjk2OAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJhc2VkIG9uIEZyw6lkw6lyaWMgV2Fu
ZydzIHBhdGNoLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYnJpbmdzIGluaXRpYWwgc3VwcG9ydCBv
ZiBDU1MgcHJvcGVydHkgb3ZlcnNjcm9sbC1iZWhhdmlvci4gT3ZlcnNjcm9sbC1iZWhhdmlvciBz
ZXRzIHdoYXQKKyAgICAgICAgdGhlIGJyb3dzZXIgZG9lcyB3aGVuIHJlYWNoaW5nIHRoZSBib3Vu
ZGFyeSBvZiBhIHNjcm9sbGluZyBhcmVhLiBGaXJlZm94IGFuZCBDaHJvbWl1bS12YXJpYW50IGJy
b3dzZXJzCisgICAgICAgIGFscmVhZHkgc3VwcG9ydCBpdC4gSXRzIHNwZWNpZmljYXRpb24gY2Fu
IGJlIGZvdW5kIGF0IGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3Mtb3ZlcnNjcm9sbC0xLyNv
dmVyc2Nyb2xsLWJlaGF2aW9yLXByb3BlcnRpZXMKKyAgICAgICAgVGhpcyBwYXRjaCBhaW1zIHRv
IHN1cHBvcnQgaXQgZm9yIHRoZSBzeW5jaHJvbm91cyBzY3JvbGwuIFRoZSBhc3luY2hyb25vdXMg
c2Nyb2xsIG9uIE1hYyB3aWxsIGJlIGNvdmVyZWQgbGF0ZXIuCisKKyAgICAgICAgQWNjb3JkaW5n
IHRvIHRoZSB2YWx1ZSBvZiBvdmVyc2Nyb2xsLWJlaGF2aW9yLCB0aGlzIHBhdGNoIGNvbnRyb2xz
IHRoZSBzY3JvbGwgY2hhaW5pbmcsIHRoZSBzY3JvbGwgc3RyZXRjaCwKKyAgICAgICAgYW5kIHN3
aXBlIGdlc3R1cmVzIGdlbmVyYXRpb24gb2YgdGhlIHN5bmNocm9ub3VzIHNjcm9sbC4gVG8gY29u
dHJvbCB0aGUgc2Nyb2xsIGNoYWluaW5nLAorICAgICAgICBtX3Njcm9sbENoYWluaW5nQmxvY2tl
ciBpcyBhZGRlZCB0byBFdmVudEhhbmxkZXIsIGl0IGlzIGdlbmVyYXRlZCBhY2NvcmRpbmcgdG8g
b3ZlcnNjcm9sbC1iZWhhdmlvciB2YWx1ZXMuCisgICAgICAgIEl0IGluZGljYXRlcyB3aGV0aGVy
IHRoZSBzY3JvbGwgY2hhaW5pbmcgb2YgdGhpcyBmcmFtZSBzaG91bGQgYmUgc3RvcHBlZCBvciBu
b3QuCisgICAgICAgIFRoZSBzY3JvbGwgY2hhaW5pbmcgaXMgaGFuZGxlZCBkaWZmZXJlbnRseSBi
eSBXSEVFTF9FVkVOVF9MQVRDSElORyBzZXR0aW5nLiBJZiBXSEVFTF9FVkVOVF9MQVRDSElORyBp
cyBvZmYsCisgICAgICAgIHRoZSBzY3JvbGwgY2hhaW5pbmcgaXMgaGFuZGxlZCBkaXJlY3RseSBp
biBFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94
KCkuCisgICAgICAgIElmIFdIRUVMX0VWRU5UX0xBVENISU5HIGlzIG9uLCB0aGUgbGF0Y2hlZCBz
Y3JvbGwgdGFyZ2V0IGlzIGFsd2F5cyBGcmFtZVZpZXcgaWYgaXQgbmVlZHMgdG8gc3RvcCB0aGUg
c2Nyb2xsIGNoYWluaW5nLgorICAgICAgICBJZiBjdXJyZW50IGZyYW1lIGlzIGEgc3ViZnJhbWUs
IHRoZSB2YWx1ZSBvZiBtX3Njcm9sbENoYWluaW5nQmxvY2tlciB3aWxsIGJlIHBhc3NlZCB0byBp
dHMgcGFyZW50IGZyYW1lLgorICAgICAgICBBbmQgZXZlbnR1YWxseSwgbGV0IHRoZSBtYWluZnJh
bWUgaGFuZGxlIG1fc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLiBUaGUgbWFpbmZyYW1lIGJsb2NrcyB2
ZXJ0aWNhbCBzY3JvbGwgY2hhaW5pbmcgZGlyZWN0bHksCisgICAgICAgIGFuZCBob3Jpem9udGFs
bHkgaXQgd2lsbCBsZXQgdGhlIHZpZXdzIGRlY2lkZSB3aGV0aGVyIGl0IHNob3VsZCBnZW5lcmF0
ZSBzd2lwZSBnZXN0dXJlcyBvciBub3QuCisgICAgICAgIEFib3V0IHRoZSBzY3JvbGwgc3RyZXRj
aCwgaXQgaXMgY2FuY2VsZWQgaWYgdGhlIHZhbHVlIG9mIG92ZXJzY3JvbGwtYmVoYXZpb3IgaXMg
bm9uZS4KKworICAgICAgICBUZXN0czogZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNj
cm9sbC1iZWhhdmlvci1lbGVtZW50Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvc2Nyb2xsaW5n
L3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0bWwKKyAgICAgICAgICAg
ICAgIGZhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3Jv
bGxhYmxlLWVsZW1lbnQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9zY3JvbGxpbmcvc3luYy1z
Y3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLmh0bWwKKworICAg
ICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZVBh
cmVudEZyYW1lU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKTogVXBkYXRlIG1fc2Nyb2xsQ2hhaW5pbmdC
bG9ja2VyIGZvciBwYXJlbnQgZnJhbWUuCisgICAgICAgIChXZWJDb3JlOjpjaGVja1Njcm9sbENo
YWluaW5nQmxvY2tlckZvckZyYW1lVmlldyk6IENoZWNrIGlmIG1fc2Nyb2xsQ2hhaW5pbmdCbG9j
a2VyIGJsb2NrcyB0aGUgc2Nyb2xsIGNoYWluaW5nIG9uIEZyYW1lVmlldywKKyAgICAgICAgZGVh
bCB3aXRoIGhvcml6b250YWwgYW5kIHZlcnRpY2FsIHNjcm9sbCBjaGFpbmluZyBkaWZmZXJlbnRs
eSwgYW5kIHVwZGF0ZSB0aGUgZGVsdGEgb2YgV2hlZWxFdmVudCBpZiBpdCBkb2Vzbid0IGJsb2Nr
IHRoZSBzY3JvbGwgY2hhaW5pbmcuCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6Omhh
bmRsZVdoZWVsRXZlbnRJbnRlcm5hbCk6IElmIGl0J3MgbWFpbiBmcmFtZSwgYmxvY2sgc2Nyb2xs
IGNoYWluaW5nIGJ5IHRoZSB2YWx1ZSBvZiBtX3Njcm9sbENoYWluaW5nQmxvY2tlci4KKyAgICAg
ICAgSWYgaXQncyBzdWJmcmFtZSwgcGFzcyBtX3Njcm9sbENoYWluaW5nQmxvY2tlciB2YWx1ZSB0
byBwYXJlbnQgZnJhbWUuIAorICAgICAgICAoV2ViQ29yZTo6ZGlkU2Nyb2xsSW5TY3JvbGxhYmxl
QXJlYSk6IEZpbHRlciB0aGUgc2Nyb2xsIGRlbHRhIGJ5IHRoZSBTY3JvbGxDaGFpbmluZ0Jsb2Nr
ZXIgdmFsdWUuCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZl
bnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94KTogQmxvY2sgc2Nyb2xsIGNoYWluaW5nIGFjY29y
ZGluZyB0byB0aGUgdmFsdWUgb2YgbV9zY3JvbGxDaGFpbmluZ0Jsb2NrZXIuCisgICAgICAgIChX
ZWJDb3JlOjpFdmVudEhhbmRsZXI6OnVwZGF0ZVNjcm9sbENoYWluaW5nQmxvY2tlcik6CisgICAg
ICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnJlc2V0U2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKToK
KyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5oOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6aG9yaXpvbnRhbE92ZXJzY3JvbGxC
ZWhhdmlvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnZlcnRpY2FsT3Zl
cnNjcm9sbEJlaGF2aW9yIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5oOgorICAg
ICAgICAqIHBhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmZp
bmRFbmNsb3NpbmdTY3JvbGxhYmxlQ29udGFpbmVyKTogVXBkYXRlIHRoZSB2YWx1ZSBvZiBTY3Jv
bGxDaGFpbmluZ0Jsb2NrZXIgYW5kIHJldHVybiBudWxsIGlmIHNob3VsZEJsb2NrU2Nyb2xsQ2hh
aW5pbmcoKS4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZGV0ZXJtaW5lV2hlZWxF
dmVudFRhcmdldCk6IElmIHNob3VsZEJsb2NrU2Nyb2xsQ2hhaW5pbmcoKSwgRnJhbWVWaWV3IHdp
bGwgYmUgdGhlIGxhdGNoZWQgc2Nyb2xsIHRhcmdldC4KKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0
Zm9ybVdoZWVsRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtV2hlZWxFdmVudDo6
d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwpOiBNb3ZlZCBmcm9tIFNjcm9sbENvbnRy
b2xsZXIubW0KKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxUeXBlcy5oOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsQ2hhaW5pbmdCbG9ja2VyOjpzaG91bGRCbG9ja1Njcm9sbENoYWluaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbENoYWluaW5nQmxvY2tlcjo6ZmlsdGVyRGVsdGEpOgor
ICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGFibGVBcmVhOjp1cGRhdGVTY3JvbGxDaGFpbmluZ0Jsb2NrZXJTdGF0ZSBjb25zdCk6
CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGFibGVBcmVhOjpob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGFibGVBcmVhOjp2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlv
ciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JNYWM6OnNob3VsZEZvcndhcmRXaGVlbEV2
ZW50c1RvUGFyZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTWFj
OjphbGxvd3NWZXJ0aWNhbFN0cmV0Y2hpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsQW5pbWF0b3JNYWM6OmFsbG93c0hvcml6b250YWxTdHJldGNoaW5nIGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xsQ29udHJvbGxlci5tbToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbENvbnRyb2xsZXI6OmRpcmVjdGlvbkZyb21FdmVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxDb250cm9sbGVyOjp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbCk6IERl
bGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6aG9yaXpvbnRh
bE92ZXJzY3JvbGxCZWhhdmlvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
clNjcm9sbGFibGVBcmVhOjp2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvciBjb25zdCk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuaDoKKwogMjAyMS0wMy0x
NSAgSW1hbm9sIEZlcm5hbmRleiAgPGlmZXJuYW5kZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBT
cGxpdCBXZWJYUiBmZWF0dXJlcyBpbnRvIGVuYWJsZWRGZWF0dXJlcywgc3VwcG9ydGVkRmVhdHVy
ZXMgYW5kIHJlcXVlc3RlZEZlYXR1cmVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXgg
Yzc3YzBmMjg2M2UxODkyODcxY2JhMDg5ZTAwMDVjMjU0MWQ4NzdhZC4uYjU3ZGE0MWYyMzY2NjE5
NjE0MmUwZjdmOTAzMWFiNDk2ZGRjNThkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE3IEBACisyMDIxLTAzLTE1ICBDYXRoaWUgQ2hlbiAgPGNhdGhpZWNoZW5AaWdh
bGlhLmNvbT4KKworICAgICAgICBTdXBwb3J0IENTUyBvdmVyc2Nyb2xsLWJlaGF2aW9yIGZvciBz
eW5jaHJvbm91cyBzY3JvbGwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyMjk2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEJhc2VkIG9uIEZyw6lkw6lyaWMgV2FuZydzIHBhdGNoLgorCisgICAgICAgIE5l
ZWQgdG8gZmluZCBhIHdheSB0byBibG9jayB0aGUgY3Jvc3MtZnJhbWUgc2Nyb2xsIGNoYWluaW5n
IGluIFdLMS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06CisgICAgICAgICgt
W1dlYkhUTUxWaWV3IHNjcm9sbFdoZWVsOl0pOgorCiAyMDIxLTAzLTExICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgSW50cm9kdWNlIFdvcmtRdWV1ZTo6bWFpbigp
IHRvIGdldCB0aGUgbWFpbiB0aHJlYWQncyB3b3JrIHF1ZXVlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50
SGFuZGxlci5jcHAKaW5kZXggMmYxOGUxZWVlOTg0ZTkwMWQxNGU1Yjk1MmVjNTFhMGIyM2FlNGU4
Yi4uZWE0MTIwNjY0Mjg3MzFmOTA2Y2ZkYWJlY2E0Nzg1Y2FiYzQ3MWRmMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtMjg1Nyw2ICsyODU3LDU2IEBAIGJvb2wgRXZlbnRI
YW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxF
dmVudCwgT3B0aW9uCiAgICAgcmV0dXJuIGhhbmRsZWQ7CiB9CiAKKyNpZiBFTkFCTEUoV0hFRUxf
RVZFTlRfTEFUQ0hJTkcpCitzdGF0aWMgdm9pZCB1cGRhdGVQYXJlbnRGcmFtZVNjcm9sbENoYWlu
aW5nQmxvY2tlcihjb25zdCBTY3JvbGxhYmxlQXJlYSogc2Nyb2xsYWJsZUFyZWEsIEZyYW1lJiBm
cmFtZSwgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyJiBibG9ja2VyKQoreworICAgIGF1dG8qIHBhcmVu
dCA9IGZyYW1lLnRyZWUoKS5wYXJlbnQoKTsKKyAgICBpZiAoIXNjcm9sbGFibGVBcmVhKQorICAg
ICAgICBzY3JvbGxhYmxlQXJlYSA9IGZyYW1lLnZpZXcoKTsKKyAgICBpZiAoIWZyYW1lLnBhZ2Uo
KSB8fCAhcGFyZW50IHx8ICFzY3JvbGxhYmxlQXJlYSkKKyAgICAgICAgcmV0dXJuOworICAgIHNj
cm9sbGFibGVBcmVhLT51cGRhdGVTY3JvbGxDaGFpbmluZ0Jsb2NrZXJTdGF0ZShibG9ja2VyKTsK
KyAgICBwYXJlbnQtPmV2ZW50SGFuZGxlcigpLnVwZGF0ZVNjcm9sbENoYWluaW5nQmxvY2tlcihi
bG9ja2VyKTsKK30KKworc3RhdGljIGJvb2wgY2hlY2tTY3JvbGxDaGFpbmluZ0Jsb2NrZXJGb3JG
cmFtZVZpZXcoY29uc3QgU2Nyb2xsYWJsZUFyZWEqIHNjcm9sbGFibGVBcmVhLCBGcmFtZSYgZnJh
bWUsIFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgU2Nyb2xsQ2hhaW5pbmdCbG9ja2Vy
IHNjcm9sbENoYWluaW5nQmxvY2tlciwgYm9vbCYgaGFuZGxlZEV2ZW50KQoreworICAgIGlmICgh
c2Nyb2xsYWJsZUFyZWEpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChzY3JvbGxh
YmxlQXJlYSAhPSBmcmFtZS52aWV3KCkpIHsKKyAgICAgICAgLy8gV2hlZWwgZXZlbnQgaXMgZ29p
bmcgdG8gYmUgaGFuZGxlZCBieSBGcmFtZVZpZXcgaW4gcHJvY2Vzc1doZWVsRXZlbnRGb3JTY3Jv
bGxpbmcoKSwKKyAgICAgICAgLy8gc2hvdWxkIGxldCBzY3JvbGxhYmxlQXJlYSdzIG92ZXJzY3Jv
bGwtYmVoYXZpb3IgZWZmZWN0IFNjcm9sbENoYWluaW5nQmxvY2tlci4KKyAgICAgICAgc2Nyb2xs
YWJsZUFyZWEtPnVwZGF0ZVNjcm9sbENoYWluaW5nQmxvY2tlclN0YXRlKHNjcm9sbENoYWluaW5n
QmxvY2tlcik7CisgICAgfQorCisgICAgRmxvYXRTaXplIGZpbHRlcmVkRGVsdGEod2hlZWxFdmVu
dC5kZWx0YVgoKSwgd2hlZWxFdmVudC5kZWx0YVkoKSk7CisgICAgYXV0byBiaWFzZWREZWx0YSA9
IFBsYXRmb3JtV2hlZWxFdmVudDo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoZmls
dGVyZWREZWx0YSk7CisgICAgaWYgKHNjcm9sbENoYWluaW5nQmxvY2tlci5ibG9ja1ggJiYgIWJp
YXNlZERlbHRhLmhlaWdodCgpKSB7CisgICAgICAgIC8vIElmIHRoZSBob3Jpem9udGFsIHNjcm9s
bCBjaGFpbmluZyBpcyBibG9ja2VkIGJ5IG92ZXJzY3JvbGwtYmVoYXZpb3IgaW4gYSBzdWJmcmFt
ZS4KKyAgICAgICAgLy8gSXQgcHJvcGFnYXRlcyBpdHMgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIHRv
IHBhcmVudCBmcmFtZXMgYW5kIGV2ZW50dWFsbHkgbGV0IG1haW5mcmFtZQorICAgICAgICAvLyBk
ZWNpZGUgd2hldGhlciBuZWVkIHRvIHRyaWdnZXIgYSBzd2lwZSBnZXN0dXJlIG9yIG5vdC4KKyAg
ICAgICAgaWYgKGZyYW1lLmlzTWFpbkZyYW1lKCkpIHsKKyAgICAgICAgICAgIC8vIEluIG1haW4g
ZnJhbWUsIHRyaWdnZXIgdGhlIHN3aXBlIGdlc3R1cmUgaWYgbmVlZGVkLgorICAgICAgICAgICAg
aGFuZGxlZEV2ZW50ID0gIWJpYXNlZERlbHRhLndpZHRoKCk7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICB1cGRhdGVQYXJlbnRGcmFtZVNjcm9sbENoYWluaW5nQmxvY2tlcihzY3JvbGxh
YmxlQXJlYSwgZnJhbWUsIHNjcm9sbENoYWluaW5nQmxvY2tlcik7CisgICAgICAgICAgICBoYW5k
bGVkRXZlbnQgPSBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisKKyAgICBpZiAoU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyOjpzaG91bGRCbG9ja1Njcm9sbENoYWlu
aW5nKHNjcm9sbENoYWluaW5nQmxvY2tlciwgYmlhc2VkRGVsdGEpKSB7CisgICAgICAgIGhhbmRs
ZWRFdmVudCA9IHRydWU7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIFNjcm9s
bENoYWluaW5nQmxvY2tlcjo6ZmlsdGVyRGVsdGEoc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLCBiaWFz
ZWREZWx0YSwgZmlsdGVyZWREZWx0YSk7CisgICAgd2hlZWxFdmVudCA9IHdoZWVsRXZlbnQuY29w
eVdpdGhEZWx0YXNBbmRWZWxvY2l0eShmaWx0ZXJlZERlbHRhLndpZHRoKCksIGZpbHRlcmVkRGVs
dGEuaGVpZ2h0KCksIHdoZWVsRXZlbnQuc2Nyb2xsaW5nVmVsb2NpdHkoKSk7CisgICAgcmV0dXJu
IGZhbHNlOworfQorI2VuZGlmCisKIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50
SW50ZXJuYWwoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCwgT3B0aW9uU2V0PFdoZWVs
RXZlbnRQcm9jZXNzaW5nU3RlcHM+IHByb2Nlc3NpbmdTdGVwcywgT3B0aW9uU2V0PEV2ZW50SGFu
ZGxpbmc+JiBoYW5kbGluZykKIHsKICAgICBhdXRvKiBkb2N1bWVudCA9IG1fZnJhbWUuZG9jdW1l
bnQoKTsKQEAgLTI4ODksNiArMjkzOSw4IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVl
bEV2ZW50SW50ZXJuYWwoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCwgT3B0CiAgICAg
YXV0byBkZWZlcnJlciA9IFdoZWVsRXZlbnRUZXN0TW9uaXRvckNvbXBsZXRpb25EZWZlcnJlciB7
IG1vbml0b3IuZ2V0KCksIHRoaXMsIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6RGVmZXJSZWFzb246
OkhhbmRsaW5nV2hlZWxFdmVudE9uTWFpblRocmVhZCB9OwogI2VuZGlmCiAKKyAgICByZXNldFNj
cm9sbENoYWluaW5nQmxvY2tlcigpOworCiAgICAgbV9pc0hhbmRsaW5nV2hlZWxFdmVudCA9IHRy
dWU7CiAgICAgYXV0byBhbGxvd3NTY3JvbGxpbmdTdGF0ZSA9IFNldEZvclNjb3BlKG1fY3VycmVu
dFdoZWVsRXZlbnRBbGxvd3NTY3JvbGxpbmcsIHByb2Nlc3NpbmdTdGVwcy5jb250YWlucyhXaGVl
bEV2ZW50UHJvY2Vzc2luZ1N0ZXBzOjpNYWluVGhyZWFkRm9yU2Nyb2xsaW5nKSk7CiAgICAgCkBA
IC0yOTEzLDExICsyOTY1LDE5IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50
SW50ZXJuYWwoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCwgT3B0CiAgICAgLy8gaXRz
ZWxmIGZpbmRzIGFuZCB0cmllcyB0byBzY3JvbGwgb3ZlcmZsb3cgc2Nyb2xsZXJzLgogICAgIGRl
dGVybWluZVdoZWVsRXZlbnRUYXJnZXQoZXZlbnQsIGVsZW1lbnQsIHNjcm9sbGFibGVBcmVhLCBp
c092ZXJXaWRnZXQpOwogCisgICAgYXV0byBvbGRCbG9ja2VyID0gbV9zY3JvbGxDaGFpbmluZ0Js
b2NrZXI7CiAgICAgaWYgKGVsZW1lbnQpIHsKICAgICAgICAgaWYgKGlzT3ZlcldpZGdldCkgewog
ICAgICAgICAgICAgaWYgKFdlYWtQdHI8V2lkZ2V0PiB3aWRnZXQgPSB3aWRnZXRGb3JFbGVtZW50
KCplbGVtZW50KSkgewogICAgICAgICAgICAgICAgIGlmIChwYXNzV2hlZWxFdmVudFRvV2lkZ2V0
KGV2ZW50LCAqd2lkZ2V0LmdldCgpLCBwcm9jZXNzaW5nU3RlcHMpKQogICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gY29tcGxldGVXaWRnZXRXaGVlbEV2ZW50KGV2ZW50LCB3aWRnZXQsIHNjcm9s
bGFibGVBcmVhKTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChtX3Njcm9sbENoYWluaW5nQmxv
Y2tlci5ibG9ja1ggIT0gb2xkQmxvY2tlci5ibG9ja1ggfHwgbV9zY3JvbGxDaGFpbmluZ0Jsb2Nr
ZXIuYmxvY2tZICE9IG9sZEJsb2NrZXIuYmxvY2tZKSB7CisgICAgICAgICAgICAgICAgICAgIC8v
IElmIG1fc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIGlzIGNoYW5nZWQgaW4gc3ViZnJhbWVzLCB0aGUg
bGFjaGVkIHN0YXRlIHNob3VsZCBiZSBjYWxjdWxhdGVkIGFnYWluLgorICAgICAgICAgICAgICAg
ICAgICBpZiAoZXZlbnQuaXNHZXN0dXJlU3RhcnQoKSkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgY2xlYXJMYXRjaGVkU3RhdGUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRldGVybWlu
ZVdoZWVsRXZlbnRUYXJnZXQoZXZlbnQsIGVsZW1lbnQsIHNjcm9sbGFibGVBcmVhLCBpc092ZXJX
aWRnZXQpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgfQogICAgICAgICB9CiAKQEAgLTI5NDksMTIgKzMwMDksMjkgQEAgYm9vbCBFdmVudEhh
bmRsZXI6OmhhbmRsZVdoZWVsRXZlbnRJbnRlcm5hbChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQm
IGV2ZW50LCBPcHQKICNpZiBFTkFCTEUoV0hFRUxfRVZFTlRfTEFUQ0hJTkcpCiAgICAgaWYgKGFs
bG93U2Nyb2xsaW5nKQogICAgICAgICBhbGxvd1Njcm9sbGluZyA9IG1fZnJhbWUucGFnZSgpLT5z
Y3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIoKS5sYXRjaGluZ0FsbG93c1Njcm9sbGluZ0luRnJhbWUo
bV9mcmFtZSwgc2Nyb2xsYWJsZUFyZWEpOworICAgIGlmICghKGFsbG93U2Nyb2xsaW5nIHx8IG1f
ZnJhbWUuaXNNYWluRnJhbWUoKSkpCisgICAgICAgIHVwZGF0ZVBhcmVudEZyYW1lU2Nyb2xsQ2hh
aW5pbmdCbG9ja2VyKHNjcm9sbGFibGVBcmVhLmdldCgpLCBtX2ZyYW1lLCBtX3Njcm9sbENoYWlu
aW5nQmxvY2tlcik7CiAjZW5kaWYKIAogICAgIGlmIChhbGxvd1Njcm9sbGluZykgewotICAgICAg
ICAvLyBGSVhNRTogcHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxpbmcoKSBpcyBvbmx5IGNhbGxl
ZCBmb3IgRnJhbWVWaWV3IHNjcm9sbGluZywgbm90IG92ZXJmbG93IHNjcm9sbGluZywgd2hpY2gg
aXMgY29uZnVzaW5nLgotICAgICAgICBoYW5kbGVkRXZlbnQgPSBwcm9jZXNzV2hlZWxFdmVudEZv
clNjcm9sbGluZyhldmVudCwgc2Nyb2xsYWJsZUFyZWEsIGhhbmRsaW5nKTsKLSAgICAgICAgcHJv
Y2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxTbmFwKGV2ZW50LCBzY3JvbGxhYmxlQXJlYSk7CisgICAg
ICAgIFBsYXRmb3JtV2hlZWxFdmVudCBhZGp1c3RlZFdoZWVsRXZlbnQgPSBQbGF0Zm9ybVdoZWVs
RXZlbnQoZXZlbnQpOworICAgICAgICBib29sIHNjcm9sbENoYWluaW5nU3RvcHBlZCA9IGZhbHNl
OworI2lmIEVOQUJMRShXSEVFTF9FVkVOVF9MQVRDSElORykKKyAgICAgICAgc2Nyb2xsQ2hhaW5p
bmdTdG9wcGVkID0gY2hlY2tTY3JvbGxDaGFpbmluZ0Jsb2NrZXJGb3JGcmFtZVZpZXcoc2Nyb2xs
YWJsZUFyZWEuZ2V0KCksIG1fZnJhbWUsIGFkanVzdGVkV2hlZWxFdmVudCwgbV9zY3JvbGxDaGFp
bmluZ0Jsb2NrZXIsIGhhbmRsZWRFdmVudCk7CisjZW5kaWYKKyAgICAgICAgaWYgKCFzY3JvbGxD
aGFpbmluZ1N0b3BwZWQpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBwcm9jZXNzV2hlZWxFdmVu
dEZvclNjcm9sbGluZygpIGlzIG9ubHkgY2FsbGVkIGZvciBGcmFtZVZpZXcgc2Nyb2xsaW5nLCBu
b3Qgb3ZlcmZsb3cgc2Nyb2xsaW5nLCB3aGljaCBpcyBjb25mdXNpbmcuCisgICAgICAgICAgICBo
YW5kbGVkRXZlbnQgPSBwcm9jZXNzV2hlZWxFdmVudEZvclNjcm9sbGluZyhhZGp1c3RlZFdoZWVs
RXZlbnQsIHNjcm9sbGFibGVBcmVhLCBoYW5kbGluZyk7CisgICAgICAgICAgICBwcm9jZXNzV2hl
ZWxFdmVudEZvclNjcm9sbFNuYXAoYWRqdXN0ZWRXaGVlbEV2ZW50LCBzY3JvbGxhYmxlQXJlYSk7
CisgICAgICAgIH0KKyNpZiAhRU5BQkxFKFdIRUVMX0VWRU5UX0xBVENISU5HKQorICAgICAgICBp
ZiAoYXV0byogdmlldyA9IG1fZnJhbWUudmlldygpKSB7CisgICAgICAgICAgICBpZiAoIWhhbmRs
ZWRFdmVudCkgeworICAgICAgICAgICAgICAgIGF1dG8gYmlhc2VkRGVsdGEgPSBQbGF0Zm9ybVdo
ZWVsRXZlbnQ6OndoZWVsRGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRpY2FsKGFkanVzdGVkV2hlZWxF
dmVudC5kZWx0YSgpKTsKKyAgICAgICAgICAgICAgICBoYW5kbGVkRXZlbnQgPSBTY3JvbGxDaGFp
bmluZ0Jsb2NrZXI6OnNob3VsZEJsb2NrU2Nyb2xsQ2hhaW5pbmcobV9zY3JvbGxDaGFpbmluZ0Js
b2NrZXIsIGJpYXNlZERlbHRhKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorI2VuZGlmCiAg
ICAgfQogCiAgICAgcmV0dXJuIGhhbmRsZWRFdmVudDsKQEAgLTI5NzEsMjAgKzMwNDgsMjMgQEAg
c3RhdGljIHZvaWQgaGFuZGxlV2hlZWxFdmVudFBoYXNlSW5TY3JvbGxhYmxlQXJlYShTY3JvbGxh
YmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEKICNlbmRpZgogfQogCi1zdGF0aWMgYm9vbCBkaWRTY3Jv
bGxJblNjcm9sbGFibGVBcmVhKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSwgY29uc3Qg
V2hlZWxFdmVudCYgd2hlZWxFdmVudCkKK3N0YXRpYyBib29sIGRpZFNjcm9sbEluU2Nyb2xsYWJs
ZUFyZWEoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhLCBjb25zdCBXaGVlbEV2ZW50JiB3
aGVlbEV2ZW50LCBjb25zdCBTY3JvbGxDaGFpbmluZ0Jsb2NrZXImIGJsb2NrZXIpCiB7CisgICAg
RmxvYXRTaXplIGZpbHRlcmVkRGVsdGEod2hlZWxFdmVudC5kZWx0YVgoKSwgd2hlZWxFdmVudC5k
ZWx0YVkoKSk7CisgICAgYXV0byBiaWFzZWREZWx0YSA9IFBsYXRmb3JtV2hlZWxFdmVudDo6d2hl
ZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoZmlsdGVyZWREZWx0YSk7CisgICAgU2Nyb2xs
Q2hhaW5pbmdCbG9ja2VyOjpmaWx0ZXJEZWx0YShibG9ja2VyLCBiaWFzZWREZWx0YSwgZmlsdGVy
ZWREZWx0YSk7CiAgICAgU2Nyb2xsR3JhbnVsYXJpdHkgc2Nyb2xsR3JhbnVsYXJpdHkgPSB3aGVl
bEdyYW51bGFyaXR5VG9TY3JvbGxHcmFudWxhcml0eSh3aGVlbEV2ZW50LmRlbHRhTW9kZSgpKTsK
ICAgICBib29sIGRpZEhhbmRsZVdoZWVsRXZlbnQgPSBmYWxzZTsKLSAgICBpZiAoZmxvYXQgYWJz
b2x1dGVEZWx0YSA9IHN0ZDo6YWJzKHdoZWVsRXZlbnQuZGVsdGFYKCkpKQotICAgICAgICBkaWRI
YW5kbGVXaGVlbEV2ZW50IHw9IHNjcm9sbGFibGVBcmVhLnNjcm9sbCh3aGVlbEV2ZW50LmRlbHRh
WCgpID4gMCA/IFNjcm9sbFJpZ2h0IDogU2Nyb2xsTGVmdCwgc2Nyb2xsR3JhbnVsYXJpdHksIGFi
c29sdXRlRGVsdGEpOworICAgIGlmIChmbG9hdCBhYnNvbHV0ZURlbHRhID0gc3RkOjphYnMoZmls
dGVyZWREZWx0YS53aWR0aCgpKSkKKyAgICAgICAgZGlkSGFuZGxlV2hlZWxFdmVudCB8PSBzY3Jv
bGxhYmxlQXJlYS5zY3JvbGwoZmlsdGVyZWREZWx0YS53aWR0aCgpID4gMCA/IFNjcm9sbFJpZ2h0
IDogU2Nyb2xsTGVmdCwgc2Nyb2xsR3JhbnVsYXJpdHksIGFic29sdXRlRGVsdGEpOwogCi0gICAg
aWYgKGZsb2F0IGFic29sdXRlRGVsdGEgPSBzdGQ6OmFicyh3aGVlbEV2ZW50LmRlbHRhWSgpKSkK
LSAgICAgICAgZGlkSGFuZGxlV2hlZWxFdmVudCB8PSBzY3JvbGxhYmxlQXJlYS5zY3JvbGwod2hl
ZWxFdmVudC5kZWx0YVkoKSA+IDAgPyBTY3JvbGxEb3duIDogU2Nyb2xsVXAsIHNjcm9sbEdyYW51
bGFyaXR5LCBhYnNvbHV0ZURlbHRhKTsKKyAgICBpZiAoZmxvYXQgYWJzb2x1dGVEZWx0YSA9IHN0
ZDo6YWJzKGZpbHRlcmVkRGVsdGEuaGVpZ2h0KCkpKQorICAgICAgICBkaWRIYW5kbGVXaGVlbEV2
ZW50IHw9IHNjcm9sbGFibGVBcmVhLnNjcm9sbChmaWx0ZXJlZERlbHRhLmhlaWdodCgpID4gMCA/
IFNjcm9sbERvd24gOiBTY3JvbGxVcCwgc2Nyb2xsR3JhbnVsYXJpdHksIGFic29sdXRlRGVsdGEp
OwogCiAgICAgcmV0dXJuIGRpZEhhbmRsZVdoZWVsRXZlbnQ7CiB9CiAKLWJvb2wgRXZlbnRIYW5k
bGVyOjpoYW5kbGVXaGVlbEV2ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2luZ0JveChOb2RlKiBzdGFy
dE5vZGUsIGNvbnN0IFdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIGNvbnN0IEZsb2F0U2l6ZSYgZmls
dGVyZWRQbGF0Zm9ybURlbHRhLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlcmVkVmVsb2NpdHksIE9w
dGlvblNldDxFdmVudEhhbmRsaW5nPiBldmVudEhhbmRsaW5nKQorYm9vbCBFdmVudEhhbmRsZXI6
OmhhbmRsZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94KE5vZGUqIHN0YXJ0Tm9k
ZSwgY29uc3QgV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgRmxvYXRTaXplJiBmaWx0ZXJlZFBsYXRm
b3JtRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyZWRWZWxvY2l0eSwgT3B0aW9uU2V0PEV2
ZW50SGFuZGxpbmc+IGV2ZW50SGFuZGxpbmcpCiB7CiAgICAgYm9vbCBzaG91bGRIYW5kbGVFdmVu
dCA9IHdoZWVsRXZlbnQuZGVsdGFYKCkgfHwgd2hlZWxFdmVudC5kZWx0YVkoKTsKICNpZiBFTkFC
TEUoV0hFRUxfRVZFTlRfTEFUQ0hJTkcpCkBAIC0zMDA2LDIxICszMDg2LDI5IEBAIGJvb2wgRXZl
bnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2luZ0JveChOb2Rl
KiBzdGFydE5vZGUsIGNvCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChpczxSZW5k
ZXJMaXN0Qm94Pihpbml0aWFsRW5jbG9zaW5nQm94KSkKLSAgICAgICAgcmV0dXJuIGRpZFNjcm9s
bEluU2Nyb2xsYWJsZUFyZWEoZG93bmNhc3Q8UmVuZGVyTGlzdEJveD4oaW5pdGlhbEVuY2xvc2lu
Z0JveCksIHdoZWVsRXZlbnQpOworICAgICAgICByZXR1cm4gZGlkU2Nyb2xsSW5TY3JvbGxhYmxl
QXJlYShkb3duY2FzdDxSZW5kZXJMaXN0Qm94Pihpbml0aWFsRW5jbG9zaW5nQm94KSwgd2hlZWxF
dmVudCwgbV9zY3JvbGxDaGFpbmluZ0Jsb2NrZXIpOwogCisgICAgYXV0byBiaWFzZWREZWx0YSA9
IFBsYXRmb3JtV2hlZWxFdmVudDo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoRmxv
YXRTaXplKHdoZWVsRXZlbnQuZGVsdGFYKCksIHdoZWVsRXZlbnQuZGVsdGFZKCkpKTsKICAgICBS
ZW5kZXJCb3gqIGN1cnJlbnRFbmNsb3NpbmdCb3ggPSAmaW5pdGlhbEVuY2xvc2luZ0JveDsKICAg
ICB3aGlsZSAoY3VycmVudEVuY2xvc2luZ0JveCkgewogICAgICAgICBpZiAoYXV0byogYm94TGF5
ZXIgPSBjdXJyZW50RW5jbG9zaW5nQm94LT5sYXllcigpID8gY3VycmVudEVuY2xvc2luZ0JveC0+
bGF5ZXIoKS0+c2Nyb2xsYWJsZUFyZWEoKSA6IG51bGxwdHIpIHsKICAgICAgICAgICAgIGF1dG8g
cGxhdGZvcm1FdmVudCA9IHdoZWVsRXZlbnQudW5kZXJseWluZ1BsYXRmb3JtRXZlbnQoKTsKICAg
ICAgICAgICAgIGJvb2wgc2Nyb2xsaW5nV2FzSGFuZGxlZDsKICAgICAgICAgICAgIGlmIChwbGF0
Zm9ybUV2ZW50KSB7CisgICAgICAgICAgICAgICAgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyOjpmaWx0
ZXJEZWx0YShtX3Njcm9sbENoYWluaW5nQmxvY2tlciwgYmlhc2VkRGVsdGEsIGZpbHRlcmVkUGxh
dGZvcm1EZWx0YSk7CiAgICAgICAgICAgICAgICAgYXV0byBjb3BpZWRFdmVudCA9IHBsYXRmb3Jt
RXZlbnQtPmNvcHlXaXRoRGVsdGFzQW5kVmVsb2NpdHkoZmlsdGVyZWRQbGF0Zm9ybURlbHRhLndp
ZHRoKCksIGZpbHRlcmVkUGxhdGZvcm1EZWx0YS5oZWlnaHQoKSwgZmlsdGVyZWRWZWxvY2l0eSk7
CiAgICAgICAgICAgICAgICAgc2Nyb2xsaW5nV2FzSGFuZGxlZCA9IGhhbmRsZVdoZWVsRXZlbnRJ
blNjcm9sbGFibGVBcmVhKGNvcGllZEV2ZW50LCAqYm94TGF5ZXIsIGV2ZW50SGFuZGxpbmcpOwog
ICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgc2Nyb2xsaW5nV2FzSGFuZGxlZCA9
IGRpZFNjcm9sbEluU2Nyb2xsYWJsZUFyZWEoKmJveExheWVyLCB3aGVlbEV2ZW50KTsKKyAgICAg
ICAgICAgICAgICBzY3JvbGxpbmdXYXNIYW5kbGVkID0gZGlkU2Nyb2xsSW5TY3JvbGxhYmxlQXJl
YSgqYm94TGF5ZXIsIHdoZWVsRXZlbnQsIG1fc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKTsKIAogICAg
ICAgICAgICAgaWYgKHNjcm9sbGluZ1dhc0hhbmRsZWQpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisKKyAgICAgICAgICAgIGlmIChjdXJyZW50RW5jbG9zaW5nQm94LT5lbGVtZW50KCkg
IT0gY3VycmVudEVuY2xvc2luZ0JveC0+ZG9jdW1lbnQoKS5kb2N1bWVudEVsZW1lbnQoKSkgewor
ICAgICAgICAgICAgICAgIGJveExheWVyLT51cGRhdGVTY3JvbGxDaGFpbmluZ0Jsb2NrZXJTdGF0
ZShtX3Njcm9sbENoYWluaW5nQmxvY2tlcik7CisgICAgICAgICAgICAgICAgaWYgKFNjcm9sbENo
YWluaW5nQmxvY2tlcjo6c2hvdWxkQmxvY2tTY3JvbGxDaGFpbmluZyhtX3Njcm9sbENoYWluaW5n
QmxvY2tlciwgYmlhc2VkRGVsdGEpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIGN1cnJlbnRFbmNsb3NpbmdCb3gg
PSBjdXJyZW50RW5jbG9zaW5nQm94LT5jb250YWluaW5nQmxvY2soKTsKQEAgLTQ2MzQsNCArNDcy
MiwxNSBAQCBib29sIEV2ZW50SGFuZGxlcjo6cGFzc01vdXNlTW92ZUV2ZW50VG9TdWJmcmFtZShN
b3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBtbwogfQogI2VuZGlmIC8vICFQTEFURk9STShD
T0NPQSkgJiYgIVBMQVRGT1JNKFdJTikKIAordm9pZCBFdmVudEhhbmRsZXI6OnVwZGF0ZVNjcm9s
bENoYWluaW5nQmxvY2tlcihjb25zdCBTY3JvbGxDaGFpbmluZ0Jsb2NrZXImIGJsb2NrZXIpCit7
CisgICAgbV9zY3JvbGxDaGFpbmluZ0Jsb2NrZXIuYmxvY2tYIHw9IGJsb2NrZXIuYmxvY2tYOwor
ICAgIG1fc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLmJsb2NrWSB8PSBibG9ja2VyLmJsb2NrWTsKK30K
Kwordm9pZCBFdmVudEhhbmRsZXI6OnJlc2V0U2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKCkKK3sKKyAg
ICBtX3Njcm9sbENoYWluaW5nQmxvY2tlciA9IHsgZmFsc2UsIGZhbHNlIH07Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCmluZGV4IDVkMDQy
MDM4YmYzNGJmODlmZmUzZGI5OTQ3NjM3Mzc4ODk0NTI4NzkuLjRiNDdmYTY0ODhhMTU1NTQ5M2Mz
MjkyODBiZWYyNDNmZmNiODg1NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZl
bnRIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaApAQCAt
MjE0LDYgKzIxNCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlZmF1bHRXaGVlbEV2ZW50SGFuZGxl
cihOb2RlKiwgV2hlZWxFdmVudCYpOwogICAgIHZvaWQgd2hlZWxFdmVudFdhc1Byb2Nlc3NlZEJ5
TWFpblRocmVhZChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBPcHRpb25TZXQ8RXZlbnRIYW5k
bGluZz4pOwogCisgICAgdm9pZCB1cGRhdGVTY3JvbGxDaGFpbmluZ0Jsb2NrZXIoY29uc3QgU2Ny
b2xsQ2hhaW5pbmdCbG9ja2VyJik7CisgICAgdm9pZCByZXNldFNjcm9sbENoYWluaW5nQmxvY2tl
cigpOworCiAgICAgYm9vbCBoYW5kbGVQYXN0ZUdsb2JhbFNlbGVjdGlvbihjb25zdCBQbGF0Zm9y
bU1vdXNlRXZlbnQmKTsKIAogI2lmIEVOQUJMRShJT1NfVE9VQ0hfRVZFTlRTKSB8fCBFTkFCTEUo
SU9TX0dFU1RVUkVfRVZFTlRTKQpAQCAtNDcwLDcgKzQ3Myw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBwcm9jZXNzV2hlZWxFdmVudEZvclNjcm9sbFNuYXAoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50
JiwgY29uc3QgV2Vha1B0cjxTY3JvbGxhYmxlQXJlYT4mKTsKICAgICBib29sIGNvbXBsZXRlV2lk
Z2V0V2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBjb25zdCBXZWFrUHRyPFdp
ZGdldD4mLCBjb25zdCBXZWFrUHRyPFNjcm9sbGFibGVBcmVhPiYpOwogCi0gICAgYm9vbCBoYW5k
bGVXaGVlbEV2ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2luZ0JveChOb2RlKiBzdGFydE5vZGUsIGNv
bnN0IFdoZWVsRXZlbnQmLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlcmVkUGxhdGZvcm1EZWx0YSwg
Y29uc3QgRmxvYXRTaXplJiBmaWx0ZXJlZFZlbG9jaXR5LCBPcHRpb25TZXQ8RXZlbnRIYW5kbGlu
Zz4pOworICAgIGJvb2wgaGFuZGxlV2hlZWxFdmVudEluQXBwcm9wcmlhdGVFbmNsb3NpbmdCb3go
Tm9kZSogc3RhcnROb2RlLCBjb25zdCBXaGVlbEV2ZW50JiwgRmxvYXRTaXplJiBmaWx0ZXJlZFBs
YXRmb3JtRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyZWRWZWxvY2l0eSwgT3B0aW9uU2V0
PEV2ZW50SGFuZGxpbmc+KTsKIAogICAgIGJvb2wgaGFuZGxlV2hlZWxFdmVudEluU2Nyb2xsYWJs
ZUFyZWEoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgU2Nyb2xsYWJsZUFyZWEmLCBPcHRpb25T
ZXQ8RXZlbnRIYW5kbGluZz4pOwogICAgIE9wdGlvbmFsPFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRl
PiB1cGRhdGVXaGVlbEdlc3R1cmVTdGF0ZShjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBPcHRp
b25TZXQ8RXZlbnRIYW5kbGluZz4pOwpAQCAtNjQ2LDYgKzY0OSw4IEBAIHByaXZhdGU6CiAgICAg
SW50UG9pbnQgbV90YXJnZXRBdXRvc2Nyb2xsUG9zaXRpb25JblVuc2Nyb2xsZWRSb290Vmlld0Nv
b3JkaW5hdGVzOwogICAgIE9wdGlvbmFsPEludFBvaW50PiBtX2luaXRpYWxUYXJnZXRBdXRvc2Ny
b2xsUG9zaXRpb25JblVuc2Nyb2xsZWRSb290Vmlld0Nvb3JkaW5hdGVzOwogI2VuZGlmCisKKyAg
ICBTY3JvbGxDaGFpbmluZ0Jsb2NrZXIgbV9zY3JvbGxDaGFpbmluZ0Jsb2NrZXIgeyBmYWxzZSwg
ZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmNwcAppbmRleCA2ODNlMzZlZjU1ZjJhOTM1ZDkwYWI1NTBkYzU5NjFhMjBmOTA4YzM5Li5h
Njg5ZGIzZGEwOGNkZWVmMGRhZjQ0YzZmZGFkMDI5YmUzODk4ZTY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuY3BwCkBAIC00MTksNiArNDE5LDI2IEBAIGJvb2wgRnJhbWVWaWV3OjpkaWRGaXJz
dExheW91dCgpIGNvbnN0CiAgICAgcmV0dXJuIGxheW91dENvbnRleHQoKS5kaWRGaXJzdExheW91
dCgpOwogfQogCitPdmVyc2Nyb2xsQmVoYXZpb3IgRnJhbWVWaWV3Ojpob3Jpem9udGFsT3ZlcnNj
cm9sbEJlaGF2aW9yKCkgY29uc3QKK3sKKyAgICBhdXRvKiBkb2N1bWVudCA9IGZyYW1lKCkuZG9j
dW1lbnQoKTsKKyAgICBhdXRvIHNjcm9sbGluZ09iamVjdCA9IGRvY3VtZW50ICYmIGRvY3VtZW50
LT5kb2N1bWVudEVsZW1lbnQoKSA/IGRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKS0+cmVuZGVy
ZXIoKSA6IG51bGxwdHI7CisgICAgLy8gQW4gZWxlbWVudCB0aGF0IGlzIG5vdCBzY3JvbGwgY29u
dGFpbmVyIG11c3QgYWNjZXB0IGJ1dCBpZ25vcmUgdGhlIHZhbHVlcyBvZiB0aGlzIHByb3BlcnR5
LgorICAgIGlmIChzY3JvbGxpbmdPYmplY3QgJiYgcmVuZGVyVmlldygpICYmIHJlbmRlclZpZXco
KS0+Y2FuQmVTY3JvbGxlZEFuZEhhc1Njcm9sbGFibGVBcmVhKCkpCisgICAgICAgIHJldHVybiBz
Y3JvbGxpbmdPYmplY3QtPnN0eWxlKCkub3ZlcnNjcm9sbEJlaGF2aW9yWCgpOworICAgIHJldHVy
biBTY3JvbGxhYmxlQXJlYTo6aG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpOworfQorCitP
dmVyc2Nyb2xsQmVoYXZpb3IgRnJhbWVWaWV3Ojp2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigp
ICBjb25zdAoreworICAgIGF1dG8qIGRvY3VtZW50ID0gZnJhbWUoKS5kb2N1bWVudCgpOworICAg
IGF1dG8gc2Nyb2xsaW5nT2JqZWN0ID0gZG9jdW1lbnQgJiYgZG9jdW1lbnQtPmRvY3VtZW50RWxl
bWVudCgpID8gZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpLT5yZW5kZXJlcigpIDogbnVsbHB0
cjsKKyAgICAvLyBBbiBlbGVtZW50IHRoYXQgaXMgbm90IHNjcm9sbCBjb250YWluZXIgbXVzdCBh
Y2NlcHQgYnV0IGlnbm9yZSB0aGUgdmFsdWVzIG9mIHRoaXMgcHJvcGVydHkuCisgICAgaWYgKHNj
cm9sbGluZ09iamVjdCAmJiByZW5kZXJWaWV3KCkgJiYgcmVuZGVyVmlldygpLT5jYW5CZVNjcm9s
bGVkQW5kSGFzU2Nyb2xsYWJsZUFyZWEoKSkKKyAgICAgICAgcmV0dXJuIHNjcm9sbGluZ09iamVj
dC0+c3R5bGUoKS5vdmVyc2Nyb2xsQmVoYXZpb3JZKCk7CisgICAgcmV0dXJuIFNjcm9sbGFibGVB
cmVhOjp2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpOworfQorCiB2b2lkIEZyYW1lVmlldzo6
aW52YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICBpZiAoIXBhcmVudCgp
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCBjZTdlOWExNjdjYTA3NGY4YzIxYzFmZDZl
YTc1ZjkxNWFmYWE0NWE2Li5iMTNjN2IyYmRkMGU2MmI5YmYzODYzOGFmZjA1ZGM1MmVmN2JkZjVj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTY4MSw2ICs2ODEsOSBAQCBwdWJsaWM6CiAK
ICAgICBTdHJpbmcgZGVidWdEZXNjcmlwdGlvbigpIGNvbnN0IGZpbmFsOwogCisgICAgT3ZlcnNj
cm9sbEJlaGF2aW9yIGhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdCBmaW5hbDsK
KyAgICBPdmVyc2Nyb2xsQmVoYXZpb3IgdmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25z
dCBmaW5hbDsKKwogICAgIC8vIFNjcm9sbFZpZXcKICAgICB2b2lkIHVwZGF0ZVNjcm9sbGJhclN0
ZXBzKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2
ZW50SGFuZGxlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1h
Yy5tbQppbmRleCA4NjQ2NWY4MDVlMjA1MzU2ODcwNjRjMmZmNzYwNGQ1Yjg5YTQyNDdkLi45Y2U2
MzhkNTQ2Zjc3ZjkyYTRjNTFhNjc3ZTRhMThmZjE3NTViMDZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tCkBAIC03OTcsMTMgKzc5NywxOCBAQCBzdGF0aWMg
U2Nyb2xsYWJsZUFyZWEqIHNjcm9sbGFibGVBcmVhRm9yQm94KFJlbmRlckJveCYgYm94KQogfQog
CiAvLyBGSVhNRTogVGhpcyBjb3VsZCBiZSB3cml0dGVuIGluIHRlcm1zIG9mIFNjcm9sbGFibGVB
cmVhOjplbmNsb3NpbmdTY3JvbGxhYmxlQXJlYSgpLgotc3RhdGljIENvbnRhaW5lck5vZGUqIGZp
bmRFbmNsb3NpbmdTY3JvbGxhYmxlQ29udGFpbmVyKENvbnRhaW5lck5vZGUqIG5vZGUsIGNvbnN0
IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCkKKy8vIERvIG5vdCB1cGRhdGUgbV9zY3Jv
bGxDaGFpbmluZ0Jsb2NrZXIgaGVyZSwgdXBkYXRlIGl0IGluIEV2ZW50SGFuZGxlcjo6ZGVmYXVs
dFdoZWVsRXZlbnRIYW5kbGVyIGxhdGVyIHdoZW4gcGFzcyBFdmVudFBhdGgsCisvLyBvdGhlcndp
c2UgdGhlIFdoZWVsRXZlbnQgZGVsdGEgb2YgZWxlbWVudCB3aXRoICFvdmVyc2Nyb2xsLWJlaGF2
aW9yOmF1dG8gd2lsbCBiZSBjaGFuZ2VkLgorc3RhdGljIENvbnRhaW5lck5vZGUqIGZpbmRFbmNs
b3NpbmdTY3JvbGxhYmxlQ29udGFpbmVyKENvbnRhaW5lck5vZGUqIG5vZGUsIGNvbnN0IFBsYXRm
b3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyJiBzY3JvbGxD
aGFpbmluZ0Jsb2NrZXIpCiB7Ci0gICAgYXV0byBiaWFzZWREZWx0YSA9IFNjcm9sbENvbnRyb2xs
ZXI6OndoZWVsRGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRpY2FsKHdoZWVsRXZlbnQpOworICAgIGF1
dG8gYmlhc2VkRGVsdGEgPSBQbGF0Zm9ybVdoZWVsRXZlbnQ6OndoZWVsRGVsdGFCaWFzaW5nVG93
YXJkc1ZlcnRpY2FsKHdoZWVsRXZlbnQuZGVsdGEoKSk7CiAKICAgICAvLyBGaW5kIHRoZSBmaXJz
dCBub2RlIHdpdGggYSB2YWxpZCBzY3JvbGxhYmxlIGFyZWEgc3RhcnRpbmcgd2l0aCB0aGUgY3Vy
cmVudAogICAgIC8vIG5vZGUgYW5kIHRyYXZlcnNpbmcgaXRzIHBhcmVudHMgKG9yIHNoYWRvdyBo
b3N0cykuCiAgICAgZm9yIChDb250YWluZXJOb2RlKiBjYW5kaWRhdGUgPSBub2RlOyBjYW5kaWRh
dGU7IGNhbmRpZGF0ZSA9IGNhbmRpZGF0ZS0+cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpKSB7Cisg
ICAgICAgIGlmIChTY3JvbGxDaGFpbmluZ0Jsb2NrZXI6OnNob3VsZEJsb2NrU2Nyb2xsQ2hhaW5p
bmcoc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLCBiaWFzZWREZWx0YSkpCisgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKwogICAgICAgICBpZiAoaXM8SFRNTElGcmFtZUVsZW1lbnQ+KCpjYW5kaWRh
dGUpKQogICAgICAgICAgICAgY29udGludWU7CiAKQEAgLTgxMyw3ICs4MTgsNyBAQCBzdGF0aWMg
Q29udGFpbmVyTm9kZSogZmluZEVuY2xvc2luZ1Njcm9sbGFibGVDb250YWluZXIoQ29udGFpbmVy
Tm9kZSogbm9kZSwgY29ucwogICAgICAgICBSZW5kZXJCb3gqIGJveCA9IGNhbmRpZGF0ZS0+cmVu
ZGVyQm94KCk7CiAgICAgICAgIGlmICghYm94IHx8ICFib3gtPmNhbkJlU2Nyb2xsZWRBbmRIYXNT
Y3JvbGxhYmxlQXJlYSgpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIAorCiAgICAg
ICAgIGF1dG8qIHNjcm9sbGFibGVBcmVhID0gc2Nyb2xsYWJsZUFyZWFGb3JCb3goKmJveCk7CiAg
ICAgICAgIGlmICghc2Nyb2xsYWJsZUFyZWEpCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTgy
Niw4ICs4MzEsMTEgQEAgc3RhdGljIENvbnRhaW5lck5vZGUqIGZpbmRFbmNsb3NpbmdTY3JvbGxh
YmxlQ29udGFpbmVyKENvbnRhaW5lck5vZGUqIG5vZGUsIGNvbnMKIAogICAgICAgICBpZiAoYmlh
c2VkRGVsdGEud2lkdGgoKSAmJiAhc2Nyb2xsYWJsZUFyZWEtPmlzUGlubmVkRm9yU2Nyb2xsRGVs
dGFPbkF4aXMoLWJpYXNlZERlbHRhLndpZHRoKCksIFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRh
bCkpCiAgICAgICAgICAgICByZXR1cm4gY2FuZGlkYXRlOworCisgICAgICAgIGlmIChjYW5kaWRh
dGUgIT0gY2FuZGlkYXRlLT5kb2N1bWVudCgpLmRvY3VtZW50RWxlbWVudCgpKQorICAgICAgICAg
ICAgc2Nyb2xsYWJsZUFyZWEtPnVwZGF0ZVNjcm9sbENoYWluaW5nQmxvY2tlclN0YXRlKHNjcm9s
bENoYWluaW5nQmxvY2tlcik7CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9
CiAKQEAgLTg3MiwxMCArODgwLDExIEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpkZXRlcm1pbmVXaGVl
bEV2ZW50VGFyZ2V0KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVuCiAgICAgaWYg
KCF2aWV3KQogICAgICAgICByZXR1cm47CiAKKyAgICBTY3JvbGxDaGFpbmluZ0Jsb2NrZXIgYmxv
Y2tlciA9IG1fc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyOwogICAgIGlmIChldmVudFRhcmdldElzUGxh
dGZvcm1XaWRnZXQod2hlZWxFdmVudFRhcmdldC5nZXQoKSkpCiAgICAgICAgIHNjcm9sbGFibGVB
cmVhID0gc2Nyb2xsYWJsZUFyZWFGb3JFdmVudFRhcmdldCh3aGVlbEV2ZW50VGFyZ2V0LmdldCgp
KTsKICAgICBlbHNlIHsKLSAgICAgICAgYXV0byogc2Nyb2xsYWJsZUNvbnRhaW5lciA9IGZpbmRF
bmNsb3NpbmdTY3JvbGxhYmxlQ29udGFpbmVyKHdoZWVsRXZlbnRUYXJnZXQuZ2V0KCksIHdoZWVs
RXZlbnQpOworICAgICAgICBhdXRvKiBzY3JvbGxhYmxlQ29udGFpbmVyID0gZmluZEVuY2xvc2lu
Z1Njcm9sbGFibGVDb250YWluZXIod2hlZWxFdmVudFRhcmdldC5nZXQoKSwgd2hlZWxFdmVudCwg
YmxvY2tlcik7CiAgICAgICAgIGlmIChzY3JvbGxhYmxlQ29udGFpbmVyKQogICAgICAgICAgICAg
c2Nyb2xsYWJsZUFyZWEgPSBzY3JvbGxhYmxlQXJlYUZvckNvbnRhaW5lck5vZGUoKnNjcm9sbGFi
bGVDb250YWluZXIpOwogICAgICAgICBlbHNlCkBAIC04OTMsNiArOTAyLDkgQEAgdm9pZCBFdmVu
dEhhbmRsZXI6OmRldGVybWluZVdoZWVsRXZlbnRUYXJnZXQoY29uc3QgUGxhdGZvcm1XaGVlbEV2
ZW50JiB3aGVlbEV2ZW4KICAgICBpZiAobV9mcmFtZS5pc01haW5GcmFtZSgpICYmIHdoZWVsRXZl
bnQuaXNHZXN0dXJlU3RhcnQoKSkKICAgICAgICAgcGFnZS0+d2hlZWxFdmVudERlbHRhRmlsdGVy
KCktPmJlZ2luRmlsdGVyaW5nRGVsdGFzKCk7CiAKKyAgICAvLyBXaGVuIHRoZSBsYWNoZWQgbm9k
ZSBpcyBkZXRlcm1pbmVkLCB3ZSBzaG91bGQgdXBkYXRlIG1fc2Nyb2xsQ2hhaW5pbmdCbG9ja2Vy
IGhlcmUsIGZvciBpdCB3b24ndCBwYXNzIHRoZSB0cmVlIGluIEV2ZW50SGFuZGxlcjo6ZGVmYXVs
dFdoZWVsRXZlbnRIYW5kbGVyLgorICAgIC8vIE90aGVyd2lzZSwgbV9zY3JvbGxDaGFpbmluZ0Js
b2NrZXIgc2hvdWxkIGJlIHVwZGF0ZSBpbiBFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnRJ
bkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94LgorICAgIHVwZGF0ZVNjcm9sbENoYWluaW5nQmxvY2tl
cihibG9ja2VyKTsKICAgICBwYWdlLT5zY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIoKS51cGRhdGVB
bmRGZXRjaExhdGNoaW5nU3RhdGVGb3JGcmFtZShtX2ZyYW1lLCB3aGVlbEV2ZW50LCB3aGVlbEV2
ZW50VGFyZ2V0LCBzY3JvbGxhYmxlQXJlYSwgaXNPdmVyV2lkZ2V0KTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaAppbmRleCBkNzE2OTM0NmEyNDAy
M2MyYTQ3ODdhZTM0NTQwYTM3NjA3YzBhMmQ1Li42NDE3OTdhNmY0MTg3NTMzOGNhNzFlYTczOTE2
MGQxMGIwNmY4OGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9y
bVdoZWVsRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVs
RXZlbnQuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJGbG9h
dFBvaW50LmgiCisjaW5jbHVkZSAiRmxvYXRTaXplLmgiCiAjaW5jbHVkZSAiSW50UG9pbnQuaCIK
ICNpbmNsdWRlICJQbGF0Zm9ybUV2ZW50LmgiCiAjaW5jbHVkZSA8d3RmL1dpbmRvd3NFeHRyYXMu
aD4KQEAgLTE3NCw2ICsxNzUsOCBAQCBwdWJsaWM6CiAgICAgUGxhdGZvcm1XaGVlbEV2ZW50KEhX
TkQsIFdQQVJBTSwgTFBBUkFNLCBib29sIGlzTW91c2VIV2hlZWwpOwogI2VuZGlmCiAKKyAgICBz
dGF0aWMgRmxvYXRTaXplIHdoZWVsRGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRpY2FsKGNvbnN0IEZs
b2F0U2l6ZSYpOworCiBwcm90ZWN0ZWQ6CiAgICAgUGxhdGZvcm1XaGVlbEV2ZW50R3JhbnVsYXJp
dHkgbV9ncmFudWxhcml0eSB7IFNjcm9sbEJ5UGl4ZWxXaGVlbEV2ZW50IH07CiAgICAgYm9vbCBt
X2RpcmVjdGlvbkludmVydGVkRnJvbURldmljZSB7IGZhbHNlIH07CkBAIC0yNjQsNiArMjY3LDE5
IEBAIGlubGluZSBGbG9hdFBvaW50IFBsYXRmb3JtV2hlZWxFdmVudDo6c3dpcGVWZWxvY2l0eSgp
IGNvbnN0CiAKICNlbmRpZiAvLyBFTkFCTEUoS0lORVRJQ19TQ1JPTExJTkcpCiAKK2lubGluZSBG
bG9hdFNpemUgUGxhdGZvcm1XaGVlbEV2ZW50Ojp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0
aWNhbChjb25zdCBGbG9hdFNpemUmIGRlbHRhKQoreworICAgIGF1dG8gZGVsdGFYID0gZGVsdGEu
d2lkdGgoKTsKKyAgICBhdXRvIGRlbHRhWSA9IGRlbHRhLmhlaWdodCgpOworCisgICAgaWYgKGZh
YnNmKGRlbHRhWSkgPj0gZmFic2YoZGVsdGFYKSkKKyAgICAgICAgZGVsdGFYID0gMDsKKyAgICBl
bHNlCisgICAgICAgIGRlbHRhWSA9IDA7CisKKyAgICByZXR1cm4geyBkZWx0YVgsIGRlbHRhWSB9
OworfQorCiBXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpU
ZXh0U3RyZWFtJiwgY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jik7CiBXRUJDT1JFX0VYUE9SVCBX
VEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgV2hlZWxFdmVudFBy
b2Nlc3NpbmdTdGVwcyk7CiBXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoV1RGOjpUZXh0U3RyZWFtJiwgRXZlbnRIYW5kbGluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsVHlwZXMuaAppbmRleCAwYjFjNDA1NjNlOGNiYjgyMmE5ZmViYTRjMGM0NjVmOGE1NzRh
OTNiLi5mOGY3MWMyZTFmZjdiOWU0ZDJlNzU2OWU3YjE5MjFiODIyMWY4NGUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbFR5cGVzLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25j
ZQogCiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgorI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgogI2lu
Y2x1ZGUgIkludFBvaW50LmgiCiAjaW5jbHVkZSA8Y3N0ZGludD4KICNpbmNsdWRlIDx3dGYvQXNz
ZXJ0aW9ucy5oPgpAQCAtMjU5LDYgKzI2MCwzNCBAQCBlbnVtIGNsYXNzIFNjcm9sbFNuYXBQb2lu
dFNlbGVjdGlvbk1ldGhvZCA6IHVpbnQ4X3QgewogICAgIENsb3Nlc3QsCiB9OwogCitzdHJ1Y3Qg
U2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIHsKKyAgICBib29sIGJsb2NrWCB7IGZhbHNlIH07CisgICAg
Ym9vbCBibG9ja1kgeyBmYWxzZSB9OworCisgICAgc3RhdGljIGJvb2wgc2hvdWxkQmxvY2tTY3Jv
bGxDaGFpbmluZyhjb25zdCBTY3JvbGxDaGFpbmluZ0Jsb2NrZXImIGJsb2NrZXIsIGNvbnN0IEZs
b2F0U2l6ZSYgYmlhc2VkRGVsdGEpCisgICAgeworICAgICAgICBpZiAoKGJsb2NrZXIuYmxvY2tY
ICYmIGJsb2NrZXIuYmxvY2tZKQorICAgICAgICAgICAgfHwgKGJsb2NrZXIuYmxvY2tYICYmICFi
aWFzZWREZWx0YS5oZWlnaHQoKSkKKyAgICAgICAgICAgIHx8IChibG9ja2VyLmJsb2NrWSAmJiAh
Ymlhc2VkRGVsdGEud2lkdGgoKSkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIGZpbHRlckRlbHRhKGNvbnN0
IFNjcm9sbENoYWluaW5nQmxvY2tlciYgYmxvY2tlciwgY29uc3QgRmxvYXRTaXplJiBiaWFzZWRE
ZWx0YSwgRmxvYXRTaXplJiBmaWx0ZXJlZERlbHRhKQorICAgIHsKKyAgICAgICAgaWYgKGJsb2Nr
ZXIuYmxvY2tYKSB7CisgICAgICAgICAgICBmaWx0ZXJlZERlbHRhLnNldFdpZHRoKDApOworICAg
ICAgICAgICAgaWYgKCFiaWFzZWREZWx0YS5oZWlnaHQoKSkKKyAgICAgICAgICAgICAgICBmaWx0
ZXJlZERlbHRhLnNldEhlaWdodCgwKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoYmxvY2tlci5i
bG9ja1kpIHsKKyAgICAgICAgICAgIGZpbHRlcmVkRGVsdGEuc2V0SGVpZ2h0KDApOworICAgICAg
ICAgICAgaWYgKCFiaWFzZWREZWx0YS53aWR0aCgpKQorICAgICAgICAgICAgICAgIGZpbHRlcmVk
RGVsdGEuc2V0V2lkdGgoMCk7CisgICAgICAgIH0KKyAgICB9Cit9OworCiB1c2luZyBTY3JvbGxi
YXJDb250cm9sU3RhdGUgPSB1bnNpZ25lZDsKIHVzaW5nIFNjcm9sbGJhckNvbnRyb2xQYXJ0TWFz
ayA9IHVuc2lnbmVkOwogdXNpbmcgU2Nyb2xsaW5nTm9kZUlEID0gdWludDY0X3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKaW5kZXggNzlmOWU5ODA5OGE4ZGRj
YTJiNDljZTk3N2QyMTQzZTFjYjZjYWY4NS4uYzA0M2MwYWMzZTkxODViMjljY2RkMDY2ODVjOThm
NjlkM2IyMWNmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJs
ZUFyZWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNw
cApAQCAtODAzLDYgKzgwMywxMiBAQCB2b2lkIFNjcm9sbGFibGVBcmVhOjpjb21wdXRlU2Nyb2xs
YmFyVmFsdWVBbmRPdmVyaGFuZyhmbG9hdCBjdXJyZW50UG9zaXRpb24sIGZsbwogICAgIH0KIH0K
IAordm9pZCBTY3JvbGxhYmxlQXJlYTo6dXBkYXRlU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyU3RhdGUo
U2Nyb2xsQ2hhaW5pbmdCbG9ja2VyJiBibG9ja2VyKSBjb25zdAoreworICAgIGJsb2NrZXIuYmxv
Y2tYIHw9IGhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSAhPSBPdmVyc2Nyb2xsQmVoYXZp
b3I6OkF1dG87CisgICAgYmxvY2tlci5ibG9ja1kgfD0gdmVydGljYWxPdmVyc2Nyb2xsQmVoYXZp
b3IoKSAhPSBPdmVyc2Nyb2xsQmVoYXZpb3I6OkF1dG87Cit9CisKIFRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJl
YSkKIHsKICAgICB0cyA8PCBzY3JvbGxhYmxlQXJlYS5kZWJ1Z0Rlc2NyaXB0aW9uKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaAppbmRleCA3ZWI3YjU0MDI4Mjg0MGFi
N2I1ZjMxZmRmYTZiMmJmZDU4ZWIxOWRjLi45ODc3Y2Q1MTJjNWVlODkzMDZjNTM3ZTRlZWVlNzIy
OGNjZWEyZjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxl
QXJlYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgKQEAg
LTExOSw2ICsxMTksMTAgQEAgcHVibGljOgogICAgIGJvb2wgY29uc3RyYWluc1Njcm9sbGluZ1Rv
Q29udGVudEVkZ2UoKSBjb25zdCB7IHJldHVybiBtX2NvbnN0cmFpbnNTY3JvbGxpbmdUb0NvbnRl
bnRFZGdlOyB9CiAgICAgdm9pZCBzZXRDb25zdHJhaW5zU2Nyb2xsaW5nVG9Db250ZW50RWRnZShi
b29sIGNvbnN0cmFpbnNTY3JvbGxpbmdUb0NvbnRlbnRFZGdlKSB7IG1fY29uc3RyYWluc1Njcm9s
bGluZ1RvQ29udGVudEVkZ2UgPSBjb25zdHJhaW5zU2Nyb2xsaW5nVG9Db250ZW50RWRnZTsgfQog
CisgICAgdmlydHVhbCBPdmVyc2Nyb2xsQmVoYXZpb3IgaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhh
dmlvcigpIGNvbnN0IHsgcmV0dXJuIE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0bzsgfQorICAgIHZp
cnR1YWwgT3ZlcnNjcm9sbEJlaGF2aW9yIHZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29u
c3QgeyByZXR1cm4gT3ZlcnNjcm9sbEJlaGF2aW9yOjpBdXRvOyB9CisgICAgdm9pZCB1cGRhdGVT
Y3JvbGxDaGFpbmluZ0Jsb2NrZXJTdGF0ZShTY3JvbGxDaGFpbmluZ0Jsb2NrZXImKSBjb25zdDsK
KwogICAgIHZvaWQgc2V0VmVydGljYWxTY3JvbGxFbGFzdGljaXR5KFNjcm9sbEVsYXN0aWNpdHkg
c2Nyb2xsRWxhc3RpY2l0eSkgeyBtX3ZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eSA9IHNjcm9sbEVs
YXN0aWNpdHk7IH0KICAgICBTY3JvbGxFbGFzdGljaXR5IHZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0
eSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFNjcm9sbEVsYXN0aWNpdHk+KG1fdmVydGlj
YWxTY3JvbGxFbGFzdGljaXR5KTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0KaW5kZXggYzA5NWNkNjZmNTk1NmY4Yjg5YWFjYjMzZDVi
N2Y4MDIzMGE5YTdiNS4uYjNkMWFmMzg2Yjc3NTBhMjlkMGJiNWYzZTU1MDA4ODMwYmFjYTA2ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5t
bQpAQCAtMTIyOCw5ICsxMjI4LDkgQEAgdm9pZCBTY3JvbGxBbmltYXRvck1hYzo6aGFuZGxlV2hl
ZWxFdmVudFBoYXNlKFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlIHBoYXNlKQogYm9vbCBTY3JvbGxB
bmltYXRvck1hYzo6c2hvdWxkRm9yd2FyZFdoZWVsRXZlbnRzVG9QYXJlbnQoY29uc3QgUGxhdGZv
cm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50KSBjb25zdAogewogICAgIGlmIChzdGQ6OmFicyh3aGVl
bEV2ZW50LmRlbHRhWSgpKSA+PSBzdGQ6OmFicyh3aGVlbEV2ZW50LmRlbHRhWCgpKSkKLSAgICAg
ICAgcmV0dXJuICFhbGxvd3NWZXJ0aWNhbFN0cmV0Y2hpbmcod2hlZWxFdmVudCk7CisgICAgICAg
IHJldHVybiBtX3Njcm9sbGFibGVBcmVhLnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgPT0g
T3ZlcnNjcm9sbEJlaGF2aW9yOjpBdXRvICYmICFhbGxvd3NWZXJ0aWNhbFN0cmV0Y2hpbmcod2hl
ZWxFdmVudCk7CiAKLSAgICByZXR1cm4gIWFsbG93c0hvcml6b250YWxTdHJldGNoaW5nKHdoZWVs
RXZlbnQpOworICAgIHJldHVybiBtX3Njcm9sbGFibGVBcmVhLmhvcml6b250YWxPdmVyc2Nyb2xs
QmVoYXZpb3IoKSA9PSBPdmVyc2Nyb2xsQmVoYXZpb3I6OkF1dG8gJiYgIWFsbG93c0hvcml6b250
YWxTdHJldGNoaW5nKHdoZWVsRXZlbnQpOwogfQogICAgIAogYm9vbCBTY3JvbGxBbmltYXRvck1h
Yzo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQp
CkBAIC0xMjk1LDYgKzEyOTUsOSBAQCBzdGF0aWMgYm9vbCBnZXN0dXJlU2hvdWxkQmVnaW5TbmFw
KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgU2Nyb2xsRQogCiBib29sIFNj
cm9sbEFuaW1hdG9yTWFjOjphbGxvd3NWZXJ0aWNhbFN0cmV0Y2hpbmcoY29uc3QgUGxhdGZvcm1X
aGVlbEV2ZW50JiB3aGVlbEV2ZW50KSBjb25zdAogeworICAgIGlmIChtX3Njcm9sbGFibGVBcmVh
LnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgPT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpOb25l
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICBzd2l0Y2ggKG1fc2Nyb2xsYWJsZUFyZWEu
dmVydGljYWxTY3JvbGxFbGFzdGljaXR5KCkpIHsKICAgICBjYXNlIFNjcm9sbEVsYXN0aWNpdHlB
dXRvbWF0aWM6IHsKICAgICAgICAgU2Nyb2xsYmFyKiBoU2Nyb2xsZXIgPSBtX3Njcm9sbGFibGVB
cmVhLmhvcml6b250YWxTY3JvbGxiYXIoKTsKQEAgLTEzMTksNiArMTMyMiw5IEBAIGJvb2wgU2Ny
b2xsQW5pbWF0b3JNYWM6OmFsbG93c1ZlcnRpY2FsU3RyZXRjaGluZyhjb25zdCBQbGF0Zm9ybVdo
ZWVsRXZlbnQmIHdoZWVsCiAKIGJvb2wgU2Nyb2xsQW5pbWF0b3JNYWM6OmFsbG93c0hvcml6b250
YWxTdHJldGNoaW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCkgY29uc3QK
IHsKKyAgICBpZiAobV9zY3JvbGxhYmxlQXJlYS5ob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9y
KCkgPT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpOb25lKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
ICAgICBzd2l0Y2ggKG1fc2Nyb2xsYWJsZUFyZWEuaG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHko
KSkgewogICAgIGNhc2UgU2Nyb2xsRWxhc3RpY2l0eUF1dG9tYXRpYzogewogICAgICAgICBTY3Jv
bGxiYXIqIGhTY3JvbGxlciA9IG1fc2Nyb2xsYWJsZUFyZWEuaG9yaXpvbnRhbFNjcm9sbGJhcigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbENvbnRyb2xs
ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQ29udHJvbGxlci5tbQpp
bmRleCAwZGU4MWUwNmY2MzhlOWM3NzBkODc0ODY1M2IwYzVmZTYxMWM0ZWVhLi42MzRmYjc5MGUw
ODZmYWVkOTU4MWQ4Zjk3OWQ4YTJjZDMyNTI4NGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQ29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvU2Nyb2xsQ29udHJvbGxlci5tbQpAQCAtMzEzLDE5ICszMTMsNiBAQCBib29s
IFNjcm9sbENvbnRyb2xsZXI6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2
ZW50JiB3aGVlbEV2ZW50KQogICAgIHJldHVybiBoYW5kbGVkOwogfQogCi1GbG9hdFNpemUgU2Ny
b2xsQ29udHJvbGxlcjo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoY29uc3QgUGxh
dGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50KQotewotICAgIGF1dG8gZGVsdGFYID0gd2hlZWxF
dmVudC5kZWx0YVgoKTsKLSAgICBhdXRvIGRlbHRhWSA9IHdoZWVsRXZlbnQuZGVsdGFZKCk7Ci0K
LSAgICBpZiAoZmFic2YoZGVsdGFZKSA+PSBmYWJzZihkZWx0YVgpKQotICAgICAgICBkZWx0YVgg
PSAwOwotICAgIGVsc2UKLSAgICAgICAgZGVsdGFZID0gMDsKLQotICAgIHJldHVybiB7IGRlbHRh
WCwgZGVsdGFZIH07Ci19Ci0KIE9wdGlvbmFsPFNjcm9sbERpcmVjdGlvbj4gU2Nyb2xsQ29udHJv
bGxlcjo6ZGlyZWN0aW9uRnJvbUV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxF
dmVudCwgT3B0aW9uYWw8U2Nyb2xsRXZlbnRBeGlzPiBheGlzLCBXaGVlbEF4aXNCaWFzIGJpYXMp
CiB7CiAgICAgLy8gRklYTUU6IEl0J3MgaW1wb3NzaWJsZSB0byBpbmZlciBkaXJlY3Rpb24gZnJv
bSBhIHNpbmdsZSBldmVudCwgc2luY2UgdGhlIHN0YXJ0IG9mIGEgZ2VzdHVyZSBpcyBlaXRoZXIg
emVybyBvcgpAQCAtMzMzLDcgKzMyMCw3IEBAIE9wdGlvbmFsPFNjcm9sbERpcmVjdGlvbj4gU2Ny
b2xsQ29udHJvbGxlcjo6ZGlyZWN0aW9uRnJvbUV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlCiAKICAg
ICBhdXRvIHdoZWVsRGVsdGEgPSBGbG9hdFNpemUgeyB3aGVlbEV2ZW50LmRlbHRhWCgpLCB3aGVl
bEV2ZW50LmRlbHRhWSgpIH07CiAgICAgaWYgKGJpYXMgPT0gV2hlZWxBeGlzQmlhczo6VmVydGlj
YWwpCi0gICAgICAgIHdoZWVsRGVsdGEgPSB3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNh
bCh3aGVlbEV2ZW50KTsKKyAgICAgICAgd2hlZWxEZWx0YSA9IFBsYXRmb3JtV2hlZWxFdmVudDo6
d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwod2hlZWxFdmVudC5kZWx0YSgpKTsKIAog
ICAgIGlmIChheGlzKSB7CiAgICAgICAgIHN3aXRjaCAoYXhpcy52YWx1ZSgpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5j
cHAKaW5kZXggYjZiN2FiMGEyMTI1MjRlZmU4N2FjMzdlYWRjYmUxMjAwN2NjNWU2NS4uYWIxOTAz
MTI3ODA1YzkzMTA2ZmFmZjkyYTE3MDc1ZTYxZGY4YjJlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmNwcApAQCAtMTgx
Niw0ICsxODE2LDIyIEBAIFN0cmluZyBSZW5kZXJMYXllclNjcm9sbGFibGVBcmVhOjpkZWJ1Z0Rl
c2NyaXB0aW9uKCkgY29uc3QKICAgICByZXR1cm4gbV9sYXllci5kZWJ1Z0Rlc2NyaXB0aW9uKCk7
CiB9CiAKK092ZXJzY3JvbGxCZWhhdmlvciBSZW5kZXJMYXllclNjcm9sbGFibGVBcmVhOjpob3Jp
em9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29uc3QKK3sKKyAgICBjb25zdCBSZW5kZXJTdHls
ZSYgc3R5bGUgPSBtX2xheWVyLnJlbmRlcmVyKCkuc3R5bGUoKTsKKyAgICAvLyBBbiBlbGVtZW50
IHRoYXQgaXMgbm90IHNjcm9sbCBjb250YWluZXIgbXVzdCBhY2NlcHQgYnV0IGlnbm9yZSB0aGUg
dmFsdWVzIG9mIHRoaXMgcHJvcGVydHkuCisgICAgaWYgKG1fbGF5ZXIucmVuZGVyQm94KCkgJiYg
bV9sYXllci5yZW5kZXJCb3goKS0+Y2FuQmVTY3JvbGxlZEFuZEhhc1Njcm9sbGFibGVBcmVhKCkp
CisgICAgICAgIHJldHVybiBzdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JYKCk7CisgICAgcmV0dXJu
IFNjcm9sbGFibGVBcmVhOjpob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCk7Cit9CisKK092
ZXJzY3JvbGxCZWhhdmlvciBSZW5kZXJMYXllclNjcm9sbGFibGVBcmVhOjp2ZXJ0aWNhbE92ZXJz
Y3JvbGxCZWhhdmlvcigpIGNvbnN0Cit7CisgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlID0g
bV9sYXllci5yZW5kZXJlcigpLnN0eWxlKCk7CisgICAgLy8gQW4gZWxlbWVudCB0aGF0IGlzIG5v
dCBzY3JvbGwgY29udGFpbmVyIG11c3QgYWNjZXB0IGJ1dCBpZ25vcmUgdGhlIHZhbHVlcyBvZiB0
aGlzIHByb3BlcnR5LgorICAgIGlmIChtX2xheWVyLnJlbmRlckJveCgpICYmIG1fbGF5ZXIucmVu
ZGVyQm94KCktPmNhbkJlU2Nyb2xsZWRBbmRIYXNTY3JvbGxhYmxlQXJlYSgpKQorICAgICAgICBy
ZXR1cm4gc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWSgpOworICAgIHJldHVybiBTY3JvbGxhYmxl
QXJlYTo6dmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
U2Nyb2xsYWJsZUFyZWEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllclNj
cm9sbGFibGVBcmVhLmgKaW5kZXggZGUyNmIzMDQ4OTY2NjZhNWNkZDY0YjUwZjc2ZDZkNTFlZDYz
ZWFkMy4uNTM4YTc5NGMwNjM5MTNkNDA2NjBkYWNlZTk1OWU2MzEwZDYzNjNmNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5o
CkBAIC0xMjksNiArMTI5LDkgQEAgcHVibGljOgogCiAgICAgYm9vbCBzY3JvbGwoU2Nyb2xsRGly
ZWN0aW9uLCBTY3JvbGxHcmFudWxhcml0eSwgZmxvYXQgbXVsdGlwbGllciA9IDEpOwogCisgICAg
T3ZlcnNjcm9sbEJlaGF2aW9yIGhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdCBm
aW5hbDsKKyAgICBPdmVyc2Nyb2xsQmVoYXZpb3IgdmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3Io
KSBjb25zdCBmaW5hbDsKKwogcHVibGljOgogICAgIC8vIEFsbCBtZXRob2RzIGluIHRoaXMgc2Vj
dGlvbiBvdmVycmlkZSBTY3JvbGxhYmxlYUFyZWEgbWV0aG9kcyAoZmluYWwpLgogICAgIHZvaWQg
YXZhaWxhYmxlQ29udGVudFNpemVDaGFuZ2VkKEF2YWlsYWJsZVNpemVDaGFuZ2VSZWFzb24pIGZp
bmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1M
Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0K
aW5kZXggMmI4YTI4MjBmODA5YjhhYjM5NWY2NmZkODA4ZjdhZDA4ZGVkM2FkMy4uOTMyNDg3MDky
NDk2YWZiMDRjOTliODIyZGVhMWI0MmUyN2IwYjdkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC00MDg2LDYgKzQwODYsOCBAQCBzdGF0
aWMgQk9PTCBjdXJyZW50U2Nyb2xsSXNCbGl0KE5TVmlldyAqY2xpcFZpZXcpCiAgICAgYXV0byog
ZnJhbWUgPSBjb3JlKFtzZWxmIF9mcmFtZV0pOwogICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5l
dmVudEhhbmRsZXIoKS53aGVlbEV2ZW50KGV2ZW50KSkgewogI2lmIFBMQVRGT1JNKE1BQykKKyAg
ICAgICAgLy8gRklYTUU6IE5lZWQgdG8gZmluZCBhIHdheSB0byBibG9jayB0aGUgY3Jvc3MtZnJh
bWUgc2Nyb2xsIGNoYWluaW5nIGluIFdLMS4KKyAgICAgICAgLy8gV2UgY2FuIG5vdCBqdXN0IHNr
aXAgdGhlIHNjcm9sbCBoZXJlLCBpdCBub3Qgb25seSBibG9ja3Mgc2Nyb2xsIGNoYWluaW5nIGJ1
dCBhbHNvIGJsb2NrcyB0aGUgc2Nyb2xsIG9uIGN1cnJlbnQgdmlldy4KICAgICAgICAgW3N1cGVy
IHNjcm9sbFdoZWVsOmV2ZW50XTsKICNlbmRpZgogICAgIH0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzZTAzYmIxMDI3MzI2
Yjc3Y2Q3OTEyNjAxOGEyOWMyODBkNjg5M2MyLi5jNTE4YzFjZjhiZTkwMTA5ODU4ZmYzNTQ1MGM5
Y2ExNjA3YzljYmM4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMgQEAKKzIwMjEtMDMtMTUgIENhdGhpZSBD
aGVuICA8Y2F0aGllY2hlbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFN1cHBvcnQgQ1NTIG92ZXJz
Y3JvbGwtYmVoYXZpb3IgZm9yIHN5bmNocm9ub3VzIHNjcm9sbAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyOTY4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmFzZWQgb24gRnLDqWTDqXJpYyBXYW5nJ3Mg
cGF0Y2guCisKKyAgICAgICAgVGVzdCBvdmVyc2Nyb2xsLWJlaGF2aW9yIGZvciBvdmVyZmxvdyBl
bGVtZW50cyBhbmQgaWZyYW1lcy4gVGhlIHRlc3RzIHRyaWdnZXIgd2hlZWwgc2Nyb2xsIGV2ZW50
cworICAgICAgICBhbmQgd2FpdCAuNXMsIHRoZW4gY2hlY2sgd2hldGhlciBzY3JvbGwgb2NjdXJz
IG9yIG5vdC4KKyAgICAgICAgVGhlIHRlc3RzIGFyZSBza2lwcGVkIG9uIGlPUyBmb3Igb25seSBz
eW5jaHJvbm91cyBzY3JvbGwgYXJlIHRlc3RlZC4KKyAgICAgICAgRm9yIFdLMSwgdGhlIGlmcmFt
ZSB0ZXN0cyBmYWlsIGJlY2F1c2UgbGFjayBvZiBpbnRlcmZhY2VzIHRvIGNvbnRyb2wgc2Nyb2xs
IGNoYWluaW5nIGluIFdlYkhUTUxWaWV3LgorCisgICAgICAgICogVGVzdEV4cGVjdGF0aW9uczog
V2FpdGluZyAuNXMgZm9yIGVhY2ggY2FzZSBtYWtlcyB0aGUgdGVzdCBzbG93LgorICAgICAgICAq
IGZhc3Qvc2Nyb2xsaW5nL3Jlc291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXN1cHBvcnQuanM6
IEFkZGVkLgorICAgICAgICAoZ2V0RGVsdGFzKToKKyAgICAgICAgKGFzeW5jIG1vdXNlV2hlZWxT
Y3JvbGxBbmRXYWl0KToKKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVy
c2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQuaHRt
bDogQWRkZWQuCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9s
bC1iZWhhdmlvci1pZnJhbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Nj
cm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2
aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFi
bGUtZWxlbWVudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9zeW5jLXNj
cm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xs
LWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxh
dGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMS9U
ZXN0RXhwZWN0YXRpb25zOgorCisyMDIxLTAyLTA0ICBSb2IgQnVpcyAgPHJidWlzQGlnYWxpYS5j
b20+CisKKyAgICAgICAgTWFrZSBzaG91bGRDb21wdXRlTG9naWNhbFdpZHRoRnJvbUFzcGVjdFJh
dGlvQW5kSW5zZXRzIHdyaXRpbmcgbW9kZSBhd2FyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMzI4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTWFu
dWVsIFJlZ28gQ2FzYXNub3Zhcy4KKworICAgICAgICBFbmFibGUgc29tZSB0ZXN0cyB0aGF0IHBh
c3Mgbm93LgorCisgICAgICAgICogVGVzdEV4cGVjdGF0aW9uczoKKwogMjAyMS0wMy0xNSAgSW1h
bm9sIEZlcm5hbmRleiAgPGlmZXJuYW5kZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBTcGxpdCBX
ZWJYUiBmZWF0dXJlcyBpbnRvIGVuYWJsZWRGZWF0dXJlcywgc3VwcG9ydGVkRmVhdHVyZXMgYW5k
IHJlcXVlc3RlZEZlYXR1cmVzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRp
b25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAxNDg1MTFkNWM1N2E4MmFj
YTNiMTVmNTk5ZjRkMzQ0YjhjNDAzMTkwLi41NDAxNTAyMmUzZjY5ZDM0OGVmNTRiYjg1ZWYwY2Iw
ZjIyOTE0ZWEzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBi
L0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTQ2NDUsNiArNDY0NSwxMiBAQCBmYXN0
L3NoYWRvdy1kb20vaW9zLyBbIFNraXAgXQogIyBSZXF1aXJlcyBXSzIgVGVzdFJ1bm5lcgogZnVs
bHNjcmVlbi9mdWxsLXNjcmVlbi1lbnRlci13aGlsZS1leGl0aW5nLmh0bWwgWyBTa2lwIF0KIAor
IyBOZWVkIHRvIHdhaXQgYW5kIGNoZWNrIHdoZXRoZXIgc2Nyb2xsIG9jY3VycworZmFzdC9zY3Jv
bGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50Lmh0bWwgWyBTbG93
IF0KK2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1l
Lmh0bWwgWyBTbG93IF0KK2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVo
YXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRtbCBbIFNsb3cgXQorZmFzdC9zY3JvbGxpbmcv
c3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLmh0bWwg
WyBTbG93IF0KKwogIyBBbmltYXRpb24gLyBMYXlvdXQgd29ya2V0cyBhcmUgbm90IHN1cHBvcnRl
ZAogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrbGV0cy9hbmltYXRpb24td29y
a2xldC1zZXJ2aWNlLXdvcmtlci1pbnRlcmNlcHRpb24uaHR0cHMuaHRtbCBbIFNraXAgXQogaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrbGV0cy9hbmltYXRpb24td29ya2xldC1j
c3AuaHR0cHMuaHRtbCBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3Jv
bGxpbmcvcmVzb3VyY2VzL292ZXJzY3JvbGwtYmVoYXZpb3Itc3VwcG9ydC5qcyBiL0xheW91dFRl
c3RzL2Zhc3Qvc2Nyb2xsaW5nL3Jlc291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXN1cHBvcnQu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYjMzZjM2YzBlMDZjM2VkZGRhOWU2Y2FhZDAyZjZjZjNiNjQ4ZThiZAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3Jlc291cmNlcy9v
dmVyc2Nyb2xsLWJlaGF2aW9yLXN1cHBvcnQuanMKQEAgLTAsMCArMSw0MCBAQAorZnVuY3Rpb24g
Z2V0RGVsdGFzKGRpcmVjdGlvbikgeworICAgIHZhciBkZWx0YVggPSAwOworICAgIHZhciBkZWx0
YVkgPSAwOworICAgIGlmIChkaXJlY3Rpb24gPT0gImRvd24iKQorICAgICAgICBkZWx0YVkgPSAt
NTsKKyAgICBlbHNlIGlmIChkaXJlY3Rpb24gPT0gInVwIikKKyAgICAgICAgZGVsdGFZID0gNTsK
KyAgICBlbHNlIGlmIChkaXJlY3Rpb24gPT0gInJpZ2h0IikKKyAgICAgICAgZGVsdGFYID0gLTU7
CisgICAgZWxzZSBpZiAoZGlyZWN0aW9uID09ICJsZWZ0IikKKyAgICAgICAgZGVsdGFYID0gNTsK
KyAgICByZXR1cm4geworICAgICAgICBYOiBkZWx0YVgsCisgICAgICAgIFk6IGRlbHRhWQorICAg
IH07Cit9CisKK2FzeW5jIGZ1bmN0aW9uIG1vdXNlV2hlZWxTY3JvbGxBbmRXYWl0KHgsIHksIGJl
Z2luWCwgYmVnaW5ZLCBkZWx0YVgsIGRlbHRhWSkKK3sKKyAgICBpZiAoYmVnaW5YID09PSB1bmRl
ZmluZWQpCisgICAgICAgIGJlZ2luWCA9IDA7CisgICAgaWYgKGJlZ2luWSA9PT0gdW5kZWZpbmVk
KQorICAgICAgICBiZWdpblkgPSAtMTsKKworICAgIGlmIChkZWx0YVggPT09IHVuZGVmaW5lZCkK
KyAgICAgICAgZGVsdGFYID0gMDsKKyAgICBpZiAoZGVsdGFZID09PSB1bmRlZmluZWQpCisgICAg
ICAgIGRlbHRhWSA9IC0xMDsKKworICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygp
OworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhiZWdpblgsIGJlZ2luWSwgImJl
Z2FuIiwgIm5vbmUiKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZGVsdGFYLCBkZWx0YVksICJjaGFuZ2VkIiwgIm5vbmUiKTsKKyAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwg
ImVuZGVkIiwgIm5vbmUiKTsKKyAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7Cisg
ICAgICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZy
YW1lKHJlc29sdmUpOworICAgICAgICB9LCA1MDApOworICAgIH0pOworfQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlv
ci1lbGVtZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMt
c2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMjcxNTBmZjYwYjVkYmRkMGI0YTdhYzZmODNmYjU2ZjU3Y2QyY2Q4MgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwt
YmVoYXZpb3ItZWxlbWVudC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMCBAQAorCitQQVNTIEVs
ZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1
dG8gYXV0by4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3Jv
bGwtYmVoYXZpb3I6IGF1dG8gYXV0by4KK1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0
ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBhdXRvLgorUEFTUyBFbGVtZW50
IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBh
dXRvLgorUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xs
LWJlaGF2aW9yOiBub25lIGF1dG8uCitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qg
d2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIGF1dG8uCitQQVNTIEVsZW1lbnQgaG9yaXpv
bnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gY29udGFpbi4K
K1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZp
b3I6IGF1dG8gY29udGFpbi4KK1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdp
dGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBjb250YWluLgorUEFTUyBFbGVtZW50IHZl
cnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBjb250
YWluLgorUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xs
LWJlaGF2aW9yOiBub25lIGNvbnRhaW4uCitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRl
c3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIGNvbnRhaW4uCitQQVNTIEVsZW1lbnQg
aG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gbm9u
ZS4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVo
YXZpb3I6IGF1dG8gbm9uZS4KK1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdp
dGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBub25lLgorUEFTUyBFbGVtZW50IHZlcnRp
Y2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBub25lLgor
UEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2
aW9yOiBub25lIG5vbmUuCitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBv
dmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIG5vbmUuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1i
ZWhhdmlvci1lbGVtZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTE2YzMxNDFiYWQ4MGNlZjIyYmUxZjFh
MGVkZTA1NmYyY2RjMjExMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Ny
b2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC5odG1sCkBAIC0w
LDAgKzEsODYgQEAKKzwhZG9jdHlwZSBodG1sPgorCis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNl
cy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXN1cHBvcnQuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJo
ZWxwIiBocmVmPSJodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLW92ZXJzY3JvbGwtYmVoYXZp
b3IiPgorPHN0eWxlPgorICAgIC5zY3JvbGxpbmcgeworICAgICAgICBvdmVyZmxvdzogc2Nyb2xs
OworICAgIH0KKyAgICAuc2Nyb2xsQ29udGVudCB7CisgICAgICAgIHdpZHRoOiAzMDBweDsKKyAg
ICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICB9CisgICAgI3Jvb3QgeworICAgICAgICB3aWR0aDog
MjAwcHg7CisgICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgfQorICAgICNzY3JvbGxlciB7Cisg
ICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICB9Cis8L3N0
eWxlPgorPGRpdiBpZD0ncm9vdCcgY2xhc3M9InNjcm9sbGluZyI+CisgICAgPGRpdiBpZD0nc2Ny
b2xsZXInIGNsYXNzPSJzY3JvbGxpbmciPgorICAgICAgICA8ZGl2IGNsYXNzPSJzY3JvbGxDb250
ZW50Ij48L2Rpdj4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJzY3JvbGxDb250ZW50Ij48
L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0PgorY29uc3Qgcm9vdCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdyb290Jyk7Citjb25zdCBzY3JvbGxlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdzY3JvbGxlcicpOwordmFyIG92ZXJzY3JvbGxEYXRhcyA9IFtbImF1dG8iLCAiYXV0byIsIHRy
dWUsIHRydWVdLAorICAgICAgICAgICAgICAgICAgICAgICAgWyJjb250YWluIiwgImF1dG8iLCBm
YWxzZSwgdHJ1ZV0sCisgICAgICAgICAgICAgICAgICAgICAgICBbIm5vbmUiLCAiYXV0byIsIGZh
bHNlLCB0cnVlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFsiYXV0byIsICJjb250YWluIiwg
dHJ1ZSwgZmFsc2VdLAorICAgICAgICAgICAgICAgICAgICAgICAgWyJjb250YWluIiwgImNvbnRh
aW4iLCBmYWxzZSwgZmFsc2VdLAorICAgICAgICAgICAgICAgICAgICAgICAgWyJub25lIiwgImNv
bnRhaW4iLCBmYWxzZSwgZmFsc2VdLAorICAgICAgICAgICAgICAgICAgICAgICAgWyJhdXRvIiwg
Im5vbmUiLCB0cnVlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAgICBbImNvbnRhaW4i
LCAibm9uZSIsIGZhbHNlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAgICBbIm5vbmUi
LCAibm9uZSIsIGZhbHNlLCBmYWxzZV1dOworCitmdW5jdGlvbiByZXNldFRlc3QoKSB7CisgICAg
Ly8gVHJ5IHZhcmlvdXMgbWV0aG9kcyB0byBlbnN1cmUgdGhlIGVsZW1lbnQgcG9zaXRpb24gaXMg
cmVzZXQgaW1tZWRpYXRlbHkuCisgICAgc2Nyb2xsZXIuc2Nyb2xsTGVmdCA9IDMwMDsKKyAgICBz
Y3JvbGxlci5zY3JvbGxUb3AgPSAzMDA7CisgICAgc2Nyb2xsZXIuc2Nyb2xsVG8oMzAwLCAzMDAp
OworCisgICAgcm9vdC5zY3JvbGxMZWZ0ID0gMDsKKyAgICByb290LnNjcm9sbFRvcCA9IDA7Cisg
ICAgcm9vdC5zY3JvbGxUbygwLCAwKTsKK30KKworZnVuY3Rpb24gc3RhcnRUZXN0KCkgeworICAg
IG92ZXJzY3JvbGxEYXRhcy5mb3JFYWNoKChbb3ZlcnNjcm9sbFgsIG92ZXJzY3JvbGxZLCBwcm9w
YWdhdGVYLCBwcm9wYWdhdGVZXSkgPT4geworICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4gewor
ICAgICAgICAgICAgcmVzZXRUZXN0KCk7CisgICAgICAgICAgICBzY3JvbGxlci5zdHlsZS5vdmVy
c2Nyb2xsQmVoYXZpb3JYID0gb3ZlcnNjcm9sbFg7CisgICAgICAgICAgICBzY3JvbGxlci5zdHls
ZS5vdmVyc2Nyb2xsQmVoYXZpb3JZID0gb3ZlcnNjcm9sbFk7CisKKyAgICAgICAgICAgIHZhciB4
ID0gc2Nyb2xsZXIuY2xpZW50V2lkdGggLyAyOworICAgICAgICAgICAgdmFyIHkgPSBzY3JvbGxl
ci5jbGllbnRIZWlnaHQgLyAyOworICAgICAgICAgICAgdmFyIGRlbHRhID0gZ2V0RGVsdGFzKCJy
aWdodCIpOworICAgICAgICAgICAgcmV0dXJuIG1vdXNlV2hlZWxTY3JvbGxBbmRXYWl0KHgsIHks
IGRlbHRhLlgsIGRlbHRhLlksIGRlbHRhLlgsIGRlbHRhLlkpLnRoZW4oKCkgPT4geworICAgICAg
ICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxMZWZ0ID4gMCwgcHJvcGFnYXRlWCwg
J0NvbnRpbnVlIHVwIHRoZSBob3Jpem9udGFsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAgICAg
ICAgfSk7CisgICAgICAgIH0sICdFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBv
dmVyc2Nyb2xsLWJlaGF2aW9yOiAnICsgb3ZlcnNjcm9sbFggKyAnICcgKyBvdmVyc2Nyb2xsWSAr
ICcuJyk7CisKKyAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAgIHJlc2V0
VGVzdCgpOworICAgICAgICAgICAgc2Nyb2xsZXIuc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWCA9
IG92ZXJzY3JvbGxYOworICAgICAgICAgICAgc2Nyb2xsZXIuc3R5bGUub3ZlcnNjcm9sbEJlaGF2
aW9yWSA9IG92ZXJzY3JvbGxZOworCisgICAgICAgICAgICB2YXIgeCA9IHNjcm9sbGVyLmNsaWVu
dFdpZHRoIC8gMjsKKyAgICAgICAgICAgIHZhciB5ID0gc2Nyb2xsZXIuY2xpZW50SGVpZ2h0IC8g
MjsKKyAgICAgICAgICAgIHZhciBkZWx0YSA9IGdldERlbHRhcygiZG93biIpOworICAgICAgICAg
ICAgcmV0dXJuIG1vdXNlV2hlZWxTY3JvbGxBbmRXYWl0KHgsIHksIGRlbHRhLlgsIGRlbHRhLlks
IGRlbHRhLlgsIGRlbHRhLlkpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGFzc2VydF9l
cXVhbHMocm9vdC5zY3JvbGxUb3AgPiAwLCBwcm9wYWdhdGVZLCAnQ29udGludWUgdXAgdGhlIHZl
cnRpY2FsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0sICdF
bGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogJyAr
IG92ZXJzY3JvbGxYICsgJyAnICsgb3ZlcnNjcm9sbFkgKyAnLicpOworICAgIH0pOworfQorCith
ZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgc3RhcnRUZXN0KTsKKzwvc2NyaXB0PgpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5n
L3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3It
aWZyYW1lLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MDBhMGI3ZDkwNWI4N2MxZGI3NjI2OTRm
ZDAwNjM4ZjE5NzY5NTM3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3Jv
bGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMjEgQEAKKworCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0
IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBhdXRvLgorUEFTUyBJZnJhbWUgdmVydGlj
YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIGF1dG8uCitQQVNT
IElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjog
Y29udGFpbiBhdXRvLgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVy
c2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGF1dG8uCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNj
cm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBhdXRvLgorUEFTUyBJZnJh
bWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIGF1
dG8uCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1i
ZWhhdmlvcjogYXV0byBjb250YWluLgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qg
d2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIGNvbnRhaW4uCitQQVNTIElmcmFtZSBob3Jp
em9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBjb250
YWluLgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJl
aGF2aW9yOiBjb250YWluIGNvbnRhaW4uCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0
ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBjb250YWluLgorUEFTUyBJZnJhbWUg
dmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIGNvbnRh
aW4uCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1i
ZWhhdmlvcjogYXV0byBub25lLgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0
aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIG5vbmUuCitQQVNTIElmcmFtZSBob3Jpem9udGFs
IHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBub25lLgorUEFT
UyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBj
b250YWluIG5vbmUuCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3Zl
cnNjcm9sbC1iZWhhdmlvcjogbm9uZSBub25lLgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xs
IHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIG5vbmUuCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZp
b3ItaWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1v
dmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUyODg0NWRiNTA1YjRl
MmU5ZDA0NTM4MjlkZjU5ZTUyZjYwMzg1MzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS5o
dG1sCkBAIC0wLDAgKzEsODggQEAKKzwhZG9jdHlwZSBodG1sPgorCis8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
InJlc291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXN1cHBvcnQuanMiPjwvc2NyaXB0PgorPGxp
bmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLW92ZXJzY3Jv
bGwtYmVoYXZpb3IiPgorPHN0eWxlPgorICAgIC5zY3JvbGxpbmcgeworICAgICAgICBvdmVyZmxv
dzogc2Nyb2xsOworICAgIH0KKyAgICAuc2Nyb2xsQ29udGVudCB7CisgICAgICAgIHdpZHRoOiAz
MDBweDsKKyAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgYmFja2dyb3VuZDogbGluZWFy
LWdyYWRpZW50KDEzNWRlZywgcmVkLCBibHVlKTsKKyAgICB9CisgICAgI3Jvb3QgeworICAgICAg
ICB3aWR0aDogMjAwcHg7CisgICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgfQorICAgICNzY3Jv
bGxlciB7CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAg
ICAgICAgb3ZlcnNjcm9sbC1iZWhhdmlvci15OiBhdXRvOworICAgIH0KKzwvc3R5bGU+Cis8ZGl2
IGlkPSdyb290JyBjbGFzcz0ic2Nyb2xsaW5nIj4KKyAgICA8aWZyYW1lIGlkPSdzY3JvbGxlcicg
c3JjZG9jPSI8aHRtbD48ZGl2IHN0eWxlPSd3aWR0aDogMzAwcHg7IGhlaWdodDogMzAwcHg7Jz48
L2Rpdj48L2h0bWw+CisgICAgICAgICI+PC9pZnJhbWU+CisgICAgPGRpdiBjbGFzcz0ic2Nyb2xs
Q29udGVudCI+PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4KKyAgICBjb25zdCByb290ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jvb3QnKTsKKyAgICBjb25zdCBzY3JvbGxlciA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdzY3JvbGxlcicpOworICAgIHZhciBvdmVyc2Nyb2xsRGF0YXMg
PSBbWyJhdXRvIiwgImF1dG8iLCB0cnVlLCB0cnVlXSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBbImNvbnRhaW4iLCAiYXV0byIsIGZhbHNlLCB0cnVlXSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBbIm5vbmUiLCAiYXV0byIsIGZhbHNlLCB0cnVlXSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBbImF1dG8iLCAiY29udGFpbiIsIHRydWUsIGZhbHNlXSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBbImNvbnRhaW4iLCAiY29udGFpbiIsIGZhbHNlLCBmYWxzZV0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJub25lIiwgImNvbnRhaW4iLCBmYWxzZSwg
ZmFsc2VdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiYXV0byIsICJub25lIiwgdHJ1
ZSwgZmFsc2VdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiY29udGFpbiIsICJub25l
IiwgZmFsc2UsIGZhbHNlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIm5vbmUiLCAi
bm9uZSIsIGZhbHNlLCBmYWxzZV1dOworICAgIGZ1bmN0aW9uIHJlc2V0VGVzdCgpIHsKKyAgICAg
ICAgLy8gVHJ5IHZhcmlvdXMgbWV0aG9kcyB0byBlbnN1cmUgdGhlIGVsZW1lbnQgcG9zaXRpb24g
aXMgcmVzZXQgaW1tZWRpYXRlbHkuCisgICAgICAgIHNjcm9sbGVyLmNvbnRlbnRXaW5kb3cuc2Ny
b2xsWCA9IDMwMDsKKyAgICAgICAgc2Nyb2xsZXIuY29udGVudFdpbmRvdy5zY3JvbGxZID0gMzAw
OworICAgICAgICBzY3JvbGxlci5jb250ZW50V2luZG93LnNjcm9sbFRvKDMwMCwgMzAwKTsKKwor
ICAgICAgICByb290LnNjcm9sbExlZnQgPSAwOworICAgICAgICByb290LnNjcm9sbFRvcCA9IDA7
CisgICAgICAgIHJvb3Quc2Nyb2xsVG8oMCwgMCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gb3Zl
cnNjcm9sbEJlaGF2aW9yVGVzdCgpIHsKKyAgICAgICAgb3ZlcnNjcm9sbERhdGFzLmZvckVhY2go
KFtvdmVyc2Nyb2xsWCwgb3ZlcnNjcm9sbFksIHByb3BhZ2F0ZVgsIHByb3BhZ2F0ZVldKSA9PiB7
CisgICAgICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgICAgICAgICAgICAgIHJlc2V0
VGVzdCgpOworICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSBzY3JvbGxlci5jb250ZW50V2lu
ZG93LmRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJodG1sIilbMF07CisgICAgICAgICAg
ICAgICAgdGFyZ2V0LnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclggPSBvdmVyc2Nyb2xsWDsKKyAg
ICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWSA9IG92ZXJzY3Jv
bGxZOworCisgICAgICAgICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7
CisgICAgICAgICAgICAgICAgdmFyIHkgPSBzY3JvbGxlci5jbGllbnRIZWlnaHQgLyAyOworICAg
ICAgICAgICAgICAgIHZhciBkZWx0YSA9IGdldERlbHRhcygicmlnaHQiKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gbW91c2VXaGVlbFNjcm9sbEFuZFdhaXQoeCwgeSwgZGVsdGEuWCwgZGVsdGEu
WSwgZGVsdGEuWCwgZGVsdGEuWSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgICAgIGFz
c2VydF9lcXVhbHMocm9vdC5zY3JvbGxMZWZ0ID4gMCwgcHJvcGFnYXRlWCwgJ0NvbnRpbnVlIHVw
IHRoZSBob3Jpem9udGFsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAgICAgICAgICAgIH0pOwor
ICAgICAgICAgICAgfSwgJ0lmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNj
cm9sbC1iZWhhdmlvcjogJyArIG92ZXJzY3JvbGxYICsgJyAnICsgb3ZlcnNjcm9sbFkgKyAnLicp
OworCisgICAgICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgICAgICAgICAgICAgIHJl
c2V0VGVzdCgpOworICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSBzY3JvbGxlci5jb250ZW50
V2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJodG1sIilbMF07CisgICAgICAg
ICAgICAgICAgdGFyZ2V0LnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclggPSBvdmVyc2Nyb2xsWDsK
KyAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWSA9IG92ZXJz
Y3JvbGxZOworCisgICAgICAgICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAv
IDI7CisgICAgICAgICAgICAgICAgdmFyIHkgPSBzY3JvbGxlci5jbGllbnRIZWlnaHQgLyAyOwor
ICAgICAgICAgICAgICAgIHZhciBkZWx0YSA9IGdldERlbHRhcygiZG93biIpOworICAgICAgICAg
ICAgICAgIHJldHVybiBtb3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCh4LCB5LCBkZWx0YS5YLCBkZWx0
YS5ZLCBkZWx0YS5YLCBkZWx0YS5ZKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICAgICAg
YXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbFRvcCA+IDAsIHByb3BhZ2F0ZVksICdDb250aW51ZSB1
cCB0aGUgdmVydGljYWwgc2Nyb2xsIGNoYWluaW5nJyk7CisgICAgICAgICAgICAgICAgfSk7Cisg
ICAgICAgICAgICB9LCAnSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9s
bC1iZWhhdmlvcjogJyArIG92ZXJzY3JvbGxYICsgJyAnICsgb3ZlcnNjcm9sbFkgKyAnLicpOwor
ICAgICAgICB9KTsKKyAgICB9CisKKyAgICBzY3JvbGxlci5hZGRFdmVudExpc3RlbmVyKCJsb2Fk
Iiwgb3ZlcnNjcm9sbEJlaGF2aW9yVGVzdCk7Cis8L3NjcmlwdD4KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNj
cm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVo
YXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYzOTVi
NjQ4OGQwODcwYjk1NjFjMDI4Njc5ZDdlMTVhNDdmY2U2ZTkKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9y
LXVuc2Nyb2xsYWJsZS1lbGVtZW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKKworUEFT
UyBVbnNjcm9sbGFibGUgZWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNj
cm9sbC1iZWhhdmlvcjogbm9uZS4KK1BBU1MgVW5zY3JvbGxhYmxlIGVsZW1lbnQgdmVydGljYWwg
c2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLgorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2
aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGlu
Zy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50Lmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uN2NiNzczMzY1OWUyYmM0YWJkNjUyNzE4OWNmNTA2ZDZmZWZhMjMwNAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xs
LW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRtbApAQCAtMCwwICsx
LDY2IEBACis8IWRvY3R5cGUgaHRtbD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90
ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb3Zl
cnNjcm9sbC1iZWhhdmlvci1zdXBwb3J0LmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0iaGVscCIg
aHJlZj0iaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1vdmVyc2Nyb2xsLWJlaGF2aW9yIj4K
KzxzdHlsZT4KKyAgICAuc2Nyb2xsaW5nIHsKKyAgICAgICAgb3ZlcmZsb3c6IHNjcm9sbDsKKyAg
ICB9CisgICAgLnNjcm9sbENvbnRlbnQgeworICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAg
IGhlaWdodDogMzAwcHg7CisgICAgfQorICAgICNyb290IHsKKyAgICAgICAgd2lkdGg6IDIwMHB4
OworICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAgIH0KKyAgICAjc2Nyb2xsZXIgeworICAgICAg
ICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICAgIG92ZXJzY3Jv
bGwtYmVoYXZpb3I6IG5vbmU7CisgICAgICAgIG92ZXJmbG93OiB2aXNpYmxlOworICAgICAgICBi
YWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZWQsIGJsdWUpOworICAgIH0KKzwv
c3R5bGU+Cis8ZGl2IGlkPSJyb290IiBjbGFzcz0ic2Nyb2xsaW5nIj4KKyAgICA8ZGl2IGlkPSJz
Y3JvbGxlciI+CisgICAgICAgIDxkaXYgY2xhc3M9InNjcm9sbENvbnRlbnQiPjwvZGl2PgorICAg
IDwvZGl2PgorICAgIDxkaXYgY2xhc3M9InNjcm9sbENvbnRlbnQiPjwvZGl2PgorPC9kaXY+CisK
KzxzY3JpcHQ+Citjb25zdCByb290ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jvb3QnKTsK
K2NvbnN0IHNjcm9sbGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Njcm9sbGVyJyk7Citm
dW5jdGlvbiByZXNldFRlc3QoKSB7CisgICAgcm9vdC5zY3JvbGxMZWZ0ID0gMDsKKyAgICByb290
LnNjcm9sbFRvcCA9IDA7CisgICAgcm9vdC5zY3JvbGxUbygwLCAwKTsKK30KKworZnVuY3Rpb24g
c3RhcnRUZXN0KCkgeworICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgICAgICAgICAg
cmVzZXRUZXN0KCk7CisgICAgICAgICAgICB2YXIgeCA9IHNjcm9sbGVyLmNsaWVudFdpZHRoIC8g
MjsKKyAgICAgICAgICAgIHZhciB5ID0gc2Nyb2xsZXIuY2xpZW50SGVpZ2h0IC8gMjsKKyAgICAg
ICAgICAgIHZhciBkZWx0YSA9IGdldERlbHRhcygicmlnaHQiKTsKKyAgICAgICAgICAgIHJldHVy
biBtb3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCh4LCB5LCBkZWx0YS5YLCBkZWx0YS5ZLCBkZWx0YS5Y
LCBkZWx0YS5ZKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJv
b3Quc2Nyb2xsTGVmdCA+IDAsIHRydWUsICdDb250aW51ZSB1cCB0aGUgaG9yaXpvbnRhbCBzY3Jv
bGwgY2hhaW5pbmcnKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9LCAnVW5zY3JvbGxhYmxl
IGVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6
IG5vbmUuJyk7CisKKyAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAgIHJl
c2V0VGVzdCgpOworICAgICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7
CisgICAgICAgICAgICB2YXIgeSA9IHNjcm9sbGVyLmNsaWVudEhlaWdodCAvIDI7CisgICAgICAg
ICAgICB2YXIgZGVsdGEgPSBnZXREZWx0YXMoImRvd24iKTsKKyAgICAgICAgICAgIHJldHVybiBt
b3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCh4LCB5LCBkZWx0YS5YLCBkZWx0YS5ZLCBkZWx0YS5YLCBk
ZWx0YS5ZKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJvb3Qu
c2Nyb2xsVG9wID4gMCwgdHJ1ZSwgJ0NvbnRpbnVlIHVwIHRoZSB2ZXJ0aWNhbCBzY3JvbGwgY2hh
aW5pbmcnKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9LCAnVW5zY3JvbGxhYmxlIGVsZW1l
bnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLicp
OworfQorCithZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgc3RhcnRUZXN0KTsKKzwvc2NyaXB0Pgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
c2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlm
cmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9s
bC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjdmYTU5Y2NiYTc5YWVmZjMzZGE3MGU5M2Q0ODhhMDdlZWM5YzU2OTEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVy
c2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsNSBAQAorCisKK1BBU1MgVW5zY3JvbGxhYmxlIGlmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0
ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4KK1BBU1MgVW5zY3JvbGxhYmxlIGlm
cmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUu
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92
ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFi
bGUtaWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTI0MjVhZmM2MzdkZjUxZTQ0MTU0MjZhYjQ2N2M2
MTRlMzhlZjYxNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5n
L3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5odG1s
CkBAIC0wLDAgKzEsNjYgQEAKKzwhZG9jdHlwZSBodG1sPgorCis8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJl
c291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXN1cHBvcnQuanMiPjwvc2NyaXB0PgorPGxpbmsg
cmVsPSJoZWxwIiBocmVmPSJodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLW92ZXJzY3JvbGwt
YmVoYXZpb3IiPgorPHN0eWxlPgorICAgIC5zY3JvbGxpbmcgeworICAgICAgICBvdmVyZmxvdzog
c2Nyb2xsOworICAgIH0KKyAgICAuc2Nyb2xsQ29udGVudCB7CisgICAgICAgIHdpZHRoOiAzMDBw
eDsKKyAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICB9CisgICAgI3Jvb3QgeworICAgICAgICB3
aWR0aDogMjAwcHg7CisgICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgfQorICAgICNzY3JvbGxl
ciB7CisgICAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgICAgaGVpZ2h0OiAyMDBweDsKKyAgICAg
ICAgb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZTsKKyAgICAgICAgb3ZlcmZsb3c6IHZpc2libGU7
CisgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJlZCwgYmx1ZSk7
CisgICAgfQorPC9zdHlsZT4KKzxkaXYgaWQ9J3Jvb3QnIGNsYXNzPSJzY3JvbGxpbmciPgorICAg
IDxpZnJhbWUgaWQ9J3Njcm9sbGVyJyBzcmNkb2M9IjxodG1sIHN0eWxlPSdvdmVyc2Nyb2xsLWJl
aGF2aW9yOiBub25lOyc+PGRpdiBzdHlsZT0nd2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDEwMHB4Oyc+
PC9kaXY+PC9odG1sPgorICAgICAgICAiPjwvaWZyYW1lPgorICAgIDxkaXYgY2xhc3M9InNjcm9s
bENvbnRlbnQiPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+Citjb25zdCByb290ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3Jvb3QnKTsKK2NvbnN0IHNjcm9sbGVyID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ3Njcm9sbGVyJyk7CisKK2Z1bmN0aW9uIHJlc2V0VGVzdCgpIHsKKyAgICBy
b290LnNjcm9sbExlZnQgPSAwOworICAgIHJvb3Quc2Nyb2xsVG9wID0gMDsKKyAgICByb290LnNj
cm9sbFRvKDAsIDApOworfQorCitmdW5jdGlvbiBzdGFydFRlc3QoKSB7CisgICAgICAgIHByb21p
c2VfdGVzdCgoKSA9PiB7CisgICAgICAgICAgICByZXNldFRlc3QoKTsKKyAgICAgICAgICAgIHZh
ciB4ID0gc2Nyb2xsZXIuY2xpZW50V2lkdGggLyAyOworICAgICAgICAgICAgdmFyIHkgPSBzY3Jv
bGxlci5jbGllbnRIZWlnaHQgLyAyOworICAgICAgICAgICAgdmFyIGRlbHRhID0gZ2V0RGVsdGFz
KCJyaWdodCIpOworICAgICAgICAgICAgcmV0dXJuIG1vdXNlV2hlZWxTY3JvbGxBbmRXYWl0KHgs
IHksIGRlbHRhLlgsIGRlbHRhLlksIGRlbHRhLlgsIGRlbHRhLlkpLnRoZW4oKCkgPT4geworICAg
ICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxMZWZ0ID4gMCwgdHJ1ZSwgJ0Nv
bnRpbnVlIHVwIHRoZSBob3Jpem9udGFsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAgICAgICAg
fSk7CisgICAgICAgIH0sICdVbnNjcm9sbGFibGUgaWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRl
c3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLicpOworCisgICAgICAgIHByb21pc2Vf
dGVzdCgoKSA9PiB7CisgICAgICAgICAgICByZXNldFRlc3QoKTsKKyAgICAgICAgICAgIHZhciB4
ID0gc2Nyb2xsZXIuY2xpZW50V2lkdGggLyAyOworICAgICAgICAgICAgdmFyIHkgPSBzY3JvbGxl
ci5jbGllbnRIZWlnaHQgLyAyOworICAgICAgICAgICAgdmFyIGRlbHRhID0gZ2V0RGVsdGFzKCJk
b3duIik7CisgICAgICAgICAgICByZXR1cm4gbW91c2VXaGVlbFNjcm9sbEFuZFdhaXQoeCwgeSwg
ZGVsdGEuWCwgZGVsdGEuWSwgZGVsdGEuWCwgZGVsdGEuWSkudGhlbigoKSA9PiB7CisgICAgICAg
ICAgICAgICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbFRvcCA+IDAsIHRydWUsICdDb250aW51
ZSB1cCB0aGUgdmVydGljYWwgc2Nyb2xsIGNoYWluaW5nJyk7CisgICAgICAgICAgICB9KTsKKyAg
ICAgICAgfSwgJ1Vuc2Nyb2xsYWJsZSBpZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBv
dmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLicpOworfQorCithZGRFdmVudExpc3RlbmVyKCJsb2Fk
Iiwgc3RhcnRUZXN0KTsKKzwvc2NyaXB0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggZWY3ZmRlYjNjODg3
MDUzYzE5N2VhNWRlZDI0NjA3YjM4MjJkYjZmNC4uNTk5MTI0ODEyNGExYTlmMjlkNDQyZjZhM2Jk
NDI4NDc4OTMxOTFlMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RF
eHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlv
bnMKQEAgLTc5NSw2ICs3OTUsMTIgQEAgc3ZnL3RleHQvc2VsZWN0LXRleHQtc3ZnZm9udC5odG1s
IFsgU2tpcCBdCiBzdmcvdGV4dC9zZWxlY3Rpb24tZG91YmxlY2xpY2suc3ZnIFsgU2tpcCBdCiBz
dmcvdGV4dC9zZWxlY3Rpb24tdHJpcGxlY2xpY2suc3ZnIFsgU2tpcCBdCiAKKyMgT3ZlcnNjcm9s
bC1iZWhhdmlvciBpcyBub3Qgc3VwcG9ydGVkIG9uIGlPUworZmFzdC9zY3JvbGxpbmcvc3luYy1z
Y3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50Lmh0bWwgWyBTa2lwIF0KK2Zhc3Qvc2Ny
b2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0bWwgWyBTa2lw
IF0KK2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3Jv
bGxhYmxlLWVsZW1lbnQuaHRtbCBbIFNraXAgXQorZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwt
b3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLmh0bWwgWyBTa2lwIF0KKwog
IyBJT1MgZG9lcyBub3QgaW1wbGVtZW50IHNldEF1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVk
CiBlZGl0aW5nL2luc2VydGluZy90eXBpbmctc3BhY2UtdG8tdHJpZ2dlci1zbWFydC1saW5rLmh0
bWwgWyBTa2lwIF0KIGVkaXRpbmcvaW5zZXJ0aW5nL3NtYXJ0LWxpbmstd2hlbi1jYXJldC1pcy1t
b3ZlZC1iZWZvcmUtVVJMLmh0bWwgWyBTa2lwIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy13azEvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBlMjI3MGI2Zjk5ZDQ5OGY5NjRlOWY4OTI2YjIy
YmQ2NGM4YzY5M2I0Li5mMTJjM2Q5MmM0NTE5ZWY0ZGVlNTc5YjgzOTkyMWQxZTMzMzFkYjAxIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCkBAIC00
NTMsNiArNDUzLDEwIEBAIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1z
Y3JvbGwtc25hcC9zY3JvbGwtdGFyZ2V0LXBhZGRpbmctMDAxLmh0CiBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mtc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtc3RvcC1jaGFu
Z2UuaHRtbCBbIEZhaWx1cmUgXQogY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwtcGFkZGluZy1tYWlu
ZnJhbWUtcGFnaW5nLmh0bWwgWyBGYWlsdXJlIF0KIAorIyBMYWNrIG9mIHdheXMgdG8gY29udHJv
bCB0aGUgY3Jvc3MtZnJhbWUgc2Nyb2xsIGNoYWluaW5nIGluIFdLMS4KK2Zhc3Qvc2Nyb2xsaW5n
L3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0bWwgWyBTa2lwIF0KK2Zh
c3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxl
LWlmcmFtZS5odG1sIFsgU2tpcCBdCisKICMjIyBFTkQgT0YgKDIpIEZhaWx1cmVzIHdpdGhvdXQg
YnVnIHJlcG9ydHMKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423300</attachid>
            <date>2021-03-15 22:43:27 -0700</date>
            <delta_ts>2021-03-18 03:34:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222968-20210316134325.patch</filename>
            <type>text/plain</type>
            <size>62303</size>
            <attacher name="cathiechen">cathiechen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0NDE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWJmNDc4OWYyMmE2OTA3
MzY0ZTQyNWUxZmNhYTJkOTI3MDQ2NTRlYS4uNzhjZjJmNzU3NzZlMDU1MDYzZWU4YjhmNzhkNTAy
MDRjMWZjYTBkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDIxLTAzLTE1ICBDYXRo
aWUgQ2hlbiAgPGNhdGhpZWNoZW5AaWdhbGlhLmNvbT4KKworICAgICAgICBTdXBwb3J0IENTUyBv
dmVyc2Nyb2xsLWJlaGF2aW9yIGZvciBzeW5jaHJvbm91cyBzY3JvbGwKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjk2OAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJhc2VkIG9uIEZyw6lkw6lyaWMgV2Fu
ZydzIHBhdGNoLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYnJpbmdzIGluaXRpYWwgc3VwcG9ydCBv
ZiBDU1MgcHJvcGVydHkgb3ZlcnNjcm9sbC1iZWhhdmlvci4gT3ZlcnNjcm9sbC1iZWhhdmlvciBz
ZXRzIHdoYXQKKyAgICAgICAgdGhlIGJyb3dzZXIgZG9lcyB3aGVuIHJlYWNoaW5nIHRoZSBib3Vu
ZGFyeSBvZiBhIHNjcm9sbGluZyBhcmVhLiBGaXJlZm94IGFuZCBDaHJvbWl1bS12YXJpYW50IGJy
b3dzZXJzCisgICAgICAgIGFscmVhZHkgc3VwcG9ydCBpdC4gSXRzIHNwZWNpZmljYXRpb24gY2Fu
IGJlIGZvdW5kIGF0IGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3Mtb3ZlcnNjcm9sbC0xLyNv
dmVyc2Nyb2xsLWJlaGF2aW9yLXByb3BlcnRpZXMKKyAgICAgICAgVGhpcyBwYXRjaCBhaW1zIHRv
IHN1cHBvcnQgaXQgZm9yIHRoZSBzeW5jaHJvbm91cyBzY3JvbGwuIFRoZSBhc3luY2hyb25vdXMg
c2Nyb2xsIG9uIE1hYyB3aWxsIGJlIGNvdmVyZWQgbGF0ZXIuCisKKyAgICAgICAgQWNjb3JkaW5n
IHRvIHRoZSB2YWx1ZSBvZiBvdmVyc2Nyb2xsLWJlaGF2aW9yLCB0aGlzIHBhdGNoIGNvbnRyb2xz
IHRoZSBzY3JvbGwgY2hhaW5pbmcsIHRoZSBzY3JvbGwgc3RyZXRjaCwKKyAgICAgICAgYW5kIHN3
aXBlIGdlc3R1cmVzIGdlbmVyYXRpb24gb2YgdGhlIHN5bmNocm9ub3VzIHNjcm9sbC4gVG8gY29u
dHJvbCB0aGUgc2Nyb2xsIGNoYWluaW5nLAorICAgICAgICBtX3Njcm9sbENoYWluaW5nQmxvY2tl
ciBpcyBhZGRlZCB0byBFdmVudEhhbmxkZXIsIGl0IGlzIGdlbmVyYXRlZCBhY2NvcmRpbmcgdG8g
b3ZlcnNjcm9sbC1iZWhhdmlvciB2YWx1ZXMuCisgICAgICAgIEl0IGluZGljYXRlcyB3aGV0aGVy
IHRoZSBzY3JvbGwgY2hhaW5pbmcgb2YgdGhpcyBmcmFtZSBzaG91bGQgYmUgc3RvcHBlZCBvciBu
b3QuCisgICAgICAgIFRoZSBzY3JvbGwgY2hhaW5pbmcgaXMgaGFuZGxlZCBkaWZmZXJlbnRseSBi
eSBXSEVFTF9FVkVOVF9MQVRDSElORyBzZXR0aW5nLiBJZiBXSEVFTF9FVkVOVF9MQVRDSElORyBp
cyBvZmYsCisgICAgICAgIHRoZSBzY3JvbGwgY2hhaW5pbmcgaXMgaGFuZGxlZCBkaXJlY3RseSBp
biBFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94
KCkuCisgICAgICAgIElmIFdIRUVMX0VWRU5UX0xBVENISU5HIGlzIG9uLCB0aGUgbGF0Y2hlZCBz
Y3JvbGwgdGFyZ2V0IGlzIGFsd2F5cyBGcmFtZVZpZXcgaWYgaXQgbmVlZHMgdG8gc3RvcCB0aGUg
c2Nyb2xsIGNoYWluaW5nLgorICAgICAgICBJZiBjdXJyZW50IGZyYW1lIGlzIGEgc3ViZnJhbWUs
IHRoZSB2YWx1ZSBvZiBtX3Njcm9sbENoYWluaW5nQmxvY2tlciB3aWxsIGJlIHBhc3NlZCB0byBp
dHMgcGFyZW50IGZyYW1lLgorICAgICAgICBBbmQgZXZlbnR1YWxseSwgbGV0IHRoZSBtYWluZnJh
bWUgaGFuZGxlIG1fc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLiBUaGUgbWFpbmZyYW1lIGJsb2NrcyB2
ZXJ0aWNhbCBzY3JvbGwgY2hhaW5pbmcgZGlyZWN0bHksCisgICAgICAgIGFuZCBob3Jpem9udGFs
bHkgaXQgd2lsbCBsZXQgdGhlIHZpZXdzIGRlY2lkZSB3aGV0aGVyIGl0IHNob3VsZCBnZW5lcmF0
ZSBzd2lwZSBnZXN0dXJlcyBvciBub3QuCisgICAgICAgIEFib3V0IHRoZSBzY3JvbGwgc3RyZXRj
aCwgaXQgaXMgY2FuY2VsZWQgaWYgdGhlIHZhbHVlIG9mIG92ZXJzY3JvbGwtYmVoYXZpb3IgaXMg
bm9uZS4KKworICAgICAgICBUZXN0czogZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNj
cm9sbC1iZWhhdmlvci1lbGVtZW50Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvc2Nyb2xsaW5n
L3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0bWwKKyAgICAgICAgICAg
ICAgIGZhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3Jv
bGxhYmxlLWVsZW1lbnQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9zY3JvbGxpbmcvc3luYy1z
Y3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLmh0bWwKKworICAg
ICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFu
ZGxlcjo6c2Nyb2xsQ2hhaW5pbmdCbG9ja2VyQ2hhbmdlZEJ5U3ViZnJhbWUpOiBVcGRhdGUgdGhl
IHN0YXRlIG9mIHNjcm9sbExhdGNoaW5nQ29udHJvbGxlciBpZiBtX3Njcm9sbENoYWluaW5nQmxv
Y2tlciBpcyBjaGFuZ2VkIGJ5IHN1YmZyYW1lLgorICAgICAgICAoV2ViQ29yZTo6dXBkYXRlUGFy
ZW50RnJhbWVTY3JvbGxDaGFpbmluZ0Jsb2NrZXIpOiBVcGRhdGUgbV9zY3JvbGxDaGFpbmluZ0Js
b2NrZXIgZm9yIHBhcmVudCBmcmFtZS4KKyAgICAgICAgKFdlYkNvcmU6OmNoZWNrU2Nyb2xsQ2hh
aW5pbmdCbG9ja2VyRm9yRnJhbWVWaWV3KTogQ2hlY2sgaWYgbV9zY3JvbGxDaGFpbmluZ0Jsb2Nr
ZXIgYmxvY2tzIHRoZSBzY3JvbGwgY2hhaW5pbmcgb24gRnJhbWVWaWV3LAorICAgICAgICBkZWFs
IHdpdGggaG9yaXpvbnRhbCBhbmQgdmVydGljYWwgc2Nyb2xsIGNoYWluaW5nIGRpZmZlcmVudGx5
LCBhbmQgdXBkYXRlIHRoZSBkZWx0YSBvZiBXaGVlbEV2ZW50IGlmIGl0IGRvZXNuJ3QgYmxvY2sg
dGhlIHNjcm9sbCBjaGFpbmluZy4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFu
ZGxlV2hlZWxFdmVudEludGVybmFsKTogSWYgaXQncyBtYWluIGZyYW1lLCBibG9jayBzY3JvbGwg
Y2hhaW5pbmcgYnkgdGhlIHZhbHVlIG9mIG1fc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLgorICAgICAg
ICBJZiBpdCdzIHN1YmZyYW1lLCBwYXNzIG1fc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIHZhbHVlIHRv
IHBhcmVudCBmcmFtZS4gCisgICAgICAgIChXZWJDb3JlOjpkaWRTY3JvbGxJblNjcm9sbGFibGVB
cmVhKTogRmlsdGVyIHRoZSBzY3JvbGwgZGVsdGEgYnkgdGhlIFNjcm9sbENoYWluaW5nQmxvY2tl
ciB2YWx1ZS4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVu
dEluQXBwcm9wcmlhdGVFbmNsb3NpbmdCb3gpOiBCbG9jayBzY3JvbGwgY2hhaW5pbmcgYWNjb3Jk
aW5nIHRvIHRoZSB2YWx1ZSBvZiBtX3Njcm9sbENoYWluaW5nQmxvY2tlci4KKyAgICAgICAgKFdl
YkNvcmU6OkV2ZW50SGFuZGxlcjo6dXBkYXRlU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6cmVzZXRTY3JvbGxDaGFpbmluZ0Jsb2NrZXIpOgor
ICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmg6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojpob3Jpem9udGFsT3ZlcnNjcm9sbEJl
aGF2aW9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6dmVydGljYWxPdmVy
c2Nyb2xsQmVoYXZpb3IgY29uc3QpOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3Lmg6CisgICAg
ICAgICogcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Zmlu
ZEVuY2xvc2luZ1Njcm9sbGFibGVDb250YWluZXIpOiBVcGRhdGUgdGhlIHZhbHVlIG9mIFNjcm9s
bENoYWluaW5nQmxvY2tlciBhbmQgcmV0dXJuIG51bGwgaWYgc2hvdWxkQmxvY2tTY3JvbGxDaGFp
bmluZygpLgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpkZXRlcm1pbmVXaGVlbEV2
ZW50VGFyZ2V0KTogSWYgc2hvdWxkQmxvY2tTY3JvbGxDaGFpbmluZygpLCBGcmFtZVZpZXcgd2ls
bCBiZSB0aGUgbGF0Y2hlZCBzY3JvbGwgdGFyZ2V0LgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRI
YW5kbGVyOjpzY3JvbGxDaGFpbmluZ0Jsb2NrZXJDaGFuZ2VkQnlTdWJmcmFtZSk6IERpdHRvLgor
ICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1XaGVlbEV2ZW50Ojp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbCk6
IE1vdmVkIGZyb20gU2Nyb2xsQ29udHJvbGxlci5tbQorICAgICAgICAqIHBsYXRmb3JtL1Njcm9s
bFR5cGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxDaGFpbmluZ0Jsb2NrZXI6OnNob3Vs
ZEJsb2NrU2Nyb2xsQ2hhaW5pbmcpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQ2hhaW5pbmdC
bG9ja2VyOjpmaWx0ZXJEZWx0YSk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWE6OnVwZGF0ZVNjcm9sbENoYWlu
aW5nQmxvY2tlclN0YXRlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxhYmxlQXJl
YS5oOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWE6Omhvcml6b250YWxPdmVyc2Ny
b2xsQmVoYXZpb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWE6OnZl
cnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMv
U2Nyb2xsQW5pbWF0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck1h
Yzo6c2hvdWxkRm9yd2FyZFdoZWVsRXZlbnRzVG9QYXJlbnQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsQW5pbWF0b3JNYWM6OmFsbG93c1ZlcnRpY2FsU3RyZXRjaGluZyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck1hYzo6YWxsb3dzSG9yaXpvbnRhbFN0
cmV0Y2hpbmcgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxDb250cm9sbGVy
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQ29udHJvbGxlcjo6ZGlyZWN0aW9uRnJvbUV2
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbENvbnRyb2xsZXI6OndoZWVsRGVsdGFCaWFz
aW5nVG93YXJkc1ZlcnRpY2FsKTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
TGF5ZXJTY3JvbGxhYmxlQXJlYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllclNj
cm9sbGFibGVBcmVhOjpob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWE6OnZlcnRpY2FsT3ZlcnNjcm9s
bEJlaGF2aW9yIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxh
YmxlQXJlYS5oOgorCiAyMDIxLTAzLTE1ICBJbWFub2wgRmVybmFuZGV6ICA8aWZlcm5hbmRlekBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFNwbGl0IFdlYlhSIGZlYXR1cmVzIGludG8gZW5hYmxlZEZl
YXR1cmVzLCBzdXBwb3J0ZWRGZWF0dXJlcyBhbmQgcmVxdWVzdGVkRmVhdHVyZXMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZwppbmRleCBjNzdjMGYyODYzZTE4OTI4NzFjYmEwODllMDAwNWMyNTQx
ZDg3N2FkLi5iNTdkYTQxZjIzNjY2MTk2MTQyZTBmN2Y5MDMxYWI0OTZkZGM1OGRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEtMDMtMTUgIENhdGhp
ZSBDaGVuICA8Y2F0aGllY2hlbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFN1cHBvcnQgQ1NTIG92
ZXJzY3JvbGwtYmVoYXZpb3IgZm9yIHN5bmNocm9ub3VzIHNjcm9sbAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyOTY4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmFzZWQgb24gRnLDqWTDqXJpYyBXYW5n
J3MgcGF0Y2guCisKKyAgICAgICAgTmVlZCB0byBmaW5kIGEgd2F5IHRvIGJsb2NrIHRoZSBjcm9z
cy1mcmFtZSBzY3JvbGwgY2hhaW5pbmcgaW4gV0sxLgorCisgICAgICAgICogV2ViVmlldy9XZWJI
VE1MVmlldy5tbToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgc2Nyb2xsV2hlZWw6XSk6CisKIDIw
MjEtMDMtMTEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBJbnRy
b2R1Y2UgV29ya1F1ZXVlOjptYWluKCkgdG8gZ2V0IHRoZSBtYWluIHRocmVhZCdzIHdvcmsgcXVl
dWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCAyZjE4ZTFlZWU5ODRlOTAx
ZDE0ZTViOTUyZWM1MWEwYjIzYWU0ZThiLi41Y2E5MDQzNmQ0ODM5OWM1ZGE4ZWMxZDY0NzgyNjYz
NjYzNGM3MzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0yNzM5LDYg
KzI3MzksMTAgQEAgdm9pZCBFdmVudEhhbmRsZXI6OmRldGVybWluZVdoZWVsRXZlbnRUYXJnZXQo
Y29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgUmVmUHRyPEUKIHsKIH0KIAordm9pZCBFdmVudEhh
bmRsZXI6OnNjcm9sbENoYWluaW5nQmxvY2tlckNoYW5nZWRCeVN1YmZyYW1lKGNvbnN0IFBsYXRm
b3JtV2hlZWxFdmVudCYsIFJlZlB0cjxFbGVtZW50PiYsIFdlYWtQdHI8U2Nyb2xsYWJsZUFyZWE+
JiwgYm9vbCYpCit7Cit9CisKIHZvaWQgRXZlbnRIYW5kbGVyOjpyZWNvcmRXaGVlbEV2ZW50Rm9y
RGVsdGFGaWx0ZXIoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCkKIHsKICAgICBpZiAo
YXV0byogcGFnZSA9IG1fZnJhbWUucGFnZSgpKQpAQCAtMjg1Nyw2ICsyODYxLDU2IEBAIGJvb2wg
RXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYg
d2hlZWxFdmVudCwgT3B0aW9uCiAgICAgcmV0dXJuIGhhbmRsZWQ7CiB9CiAKKyNpZiBFTkFCTEUo
V0hFRUxfRVZFTlRfTEFUQ0hJTkcpCitzdGF0aWMgdm9pZCB1cGRhdGVQYXJlbnRGcmFtZVNjcm9s
bENoYWluaW5nQmxvY2tlcihjb25zdCBTY3JvbGxhYmxlQXJlYSogc2Nyb2xsYWJsZUFyZWEsIEZy
YW1lJiBmcmFtZSwgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyJiBibG9ja2VyKQoreworICAgIGF1dG8q
IHBhcmVudCA9IGZyYW1lLnRyZWUoKS5wYXJlbnQoKTsKKyAgICBpZiAoIXNjcm9sbGFibGVBcmVh
KQorICAgICAgICBzY3JvbGxhYmxlQXJlYSA9IGZyYW1lLnZpZXcoKTsKKyAgICBpZiAoIWZyYW1l
LnBhZ2UoKSB8fCAhcGFyZW50IHx8ICFzY3JvbGxhYmxlQXJlYSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIHNjcm9sbGFibGVBcmVhLT51cGRhdGVTY3JvbGxDaGFpbmluZ0Jsb2NrZXJTdGF0ZShibG9j
a2VyKTsKKyAgICBwYXJlbnQtPmV2ZW50SGFuZGxlcigpLnVwZGF0ZVNjcm9sbENoYWluaW5nQmxv
Y2tlcihibG9ja2VyKTsKK30KKworc3RhdGljIGJvb2wgY2hlY2tTY3JvbGxDaGFpbmluZ0Jsb2Nr
ZXJGb3JGcmFtZVZpZXcoY29uc3QgU2Nyb2xsYWJsZUFyZWEqIHNjcm9sbGFibGVBcmVhLCBGcmFt
ZSYgZnJhbWUsIFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgU2Nyb2xsQ2hhaW5pbmdC
bG9ja2VyIHNjcm9sbENoYWluaW5nQmxvY2tlciwgYm9vbCYgaGFuZGxlZEV2ZW50KQoreworICAg
IGlmICghc2Nyb2xsYWJsZUFyZWEpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChz
Y3JvbGxhYmxlQXJlYSAhPSBmcmFtZS52aWV3KCkpIHsKKyAgICAgICAgLy8gV2hlZWwgZXZlbnQg
aXMgZ29pbmcgdG8gYmUgaGFuZGxlZCBieSBGcmFtZVZpZXcgaW4gcHJvY2Vzc1doZWVsRXZlbnRG
b3JTY3JvbGxpbmcoKSwKKyAgICAgICAgLy8gc2hvdWxkIGxldCBzY3JvbGxhYmxlQXJlYSdzIG92
ZXJzY3JvbGwtYmVoYXZpb3IgZWZmZWN0IFNjcm9sbENoYWluaW5nQmxvY2tlci4KKyAgICAgICAg
c2Nyb2xsYWJsZUFyZWEtPnVwZGF0ZVNjcm9sbENoYWluaW5nQmxvY2tlclN0YXRlKHNjcm9sbENo
YWluaW5nQmxvY2tlcik7CisgICAgfQorCisgICAgRmxvYXRTaXplIGZpbHRlcmVkRGVsdGEod2hl
ZWxFdmVudC5kZWx0YVgoKSwgd2hlZWxFdmVudC5kZWx0YVkoKSk7CisgICAgYXV0byBiaWFzZWRE
ZWx0YSA9IFBsYXRmb3JtV2hlZWxFdmVudDo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGlj
YWwoZmlsdGVyZWREZWx0YSk7CisgICAgaWYgKHNjcm9sbENoYWluaW5nQmxvY2tlci5ibG9ja1gg
JiYgIWJpYXNlZERlbHRhLmhlaWdodCgpKSB7CisgICAgICAgIC8vIElmIHRoZSBob3Jpem9udGFs
IHNjcm9sbCBjaGFpbmluZyBpcyBibG9ja2VkIGJ5IG92ZXJzY3JvbGwtYmVoYXZpb3IgaW4gYSBz
dWJmcmFtZS4KKyAgICAgICAgLy8gSXQgcHJvcGFnYXRlcyBpdHMgU2Nyb2xsQ2hhaW5pbmdCbG9j
a2VyIHRvIHBhcmVudCBmcmFtZXMgYW5kIGV2ZW50dWFsbHkgbGV0IG1haW5mcmFtZQorICAgICAg
ICAvLyBkZWNpZGUgd2hldGhlciBuZWVkIHRvIHRyaWdnZXIgYSBzd2lwZSBnZXN0dXJlIG9yIG5v
dC4KKyAgICAgICAgaWYgKGZyYW1lLmlzTWFpbkZyYW1lKCkpIHsKKyAgICAgICAgICAgIC8vIElu
IG1haW4gZnJhbWUsIHRyaWdnZXIgdGhlIHN3aXBlIGdlc3R1cmUgaWYgbmVlZGVkLgorICAgICAg
ICAgICAgaGFuZGxlZEV2ZW50ID0gIWJpYXNlZERlbHRhLndpZHRoKCk7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICB1cGRhdGVQYXJlbnRGcmFtZVNjcm9sbENoYWluaW5nQmxvY2tlcihz
Y3JvbGxhYmxlQXJlYSwgZnJhbWUsIHNjcm9sbENoYWluaW5nQmxvY2tlcik7CisgICAgICAgICAg
ICBoYW5kbGVkRXZlbnQgPSBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisKKyAgICBpZiAoU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyOjpzaG91bGRCbG9ja1Njcm9s
bENoYWluaW5nKHNjcm9sbENoYWluaW5nQmxvY2tlciwgYmlhc2VkRGVsdGEpKSB7CisgICAgICAg
IGhhbmRsZWRFdmVudCA9IHRydWU7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAg
IFNjcm9sbENoYWluaW5nQmxvY2tlcjo6ZmlsdGVyRGVsdGEoc2Nyb2xsQ2hhaW5pbmdCbG9ja2Vy
LCBiaWFzZWREZWx0YSwgZmlsdGVyZWREZWx0YSk7CisgICAgd2hlZWxFdmVudCA9IHdoZWVsRXZl
bnQuY29weVdpdGhEZWx0YXNBbmRWZWxvY2l0eShmaWx0ZXJlZERlbHRhLndpZHRoKCksIGZpbHRl
cmVkRGVsdGEuaGVpZ2h0KCksIHdoZWVsRXZlbnQuc2Nyb2xsaW5nVmVsb2NpdHkoKSk7CisgICAg
cmV0dXJuIGZhbHNlOworfQorI2VuZGlmCisKIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVl
bEV2ZW50SW50ZXJuYWwoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCwgT3B0aW9uU2V0
PFdoZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHM+IHByb2Nlc3NpbmdTdGVwcywgT3B0aW9uU2V0PEV2
ZW50SGFuZGxpbmc+JiBoYW5kbGluZykKIHsKICAgICBhdXRvKiBkb2N1bWVudCA9IG1fZnJhbWUu
ZG9jdW1lbnQoKTsKQEAgLTI4ODksNiArMjk0Myw4IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5k
bGVXaGVlbEV2ZW50SW50ZXJuYWwoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCwgT3B0
CiAgICAgYXV0byBkZWZlcnJlciA9IFdoZWVsRXZlbnRUZXN0TW9uaXRvckNvbXBsZXRpb25EZWZl
cnJlciB7IG1vbml0b3IuZ2V0KCksIHRoaXMsIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6RGVmZXJS
ZWFzb246OkhhbmRsaW5nV2hlZWxFdmVudE9uTWFpblRocmVhZCB9OwogI2VuZGlmCiAKKyAgICBy
ZXNldFNjcm9sbENoYWluaW5nQmxvY2tlcigpOworCiAgICAgbV9pc0hhbmRsaW5nV2hlZWxFdmVu
dCA9IHRydWU7CiAgICAgYXV0byBhbGxvd3NTY3JvbGxpbmdTdGF0ZSA9IFNldEZvclNjb3BlKG1f
Y3VycmVudFdoZWVsRXZlbnRBbGxvd3NTY3JvbGxpbmcsIHByb2Nlc3NpbmdTdGVwcy5jb250YWlu
cyhXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBzOjpNYWluVGhyZWFkRm9yU2Nyb2xsaW5nKSk7CiAg
ICAgCkBAIC0yOTEzLDExICsyOTY5LDE2IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVl
bEV2ZW50SW50ZXJuYWwoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCwgT3B0CiAgICAg
Ly8gaXRzZWxmIGZpbmRzIGFuZCB0cmllcyB0byBzY3JvbGwgb3ZlcmZsb3cgc2Nyb2xsZXJzLgog
ICAgIGRldGVybWluZVdoZWVsRXZlbnRUYXJnZXQoZXZlbnQsIGVsZW1lbnQsIHNjcm9sbGFibGVB
cmVhLCBpc092ZXJXaWRnZXQpOwogCisgICAgYXV0byBvbGRCbG9ja2VyID0gbV9zY3JvbGxDaGFp
bmluZ0Jsb2NrZXI7CiAgICAgaWYgKGVsZW1lbnQpIHsKICAgICAgICAgaWYgKGlzT3ZlcldpZGdl
dCkgewogICAgICAgICAgICAgaWYgKFdlYWtQdHI8V2lkZ2V0PiB3aWRnZXQgPSB3aWRnZXRGb3JF
bGVtZW50KCplbGVtZW50KSkgewogICAgICAgICAgICAgICAgIGlmIChwYXNzV2hlZWxFdmVudFRv
V2lkZ2V0KGV2ZW50LCAqd2lkZ2V0LmdldCgpLCBwcm9jZXNzaW5nU3RlcHMpKQogICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gY29tcGxldGVXaWRnZXRXaGVlbEV2ZW50KGV2ZW50LCB3aWRnZXQs
IHNjcm9sbGFibGVBcmVhKTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChtX3Njcm9sbENoYWlu
aW5nQmxvY2tlci5ibG9ja1ggIT0gb2xkQmxvY2tlci5ibG9ja1ggfHwgbV9zY3JvbGxDaGFpbmlu
Z0Jsb2NrZXIuYmxvY2tZICE9IG9sZEJsb2NrZXIuYmxvY2tZKSB7CisgICAgICAgICAgICAgICAg
ICAgIC8vIElmIG1fc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIGlzIGNoYW5nZWQgaW4gc3ViZnJhbWVz
LCB0aGUgbGFjaGVkIHN0YXRlIHNob3VsZCBiZSBjYWxjdWxhdGVkIGFnYWluLgorICAgICAgICAg
ICAgICAgICAgICBzY3JvbGxDaGFpbmluZ0Jsb2NrZXJDaGFuZ2VkQnlTdWJmcmFtZShldmVudCwg
ZWxlbWVudCwgc2Nyb2xsYWJsZUFyZWEsIGlzT3ZlcldpZGdldCk7CisgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTI5NDksMTIgKzMwMTAsMjkgQEAgYm9v
bCBFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnRJbnRlcm5hbChjb25zdCBQbGF0Zm9ybVdo
ZWVsRXZlbnQmIGV2ZW50LCBPcHQKICNpZiBFTkFCTEUoV0hFRUxfRVZFTlRfTEFUQ0hJTkcpCiAg
ICAgaWYgKGFsbG93U2Nyb2xsaW5nKQogICAgICAgICBhbGxvd1Njcm9sbGluZyA9IG1fZnJhbWUu
cGFnZSgpLT5zY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIoKS5sYXRjaGluZ0FsbG93c1Njcm9sbGlu
Z0luRnJhbWUobV9mcmFtZSwgc2Nyb2xsYWJsZUFyZWEpOworICAgIGlmICghKGFsbG93U2Nyb2xs
aW5nIHx8IG1fZnJhbWUuaXNNYWluRnJhbWUoKSkpCisgICAgICAgIHVwZGF0ZVBhcmVudEZyYW1l
U2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKHNjcm9sbGFibGVBcmVhLmdldCgpLCBtX2ZyYW1lLCBtX3Nj
cm9sbENoYWluaW5nQmxvY2tlcik7CiAjZW5kaWYKIAogICAgIGlmIChhbGxvd1Njcm9sbGluZykg
ewotICAgICAgICAvLyBGSVhNRTogcHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxpbmcoKSBpcyBv
bmx5IGNhbGxlZCBmb3IgRnJhbWVWaWV3IHNjcm9sbGluZywgbm90IG92ZXJmbG93IHNjcm9sbGlu
Zywgd2hpY2ggaXMgY29uZnVzaW5nLgotICAgICAgICBoYW5kbGVkRXZlbnQgPSBwcm9jZXNzV2hl
ZWxFdmVudEZvclNjcm9sbGluZyhldmVudCwgc2Nyb2xsYWJsZUFyZWEsIGhhbmRsaW5nKTsKLSAg
ICAgICAgcHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxTbmFwKGV2ZW50LCBzY3JvbGxhYmxlQXJl
YSk7CisgICAgICAgIFBsYXRmb3JtV2hlZWxFdmVudCBhZGp1c3RlZFdoZWVsRXZlbnQgPSBQbGF0
Zm9ybVdoZWVsRXZlbnQoZXZlbnQpOworICAgICAgICBib29sIHNjcm9sbENoYWluaW5nU3RvcHBl
ZCA9IGZhbHNlOworI2lmIEVOQUJMRShXSEVFTF9FVkVOVF9MQVRDSElORykKKyAgICAgICAgc2Ny
b2xsQ2hhaW5pbmdTdG9wcGVkID0gY2hlY2tTY3JvbGxDaGFpbmluZ0Jsb2NrZXJGb3JGcmFtZVZp
ZXcoc2Nyb2xsYWJsZUFyZWEuZ2V0KCksIG1fZnJhbWUsIGFkanVzdGVkV2hlZWxFdmVudCwgbV9z
Y3JvbGxDaGFpbmluZ0Jsb2NrZXIsIGhhbmRsZWRFdmVudCk7CisjZW5kaWYKKyAgICAgICAgaWYg
KCFzY3JvbGxDaGFpbmluZ1N0b3BwZWQpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBwcm9jZXNz
V2hlZWxFdmVudEZvclNjcm9sbGluZygpIGlzIG9ubHkgY2FsbGVkIGZvciBGcmFtZVZpZXcgc2Ny
b2xsaW5nLCBub3Qgb3ZlcmZsb3cgc2Nyb2xsaW5nLCB3aGljaCBpcyBjb25mdXNpbmcuCisgICAg
ICAgICAgICBoYW5kbGVkRXZlbnQgPSBwcm9jZXNzV2hlZWxFdmVudEZvclNjcm9sbGluZyhhZGp1
c3RlZFdoZWVsRXZlbnQsIHNjcm9sbGFibGVBcmVhLCBoYW5kbGluZyk7CisgICAgICAgICAgICBw
cm9jZXNzV2hlZWxFdmVudEZvclNjcm9sbFNuYXAoYWRqdXN0ZWRXaGVlbEV2ZW50LCBzY3JvbGxh
YmxlQXJlYSk7CisgICAgICAgIH0KKyNpZiAhRU5BQkxFKFdIRUVMX0VWRU5UX0xBVENISU5HKQor
ICAgICAgICBpZiAoYXV0byogdmlldyA9IG1fZnJhbWUudmlldygpKSB7CisgICAgICAgICAgICBp
ZiAoIWhhbmRsZWRFdmVudCkgeworICAgICAgICAgICAgICAgIGF1dG8gYmlhc2VkRGVsdGEgPSBQ
bGF0Zm9ybVdoZWVsRXZlbnQ6OndoZWVsRGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRpY2FsKGFkanVz
dGVkV2hlZWxFdmVudC5kZWx0YSgpKTsKKyAgICAgICAgICAgICAgICBoYW5kbGVkRXZlbnQgPSBT
Y3JvbGxDaGFpbmluZ0Jsb2NrZXI6OnNob3VsZEJsb2NrU2Nyb2xsQ2hhaW5pbmcobV9zY3JvbGxD
aGFpbmluZ0Jsb2NrZXIsIGJpYXNlZERlbHRhKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
I2VuZGlmCiAgICAgfQogCiAgICAgcmV0dXJuIGhhbmRsZWRFdmVudDsKQEAgLTI5NzEsMjAgKzMw
NDksMjMgQEAgc3RhdGljIHZvaWQgaGFuZGxlV2hlZWxFdmVudFBoYXNlSW5TY3JvbGxhYmxlQXJl
YShTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEKICNlbmRpZgogfQogCi1zdGF0aWMgYm9v
bCBkaWRTY3JvbGxJblNjcm9sbGFibGVBcmVhKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJl
YSwgY29uc3QgV2hlZWxFdmVudCYgd2hlZWxFdmVudCkKK3N0YXRpYyBib29sIGRpZFNjcm9sbElu
U2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhLCBjb25zdCBXaGVl
bEV2ZW50JiB3aGVlbEV2ZW50LCBjb25zdCBTY3JvbGxDaGFpbmluZ0Jsb2NrZXImIGJsb2NrZXIp
CiB7CisgICAgRmxvYXRTaXplIGZpbHRlcmVkRGVsdGEod2hlZWxFdmVudC5kZWx0YVgoKSwgd2hl
ZWxFdmVudC5kZWx0YVkoKSk7CisgICAgYXV0byBiaWFzZWREZWx0YSA9IFBsYXRmb3JtV2hlZWxF
dmVudDo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoZmlsdGVyZWREZWx0YSk7Cisg
ICAgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyOjpmaWx0ZXJEZWx0YShibG9ja2VyLCBiaWFzZWREZWx0
YSwgZmlsdGVyZWREZWx0YSk7CiAgICAgU2Nyb2xsR3JhbnVsYXJpdHkgc2Nyb2xsR3JhbnVsYXJp
dHkgPSB3aGVlbEdyYW51bGFyaXR5VG9TY3JvbGxHcmFudWxhcml0eSh3aGVlbEV2ZW50LmRlbHRh
TW9kZSgpKTsKICAgICBib29sIGRpZEhhbmRsZVdoZWVsRXZlbnQgPSBmYWxzZTsKLSAgICBpZiAo
ZmxvYXQgYWJzb2x1dGVEZWx0YSA9IHN0ZDo6YWJzKHdoZWVsRXZlbnQuZGVsdGFYKCkpKQotICAg
ICAgICBkaWRIYW5kbGVXaGVlbEV2ZW50IHw9IHNjcm9sbGFibGVBcmVhLnNjcm9sbCh3aGVlbEV2
ZW50LmRlbHRhWCgpID4gMCA/IFNjcm9sbFJpZ2h0IDogU2Nyb2xsTGVmdCwgc2Nyb2xsR3JhbnVs
YXJpdHksIGFic29sdXRlRGVsdGEpOworICAgIGlmIChmbG9hdCBhYnNvbHV0ZURlbHRhID0gc3Rk
OjphYnMoZmlsdGVyZWREZWx0YS53aWR0aCgpKSkKKyAgICAgICAgZGlkSGFuZGxlV2hlZWxFdmVu
dCB8PSBzY3JvbGxhYmxlQXJlYS5zY3JvbGwoZmlsdGVyZWREZWx0YS53aWR0aCgpID4gMCA/IFNj
cm9sbFJpZ2h0IDogU2Nyb2xsTGVmdCwgc2Nyb2xsR3JhbnVsYXJpdHksIGFic29sdXRlRGVsdGEp
OwogCi0gICAgaWYgKGZsb2F0IGFic29sdXRlRGVsdGEgPSBzdGQ6OmFicyh3aGVlbEV2ZW50LmRl
bHRhWSgpKSkKLSAgICAgICAgZGlkSGFuZGxlV2hlZWxFdmVudCB8PSBzY3JvbGxhYmxlQXJlYS5z
Y3JvbGwod2hlZWxFdmVudC5kZWx0YVkoKSA+IDAgPyBTY3JvbGxEb3duIDogU2Nyb2xsVXAsIHNj
cm9sbEdyYW51bGFyaXR5LCBhYnNvbHV0ZURlbHRhKTsKKyAgICBpZiAoZmxvYXQgYWJzb2x1dGVE
ZWx0YSA9IHN0ZDo6YWJzKGZpbHRlcmVkRGVsdGEuaGVpZ2h0KCkpKQorICAgICAgICBkaWRIYW5k
bGVXaGVlbEV2ZW50IHw9IHNjcm9sbGFibGVBcmVhLnNjcm9sbChmaWx0ZXJlZERlbHRhLmhlaWdo
dCgpID4gMCA/IFNjcm9sbERvd24gOiBTY3JvbGxVcCwgc2Nyb2xsR3JhbnVsYXJpdHksIGFic29s
dXRlRGVsdGEpOwogCiAgICAgcmV0dXJuIGRpZEhhbmRsZVdoZWVsRXZlbnQ7CiB9CiAKLWJvb2wg
RXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2luZ0JveChO
b2RlKiBzdGFydE5vZGUsIGNvbnN0IFdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIGNvbnN0IEZsb2F0
U2l6ZSYgZmlsdGVyZWRQbGF0Zm9ybURlbHRhLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlcmVkVmVs
b2NpdHksIE9wdGlvblNldDxFdmVudEhhbmRsaW5nPiBldmVudEhhbmRsaW5nKQorYm9vbCBFdmVu
dEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94KE5vZGUq
IHN0YXJ0Tm9kZSwgY29uc3QgV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgRmxvYXRTaXplJiBmaWx0
ZXJlZFBsYXRmb3JtRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyZWRWZWxvY2l0eSwgT3B0
aW9uU2V0PEV2ZW50SGFuZGxpbmc+IGV2ZW50SGFuZGxpbmcpCiB7CiAgICAgYm9vbCBzaG91bGRI
YW5kbGVFdmVudCA9IHdoZWVsRXZlbnQuZGVsdGFYKCkgfHwgd2hlZWxFdmVudC5kZWx0YVkoKTsK
ICNpZiBFTkFCTEUoV0hFRUxfRVZFTlRfTEFUQ0hJTkcpCkBAIC0zMDA2LDIxICszMDg3LDI5IEBA
IGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2lu
Z0JveChOb2RlKiBzdGFydE5vZGUsIGNvCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlm
IChpczxSZW5kZXJMaXN0Qm94Pihpbml0aWFsRW5jbG9zaW5nQm94KSkKLSAgICAgICAgcmV0dXJu
IGRpZFNjcm9sbEluU2Nyb2xsYWJsZUFyZWEoZG93bmNhc3Q8UmVuZGVyTGlzdEJveD4oaW5pdGlh
bEVuY2xvc2luZ0JveCksIHdoZWVsRXZlbnQpOworICAgICAgICByZXR1cm4gZGlkU2Nyb2xsSW5T
Y3JvbGxhYmxlQXJlYShkb3duY2FzdDxSZW5kZXJMaXN0Qm94Pihpbml0aWFsRW5jbG9zaW5nQm94
KSwgd2hlZWxFdmVudCwgbV9zY3JvbGxDaGFpbmluZ0Jsb2NrZXIpOwogCisgICAgYXV0byBiaWFz
ZWREZWx0YSA9IFBsYXRmb3JtV2hlZWxFdmVudDo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVy
dGljYWwoRmxvYXRTaXplKHdoZWVsRXZlbnQuZGVsdGFYKCksIHdoZWVsRXZlbnQuZGVsdGFZKCkp
KTsKICAgICBSZW5kZXJCb3gqIGN1cnJlbnRFbmNsb3NpbmdCb3ggPSAmaW5pdGlhbEVuY2xvc2lu
Z0JveDsKICAgICB3aGlsZSAoY3VycmVudEVuY2xvc2luZ0JveCkgewogICAgICAgICBpZiAoYXV0
byogYm94TGF5ZXIgPSBjdXJyZW50RW5jbG9zaW5nQm94LT5sYXllcigpID8gY3VycmVudEVuY2xv
c2luZ0JveC0+bGF5ZXIoKS0+c2Nyb2xsYWJsZUFyZWEoKSA6IG51bGxwdHIpIHsKICAgICAgICAg
ICAgIGF1dG8gcGxhdGZvcm1FdmVudCA9IHdoZWVsRXZlbnQudW5kZXJseWluZ1BsYXRmb3JtRXZl
bnQoKTsKICAgICAgICAgICAgIGJvb2wgc2Nyb2xsaW5nV2FzSGFuZGxlZDsKICAgICAgICAgICAg
IGlmIChwbGF0Zm9ybUV2ZW50KSB7CisgICAgICAgICAgICAgICAgU2Nyb2xsQ2hhaW5pbmdCbG9j
a2VyOjpmaWx0ZXJEZWx0YShtX3Njcm9sbENoYWluaW5nQmxvY2tlciwgYmlhc2VkRGVsdGEsIGZp
bHRlcmVkUGxhdGZvcm1EZWx0YSk7CiAgICAgICAgICAgICAgICAgYXV0byBjb3BpZWRFdmVudCA9
IHBsYXRmb3JtRXZlbnQtPmNvcHlXaXRoRGVsdGFzQW5kVmVsb2NpdHkoZmlsdGVyZWRQbGF0Zm9y
bURlbHRhLndpZHRoKCksIGZpbHRlcmVkUGxhdGZvcm1EZWx0YS5oZWlnaHQoKSwgZmlsdGVyZWRW
ZWxvY2l0eSk7CiAgICAgICAgICAgICAgICAgc2Nyb2xsaW5nV2FzSGFuZGxlZCA9IGhhbmRsZVdo
ZWVsRXZlbnRJblNjcm9sbGFibGVBcmVhKGNvcGllZEV2ZW50LCAqYm94TGF5ZXIsIGV2ZW50SGFu
ZGxpbmcpOwogICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgc2Nyb2xsaW5nV2Fz
SGFuZGxlZCA9IGRpZFNjcm9sbEluU2Nyb2xsYWJsZUFyZWEoKmJveExheWVyLCB3aGVlbEV2ZW50
KTsKKyAgICAgICAgICAgICAgICBzY3JvbGxpbmdXYXNIYW5kbGVkID0gZGlkU2Nyb2xsSW5TY3Jv
bGxhYmxlQXJlYSgqYm94TGF5ZXIsIHdoZWVsRXZlbnQsIG1fc2Nyb2xsQ2hhaW5pbmdCbG9ja2Vy
KTsKIAogICAgICAgICAgICAgaWYgKHNjcm9sbGluZ1dhc0hhbmRsZWQpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgICAgIGlmIChjdXJyZW50RW5jbG9zaW5nQm94LT5l
bGVtZW50KCkgIT0gY3VycmVudEVuY2xvc2luZ0JveC0+ZG9jdW1lbnQoKS5kb2N1bWVudEVsZW1l
bnQoKSkgeworICAgICAgICAgICAgICAgIGJveExheWVyLT51cGRhdGVTY3JvbGxDaGFpbmluZ0Js
b2NrZXJTdGF0ZShtX3Njcm9sbENoYWluaW5nQmxvY2tlcik7CisgICAgICAgICAgICAgICAgaWYg
KFNjcm9sbENoYWluaW5nQmxvY2tlcjo6c2hvdWxkQmxvY2tTY3JvbGxDaGFpbmluZyhtX3Njcm9s
bENoYWluaW5nQmxvY2tlciwgYmlhc2VkRGVsdGEpKQorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIGN1cnJlbnRFbmNs
b3NpbmdCb3ggPSBjdXJyZW50RW5jbG9zaW5nQm94LT5jb250YWluaW5nQmxvY2soKTsKQEAgLTQ2
MzQsNCArNDcyMywxNSBAQCBib29sIEV2ZW50SGFuZGxlcjo6cGFzc01vdXNlTW92ZUV2ZW50VG9T
dWJmcmFtZShNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBtbwogfQogI2VuZGlmIC8vICFQ
TEFURk9STShDT0NPQSkgJiYgIVBMQVRGT1JNKFdJTikKIAordm9pZCBFdmVudEhhbmRsZXI6OnVw
ZGF0ZVNjcm9sbENoYWluaW5nQmxvY2tlcihjb25zdCBTY3JvbGxDaGFpbmluZ0Jsb2NrZXImIGJs
b2NrZXIpCit7CisgICAgbV9zY3JvbGxDaGFpbmluZ0Jsb2NrZXIuYmxvY2tYIHw9IGJsb2NrZXIu
YmxvY2tYOworICAgIG1fc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLmJsb2NrWSB8PSBibG9ja2VyLmJs
b2NrWTsKK30KKwordm9pZCBFdmVudEhhbmRsZXI6OnJlc2V0U2Nyb2xsQ2hhaW5pbmdCbG9ja2Vy
KCkKK3sKKyAgICBtX3Njcm9sbENoYWluaW5nQmxvY2tlciA9IHsgZmFsc2UsIGZhbHNlIH07Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCmlu
ZGV4IDVkMDQyMDM4YmYzNGJmODlmZmUzZGI5OTQ3NjM3Mzc4ODk0NTI4NzkuLmYxZWRlMTY4MzE0
ODgxNjdlMzdkNWYyZWMxZmY3MWQ1MWYxZWFmODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRXZlbnRIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRs
ZXIuaApAQCAtMjE0LDYgKzIxNCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZWZhdWx0V2hlZWxF
dmVudEhhbmRsZXIoTm9kZSosIFdoZWVsRXZlbnQmKTsKICAgICB2b2lkIHdoZWVsRXZlbnRXYXNQ
cm9jZXNzZWRCeU1haW5UaHJlYWQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgT3B0aW9uU2V0
PEV2ZW50SGFuZGxpbmc+KTsKIAorICAgIHZvaWQgdXBkYXRlU2Nyb2xsQ2hhaW5pbmdCbG9ja2Vy
KGNvbnN0IFNjcm9sbENoYWluaW5nQmxvY2tlciYpOworICAgIHZvaWQgcmVzZXRTY3JvbGxDaGFp
bmluZ0Jsb2NrZXIoKTsKKyAgICB2b2lkIHNjcm9sbENoYWluaW5nQmxvY2tlckNoYW5nZWRCeVN1
YmZyYW1lKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIFJlZlB0cjxFbGVtZW50PiYgZXZlbnRU
YXJnZXQsIFdlYWtQdHI8U2Nyb2xsYWJsZUFyZWE+JiwgYm9vbCYgaXNPdmVyV2lkZ2V0KTsKKwog
ICAgIGJvb2wgaGFuZGxlUGFzdGVHbG9iYWxTZWxlY3Rpb24oY29uc3QgUGxhdGZvcm1Nb3VzZUV2
ZW50Jik7CiAKICNpZiBFTkFCTEUoSU9TX1RPVUNIX0VWRU5UUykgfHwgRU5BQkxFKElPU19HRVNU
VVJFX0VWRU5UUykKQEAgLTQ3MCw3ICs0NzQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcHJvY2Vz
c1doZWVsRXZlbnRGb3JTY3JvbGxTbmFwKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIGNvbnN0
IFdlYWtQdHI8U2Nyb2xsYWJsZUFyZWE+Jik7CiAgICAgYm9vbCBjb21wbGV0ZVdpZGdldFdoZWVs
RXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgY29uc3QgV2Vha1B0cjxXaWRnZXQ+Jiwg
Y29uc3QgV2Vha1B0cjxTY3JvbGxhYmxlQXJlYT4mKTsKIAotICAgIGJvb2wgaGFuZGxlV2hlZWxF
dmVudEluQXBwcm9wcmlhdGVFbmNsb3NpbmdCb3goTm9kZSogc3RhcnROb2RlLCBjb25zdCBXaGVl
bEV2ZW50JiwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJlZFBsYXRmb3JtRGVsdGEsIGNvbnN0IEZs
b2F0U2l6ZSYgZmlsdGVyZWRWZWxvY2l0eSwgT3B0aW9uU2V0PEV2ZW50SGFuZGxpbmc+KTsKKyAg
ICBib29sIGhhbmRsZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94KE5vZGUqIHN0
YXJ0Tm9kZSwgY29uc3QgV2hlZWxFdmVudCYsIEZsb2F0U2l6ZSYgZmlsdGVyZWRQbGF0Zm9ybURl
bHRhLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlcmVkVmVsb2NpdHksIE9wdGlvblNldDxFdmVudEhh
bmRsaW5nPik7CiAKICAgICBib29sIGhhbmRsZVdoZWVsRXZlbnRJblNjcm9sbGFibGVBcmVhKGNv
bnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIFNjcm9sbGFibGVBcmVhJiwgT3B0aW9uU2V0PEV2ZW50
SGFuZGxpbmc+KTsKICAgICBPcHRpb25hbDxXaGVlbFNjcm9sbEdlc3R1cmVTdGF0ZT4gdXBkYXRl
V2hlZWxHZXN0dXJlU3RhdGUoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgT3B0aW9uU2V0PEV2
ZW50SGFuZGxpbmc+KTsKQEAgLTY0Niw2ICs2NTAsOCBAQCBwcml2YXRlOgogICAgIEludFBvaW50
IG1fdGFyZ2V0QXV0b3Njcm9sbFBvc2l0aW9uSW5VbnNjcm9sbGVkUm9vdFZpZXdDb29yZGluYXRl
czsKICAgICBPcHRpb25hbDxJbnRQb2ludD4gbV9pbml0aWFsVGFyZ2V0QXV0b3Njcm9sbFBvc2l0
aW9uSW5VbnNjcm9sbGVkUm9vdFZpZXdDb29yZGluYXRlczsKICNlbmRpZgorCisgICAgU2Nyb2xs
Q2hhaW5pbmdCbG9ja2VyIG1fc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIHsgZmFsc2UsIGZhbHNlIH07
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAK
aW5kZXggNjgzZTM2ZWY1NWYyYTkzNWQ5MGFiNTUwZGM1OTYxYTIwZjkwOGMzOS4uYTY4OWRiM2Rh
MDhjZGVlZjBkYWY0NGM2ZmRhZDAyOWJlMzg5OGU2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
LmNwcApAQCAtNDE5LDYgKzQxOSwyNiBAQCBib29sIEZyYW1lVmlldzo6ZGlkRmlyc3RMYXlvdXQo
KSBjb25zdAogICAgIHJldHVybiBsYXlvdXRDb250ZXh0KCkuZGlkRmlyc3RMYXlvdXQoKTsKIH0K
IAorT3ZlcnNjcm9sbEJlaGF2aW9yIEZyYW1lVmlldzo6aG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhh
dmlvcigpIGNvbnN0Cit7CisgICAgYXV0byogZG9jdW1lbnQgPSBmcmFtZSgpLmRvY3VtZW50KCk7
CisgICAgYXV0byBzY3JvbGxpbmdPYmplY3QgPSBkb2N1bWVudCAmJiBkb2N1bWVudC0+ZG9jdW1l
bnRFbGVtZW50KCkgPyBkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCktPnJlbmRlcmVyKCkgOiBu
dWxscHRyOworICAgIC8vIEFuIGVsZW1lbnQgdGhhdCBpcyBub3Qgc2Nyb2xsIGNvbnRhaW5lciBt
dXN0IGFjY2VwdCBidXQgaWdub3JlIHRoZSB2YWx1ZXMgb2YgdGhpcyBwcm9wZXJ0eS4KKyAgICBp
ZiAoc2Nyb2xsaW5nT2JqZWN0ICYmIHJlbmRlclZpZXcoKSAmJiByZW5kZXJWaWV3KCktPmNhbkJl
U2Nyb2xsZWRBbmRIYXNTY3JvbGxhYmxlQXJlYSgpKQorICAgICAgICByZXR1cm4gc2Nyb2xsaW5n
T2JqZWN0LT5zdHlsZSgpLm92ZXJzY3JvbGxCZWhhdmlvclgoKTsKKyAgICByZXR1cm4gU2Nyb2xs
YWJsZUFyZWE6Omhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKTsKK30KKworT3ZlcnNjcm9s
bEJlaGF2aW9yIEZyYW1lVmlldzo6dmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSAgY29uc3QK
K3sKKyAgICBhdXRvKiBkb2N1bWVudCA9IGZyYW1lKCkuZG9jdW1lbnQoKTsKKyAgICBhdXRvIHNj
cm9sbGluZ09iamVjdCA9IGRvY3VtZW50ICYmIGRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKSA/
IGRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKS0+cmVuZGVyZXIoKSA6IG51bGxwdHI7CisgICAg
Ly8gQW4gZWxlbWVudCB0aGF0IGlzIG5vdCBzY3JvbGwgY29udGFpbmVyIG11c3QgYWNjZXB0IGJ1
dCBpZ25vcmUgdGhlIHZhbHVlcyBvZiB0aGlzIHByb3BlcnR5LgorICAgIGlmIChzY3JvbGxpbmdP
YmplY3QgJiYgcmVuZGVyVmlldygpICYmIHJlbmRlclZpZXcoKS0+Y2FuQmVTY3JvbGxlZEFuZEhh
c1Njcm9sbGFibGVBcmVhKCkpCisgICAgICAgIHJldHVybiBzY3JvbGxpbmdPYmplY3QtPnN0eWxl
KCkub3ZlcnNjcm9sbEJlaGF2aW9yWSgpOworICAgIHJldHVybiBTY3JvbGxhYmxlQXJlYTo6dmVy
dGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKTsKK30KKwogdm9pZCBGcmFtZVZpZXc6OmludmFsaWRh
dGVSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgaWYgKCFwYXJlbnQoKSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVWaWV3LmgKaW5kZXggY2U3ZTlhMTY3Y2EwNzRmOGMyMWMxZmQ2ZWE3NWY5MTVh
ZmFhNDVhNi4uYjEzYzdiMmJkZDBlNjJiOWJmMzg2MzhhZmYwNWRjNTJlZjdiZGY1YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5oCkBAIC02ODEsNiArNjgxLDkgQEAgcHVibGljOgogCiAgICAgU3Ry
aW5nIGRlYnVnRGVzY3JpcHRpb24oKSBjb25zdCBmaW5hbDsKIAorICAgIE92ZXJzY3JvbGxCZWhh
dmlvciBob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29uc3QgZmluYWw7CisgICAgT3Zl
cnNjcm9sbEJlaGF2aW9yIHZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29uc3QgZmluYWw7
CisKICAgICAvLyBTY3JvbGxWaWV3CiAgICAgdm9pZCB1cGRhdGVTY3JvbGxiYXJTdGVwcygpIG92
ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRs
ZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0KaW5k
ZXggODY0NjVmODA1ZTIwNTM1Njg3MDY0YzJmZjc2MDRkNWI4OWE0MjQ3ZC4uZTg4MTI1NzAwOTkz
NGI5MjkzMjI2NWZiYWE4YjBmOWQwYjA0YTY3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFj
L0V2ZW50SGFuZGxlck1hYy5tbQpAQCAtNzk3LDEzICs3OTcsMTggQEAgc3RhdGljIFNjcm9sbGFi
bGVBcmVhKiBzY3JvbGxhYmxlQXJlYUZvckJveChSZW5kZXJCb3gmIGJveCkKIH0KIAogLy8gRklY
TUU6IFRoaXMgY291bGQgYmUgd3JpdHRlbiBpbiB0ZXJtcyBvZiBTY3JvbGxhYmxlQXJlYTo6ZW5j
bG9zaW5nU2Nyb2xsYWJsZUFyZWEoKS4KLXN0YXRpYyBDb250YWluZXJOb2RlKiBmaW5kRW5jbG9z
aW5nU2Nyb2xsYWJsZUNvbnRhaW5lcihDb250YWluZXJOb2RlKiBub2RlLCBjb25zdCBQbGF0Zm9y
bVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpCisvLyBEbyBub3QgdXBkYXRlIG1fc2Nyb2xsQ2hhaW5p
bmdCbG9ja2VyIGhlcmUsIHVwZGF0ZSBpdCBpbiBFdmVudEhhbmRsZXI6OmRlZmF1bHRXaGVlbEV2
ZW50SGFuZGxlciBsYXRlciB3aGVuIHBhc3MgRXZlbnRQYXRoLAorLy8gb3RoZXJ3aXNlIHRoZSBX
aGVlbEV2ZW50IGRlbHRhIG9mIGVsZW1lbnQgd2l0aCAhb3ZlcnNjcm9sbC1iZWhhdmlvcjphdXRv
IHdpbGwgYmUgY2hhbmdlZC4KK3N0YXRpYyBDb250YWluZXJOb2RlKiBmaW5kRW5jbG9zaW5nU2Ny
b2xsYWJsZUNvbnRhaW5lcihDb250YWluZXJOb2RlKiBub2RlLCBjb25zdCBQbGF0Zm9ybVdoZWVs
RXZlbnQmIHdoZWVsRXZlbnQsIFNjcm9sbENoYWluaW5nQmxvY2tlciYgc2Nyb2xsQ2hhaW5pbmdC
bG9ja2VyKQogewotICAgIGF1dG8gYmlhc2VkRGVsdGEgPSBTY3JvbGxDb250cm9sbGVyOjp3aGVl
bERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbCh3aGVlbEV2ZW50KTsKKyAgICBhdXRvIGJpYXNl
ZERlbHRhID0gUGxhdGZvcm1XaGVlbEV2ZW50Ojp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0
aWNhbCh3aGVlbEV2ZW50LmRlbHRhKCkpOwogCiAgICAgLy8gRmluZCB0aGUgZmlyc3Qgbm9kZSB3
aXRoIGEgdmFsaWQgc2Nyb2xsYWJsZSBhcmVhIHN0YXJ0aW5nIHdpdGggdGhlIGN1cnJlbnQKICAg
ICAvLyBub2RlIGFuZCB0cmF2ZXJzaW5nIGl0cyBwYXJlbnRzIChvciBzaGFkb3cgaG9zdHMpLgog
ICAgIGZvciAoQ29udGFpbmVyTm9kZSogY2FuZGlkYXRlID0gbm9kZTsgY2FuZGlkYXRlOyBjYW5k
aWRhdGUgPSBjYW5kaWRhdGUtPnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKSkgeworICAgICAgICBp
ZiAoU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyOjpzaG91bGRCbG9ja1Njcm9sbENoYWluaW5nKHNjcm9s
bENoYWluaW5nQmxvY2tlciwgYmlhc2VkRGVsdGEpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisKICAgICAgICAgaWYgKGlzPEhUTUxJRnJhbWVFbGVtZW50PigqY2FuZGlkYXRlKSkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogCkBAIC04MTMsNyArODE4LDcgQEAgc3RhdGljIENvbnRhaW5l
ck5vZGUqIGZpbmRFbmNsb3NpbmdTY3JvbGxhYmxlQ29udGFpbmVyKENvbnRhaW5lck5vZGUqIG5v
ZGUsIGNvbnMKICAgICAgICAgUmVuZGVyQm94KiBib3ggPSBjYW5kaWRhdGUtPnJlbmRlckJveCgp
OwogICAgICAgICBpZiAoIWJveCB8fCAhYm94LT5jYW5CZVNjcm9sbGVkQW5kSGFzU2Nyb2xsYWJs
ZUFyZWEoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAKKwogICAgICAgICBhdXRv
KiBzY3JvbGxhYmxlQXJlYSA9IHNjcm9sbGFibGVBcmVhRm9yQm94KCpib3gpOwogICAgICAgICBp
ZiAoIXNjcm9sbGFibGVBcmVhKQogICAgICAgICAgICAgY29udGludWU7CkBAIC04MjYsOCArODMx
LDExIEBAIHN0YXRpYyBDb250YWluZXJOb2RlKiBmaW5kRW5jbG9zaW5nU2Nyb2xsYWJsZUNvbnRh
aW5lcihDb250YWluZXJOb2RlKiBub2RlLCBjb25zCiAKICAgICAgICAgaWYgKGJpYXNlZERlbHRh
LndpZHRoKCkgJiYgIXNjcm9sbGFibGVBcmVhLT5pc1Bpbm5lZEZvclNjcm9sbERlbHRhT25BeGlz
KC1iaWFzZWREZWx0YS53aWR0aCgpLCBTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwpKQogICAg
ICAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZTsKKworICAgICAgICBpZiAoY2FuZGlkYXRlICE9IGNh
bmRpZGF0ZS0+ZG9jdW1lbnQoKS5kb2N1bWVudEVsZW1lbnQoKSkKKyAgICAgICAgICAgIHNjcm9s
bGFibGVBcmVhLT51cGRhdGVTY3JvbGxDaGFpbmluZ0Jsb2NrZXJTdGF0ZShzY3JvbGxDaGFpbmlu
Z0Jsb2NrZXIpOwogICAgIH0KLSAgICAKKwogICAgIHJldHVybiBudWxscHRyOwogfQogCkBAIC04
NzIsMTAgKzg4MCwxMSBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6ZGV0ZXJtaW5lV2hlZWxFdmVudFRh
cmdldChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbgogICAgIGlmICghdmlldykK
ICAgICAgICAgcmV0dXJuOwogCisgICAgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIGJsb2NrZXIgPSBt
X3Njcm9sbENoYWluaW5nQmxvY2tlcjsKICAgICBpZiAoZXZlbnRUYXJnZXRJc1BsYXRmb3JtV2lk
Z2V0KHdoZWVsRXZlbnRUYXJnZXQuZ2V0KCkpKQogICAgICAgICBzY3JvbGxhYmxlQXJlYSA9IHNj
cm9sbGFibGVBcmVhRm9yRXZlbnRUYXJnZXQod2hlZWxFdmVudFRhcmdldC5nZXQoKSk7CiAgICAg
ZWxzZSB7Ci0gICAgICAgIGF1dG8qIHNjcm9sbGFibGVDb250YWluZXIgPSBmaW5kRW5jbG9zaW5n
U2Nyb2xsYWJsZUNvbnRhaW5lcih3aGVlbEV2ZW50VGFyZ2V0LmdldCgpLCB3aGVlbEV2ZW50KTsK
KyAgICAgICAgYXV0byogc2Nyb2xsYWJsZUNvbnRhaW5lciA9IGZpbmRFbmNsb3NpbmdTY3JvbGxh
YmxlQ29udGFpbmVyKHdoZWVsRXZlbnRUYXJnZXQuZ2V0KCksIHdoZWVsRXZlbnQsIGJsb2NrZXIp
OwogICAgICAgICBpZiAoc2Nyb2xsYWJsZUNvbnRhaW5lcikKICAgICAgICAgICAgIHNjcm9sbGFi
bGVBcmVhID0gc2Nyb2xsYWJsZUFyZWFGb3JDb250YWluZXJOb2RlKCpzY3JvbGxhYmxlQ29udGFp
bmVyKTsKICAgICAgICAgZWxzZQpAQCAtODkzLDkgKzkwMiwyMiBAQCB2b2lkIEV2ZW50SGFuZGxl
cjo6ZGV0ZXJtaW5lV2hlZWxFdmVudFRhcmdldChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdo
ZWVsRXZlbgogICAgIGlmIChtX2ZyYW1lLmlzTWFpbkZyYW1lKCkgJiYgd2hlZWxFdmVudC5pc0dl
c3R1cmVTdGFydCgpKQogICAgICAgICBwYWdlLT53aGVlbEV2ZW50RGVsdGFGaWx0ZXIoKS0+YmVn
aW5GaWx0ZXJpbmdEZWx0YXMoKTsKIAorICAgIC8vIFdoZW4gdGhlIGxhY2hlZCBub2RlIGlzIGRl
dGVybWluZWQsIHdlIHNob3VsZCB1cGRhdGUgbV9zY3JvbGxDaGFpbmluZ0Jsb2NrZXIgaGVyZSwg
Zm9yIGl0IHdvbid0IHBhc3MgdGhlIHRyZWUgaW4gRXZlbnRIYW5kbGVyOjpkZWZhdWx0V2hlZWxF
dmVudEhhbmRsZXIuCisgICAgLy8gT3RoZXJ3aXNlLCBtX3Njcm9sbENoYWluaW5nQmxvY2tlciBz
aG91bGQgYmUgdXBkYXRlIGluIEV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudEluQXBwcm9w
cmlhdGVFbmNsb3NpbmdCb3guCisgICAgdXBkYXRlU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKGJsb2Nr
ZXIpOwogICAgIHBhZ2UtPnNjcm9sbExhdGNoaW5nQ29udHJvbGxlcigpLnVwZGF0ZUFuZEZldGNo
TGF0Y2hpbmdTdGF0ZUZvckZyYW1lKG1fZnJhbWUsIHdoZWVsRXZlbnQsIHdoZWVsRXZlbnRUYXJn
ZXQsIHNjcm9sbGFibGVBcmVhLCBpc092ZXJXaWRnZXQpOwogfQogCisvLyBUaGlzIGZ1bmN0aW9u
IGhhbmRsZXMgdGhlIHNjZW5hcmlvIHRoYXQgbV9zY3JvbGxDaGFpbmluZ0Jsb2NrZXIgaXMgY2hh
bmdlZCBieSBzdWJmcmFtZS4KKy8vIFRoZSBzdGF0ZSBvZiBzY3JvbGxMYXRjaGluZ0NvbnRyb2xs
ZXIgaXMgb3V0IG9mIGRhdGUsIG5lZWQgdG8gdXBkYXRlIGl0Lgordm9pZCBFdmVudEhhbmRsZXI6
OnNjcm9sbENoYWluaW5nQmxvY2tlckNoYW5nZWRCeVN1YmZyYW1lKGNvbnN0IFBsYXRmb3JtV2hl
ZWxFdmVudCYgZXZlbnQsIFJlZlB0cjxFbGVtZW50PiYgZWxlbWVudCwgV2Vha1B0cjxTY3JvbGxh
YmxlQXJlYT4mIHNjcm9sbGFibGVBcmVhLCBib29sJiBpc092ZXJXaWRnZXQpCit7CisgICAgaWYg
KCFldmVudC5pc0dlc3R1cmVTdGFydCgpKQorICAgICAgICByZXR1cm47CisgICAgY2xlYXJMYXRj
aGVkU3RhdGUoKTsKKyAgICBkZXRlcm1pbmVXaGVlbEV2ZW50VGFyZ2V0KGV2ZW50LCBlbGVtZW50
LCBzY3JvbGxhYmxlQXJlYSwgaXNPdmVyV2lkZ2V0KTsKK30KKwogdm9pZCBFdmVudEhhbmRsZXI6
OnJlY29yZFdoZWVsRXZlbnRGb3JEZWx0YUZpbHRlcihjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQm
IHdoZWVsRXZlbnQpCiB7CiAgICAgYXV0byogcGFnZSA9IG1fZnJhbWUucGFnZSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaAppbmRleCBkNzE2OTM0NmEy
NDAyM2MyYTQ3ODdhZTM0NTQwYTM3NjA3YzBhMmQ1Li42NDE3OTdhNmY0MTg3NTMzOGNhNzFlYTcz
OTE2MGQxMGIwNmY4OGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0
Zm9ybVdoZWVsRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdo
ZWVsRXZlbnQuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJG
bG9hdFBvaW50LmgiCisjaW5jbHVkZSAiRmxvYXRTaXplLmgiCiAjaW5jbHVkZSAiSW50UG9pbnQu
aCIKICNpbmNsdWRlICJQbGF0Zm9ybUV2ZW50LmgiCiAjaW5jbHVkZSA8d3RmL1dpbmRvd3NFeHRy
YXMuaD4KQEAgLTE3NCw2ICsxNzUsOCBAQCBwdWJsaWM6CiAgICAgUGxhdGZvcm1XaGVlbEV2ZW50
KEhXTkQsIFdQQVJBTSwgTFBBUkFNLCBib29sIGlzTW91c2VIV2hlZWwpOwogI2VuZGlmCiAKKyAg
ICBzdGF0aWMgRmxvYXRTaXplIHdoZWVsRGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRpY2FsKGNvbnN0
IEZsb2F0U2l6ZSYpOworCiBwcm90ZWN0ZWQ6CiAgICAgUGxhdGZvcm1XaGVlbEV2ZW50R3JhbnVs
YXJpdHkgbV9ncmFudWxhcml0eSB7IFNjcm9sbEJ5UGl4ZWxXaGVlbEV2ZW50IH07CiAgICAgYm9v
bCBtX2RpcmVjdGlvbkludmVydGVkRnJvbURldmljZSB7IGZhbHNlIH07CkBAIC0yNjQsNiArMjY3
LDE5IEBAIGlubGluZSBGbG9hdFBvaW50IFBsYXRmb3JtV2hlZWxFdmVudDo6c3dpcGVWZWxvY2l0
eSgpIGNvbnN0CiAKICNlbmRpZiAvLyBFTkFCTEUoS0lORVRJQ19TQ1JPTExJTkcpCiAKK2lubGlu
ZSBGbG9hdFNpemUgUGxhdGZvcm1XaGVlbEV2ZW50Ojp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNW
ZXJ0aWNhbChjb25zdCBGbG9hdFNpemUmIGRlbHRhKQoreworICAgIGF1dG8gZGVsdGFYID0gZGVs
dGEud2lkdGgoKTsKKyAgICBhdXRvIGRlbHRhWSA9IGRlbHRhLmhlaWdodCgpOworCisgICAgaWYg
KGZhYnNmKGRlbHRhWSkgPj0gZmFic2YoZGVsdGFYKSkKKyAgICAgICAgZGVsdGFYID0gMDsKKyAg
ICBlbHNlCisgICAgICAgIGRlbHRhWSA9IDA7CisKKyAgICByZXR1cm4geyBkZWx0YVgsIGRlbHRh
WSB9OworfQorCiBXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RG
OjpUZXh0U3RyZWFtJiwgY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jik7CiBXRUJDT1JFX0VYUE9S
VCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgV2hlZWxFdmVu
dFByb2Nlc3NpbmdTdGVwcyk7CiBXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgRXZlbnRIYW5kbGluZyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsVHlwZXMuaAppbmRleCAwYjFjNDA1NjNlOGNiYjgyMmE5ZmViYTRjMGM0NjVmOGE1
NzRhOTNiLi5mOGY3MWMyZTFmZjdiOWU0ZDJlNzU2OWU3YjE5MjFiODIyMWY4NGUyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxUeXBlcy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFR5cGVzLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEg
b25jZQogCiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgorI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgog
I2luY2x1ZGUgIkludFBvaW50LmgiCiAjaW5jbHVkZSA8Y3N0ZGludD4KICNpbmNsdWRlIDx3dGYv
QXNzZXJ0aW9ucy5oPgpAQCAtMjU5LDYgKzI2MCwzNCBAQCBlbnVtIGNsYXNzIFNjcm9sbFNuYXBQ
b2ludFNlbGVjdGlvbk1ldGhvZCA6IHVpbnQ4X3QgewogICAgIENsb3Nlc3QsCiB9OwogCitzdHJ1
Y3QgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIHsKKyAgICBib29sIGJsb2NrWCB7IGZhbHNlIH07Cisg
ICAgYm9vbCBibG9ja1kgeyBmYWxzZSB9OworCisgICAgc3RhdGljIGJvb2wgc2hvdWxkQmxvY2tT
Y3JvbGxDaGFpbmluZyhjb25zdCBTY3JvbGxDaGFpbmluZ0Jsb2NrZXImIGJsb2NrZXIsIGNvbnN0
IEZsb2F0U2l6ZSYgYmlhc2VkRGVsdGEpCisgICAgeworICAgICAgICBpZiAoKGJsb2NrZXIuYmxv
Y2tYICYmIGJsb2NrZXIuYmxvY2tZKQorICAgICAgICAgICAgfHwgKGJsb2NrZXIuYmxvY2tYICYm
ICFiaWFzZWREZWx0YS5oZWlnaHQoKSkKKyAgICAgICAgICAgIHx8IChibG9ja2VyLmJsb2NrWSAm
JiAhYmlhc2VkRGVsdGEud2lkdGgoKSkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIGZpbHRlckRlbHRhKGNv
bnN0IFNjcm9sbENoYWluaW5nQmxvY2tlciYgYmxvY2tlciwgY29uc3QgRmxvYXRTaXplJiBiaWFz
ZWREZWx0YSwgRmxvYXRTaXplJiBmaWx0ZXJlZERlbHRhKQorICAgIHsKKyAgICAgICAgaWYgKGJs
b2NrZXIuYmxvY2tYKSB7CisgICAgICAgICAgICBmaWx0ZXJlZERlbHRhLnNldFdpZHRoKDApOwor
ICAgICAgICAgICAgaWYgKCFiaWFzZWREZWx0YS5oZWlnaHQoKSkKKyAgICAgICAgICAgICAgICBm
aWx0ZXJlZERlbHRhLnNldEhlaWdodCgwKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoYmxvY2tl
ci5ibG9ja1kpIHsKKyAgICAgICAgICAgIGZpbHRlcmVkRGVsdGEuc2V0SGVpZ2h0KDApOworICAg
ICAgICAgICAgaWYgKCFiaWFzZWREZWx0YS53aWR0aCgpKQorICAgICAgICAgICAgICAgIGZpbHRl
cmVkRGVsdGEuc2V0V2lkdGgoMCk7CisgICAgICAgIH0KKyAgICB9Cit9OworCiB1c2luZyBTY3Jv
bGxiYXJDb250cm9sU3RhdGUgPSB1bnNpZ25lZDsKIHVzaW5nIFNjcm9sbGJhckNvbnRyb2xQYXJ0
TWFzayA9IHVuc2lnbmVkOwogdXNpbmcgU2Nyb2xsaW5nTm9kZUlEID0gdWludDY0X3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKaW5kZXggNzlmOWU5ODA5OGE4
ZGRjYTJiNDljZTk3N2QyMTQzZTFjYjZjYWY4NS4uYzA0M2MwYWMzZTkxODViMjljY2RkMDY2ODVj
OThmNjlkM2IyMWNmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
YWJsZUFyZWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVh
LmNwcApAQCAtODAzLDYgKzgwMywxMiBAQCB2b2lkIFNjcm9sbGFibGVBcmVhOjpjb21wdXRlU2Ny
b2xsYmFyVmFsdWVBbmRPdmVyaGFuZyhmbG9hdCBjdXJyZW50UG9zaXRpb24sIGZsbwogICAgIH0K
IH0KIAordm9pZCBTY3JvbGxhYmxlQXJlYTo6dXBkYXRlU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyU3Rh
dGUoU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyJiBibG9ja2VyKSBjb25zdAoreworICAgIGJsb2NrZXIu
YmxvY2tYIHw9IGhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSAhPSBPdmVyc2Nyb2xsQmVo
YXZpb3I6OkF1dG87CisgICAgYmxvY2tlci5ibG9ja1kgfD0gdmVydGljYWxPdmVyc2Nyb2xsQmVo
YXZpb3IoKSAhPSBPdmVyc2Nyb2xsQmVoYXZpb3I6OkF1dG87Cit9CisKIFRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxl
QXJlYSkKIHsKICAgICB0cyA8PCBzY3JvbGxhYmxlQXJlYS5kZWJ1Z0Rlc2NyaXB0aW9uKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaAppbmRleCA3ZWI3YjU0MDI4Mjg0
MGFiN2I1ZjMxZmRmYTZiMmJmZDU4ZWIxOWRjLi45ODc3Y2Q1MTJjNWVlODkzMDZjNTM3ZTRlZWVl
NzIyOGNjZWEyZjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxh
YmxlQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgK
QEAgLTExOSw2ICsxMTksMTAgQEAgcHVibGljOgogICAgIGJvb2wgY29uc3RyYWluc1Njcm9sbGlu
Z1RvQ29udGVudEVkZ2UoKSBjb25zdCB7IHJldHVybiBtX2NvbnN0cmFpbnNTY3JvbGxpbmdUb0Nv
bnRlbnRFZGdlOyB9CiAgICAgdm9pZCBzZXRDb25zdHJhaW5zU2Nyb2xsaW5nVG9Db250ZW50RWRn
ZShib29sIGNvbnN0cmFpbnNTY3JvbGxpbmdUb0NvbnRlbnRFZGdlKSB7IG1fY29uc3RyYWluc1Nj
cm9sbGluZ1RvQ29udGVudEVkZ2UgPSBjb25zdHJhaW5zU2Nyb2xsaW5nVG9Db250ZW50RWRnZTsg
fQogCisgICAgdmlydHVhbCBPdmVyc2Nyb2xsQmVoYXZpb3IgaG9yaXpvbnRhbE92ZXJzY3JvbGxC
ZWhhdmlvcigpIGNvbnN0IHsgcmV0dXJuIE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0bzsgfQorICAg
IHZpcnR1YWwgT3ZlcnNjcm9sbEJlaGF2aW9yIHZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkg
Y29uc3QgeyByZXR1cm4gT3ZlcnNjcm9sbEJlaGF2aW9yOjpBdXRvOyB9CisgICAgdm9pZCB1cGRh
dGVTY3JvbGxDaGFpbmluZ0Jsb2NrZXJTdGF0ZShTY3JvbGxDaGFpbmluZ0Jsb2NrZXImKSBjb25z
dDsKKwogICAgIHZvaWQgc2V0VmVydGljYWxTY3JvbGxFbGFzdGljaXR5KFNjcm9sbEVsYXN0aWNp
dHkgc2Nyb2xsRWxhc3RpY2l0eSkgeyBtX3ZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eSA9IHNjcm9s
bEVsYXN0aWNpdHk7IH0KICAgICBTY3JvbGxFbGFzdGljaXR5IHZlcnRpY2FsU2Nyb2xsRWxhc3Rp
Y2l0eSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFNjcm9sbEVsYXN0aWNpdHk+KG1fdmVy
dGljYWxTY3JvbGxFbGFzdGljaXR5KTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0KaW5kZXggYzA5NWNkNjZmNTk1NmY4Yjg5YWFjYjMz
ZDViN2Y4MDIzMGE5YTdiNS4uYjNkMWFmMzg2Yjc3NTBhMjlkMGJiNWYzZTU1MDA4ODMwYmFjYTA2
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9y
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1h
Yy5tbQpAQCAtMTIyOCw5ICsxMjI4LDkgQEAgdm9pZCBTY3JvbGxBbmltYXRvck1hYzo6aGFuZGxl
V2hlZWxFdmVudFBoYXNlKFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlIHBoYXNlKQogYm9vbCBTY3Jv
bGxBbmltYXRvck1hYzo6c2hvdWxkRm9yd2FyZFdoZWVsRXZlbnRzVG9QYXJlbnQoY29uc3QgUGxh
dGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50KSBjb25zdAogewogICAgIGlmIChzdGQ6OmFicyh3
aGVlbEV2ZW50LmRlbHRhWSgpKSA+PSBzdGQ6OmFicyh3aGVlbEV2ZW50LmRlbHRhWCgpKSkKLSAg
ICAgICAgcmV0dXJuICFhbGxvd3NWZXJ0aWNhbFN0cmV0Y2hpbmcod2hlZWxFdmVudCk7CisgICAg
ICAgIHJldHVybiBtX3Njcm9sbGFibGVBcmVhLnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkg
PT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpBdXRvICYmICFhbGxvd3NWZXJ0aWNhbFN0cmV0Y2hpbmco
d2hlZWxFdmVudCk7CiAKLSAgICByZXR1cm4gIWFsbG93c0hvcml6b250YWxTdHJldGNoaW5nKHdo
ZWVsRXZlbnQpOworICAgIHJldHVybiBtX3Njcm9sbGFibGVBcmVhLmhvcml6b250YWxPdmVyc2Ny
b2xsQmVoYXZpb3IoKSA9PSBPdmVyc2Nyb2xsQmVoYXZpb3I6OkF1dG8gJiYgIWFsbG93c0hvcml6
b250YWxTdHJldGNoaW5nKHdoZWVsRXZlbnQpOwogfQogICAgIAogYm9vbCBTY3JvbGxBbmltYXRv
ck1hYzo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZl
bnQpCkBAIC0xMjk1LDYgKzEyOTUsOSBAQCBzdGF0aWMgYm9vbCBnZXN0dXJlU2hvdWxkQmVnaW5T
bmFwKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgU2Nyb2xsRQogCiBib29s
IFNjcm9sbEFuaW1hdG9yTWFjOjphbGxvd3NWZXJ0aWNhbFN0cmV0Y2hpbmcoY29uc3QgUGxhdGZv
cm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50KSBjb25zdAogeworICAgIGlmIChtX3Njcm9sbGFibGVB
cmVhLnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgPT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpO
b25lKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICBzd2l0Y2ggKG1fc2Nyb2xsYWJsZUFy
ZWEudmVydGljYWxTY3JvbGxFbGFzdGljaXR5KCkpIHsKICAgICBjYXNlIFNjcm9sbEVsYXN0aWNp
dHlBdXRvbWF0aWM6IHsKICAgICAgICAgU2Nyb2xsYmFyKiBoU2Nyb2xsZXIgPSBtX3Njcm9sbGFi
bGVBcmVhLmhvcml6b250YWxTY3JvbGxiYXIoKTsKQEAgLTEzMTksNiArMTMyMiw5IEBAIGJvb2wg
U2Nyb2xsQW5pbWF0b3JNYWM6OmFsbG93c1ZlcnRpY2FsU3RyZXRjaGluZyhjb25zdCBQbGF0Zm9y
bVdoZWVsRXZlbnQmIHdoZWVsCiAKIGJvb2wgU2Nyb2xsQW5pbWF0b3JNYWM6OmFsbG93c0hvcml6
b250YWxTdHJldGNoaW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCkgY29u
c3QKIHsKKyAgICBpZiAobV9zY3JvbGxhYmxlQXJlYS5ob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2
aW9yKCkgPT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpOb25lKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKICAgICBzd2l0Y2ggKG1fc2Nyb2xsYWJsZUFyZWEuaG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNp
dHkoKSkgewogICAgIGNhc2UgU2Nyb2xsRWxhc3RpY2l0eUF1dG9tYXRpYzogewogICAgICAgICBT
Y3JvbGxiYXIqIGhTY3JvbGxlciA9IG1fc2Nyb2xsYWJsZUFyZWEuaG9yaXpvbnRhbFNjcm9sbGJh
cigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbENvbnRy
b2xsZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQ29udHJvbGxlci5t
bQppbmRleCAwZGU4MWUwNmY2MzhlOWM3NzBkODc0ODY1M2IwYzVmZTYxMWM0ZWVhLi42MzRmYjc5
MGUwODZmYWVkOTU4MWQ4Zjk3OWQ4YTJjZDMyNTI4NGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQ29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQ29udHJvbGxlci5tbQpAQCAtMzEzLDE5ICszMTMsNiBAQCBi
b29sIFNjcm9sbENvbnRyb2xsZXI6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVl
bEV2ZW50JiB3aGVlbEV2ZW50KQogICAgIHJldHVybiBoYW5kbGVkOwogfQogCi1GbG9hdFNpemUg
U2Nyb2xsQ29udHJvbGxlcjo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoY29uc3Qg
UGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50KQotewotICAgIGF1dG8gZGVsdGFYID0gd2hl
ZWxFdmVudC5kZWx0YVgoKTsKLSAgICBhdXRvIGRlbHRhWSA9IHdoZWVsRXZlbnQuZGVsdGFZKCk7
Ci0KLSAgICBpZiAoZmFic2YoZGVsdGFZKSA+PSBmYWJzZihkZWx0YVgpKQotICAgICAgICBkZWx0
YVggPSAwOwotICAgIGVsc2UKLSAgICAgICAgZGVsdGFZID0gMDsKLQotICAgIHJldHVybiB7IGRl
bHRhWCwgZGVsdGFZIH07Ci19Ci0KIE9wdGlvbmFsPFNjcm9sbERpcmVjdGlvbj4gU2Nyb2xsQ29u
dHJvbGxlcjo6ZGlyZWN0aW9uRnJvbUV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hl
ZWxFdmVudCwgT3B0aW9uYWw8U2Nyb2xsRXZlbnRBeGlzPiBheGlzLCBXaGVlbEF4aXNCaWFzIGJp
YXMpCiB7CiAgICAgLy8gRklYTUU6IEl0J3MgaW1wb3NzaWJsZSB0byBpbmZlciBkaXJlY3Rpb24g
ZnJvbSBhIHNpbmdsZSBldmVudCwgc2luY2UgdGhlIHN0YXJ0IG9mIGEgZ2VzdHVyZSBpcyBlaXRo
ZXIgemVybyBvcgpAQCAtMzMzLDcgKzMyMCw3IEBAIE9wdGlvbmFsPFNjcm9sbERpcmVjdGlvbj4g
U2Nyb2xsQ29udHJvbGxlcjo6ZGlyZWN0aW9uRnJvbUV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlCiAK
ICAgICBhdXRvIHdoZWVsRGVsdGEgPSBGbG9hdFNpemUgeyB3aGVlbEV2ZW50LmRlbHRhWCgpLCB3
aGVlbEV2ZW50LmRlbHRhWSgpIH07CiAgICAgaWYgKGJpYXMgPT0gV2hlZWxBeGlzQmlhczo6VmVy
dGljYWwpCi0gICAgICAgIHdoZWVsRGVsdGEgPSB3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0
aWNhbCh3aGVlbEV2ZW50KTsKKyAgICAgICAgd2hlZWxEZWx0YSA9IFBsYXRmb3JtV2hlZWxFdmVu
dDo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwod2hlZWxFdmVudC5kZWx0YSgpKTsK
IAogICAgIGlmIChheGlzKSB7CiAgICAgICAgIHN3aXRjaCAoYXhpcy52YWx1ZSgpKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJl
YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJl
YS5jcHAKaW5kZXggYjZiN2FiMGEyMTI1MjRlZmU4N2FjMzdlYWRjYmUxMjAwN2NjNWU2NS4uYWIx
OTAzMTI3ODA1YzkzMTA2ZmFmZjkyYTE3MDc1ZTYxZGY4YjJlMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmNwcApAQCAt
MTgxNiw0ICsxODE2LDIyIEBAIFN0cmluZyBSZW5kZXJMYXllclNjcm9sbGFibGVBcmVhOjpkZWJ1
Z0Rlc2NyaXB0aW9uKCkgY29uc3QKICAgICByZXR1cm4gbV9sYXllci5kZWJ1Z0Rlc2NyaXB0aW9u
KCk7CiB9CiAKK092ZXJzY3JvbGxCZWhhdmlvciBSZW5kZXJMYXllclNjcm9sbGFibGVBcmVhOjpo
b3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29uc3QKK3sKKyAgICBjb25zdCBSZW5kZXJT
dHlsZSYgc3R5bGUgPSBtX2xheWVyLnJlbmRlcmVyKCkuc3R5bGUoKTsKKyAgICAvLyBBbiBlbGVt
ZW50IHRoYXQgaXMgbm90IHNjcm9sbCBjb250YWluZXIgbXVzdCBhY2NlcHQgYnV0IGlnbm9yZSB0
aGUgdmFsdWVzIG9mIHRoaXMgcHJvcGVydHkuCisgICAgaWYgKG1fbGF5ZXIucmVuZGVyQm94KCkg
JiYgbV9sYXllci5yZW5kZXJCb3goKS0+Y2FuQmVTY3JvbGxlZEFuZEhhc1Njcm9sbGFibGVBcmVh
KCkpCisgICAgICAgIHJldHVybiBzdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JYKCk7CisgICAgcmV0
dXJuIFNjcm9sbGFibGVBcmVhOjpob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCk7Cit9CisK
K092ZXJzY3JvbGxCZWhhdmlvciBSZW5kZXJMYXllclNjcm9sbGFibGVBcmVhOjp2ZXJ0aWNhbE92
ZXJzY3JvbGxCZWhhdmlvcigpIGNvbnN0Cit7CisgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxl
ID0gbV9sYXllci5yZW5kZXJlcigpLnN0eWxlKCk7CisgICAgLy8gQW4gZWxlbWVudCB0aGF0IGlz
IG5vdCBzY3JvbGwgY29udGFpbmVyIG11c3QgYWNjZXB0IGJ1dCBpZ25vcmUgdGhlIHZhbHVlcyBv
ZiB0aGlzIHByb3BlcnR5LgorICAgIGlmIChtX2xheWVyLnJlbmRlckJveCgpICYmIG1fbGF5ZXIu
cmVuZGVyQm94KCktPmNhbkJlU2Nyb2xsZWRBbmRIYXNTY3JvbGxhYmxlQXJlYSgpKQorICAgICAg
ICByZXR1cm4gc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWSgpOworICAgIHJldHVybiBTY3JvbGxh
YmxlQXJlYTo6dmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyU2Nyb2xsYWJsZUFyZWEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
clNjcm9sbGFibGVBcmVhLmgKaW5kZXggZGUyNmIzMDQ4OTY2NjZhNWNkZDY0YjUwZjc2ZDZkNTFl
ZDYzZWFkMy4uNTM4YTc5NGMwNjM5MTNkNDA2NjBkYWNlZTk1OWU2MzEwZDYzNjNmNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJl
YS5oCkBAIC0xMjksNiArMTI5LDkgQEAgcHVibGljOgogCiAgICAgYm9vbCBzY3JvbGwoU2Nyb2xs
RGlyZWN0aW9uLCBTY3JvbGxHcmFudWxhcml0eSwgZmxvYXQgbXVsdGlwbGllciA9IDEpOwogCisg
ICAgT3ZlcnNjcm9sbEJlaGF2aW9yIGhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25z
dCBmaW5hbDsKKyAgICBPdmVyc2Nyb2xsQmVoYXZpb3IgdmVydGljYWxPdmVyc2Nyb2xsQmVoYXZp
b3IoKSBjb25zdCBmaW5hbDsKKwogcHVibGljOgogICAgIC8vIEFsbCBtZXRob2RzIGluIHRoaXMg
c2VjdGlvbiBvdmVycmlkZSBTY3JvbGxhYmxlYUFyZWEgbWV0aG9kcyAoZmluYWwpLgogICAgIHZv
aWQgYXZhaWxhYmxlQ29udGVudFNpemVDaGFuZ2VkKEF2YWlsYWJsZVNpemVDaGFuZ2VSZWFzb24p
IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJI
VE1MVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcu
bW0KaW5kZXggMmI4YTI4MjBmODA5YjhhYjM5NWY2NmZkODA4ZjdhZDA4ZGVkM2FkMy4uOTMyNDg3
MDkyNDk2YWZiMDRjOTliODIyZGVhMWI0MmUyN2IwYjdkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC00MDg2LDYgKzQwODYsOCBAQCBz
dGF0aWMgQk9PTCBjdXJyZW50U2Nyb2xsSXNCbGl0KE5TVmlldyAqY2xpcFZpZXcpCiAgICAgYXV0
byogZnJhbWUgPSBjb3JlKFtzZWxmIF9mcmFtZV0pOwogICAgIGlmICghZnJhbWUgfHwgIWZyYW1l
LT5ldmVudEhhbmRsZXIoKS53aGVlbEV2ZW50KGV2ZW50KSkgewogI2lmIFBMQVRGT1JNKE1BQykK
KyAgICAgICAgLy8gRklYTUU6IE5lZWQgdG8gZmluZCBhIHdheSB0byBibG9jayB0aGUgY3Jvc3Mt
ZnJhbWUgc2Nyb2xsIGNoYWluaW5nIGluIFdLMS4KKyAgICAgICAgLy8gV2UgY2FuIG5vdCBqdXN0
IHNraXAgdGhlIHNjcm9sbCBoZXJlLCBpdCBub3Qgb25seSBibG9ja3Mgc2Nyb2xsIGNoYWluaW5n
IGJ1dCBhbHNvIGJsb2NrcyB0aGUgc2Nyb2xsIG9uIGN1cnJlbnQgdmlldy4KICAgICAgICAgW3N1
cGVyIHNjcm9sbFdoZWVsOmV2ZW50XTsKICNlbmRpZgogICAgIH0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzZTAzYmIxMDI3
MzI2Yjc3Y2Q3OTEyNjAxOGEyOWMyODBkNjg5M2MyLi5jNTE4YzFjZjhiZTkwMTA5ODU4ZmYzNTQ1
MGM5Y2ExNjA3YzljYmM4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMgQEAKKzIwMjEtMDMtMTUgIENhdGhp
ZSBDaGVuICA8Y2F0aGllY2hlbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFN1cHBvcnQgQ1NTIG92
ZXJzY3JvbGwtYmVoYXZpb3IgZm9yIHN5bmNocm9ub3VzIHNjcm9sbAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyOTY4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmFzZWQgb24gRnLDqWTDqXJpYyBXYW5n
J3MgcGF0Y2guCisKKyAgICAgICAgVGVzdCBvdmVyc2Nyb2xsLWJlaGF2aW9yIGZvciBvdmVyZmxv
dyBlbGVtZW50cyBhbmQgaWZyYW1lcy4gVGhlIHRlc3RzIHRyaWdnZXIgd2hlZWwgc2Nyb2xsIGV2
ZW50cworICAgICAgICBhbmQgd2FpdCAuNXMsIHRoZW4gY2hlY2sgd2hldGhlciBzY3JvbGwgb2Nj
dXJzIG9yIG5vdC4KKyAgICAgICAgVGhlIHRlc3RzIGFyZSBza2lwcGVkIG9uIGlPUyBmb3Igb25s
eSBzeW5jaHJvbm91cyBzY3JvbGwgYXJlIHRlc3RlZC4KKyAgICAgICAgRm9yIFdLMSwgdGhlIGlm
cmFtZSB0ZXN0cyBmYWlsIGJlY2F1c2UgbGFjayBvZiBpbnRlcmZhY2VzIHRvIGNvbnRyb2wgc2Ny
b2xsIGNoYWluaW5nIGluIFdlYkhUTUxWaWV3LgorCisgICAgICAgICogVGVzdEV4cGVjdGF0aW9u
czogV2FpdGluZyAuNXMgZm9yIGVhY2ggY2FzZSBtYWtlcyB0aGUgdGVzdCBzbG93LgorICAgICAg
ICAqIGZhc3Qvc2Nyb2xsaW5nL3Jlc291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXN1cHBvcnQu
anM6IEFkZGVkLgorICAgICAgICAoZ2V0RGVsdGFzKToKKyAgICAgICAgKGFzeW5jIG1vdXNlV2hl
ZWxTY3JvbGxBbmRXYWl0KToKKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1v
dmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNj
cm9sbC1iZWhhdmlvci1pZnJhbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJl
aGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9s
bGFibGUtZWxlbWVudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9zeW5j
LXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Ny
b2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAgICog
cGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vbWFjLXdr
MS9UZXN0RXhwZWN0YXRpb25zOgorCisyMDIxLTAyLTA0ICBSb2IgQnVpcyAgPHJidWlzQGlnYWxp
YS5jb20+CisKKyAgICAgICAgTWFrZSBzaG91bGRDb21wdXRlTG9naWNhbFdpZHRoRnJvbUFzcGVj
dFJhdGlvQW5kSW5zZXRzIHdyaXRpbmcgbW9kZSBhd2FyZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMzI4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
TWFudWVsIFJlZ28gQ2FzYXNub3Zhcy4KKworICAgICAgICBFbmFibGUgc29tZSB0ZXN0cyB0aGF0
IHBhc3Mgbm93LgorCisgICAgICAgICogVGVzdEV4cGVjdGF0aW9uczoKKwogMjAyMS0wMy0xNSAg
SW1hbm9sIEZlcm5hbmRleiAgPGlmZXJuYW5kZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBTcGxp
dCBXZWJYUiBmZWF0dXJlcyBpbnRvIGVuYWJsZWRGZWF0dXJlcywgc3VwcG9ydGVkRmVhdHVyZXMg
YW5kIHJlcXVlc3RlZEZlYXR1cmVzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0
YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAxNDg1MTFkNWM1N2E4
MmFjYTNiMTVmNTk5ZjRkMzQ0YjhjNDAzMTkwLi41NDAxNTAyMmUzZjY5ZDM0OGVmNTRiYjg1ZWYw
Y2IwZjIyOTE0ZWEzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisr
KyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTQ2NDUsNiArNDY0NSwxMiBAQCBm
YXN0L3NoYWRvdy1kb20vaW9zLyBbIFNraXAgXQogIyBSZXF1aXJlcyBXSzIgVGVzdFJ1bm5lcgog
ZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1lbnRlci13aGlsZS1leGl0aW5nLmh0bWwgWyBTa2lwIF0K
IAorIyBOZWVkIHRvIHdhaXQgYW5kIGNoZWNrIHdoZXRoZXIgc2Nyb2xsIG9jY3VycworZmFzdC9z
Y3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50Lmh0bWwgWyBT
bG93IF0KK2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZy
YW1lLmh0bWwgWyBTbG93IF0KK2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwt
YmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRtbCBbIFNsb3cgXQorZmFzdC9zY3JvbGxp
bmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLmh0
bWwgWyBTbG93IF0KKwogIyBBbmltYXRpb24gLyBMYXlvdXQgd29ya2V0cyBhcmUgbm90IHN1cHBv
cnRlZAogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrbGV0cy9hbmltYXRpb24t
d29ya2xldC1zZXJ2aWNlLXdvcmtlci1pbnRlcmNlcHRpb24uaHR0cHMuaHRtbCBbIFNraXAgXQog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrbGV0cy9hbmltYXRpb24td29ya2xl
dC1jc3AuaHR0cHMuaHRtbCBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9z
Y3JvbGxpbmcvcmVzb3VyY2VzL292ZXJzY3JvbGwtYmVoYXZpb3Itc3VwcG9ydC5qcyBiL0xheW91
dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3Jlc291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXN1cHBv
cnQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYjMzZjM2YzBlMDZjM2VkZGRhOWU2Y2FhZDAyZjZjZjNiNjQ4ZThi
ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3Jlc291cmNl
cy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXN1cHBvcnQuanMKQEAgLTAsMCArMSw0MCBAQAorZnVuY3Rp
b24gZ2V0RGVsdGFzKGRpcmVjdGlvbikgeworICAgIHZhciBkZWx0YVggPSAwOworICAgIHZhciBk
ZWx0YVkgPSAwOworICAgIGlmIChkaXJlY3Rpb24gPT0gImRvd24iKQorICAgICAgICBkZWx0YVkg
PSAtNTsKKyAgICBlbHNlIGlmIChkaXJlY3Rpb24gPT0gInVwIikKKyAgICAgICAgZGVsdGFZID0g
NTsKKyAgICBlbHNlIGlmIChkaXJlY3Rpb24gPT0gInJpZ2h0IikKKyAgICAgICAgZGVsdGFYID0g
LTU7CisgICAgZWxzZSBpZiAoZGlyZWN0aW9uID09ICJsZWZ0IikKKyAgICAgICAgZGVsdGFYID0g
NTsKKyAgICByZXR1cm4geworICAgICAgICBYOiBkZWx0YVgsCisgICAgICAgIFk6IGRlbHRhWQor
ICAgIH07Cit9CisKK2FzeW5jIGZ1bmN0aW9uIG1vdXNlV2hlZWxTY3JvbGxBbmRXYWl0KHgsIHks
IGJlZ2luWCwgYmVnaW5ZLCBkZWx0YVgsIGRlbHRhWSkKK3sKKyAgICBpZiAoYmVnaW5YID09PSB1
bmRlZmluZWQpCisgICAgICAgIGJlZ2luWCA9IDA7CisgICAgaWYgKGJlZ2luWSA9PT0gdW5kZWZp
bmVkKQorICAgICAgICBiZWdpblkgPSAtMTsKKworICAgIGlmIChkZWx0YVggPT09IHVuZGVmaW5l
ZCkKKyAgICAgICAgZGVsdGFYID0gMDsKKyAgICBpZiAoZGVsdGFZID09PSB1bmRlZmluZWQpCisg
ICAgICAgIGRlbHRhWSA9IC0xMDsKKworICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50
cygpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhiZWdpblgsIGJlZ2luWSwg
ImJlZ2FuIiwgIm5vbmUiKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZGVsdGFYLCBkZWx0YVksICJjaGFuZ2VkIiwgIm5vbmUiKTsKKyAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwg
MCwgImVuZGVkIiwgIm5vbmUiKTsKKyAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7
CisgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlv
bkZyYW1lKHJlc29sdmUpOworICAgICAgICB9LCA1MDApOworICAgIH0pOworfQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhh
dmlvci1lbGVtZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5
bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMjcxNTBmZjYwYjVkYmRkMGI0YTdhYzZmODNmYjU2ZjU3Y2QyY2Q4MgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3Jv
bGwtYmVoYXZpb3ItZWxlbWVudC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMCBAQAorCitQQVNT
IEVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6
IGF1dG8gYXV0by4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJz
Y3JvbGwtYmVoYXZpb3I6IGF1dG8gYXV0by4KK1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9s
bCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBhdXRvLgorUEFTUyBFbGVt
ZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFp
biBhdXRvLgorUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Ny
b2xsLWJlaGF2aW9yOiBub25lIGF1dG8uCitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRl
c3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIGF1dG8uCitQQVNTIEVsZW1lbnQgaG9y
aXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gY29udGFp
bi4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVo
YXZpb3I6IGF1dG8gY29udGFpbi4KK1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0
IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBjb250YWluLgorUEFTUyBFbGVtZW50
IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBj
b250YWluLgorUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Ny
b2xsLWJlaGF2aW9yOiBub25lIGNvbnRhaW4uCitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xs
IHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIGNvbnRhaW4uCitQQVNTIEVsZW1l
bnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8g
bm9uZS4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwt
YmVoYXZpb3I6IGF1dG8gbm9uZS4KK1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0
IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBub25lLgorUEFTUyBFbGVtZW50IHZl
cnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBub25l
LgorUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJl
aGF2aW9yOiBub25lIG5vbmUuCitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0
aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIG5vbmUuCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVu
dC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9s
bC1iZWhhdmlvci1lbGVtZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTE2YzMxNDFiYWQ4MGNlZjIyYmUx
ZjFhMGVkZTA1NmYyY2RjMjExMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
c2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC5odG1sCkBA
IC0wLDAgKzEsODYgQEAKKzwhZG9jdHlwZSBodG1sPgorCis8c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291
cmNlcy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXN1cHBvcnQuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVs
PSJoZWxwIiBocmVmPSJodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLW92ZXJzY3JvbGwtYmVo
YXZpb3IiPgorPHN0eWxlPgorICAgIC5zY3JvbGxpbmcgeworICAgICAgICBvdmVyZmxvdzogc2Ny
b2xsOworICAgIH0KKyAgICAuc2Nyb2xsQ29udGVudCB7CisgICAgICAgIHdpZHRoOiAzMDBweDsK
KyAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICB9CisgICAgI3Jvb3QgeworICAgICAgICB3aWR0
aDogMjAwcHg7CisgICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgfQorICAgICNzY3JvbGxlciB7
CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICB9Cis8
L3N0eWxlPgorPGRpdiBpZD0ncm9vdCcgY2xhc3M9InNjcm9sbGluZyI+CisgICAgPGRpdiBpZD0n
c2Nyb2xsZXInIGNsYXNzPSJzY3JvbGxpbmciPgorICAgICAgICA8ZGl2IGNsYXNzPSJzY3JvbGxD
b250ZW50Ij48L2Rpdj4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJzY3JvbGxDb250ZW50
Ij48L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0PgorY29uc3Qgcm9vdCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdyb290Jyk7Citjb25zdCBzY3JvbGxlciA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdzY3JvbGxlcicpOwordmFyIG92ZXJzY3JvbGxEYXRhcyA9IFtbImF1dG8iLCAiYXV0byIs
IHRydWUsIHRydWVdLAorICAgICAgICAgICAgICAgICAgICAgICAgWyJjb250YWluIiwgImF1dG8i
LCBmYWxzZSwgdHJ1ZV0sCisgICAgICAgICAgICAgICAgICAgICAgICBbIm5vbmUiLCAiYXV0byIs
IGZhbHNlLCB0cnVlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFsiYXV0byIsICJjb250YWlu
IiwgdHJ1ZSwgZmFsc2VdLAorICAgICAgICAgICAgICAgICAgICAgICAgWyJjb250YWluIiwgImNv
bnRhaW4iLCBmYWxzZSwgZmFsc2VdLAorICAgICAgICAgICAgICAgICAgICAgICAgWyJub25lIiwg
ImNvbnRhaW4iLCBmYWxzZSwgZmFsc2VdLAorICAgICAgICAgICAgICAgICAgICAgICAgWyJhdXRv
IiwgIm5vbmUiLCB0cnVlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAgICBbImNvbnRh
aW4iLCAibm9uZSIsIGZhbHNlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAgICBbIm5v
bmUiLCAibm9uZSIsIGZhbHNlLCBmYWxzZV1dOworCitmdW5jdGlvbiByZXNldFRlc3QoKSB7Cisg
ICAgLy8gVHJ5IHZhcmlvdXMgbWV0aG9kcyB0byBlbnN1cmUgdGhlIGVsZW1lbnQgcG9zaXRpb24g
aXMgcmVzZXQgaW1tZWRpYXRlbHkuCisgICAgc2Nyb2xsZXIuc2Nyb2xsTGVmdCA9IDMwMDsKKyAg
ICBzY3JvbGxlci5zY3JvbGxUb3AgPSAzMDA7CisgICAgc2Nyb2xsZXIuc2Nyb2xsVG8oMzAwLCAz
MDApOworCisgICAgcm9vdC5zY3JvbGxMZWZ0ID0gMDsKKyAgICByb290LnNjcm9sbFRvcCA9IDA7
CisgICAgcm9vdC5zY3JvbGxUbygwLCAwKTsKK30KKworZnVuY3Rpb24gc3RhcnRUZXN0KCkgewor
ICAgIG92ZXJzY3JvbGxEYXRhcy5mb3JFYWNoKChbb3ZlcnNjcm9sbFgsIG92ZXJzY3JvbGxZLCBw
cm9wYWdhdGVYLCBwcm9wYWdhdGVZXSkgPT4geworICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4g
eworICAgICAgICAgICAgcmVzZXRUZXN0KCk7CisgICAgICAgICAgICBzY3JvbGxlci5zdHlsZS5v
dmVyc2Nyb2xsQmVoYXZpb3JYID0gb3ZlcnNjcm9sbFg7CisgICAgICAgICAgICBzY3JvbGxlci5z
dHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JZID0gb3ZlcnNjcm9sbFk7CisKKyAgICAgICAgICAgIHZh
ciB4ID0gc2Nyb2xsZXIuY2xpZW50V2lkdGggLyAyOworICAgICAgICAgICAgdmFyIHkgPSBzY3Jv
bGxlci5jbGllbnRIZWlnaHQgLyAyOworICAgICAgICAgICAgdmFyIGRlbHRhID0gZ2V0RGVsdGFz
KCJyaWdodCIpOworICAgICAgICAgICAgcmV0dXJuIG1vdXNlV2hlZWxTY3JvbGxBbmRXYWl0KHgs
IHksIGRlbHRhLlgsIGRlbHRhLlksIGRlbHRhLlgsIGRlbHRhLlkpLnRoZW4oKCkgPT4geworICAg
ICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxMZWZ0ID4gMCwgcHJvcGFnYXRl
WCwgJ0NvbnRpbnVlIHVwIHRoZSBob3Jpem9udGFsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAg
ICAgICAgfSk7CisgICAgICAgIH0sICdFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0
aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiAnICsgb3ZlcnNjcm9sbFggKyAnICcgKyBvdmVyc2Nyb2xs
WSArICcuJyk7CisKKyAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAgIHJl
c2V0VGVzdCgpOworICAgICAgICAgICAgc2Nyb2xsZXIuc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9y
WCA9IG92ZXJzY3JvbGxYOworICAgICAgICAgICAgc2Nyb2xsZXIuc3R5bGUub3ZlcnNjcm9sbEJl
aGF2aW9yWSA9IG92ZXJzY3JvbGxZOworCisgICAgICAgICAgICB2YXIgeCA9IHNjcm9sbGVyLmNs
aWVudFdpZHRoIC8gMjsKKyAgICAgICAgICAgIHZhciB5ID0gc2Nyb2xsZXIuY2xpZW50SGVpZ2h0
IC8gMjsKKyAgICAgICAgICAgIHZhciBkZWx0YSA9IGdldERlbHRhcygiZG93biIpOworICAgICAg
ICAgICAgcmV0dXJuIG1vdXNlV2hlZWxTY3JvbGxBbmRXYWl0KHgsIHksIGRlbHRhLlgsIGRlbHRh
LlksIGRlbHRhLlgsIGRlbHRhLlkpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGFzc2Vy
dF9lcXVhbHMocm9vdC5zY3JvbGxUb3AgPiAwLCBwcm9wYWdhdGVZLCAnQ29udGludWUgdXAgdGhl
IHZlcnRpY2FsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0s
ICdFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjog
JyArIG92ZXJzY3JvbGxYICsgJyAnICsgb3ZlcnNjcm9sbFkgKyAnLicpOworICAgIH0pOworfQor
CithZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgc3RhcnRUZXN0KTsKKzwvc2NyaXB0PgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xs
aW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZp
b3ItaWZyYW1lLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MDBhMGI3ZDkwNWI4N2MxZGI3NjI2
OTRmZDAwNjM4ZjE5NzY5NTM3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9z
Y3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMjEgQEAKKworCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0
ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBhdXRvLgorUEFTUyBJZnJhbWUgdmVy
dGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIGF1dG8uCitQ
QVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlv
cjogY29udGFpbiBhdXRvLgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBv
dmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGF1dG8uCitQQVNTIElmcmFtZSBob3Jpem9udGFs
IHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBhdXRvLgorUEFTUyBJ
ZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25l
IGF1dG8uCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9s
bC1iZWhhdmlvcjogYXV0byBjb250YWluLgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRl
c3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIGNvbnRhaW4uCitQQVNTIElmcmFtZSBo
b3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBj
b250YWluLgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xs
LWJlaGF2aW9yOiBjb250YWluIGNvbnRhaW4uCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9s
bCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBjb250YWluLgorUEFTUyBJZnJh
bWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIGNv
bnRhaW4uCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9s
bC1iZWhhdmlvcjogYXV0byBub25lLgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qg
d2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIG5vbmUuCitQQVNTIElmcmFtZSBob3Jpem9u
dGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBub25lLgor
UEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9y
OiBjb250YWluIG5vbmUuCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGgg
b3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBub25lLgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Ny
b2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIG5vbmUuCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVo
YXZpb3ItaWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9s
bC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUyODg0NWRiNTA1
YjRlMmU5ZDA0NTM4MjlkZjU5ZTUyZjYwMzg1MzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFt
ZS5odG1sCkBAIC0wLDAgKzEsODggQEAKKzwhZG9jdHlwZSBodG1sPgorCis8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9InJlc291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXN1cHBvcnQuanMiPjwvc2NyaXB0Pgor
PGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLW92ZXJz
Y3JvbGwtYmVoYXZpb3IiPgorPHN0eWxlPgorICAgIC5zY3JvbGxpbmcgeworICAgICAgICBvdmVy
Zmxvdzogc2Nyb2xsOworICAgIH0KKyAgICAuc2Nyb2xsQ29udGVudCB7CisgICAgICAgIHdpZHRo
OiAzMDBweDsKKyAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgYmFja2dyb3VuZDogbGlu
ZWFyLWdyYWRpZW50KDEzNWRlZywgcmVkLCBibHVlKTsKKyAgICB9CisgICAgI3Jvb3QgeworICAg
ICAgICB3aWR0aDogMjAwcHg7CisgICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgfQorICAgICNz
Y3JvbGxlciB7CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsK
KyAgICAgICAgb3ZlcnNjcm9sbC1iZWhhdmlvci15OiBhdXRvOworICAgIH0KKzwvc3R5bGU+Cis8
ZGl2IGlkPSdyb290JyBjbGFzcz0ic2Nyb2xsaW5nIj4KKyAgICA8aWZyYW1lIGlkPSdzY3JvbGxl
cicgc3JjZG9jPSI8aHRtbD48ZGl2IHN0eWxlPSd3aWR0aDogMzAwcHg7IGhlaWdodDogMzAwcHg7
Jz48L2Rpdj48L2h0bWw+CisgICAgICAgICI+PC9pZnJhbWU+CisgICAgPGRpdiBjbGFzcz0ic2Ny
b2xsQ29udGVudCI+PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4KKyAgICBjb25zdCByb290ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jvb3QnKTsKKyAgICBjb25zdCBzY3JvbGxlciA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY3JvbGxlcicpOworICAgIHZhciBvdmVyc2Nyb2xsRGF0
YXMgPSBbWyJhdXRvIiwgImF1dG8iLCB0cnVlLCB0cnVlXSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBbImNvbnRhaW4iLCAiYXV0byIsIGZhbHNlLCB0cnVlXSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBbIm5vbmUiLCAiYXV0byIsIGZhbHNlLCB0cnVlXSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBbImF1dG8iLCAiY29udGFpbiIsIHRydWUsIGZhbHNlXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBbImNvbnRhaW4iLCAiY29udGFpbiIsIGZhbHNlLCBmYWxz
ZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJub25lIiwgImNvbnRhaW4iLCBmYWxz
ZSwgZmFsc2VdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiYXV0byIsICJub25lIiwg
dHJ1ZSwgZmFsc2VdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiY29udGFpbiIsICJu
b25lIiwgZmFsc2UsIGZhbHNlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIm5vbmUi
LCAibm9uZSIsIGZhbHNlLCBmYWxzZV1dOworICAgIGZ1bmN0aW9uIHJlc2V0VGVzdCgpIHsKKyAg
ICAgICAgLy8gVHJ5IHZhcmlvdXMgbWV0aG9kcyB0byBlbnN1cmUgdGhlIGVsZW1lbnQgcG9zaXRp
b24gaXMgcmVzZXQgaW1tZWRpYXRlbHkuCisgICAgICAgIHNjcm9sbGVyLmNvbnRlbnRXaW5kb3cu
c2Nyb2xsWCA9IDMwMDsKKyAgICAgICAgc2Nyb2xsZXIuY29udGVudFdpbmRvdy5zY3JvbGxZID0g
MzAwOworICAgICAgICBzY3JvbGxlci5jb250ZW50V2luZG93LnNjcm9sbFRvKDMwMCwgMzAwKTsK
KworICAgICAgICByb290LnNjcm9sbExlZnQgPSAwOworICAgICAgICByb290LnNjcm9sbFRvcCA9
IDA7CisgICAgICAgIHJvb3Quc2Nyb2xsVG8oMCwgMCk7CisgICAgfQorCisgICAgZnVuY3Rpb24g
b3ZlcnNjcm9sbEJlaGF2aW9yVGVzdCgpIHsKKyAgICAgICAgb3ZlcnNjcm9sbERhdGFzLmZvckVh
Y2goKFtvdmVyc2Nyb2xsWCwgb3ZlcnNjcm9sbFksIHByb3BhZ2F0ZVgsIHByb3BhZ2F0ZVldKSA9
PiB7CisgICAgICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgICAgICAgICAgICAgIHJl
c2V0VGVzdCgpOworICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSBzY3JvbGxlci5jb250ZW50
V2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJodG1sIilbMF07CisgICAgICAg
ICAgICAgICAgdGFyZ2V0LnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclggPSBvdmVyc2Nyb2xsWDsK
KyAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWSA9IG92ZXJz
Y3JvbGxZOworCisgICAgICAgICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAv
IDI7CisgICAgICAgICAgICAgICAgdmFyIHkgPSBzY3JvbGxlci5jbGllbnRIZWlnaHQgLyAyOwor
ICAgICAgICAgICAgICAgIHZhciBkZWx0YSA9IGdldERlbHRhcygicmlnaHQiKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gbW91c2VXaGVlbFNjcm9sbEFuZFdhaXQoeCwgeSwgZGVsdGEuWCwgZGVs
dGEuWSwgZGVsdGEuWCwgZGVsdGEuWSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgICAg
IGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxMZWZ0ID4gMCwgcHJvcGFnYXRlWCwgJ0NvbnRpbnVl
IHVwIHRoZSBob3Jpem9udGFsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAgICAgICAgICAgIH0p
OworICAgICAgICAgICAgfSwgJ0lmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3Zl
cnNjcm9sbC1iZWhhdmlvcjogJyArIG92ZXJzY3JvbGxYICsgJyAnICsgb3ZlcnNjcm9sbFkgKyAn
LicpOworCisgICAgICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgICAgICAgICAgICAg
IHJlc2V0VGVzdCgpOworICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSBzY3JvbGxlci5jb250
ZW50V2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJodG1sIilbMF07CisgICAg
ICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclggPSBvdmVyc2Nyb2xs
WDsKKyAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWSA9IG92
ZXJzY3JvbGxZOworCisgICAgICAgICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0
aCAvIDI7CisgICAgICAgICAgICAgICAgdmFyIHkgPSBzY3JvbGxlci5jbGllbnRIZWlnaHQgLyAy
OworICAgICAgICAgICAgICAgIHZhciBkZWx0YSA9IGdldERlbHRhcygiZG93biIpOworICAgICAg
ICAgICAgICAgIHJldHVybiBtb3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCh4LCB5LCBkZWx0YS5YLCBk
ZWx0YS5ZLCBkZWx0YS5YLCBkZWx0YS5ZKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICAg
ICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbFRvcCA+IDAsIHByb3BhZ2F0ZVksICdDb250aW51
ZSB1cCB0aGUgdmVydGljYWwgc2Nyb2xsIGNoYWluaW5nJyk7CisgICAgICAgICAgICAgICAgfSk7
CisgICAgICAgICAgICB9LCAnSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNj
cm9sbC1iZWhhdmlvcjogJyArIG92ZXJzY3JvbGxYICsgJyAnICsgb3ZlcnNjcm9sbFkgKyAnLicp
OworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBzY3JvbGxlci5hZGRFdmVudExpc3RlbmVyKCJs
b2FkIiwgb3ZlcnNjcm9sbEJlaGF2aW9yVGVzdCk7Cis8L3NjcmlwdD4KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5j
LXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50LWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwt
YmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYz
OTViNjQ4OGQwODcwYjk1NjFjMDI4Njc5ZDdlMTVhNDdmY2U2ZTkKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2
aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKKwor
UEFTUyBVbnNjcm9sbGFibGUgZWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3Zl
cnNjcm9sbC1iZWhhdmlvcjogbm9uZS4KK1BBU1MgVW5zY3JvbGxhYmxlIGVsZW1lbnQgdmVydGlj
YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLgorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJl
aGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9s
bGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uN2NiNzczMzY1OWUyYmM0YWJkNjUyNzE4OWNmNTA2ZDZmZWZhMjMw
NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Ny
b2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRtbApAQCAtMCww
ICsxLDY2IEBACis8IWRvY3R5cGUgaHRtbD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
b3ZlcnNjcm9sbC1iZWhhdmlvci1zdXBwb3J0LmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0iaGVs
cCIgaHJlZj0iaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1vdmVyc2Nyb2xsLWJlaGF2aW9y
Ij4KKzxzdHlsZT4KKyAgICAuc2Nyb2xsaW5nIHsKKyAgICAgICAgb3ZlcmZsb3c6IHNjcm9sbDsK
KyAgICB9CisgICAgLnNjcm9sbENvbnRlbnQgeworICAgICAgICB3aWR0aDogMzAwcHg7CisgICAg
ICAgIGhlaWdodDogMzAwcHg7CisgICAgfQorICAgICNyb290IHsKKyAgICAgICAgd2lkdGg6IDIw
MHB4OworICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAgIH0KKyAgICAjc2Nyb2xsZXIgeworICAg
ICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICAgIG92ZXJz
Y3JvbGwtYmVoYXZpb3I6IG5vbmU7CisgICAgICAgIG92ZXJmbG93OiB2aXNpYmxlOworICAgICAg
ICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZWQsIGJsdWUpOworICAgIH0K
Kzwvc3R5bGU+Cis8ZGl2IGlkPSJyb290IiBjbGFzcz0ic2Nyb2xsaW5nIj4KKyAgICA8ZGl2IGlk
PSJzY3JvbGxlciI+CisgICAgICAgIDxkaXYgY2xhc3M9InNjcm9sbENvbnRlbnQiPjwvZGl2Pgor
ICAgIDwvZGl2PgorICAgIDxkaXYgY2xhc3M9InNjcm9sbENvbnRlbnQiPjwvZGl2PgorPC9kaXY+
CisKKzxzY3JpcHQ+Citjb25zdCByb290ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jvb3Qn
KTsKK2NvbnN0IHNjcm9sbGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Njcm9sbGVyJyk7
CitmdW5jdGlvbiByZXNldFRlc3QoKSB7CisgICAgcm9vdC5zY3JvbGxMZWZ0ID0gMDsKKyAgICBy
b290LnNjcm9sbFRvcCA9IDA7CisgICAgcm9vdC5zY3JvbGxUbygwLCAwKTsKK30KKworZnVuY3Rp
b24gc3RhcnRUZXN0KCkgeworICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgICAgICAg
ICAgcmVzZXRUZXN0KCk7CisgICAgICAgICAgICB2YXIgeCA9IHNjcm9sbGVyLmNsaWVudFdpZHRo
IC8gMjsKKyAgICAgICAgICAgIHZhciB5ID0gc2Nyb2xsZXIuY2xpZW50SGVpZ2h0IC8gMjsKKyAg
ICAgICAgICAgIHZhciBkZWx0YSA9IGdldERlbHRhcygicmlnaHQiKTsKKyAgICAgICAgICAgIHJl
dHVybiBtb3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCh4LCB5LCBkZWx0YS5YLCBkZWx0YS5ZLCBkZWx0
YS5YLCBkZWx0YS5ZKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxz
KHJvb3Quc2Nyb2xsTGVmdCA+IDAsIHRydWUsICdDb250aW51ZSB1cCB0aGUgaG9yaXpvbnRhbCBz
Y3JvbGwgY2hhaW5pbmcnKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9LCAnVW5zY3JvbGxh
YmxlIGVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZp
b3I6IG5vbmUuJyk7CisKKyAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAg
IHJlc2V0VGVzdCgpOworICAgICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAv
IDI7CisgICAgICAgICAgICB2YXIgeSA9IHNjcm9sbGVyLmNsaWVudEhlaWdodCAvIDI7CisgICAg
ICAgICAgICB2YXIgZGVsdGEgPSBnZXREZWx0YXMoImRvd24iKTsKKyAgICAgICAgICAgIHJldHVy
biBtb3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCh4LCB5LCBkZWx0YS5YLCBkZWx0YS5ZLCBkZWx0YS5Y
LCBkZWx0YS5ZKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJv
b3Quc2Nyb2xsVG9wID4gMCwgdHJ1ZSwgJ0NvbnRpbnVlIHVwIHRoZSB2ZXJ0aWNhbCBzY3JvbGwg
Y2hhaW5pbmcnKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9LCAnVW5zY3JvbGxhYmxlIGVs
ZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25l
LicpOworfQorCithZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgc3RhcnRUZXN0KTsKKzwvc2NyaXB0
PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxl
LWlmcmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNj
cm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjdmYTU5Y2NiYTc5YWVmZjMzZGE3MGU5M2Q0ODhhMDdlZWM5YzU2OTEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1v
dmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsNSBAQAorCisKK1BBU1MgVW5zY3JvbGxhYmxlIGlmcmFtZSBob3Jpem9udGFsIHNjcm9s
bCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4KK1BBU1MgVW5zY3JvbGxhYmxl
IGlmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5v
bmUuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xs
LW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9s
bGFibGUtaWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTI0MjVhZmM2MzdkZjUxZTQ0MTU0MjZhYjQ2
N2M2MTRlMzhlZjYxNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xs
aW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5o
dG1sCkBAIC0wLDAgKzEsNjYgQEAKKzwhZG9jdHlwZSBodG1sPgorCis8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
InJlc291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXN1cHBvcnQuanMiPjwvc2NyaXB0PgorPGxp
bmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLW92ZXJzY3Jv
bGwtYmVoYXZpb3IiPgorPHN0eWxlPgorICAgIC5zY3JvbGxpbmcgeworICAgICAgICBvdmVyZmxv
dzogc2Nyb2xsOworICAgIH0KKyAgICAuc2Nyb2xsQ29udGVudCB7CisgICAgICAgIHdpZHRoOiAz
MDBweDsKKyAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICB9CisgICAgI3Jvb3QgeworICAgICAg
ICB3aWR0aDogMjAwcHg7CisgICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgfQorICAgICNzY3Jv
bGxlciB7CisgICAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgICAgaGVpZ2h0OiAyMDBweDsKKyAg
ICAgICAgb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZTsKKyAgICAgICAgb3ZlcmZsb3c6IHZpc2li
bGU7CisgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJlZCwgYmx1
ZSk7CisgICAgfQorPC9zdHlsZT4KKzxkaXYgaWQ9J3Jvb3QnIGNsYXNzPSJzY3JvbGxpbmciPgor
ICAgIDxpZnJhbWUgaWQ9J3Njcm9sbGVyJyBzcmNkb2M9IjxodG1sIHN0eWxlPSdvdmVyc2Nyb2xs
LWJlaGF2aW9yOiBub25lOyc+PGRpdiBzdHlsZT0nd2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDEwMHB4
Oyc+PC9kaXY+PC9odG1sPgorICAgICAgICAiPjwvaWZyYW1lPgorICAgIDxkaXYgY2xhc3M9InNj
cm9sbENvbnRlbnQiPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+Citjb25zdCByb290ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jvb3QnKTsKK2NvbnN0IHNjcm9sbGVyID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ3Njcm9sbGVyJyk7CisKK2Z1bmN0aW9uIHJlc2V0VGVzdCgpIHsKKyAg
ICByb290LnNjcm9sbExlZnQgPSAwOworICAgIHJvb3Quc2Nyb2xsVG9wID0gMDsKKyAgICByb290
LnNjcm9sbFRvKDAsIDApOworfQorCitmdW5jdGlvbiBzdGFydFRlc3QoKSB7CisgICAgICAgIHBy
b21pc2VfdGVzdCgoKSA9PiB7CisgICAgICAgICAgICByZXNldFRlc3QoKTsKKyAgICAgICAgICAg
IHZhciB4ID0gc2Nyb2xsZXIuY2xpZW50V2lkdGggLyAyOworICAgICAgICAgICAgdmFyIHkgPSBz
Y3JvbGxlci5jbGllbnRIZWlnaHQgLyAyOworICAgICAgICAgICAgdmFyIGRlbHRhID0gZ2V0RGVs
dGFzKCJyaWdodCIpOworICAgICAgICAgICAgcmV0dXJuIG1vdXNlV2hlZWxTY3JvbGxBbmRXYWl0
KHgsIHksIGRlbHRhLlgsIGRlbHRhLlksIGRlbHRhLlgsIGRlbHRhLlkpLnRoZW4oKCkgPT4gewor
ICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxMZWZ0ID4gMCwgdHJ1ZSwg
J0NvbnRpbnVlIHVwIHRoZSBob3Jpem9udGFsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAgICAg
ICAgfSk7CisgICAgICAgIH0sICdVbnNjcm9sbGFibGUgaWZyYW1lIGhvcml6b250YWwgc2Nyb2xs
IHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLicpOworCisgICAgICAgIHByb21p
c2VfdGVzdCgoKSA9PiB7CisgICAgICAgICAgICByZXNldFRlc3QoKTsKKyAgICAgICAgICAgIHZh
ciB4ID0gc2Nyb2xsZXIuY2xpZW50V2lkdGggLyAyOworICAgICAgICAgICAgdmFyIHkgPSBzY3Jv
bGxlci5jbGllbnRIZWlnaHQgLyAyOworICAgICAgICAgICAgdmFyIGRlbHRhID0gZ2V0RGVsdGFz
KCJkb3duIik7CisgICAgICAgICAgICByZXR1cm4gbW91c2VXaGVlbFNjcm9sbEFuZFdhaXQoeCwg
eSwgZGVsdGEuWCwgZGVsdGEuWSwgZGVsdGEuWCwgZGVsdGEuWSkudGhlbigoKSA9PiB7CisgICAg
ICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbFRvcCA+IDAsIHRydWUsICdDb250
aW51ZSB1cCB0aGUgdmVydGljYWwgc2Nyb2xsIGNoYWluaW5nJyk7CisgICAgICAgICAgICB9KTsK
KyAgICAgICAgfSwgJ1Vuc2Nyb2xsYWJsZSBpZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0
aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLicpOworfQorCithZGRFdmVudExpc3RlbmVyKCJs
b2FkIiwgc3RhcnRUZXN0KTsKKzwvc2NyaXB0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggZWY3ZmRlYjNj
ODg3MDUzYzE5N2VhNWRlZDI0NjA3YjM4MjJkYjZmNC4uNTk5MTI0ODEyNGExYTlmMjlkNDQyZjZh
M2JkNDI4NDc4OTMxOTFlMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rl
c3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3Rh
dGlvbnMKQEAgLTc5NSw2ICs3OTUsMTIgQEAgc3ZnL3RleHQvc2VsZWN0LXRleHQtc3ZnZm9udC5o
dG1sIFsgU2tpcCBdCiBzdmcvdGV4dC9zZWxlY3Rpb24tZG91YmxlY2xpY2suc3ZnIFsgU2tpcCBd
CiBzdmcvdGV4dC9zZWxlY3Rpb24tdHJpcGxlY2xpY2suc3ZnIFsgU2tpcCBdCiAKKyMgT3ZlcnNj
cm9sbC1iZWhhdmlvciBpcyBub3Qgc3VwcG9ydGVkIG9uIGlPUworZmFzdC9zY3JvbGxpbmcvc3lu
Yy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50Lmh0bWwgWyBTa2lwIF0KK2Zhc3Qv
c2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0bWwgWyBT
a2lwIF0KK2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5z
Y3JvbGxhYmxlLWVsZW1lbnQuaHRtbCBbIFNraXAgXQorZmFzdC9zY3JvbGxpbmcvc3luYy1zY3Jv
bGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLmh0bWwgWyBTa2lwIF0K
KwogIyBJT1MgZG9lcyBub3QgaW1wbGVtZW50IHNldEF1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFi
bGVkCiBlZGl0aW5nL2luc2VydGluZy90eXBpbmctc3BhY2UtdG8tdHJpZ2dlci1zbWFydC1saW5r
Lmh0bWwgWyBTa2lwIF0KIGVkaXRpbmcvaW5zZXJ0aW5nL3NtYXJ0LWxpbmstd2hlbi1jYXJldC1p
cy1tb3ZlZC1iZWZvcmUtVVJMLmh0bWwgWyBTa2lwIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBlMjI3MGI2Zjk5ZDQ5OGY5NjRlOWY4OTI2
YjIyYmQ2NGM4YzY5M2I0Li5mMTJjM2Q5MmM0NTE5ZWY0ZGVlNTc5YjgzOTkyMWQxZTMzMzFkYjAx
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlv
bnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCkBA
IC00NTMsNiArNDUzLDEwIEBAIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1zY3JvbGwtc25hcC9zY3JvbGwtdGFyZ2V0LXBhZGRpbmctMDAxLmh0CiBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mtc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtc3RvcC1j
aGFuZ2UuaHRtbCBbIEZhaWx1cmUgXQogY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwtcGFkZGluZy1t
YWluZnJhbWUtcGFnaW5nLmh0bWwgWyBGYWlsdXJlIF0KIAorIyBMYWNrIG9mIHdheXMgdG8gY29u
dHJvbCB0aGUgY3Jvc3MtZnJhbWUgc2Nyb2xsIGNoYWluaW5nIGluIFdLMS4KK2Zhc3Qvc2Nyb2xs
aW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0bWwgWyBTa2lwIF0K
K2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxh
YmxlLWlmcmFtZS5odG1sIFsgU2tpcCBdCisKICMjIyBFTkQgT0YgKDIpIEZhaWx1cmVzIHdpdGhv
dXQgYnVnIHJlcG9ydHMKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK
IAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423579</attachid>
            <date>2021-03-18 03:34:11 -0700</date>
            <delta_ts>2021-03-22 08:38:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222968-20210318183408.patch</filename>
            <type>text/plain</type>
            <size>63351</size>
            <attacher name="cathiechen">cathiechen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0NDE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWJmNDc4OWYyMmE2OTA3
MzY0ZTQyNWUxZmNhYTJkOTI3MDQ2NTRlYS4uNzhjZjJmNzU3NzZlMDU1MDYzZWU4YjhmNzhkNTAy
MDRjMWZjYTBkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDIxLTAzLTE1ICBDYXRo
aWUgQ2hlbiAgPGNhdGhpZWNoZW5AaWdhbGlhLmNvbT4KKworICAgICAgICBTdXBwb3J0IENTUyBv
dmVyc2Nyb2xsLWJlaGF2aW9yIGZvciBzeW5jaHJvbm91cyBzY3JvbGwKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjk2OAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJhc2VkIG9uIEZyw6lkw6lyaWMgV2Fu
ZydzIHBhdGNoLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYnJpbmdzIGluaXRpYWwgc3VwcG9ydCBv
ZiBDU1MgcHJvcGVydHkgb3ZlcnNjcm9sbC1iZWhhdmlvci4gT3ZlcnNjcm9sbC1iZWhhdmlvciBz
ZXRzIHdoYXQKKyAgICAgICAgdGhlIGJyb3dzZXIgZG9lcyB3aGVuIHJlYWNoaW5nIHRoZSBib3Vu
ZGFyeSBvZiBhIHNjcm9sbGluZyBhcmVhLiBGaXJlZm94IGFuZCBDaHJvbWl1bS12YXJpYW50IGJy
b3dzZXJzCisgICAgICAgIGFscmVhZHkgc3VwcG9ydCBpdC4gSXRzIHNwZWNpZmljYXRpb24gY2Fu
IGJlIGZvdW5kIGF0IGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3Mtb3ZlcnNjcm9sbC0xLyNv
dmVyc2Nyb2xsLWJlaGF2aW9yLXByb3BlcnRpZXMKKyAgICAgICAgVGhpcyBwYXRjaCBhaW1zIHRv
IHN1cHBvcnQgaXQgZm9yIHRoZSBzeW5jaHJvbm91cyBzY3JvbGwuIFRoZSBhc3luY2hyb25vdXMg
c2Nyb2xsIG9uIE1hYyB3aWxsIGJlIGNvdmVyZWQgbGF0ZXIuCisKKyAgICAgICAgQWNjb3JkaW5n
IHRvIHRoZSB2YWx1ZSBvZiBvdmVyc2Nyb2xsLWJlaGF2aW9yLCB0aGlzIHBhdGNoIGNvbnRyb2xz
IHRoZSBzY3JvbGwgY2hhaW5pbmcsIHRoZSBzY3JvbGwgc3RyZXRjaCwKKyAgICAgICAgYW5kIHN3
aXBlIGdlc3R1cmVzIGdlbmVyYXRpb24gb2YgdGhlIHN5bmNocm9ub3VzIHNjcm9sbC4gVG8gY29u
dHJvbCB0aGUgc2Nyb2xsIGNoYWluaW5nLAorICAgICAgICBtX3Njcm9sbENoYWluaW5nQmxvY2tl
ciBpcyBhZGRlZCB0byBFdmVudEhhbmxkZXIsIGl0IGlzIGdlbmVyYXRlZCBhY2NvcmRpbmcgdG8g
b3ZlcnNjcm9sbC1iZWhhdmlvciB2YWx1ZXMuCisgICAgICAgIEl0IGluZGljYXRlcyB3aGV0aGVy
IHRoZSBzY3JvbGwgY2hhaW5pbmcgb2YgdGhpcyBmcmFtZSBzaG91bGQgYmUgc3RvcHBlZCBvciBu
b3QuCisgICAgICAgIFRoZSBzY3JvbGwgY2hhaW5pbmcgaXMgaGFuZGxlZCBkaWZmZXJlbnRseSBi
eSBXSEVFTF9FVkVOVF9MQVRDSElORyBzZXR0aW5nLiBJZiBXSEVFTF9FVkVOVF9MQVRDSElORyBp
cyBvZmYsCisgICAgICAgIHRoZSBzY3JvbGwgY2hhaW5pbmcgaXMgaGFuZGxlZCBkaXJlY3RseSBp
biBFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94
KCkuCisgICAgICAgIElmIFdIRUVMX0VWRU5UX0xBVENISU5HIGlzIG9uLCB0aGUgbGF0Y2hlZCBz
Y3JvbGwgdGFyZ2V0IGlzIGFsd2F5cyBGcmFtZVZpZXcgaWYgaXQgbmVlZHMgdG8gc3RvcCB0aGUg
c2Nyb2xsIGNoYWluaW5nLgorICAgICAgICBJZiBjdXJyZW50IGZyYW1lIGlzIGEgc3ViZnJhbWUs
IHRoZSB2YWx1ZSBvZiBtX3Njcm9sbENoYWluaW5nQmxvY2tlciB3aWxsIGJlIHBhc3NlZCB0byBp
dHMgcGFyZW50IGZyYW1lLgorICAgICAgICBBbmQgZXZlbnR1YWxseSwgbGV0IHRoZSBtYWluZnJh
bWUgaGFuZGxlIG1fc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLiBUaGUgbWFpbmZyYW1lIGJsb2NrcyB2
ZXJ0aWNhbCBzY3JvbGwgY2hhaW5pbmcgZGlyZWN0bHksCisgICAgICAgIGFuZCBob3Jpem9udGFs
bHkgaXQgd2lsbCBsZXQgdGhlIHZpZXdzIGRlY2lkZSB3aGV0aGVyIGl0IHNob3VsZCBnZW5lcmF0
ZSBzd2lwZSBnZXN0dXJlcyBvciBub3QuCisgICAgICAgIEFib3V0IHRoZSBzY3JvbGwgc3RyZXRj
aCwgaXQgaXMgY2FuY2VsZWQgaWYgdGhlIHZhbHVlIG9mIG92ZXJzY3JvbGwtYmVoYXZpb3IgaXMg
bm9uZS4KKworICAgICAgICBUZXN0czogZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNj
cm9sbC1iZWhhdmlvci1lbGVtZW50Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvc2Nyb2xsaW5n
L3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0bWwKKyAgICAgICAgICAg
ICAgIGZhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3Jv
bGxhYmxlLWVsZW1lbnQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9zY3JvbGxpbmcvc3luYy1z
Y3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLmh0bWwKKworICAg
ICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFu
ZGxlcjo6c2Nyb2xsQ2hhaW5pbmdCbG9ja2VyQ2hhbmdlZEJ5U3ViZnJhbWUpOiBVcGRhdGUgdGhl
IHN0YXRlIG9mIHNjcm9sbExhdGNoaW5nQ29udHJvbGxlciBpZiBtX3Njcm9sbENoYWluaW5nQmxv
Y2tlciBpcyBjaGFuZ2VkIGJ5IHN1YmZyYW1lLgorICAgICAgICAoV2ViQ29yZTo6dXBkYXRlUGFy
ZW50RnJhbWVTY3JvbGxDaGFpbmluZ0Jsb2NrZXIpOiBVcGRhdGUgbV9zY3JvbGxDaGFpbmluZ0Js
b2NrZXIgZm9yIHBhcmVudCBmcmFtZS4KKyAgICAgICAgKFdlYkNvcmU6OmNoZWNrU2Nyb2xsQ2hh
aW5pbmdCbG9ja2VyRm9yRnJhbWVWaWV3KTogQ2hlY2sgaWYgbV9zY3JvbGxDaGFpbmluZ0Jsb2Nr
ZXIgYmxvY2tzIHRoZSBzY3JvbGwgY2hhaW5pbmcgb24gRnJhbWVWaWV3LAorICAgICAgICBkZWFs
IHdpdGggaG9yaXpvbnRhbCBhbmQgdmVydGljYWwgc2Nyb2xsIGNoYWluaW5nIGRpZmZlcmVudGx5
LCBhbmQgdXBkYXRlIHRoZSBkZWx0YSBvZiBXaGVlbEV2ZW50IGlmIGl0IGRvZXNuJ3QgYmxvY2sg
dGhlIHNjcm9sbCBjaGFpbmluZy4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFu
ZGxlV2hlZWxFdmVudEludGVybmFsKTogSWYgaXQncyBtYWluIGZyYW1lLCBibG9jayBzY3JvbGwg
Y2hhaW5pbmcgYnkgdGhlIHZhbHVlIG9mIG1fc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLgorICAgICAg
ICBJZiBpdCdzIHN1YmZyYW1lLCBwYXNzIG1fc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIHZhbHVlIHRv
IHBhcmVudCBmcmFtZS4gCisgICAgICAgIChXZWJDb3JlOjpkaWRTY3JvbGxJblNjcm9sbGFibGVB
cmVhKTogRmlsdGVyIHRoZSBzY3JvbGwgZGVsdGEgYnkgdGhlIFNjcm9sbENoYWluaW5nQmxvY2tl
ciB2YWx1ZS4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVu
dEluQXBwcm9wcmlhdGVFbmNsb3NpbmdCb3gpOiBCbG9jayBzY3JvbGwgY2hhaW5pbmcgYWNjb3Jk
aW5nIHRvIHRoZSB2YWx1ZSBvZiBtX3Njcm9sbENoYWluaW5nQmxvY2tlci4KKyAgICAgICAgKFdl
YkNvcmU6OkV2ZW50SGFuZGxlcjo6dXBkYXRlU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6cmVzZXRTY3JvbGxDaGFpbmluZ0Jsb2NrZXIpOgor
ICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmg6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojpob3Jpem9udGFsT3ZlcnNjcm9sbEJl
aGF2aW9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6dmVydGljYWxPdmVy
c2Nyb2xsQmVoYXZpb3IgY29uc3QpOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3Lmg6CisgICAg
ICAgICogcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Zmlu
ZEVuY2xvc2luZ1Njcm9sbGFibGVDb250YWluZXIpOiBVcGRhdGUgdGhlIHZhbHVlIG9mIFNjcm9s
bENoYWluaW5nQmxvY2tlciBhbmQgcmV0dXJuIG51bGwgaWYgc2hvdWxkQmxvY2tTY3JvbGxDaGFp
bmluZygpLgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpkZXRlcm1pbmVXaGVlbEV2
ZW50VGFyZ2V0KTogSWYgc2hvdWxkQmxvY2tTY3JvbGxDaGFpbmluZygpLCBGcmFtZVZpZXcgd2ls
bCBiZSB0aGUgbGF0Y2hlZCBzY3JvbGwgdGFyZ2V0LgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRI
YW5kbGVyOjpzY3JvbGxDaGFpbmluZ0Jsb2NrZXJDaGFuZ2VkQnlTdWJmcmFtZSk6IERpdHRvLgor
ICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1XaGVlbEV2ZW50Ojp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbCk6
IE1vdmVkIGZyb20gU2Nyb2xsQ29udHJvbGxlci5tbQorICAgICAgICAqIHBsYXRmb3JtL1Njcm9s
bFR5cGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxDaGFpbmluZ0Jsb2NrZXI6OnNob3Vs
ZEJsb2NrU2Nyb2xsQ2hhaW5pbmcpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQ2hhaW5pbmdC
bG9ja2VyOjpmaWx0ZXJEZWx0YSk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWE6OnVwZGF0ZVNjcm9sbENoYWlu
aW5nQmxvY2tlclN0YXRlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxhYmxlQXJl
YS5oOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWE6Omhvcml6b250YWxPdmVyc2Ny
b2xsQmVoYXZpb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWE6OnZl
cnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMv
U2Nyb2xsQW5pbWF0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck1h
Yzo6c2hvdWxkRm9yd2FyZFdoZWVsRXZlbnRzVG9QYXJlbnQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsQW5pbWF0b3JNYWM6OmFsbG93c1ZlcnRpY2FsU3RyZXRjaGluZyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck1hYzo6YWxsb3dzSG9yaXpvbnRhbFN0
cmV0Y2hpbmcgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxDb250cm9sbGVy
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQ29udHJvbGxlcjo6ZGlyZWN0aW9uRnJvbUV2
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbENvbnRyb2xsZXI6OndoZWVsRGVsdGFCaWFz
aW5nVG93YXJkc1ZlcnRpY2FsKTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
TGF5ZXJTY3JvbGxhYmxlQXJlYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllclNj
cm9sbGFibGVBcmVhOjpob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWE6OnZlcnRpY2FsT3ZlcnNjcm9s
bEJlaGF2aW9yIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxh
YmxlQXJlYS5oOgorCiAyMDIxLTAzLTE1ICBJbWFub2wgRmVybmFuZGV6ICA8aWZlcm5hbmRlekBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFNwbGl0IFdlYlhSIGZlYXR1cmVzIGludG8gZW5hYmxlZEZl
YXR1cmVzLCBzdXBwb3J0ZWRGZWF0dXJlcyBhbmQgcmVxdWVzdGVkRmVhdHVyZXMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZwppbmRleCBjNzdjMGYyODYzZTE4OTI4NzFjYmEwODllMDAwNWMyNTQx
ZDg3N2FkLi5iNTdkYTQxZjIzNjY2MTk2MTQyZTBmN2Y5MDMxYWI0OTZkZGM1OGRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEtMDMtMTUgIENhdGhp
ZSBDaGVuICA8Y2F0aGllY2hlbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFN1cHBvcnQgQ1NTIG92
ZXJzY3JvbGwtYmVoYXZpb3IgZm9yIHN5bmNocm9ub3VzIHNjcm9sbAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyOTY4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmFzZWQgb24gRnLDqWTDqXJpYyBXYW5n
J3MgcGF0Y2guCisKKyAgICAgICAgTmVlZCB0byBmaW5kIGEgd2F5IHRvIGJsb2NrIHRoZSBjcm9z
cy1mcmFtZSBzY3JvbGwgY2hhaW5pbmcgaW4gV0sxLgorCisgICAgICAgICogV2ViVmlldy9XZWJI
VE1MVmlldy5tbToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgc2Nyb2xsV2hlZWw6XSk6CisKIDIw
MjEtMDMtMTEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBJbnRy
b2R1Y2UgV29ya1F1ZXVlOjptYWluKCkgdG8gZ2V0IHRoZSBtYWluIHRocmVhZCdzIHdvcmsgcXVl
dWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCAyZjE4ZTFlZWU5ODRlOTAx
ZDE0ZTViOTUyZWM1MWEwYjIzYWU0ZThiLi41Y2E5MDQzNmQ0ODM5OWM1ZGE4ZWMxZDY0NzgyNjYz
NjYzNGM3MzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0yNzM5LDYg
KzI3MzksMTAgQEAgdm9pZCBFdmVudEhhbmRsZXI6OmRldGVybWluZVdoZWVsRXZlbnRUYXJnZXQo
Y29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgUmVmUHRyPEUKIHsKIH0KIAordm9pZCBFdmVudEhh
bmRsZXI6OnNjcm9sbENoYWluaW5nQmxvY2tlckNoYW5nZWRCeVN1YmZyYW1lKGNvbnN0IFBsYXRm
b3JtV2hlZWxFdmVudCYsIFJlZlB0cjxFbGVtZW50PiYsIFdlYWtQdHI8U2Nyb2xsYWJsZUFyZWE+
JiwgYm9vbCYpCit7Cit9CisKIHZvaWQgRXZlbnRIYW5kbGVyOjpyZWNvcmRXaGVlbEV2ZW50Rm9y
RGVsdGFGaWx0ZXIoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCkKIHsKICAgICBpZiAo
YXV0byogcGFnZSA9IG1fZnJhbWUucGFnZSgpKQpAQCAtMjg1Nyw2ICsyODYxLDU2IEBAIGJvb2wg
RXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYg
d2hlZWxFdmVudCwgT3B0aW9uCiAgICAgcmV0dXJuIGhhbmRsZWQ7CiB9CiAKKyNpZiBFTkFCTEUo
V0hFRUxfRVZFTlRfTEFUQ0hJTkcpCitzdGF0aWMgdm9pZCB1cGRhdGVQYXJlbnRGcmFtZVNjcm9s
bENoYWluaW5nQmxvY2tlcihjb25zdCBTY3JvbGxhYmxlQXJlYSogc2Nyb2xsYWJsZUFyZWEsIEZy
YW1lJiBmcmFtZSwgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyJiBibG9ja2VyKQoreworICAgIGF1dG8q
IHBhcmVudCA9IGZyYW1lLnRyZWUoKS5wYXJlbnQoKTsKKyAgICBpZiAoIXNjcm9sbGFibGVBcmVh
KQorICAgICAgICBzY3JvbGxhYmxlQXJlYSA9IGZyYW1lLnZpZXcoKTsKKyAgICBpZiAoIWZyYW1l
LnBhZ2UoKSB8fCAhcGFyZW50IHx8ICFzY3JvbGxhYmxlQXJlYSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIHNjcm9sbGFibGVBcmVhLT51cGRhdGVTY3JvbGxDaGFpbmluZ0Jsb2NrZXJTdGF0ZShibG9j
a2VyKTsKKyAgICBwYXJlbnQtPmV2ZW50SGFuZGxlcigpLnVwZGF0ZVNjcm9sbENoYWluaW5nQmxv
Y2tlcihibG9ja2VyKTsKK30KKworc3RhdGljIGJvb2wgY2hlY2tTY3JvbGxDaGFpbmluZ0Jsb2Nr
ZXJGb3JGcmFtZVZpZXcoY29uc3QgU2Nyb2xsYWJsZUFyZWEqIHNjcm9sbGFibGVBcmVhLCBGcmFt
ZSYgZnJhbWUsIFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgU2Nyb2xsQ2hhaW5pbmdC
bG9ja2VyIHNjcm9sbENoYWluaW5nQmxvY2tlciwgYm9vbCYgaGFuZGxlZEV2ZW50KQoreworICAg
IGlmICghc2Nyb2xsYWJsZUFyZWEpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChz
Y3JvbGxhYmxlQXJlYSAhPSBmcmFtZS52aWV3KCkpIHsKKyAgICAgICAgLy8gV2hlZWwgZXZlbnQg
aXMgZ29pbmcgdG8gYmUgaGFuZGxlZCBieSBGcmFtZVZpZXcgaW4gcHJvY2Vzc1doZWVsRXZlbnRG
b3JTY3JvbGxpbmcoKSwKKyAgICAgICAgLy8gc2hvdWxkIGxldCBzY3JvbGxhYmxlQXJlYSdzIG92
ZXJzY3JvbGwtYmVoYXZpb3IgZWZmZWN0IFNjcm9sbENoYWluaW5nQmxvY2tlci4KKyAgICAgICAg
c2Nyb2xsYWJsZUFyZWEtPnVwZGF0ZVNjcm9sbENoYWluaW5nQmxvY2tlclN0YXRlKHNjcm9sbENo
YWluaW5nQmxvY2tlcik7CisgICAgfQorCisgICAgRmxvYXRTaXplIGZpbHRlcmVkRGVsdGEod2hl
ZWxFdmVudC5kZWx0YVgoKSwgd2hlZWxFdmVudC5kZWx0YVkoKSk7CisgICAgYXV0byBiaWFzZWRE
ZWx0YSA9IFBsYXRmb3JtV2hlZWxFdmVudDo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGlj
YWwoZmlsdGVyZWREZWx0YSk7CisgICAgaWYgKHNjcm9sbENoYWluaW5nQmxvY2tlci5ibG9ja1gg
JiYgIWJpYXNlZERlbHRhLmhlaWdodCgpKSB7CisgICAgICAgIC8vIElmIHRoZSBob3Jpem9udGFs
IHNjcm9sbCBjaGFpbmluZyBpcyBibG9ja2VkIGJ5IG92ZXJzY3JvbGwtYmVoYXZpb3IgaW4gYSBz
dWJmcmFtZS4KKyAgICAgICAgLy8gSXQgcHJvcGFnYXRlcyBpdHMgU2Nyb2xsQ2hhaW5pbmdCbG9j
a2VyIHRvIHBhcmVudCBmcmFtZXMgYW5kIGV2ZW50dWFsbHkgbGV0IG1haW5mcmFtZQorICAgICAg
ICAvLyBkZWNpZGUgd2hldGhlciBuZWVkIHRvIHRyaWdnZXIgYSBzd2lwZSBnZXN0dXJlIG9yIG5v
dC4KKyAgICAgICAgaWYgKGZyYW1lLmlzTWFpbkZyYW1lKCkpIHsKKyAgICAgICAgICAgIC8vIElu
IG1haW4gZnJhbWUsIHRyaWdnZXIgdGhlIHN3aXBlIGdlc3R1cmUgaWYgbmVlZGVkLgorICAgICAg
ICAgICAgaGFuZGxlZEV2ZW50ID0gIWJpYXNlZERlbHRhLndpZHRoKCk7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICB1cGRhdGVQYXJlbnRGcmFtZVNjcm9sbENoYWluaW5nQmxvY2tlcihz
Y3JvbGxhYmxlQXJlYSwgZnJhbWUsIHNjcm9sbENoYWluaW5nQmxvY2tlcik7CisgICAgICAgICAg
ICBoYW5kbGVkRXZlbnQgPSBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisKKyAgICBpZiAoU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyOjpzaG91bGRCbG9ja1Njcm9s
bENoYWluaW5nKHNjcm9sbENoYWluaW5nQmxvY2tlciwgYmlhc2VkRGVsdGEpKSB7CisgICAgICAg
IGhhbmRsZWRFdmVudCA9IHRydWU7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAg
IFNjcm9sbENoYWluaW5nQmxvY2tlcjo6ZmlsdGVyRGVsdGEoc2Nyb2xsQ2hhaW5pbmdCbG9ja2Vy
LCBiaWFzZWREZWx0YSwgZmlsdGVyZWREZWx0YSk7CisgICAgd2hlZWxFdmVudCA9IHdoZWVsRXZl
bnQuY29weVdpdGhEZWx0YXNBbmRWZWxvY2l0eShmaWx0ZXJlZERlbHRhLndpZHRoKCksIGZpbHRl
cmVkRGVsdGEuaGVpZ2h0KCksIHdoZWVsRXZlbnQuc2Nyb2xsaW5nVmVsb2NpdHkoKSk7CisgICAg
cmV0dXJuIGZhbHNlOworfQorI2VuZGlmCisKIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVl
bEV2ZW50SW50ZXJuYWwoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCwgT3B0aW9uU2V0
PFdoZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHM+IHByb2Nlc3NpbmdTdGVwcywgT3B0aW9uU2V0PEV2
ZW50SGFuZGxpbmc+JiBoYW5kbGluZykKIHsKICAgICBhdXRvKiBkb2N1bWVudCA9IG1fZnJhbWUu
ZG9jdW1lbnQoKTsKQEAgLTI4ODksNiArMjk0Myw4IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5k
bGVXaGVlbEV2ZW50SW50ZXJuYWwoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCwgT3B0
CiAgICAgYXV0byBkZWZlcnJlciA9IFdoZWVsRXZlbnRUZXN0TW9uaXRvckNvbXBsZXRpb25EZWZl
cnJlciB7IG1vbml0b3IuZ2V0KCksIHRoaXMsIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6RGVmZXJS
ZWFzb246OkhhbmRsaW5nV2hlZWxFdmVudE9uTWFpblRocmVhZCB9OwogI2VuZGlmCiAKKyAgICBy
ZXNldFNjcm9sbENoYWluaW5nQmxvY2tlcigpOworCiAgICAgbV9pc0hhbmRsaW5nV2hlZWxFdmVu
dCA9IHRydWU7CiAgICAgYXV0byBhbGxvd3NTY3JvbGxpbmdTdGF0ZSA9IFNldEZvclNjb3BlKG1f
Y3VycmVudFdoZWVsRXZlbnRBbGxvd3NTY3JvbGxpbmcsIHByb2Nlc3NpbmdTdGVwcy5jb250YWlu
cyhXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBzOjpNYWluVGhyZWFkRm9yU2Nyb2xsaW5nKSk7CiAg
ICAgCkBAIC0yOTEzLDExICsyOTY5LDE2IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVl
bEV2ZW50SW50ZXJuYWwoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCwgT3B0CiAgICAg
Ly8gaXRzZWxmIGZpbmRzIGFuZCB0cmllcyB0byBzY3JvbGwgb3ZlcmZsb3cgc2Nyb2xsZXJzLgog
ICAgIGRldGVybWluZVdoZWVsRXZlbnRUYXJnZXQoZXZlbnQsIGVsZW1lbnQsIHNjcm9sbGFibGVB
cmVhLCBpc092ZXJXaWRnZXQpOwogCisgICAgYXV0byBvbGRCbG9ja2VyID0gbV9zY3JvbGxDaGFp
bmluZ0Jsb2NrZXI7CiAgICAgaWYgKGVsZW1lbnQpIHsKICAgICAgICAgaWYgKGlzT3ZlcldpZGdl
dCkgewogICAgICAgICAgICAgaWYgKFdlYWtQdHI8V2lkZ2V0PiB3aWRnZXQgPSB3aWRnZXRGb3JF
bGVtZW50KCplbGVtZW50KSkgewogICAgICAgICAgICAgICAgIGlmIChwYXNzV2hlZWxFdmVudFRv
V2lkZ2V0KGV2ZW50LCAqd2lkZ2V0LmdldCgpLCBwcm9jZXNzaW5nU3RlcHMpKQogICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gY29tcGxldGVXaWRnZXRXaGVlbEV2ZW50KGV2ZW50LCB3aWRnZXQs
IHNjcm9sbGFibGVBcmVhKTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChtX3Njcm9sbENoYWlu
aW5nQmxvY2tlci5ibG9ja1ggIT0gb2xkQmxvY2tlci5ibG9ja1ggfHwgbV9zY3JvbGxDaGFpbmlu
Z0Jsb2NrZXIuYmxvY2tZICE9IG9sZEJsb2NrZXIuYmxvY2tZKSB7CisgICAgICAgICAgICAgICAg
ICAgIC8vIElmIG1fc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIGlzIGNoYW5nZWQgaW4gc3ViZnJhbWVz
LCB0aGUgbGFjaGVkIHN0YXRlIHNob3VsZCBiZSBjYWxjdWxhdGVkIGFnYWluLgorICAgICAgICAg
ICAgICAgICAgICBzY3JvbGxDaGFpbmluZ0Jsb2NrZXJDaGFuZ2VkQnlTdWJmcmFtZShldmVudCwg
ZWxlbWVudCwgc2Nyb2xsYWJsZUFyZWEsIGlzT3ZlcldpZGdldCk7CisgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTI5NDksMTIgKzMwMTAsMjkgQEAgYm9v
bCBFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnRJbnRlcm5hbChjb25zdCBQbGF0Zm9ybVdo
ZWVsRXZlbnQmIGV2ZW50LCBPcHQKICNpZiBFTkFCTEUoV0hFRUxfRVZFTlRfTEFUQ0hJTkcpCiAg
ICAgaWYgKGFsbG93U2Nyb2xsaW5nKQogICAgICAgICBhbGxvd1Njcm9sbGluZyA9IG1fZnJhbWUu
cGFnZSgpLT5zY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIoKS5sYXRjaGluZ0FsbG93c1Njcm9sbGlu
Z0luRnJhbWUobV9mcmFtZSwgc2Nyb2xsYWJsZUFyZWEpOworICAgIGlmICghKGFsbG93U2Nyb2xs
aW5nIHx8IG1fZnJhbWUuaXNNYWluRnJhbWUoKSkpCisgICAgICAgIHVwZGF0ZVBhcmVudEZyYW1l
U2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKHNjcm9sbGFibGVBcmVhLmdldCgpLCBtX2ZyYW1lLCBtX3Nj
cm9sbENoYWluaW5nQmxvY2tlcik7CiAjZW5kaWYKIAogICAgIGlmIChhbGxvd1Njcm9sbGluZykg
ewotICAgICAgICAvLyBGSVhNRTogcHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxpbmcoKSBpcyBv
bmx5IGNhbGxlZCBmb3IgRnJhbWVWaWV3IHNjcm9sbGluZywgbm90IG92ZXJmbG93IHNjcm9sbGlu
Zywgd2hpY2ggaXMgY29uZnVzaW5nLgotICAgICAgICBoYW5kbGVkRXZlbnQgPSBwcm9jZXNzV2hl
ZWxFdmVudEZvclNjcm9sbGluZyhldmVudCwgc2Nyb2xsYWJsZUFyZWEsIGhhbmRsaW5nKTsKLSAg
ICAgICAgcHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxTbmFwKGV2ZW50LCBzY3JvbGxhYmxlQXJl
YSk7CisgICAgICAgIFBsYXRmb3JtV2hlZWxFdmVudCBhZGp1c3RlZFdoZWVsRXZlbnQgPSBQbGF0
Zm9ybVdoZWVsRXZlbnQoZXZlbnQpOworICAgICAgICBib29sIHNjcm9sbENoYWluaW5nU3RvcHBl
ZCA9IGZhbHNlOworI2lmIEVOQUJMRShXSEVFTF9FVkVOVF9MQVRDSElORykKKyAgICAgICAgc2Ny
b2xsQ2hhaW5pbmdTdG9wcGVkID0gY2hlY2tTY3JvbGxDaGFpbmluZ0Jsb2NrZXJGb3JGcmFtZVZp
ZXcoc2Nyb2xsYWJsZUFyZWEuZ2V0KCksIG1fZnJhbWUsIGFkanVzdGVkV2hlZWxFdmVudCwgbV9z
Y3JvbGxDaGFpbmluZ0Jsb2NrZXIsIGhhbmRsZWRFdmVudCk7CisjZW5kaWYKKyAgICAgICAgaWYg
KCFzY3JvbGxDaGFpbmluZ1N0b3BwZWQpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBwcm9jZXNz
V2hlZWxFdmVudEZvclNjcm9sbGluZygpIGlzIG9ubHkgY2FsbGVkIGZvciBGcmFtZVZpZXcgc2Ny
b2xsaW5nLCBub3Qgb3ZlcmZsb3cgc2Nyb2xsaW5nLCB3aGljaCBpcyBjb25mdXNpbmcuCisgICAg
ICAgICAgICBoYW5kbGVkRXZlbnQgPSBwcm9jZXNzV2hlZWxFdmVudEZvclNjcm9sbGluZyhhZGp1
c3RlZFdoZWVsRXZlbnQsIHNjcm9sbGFibGVBcmVhLCBoYW5kbGluZyk7CisgICAgICAgICAgICBw
cm9jZXNzV2hlZWxFdmVudEZvclNjcm9sbFNuYXAoYWRqdXN0ZWRXaGVlbEV2ZW50LCBzY3JvbGxh
YmxlQXJlYSk7CisgICAgICAgIH0KKyNpZiAhRU5BQkxFKFdIRUVMX0VWRU5UX0xBVENISU5HKQor
ICAgICAgICBpZiAoYXV0byogdmlldyA9IG1fZnJhbWUudmlldygpKSB7CisgICAgICAgICAgICBp
ZiAoIWhhbmRsZWRFdmVudCkgeworICAgICAgICAgICAgICAgIGF1dG8gYmlhc2VkRGVsdGEgPSBQ
bGF0Zm9ybVdoZWVsRXZlbnQ6OndoZWVsRGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRpY2FsKGFkanVz
dGVkV2hlZWxFdmVudC5kZWx0YSgpKTsKKyAgICAgICAgICAgICAgICBoYW5kbGVkRXZlbnQgPSBT
Y3JvbGxDaGFpbmluZ0Jsb2NrZXI6OnNob3VsZEJsb2NrU2Nyb2xsQ2hhaW5pbmcobV9zY3JvbGxD
aGFpbmluZ0Jsb2NrZXIsIGJpYXNlZERlbHRhKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
I2VuZGlmCiAgICAgfQogCiAgICAgcmV0dXJuIGhhbmRsZWRFdmVudDsKQEAgLTI5NzEsMjAgKzMw
NDksMjMgQEAgc3RhdGljIHZvaWQgaGFuZGxlV2hlZWxFdmVudFBoYXNlSW5TY3JvbGxhYmxlQXJl
YShTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEKICNlbmRpZgogfQogCi1zdGF0aWMgYm9v
bCBkaWRTY3JvbGxJblNjcm9sbGFibGVBcmVhKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJl
YSwgY29uc3QgV2hlZWxFdmVudCYgd2hlZWxFdmVudCkKK3N0YXRpYyBib29sIGRpZFNjcm9sbElu
U2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhLCBjb25zdCBXaGVl
bEV2ZW50JiB3aGVlbEV2ZW50LCBjb25zdCBTY3JvbGxDaGFpbmluZ0Jsb2NrZXImIGJsb2NrZXIp
CiB7CisgICAgRmxvYXRTaXplIGZpbHRlcmVkRGVsdGEod2hlZWxFdmVudC5kZWx0YVgoKSwgd2hl
ZWxFdmVudC5kZWx0YVkoKSk7CisgICAgYXV0byBiaWFzZWREZWx0YSA9IFBsYXRmb3JtV2hlZWxF
dmVudDo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoZmlsdGVyZWREZWx0YSk7Cisg
ICAgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyOjpmaWx0ZXJEZWx0YShibG9ja2VyLCBiaWFzZWREZWx0
YSwgZmlsdGVyZWREZWx0YSk7CiAgICAgU2Nyb2xsR3JhbnVsYXJpdHkgc2Nyb2xsR3JhbnVsYXJp
dHkgPSB3aGVlbEdyYW51bGFyaXR5VG9TY3JvbGxHcmFudWxhcml0eSh3aGVlbEV2ZW50LmRlbHRh
TW9kZSgpKTsKICAgICBib29sIGRpZEhhbmRsZVdoZWVsRXZlbnQgPSBmYWxzZTsKLSAgICBpZiAo
ZmxvYXQgYWJzb2x1dGVEZWx0YSA9IHN0ZDo6YWJzKHdoZWVsRXZlbnQuZGVsdGFYKCkpKQotICAg
ICAgICBkaWRIYW5kbGVXaGVlbEV2ZW50IHw9IHNjcm9sbGFibGVBcmVhLnNjcm9sbCh3aGVlbEV2
ZW50LmRlbHRhWCgpID4gMCA/IFNjcm9sbFJpZ2h0IDogU2Nyb2xsTGVmdCwgc2Nyb2xsR3JhbnVs
YXJpdHksIGFic29sdXRlRGVsdGEpOworICAgIGlmIChmbG9hdCBhYnNvbHV0ZURlbHRhID0gc3Rk
OjphYnMoZmlsdGVyZWREZWx0YS53aWR0aCgpKSkKKyAgICAgICAgZGlkSGFuZGxlV2hlZWxFdmVu
dCB8PSBzY3JvbGxhYmxlQXJlYS5zY3JvbGwoZmlsdGVyZWREZWx0YS53aWR0aCgpID4gMCA/IFNj
cm9sbFJpZ2h0IDogU2Nyb2xsTGVmdCwgc2Nyb2xsR3JhbnVsYXJpdHksIGFic29sdXRlRGVsdGEp
OwogCi0gICAgaWYgKGZsb2F0IGFic29sdXRlRGVsdGEgPSBzdGQ6OmFicyh3aGVlbEV2ZW50LmRl
bHRhWSgpKSkKLSAgICAgICAgZGlkSGFuZGxlV2hlZWxFdmVudCB8PSBzY3JvbGxhYmxlQXJlYS5z
Y3JvbGwod2hlZWxFdmVudC5kZWx0YVkoKSA+IDAgPyBTY3JvbGxEb3duIDogU2Nyb2xsVXAsIHNj
cm9sbEdyYW51bGFyaXR5LCBhYnNvbHV0ZURlbHRhKTsKKyAgICBpZiAoZmxvYXQgYWJzb2x1dGVE
ZWx0YSA9IHN0ZDo6YWJzKGZpbHRlcmVkRGVsdGEuaGVpZ2h0KCkpKQorICAgICAgICBkaWRIYW5k
bGVXaGVlbEV2ZW50IHw9IHNjcm9sbGFibGVBcmVhLnNjcm9sbChmaWx0ZXJlZERlbHRhLmhlaWdo
dCgpID4gMCA/IFNjcm9sbERvd24gOiBTY3JvbGxVcCwgc2Nyb2xsR3JhbnVsYXJpdHksIGFic29s
dXRlRGVsdGEpOwogCiAgICAgcmV0dXJuIGRpZEhhbmRsZVdoZWVsRXZlbnQ7CiB9CiAKLWJvb2wg
RXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2luZ0JveChO
b2RlKiBzdGFydE5vZGUsIGNvbnN0IFdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIGNvbnN0IEZsb2F0
U2l6ZSYgZmlsdGVyZWRQbGF0Zm9ybURlbHRhLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlcmVkVmVs
b2NpdHksIE9wdGlvblNldDxFdmVudEhhbmRsaW5nPiBldmVudEhhbmRsaW5nKQorYm9vbCBFdmVu
dEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94KE5vZGUq
IHN0YXJ0Tm9kZSwgY29uc3QgV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgRmxvYXRTaXplJiBmaWx0
ZXJlZFBsYXRmb3JtRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyZWRWZWxvY2l0eSwgT3B0
aW9uU2V0PEV2ZW50SGFuZGxpbmc+IGV2ZW50SGFuZGxpbmcpCiB7CiAgICAgYm9vbCBzaG91bGRI
YW5kbGVFdmVudCA9IHdoZWVsRXZlbnQuZGVsdGFYKCkgfHwgd2hlZWxFdmVudC5kZWx0YVkoKTsK
ICNpZiBFTkFCTEUoV0hFRUxfRVZFTlRfTEFUQ0hJTkcpCkBAIC0zMDA2LDIxICszMDg3LDI5IEBA
IGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2lu
Z0JveChOb2RlKiBzdGFydE5vZGUsIGNvCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlm
IChpczxSZW5kZXJMaXN0Qm94Pihpbml0aWFsRW5jbG9zaW5nQm94KSkKLSAgICAgICAgcmV0dXJu
IGRpZFNjcm9sbEluU2Nyb2xsYWJsZUFyZWEoZG93bmNhc3Q8UmVuZGVyTGlzdEJveD4oaW5pdGlh
bEVuY2xvc2luZ0JveCksIHdoZWVsRXZlbnQpOworICAgICAgICByZXR1cm4gZGlkU2Nyb2xsSW5T
Y3JvbGxhYmxlQXJlYShkb3duY2FzdDxSZW5kZXJMaXN0Qm94Pihpbml0aWFsRW5jbG9zaW5nQm94
KSwgd2hlZWxFdmVudCwgbV9zY3JvbGxDaGFpbmluZ0Jsb2NrZXIpOwogCisgICAgYXV0byBiaWFz
ZWREZWx0YSA9IFBsYXRmb3JtV2hlZWxFdmVudDo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVy
dGljYWwoRmxvYXRTaXplKHdoZWVsRXZlbnQuZGVsdGFYKCksIHdoZWVsRXZlbnQuZGVsdGFZKCkp
KTsKICAgICBSZW5kZXJCb3gqIGN1cnJlbnRFbmNsb3NpbmdCb3ggPSAmaW5pdGlhbEVuY2xvc2lu
Z0JveDsKICAgICB3aGlsZSAoY3VycmVudEVuY2xvc2luZ0JveCkgewogICAgICAgICBpZiAoYXV0
byogYm94TGF5ZXIgPSBjdXJyZW50RW5jbG9zaW5nQm94LT5sYXllcigpID8gY3VycmVudEVuY2xv
c2luZ0JveC0+bGF5ZXIoKS0+c2Nyb2xsYWJsZUFyZWEoKSA6IG51bGxwdHIpIHsKICAgICAgICAg
ICAgIGF1dG8gcGxhdGZvcm1FdmVudCA9IHdoZWVsRXZlbnQudW5kZXJseWluZ1BsYXRmb3JtRXZl
bnQoKTsKICAgICAgICAgICAgIGJvb2wgc2Nyb2xsaW5nV2FzSGFuZGxlZDsKICAgICAgICAgICAg
IGlmIChwbGF0Zm9ybUV2ZW50KSB7CisgICAgICAgICAgICAgICAgU2Nyb2xsQ2hhaW5pbmdCbG9j
a2VyOjpmaWx0ZXJEZWx0YShtX3Njcm9sbENoYWluaW5nQmxvY2tlciwgYmlhc2VkRGVsdGEsIGZp
bHRlcmVkUGxhdGZvcm1EZWx0YSk7CiAgICAgICAgICAgICAgICAgYXV0byBjb3BpZWRFdmVudCA9
IHBsYXRmb3JtRXZlbnQtPmNvcHlXaXRoRGVsdGFzQW5kVmVsb2NpdHkoZmlsdGVyZWRQbGF0Zm9y
bURlbHRhLndpZHRoKCksIGZpbHRlcmVkUGxhdGZvcm1EZWx0YS5oZWlnaHQoKSwgZmlsdGVyZWRW
ZWxvY2l0eSk7CiAgICAgICAgICAgICAgICAgc2Nyb2xsaW5nV2FzSGFuZGxlZCA9IGhhbmRsZVdo
ZWVsRXZlbnRJblNjcm9sbGFibGVBcmVhKGNvcGllZEV2ZW50LCAqYm94TGF5ZXIsIGV2ZW50SGFu
ZGxpbmcpOwogICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgc2Nyb2xsaW5nV2Fz
SGFuZGxlZCA9IGRpZFNjcm9sbEluU2Nyb2xsYWJsZUFyZWEoKmJveExheWVyLCB3aGVlbEV2ZW50
KTsKKyAgICAgICAgICAgICAgICBzY3JvbGxpbmdXYXNIYW5kbGVkID0gZGlkU2Nyb2xsSW5TY3Jv
bGxhYmxlQXJlYSgqYm94TGF5ZXIsIHdoZWVsRXZlbnQsIG1fc2Nyb2xsQ2hhaW5pbmdCbG9ja2Vy
KTsKIAogICAgICAgICAgICAgaWYgKHNjcm9sbGluZ1dhc0hhbmRsZWQpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgICAgIGlmIChjdXJyZW50RW5jbG9zaW5nQm94LT5l
bGVtZW50KCkgIT0gY3VycmVudEVuY2xvc2luZ0JveC0+ZG9jdW1lbnQoKS5kb2N1bWVudEVsZW1l
bnQoKSkgeworICAgICAgICAgICAgICAgIGJveExheWVyLT51cGRhdGVTY3JvbGxDaGFpbmluZ0Js
b2NrZXJTdGF0ZShtX3Njcm9sbENoYWluaW5nQmxvY2tlcik7CisgICAgICAgICAgICAgICAgaWYg
KFNjcm9sbENoYWluaW5nQmxvY2tlcjo6c2hvdWxkQmxvY2tTY3JvbGxDaGFpbmluZyhtX3Njcm9s
bENoYWluaW5nQmxvY2tlciwgYmlhc2VkRGVsdGEpKQorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIGN1cnJlbnRFbmNs
b3NpbmdCb3ggPSBjdXJyZW50RW5jbG9zaW5nQm94LT5jb250YWluaW5nQmxvY2soKTsKQEAgLTQ2
MzQsNCArNDcyMywxNSBAQCBib29sIEV2ZW50SGFuZGxlcjo6cGFzc01vdXNlTW92ZUV2ZW50VG9T
dWJmcmFtZShNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBtbwogfQogI2VuZGlmIC8vICFQ
TEFURk9STShDT0NPQSkgJiYgIVBMQVRGT1JNKFdJTikKIAordm9pZCBFdmVudEhhbmRsZXI6OnVw
ZGF0ZVNjcm9sbENoYWluaW5nQmxvY2tlcihjb25zdCBTY3JvbGxDaGFpbmluZ0Jsb2NrZXImIGJs
b2NrZXIpCit7CisgICAgbV9zY3JvbGxDaGFpbmluZ0Jsb2NrZXIuYmxvY2tYIHw9IGJsb2NrZXIu
YmxvY2tYOworICAgIG1fc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLmJsb2NrWSB8PSBibG9ja2VyLmJs
b2NrWTsKK30KKwordm9pZCBFdmVudEhhbmRsZXI6OnJlc2V0U2Nyb2xsQ2hhaW5pbmdCbG9ja2Vy
KCkKK3sKKyAgICBtX3Njcm9sbENoYWluaW5nQmxvY2tlciA9IHsgZmFsc2UsIGZhbHNlIH07Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCmlu
ZGV4IDVkMDQyMDM4YmYzNGJmODlmZmUzZGI5OTQ3NjM3Mzc4ODk0NTI4NzkuLmYxZWRlMTY4MzE0
ODgxNjdlMzdkNWYyZWMxZmY3MWQ1MWYxZWFmODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRXZlbnRIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRs
ZXIuaApAQCAtMjE0LDYgKzIxNCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZWZhdWx0V2hlZWxF
dmVudEhhbmRsZXIoTm9kZSosIFdoZWVsRXZlbnQmKTsKICAgICB2b2lkIHdoZWVsRXZlbnRXYXNQ
cm9jZXNzZWRCeU1haW5UaHJlYWQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgT3B0aW9uU2V0
PEV2ZW50SGFuZGxpbmc+KTsKIAorICAgIHZvaWQgdXBkYXRlU2Nyb2xsQ2hhaW5pbmdCbG9ja2Vy
KGNvbnN0IFNjcm9sbENoYWluaW5nQmxvY2tlciYpOworICAgIHZvaWQgcmVzZXRTY3JvbGxDaGFp
bmluZ0Jsb2NrZXIoKTsKKyAgICB2b2lkIHNjcm9sbENoYWluaW5nQmxvY2tlckNoYW5nZWRCeVN1
YmZyYW1lKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIFJlZlB0cjxFbGVtZW50PiYgZXZlbnRU
YXJnZXQsIFdlYWtQdHI8U2Nyb2xsYWJsZUFyZWE+JiwgYm9vbCYgaXNPdmVyV2lkZ2V0KTsKKwog
ICAgIGJvb2wgaGFuZGxlUGFzdGVHbG9iYWxTZWxlY3Rpb24oY29uc3QgUGxhdGZvcm1Nb3VzZUV2
ZW50Jik7CiAKICNpZiBFTkFCTEUoSU9TX1RPVUNIX0VWRU5UUykgfHwgRU5BQkxFKElPU19HRVNU
VVJFX0VWRU5UUykKQEAgLTQ3MCw3ICs0NzQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcHJvY2Vz
c1doZWVsRXZlbnRGb3JTY3JvbGxTbmFwKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIGNvbnN0
IFdlYWtQdHI8U2Nyb2xsYWJsZUFyZWE+Jik7CiAgICAgYm9vbCBjb21wbGV0ZVdpZGdldFdoZWVs
RXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgY29uc3QgV2Vha1B0cjxXaWRnZXQ+Jiwg
Y29uc3QgV2Vha1B0cjxTY3JvbGxhYmxlQXJlYT4mKTsKIAotICAgIGJvb2wgaGFuZGxlV2hlZWxF
dmVudEluQXBwcm9wcmlhdGVFbmNsb3NpbmdCb3goTm9kZSogc3RhcnROb2RlLCBjb25zdCBXaGVl
bEV2ZW50JiwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJlZFBsYXRmb3JtRGVsdGEsIGNvbnN0IEZs
b2F0U2l6ZSYgZmlsdGVyZWRWZWxvY2l0eSwgT3B0aW9uU2V0PEV2ZW50SGFuZGxpbmc+KTsKKyAg
ICBib29sIGhhbmRsZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94KE5vZGUqIHN0
YXJ0Tm9kZSwgY29uc3QgV2hlZWxFdmVudCYsIEZsb2F0U2l6ZSYgZmlsdGVyZWRQbGF0Zm9ybURl
bHRhLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlcmVkVmVsb2NpdHksIE9wdGlvblNldDxFdmVudEhh
bmRsaW5nPik7CiAKICAgICBib29sIGhhbmRsZVdoZWVsRXZlbnRJblNjcm9sbGFibGVBcmVhKGNv
bnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIFNjcm9sbGFibGVBcmVhJiwgT3B0aW9uU2V0PEV2ZW50
SGFuZGxpbmc+KTsKICAgICBPcHRpb25hbDxXaGVlbFNjcm9sbEdlc3R1cmVTdGF0ZT4gdXBkYXRl
V2hlZWxHZXN0dXJlU3RhdGUoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgT3B0aW9uU2V0PEV2
ZW50SGFuZGxpbmc+KTsKQEAgLTY0Niw2ICs2NTAsOCBAQCBwcml2YXRlOgogICAgIEludFBvaW50
IG1fdGFyZ2V0QXV0b3Njcm9sbFBvc2l0aW9uSW5VbnNjcm9sbGVkUm9vdFZpZXdDb29yZGluYXRl
czsKICAgICBPcHRpb25hbDxJbnRQb2ludD4gbV9pbml0aWFsVGFyZ2V0QXV0b3Njcm9sbFBvc2l0
aW9uSW5VbnNjcm9sbGVkUm9vdFZpZXdDb29yZGluYXRlczsKICNlbmRpZgorCisgICAgU2Nyb2xs
Q2hhaW5pbmdCbG9ja2VyIG1fc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIHsgZmFsc2UsIGZhbHNlIH07
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAK
aW5kZXggNjgzZTM2ZWY1NWYyYTkzNWQ5MGFiNTUwZGM1OTYxYTIwZjkwOGMzOS4uYTY4OWRiM2Rh
MDhjZGVlZjBkYWY0NGM2ZmRhZDAyOWJlMzg5OGU2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
LmNwcApAQCAtNDE5LDYgKzQxOSwyNiBAQCBib29sIEZyYW1lVmlldzo6ZGlkRmlyc3RMYXlvdXQo
KSBjb25zdAogICAgIHJldHVybiBsYXlvdXRDb250ZXh0KCkuZGlkRmlyc3RMYXlvdXQoKTsKIH0K
IAorT3ZlcnNjcm9sbEJlaGF2aW9yIEZyYW1lVmlldzo6aG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhh
dmlvcigpIGNvbnN0Cit7CisgICAgYXV0byogZG9jdW1lbnQgPSBmcmFtZSgpLmRvY3VtZW50KCk7
CisgICAgYXV0byBzY3JvbGxpbmdPYmplY3QgPSBkb2N1bWVudCAmJiBkb2N1bWVudC0+ZG9jdW1l
bnRFbGVtZW50KCkgPyBkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCktPnJlbmRlcmVyKCkgOiBu
dWxscHRyOworICAgIC8vIEFuIGVsZW1lbnQgdGhhdCBpcyBub3Qgc2Nyb2xsIGNvbnRhaW5lciBt
dXN0IGFjY2VwdCBidXQgaWdub3JlIHRoZSB2YWx1ZXMgb2YgdGhpcyBwcm9wZXJ0eS4KKyAgICBp
ZiAoc2Nyb2xsaW5nT2JqZWN0ICYmIHJlbmRlclZpZXcoKSAmJiByZW5kZXJWaWV3KCktPmNhbkJl
U2Nyb2xsZWRBbmRIYXNTY3JvbGxhYmxlQXJlYSgpKQorICAgICAgICByZXR1cm4gc2Nyb2xsaW5n
T2JqZWN0LT5zdHlsZSgpLm92ZXJzY3JvbGxCZWhhdmlvclgoKTsKKyAgICByZXR1cm4gU2Nyb2xs
YWJsZUFyZWE6Omhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKTsKK30KKworT3ZlcnNjcm9s
bEJlaGF2aW9yIEZyYW1lVmlldzo6dmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSAgY29uc3QK
K3sKKyAgICBhdXRvKiBkb2N1bWVudCA9IGZyYW1lKCkuZG9jdW1lbnQoKTsKKyAgICBhdXRvIHNj
cm9sbGluZ09iamVjdCA9IGRvY3VtZW50ICYmIGRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKSA/
IGRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKS0+cmVuZGVyZXIoKSA6IG51bGxwdHI7CisgICAg
Ly8gQW4gZWxlbWVudCB0aGF0IGlzIG5vdCBzY3JvbGwgY29udGFpbmVyIG11c3QgYWNjZXB0IGJ1
dCBpZ25vcmUgdGhlIHZhbHVlcyBvZiB0aGlzIHByb3BlcnR5LgorICAgIGlmIChzY3JvbGxpbmdP
YmplY3QgJiYgcmVuZGVyVmlldygpICYmIHJlbmRlclZpZXcoKS0+Y2FuQmVTY3JvbGxlZEFuZEhh
c1Njcm9sbGFibGVBcmVhKCkpCisgICAgICAgIHJldHVybiBzY3JvbGxpbmdPYmplY3QtPnN0eWxl
KCkub3ZlcnNjcm9sbEJlaGF2aW9yWSgpOworICAgIHJldHVybiBTY3JvbGxhYmxlQXJlYTo6dmVy
dGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKTsKK30KKwogdm9pZCBGcmFtZVZpZXc6OmludmFsaWRh
dGVSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgaWYgKCFwYXJlbnQoKSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVWaWV3LmgKaW5kZXggY2U3ZTlhMTY3Y2EwNzRmOGMyMWMxZmQ2ZWE3NWY5MTVh
ZmFhNDVhNi4uYjEzYzdiMmJkZDBlNjJiOWJmMzg2MzhhZmYwNWRjNTJlZjdiZGY1YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5oCkBAIC02ODEsNiArNjgxLDkgQEAgcHVibGljOgogCiAgICAgU3Ry
aW5nIGRlYnVnRGVzY3JpcHRpb24oKSBjb25zdCBmaW5hbDsKIAorICAgIE92ZXJzY3JvbGxCZWhh
dmlvciBob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29uc3QgZmluYWw7CisgICAgT3Zl
cnNjcm9sbEJlaGF2aW9yIHZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29uc3QgZmluYWw7
CisKICAgICAvLyBTY3JvbGxWaWV3CiAgICAgdm9pZCB1cGRhdGVTY3JvbGxiYXJTdGVwcygpIG92
ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRs
ZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0KaW5k
ZXggODY0NjVmODA1ZTIwNTM1Njg3MDY0YzJmZjc2MDRkNWI4OWE0MjQ3ZC4uZTg4MTI1NzAwOTkz
NGI5MjkzMjI2NWZiYWE4YjBmOWQwYjA0YTY3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFj
L0V2ZW50SGFuZGxlck1hYy5tbQpAQCAtNzk3LDEzICs3OTcsMTggQEAgc3RhdGljIFNjcm9sbGFi
bGVBcmVhKiBzY3JvbGxhYmxlQXJlYUZvckJveChSZW5kZXJCb3gmIGJveCkKIH0KIAogLy8gRklY
TUU6IFRoaXMgY291bGQgYmUgd3JpdHRlbiBpbiB0ZXJtcyBvZiBTY3JvbGxhYmxlQXJlYTo6ZW5j
bG9zaW5nU2Nyb2xsYWJsZUFyZWEoKS4KLXN0YXRpYyBDb250YWluZXJOb2RlKiBmaW5kRW5jbG9z
aW5nU2Nyb2xsYWJsZUNvbnRhaW5lcihDb250YWluZXJOb2RlKiBub2RlLCBjb25zdCBQbGF0Zm9y
bVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpCisvLyBEbyBub3QgdXBkYXRlIG1fc2Nyb2xsQ2hhaW5p
bmdCbG9ja2VyIGhlcmUsIHVwZGF0ZSBpdCBpbiBFdmVudEhhbmRsZXI6OmRlZmF1bHRXaGVlbEV2
ZW50SGFuZGxlciBsYXRlciB3aGVuIHBhc3MgRXZlbnRQYXRoLAorLy8gb3RoZXJ3aXNlIHRoZSBX
aGVlbEV2ZW50IGRlbHRhIG9mIGVsZW1lbnQgd2l0aCAhb3ZlcnNjcm9sbC1iZWhhdmlvcjphdXRv
IHdpbGwgYmUgY2hhbmdlZC4KK3N0YXRpYyBDb250YWluZXJOb2RlKiBmaW5kRW5jbG9zaW5nU2Ny
b2xsYWJsZUNvbnRhaW5lcihDb250YWluZXJOb2RlKiBub2RlLCBjb25zdCBQbGF0Zm9ybVdoZWVs
RXZlbnQmIHdoZWVsRXZlbnQsIFNjcm9sbENoYWluaW5nQmxvY2tlciYgc2Nyb2xsQ2hhaW5pbmdC
bG9ja2VyKQogewotICAgIGF1dG8gYmlhc2VkRGVsdGEgPSBTY3JvbGxDb250cm9sbGVyOjp3aGVl
bERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbCh3aGVlbEV2ZW50KTsKKyAgICBhdXRvIGJpYXNl
ZERlbHRhID0gUGxhdGZvcm1XaGVlbEV2ZW50Ojp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0
aWNhbCh3aGVlbEV2ZW50LmRlbHRhKCkpOwogCiAgICAgLy8gRmluZCB0aGUgZmlyc3Qgbm9kZSB3
aXRoIGEgdmFsaWQgc2Nyb2xsYWJsZSBhcmVhIHN0YXJ0aW5nIHdpdGggdGhlIGN1cnJlbnQKICAg
ICAvLyBub2RlIGFuZCB0cmF2ZXJzaW5nIGl0cyBwYXJlbnRzIChvciBzaGFkb3cgaG9zdHMpLgog
ICAgIGZvciAoQ29udGFpbmVyTm9kZSogY2FuZGlkYXRlID0gbm9kZTsgY2FuZGlkYXRlOyBjYW5k
aWRhdGUgPSBjYW5kaWRhdGUtPnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKSkgeworICAgICAgICBp
ZiAoU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyOjpzaG91bGRCbG9ja1Njcm9sbENoYWluaW5nKHNjcm9s
bENoYWluaW5nQmxvY2tlciwgYmlhc2VkRGVsdGEpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisKICAgICAgICAgaWYgKGlzPEhUTUxJRnJhbWVFbGVtZW50PigqY2FuZGlkYXRlKSkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogCkBAIC04MTMsNyArODE4LDcgQEAgc3RhdGljIENvbnRhaW5l
ck5vZGUqIGZpbmRFbmNsb3NpbmdTY3JvbGxhYmxlQ29udGFpbmVyKENvbnRhaW5lck5vZGUqIG5v
ZGUsIGNvbnMKICAgICAgICAgUmVuZGVyQm94KiBib3ggPSBjYW5kaWRhdGUtPnJlbmRlckJveCgp
OwogICAgICAgICBpZiAoIWJveCB8fCAhYm94LT5jYW5CZVNjcm9sbGVkQW5kSGFzU2Nyb2xsYWJs
ZUFyZWEoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAKKwogICAgICAgICBhdXRv
KiBzY3JvbGxhYmxlQXJlYSA9IHNjcm9sbGFibGVBcmVhRm9yQm94KCpib3gpOwogICAgICAgICBp
ZiAoIXNjcm9sbGFibGVBcmVhKQogICAgICAgICAgICAgY29udGludWU7CkBAIC04MjYsOCArODMx
LDExIEBAIHN0YXRpYyBDb250YWluZXJOb2RlKiBmaW5kRW5jbG9zaW5nU2Nyb2xsYWJsZUNvbnRh
aW5lcihDb250YWluZXJOb2RlKiBub2RlLCBjb25zCiAKICAgICAgICAgaWYgKGJpYXNlZERlbHRh
LndpZHRoKCkgJiYgIXNjcm9sbGFibGVBcmVhLT5pc1Bpbm5lZEZvclNjcm9sbERlbHRhT25BeGlz
KC1iaWFzZWREZWx0YS53aWR0aCgpLCBTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwpKQogICAg
ICAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZTsKKworICAgICAgICBpZiAoY2FuZGlkYXRlICE9IGNh
bmRpZGF0ZS0+ZG9jdW1lbnQoKS5kb2N1bWVudEVsZW1lbnQoKSkKKyAgICAgICAgICAgIHNjcm9s
bGFibGVBcmVhLT51cGRhdGVTY3JvbGxDaGFpbmluZ0Jsb2NrZXJTdGF0ZShzY3JvbGxDaGFpbmlu
Z0Jsb2NrZXIpOwogICAgIH0KLSAgICAKKwogICAgIHJldHVybiBudWxscHRyOwogfQogCkBAIC04
NzIsMTAgKzg4MCwxMSBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6ZGV0ZXJtaW5lV2hlZWxFdmVudFRh
cmdldChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbgogICAgIGlmICghdmlldykK
ICAgICAgICAgcmV0dXJuOwogCisgICAgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIGJsb2NrZXIgPSBt
X3Njcm9sbENoYWluaW5nQmxvY2tlcjsKICAgICBpZiAoZXZlbnRUYXJnZXRJc1BsYXRmb3JtV2lk
Z2V0KHdoZWVsRXZlbnRUYXJnZXQuZ2V0KCkpKQogICAgICAgICBzY3JvbGxhYmxlQXJlYSA9IHNj
cm9sbGFibGVBcmVhRm9yRXZlbnRUYXJnZXQod2hlZWxFdmVudFRhcmdldC5nZXQoKSk7CiAgICAg
ZWxzZSB7Ci0gICAgICAgIGF1dG8qIHNjcm9sbGFibGVDb250YWluZXIgPSBmaW5kRW5jbG9zaW5n
U2Nyb2xsYWJsZUNvbnRhaW5lcih3aGVlbEV2ZW50VGFyZ2V0LmdldCgpLCB3aGVlbEV2ZW50KTsK
KyAgICAgICAgYXV0byogc2Nyb2xsYWJsZUNvbnRhaW5lciA9IGZpbmRFbmNsb3NpbmdTY3JvbGxh
YmxlQ29udGFpbmVyKHdoZWVsRXZlbnRUYXJnZXQuZ2V0KCksIHdoZWVsRXZlbnQsIGJsb2NrZXIp
OwogICAgICAgICBpZiAoc2Nyb2xsYWJsZUNvbnRhaW5lcikKICAgICAgICAgICAgIHNjcm9sbGFi
bGVBcmVhID0gc2Nyb2xsYWJsZUFyZWFGb3JDb250YWluZXJOb2RlKCpzY3JvbGxhYmxlQ29udGFp
bmVyKTsKICAgICAgICAgZWxzZQpAQCAtODkzLDkgKzkwMiwyMiBAQCB2b2lkIEV2ZW50SGFuZGxl
cjo6ZGV0ZXJtaW5lV2hlZWxFdmVudFRhcmdldChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdo
ZWVsRXZlbgogICAgIGlmIChtX2ZyYW1lLmlzTWFpbkZyYW1lKCkgJiYgd2hlZWxFdmVudC5pc0dl
c3R1cmVTdGFydCgpKQogICAgICAgICBwYWdlLT53aGVlbEV2ZW50RGVsdGFGaWx0ZXIoKS0+YmVn
aW5GaWx0ZXJpbmdEZWx0YXMoKTsKIAorICAgIC8vIFdoZW4gdGhlIGxhY2hlZCBub2RlIGlzIGRl
dGVybWluZWQsIHdlIHNob3VsZCB1cGRhdGUgbV9zY3JvbGxDaGFpbmluZ0Jsb2NrZXIgaGVyZSwg
Zm9yIGl0IHdvbid0IHBhc3MgdGhlIHRyZWUgaW4gRXZlbnRIYW5kbGVyOjpkZWZhdWx0V2hlZWxF
dmVudEhhbmRsZXIuCisgICAgLy8gT3RoZXJ3aXNlLCBtX3Njcm9sbENoYWluaW5nQmxvY2tlciBz
aG91bGQgYmUgdXBkYXRlIGluIEV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudEluQXBwcm9w
cmlhdGVFbmNsb3NpbmdCb3guCisgICAgdXBkYXRlU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKGJsb2Nr
ZXIpOwogICAgIHBhZ2UtPnNjcm9sbExhdGNoaW5nQ29udHJvbGxlcigpLnVwZGF0ZUFuZEZldGNo
TGF0Y2hpbmdTdGF0ZUZvckZyYW1lKG1fZnJhbWUsIHdoZWVsRXZlbnQsIHdoZWVsRXZlbnRUYXJn
ZXQsIHNjcm9sbGFibGVBcmVhLCBpc092ZXJXaWRnZXQpOwogfQogCisvLyBUaGlzIGZ1bmN0aW9u
IGhhbmRsZXMgdGhlIHNjZW5hcmlvIHRoYXQgbV9zY3JvbGxDaGFpbmluZ0Jsb2NrZXIgaXMgY2hh
bmdlZCBieSBzdWJmcmFtZS4KKy8vIFRoZSBzdGF0ZSBvZiBzY3JvbGxMYXRjaGluZ0NvbnRyb2xs
ZXIgaXMgb3V0IG9mIGRhdGUsIG5lZWQgdG8gdXBkYXRlIGl0Lgordm9pZCBFdmVudEhhbmRsZXI6
OnNjcm9sbENoYWluaW5nQmxvY2tlckNoYW5nZWRCeVN1YmZyYW1lKGNvbnN0IFBsYXRmb3JtV2hl
ZWxFdmVudCYgZXZlbnQsIFJlZlB0cjxFbGVtZW50PiYgZWxlbWVudCwgV2Vha1B0cjxTY3JvbGxh
YmxlQXJlYT4mIHNjcm9sbGFibGVBcmVhLCBib29sJiBpc092ZXJXaWRnZXQpCit7CisgICAgaWYg
KCFldmVudC5pc0dlc3R1cmVTdGFydCgpKQorICAgICAgICByZXR1cm47CisgICAgY2xlYXJMYXRj
aGVkU3RhdGUoKTsKKyAgICBkZXRlcm1pbmVXaGVlbEV2ZW50VGFyZ2V0KGV2ZW50LCBlbGVtZW50
LCBzY3JvbGxhYmxlQXJlYSwgaXNPdmVyV2lkZ2V0KTsKK30KKwogdm9pZCBFdmVudEhhbmRsZXI6
OnJlY29yZFdoZWVsRXZlbnRGb3JEZWx0YUZpbHRlcihjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQm
IHdoZWVsRXZlbnQpCiB7CiAgICAgYXV0byogcGFnZSA9IG1fZnJhbWUucGFnZSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaAppbmRleCBkNzE2OTM0NmEy
NDAyM2MyYTQ3ODdhZTM0NTQwYTM3NjA3YzBhMmQ1Li42NDE3OTdhNmY0MTg3NTMzOGNhNzFlYTcz
OTE2MGQxMGIwNmY4OGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0
Zm9ybVdoZWVsRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdo
ZWVsRXZlbnQuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJG
bG9hdFBvaW50LmgiCisjaW5jbHVkZSAiRmxvYXRTaXplLmgiCiAjaW5jbHVkZSAiSW50UG9pbnQu
aCIKICNpbmNsdWRlICJQbGF0Zm9ybUV2ZW50LmgiCiAjaW5jbHVkZSA8d3RmL1dpbmRvd3NFeHRy
YXMuaD4KQEAgLTE3NCw2ICsxNzUsOCBAQCBwdWJsaWM6CiAgICAgUGxhdGZvcm1XaGVlbEV2ZW50
KEhXTkQsIFdQQVJBTSwgTFBBUkFNLCBib29sIGlzTW91c2VIV2hlZWwpOwogI2VuZGlmCiAKKyAg
ICBzdGF0aWMgRmxvYXRTaXplIHdoZWVsRGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRpY2FsKGNvbnN0
IEZsb2F0U2l6ZSYpOworCiBwcm90ZWN0ZWQ6CiAgICAgUGxhdGZvcm1XaGVlbEV2ZW50R3JhbnVs
YXJpdHkgbV9ncmFudWxhcml0eSB7IFNjcm9sbEJ5UGl4ZWxXaGVlbEV2ZW50IH07CiAgICAgYm9v
bCBtX2RpcmVjdGlvbkludmVydGVkRnJvbURldmljZSB7IGZhbHNlIH07CkBAIC0yNjQsNiArMjY3
LDE5IEBAIGlubGluZSBGbG9hdFBvaW50IFBsYXRmb3JtV2hlZWxFdmVudDo6c3dpcGVWZWxvY2l0
eSgpIGNvbnN0CiAKICNlbmRpZiAvLyBFTkFCTEUoS0lORVRJQ19TQ1JPTExJTkcpCiAKK2lubGlu
ZSBGbG9hdFNpemUgUGxhdGZvcm1XaGVlbEV2ZW50Ojp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNW
ZXJ0aWNhbChjb25zdCBGbG9hdFNpemUmIGRlbHRhKQoreworICAgIGF1dG8gZGVsdGFYID0gZGVs
dGEud2lkdGgoKTsKKyAgICBhdXRvIGRlbHRhWSA9IGRlbHRhLmhlaWdodCgpOworCisgICAgaWYg
KGZhYnNmKGRlbHRhWSkgPj0gZmFic2YoZGVsdGFYKSkKKyAgICAgICAgZGVsdGFYID0gMDsKKyAg
ICBlbHNlCisgICAgICAgIGRlbHRhWSA9IDA7CisKKyAgICByZXR1cm4geyBkZWx0YVgsIGRlbHRh
WSB9OworfQorCiBXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RG
OjpUZXh0U3RyZWFtJiwgY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jik7CiBXRUJDT1JFX0VYUE9S
VCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgV2hlZWxFdmVu
dFByb2Nlc3NpbmdTdGVwcyk7CiBXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgRXZlbnRIYW5kbGluZyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsVHlwZXMuaAppbmRleCAwYjFjNDA1NjNlOGNiYjgyMmE5ZmViYTRjMGM0NjVmOGE1
NzRhOTNiLi5mOGY3MWMyZTFmZjdiOWU0ZDJlNzU2OWU3YjE5MjFiODIyMWY4NGUyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxUeXBlcy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFR5cGVzLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEg
b25jZQogCiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgorI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgog
I2luY2x1ZGUgIkludFBvaW50LmgiCiAjaW5jbHVkZSA8Y3N0ZGludD4KICNpbmNsdWRlIDx3dGYv
QXNzZXJ0aW9ucy5oPgpAQCAtMjU5LDYgKzI2MCwzNCBAQCBlbnVtIGNsYXNzIFNjcm9sbFNuYXBQ
b2ludFNlbGVjdGlvbk1ldGhvZCA6IHVpbnQ4X3QgewogICAgIENsb3Nlc3QsCiB9OwogCitzdHJ1
Y3QgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIHsKKyAgICBib29sIGJsb2NrWCB7IGZhbHNlIH07Cisg
ICAgYm9vbCBibG9ja1kgeyBmYWxzZSB9OworCisgICAgc3RhdGljIGJvb2wgc2hvdWxkQmxvY2tT
Y3JvbGxDaGFpbmluZyhjb25zdCBTY3JvbGxDaGFpbmluZ0Jsb2NrZXImIGJsb2NrZXIsIGNvbnN0
IEZsb2F0U2l6ZSYgYmlhc2VkRGVsdGEpCisgICAgeworICAgICAgICBpZiAoKGJsb2NrZXIuYmxv
Y2tYICYmIGJsb2NrZXIuYmxvY2tZKQorICAgICAgICAgICAgfHwgKGJsb2NrZXIuYmxvY2tYICYm
ICFiaWFzZWREZWx0YS5oZWlnaHQoKSkKKyAgICAgICAgICAgIHx8IChibG9ja2VyLmJsb2NrWSAm
JiAhYmlhc2VkRGVsdGEud2lkdGgoKSkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIGZpbHRlckRlbHRhKGNv
bnN0IFNjcm9sbENoYWluaW5nQmxvY2tlciYgYmxvY2tlciwgY29uc3QgRmxvYXRTaXplJiBiaWFz
ZWREZWx0YSwgRmxvYXRTaXplJiBmaWx0ZXJlZERlbHRhKQorICAgIHsKKyAgICAgICAgaWYgKGJs
b2NrZXIuYmxvY2tYKSB7CisgICAgICAgICAgICBmaWx0ZXJlZERlbHRhLnNldFdpZHRoKDApOwor
ICAgICAgICAgICAgaWYgKCFiaWFzZWREZWx0YS5oZWlnaHQoKSkKKyAgICAgICAgICAgICAgICBm
aWx0ZXJlZERlbHRhLnNldEhlaWdodCgwKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoYmxvY2tl
ci5ibG9ja1kpIHsKKyAgICAgICAgICAgIGZpbHRlcmVkRGVsdGEuc2V0SGVpZ2h0KDApOworICAg
ICAgICAgICAgaWYgKCFiaWFzZWREZWx0YS53aWR0aCgpKQorICAgICAgICAgICAgICAgIGZpbHRl
cmVkRGVsdGEuc2V0V2lkdGgoMCk7CisgICAgICAgIH0KKyAgICB9Cit9OworCiB1c2luZyBTY3Jv
bGxiYXJDb250cm9sU3RhdGUgPSB1bnNpZ25lZDsKIHVzaW5nIFNjcm9sbGJhckNvbnRyb2xQYXJ0
TWFzayA9IHVuc2lnbmVkOwogdXNpbmcgU2Nyb2xsaW5nTm9kZUlEID0gdWludDY0X3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKaW5kZXggNzlmOWU5ODA5OGE4
ZGRjYTJiNDljZTk3N2QyMTQzZTFjYjZjYWY4NS4uYzA0M2MwYWMzZTkxODViMjljY2RkMDY2ODVj
OThmNjlkM2IyMWNmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
YWJsZUFyZWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVh
LmNwcApAQCAtODAzLDYgKzgwMywxMiBAQCB2b2lkIFNjcm9sbGFibGVBcmVhOjpjb21wdXRlU2Ny
b2xsYmFyVmFsdWVBbmRPdmVyaGFuZyhmbG9hdCBjdXJyZW50UG9zaXRpb24sIGZsbwogICAgIH0K
IH0KIAordm9pZCBTY3JvbGxhYmxlQXJlYTo6dXBkYXRlU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyU3Rh
dGUoU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyJiBibG9ja2VyKSBjb25zdAoreworICAgIGJsb2NrZXIu
YmxvY2tYIHw9IGhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSAhPSBPdmVyc2Nyb2xsQmVo
YXZpb3I6OkF1dG87CisgICAgYmxvY2tlci5ibG9ja1kgfD0gdmVydGljYWxPdmVyc2Nyb2xsQmVo
YXZpb3IoKSAhPSBPdmVyc2Nyb2xsQmVoYXZpb3I6OkF1dG87Cit9CisKIFRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxl
QXJlYSkKIHsKICAgICB0cyA8PCBzY3JvbGxhYmxlQXJlYS5kZWJ1Z0Rlc2NyaXB0aW9uKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaAppbmRleCA3ZWI3YjU0MDI4Mjg0
MGFiN2I1ZjMxZmRmYTZiMmJmZDU4ZWIxOWRjLi45ODc3Y2Q1MTJjNWVlODkzMDZjNTM3ZTRlZWVl
NzIyOGNjZWEyZjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxh
YmxlQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgK
QEAgLTExOSw2ICsxMTksMTAgQEAgcHVibGljOgogICAgIGJvb2wgY29uc3RyYWluc1Njcm9sbGlu
Z1RvQ29udGVudEVkZ2UoKSBjb25zdCB7IHJldHVybiBtX2NvbnN0cmFpbnNTY3JvbGxpbmdUb0Nv
bnRlbnRFZGdlOyB9CiAgICAgdm9pZCBzZXRDb25zdHJhaW5zU2Nyb2xsaW5nVG9Db250ZW50RWRn
ZShib29sIGNvbnN0cmFpbnNTY3JvbGxpbmdUb0NvbnRlbnRFZGdlKSB7IG1fY29uc3RyYWluc1Nj
cm9sbGluZ1RvQ29udGVudEVkZ2UgPSBjb25zdHJhaW5zU2Nyb2xsaW5nVG9Db250ZW50RWRnZTsg
fQogCisgICAgdmlydHVhbCBPdmVyc2Nyb2xsQmVoYXZpb3IgaG9yaXpvbnRhbE92ZXJzY3JvbGxC
ZWhhdmlvcigpIGNvbnN0IHsgcmV0dXJuIE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0bzsgfQorICAg
IHZpcnR1YWwgT3ZlcnNjcm9sbEJlaGF2aW9yIHZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkg
Y29uc3QgeyByZXR1cm4gT3ZlcnNjcm9sbEJlaGF2aW9yOjpBdXRvOyB9CisgICAgdm9pZCB1cGRh
dGVTY3JvbGxDaGFpbmluZ0Jsb2NrZXJTdGF0ZShTY3JvbGxDaGFpbmluZ0Jsb2NrZXImKSBjb25z
dDsKKwogICAgIHZvaWQgc2V0VmVydGljYWxTY3JvbGxFbGFzdGljaXR5KFNjcm9sbEVsYXN0aWNp
dHkgc2Nyb2xsRWxhc3RpY2l0eSkgeyBtX3ZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eSA9IHNjcm9s
bEVsYXN0aWNpdHk7IH0KICAgICBTY3JvbGxFbGFzdGljaXR5IHZlcnRpY2FsU2Nyb2xsRWxhc3Rp
Y2l0eSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFNjcm9sbEVsYXN0aWNpdHk+KG1fdmVy
dGljYWxTY3JvbGxFbGFzdGljaXR5KTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0KaW5kZXggYzA5NWNkNjZmNTk1NmY4Yjg5YWFjYjMz
ZDViN2Y4MDIzMGE5YTdiNS4uYjNkMWFmMzg2Yjc3NTBhMjlkMGJiNWYzZTU1MDA4ODMwYmFjYTA2
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9y
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1h
Yy5tbQpAQCAtMTIyOCw5ICsxMjI4LDkgQEAgdm9pZCBTY3JvbGxBbmltYXRvck1hYzo6aGFuZGxl
V2hlZWxFdmVudFBoYXNlKFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlIHBoYXNlKQogYm9vbCBTY3Jv
bGxBbmltYXRvck1hYzo6c2hvdWxkRm9yd2FyZFdoZWVsRXZlbnRzVG9QYXJlbnQoY29uc3QgUGxh
dGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50KSBjb25zdAogewogICAgIGlmIChzdGQ6OmFicyh3
aGVlbEV2ZW50LmRlbHRhWSgpKSA+PSBzdGQ6OmFicyh3aGVlbEV2ZW50LmRlbHRhWCgpKSkKLSAg
ICAgICAgcmV0dXJuICFhbGxvd3NWZXJ0aWNhbFN0cmV0Y2hpbmcod2hlZWxFdmVudCk7CisgICAg
ICAgIHJldHVybiBtX3Njcm9sbGFibGVBcmVhLnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkg
PT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpBdXRvICYmICFhbGxvd3NWZXJ0aWNhbFN0cmV0Y2hpbmco
d2hlZWxFdmVudCk7CiAKLSAgICByZXR1cm4gIWFsbG93c0hvcml6b250YWxTdHJldGNoaW5nKHdo
ZWVsRXZlbnQpOworICAgIHJldHVybiBtX3Njcm9sbGFibGVBcmVhLmhvcml6b250YWxPdmVyc2Ny
b2xsQmVoYXZpb3IoKSA9PSBPdmVyc2Nyb2xsQmVoYXZpb3I6OkF1dG8gJiYgIWFsbG93c0hvcml6
b250YWxTdHJldGNoaW5nKHdoZWVsRXZlbnQpOwogfQogICAgIAogYm9vbCBTY3JvbGxBbmltYXRv
ck1hYzo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZl
bnQpCkBAIC0xMjk1LDYgKzEyOTUsOSBAQCBzdGF0aWMgYm9vbCBnZXN0dXJlU2hvdWxkQmVnaW5T
bmFwKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgU2Nyb2xsRQogCiBib29s
IFNjcm9sbEFuaW1hdG9yTWFjOjphbGxvd3NWZXJ0aWNhbFN0cmV0Y2hpbmcoY29uc3QgUGxhdGZv
cm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50KSBjb25zdAogeworICAgIGlmIChtX3Njcm9sbGFibGVB
cmVhLnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgPT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpO
b25lKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICBzd2l0Y2ggKG1fc2Nyb2xsYWJsZUFy
ZWEudmVydGljYWxTY3JvbGxFbGFzdGljaXR5KCkpIHsKICAgICBjYXNlIFNjcm9sbEVsYXN0aWNp
dHlBdXRvbWF0aWM6IHsKICAgICAgICAgU2Nyb2xsYmFyKiBoU2Nyb2xsZXIgPSBtX3Njcm9sbGFi
bGVBcmVhLmhvcml6b250YWxTY3JvbGxiYXIoKTsKQEAgLTEzMTksNiArMTMyMiw5IEBAIGJvb2wg
U2Nyb2xsQW5pbWF0b3JNYWM6OmFsbG93c1ZlcnRpY2FsU3RyZXRjaGluZyhjb25zdCBQbGF0Zm9y
bVdoZWVsRXZlbnQmIHdoZWVsCiAKIGJvb2wgU2Nyb2xsQW5pbWF0b3JNYWM6OmFsbG93c0hvcml6
b250YWxTdHJldGNoaW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCkgY29u
c3QKIHsKKyAgICBpZiAobV9zY3JvbGxhYmxlQXJlYS5ob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2
aW9yKCkgPT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpOb25lKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKICAgICBzd2l0Y2ggKG1fc2Nyb2xsYWJsZUFyZWEuaG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNp
dHkoKSkgewogICAgIGNhc2UgU2Nyb2xsRWxhc3RpY2l0eUF1dG9tYXRpYzogewogICAgICAgICBT
Y3JvbGxiYXIqIGhTY3JvbGxlciA9IG1fc2Nyb2xsYWJsZUFyZWEuaG9yaXpvbnRhbFNjcm9sbGJh
cigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbENvbnRy
b2xsZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQ29udHJvbGxlci5t
bQppbmRleCAwZGU4MWUwNmY2MzhlOWM3NzBkODc0ODY1M2IwYzVmZTYxMWM0ZWVhLi42MzRmYjc5
MGUwODZmYWVkOTU4MWQ4Zjk3OWQ4YTJjZDMyNTI4NGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQ29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQ29udHJvbGxlci5tbQpAQCAtMzEzLDE5ICszMTMsNiBAQCBi
b29sIFNjcm9sbENvbnRyb2xsZXI6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVl
bEV2ZW50JiB3aGVlbEV2ZW50KQogICAgIHJldHVybiBoYW5kbGVkOwogfQogCi1GbG9hdFNpemUg
U2Nyb2xsQ29udHJvbGxlcjo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoY29uc3Qg
UGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50KQotewotICAgIGF1dG8gZGVsdGFYID0gd2hl
ZWxFdmVudC5kZWx0YVgoKTsKLSAgICBhdXRvIGRlbHRhWSA9IHdoZWVsRXZlbnQuZGVsdGFZKCk7
Ci0KLSAgICBpZiAoZmFic2YoZGVsdGFZKSA+PSBmYWJzZihkZWx0YVgpKQotICAgICAgICBkZWx0
YVggPSAwOwotICAgIGVsc2UKLSAgICAgICAgZGVsdGFZID0gMDsKLQotICAgIHJldHVybiB7IGRl
bHRhWCwgZGVsdGFZIH07Ci19Ci0KIE9wdGlvbmFsPFNjcm9sbERpcmVjdGlvbj4gU2Nyb2xsQ29u
dHJvbGxlcjo6ZGlyZWN0aW9uRnJvbUV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hl
ZWxFdmVudCwgT3B0aW9uYWw8U2Nyb2xsRXZlbnRBeGlzPiBheGlzLCBXaGVlbEF4aXNCaWFzIGJp
YXMpCiB7CiAgICAgLy8gRklYTUU6IEl0J3MgaW1wb3NzaWJsZSB0byBpbmZlciBkaXJlY3Rpb24g
ZnJvbSBhIHNpbmdsZSBldmVudCwgc2luY2UgdGhlIHN0YXJ0IG9mIGEgZ2VzdHVyZSBpcyBlaXRo
ZXIgemVybyBvcgpAQCAtMzMzLDcgKzMyMCw3IEBAIE9wdGlvbmFsPFNjcm9sbERpcmVjdGlvbj4g
U2Nyb2xsQ29udHJvbGxlcjo6ZGlyZWN0aW9uRnJvbUV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlCiAK
ICAgICBhdXRvIHdoZWVsRGVsdGEgPSBGbG9hdFNpemUgeyB3aGVlbEV2ZW50LmRlbHRhWCgpLCB3
aGVlbEV2ZW50LmRlbHRhWSgpIH07CiAgICAgaWYgKGJpYXMgPT0gV2hlZWxBeGlzQmlhczo6VmVy
dGljYWwpCi0gICAgICAgIHdoZWVsRGVsdGEgPSB3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0
aWNhbCh3aGVlbEV2ZW50KTsKKyAgICAgICAgd2hlZWxEZWx0YSA9IFBsYXRmb3JtV2hlZWxFdmVu
dDo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwod2hlZWxFdmVudC5kZWx0YSgpKTsK
IAogICAgIGlmIChheGlzKSB7CiAgICAgICAgIHN3aXRjaCAoYXhpcy52YWx1ZSgpKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJl
YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJl
YS5jcHAKaW5kZXggYjZiN2FiMGEyMTI1MjRlZmU4N2FjMzdlYWRjYmUxMjAwN2NjNWU2NS4uYWIx
OTAzMTI3ODA1YzkzMTA2ZmFmZjkyYTE3MDc1ZTYxZGY4YjJlMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmNwcApAQCAt
MTgxNiw0ICsxODE2LDIyIEBAIFN0cmluZyBSZW5kZXJMYXllclNjcm9sbGFibGVBcmVhOjpkZWJ1
Z0Rlc2NyaXB0aW9uKCkgY29uc3QKICAgICByZXR1cm4gbV9sYXllci5kZWJ1Z0Rlc2NyaXB0aW9u
KCk7CiB9CiAKK092ZXJzY3JvbGxCZWhhdmlvciBSZW5kZXJMYXllclNjcm9sbGFibGVBcmVhOjpo
b3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29uc3QKK3sKKyAgICBjb25zdCBSZW5kZXJT
dHlsZSYgc3R5bGUgPSBtX2xheWVyLnJlbmRlcmVyKCkuc3R5bGUoKTsKKyAgICAvLyBBbiBlbGVt
ZW50IHRoYXQgaXMgbm90IHNjcm9sbCBjb250YWluZXIgbXVzdCBhY2NlcHQgYnV0IGlnbm9yZSB0
aGUgdmFsdWVzIG9mIHRoaXMgcHJvcGVydHkuCisgICAgaWYgKG1fbGF5ZXIucmVuZGVyQm94KCkg
JiYgbV9sYXllci5yZW5kZXJCb3goKS0+Y2FuQmVTY3JvbGxlZEFuZEhhc1Njcm9sbGFibGVBcmVh
KCkpCisgICAgICAgIHJldHVybiBzdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JYKCk7CisgICAgcmV0
dXJuIFNjcm9sbGFibGVBcmVhOjpob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCk7Cit9CisK
K092ZXJzY3JvbGxCZWhhdmlvciBSZW5kZXJMYXllclNjcm9sbGFibGVBcmVhOjp2ZXJ0aWNhbE92
ZXJzY3JvbGxCZWhhdmlvcigpIGNvbnN0Cit7CisgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxl
ID0gbV9sYXllci5yZW5kZXJlcigpLnN0eWxlKCk7CisgICAgLy8gQW4gZWxlbWVudCB0aGF0IGlz
IG5vdCBzY3JvbGwgY29udGFpbmVyIG11c3QgYWNjZXB0IGJ1dCBpZ25vcmUgdGhlIHZhbHVlcyBv
ZiB0aGlzIHByb3BlcnR5LgorICAgIGlmIChtX2xheWVyLnJlbmRlckJveCgpICYmIG1fbGF5ZXIu
cmVuZGVyQm94KCktPmNhbkJlU2Nyb2xsZWRBbmRIYXNTY3JvbGxhYmxlQXJlYSgpKQorICAgICAg
ICByZXR1cm4gc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWSgpOworICAgIHJldHVybiBTY3JvbGxh
YmxlQXJlYTo6dmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyU2Nyb2xsYWJsZUFyZWEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
clNjcm9sbGFibGVBcmVhLmgKaW5kZXggZGUyNmIzMDQ4OTY2NjZhNWNkZDY0YjUwZjc2ZDZkNTFl
ZDYzZWFkMy4uNTM4YTc5NGMwNjM5MTNkNDA2NjBkYWNlZTk1OWU2MzEwZDYzNjNmNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJl
YS5oCkBAIC0xMjksNiArMTI5LDkgQEAgcHVibGljOgogCiAgICAgYm9vbCBzY3JvbGwoU2Nyb2xs
RGlyZWN0aW9uLCBTY3JvbGxHcmFudWxhcml0eSwgZmxvYXQgbXVsdGlwbGllciA9IDEpOwogCisg
ICAgT3ZlcnNjcm9sbEJlaGF2aW9yIGhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25z
dCBmaW5hbDsKKyAgICBPdmVyc2Nyb2xsQmVoYXZpb3IgdmVydGljYWxPdmVyc2Nyb2xsQmVoYXZp
b3IoKSBjb25zdCBmaW5hbDsKKwogcHVibGljOgogICAgIC8vIEFsbCBtZXRob2RzIGluIHRoaXMg
c2VjdGlvbiBvdmVycmlkZSBTY3JvbGxhYmxlYUFyZWEgbWV0aG9kcyAoZmluYWwpLgogICAgIHZv
aWQgYXZhaWxhYmxlQ29udGVudFNpemVDaGFuZ2VkKEF2YWlsYWJsZVNpemVDaGFuZ2VSZWFzb24p
IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJI
VE1MVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcu
bW0KaW5kZXggMmI4YTI4MjBmODA5YjhhYjM5NWY2NmZkODA4ZjdhZDA4ZGVkM2FkMy4uOTMyNDg3
MDkyNDk2YWZiMDRjOTliODIyZGVhMWI0MmUyN2IwYjdkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC00MDg2LDYgKzQwODYsOCBAQCBz
dGF0aWMgQk9PTCBjdXJyZW50U2Nyb2xsSXNCbGl0KE5TVmlldyAqY2xpcFZpZXcpCiAgICAgYXV0
byogZnJhbWUgPSBjb3JlKFtzZWxmIF9mcmFtZV0pOwogICAgIGlmICghZnJhbWUgfHwgIWZyYW1l
LT5ldmVudEhhbmRsZXIoKS53aGVlbEV2ZW50KGV2ZW50KSkgewogI2lmIFBMQVRGT1JNKE1BQykK
KyAgICAgICAgLy8gRklYTUU6IE5lZWQgdG8gZmluZCBhIHdheSB0byBibG9jayB0aGUgY3Jvc3Mt
ZnJhbWUgc2Nyb2xsIGNoYWluaW5nIGluIFdLMS4KKyAgICAgICAgLy8gV2UgY2FuIG5vdCBqdXN0
IHNraXAgdGhlIHNjcm9sbCBoZXJlLCBpdCBub3Qgb25seSBibG9ja3Mgc2Nyb2xsIGNoYWluaW5n
IGJ1dCBhbHNvIGJsb2NrcyB0aGUgc2Nyb2xsIG9uIGN1cnJlbnQgdmlldy4KICAgICAgICAgW3N1
cGVyIHNjcm9sbFdoZWVsOmV2ZW50XTsKICNlbmRpZgogICAgIH0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzZTAzYmIxMDI3
MzI2Yjc3Y2Q3OTEyNjAxOGEyOWMyODBkNjg5M2MyLi4xYjJlNjU2OWNhNDI2MTA0NDUyNzFiMWI3
NGVmZTY4NDI5Mjg0ZDk3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDQgQEAKKzIwMjEtMDMtMTUgIENhdGhp
ZSBDaGVuICA8Y2F0aGllY2hlbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFN1cHBvcnQgQ1NTIG92
ZXJzY3JvbGwtYmVoYXZpb3IgZm9yIHN5bmNocm9ub3VzIHNjcm9sbAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyOTY4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmFzZWQgb24gRnLDqWTDqXJpYyBXYW5n
J3MgcGF0Y2guCisKKyAgICAgICAgVGVzdCBvdmVyc2Nyb2xsLWJlaGF2aW9yIGZvciBvdmVyZmxv
dyBlbGVtZW50cyBhbmQgaWZyYW1lcy4gVGhlIHRlc3RzIHRyaWdnZXIgd2hlZWwgc2Nyb2xsIGV2
ZW50cworICAgICAgICBhbmQgd2FpdCAuNXMsIHRoZW4gY2hlY2sgd2hldGhlciBzY3JvbGwgb2Nj
dXJzIG9yIG5vdC4KKyAgICAgICAgVGhlIHRlc3RzIGFyZSBza2lwcGVkIG9uIGlPUyBmb3Igb25s
eSBzeW5jaHJvbm91cyBzY3JvbGwgYXJlIHRlc3RlZC4KKyAgICAgICAgRm9yIFdLMSwgdGhlIGlm
cmFtZSB0ZXN0cyBmYWlsIGJlY2F1c2UgbGFjayBvZiBpbnRlcmZhY2VzIHRvIGNvbnRyb2wgc2Ny
b2xsIGNoYWluaW5nIGluIFdlYkhUTUxWaWV3LgorCisgICAgICAgICogVGVzdEV4cGVjdGF0aW9u
czogV2FpdGluZyAuNXMgZm9yIGVhY2ggY2FzZSBtYWtlcyB0aGUgdGVzdCBzbG93LgorICAgICAg
ICAqIGZhc3Qvc2Nyb2xsaW5nL3Jlc291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXN1cHBvcnQu
anM6IEFkZGVkLgorICAgICAgICAoZ2V0RGVsdGFzKToKKyAgICAgICAgKGFzeW5jIG1vdXNlV2hl
ZWxTY3JvbGxBbmRXYWl0KToKKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1v
dmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNj
cm9sbC1iZWhhdmlvci1pZnJhbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJl
aGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9s
bGFibGUtZWxlbWVudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9zeW5j
LXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Ny
b2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAgICog
cGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vbWFjLXdr
MS9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRp
b25zOgorCisyMDIxLTAyLTA0ICBSb2IgQnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CisKKyAgICAg
ICAgTWFrZSBzaG91bGRDb21wdXRlTG9naWNhbFdpZHRoRnJvbUFzcGVjdFJhdGlvQW5kSW5zZXRz
IHdyaXRpbmcgbW9kZSBhd2FyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjIxMzI4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTWFudWVsIFJlZ28gQ2Fz
YXNub3Zhcy4KKworICAgICAgICBFbmFibGUgc29tZSB0ZXN0cyB0aGF0IHBhc3Mgbm93LgorCisg
ICAgICAgICogVGVzdEV4cGVjdGF0aW9uczoKKwogMjAyMS0wMy0xNSAgSW1hbm9sIEZlcm5hbmRl
eiAgPGlmZXJuYW5kZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBTcGxpdCBXZWJYUiBmZWF0dXJl
cyBpbnRvIGVuYWJsZWRGZWF0dXJlcywgc3VwcG9ydGVkRmVhdHVyZXMgYW5kIHJlcXVlc3RlZEZl
YXR1cmVzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0
VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAxNDg1MTFkNWM1N2E4MmFjYTNiMTVmNTk5ZjRk
MzQ0YjhjNDAzMTkwLi41NDAxNTAyMmUzZjY5ZDM0OGVmNTRiYjg1ZWYwY2IwZjIyOTE0ZWEzIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3Rz
L1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTQ2NDUsNiArNDY0NSwxMiBAQCBmYXN0L3NoYWRvdy1kb20v
aW9zLyBbIFNraXAgXQogIyBSZXF1aXJlcyBXSzIgVGVzdFJ1bm5lcgogZnVsbHNjcmVlbi9mdWxs
LXNjcmVlbi1lbnRlci13aGlsZS1leGl0aW5nLmh0bWwgWyBTa2lwIF0KIAorIyBOZWVkIHRvIHdh
aXQgYW5kIGNoZWNrIHdoZXRoZXIgc2Nyb2xsIG9jY3VycworZmFzdC9zY3JvbGxpbmcvc3luYy1z
Y3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50Lmh0bWwgWyBTbG93IF0KK2Zhc3Qvc2Ny
b2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0bWwgWyBTbG93
IF0KK2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3Jv
bGxhYmxlLWVsZW1lbnQuaHRtbCBbIFNsb3cgXQorZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwt
b3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLmh0bWwgWyBTbG93IF0KKwog
IyBBbmltYXRpb24gLyBMYXlvdXQgd29ya2V0cyBhcmUgbm90IHN1cHBvcnRlZAogaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrbGV0cy9hbmltYXRpb24td29ya2xldC1zZXJ2aWNl
LXdvcmtlci1pbnRlcmNlcHRpb24uaHR0cHMuaHRtbCBbIFNraXAgXQogaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93b3JrbGV0cy9hbmltYXRpb24td29ya2xldC1jc3AuaHR0cHMuaHRt
bCBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvcmVzb3Vy
Y2VzL292ZXJzY3JvbGwtYmVoYXZpb3Itc3VwcG9ydC5qcyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Ny
b2xsaW5nL3Jlc291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXN1cHBvcnQuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYjMzZjM2YzBlMDZjM2VkZGRhOWU2Y2FhZDAyZjZjZjNiNjQ4ZThiZAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3Jlc291cmNlcy9vdmVyc2Nyb2xsLWJl
aGF2aW9yLXN1cHBvcnQuanMKQEAgLTAsMCArMSw0MCBAQAorZnVuY3Rpb24gZ2V0RGVsdGFzKGRp
cmVjdGlvbikgeworICAgIHZhciBkZWx0YVggPSAwOworICAgIHZhciBkZWx0YVkgPSAwOworICAg
IGlmIChkaXJlY3Rpb24gPT0gImRvd24iKQorICAgICAgICBkZWx0YVkgPSAtNTsKKyAgICBlbHNl
IGlmIChkaXJlY3Rpb24gPT0gInVwIikKKyAgICAgICAgZGVsdGFZID0gNTsKKyAgICBlbHNlIGlm
IChkaXJlY3Rpb24gPT0gInJpZ2h0IikKKyAgICAgICAgZGVsdGFYID0gLTU7CisgICAgZWxzZSBp
ZiAoZGlyZWN0aW9uID09ICJsZWZ0IikKKyAgICAgICAgZGVsdGFYID0gNTsKKyAgICByZXR1cm4g
eworICAgICAgICBYOiBkZWx0YVgsCisgICAgICAgIFk6IGRlbHRhWQorICAgIH07Cit9CisKK2Fz
eW5jIGZ1bmN0aW9uIG1vdXNlV2hlZWxTY3JvbGxBbmRXYWl0KHgsIHksIGJlZ2luWCwgYmVnaW5Z
LCBkZWx0YVgsIGRlbHRhWSkKK3sKKyAgICBpZiAoYmVnaW5YID09PSB1bmRlZmluZWQpCisgICAg
ICAgIGJlZ2luWCA9IDA7CisgICAgaWYgKGJlZ2luWSA9PT0gdW5kZWZpbmVkKQorICAgICAgICBi
ZWdpblkgPSAtMTsKKworICAgIGlmIChkZWx0YVggPT09IHVuZGVmaW5lZCkKKyAgICAgICAgZGVs
dGFYID0gMDsKKyAgICBpZiAoZGVsdGFZID09PSB1bmRlZmluZWQpCisgICAgICAgIGRlbHRhWSA9
IC0xMDsKKworICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgIGV2ZW50
U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhiZWdpblgsIGJlZ2luWSwgImJlZ2FuIiwgIm5vbmUi
KTsKKyAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZGVsdGFYLCBkZWx0YVksICJjaGFuZ2VkIiwgIm5vbmUiKTsKKyAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgImVuZGVkIiwgIm5v
bmUiKTsKKyAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgICAgIHNldFRp
bWVvdXQoKCkgPT4geworICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHJlc29sdmUp
OworICAgICAgICB9LCA1MDApOworICAgIH0pOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJz
Y3JvbGwtYmVoYXZpb3ItZWxlbWVudC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjcxNTBmZjYw
YjVkYmRkMGI0YTdhYzZmODNmYjU2ZjU3Y2QyY2Q4MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxl
bWVudC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMCBAQAorCitQQVNTIEVsZW1lbnQgaG9yaXpv
bnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gYXV0by4KK1BB
U1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6
IGF1dG8gYXV0by4KK1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3Zl
cnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBhdXRvLgorUEFTUyBFbGVtZW50IHZlcnRpY2FsIHNj
cm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBhdXRvLgorUEFTUyBF
bGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBu
b25lIGF1dG8uCitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Ny
b2xsLWJlaGF2aW9yOiBub25lIGF1dG8uCitQQVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwg
dGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gY29udGFpbi4KK1BBU1MgRWxlbWVu
dCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gY29u
dGFpbi4KK1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9s
bC1iZWhhdmlvcjogY29udGFpbiBjb250YWluLgorUEFTUyBFbGVtZW50IHZlcnRpY2FsIHNjcm9s
bCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBjb250YWluLgorUEFTUyBF
bGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBu
b25lIGNvbnRhaW4uCitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVy
c2Nyb2xsLWJlaGF2aW9yOiBub25lIGNvbnRhaW4uCitQQVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBz
Y3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gbm9uZS4KK1BBU1MgRWxl
bWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8g
bm9uZS4KK1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9s
bC1iZWhhdmlvcjogY29udGFpbiBub25lLgorUEFTUyBFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0
ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBub25lLgorUEFTUyBFbGVtZW50
IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIG5v
bmUuCitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJl
aGF2aW9yOiBub25lIG5vbmUuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xs
aW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVt
ZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOTE2YzMxNDFiYWQ4MGNlZjIyYmUxZjFhMGVkZTA1NmYyY2Rj
MjExMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMt
c2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC5odG1sCkBAIC0wLDAgKzEsODYgQEAK
KzwhZG9jdHlwZSBodG1sPgorCis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5l
c3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9vdmVyc2Nyb2xs
LWJlaGF2aW9yLXN1cHBvcnQuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJo
dHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLW92ZXJzY3JvbGwtYmVoYXZpb3IiPgorPHN0eWxl
PgorICAgIC5zY3JvbGxpbmcgeworICAgICAgICBvdmVyZmxvdzogc2Nyb2xsOworICAgIH0KKyAg
ICAuc2Nyb2xsQ29udGVudCB7CisgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgaGVpZ2h0
OiAzMDBweDsKKyAgICB9CisgICAgI3Jvb3QgeworICAgICAgICB3aWR0aDogMjAwcHg7CisgICAg
ICAgIGhlaWdodDogMjAwcHg7CisgICAgfQorICAgICNzY3JvbGxlciB7CisgICAgICAgIHdpZHRo
OiAxMDBweDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICB9Cis8L3N0eWxlPgorPGRpdiBp
ZD0ncm9vdCcgY2xhc3M9InNjcm9sbGluZyI+CisgICAgPGRpdiBpZD0nc2Nyb2xsZXInIGNsYXNz
PSJzY3JvbGxpbmciPgorICAgICAgICA8ZGl2IGNsYXNzPSJzY3JvbGxDb250ZW50Ij48L2Rpdj4K
KyAgICA8L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJzY3JvbGxDb250ZW50Ij48L2Rpdj4KKzwvZGl2
PgorCis8c2NyaXB0PgorY29uc3Qgcm9vdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyb290
Jyk7Citjb25zdCBzY3JvbGxlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY3JvbGxlcicp
OwordmFyIG92ZXJzY3JvbGxEYXRhcyA9IFtbImF1dG8iLCAiYXV0byIsIHRydWUsIHRydWVdLAor
ICAgICAgICAgICAgICAgICAgICAgICAgWyJjb250YWluIiwgImF1dG8iLCBmYWxzZSwgdHJ1ZV0s
CisgICAgICAgICAgICAgICAgICAgICAgICBbIm5vbmUiLCAiYXV0byIsIGZhbHNlLCB0cnVlXSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIFsiYXV0byIsICJjb250YWluIiwgdHJ1ZSwgZmFsc2Vd
LAorICAgICAgICAgICAgICAgICAgICAgICAgWyJjb250YWluIiwgImNvbnRhaW4iLCBmYWxzZSwg
ZmFsc2VdLAorICAgICAgICAgICAgICAgICAgICAgICAgWyJub25lIiwgImNvbnRhaW4iLCBmYWxz
ZSwgZmFsc2VdLAorICAgICAgICAgICAgICAgICAgICAgICAgWyJhdXRvIiwgIm5vbmUiLCB0cnVl
LCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAgICBbImNvbnRhaW4iLCAibm9uZSIsIGZh
bHNlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAgICBbIm5vbmUiLCAibm9uZSIsIGZh
bHNlLCBmYWxzZV1dOworCitmdW5jdGlvbiByZXNldFRlc3QoKSB7CisgICAgLy8gVHJ5IHZhcmlv
dXMgbWV0aG9kcyB0byBlbnN1cmUgdGhlIGVsZW1lbnQgcG9zaXRpb24gaXMgcmVzZXQgaW1tZWRp
YXRlbHkuCisgICAgc2Nyb2xsZXIuc2Nyb2xsTGVmdCA9IDMwMDsKKyAgICBzY3JvbGxlci5zY3Jv
bGxUb3AgPSAzMDA7CisgICAgc2Nyb2xsZXIuc2Nyb2xsVG8oMzAwLCAzMDApOworCisgICAgcm9v
dC5zY3JvbGxMZWZ0ID0gMDsKKyAgICByb290LnNjcm9sbFRvcCA9IDA7CisgICAgcm9vdC5zY3Jv
bGxUbygwLCAwKTsKK30KKworZnVuY3Rpb24gc3RhcnRUZXN0KCkgeworICAgIG92ZXJzY3JvbGxE
YXRhcy5mb3JFYWNoKChbb3ZlcnNjcm9sbFgsIG92ZXJzY3JvbGxZLCBwcm9wYWdhdGVYLCBwcm9w
YWdhdGVZXSkgPT4geworICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgICAgICAgICAg
cmVzZXRUZXN0KCk7CisgICAgICAgICAgICBzY3JvbGxlci5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZp
b3JYID0gb3ZlcnNjcm9sbFg7CisgICAgICAgICAgICBzY3JvbGxlci5zdHlsZS5vdmVyc2Nyb2xs
QmVoYXZpb3JZID0gb3ZlcnNjcm9sbFk7CisKKyAgICAgICAgICAgIHZhciB4ID0gc2Nyb2xsZXIu
Y2xpZW50V2lkdGggLyAyOworICAgICAgICAgICAgdmFyIHkgPSBzY3JvbGxlci5jbGllbnRIZWln
aHQgLyAyOworICAgICAgICAgICAgdmFyIGRlbHRhID0gZ2V0RGVsdGFzKCJyaWdodCIpOworICAg
ICAgICAgICAgcmV0dXJuIG1vdXNlV2hlZWxTY3JvbGxBbmRXYWl0KHgsIHksIGRlbHRhLlgsIGRl
bHRhLlksIGRlbHRhLlgsIGRlbHRhLlkpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGFz
c2VydF9lcXVhbHMocm9vdC5zY3JvbGxMZWZ0ID4gMCwgcHJvcGFnYXRlWCwgJ0NvbnRpbnVlIHVw
IHRoZSBob3Jpem9udGFsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAgICAgICAgfSk7CisgICAg
ICAgIH0sICdFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJl
aGF2aW9yOiAnICsgb3ZlcnNjcm9sbFggKyAnICcgKyBvdmVyc2Nyb2xsWSArICcuJyk7CisKKyAg
ICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAgIHJlc2V0VGVzdCgpOworICAg
ICAgICAgICAgc2Nyb2xsZXIuc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWCA9IG92ZXJzY3JvbGxY
OworICAgICAgICAgICAgc2Nyb2xsZXIuc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWSA9IG92ZXJz
Y3JvbGxZOworCisgICAgICAgICAgICB2YXIgeCA9IHNjcm9sbGVyLmNsaWVudFdpZHRoIC8gMjsK
KyAgICAgICAgICAgIHZhciB5ID0gc2Nyb2xsZXIuY2xpZW50SGVpZ2h0IC8gMjsKKyAgICAgICAg
ICAgIHZhciBkZWx0YSA9IGdldERlbHRhcygiZG93biIpOworICAgICAgICAgICAgcmV0dXJuIG1v
dXNlV2hlZWxTY3JvbGxBbmRXYWl0KHgsIHksIGRlbHRhLlgsIGRlbHRhLlksIGRlbHRhLlgsIGRl
bHRhLlkpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5z
Y3JvbGxUb3AgPiAwLCBwcm9wYWdhdGVZLCAnQ29udGludWUgdXAgdGhlIHZlcnRpY2FsIHNjcm9s
bCBjaGFpbmluZycpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0sICdFbGVtZW50IHZlcnRp
Y2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogJyArIG92ZXJzY3JvbGxY
ICsgJyAnICsgb3ZlcnNjcm9sbFkgKyAnLicpOworICAgIH0pOworfQorCithZGRFdmVudExpc3Rl
bmVyKCJsb2FkIiwgc3RhcnRUZXN0KTsKKzwvc2NyaXB0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xs
LW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zh
c3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45MDBhMGI3ZDkwNWI4N2MxZGI3NjI2OTRmZDAwNjM4ZjE5NzY5
NTM3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1z
Y3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MjEgQEAKKworCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNj
cm9sbC1iZWhhdmlvcjogYXV0byBhdXRvLgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRl
c3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIGF1dG8uCitQQVNTIElmcmFtZSBob3Jp
em9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBhdXRv
LgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2
aW9yOiBjb250YWluIGF1dG8uCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdp
dGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBhdXRvLgorUEFTUyBJZnJhbWUgdmVydGljYWwg
c2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIGF1dG8uCitQQVNTIElm
cmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0
byBjb250YWluLgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Ny
b2xsLWJlaGF2aW9yOiBhdXRvIGNvbnRhaW4uCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9s
bCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBjb250YWluLgorUEFTUyBJ
ZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250
YWluIGNvbnRhaW4uCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3Zl
cnNjcm9sbC1iZWhhdmlvcjogbm9uZSBjb250YWluLgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Ny
b2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIGNvbnRhaW4uCitQQVNTIElm
cmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0
byBub25lLgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xs
LWJlaGF2aW9yOiBhdXRvIG5vbmUuCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0
IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBub25lLgorUEFTUyBJZnJhbWUgdmVy
dGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIG5vbmUu
CitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhh
dmlvcjogbm9uZSBub25lLgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBv
dmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIG5vbmUuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJl
aGF2aW9yLWlmcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUyODg0NWRiNTA1YjRlMmU5ZDA0NTM4Mjlk
ZjU5ZTUyZjYwMzg1MzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9s
bGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS5odG1sCkBAIC0wLDAg
KzEsODggQEAKKzwhZG9jdHlwZSBodG1sPgorCis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
dGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9v
dmVyc2Nyb2xsLWJlaGF2aW9yLXN1cHBvcnQuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJoZWxw
IiBocmVmPSJodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLW92ZXJzY3JvbGwtYmVoYXZpb3Ii
PgorPHN0eWxlPgorICAgIC5zY3JvbGxpbmcgeworICAgICAgICBvdmVyZmxvdzogc2Nyb2xsOwor
ICAgIH0KKyAgICAuc2Nyb2xsQ29udGVudCB7CisgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAg
ICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEz
NWRlZywgcmVkLCBibHVlKTsKKyAgICB9CisgICAgI3Jvb3QgeworICAgICAgICB3aWR0aDogMjAw
cHg7CisgICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgfQorICAgICNzY3JvbGxlciB7CisgICAg
ICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgICAgb3ZlcnNj
cm9sbC1iZWhhdmlvci15OiBhdXRvOworICAgIH0KKzwvc3R5bGU+Cis8ZGl2IGlkPSdyb290JyBj
bGFzcz0ic2Nyb2xsaW5nIj4KKyAgICA8aWZyYW1lIGlkPSdzY3JvbGxlcicgc3JjZG9jPSI8aHRt
bD48ZGl2IHN0eWxlPSd3aWR0aDogMzAwcHg7IGhlaWdodDogMzAwcHg7Jz48L2Rpdj48L2h0bWw+
CisgICAgICAgICI+PC9pZnJhbWU+CisgICAgPGRpdiBjbGFzcz0ic2Nyb2xsQ29udGVudCI+PC9k
aXY+Cis8L2Rpdj4KKworPHNjcmlwdD4KKyAgICBjb25zdCByb290ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ3Jvb3QnKTsKKyAgICBjb25zdCBzY3JvbGxlciA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdzY3JvbGxlcicpOworICAgIHZhciBvdmVyc2Nyb2xsRGF0YXMgPSBbWyJhdXRvIiwg
ImF1dG8iLCB0cnVlLCB0cnVlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImNvbnRh
aW4iLCAiYXV0byIsIGZhbHNlLCB0cnVlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBb
Im5vbmUiLCAiYXV0byIsIGZhbHNlLCB0cnVlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBbImF1dG8iLCAiY29udGFpbiIsIHRydWUsIGZhbHNlXSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBbImNvbnRhaW4iLCAiY29udGFpbiIsIGZhbHNlLCBmYWxzZV0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgWyJub25lIiwgImNvbnRhaW4iLCBmYWxzZSwgZmFsc2VdLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFsiYXV0byIsICJub25lIiwgdHJ1ZSwgZmFsc2VdLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiY29udGFpbiIsICJub25lIiwgZmFsc2UsIGZh
bHNlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIm5vbmUiLCAibm9uZSIsIGZhbHNl
LCBmYWxzZV1dOworICAgIGZ1bmN0aW9uIHJlc2V0VGVzdCgpIHsKKyAgICAgICAgLy8gVHJ5IHZh
cmlvdXMgbWV0aG9kcyB0byBlbnN1cmUgdGhlIGVsZW1lbnQgcG9zaXRpb24gaXMgcmVzZXQgaW1t
ZWRpYXRlbHkuCisgICAgICAgIHNjcm9sbGVyLmNvbnRlbnRXaW5kb3cuc2Nyb2xsWCA9IDMwMDsK
KyAgICAgICAgc2Nyb2xsZXIuY29udGVudFdpbmRvdy5zY3JvbGxZID0gMzAwOworICAgICAgICBz
Y3JvbGxlci5jb250ZW50V2luZG93LnNjcm9sbFRvKDMwMCwgMzAwKTsKKworICAgICAgICByb290
LnNjcm9sbExlZnQgPSAwOworICAgICAgICByb290LnNjcm9sbFRvcCA9IDA7CisgICAgICAgIHJv
b3Quc2Nyb2xsVG8oMCwgMCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gb3ZlcnNjcm9sbEJlaGF2
aW9yVGVzdCgpIHsKKyAgICAgICAgb3ZlcnNjcm9sbERhdGFzLmZvckVhY2goKFtvdmVyc2Nyb2xs
WCwgb3ZlcnNjcm9sbFksIHByb3BhZ2F0ZVgsIHByb3BhZ2F0ZVldKSA9PiB7CisgICAgICAgICAg
ICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgICAgICAgICAgICAgIHJlc2V0VGVzdCgpOworICAg
ICAgICAgICAgICAgIHZhciB0YXJnZXQgPSBzY3JvbGxlci5jb250ZW50V2luZG93LmRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJodG1sIilbMF07CisgICAgICAgICAgICAgICAgdGFyZ2V0
LnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclggPSBvdmVyc2Nyb2xsWDsKKyAgICAgICAgICAgICAg
ICB0YXJnZXQuc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWSA9IG92ZXJzY3JvbGxZOworCisgICAg
ICAgICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAgICAgICAg
ICAgICAgdmFyIHkgPSBzY3JvbGxlci5jbGllbnRIZWlnaHQgLyAyOworICAgICAgICAgICAgICAg
IHZhciBkZWx0YSA9IGdldERlbHRhcygicmlnaHQiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
bW91c2VXaGVlbFNjcm9sbEFuZFdhaXQoeCwgeSwgZGVsdGEuWCwgZGVsdGEuWSwgZGVsdGEuWCwg
ZGVsdGEuWSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMo
cm9vdC5zY3JvbGxMZWZ0ID4gMCwgcHJvcGFnYXRlWCwgJ0NvbnRpbnVlIHVwIHRoZSBob3Jpem9u
dGFsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAg
fSwgJ0lmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlv
cjogJyArIG92ZXJzY3JvbGxYICsgJyAnICsgb3ZlcnNjcm9sbFkgKyAnLicpOworCisgICAgICAg
ICAgICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgICAgICAgICAgICAgIHJlc2V0VGVzdCgpOwor
ICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSBzY3JvbGxlci5jb250ZW50V2luZG93LmRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJodG1sIilbMF07CisgICAgICAgICAgICAgICAgdGFy
Z2V0LnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclggPSBvdmVyc2Nyb2xsWDsKKyAgICAgICAgICAg
ICAgICB0YXJnZXQuc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWSA9IG92ZXJzY3JvbGxZOworCisg
ICAgICAgICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAgICAg
ICAgICAgICAgdmFyIHkgPSBzY3JvbGxlci5jbGllbnRIZWlnaHQgLyAyOworICAgICAgICAgICAg
ICAgIHZhciBkZWx0YSA9IGdldERlbHRhcygiZG93biIpOworICAgICAgICAgICAgICAgIHJldHVy
biBtb3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCh4LCB5LCBkZWx0YS5YLCBkZWx0YS5ZLCBkZWx0YS5Y
LCBkZWx0YS5ZKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFs
cyhyb290LnNjcm9sbFRvcCA+IDAsIHByb3BhZ2F0ZVksICdDb250aW51ZSB1cCB0aGUgdmVydGlj
YWwgc2Nyb2xsIGNoYWluaW5nJyk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9
LCAnSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjog
JyArIG92ZXJzY3JvbGxYICsgJyAnICsgb3ZlcnNjcm9sbFkgKyAnLicpOworICAgICAgICB9KTsK
KyAgICB9CisKKyAgICBzY3JvbGxlci5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgb3ZlcnNjcm9s
bEJlaGF2aW9yVGVzdCk7Cis8L3NjcmlwdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Ny
b2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3Jv
bGxhYmxlLWVsZW1lbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYzOTViNjQ4OGQwODcwYjk1
NjFjMDI4Njc5ZDdlMTVhNDdmY2U2ZTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJs
ZS1lbGVtZW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKKworUEFTUyBVbnNjcm9sbGFi
bGUgZWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlv
cjogbm9uZS4KK1BBU1MgVW5zY3JvbGxhYmxlIGVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qg
d2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xs
YWJsZS1lbGVtZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9s
bC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uN2NiNzczMzY1OWUyYmM0YWJkNjUyNzE4OWNmNTA2ZDZmZWZhMjMwNAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwt
YmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRtbApAQCAtMCwwICsxLDY2IEBACis8IWRv
Y3R5cGUgaHRtbD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVw
b3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb3ZlcnNjcm9sbC1iZWhh
dmlvci1zdXBwb3J0LmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6
Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1vdmVyc2Nyb2xsLWJlaGF2aW9yIj4KKzxzdHlsZT4KKyAg
ICAuc2Nyb2xsaW5nIHsKKyAgICAgICAgb3ZlcmZsb3c6IHNjcm9sbDsKKyAgICB9CisgICAgLnNj
cm9sbENvbnRlbnQgeworICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgIGhlaWdodDogMzAw
cHg7CisgICAgfQorICAgICNyb290IHsKKyAgICAgICAgd2lkdGg6IDIwMHB4OworICAgICAgICBo
ZWlnaHQ6IDIwMHB4OworICAgIH0KKyAgICAjc2Nyb2xsZXIgeworICAgICAgICB3aWR0aDogMTAw
cHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICAgIG92ZXJzY3JvbGwtYmVoYXZpb3I6
IG5vbmU7CisgICAgICAgIG92ZXJmbG93OiB2aXNpYmxlOworICAgICAgICBiYWNrZ3JvdW5kOiBs
aW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZWQsIGJsdWUpOworICAgIH0KKzwvc3R5bGU+Cis8ZGl2
IGlkPSJyb290IiBjbGFzcz0ic2Nyb2xsaW5nIj4KKyAgICA8ZGl2IGlkPSJzY3JvbGxlciI+Cisg
ICAgICAgIDxkaXYgY2xhc3M9InNjcm9sbENvbnRlbnQiPjwvZGl2PgorICAgIDwvZGl2PgorICAg
IDxkaXYgY2xhc3M9InNjcm9sbENvbnRlbnQiPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+Citj
b25zdCByb290ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jvb3QnKTsKK2NvbnN0IHNjcm9s
bGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Njcm9sbGVyJyk7CitmdW5jdGlvbiByZXNl
dFRlc3QoKSB7CisgICAgcm9vdC5zY3JvbGxMZWZ0ID0gMDsKKyAgICByb290LnNjcm9sbFRvcCA9
IDA7CisgICAgcm9vdC5zY3JvbGxUbygwLCAwKTsKK30KKworZnVuY3Rpb24gc3RhcnRUZXN0KCkg
eworICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgICAgICAgICAgcmVzZXRUZXN0KCk7
CisgICAgICAgICAgICB2YXIgeCA9IHNjcm9sbGVyLmNsaWVudFdpZHRoIC8gMjsKKyAgICAgICAg
ICAgIHZhciB5ID0gc2Nyb2xsZXIuY2xpZW50SGVpZ2h0IC8gMjsKKyAgICAgICAgICAgIHZhciBk
ZWx0YSA9IGdldERlbHRhcygicmlnaHQiKTsKKyAgICAgICAgICAgIHJldHVybiBtb3VzZVdoZWVs
U2Nyb2xsQW5kV2FpdCh4LCB5LCBkZWx0YS5YLCBkZWx0YS5ZLCBkZWx0YS5YLCBkZWx0YS5ZKS50
aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsTGVm
dCA+IDAsIHRydWUsICdDb250aW51ZSB1cCB0aGUgaG9yaXpvbnRhbCBzY3JvbGwgY2hhaW5pbmcn
KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9LCAnVW5zY3JvbGxhYmxlIGVsZW1lbnQgaG9y
aXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuJyk7CisK
KyAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAgIHJlc2V0VGVzdCgpOwor
ICAgICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAgICAgICAg
ICB2YXIgeSA9IHNjcm9sbGVyLmNsaWVudEhlaWdodCAvIDI7CisgICAgICAgICAgICB2YXIgZGVs
dGEgPSBnZXREZWx0YXMoImRvd24iKTsKKyAgICAgICAgICAgIHJldHVybiBtb3VzZVdoZWVsU2Ny
b2xsQW5kV2FpdCh4LCB5LCBkZWx0YS5YLCBkZWx0YS5ZLCBkZWx0YS5YLCBkZWx0YS5ZKS50aGVu
KCgpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsVG9wID4g
MCwgdHJ1ZSwgJ0NvbnRpbnVlIHVwIHRoZSB2ZXJ0aWNhbCBzY3JvbGwgY2hhaW5pbmcnKTsKKyAg
ICAgICAgICAgIH0pOworICAgICAgICB9LCAnVW5zY3JvbGxhYmxlIGVsZW1lbnQgdmVydGljYWwg
c2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLicpOworfQorCithZGRF
dmVudExpc3RlbmVyKCJsb2FkIiwgc3RhcnRUZXN0KTsKKzwvc2NyaXB0PgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5
bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xs
LWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdm
YTU5Y2NiYTc5YWVmZjMzZGE3MGU5M2Q0ODhhMDdlZWM5YzU2OTEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2
aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorCisK
K1BBU1MgVW5zY3JvbGxhYmxlIGlmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3Zl
cnNjcm9sbC1iZWhhdmlvcjogbm9uZS4KK1BBU1MgVW5zY3JvbGxhYmxlIGlmcmFtZSB2ZXJ0aWNh
bCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVo
YXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxp
bmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZTI0MjVhZmM2MzdkZjUxZTQ0MTU0MjZhYjQ2N2M2MTRlMzhlZjYxNgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xs
LW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sCkBAIC0wLDAgKzEs
NjYgQEAKKzwhZG9jdHlwZSBodG1sPgorCis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVz
dGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9vdmVy
c2Nyb2xsLWJlaGF2aW9yLXN1cHBvcnQuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJoZWxwIiBo
cmVmPSJodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLW92ZXJzY3JvbGwtYmVoYXZpb3IiPgor
PHN0eWxlPgorICAgIC5zY3JvbGxpbmcgeworICAgICAgICBvdmVyZmxvdzogc2Nyb2xsOworICAg
IH0KKyAgICAuc2Nyb2xsQ29udGVudCB7CisgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAg
aGVpZ2h0OiAzMDBweDsKKyAgICB9CisgICAgI3Jvb3QgeworICAgICAgICB3aWR0aDogMjAwcHg7
CisgICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgfQorICAgICNzY3JvbGxlciB7CisgICAgICAg
IHdpZHRoOiAyMDBweDsKKyAgICAgICAgaGVpZ2h0OiAyMDBweDsKKyAgICAgICAgb3ZlcnNjcm9s
bC1iZWhhdmlvcjogbm9uZTsKKyAgICAgICAgb3ZlcmZsb3c6IHZpc2libGU7CisgICAgICAgIGJh
Y2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJlZCwgYmx1ZSk7CisgICAgfQorPC9z
dHlsZT4KKzxkaXYgaWQ9J3Jvb3QnIGNsYXNzPSJzY3JvbGxpbmciPgorICAgIDxpZnJhbWUgaWQ9
J3Njcm9sbGVyJyBzcmNkb2M9IjxodG1sIHN0eWxlPSdvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25l
Oyc+PGRpdiBzdHlsZT0nd2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDEwMHB4Oyc+PC9kaXY+PC9odG1s
PgorICAgICAgICAiPjwvaWZyYW1lPgorICAgIDxkaXYgY2xhc3M9InNjcm9sbENvbnRlbnQiPjwv
ZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+Citjb25zdCByb290ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3Jvb3QnKTsKK2NvbnN0IHNjcm9sbGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3Njcm9sbGVyJyk7CisKK2Z1bmN0aW9uIHJlc2V0VGVzdCgpIHsKKyAgICByb290LnNjcm9sbExl
ZnQgPSAwOworICAgIHJvb3Quc2Nyb2xsVG9wID0gMDsKKyAgICByb290LnNjcm9sbFRvKDAsIDAp
OworfQorCitmdW5jdGlvbiBzdGFydFRlc3QoKSB7CisgICAgICAgIHByb21pc2VfdGVzdCgoKSA9
PiB7CisgICAgICAgICAgICByZXNldFRlc3QoKTsKKyAgICAgICAgICAgIHZhciB4ID0gc2Nyb2xs
ZXIuY2xpZW50V2lkdGggLyAyOworICAgICAgICAgICAgdmFyIHkgPSBzY3JvbGxlci5jbGllbnRI
ZWlnaHQgLyAyOworICAgICAgICAgICAgdmFyIGRlbHRhID0gZ2V0RGVsdGFzKCJyaWdodCIpOwor
ICAgICAgICAgICAgcmV0dXJuIG1vdXNlV2hlZWxTY3JvbGxBbmRXYWl0KHgsIHksIGRlbHRhLlgs
IGRlbHRhLlksIGRlbHRhLlgsIGRlbHRhLlkpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAg
IGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxMZWZ0ID4gMCwgdHJ1ZSwgJ0NvbnRpbnVlIHVwIHRo
ZSBob3Jpem9udGFsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAgICAgICAgfSk7CisgICAgICAg
IH0sICdVbnNjcm9sbGFibGUgaWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVy
c2Nyb2xsLWJlaGF2aW9yOiBub25lLicpOworCisgICAgICAgIHByb21pc2VfdGVzdCgoKSA9PiB7
CisgICAgICAgICAgICByZXNldFRlc3QoKTsKKyAgICAgICAgICAgIHZhciB4ID0gc2Nyb2xsZXIu
Y2xpZW50V2lkdGggLyAyOworICAgICAgICAgICAgdmFyIHkgPSBzY3JvbGxlci5jbGllbnRIZWln
aHQgLyAyOworICAgICAgICAgICAgdmFyIGRlbHRhID0gZ2V0RGVsdGFzKCJkb3duIik7CisgICAg
ICAgICAgICByZXR1cm4gbW91c2VXaGVlbFNjcm9sbEFuZFdhaXQoeCwgeSwgZGVsdGEuWCwgZGVs
dGEuWSwgZGVsdGEuWCwgZGVsdGEuWSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgYXNz
ZXJ0X2VxdWFscyhyb290LnNjcm9sbFRvcCA+IDAsIHRydWUsICdDb250aW51ZSB1cCB0aGUgdmVy
dGljYWwgc2Nyb2xsIGNoYWluaW5nJyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSwgJ1Vu
c2Nyb2xsYWJsZSBpZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJl
aGF2aW9yOiBub25lLicpOworfQorCithZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgc3RhcnRUZXN0
KTsKKzwvc2NyaXB0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggZWY3ZmRlYjNjODg3MDUzYzE5N2VhNWRl
ZDI0NjA3YjM4MjJkYjZmNC4uNTk5MTI0ODEyNGExYTlmMjlkNDQyZjZhM2JkNDI4NDc4OTMxOTFl
MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTc5NSw2
ICs3OTUsMTIgQEAgc3ZnL3RleHQvc2VsZWN0LXRleHQtc3ZnZm9udC5odG1sIFsgU2tpcCBdCiBz
dmcvdGV4dC9zZWxlY3Rpb24tZG91YmxlY2xpY2suc3ZnIFsgU2tpcCBdCiBzdmcvdGV4dC9zZWxl
Y3Rpb24tdHJpcGxlY2xpY2suc3ZnIFsgU2tpcCBdCiAKKyMgT3ZlcnNjcm9sbC1iZWhhdmlvciBp
cyBub3Qgc3VwcG9ydGVkIG9uIGlPUworZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNj
cm9sbC1iZWhhdmlvci1lbGVtZW50Lmh0bWwgWyBTa2lwIF0KK2Zhc3Qvc2Nyb2xsaW5nL3N5bmMt
c2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0bWwgWyBTa2lwIF0KK2Zhc3Qvc2Ny
b2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1l
bnQuaHRtbCBbIFNraXAgXQorZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1i
ZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLmh0bWwgWyBTa2lwIF0KKwogIyBJT1MgZG9lcyBu
b3QgaW1wbGVtZW50IHNldEF1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkCiBlZGl0aW5nL2lu
c2VydGluZy90eXBpbmctc3BhY2UtdG8tdHJpZ2dlci1zbWFydC1saW5rLmh0bWwgWyBTa2lwIF0K
IGVkaXRpbmcvaW5zZXJ0aW5nL3NtYXJ0LWxpbmstd2hlbi1jYXJldC1pcy1tb3ZlZC1iZWZvcmUt
VVJMLmh0bWwgWyBTa2lwIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13
azEvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4
cGVjdGF0aW9ucwppbmRleCBlMjI3MGI2Zjk5ZDQ5OGY5NjRlOWY4OTI2YjIyYmQ2NGM4YzY5M2I0
Li5mMTJjM2Q5MmM0NTE5ZWY0ZGVlNTc5YjgzOTkyMWQxZTMzMzFkYjAxIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCkBAIC00NTMsNiArNDUzLDEw
IEBAIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1zY3JvbGwtc25hcC9z
Y3JvbGwtdGFyZ2V0LXBhZGRpbmctMDAxLmh0CiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3Mtc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtc3RvcC1jaGFuZ2UuaHRtbCBbIEZh
aWx1cmUgXQogY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwtcGFkZGluZy1tYWluZnJhbWUtcGFnaW5n
Lmh0bWwgWyBGYWlsdXJlIF0KIAorIyBMYWNrIG9mIHdheXMgdG8gY29udHJvbCB0aGUgY3Jvc3Mt
ZnJhbWUgc2Nyb2xsIGNoYWluaW5nIGluIFdLMS4KK2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xs
LW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0bWwgWyBTa2lwIF0KK2Zhc3Qvc2Nyb2xsaW5n
L3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5odG1s
IFsgU2tpcCBdCisKICMjIyBFTkQgT0YgKDIpIEZhaWx1cmVzIHdpdGhvdXQgYnVnIHJlcG9ydHMK
ICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucwppbmRleCBkMDA3M2VlZWI3NGU3ODRjNTdkZGEx
NGMyMmQ1Y2JjMjIxYzI0NWM5Li45YTJhMTVhNzczZDlmZTA5NjkxYThiNzU2MDYxZjk1ZDdlZGZh
Y2JjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9u
cworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucwpAQCAtNTk4
LDYgKzU5OCwxMiBAQCBmYXN0L2V2ZW50cy93aGVlbC9wbGF0Zm9ybS13aGVlbGV2ZW50LXBhZ2lu
Zy15LWluLW5vbi1zY3JvbGxpbmctcGFnZS5odG1sIFsgU2tpcAogZmFzdC9ldmVudHMvd2hlZWwv
cGxhdGZvcm0td2hlZWxldmVudC1wYWdpbmcteS1pbi1zY3JvbGxpbmctZGl2Lmh0bWwgWyBTa2lw
IF0KIGZhc3QvZXZlbnRzL3doZWVsL3BsYXRmb3JtLXdoZWVsZXZlbnQtcGFnaW5nLXktaW4tc2Ny
b2xsaW5nLXBhZ2UuaHRtbCBbIFNraXAgXQogCisjIE92ZXJzY3JvbGwtYmVoYXZpb3IgaXMgbm90
IHN1cHBvcnRlZCBvbiBXaW5kb3dzCitmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Ny
b2xsLWJlaGF2aW9yLWVsZW1lbnQuaHRtbCBbIFNraXAgXQorZmFzdC9zY3JvbGxpbmcvc3luYy1z
Y3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUuaHRtbCBbIFNraXAgXQorZmFzdC9zY3Jv
bGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVu
dC5odG1sIFsgU2tpcCBdCitmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJl
aGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUuaHRtbCBbIFNraXAgXQorCiAjIFBvaW50ZXIgTG9j
ayBpcyBub3QgaW1wbGVtZW50ZWQuCiBwb2ludGVyLWxvY2svIFsgU2tpcCBdCiBodHRwL3Rlc3Rz
L3BvaW50ZXItbG9jay8gWyBTa2lwIF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423886</attachid>
            <date>2021-03-22 08:38:30 -0700</date>
            <delta_ts>2021-03-24 10:59:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222968-20210322233829.patch</filename>
            <type>text/plain</type>
            <size>61841</size>
            <attacher name="cathiechen">cathiechen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0NDE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWJmNDc4OWYyMmE2OTA3
MzY0ZTQyNWUxZmNhYTJkOTI3MDQ2NTRlYS4uYzZmMjA3MTQ4ZDVlNzVkYzIwMWI1OWEwZDU2ZmYz
YzA0YTQ5MjIzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDIxLTAzLTE1ICBDYXRo
aWUgQ2hlbiAgPGNhdGhpZWNoZW5AaWdhbGlhLmNvbT4KKworICAgICAgICBTdXBwb3J0IENTUyBv
dmVyc2Nyb2xsLWJlaGF2aW9yIGZvciBzeW5jaHJvbm91cyBzY3JvbGwKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjk2OAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJhc2VkIG9uIEZyw6lkw6lyaWMgV2Fu
ZydzIHBhdGNoLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYnJpbmdzIGluaXRpYWwgc3VwcG9ydCBv
ZiBDU1MgcHJvcGVydHkgb3ZlcnNjcm9sbC1iZWhhdmlvci4gT3ZlcnNjcm9sbC1iZWhhdmlvciBz
ZXRzIHdoYXQKKyAgICAgICAgdGhlIGJyb3dzZXIgZG9lcyB3aGVuIHJlYWNoaW5nIHRoZSBib3Vu
ZGFyeSBvZiBhIHNjcm9sbGluZyBhcmVhLiBGaXJlZm94IGFuZCBDaHJvbWl1bS12YXJpYW50IGJy
b3dzZXJzCisgICAgICAgIGFscmVhZHkgc3VwcG9ydCBpdC4gSXRzIHNwZWNpZmljYXRpb24gY2Fu
IGJlIGZvdW5kIGF0IGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3Mtb3ZlcnNjcm9sbC0xLyNv
dmVyc2Nyb2xsLWJlaGF2aW9yLXByb3BlcnRpZXMKKyAgICAgICAgVGhpcyBwYXRjaCBhaW1zIHRv
IHN1cHBvcnQgaXQgZm9yIHRoZSBzeW5jaHJvbm91cyBzY3JvbGwuIFRoZSBhc3luY2hyb25vdXMg
c2Nyb2xsIG9uIE1hYyB3aWxsIGJlIGNvdmVyZWQgbGF0ZXIuCisKKyAgICAgICAgQWNjb3JkaW5n
IHRvIHRoZSB2YWx1ZSBvZiBvdmVyc2Nyb2xsLWJlaGF2aW9yLCB0aGlzIHBhdGNoIGNvbnRyb2xz
IHRoZSBzY3JvbGwgY2hhaW5pbmcsIHRoZSBzY3JvbGwgc3RyZXRjaCwKKyAgICAgICAgYW5kIHN3
aXBlIGdlc3R1cmVzIGdlbmVyYXRpb24gb2YgdGhlIHN5bmNocm9ub3VzIHNjcm9sbC4gVG8gY29u
dHJvbCB0aGUgc2Nyb2xsIGNoYWluaW5nLAorICAgICAgICBtX3Njcm9sbENoYWluaW5nQmxvY2tl
ciBpcyBhZGRlZCB0byBFdmVudEhhbmxkZXIsIGl0IGlzIGdlbmVyYXRlZCBhY2NvcmRpbmcgdG8g
dGhlIG92ZXJzY3JvbGwtYmVoYXZpb3IgdmFsdWVzLgorICAgICAgICBJdCBpbmRpY2F0ZXMgd2hl
dGhlciB0aGUgc2Nyb2xsIGNoYWluaW5nIG9mIHRoaXMgZnJhbWUgc2hvdWxkIGJlIHN0b3BwZWQg
b3Igbm90LgorICAgICAgICBUaGUgc2Nyb2xsIGNoYWluaW5nIGlzIGhhbmRsZWQgZGlmZmVyZW50
bHkgYnkgV0hFRUxfRVZFTlRfTEFUQ0hJTkcgc2V0dGluZy4gSWYgV0hFRUxfRVZFTlRfTEFUQ0hJ
TkcgaXMgb2ZmLAorICAgICAgICB0aGUgc2Nyb2xsIGNoYWluaW5nIGlzIGhhbmRsZWQgZGlyZWN0
bHkgaW4gRXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2lu
Z0JveCgpLgorICAgICAgICBJZiBXSEVFTF9FVkVOVF9MQVRDSElORyBpcyBvbiwgdGhlIGxhdGNo
ZWQgc2Nyb2xsIHRhcmdldCBpcyBhbHdheXMgRnJhbWVWaWV3IGlmIGl0IG5lZWRzIHRvIHN0b3Ag
dGhlIHNjcm9sbCBjaGFpbmluZy4KKyAgICAgICAgSWYgY3VycmVudCBmcmFtZSBpcyBhIHN1YmZy
YW1lLCB0aGUgdmFsdWUgb2YgbV9zY3JvbGxDaGFpbmluZ0Jsb2NrZXIgd2lsbCBiZSBwYXNzZWQg
dG8gaXRzIHBhcmVudCBmcmFtZS4KKyAgICAgICAgQW5kIGV2ZW50dWFsbHksIGxldCB0aGUgbWFp
bmZyYW1lIGhhbmRsZSBtX3Njcm9sbENoYWluaW5nQmxvY2tlci4gVGhlIG1haW5mcmFtZSBibG9j
a3MgdmVydGljYWwgc2Nyb2xsIGNoYWluaW5nIGRpcmVjdGx5LAorICAgICAgICBhbmQgaG9yaXpv
bnRhbGx5IGl0IHdpbGwgbGV0IHRoZSB2aWV3cyBkZWNpZGUgd2hldGhlciBpdCBzaG91bGQgZ2Vu
ZXJhdGUgc3dpcGUgZ2VzdHVyZXMgb3Igbm90LgorICAgICAgICBBYm91dCB0aGUgc2Nyb2xsIHN0
cmV0Y2gsIGl0IGlzIGNhbmNlbGVkIGlmIHRoZSB2YWx1ZSBvZiBvdmVyc2Nyb2xsLWJlaGF2aW9y
IGlzIG5vbmUuCisKKyAgICAgICAgVGVzdHM6IGZhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92
ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC5odG1sCisgICAgICAgICAgICAgICBmYXN0L3Njcm9s
bGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS5odG1sCisgICAgICAg
ICAgICAgICBmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVu
c2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvc2Nyb2xsaW5nL3N5
bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sCisK
KyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVu
dEhhbmRsZXI6OnNjcm9sbENoYWluaW5nQmxvY2tlckNoYW5nZWRCeVN1YmZyYW1lKTogVXBkYXRl
IHRoZSBzdGF0ZSBvZiBzY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIgaWYgbV9zY3JvbGxDaGFpbmlu
Z0Jsb2NrZXIgaXMgY2hhbmdlZCBieSBzdWJmcmFtZS4KKyAgICAgICAgKFdlYkNvcmU6OnByb3Bh
Z2F0ZVNjcm9sbENoYWluaW5nQmxvY2tlclRvUGFyZW50RnJhbWUpOiBQcm9wYWdhdGUgbV9zY3Jv
bGxDaGFpbmluZ0Jsb2NrZXIgdG8gcGFyZW50IGZyYW1lLgorICAgICAgICAoV2ViQ29yZTo6aGFu
ZGxlU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyQmVmb3JlU2Nyb2xsaW5nRnJhbWVWaWV3KTogQ2hlY2sg
aWYgbV9zY3JvbGxDaGFpbmluZ0Jsb2NrZXIgYmxvY2tzIHRoZSBzY3JvbGwgY2hhaW5pbmcgb24g
RnJhbWVWaWV3LAorICAgICAgICBkZWFsIHdpdGggaG9yaXpvbnRhbCBhbmQgdmVydGljYWwgc2Ny
b2xsIGNoYWluaW5nIGRpZmZlcmVudGx5LCBhbmQgdXBkYXRlIHRoZSBkZWx0YSBvZiBXaGVlbEV2
ZW50IGlmIGl0IGRvZXNuJ3QgYmxvY2sgdGhlIHNjcm9sbCBjaGFpbmluZy4KKyAgICAgICAgKFdl
YkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudEludGVybmFsKTogSGFuZGxlIG1f
c2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIGJlZm9yZSBzY3JvbGxpbmcgRnJhbWVWaWV3LCBhbmQgcGFz
cyBtX3Njcm9sbENoYWluaW5nQmxvY2tlciB0byBwYXJlbnQgZnJhbWUgYWZ0ZXIgc2Nyb2xsaW5n
IEZyYW1lVmlldy4gCisgICAgICAgIChXZWJDb3JlOjpkaWRTY3JvbGxJblNjcm9sbGFibGVBcmVh
KTogRmlsdGVyIHRoZSBzY3JvbGwgZGVsdGEgYnkgdGhlIFNjcm9sbENoYWluaW5nQmxvY2tlciB2
YWx1ZS4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudElu
QXBwcm9wcmlhdGVFbmNsb3NpbmdCb3gpOiBCbG9jayBzY3JvbGwgY2hhaW5pbmcgYWNjb3JkaW5n
IHRvIHRoZSB2YWx1ZSBvZiBtX3Njcm9sbENoYWluaW5nQmxvY2tlci4KKyAgICAgICAgKFdlYkNv
cmU6OkV2ZW50SGFuZGxlcjo6dXBkYXRlU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKToKKyAgICAgICAg
KFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6cmVzZXRTY3JvbGxDaGFpbmluZ0Jsb2NrZXIpOgorICAg
ICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmg6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojpob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2
aW9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6dmVydGljYWxPdmVyc2Ny
b2xsQmVoYXZpb3IgY29uc3QpOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3Lmg6CisgICAgICAg
ICogcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6ZmluZEVu
Y2xvc2luZ1Njcm9sbGFibGVDb250YWluZXIpOiBVcGRhdGUgdGhlIHZhbHVlIG9mIFNjcm9sbENo
YWluaW5nQmxvY2tlciBhbmQgcmV0dXJuIG51bGwgaWYgc2hvdWxkQmxvY2tTY3JvbGxDaGFpbmlu
ZygpLgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpkZXRlcm1pbmVXaGVlbEV2ZW50
VGFyZ2V0KTogSWYgc2hvdWxkQmxvY2tTY3JvbGxDaGFpbmluZygpLCBGcmFtZVZpZXcgd2lsbCBi
ZSB0aGUgbGF0Y2hlZCBzY3JvbGwgdGFyZ2V0LgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5k
bGVyOjpzY3JvbGxDaGFpbmluZ0Jsb2NrZXJDaGFuZ2VkQnlTdWJmcmFtZSk6IERpdHRvLgorICAg
ICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1XaGVlbEV2ZW50Ojp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbCk6IE1v
dmVkIGZyb20gU2Nyb2xsQ29udHJvbGxlci5tbQorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFR5
cGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxDaGFpbmluZ0Jsb2NrZXI6OnNob3VsZEJs
b2NrU2Nyb2xsQ2hhaW5pbmcpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQ2hhaW5pbmdCbG9j
a2VyOjpmaWx0ZXJEZWx0YSk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWE6OmdldFNjcm9sbENoYWluaW5nQmxv
Y2tlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGFibGVBcmVhOjpob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9y
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGFibGVBcmVhOjp2ZXJ0aWNhbE92ZXJz
Y3JvbGxCZWhhdmlvciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1h
dG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JNYWM6OnNob3VsZEZv
cndhcmRXaGVlbEV2ZW50c1RvUGFyZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bEFuaW1hdG9yTWFjOjphbGxvd3NWZXJ0aWNhbFN0cmV0Y2hpbmcgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JNYWM6OmFsbG93c0hvcml6b250YWxTdHJldGNoaW5nIGNv
bnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xsQ29udHJvbGxlci5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbENvbnRyb2xsZXI6OmRpcmVjdGlvbkZyb21FdmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxDb250cm9sbGVyOjp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNW
ZXJ0aWNhbCk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xs
YWJsZUFyZWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJl
YTo6aG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvciBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllclNjcm9sbGFibGVBcmVhOjp2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvciBj
b25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuaDoK
KwogMjAyMS0wMy0xNSAgSW1hbm9sIEZlcm5hbmRleiAgPGlmZXJuYW5kZXpAaWdhbGlhLmNvbT4K
IAogICAgICAgICBTcGxpdCBXZWJYUiBmZWF0dXJlcyBpbnRvIGVuYWJsZWRGZWF0dXJlcywgc3Vw
cG9ydGVkRmVhdHVyZXMgYW5kIHJlcXVlc3RlZEZlYXR1cmVzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cKaW5kZXggYzc3YzBmMjg2M2UxODkyODcxY2JhMDg5ZTAwMDVjMjU0MWQ4NzdhZC4uYjU3
ZGE0MWYyMzY2NjE5NjE0MmUwZjdmOTAzMWFiNDk2ZGRjNThkYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIxLTAzLTE1ICBDYXRoaWUgQ2hlbiAgPGNh
dGhpZWNoZW5AaWdhbGlhLmNvbT4KKworICAgICAgICBTdXBwb3J0IENTUyBvdmVyc2Nyb2xsLWJl
aGF2aW9yIGZvciBzeW5jaHJvbm91cyBzY3JvbGwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjk2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEJhc2VkIG9uIEZyw6lkw6lyaWMgV2FuZydzIHBhdGNoLgor
CisgICAgICAgIE5lZWQgdG8gZmluZCBhIHdheSB0byBibG9jayB0aGUgY3Jvc3MtZnJhbWUgc2Ny
b2xsIGNoYWluaW5nIGluIFdLMS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06
CisgICAgICAgICgtW1dlYkhUTUxWaWV3IHNjcm9sbFdoZWVsOl0pOgorCiAyMDIxLTAzLTExICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgSW50cm9kdWNlIFdvcmtR
dWV1ZTo6bWFpbigpIHRvIGdldCB0aGUgbWFpbiB0aHJlYWQncyB3b3JrIHF1ZXVlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggMmYxOGUxZWVlOTg0ZTkwMWQxNGU1Yjk1MmVj
NTFhMGIyM2FlNGU4Yi4uMWIwMDU3YWIwYzdlMjBhMGU2ZDhhMDA0YWY2NzZkMzNjYzMxNDdjYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtMjczOSw2ICsyNzM5LDEwIEBA
IHZvaWQgRXZlbnRIYW5kbGVyOjpkZXRlcm1pbmVXaGVlbEV2ZW50VGFyZ2V0KGNvbnN0IFBsYXRm
b3JtV2hlZWxFdmVudCYsIFJlZlB0cjxFCiB7CiB9CiAKK3ZvaWQgRXZlbnRIYW5kbGVyOjpzY3Jv
bGxDaGFpbmluZ0Jsb2NrZXJDaGFuZ2VkQnlTdWJmcmFtZShjb25zdCBQbGF0Zm9ybVdoZWVsRXZl
bnQmLCBSZWZQdHI8RWxlbWVudD4mLCBXZWFrUHRyPFNjcm9sbGFibGVBcmVhPiYsIGJvb2wmKQor
eworfQorCiB2b2lkIEV2ZW50SGFuZGxlcjo6cmVjb3JkV2hlZWxFdmVudEZvckRlbHRhRmlsdGVy
KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgZXZlbnQpCiB7CiAgICAgaWYgKGF1dG8qIHBhZ2Ug
PSBtX2ZyYW1lLnBhZ2UoKSkKQEAgLTI4NTcsNiArMjg2MSwzMyBAQCBib29sIEV2ZW50SGFuZGxl
cjo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQs
IE9wdGlvbgogICAgIHJldHVybiBoYW5kbGVkOwogfQogCitzdGF0aWMgdm9pZCBwcm9wYWdhdGVT
Y3JvbGxDaGFpbmluZ0Jsb2NrZXJUb1BhcmVudEZyYW1lKEZyYW1lJiBmcmFtZSwgU2Nyb2xsQ2hh
aW5pbmdCbG9ja2VyJiBibG9ja2VyKQoreworICAgIGlmICghZnJhbWUudmlldygpKQorICAgICAg
ICByZXR1cm47CisgICAgaWYgKGF1dG8qIHBhcmVudCA9IGZyYW1lLnRyZWUoKS5wYXJlbnQoKSkg
eworICAgICAgICBmcmFtZS52aWV3KCktPmdldFNjcm9sbENoYWluaW5nQmxvY2tlcihibG9ja2Vy
KTsKKyAgICAgICAgcGFyZW50LT5ldmVudEhhbmRsZXIoKS51cGRhdGVTY3JvbGxDaGFpbmluZ0Js
b2NrZXIoYmxvY2tlcik7CisgICAgfQorfQorCitzdGF0aWMgYm9vbCBoYW5kbGVTY3JvbGxDaGFp
bmluZ0Jsb2NrZXJCZWZvcmVTY3JvbGxpbmdGcmFtZVZpZXcoUGxhdGZvcm1XaGVlbEV2ZW50JiB3
aGVlbEV2ZW50LCBTY3JvbGxDaGFpbmluZ0Jsb2NrZXIgc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLCBi
b29sJiBoYW5kbGVkRXZlbnQpCit7CisgICAgRmxvYXRTaXplIGZpbHRlcmVkRGVsdGEod2hlZWxF
dmVudC5kZWx0YVgoKSwgd2hlZWxFdmVudC5kZWx0YVkoKSk7CisgICAgYXV0byBiaWFzZWREZWx0
YSA9IFBsYXRmb3JtV2hlZWxFdmVudDo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwo
ZmlsdGVyZWREZWx0YSk7CisgICAgaWYgKFNjcm9sbENoYWluaW5nQmxvY2tlcjo6c2hvdWxkQmxv
Y2tTY3JvbGxDaGFpbmluZyhzY3JvbGxDaGFpbmluZ0Jsb2NrZXIsIGJpYXNlZERlbHRhKSkgewor
ICAgICAgICBpZiAoU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyOjpzaG91bGRCbG9ja0hvcml6b250YWxT
Y3JvbGxDaGFpbmluZyhzY3JvbGxDaGFpbmluZ0Jsb2NrZXIsIGJpYXNlZERlbHRhKSkKKyAgICAg
ICAgICAgIGhhbmRsZWRFdmVudCA9IGZhbHNlOworICAgICAgICBlbHNlCisgICAgICAgICAgICBo
YW5kbGVkRXZlbnQgPSB0cnVlOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBT
Y3JvbGxDaGFpbmluZ0Jsb2NrZXI6OmZpbHRlckRlbHRhKHNjcm9sbENoYWluaW5nQmxvY2tlciwg
Ymlhc2VkRGVsdGEsIGZpbHRlcmVkRGVsdGEpOworICAgIHdoZWVsRXZlbnQgPSB3aGVlbEV2ZW50
LmNvcHlXaXRoRGVsdGFzQW5kVmVsb2NpdHkoZmlsdGVyZWREZWx0YS53aWR0aCgpLCBmaWx0ZXJl
ZERlbHRhLmhlaWdodCgpLCB3aGVlbEV2ZW50LnNjcm9sbGluZ1ZlbG9jaXR5KCkpOworICAgIHJl
dHVybiBmYWxzZTsKK30KKwogYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnRJbnRl
cm5hbChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50LCBPcHRpb25TZXQ8V2hlZWxFdmVu
dFByb2Nlc3NpbmdTdGVwcz4gcHJvY2Vzc2luZ1N0ZXBzLCBPcHRpb25TZXQ8RXZlbnRIYW5kbGlu
Zz4mIGhhbmRsaW5nKQogewogICAgIGF1dG8qIGRvY3VtZW50ID0gbV9mcmFtZS5kb2N1bWVudCgp
OwpAQCAtMjg4OSw2ICsyOTIwLDggQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZl
bnRJbnRlcm5hbChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50LCBPcHQKICAgICBhdXRv
IGRlZmVycmVyID0gV2hlZWxFdmVudFRlc3RNb25pdG9yQ29tcGxldGlvbkRlZmVycmVyIHsgbW9u
aXRvci5nZXQoKSwgdGhpcywgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpEZWZlclJlYXNvbjo6SGFu
ZGxpbmdXaGVlbEV2ZW50T25NYWluVGhyZWFkIH07CiAjZW5kaWYKIAorICAgIHJlc2V0U2Nyb2xs
Q2hhaW5pbmdCbG9ja2VyKCk7CisKICAgICBtX2lzSGFuZGxpbmdXaGVlbEV2ZW50ID0gdHJ1ZTsK
ICAgICBhdXRvIGFsbG93c1Njcm9sbGluZ1N0YXRlID0gU2V0Rm9yU2NvcGUobV9jdXJyZW50V2hl
ZWxFdmVudEFsbG93c1Njcm9sbGluZywgcHJvY2Vzc2luZ1N0ZXBzLmNvbnRhaW5zKFdoZWVsRXZl
bnRQcm9jZXNzaW5nU3RlcHM6Ok1haW5UaHJlYWRGb3JTY3JvbGxpbmcpKTsKICAgICAKQEAgLTI5
MTMsMTEgKzI5NDYsMTYgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnRJbnRl
cm5hbChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50LCBPcHQKICAgICAvLyBpdHNlbGYg
ZmluZHMgYW5kIHRyaWVzIHRvIHNjcm9sbCBvdmVyZmxvdyBzY3JvbGxlcnMuCiAgICAgZGV0ZXJt
aW5lV2hlZWxFdmVudFRhcmdldChldmVudCwgZWxlbWVudCwgc2Nyb2xsYWJsZUFyZWEsIGlzT3Zl
cldpZGdldCk7CiAKKyAgICBhdXRvIG9sZEJsb2NrZXIgPSBtX3Njcm9sbENoYWluaW5nQmxvY2tl
cjsKICAgICBpZiAoZWxlbWVudCkgewogICAgICAgICBpZiAoaXNPdmVyV2lkZ2V0KSB7CiAgICAg
ICAgICAgICBpZiAoV2Vha1B0cjxXaWRnZXQ+IHdpZGdldCA9IHdpZGdldEZvckVsZW1lbnQoKmVs
ZW1lbnQpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHBhc3NXaGVlbEV2ZW50VG9XaWRnZXQoZXZl
bnQsICp3aWRnZXQuZ2V0KCksIHByb2Nlc3NpbmdTdGVwcykpCiAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBjb21wbGV0ZVdpZGdldFdoZWVsRXZlbnQoZXZlbnQsIHdpZGdldCwgc2Nyb2xsYWJs
ZUFyZWEpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKG1fc2Nyb2xsQ2hhaW5pbmdCbG9ja2Vy
LmJsb2NrWCAhPSBvbGRCbG9ja2VyLmJsb2NrWCB8fCBtX3Njcm9sbENoYWluaW5nQmxvY2tlci5i
bG9ja1kgIT0gb2xkQmxvY2tlci5ibG9ja1kpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gSWYg
bV9zY3JvbGxDaGFpbmluZ0Jsb2NrZXIgaXMgY2hhbmdlZCBpbiBzdWJmcmFtZXMsIHRoZSBsYWNo
ZWQgc3RhdGUgc2hvdWxkIGJlIGNhbGN1bGF0ZWQgYWdhaW4uCisgICAgICAgICAgICAgICAgICAg
IHNjcm9sbENoYWluaW5nQmxvY2tlckNoYW5nZWRCeVN1YmZyYW1lKGV2ZW50LCBlbGVtZW50LCBz
Y3JvbGxhYmxlQXJlYSwgaXNPdmVyV2lkZ2V0KTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KIApAQCAtMjk1MiwxMSArMjk5MCwxNyBAQCBib29sIEV2ZW50SGFu
ZGxlcjo6aGFuZGxlV2hlZWxFdmVudEludGVybmFsKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYg
ZXZlbnQsIE9wdAogI2VuZGlmCiAKICAgICBpZiAoYWxsb3dTY3JvbGxpbmcpIHsKLSAgICAgICAg
Ly8gRklYTUU6IHByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKCkgaXMgb25seSBjYWxsZWQg
Zm9yIEZyYW1lVmlldyBzY3JvbGxpbmcsIG5vdCBvdmVyZmxvdyBzY3JvbGxpbmcsIHdoaWNoIGlz
IGNvbmZ1c2luZy4KLSAgICAgICAgaGFuZGxlZEV2ZW50ID0gcHJvY2Vzc1doZWVsRXZlbnRGb3JT
Y3JvbGxpbmcoZXZlbnQsIHNjcm9sbGFibGVBcmVhLCBoYW5kbGluZyk7Ci0gICAgICAgIHByb2Nl
c3NXaGVlbEV2ZW50Rm9yU2Nyb2xsU25hcChldmVudCwgc2Nyb2xsYWJsZUFyZWEpOworICAgICAg
ICBQbGF0Zm9ybVdoZWVsRXZlbnQgYWRqdXN0ZWRXaGVlbEV2ZW50ID0gUGxhdGZvcm1XaGVlbEV2
ZW50KGV2ZW50KTsKKyAgICAgICAgaWYgKCFoYW5kbGVTY3JvbGxDaGFpbmluZ0Jsb2NrZXJCZWZv
cmVTY3JvbGxpbmdGcmFtZVZpZXcoYWRqdXN0ZWRXaGVlbEV2ZW50LCBtX3Njcm9sbENoYWluaW5n
QmxvY2tlciwgaGFuZGxlZEV2ZW50KSkgeworICAgICAgICAgICAgLy8gRklYTUU6IHByb2Nlc3NX
aGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKCkgaXMgb25seSBjYWxsZWQgZm9yIEZyYW1lVmlldyBzY3Jv
bGxpbmcsIG5vdCBvdmVyZmxvdyBzY3JvbGxpbmcsIHdoaWNoIGlzIGNvbmZ1c2luZy4KKyAgICAg
ICAgICAgIGhhbmRsZWRFdmVudCA9IHByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKGFkanVz
dGVkV2hlZWxFdmVudCwgc2Nyb2xsYWJsZUFyZWEsIGhhbmRsaW5nKTsKKyAgICAgICAgICAgIHBy
b2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsU25hcChhZGp1c3RlZFdoZWVsRXZlbnQsIHNjcm9sbGFi
bGVBcmVhKTsKKyAgICAgICAgfQogICAgIH0KIAorICAgIC8vIFBhc3MgdGhlIHZhbHVlIG9mIG1f
c2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIHRvIHRoZSBwYXJlbnQgZnJhbWUuCisgICAgaWYgKCFoYW5k
bGVkRXZlbnQgJiYgIW1fZnJhbWUuaXNNYWluRnJhbWUoKSkKKyAgICAgICAgcHJvcGFnYXRlU2Ny
b2xsQ2hhaW5pbmdCbG9ja2VyVG9QYXJlbnRGcmFtZShtX2ZyYW1lLCBtX3Njcm9sbENoYWluaW5n
QmxvY2tlcik7CiAgICAgcmV0dXJuIGhhbmRsZWRFdmVudDsKIH0KIApAQCAtMjk3MSwyMCArMzAx
NSwyMyBAQCBzdGF0aWMgdm9pZCBoYW5kbGVXaGVlbEV2ZW50UGhhc2VJblNjcm9sbGFibGVBcmVh
KFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYQogI2VuZGlmCiB9CiAKLXN0YXRpYyBib29s
IGRpZFNjcm9sbEluU2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVh
LCBjb25zdCBXaGVlbEV2ZW50JiB3aGVlbEV2ZW50KQorc3RhdGljIGJvb2wgZGlkU2Nyb2xsSW5T
Y3JvbGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEsIGNvbnN0IFdoZWVs
RXZlbnQmIHdoZWVsRXZlbnQsIGNvbnN0IFNjcm9sbENoYWluaW5nQmxvY2tlciYgYmxvY2tlcikK
IHsKKyAgICBGbG9hdFNpemUgZmlsdGVyZWREZWx0YSh3aGVlbEV2ZW50LmRlbHRhWCgpLCB3aGVl
bEV2ZW50LmRlbHRhWSgpKTsKKyAgICBhdXRvIGJpYXNlZERlbHRhID0gUGxhdGZvcm1XaGVlbEV2
ZW50Ojp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbChmaWx0ZXJlZERlbHRhKTsKKyAg
ICBTY3JvbGxDaGFpbmluZ0Jsb2NrZXI6OmZpbHRlckRlbHRhKGJsb2NrZXIsIGJpYXNlZERlbHRh
LCBmaWx0ZXJlZERlbHRhKTsKICAgICBTY3JvbGxHcmFudWxhcml0eSBzY3JvbGxHcmFudWxhcml0
eSA9IHdoZWVsR3JhbnVsYXJpdHlUb1Njcm9sbEdyYW51bGFyaXR5KHdoZWVsRXZlbnQuZGVsdGFN
b2RlKCkpOwogICAgIGJvb2wgZGlkSGFuZGxlV2hlZWxFdmVudCA9IGZhbHNlOwotICAgIGlmIChm
bG9hdCBhYnNvbHV0ZURlbHRhID0gc3RkOjphYnMod2hlZWxFdmVudC5kZWx0YVgoKSkpCi0gICAg
ICAgIGRpZEhhbmRsZVdoZWVsRXZlbnQgfD0gc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsKHdoZWVsRXZl
bnQuZGVsdGFYKCkgPiAwID8gU2Nyb2xsUmlnaHQgOiBTY3JvbGxMZWZ0LCBzY3JvbGxHcmFudWxh
cml0eSwgYWJzb2x1dGVEZWx0YSk7CisgICAgaWYgKGZsb2F0IGFic29sdXRlRGVsdGEgPSBzdGQ6
OmFicyhmaWx0ZXJlZERlbHRhLndpZHRoKCkpKQorICAgICAgICBkaWRIYW5kbGVXaGVlbEV2ZW50
IHw9IHNjcm9sbGFibGVBcmVhLnNjcm9sbChmaWx0ZXJlZERlbHRhLndpZHRoKCkgPiAwID8gU2Ny
b2xsUmlnaHQgOiBTY3JvbGxMZWZ0LCBzY3JvbGxHcmFudWxhcml0eSwgYWJzb2x1dGVEZWx0YSk7
CiAKLSAgICBpZiAoZmxvYXQgYWJzb2x1dGVEZWx0YSA9IHN0ZDo6YWJzKHdoZWVsRXZlbnQuZGVs
dGFZKCkpKQotICAgICAgICBkaWRIYW5kbGVXaGVlbEV2ZW50IHw9IHNjcm9sbGFibGVBcmVhLnNj
cm9sbCh3aGVlbEV2ZW50LmRlbHRhWSgpID4gMCA/IFNjcm9sbERvd24gOiBTY3JvbGxVcCwgc2Ny
b2xsR3JhbnVsYXJpdHksIGFic29sdXRlRGVsdGEpOworICAgIGlmIChmbG9hdCBhYnNvbHV0ZURl
bHRhID0gc3RkOjphYnMoZmlsdGVyZWREZWx0YS5oZWlnaHQoKSkpCisgICAgICAgIGRpZEhhbmRs
ZVdoZWVsRXZlbnQgfD0gc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsKGZpbHRlcmVkRGVsdGEuaGVpZ2h0
KCkgPiAwID8gU2Nyb2xsRG93biA6IFNjcm9sbFVwLCBzY3JvbGxHcmFudWxhcml0eSwgYWJzb2x1
dGVEZWx0YSk7CiAKICAgICByZXR1cm4gZGlkSGFuZGxlV2hlZWxFdmVudDsKIH0KIAotYm9vbCBF
dmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94KE5v
ZGUqIHN0YXJ0Tm9kZSwgY29uc3QgV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgY29uc3QgRmxvYXRT
aXplJiBmaWx0ZXJlZFBsYXRmb3JtRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyZWRWZWxv
Y2l0eSwgT3B0aW9uU2V0PEV2ZW50SGFuZGxpbmc+IGV2ZW50SGFuZGxpbmcpCitib29sIEV2ZW50
SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudEluQXBwcm9wcmlhdGVFbmNsb3NpbmdCb3goTm9kZSog
c3RhcnROb2RlLCBjb25zdCBXaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBGbG9hdFNpemUmIGZpbHRl
cmVkUGxhdGZvcm1EZWx0YSwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJlZFZlbG9jaXR5LCBPcHRp
b25TZXQ8RXZlbnRIYW5kbGluZz4gZXZlbnRIYW5kbGluZykKIHsKICAgICBib29sIHNob3VsZEhh
bmRsZUV2ZW50ID0gd2hlZWxFdmVudC5kZWx0YVgoKSB8fCB3aGVlbEV2ZW50LmRlbHRhWSgpOwog
I2lmIEVOQUJMRShXSEVFTF9FVkVOVF9MQVRDSElORykKQEAgLTMwMDYsMjEgKzMwNTMsMzIgQEAg
Ym9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5n
Qm94KE5vZGUqIHN0YXJ0Tm9kZSwgY28KICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYg
KGlzPFJlbmRlckxpc3RCb3g+KGluaXRpYWxFbmNsb3NpbmdCb3gpKQotICAgICAgICByZXR1cm4g
ZGlkU2Nyb2xsSW5TY3JvbGxhYmxlQXJlYShkb3duY2FzdDxSZW5kZXJMaXN0Qm94Pihpbml0aWFs
RW5jbG9zaW5nQm94KSwgd2hlZWxFdmVudCk7CisgICAgICAgIHJldHVybiBkaWRTY3JvbGxJblNj
cm9sbGFibGVBcmVhKGRvd25jYXN0PFJlbmRlckxpc3RCb3g+KGluaXRpYWxFbmNsb3NpbmdCb3gp
LCB3aGVlbEV2ZW50LCBtX3Njcm9sbENoYWluaW5nQmxvY2tlcik7CiAKKyAgICBhdXRvIGJpYXNl
ZERlbHRhID0gUGxhdGZvcm1XaGVlbEV2ZW50Ojp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0
aWNhbChGbG9hdFNpemUod2hlZWxFdmVudC5kZWx0YVgoKSwgd2hlZWxFdmVudC5kZWx0YVkoKSkp
OwogICAgIFJlbmRlckJveCogY3VycmVudEVuY2xvc2luZ0JveCA9ICZpbml0aWFsRW5jbG9zaW5n
Qm94OwogICAgIHdoaWxlIChjdXJyZW50RW5jbG9zaW5nQm94KSB7CisgICAgICAgIGlmIChTY3Jv
bGxDaGFpbmluZ0Jsb2NrZXI6OnNob3VsZEJsb2NrU2Nyb2xsQ2hhaW5pbmcobV9zY3JvbGxDaGFp
bmluZ0Jsb2NrZXIsIGJpYXNlZERlbHRhKSkgeworICAgICAgICAgICAgaWYgKFNjcm9sbENoYWlu
aW5nQmxvY2tlcjo6c2hvdWxkQmxvY2tIb3Jpem9udGFsU2Nyb2xsQ2hhaW5pbmcobV9zY3JvbGxD
aGFpbmluZ0Jsb2NrZXIsIGJpYXNlZERlbHRhKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCiAgICAgICAgIGlmIChh
dXRvKiBib3hMYXllciA9IGN1cnJlbnRFbmNsb3NpbmdCb3gtPmxheWVyKCkgPyBjdXJyZW50RW5j
bG9zaW5nQm94LT5sYXllcigpLT5zY3JvbGxhYmxlQXJlYSgpIDogbnVsbHB0cikgewogICAgICAg
ICAgICAgYXV0byBwbGF0Zm9ybUV2ZW50ID0gd2hlZWxFdmVudC51bmRlcmx5aW5nUGxhdGZvcm1F
dmVudCgpOwogICAgICAgICAgICAgYm9vbCBzY3JvbGxpbmdXYXNIYW5kbGVkOwogICAgICAgICAg
ICAgaWYgKHBsYXRmb3JtRXZlbnQpIHsKKyAgICAgICAgICAgICAgICBTY3JvbGxDaGFpbmluZ0Js
b2NrZXI6OmZpbHRlckRlbHRhKG1fc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLCBiaWFzZWREZWx0YSwg
ZmlsdGVyZWRQbGF0Zm9ybURlbHRhKTsKICAgICAgICAgICAgICAgICBhdXRvIGNvcGllZEV2ZW50
ID0gcGxhdGZvcm1FdmVudC0+Y29weVdpdGhEZWx0YXNBbmRWZWxvY2l0eShmaWx0ZXJlZFBsYXRm
b3JtRGVsdGEud2lkdGgoKSwgZmlsdGVyZWRQbGF0Zm9ybURlbHRhLmhlaWdodCgpLCBmaWx0ZXJl
ZFZlbG9jaXR5KTsKICAgICAgICAgICAgICAgICBzY3JvbGxpbmdXYXNIYW5kbGVkID0gaGFuZGxl
V2hlZWxFdmVudEluU2Nyb2xsYWJsZUFyZWEoY29waWVkRXZlbnQsICpib3hMYXllciwgZXZlbnRI
YW5kbGluZyk7CiAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBzY3JvbGxpbmdX
YXNIYW5kbGVkID0gZGlkU2Nyb2xsSW5TY3JvbGxhYmxlQXJlYSgqYm94TGF5ZXIsIHdoZWVsRXZl
bnQpOworICAgICAgICAgICAgICAgIHNjcm9sbGluZ1dhc0hhbmRsZWQgPSBkaWRTY3JvbGxJblNj
cm9sbGFibGVBcmVhKCpib3hMYXllciwgd2hlZWxFdmVudCwgbV9zY3JvbGxDaGFpbmluZ0Jsb2Nr
ZXIpOwogCiAgICAgICAgICAgICBpZiAoc2Nyb2xsaW5nV2FzSGFuZGxlZCkKICAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAgICAgaWYgKGN1cnJlbnRFbmNsb3NpbmdCb3gt
PmVsZW1lbnQoKSAhPSBjdXJyZW50RW5jbG9zaW5nQm94LT5kb2N1bWVudCgpLmRvY3VtZW50RWxl
bWVudCgpKQorICAgICAgICAgICAgICAgIGJveExheWVyLT5nZXRTY3JvbGxDaGFpbmluZ0Jsb2Nr
ZXIobV9zY3JvbGxDaGFpbmluZ0Jsb2NrZXIpOwogICAgICAgICB9CiAKICAgICAgICAgY3VycmVu
dEVuY2xvc2luZ0JveCA9IGN1cnJlbnRFbmNsb3NpbmdCb3gtPmNvbnRhaW5pbmdCbG9jaygpOwpA
QCAtNDYzNCw0ICs0NjkyLDE1IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpwYXNzTW91c2VNb3ZlRXZl
bnRUb1N1YmZyYW1lKE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIG1vCiB9CiAjZW5kaWYg
Ly8gIVBMQVRGT1JNKENPQ09BKSAmJiAhUExBVEZPUk0oV0lOKQogCit2b2lkIEV2ZW50SGFuZGxl
cjo6dXBkYXRlU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKGNvbnN0IFNjcm9sbENoYWluaW5nQmxvY2tl
ciYgYmxvY2tlcikKK3sKKyAgICBtX3Njcm9sbENoYWluaW5nQmxvY2tlci5ibG9ja1ggfD0gYmxv
Y2tlci5ibG9ja1g7CisgICAgbV9zY3JvbGxDaGFpbmluZ0Jsb2NrZXIuYmxvY2tZIHw9IGJsb2Nr
ZXIuYmxvY2tZOworfQorCit2b2lkIEV2ZW50SGFuZGxlcjo6cmVzZXRTY3JvbGxDaGFpbmluZ0Js
b2NrZXIoKQoreworICAgIG1fc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyID0geyBmYWxzZSwgZmFsc2Ug
fTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVy
LmgKaW5kZXggNWQwNDIwMzhiZjM0YmY4OWZmZTNkYjk5NDc2MzczNzg4OTQ1Mjg3OS4uZjFlZGUx
NjgzMTQ4ODE2N2UzN2Q1ZjJlYzFmZjcxZDUxZjFlYWY4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50
SGFuZGxlci5oCkBAIC0yMTQsNiArMjE0LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGRlZmF1bHRX
aGVlbEV2ZW50SGFuZGxlcihOb2RlKiwgV2hlZWxFdmVudCYpOwogICAgIHZvaWQgd2hlZWxFdmVu
dFdhc1Byb2Nlc3NlZEJ5TWFpblRocmVhZChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBPcHRp
b25TZXQ8RXZlbnRIYW5kbGluZz4pOwogCisgICAgdm9pZCB1cGRhdGVTY3JvbGxDaGFpbmluZ0Js
b2NrZXIoY29uc3QgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyJik7CisgICAgdm9pZCByZXNldFNjcm9s
bENoYWluaW5nQmxvY2tlcigpOworICAgIHZvaWQgc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyQ2hhbmdl
ZEJ5U3ViZnJhbWUoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgUmVmUHRyPEVsZW1lbnQ+JiBl
dmVudFRhcmdldCwgV2Vha1B0cjxTY3JvbGxhYmxlQXJlYT4mLCBib29sJiBpc092ZXJXaWRnZXQp
OworCiAgICAgYm9vbCBoYW5kbGVQYXN0ZUdsb2JhbFNlbGVjdGlvbihjb25zdCBQbGF0Zm9ybU1v
dXNlRXZlbnQmKTsKIAogI2lmIEVOQUJMRShJT1NfVE9VQ0hfRVZFTlRTKSB8fCBFTkFCTEUoSU9T
X0dFU1RVUkVfRVZFTlRTKQpAQCAtNDcwLDcgKzQ3NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBw
cm9jZXNzV2hlZWxFdmVudEZvclNjcm9sbFNuYXAoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jiwg
Y29uc3QgV2Vha1B0cjxTY3JvbGxhYmxlQXJlYT4mKTsKICAgICBib29sIGNvbXBsZXRlV2lkZ2V0
V2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBjb25zdCBXZWFrUHRyPFdpZGdl
dD4mLCBjb25zdCBXZWFrUHRyPFNjcm9sbGFibGVBcmVhPiYpOwogCi0gICAgYm9vbCBoYW5kbGVX
aGVlbEV2ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2luZ0JveChOb2RlKiBzdGFydE5vZGUsIGNvbnN0
IFdoZWVsRXZlbnQmLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlcmVkUGxhdGZvcm1EZWx0YSwgY29u
c3QgRmxvYXRTaXplJiBmaWx0ZXJlZFZlbG9jaXR5LCBPcHRpb25TZXQ8RXZlbnRIYW5kbGluZz4p
OworICAgIGJvb2wgaGFuZGxlV2hlZWxFdmVudEluQXBwcm9wcmlhdGVFbmNsb3NpbmdCb3goTm9k
ZSogc3RhcnROb2RlLCBjb25zdCBXaGVlbEV2ZW50JiwgRmxvYXRTaXplJiBmaWx0ZXJlZFBsYXRm
b3JtRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyZWRWZWxvY2l0eSwgT3B0aW9uU2V0PEV2
ZW50SGFuZGxpbmc+KTsKIAogICAgIGJvb2wgaGFuZGxlV2hlZWxFdmVudEluU2Nyb2xsYWJsZUFy
ZWEoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgU2Nyb2xsYWJsZUFyZWEmLCBPcHRpb25TZXQ8
RXZlbnRIYW5kbGluZz4pOwogICAgIE9wdGlvbmFsPFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlPiB1
cGRhdGVXaGVlbEdlc3R1cmVTdGF0ZShjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBPcHRpb25T
ZXQ8RXZlbnRIYW5kbGluZz4pOwpAQCAtNjQ2LDYgKzY1MCw4IEBAIHByaXZhdGU6CiAgICAgSW50
UG9pbnQgbV90YXJnZXRBdXRvc2Nyb2xsUG9zaXRpb25JblVuc2Nyb2xsZWRSb290Vmlld0Nvb3Jk
aW5hdGVzOwogICAgIE9wdGlvbmFsPEludFBvaW50PiBtX2luaXRpYWxUYXJnZXRBdXRvc2Nyb2xs
UG9zaXRpb25JblVuc2Nyb2xsZWRSb290Vmlld0Nvb3JkaW5hdGVzOwogI2VuZGlmCisKKyAgICBT
Y3JvbGxDaGFpbmluZ0Jsb2NrZXIgbV9zY3JvbGxDaGFpbmluZ0Jsb2NrZXIgeyBmYWxzZSwgZmFs
c2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
LmNwcAppbmRleCA2ODNlMzZlZjU1ZjJhOTM1ZDkwYWI1NTBkYzU5NjFhMjBmOTA4YzM5Li5hNjg5
ZGIzZGEwOGNkZWVmMGRhZjQ0YzZmZGFkMDI5YmUzODk4ZTY3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVZpZXcuY3BwCkBAIC00MTksNiArNDE5LDI2IEBAIGJvb2wgRnJhbWVWaWV3OjpkaWRGaXJzdExh
eW91dCgpIGNvbnN0CiAgICAgcmV0dXJuIGxheW91dENvbnRleHQoKS5kaWRGaXJzdExheW91dCgp
OwogfQogCitPdmVyc2Nyb2xsQmVoYXZpb3IgRnJhbWVWaWV3Ojpob3Jpem9udGFsT3ZlcnNjcm9s
bEJlaGF2aW9yKCkgY29uc3QKK3sKKyAgICBhdXRvKiBkb2N1bWVudCA9IGZyYW1lKCkuZG9jdW1l
bnQoKTsKKyAgICBhdXRvIHNjcm9sbGluZ09iamVjdCA9IGRvY3VtZW50ICYmIGRvY3VtZW50LT5k
b2N1bWVudEVsZW1lbnQoKSA/IGRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKS0+cmVuZGVyZXIo
KSA6IG51bGxwdHI7CisgICAgLy8gQW4gZWxlbWVudCB0aGF0IGlzIG5vdCBzY3JvbGwgY29udGFp
bmVyIG11c3QgYWNjZXB0IGJ1dCBpZ25vcmUgdGhlIHZhbHVlcyBvZiB0aGlzIHByb3BlcnR5Lgor
ICAgIGlmIChzY3JvbGxpbmdPYmplY3QgJiYgcmVuZGVyVmlldygpICYmIHJlbmRlclZpZXcoKS0+
Y2FuQmVTY3JvbGxlZEFuZEhhc1Njcm9sbGFibGVBcmVhKCkpCisgICAgICAgIHJldHVybiBzY3Jv
bGxpbmdPYmplY3QtPnN0eWxlKCkub3ZlcnNjcm9sbEJlaGF2aW9yWCgpOworICAgIHJldHVybiBT
Y3JvbGxhYmxlQXJlYTo6aG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpOworfQorCitPdmVy
c2Nyb2xsQmVoYXZpb3IgRnJhbWVWaWV3Ojp2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpICBj
b25zdAoreworICAgIGF1dG8qIGRvY3VtZW50ID0gZnJhbWUoKS5kb2N1bWVudCgpOworICAgIGF1
dG8gc2Nyb2xsaW5nT2JqZWN0ID0gZG9jdW1lbnQgJiYgZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVu
dCgpID8gZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpLT5yZW5kZXJlcigpIDogbnVsbHB0cjsK
KyAgICAvLyBBbiBlbGVtZW50IHRoYXQgaXMgbm90IHNjcm9sbCBjb250YWluZXIgbXVzdCBhY2Nl
cHQgYnV0IGlnbm9yZSB0aGUgdmFsdWVzIG9mIHRoaXMgcHJvcGVydHkuCisgICAgaWYgKHNjcm9s
bGluZ09iamVjdCAmJiByZW5kZXJWaWV3KCkgJiYgcmVuZGVyVmlldygpLT5jYW5CZVNjcm9sbGVk
QW5kSGFzU2Nyb2xsYWJsZUFyZWEoKSkKKyAgICAgICAgcmV0dXJuIHNjcm9sbGluZ09iamVjdC0+
c3R5bGUoKS5vdmVyc2Nyb2xsQmVoYXZpb3JZKCk7CisgICAgcmV0dXJuIFNjcm9sbGFibGVBcmVh
Ojp2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpOworfQorCiB2b2lkIEZyYW1lVmlldzo6aW52
YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICBpZiAoIXBhcmVudCgpKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCBjZTdlOWExNjdjYTA3NGY4YzIxYzFmZDZlYTc1
ZjkxNWFmYWE0NWE2Li5iMTNjN2IyYmRkMGU2MmI5YmYzODYzOGFmZjA1ZGM1MmVmN2JkZjVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTY4MSw2ICs2ODEsOSBAQCBwdWJsaWM6CiAKICAg
ICBTdHJpbmcgZGVidWdEZXNjcmlwdGlvbigpIGNvbnN0IGZpbmFsOwogCisgICAgT3ZlcnNjcm9s
bEJlaGF2aW9yIGhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdCBmaW5hbDsKKyAg
ICBPdmVyc2Nyb2xsQmVoYXZpb3IgdmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdCBm
aW5hbDsKKwogICAgIC8vIFNjcm9sbFZpZXcKICAgICB2b2lkIHVwZGF0ZVNjcm9sbGJhclN0ZXBz
KCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50
SGFuZGxlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5t
bQppbmRleCA4NjQ2NWY4MDVlMjA1MzU2ODcwNjRjMmZmNzYwNGQ1Yjg5YTQyNDdkLi41OTYyMGI1
MTVmMGUwMmM3ZDMyNTk5ODczNTYyZjBiYjJkZDk3ZDViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tCkBAIC03OTcsMTMgKzc5NywxOCBAQCBzdGF0aWMgU2Ny
b2xsYWJsZUFyZWEqIHNjcm9sbGFibGVBcmVhRm9yQm94KFJlbmRlckJveCYgYm94KQogfQogCiAv
LyBGSVhNRTogVGhpcyBjb3VsZCBiZSB3cml0dGVuIGluIHRlcm1zIG9mIFNjcm9sbGFibGVBcmVh
OjplbmNsb3NpbmdTY3JvbGxhYmxlQXJlYSgpLgotc3RhdGljIENvbnRhaW5lck5vZGUqIGZpbmRF
bmNsb3NpbmdTY3JvbGxhYmxlQ29udGFpbmVyKENvbnRhaW5lck5vZGUqIG5vZGUsIGNvbnN0IFBs
YXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCkKKy8vIERvIG5vdCB1cGRhdGUgbV9zY3JvbGxD
aGFpbmluZ0Jsb2NrZXIgaGVyZSwgdXBkYXRlIGl0IGluIEV2ZW50SGFuZGxlcjo6ZGVmYXVsdFdo
ZWVsRXZlbnRIYW5kbGVyIGxhdGVyIHdoZW4gcGFzcyBFdmVudFBhdGgsCisvLyBvdGhlcndpc2Ug
dGhlIFdoZWVsRXZlbnQgZGVsdGEgb2YgZWxlbWVudCB3aXRoICFvdmVyc2Nyb2xsLWJlaGF2aW9y
OmF1dG8gd2lsbCBiZSBjaGFuZ2VkLgorc3RhdGljIENvbnRhaW5lck5vZGUqIGZpbmRFbmNsb3Np
bmdTY3JvbGxhYmxlQ29udGFpbmVyKENvbnRhaW5lck5vZGUqIG5vZGUsIGNvbnN0IFBsYXRmb3Jt
V2hlZWxFdmVudCYgd2hlZWxFdmVudCwgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyJiBzY3JvbGxDaGFp
bmluZ0Jsb2NrZXIpCiB7Ci0gICAgYXV0byBiaWFzZWREZWx0YSA9IFNjcm9sbENvbnRyb2xsZXI6
OndoZWVsRGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRpY2FsKHdoZWVsRXZlbnQpOworICAgIGF1dG8g
Ymlhc2VkRGVsdGEgPSBQbGF0Zm9ybVdoZWVsRXZlbnQ6OndoZWVsRGVsdGFCaWFzaW5nVG93YXJk
c1ZlcnRpY2FsKHdoZWVsRXZlbnQuZGVsdGEoKSk7CiAKICAgICAvLyBGaW5kIHRoZSBmaXJzdCBu
b2RlIHdpdGggYSB2YWxpZCBzY3JvbGxhYmxlIGFyZWEgc3RhcnRpbmcgd2l0aCB0aGUgY3VycmVu
dAogICAgIC8vIG5vZGUgYW5kIHRyYXZlcnNpbmcgaXRzIHBhcmVudHMgKG9yIHNoYWRvdyBob3N0
cykuCiAgICAgZm9yIChDb250YWluZXJOb2RlKiBjYW5kaWRhdGUgPSBub2RlOyBjYW5kaWRhdGU7
IGNhbmRpZGF0ZSA9IGNhbmRpZGF0ZS0+cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpKSB7CisgICAg
ICAgIGlmIChTY3JvbGxDaGFpbmluZ0Jsb2NrZXI6OnNob3VsZEJsb2NrU2Nyb2xsQ2hhaW5pbmco
c2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLCBiaWFzZWREZWx0YSkpCisgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKwogICAgICAgICBpZiAoaXM8SFRNTElGcmFtZUVsZW1lbnQ+KCpjYW5kaWRhdGUp
KQogICAgICAgICAgICAgY29udGludWU7CiAKQEAgLTgxMyw3ICs4MTgsNyBAQCBzdGF0aWMgQ29u
dGFpbmVyTm9kZSogZmluZEVuY2xvc2luZ1Njcm9sbGFibGVDb250YWluZXIoQ29udGFpbmVyTm9k
ZSogbm9kZSwgY29ucwogICAgICAgICBSZW5kZXJCb3gqIGJveCA9IGNhbmRpZGF0ZS0+cmVuZGVy
Qm94KCk7CiAgICAgICAgIGlmICghYm94IHx8ICFib3gtPmNhbkJlU2Nyb2xsZWRBbmRIYXNTY3Jv
bGxhYmxlQXJlYSgpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIAorCiAgICAgICAg
IGF1dG8qIHNjcm9sbGFibGVBcmVhID0gc2Nyb2xsYWJsZUFyZWFGb3JCb3goKmJveCk7CiAgICAg
ICAgIGlmICghc2Nyb2xsYWJsZUFyZWEpCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTgyNiw4
ICs4MzEsMTEgQEAgc3RhdGljIENvbnRhaW5lck5vZGUqIGZpbmRFbmNsb3NpbmdTY3JvbGxhYmxl
Q29udGFpbmVyKENvbnRhaW5lck5vZGUqIG5vZGUsIGNvbnMKIAogICAgICAgICBpZiAoYmlhc2Vk
RGVsdGEud2lkdGgoKSAmJiAhc2Nyb2xsYWJsZUFyZWEtPmlzUGlubmVkRm9yU2Nyb2xsRGVsdGFP
bkF4aXMoLWJpYXNlZERlbHRhLndpZHRoKCksIFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCkp
CiAgICAgICAgICAgICByZXR1cm4gY2FuZGlkYXRlOworCisgICAgICAgIGlmIChjYW5kaWRhdGUg
IT0gY2FuZGlkYXRlLT5kb2N1bWVudCgpLmRvY3VtZW50RWxlbWVudCgpKQorICAgICAgICAgICAg
c2Nyb2xsYWJsZUFyZWEtPmdldFNjcm9sbENoYWluaW5nQmxvY2tlcihzY3JvbGxDaGFpbmluZ0Js
b2NrZXIpOwogICAgIH0KLSAgICAKKwogICAgIHJldHVybiBudWxscHRyOwogfQogCkBAIC04NzIs
MTAgKzg4MCwxMSBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6ZGV0ZXJtaW5lV2hlZWxFdmVudFRhcmdl
dChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbgogICAgIGlmICghdmlldykKICAg
ICAgICAgcmV0dXJuOwogCisgICAgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIGJsb2NrZXIgPSBtX3Nj
cm9sbENoYWluaW5nQmxvY2tlcjsKICAgICBpZiAoZXZlbnRUYXJnZXRJc1BsYXRmb3JtV2lkZ2V0
KHdoZWVsRXZlbnRUYXJnZXQuZ2V0KCkpKQogICAgICAgICBzY3JvbGxhYmxlQXJlYSA9IHNjcm9s
bGFibGVBcmVhRm9yRXZlbnRUYXJnZXQod2hlZWxFdmVudFRhcmdldC5nZXQoKSk7CiAgICAgZWxz
ZSB7Ci0gICAgICAgIGF1dG8qIHNjcm9sbGFibGVDb250YWluZXIgPSBmaW5kRW5jbG9zaW5nU2Ny
b2xsYWJsZUNvbnRhaW5lcih3aGVlbEV2ZW50VGFyZ2V0LmdldCgpLCB3aGVlbEV2ZW50KTsKKyAg
ICAgICAgYXV0byogc2Nyb2xsYWJsZUNvbnRhaW5lciA9IGZpbmRFbmNsb3NpbmdTY3JvbGxhYmxl
Q29udGFpbmVyKHdoZWVsRXZlbnRUYXJnZXQuZ2V0KCksIHdoZWVsRXZlbnQsIGJsb2NrZXIpOwog
ICAgICAgICBpZiAoc2Nyb2xsYWJsZUNvbnRhaW5lcikKICAgICAgICAgICAgIHNjcm9sbGFibGVB
cmVhID0gc2Nyb2xsYWJsZUFyZWFGb3JDb250YWluZXJOb2RlKCpzY3JvbGxhYmxlQ29udGFpbmVy
KTsKICAgICAgICAgZWxzZQpAQCAtODkzLDkgKzkwMiwyMiBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6
ZGV0ZXJtaW5lV2hlZWxFdmVudFRhcmdldChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVs
RXZlbgogICAgIGlmIChtX2ZyYW1lLmlzTWFpbkZyYW1lKCkgJiYgd2hlZWxFdmVudC5pc0dlc3R1
cmVTdGFydCgpKQogICAgICAgICBwYWdlLT53aGVlbEV2ZW50RGVsdGFGaWx0ZXIoKS0+YmVnaW5G
aWx0ZXJpbmdEZWx0YXMoKTsKIAorICAgIC8vIFdoZW4gdGhlIGxhY2hlZCBub2RlIGlzIGRldGVy
bWluZWQsIHdlIHNob3VsZCB1cGRhdGUgbV9zY3JvbGxDaGFpbmluZ0Jsb2NrZXIgaGVyZSwgZm9y
IGl0IHdvbid0IHBhc3MgdGhlIHRyZWUgaW4gRXZlbnRIYW5kbGVyOjpkZWZhdWx0V2hlZWxFdmVu
dEhhbmRsZXIuCisgICAgLy8gT3RoZXJ3aXNlLCBtX3Njcm9sbENoYWluaW5nQmxvY2tlciBzaG91
bGQgYmUgdXBkYXRlIGluIEV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudEluQXBwcm9wcmlh
dGVFbmNsb3NpbmdCb3guCisgICAgdXBkYXRlU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKGJsb2NrZXIp
OwogICAgIHBhZ2UtPnNjcm9sbExhdGNoaW5nQ29udHJvbGxlcigpLnVwZGF0ZUFuZEZldGNoTGF0
Y2hpbmdTdGF0ZUZvckZyYW1lKG1fZnJhbWUsIHdoZWVsRXZlbnQsIHdoZWVsRXZlbnRUYXJnZXQs
IHNjcm9sbGFibGVBcmVhLCBpc092ZXJXaWRnZXQpOwogfQogCisvLyBUaGlzIGZ1bmN0aW9uIGhh
bmRsZXMgdGhlIHNjZW5hcmlvIHRoYXQgbV9zY3JvbGxDaGFpbmluZ0Jsb2NrZXIgaXMgY2hhbmdl
ZCBieSBzdWJmcmFtZS4KKy8vIFRoZSBzdGF0ZSBvZiBzY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIg
aXMgb3V0IG9mIGRhdGUsIG5lZWQgdG8gdXBkYXRlIGl0Lgordm9pZCBFdmVudEhhbmRsZXI6OnNj
cm9sbENoYWluaW5nQmxvY2tlckNoYW5nZWRCeVN1YmZyYW1lKGNvbnN0IFBsYXRmb3JtV2hlZWxF
dmVudCYgZXZlbnQsIFJlZlB0cjxFbGVtZW50PiYgZWxlbWVudCwgV2Vha1B0cjxTY3JvbGxhYmxl
QXJlYT4mIHNjcm9sbGFibGVBcmVhLCBib29sJiBpc092ZXJXaWRnZXQpCit7CisgICAgaWYgKCFl
dmVudC5pc0dlc3R1cmVTdGFydCgpKQorICAgICAgICByZXR1cm47CisgICAgY2xlYXJMYXRjaGVk
U3RhdGUoKTsKKyAgICBkZXRlcm1pbmVXaGVlbEV2ZW50VGFyZ2V0KGV2ZW50LCBlbGVtZW50LCBz
Y3JvbGxhYmxlQXJlYSwgaXNPdmVyV2lkZ2V0KTsKK30KKwogdm9pZCBFdmVudEhhbmRsZXI6OnJl
Y29yZFdoZWVsRXZlbnRGb3JEZWx0YUZpbHRlcihjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdo
ZWVsRXZlbnQpCiB7CiAgICAgYXV0byogcGFnZSA9IG1fZnJhbWUucGFnZSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaAppbmRleCBkNzE2OTM0NmEyNDAy
M2MyYTQ3ODdhZTM0NTQwYTM3NjA3YzBhMmQ1Li42NDE3OTdhNmY0MTg3NTMzOGNhNzFlYTczOTE2
MGQxMGIwNmY4OGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9y
bVdoZWVsRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVs
RXZlbnQuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJGbG9h
dFBvaW50LmgiCisjaW5jbHVkZSAiRmxvYXRTaXplLmgiCiAjaW5jbHVkZSAiSW50UG9pbnQuaCIK
ICNpbmNsdWRlICJQbGF0Zm9ybUV2ZW50LmgiCiAjaW5jbHVkZSA8d3RmL1dpbmRvd3NFeHRyYXMu
aD4KQEAgLTE3NCw2ICsxNzUsOCBAQCBwdWJsaWM6CiAgICAgUGxhdGZvcm1XaGVlbEV2ZW50KEhX
TkQsIFdQQVJBTSwgTFBBUkFNLCBib29sIGlzTW91c2VIV2hlZWwpOwogI2VuZGlmCiAKKyAgICBz
dGF0aWMgRmxvYXRTaXplIHdoZWVsRGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRpY2FsKGNvbnN0IEZs
b2F0U2l6ZSYpOworCiBwcm90ZWN0ZWQ6CiAgICAgUGxhdGZvcm1XaGVlbEV2ZW50R3JhbnVsYXJp
dHkgbV9ncmFudWxhcml0eSB7IFNjcm9sbEJ5UGl4ZWxXaGVlbEV2ZW50IH07CiAgICAgYm9vbCBt
X2RpcmVjdGlvbkludmVydGVkRnJvbURldmljZSB7IGZhbHNlIH07CkBAIC0yNjQsNiArMjY3LDE5
IEBAIGlubGluZSBGbG9hdFBvaW50IFBsYXRmb3JtV2hlZWxFdmVudDo6c3dpcGVWZWxvY2l0eSgp
IGNvbnN0CiAKICNlbmRpZiAvLyBFTkFCTEUoS0lORVRJQ19TQ1JPTExJTkcpCiAKK2lubGluZSBG
bG9hdFNpemUgUGxhdGZvcm1XaGVlbEV2ZW50Ojp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0
aWNhbChjb25zdCBGbG9hdFNpemUmIGRlbHRhKQoreworICAgIGF1dG8gZGVsdGFYID0gZGVsdGEu
d2lkdGgoKTsKKyAgICBhdXRvIGRlbHRhWSA9IGRlbHRhLmhlaWdodCgpOworCisgICAgaWYgKGZh
YnNmKGRlbHRhWSkgPj0gZmFic2YoZGVsdGFYKSkKKyAgICAgICAgZGVsdGFYID0gMDsKKyAgICBl
bHNlCisgICAgICAgIGRlbHRhWSA9IDA7CisKKyAgICByZXR1cm4geyBkZWx0YVgsIGRlbHRhWSB9
OworfQorCiBXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpU
ZXh0U3RyZWFtJiwgY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jik7CiBXRUJDT1JFX0VYUE9SVCBX
VEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgV2hlZWxFdmVudFBy
b2Nlc3NpbmdTdGVwcyk7CiBXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoV1RGOjpUZXh0U3RyZWFtJiwgRXZlbnRIYW5kbGluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsVHlwZXMuaAppbmRleCAwYjFjNDA1NjNlOGNiYjgyMmE5ZmViYTRjMGM0NjVmOGE1NzRh
OTNiLi4yZjA3OGQ0MTQ4ZjcyYmJlYzhiMTk1YzQzODM0OGU2NGM5NzNmY2IzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbFR5cGVzLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25j
ZQogCiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgorI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgogI2lu
Y2x1ZGUgIkludFBvaW50LmgiCiAjaW5jbHVkZSA8Y3N0ZGludD4KICNpbmNsdWRlIDx3dGYvQXNz
ZXJ0aW9ucy5oPgpAQCAtMjU5LDYgKzI2MCw0MSBAQCBlbnVtIGNsYXNzIFNjcm9sbFNuYXBQb2lu
dFNlbGVjdGlvbk1ldGhvZCA6IHVpbnQ4X3QgewogICAgIENsb3Nlc3QsCiB9OwogCitzdHJ1Y3Qg
U2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIHsKKyAgICBib29sIGJsb2NrWCB7IGZhbHNlIH07CisgICAg
Ym9vbCBibG9ja1kgeyBmYWxzZSB9OworCisgICAgc3RhdGljIGJvb2wgc2hvdWxkQmxvY2tIb3Jp
em9udGFsU2Nyb2xsQ2hhaW5pbmcoY29uc3QgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyJiBibG9ja2Vy
LCBjb25zdCBGbG9hdFNpemUmIGJpYXNlZERlbHRhKQorICAgIHsKKyAgICAgICAgaWYgKGJsb2Nr
ZXIuYmxvY2tYICYmICFiaWFzZWREZWx0YS5oZWlnaHQoKSkKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgc2hv
dWxkQmxvY2tTY3JvbGxDaGFpbmluZyhjb25zdCBTY3JvbGxDaGFpbmluZ0Jsb2NrZXImIGJsb2Nr
ZXIsIGNvbnN0IEZsb2F0U2l6ZSYgYmlhc2VkRGVsdGEpCisgICAgeworICAgICAgICBpZiAoKGJs
b2NrZXIuYmxvY2tYICYmIGJsb2NrZXIuYmxvY2tZKQorICAgICAgICAgICAgfHwgKGJsb2NrZXIu
YmxvY2tYICYmICFiaWFzZWREZWx0YS5oZWlnaHQoKSkKKyAgICAgICAgICAgIHx8IChibG9ja2Vy
LmJsb2NrWSAmJiAhYmlhc2VkRGVsdGEud2lkdGgoKSkpCisgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIGZpbHRl
ckRlbHRhKGNvbnN0IFNjcm9sbENoYWluaW5nQmxvY2tlciYgYmxvY2tlciwgY29uc3QgRmxvYXRT
aXplJiBiaWFzZWREZWx0YSwgRmxvYXRTaXplJiBmaWx0ZXJlZERlbHRhKQorICAgIHsKKyAgICAg
ICAgaWYgKGJsb2NrZXIuYmxvY2tYKSB7CisgICAgICAgICAgICBmaWx0ZXJlZERlbHRhLnNldFdp
ZHRoKDApOworICAgICAgICAgICAgaWYgKCFiaWFzZWREZWx0YS5oZWlnaHQoKSkKKyAgICAgICAg
ICAgICAgICBmaWx0ZXJlZERlbHRhLnNldEhlaWdodCgwKTsKKyAgICAgICAgfQorICAgICAgICBp
ZiAoYmxvY2tlci5ibG9ja1kpIHsKKyAgICAgICAgICAgIGZpbHRlcmVkRGVsdGEuc2V0SGVpZ2h0
KDApOworICAgICAgICAgICAgaWYgKCFiaWFzZWREZWx0YS53aWR0aCgpKQorICAgICAgICAgICAg
ICAgIGZpbHRlcmVkRGVsdGEuc2V0V2lkdGgoMCk7CisgICAgICAgIH0KKyAgICB9Cit9OworCiB1
c2luZyBTY3JvbGxiYXJDb250cm9sU3RhdGUgPSB1bnNpZ25lZDsKIHVzaW5nIFNjcm9sbGJhckNv
bnRyb2xQYXJ0TWFzayA9IHVuc2lnbmVkOwogdXNpbmcgU2Nyb2xsaW5nTm9kZUlEID0gdWludDY0
X3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKaW5kZXggNzlm
OWU5ODA5OGE4ZGRjYTJiNDljZTk3N2QyMTQzZTFjYjZjYWY4NS4uZjA1YmNmNTFkMTc4OTg0NWYx
ZTYwNDc4OWJlYjc3ZDU4ZDMyNjVjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsYWJsZUFyZWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bGFibGVBcmVhLmNwcApAQCAtODAzLDYgKzgwMywxMiBAQCB2b2lkIFNjcm9sbGFibGVBcmVhOjpj
b21wdXRlU2Nyb2xsYmFyVmFsdWVBbmRPdmVyaGFuZyhmbG9hdCBjdXJyZW50UG9zaXRpb24sIGZs
bwogICAgIH0KIH0KIAordm9pZCBTY3JvbGxhYmxlQXJlYTo6Z2V0U2Nyb2xsQ2hhaW5pbmdCbG9j
a2VyKFNjcm9sbENoYWluaW5nQmxvY2tlciYgYmxvY2tlcikgY29uc3QKK3sKKyAgICBibG9ja2Vy
LmJsb2NrWCB8PSBob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgIT0gT3ZlcnNjcm9sbEJl
aGF2aW9yOjpBdXRvOworICAgIGJsb2NrZXIuYmxvY2tZIHw9IHZlcnRpY2FsT3ZlcnNjcm9sbEJl
aGF2aW9yKCkgIT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpBdXRvOworfQorCiBUZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJs
ZUFyZWEpCiB7CiAgICAgdHMgPDwgc2Nyb2xsYWJsZUFyZWEuZGVidWdEZXNjcmlwdGlvbigpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgKaW5kZXggN2ViN2I1NDAyODI4
NDBhYjdiNWYzMWZkZmE2YjJiZmQ1OGViMTlkYy4uNmI4MzZmNDg0MWQ3Mzg1YWU5MGMzYzBmZDc5
ZmRhYWQ0ZTE3NmIyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
YWJsZUFyZWEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5o
CkBAIC0xMTksNiArMTE5LDEwIEBAIHB1YmxpYzoKICAgICBib29sIGNvbnN0cmFpbnNTY3JvbGxp
bmdUb0NvbnRlbnRFZGdlKCkgY29uc3QgeyByZXR1cm4gbV9jb25zdHJhaW5zU2Nyb2xsaW5nVG9D
b250ZW50RWRnZTsgfQogICAgIHZvaWQgc2V0Q29uc3RyYWluc1Njcm9sbGluZ1RvQ29udGVudEVk
Z2UoYm9vbCBjb25zdHJhaW5zU2Nyb2xsaW5nVG9Db250ZW50RWRnZSkgeyBtX2NvbnN0cmFpbnNT
Y3JvbGxpbmdUb0NvbnRlbnRFZGdlID0gY29uc3RyYWluc1Njcm9sbGluZ1RvQ29udGVudEVkZ2U7
IH0KIAorICAgIHZpcnR1YWwgT3ZlcnNjcm9sbEJlaGF2aW9yIGhvcml6b250YWxPdmVyc2Nyb2xs
QmVoYXZpb3IoKSBjb25zdCB7IHJldHVybiBPdmVyc2Nyb2xsQmVoYXZpb3I6OkF1dG87IH0KKyAg
ICB2aXJ0dWFsIE92ZXJzY3JvbGxCZWhhdmlvciB2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigp
IGNvbnN0IHsgcmV0dXJuIE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0bzsgfQorICAgIHZvaWQgZ2V0
U2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKFNjcm9sbENoYWluaW5nQmxvY2tlciYpIGNvbnN0OworCiAg
ICAgdm9pZCBzZXRWZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkoU2Nyb2xsRWxhc3RpY2l0eSBzY3Jv
bGxFbGFzdGljaXR5KSB7IG1fdmVydGljYWxTY3JvbGxFbGFzdGljaXR5ID0gc2Nyb2xsRWxhc3Rp
Y2l0eTsgfQogICAgIFNjcm9sbEVsYXN0aWNpdHkgdmVydGljYWxTY3JvbGxFbGFzdGljaXR5KCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U2Nyb2xsRWxhc3RpY2l0eT4obV92ZXJ0aWNhbFNj
cm9sbEVsYXN0aWNpdHkpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9TY3JvbGxBbmltYXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9T
Y3JvbGxBbmltYXRvck1hYy5tbQppbmRleCBjMDk1Y2Q2NmY1OTU2ZjhiODlhYWNiMzNkNWI3Zjgw
MjMwYTlhN2I1Li5iM2QxYWYzODZiNzc1MGEyOWQwYmI1ZjNlNTUwMDg4MzBiYWNhMDZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tCkBA
IC0xMjI4LDkgKzEyMjgsOSBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yTWFjOjpoYW5kbGVXaGVlbEV2
ZW50UGhhc2UoUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2UgcGhhc2UpCiBib29sIFNjcm9sbEFuaW1h
dG9yTWFjOjpzaG91bGRGb3J3YXJkV2hlZWxFdmVudHNUb1BhcmVudChjb25zdCBQbGF0Zm9ybVdo
ZWVsRXZlbnQmIHdoZWVsRXZlbnQpIGNvbnN0CiB7CiAgICAgaWYgKHN0ZDo6YWJzKHdoZWVsRXZl
bnQuZGVsdGFZKCkpID49IHN0ZDo6YWJzKHdoZWVsRXZlbnQuZGVsdGFYKCkpKQotICAgICAgICBy
ZXR1cm4gIWFsbG93c1ZlcnRpY2FsU3RyZXRjaGluZyh3aGVlbEV2ZW50KTsKKyAgICAgICAgcmV0
dXJuIG1fc2Nyb2xsYWJsZUFyZWEudmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSA9PSBPdmVy
c2Nyb2xsQmVoYXZpb3I6OkF1dG8gJiYgIWFsbG93c1ZlcnRpY2FsU3RyZXRjaGluZyh3aGVlbEV2
ZW50KTsKIAotICAgIHJldHVybiAhYWxsb3dzSG9yaXpvbnRhbFN0cmV0Y2hpbmcod2hlZWxFdmVu
dCk7CisgICAgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWEuaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhh
dmlvcigpID09IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0byAmJiAhYWxsb3dzSG9yaXpvbnRhbFN0
cmV0Y2hpbmcod2hlZWxFdmVudCk7CiB9CiAgICAgCiBib29sIFNjcm9sbEFuaW1hdG9yTWFjOjpo
YW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCkKQEAg
LTEyOTUsNiArMTI5NSw5IEBAIHN0YXRpYyBib29sIGdlc3R1cmVTaG91bGRCZWdpblNuYXAoY29u
c3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBTY3JvbGxFCiAKIGJvb2wgU2Nyb2xs
QW5pbWF0b3JNYWM6OmFsbG93c1ZlcnRpY2FsU3RyZXRjaGluZyhjb25zdCBQbGF0Zm9ybVdoZWVs
RXZlbnQmIHdoZWVsRXZlbnQpIGNvbnN0CiB7CisgICAgaWYgKG1fc2Nyb2xsYWJsZUFyZWEudmVy
dGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSA9PSBPdmVyc2Nyb2xsQmVoYXZpb3I6Ok5vbmUpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIHN3aXRjaCAobV9zY3JvbGxhYmxlQXJlYS52ZXJ0
aWNhbFNjcm9sbEVsYXN0aWNpdHkoKSkgewogICAgIGNhc2UgU2Nyb2xsRWxhc3RpY2l0eUF1dG9t
YXRpYzogewogICAgICAgICBTY3JvbGxiYXIqIGhTY3JvbGxlciA9IG1fc2Nyb2xsYWJsZUFyZWEu
aG9yaXpvbnRhbFNjcm9sbGJhcigpOwpAQCAtMTMxOSw2ICsxMzIyLDkgQEAgYm9vbCBTY3JvbGxB
bmltYXRvck1hYzo6YWxsb3dzVmVydGljYWxTdHJldGNoaW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxF
dmVudCYgd2hlZWwKIAogYm9vbCBTY3JvbGxBbmltYXRvck1hYzo6YWxsb3dzSG9yaXpvbnRhbFN0
cmV0Y2hpbmcoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50KSBjb25zdAogewor
ICAgIGlmIChtX3Njcm9sbGFibGVBcmVhLmhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSA9
PSBPdmVyc2Nyb2xsQmVoYXZpb3I6Ok5vbmUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAg
IHN3aXRjaCAobV9zY3JvbGxhYmxlQXJlYS5ob3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eSgpKSB7
CiAgICAgY2FzZSBTY3JvbGxFbGFzdGljaXR5QXV0b21hdGljOiB7CiAgICAgICAgIFNjcm9sbGJh
ciogaFNjcm9sbGVyID0gbV9zY3JvbGxhYmxlQXJlYS5ob3Jpem9udGFsU2Nyb2xsYmFyKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQ29udHJvbGxlci5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxDb250cm9sbGVyLm1tCmluZGV4
IDBkZTgxZTA2ZjYzOGU5Yzc3MGQ4NzQ4NjUzYjBjNWZlNjExYzRlZWEuLjYzNGZiNzkwZTA4NmZh
ZWQ5NTgxZDhmOTc5ZDhhMmNkMzI1Mjg0ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9TY3JvbGxDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9TY3JvbGxDb250cm9sbGVyLm1tCkBAIC0zMTMsMTkgKzMxMyw2IEBAIGJvb2wgU2Ny
b2xsQ29udHJvbGxlcjo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQm
IHdoZWVsRXZlbnQpCiAgICAgcmV0dXJuIGhhbmRsZWQ7CiB9CiAKLUZsb2F0U2l6ZSBTY3JvbGxD
b250cm9sbGVyOjp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbChjb25zdCBQbGF0Zm9y
bVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpCi17Ci0gICAgYXV0byBkZWx0YVggPSB3aGVlbEV2ZW50
LmRlbHRhWCgpOwotICAgIGF1dG8gZGVsdGFZID0gd2hlZWxFdmVudC5kZWx0YVkoKTsKLQotICAg
IGlmIChmYWJzZihkZWx0YVkpID49IGZhYnNmKGRlbHRhWCkpCi0gICAgICAgIGRlbHRhWCA9IDA7
Ci0gICAgZWxzZQotICAgICAgICBkZWx0YVkgPSAwOwotCi0gICAgcmV0dXJuIHsgZGVsdGFYLCBk
ZWx0YVkgfTsKLX0KLQogT3B0aW9uYWw8U2Nyb2xsRGlyZWN0aW9uPiBTY3JvbGxDb250cm9sbGVy
OjpkaXJlY3Rpb25Gcm9tRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50
LCBPcHRpb25hbDxTY3JvbGxFdmVudEF4aXM+IGF4aXMsIFdoZWVsQXhpc0JpYXMgYmlhcykKIHsK
ICAgICAvLyBGSVhNRTogSXQncyBpbXBvc3NpYmxlIHRvIGluZmVyIGRpcmVjdGlvbiBmcm9tIGEg
c2luZ2xlIGV2ZW50LCBzaW5jZSB0aGUgc3RhcnQgb2YgYSBnZXN0dXJlIGlzIGVpdGhlciB6ZXJv
IG9yCkBAIC0zMzMsNyArMzIwLDcgQEAgT3B0aW9uYWw8U2Nyb2xsRGlyZWN0aW9uPiBTY3JvbGxD
b250cm9sbGVyOjpkaXJlY3Rpb25Gcm9tRXZlbnQoY29uc3QgUGxhdGZvcm1XaGUKIAogICAgIGF1
dG8gd2hlZWxEZWx0YSA9IEZsb2F0U2l6ZSB7IHdoZWVsRXZlbnQuZGVsdGFYKCksIHdoZWVsRXZl
bnQuZGVsdGFZKCkgfTsKICAgICBpZiAoYmlhcyA9PSBXaGVlbEF4aXNCaWFzOjpWZXJ0aWNhbCkK
LSAgICAgICAgd2hlZWxEZWx0YSA9IHdoZWVsRGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRpY2FsKHdo
ZWVsRXZlbnQpOworICAgICAgICB3aGVlbERlbHRhID0gUGxhdGZvcm1XaGVlbEV2ZW50Ojp3aGVl
bERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbCh3aGVlbEV2ZW50LmRlbHRhKCkpOwogCiAgICAg
aWYgKGF4aXMpIHsKICAgICAgICAgc3dpdGNoIChheGlzLnZhbHVlKCkpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmNwcApp
bmRleCBiNmI3YWIwYTIxMjUyNGVmZTg3YWMzN2VhZGNiZTEyMDA3Y2M1ZTY1Li5mMWU5MDc1ZDU2
MWY2OTQ0NzgyMTQyYzdjODQ5Mzc1ZWI5Y2Q3OWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuY3BwCkBAIC0xODE2LDQg
KzE4MTYsMjAgQEAgU3RyaW5nIFJlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWE6OmRlYnVnRGVzY3Jp
cHRpb24oKSBjb25zdAogICAgIHJldHVybiBtX2xheWVyLmRlYnVnRGVzY3JpcHRpb24oKTsKIH0K
IAorT3ZlcnNjcm9sbEJlaGF2aW9yIFJlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWE6Omhvcml6b250
YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdAoreworICAgIC8vIEFuIGVsZW1lbnQgdGhhdCBp
cyBub3Qgc2Nyb2xsIGNvbnRhaW5lciBtdXN0IGFjY2VwdCBidXQgaWdub3JlIHRoZSB2YWx1ZXMg
b2YgdGhpcyBwcm9wZXJ0eS4KKyAgICBpZiAobV9sYXllci5yZW5kZXJCb3goKSAmJiBtX2xheWVy
LnJlbmRlckJveCgpLT5jYW5CZVNjcm9sbGVkQW5kSGFzU2Nyb2xsYWJsZUFyZWEoKSkKKyAgICAg
ICAgcmV0dXJuIG1fbGF5ZXIucmVuZGVyZXIoKS5zdHlsZSgpLm92ZXJzY3JvbGxCZWhhdmlvclgo
KTsKKyAgICByZXR1cm4gU2Nyb2xsYWJsZUFyZWE6Omhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZp
b3IoKTsKK30KKworT3ZlcnNjcm9sbEJlaGF2aW9yIFJlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWE6
OnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29uc3QKK3sKKyAgICAvLyBBbiBlbGVtZW50
IHRoYXQgaXMgbm90IHNjcm9sbCBjb250YWluZXIgbXVzdCBhY2NlcHQgYnV0IGlnbm9yZSB0aGUg
dmFsdWVzIG9mIHRoaXMgcHJvcGVydHkuCisgICAgaWYgKG1fbGF5ZXIucmVuZGVyQm94KCkgJiYg
bV9sYXllci5yZW5kZXJCb3goKS0+Y2FuQmVTY3JvbGxlZEFuZEhhc1Njcm9sbGFibGVBcmVhKCkp
CisgICAgICAgIHJldHVybiBtX2xheWVyLnJlbmRlcmVyKCkuc3R5bGUoKS5vdmVyc2Nyb2xsQmVo
YXZpb3JZKCk7CisgICAgcmV0dXJuIFNjcm9sbGFibGVBcmVhOjp2ZXJ0aWNhbE92ZXJzY3JvbGxC
ZWhhdmlvcigpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuaAppbmRleCBkZTI2
YjMwNDg5NjY2NmE1Y2RkNjRiNTBmNzZkNmQ1MWVkNjNlYWQzLi41MzhhNzk0YzA2MzkxM2Q0MDY2
MGRhY2VlOTU5ZTYzMTBkNjM2M2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmgKQEAgLTEyOSw2ICsxMjksOSBAQCBwdWJs
aWM6CiAKICAgICBib29sIHNjcm9sbChTY3JvbGxEaXJlY3Rpb24sIFNjcm9sbEdyYW51bGFyaXR5
LCBmbG9hdCBtdWx0aXBsaWVyID0gMSk7CiAKKyAgICBPdmVyc2Nyb2xsQmVoYXZpb3IgaG9yaXpv
bnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpIGNvbnN0IGZpbmFsOworICAgIE92ZXJzY3JvbGxCZWhh
dmlvciB2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpIGNvbnN0IGZpbmFsOworCiBwdWJsaWM6
CiAgICAgLy8gQWxsIG1ldGhvZHMgaW4gdGhpcyBzZWN0aW9uIG92ZXJyaWRlIFNjcm9sbGFibGVh
QXJlYSBtZXRob2RzIChmaW5hbCkuCiAgICAgdm9pZCBhdmFpbGFibGVDb250ZW50U2l6ZUNoYW5n
ZWQoQXZhaWxhYmxlU2l6ZUNoYW5nZVJlYXNvbikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQppbmRleCAyYjhhMjgyMGY4MDliOGFiMzk1
ZjY2ZmQ4MDhmN2FkMDhkZWQzYWQzLi45MzI0ODcwOTI0OTZhZmIwNGM5OWI4MjJkZWExYjQyZTI3
YjBiN2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhU
TUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZp
ZXcubW0KQEAgLTQwODYsNiArNDA4Niw4IEBAIHN0YXRpYyBCT09MIGN1cnJlbnRTY3JvbGxJc0Js
aXQoTlNWaWV3ICpjbGlwVmlldykKICAgICBhdXRvKiBmcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1l
XSk7CiAgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmV2ZW50SGFuZGxlcigpLndoZWVsRXZlbnQo
ZXZlbnQpKSB7CiAjaWYgUExBVEZPUk0oTUFDKQorICAgICAgICAvLyBGSVhNRTogTmVlZCB0byBm
aW5kIGEgd2F5IHRvIGJsb2NrIHRoZSBjcm9zcy1mcmFtZSBzY3JvbGwgY2hhaW5pbmcgaW4gV0sx
LgorICAgICAgICAvLyBXZSBjYW4gbm90IGp1c3Qgc2tpcCB0aGUgc2Nyb2xsIGhlcmUsIGl0IG5v
dCBvbmx5IGJsb2NrcyBzY3JvbGwgY2hhaW5pbmcgYnV0IGFsc28gYmxvY2tzIHRoZSBzY3JvbGwg
b24gY3VycmVudCB2aWV3LgogICAgICAgICBbc3VwZXIgc2Nyb2xsV2hlZWw6ZXZlbnRdOwogI2Vu
ZGlmCiAgICAgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IDNlMDNiYjEwMjczMjZiNzdjZDc5MTI2MDE4YTI5YzI4MGQ2ODkz
YzIuLjFiMmU2NTY5Y2E0MjYxMDQ0NTI3MWIxYjc0ZWZlNjg0MjkyODRkOTcgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NCBAQAorMjAyMS0wMy0xNSAgQ2F0aGllIENoZW4gIDxjYXRoaWVjaGVuQGlnYWxpYS5j
b20+CisKKyAgICAgICAgU3VwcG9ydCBDU1Mgb3ZlcnNjcm9sbC1iZWhhdmlvciBmb3Igc3luY2hy
b25vdXMgc2Nyb2xsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjI5NjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBCYXNlZCBvbiBGcsOpZMOpcmljIFdhbmcncyBwYXRjaC4KKworICAgICAgICBUZXN0IG92
ZXJzY3JvbGwtYmVoYXZpb3IgZm9yIG92ZXJmbG93IGVsZW1lbnRzIGFuZCBpZnJhbWVzLiBUaGUg
dGVzdHMgdHJpZ2dlciB3aGVlbCBzY3JvbGwgZXZlbnRzCisgICAgICAgIGFuZCB3YWl0IC41cywg
dGhlbiBjaGVjayB3aGV0aGVyIHNjcm9sbCBvY2N1cnMgb3Igbm90LgorICAgICAgICBUaGUgdGVz
dHMgYXJlIHNraXBwZWQgb24gaU9TIGZvciBvbmx5IHN5bmNocm9ub3VzIHNjcm9sbCBhcmUgdGVz
dGVkLgorICAgICAgICBGb3IgV0sxLCB0aGUgaWZyYW1lIHRlc3RzIGZhaWwgYmVjYXVzZSBsYWNr
IG9mIGludGVyZmFjZXMgdG8gY29udHJvbCBzY3JvbGwgY2hhaW5pbmcgaW4gV2ViSFRNTFZpZXcu
CisKKyAgICAgICAgKiBUZXN0RXhwZWN0YXRpb25zOiBXYWl0aW5nIC41cyBmb3IgZWFjaCBjYXNl
IG1ha2VzIHRoZSB0ZXN0IHNsb3cuCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvcmVzb3VyY2Vz
L292ZXJzY3JvbGwtYmVoYXZpb3Itc3VwcG9ydC5qczogQWRkZWQuCisgICAgICAgIChnZXREZWx0
YXMpOgorICAgICAgICAoYXN5bmMgbW91c2VXaGVlbFNjcm9sbEFuZFdhaXQpOgorICAgICAgICAq
IGZhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xs
LW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJz
Y3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2Nyb2xs
aW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9s
bC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3It
dW5zY3JvbGxhYmxlLWlmcmFtZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
c2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlm
cmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9u
czoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAg
ICogcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnM6CisKKzIwMjEtMDItMDQgIFJvYiBCdWlz
ICA8cmJ1aXNAaWdhbGlhLmNvbT4KKworICAgICAgICBNYWtlIHNob3VsZENvbXB1dGVMb2dpY2Fs
V2lkdGhGcm9tQXNwZWN0UmF0aW9BbmRJbnNldHMgd3JpdGluZyBtb2RlIGF3YXJlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjEzMjgKKworICAgICAg
ICBSZXZpZXdlZCBieSBNYW51ZWwgUmVnbyBDYXNhc25vdmFzLgorCisgICAgICAgIEVuYWJsZSBz
b21lIHRlc3RzIHRoYXQgcGFzcyBub3cuCisKKyAgICAgICAgKiBUZXN0RXhwZWN0YXRpb25zOgor
CiAyMDIxLTAzLTE1ICBJbWFub2wgRmVybmFuZGV6ICA8aWZlcm5hbmRlekBpZ2FsaWEuY29tPgog
CiAgICAgICAgIFNwbGl0IFdlYlhSIGZlYXR1cmVzIGludG8gZW5hYmxlZEZlYXR1cmVzLCBzdXBw
b3J0ZWRGZWF0dXJlcyBhbmQgcmVxdWVzdGVkRmVhdHVyZXMKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCmluZGV4
IDE0ODUxMWQ1YzU3YTgyYWNhM2IxNWY1OTlmNGQzNDRiOGM0MDMxOTAuLjU0MDE1MDIyZTNmNjlk
MzQ4ZWY1NGJiODVlZjBjYjBmMjI5MTRlYTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL1Rlc3RF
eHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNDY0NSw2
ICs0NjQ1LDEyIEBAIGZhc3Qvc2hhZG93LWRvbS9pb3MvIFsgU2tpcCBdCiAjIFJlcXVpcmVzIFdL
MiBUZXN0UnVubmVyCiBmdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWVudGVyLXdoaWxlLWV4aXRpbmcu
aHRtbCBbIFNraXAgXQogCisjIE5lZWQgdG8gd2FpdCBhbmQgY2hlY2sgd2hldGhlciBzY3JvbGwg
b2NjdXJzCitmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWVs
ZW1lbnQuaHRtbCBbIFNsb3cgXQorZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9s
bC1iZWhhdmlvci1pZnJhbWUuaHRtbCBbIFNsb3cgXQorZmFzdC9zY3JvbGxpbmcvc3luYy1zY3Jv
bGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC5odG1sIFsgU2xvdyBd
CitmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xs
YWJsZS1pZnJhbWUuaHRtbCBbIFNsb3cgXQorCiAjIEFuaW1hdGlvbiAvIExheW91dCB3b3JrZXRz
IGFyZSBub3Qgc3VwcG9ydGVkCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmts
ZXRzL2FuaW1hdGlvbi13b3JrbGV0LXNlcnZpY2Utd29ya2VyLWludGVyY2VwdGlvbi5odHRwcy5o
dG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtsZXRzL2Fu
aW1hdGlvbi13b3JrbGV0LWNzcC5odHRwcy5odG1sIFsgU2tpcCBdCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L3Njcm9sbGluZy9yZXNvdXJjZXMvb3ZlcnNjcm9sbC1iZWhhdmlvci1zdXBw
b3J0LmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvcmVzb3VyY2VzL292ZXJzY3JvbGwt
YmVoYXZpb3Itc3VwcG9ydC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMzNmMzZjMGUwNmMzZWRkZGE5ZTZjYWFk
MDJmNmNmM2I2NDhlOGJkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3Jv
bGxpbmcvcmVzb3VyY2VzL292ZXJzY3JvbGwtYmVoYXZpb3Itc3VwcG9ydC5qcwpAQCAtMCwwICsx
LDQwIEBACitmdW5jdGlvbiBnZXREZWx0YXMoZGlyZWN0aW9uKSB7CisgICAgdmFyIGRlbHRhWCA9
IDA7CisgICAgdmFyIGRlbHRhWSA9IDA7CisgICAgaWYgKGRpcmVjdGlvbiA9PSAiZG93biIpCisg
ICAgICAgIGRlbHRhWSA9IC01OworICAgIGVsc2UgaWYgKGRpcmVjdGlvbiA9PSAidXAiKQorICAg
ICAgICBkZWx0YVkgPSA1OworICAgIGVsc2UgaWYgKGRpcmVjdGlvbiA9PSAicmlnaHQiKQorICAg
ICAgICBkZWx0YVggPSAtNTsKKyAgICBlbHNlIGlmIChkaXJlY3Rpb24gPT0gImxlZnQiKQorICAg
ICAgICBkZWx0YVggPSA1OworICAgIHJldHVybiB7CisgICAgICAgIFg6IGRlbHRhWCwKKyAgICAg
ICAgWTogZGVsdGFZCisgICAgfTsKK30KKworYXN5bmMgZnVuY3Rpb24gbW91c2VXaGVlbFNjcm9s
bEFuZFdhaXQoeCwgeSwgYmVnaW5YLCBiZWdpblksIGRlbHRhWCwgZGVsdGFZKQoreworICAgIGlm
IChiZWdpblggPT09IHVuZGVmaW5lZCkKKyAgICAgICAgYmVnaW5YID0gMDsKKyAgICBpZiAoYmVn
aW5ZID09PSB1bmRlZmluZWQpCisgICAgICAgIGJlZ2luWSA9IC0xOworCisgICAgaWYgKGRlbHRh
WCA9PT0gdW5kZWZpbmVkKQorICAgICAgICBkZWx0YVggPSAwOworICAgIGlmIChkZWx0YVkgPT09
IHVuZGVmaW5lZCkKKyAgICAgICAgZGVsdGFZID0gLTEwOworCisgICAgZXZlbnRTZW5kZXIubW9u
aXRvcldoZWVsRXZlbnRzKCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7Cisg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGJl
Z2luWCwgYmVnaW5ZLCAiYmVnYW4iLCAibm9uZSIpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkZWx0YVgsIGRlbHRhWSwgImNoYW5nZWQi
LCAibm9uZSIpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcygwLCAwLCAiZW5kZWQiLCAibm9uZSIpOworICAgIHJldHVybiBuZXcgUHJvbWlz
ZShyZXNvbHZlID0+IHsKKyAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgICAgICBy
ZXF1ZXN0QW5pbWF0aW9uRnJhbWUocmVzb2x2ZSk7CisgICAgICAgIH0sIDUwMCk7CisgICAgfSk7
Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1v
dmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFz
dC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50LWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4yNzE1MGZmNjBiNWRiZGQwYjRhN2FjNmY4M2ZiNTZmNTdjZDJj
ZDgyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1z
Y3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDIwIEBACisKK1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNj
cm9sbC1iZWhhdmlvcjogYXV0byBhdXRvLgorUEFTUyBFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0
ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBhdXRvLgorUEFTUyBFbGVtZW50IGhv
cml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGF1
dG8uCitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJl
aGF2aW9yOiBjb250YWluIGF1dG8uCitQQVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVz
dCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgYXV0by4KK1BBU1MgRWxlbWVudCB2ZXJ0
aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgYXV0by4KK1BB
U1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlv
cjogYXV0byBjb250YWluLgorUEFTUyBFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGgg
b3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBjb250YWluLgorUEFTUyBFbGVtZW50IGhvcml6b250
YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGNvbnRhaW4u
CitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2
aW9yOiBjb250YWluIGNvbnRhaW4uCitQQVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVz
dCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgY29udGFpbi4KK1BBU1MgRWxlbWVudCB2
ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgY29udGFp
bi4KK1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1i
ZWhhdmlvcjogYXV0byBub25lLgorUEFTUyBFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdp
dGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBub25lLgorUEFTUyBFbGVtZW50IGhvcml6b250
YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIG5vbmUuCitQ
QVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9y
OiBjb250YWluIG5vbmUuCitQQVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRo
IG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgbm9uZS4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBz
Y3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgbm9uZS4KKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1i
ZWhhdmlvci1lbGVtZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNj
cm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MTZjMzE0
MWJhZDgwY2VmMjJiZTFmMWEwZWRlMDU2ZjJjZGMyMTExCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1l
bGVtZW50Lmh0bWwKQEAgLTAsMCArMSw4NiBAQAorPCFkb2N0eXBlIGh0bWw+CisKKzxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL292ZXJzY3JvbGwtYmVoYXZpb3Itc3VwcG9ydC5qcyI+PC9zY3Jp
cHQ+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3Mt
b3ZlcnNjcm9sbC1iZWhhdmlvciI+Cis8c3R5bGU+CisgICAgLnNjcm9sbGluZyB7CisgICAgICAg
IG92ZXJmbG93OiBzY3JvbGw7CisgICAgfQorICAgIC5zY3JvbGxDb250ZW50IHsKKyAgICAgICAg
d2lkdGg6IDMwMHB4OworICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgIH0KKyAgICAjcm9vdCB7
CisgICAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgICAgaGVpZ2h0OiAyMDBweDsKKyAgICB9Cisg
ICAgI3Njcm9sbGVyIHsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBoZWlnaHQ6IDEw
MHB4OworICAgIH0KKzwvc3R5bGU+Cis8ZGl2IGlkPSdyb290JyBjbGFzcz0ic2Nyb2xsaW5nIj4K
KyAgICA8ZGl2IGlkPSdzY3JvbGxlcicgY2xhc3M9InNjcm9sbGluZyI+CisgICAgICAgIDxkaXYg
Y2xhc3M9InNjcm9sbENvbnRlbnQiPjwvZGl2PgorICAgIDwvZGl2PgorICAgIDxkaXYgY2xhc3M9
InNjcm9sbENvbnRlbnQiPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+Citjb25zdCByb290ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jvb3QnKTsKK2NvbnN0IHNjcm9sbGVyID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3Njcm9sbGVyJyk7Cit2YXIgb3ZlcnNjcm9sbERhdGFzID0gW1si
YXV0byIsICJhdXRvIiwgdHJ1ZSwgdHJ1ZV0sCisgICAgICAgICAgICAgICAgICAgICAgICBbImNv
bnRhaW4iLCAiYXV0byIsIGZhbHNlLCB0cnVlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFsi
bm9uZSIsICJhdXRvIiwgZmFsc2UsIHRydWVdLAorICAgICAgICAgICAgICAgICAgICAgICAgWyJh
dXRvIiwgImNvbnRhaW4iLCB0cnVlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAgICBb
ImNvbnRhaW4iLCAiY29udGFpbiIsIGZhbHNlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAg
ICAgICBbIm5vbmUiLCAiY29udGFpbiIsIGZhbHNlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAg
ICAgICAgICBbImF1dG8iLCAibm9uZSIsIHRydWUsIGZhbHNlXSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIFsiY29udGFpbiIsICJub25lIiwgZmFsc2UsIGZhbHNlXSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIFsibm9uZSIsICJub25lIiwgZmFsc2UsIGZhbHNlXV07CisKK2Z1bmN0aW9uIHJl
c2V0VGVzdCgpIHsKKyAgICAvLyBUcnkgdmFyaW91cyBtZXRob2RzIHRvIGVuc3VyZSB0aGUgZWxl
bWVudCBwb3NpdGlvbiBpcyByZXNldCBpbW1lZGlhdGVseS4KKyAgICBzY3JvbGxlci5zY3JvbGxM
ZWZ0ID0gMzAwOworICAgIHNjcm9sbGVyLnNjcm9sbFRvcCA9IDMwMDsKKyAgICBzY3JvbGxlci5z
Y3JvbGxUbygzMDAsIDMwMCk7CisKKyAgICByb290LnNjcm9sbExlZnQgPSAwOworICAgIHJvb3Qu
c2Nyb2xsVG9wID0gMDsKKyAgICByb290LnNjcm9sbFRvKDAsIDApOworfQorCitmdW5jdGlvbiBz
dGFydFRlc3QoKSB7CisgICAgb3ZlcnNjcm9sbERhdGFzLmZvckVhY2goKFtvdmVyc2Nyb2xsWCwg
b3ZlcnNjcm9sbFksIHByb3BhZ2F0ZVgsIHByb3BhZ2F0ZVldKSA9PiB7CisgICAgICAgIHByb21p
c2VfdGVzdCgoKSA9PiB7CisgICAgICAgICAgICByZXNldFRlc3QoKTsKKyAgICAgICAgICAgIHNj
cm9sbGVyLnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclggPSBvdmVyc2Nyb2xsWDsKKyAgICAgICAg
ICAgIHNjcm9sbGVyLnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclkgPSBvdmVyc2Nyb2xsWTsKKwor
ICAgICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAgICAgICAg
ICB2YXIgeSA9IHNjcm9sbGVyLmNsaWVudEhlaWdodCAvIDI7CisgICAgICAgICAgICB2YXIgZGVs
dGEgPSBnZXREZWx0YXMoInJpZ2h0Iik7CisgICAgICAgICAgICByZXR1cm4gbW91c2VXaGVlbFNj
cm9sbEFuZFdhaXQoeCwgeSwgZGVsdGEuWCwgZGVsdGEuWSwgZGVsdGEuWCwgZGVsdGEuWSkudGhl
bigoKSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbExlZnQg
PiAwLCBwcm9wYWdhdGVYLCAnQ29udGludWUgdXAgdGhlIGhvcml6b250YWwgc2Nyb2xsIGNoYWlu
aW5nJyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSwgJ0VsZW1lbnQgaG9yaXpvbnRhbCBz
Y3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6ICcgKyBvdmVyc2Nyb2xsWCArICcg
JyArIG92ZXJzY3JvbGxZICsgJy4nKTsKKworICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4gewor
ICAgICAgICAgICAgcmVzZXRUZXN0KCk7CisgICAgICAgICAgICBzY3JvbGxlci5zdHlsZS5vdmVy
c2Nyb2xsQmVoYXZpb3JYID0gb3ZlcnNjcm9sbFg7CisgICAgICAgICAgICBzY3JvbGxlci5zdHls
ZS5vdmVyc2Nyb2xsQmVoYXZpb3JZID0gb3ZlcnNjcm9sbFk7CisKKyAgICAgICAgICAgIHZhciB4
ID0gc2Nyb2xsZXIuY2xpZW50V2lkdGggLyAyOworICAgICAgICAgICAgdmFyIHkgPSBzY3JvbGxl
ci5jbGllbnRIZWlnaHQgLyAyOworICAgICAgICAgICAgdmFyIGRlbHRhID0gZ2V0RGVsdGFzKCJk
b3duIik7CisgICAgICAgICAgICByZXR1cm4gbW91c2VXaGVlbFNjcm9sbEFuZFdhaXQoeCwgeSwg
ZGVsdGEuWCwgZGVsdGEuWSwgZGVsdGEuWCwgZGVsdGEuWSkudGhlbigoKSA9PiB7CisgICAgICAg
ICAgICAgICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbFRvcCA+IDAsIHByb3BhZ2F0ZVksICdD
b250aW51ZSB1cCB0aGUgdmVydGljYWwgc2Nyb2xsIGNoYWluaW5nJyk7CisgICAgICAgICAgICB9
KTsKKyAgICAgICAgfSwgJ0VsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Ny
b2xsLWJlaGF2aW9yOiAnICsgb3ZlcnNjcm9sbFggKyAnICcgKyBvdmVyc2Nyb2xsWSArICcuJyk7
CisgICAgfSk7Cit9CisKK2FkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBzdGFydFRlc3QpOworPC9z
Y3JpcHQ+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3Zl
cnNjcm9sbC1iZWhhdmlvci1pZnJhbWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkwMGEwYjdk
OTA1Yjg3YzFkYjc2MjY5NGZkMDA2MzhmMTk3Njk1MzcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWlm
cmFtZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMSBAQAorCisKK1BBU1MgSWZyYW1lIGhvcml6
b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIGF1dG8uCitQ
QVNTIElmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6
IGF1dG8gYXV0by4KK1BBU1MgSWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVy
c2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGF1dG8uCitQQVNTIElmcmFtZSB2ZXJ0aWNhbCBzY3Jv
bGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gYXV0by4KK1BBU1MgSWZy
YW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25l
IGF1dG8uCitQQVNTIElmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwt
YmVoYXZpb3I6IG5vbmUgYXV0by4KK1BBU1MgSWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qg
d2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIGNvbnRhaW4uCitQQVNTIElmcmFtZSB2ZXJ0
aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gY29udGFpbi4K
K1BBU1MgSWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2
aW9yOiBjb250YWluIGNvbnRhaW4uCitQQVNTIElmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3
aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gY29udGFpbi4KK1BBU1MgSWZyYW1lIGhv
cml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIGNvbnRh
aW4uCitQQVNTIElmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVo
YXZpb3I6IG5vbmUgY29udGFpbi4KK1BBU1MgSWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qg
d2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIG5vbmUuCitQQVNTIElmcmFtZSB2ZXJ0aWNh
bCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gbm9uZS4KK1BBU1Mg
SWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBj
b250YWluIG5vbmUuCitQQVNTIElmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJz
Y3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gbm9uZS4KK1BBU1MgSWZyYW1lIGhvcml6b250YWwgc2Ny
b2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIG5vbmUuCitQQVNTIElmcmFt
ZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgbm9u
ZS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwt
b3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xs
aW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZTI4ODQ1ZGI1MDViNGUyZTlkMDQ1MzgyOWRmNTllNTJmNjAzODUzMwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwt
YmVoYXZpb3ItaWZyYW1lLmh0bWwKQEAgLTAsMCArMSw4OCBAQAorPCFkb2N0eXBlIGh0bWw+CisK
KzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL292ZXJzY3JvbGwtYmVoYXZpb3Itc3VwcG9ydC5q
cyI+PC9zY3JpcHQ+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vZHJhZnRzLmNzc3dn
Lm9yZy9jc3Mtb3ZlcnNjcm9sbC1iZWhhdmlvciI+Cis8c3R5bGU+CisgICAgLnNjcm9sbGluZyB7
CisgICAgICAgIG92ZXJmbG93OiBzY3JvbGw7CisgICAgfQorICAgIC5zY3JvbGxDb250ZW50IHsK
KyAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICBi
YWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZWQsIGJsdWUpOworICAgIH0KKyAg
ICAjcm9vdCB7CisgICAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgICAgaGVpZ2h0OiAyMDBweDsK
KyAgICB9CisgICAgI3Njcm9sbGVyIHsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBo
ZWlnaHQ6IDEwMHB4OworICAgICAgICBvdmVyc2Nyb2xsLWJlaGF2aW9yLXk6IGF1dG87CisgICAg
fQorPC9zdHlsZT4KKzxkaXYgaWQ9J3Jvb3QnIGNsYXNzPSJzY3JvbGxpbmciPgorICAgIDxpZnJh
bWUgaWQ9J3Njcm9sbGVyJyBzcmNkb2M9IjxodG1sPjxkaXYgc3R5bGU9J3dpZHRoOiAzMDBweDsg
aGVpZ2h0OiAzMDBweDsnPjwvZGl2PjwvaHRtbD4KKyAgICAgICAgIj48L2lmcmFtZT4KKyAgICA8
ZGl2IGNsYXNzPSJzY3JvbGxDb250ZW50Ij48L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0PgorICAg
IGNvbnN0IHJvb3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncm9vdCcpOworICAgIGNvbnN0
IHNjcm9sbGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Njcm9sbGVyJyk7CisgICAgdmFy
IG92ZXJzY3JvbGxEYXRhcyA9IFtbImF1dG8iLCAiYXV0byIsIHRydWUsIHRydWVdLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFsiY29udGFpbiIsICJhdXRvIiwgZmFsc2UsIHRydWVdLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsibm9uZSIsICJhdXRvIiwgZmFsc2UsIHRydWVd
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiYXV0byIsICJjb250YWluIiwgdHJ1ZSwg
ZmFsc2VdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiY29udGFpbiIsICJjb250YWlu
IiwgZmFsc2UsIGZhbHNlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIm5vbmUiLCAi
Y29udGFpbiIsIGZhbHNlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJh
dXRvIiwgIm5vbmUiLCB0cnVlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
WyJjb250YWluIiwgIm5vbmUiLCBmYWxzZSwgZmFsc2VdLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFsibm9uZSIsICJub25lIiwgZmFsc2UsIGZhbHNlXV07CisgICAgZnVuY3Rpb24gcmVz
ZXRUZXN0KCkgeworICAgICAgICAvLyBUcnkgdmFyaW91cyBtZXRob2RzIHRvIGVuc3VyZSB0aGUg
ZWxlbWVudCBwb3NpdGlvbiBpcyByZXNldCBpbW1lZGlhdGVseS4KKyAgICAgICAgc2Nyb2xsZXIu
Y29udGVudFdpbmRvdy5zY3JvbGxYID0gMzAwOworICAgICAgICBzY3JvbGxlci5jb250ZW50V2lu
ZG93LnNjcm9sbFkgPSAzMDA7CisgICAgICAgIHNjcm9sbGVyLmNvbnRlbnRXaW5kb3cuc2Nyb2xs
VG8oMzAwLCAzMDApOworCisgICAgICAgIHJvb3Quc2Nyb2xsTGVmdCA9IDA7CisgICAgICAgIHJv
b3Quc2Nyb2xsVG9wID0gMDsKKyAgICAgICAgcm9vdC5zY3JvbGxUbygwLCAwKTsKKyAgICB9CisK
KyAgICBmdW5jdGlvbiBvdmVyc2Nyb2xsQmVoYXZpb3JUZXN0KCkgeworICAgICAgICBvdmVyc2Ny
b2xsRGF0YXMuZm9yRWFjaCgoW292ZXJzY3JvbGxYLCBvdmVyc2Nyb2xsWSwgcHJvcGFnYXRlWCwg
cHJvcGFnYXRlWV0pID0+IHsKKyAgICAgICAgICAgIHByb21pc2VfdGVzdCgoKSA9PiB7CisgICAg
ICAgICAgICAgICAgcmVzZXRUZXN0KCk7CisgICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IHNj
cm9sbGVyLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImh0bWwi
KVswXTsKKyAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWCA9
IG92ZXJzY3JvbGxYOworICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5vdmVyc2Nyb2xsQmVo
YXZpb3JZID0gb3ZlcnNjcm9sbFk7CisKKyAgICAgICAgICAgICAgICB2YXIgeCA9IHNjcm9sbGVy
LmNsaWVudFdpZHRoIC8gMjsKKyAgICAgICAgICAgICAgICB2YXIgeSA9IHNjcm9sbGVyLmNsaWVu
dEhlaWdodCAvIDI7CisgICAgICAgICAgICAgICAgdmFyIGRlbHRhID0gZ2V0RGVsdGFzKCJyaWdo
dCIpOworICAgICAgICAgICAgICAgIHJldHVybiBtb3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCh4LCB5
LCBkZWx0YS5YLCBkZWx0YS5ZLCBkZWx0YS5YLCBkZWx0YS5ZKS50aGVuKCgpID0+IHsKKyAgICAg
ICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbExlZnQgPiAwLCBwcm9wYWdh
dGVYLCAnQ29udGludWUgdXAgdGhlIGhvcml6b250YWwgc2Nyb2xsIGNoYWluaW5nJyk7CisgICAg
ICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9LCAnSWZyYW1lIGhvcml6b250YWwgc2Nyb2xs
IHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiAnICsgb3ZlcnNjcm9sbFggKyAnICcgKyBv
dmVyc2Nyb2xsWSArICcuJyk7CisKKyAgICAgICAgICAgIHByb21pc2VfdGVzdCgoKSA9PiB7Cisg
ICAgICAgICAgICAgICAgcmVzZXRUZXN0KCk7CisgICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9
IHNjcm9sbGVyLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImh0
bWwiKVswXTsKKyAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9y
WCA9IG92ZXJzY3JvbGxYOworICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5vdmVyc2Nyb2xs
QmVoYXZpb3JZID0gb3ZlcnNjcm9sbFk7CisKKyAgICAgICAgICAgICAgICB2YXIgeCA9IHNjcm9s
bGVyLmNsaWVudFdpZHRoIC8gMjsKKyAgICAgICAgICAgICAgICB2YXIgeSA9IHNjcm9sbGVyLmNs
aWVudEhlaWdodCAvIDI7CisgICAgICAgICAgICAgICAgdmFyIGRlbHRhID0gZ2V0RGVsdGFzKCJk
b3duIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1vdXNlV2hlZWxTY3JvbGxBbmRXYWl0KHgs
IHksIGRlbHRhLlgsIGRlbHRhLlksIGRlbHRhLlgsIGRlbHRhLlkpLnRoZW4oKCkgPT4geworICAg
ICAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsVG9wID4gMCwgcHJvcGFn
YXRlWSwgJ0NvbnRpbnVlIHVwIHRoZSB2ZXJ0aWNhbCBzY3JvbGwgY2hhaW5pbmcnKTsKKyAgICAg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0sICdJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRl
c3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiAnICsgb3ZlcnNjcm9sbFggKyAnICcgKyBvdmVy
c2Nyb2xsWSArICcuJyk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIHNjcm9sbGVyLmFkZEV2
ZW50TGlzdGVuZXIoImxvYWQiLCBvdmVyc2Nyb2xsQmVoYXZpb3JUZXN0KTsKKzwvc2NyaXB0Pgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
c2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVs
ZW1lbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3Jv
bGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZjM5NWI2NDg4ZDA4NzBiOTU2MWMwMjg2NzlkN2UxNWE0N2ZjZTZlOQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92
ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsNCBAQAorCitQQVNTIFVuc2Nyb2xsYWJsZSBlbGVtZW50IGhvcml6b250YWwgc2Nyb2xs
IHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLgorUEFTUyBVbnNjcm9sbGFibGUg
ZWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5v
bmUuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xs
LW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3Jv
bGxhYmxlLWVsZW1lbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43Y2I3NzMzNjU5ZTJiYzRhYmQ2NTI3MTg5
Y2Y1MDZkNmZlZmEyMzA0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3Jv
bGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVu
dC5odG1sCkBAIC0wLDAgKzEsNjYgQEAKKzwhZG9jdHlwZSBodG1sPgorCis8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9InJlc291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXN1cHBvcnQuanMiPjwvc2NyaXB0Pgor
PGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLW92ZXJz
Y3JvbGwtYmVoYXZpb3IiPgorPHN0eWxlPgorICAgIC5zY3JvbGxpbmcgeworICAgICAgICBvdmVy
Zmxvdzogc2Nyb2xsOworICAgIH0KKyAgICAuc2Nyb2xsQ29udGVudCB7CisgICAgICAgIHdpZHRo
OiAzMDBweDsKKyAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICB9CisgICAgI3Jvb3QgeworICAg
ICAgICB3aWR0aDogMjAwcHg7CisgICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgfQorICAgICNz
Y3JvbGxlciB7CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsK
KyAgICAgICAgb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZTsKKyAgICAgICAgb3ZlcmZsb3c6IHZp
c2libGU7CisgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJlZCwg
Ymx1ZSk7CisgICAgfQorPC9zdHlsZT4KKzxkaXYgaWQ9InJvb3QiIGNsYXNzPSJzY3JvbGxpbmci
PgorICAgIDxkaXYgaWQ9InNjcm9sbGVyIj4KKyAgICAgICAgPGRpdiBjbGFzcz0ic2Nyb2xsQ29u
dGVudCI+PC9kaXY+CisgICAgPC9kaXY+CisgICAgPGRpdiBjbGFzcz0ic2Nyb2xsQ29udGVudCI+
PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4KK2NvbnN0IHJvb3QgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgncm9vdCcpOworY29uc3Qgc2Nyb2xsZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnc2Nyb2xsZXInKTsKK2Z1bmN0aW9uIHJlc2V0VGVzdCgpIHsKKyAgICByb290LnNjcm9sbExl
ZnQgPSAwOworICAgIHJvb3Quc2Nyb2xsVG9wID0gMDsKKyAgICByb290LnNjcm9sbFRvKDAsIDAp
OworfQorCitmdW5jdGlvbiBzdGFydFRlc3QoKSB7CisgICAgICAgIHByb21pc2VfdGVzdCgoKSA9
PiB7CisgICAgICAgICAgICByZXNldFRlc3QoKTsKKyAgICAgICAgICAgIHZhciB4ID0gc2Nyb2xs
ZXIuY2xpZW50V2lkdGggLyAyOworICAgICAgICAgICAgdmFyIHkgPSBzY3JvbGxlci5jbGllbnRI
ZWlnaHQgLyAyOworICAgICAgICAgICAgdmFyIGRlbHRhID0gZ2V0RGVsdGFzKCJyaWdodCIpOwor
ICAgICAgICAgICAgcmV0dXJuIG1vdXNlV2hlZWxTY3JvbGxBbmRXYWl0KHgsIHksIGRlbHRhLlgs
IGRlbHRhLlksIGRlbHRhLlgsIGRlbHRhLlkpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAg
IGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxMZWZ0ID4gMCwgdHJ1ZSwgJ0NvbnRpbnVlIHVwIHRo
ZSBob3Jpem9udGFsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAgICAgICAgfSk7CisgICAgICAg
IH0sICdVbnNjcm9sbGFibGUgZWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3Zl
cnNjcm9sbC1iZWhhdmlvcjogbm9uZS4nKTsKKworICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4g
eworICAgICAgICAgICAgcmVzZXRUZXN0KCk7CisgICAgICAgICAgICB2YXIgeCA9IHNjcm9sbGVy
LmNsaWVudFdpZHRoIC8gMjsKKyAgICAgICAgICAgIHZhciB5ID0gc2Nyb2xsZXIuY2xpZW50SGVp
Z2h0IC8gMjsKKyAgICAgICAgICAgIHZhciBkZWx0YSA9IGdldERlbHRhcygiZG93biIpOworICAg
ICAgICAgICAgcmV0dXJuIG1vdXNlV2hlZWxTY3JvbGxBbmRXYWl0KHgsIHksIGRlbHRhLlgsIGRl
bHRhLlksIGRlbHRhLlgsIGRlbHRhLlkpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGFz
c2VydF9lcXVhbHMocm9vdC5zY3JvbGxUb3AgPiAwLCB0cnVlLCAnQ29udGludWUgdXAgdGhlIHZl
cnRpY2FsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0sICdV
bnNjcm9sbGFibGUgZWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwt
YmVoYXZpb3I6IG5vbmUuJyk7Cit9CisKK2FkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBzdGFydFRl
c3QpOworPC9zY3JpcHQ+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlv
ci11bnNjcm9sbGFibGUtaWZyYW1lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Ny
b2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFt
ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2ZhNTljY2JhNzlhZWZmMzNkYTcwZTkzZDQ4OGEw
N2VlYzljNTY5MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5n
L3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSw1IEBACisKKworUEFTUyBVbnNjcm9sbGFibGUgaWZyYW1lIGhv
cml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLgorUEFT
UyBVbnNjcm9sbGFibGUgaWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9s
bC1iZWhhdmlvcjogbm9uZS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxp
bmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJl
aGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMjQyNWFmYzYzN2Rm
NTFlNDQxNTQyNmFiNDY3YzYxNGUzOGVmNjE2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9s
bGFibGUtaWZyYW1lLmh0bWwKQEAgLTAsMCArMSw2NiBAQAorPCFkb2N0eXBlIGh0bWw+CisKKzxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL292ZXJzY3JvbGwtYmVoYXZpb3Itc3VwcG9ydC5qcyI+
PC9zY3JpcHQ+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vZHJhZnRzLmNzc3dnLm9y
Zy9jc3Mtb3ZlcnNjcm9sbC1iZWhhdmlvciI+Cis8c3R5bGU+CisgICAgLnNjcm9sbGluZyB7Cisg
ICAgICAgIG92ZXJmbG93OiBzY3JvbGw7CisgICAgfQorICAgIC5zY3JvbGxDb250ZW50IHsKKyAg
ICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgIH0KKyAgICAj
cm9vdCB7CisgICAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgICAgaGVpZ2h0OiAyMDBweDsKKyAg
ICB9CisgICAgI3Njcm9sbGVyIHsKKyAgICAgICAgd2lkdGg6IDIwMHB4OworICAgICAgICBoZWln
aHQ6IDIwMHB4OworICAgICAgICBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lOworICAgICAgICBv
dmVyZmxvdzogdmlzaWJsZTsKKyAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEz
NWRlZywgcmVkLCBibHVlKTsKKyAgICB9Cis8L3N0eWxlPgorPGRpdiBpZD0ncm9vdCcgY2xhc3M9
InNjcm9sbGluZyI+CisgICAgPGlmcmFtZSBpZD0nc2Nyb2xsZXInIHNyY2RvYz0iPGh0bWwgc3R5
bGU9J292ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmU7Jz48ZGl2IHN0eWxlPSd3aWR0aDogMTAwcHg7
IGhlaWdodDogMTAwcHg7Jz48L2Rpdj48L2h0bWw+CisgICAgICAgICI+PC9pZnJhbWU+CisgICAg
PGRpdiBjbGFzcz0ic2Nyb2xsQ29udGVudCI+PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4KK2Nv
bnN0IHJvb3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncm9vdCcpOworY29uc3Qgc2Nyb2xs
ZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2Nyb2xsZXInKTsKKworZnVuY3Rpb24gcmVz
ZXRUZXN0KCkgeworICAgIHJvb3Quc2Nyb2xsTGVmdCA9IDA7CisgICAgcm9vdC5zY3JvbGxUb3Ag
PSAwOworICAgIHJvb3Quc2Nyb2xsVG8oMCwgMCk7Cit9CisKK2Z1bmN0aW9uIHN0YXJ0VGVzdCgp
IHsKKyAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAgIHJlc2V0VGVzdCgp
OworICAgICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAgICAg
ICAgICB2YXIgeSA9IHNjcm9sbGVyLmNsaWVudEhlaWdodCAvIDI7CisgICAgICAgICAgICB2YXIg
ZGVsdGEgPSBnZXREZWx0YXMoInJpZ2h0Iik7CisgICAgICAgICAgICByZXR1cm4gbW91c2VXaGVl
bFNjcm9sbEFuZFdhaXQoeCwgeSwgZGVsdGEuWCwgZGVsdGEuWSwgZGVsdGEuWCwgZGVsdGEuWSku
dGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbExl
ZnQgPiAwLCB0cnVlLCAnQ29udGludWUgdXAgdGhlIGhvcml6b250YWwgc2Nyb2xsIGNoYWluaW5n
Jyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSwgJ1Vuc2Nyb2xsYWJsZSBpZnJhbWUgaG9y
aXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuJyk7CisK
KyAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAgIHJlc2V0VGVzdCgpOwor
ICAgICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAgICAgICAg
ICB2YXIgeSA9IHNjcm9sbGVyLmNsaWVudEhlaWdodCAvIDI7CisgICAgICAgICAgICB2YXIgZGVs
dGEgPSBnZXREZWx0YXMoImRvd24iKTsKKyAgICAgICAgICAgIHJldHVybiBtb3VzZVdoZWVsU2Ny
b2xsQW5kV2FpdCh4LCB5LCBkZWx0YS5YLCBkZWx0YS5ZLCBkZWx0YS5YLCBkZWx0YS5ZKS50aGVu
KCgpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsVG9wID4g
MCwgdHJ1ZSwgJ0NvbnRpbnVlIHVwIHRoZSB2ZXJ0aWNhbCBzY3JvbGwgY2hhaW5pbmcnKTsKKyAg
ICAgICAgICAgIH0pOworICAgICAgICB9LCAnVW5zY3JvbGxhYmxlIGlmcmFtZSB2ZXJ0aWNhbCBz
Y3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuJyk7Cit9CisKK2FkZEV2
ZW50TGlzdGVuZXIoImxvYWQiLCBzdGFydFRlc3QpOworPC9zY3JpcHQ+ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RF
eHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucwpp
bmRleCBlZjdmZGViM2M4ODcwNTNjMTk3ZWE1ZGVkMjQ2MDdiMzgyMmRiNmY0Li41OTkxMjQ4MTI0
YTFhOWYyOWQ0NDJmNmEzYmQ0Mjg0Nzg5MzE5MWUyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9p
b3MvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNzk1LDYgKzc5NSwxMiBAQCBzdmcvdGV4dC9zZWxlY3Qt
dGV4dC1zdmdmb250Lmh0bWwgWyBTa2lwIF0KIHN2Zy90ZXh0L3NlbGVjdGlvbi1kb3VibGVjbGlj
ay5zdmcgWyBTa2lwIF0KIHN2Zy90ZXh0L3NlbGVjdGlvbi10cmlwbGVjbGljay5zdmcgWyBTa2lw
IF0KIAorIyBPdmVyc2Nyb2xsLWJlaGF2aW9yIGlzIG5vdCBzdXBwb3J0ZWQgb24gaU9TCitmYXN0
L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQuaHRtbCBb
IFNraXAgXQorZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1p
ZnJhbWUuaHRtbCBbIFNraXAgXQorZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9s
bC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC5odG1sIFsgU2tpcCBdCitmYXN0L3Njcm9s
bGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUu
aHRtbCBbIFNraXAgXQorCiAjIElPUyBkb2VzIG5vdCBpbXBsZW1lbnQgc2V0QXV0b21hdGljTGlu
a0RldGVjdGlvbkVuYWJsZWQKIGVkaXRpbmcvaW5zZXJ0aW5nL3R5cGluZy1zcGFjZS10by10cmln
Z2VyLXNtYXJ0LWxpbmsuaHRtbCBbIFNraXAgXQogZWRpdGluZy9pbnNlcnRpbmcvc21hcnQtbGlu
ay13aGVuLWNhcmV0LWlzLW1vdmVkLWJlZm9yZS1VUkwuaHRtbCBbIFNraXAgXQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGUyMjcwYjZmOTlk
NDk4Zjk2NGU5Zjg5MjZiMjJiZDY0YzhjNjkzYjQuLmYxMmMzZDkyYzQ1MTllZjRkZWU1NzliODM5
OTIxZDFlMzMzMWRiMDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEv
VGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RF
eHBlY3RhdGlvbnMKQEAgLTQ1Myw2ICs0NTMsMTAgQEAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLXNjcm9sbC1zbmFwL3Njcm9sbC10YXJnZXQtcGFkZGluZy0wMDEuaHQK
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1zdG9wLWNoYW5nZS5odG1sIFsgRmFpbHVyZSBdCiBjc3MzL3Njcm9sbC1zbmFwL3Nj
cm9sbC1wYWRkaW5nLW1haW5mcmFtZS1wYWdpbmcuaHRtbCBbIEZhaWx1cmUgXQogCisjIExhY2sg
b2Ygd2F5cyB0byBjb250cm9sIHRoZSBjcm9zcy1mcmFtZSBzY3JvbGwgY2hhaW5pbmcgaW4gV0sx
LgorZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUu
aHRtbCBbIFNraXAgXQorZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhh
dmlvci11bnNjcm9sbGFibGUtaWZyYW1lLmh0bWwgWyBTa2lwIF0KKwogIyMjIEVORCBPRiAoMikg
RmFpbHVyZXMgd2l0aG91dCBidWcgcmVwb3J0cwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVz
dEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25z
CmluZGV4IGQwMDczZWVlYjc0ZTc4NGM1N2RkYTE0YzIyZDVjYmMyMjFjMjQ1YzkuLjlhMmExNWE3
NzNkOWZlMDk2OTFhOGI3NTYwNjFmOTVkN2VkZmFjYmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L3dpbi9UZXN0RXhwZWN0YXRpb25zCkBAIC01OTgsNiArNTk4LDEyIEBAIGZhc3QvZXZlbnRzL3do
ZWVsL3BsYXRmb3JtLXdoZWVsZXZlbnQtcGFnaW5nLXktaW4tbm9uLXNjcm9sbGluZy1wYWdlLmh0
bWwgWyBTa2lwCiBmYXN0L2V2ZW50cy93aGVlbC9wbGF0Zm9ybS13aGVlbGV2ZW50LXBhZ2luZy15
LWluLXNjcm9sbGluZy1kaXYuaHRtbCBbIFNraXAgXQogZmFzdC9ldmVudHMvd2hlZWwvcGxhdGZv
cm0td2hlZWxldmVudC1wYWdpbmcteS1pbi1zY3JvbGxpbmctcGFnZS5odG1sIFsgU2tpcCBdCiAK
KyMgT3ZlcnNjcm9sbC1iZWhhdmlvciBpcyBub3Qgc3VwcG9ydGVkIG9uIFdpbmRvd3MKK2Zhc3Qv
c2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC5odG1sIFsg
U2tpcCBdCitmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWlm
cmFtZS5odG1sIFsgU2tpcCBdCitmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xs
LWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWwgWyBTa2lwIF0KK2Zhc3Qvc2Nyb2xs
aW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5o
dG1sIFsgU2tpcCBdCisKICMgUG9pbnRlciBMb2NrIGlzIG5vdCBpbXBsZW1lbnRlZC4KIHBvaW50
ZXItbG9jay8gWyBTa2lwIF0KIGh0dHAvdGVzdHMvcG9pbnRlci1sb2NrLyBbIFNraXAgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424158</attachid>
            <date>2021-03-24 10:59:54 -0700</date>
            <delta_ts>2021-12-02 16:57:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222968-20210325015952.patch</filename>
            <type>text/plain</type>
            <size>61740</size>
            <attacher name="cathiechen">cathiechen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0OTQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmVmYWRjMDBlMGM3YThl
YTRkM2FhNzYxNDZlMTVmNjY0NDg3MTFkZi4uNjRjNjQwYThmZjU4N2FiMTA3NGRiZjU3NGY2Y2Yx
OGJiNjY4OGNmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDIxLTAzLTE1ICBDYXRo
aWUgQ2hlbiAgPGNhdGhpZWNoZW5AaWdhbGlhLmNvbT4KKworICAgICAgICBTdXBwb3J0IENTUyBv
dmVyc2Nyb2xsLWJlaGF2aW9yIGZvciBzeW5jaHJvbm91cyBzY3JvbGwKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjk2OAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJhc2VkIG9uIEZyw6lkw6lyaWMgV2Fu
ZydzIHBhdGNoLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYnJpbmdzIGluaXRpYWwgc3VwcG9ydCBv
ZiBDU1MgcHJvcGVydHkgb3ZlcnNjcm9sbC1iZWhhdmlvci4gT3ZlcnNjcm9sbC1iZWhhdmlvciBz
ZXRzIHdoYXQKKyAgICAgICAgdGhlIGJyb3dzZXIgZG9lcyB3aGVuIHJlYWNoaW5nIHRoZSBib3Vu
ZGFyeSBvZiBhIHNjcm9sbGluZyBhcmVhLiBGaXJlZm94IGFuZCBDaHJvbWl1bS12YXJpYW50IGJy
b3dzZXJzCisgICAgICAgIGFscmVhZHkgc3VwcG9ydCBpdC4gSXRzIHNwZWNpZmljYXRpb24gY2Fu
IGJlIGZvdW5kIGF0IGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3Mtb3ZlcnNjcm9sbC0xLyNv
dmVyc2Nyb2xsLWJlaGF2aW9yLXByb3BlcnRpZXMKKyAgICAgICAgVGhpcyBwYXRjaCBhaW1zIHRv
IHN1cHBvcnQgaXQgZm9yIHRoZSBzeW5jaHJvbm91cyBzY3JvbGwuIFRoZSBhc3luY2hyb25vdXMg
c2Nyb2xsIG9uIE1hYyB3aWxsIGJlIGNvdmVyZWQgbGF0ZXIuCisKKyAgICAgICAgQWNjb3JkaW5n
IHRvIHRoZSB2YWx1ZSBvZiBvdmVyc2Nyb2xsLWJlaGF2aW9yLCB0aGlzIHBhdGNoIGNvbnRyb2xz
IHRoZSBzY3JvbGwgY2hhaW5pbmcsIHRoZSBzY3JvbGwgc3RyZXRjaCwKKyAgICAgICAgYW5kIHN3
aXBlIGdlc3R1cmVzIGdlbmVyYXRpb24gb2YgdGhlIHN5bmNocm9ub3VzIHNjcm9sbC4gVG8gY29u
dHJvbCB0aGUgc2Nyb2xsIGNoYWluaW5nLAorICAgICAgICBtX3Njcm9sbENoYWluaW5nQmxvY2tl
ciBpcyBhZGRlZCB0byBFdmVudEhhbmxkZXIsIGl0IGlzIGdlbmVyYXRlZCBhY2NvcmRpbmcgdG8g
dGhlIG92ZXJzY3JvbGwtYmVoYXZpb3IgdmFsdWVzLgorICAgICAgICBJdCBpbmRpY2F0ZXMgd2hl
dGhlciB0aGUgc2Nyb2xsIGNoYWluaW5nIG9mIHRoaXMgZnJhbWUgc2hvdWxkIGJlIHN0b3BwZWQg
b3Igbm90LgorICAgICAgICBUaGUgc2Nyb2xsIGNoYWluaW5nIGlzIGhhbmRsZWQgZGlmZmVyZW50
bHkgYnkgV0hFRUxfRVZFTlRfTEFUQ0hJTkcgc2V0dGluZy4gSWYgV0hFRUxfRVZFTlRfTEFUQ0hJ
TkcgaXMgb2ZmLAorICAgICAgICB0aGUgc2Nyb2xsIGNoYWluaW5nIGlzIGhhbmRsZWQgZGlyZWN0
bHkgaW4gRXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2lu
Z0JveCgpLgorICAgICAgICBJZiBXSEVFTF9FVkVOVF9MQVRDSElORyBpcyBvbiwgdGhlIGxhdGNo
ZWQgc2Nyb2xsIHRhcmdldCBpcyBhbHdheXMgRnJhbWVWaWV3IGlmIGl0IG5lZWRzIHRvIHN0b3Ag
dGhlIHNjcm9sbCBjaGFpbmluZy4KKyAgICAgICAgSWYgY3VycmVudCBmcmFtZSBpcyBhIHN1YmZy
YW1lLCB0aGUgdmFsdWUgb2YgbV9zY3JvbGxDaGFpbmluZ0Jsb2NrZXIgd2lsbCBiZSBwYXNzZWQg
dG8gaXRzIHBhcmVudCBmcmFtZS4KKyAgICAgICAgQW5kIGV2ZW50dWFsbHksIGxldCB0aGUgbWFp
bmZyYW1lIGhhbmRsZSBtX3Njcm9sbENoYWluaW5nQmxvY2tlci4gVGhlIG1haW5mcmFtZSBibG9j
a3MgdmVydGljYWwgc2Nyb2xsIGNoYWluaW5nIGRpcmVjdGx5LAorICAgICAgICBhbmQgaG9yaXpv
bnRhbGx5IGl0IHdpbGwgbGV0IHRoZSB2aWV3cyBkZWNpZGUgd2hldGhlciBpdCBzaG91bGQgZ2Vu
ZXJhdGUgc3dpcGUgZ2VzdHVyZXMgb3Igbm90LgorICAgICAgICBBYm91dCB0aGUgc2Nyb2xsIHN0
cmV0Y2gsIGl0IGlzIGNhbmNlbGVkIGlmIHRoZSB2YWx1ZSBvZiBvdmVyc2Nyb2xsLWJlaGF2aW9y
IGlzIG5vbmUuCisKKyAgICAgICAgVGVzdHM6IGZhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92
ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC5odG1sCisgICAgICAgICAgICAgICBmYXN0L3Njcm9s
bGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS5odG1sCisgICAgICAg
ICAgICAgICBmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVu
c2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvc2Nyb2xsaW5nL3N5
bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sCisK
KyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVu
dEhhbmRsZXI6OnNjcm9sbENoYWluaW5nQmxvY2tlckNoYW5nZWRCeVN1YmZyYW1lKTogVXBkYXRl
IHRoZSBzdGF0ZSBvZiBzY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIgaWYgbV9zY3JvbGxDaGFpbmlu
Z0Jsb2NrZXIgaXMgY2hhbmdlZCBieSBzdWJmcmFtZS4KKyAgICAgICAgKFdlYkNvcmU6OnByb3Bh
Z2F0ZVNjcm9sbENoYWluaW5nQmxvY2tlclRvUGFyZW50RnJhbWUpOiBQcm9wYWdhdGUgbV9zY3Jv
bGxDaGFpbmluZ0Jsb2NrZXIgdG8gcGFyZW50IGZyYW1lLgorICAgICAgICAoV2ViQ29yZTo6aGFu
ZGxlU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyQmVmb3JlU2Nyb2xsaW5nRnJhbWVWaWV3KTogQ2hlY2sg
aWYgbV9zY3JvbGxDaGFpbmluZ0Jsb2NrZXIgYmxvY2tzIHRoZSBzY3JvbGwgY2hhaW5pbmcgb24g
RnJhbWVWaWV3LAorICAgICAgICBkZWFsIHdpdGggaG9yaXpvbnRhbCBhbmQgdmVydGljYWwgc2Ny
b2xsIGNoYWluaW5nIGRpZmZlcmVudGx5LCBhbmQgdXBkYXRlIHRoZSBkZWx0YSBvZiBXaGVlbEV2
ZW50IGlmIGl0IGRvZXNuJ3QgYmxvY2sgdGhlIHNjcm9sbCBjaGFpbmluZy4KKyAgICAgICAgKFdl
YkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudEludGVybmFsKTogSGFuZGxlIG1f
c2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIGJlZm9yZSBzY3JvbGxpbmcgRnJhbWVWaWV3LCBhbmQgcGFz
cyBtX3Njcm9sbENoYWluaW5nQmxvY2tlciB0byBwYXJlbnQgZnJhbWUgYWZ0ZXIgc2Nyb2xsaW5n
IEZyYW1lVmlldy4gCisgICAgICAgIChXZWJDb3JlOjpkaWRTY3JvbGxJblNjcm9sbGFibGVBcmVh
KTogRmlsdGVyIHRoZSBzY3JvbGwgZGVsdGEgYnkgdGhlIFNjcm9sbENoYWluaW5nQmxvY2tlciB2
YWx1ZS4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudElu
QXBwcm9wcmlhdGVFbmNsb3NpbmdCb3gpOiBCbG9jayBzY3JvbGwgY2hhaW5pbmcgYWNjb3JkaW5n
IHRvIHRoZSB2YWx1ZSBvZiBtX3Njcm9sbENoYWluaW5nQmxvY2tlci4KKyAgICAgICAgKFdlYkNv
cmU6OkV2ZW50SGFuZGxlcjo6dXBkYXRlU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKToKKyAgICAgICAg
KFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6cmVzZXRTY3JvbGxDaGFpbmluZ0Jsb2NrZXIpOgorICAg
ICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmg6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojpob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2
aW9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6dmVydGljYWxPdmVyc2Ny
b2xsQmVoYXZpb3IgY29uc3QpOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3Lmg6CisgICAgICAg
ICogcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6ZmluZEVu
Y2xvc2luZ1Njcm9sbGFibGVDb250YWluZXIpOiBVcGRhdGUgdGhlIHZhbHVlIG9mIFNjcm9sbENo
YWluaW5nQmxvY2tlciBhbmQgcmV0dXJuIG51bGwgaWYgc2hvdWxkQmxvY2tTY3JvbGxDaGFpbmlu
ZygpLgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpkZXRlcm1pbmVXaGVlbEV2ZW50
VGFyZ2V0KTogSWYgc2hvdWxkQmxvY2tTY3JvbGxDaGFpbmluZygpLCBGcmFtZVZpZXcgd2lsbCBi
ZSB0aGUgbGF0Y2hlZCBzY3JvbGwgdGFyZ2V0LgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5k
bGVyOjpzY3JvbGxDaGFpbmluZ0Jsb2NrZXJDaGFuZ2VkQnlTdWJmcmFtZSk6IERpdHRvLgorICAg
ICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1XaGVlbEV2ZW50Ojp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbCk6IE1v
dmVkIGZyb20gU2Nyb2xsQ29udHJvbGxlci5tbQorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFR5
cGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxDaGFpbmluZ0Jsb2NrZXI6OnNob3VsZEJs
b2NrU2Nyb2xsQ2hhaW5pbmcpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQ2hhaW5pbmdCbG9j
a2VyOjpmaWx0ZXJEZWx0YSk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWE6OmdldFNjcm9sbENoYWluaW5nQmxv
Y2tlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGFibGVBcmVhOjpob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9y
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGFibGVBcmVhOjp2ZXJ0aWNhbE92ZXJz
Y3JvbGxCZWhhdmlvciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1h
dG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JNYWM6OnNob3VsZEZv
cndhcmRXaGVlbEV2ZW50c1RvUGFyZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bEFuaW1hdG9yTWFjOjphbGxvd3NWZXJ0aWNhbFN0cmV0Y2hpbmcgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JNYWM6OmFsbG93c0hvcml6b250YWxTdHJldGNoaW5nIGNv
bnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xsQ29udHJvbGxlci5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbENvbnRyb2xsZXI6OmRpcmVjdGlvbkZyb21FdmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxDb250cm9sbGVyOjp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNW
ZXJ0aWNhbCk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xs
YWJsZUFyZWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJl
YTo6aG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvciBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllclNjcm9sbGFibGVBcmVhOjp2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvciBj
b25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuaDoK
KwogMjAyMS0wMy0yNCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAg
VXBkYXRlIENTUyBDb2xvciA1IGNvbG9yLW1peCgpIGltcGxlbWVudGF0aW9uIHRvIG1hdGNoIHRo
ZSBsYXRlc3QgZHJhZnQgc3BlYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDY1YzFm
NTU2NTYyOTVkZGZhYzg2YWIzMmM1NmJkMmYzMTUwNzJhYWIuLmIwNzAwMTMxNTE0M2U5NzFjZmU5
NTA1NjgwYjlmNzUxYTdlNTdkOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAyMS0wMy0xNSAgQ2F0aGllIENoZW4gIDxjYXRoaWVjaGVuQGlnYWxpYS5j
b20+CisKKyAgICAgICAgU3VwcG9ydCBDU1Mgb3ZlcnNjcm9sbC1iZWhhdmlvciBmb3Igc3luY2hy
b25vdXMgc2Nyb2xsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjI5NjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBCYXNlZCBvbiBGcsOpZMOpcmljIFdhbmcncyBwYXRjaC4KKworICAgICAgICBOZWVkIHRv
IGZpbmQgYSB3YXkgdG8gYmxvY2sgdGhlIGNyb3NzLWZyYW1lIHNjcm9sbCBjaGFpbmluZyBpbiBX
SzEuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAoLVtXZWJI
VE1MVmlldyBzY3JvbGxXaGVlbDpdKToKKwogMjAyMS0wMy0yMyAgVGltIEhvcnRvbiAgPHRpbW90
aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBDb25zb2xpZGF0ZSBCb29rcyBidW5kbGUg
Y2hlY2tzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggMzcwZWFiM2IwZWZi
NDc1ZTRlN2M4ZDI1NWFhOGM4NGQ4NTU0ZGQ5NC4uMTRlZmRkZTk2YzI3Nzg4MjcwOTE1OWYzN2Uw
NWRjOWIwZmI5ZjZjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtMjc0
Myw2ICsyNzQzLDEwIEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpkZXRlcm1pbmVXaGVlbEV2ZW50VGFy
Z2V0KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIFJlZlB0cjxFCiB7CiB9CiAKK3ZvaWQgRXZl
bnRIYW5kbGVyOjpzY3JvbGxDaGFpbmluZ0Jsb2NrZXJDaGFuZ2VkQnlTdWJmcmFtZShjb25zdCBQ
bGF0Zm9ybVdoZWVsRXZlbnQmLCBSZWZQdHI8RWxlbWVudD4mLCBXZWFrUHRyPFNjcm9sbGFibGVB
cmVhPiYsIGJvb2wmKQoreworfQorCiB2b2lkIEV2ZW50SGFuZGxlcjo6cmVjb3JkV2hlZWxFdmVu
dEZvckRlbHRhRmlsdGVyKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgZXZlbnQpCiB7CiAgICAg
aWYgKGF1dG8qIHBhZ2UgPSBtX2ZyYW1lLnBhZ2UoKSkKQEAgLTI4NjEsNiArMjg2NSwzMyBAQCBi
b29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZl
bnQmIHdoZWVsRXZlbnQsIE9wdGlvbgogICAgIHJldHVybiBoYW5kbGVkOwogfQogCitzdGF0aWMg
dm9pZCBwcm9wYWdhdGVTY3JvbGxDaGFpbmluZ0Jsb2NrZXJUb1BhcmVudEZyYW1lKEZyYW1lJiBm
cmFtZSwgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyJiBibG9ja2VyKQoreworICAgIGlmICghZnJhbWUu
dmlldygpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKGF1dG8qIHBhcmVudCA9IGZyYW1lLnRy
ZWUoKS5wYXJlbnQoKSkgeworICAgICAgICBmcmFtZS52aWV3KCktPmdldFNjcm9sbENoYWluaW5n
QmxvY2tlcihibG9ja2VyKTsKKyAgICAgICAgcGFyZW50LT5ldmVudEhhbmRsZXIoKS51cGRhdGVT
Y3JvbGxDaGFpbmluZ0Jsb2NrZXIoYmxvY2tlcik7CisgICAgfQorfQorCitzdGF0aWMgYm9vbCBo
YW5kbGVTY3JvbGxDaGFpbmluZ0Jsb2NrZXJCZWZvcmVTY3JvbGxpbmdGcmFtZVZpZXcoUGxhdGZv
cm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBTY3JvbGxDaGFpbmluZ0Jsb2NrZXIgc2Nyb2xsQ2hh
aW5pbmdCbG9ja2VyLCBib29sJiBoYW5kbGVkRXZlbnQpCit7CisgICAgRmxvYXRTaXplIGZpbHRl
cmVkRGVsdGEod2hlZWxFdmVudC5kZWx0YVgoKSwgd2hlZWxFdmVudC5kZWx0YVkoKSk7CisgICAg
YXV0byBiaWFzZWREZWx0YSA9IFBsYXRmb3JtV2hlZWxFdmVudDo6d2hlZWxEZWx0YUJpYXNpbmdU
b3dhcmRzVmVydGljYWwoZmlsdGVyZWREZWx0YSk7CisgICAgaWYgKFNjcm9sbENoYWluaW5nQmxv
Y2tlcjo6c2hvdWxkQmxvY2tTY3JvbGxDaGFpbmluZyhzY3JvbGxDaGFpbmluZ0Jsb2NrZXIsIGJp
YXNlZERlbHRhKSkgeworICAgICAgICBpZiAoU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyOjpzaG91bGRC
bG9ja0hvcml6b250YWxTY3JvbGxDaGFpbmluZyhzY3JvbGxDaGFpbmluZ0Jsb2NrZXIsIGJpYXNl
ZERlbHRhKSkKKyAgICAgICAgICAgIGhhbmRsZWRFdmVudCA9IGZhbHNlOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBoYW5kbGVkRXZlbnQgPSB0cnVlOworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisKKyAgICBTY3JvbGxDaGFpbmluZ0Jsb2NrZXI6OmZpbHRlckRlbHRhKHNjcm9sbENo
YWluaW5nQmxvY2tlciwgYmlhc2VkRGVsdGEsIGZpbHRlcmVkRGVsdGEpOworICAgIHdoZWVsRXZl
bnQgPSB3aGVlbEV2ZW50LmNvcHlXaXRoRGVsdGFzQW5kVmVsb2NpdHkoZmlsdGVyZWREZWx0YS53
aWR0aCgpLCBmaWx0ZXJlZERlbHRhLmhlaWdodCgpLCB3aGVlbEV2ZW50LnNjcm9sbGluZ1ZlbG9j
aXR5KCkpOworICAgIHJldHVybiBmYWxzZTsKK30KKwogYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRs
ZVdoZWVsRXZlbnRJbnRlcm5hbChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50LCBPcHRp
b25TZXQ8V2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwcz4gcHJvY2Vzc2luZ1N0ZXBzLCBPcHRpb25T
ZXQ8RXZlbnRIYW5kbGluZz4mIGhhbmRsaW5nKQogewogICAgIGF1dG8qIGRvY3VtZW50ID0gbV9m
cmFtZS5kb2N1bWVudCgpOwpAQCAtMjg5Myw2ICsyOTI0LDggQEAgYm9vbCBFdmVudEhhbmRsZXI6
OmhhbmRsZVdoZWVsRXZlbnRJbnRlcm5hbChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50
LCBPcHQKICAgICBhdXRvIGRlZmVycmVyID0gV2hlZWxFdmVudFRlc3RNb25pdG9yQ29tcGxldGlv
bkRlZmVycmVyIHsgbW9uaXRvci5nZXQoKSwgdGhpcywgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpE
ZWZlclJlYXNvbjo6SGFuZGxpbmdXaGVlbEV2ZW50T25NYWluVGhyZWFkIH07CiAjZW5kaWYKIAor
ICAgIHJlc2V0U2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKCk7CisKICAgICBtX2lzSGFuZGxpbmdXaGVl
bEV2ZW50ID0gdHJ1ZTsKICAgICBhdXRvIGFsbG93c1Njcm9sbGluZ1N0YXRlID0gU2V0Rm9yU2Nv
cGUobV9jdXJyZW50V2hlZWxFdmVudEFsbG93c1Njcm9sbGluZywgcHJvY2Vzc2luZ1N0ZXBzLmNv
bnRhaW5zKFdoZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHM6Ok1haW5UaHJlYWRGb3JTY3JvbGxpbmcp
KTsKICAgICAKQEAgLTI5MTcsMTEgKzI5NTAsMTYgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRs
ZVdoZWVsRXZlbnRJbnRlcm5hbChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50LCBPcHQK
ICAgICAvLyBpdHNlbGYgZmluZHMgYW5kIHRyaWVzIHRvIHNjcm9sbCBvdmVyZmxvdyBzY3JvbGxl
cnMuCiAgICAgZGV0ZXJtaW5lV2hlZWxFdmVudFRhcmdldChldmVudCwgZWxlbWVudCwgc2Nyb2xs
YWJsZUFyZWEsIGlzT3ZlcldpZGdldCk7CiAKKyAgICBhdXRvIG9sZEJsb2NrZXIgPSBtX3Njcm9s
bENoYWluaW5nQmxvY2tlcjsKICAgICBpZiAoZWxlbWVudCkgewogICAgICAgICBpZiAoaXNPdmVy
V2lkZ2V0KSB7CiAgICAgICAgICAgICBpZiAoV2Vha1B0cjxXaWRnZXQ+IHdpZGdldCA9IHdpZGdl
dEZvckVsZW1lbnQoKmVsZW1lbnQpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHBhc3NXaGVlbEV2
ZW50VG9XaWRnZXQoZXZlbnQsICp3aWRnZXQuZ2V0KCksIHByb2Nlc3NpbmdTdGVwcykpCiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBjb21wbGV0ZVdpZGdldFdoZWVsRXZlbnQoZXZlbnQsIHdp
ZGdldCwgc2Nyb2xsYWJsZUFyZWEpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKG1fc2Nyb2xs
Q2hhaW5pbmdCbG9ja2VyLmJsb2NrWCAhPSBvbGRCbG9ja2VyLmJsb2NrWCB8fCBtX3Njcm9sbENo
YWluaW5nQmxvY2tlci5ibG9ja1kgIT0gb2xkQmxvY2tlci5ibG9ja1kpIHsKKyAgICAgICAgICAg
ICAgICAgICAgLy8gSWYgbV9zY3JvbGxDaGFpbmluZ0Jsb2NrZXIgaXMgY2hhbmdlZCBpbiBzdWJm
cmFtZXMsIHRoZSBsYWNoZWQgc3RhdGUgc2hvdWxkIGJlIGNhbGN1bGF0ZWQgYWdhaW4uCisgICAg
ICAgICAgICAgICAgICAgIHNjcm9sbENoYWluaW5nQmxvY2tlckNoYW5nZWRCeVN1YmZyYW1lKGV2
ZW50LCBlbGVtZW50LCBzY3JvbGxhYmxlQXJlYSwgaXNPdmVyV2lkZ2V0KTsKKyAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtMjk1NiwxMSArMjk5NCwxNyBA
QCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudEludGVybmFsKGNvbnN0IFBsYXRm
b3JtV2hlZWxFdmVudCYgZXZlbnQsIE9wdAogI2VuZGlmCiAKICAgICBpZiAoYWxsb3dTY3JvbGxp
bmcpIHsKLSAgICAgICAgLy8gRklYTUU6IHByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKCkg
aXMgb25seSBjYWxsZWQgZm9yIEZyYW1lVmlldyBzY3JvbGxpbmcsIG5vdCBvdmVyZmxvdyBzY3Jv
bGxpbmcsIHdoaWNoIGlzIGNvbmZ1c2luZy4KLSAgICAgICAgaGFuZGxlZEV2ZW50ID0gcHJvY2Vz
c1doZWVsRXZlbnRGb3JTY3JvbGxpbmcoZXZlbnQsIHNjcm9sbGFibGVBcmVhLCBoYW5kbGluZyk7
Ci0gICAgICAgIHByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsU25hcChldmVudCwgc2Nyb2xsYWJs
ZUFyZWEpOworICAgICAgICBQbGF0Zm9ybVdoZWVsRXZlbnQgYWRqdXN0ZWRXaGVlbEV2ZW50ID0g
UGxhdGZvcm1XaGVlbEV2ZW50KGV2ZW50KTsKKyAgICAgICAgaWYgKCFoYW5kbGVTY3JvbGxDaGFp
bmluZ0Jsb2NrZXJCZWZvcmVTY3JvbGxpbmdGcmFtZVZpZXcoYWRqdXN0ZWRXaGVlbEV2ZW50LCBt
X3Njcm9sbENoYWluaW5nQmxvY2tlciwgaGFuZGxlZEV2ZW50KSkgeworICAgICAgICAgICAgLy8g
RklYTUU6IHByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKCkgaXMgb25seSBjYWxsZWQgZm9y
IEZyYW1lVmlldyBzY3JvbGxpbmcsIG5vdCBvdmVyZmxvdyBzY3JvbGxpbmcsIHdoaWNoIGlzIGNv
bmZ1c2luZy4KKyAgICAgICAgICAgIGhhbmRsZWRFdmVudCA9IHByb2Nlc3NXaGVlbEV2ZW50Rm9y
U2Nyb2xsaW5nKGFkanVzdGVkV2hlZWxFdmVudCwgc2Nyb2xsYWJsZUFyZWEsIGhhbmRsaW5nKTsK
KyAgICAgICAgICAgIHByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsU25hcChhZGp1c3RlZFdoZWVs
RXZlbnQsIHNjcm9sbGFibGVBcmVhKTsKKyAgICAgICAgfQogICAgIH0KIAorICAgIC8vIFBhc3Mg
dGhlIHZhbHVlIG9mIG1fc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIHRvIHRoZSBwYXJlbnQgZnJhbWUu
CisgICAgaWYgKCFoYW5kbGVkRXZlbnQgJiYgIW1fZnJhbWUuaXNNYWluRnJhbWUoKSkKKyAgICAg
ICAgcHJvcGFnYXRlU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyVG9QYXJlbnRGcmFtZShtX2ZyYW1lLCBt
X3Njcm9sbENoYWluaW5nQmxvY2tlcik7CiAgICAgcmV0dXJuIGhhbmRsZWRFdmVudDsKIH0KIApA
QCAtMjk3NSwyMCArMzAxOSwyMyBAQCBzdGF0aWMgdm9pZCBoYW5kbGVXaGVlbEV2ZW50UGhhc2VJ
blNjcm9sbGFibGVBcmVhKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYQogI2VuZGlmCiB9
CiAKLXN0YXRpYyBib29sIGRpZFNjcm9sbEluU2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJsZUFyZWEm
IHNjcm9sbGFibGVBcmVhLCBjb25zdCBXaGVlbEV2ZW50JiB3aGVlbEV2ZW50KQorc3RhdGljIGJv
b2wgZGlkU2Nyb2xsSW5TY3JvbGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFy
ZWEsIGNvbnN0IFdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIGNvbnN0IFNjcm9sbENoYWluaW5nQmxv
Y2tlciYgYmxvY2tlcikKIHsKKyAgICBGbG9hdFNpemUgZmlsdGVyZWREZWx0YSh3aGVlbEV2ZW50
LmRlbHRhWCgpLCB3aGVlbEV2ZW50LmRlbHRhWSgpKTsKKyAgICBhdXRvIGJpYXNlZERlbHRhID0g
UGxhdGZvcm1XaGVlbEV2ZW50Ojp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbChmaWx0
ZXJlZERlbHRhKTsKKyAgICBTY3JvbGxDaGFpbmluZ0Jsb2NrZXI6OmZpbHRlckRlbHRhKGJsb2Nr
ZXIsIGJpYXNlZERlbHRhLCBmaWx0ZXJlZERlbHRhKTsKICAgICBTY3JvbGxHcmFudWxhcml0eSBz
Y3JvbGxHcmFudWxhcml0eSA9IHdoZWVsR3JhbnVsYXJpdHlUb1Njcm9sbEdyYW51bGFyaXR5KHdo
ZWVsRXZlbnQuZGVsdGFNb2RlKCkpOwogICAgIGJvb2wgZGlkSGFuZGxlV2hlZWxFdmVudCA9IGZh
bHNlOwotICAgIGlmIChmbG9hdCBhYnNvbHV0ZURlbHRhID0gc3RkOjphYnMod2hlZWxFdmVudC5k
ZWx0YVgoKSkpCi0gICAgICAgIGRpZEhhbmRsZVdoZWVsRXZlbnQgfD0gc2Nyb2xsYWJsZUFyZWEu
c2Nyb2xsKHdoZWVsRXZlbnQuZGVsdGFYKCkgPiAwID8gU2Nyb2xsUmlnaHQgOiBTY3JvbGxMZWZ0
LCBzY3JvbGxHcmFudWxhcml0eSwgYWJzb2x1dGVEZWx0YSk7CisgICAgaWYgKGZsb2F0IGFic29s
dXRlRGVsdGEgPSBzdGQ6OmFicyhmaWx0ZXJlZERlbHRhLndpZHRoKCkpKQorICAgICAgICBkaWRI
YW5kbGVXaGVlbEV2ZW50IHw9IHNjcm9sbGFibGVBcmVhLnNjcm9sbChmaWx0ZXJlZERlbHRhLndp
ZHRoKCkgPiAwID8gU2Nyb2xsUmlnaHQgOiBTY3JvbGxMZWZ0LCBzY3JvbGxHcmFudWxhcml0eSwg
YWJzb2x1dGVEZWx0YSk7CiAKLSAgICBpZiAoZmxvYXQgYWJzb2x1dGVEZWx0YSA9IHN0ZDo6YWJz
KHdoZWVsRXZlbnQuZGVsdGFZKCkpKQotICAgICAgICBkaWRIYW5kbGVXaGVlbEV2ZW50IHw9IHNj
cm9sbGFibGVBcmVhLnNjcm9sbCh3aGVlbEV2ZW50LmRlbHRhWSgpID4gMCA/IFNjcm9sbERvd24g
OiBTY3JvbGxVcCwgc2Nyb2xsR3JhbnVsYXJpdHksIGFic29sdXRlRGVsdGEpOworICAgIGlmIChm
bG9hdCBhYnNvbHV0ZURlbHRhID0gc3RkOjphYnMoZmlsdGVyZWREZWx0YS5oZWlnaHQoKSkpCisg
ICAgICAgIGRpZEhhbmRsZVdoZWVsRXZlbnQgfD0gc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsKGZpbHRl
cmVkRGVsdGEuaGVpZ2h0KCkgPiAwID8gU2Nyb2xsRG93biA6IFNjcm9sbFVwLCBzY3JvbGxHcmFu
dWxhcml0eSwgYWJzb2x1dGVEZWx0YSk7CiAKICAgICByZXR1cm4gZGlkSGFuZGxlV2hlZWxFdmVu
dDsKIH0KIAotYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRl
RW5jbG9zaW5nQm94KE5vZGUqIHN0YXJ0Tm9kZSwgY29uc3QgV2hlZWxFdmVudCYgd2hlZWxFdmVu
dCwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJlZFBsYXRmb3JtRGVsdGEsIGNvbnN0IEZsb2F0U2l6
ZSYgZmlsdGVyZWRWZWxvY2l0eSwgT3B0aW9uU2V0PEV2ZW50SGFuZGxpbmc+IGV2ZW50SGFuZGxp
bmcpCitib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudEluQXBwcm9wcmlhdGVFbmNs
b3NpbmdCb3goTm9kZSogc3RhcnROb2RlLCBjb25zdCBXaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBG
bG9hdFNpemUmIGZpbHRlcmVkUGxhdGZvcm1EZWx0YSwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJl
ZFZlbG9jaXR5LCBPcHRpb25TZXQ8RXZlbnRIYW5kbGluZz4gZXZlbnRIYW5kbGluZykKIHsKICAg
ICBib29sIHNob3VsZEhhbmRsZUV2ZW50ID0gd2hlZWxFdmVudC5kZWx0YVgoKSB8fCB3aGVlbEV2
ZW50LmRlbHRhWSgpOwogI2lmIEVOQUJMRShXSEVFTF9FVkVOVF9MQVRDSElORykKQEAgLTMwMTAs
MjEgKzMwNTcsMzIgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnRJbkFwcHJv
cHJpYXRlRW5jbG9zaW5nQm94KE5vZGUqIHN0YXJ0Tm9kZSwgY28KICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgaWYgKGlzPFJlbmRlckxpc3RCb3g+KGluaXRpYWxFbmNsb3NpbmdCb3gpKQot
ICAgICAgICByZXR1cm4gZGlkU2Nyb2xsSW5TY3JvbGxhYmxlQXJlYShkb3duY2FzdDxSZW5kZXJM
aXN0Qm94Pihpbml0aWFsRW5jbG9zaW5nQm94KSwgd2hlZWxFdmVudCk7CisgICAgICAgIHJldHVy
biBkaWRTY3JvbGxJblNjcm9sbGFibGVBcmVhKGRvd25jYXN0PFJlbmRlckxpc3RCb3g+KGluaXRp
YWxFbmNsb3NpbmdCb3gpLCB3aGVlbEV2ZW50LCBtX3Njcm9sbENoYWluaW5nQmxvY2tlcik7CiAK
KyAgICBhdXRvIGJpYXNlZERlbHRhID0gUGxhdGZvcm1XaGVlbEV2ZW50Ojp3aGVlbERlbHRhQmlh
c2luZ1Rvd2FyZHNWZXJ0aWNhbChGbG9hdFNpemUod2hlZWxFdmVudC5kZWx0YVgoKSwgd2hlZWxF
dmVudC5kZWx0YVkoKSkpOwogICAgIFJlbmRlckJveCogY3VycmVudEVuY2xvc2luZ0JveCA9ICZp
bml0aWFsRW5jbG9zaW5nQm94OwogICAgIHdoaWxlIChjdXJyZW50RW5jbG9zaW5nQm94KSB7Cisg
ICAgICAgIGlmIChTY3JvbGxDaGFpbmluZ0Jsb2NrZXI6OnNob3VsZEJsb2NrU2Nyb2xsQ2hhaW5p
bmcobV9zY3JvbGxDaGFpbmluZ0Jsb2NrZXIsIGJpYXNlZERlbHRhKSkgeworICAgICAgICAgICAg
aWYgKFNjcm9sbENoYWluaW5nQmxvY2tlcjo6c2hvdWxkQmxvY2tIb3Jpem9udGFsU2Nyb2xsQ2hh
aW5pbmcobV9zY3JvbGxDaGFpbmluZ0Jsb2NrZXIsIGJpYXNlZERlbHRhKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQor
CiAgICAgICAgIGlmIChhdXRvKiBib3hMYXllciA9IGN1cnJlbnRFbmNsb3NpbmdCb3gtPmxheWVy
KCkgPyBjdXJyZW50RW5jbG9zaW5nQm94LT5sYXllcigpLT5zY3JvbGxhYmxlQXJlYSgpIDogbnVs
bHB0cikgewogICAgICAgICAgICAgYXV0byBwbGF0Zm9ybUV2ZW50ID0gd2hlZWxFdmVudC51bmRl
cmx5aW5nUGxhdGZvcm1FdmVudCgpOwogICAgICAgICAgICAgYm9vbCBzY3JvbGxpbmdXYXNIYW5k
bGVkOwogICAgICAgICAgICAgaWYgKHBsYXRmb3JtRXZlbnQpIHsKKyAgICAgICAgICAgICAgICBT
Y3JvbGxDaGFpbmluZ0Jsb2NrZXI6OmZpbHRlckRlbHRhKG1fc2Nyb2xsQ2hhaW5pbmdCbG9ja2Vy
LCBiaWFzZWREZWx0YSwgZmlsdGVyZWRQbGF0Zm9ybURlbHRhKTsKICAgICAgICAgICAgICAgICBh
dXRvIGNvcGllZEV2ZW50ID0gcGxhdGZvcm1FdmVudC0+Y29weVdpdGhEZWx0YXNBbmRWZWxvY2l0
eShmaWx0ZXJlZFBsYXRmb3JtRGVsdGEud2lkdGgoKSwgZmlsdGVyZWRQbGF0Zm9ybURlbHRhLmhl
aWdodCgpLCBmaWx0ZXJlZFZlbG9jaXR5KTsKICAgICAgICAgICAgICAgICBzY3JvbGxpbmdXYXNI
YW5kbGVkID0gaGFuZGxlV2hlZWxFdmVudEluU2Nyb2xsYWJsZUFyZWEoY29waWVkRXZlbnQsICpi
b3hMYXllciwgZXZlbnRIYW5kbGluZyk7CiAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAg
ICAgICBzY3JvbGxpbmdXYXNIYW5kbGVkID0gZGlkU2Nyb2xsSW5TY3JvbGxhYmxlQXJlYSgqYm94
TGF5ZXIsIHdoZWVsRXZlbnQpOworICAgICAgICAgICAgICAgIHNjcm9sbGluZ1dhc0hhbmRsZWQg
PSBkaWRTY3JvbGxJblNjcm9sbGFibGVBcmVhKCpib3hMYXllciwgd2hlZWxFdmVudCwgbV9zY3Jv
bGxDaGFpbmluZ0Jsb2NrZXIpOwogCiAgICAgICAgICAgICBpZiAoc2Nyb2xsaW5nV2FzSGFuZGxl
ZCkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAgICAgaWYgKGN1cnJl
bnRFbmNsb3NpbmdCb3gtPmVsZW1lbnQoKSAhPSBjdXJyZW50RW5jbG9zaW5nQm94LT5kb2N1bWVu
dCgpLmRvY3VtZW50RWxlbWVudCgpKQorICAgICAgICAgICAgICAgIGJveExheWVyLT5nZXRTY3Jv
bGxDaGFpbmluZ0Jsb2NrZXIobV9zY3JvbGxDaGFpbmluZ0Jsb2NrZXIpOwogICAgICAgICB9CiAK
ICAgICAgICAgY3VycmVudEVuY2xvc2luZ0JveCA9IGN1cnJlbnRFbmNsb3NpbmdCb3gtPmNvbnRh
aW5pbmdCbG9jaygpOwpAQCAtNDYzOCw0ICs0Njk2LDE1IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpw
YXNzTW91c2VNb3ZlRXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMm
IG1vCiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKSAmJiAhUExBVEZPUk0oV0lOKQogCit2
b2lkIEV2ZW50SGFuZGxlcjo6dXBkYXRlU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKGNvbnN0IFNjcm9s
bENoYWluaW5nQmxvY2tlciYgYmxvY2tlcikKK3sKKyAgICBtX3Njcm9sbENoYWluaW5nQmxvY2tl
ci5ibG9ja1ggfD0gYmxvY2tlci5ibG9ja1g7CisgICAgbV9zY3JvbGxDaGFpbmluZ0Jsb2NrZXIu
YmxvY2tZIHw9IGJsb2NrZXIuYmxvY2tZOworfQorCit2b2lkIEV2ZW50SGFuZGxlcjo6cmVzZXRT
Y3JvbGxDaGFpbmluZ0Jsb2NrZXIoKQoreworICAgIG1fc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyID0g
eyBmYWxzZSwgZmFsc2UgfTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRIYW5kbGVyLmgKaW5kZXggNWQwNDIwMzhiZjM0YmY4OWZmZTNkYjk5NDc2MzczNzg4
OTQ1Mjg3OS4uZjFlZGUxNjgzMTQ4ODE2N2UzN2Q1ZjJlYzFmZjcxZDUxZjFlYWY4NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCkBAIC0yMTQsNiArMjE0LDEwIEBAIHB1YmxpYzoKICAg
ICB2b2lkIGRlZmF1bHRXaGVlbEV2ZW50SGFuZGxlcihOb2RlKiwgV2hlZWxFdmVudCYpOwogICAg
IHZvaWQgd2hlZWxFdmVudFdhc1Byb2Nlc3NlZEJ5TWFpblRocmVhZChjb25zdCBQbGF0Zm9ybVdo
ZWVsRXZlbnQmLCBPcHRpb25TZXQ8RXZlbnRIYW5kbGluZz4pOwogCisgICAgdm9pZCB1cGRhdGVT
Y3JvbGxDaGFpbmluZ0Jsb2NrZXIoY29uc3QgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyJik7CisgICAg
dm9pZCByZXNldFNjcm9sbENoYWluaW5nQmxvY2tlcigpOworICAgIHZvaWQgc2Nyb2xsQ2hhaW5p
bmdCbG9ja2VyQ2hhbmdlZEJ5U3ViZnJhbWUoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgUmVm
UHRyPEVsZW1lbnQ+JiBldmVudFRhcmdldCwgV2Vha1B0cjxTY3JvbGxhYmxlQXJlYT4mLCBib29s
JiBpc092ZXJXaWRnZXQpOworCiAgICAgYm9vbCBoYW5kbGVQYXN0ZUdsb2JhbFNlbGVjdGlvbihj
b25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKIAogI2lmIEVOQUJMRShJT1NfVE9VQ0hfRVZFTlRT
KSB8fCBFTkFCTEUoSU9TX0dFU1RVUkVfRVZFTlRTKQpAQCAtNDcwLDcgKzQ3NCw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBwcm9jZXNzV2hlZWxFdmVudEZvclNjcm9sbFNuYXAoY29uc3QgUGxhdGZv
cm1XaGVlbEV2ZW50JiwgY29uc3QgV2Vha1B0cjxTY3JvbGxhYmxlQXJlYT4mKTsKICAgICBib29s
IGNvbXBsZXRlV2lkZ2V0V2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBjb25z
dCBXZWFrUHRyPFdpZGdldD4mLCBjb25zdCBXZWFrUHRyPFNjcm9sbGFibGVBcmVhPiYpOwogCi0g
ICAgYm9vbCBoYW5kbGVXaGVlbEV2ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2luZ0JveChOb2RlKiBz
dGFydE5vZGUsIGNvbnN0IFdoZWVsRXZlbnQmLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlcmVkUGxh
dGZvcm1EZWx0YSwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJlZFZlbG9jaXR5LCBPcHRpb25TZXQ8
RXZlbnRIYW5kbGluZz4pOworICAgIGJvb2wgaGFuZGxlV2hlZWxFdmVudEluQXBwcm9wcmlhdGVF
bmNsb3NpbmdCb3goTm9kZSogc3RhcnROb2RlLCBjb25zdCBXaGVlbEV2ZW50JiwgRmxvYXRTaXpl
JiBmaWx0ZXJlZFBsYXRmb3JtRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyZWRWZWxvY2l0
eSwgT3B0aW9uU2V0PEV2ZW50SGFuZGxpbmc+KTsKIAogICAgIGJvb2wgaGFuZGxlV2hlZWxFdmVu
dEluU2Nyb2xsYWJsZUFyZWEoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgU2Nyb2xsYWJsZUFy
ZWEmLCBPcHRpb25TZXQ8RXZlbnRIYW5kbGluZz4pOwogICAgIE9wdGlvbmFsPFdoZWVsU2Nyb2xs
R2VzdHVyZVN0YXRlPiB1cGRhdGVXaGVlbEdlc3R1cmVTdGF0ZShjb25zdCBQbGF0Zm9ybVdoZWVs
RXZlbnQmLCBPcHRpb25TZXQ8RXZlbnRIYW5kbGluZz4pOwpAQCAtNjQ2LDYgKzY1MCw4IEBAIHBy
aXZhdGU6CiAgICAgSW50UG9pbnQgbV90YXJnZXRBdXRvc2Nyb2xsUG9zaXRpb25JblVuc2Nyb2xs
ZWRSb290Vmlld0Nvb3JkaW5hdGVzOwogICAgIE9wdGlvbmFsPEludFBvaW50PiBtX2luaXRpYWxU
YXJnZXRBdXRvc2Nyb2xsUG9zaXRpb25JblVuc2Nyb2xsZWRSb290Vmlld0Nvb3JkaW5hdGVzOwog
I2VuZGlmCisKKyAgICBTY3JvbGxDaGFpbmluZ0Jsb2NrZXIgbV9zY3JvbGxDaGFpbmluZ0Jsb2Nr
ZXIgeyBmYWxzZSwgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCBjNTkxN2ZmOWFhN2MyMmU5MGU1NjcxMWY4NGJlMTEy
NDk0N2M4NjU5Li5hOTU3MGYxOGE4MTkyZDBkZTcxOTFmNjgwNzk1MzhlOWU4ZGJiMDViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC00MTksNiArNDE5LDI2IEBAIGJvb2wgRnJhbWVW
aWV3OjpkaWRGaXJzdExheW91dCgpIGNvbnN0CiAgICAgcmV0dXJuIGxheW91dENvbnRleHQoKS5k
aWRGaXJzdExheW91dCgpOwogfQogCitPdmVyc2Nyb2xsQmVoYXZpb3IgRnJhbWVWaWV3Ojpob3Jp
em9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29uc3QKK3sKKyAgICBhdXRvKiBkb2N1bWVudCA9
IGZyYW1lKCkuZG9jdW1lbnQoKTsKKyAgICBhdXRvIHNjcm9sbGluZ09iamVjdCA9IGRvY3VtZW50
ICYmIGRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKSA/IGRvY3VtZW50LT5kb2N1bWVudEVsZW1l
bnQoKS0+cmVuZGVyZXIoKSA6IG51bGxwdHI7CisgICAgLy8gQW4gZWxlbWVudCB0aGF0IGlzIG5v
dCBzY3JvbGwgY29udGFpbmVyIG11c3QgYWNjZXB0IGJ1dCBpZ25vcmUgdGhlIHZhbHVlcyBvZiB0
aGlzIHByb3BlcnR5LgorICAgIGlmIChzY3JvbGxpbmdPYmplY3QgJiYgcmVuZGVyVmlldygpICYm
IHJlbmRlclZpZXcoKS0+Y2FuQmVTY3JvbGxlZEFuZEhhc1Njcm9sbGFibGVBcmVhKCkpCisgICAg
ICAgIHJldHVybiBzY3JvbGxpbmdPYmplY3QtPnN0eWxlKCkub3ZlcnNjcm9sbEJlaGF2aW9yWCgp
OworICAgIHJldHVybiBTY3JvbGxhYmxlQXJlYTo6aG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlv
cigpOworfQorCitPdmVyc2Nyb2xsQmVoYXZpb3IgRnJhbWVWaWV3Ojp2ZXJ0aWNhbE92ZXJzY3Jv
bGxCZWhhdmlvcigpICBjb25zdAoreworICAgIGF1dG8qIGRvY3VtZW50ID0gZnJhbWUoKS5kb2N1
bWVudCgpOworICAgIGF1dG8gc2Nyb2xsaW5nT2JqZWN0ID0gZG9jdW1lbnQgJiYgZG9jdW1lbnQt
PmRvY3VtZW50RWxlbWVudCgpID8gZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpLT5yZW5kZXJl
cigpIDogbnVsbHB0cjsKKyAgICAvLyBBbiBlbGVtZW50IHRoYXQgaXMgbm90IHNjcm9sbCBjb250
YWluZXIgbXVzdCBhY2NlcHQgYnV0IGlnbm9yZSB0aGUgdmFsdWVzIG9mIHRoaXMgcHJvcGVydHku
CisgICAgaWYgKHNjcm9sbGluZ09iamVjdCAmJiByZW5kZXJWaWV3KCkgJiYgcmVuZGVyVmlldygp
LT5jYW5CZVNjcm9sbGVkQW5kSGFzU2Nyb2xsYWJsZUFyZWEoKSkKKyAgICAgICAgcmV0dXJuIHNj
cm9sbGluZ09iamVjdC0+c3R5bGUoKS5vdmVyc2Nyb2xsQmVoYXZpb3JZKCk7CisgICAgcmV0dXJu
IFNjcm9sbGFibGVBcmVhOjp2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpOworfQorCiB2b2lk
IEZyYW1lVmlldzo6aW52YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICBp
ZiAoIXBhcmVudCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCBlZDliMzc5NTgyYzk4
MjU1YjZhMTNkYzA2N2QzNzRlMGI4OTZkMWVkLi42M2ZkNjQ3MGJhYjcwMGQzOTNjMzNiMGUzOGJl
OGMxNWZjZjRhM2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTY4Myw2ICs2ODMsOSBA
QCBwdWJsaWM6CiAKICAgICBTdHJpbmcgZGVidWdEZXNjcmlwdGlvbigpIGNvbnN0IGZpbmFsOwog
CisgICAgT3ZlcnNjcm9sbEJlaGF2aW9yIGhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBj
b25zdCBmaW5hbDsKKyAgICBPdmVyc2Nyb2xsQmVoYXZpb3IgdmVydGljYWxPdmVyc2Nyb2xsQmVo
YXZpb3IoKSBjb25zdCBmaW5hbDsKKwogICAgIC8vIFNjcm9sbFZpZXcKICAgICB2b2lkIHVwZGF0
ZVNjcm9sbGJhclN0ZXBzKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2
ZW50SGFuZGxlck1hYy5tbQppbmRleCA4NjQ2NWY4MDVlMjA1MzU2ODcwNjRjMmZmNzYwNGQ1Yjg5
YTQyNDdkLi41OTYyMGI1MTVmMGUwMmM3ZDMyNTk5ODczNTYyZjBiYjJkZDk3ZDViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tCkBAIC03OTcsMTMgKzc5Nywx
OCBAQCBzdGF0aWMgU2Nyb2xsYWJsZUFyZWEqIHNjcm9sbGFibGVBcmVhRm9yQm94KFJlbmRlckJv
eCYgYm94KQogfQogCiAvLyBGSVhNRTogVGhpcyBjb3VsZCBiZSB3cml0dGVuIGluIHRlcm1zIG9m
IFNjcm9sbGFibGVBcmVhOjplbmNsb3NpbmdTY3JvbGxhYmxlQXJlYSgpLgotc3RhdGljIENvbnRh
aW5lck5vZGUqIGZpbmRFbmNsb3NpbmdTY3JvbGxhYmxlQ29udGFpbmVyKENvbnRhaW5lck5vZGUq
IG5vZGUsIGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCkKKy8vIERvIG5vdCB1
cGRhdGUgbV9zY3JvbGxDaGFpbmluZ0Jsb2NrZXIgaGVyZSwgdXBkYXRlIGl0IGluIEV2ZW50SGFu
ZGxlcjo6ZGVmYXVsdFdoZWVsRXZlbnRIYW5kbGVyIGxhdGVyIHdoZW4gcGFzcyBFdmVudFBhdGgs
CisvLyBvdGhlcndpc2UgdGhlIFdoZWVsRXZlbnQgZGVsdGEgb2YgZWxlbWVudCB3aXRoICFvdmVy
c2Nyb2xsLWJlaGF2aW9yOmF1dG8gd2lsbCBiZSBjaGFuZ2VkLgorc3RhdGljIENvbnRhaW5lck5v
ZGUqIGZpbmRFbmNsb3NpbmdTY3JvbGxhYmxlQ29udGFpbmVyKENvbnRhaW5lck5vZGUqIG5vZGUs
IGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgU2Nyb2xsQ2hhaW5pbmdCbG9j
a2VyJiBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIpCiB7Ci0gICAgYXV0byBiaWFzZWREZWx0YSA9IFNj
cm9sbENvbnRyb2xsZXI6OndoZWVsRGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRpY2FsKHdoZWVsRXZl
bnQpOworICAgIGF1dG8gYmlhc2VkRGVsdGEgPSBQbGF0Zm9ybVdoZWVsRXZlbnQ6OndoZWVsRGVs
dGFCaWFzaW5nVG93YXJkc1ZlcnRpY2FsKHdoZWVsRXZlbnQuZGVsdGEoKSk7CiAKICAgICAvLyBG
aW5kIHRoZSBmaXJzdCBub2RlIHdpdGggYSB2YWxpZCBzY3JvbGxhYmxlIGFyZWEgc3RhcnRpbmcg
d2l0aCB0aGUgY3VycmVudAogICAgIC8vIG5vZGUgYW5kIHRyYXZlcnNpbmcgaXRzIHBhcmVudHMg
KG9yIHNoYWRvdyBob3N0cykuCiAgICAgZm9yIChDb250YWluZXJOb2RlKiBjYW5kaWRhdGUgPSBu
b2RlOyBjYW5kaWRhdGU7IGNhbmRpZGF0ZSA9IGNhbmRpZGF0ZS0+cGFyZW50T3JTaGFkb3dIb3N0
Tm9kZSgpKSB7CisgICAgICAgIGlmIChTY3JvbGxDaGFpbmluZ0Jsb2NrZXI6OnNob3VsZEJsb2Nr
U2Nyb2xsQ2hhaW5pbmcoc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLCBiaWFzZWREZWx0YSkpCisgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwogICAgICAgICBpZiAoaXM8SFRNTElGcmFtZUVsZW1l
bnQ+KCpjYW5kaWRhdGUpKQogICAgICAgICAgICAgY29udGludWU7CiAKQEAgLTgxMyw3ICs4MTgs
NyBAQCBzdGF0aWMgQ29udGFpbmVyTm9kZSogZmluZEVuY2xvc2luZ1Njcm9sbGFibGVDb250YWlu
ZXIoQ29udGFpbmVyTm9kZSogbm9kZSwgY29ucwogICAgICAgICBSZW5kZXJCb3gqIGJveCA9IGNh
bmRpZGF0ZS0+cmVuZGVyQm94KCk7CiAgICAgICAgIGlmICghYm94IHx8ICFib3gtPmNhbkJlU2Ny
b2xsZWRBbmRIYXNTY3JvbGxhYmxlQXJlYSgpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgIAorCiAgICAgICAgIGF1dG8qIHNjcm9sbGFibGVBcmVhID0gc2Nyb2xsYWJsZUFyZWFGb3JC
b3goKmJveCk7CiAgICAgICAgIGlmICghc2Nyb2xsYWJsZUFyZWEpCiAgICAgICAgICAgICBjb250
aW51ZTsKQEAgLTgyNiw4ICs4MzEsMTEgQEAgc3RhdGljIENvbnRhaW5lck5vZGUqIGZpbmRFbmNs
b3NpbmdTY3JvbGxhYmxlQ29udGFpbmVyKENvbnRhaW5lck5vZGUqIG5vZGUsIGNvbnMKIAogICAg
ICAgICBpZiAoYmlhc2VkRGVsdGEud2lkdGgoKSAmJiAhc2Nyb2xsYWJsZUFyZWEtPmlzUGlubmVk
Rm9yU2Nyb2xsRGVsdGFPbkF4aXMoLWJpYXNlZERlbHRhLndpZHRoKCksIFNjcm9sbEV2ZW50QXhp
czo6SG9yaXpvbnRhbCkpCiAgICAgICAgICAgICByZXR1cm4gY2FuZGlkYXRlOworCisgICAgICAg
IGlmIChjYW5kaWRhdGUgIT0gY2FuZGlkYXRlLT5kb2N1bWVudCgpLmRvY3VtZW50RWxlbWVudCgp
KQorICAgICAgICAgICAgc2Nyb2xsYWJsZUFyZWEtPmdldFNjcm9sbENoYWluaW5nQmxvY2tlcihz
Y3JvbGxDaGFpbmluZ0Jsb2NrZXIpOwogICAgIH0KLSAgICAKKwogICAgIHJldHVybiBudWxscHRy
OwogfQogCkBAIC04NzIsMTAgKzg4MCwxMSBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6ZGV0ZXJtaW5l
V2hlZWxFdmVudFRhcmdldChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbgogICAg
IGlmICghdmlldykKICAgICAgICAgcmV0dXJuOwogCisgICAgU2Nyb2xsQ2hhaW5pbmdCbG9ja2Vy
IGJsb2NrZXIgPSBtX3Njcm9sbENoYWluaW5nQmxvY2tlcjsKICAgICBpZiAoZXZlbnRUYXJnZXRJ
c1BsYXRmb3JtV2lkZ2V0KHdoZWVsRXZlbnRUYXJnZXQuZ2V0KCkpKQogICAgICAgICBzY3JvbGxh
YmxlQXJlYSA9IHNjcm9sbGFibGVBcmVhRm9yRXZlbnRUYXJnZXQod2hlZWxFdmVudFRhcmdldC5n
ZXQoKSk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGF1dG8qIHNjcm9sbGFibGVDb250YWluZXIgPSBm
aW5kRW5jbG9zaW5nU2Nyb2xsYWJsZUNvbnRhaW5lcih3aGVlbEV2ZW50VGFyZ2V0LmdldCgpLCB3
aGVlbEV2ZW50KTsKKyAgICAgICAgYXV0byogc2Nyb2xsYWJsZUNvbnRhaW5lciA9IGZpbmRFbmNs
b3NpbmdTY3JvbGxhYmxlQ29udGFpbmVyKHdoZWVsRXZlbnRUYXJnZXQuZ2V0KCksIHdoZWVsRXZl
bnQsIGJsb2NrZXIpOwogICAgICAgICBpZiAoc2Nyb2xsYWJsZUNvbnRhaW5lcikKICAgICAgICAg
ICAgIHNjcm9sbGFibGVBcmVhID0gc2Nyb2xsYWJsZUFyZWFGb3JDb250YWluZXJOb2RlKCpzY3Jv
bGxhYmxlQ29udGFpbmVyKTsKICAgICAgICAgZWxzZQpAQCAtODkzLDkgKzkwMiwyMiBAQCB2b2lk
IEV2ZW50SGFuZGxlcjo6ZGV0ZXJtaW5lV2hlZWxFdmVudFRhcmdldChjb25zdCBQbGF0Zm9ybVdo
ZWVsRXZlbnQmIHdoZWVsRXZlbgogICAgIGlmIChtX2ZyYW1lLmlzTWFpbkZyYW1lKCkgJiYgd2hl
ZWxFdmVudC5pc0dlc3R1cmVTdGFydCgpKQogICAgICAgICBwYWdlLT53aGVlbEV2ZW50RGVsdGFG
aWx0ZXIoKS0+YmVnaW5GaWx0ZXJpbmdEZWx0YXMoKTsKIAorICAgIC8vIFdoZW4gdGhlIGxhY2hl
ZCBub2RlIGlzIGRldGVybWluZWQsIHdlIHNob3VsZCB1cGRhdGUgbV9zY3JvbGxDaGFpbmluZ0Js
b2NrZXIgaGVyZSwgZm9yIGl0IHdvbid0IHBhc3MgdGhlIHRyZWUgaW4gRXZlbnRIYW5kbGVyOjpk
ZWZhdWx0V2hlZWxFdmVudEhhbmRsZXIuCisgICAgLy8gT3RoZXJ3aXNlLCBtX3Njcm9sbENoYWlu
aW5nQmxvY2tlciBzaG91bGQgYmUgdXBkYXRlIGluIEV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxF
dmVudEluQXBwcm9wcmlhdGVFbmNsb3NpbmdCb3guCisgICAgdXBkYXRlU2Nyb2xsQ2hhaW5pbmdC
bG9ja2VyKGJsb2NrZXIpOwogICAgIHBhZ2UtPnNjcm9sbExhdGNoaW5nQ29udHJvbGxlcigpLnVw
ZGF0ZUFuZEZldGNoTGF0Y2hpbmdTdGF0ZUZvckZyYW1lKG1fZnJhbWUsIHdoZWVsRXZlbnQsIHdo
ZWVsRXZlbnRUYXJnZXQsIHNjcm9sbGFibGVBcmVhLCBpc092ZXJXaWRnZXQpOwogfQogCisvLyBU
aGlzIGZ1bmN0aW9uIGhhbmRsZXMgdGhlIHNjZW5hcmlvIHRoYXQgbV9zY3JvbGxDaGFpbmluZ0Js
b2NrZXIgaXMgY2hhbmdlZCBieSBzdWJmcmFtZS4KKy8vIFRoZSBzdGF0ZSBvZiBzY3JvbGxMYXRj
aGluZ0NvbnRyb2xsZXIgaXMgb3V0IG9mIGRhdGUsIG5lZWQgdG8gdXBkYXRlIGl0Lgordm9pZCBF
dmVudEhhbmRsZXI6OnNjcm9sbENoYWluaW5nQmxvY2tlckNoYW5nZWRCeVN1YmZyYW1lKGNvbnN0
IFBsYXRmb3JtV2hlZWxFdmVudCYgZXZlbnQsIFJlZlB0cjxFbGVtZW50PiYgZWxlbWVudCwgV2Vh
a1B0cjxTY3JvbGxhYmxlQXJlYT4mIHNjcm9sbGFibGVBcmVhLCBib29sJiBpc092ZXJXaWRnZXQp
Cit7CisgICAgaWYgKCFldmVudC5pc0dlc3R1cmVTdGFydCgpKQorICAgICAgICByZXR1cm47Cisg
ICAgY2xlYXJMYXRjaGVkU3RhdGUoKTsKKyAgICBkZXRlcm1pbmVXaGVlbEV2ZW50VGFyZ2V0KGV2
ZW50LCBlbGVtZW50LCBzY3JvbGxhYmxlQXJlYSwgaXNPdmVyV2lkZ2V0KTsKK30KKwogdm9pZCBF
dmVudEhhbmRsZXI6OnJlY29yZFdoZWVsRXZlbnRGb3JEZWx0YUZpbHRlcihjb25zdCBQbGF0Zm9y
bVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpCiB7CiAgICAgYXV0byogcGFnZSA9IG1fZnJhbWUucGFn
ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaAppbmRl
eCBkNzE2OTM0NmEyNDAyM2MyYTQ3ODdhZTM0NTQwYTM3NjA3YzBhMmQ1Li42NDE3OTdhNmY0MTg3
NTMzOGNhNzFlYTczOTE2MGQxMGIwNmY4OGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QbGF0Zm9ybVdoZWVsRXZlbnQuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAK
ICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCisjaW5jbHVkZSAiRmxvYXRTaXplLmgiCiAjaW5jbHVk
ZSAiSW50UG9pbnQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUV2ZW50LmgiCiAjaW5jbHVkZSA8d3Rm
L1dpbmRvd3NFeHRyYXMuaD4KQEAgLTE3NCw2ICsxNzUsOCBAQCBwdWJsaWM6CiAgICAgUGxhdGZv
cm1XaGVlbEV2ZW50KEhXTkQsIFdQQVJBTSwgTFBBUkFNLCBib29sIGlzTW91c2VIV2hlZWwpOwog
I2VuZGlmCiAKKyAgICBzdGF0aWMgRmxvYXRTaXplIHdoZWVsRGVsdGFCaWFzaW5nVG93YXJkc1Zl
cnRpY2FsKGNvbnN0IEZsb2F0U2l6ZSYpOworCiBwcm90ZWN0ZWQ6CiAgICAgUGxhdGZvcm1XaGVl
bEV2ZW50R3JhbnVsYXJpdHkgbV9ncmFudWxhcml0eSB7IFNjcm9sbEJ5UGl4ZWxXaGVlbEV2ZW50
IH07CiAgICAgYm9vbCBtX2RpcmVjdGlvbkludmVydGVkRnJvbURldmljZSB7IGZhbHNlIH07CkBA
IC0yNjQsNiArMjY3LDE5IEBAIGlubGluZSBGbG9hdFBvaW50IFBsYXRmb3JtV2hlZWxFdmVudDo6
c3dpcGVWZWxvY2l0eSgpIGNvbnN0CiAKICNlbmRpZiAvLyBFTkFCTEUoS0lORVRJQ19TQ1JPTExJ
TkcpCiAKK2lubGluZSBGbG9hdFNpemUgUGxhdGZvcm1XaGVlbEV2ZW50Ojp3aGVlbERlbHRhQmlh
c2luZ1Rvd2FyZHNWZXJ0aWNhbChjb25zdCBGbG9hdFNpemUmIGRlbHRhKQoreworICAgIGF1dG8g
ZGVsdGFYID0gZGVsdGEud2lkdGgoKTsKKyAgICBhdXRvIGRlbHRhWSA9IGRlbHRhLmhlaWdodCgp
OworCisgICAgaWYgKGZhYnNmKGRlbHRhWSkgPj0gZmFic2YoZGVsdGFYKSkKKyAgICAgICAgZGVs
dGFYID0gMDsKKyAgICBlbHNlCisgICAgICAgIGRlbHRhWSA9IDA7CisKKyAgICByZXR1cm4geyBk
ZWx0YVgsIGRlbHRhWSB9OworfQorCiBXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jik7CiBX
RUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFt
JiwgV2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwcyk7CiBXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgRXZlbnRIYW5kbGluZyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxUeXBlcy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsVHlwZXMuaAppbmRleCAwYjFjNDA1NjNlOGNiYjgyMmE5ZmVi
YTRjMGM0NjVmOGE1NzRhOTNiLi4yZjA3OGQ0MTQ4ZjcyYmJlYzhiMTk1YzQzODM0OGU2NGM5NzNm
Y2IzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxUeXBlcy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFR5cGVzLmgKQEAgLTI2LDYgKzI2LDcg
QEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgorI2luY2x1ZGUgIkZs
b2F0U2l6ZS5oIgogI2luY2x1ZGUgIkludFBvaW50LmgiCiAjaW5jbHVkZSA8Y3N0ZGludD4KICNp
bmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgpAQCAtMjU5LDYgKzI2MCw0MSBAQCBlbnVtIGNsYXNz
IFNjcm9sbFNuYXBQb2ludFNlbGVjdGlvbk1ldGhvZCA6IHVpbnQ4X3QgewogICAgIENsb3Nlc3Qs
CiB9OwogCitzdHJ1Y3QgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIHsKKyAgICBib29sIGJsb2NrWCB7
IGZhbHNlIH07CisgICAgYm9vbCBibG9ja1kgeyBmYWxzZSB9OworCisgICAgc3RhdGljIGJvb2wg
c2hvdWxkQmxvY2tIb3Jpem9udGFsU2Nyb2xsQ2hhaW5pbmcoY29uc3QgU2Nyb2xsQ2hhaW5pbmdC
bG9ja2VyJiBibG9ja2VyLCBjb25zdCBGbG9hdFNpemUmIGJpYXNlZERlbHRhKQorICAgIHsKKyAg
ICAgICAgaWYgKGJsb2NrZXIuYmxvY2tYICYmICFiaWFzZWREZWx0YS5oZWlnaHQoKSkKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAg
c3RhdGljIGJvb2wgc2hvdWxkQmxvY2tTY3JvbGxDaGFpbmluZyhjb25zdCBTY3JvbGxDaGFpbmlu
Z0Jsb2NrZXImIGJsb2NrZXIsIGNvbnN0IEZsb2F0U2l6ZSYgYmlhc2VkRGVsdGEpCisgICAgewor
ICAgICAgICBpZiAoKGJsb2NrZXIuYmxvY2tYICYmIGJsb2NrZXIuYmxvY2tZKQorICAgICAgICAg
ICAgfHwgKGJsb2NrZXIuYmxvY2tYICYmICFiaWFzZWREZWx0YS5oZWlnaHQoKSkKKyAgICAgICAg
ICAgIHx8IChibG9ja2VyLmJsb2NrWSAmJiAhYmlhc2VkRGVsdGEud2lkdGgoKSkpCisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHN0
YXRpYyB2b2lkIGZpbHRlckRlbHRhKGNvbnN0IFNjcm9sbENoYWluaW5nQmxvY2tlciYgYmxvY2tl
ciwgY29uc3QgRmxvYXRTaXplJiBiaWFzZWREZWx0YSwgRmxvYXRTaXplJiBmaWx0ZXJlZERlbHRh
KQorICAgIHsKKyAgICAgICAgaWYgKGJsb2NrZXIuYmxvY2tYKSB7CisgICAgICAgICAgICBmaWx0
ZXJlZERlbHRhLnNldFdpZHRoKDApOworICAgICAgICAgICAgaWYgKCFiaWFzZWREZWx0YS5oZWln
aHQoKSkKKyAgICAgICAgICAgICAgICBmaWx0ZXJlZERlbHRhLnNldEhlaWdodCgwKTsKKyAgICAg
ICAgfQorICAgICAgICBpZiAoYmxvY2tlci5ibG9ja1kpIHsKKyAgICAgICAgICAgIGZpbHRlcmVk
RGVsdGEuc2V0SGVpZ2h0KDApOworICAgICAgICAgICAgaWYgKCFiaWFzZWREZWx0YS53aWR0aCgp
KQorICAgICAgICAgICAgICAgIGZpbHRlcmVkRGVsdGEuc2V0V2lkdGgoMCk7CisgICAgICAgIH0K
KyAgICB9Cit9OworCiB1c2luZyBTY3JvbGxiYXJDb250cm9sU3RhdGUgPSB1bnNpZ25lZDsKIHVz
aW5nIFNjcm9sbGJhckNvbnRyb2xQYXJ0TWFzayA9IHVuc2lnbmVkOwogdXNpbmcgU2Nyb2xsaW5n
Tm9kZUlEID0gdWludDY0X3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxhYmxlQXJlYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJl
YS5jcHAKaW5kZXggNzlmOWU5ODA5OGE4ZGRjYTJiNDljZTk3N2QyMTQzZTFjYjZjYWY4NS4uZjA1
YmNmNTFkMTc4OTg0NWYxZTYwNDc4OWJlYjc3ZDU4ZDMyNjVjOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcApAQCAtODAzLDYgKzgwMywxMiBAQCB2b2lkIFNj
cm9sbGFibGVBcmVhOjpjb21wdXRlU2Nyb2xsYmFyVmFsdWVBbmRPdmVyaGFuZyhmbG9hdCBjdXJy
ZW50UG9zaXRpb24sIGZsbwogICAgIH0KIH0KIAordm9pZCBTY3JvbGxhYmxlQXJlYTo6Z2V0U2Ny
b2xsQ2hhaW5pbmdCbG9ja2VyKFNjcm9sbENoYWluaW5nQmxvY2tlciYgYmxvY2tlcikgY29uc3QK
K3sKKyAgICBibG9ja2VyLmJsb2NrWCB8PSBob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkg
IT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpBdXRvOworICAgIGJsb2NrZXIuYmxvY2tZIHw9IHZlcnRp
Y2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgIT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpBdXRvOworfQor
CiBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTY3JvbGxhYmxl
QXJlYSYgc2Nyb2xsYWJsZUFyZWEpCiB7CiAgICAgdHMgPDwgc2Nyb2xsYWJsZUFyZWEuZGVidWdE
ZXNjcmlwdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
YWJsZUFyZWEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgKaW5k
ZXggN2ViN2I1NDAyODI4NDBhYjdiNWYzMWZkZmE2YjJiZmQ1OGViMTlkYy4uNmI4MzZmNDg0MWQ3
Mzg1YWU5MGMzYzBmZDc5ZmRhYWQ0ZTE3NmIyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxhYmxlQXJlYS5oCkBAIC0xMTksNiArMTE5LDEwIEBAIHB1YmxpYzoKICAgICBib29sIGNv
bnN0cmFpbnNTY3JvbGxpbmdUb0NvbnRlbnRFZGdlKCkgY29uc3QgeyByZXR1cm4gbV9jb25zdHJh
aW5zU2Nyb2xsaW5nVG9Db250ZW50RWRnZTsgfQogICAgIHZvaWQgc2V0Q29uc3RyYWluc1Njcm9s
bGluZ1RvQ29udGVudEVkZ2UoYm9vbCBjb25zdHJhaW5zU2Nyb2xsaW5nVG9Db250ZW50RWRnZSkg
eyBtX2NvbnN0cmFpbnNTY3JvbGxpbmdUb0NvbnRlbnRFZGdlID0gY29uc3RyYWluc1Njcm9sbGlu
Z1RvQ29udGVudEVkZ2U7IH0KIAorICAgIHZpcnR1YWwgT3ZlcnNjcm9sbEJlaGF2aW9yIGhvcml6
b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdCB7IHJldHVybiBPdmVyc2Nyb2xsQmVoYXZp
b3I6OkF1dG87IH0KKyAgICB2aXJ0dWFsIE92ZXJzY3JvbGxCZWhhdmlvciB2ZXJ0aWNhbE92ZXJz
Y3JvbGxCZWhhdmlvcigpIGNvbnN0IHsgcmV0dXJuIE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0bzsg
fQorICAgIHZvaWQgZ2V0U2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKFNjcm9sbENoYWluaW5nQmxvY2tl
ciYpIGNvbnN0OworCiAgICAgdm9pZCBzZXRWZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkoU2Nyb2xs
RWxhc3RpY2l0eSBzY3JvbGxFbGFzdGljaXR5KSB7IG1fdmVydGljYWxTY3JvbGxFbGFzdGljaXR5
ID0gc2Nyb2xsRWxhc3RpY2l0eTsgfQogICAgIFNjcm9sbEVsYXN0aWNpdHkgdmVydGljYWxTY3Jv
bGxFbGFzdGljaXR5KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U2Nyb2xsRWxhc3RpY2l0
eT4obV92ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQppbmRleCBjMDk1Y2Q2NmY1OTU2Zjhi
ODlhYWNiMzNkNWI3ZjgwMjMwYTlhN2I1Li5iM2QxYWYzODZiNzc1MGEyOWQwYmI1ZjNlNTUwMDg4
MzBiYWNhMDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xs
QW5pbWF0b3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFu
aW1hdG9yTWFjLm1tCkBAIC0xMjI4LDkgKzEyMjgsOSBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yTWFj
OjpoYW5kbGVXaGVlbEV2ZW50UGhhc2UoUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2UgcGhhc2UpCiBi
b29sIFNjcm9sbEFuaW1hdG9yTWFjOjpzaG91bGRGb3J3YXJkV2hlZWxFdmVudHNUb1BhcmVudChj
b25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpIGNvbnN0CiB7CiAgICAgaWYgKHN0
ZDo6YWJzKHdoZWVsRXZlbnQuZGVsdGFZKCkpID49IHN0ZDo6YWJzKHdoZWVsRXZlbnQuZGVsdGFY
KCkpKQotICAgICAgICByZXR1cm4gIWFsbG93c1ZlcnRpY2FsU3RyZXRjaGluZyh3aGVlbEV2ZW50
KTsKKyAgICAgICAgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWEudmVydGljYWxPdmVyc2Nyb2xsQmVo
YXZpb3IoKSA9PSBPdmVyc2Nyb2xsQmVoYXZpb3I6OkF1dG8gJiYgIWFsbG93c1ZlcnRpY2FsU3Ry
ZXRjaGluZyh3aGVlbEV2ZW50KTsKIAotICAgIHJldHVybiAhYWxsb3dzSG9yaXpvbnRhbFN0cmV0
Y2hpbmcod2hlZWxFdmVudCk7CisgICAgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWEuaG9yaXpvbnRh
bE92ZXJzY3JvbGxCZWhhdmlvcigpID09IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0byAmJiAhYWxs
b3dzSG9yaXpvbnRhbFN0cmV0Y2hpbmcod2hlZWxFdmVudCk7CiB9CiAgICAgCiBib29sIFNjcm9s
bEFuaW1hdG9yTWFjOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYg
d2hlZWxFdmVudCkKQEAgLTEyOTUsNiArMTI5NSw5IEBAIHN0YXRpYyBib29sIGdlc3R1cmVTaG91
bGRCZWdpblNuYXAoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBTY3JvbGxF
CiAKIGJvb2wgU2Nyb2xsQW5pbWF0b3JNYWM6OmFsbG93c1ZlcnRpY2FsU3RyZXRjaGluZyhjb25z
dCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpIGNvbnN0CiB7CisgICAgaWYgKG1fc2Ny
b2xsYWJsZUFyZWEudmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSA9PSBPdmVyc2Nyb2xsQmVo
YXZpb3I6Ok5vbmUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIHN3aXRjaCAobV9zY3Jv
bGxhYmxlQXJlYS52ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkoKSkgewogICAgIGNhc2UgU2Nyb2xs
RWxhc3RpY2l0eUF1dG9tYXRpYzogewogICAgICAgICBTY3JvbGxiYXIqIGhTY3JvbGxlciA9IG1f
c2Nyb2xsYWJsZUFyZWEuaG9yaXpvbnRhbFNjcm9sbGJhcigpOwpAQCAtMTMxOSw2ICsxMzIyLDkg
QEAgYm9vbCBTY3JvbGxBbmltYXRvck1hYzo6YWxsb3dzVmVydGljYWxTdHJldGNoaW5nKGNvbnN0
IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWwKIAogYm9vbCBTY3JvbGxBbmltYXRvck1hYzo6YWxs
b3dzSG9yaXpvbnRhbFN0cmV0Y2hpbmcoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2
ZW50KSBjb25zdAogeworICAgIGlmIChtX3Njcm9sbGFibGVBcmVhLmhvcml6b250YWxPdmVyc2Ny
b2xsQmVoYXZpb3IoKSA9PSBPdmVyc2Nyb2xsQmVoYXZpb3I6Ok5vbmUpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKwogICAgIHN3aXRjaCAobV9zY3JvbGxhYmxlQXJlYS5ob3Jpem9udGFsU2Nyb2xs
RWxhc3RpY2l0eSgpKSB7CiAgICAgY2FzZSBTY3JvbGxFbGFzdGljaXR5QXV0b21hdGljOiB7CiAg
ICAgICAgIFNjcm9sbGJhciogaFNjcm9sbGVyID0gbV9zY3JvbGxhYmxlQXJlYS5ob3Jpem9udGFs
U2Nyb2xsYmFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Ny
b2xsQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxDb250
cm9sbGVyLm1tCmluZGV4IDBkZTgxZTA2ZjYzOGU5Yzc3MGQ4NzQ4NjUzYjBjNWZlNjExYzRlZWEu
LjYzNGZiNzkwZTA4NmZhZWQ5NTgxZDhmOTc5ZDhhMmNkMzI1Mjg0ZTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxDb250cm9sbGVyLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxDb250cm9sbGVyLm1tCkBAIC0zMTMsMTkgKzMx
Myw2IEBAIGJvb2wgU2Nyb2xsQ29udHJvbGxlcjo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0
Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpCiAgICAgcmV0dXJuIGhhbmRsZWQ7CiB9CiAKLUZs
b2F0U2l6ZSBTY3JvbGxDb250cm9sbGVyOjp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNh
bChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpCi17Ci0gICAgYXV0byBkZWx0
YVggPSB3aGVlbEV2ZW50LmRlbHRhWCgpOwotICAgIGF1dG8gZGVsdGFZID0gd2hlZWxFdmVudC5k
ZWx0YVkoKTsKLQotICAgIGlmIChmYWJzZihkZWx0YVkpID49IGZhYnNmKGRlbHRhWCkpCi0gICAg
ICAgIGRlbHRhWCA9IDA7Ci0gICAgZWxzZQotICAgICAgICBkZWx0YVkgPSAwOwotCi0gICAgcmV0
dXJuIHsgZGVsdGFYLCBkZWx0YVkgfTsKLX0KLQogT3B0aW9uYWw8U2Nyb2xsRGlyZWN0aW9uPiBT
Y3JvbGxDb250cm9sbGVyOjpkaXJlY3Rpb25Gcm9tRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2
ZW50JiB3aGVlbEV2ZW50LCBPcHRpb25hbDxTY3JvbGxFdmVudEF4aXM+IGF4aXMsIFdoZWVsQXhp
c0JpYXMgYmlhcykKIHsKICAgICAvLyBGSVhNRTogSXQncyBpbXBvc3NpYmxlIHRvIGluZmVyIGRp
cmVjdGlvbiBmcm9tIGEgc2luZ2xlIGV2ZW50LCBzaW5jZSB0aGUgc3RhcnQgb2YgYSBnZXN0dXJl
IGlzIGVpdGhlciB6ZXJvIG9yCkBAIC0zMzMsNyArMzIwLDcgQEAgT3B0aW9uYWw8U2Nyb2xsRGly
ZWN0aW9uPiBTY3JvbGxDb250cm9sbGVyOjpkaXJlY3Rpb25Gcm9tRXZlbnQoY29uc3QgUGxhdGZv
cm1XaGUKIAogICAgIGF1dG8gd2hlZWxEZWx0YSA9IEZsb2F0U2l6ZSB7IHdoZWVsRXZlbnQuZGVs
dGFYKCksIHdoZWVsRXZlbnQuZGVsdGFZKCkgfTsKICAgICBpZiAoYmlhcyA9PSBXaGVlbEF4aXNC
aWFzOjpWZXJ0aWNhbCkKLSAgICAgICAgd2hlZWxEZWx0YSA9IHdoZWVsRGVsdGFCaWFzaW5nVG93
YXJkc1ZlcnRpY2FsKHdoZWVsRXZlbnQpOworICAgICAgICB3aGVlbERlbHRhID0gUGxhdGZvcm1X
aGVlbEV2ZW50Ojp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbCh3aGVlbEV2ZW50LmRl
bHRhKCkpOwogCiAgICAgaWYgKGF4aXMpIHsKICAgICAgICAgc3dpdGNoIChheGlzLnZhbHVlKCkp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllclNjcm9s
bGFibGVBcmVhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllclNjcm9s
bGFibGVBcmVhLmNwcAppbmRleCBiNmI3YWIwYTIxMjUyNGVmZTg3YWMzN2VhZGNiZTEyMDA3Y2M1
ZTY1Li5mMWU5MDc1ZDU2MWY2OTQ0NzgyMTQyYzdjODQ5Mzc1ZWI5Y2Q3OWEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEu
Y3BwCkBAIC0xODE2LDQgKzE4MTYsMjAgQEAgU3RyaW5nIFJlbmRlckxheWVyU2Nyb2xsYWJsZUFy
ZWE6OmRlYnVnRGVzY3JpcHRpb24oKSBjb25zdAogICAgIHJldHVybiBtX2xheWVyLmRlYnVnRGVz
Y3JpcHRpb24oKTsKIH0KIAorT3ZlcnNjcm9sbEJlaGF2aW9yIFJlbmRlckxheWVyU2Nyb2xsYWJs
ZUFyZWE6Omhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdAoreworICAgIC8vIEFu
IGVsZW1lbnQgdGhhdCBpcyBub3Qgc2Nyb2xsIGNvbnRhaW5lciBtdXN0IGFjY2VwdCBidXQgaWdu
b3JlIHRoZSB2YWx1ZXMgb2YgdGhpcyBwcm9wZXJ0eS4KKyAgICBpZiAobV9sYXllci5yZW5kZXJC
b3goKSAmJiBtX2xheWVyLnJlbmRlckJveCgpLT5jYW5CZVNjcm9sbGVkQW5kSGFzU2Nyb2xsYWJs
ZUFyZWEoKSkKKyAgICAgICAgcmV0dXJuIG1fbGF5ZXIucmVuZGVyZXIoKS5zdHlsZSgpLm92ZXJz
Y3JvbGxCZWhhdmlvclgoKTsKKyAgICByZXR1cm4gU2Nyb2xsYWJsZUFyZWE6Omhvcml6b250YWxP
dmVyc2Nyb2xsQmVoYXZpb3IoKTsKK30KKworT3ZlcnNjcm9sbEJlaGF2aW9yIFJlbmRlckxheWVy
U2Nyb2xsYWJsZUFyZWE6OnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29uc3QKK3sKKyAg
ICAvLyBBbiBlbGVtZW50IHRoYXQgaXMgbm90IHNjcm9sbCBjb250YWluZXIgbXVzdCBhY2NlcHQg
YnV0IGlnbm9yZSB0aGUgdmFsdWVzIG9mIHRoaXMgcHJvcGVydHkuCisgICAgaWYgKG1fbGF5ZXIu
cmVuZGVyQm94KCkgJiYgbV9sYXllci5yZW5kZXJCb3goKS0+Y2FuQmVTY3JvbGxlZEFuZEhhc1Nj
cm9sbGFibGVBcmVhKCkpCisgICAgICAgIHJldHVybiBtX2xheWVyLnJlbmRlcmVyKCkuc3R5bGUo
KS5vdmVyc2Nyb2xsQmVoYXZpb3JZKCk7CisgICAgcmV0dXJuIFNjcm9sbGFibGVBcmVhOjp2ZXJ0
aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxl
QXJlYS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFy
ZWEuaAppbmRleCBkZTI2YjMwNDg5NjY2NmE1Y2RkNjRiNTBmNzZkNmQ1MWVkNjNlYWQzLi41Mzhh
Nzk0YzA2MzkxM2Q0MDY2MGRhY2VlOTU5ZTYzMTBkNjM2M2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmgKQEAgLTEyOSw2
ICsxMjksOSBAQCBwdWJsaWM6CiAKICAgICBib29sIHNjcm9sbChTY3JvbGxEaXJlY3Rpb24sIFNj
cm9sbEdyYW51bGFyaXR5LCBmbG9hdCBtdWx0aXBsaWVyID0gMSk7CiAKKyAgICBPdmVyc2Nyb2xs
QmVoYXZpb3IgaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpIGNvbnN0IGZpbmFsOworICAg
IE92ZXJzY3JvbGxCZWhhdmlvciB2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpIGNvbnN0IGZp
bmFsOworCiBwdWJsaWM6CiAgICAgLy8gQWxsIG1ldGhvZHMgaW4gdGhpcyBzZWN0aW9uIG92ZXJy
aWRlIFNjcm9sbGFibGVhQXJlYSBtZXRob2RzIChmaW5hbCkuCiAgICAgdm9pZCBhdmFpbGFibGVD
b250ZW50U2l6ZUNoYW5nZWQoQXZhaWxhYmxlU2l6ZUNoYW5nZVJlYXNvbikgZmluYWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQppbmRleCAyYjhh
MjgyMGY4MDliOGFiMzk1ZjY2ZmQ4MDhmN2FkMDhkZWQzYWQzLi45MzI0ODcwOTI0OTZhZmIwNGM5
OWI4MjJkZWExYjQyZTI3YjBiN2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTQwODYsNiArNDA4Niw4IEBAIHN0YXRpYyBCT09MIGN1
cnJlbnRTY3JvbGxJc0JsaXQoTlNWaWV3ICpjbGlwVmlldykKICAgICBhdXRvKiBmcmFtZSA9IGNv
cmUoW3NlbGYgX2ZyYW1lXSk7CiAgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmV2ZW50SGFuZGxl
cigpLndoZWVsRXZlbnQoZXZlbnQpKSB7CiAjaWYgUExBVEZPUk0oTUFDKQorICAgICAgICAvLyBG
SVhNRTogTmVlZCB0byBmaW5kIGEgd2F5IHRvIGJsb2NrIHRoZSBjcm9zcy1mcmFtZSBzY3JvbGwg
Y2hhaW5pbmcgaW4gV0sxLgorICAgICAgICAvLyBXZSBjYW4gbm90IGp1c3Qgc2tpcCB0aGUgc2Ny
b2xsIGhlcmUsIGl0IG5vdCBvbmx5IGJsb2NrcyBzY3JvbGwgY2hhaW5pbmcgYnV0IGFsc28gYmxv
Y2tzIHRoZSBzY3JvbGwgb24gY3VycmVudCB2aWV3LgogICAgICAgICBbc3VwZXIgc2Nyb2xsV2hl
ZWw6ZXZlbnRdOwogI2VuZGlmCiAgICAgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDg5YjllZmRhY2RkYjM4MWFiZjNiYTE0
Mzk4MGIwYTYzNTgxZGJmN2YuLmM1OWI1M2ZjY2YwN2IxYjdiODJjZmE0ZjI5ZjU0ZWQ0NWMyYTQ3
ZmUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw0NCBAQAorMjAyMS0wMy0xNSAgQ2F0aGllIENoZW4gIDxjYXRo
aWVjaGVuQGlnYWxpYS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBDU1Mgb3ZlcnNjcm9sbC1iZWhh
dmlvciBmb3Igc3luY2hyb25vdXMgc2Nyb2xsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI5NjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBCYXNlZCBvbiBGcsOpZMOpcmljIFdhbmcncyBwYXRjaC4KKwor
ICAgICAgICBUZXN0IG92ZXJzY3JvbGwtYmVoYXZpb3IgZm9yIG92ZXJmbG93IGVsZW1lbnRzIGFu
ZCBpZnJhbWVzLiBUaGUgdGVzdHMgdHJpZ2dlciB3aGVlbCBzY3JvbGwgZXZlbnRzCisgICAgICAg
IGFuZCB3YWl0IC41cywgdGhlbiBjaGVjayB3aGV0aGVyIHNjcm9sbCBvY2N1cnMgb3Igbm90Lgor
ICAgICAgICBUaGUgdGVzdHMgYXJlIHNraXBwZWQgb24gaU9TIGZvciBvbmx5IHN5bmNocm9ub3Vz
IHNjcm9sbCBhcmUgdGVzdGVkLgorICAgICAgICBGb3IgV0sxLCB0aGUgaWZyYW1lIHRlc3RzIGZh
aWwgYmVjYXVzZSBsYWNrIG9mIGludGVyZmFjZXMgdG8gY29udHJvbCBzY3JvbGwgY2hhaW5pbmcg
aW4gV2ViSFRNTFZpZXcuCisKKyAgICAgICAgKiBUZXN0RXhwZWN0YXRpb25zOiBXYWl0aW5nIC41
cyBmb3IgZWFjaCBjYXNlIG1ha2VzIHRoZSB0ZXN0IHNsb3cuCisgICAgICAgICogZmFzdC9zY3Jv
bGxpbmcvcmVzb3VyY2VzL292ZXJzY3JvbGwtYmVoYXZpb3Itc3VwcG9ydC5qczogQWRkZWQuCisg
ICAgICAgIChnZXREZWx0YXMpOgorICAgICAgICAoYXN5bmMgbW91c2VXaGVlbFNjcm9sbEFuZFdh
aXQpOgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVo
YXZpb3ItZWxlbWVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2Nyb2xs
aW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9y
LWlmcmFtZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL3N5
bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGZhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3Jv
bGxhYmxlLWVsZW1lbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9s
bGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJz
Y3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3It
dW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mv
VGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3Rh
dGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnM6CisKKzIwMjEt
MDItMDQgIFJvYiBCdWlzICA8cmJ1aXNAaWdhbGlhLmNvbT4KKworICAgICAgICBNYWtlIHNob3Vs
ZENvbXB1dGVMb2dpY2FsV2lkdGhGcm9tQXNwZWN0UmF0aW9BbmRJbnNldHMgd3JpdGluZyBtb2Rl
IGF3YXJlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjEzMjgKKworICAgICAgICBSZXZpZXdlZCBieSBNYW51ZWwgUmVnbyBDYXNhc25vdmFzLgorCisg
ICAgICAgIEVuYWJsZSBzb21lIHRlc3RzIHRoYXQgcGFzcyBub3cuCisKKyAgICAgICAgKiBUZXN0
RXhwZWN0YXRpb25zOgorCiAyMDIxLTAzLTI0ICBUcnVpdHQgU2F2ZWxsICA8dHNhdmVsbEBhcHBs
ZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNzQ5MjcuCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVj
dGF0aW9ucwppbmRleCA0MTBjZjM2YWJjOTMxMDkyZmFiMDczOTkxNTY3ZDllNjIxZjhhYzg1Li44
MmFmNjkzOWNhNGExZDg1MTFmZmNmNjQyODVmZGIxOTA1YjkyMWQ5IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlv
bnMKQEAgLTQ2NDcsNiArNDY0NywxMiBAQCBmYXN0L3NoYWRvdy1kb20vaW9zLyBbIFNraXAgXQog
IyBSZXF1aXJlcyBXSzIgVGVzdFJ1bm5lcgogZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1lbnRlci13
aGlsZS1leGl0aW5nLmh0bWwgWyBTa2lwIF0KIAorIyBOZWVkIHRvIHdhaXQgYW5kIGNoZWNrIHdo
ZXRoZXIgc2Nyb2xsIG9jY3VycworZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9s
bC1iZWhhdmlvci1lbGVtZW50Lmh0bWwgWyBTbG93IF0KK2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Ny
b2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0bWwgWyBTbG93IF0KK2Zhc3Qvc2Nyb2xs
aW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQu
aHRtbCBbIFNsb3cgXQorZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhh
dmlvci11bnNjcm9sbGFibGUtaWZyYW1lLmh0bWwgWyBTbG93IF0KKwogIyBBbmltYXRpb24gLyBM
YXlvdXQgd29ya2V0cyBhcmUgbm90IHN1cHBvcnRlZAogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93b3JrbGV0cy9hbmltYXRpb24td29ya2xldC1zZXJ2aWNlLXdvcmtlci1pbnRlcmNl
cHRpb24uaHR0cHMuaHRtbCBbIFNraXAgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93b3JrbGV0cy9hbmltYXRpb24td29ya2xldC1jc3AuaHR0cHMuaHRtbCBbIFNraXAgXQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvcmVzb3VyY2VzL292ZXJzY3JvbGwt
YmVoYXZpb3Itc3VwcG9ydC5qcyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3Jlc291cmNl
cy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXN1cHBvcnQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjMzZjM2YzBlMDZj
M2VkZGRhOWU2Y2FhZDAyZjZjZjNiNjQ4ZThiZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3Qvc2Nyb2xsaW5nL3Jlc291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXN1cHBvcnQu
anMKQEAgLTAsMCArMSw0MCBAQAorZnVuY3Rpb24gZ2V0RGVsdGFzKGRpcmVjdGlvbikgeworICAg
IHZhciBkZWx0YVggPSAwOworICAgIHZhciBkZWx0YVkgPSAwOworICAgIGlmIChkaXJlY3Rpb24g
PT0gImRvd24iKQorICAgICAgICBkZWx0YVkgPSAtNTsKKyAgICBlbHNlIGlmIChkaXJlY3Rpb24g
PT0gInVwIikKKyAgICAgICAgZGVsdGFZID0gNTsKKyAgICBlbHNlIGlmIChkaXJlY3Rpb24gPT0g
InJpZ2h0IikKKyAgICAgICAgZGVsdGFYID0gLTU7CisgICAgZWxzZSBpZiAoZGlyZWN0aW9uID09
ICJsZWZ0IikKKyAgICAgICAgZGVsdGFYID0gNTsKKyAgICByZXR1cm4geworICAgICAgICBYOiBk
ZWx0YVgsCisgICAgICAgIFk6IGRlbHRhWQorICAgIH07Cit9CisKK2FzeW5jIGZ1bmN0aW9uIG1v
dXNlV2hlZWxTY3JvbGxBbmRXYWl0KHgsIHksIGJlZ2luWCwgYmVnaW5ZLCBkZWx0YVgsIGRlbHRh
WSkKK3sKKyAgICBpZiAoYmVnaW5YID09PSB1bmRlZmluZWQpCisgICAgICAgIGJlZ2luWCA9IDA7
CisgICAgaWYgKGJlZ2luWSA9PT0gdW5kZWZpbmVkKQorICAgICAgICBiZWdpblkgPSAtMTsKKwor
ICAgIGlmIChkZWx0YVggPT09IHVuZGVmaW5lZCkKKyAgICAgICAgZGVsdGFYID0gMDsKKyAgICBp
ZiAoZGVsdGFZID09PSB1bmRlZmluZWQpCisgICAgICAgIGRlbHRhWSA9IC0xMDsKKworICAgIGV2
ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92
ZVRvKHgsIHkpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhiZWdpblgsIGJlZ2luWSwgImJlZ2FuIiwgIm5vbmUiKTsKKyAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZGVsdGFYLCBkZWx0
YVksICJjaGFuZ2VkIiwgIm5vbmUiKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgImVuZGVkIiwgIm5vbmUiKTsKKyAgICByZXR1
cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gewor
ICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHJlc29sdmUpOworICAgICAgICB9LCA1
MDApOworICAgIH0pOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcv
c3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3It
ZWxlbWVudC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjcxNTBmZjYwYjVkYmRkMGI0YTdhYzZm
ODNmYjU2ZjU3Y2QyY2Q4MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Ny
b2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwyMCBAQAorCitQQVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVz
dCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gYXV0by4KK1BBU1MgRWxlbWVudCB2ZXJ0
aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gYXV0by4KK1BB
U1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlv
cjogY29udGFpbiBhdXRvLgorUEFTUyBFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGgg
b3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBhdXRvLgorUEFTUyBFbGVtZW50IGhvcml6b250
YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIGF1dG8uCitQQVNT
IEVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBu
b25lIGF1dG8uCitQQVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJz
Y3JvbGwtYmVoYXZpb3I6IGF1dG8gY29udGFpbi4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3Jv
bGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gY29udGFpbi4KK1BBU1MgRWxl
bWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29u
dGFpbiBjb250YWluLgorUEFTUyBFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3Zl
cnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBjb250YWluLgorUEFTUyBFbGVtZW50IGhvcml6b250
YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIGNvbnRhaW4uCitQ
QVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9y
OiBub25lIGNvbnRhaW4uCitQQVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRo
IG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gbm9uZS4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBz
Y3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gbm9uZS4KK1BBU1MgRWxl
bWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29u
dGFpbiBub25lLgorUEFTUyBFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNj
cm9sbC1iZWhhdmlvcjogY29udGFpbiBub25lLgorUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Ny
b2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIG5vbmUuCitQQVNTIEVsZW1l
bnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIG5v
bmUuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xs
LW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3Jv
bGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50Lmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOTE2YzMxNDFiYWQ4MGNlZjIyYmUxZjFhMGVkZTA1NmYyY2RjMjExMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3Jv
bGwtYmVoYXZpb3ItZWxlbWVudC5odG1sCkBAIC0wLDAgKzEsODYgQEAKKzwhZG9jdHlwZSBodG1s
PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXN1cHBv
cnQuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL2RyYWZ0cy5j
c3N3Zy5vcmcvY3NzLW92ZXJzY3JvbGwtYmVoYXZpb3IiPgorPHN0eWxlPgorICAgIC5zY3JvbGxp
bmcgeworICAgICAgICBvdmVyZmxvdzogc2Nyb2xsOworICAgIH0KKyAgICAuc2Nyb2xsQ29udGVu
dCB7CisgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICB9
CisgICAgI3Jvb3QgeworICAgICAgICB3aWR0aDogMjAwcHg7CisgICAgICAgIGhlaWdodDogMjAw
cHg7CisgICAgfQorICAgICNzY3JvbGxlciB7CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAg
ICAgaGVpZ2h0OiAxMDBweDsKKyAgICB9Cis8L3N0eWxlPgorPGRpdiBpZD0ncm9vdCcgY2xhc3M9
InNjcm9sbGluZyI+CisgICAgPGRpdiBpZD0nc2Nyb2xsZXInIGNsYXNzPSJzY3JvbGxpbmciPgor
ICAgICAgICA8ZGl2IGNsYXNzPSJzY3JvbGxDb250ZW50Ij48L2Rpdj4KKyAgICA8L2Rpdj4KKyAg
ICA8ZGl2IGNsYXNzPSJzY3JvbGxDb250ZW50Ij48L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0Pgor
Y29uc3Qgcm9vdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyb290Jyk7Citjb25zdCBzY3Jv
bGxlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY3JvbGxlcicpOwordmFyIG92ZXJzY3Jv
bGxEYXRhcyA9IFtbImF1dG8iLCAiYXV0byIsIHRydWUsIHRydWVdLAorICAgICAgICAgICAgICAg
ICAgICAgICAgWyJjb250YWluIiwgImF1dG8iLCBmYWxzZSwgdHJ1ZV0sCisgICAgICAgICAgICAg
ICAgICAgICAgICBbIm5vbmUiLCAiYXV0byIsIGZhbHNlLCB0cnVlXSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIFsiYXV0byIsICJjb250YWluIiwgdHJ1ZSwgZmFsc2VdLAorICAgICAgICAgICAg
ICAgICAgICAgICAgWyJjb250YWluIiwgImNvbnRhaW4iLCBmYWxzZSwgZmFsc2VdLAorICAgICAg
ICAgICAgICAgICAgICAgICAgWyJub25lIiwgImNvbnRhaW4iLCBmYWxzZSwgZmFsc2VdLAorICAg
ICAgICAgICAgICAgICAgICAgICAgWyJhdXRvIiwgIm5vbmUiLCB0cnVlLCBmYWxzZV0sCisgICAg
ICAgICAgICAgICAgICAgICAgICBbImNvbnRhaW4iLCAibm9uZSIsIGZhbHNlLCBmYWxzZV0sCisg
ICAgICAgICAgICAgICAgICAgICAgICBbIm5vbmUiLCAibm9uZSIsIGZhbHNlLCBmYWxzZV1dOwor
CitmdW5jdGlvbiByZXNldFRlc3QoKSB7CisgICAgLy8gVHJ5IHZhcmlvdXMgbWV0aG9kcyB0byBl
bnN1cmUgdGhlIGVsZW1lbnQgcG9zaXRpb24gaXMgcmVzZXQgaW1tZWRpYXRlbHkuCisgICAgc2Ny
b2xsZXIuc2Nyb2xsTGVmdCA9IDMwMDsKKyAgICBzY3JvbGxlci5zY3JvbGxUb3AgPSAzMDA7Cisg
ICAgc2Nyb2xsZXIuc2Nyb2xsVG8oMzAwLCAzMDApOworCisgICAgcm9vdC5zY3JvbGxMZWZ0ID0g
MDsKKyAgICByb290LnNjcm9sbFRvcCA9IDA7CisgICAgcm9vdC5zY3JvbGxUbygwLCAwKTsKK30K
KworZnVuY3Rpb24gc3RhcnRUZXN0KCkgeworICAgIG92ZXJzY3JvbGxEYXRhcy5mb3JFYWNoKChb
b3ZlcnNjcm9sbFgsIG92ZXJzY3JvbGxZLCBwcm9wYWdhdGVYLCBwcm9wYWdhdGVZXSkgPT4gewor
ICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgICAgICAgICAgcmVzZXRUZXN0KCk7Cisg
ICAgICAgICAgICBzY3JvbGxlci5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JYID0gb3ZlcnNjcm9s
bFg7CisgICAgICAgICAgICBzY3JvbGxlci5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JZID0gb3Zl
cnNjcm9sbFk7CisKKyAgICAgICAgICAgIHZhciB4ID0gc2Nyb2xsZXIuY2xpZW50V2lkdGggLyAy
OworICAgICAgICAgICAgdmFyIHkgPSBzY3JvbGxlci5jbGllbnRIZWlnaHQgLyAyOworICAgICAg
ICAgICAgdmFyIGRlbHRhID0gZ2V0RGVsdGFzKCJyaWdodCIpOworICAgICAgICAgICAgcmV0dXJu
IG1vdXNlV2hlZWxTY3JvbGxBbmRXYWl0KHgsIHksIGRlbHRhLlgsIGRlbHRhLlksIGRlbHRhLlgs
IGRlbHRhLlkpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9v
dC5zY3JvbGxMZWZ0ID4gMCwgcHJvcGFnYXRlWCwgJ0NvbnRpbnVlIHVwIHRoZSBob3Jpem9udGFs
IHNjcm9sbCBjaGFpbmluZycpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0sICdFbGVtZW50
IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiAnICsgb3Zl
cnNjcm9sbFggKyAnICcgKyBvdmVyc2Nyb2xsWSArICcuJyk7CisKKyAgICAgICAgcHJvbWlzZV90
ZXN0KCgpID0+IHsKKyAgICAgICAgICAgIHJlc2V0VGVzdCgpOworICAgICAgICAgICAgc2Nyb2xs
ZXIuc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWCA9IG92ZXJzY3JvbGxYOworICAgICAgICAgICAg
c2Nyb2xsZXIuc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWSA9IG92ZXJzY3JvbGxZOworCisgICAg
ICAgICAgICB2YXIgeCA9IHNjcm9sbGVyLmNsaWVudFdpZHRoIC8gMjsKKyAgICAgICAgICAgIHZh
ciB5ID0gc2Nyb2xsZXIuY2xpZW50SGVpZ2h0IC8gMjsKKyAgICAgICAgICAgIHZhciBkZWx0YSA9
IGdldERlbHRhcygiZG93biIpOworICAgICAgICAgICAgcmV0dXJuIG1vdXNlV2hlZWxTY3JvbGxB
bmRXYWl0KHgsIHksIGRlbHRhLlgsIGRlbHRhLlksIGRlbHRhLlgsIGRlbHRhLlkpLnRoZW4oKCkg
PT4geworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxUb3AgPiAwLCBw
cm9wYWdhdGVZLCAnQ29udGludWUgdXAgdGhlIHZlcnRpY2FsIHNjcm9sbCBjaGFpbmluZycpOwor
ICAgICAgICAgICAgfSk7CisgICAgICAgIH0sICdFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0
IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogJyArIG92ZXJzY3JvbGxYICsgJyAnICsgb3ZlcnNj
cm9sbFkgKyAnLicpOworICAgIH0pOworfQorCithZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgc3Rh
cnRUZXN0KTsKKzwvc2NyaXB0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVo
YXZpb3ItaWZyYW1lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5
bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi45MDBhMGI3ZDkwNWI4N2MxZGI3NjI2OTRmZDAwNjM4ZjE5NzY5NTM3Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9s
bC1iZWhhdmlvci1pZnJhbWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjEgQEAKKworCitQQVNT
IElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjog
YXV0byBhdXRvLgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Ny
b2xsLWJlaGF2aW9yOiBhdXRvIGF1dG8uCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0
ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBhdXRvLgorUEFTUyBJZnJhbWUg
dmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGF1
dG8uCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1i
ZWhhdmlvcjogbm9uZSBhdXRvLgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0
aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIGF1dG8uCitQQVNTIElmcmFtZSBob3Jpem9udGFs
IHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBjb250YWluLgorUEFT
UyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBh
dXRvIGNvbnRhaW4uCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3Zl
cnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBjb250YWluLgorUEFTUyBJZnJhbWUgdmVydGljYWwg
c2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGNvbnRhaW4uCitQ
QVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlv
cjogbm9uZSBjb250YWluLgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBv
dmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIGNvbnRhaW4uCitQQVNTIElmcmFtZSBob3Jpem9udGFs
IHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBub25lLgorUEFTUyBJ
ZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRv
IG5vbmUuCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9s
bC1iZWhhdmlvcjogY29udGFpbiBub25lLgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRl
c3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIG5vbmUuCitQQVNTIElmcmFtZSBo
b3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBub25l
LgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2
aW9yOiBub25lIG5vbmUuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5n
L3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmUyODg0NWRiNTA1YjRlMmU5ZDA0NTM4MjlkZjU5ZTUyZjYwMzg1MzMK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9s
bC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS5odG1sCkBAIC0wLDAgKzEsODggQEAKKzwhZG9j
dHlwZSBodG1sPgorCis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBv
cnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2
aW9yLXN1cHBvcnQuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczov
L2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLW92ZXJzY3JvbGwtYmVoYXZpb3IiPgorPHN0eWxlPgorICAg
IC5zY3JvbGxpbmcgeworICAgICAgICBvdmVyZmxvdzogc2Nyb2xsOworICAgIH0KKyAgICAuc2Ny
b2xsQ29udGVudCB7CisgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgaGVpZ2h0OiAzMDBw
eDsKKyAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmVkLCBibHVl
KTsKKyAgICB9CisgICAgI3Jvb3QgeworICAgICAgICB3aWR0aDogMjAwcHg7CisgICAgICAgIGhl
aWdodDogMjAwcHg7CisgICAgfQorICAgICNzY3JvbGxlciB7CisgICAgICAgIHdpZHRoOiAxMDBw
eDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgICAgb3ZlcnNjcm9sbC1iZWhhdmlvci15
OiBhdXRvOworICAgIH0KKzwvc3R5bGU+Cis8ZGl2IGlkPSdyb290JyBjbGFzcz0ic2Nyb2xsaW5n
Ij4KKyAgICA8aWZyYW1lIGlkPSdzY3JvbGxlcicgc3JjZG9jPSI8aHRtbD48ZGl2IHN0eWxlPSd3
aWR0aDogMzAwcHg7IGhlaWdodDogMzAwcHg7Jz48L2Rpdj48L2h0bWw+CisgICAgICAgICI+PC9p
ZnJhbWU+CisgICAgPGRpdiBjbGFzcz0ic2Nyb2xsQ29udGVudCI+PC9kaXY+Cis8L2Rpdj4KKwor
PHNjcmlwdD4KKyAgICBjb25zdCByb290ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jvb3Qn
KTsKKyAgICBjb25zdCBzY3JvbGxlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY3JvbGxl
cicpOworICAgIHZhciBvdmVyc2Nyb2xsRGF0YXMgPSBbWyJhdXRvIiwgImF1dG8iLCB0cnVlLCB0
cnVlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImNvbnRhaW4iLCAiYXV0byIsIGZh
bHNlLCB0cnVlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIm5vbmUiLCAiYXV0byIs
IGZhbHNlLCB0cnVlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImF1dG8iLCAiY29u
dGFpbiIsIHRydWUsIGZhbHNlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImNvbnRh
aW4iLCAiY29udGFpbiIsIGZhbHNlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgWyJub25lIiwgImNvbnRhaW4iLCBmYWxzZSwgZmFsc2VdLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFsiYXV0byIsICJub25lIiwgdHJ1ZSwgZmFsc2VdLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFsiY29udGFpbiIsICJub25lIiwgZmFsc2UsIGZhbHNlXSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBbIm5vbmUiLCAibm9uZSIsIGZhbHNlLCBmYWxzZV1dOworICAg
IGZ1bmN0aW9uIHJlc2V0VGVzdCgpIHsKKyAgICAgICAgLy8gVHJ5IHZhcmlvdXMgbWV0aG9kcyB0
byBlbnN1cmUgdGhlIGVsZW1lbnQgcG9zaXRpb24gaXMgcmVzZXQgaW1tZWRpYXRlbHkuCisgICAg
ICAgIHNjcm9sbGVyLmNvbnRlbnRXaW5kb3cuc2Nyb2xsWCA9IDMwMDsKKyAgICAgICAgc2Nyb2xs
ZXIuY29udGVudFdpbmRvdy5zY3JvbGxZID0gMzAwOworICAgICAgICBzY3JvbGxlci5jb250ZW50
V2luZG93LnNjcm9sbFRvKDMwMCwgMzAwKTsKKworICAgICAgICByb290LnNjcm9sbExlZnQgPSAw
OworICAgICAgICByb290LnNjcm9sbFRvcCA9IDA7CisgICAgICAgIHJvb3Quc2Nyb2xsVG8oMCwg
MCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gb3ZlcnNjcm9sbEJlaGF2aW9yVGVzdCgpIHsKKyAg
ICAgICAgb3ZlcnNjcm9sbERhdGFzLmZvckVhY2goKFtvdmVyc2Nyb2xsWCwgb3ZlcnNjcm9sbFks
IHByb3BhZ2F0ZVgsIHByb3BhZ2F0ZVldKSA9PiB7CisgICAgICAgICAgICBwcm9taXNlX3Rlc3Qo
KCkgPT4geworICAgICAgICAgICAgICAgIHJlc2V0VGVzdCgpOworICAgICAgICAgICAgICAgIHZh
ciB0YXJnZXQgPSBzY3JvbGxlci5jb250ZW50V2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJodG1sIilbMF07CisgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLm92ZXJzY3Jv
bGxCZWhhdmlvclggPSBvdmVyc2Nyb2xsWDsKKyAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUu
b3ZlcnNjcm9sbEJlaGF2aW9yWSA9IG92ZXJzY3JvbGxZOworCisgICAgICAgICAgICAgICAgdmFy
IHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAgICAgICAgICAgICAgdmFyIHkgPSBz
Y3JvbGxlci5jbGllbnRIZWlnaHQgLyAyOworICAgICAgICAgICAgICAgIHZhciBkZWx0YSA9IGdl
dERlbHRhcygicmlnaHQiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbW91c2VXaGVlbFNjcm9s
bEFuZFdhaXQoeCwgeSwgZGVsdGEuWCwgZGVsdGEuWSwgZGVsdGEuWCwgZGVsdGEuWSkudGhlbigo
KSA9PiB7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxMZWZ0
ID4gMCwgcHJvcGFnYXRlWCwgJ0NvbnRpbnVlIHVwIHRoZSBob3Jpem9udGFsIHNjcm9sbCBjaGFp
bmluZycpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSwgJ0lmcmFtZSBob3Jp
em9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogJyArIG92ZXJzY3Jv
bGxYICsgJyAnICsgb3ZlcnNjcm9sbFkgKyAnLicpOworCisgICAgICAgICAgICBwcm9taXNlX3Rl
c3QoKCkgPT4geworICAgICAgICAgICAgICAgIHJlc2V0VGVzdCgpOworICAgICAgICAgICAgICAg
IHZhciB0YXJnZXQgPSBzY3JvbGxlci5jb250ZW50V2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJodG1sIilbMF07CisgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLm92ZXJz
Y3JvbGxCZWhhdmlvclggPSBvdmVyc2Nyb2xsWDsKKyAgICAgICAgICAgICAgICB0YXJnZXQuc3R5
bGUub3ZlcnNjcm9sbEJlaGF2aW9yWSA9IG92ZXJzY3JvbGxZOworCisgICAgICAgICAgICAgICAg
dmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAgICAgICAgICAgICAgdmFyIHkg
PSBzY3JvbGxlci5jbGllbnRIZWlnaHQgLyAyOworICAgICAgICAgICAgICAgIHZhciBkZWx0YSA9
IGdldERlbHRhcygiZG93biIpOworICAgICAgICAgICAgICAgIHJldHVybiBtb3VzZVdoZWVsU2Ny
b2xsQW5kV2FpdCh4LCB5LCBkZWx0YS5YLCBkZWx0YS5ZLCBkZWx0YS5YLCBkZWx0YS5ZKS50aGVu
KCgpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbFRv
cCA+IDAsIHByb3BhZ2F0ZVksICdDb250aW51ZSB1cCB0aGUgdmVydGljYWwgc2Nyb2xsIGNoYWlu
aW5nJyk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9LCAnSWZyYW1lIHZlcnRp
Y2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogJyArIG92ZXJzY3JvbGxY
ICsgJyAnICsgb3ZlcnNjcm9sbFkgKyAnLicpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBz
Y3JvbGxlci5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgb3ZlcnNjcm9sbEJlaGF2aW9yVGVzdCk7
Cis8L3NjcmlwdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVu
c2Nyb2xsYWJsZS1lbGVtZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xs
aW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYzOTViNjQ4OGQwODcwYjk1NjFjMDI4Njc5ZDdlMTVh
NDdmY2U2ZTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9z
eW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50LWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDQgQEAKKworUEFTUyBVbnNjcm9sbGFibGUgZWxlbWVudCBob3Jp
em9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4KK1BBU1Mg
VW5zY3JvbGxhYmxlIGVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xs
LWJlaGF2aW9yOiBub25lLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGlu
Zy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50Lmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJl
aGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2NiNzczMzY1OWUy
YmM0YWJkNjUyNzE4OWNmNTA2ZDZmZWZhMjMwNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3Jv
bGxhYmxlLWVsZW1lbnQuaHRtbApAQCAtMCwwICsxLDY2IEBACis8IWRvY3R5cGUgaHRtbD4KKwor
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb3ZlcnNjcm9sbC1iZWhhdmlvci1zdXBwb3J0Lmpz
Ij48L3NjcmlwdD4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9kcmFmdHMuY3Nzd2cu
b3JnL2Nzcy1vdmVyc2Nyb2xsLWJlaGF2aW9yIj4KKzxzdHlsZT4KKyAgICAuc2Nyb2xsaW5nIHsK
KyAgICAgICAgb3ZlcmZsb3c6IHNjcm9sbDsKKyAgICB9CisgICAgLnNjcm9sbENvbnRlbnQgewor
ICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgfQorICAg
ICNyb290IHsKKyAgICAgICAgd2lkdGg6IDIwMHB4OworICAgICAgICBoZWlnaHQ6IDIwMHB4Owor
ICAgIH0KKyAgICAjc2Nyb2xsZXIgeworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhl
aWdodDogMTAwcHg7CisgICAgICAgIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmU7CisgICAgICAg
IG92ZXJmbG93OiB2aXNpYmxlOworICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQo
MTM1ZGVnLCByZWQsIGJsdWUpOworICAgIH0KKzwvc3R5bGU+Cis8ZGl2IGlkPSJyb290IiBjbGFz
cz0ic2Nyb2xsaW5nIj4KKyAgICA8ZGl2IGlkPSJzY3JvbGxlciI+CisgICAgICAgIDxkaXYgY2xh
c3M9InNjcm9sbENvbnRlbnQiPjwvZGl2PgorICAgIDwvZGl2PgorICAgIDxkaXYgY2xhc3M9InNj
cm9sbENvbnRlbnQiPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+Citjb25zdCByb290ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jvb3QnKTsKK2NvbnN0IHNjcm9sbGVyID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ3Njcm9sbGVyJyk7CitmdW5jdGlvbiByZXNldFRlc3QoKSB7CisgICAg
cm9vdC5zY3JvbGxMZWZ0ID0gMDsKKyAgICByb290LnNjcm9sbFRvcCA9IDA7CisgICAgcm9vdC5z
Y3JvbGxUbygwLCAwKTsKK30KKworZnVuY3Rpb24gc3RhcnRUZXN0KCkgeworICAgICAgICBwcm9t
aXNlX3Rlc3QoKCkgPT4geworICAgICAgICAgICAgcmVzZXRUZXN0KCk7CisgICAgICAgICAgICB2
YXIgeCA9IHNjcm9sbGVyLmNsaWVudFdpZHRoIC8gMjsKKyAgICAgICAgICAgIHZhciB5ID0gc2Ny
b2xsZXIuY2xpZW50SGVpZ2h0IC8gMjsKKyAgICAgICAgICAgIHZhciBkZWx0YSA9IGdldERlbHRh
cygicmlnaHQiKTsKKyAgICAgICAgICAgIHJldHVybiBtb3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCh4
LCB5LCBkZWx0YS5YLCBkZWx0YS5ZLCBkZWx0YS5YLCBkZWx0YS5ZKS50aGVuKCgpID0+IHsKKyAg
ICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsTGVmdCA+IDAsIHRydWUsICdD
b250aW51ZSB1cCB0aGUgaG9yaXpvbnRhbCBzY3JvbGwgY2hhaW5pbmcnKTsKKyAgICAgICAgICAg
IH0pOworICAgICAgICB9LCAnVW5zY3JvbGxhYmxlIGVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwg
dGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuJyk7CisKKyAgICAgICAgcHJvbWlz
ZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAgIHJlc2V0VGVzdCgpOworICAgICAgICAgICAgdmFy
IHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAgICAgICAgICB2YXIgeSA9IHNjcm9s
bGVyLmNsaWVudEhlaWdodCAvIDI7CisgICAgICAgICAgICB2YXIgZGVsdGEgPSBnZXREZWx0YXMo
ImRvd24iKTsKKyAgICAgICAgICAgIHJldHVybiBtb3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCh4LCB5
LCBkZWx0YS5YLCBkZWx0YS5ZLCBkZWx0YS5YLCBkZWx0YS5ZKS50aGVuKCgpID0+IHsKKyAgICAg
ICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsVG9wID4gMCwgdHJ1ZSwgJ0NvbnRp
bnVlIHVwIHRoZSB2ZXJ0aWNhbCBzY3JvbGwgY2hhaW5pbmcnKTsKKyAgICAgICAgICAgIH0pOwor
ICAgICAgICB9LCAnVW5zY3JvbGxhYmxlIGVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0
aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLicpOworfQorCithZGRFdmVudExpc3RlbmVyKCJs
b2FkIiwgc3RhcnRUZXN0KTsKKzwvc2NyaXB0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJz
Y3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Ny
b2xsYWJsZS1pZnJhbWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdmYTU5Y2NiYTc5YWVmZjMz
ZGE3MGU5M2Q0ODhhMDdlZWM5YzU2OTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJs
ZS1pZnJhbWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorCisKK1BBU1MgVW5zY3JvbGxh
YmxlIGlmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlv
cjogbm9uZS4KK1BBU1MgVW5zY3JvbGxhYmxlIGlmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3
aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxh
YmxlLWlmcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwt
b3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZTI0MjVhZmM2MzdkZjUxZTQ0MTU0MjZhYjQ2N2M2MTRlMzhlZjYxNgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVo
YXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sCkBAIC0wLDAgKzEsNjYgQEAKKzwhZG9jdHlw
ZSBodG1sPgorCis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2aW9y
LXN1cHBvcnQuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL2Ry
YWZ0cy5jc3N3Zy5vcmcvY3NzLW92ZXJzY3JvbGwtYmVoYXZpb3IiPgorPHN0eWxlPgorICAgIC5z
Y3JvbGxpbmcgeworICAgICAgICBvdmVyZmxvdzogc2Nyb2xsOworICAgIH0KKyAgICAuc2Nyb2xs
Q29udGVudCB7CisgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgaGVpZ2h0OiAzMDBweDsK
KyAgICB9CisgICAgI3Jvb3QgeworICAgICAgICB3aWR0aDogMjAwcHg7CisgICAgICAgIGhlaWdo
dDogMjAwcHg7CisgICAgfQorICAgICNzY3JvbGxlciB7CisgICAgICAgIHdpZHRoOiAyMDBweDsK
KyAgICAgICAgaGVpZ2h0OiAyMDBweDsKKyAgICAgICAgb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9u
ZTsKKyAgICAgICAgb3ZlcmZsb3c6IHZpc2libGU7CisgICAgICAgIGJhY2tncm91bmQ6IGxpbmVh
ci1ncmFkaWVudCgxMzVkZWcsIHJlZCwgYmx1ZSk7CisgICAgfQorPC9zdHlsZT4KKzxkaXYgaWQ9
J3Jvb3QnIGNsYXNzPSJzY3JvbGxpbmciPgorICAgIDxpZnJhbWUgaWQ9J3Njcm9sbGVyJyBzcmNk
b2M9IjxodG1sIHN0eWxlPSdvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lOyc+PGRpdiBzdHlsZT0n
d2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDEwMHB4Oyc+PC9kaXY+PC9odG1sPgorICAgICAgICAiPjwv
aWZyYW1lPgorICAgIDxkaXYgY2xhc3M9InNjcm9sbENvbnRlbnQiPjwvZGl2PgorPC9kaXY+CisK
KzxzY3JpcHQ+Citjb25zdCByb290ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jvb3QnKTsK
K2NvbnN0IHNjcm9sbGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Njcm9sbGVyJyk7CisK
K2Z1bmN0aW9uIHJlc2V0VGVzdCgpIHsKKyAgICByb290LnNjcm9sbExlZnQgPSAwOworICAgIHJv
b3Quc2Nyb2xsVG9wID0gMDsKKyAgICByb290LnNjcm9sbFRvKDAsIDApOworfQorCitmdW5jdGlv
biBzdGFydFRlc3QoKSB7CisgICAgICAgIHByb21pc2VfdGVzdCgoKSA9PiB7CisgICAgICAgICAg
ICByZXNldFRlc3QoKTsKKyAgICAgICAgICAgIHZhciB4ID0gc2Nyb2xsZXIuY2xpZW50V2lkdGgg
LyAyOworICAgICAgICAgICAgdmFyIHkgPSBzY3JvbGxlci5jbGllbnRIZWlnaHQgLyAyOworICAg
ICAgICAgICAgdmFyIGRlbHRhID0gZ2V0RGVsdGFzKCJyaWdodCIpOworICAgICAgICAgICAgcmV0
dXJuIG1vdXNlV2hlZWxTY3JvbGxBbmRXYWl0KHgsIHksIGRlbHRhLlgsIGRlbHRhLlksIGRlbHRh
LlgsIGRlbHRhLlkpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMo
cm9vdC5zY3JvbGxMZWZ0ID4gMCwgdHJ1ZSwgJ0NvbnRpbnVlIHVwIHRoZSBob3Jpem9udGFsIHNj
cm9sbCBjaGFpbmluZycpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0sICdVbnNjcm9sbGFi
bGUgaWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9y
OiBub25lLicpOworCisgICAgICAgIHByb21pc2VfdGVzdCgoKSA9PiB7CisgICAgICAgICAgICBy
ZXNldFRlc3QoKTsKKyAgICAgICAgICAgIHZhciB4ID0gc2Nyb2xsZXIuY2xpZW50V2lkdGggLyAy
OworICAgICAgICAgICAgdmFyIHkgPSBzY3JvbGxlci5jbGllbnRIZWlnaHQgLyAyOworICAgICAg
ICAgICAgdmFyIGRlbHRhID0gZ2V0RGVsdGFzKCJkb3duIik7CisgICAgICAgICAgICByZXR1cm4g
bW91c2VXaGVlbFNjcm9sbEFuZFdhaXQoeCwgeSwgZGVsdGEuWCwgZGVsdGEuWSwgZGVsdGEuWCwg
ZGVsdGEuWSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyb290
LnNjcm9sbFRvcCA+IDAsIHRydWUsICdDb250aW51ZSB1cCB0aGUgdmVydGljYWwgc2Nyb2xsIGNo
YWluaW5nJyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSwgJ1Vuc2Nyb2xsYWJsZSBpZnJh
bWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLicp
OworfQorCithZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgc3RhcnRUZXN0KTsKKzwvc2NyaXB0Pgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RF
eHBlY3RhdGlvbnMKaW5kZXggN2VhYTYwMmI1NjEyMWUyMTVjNmMzZjYyOGNiZDllNzUxNWY3MGY2
Mi4uMmExN2UwOTAwODQyNzBlZWFkNTQxMmE5MGM1NDkwYWEwMGVlMzM1NyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTc5MCw2ICs3OTAsMTIgQEAgc3Zn
L3RleHQvc2VsZWN0LXRleHQtc3ZnZm9udC5odG1sIFsgU2tpcCBdCiBzdmcvdGV4dC9zZWxlY3Rp
b24tZG91YmxlY2xpY2suc3ZnIFsgU2tpcCBdCiBzdmcvdGV4dC9zZWxlY3Rpb24tdHJpcGxlY2xp
Y2suc3ZnIFsgU2tpcCBdCiAKKyMgT3ZlcnNjcm9sbC1iZWhhdmlvciBpcyBub3Qgc3VwcG9ydGVk
IG9uIGlPUworZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1l
bGVtZW50Lmh0bWwgWyBTa2lwIF0KK2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3Jv
bGwtYmVoYXZpb3ItaWZyYW1lLmh0bWwgWyBTa2lwIF0KK2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Ny
b2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRtbCBbIFNraXAg
XQorZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9s
bGFibGUtaWZyYW1lLmh0bWwgWyBTa2lwIF0KKwogIyBJT1MgZG9lcyBub3QgaW1wbGVtZW50IHNl
dEF1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkCiBlZGl0aW5nL2luc2VydGluZy90eXBpbmct
c3BhY2UtdG8tdHJpZ2dlci1zbWFydC1saW5rLmh0bWwgWyBTa2lwIF0KIGVkaXRpbmcvaW5zZXJ0
aW5nL3NtYXJ0LWxpbmstd2hlbi1jYXJldC1pcy1tb3ZlZC1iZWZvcmUtVVJMLmh0bWwgWyBTa2lw
IF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0
aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwppbmRl
eCA0NTA5NDUxMjM1MDBhZTQxOGFmMTdhOTcyODkyOGY4NDYyZGMwZDhmLi43NTU1Yjc1ZWY1OTQy
OGQxNGNjOWRhYjY4NTVhZGVjMWFhNTI1MzIyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCkBAIC00NTMsNiArNDUzLDEwIEBAIGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1zY3JvbGwtc25hcC9zY3JvbGwtdGFyZ2V0LXBh
ZGRpbmctMDAxLmh0CiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mtc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtc3RvcC1jaGFuZ2UuaHRtbCBbIEZhaWx1cmUgXQogY3NzMy9z
Y3JvbGwtc25hcC9zY3JvbGwtcGFkZGluZy1tYWluZnJhbWUtcGFnaW5nLmh0bWwgWyBGYWlsdXJl
IF0KIAorIyBMYWNrIG9mIHdheXMgdG8gY29udHJvbCB0aGUgY3Jvc3MtZnJhbWUgc2Nyb2xsIGNo
YWluaW5nIGluIFdLMS4KK2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVo
YXZpb3ItaWZyYW1lLmh0bWwgWyBTa2lwIF0KK2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92
ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sIFsgU2tpcCBdCisKICMj
IyBFTkQgT0YgKDIpIEZhaWx1cmVzIHdpdGhvdXQgYnVnIHJlcG9ydHMKICMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVz
dEV4cGVjdGF0aW9ucwppbmRleCA1NDc2MTM3ZjU0MzUyMzljZDc4YTNhODc1ZGMxZmQ2ZjBhNzA1
ZTJiLi44YTM3MzRkMDdmOGMyZGY2NWQ5NDM1M2QxOTMyYWE3NTkyYmQ0OGIzIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucwpAQCAtNTk3LDYgKzU5NywxMiBAQCBm
YXN0L2V2ZW50cy93aGVlbC9wbGF0Zm9ybS13aGVlbGV2ZW50LXBhZ2luZy15LWluLW5vbi1zY3Jv
bGxpbmctcGFnZS5odG1sIFsgU2tpcAogZmFzdC9ldmVudHMvd2hlZWwvcGxhdGZvcm0td2hlZWxl
dmVudC1wYWdpbmcteS1pbi1zY3JvbGxpbmctZGl2Lmh0bWwgWyBTa2lwIF0KIGZhc3QvZXZlbnRz
L3doZWVsL3BsYXRmb3JtLXdoZWVsZXZlbnQtcGFnaW5nLXktaW4tc2Nyb2xsaW5nLXBhZ2UuaHRt
bCBbIFNraXAgXQogCisjIE92ZXJzY3JvbGwtYmVoYXZpb3IgaXMgbm90IHN1cHBvcnRlZCBvbiBX
aW5kb3dzCitmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWVs
ZW1lbnQuaHRtbCBbIFNraXAgXQorZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9s
bC1iZWhhdmlvci1pZnJhbWUuaHRtbCBbIFNraXAgXQorZmFzdC9zY3JvbGxpbmcvc3luYy1zY3Jv
bGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC5odG1sIFsgU2tpcCBd
CitmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xs
YWJsZS1pZnJhbWUuaHRtbCBbIFNraXAgXQorCiAjIFBvaW50ZXIgTG9jayBpcyBub3QgaW1wbGVt
ZW50ZWQuCiBwb2ludGVyLWxvY2svIFsgU2tpcCBdCiBodHRwL3Rlc3RzL3BvaW50ZXItbG9jay8g
WyBTa2lwIF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445794</attachid>
            <date>2021-12-02 16:57:24 -0800</date>
            <delta_ts>2021-12-03 14:02:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222968-20211202165723.patch</filename>
            <type>text/plain</type>
            <size>35555</size>
            <attacher name="Nikos Mouchtaris">nmouchtaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MzUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGJiNmQyZjJmYmNkN2I3
ODU1MzIxY2U1YjgwMWQ1YzJmYWNiMzhmNC4uMzMxNmRiZTYzZmRhOTI1MTBjNjU0YTllZjQzZjM4
YzRjYjg5Mjg2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDIxLTEyLTAyICBOaWtv
bGFvcyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxl
bWVudCBDU1Mgb3ZlcnNjcm9sbC1iZWhhdmlvciBmb3Igc3luY2hyb25vdXMgc2Nyb2xsCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI5NjgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0czogZmFzdC9z
Y3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50Lmh0bWwKKyAg
ICAgICAgICAgICAgIGZhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZp
b3ItaWZyYW1lLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xs
LW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRtbAorICAgICAgICAg
ICAgICAgZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNj
cm9sbGFibGUtaWZyYW1lLmh0bWwKKworICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnNob3VsZEJsb2NrU2Nyb2xsQ2hhaW5pbmdXaXRoU2Nyb2xsYWJs
ZUFyZWEpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50
SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6ZGlkU2Nyb2xsSW5TY3JvbGxhYmxlQXJlYSk6
CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnRJbkFwcHJv
cHJpYXRlRW5jbG9zaW5nQm94KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6c2Ny
b2xsYWJsZUFyZWFDYW5IYW5kbGVFdmVudCk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIu
aDoKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5oOgorICAgICAgICAqIHBhZ2UvbWFjL0V2ZW50
SGFuZGxlck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmZpbmRFbmNsb3NpbmdTY3JvbGxhYmxl
Q29udGFpbmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmg6CisgICAgICAgICogcGxh
dGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
QW5pbWF0b3JNYWM6OnNob3VsZEZvcndhcmRXaGVlbEV2ZW50c1RvUGFyZW50IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTWFjOjphbGxvd3NWZXJ0aWNhbFN0cmV0Y2hp
bmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JNYWM6OmFsbG93c0hv
cml6b250YWxTdHJldGNoaW5nIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xs
aW5nRWZmZWN0c0NvbnRyb2xsZXIubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdFZmZl
Y3RzQ29udHJvbGxlcjo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmg6CisKIDIwMjEtMTEtMzAg
IFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUGFzcyB0
aGUgdGltZXN0YW1wIGZvciBzY3JvbGxpbmcgdGhyZWFkIGFuaW1hdGlvbnMgdGhyb3VnaCBhbGwg
dGhlIHNlcnZpY2VTY3JvbGxBbmltYXRpb24oKSBjYWxscwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwCmluZGV4IGVjM2U0MjBlNzliYjFiNWRjZjcwMTM1NWQxYWNlNjliZjg4NjQxNTEu
LjI4ZGMzYTgyOGU2ODkwMmVlZDlkYjRmZjA2NTVmNmNiYzZlNWY5ZDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTI5MTksNiArMjkxOSwxOSBAQCBib29sIEV2ZW50SGFu
ZGxlcjo6Y29tcGxldGVXaWRnZXRXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYg
ZXZlbnQsIGNvbgogICAgIHJldHVybiBwbGF0Zm9ybUNvbXBsZXRlUGxhdGZvcm1XaWRnZXRXaGVl
bEV2ZW50KGV2ZW50LCAqd2lkZ2V0LmdldCgpLCBzY3JvbGxhYmxlQXJlYSk7CiB9CiAKK3N0YXRp
YyBib29sIHNob3VsZEJsb2NrU2Nyb2xsQ2hhaW5pbmdXaXRoU2Nyb2xsYWJsZUFyZWEoY29uc3Qg
U2Nyb2xsYWJsZUFyZWEqIHNjcm9sbGFibGVBcmVhLCBGbG9hdFNpemUmIGJpYXNlZERlbHRhKQor
eworICAgIGlmIChzY3JvbGxhYmxlQXJlYS0+aG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigp
ICE9IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0byB8fCBzY3JvbGxhYmxlQXJlYS0+dmVydGljYWxP
dmVyc2Nyb2xsQmVoYXZpb3IoKSAhPSBPdmVyc2Nyb2xsQmVoYXZpb3I6OkF1dG8pIHsKKyAgICAg
ICAgaWYgKHNjcm9sbGFibGVBcmVhLT5ob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgIT0g
T3ZlcnNjcm9sbEJlaGF2aW9yOjpBdXRvICYmICFiaWFzZWREZWx0YS5oZWlnaHQoKSAmJiBiaWFz
ZWREZWx0YS53aWR0aCgpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmICgo
c2Nyb2xsYWJsZUFyZWEtPmhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSAhPSBPdmVyc2Ny
b2xsQmVoYXZpb3I6OkF1dG8gJiYgc2Nyb2xsYWJsZUFyZWEtPnZlcnRpY2FsT3ZlcnNjcm9sbEJl
aGF2aW9yKCkgIT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpBdXRvKSB8fCAoc2Nyb2xsYWJsZUFyZWEt
Pmhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSE9IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0
byAmJiAhYmlhc2VkRGVsdGEuaGVpZ2h0KCkpIHx8IChzY3JvbGxhYmxlQXJlYS0+dmVydGljYWxP
dmVyc2Nyb2xsQmVoYXZpb3IoKSE9IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0byAmJiAhYmlhc2Vk
RGVsdGEud2lkdGgoKSkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgYmlhc2Vk
RGVsdGEuc2V0V2lkdGgoc2Nyb2xsYWJsZUFyZWEtPmhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZp
b3IoKSE9IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0byA/IDAgOiBiaWFzZWREZWx0YS53aWR0aCgp
KTsKKyAgICAgICAgYmlhc2VkRGVsdGEuc2V0SGVpZ2h0KHNjcm9sbGFibGVBcmVhLT52ZXJ0aWNh
bE92ZXJzY3JvbGxCZWhhdmlvcigpIT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpBdXRvID8gMCA6IGJp
YXNlZERlbHRhLmhlaWdodCgpKTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBib29s
IEV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQm
IHdoZWVsRXZlbnQsIE9wdGlvblNldDxXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBzPiBwcm9jZXNz
aW5nU3RlcHMpCiB7CiAgICAgUmVmIHByb3RlY3RlZEZyYW1lID0gbV9mcmFtZTsKQEAgLTMwMjks
OCArMzA0MiwxMyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudEludGVybmFs
KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgZXZlbnQsIE9wdAogCiAgICAgaWYgKGFsbG93U2Ny
b2xsaW5nKSB7CiAgICAgICAgIC8vIEZJWE1FOiBwcm9jZXNzV2hlZWxFdmVudEZvclNjcm9sbGlu
ZygpIGlzIG9ubHkgY2FsbGVkIGZvciBGcmFtZVZpZXcgc2Nyb2xsaW5nLCBub3Qgb3ZlcmZsb3cg
c2Nyb2xsaW5nLCB3aGljaCBpcyBjb25mdXNpbmcuCi0gICAgICAgIGhhbmRsZWRFdmVudCA9IHBy
b2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKGV2ZW50LCBzY3JvbGxhYmxlQXJlYSwgaGFuZGxp
bmcpOwotICAgICAgICBwcm9jZXNzV2hlZWxFdmVudEZvclNjcm9sbFNuYXAoZXZlbnQsIHNjcm9s
bGFibGVBcmVhKTsKKyAgICAgICAgUGxhdGZvcm1XaGVlbEV2ZW50IGFkanVzdGVkV2hlZWxFdmVu
dCA9IFBsYXRmb3JtV2hlZWxFdmVudChldmVudCk7CisgICAgICAgIGF1dG8gZmlsdGVyZWREZWx0
YSA9IGFkanVzdGVkV2hlZWxFdmVudC5kZWx0YSgpOworICAgICAgICBpZiAoIXNob3VsZEJsb2Nr
U2Nyb2xsQ2hhaW5pbmdXaXRoU2Nyb2xsYWJsZUFyZWEoc2Nyb2xsYWJsZUFyZWEuZ2V0KCksIGZp
bHRlcmVkRGVsdGEpKSB7CisgICAgICAgICAgICBhZGp1c3RlZFdoZWVsRXZlbnQgPSBhZGp1c3Rl
ZFdoZWVsRXZlbnQuY29weVdpdGhEZWx0YUFuZFZlbG9jaXR5KGZpbHRlcmVkRGVsdGEsIGFkanVz
dGVkV2hlZWxFdmVudC5zY3JvbGxpbmdWZWxvY2l0eSgpKTsKKyAgICAgICAgICAgIGhhbmRsZWRF
dmVudCA9IHByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKGFkanVzdGVkV2hlZWxFdmVudCwg
c2Nyb2xsYWJsZUFyZWEsIGhhbmRsaW5nKTsKKyAgICAgICAgICAgIHByb2Nlc3NXaGVlbEV2ZW50
Rm9yU2Nyb2xsU25hcChhZGp1c3RlZFdoZWVsRXZlbnQsIHNjcm9sbGFibGVBcmVhKTsKKyAgICAg
ICAgfQogICAgIH0KIAogICAgIHJldHVybiBoYW5kbGVkRXZlbnQ7CkBAIC0zMDQ5LDE4ICszMDY3
LDIwIEBAIHN0YXRpYyB2b2lkIGhhbmRsZVdoZWVsRXZlbnRQaGFzZUluU2Nyb2xsYWJsZUFyZWEo
U2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhCiAKIHN0YXRpYyBib29sIGRpZFNjcm9sbElu
U2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhLCBjb25zdCBXaGVl
bEV2ZW50JiB3aGVlbEV2ZW50KQogeworICAgIEZsb2F0U2l6ZSBmaWx0ZXJlZERlbHRhKHdoZWVs
RXZlbnQuZGVsdGFYKCksIHdoZWVsRXZlbnQuZGVsdGFZKCkpOworICAgIHNob3VsZEJsb2NrU2Ny
b2xsQ2hhaW5pbmdXaXRoU2Nyb2xsYWJsZUFyZWEoJnNjcm9sbGFibGVBcmVhLCBmaWx0ZXJlZERl
bHRhKTsKICAgICBTY3JvbGxHcmFudWxhcml0eSBzY3JvbGxHcmFudWxhcml0eSA9IHdoZWVsR3Jh
bnVsYXJpdHlUb1Njcm9sbEdyYW51bGFyaXR5KHdoZWVsRXZlbnQuZGVsdGFNb2RlKCkpOwogICAg
IGJvb2wgZGlkSGFuZGxlV2hlZWxFdmVudCA9IGZhbHNlOwotICAgIGlmIChmbG9hdCBhYnNvbHV0
ZURlbHRhID0gc3RkOjphYnMod2hlZWxFdmVudC5kZWx0YVgoKSkpCi0gICAgICAgIGRpZEhhbmRs
ZVdoZWVsRXZlbnQgfD0gc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsKHdoZWVsRXZlbnQuZGVsdGFYKCkg
PiAwID8gU2Nyb2xsUmlnaHQgOiBTY3JvbGxMZWZ0LCBzY3JvbGxHcmFudWxhcml0eSwgYWJzb2x1
dGVEZWx0YSk7CisgICAgaWYgKGZsb2F0IGFic29sdXRlRGVsdGEgPSBzdGQ6OmFicyhmaWx0ZXJl
ZERlbHRhLndpZHRoKCkpKQorICAgICAgICBkaWRIYW5kbGVXaGVlbEV2ZW50IHw9IHNjcm9sbGFi
bGVBcmVhLnNjcm9sbChmaWx0ZXJlZERlbHRhLndpZHRoKCkgPiAwID8gU2Nyb2xsUmlnaHQgOiBT
Y3JvbGxMZWZ0LCBzY3JvbGxHcmFudWxhcml0eSwgYWJzb2x1dGVEZWx0YSk7CiAKLSAgICBpZiAo
ZmxvYXQgYWJzb2x1dGVEZWx0YSA9IHN0ZDo6YWJzKHdoZWVsRXZlbnQuZGVsdGFZKCkpKQotICAg
ICAgICBkaWRIYW5kbGVXaGVlbEV2ZW50IHw9IHNjcm9sbGFibGVBcmVhLnNjcm9sbCh3aGVlbEV2
ZW50LmRlbHRhWSgpID4gMCA/IFNjcm9sbERvd24gOiBTY3JvbGxVcCwgc2Nyb2xsR3JhbnVsYXJp
dHksIGFic29sdXRlRGVsdGEpOworICAgIGlmIChmbG9hdCBhYnNvbHV0ZURlbHRhID0gc3RkOjph
YnMoZmlsdGVyZWREZWx0YS5oZWlnaHQoKSkpCisgICAgICAgIGRpZEhhbmRsZVdoZWVsRXZlbnQg
fD0gc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsKGZpbHRlcmVkRGVsdGEuaGVpZ2h0KCkgPiAwID8gU2Ny
b2xsRG93biA6IFNjcm9sbFVwLCBzY3JvbGxHcmFudWxhcml0eSwgYWJzb2x1dGVEZWx0YSk7CiAK
ICAgICByZXR1cm4gZGlkSGFuZGxlV2hlZWxFdmVudDsKIH0KIAotYm9vbCBFdmVudEhhbmRsZXI6
OmhhbmRsZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94KE5vZGUqIHN0YXJ0Tm9k
ZSwgY29uc3QgV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJl
ZFBsYXRmb3JtRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyZWRWZWxvY2l0eSwgT3B0aW9u
U2V0PEV2ZW50SGFuZGxpbmc+IGV2ZW50SGFuZGxpbmcpCitib29sIEV2ZW50SGFuZGxlcjo6aGFu
ZGxlV2hlZWxFdmVudEluQXBwcm9wcmlhdGVFbmNsb3NpbmdCb3goTm9kZSogc3RhcnROb2RlLCBj
b25zdCBXaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBGbG9hdFNpemUmIGZpbHRlcmVkUGxhdGZvcm1E
ZWx0YSwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJlZFZlbG9jaXR5LCBPcHRpb25TZXQ8RXZlbnRI
YW5kbGluZz4gZXZlbnRIYW5kbGluZykKIHsKICAgICBib29sIHNob3VsZEhhbmRsZUV2ZW50ID0g
d2hlZWxFdmVudC5kZWx0YVgoKSB8fCB3aGVlbEV2ZW50LmRlbHRhWSgpOwogI2lmIEVOQUJMRShX
SEVFTF9FVkVOVF9MQVRDSElORykKQEAgLTMwODMsOCArMzEwMywxOCBAQCBib29sIEV2ZW50SGFu
ZGxlcjo6aGFuZGxlV2hlZWxFdmVudEluQXBwcm9wcmlhdGVFbmNsb3NpbmdCb3goTm9kZSogc3Rh
cnROb2RlLCBjbwogICAgICAgICByZXR1cm4gZGlkU2Nyb2xsSW5TY3JvbGxhYmxlQXJlYShkb3du
Y2FzdDxSZW5kZXJMaXN0Qm94Pihpbml0aWFsRW5jbG9zaW5nQm94KSwgd2hlZWxFdmVudCk7CiAK
ICAgICBSZW5kZXJCb3gqIGN1cnJlbnRFbmNsb3NpbmdCb3ggPSAmaW5pdGlhbEVuY2xvc2luZ0Jv
eDsKKyNpZiBQTEFURk9STShNQUMpCisgICAgYXV0byBiaWFzZWREZWx0YSA9IFNjcm9sbGluZ0Vm
ZmVjdHNDb250cm9sbGVyOjp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbChGbG9hdFNp
emUod2hlZWxFdmVudC5kZWx0YVgoKSwgd2hlZWxFdmVudC5kZWx0YVkoKSkpOworI2Vsc2UKKyAg
ICBhdXRvIGJpYXNlZERlbHRhID0gd2hlZWxFdmVudC5kZWx0YSgpOworI2VuZGlmCiAgICAgd2hp
bGUgKGN1cnJlbnRFbmNsb3NpbmdCb3gpIHsKICAgICAgICAgaWYgKGF1dG8qIGJveFNjcm9sbGFi
bGVBcmVhID0gY3VycmVudEVuY2xvc2luZ0JveC0+bGF5ZXIoKSA/IGN1cnJlbnRFbmNsb3NpbmdC
b3gtPmxheWVyKCktPnNjcm9sbGFibGVBcmVhKCkgOiBudWxscHRyKSB7CisgICAgICAgICAgICBp
ZiAoYm94U2Nyb2xsYWJsZUFyZWEgJiYgc2hvdWxkQmxvY2tTY3JvbGxDaGFpbmluZ1dpdGhTY3Jv
bGxhYmxlQXJlYShib3hTY3JvbGxhYmxlQXJlYSwgYmlhc2VkRGVsdGEpKSB7CisgICAgICAgICAg
ICAgICAgaWYgKGJveFNjcm9sbGFibGVBcmVhLT5ob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9y
KCkgIT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpBdXRvICYmICFmaWx0ZXJlZFBsYXRmb3JtRGVsdGEu
aGVpZ2h0KCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGF1dG8gcGxhdGZv
cm1FdmVudCA9IHdoZWVsRXZlbnQudW5kZXJseWluZ1BsYXRmb3JtRXZlbnQoKTsKICAgICAgICAg
ICAgIGJvb2wgc2Nyb2xsaW5nV2FzSGFuZGxlZDsKICAgICAgICAgICAgIGlmIChwbGF0Zm9ybUV2
ZW50KSB7CkBAIC0zMTA3LDcgKzMxMzcsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlV2hl
ZWxFdmVudEluQXBwcm9wcmlhdGVFbmNsb3NpbmdCb3goTm9kZSogc3RhcnROb2RlLCBjbwogYm9v
bCBFdmVudEhhbmRsZXI6OnNjcm9sbGFibGVBcmVhQ2FuSGFuZGxlRXZlbnQoY29uc3QgUGxhdGZv
cm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEp
CiB7CiAjaWYgUExBVEZPUk0oTUFDKQotICAgIGF1dG8gYmlhc2VkRGVsdGEgPSBTY3JvbGxpbmdF
ZmZlY3RzQ29udHJvbGxlcjo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwod2hlZWxF
dmVudCk7CisgICAgYXV0byBiaWFzZWREZWx0YSA9IFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVy
Ojp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbCh3aGVlbEV2ZW50LmRlbHRhKCkpOwog
I2Vsc2UKICAgICBhdXRvIGJpYXNlZERlbHRhID0gd2hlZWxFdmVudC5kZWx0YSgpOwogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAppbmRleCBlYWMxZDVmMzQwMDg2YzM2MzZiZmY2
MTA5NjUxZGVjOWY0ZWIzMGZlLi43ODdkNTNkMTkzN2NjNTdhODFjOGUxYzE4ZWQzYWVhOTQzMGIx
MTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKQEAgLTQ3Niw3ICs0NzYsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgcHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxTbmFwKGNvbnN0IFBs
YXRmb3JtV2hlZWxFdmVudCYsIGNvbnN0IFdlYWtQdHI8U2Nyb2xsYWJsZUFyZWE+Jik7CiAgICAg
Ym9vbCBjb21wbGV0ZVdpZGdldFdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jiwg
Y29uc3QgV2Vha1B0cjxXaWRnZXQ+JiwgY29uc3QgV2Vha1B0cjxTY3JvbGxhYmxlQXJlYT4mKTsK
IAotICAgIGJvb2wgaGFuZGxlV2hlZWxFdmVudEluQXBwcm9wcmlhdGVFbmNsb3NpbmdCb3goTm9k
ZSogc3RhcnROb2RlLCBjb25zdCBXaGVlbEV2ZW50JiwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJl
ZFBsYXRmb3JtRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyZWRWZWxvY2l0eSwgT3B0aW9u
U2V0PEV2ZW50SGFuZGxpbmc+KTsKKyAgICBib29sIGhhbmRsZVdoZWVsRXZlbnRJbkFwcHJvcHJp
YXRlRW5jbG9zaW5nQm94KE5vZGUqIHN0YXJ0Tm9kZSwgY29uc3QgV2hlZWxFdmVudCYsIEZsb2F0
U2l6ZSYgZmlsdGVyZWRQbGF0Zm9ybURlbHRhLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlcmVkVmVs
b2NpdHksIE9wdGlvblNldDxFdmVudEhhbmRsaW5nPik7CiAKICAgICBib29sIGhhbmRsZVdoZWVs
RXZlbnRJblNjcm9sbGFibGVBcmVhKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIFNjcm9sbGFi
bGVBcmVhJiwgT3B0aW9uU2V0PEV2ZW50SGFuZGxpbmc+KTsKICAgICBzdGQ6Om9wdGlvbmFsPFdo
ZWVsU2Nyb2xsR2VzdHVyZVN0YXRlPiB1cGRhdGVXaGVlbEdlc3R1cmVTdGF0ZShjb25zdCBQbGF0
Zm9ybVdoZWVsRXZlbnQmLCBPcHRpb25TZXQ8RXZlbnRIYW5kbGluZz4pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tCmluZGV4IDFlY2QwY2M3OGVkNTU1NjRmMDMy
YjMwYzljODNlYmY1NzRhZGU4MDAuLjYxMGQxYWQzMzAyNWViM2UxNWM0NDYwMTdjY2I2YWU5OGVm
N2Y3ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0KQEAg
LTgxNSw2ICs4MTUsOCBAQCBzdGF0aWMgQ29udGFpbmVyTm9kZSogZmluZEVuY2xvc2luZ1Njcm9s
bGFibGVDb250YWluZXIoQ29udGFpbmVyTm9kZSogbm9kZSwgY29ucwogICAgICAgICBhdXRvKiBz
Y3JvbGxhYmxlQXJlYSA9IHNjcm9sbGFibGVBcmVhRm9yQm94KCpib3gpOwogICAgICAgICBpZiAo
IXNjcm9sbGFibGVBcmVhKQogICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmICgoc2Ny
b2xsYWJsZUFyZWEtPmhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSAhPSBPdmVyc2Nyb2xs
QmVoYXZpb3I6OkF1dG8gJiYgc2Nyb2xsYWJsZUFyZWEtPnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2
aW9yKCkgIT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpBdXRvKSB8fCAoc2Nyb2xsYWJsZUFyZWEtPmhv
cml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSAhPSBPdmVyc2Nyb2xsQmVoYXZpb3I6OkF1dG8g
JiYgIXdoZWVsRXZlbnQuZGVsdGEoKS5oZWlnaHQoKSkgfHwgKHNjcm9sbGFibGVBcmVhLT52ZXJ0
aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpICE9IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0byAmJiAh
d2hlZWxFdmVudC5kZWx0YSgpLndpZHRoKCkpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKICAgICAgICAgaWYgKHdoZWVsRXZlbnQucGhhc2UoKSA9PSBQbGF0Zm9ybVdoZWVsRXZlbnRQ
aGFzZTo6TWF5QmVnaW4gfHwgd2hlZWxFdmVudC5waGFzZSgpID09IFBsYXRmb3JtV2hlZWxFdmVu
dFBoYXNlOjpDYW5jZWxsZWQpCiAgICAgICAgICAgICByZXR1cm4gY2FuZGlkYXRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmgK
aW5kZXggYzdhM2EyZjg1ZWEwZWQ1YTdjNmE5NGJlMWJmMzU3MjhiMThjODhmMy4uMDY2NzkxZDBj
ZTQzYjZkZmM5Mzk2OTY1MDgxNDI0MjI4MmJmZTdmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5oCkBAIC0xNzQsNyArMTc0
LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNVc2VyU2Nyb2xsSW5Qcm9ncmVzcygpIGNvbnN0Owog
CiAjaWYgUExBVEZPUk0oTUFDKQotICAgIHN0YXRpYyBGbG9hdFNpemUgd2hlZWxEZWx0YUJpYXNp
bmdUb3dhcmRzVmVydGljYWwoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jik7CisgICAgc3RhdGlj
IEZsb2F0U2l6ZSB3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbChjb25zdCBGbG9hdFNp
emUmKTsKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBoYW5kbGVkLgogICAgIGJvb2wgcHJvY2Vz
c1doZWVsRXZlbnRGb3JTY3JvbGxTbmFwKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tCmluZGV4
IDUzYTQwNzUzZGI3NDdjNWFjNGIxZjdiMjFhOWFkNWMxZmY0NWE4MzYuLmZjYWE5ZjQxMmIxNGY2
OGVjNjZjNDEwZDVkZTVhYTg1MGE0YmRlZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0KQEAgLTk0LDkgKzk0LDkgQEAgdm9pZCBTY3Jv
bGxBbmltYXRvck1hYzo6aGFuZGxlV2hlZWxFdmVudFBoYXNlKFBsYXRmb3JtV2hlZWxFdmVudFBo
YXNlIHBoYXNlKQogYm9vbCBTY3JvbGxBbmltYXRvck1hYzo6c2hvdWxkRm9yd2FyZFdoZWVsRXZl
bnRzVG9QYXJlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50KSBjb25zdAog
ewogICAgIGlmIChzdGQ6OmFicyh3aGVlbEV2ZW50LmRlbHRhWSgpKSA+PSBzdGQ6OmFicyh3aGVl
bEV2ZW50LmRlbHRhWCgpKSkKLSAgICAgICAgcmV0dXJuICFhbGxvd3NWZXJ0aWNhbFN0cmV0Y2hp
bmcod2hlZWxFdmVudCk7CisgICAgICAgIHJldHVybiBtX3Njcm9sbGFibGVBcmVhLnZlcnRpY2Fs
T3ZlcnNjcm9sbEJlaGF2aW9yKCkgPT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpBdXRvICYmICFhbGxv
d3NWZXJ0aWNhbFN0cmV0Y2hpbmcod2hlZWxFdmVudCk7CiAKLSAgICByZXR1cm4gIWFsbG93c0hv
cml6b250YWxTdHJldGNoaW5nKHdoZWVsRXZlbnQpOworICAgIHJldHVybiBtX3Njcm9sbGFibGVB
cmVhLmhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSA9PSBPdmVyc2Nyb2xsQmVoYXZpb3I6
OkF1dG8gJiYgIWFsbG93c0hvcml6b250YWxTdHJldGNoaW5nKHdoZWVsRXZlbnQpOwogfQogICAg
IAogYm9vbCBTY3JvbGxBbmltYXRvck1hYzo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9y
bVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpCkBAIC0xNDMsNiArMTQzLDkgQEAgc3RhdGljIGJvb2wg
Z2VzdHVyZVNob3VsZEJlZ2luU25hcChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZl
bnQsIFNjcm9sbEUKIAogYm9vbCBTY3JvbGxBbmltYXRvck1hYzo6YWxsb3dzVmVydGljYWxTdHJl
dGNoaW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCkgY29uc3QKIHsKKyAg
ICBpZiAobV9zY3JvbGxhYmxlQXJlYS52ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpID09IE92
ZXJzY3JvbGxCZWhhdmlvcjo6Tm9uZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAogICAg
IHN3aXRjaCAobV9zY3JvbGxhYmxlQXJlYS52ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkoKSkgewog
ICAgIGNhc2UgU2Nyb2xsRWxhc3RpY2l0eTo6QXV0b21hdGljOiB7CiAgICAgICAgIFNjcm9sbGJh
ciogaFNjcm9sbGVyID0gbV9zY3JvbGxhYmxlQXJlYS5ob3Jpem9udGFsU2Nyb2xsYmFyKCk7CkBA
IC0xNjYsNiArMTY5LDkgQEAgYm9vbCBTY3JvbGxBbmltYXRvck1hYzo6YWxsb3dzVmVydGljYWxT
dHJldGNoaW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWwKIAogYm9vbCBTY3JvbGxB
bmltYXRvck1hYzo6YWxsb3dzSG9yaXpvbnRhbFN0cmV0Y2hpbmcoY29uc3QgUGxhdGZvcm1XaGVl
bEV2ZW50JiB3aGVlbEV2ZW50KSBjb25zdAogeworICAgIGlmIChtX3Njcm9sbGFibGVBcmVhLmhv
cml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSA9PSBPdmVyc2Nyb2xsQmVoYXZpb3I6Ok5vbmUp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKICAgICBzd2l0Y2ggKG1fc2Nyb2xsYWJsZUFy
ZWEuaG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkoKSkgewogICAgIGNhc2UgU2Nyb2xsRWxhc3Rp
Y2l0eTo6QXV0b21hdGljOiB7CiAgICAgICAgIFNjcm9sbGJhciogaFNjcm9sbGVyID0gbV9zY3Jv
bGxhYmxlQXJlYS5ob3Jpem9udGFsU2Nyb2xsYmFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIubW0KaW5kZXgg
ODAwY2M1MTEwNzVhYWIwMjA4ZTg5NjczNWEzZTliZDFlMzAyMjgxMS4uMGQxMjU2MGM0N2I2MzQ4
ZTc3ZjYzNmFlYjQ0NjI1YjcxNzU1NDI3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5tbQpAQCAtMzM3LDkg
KzMzNyw5IEBAIGJvb2wgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OmFwcGx5U2Nyb2xsRGVs
dGFXaXRoU3RyZXRjaGluZyhjb25zdCBQbGF0Zm9ybVdoCiAgICAgcmV0dXJuIGNhblN0YXJ0QW5p
bWF0aW9uOwogfQogCi1GbG9hdFNpemUgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OndoZWVs
RGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRpY2FsKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hl
ZWxFdmVudCkKK0Zsb2F0U2l6ZSBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6d2hlZWxEZWx0
YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoY29uc3QgRmxvYXRTaXplJiB3aGVlbERlbHRhKQogewot
ICAgIHJldHVybiBkZWx0YUFsaWduZWRUb0RvbWluYW50QXhpcyh3aGVlbEV2ZW50LmRlbHRhKCkp
OworICAgIHJldHVybiBkZWx0YUFsaWduZWRUb0RvbWluYW50QXhpcyh3aGVlbERlbHRhKTsKIH0K
IAogdm9pZCBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6dXBkYXRlUnViYmVyQmFuZEFuaW1h
dGluZ1N0YXRlKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCA5YjA2M2Q0NjEwOGJlZWNiNzlhMjJkYzhlMWE4M2QzOWFjNzNl
MjJiLi5iNjg4ZTQ2NzJjYTRkNmEzZGY2ZmMzNDFkOWY2NWVmNGZmNmRjODE0IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTggQEAKKzIwMjEtMTItMDIgIE5pa29sYW9zIE1vdWNodGFyaXMgIDxubW91Y2h0YXJp
c0BhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IENTUyBvdmVyc2Nyb2xsLWJlaGF2aW9y
IGZvciBzeW5jaHJvbm91cyBzY3JvbGwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyMjk2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvcmVzb3VyY2VzL292ZXJzY3JvbGwtYmVo
YXZpb3Itc3VwcG9ydC5qczogQWRkZWQuCisgICAgICAgIChnZXREZWx0YXMpOgorICAgICAgICAo
YXN5bmMgbW91c2VXaGVlbFNjcm9sbEFuZFdhaXQpOgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5n
L3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWlm
cmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1v
dmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5z
Y3JvbGxhYmxlLWlmcmFtZS5odG1sOiBBZGRlZC4KKwogMjAyMS0xMS0zMCAgUm9iZXJ0IEplbm5l
ciAgPEplbm5lckBhcHBsZS5jb20+CiAKICAgICAgICAgUkVCQVNFTElORSBbIE1vbnRlcmV5IF1m
YXN0L2Nzcy9jb250aW51YXRpb25DcmFzaC5odG1sIChsYXlvdXQtdGVzdCkgaXMgYSBjb25zdGFu
dCB0ZXh0IGZhaWx1cmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3Jl
c291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXN1cHBvcnQuanMgYi9MYXlvdXRUZXN0cy9mYXN0
L3Njcm9sbGluZy9yZXNvdXJjZXMvb3ZlcnNjcm9sbC1iZWhhdmlvci1zdXBwb3J0LmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmNiZDIyMmU5MGI1MmExOTMwYjdmY2ZlNDQyM2U5NDU4M2MwNDYwMGUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9yZXNvdXJjZXMvb3ZlcnNjcm9s
bC1iZWhhdmlvci1zdXBwb3J0LmpzCkBAIC0wLDAgKzEsMzkgQEAKK2Z1bmN0aW9uIGdldERlbHRh
cyhkaXJlY3Rpb24pIHsKKyAgICB2YXIgZGVsdGFYID0gMDsKKyAgICB2YXIgZGVsdGFZID0gMDsK
KyAgICBpZiAoZGlyZWN0aW9uID09ICJkb3duIikKKyAgICAgICAgZGVsdGFZID0gLTUKKyAgICBl
bHNlIGlmIChkaXJlY3Rpb24gPT0gInVwIikKKyAgICAgICAgZGVsdGFZID0gNTsKKyAgICBlbHNl
IGlmIChkaXJlY3Rpb24gPT0gInJpZ2h0IikKKyAgICAgICAgZGVsdGFYID0gLTU7CisgICAgZWxz
ZSBpZiAoZGlyZWN0aW9uID09ICJsZWZ0IikKKyAgICAgICAgZGVsdGFYID0gNTsKKyAgICByZXR1
cm4geworICAgICAgICBYOiBkZWx0YVgsCisgICAgICAgIFk6IGRlbHRhWQorICAgIH07Cit9CisK
K2FzeW5jIGZ1bmN0aW9uIG1vdXNlV2hlZWxTY3JvbGxBbmRXYWl0KHgsIHksIGJlZ2luWCwgYmVn
aW5ZLCBkZWx0YVgsIGRlbHRhWSkKK3sKKyAgICBpZiAoYmVnaW5YID09PSB1bmRlZmluZWQpCisg
ICAgICAgIGJlZ2luWCA9IDA7CisgICAgaWYgKGJlZ2luWSA9PT0gdW5kZWZpbmVkKQorICAgICAg
ICBiZWdpblkgPSAtMTsKKyAgICBpZiAoZGVsdGFYID09PSB1bmRlZmluZWQpCisgICAgICAgIGRl
bHRhWCA9IDA7CisgICAgaWYgKGRlbHRhWSA9PT0gdW5kZWZpbmVkKQorICAgICAgICBkZWx0YVkg
PSAtMTA7CisKKyAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICBldmVu
dFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoYmVnaW5YLCBiZWdpblksICJiZWdhbiIsICJub25l
Iik7CisgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGRlbHRhWCwgZGVsdGFZLCAiY2hhbmdlZCIsICJub25lIik7CisgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICJlbmRlZCIsICJu
b25lIik7CisgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4geworICAgICAgICBzZXRU
aW1lb3V0KCgpID0+IHsKKyAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShyZXNvbHZl
KTsKKyAgICAgICAgfSwgNTAwKTsKKyAgICB9KTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1v
dmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFz
dC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50LWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4yNzE1MGZmNjBiNWRiZGQwYjRhN2FjNmY4M2ZiNTZmNTdjZDJj
ZDgyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1z
Y3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDIwIEBACisKK1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNj
cm9sbC1iZWhhdmlvcjogYXV0byBhdXRvLgorUEFTUyBFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0
ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBhdXRvLgorUEFTUyBFbGVtZW50IGhv
cml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGF1
dG8uCitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJl
aGF2aW9yOiBjb250YWluIGF1dG8uCitQQVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVz
dCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgYXV0by4KK1BBU1MgRWxlbWVudCB2ZXJ0
aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgYXV0by4KK1BB
U1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlv
cjogYXV0byBjb250YWluLgorUEFTUyBFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGgg
b3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBjb250YWluLgorUEFTUyBFbGVtZW50IGhvcml6b250
YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGNvbnRhaW4u
CitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2
aW9yOiBjb250YWluIGNvbnRhaW4uCitQQVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVz
dCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgY29udGFpbi4KK1BBU1MgRWxlbWVudCB2
ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgY29udGFp
bi4KK1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1i
ZWhhdmlvcjogYXV0byBub25lLgorUEFTUyBFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdp
dGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBub25lLgorUEFTUyBFbGVtZW50IGhvcml6b250
YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIG5vbmUuCitQ
QVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9y
OiBjb250YWluIG5vbmUuCitQQVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRo
IG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgbm9uZS4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBz
Y3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgbm9uZS4KKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1i
ZWhhdmlvci1lbGVtZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNj
cm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNjY0NzZm
MDVmZDJmNDAzYWE0ZTZlZGJmOGRiZmZlNGI3MzI5YzIwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1l
bGVtZW50Lmh0bWwKQEAgLTAsMCArMSw4NiBAQAorPCFkb2N0eXBlIGh0bWw+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9InJlc291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXN1cHBvcnQuanMiPjwvc2NyaXB0
PgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLW92
ZXJzY3JvbGwtYmVoYXZpb3IiPgorPHN0eWxlPgorICAgIC5zY3JvbGxpbmcgeworICAgICAgICBv
dmVyZmxvdzogc2Nyb2xsOworICAgIH0KKyAgICAuc2Nyb2xsQ29udGVudCB7CisgICAgICAgIHdp
ZHRoOiAzMDBweDsKKyAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICB9CisgICAgI3Jvb3Qgewor
ICAgICAgICB3aWR0aDogMjAwcHg7CisgICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgfQorICAg
ICNzY3JvbGxlciB7CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgaGVpZ2h0OiAxMDBw
eDsKKyAgICB9Cis8L3N0eWxlPgorPGRpdiBpZD0ncm9vdCcgY2xhc3M9InNjcm9sbGluZyI+Cisg
ICAgPGRpdiBpZD0nc2Nyb2xsZXInIGNsYXNzPSJzY3JvbGxpbmciPgorICAgICAgICA8ZGl2IGNs
YXNzPSJzY3JvbGxDb250ZW50Ij48L2Rpdj4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJz
Y3JvbGxDb250ZW50Ij48L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0PgorY29uc3Qgcm9vdCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdyb290Jyk7Citjb25zdCBzY3JvbGxlciA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdzY3JvbGxlcicpOwordmFyIG92ZXJzY3JvbGxEYXRhcyA9IFtbImF1
dG8iLCAiYXV0byIsIHRydWUsIHRydWVdLAorICAgICAgICAgICAgICAgICAgICAgICAgWyJjb250
YWluIiwgImF1dG8iLCBmYWxzZSwgdHJ1ZV0sCisgICAgICAgICAgICAgICAgICAgICAgICBbIm5v
bmUiLCAiYXV0byIsIGZhbHNlLCB0cnVlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFsiYXV0
byIsICJjb250YWluIiwgdHJ1ZSwgZmFsc2VdLAorICAgICAgICAgICAgICAgICAgICAgICAgWyJj
b250YWluIiwgImNvbnRhaW4iLCBmYWxzZSwgZmFsc2VdLAorICAgICAgICAgICAgICAgICAgICAg
ICAgWyJub25lIiwgImNvbnRhaW4iLCBmYWxzZSwgZmFsc2VdLAorICAgICAgICAgICAgICAgICAg
ICAgICAgWyJhdXRvIiwgIm5vbmUiLCB0cnVlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAg
ICAgICBbImNvbnRhaW4iLCAibm9uZSIsIGZhbHNlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAg
ICAgICAgICBbIm5vbmUiLCAibm9uZSIsIGZhbHNlLCBmYWxzZV1dOworCitmdW5jdGlvbiByZXNl
dFRlc3QoKSB7CisgICAgLy8gVHJ5IHZhcmlvdXMgbWV0aG9kcyB0byBlbnN1cmUgdGhlIGVsZW1l
bnQgcG9zaXRpb24gaXMgcmVzZXQgaW1tZWRpYXRlbHkuCisgICAgc2Nyb2xsZXIuc2Nyb2xsTGVm
dCA9IDMwMDsKKyAgICBzY3JvbGxlci5zY3JvbGxUb3AgPSAzMDA7CisgICAgc2Nyb2xsZXIuc2Ny
b2xsVG8oMzAwLCAzMDApOworCisgICAgcm9vdC5zY3JvbGxMZWZ0ID0gMDsKKyAgICByb290LnNj
cm9sbFRvcCA9IDA7CisgICAgcm9vdC5zY3JvbGxUbygwLCAwKTsKK30KKworZnVuY3Rpb24gc3Rh
cnRUZXN0KCkgeworICAgIG92ZXJzY3JvbGxEYXRhcy5mb3JFYWNoKChbb3ZlcnNjcm9sbFgsIG92
ZXJzY3JvbGxZLCBwcm9wYWdhdGVYLCBwcm9wYWdhdGVZXSkgPT4geworICAgICAgICBwcm9taXNl
X3Rlc3QoKCkgPT4geworICAgICAgICAgICAgcmVzZXRUZXN0KCk7CisgICAgICAgICAgICBzY3Jv
bGxlci5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JYID0gb3ZlcnNjcm9sbFg7CisgICAgICAgICAg
ICBzY3JvbGxlci5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JZID0gb3ZlcnNjcm9sbFk7CisgICAg
ICAgICAgICBkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoOworCisgICAgICAgICAgICB2YXIgeCA9
IHNjcm9sbGVyLmNsaWVudFdpZHRoIC8gMjsKKyAgICAgICAgICAgIHZhciB5ID0gc2Nyb2xsZXIu
Y2xpZW50SGVpZ2h0IC8gMjsKKyAgICAgICAgICAgIHZhciBkZWx0YSA9IGdldERlbHRhcygicmln
aHQiKTsKKyAgICAgICAgICAgIHJldHVybiBtb3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCh4LCB5LCBk
ZWx0YS5YLCBkZWx0YS5ZLCBkZWx0YS5YLCBkZWx0YS5ZKS50aGVuKCgpID0+IHsKKyAgICAgICAg
ICAgICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsTGVmdCA+IDAsIHByb3BhZ2F0ZVgsICdD
b250aW51ZSB1cCB0aGUgaG9yaXpvbnRhbCBzY3JvbGwgY2hhaW5pbmcnKTsKKyAgICAgICAgICAg
IH0pOworICAgICAgICB9LCAnRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3Zl
cnNjcm9sbC1iZWhhdmlvcjogJyArIG92ZXJzY3JvbGxYICsgJyAnICsgb3ZlcnNjcm9sbFkgKyAn
LicpOworCisgICAgICAgIHByb21pc2VfdGVzdCgoKSA9PiB7CisgICAgICAgICAgICByZXNldFRl
c3QoKTsKKyAgICAgICAgICAgIHNjcm9sbGVyLnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclggPSBv
dmVyc2Nyb2xsWDsKKyAgICAgICAgICAgIHNjcm9sbGVyLnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlv
clkgPSBvdmVyc2Nyb2xsWTsKKworICAgICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRX
aWR0aCAvIDI7CisgICAgICAgICAgICB2YXIgeSA9IHNjcm9sbGVyLmNsaWVudEhlaWdodCAvIDI7
CisgICAgICAgICAgICB2YXIgZGVsdGEgPSBnZXREZWx0YXMoImRvd24iKTsKKyAgICAgICAgICAg
IHJldHVybiBtb3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCh4LCB5LCBkZWx0YS5YLCBkZWx0YS5ZLCBk
ZWx0YS5YLCBkZWx0YS5ZKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1
YWxzKHJvb3Quc2Nyb2xsVG9wID4gMCwgcHJvcGFnYXRlWSwgJ0NvbnRpbnVlIHVwIHRoZSB2ZXJ0
aWNhbCBzY3JvbGwgY2hhaW5pbmcnKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9LCAnRWxl
bWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6ICcgKyBv
dmVyc2Nyb2xsWCArICcgJyArIG92ZXJzY3JvbGxZICsgJy4nKTsKKyAgICB9KTsKK30KKworYWRk
RXZlbnRMaXN0ZW5lcigibG9hZCIsIHN0YXJ0VGVzdCk7Cis8L3NjcmlwdD4KXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9z
eW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWlm
cmFtZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTVmMDk4OTIzMjhlZDEwYzhiYjA0YWE5Njll
YmJiNTIwYTU2ZTYwNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xs
aW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDIxIEBACisKKworUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3
aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gYXV0by4KK1BBU1MgSWZyYW1lIHZlcnRpY2Fs
IHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBhdXRvLgorRkFJTCBJ
ZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNv
bnRhaW4gYXV0by4gYXNzZXJ0X2VxdWFsczogQ29udGludWUgdXAgdGhlIGhvcml6b250YWwgc2Ny
b2xsIGNoYWluaW5nIGV4cGVjdGVkIGZhbHNlIGJ1dCBnb3QgdHJ1ZQorUEFTUyBJZnJhbWUgdmVy
dGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGF1dG8u
CitGQUlMIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhh
dmlvcjogbm9uZSBhdXRvLiBhc3NlcnRfZXF1YWxzOiBDb250aW51ZSB1cCB0aGUgaG9yaXpvbnRh
bCBzY3JvbGwgY2hhaW5pbmcgZXhwZWN0ZWQgZmFsc2UgYnV0IGdvdCB0cnVlCitQQVNTIElmcmFt
ZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgYXV0
by4KK1BBU1MgSWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJl
aGF2aW9yOiBhdXRvIGNvbnRhaW4uCitGQUlMIElmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3
aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gY29udGFpbi4gYXNzZXJ0X2VxdWFsczogQ29u
dGludWUgdXAgdGhlIHZlcnRpY2FsIHNjcm9sbCBjaGFpbmluZyBleHBlY3RlZCBmYWxzZSBidXQg
Z290IHRydWUKK0ZBSUwgSWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Ny
b2xsLWJlaGF2aW9yOiBjb250YWluIGNvbnRhaW4uIGFzc2VydF9lcXVhbHM6IENvbnRpbnVlIHVw
IHRoZSBob3Jpem9udGFsIHNjcm9sbCBjaGFpbmluZyBleHBlY3RlZCBmYWxzZSBidXQgZ290IHRy
dWUKK0ZBSUwgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhh
dmlvcjogY29udGFpbiBjb250YWluLiBhc3NlcnRfZXF1YWxzOiBDb250aW51ZSB1cCB0aGUgdmVy
dGljYWwgc2Nyb2xsIGNoYWluaW5nIGV4cGVjdGVkIGZhbHNlIGJ1dCBnb3QgdHJ1ZQorRkFJTCBJ
ZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5v
bmUgY29udGFpbi4gYXNzZXJ0X2VxdWFsczogQ29udGludWUgdXAgdGhlIGhvcml6b250YWwgc2Ny
b2xsIGNoYWluaW5nIGV4cGVjdGVkIGZhbHNlIGJ1dCBnb3QgdHJ1ZQorRkFJTCBJZnJhbWUgdmVy
dGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIGNvbnRhaW4u
IGFzc2VydF9lcXVhbHM6IENvbnRpbnVlIHVwIHRoZSB2ZXJ0aWNhbCBzY3JvbGwgY2hhaW5pbmcg
ZXhwZWN0ZWQgZmFsc2UgYnV0IGdvdCB0cnVlCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9s
bCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBub25lLgorRkFJTCBJZnJhbWUg
dmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIG5vbmUu
IGFzc2VydF9lcXVhbHM6IENvbnRpbnVlIHVwIHRoZSB2ZXJ0aWNhbCBzY3JvbGwgY2hhaW5pbmcg
ZXhwZWN0ZWQgZmFsc2UgYnV0IGdvdCB0cnVlCitGQUlMIElmcmFtZSBob3Jpem9udGFsIHNjcm9s
bCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBub25lLiBhc3NlcnRfZXF1
YWxzOiBDb250aW51ZSB1cCB0aGUgaG9yaXpvbnRhbCBzY3JvbGwgY2hhaW5pbmcgZXhwZWN0ZWQg
ZmFsc2UgYnV0IGdvdCB0cnVlCitGQUlMIElmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRo
IG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gbm9uZS4gYXNzZXJ0X2VxdWFsczogQ29udGlu
dWUgdXAgdGhlIHZlcnRpY2FsIHNjcm9sbCBjaGFpbmluZyBleHBlY3RlZCBmYWxzZSBidXQgZ290
IHRydWUKK0ZBSUwgSWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xs
LWJlaGF2aW9yOiBub25lIG5vbmUuIGFzc2VydF9lcXVhbHM6IENvbnRpbnVlIHVwIHRoZSBob3Jp
em9udGFsIHNjcm9sbCBjaGFpbmluZyBleHBlY3RlZCBmYWxzZSBidXQgZ290IHRydWUKK0ZBSUwg
SWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9u
ZSBub25lLiBhc3NlcnRfZXF1YWxzOiBDb250aW51ZSB1cCB0aGUgdmVydGljYWwgc2Nyb2xsIGNo
YWluaW5nIGV4cGVjdGVkIGZhbHNlIGJ1dCBnb3QgdHJ1ZQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFt
ZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9s
bC1iZWhhdmlvci1pZnJhbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNjhlNWRhZWY5YTNiMWQwODU2YWI3
M2FmZjE2ZTJjYWM1MmI4Yzk1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9z
Y3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUuaHRtbApAQCAt
MCwwICsxLDg2IEBACis8IWRvY3R5cGUgaHRtbD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvb3ZlcnNjcm9sbC1iZWhhdmlvci1zdXBwb3J0LmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0i
aGVscCIgaHJlZj0iaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1vdmVyc2Nyb2xsLWJlaGF2
aW9yIj4KKzxzdHlsZT4KKyAgICAuc2Nyb2xsaW5nIHsKKyAgICAgICAgb3ZlcmZsb3c6IHNjcm9s
bDsKKyAgICB9CisgICAgLnNjcm9sbENvbnRlbnQgeworICAgICAgICB3aWR0aDogMzAwcHg7Cisg
ICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVu
dCgxMzVkZWcsIHJlZCwgYmx1ZSk7CisgICAgfQorICAgICNyb290IHsKKyAgICAgICAgd2lkdGg6
IDIwMHB4OworICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAgIH0KKyAgICAjc2Nyb2xsZXIgewor
ICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICAgIG92
ZXJzY3JvbGwtYmVoYXZpb3IteTogYXV0bzsKKyAgICB9Cis8L3N0eWxlPgorPGRpdiBpZD0ncm9v
dCcgY2xhc3M9InNjcm9sbGluZyI+CisgICAgPGlmcmFtZSBpZD0nc2Nyb2xsZXInIHNyY2RvYz0i
PGh0bWw+PGRpdiBzdHlsZT0nd2lkdGg6IDMwMHB4OyBoZWlnaHQ6IDMwMHB4Oyc+PC9kaXY+PC9o
dG1sPgorICAgICAgICAiPjwvaWZyYW1lPgorICAgIDxkaXYgY2xhc3M9InNjcm9sbENvbnRlbnQi
PjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+CisgICAgY29uc3Qgcm9vdCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdyb290Jyk7CisgICAgY29uc3Qgc2Nyb2xsZXIgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnc2Nyb2xsZXInKTsKKyAgICB2YXIgb3ZlcnNjcm9sbERhdGFzID0gW1siYXV0
byIsICJhdXRvIiwgdHJ1ZSwgdHJ1ZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJj
b250YWluIiwgImF1dG8iLCBmYWxzZSwgdHJ1ZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgWyJub25lIiwgImF1dG8iLCBmYWxzZSwgdHJ1ZV0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgWyJhdXRvIiwgImNvbnRhaW4iLCB0cnVlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgWyJjb250YWluIiwgImNvbnRhaW4iLCBmYWxzZSwgZmFsc2VdLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFsibm9uZSIsICJjb250YWluIiwgZmFsc2UsIGZhbHNlXSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImF1dG8iLCAibm9uZSIsIHRydWUsIGZhbHNl
XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImNvbnRhaW4iLCAibm9uZSIsIGZhbHNl
LCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJub25lIiwgIm5vbmUiLCBm
YWxzZSwgZmFsc2VdXTsKKyAgICBmdW5jdGlvbiByZXNldFRlc3QoKSB7CisgICAgICAgIC8vIFRy
eSB2YXJpb3VzIG1ldGhvZHMgdG8gZW5zdXJlIHRoZSBlbGVtZW50IHBvc2l0aW9uIGlzIHJlc2V0
IGltbWVkaWF0ZWx5LgorICAgICAgICBzY3JvbGxlci5jb250ZW50V2luZG93LnNjcm9sbFggPSAz
MDA7CisgICAgICAgIHNjcm9sbGVyLmNvbnRlbnRXaW5kb3cuc2Nyb2xsWSA9IDMwMDsKKyAgICAg
ICAgc2Nyb2xsZXIuY29udGVudFdpbmRvdy5zY3JvbGxUbygzMDAsIDMwMCk7CisgICAgICAgIHJv
b3Quc2Nyb2xsTGVmdCA9IDA7CisgICAgICAgIHJvb3Quc2Nyb2xsVG9wID0gMDsKKyAgICAgICAg
cm9vdC5zY3JvbGxUbygwLCAwKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBvdmVyc2Nyb2xsQmVo
YXZpb3JUZXN0KCkgeworICAgICAgICBvdmVyc2Nyb2xsRGF0YXMuZm9yRWFjaCgoW292ZXJzY3Jv
bGxYLCBvdmVyc2Nyb2xsWSwgcHJvcGFnYXRlWCwgcHJvcGFnYXRlWV0pID0+IHsKKyAgICAgICAg
ICAgIHByb21pc2VfdGVzdCgoKSA9PiB7CisgICAgICAgICAgICAgICAgcmVzZXRUZXN0KCk7Cisg
ICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IHNjcm9sbGVyLmNvbnRlbnRXaW5kb3cuZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImh0bWwiKVswXTsKKyAgICAgICAgICAgICAgICB0YXJn
ZXQuc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWCA9IG92ZXJzY3JvbGxYOworICAgICAgICAgICAg
ICAgIHRhcmdldC5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JZID0gb3ZlcnNjcm9sbFk7CisgICAg
ICAgICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAgICAgICAg
ICAgICAgdmFyIHkgPSBzY3JvbGxlci5jbGllbnRIZWlnaHQgLyAyOworICAgICAgICAgICAgICAg
IHZhciBkZWx0YSA9IGdldERlbHRhcygicmlnaHQiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
bW91c2VXaGVlbFNjcm9sbEFuZFdhaXQoeCwgeSwgZGVsdGEuWCwgZGVsdGEuWSwgZGVsdGEuWCwg
ZGVsdGEuWSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMo
cm9vdC5zY3JvbGxMZWZ0ID4gMCwgcHJvcGFnYXRlWCwgJ0NvbnRpbnVlIHVwIHRoZSBob3Jpem9u
dGFsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAg
fSwgJ0lmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlv
cjogJyArIG92ZXJzY3JvbGxYICsgJyAnICsgb3ZlcnNjcm9sbFkgKyAnLicpOworCisgICAgICAg
ICAgICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgICAgICAgICAgICAgIHJlc2V0VGVzdCgpOwor
ICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSBzY3JvbGxlci5jb250ZW50V2luZG93LmRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJodG1sIilbMF07CisgICAgICAgICAgICAgICAgdGFy
Z2V0LnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclggPSBvdmVyc2Nyb2xsWDsKKyAgICAgICAgICAg
ICAgICB0YXJnZXQuc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWSA9IG92ZXJzY3JvbGxZOworCisg
ICAgICAgICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAgICAg
ICAgICAgICAgdmFyIHkgPSBzY3JvbGxlci5jbGllbnRIZWlnaHQgLyAyOworICAgICAgICAgICAg
ICAgIHZhciBkZWx0YSA9IGdldERlbHRhcygiZG93biIpOworICAgICAgICAgICAgICAgIHJldHVy
biBtb3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCh4LCB5LCBkZWx0YS5YLCBkZWx0YS5ZLCBkZWx0YS5Y
LCBkZWx0YS5ZKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFs
cyhyb290LnNjcm9sbFRvcCA+IDAsIHByb3BhZ2F0ZVksICdDb250aW51ZSB1cCB0aGUgdmVydGlj
YWwgc2Nyb2xsIGNoYWluaW5nJyk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9
LCAnSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjog
JyArIG92ZXJzY3JvbGxYICsgJyAnICsgb3ZlcnNjcm9sbFkgKyAnLicpOworICAgICAgICB9KTsK
KyAgICB9CisKKyAgICBzY3JvbGxlci5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgb3ZlcnNjcm9s
bEJlaGF2aW9yVGVzdCk7Cis8L3NjcmlwdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Ny
b2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3Jv
bGxhYmxlLWVsZW1lbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYzOTViNjQ4OGQwODcwYjk1
NjFjMDI4Njc5ZDdlMTVhNDdmY2U2ZTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJs
ZS1lbGVtZW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKKworUEFTUyBVbnNjcm9sbGFi
bGUgZWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlv
cjogbm9uZS4KK1BBU1MgVW5zY3JvbGxhYmxlIGVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qg
d2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xs
YWJsZS1lbGVtZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9s
bC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYzFlNTczOGE1ZDdhNzk2OWNhZTZlY2FjYmIzZjhlOWMyYjIwNzNlYgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwt
YmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRtbApAQCAtMCwwICsxLDY3IEBACis8IWRv
Y3R5cGUgaHRtbD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVw
b3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb3ZlcnNjcm9sbC1iZWhh
dmlvci1zdXBwb3J0LmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6
Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1vdmVyc2Nyb2xsLWJlaGF2aW9yIj4KKzxzdHlsZT4KKyAg
ICAuc2Nyb2xsaW5nIHsKKyAgICAgICAgb3ZlcmZsb3c6IHNjcm9sbDsKKyAgICB9CisgICAgLnNj
cm9sbENvbnRlbnQgeworICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgIGhlaWdodDogMzAw
cHg7CisgICAgfQorICAgICNyb290IHsKKyAgICAgICAgd2lkdGg6IDIwMHB4OworICAgICAgICBo
ZWlnaHQ6IDIwMHB4OworICAgIH0KKyAgICAjc2Nyb2xsZXIgeworICAgICAgICB3aWR0aDogMTAw
cHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICAgIG92ZXJzY3JvbGwtYmVoYXZpb3I6
IG5vbmU7CisgICAgICAgIG92ZXJmbG93OiB2aXNpYmxlOworICAgICAgICBiYWNrZ3JvdW5kOiBs
aW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZWQsIGJsdWUpOworICAgIH0KKzwvc3R5bGU+Cis8ZGl2
IGlkPSJyb290IiBjbGFzcz0ic2Nyb2xsaW5nIj4KKyAgICA8ZGl2IGlkPSJzY3JvbGxlciI+Cisg
ICAgICAgIDxkaXYgY2xhc3M9InNjcm9sbENvbnRlbnQiPjwvZGl2PgorICAgIDwvZGl2PgorICAg
IDxkaXYgY2xhc3M9InNjcm9sbENvbnRlbnQiPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+Citj
b25zdCByb290ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jvb3QnKTsKK2NvbnN0IHNjcm9s
bGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Njcm9sbGVyJyk7CisKK2Z1bmN0aW9uIHJl
c2V0VGVzdCgpIHsKKyAgICByb290LnNjcm9sbExlZnQgPSAwOworICAgIHJvb3Quc2Nyb2xsVG9w
ID0gMDsKKyAgICByb290LnNjcm9sbFRvKDAsIDApOworfQorCitmdW5jdGlvbiBzdGFydFRlc3Qo
KSB7CisgICAgICAgIHByb21pc2VfdGVzdCgoKSA9PiB7CisgICAgICAgICAgICByZXNldFRlc3Qo
KTsKKyAgICAgICAgICAgIHZhciB4ID0gc2Nyb2xsZXIuY2xpZW50V2lkdGggLyAyOworICAgICAg
ICAgICAgdmFyIHkgPSBzY3JvbGxlci5jbGllbnRIZWlnaHQgLyAyOworICAgICAgICAgICAgdmFy
IGRlbHRhID0gZ2V0RGVsdGFzKCJyaWdodCIpOworICAgICAgICAgICAgcmV0dXJuIG1vdXNlV2hl
ZWxTY3JvbGxBbmRXYWl0KHgsIHksIGRlbHRhLlgsIGRlbHRhLlksIGRlbHRhLlgsIGRlbHRhLlkp
LnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxM
ZWZ0ID4gMCwgdHJ1ZSwgJ0NvbnRpbnVlIHVwIHRoZSBob3Jpem9udGFsIHNjcm9sbCBjaGFpbmlu
ZycpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0sICdVbnNjcm9sbGFibGUgZWxlbWVudCBo
b3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4nKTsK
KworICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgICAgICAgICAgcmVzZXRUZXN0KCk7
CisgICAgICAgICAgICB2YXIgeCA9IHNjcm9sbGVyLmNsaWVudFdpZHRoIC8gMjsKKyAgICAgICAg
ICAgIHZhciB5ID0gc2Nyb2xsZXIuY2xpZW50SGVpZ2h0IC8gMjsKKyAgICAgICAgICAgIHZhciBk
ZWx0YSA9IGdldERlbHRhcygiZG93biIpOworICAgICAgICAgICAgcmV0dXJuIG1vdXNlV2hlZWxT
Y3JvbGxBbmRXYWl0KHgsIHksIGRlbHRhLlgsIGRlbHRhLlksIGRlbHRhLlgsIGRlbHRhLlkpLnRo
ZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxUb3Ag
PiAwLCB0cnVlLCAnQ29udGludWUgdXAgdGhlIHZlcnRpY2FsIHNjcm9sbCBjaGFpbmluZycpOwor
ICAgICAgICAgICAgfSk7CisgICAgICAgIH0sICdVbnNjcm9sbGFibGUgZWxlbWVudCB2ZXJ0aWNh
bCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuJyk7Cit9CisKK2Fk
ZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBzdGFydFRlc3QpOworPC9zY3JpcHQ+ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcv
c3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3Jv
bGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
N2ZhNTljY2JhNzlhZWZmMzNkYTcwZTkzZDQ4OGEwN2VlYzljNTY5MQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVo
YXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBACisK
KworUEFTUyBVbnNjcm9sbGFibGUgaWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBv
dmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLgorUEFTUyBVbnNjcm9sbGFibGUgaWZyYW1lIHZlcnRp
Y2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4KKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1i
ZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9s
bGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lMjQyNWFmYzYzN2RmNTFlNDQxNTQyNmFiNDY3YzYxNGUzOGVmNjE2
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3Jv
bGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLmh0bWwKQEAgLTAsMCAr
MSw2NiBAQAorPCFkb2N0eXBlIGh0bWw+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
dGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90
ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL292
ZXJzY3JvbGwtYmVoYXZpb3Itc3VwcG9ydC5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9ImhlbHAi
IGhyZWY9Imh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3Mtb3ZlcnNjcm9sbC1iZWhhdmlvciI+
Cis8c3R5bGU+CisgICAgLnNjcm9sbGluZyB7CisgICAgICAgIG92ZXJmbG93OiBzY3JvbGw7Cisg
ICAgfQorICAgIC5zY3JvbGxDb250ZW50IHsKKyAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAg
ICBoZWlnaHQ6IDMwMHB4OworICAgIH0KKyAgICAjcm9vdCB7CisgICAgICAgIHdpZHRoOiAyMDBw
eDsKKyAgICAgICAgaGVpZ2h0OiAyMDBweDsKKyAgICB9CisgICAgI3Njcm9sbGVyIHsKKyAgICAg
ICAgd2lkdGg6IDIwMHB4OworICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAgICAgICBvdmVyc2Ny
b2xsLWJlaGF2aW9yOiBub25lOworICAgICAgICBvdmVyZmxvdzogdmlzaWJsZTsKKyAgICAgICAg
YmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmVkLCBibHVlKTsKKyAgICB9Cis8
L3N0eWxlPgorPGRpdiBpZD0ncm9vdCcgY2xhc3M9InNjcm9sbGluZyI+CisgICAgPGlmcmFtZSBp
ZD0nc2Nyb2xsZXInIHNyY2RvYz0iPGh0bWwgc3R5bGU9J292ZXJzY3JvbGwtYmVoYXZpb3I6IG5v
bmU7Jz48ZGl2IHN0eWxlPSd3aWR0aDogMTAwcHg7IGhlaWdodDogMTAwcHg7Jz48L2Rpdj48L2h0
bWw+CisgICAgICAgICI+PC9pZnJhbWU+CisgICAgPGRpdiBjbGFzcz0ic2Nyb2xsQ29udGVudCI+
PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4KK2NvbnN0IHJvb3QgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgncm9vdCcpOworY29uc3Qgc2Nyb2xsZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnc2Nyb2xsZXInKTsKKworZnVuY3Rpb24gcmVzZXRUZXN0KCkgeworICAgIHJvb3Quc2Nyb2xs
TGVmdCA9IDA7CisgICAgcm9vdC5zY3JvbGxUb3AgPSAwOworICAgIHJvb3Quc2Nyb2xsVG8oMCwg
MCk7Cit9CisKK2Z1bmN0aW9uIHN0YXJ0VGVzdCgpIHsKKyAgICAgICAgcHJvbWlzZV90ZXN0KCgp
ID0+IHsKKyAgICAgICAgICAgIHJlc2V0VGVzdCgpOworICAgICAgICAgICAgdmFyIHggPSBzY3Jv
bGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAgICAgICAgICB2YXIgeSA9IHNjcm9sbGVyLmNsaWVu
dEhlaWdodCAvIDI7CisgICAgICAgICAgICB2YXIgZGVsdGEgPSBnZXREZWx0YXMoInJpZ2h0Iik7
CisgICAgICAgICAgICByZXR1cm4gbW91c2VXaGVlbFNjcm9sbEFuZFdhaXQoeCwgeSwgZGVsdGEu
WCwgZGVsdGEuWSwgZGVsdGEuWCwgZGVsdGEuWSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAg
ICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbExlZnQgPiAwLCB0cnVlLCAnQ29udGludWUgdXAg
dGhlIGhvcml6b250YWwgc2Nyb2xsIGNoYWluaW5nJyk7CisgICAgICAgICAgICB9KTsKKyAgICAg
ICAgfSwgJ1Vuc2Nyb2xsYWJsZSBpZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92
ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuJyk7CisKKyAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+
IHsKKyAgICAgICAgICAgIHJlc2V0VGVzdCgpOworICAgICAgICAgICAgdmFyIHggPSBzY3JvbGxl
ci5jbGllbnRXaWR0aCAvIDI7CisgICAgICAgICAgICB2YXIgeSA9IHNjcm9sbGVyLmNsaWVudEhl
aWdodCAvIDI7CisgICAgICAgICAgICB2YXIgZGVsdGEgPSBnZXREZWx0YXMoImRvd24iKTsKKyAg
ICAgICAgICAgIHJldHVybiBtb3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCh4LCB5LCBkZWx0YS5YLCBk
ZWx0YS5ZLCBkZWx0YS5YLCBkZWx0YS5ZKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBh
c3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsVG9wID4gMCwgdHJ1ZSwgJ0NvbnRpbnVlIHVwIHRoZSB2
ZXJ0aWNhbCBzY3JvbGwgY2hhaW5pbmcnKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9LCAn
VW5zY3JvbGxhYmxlIGlmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwt
YmVoYXZpb3I6IG5vbmUuJyk7Cit9CisKK2FkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBzdGFydFRl
c3QpOworPC9zY3JpcHQ+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445896</attachid>
            <date>2021-12-03 14:02:04 -0800</date>
            <delta_ts>2021-12-03 14:28:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222968-20211203140203.patch</filename>
            <type>text/plain</type>
            <size>38764</size>
            <attacher name="Nikos Mouchtaris">nmouchtaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MzUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGJiNmQyZjJmYmNkN2I3
ODU1MzIxY2U1YjgwMWQ1YzJmYWNiMzhmNC4uMmFkOTAxNmM5ZmExMjhiYTlkODY4MWU2M2NjNGI5
MjcyZWY1YjgzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDIxLTEyLTAyICBOaWtv
bGFvcyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxl
bWVudCBDU1Mgb3ZlcnNjcm9sbC1iZWhhdmlvciBmb3Igc3luY2hyb25vdXMgc2Nyb2xsCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI5NjgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTcGxpdCB1cCBwYXRj
aCBieSBDYXRoaWUgQ2hlbiBhbmQgRnJlZGVyaWMgV2FuZy4gQWRkIGZ1bmN0aW9uIGZvciBibG9j
a2luZyBzY3JvbGwgY2hhaW5pbmcKKyAgICAgICAgYW5kIGZpbHRlcmluZyBzY3JvbGwgZGVsdGEg
ZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZXMgb2Ygb3ZlcnNjcm9sbCBiZWhhdmlvciBmb3IgYSBzY3Jv
bGxhYmxlCisgICAgICAgIGFyZWEuIFRoaXMgcGF0Y2ggaXMgZm9yIHN5bmNocm9ub3VzIHNjcm9s
bGluZyBvbmx5LgorCisgICAgICAgIFRlc3RzOiBmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1v
dmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9zY3Jv
bGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUuaHRtbAorICAgICAg
ICAgICAgICAgZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11
bnNjcm9sbGFibGUtZWxlbWVudC5odG1sCisgICAgICAgICAgICAgICBmYXN0L3Njcm9sbGluZy9z
eW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUuaHRtbAor
CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hv
dWxkQmxvY2tTY3JvbGxDaGFpbmluZ1dpdGhTY3JvbGxhYmxlQXJlYSk6CisgICAgICAgIChXZWJD
b3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnRJbnRlcm5hbCk6CisgICAgICAgIChX
ZWJDb3JlOjpkaWRTY3JvbGxJblNjcm9sbGFibGVBcmVhKToKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudEluQXBwcm9wcmlhdGVFbmNsb3NpbmdCb3gpOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpzY3JvbGxhYmxlQXJlYUNhbkhhbmRsZUV2
ZW50KToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5oOgorICAgICAgICAqIHBhZ2UvRnJh
bWVWaWV3Lmg6CisgICAgICAgICogcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6ZmluZEVuY2xvc2luZ1Njcm9sbGFibGVDb250YWluZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmg6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsaW5n
RWZmZWN0c0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0
b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck1hYzo6c2hvdWxkRm9y
d2FyZFdoZWVsRXZlbnRzVG9QYXJlbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
QW5pbWF0b3JNYWM6OmFsbG93c1ZlcnRpY2FsU3RyZXRjaGluZyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxBbmltYXRvck1hYzo6YWxsb3dzSG9yaXpvbnRhbFN0cmV0Y2hpbmcgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjp3aGVlbERl
bHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxh
eWVyU2Nyb2xsYWJsZUFyZWEuaDoKKwogMjAyMS0xMS0zMCAgU2ltb24gRnJhc2VyICA8c2ltb24u
ZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBQYXNzIHRoZSB0aW1lc3RhbXAgZm9yIHNjcm9s
bGluZyB0aHJlYWQgYW5pbWF0aW9ucyB0aHJvdWdoIGFsbCB0aGUgc2VydmljZVNjcm9sbEFuaW1h
dGlvbigpIGNhbGxzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggZWMzZTQy
MGU3OWJiMWI1ZGNmNzAxMzU1ZDFhY2U2OWJmODg2NDE1MS4uMTI0Y2VmMzdjNzhiOTA5OGJkMDA5
OGRiMzcyZTE3OTI2NjFlYjg5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApA
QCAtMjkxOSw2ICsyOTE5LDE5IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpjb21wbGV0ZVdpZGdldFdo
ZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCwgY29uCiAgICAgcmV0dXJu
IHBsYXRmb3JtQ29tcGxldGVQbGF0Zm9ybVdpZGdldFdoZWVsRXZlbnQoZXZlbnQsICp3aWRnZXQu
Z2V0KCksIHNjcm9sbGFibGVBcmVhKTsKIH0KIAorc3RhdGljIGJvb2wgc2hvdWxkQmxvY2tTY3Jv
bGxDaGFpbmluZ1dpdGhTY3JvbGxhYmxlQXJlYShjb25zdCBTY3JvbGxhYmxlQXJlYSogc2Nyb2xs
YWJsZUFyZWEsIEZsb2F0U2l6ZSYgYmlhc2VkRGVsdGEpCit7CisgICAgaWYgKHNjcm9sbGFibGVB
cmVhICYmIChzY3JvbGxhYmxlQXJlYS0+aG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpICE9
IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0byB8fCBzY3JvbGxhYmxlQXJlYS0+dmVydGljYWxPdmVy
c2Nyb2xsQmVoYXZpb3IoKSAhPSBPdmVyc2Nyb2xsQmVoYXZpb3I6OkF1dG8pKSB7CisgICAgICAg
IGlmIChzY3JvbGxhYmxlQXJlYS0+aG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpICE9IE92
ZXJzY3JvbGxCZWhhdmlvcjo6QXV0byAmJiAhYmlhc2VkRGVsdGEuaGVpZ2h0KCkgJiYgYmlhc2Vk
RGVsdGEud2lkdGgoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBpZiAoKHNj
cm9sbGFibGVBcmVhLT5ob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgIT0gT3ZlcnNjcm9s
bEJlaGF2aW9yOjpBdXRvICYmIHNjcm9sbGFibGVBcmVhLT52ZXJ0aWNhbE92ZXJzY3JvbGxCZWhh
dmlvcigpICE9IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0bykgfHwgKHNjcm9sbGFibGVBcmVhLT5o
b3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkhPSBPdmVyc2Nyb2xsQmVoYXZpb3I6OkF1dG8g
JiYgIWJpYXNlZERlbHRhLmhlaWdodCgpKSB8fCAoc2Nyb2xsYWJsZUFyZWEtPnZlcnRpY2FsT3Zl
cnNjcm9sbEJlaGF2aW9yKCkhPSBPdmVyc2Nyb2xsQmVoYXZpb3I6OkF1dG8gJiYgIWJpYXNlZERl
bHRhLndpZHRoKCkpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGJpYXNlZERl
bHRhLnNldFdpZHRoKHNjcm9sbGFibGVBcmVhLT5ob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9y
KCkhPSBPdmVyc2Nyb2xsQmVoYXZpb3I6OkF1dG8gPyAwIDogYmlhc2VkRGVsdGEud2lkdGgoKSk7
CisgICAgICAgIGJpYXNlZERlbHRhLnNldEhlaWdodChzY3JvbGxhYmxlQXJlYS0+dmVydGljYWxP
dmVyc2Nyb2xsQmVoYXZpb3IoKSE9IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0byA/IDAgOiBiaWFz
ZWREZWx0YS5oZWlnaHQoKSk7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwogYm9vbCBF
dmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3
aGVlbEV2ZW50LCBPcHRpb25TZXQ8V2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwcz4gcHJvY2Vzc2lu
Z1N0ZXBzKQogewogICAgIFJlZiBwcm90ZWN0ZWRGcmFtZSA9IG1fZnJhbWU7CkBAIC0zMDI5LDgg
KzMwNDIsMTMgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnRJbnRlcm5hbChj
b25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50LCBPcHQKIAogICAgIGlmIChhbGxvd1Njcm9s
bGluZykgewogICAgICAgICAvLyBGSVhNRTogcHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxpbmco
KSBpcyBvbmx5IGNhbGxlZCBmb3IgRnJhbWVWaWV3IHNjcm9sbGluZywgbm90IG92ZXJmbG93IHNj
cm9sbGluZywgd2hpY2ggaXMgY29uZnVzaW5nLgotICAgICAgICBoYW5kbGVkRXZlbnQgPSBwcm9j
ZXNzV2hlZWxFdmVudEZvclNjcm9sbGluZyhldmVudCwgc2Nyb2xsYWJsZUFyZWEsIGhhbmRsaW5n
KTsKLSAgICAgICAgcHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxTbmFwKGV2ZW50LCBzY3JvbGxh
YmxlQXJlYSk7CisgICAgICAgIFBsYXRmb3JtV2hlZWxFdmVudCBhZGp1c3RlZFdoZWVsRXZlbnQg
PSBQbGF0Zm9ybVdoZWVsRXZlbnQoZXZlbnQpOworICAgICAgICBhdXRvIGZpbHRlcmVkRGVsdGEg
PSBhZGp1c3RlZFdoZWVsRXZlbnQuZGVsdGEoKTsKKyAgICAgICAgaWYgKCFzaG91bGRCbG9ja1Nj
cm9sbENoYWluaW5nV2l0aFNjcm9sbGFibGVBcmVhKHNjcm9sbGFibGVBcmVhLmdldCgpLCBmaWx0
ZXJlZERlbHRhKSkgeworICAgICAgICAgICAgYWRqdXN0ZWRXaGVlbEV2ZW50ID0gYWRqdXN0ZWRX
aGVlbEV2ZW50LmNvcHlXaXRoRGVsdGFBbmRWZWxvY2l0eShmaWx0ZXJlZERlbHRhLCBhZGp1c3Rl
ZFdoZWVsRXZlbnQuc2Nyb2xsaW5nVmVsb2NpdHkoKSk7CisgICAgICAgICAgICBoYW5kbGVkRXZl
bnQgPSBwcm9jZXNzV2hlZWxFdmVudEZvclNjcm9sbGluZyhhZGp1c3RlZFdoZWVsRXZlbnQsIHNj
cm9sbGFibGVBcmVhLCBoYW5kbGluZyk7CisgICAgICAgICAgICBwcm9jZXNzV2hlZWxFdmVudEZv
clNjcm9sbFNuYXAoYWRqdXN0ZWRXaGVlbEV2ZW50LCBzY3JvbGxhYmxlQXJlYSk7CisgICAgICAg
IH0KICAgICB9CiAKICAgICByZXR1cm4gaGFuZGxlZEV2ZW50OwpAQCAtMzA0OSwxOCArMzA2Nywy
MCBAQCBzdGF0aWMgdm9pZCBoYW5kbGVXaGVlbEV2ZW50UGhhc2VJblNjcm9sbGFibGVBcmVhKFNj
cm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYQogCiBzdGF0aWMgYm9vbCBkaWRTY3JvbGxJblNj
cm9sbGFibGVBcmVhKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSwgY29uc3QgV2hlZWxF
dmVudCYgd2hlZWxFdmVudCkKIHsKKyAgICBGbG9hdFNpemUgZmlsdGVyZWREZWx0YSh3aGVlbEV2
ZW50LmRlbHRhWCgpLCB3aGVlbEV2ZW50LmRlbHRhWSgpKTsKKyAgICBzaG91bGRCbG9ja1Njcm9s
bENoYWluaW5nV2l0aFNjcm9sbGFibGVBcmVhKCZzY3JvbGxhYmxlQXJlYSwgZmlsdGVyZWREZWx0
YSk7CiAgICAgU2Nyb2xsR3JhbnVsYXJpdHkgc2Nyb2xsR3JhbnVsYXJpdHkgPSB3aGVlbEdyYW51
bGFyaXR5VG9TY3JvbGxHcmFudWxhcml0eSh3aGVlbEV2ZW50LmRlbHRhTW9kZSgpKTsKICAgICBi
b29sIGRpZEhhbmRsZVdoZWVsRXZlbnQgPSBmYWxzZTsKLSAgICBpZiAoZmxvYXQgYWJzb2x1dGVE
ZWx0YSA9IHN0ZDo6YWJzKHdoZWVsRXZlbnQuZGVsdGFYKCkpKQotICAgICAgICBkaWRIYW5kbGVX
aGVlbEV2ZW50IHw9IHNjcm9sbGFibGVBcmVhLnNjcm9sbCh3aGVlbEV2ZW50LmRlbHRhWCgpID4g
MCA/IFNjcm9sbFJpZ2h0IDogU2Nyb2xsTGVmdCwgc2Nyb2xsR3JhbnVsYXJpdHksIGFic29sdXRl
RGVsdGEpOworICAgIGlmIChmbG9hdCBhYnNvbHV0ZURlbHRhID0gc3RkOjphYnMoZmlsdGVyZWRE
ZWx0YS53aWR0aCgpKSkKKyAgICAgICAgZGlkSGFuZGxlV2hlZWxFdmVudCB8PSBzY3JvbGxhYmxl
QXJlYS5zY3JvbGwoZmlsdGVyZWREZWx0YS53aWR0aCgpID4gMCA/IFNjcm9sbFJpZ2h0IDogU2Ny
b2xsTGVmdCwgc2Nyb2xsR3JhbnVsYXJpdHksIGFic29sdXRlRGVsdGEpOwogCi0gICAgaWYgKGZs
b2F0IGFic29sdXRlRGVsdGEgPSBzdGQ6OmFicyh3aGVlbEV2ZW50LmRlbHRhWSgpKSkKLSAgICAg
ICAgZGlkSGFuZGxlV2hlZWxFdmVudCB8PSBzY3JvbGxhYmxlQXJlYS5zY3JvbGwod2hlZWxFdmVu
dC5kZWx0YVkoKSA+IDAgPyBTY3JvbGxEb3duIDogU2Nyb2xsVXAsIHNjcm9sbEdyYW51bGFyaXR5
LCBhYnNvbHV0ZURlbHRhKTsKKyAgICBpZiAoZmxvYXQgYWJzb2x1dGVEZWx0YSA9IHN0ZDo6YWJz
KGZpbHRlcmVkRGVsdGEuaGVpZ2h0KCkpKQorICAgICAgICBkaWRIYW5kbGVXaGVlbEV2ZW50IHw9
IHNjcm9sbGFibGVBcmVhLnNjcm9sbChmaWx0ZXJlZERlbHRhLmhlaWdodCgpID4gMCA/IFNjcm9s
bERvd24gOiBTY3JvbGxVcCwgc2Nyb2xsR3JhbnVsYXJpdHksIGFic29sdXRlRGVsdGEpOwogCiAg
ICAgcmV0dXJuIGRpZEhhbmRsZVdoZWVsRXZlbnQ7CiB9CiAKLWJvb2wgRXZlbnRIYW5kbGVyOjpo
YW5kbGVXaGVlbEV2ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2luZ0JveChOb2RlKiBzdGFydE5vZGUs
IGNvbnN0IFdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyZWRQ
bGF0Zm9ybURlbHRhLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlcmVkVmVsb2NpdHksIE9wdGlvblNl
dDxFdmVudEhhbmRsaW5nPiBldmVudEhhbmRsaW5nKQorYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRs
ZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94KE5vZGUqIHN0YXJ0Tm9kZSwgY29u
c3QgV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgRmxvYXRTaXplJiBmaWx0ZXJlZFBsYXRmb3JtRGVs
dGEsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyZWRWZWxvY2l0eSwgT3B0aW9uU2V0PEV2ZW50SGFu
ZGxpbmc+IGV2ZW50SGFuZGxpbmcpCiB7CiAgICAgYm9vbCBzaG91bGRIYW5kbGVFdmVudCA9IHdo
ZWVsRXZlbnQuZGVsdGFYKCkgfHwgd2hlZWxFdmVudC5kZWx0YVkoKTsKICNpZiBFTkFCTEUoV0hF
RUxfRVZFTlRfTEFUQ0hJTkcpCkBAIC0zMDgzLDggKzMxMDMsMTggQEAgYm9vbCBFdmVudEhhbmRs
ZXI6OmhhbmRsZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94KE5vZGUqIHN0YXJ0
Tm9kZSwgY28KICAgICAgICAgcmV0dXJuIGRpZFNjcm9sbEluU2Nyb2xsYWJsZUFyZWEoZG93bmNh
c3Q8UmVuZGVyTGlzdEJveD4oaW5pdGlhbEVuY2xvc2luZ0JveCksIHdoZWVsRXZlbnQpOwogCiAg
ICAgUmVuZGVyQm94KiBjdXJyZW50RW5jbG9zaW5nQm94ID0gJmluaXRpYWxFbmNsb3NpbmdCb3g7
CisjaWYgUExBVEZPUk0oTUFDKQorICAgIGF1dG8gYmlhc2VkRGVsdGEgPSBTY3JvbGxpbmdFZmZl
Y3RzQ29udHJvbGxlcjo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoRmxvYXRTaXpl
KHdoZWVsRXZlbnQuZGVsdGFYKCksIHdoZWVsRXZlbnQuZGVsdGFZKCkpKTsKKyNlbHNlCisgICAg
YXV0byBiaWFzZWREZWx0YSh3aGVlbEV2ZW50LmRlbHRhWCgpLCB3aGVlbEV2ZW50LmRlbHRhWSgp
KTsKKyNlbmRpZgogICAgIHdoaWxlIChjdXJyZW50RW5jbG9zaW5nQm94KSB7CiAgICAgICAgIGlm
IChhdXRvKiBib3hTY3JvbGxhYmxlQXJlYSA9IGN1cnJlbnRFbmNsb3NpbmdCb3gtPmxheWVyKCkg
PyBjdXJyZW50RW5jbG9zaW5nQm94LT5sYXllcigpLT5zY3JvbGxhYmxlQXJlYSgpIDogbnVsbHB0
cikgeworICAgICAgICAgICAgaWYgKGJveFNjcm9sbGFibGVBcmVhICYmIHNob3VsZEJsb2NrU2Ny
b2xsQ2hhaW5pbmdXaXRoU2Nyb2xsYWJsZUFyZWEoYm94U2Nyb2xsYWJsZUFyZWEsIGJpYXNlZERl
bHRhKSkgeworICAgICAgICAgICAgICAgIGlmIChib3hTY3JvbGxhYmxlQXJlYS0+aG9yaXpvbnRh
bE92ZXJzY3JvbGxCZWhhdmlvcigpICE9IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0byAmJiAhZmls
dGVyZWRQbGF0Zm9ybURlbHRhLmhlaWdodCgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBhdXRvIHBsYXRmb3JtRXZlbnQgPSB3aGVlbEV2ZW50LnVuZGVybHlpbmdQbGF0Zm9y
bUV2ZW50KCk7CiAgICAgICAgICAgICBib29sIHNjcm9sbGluZ1dhc0hhbmRsZWQ7CiAgICAgICAg
ICAgICBpZiAocGxhdGZvcm1FdmVudCkgewpAQCAtMzEwNyw3ICszMTM3LDcgQEAgYm9vbCBFdmVu
dEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94KE5vZGUq
IHN0YXJ0Tm9kZSwgY28KIGJvb2wgRXZlbnRIYW5kbGVyOjpzY3JvbGxhYmxlQXJlYUNhbkhhbmRs
ZUV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgU2Nyb2xsYWJsZUFy
ZWEmIHNjcm9sbGFibGVBcmVhKQogewogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBhdXRvIGJpYXNl
ZERlbHRhID0gU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OndoZWVsRGVsdGFCaWFzaW5nVG93
YXJkc1ZlcnRpY2FsKHdoZWVsRXZlbnQpOworICAgIGF1dG8gYmlhc2VkRGVsdGEgPSBTY3JvbGxp
bmdFZmZlY3RzQ29udHJvbGxlcjo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwod2hl
ZWxFdmVudC5kZWx0YSgpKTsKICNlbHNlCiAgICAgYXV0byBiaWFzZWREZWx0YSA9IHdoZWVsRXZl
bnQuZGVsdGEoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKaW5kZXggZWFj
MWQ1ZjM0MDA4NmMzNjM2YmZmNjEwOTY1MWRlYzlmNGViMzBmZS4uNzg3ZDUzZDE5MzdjYzU3YTgx
YzhlMWMxOGVkM2FlYTk0MzBiMTE4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9F
dmVudEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCkBA
IC00NzYsNyArNDc2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHByb2Nlc3NXaGVlbEV2ZW50Rm9y
U2Nyb2xsU25hcChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBjb25zdCBXZWFrUHRyPFNjcm9s
bGFibGVBcmVhPiYpOwogICAgIGJvb2wgY29tcGxldGVXaWRnZXRXaGVlbEV2ZW50KGNvbnN0IFBs
YXRmb3JtV2hlZWxFdmVudCYsIGNvbnN0IFdlYWtQdHI8V2lkZ2V0PiYsIGNvbnN0IFdlYWtQdHI8
U2Nyb2xsYWJsZUFyZWE+Jik7CiAKLSAgICBib29sIGhhbmRsZVdoZWVsRXZlbnRJbkFwcHJvcHJp
YXRlRW5jbG9zaW5nQm94KE5vZGUqIHN0YXJ0Tm9kZSwgY29uc3QgV2hlZWxFdmVudCYsIGNvbnN0
IEZsb2F0U2l6ZSYgZmlsdGVyZWRQbGF0Zm9ybURlbHRhLCBjb25zdCBGbG9hdFNpemUmIGZpbHRl
cmVkVmVsb2NpdHksIE9wdGlvblNldDxFdmVudEhhbmRsaW5nPik7CisgICAgYm9vbCBoYW5kbGVX
aGVlbEV2ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2luZ0JveChOb2RlKiBzdGFydE5vZGUsIGNvbnN0
IFdoZWVsRXZlbnQmLCBGbG9hdFNpemUmIGZpbHRlcmVkUGxhdGZvcm1EZWx0YSwgY29uc3QgRmxv
YXRTaXplJiBmaWx0ZXJlZFZlbG9jaXR5LCBPcHRpb25TZXQ8RXZlbnRIYW5kbGluZz4pOwogCiAg
ICAgYm9vbCBoYW5kbGVXaGVlbEV2ZW50SW5TY3JvbGxhYmxlQXJlYShjb25zdCBQbGF0Zm9ybVdo
ZWVsRXZlbnQmLCBTY3JvbGxhYmxlQXJlYSYsIE9wdGlvblNldDxFdmVudEhhbmRsaW5nPik7CiAg
ICAgc3RkOjpvcHRpb25hbDxXaGVlbFNjcm9sbEdlc3R1cmVTdGF0ZT4gdXBkYXRlV2hlZWxHZXN0
dXJlU3RhdGUoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgT3B0aW9uU2V0PEV2ZW50SGFuZGxp
bmc+KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1h
Yy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbQppbmRleCAx
ZWNkMGNjNzhlZDU1NTY0ZjAzMmIzMGM5YzgzZWJmNTc0YWRlODAwLi42MTBkMWFkMzMwMjVlYjNl
MTVjNDQ2MDE3Y2NiNmFlOThlZjdmN2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L21hYy9FdmVudEhhbmRsZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZl
bnRIYW5kbGVyTWFjLm1tCkBAIC04MTUsNiArODE1LDggQEAgc3RhdGljIENvbnRhaW5lck5vZGUq
IGZpbmRFbmNsb3NpbmdTY3JvbGxhYmxlQ29udGFpbmVyKENvbnRhaW5lck5vZGUqIG5vZGUsIGNv
bnMKICAgICAgICAgYXV0byogc2Nyb2xsYWJsZUFyZWEgPSBzY3JvbGxhYmxlQXJlYUZvckJveCgq
Ym94KTsKICAgICAgICAgaWYgKCFzY3JvbGxhYmxlQXJlYSkKICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICBpZiAoKHNjcm9sbGFibGVBcmVhLT5ob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2
aW9yKCkgIT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpBdXRvICYmIHNjcm9sbGFibGVBcmVhLT52ZXJ0
aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpICE9IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0bykgfHwg
KHNjcm9sbGFibGVBcmVhLT5ob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgIT0gT3ZlcnNj
cm9sbEJlaGF2aW9yOjpBdXRvICYmICF3aGVlbEV2ZW50LmRlbHRhKCkuaGVpZ2h0KCkpIHx8IChz
Y3JvbGxhYmxlQXJlYS0+dmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSAhPSBPdmVyc2Nyb2xs
QmVoYXZpb3I6OkF1dG8gJiYgIXdoZWVsRXZlbnQuZGVsdGEoKS53aWR0aCgpKSkKKyAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCiAgICAgICAgIGlmICh3aGVlbEV2ZW50LnBoYXNlKCkgPT0g
UGxhdGZvcm1XaGVlbEV2ZW50UGhhc2U6Ok1heUJlZ2luIHx8IHdoZWVsRXZlbnQucGhhc2UoKSA9
PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZTo6Q2FuY2VsbGVkKQogICAgICAgICAgICAgcmV0dXJu
IGNhbmRpZGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGlu
Z0VmZmVjdHNDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdF
ZmZlY3RzQ29udHJvbGxlci5oCmluZGV4IGM3YTNhMmY4NWVhMGVkNWE3YzZhOTRiZTFiZjM1NzI4
YjE4Yzg4ZjMuLjA2Njc5MWQwY2U0M2I2ZGZjOTM5Njk2NTA4MTQyNDIyODJiZmU3ZmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xs
ZXIuaApAQCAtMTc0LDcgKzE3NCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzVXNlclNjcm9sbElu
UHJvZ3Jlc3MoKSBjb25zdDsKIAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBzdGF0aWMgRmxvYXRT
aXplIHdoZWVsRGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRpY2FsKGNvbnN0IFBsYXRmb3JtV2hlZWxF
dmVudCYpOworICAgIHN0YXRpYyBGbG9hdFNpemUgd2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVy
dGljYWwoY29uc3QgRmxvYXRTaXplJik7CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgaGFuZGxl
ZC4KICAgICBib29sIHByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsU25hcChjb25zdCBQbGF0Zm9y
bVdoZWVsRXZlbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9T
Y3JvbGxBbmltYXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxB
bmltYXRvck1hYy5tbQppbmRleCA1M2E0MDc1M2RiNzQ3YzVhYzRiMWY3YjIxYTlhZDVjMWZmNDVh
ODM2Li5mY2FhOWY0MTJiMTRmNjhlYzY2YzQxMGQ1ZGU1YWE4NTBhNGJkZWU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tCkBAIC05NCw5
ICs5NCw5IEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3JNYWM6OmhhbmRsZVdoZWVsRXZlbnRQaGFzZShQ
bGF0Zm9ybVdoZWVsRXZlbnRQaGFzZSBwaGFzZSkKIGJvb2wgU2Nyb2xsQW5pbWF0b3JNYWM6OnNo
b3VsZEZvcndhcmRXaGVlbEV2ZW50c1RvUGFyZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYg
d2hlZWxFdmVudCkgY29uc3QKIHsKICAgICBpZiAoc3RkOjphYnMod2hlZWxFdmVudC5kZWx0YVko
KSkgPj0gc3RkOjphYnMod2hlZWxFdmVudC5kZWx0YVgoKSkpCi0gICAgICAgIHJldHVybiAhYWxs
b3dzVmVydGljYWxTdHJldGNoaW5nKHdoZWVsRXZlbnQpOworICAgICAgICByZXR1cm4gbV9zY3Jv
bGxhYmxlQXJlYS52ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpID09IE92ZXJzY3JvbGxCZWhh
dmlvcjo6QXV0byAmJiAhYWxsb3dzVmVydGljYWxTdHJldGNoaW5nKHdoZWVsRXZlbnQpOwogCi0g
ICAgcmV0dXJuICFhbGxvd3NIb3Jpem9udGFsU3RyZXRjaGluZyh3aGVlbEV2ZW50KTsKKyAgICBy
ZXR1cm4gbV9zY3JvbGxhYmxlQXJlYS5ob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgPT0g
T3ZlcnNjcm9sbEJlaGF2aW9yOjpBdXRvICYmICFhbGxvd3NIb3Jpem9udGFsU3RyZXRjaGluZyh3
aGVlbEV2ZW50KTsKIH0KICAgICAKIGJvb2wgU2Nyb2xsQW5pbWF0b3JNYWM6OmhhbmRsZVdoZWVs
RXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50KQpAQCAtMTQzLDYgKzE0
Myw5IEBAIHN0YXRpYyBib29sIGdlc3R1cmVTaG91bGRCZWdpblNuYXAoY29uc3QgUGxhdGZvcm1X
aGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBTY3JvbGxFCiAKIGJvb2wgU2Nyb2xsQW5pbWF0b3JNYWM6
OmFsbG93c1ZlcnRpY2FsU3RyZXRjaGluZyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVs
RXZlbnQpIGNvbnN0CiB7CisgICAgaWYgKG1fc2Nyb2xsYWJsZUFyZWEudmVydGljYWxPdmVyc2Ny
b2xsQmVoYXZpb3IoKSA9PSBPdmVyc2Nyb2xsQmVoYXZpb3I6Ok5vbmUpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAKICAgICBzd2l0Y2ggKG1fc2Nyb2xsYWJsZUFyZWEudmVydGljYWxTY3Jv
bGxFbGFzdGljaXR5KCkpIHsKICAgICBjYXNlIFNjcm9sbEVsYXN0aWNpdHk6OkF1dG9tYXRpYzog
ewogICAgICAgICBTY3JvbGxiYXIqIGhTY3JvbGxlciA9IG1fc2Nyb2xsYWJsZUFyZWEuaG9yaXpv
bnRhbFNjcm9sbGJhcigpOwpAQCAtMTY2LDYgKzE2OSw5IEBAIGJvb2wgU2Nyb2xsQW5pbWF0b3JN
YWM6OmFsbG93c1ZlcnRpY2FsU3RyZXRjaGluZyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdo
ZWVsCiAKIGJvb2wgU2Nyb2xsQW5pbWF0b3JNYWM6OmFsbG93c0hvcml6b250YWxTdHJldGNoaW5n
KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCkgY29uc3QKIHsKKyAgICBpZiAo
bV9zY3JvbGxhYmxlQXJlYS5ob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgPT0gT3ZlcnNj
cm9sbEJlaGF2aW9yOjpOb25lKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCiAgICAgc3dp
dGNoIChtX3Njcm9sbGFibGVBcmVhLmhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5KCkpIHsKICAg
ICBjYXNlIFNjcm9sbEVsYXN0aWNpdHk6OkF1dG9tYXRpYzogewogICAgICAgICBTY3JvbGxiYXIq
IGhTY3JvbGxlciA9IG1fc2Nyb2xsYWJsZUFyZWEuaG9yaXpvbnRhbFNjcm9sbGJhcigpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGluZ0VmZmVjdHNDb250
cm9sbGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGluZ0VmZmVjdHND
b250cm9sbGVyLm1tCmluZGV4IDgwMGNjNTExMDc1YWFiMDIwOGU4OTY3MzVhM2U5YmQxZTMwMjI4
MTEuLjBkMTI1NjBjNDdiNjM0OGU3N2Y2MzZhZWI0NDYyNWI3MTc1NTQyN2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsaW5nRWZmZWN0c0NvbnRy
b2xsZXIubW0KQEAgLTMzNyw5ICszMzcsOSBAQCBib29sIFNjcm9sbGluZ0VmZmVjdHNDb250cm9s
bGVyOjphcHBseVNjcm9sbERlbHRhV2l0aFN0cmV0Y2hpbmcoY29uc3QgUGxhdGZvcm1XaAogICAg
IHJldHVybiBjYW5TdGFydEFuaW1hdGlvbjsKIH0KIAotRmxvYXRTaXplIFNjcm9sbGluZ0VmZmVj
dHNDb250cm9sbGVyOjp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbChjb25zdCBQbGF0
Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpCitGbG9hdFNpemUgU2Nyb2xsaW5nRWZmZWN0c0Nv
bnRyb2xsZXI6OndoZWVsRGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRpY2FsKGNvbnN0IEZsb2F0U2l6
ZSYgd2hlZWxEZWx0YSkKIHsKLSAgICByZXR1cm4gZGVsdGFBbGlnbmVkVG9Eb21pbmFudEF4aXMo
d2hlZWxFdmVudC5kZWx0YSgpKTsKKyAgICByZXR1cm4gZGVsdGFBbGlnbmVkVG9Eb21pbmFudEF4
aXMod2hlZWxEZWx0YSk7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnVw
ZGF0ZVJ1YmJlckJhbmRBbmltYXRpbmdTdGF0ZSgpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOWIwNjNkNDYxMDhiZWVjYjc5
YTIyZGM4ZTFhODNkMzlhYzczZTIyYi4uYjY4OGU0NjcyY2E0ZDZhM2RmNmZjMzQxZDlmNjVlZjRm
ZjZkYzgxNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTEyLTAyICBOaWtvbGFvcyBNb3Vj
aHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBDU1Mg
b3ZlcnNjcm9sbC1iZWhhdmlvciBmb3Igc3luY2hyb25vdXMgc2Nyb2xsCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI5NjgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL3Jlc291
cmNlcy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXN1cHBvcnQuanM6IEFkZGVkLgorICAgICAgICAoZ2V0
RGVsdGFzKToKKyAgICAgICAgKGFzeW5jIG1vdXNlV2hlZWxTY3JvbGxBbmRXYWl0KToKKyAgICAg
ICAgKiBmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1l
bnQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3Zl
cnNjcm9sbC1iZWhhdmlvci1pZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9zY3Jv
bGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVu
dC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVy
c2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUuaHRtbDogQWRkZWQuCisKIDIwMjEt
MTEtMzAgIFJvYmVydCBKZW5uZXIgIDxKZW5uZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJFQkFT
RUxJTkUgWyBNb250ZXJleSBdZmFzdC9jc3MvY29udGludWF0aW9uQ3Jhc2guaHRtbCAobGF5b3V0
LXRlc3QpIGlzIGEgY29uc3RhbnQgdGV4dCBmYWlsdXJlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L3Njcm9sbGluZy9yZXNvdXJjZXMvb3ZlcnNjcm9sbC1iZWhhdmlvci1zdXBwb3J0Lmpz
IGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvcmVzb3VyY2VzL292ZXJzY3JvbGwtYmVoYXZp
b3Itc3VwcG9ydC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYmQyMjJlOTBiNTJhMTkzMGI3ZmNmZTQ0MjNlOTQ1
ODNjMDQ2MDBlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcv
cmVzb3VyY2VzL292ZXJzY3JvbGwtYmVoYXZpb3Itc3VwcG9ydC5qcwpAQCAtMCwwICsxLDM5IEBA
CitmdW5jdGlvbiBnZXREZWx0YXMoZGlyZWN0aW9uKSB7CisgICAgdmFyIGRlbHRhWCA9IDA7Cisg
ICAgdmFyIGRlbHRhWSA9IDA7CisgICAgaWYgKGRpcmVjdGlvbiA9PSAiZG93biIpCisgICAgICAg
IGRlbHRhWSA9IC01CisgICAgZWxzZSBpZiAoZGlyZWN0aW9uID09ICJ1cCIpCisgICAgICAgIGRl
bHRhWSA9IDU7CisgICAgZWxzZSBpZiAoZGlyZWN0aW9uID09ICJyaWdodCIpCisgICAgICAgIGRl
bHRhWCA9IC01OworICAgIGVsc2UgaWYgKGRpcmVjdGlvbiA9PSAibGVmdCIpCisgICAgICAgIGRl
bHRhWCA9IDU7CisgICAgcmV0dXJuIHsKKyAgICAgICAgWDogZGVsdGFYLAorICAgICAgICBZOiBk
ZWx0YVkKKyAgICB9OworfQorCithc3luYyBmdW5jdGlvbiBtb3VzZVdoZWVsU2Nyb2xsQW5kV2Fp
dCh4LCB5LCBiZWdpblgsIGJlZ2luWSwgZGVsdGFYLCBkZWx0YVkpCit7CisgICAgaWYgKGJlZ2lu
WCA9PT0gdW5kZWZpbmVkKQorICAgICAgICBiZWdpblggPSAwOworICAgIGlmIChiZWdpblkgPT09
IHVuZGVmaW5lZCkKKyAgICAgICAgYmVnaW5ZID0gLTE7CisgICAgaWYgKGRlbHRhWCA9PT0gdW5k
ZWZpbmVkKQorICAgICAgICBkZWx0YVggPSAwOworICAgIGlmIChkZWx0YVkgPT09IHVuZGVmaW5l
ZCkKKyAgICAgICAgZGVsdGFZID0gLTEwOworCisgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVs
RXZlbnRzKCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGJlZ2luWCwgYmVn
aW5ZLCAiYmVnYW4iLCAibm9uZSIpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkZWx0YVgsIGRlbHRhWSwgImNoYW5nZWQiLCAibm9uZSIp
OworICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cygwLCAwLCAiZW5kZWQiLCAibm9uZSIpOworICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZl
ID0+IHsKKyAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgICAgICByZXF1ZXN0QW5p
bWF0aW9uRnJhbWUocmVzb2x2ZSk7CisgICAgICAgIH0sIDUwMCk7CisgICAgfSk7Cit9ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3Jv
bGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVo
YXZpb3ItZWxlbWVudC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjcxNTBmZjYwYjVkYmRkMGI0
YTdhYzZmODNmYjU2ZjU3Y2QyY2Q4MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwyMCBAQAorCitQQVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBzY3Jv
bGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gYXV0by4KK1BBU1MgRWxlbWVu
dCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gYXV0
by4KK1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1i
ZWhhdmlvcjogY29udGFpbiBhdXRvLgorUEFTUyBFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0
IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBhdXRvLgorUEFTUyBFbGVtZW50IGhv
cml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIGF1dG8u
CitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2
aW9yOiBub25lIGF1dG8uCitQQVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRo
IG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gY29udGFpbi4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNh
bCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gY29udGFpbi4KK1BB
U1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlv
cjogY29udGFpbiBjb250YWluLgorUEFTUyBFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdp
dGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBjb250YWluLgorUEFTUyBFbGVtZW50IGhv
cml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIGNvbnRh
aW4uCitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJl
aGF2aW9yOiBub25lIGNvbnRhaW4uCitQQVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVz
dCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gbm9uZS4KK1BBU1MgRWxlbWVudCB2ZXJ0
aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gbm9uZS4KK1BB
U1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlv
cjogY29udGFpbiBub25lLgorUEFTUyBFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGgg
b3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBub25lLgorUEFTUyBFbGVtZW50IGhvcml6b250
YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIG5vbmUuCitQQVNT
IEVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBu
b25lIG5vbmUuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMt
c2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50Lmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYjY2NDc2ZjA1ZmQyZjQwM2FhNGU2ZWRiZjhkYmZmZTRiNzMyOWMyMAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92
ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC5odG1sCkBAIC0wLDAgKzEsODYgQEAKKzwhZG9jdHlw
ZSBodG1sPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0Lmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb3ZlcnNjcm9sbC1iZWhhdmlvci1z
dXBwb3J0LmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9kcmFm
dHMuY3Nzd2cub3JnL2Nzcy1vdmVyc2Nyb2xsLWJlaGF2aW9yIj4KKzxzdHlsZT4KKyAgICAuc2Ny
b2xsaW5nIHsKKyAgICAgICAgb3ZlcmZsb3c6IHNjcm9sbDsKKyAgICB9CisgICAgLnNjcm9sbENv
bnRlbnQgeworICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgIGhlaWdodDogMzAwcHg7Cisg
ICAgfQorICAgICNyb290IHsKKyAgICAgICAgd2lkdGg6IDIwMHB4OworICAgICAgICBoZWlnaHQ6
IDIwMHB4OworICAgIH0KKyAgICAjc2Nyb2xsZXIgeworICAgICAgICB3aWR0aDogMTAwcHg7Cisg
ICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgfQorPC9zdHlsZT4KKzxkaXYgaWQ9J3Jvb3QnIGNs
YXNzPSJzY3JvbGxpbmciPgorICAgIDxkaXYgaWQ9J3Njcm9sbGVyJyBjbGFzcz0ic2Nyb2xsaW5n
Ij4KKyAgICAgICAgPGRpdiBjbGFzcz0ic2Nyb2xsQ29udGVudCI+PC9kaXY+CisgICAgPC9kaXY+
CisgICAgPGRpdiBjbGFzcz0ic2Nyb2xsQ29udGVudCI+PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlw
dD4KK2NvbnN0IHJvb3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncm9vdCcpOworY29uc3Qg
c2Nyb2xsZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2Nyb2xsZXInKTsKK3ZhciBvdmVy
c2Nyb2xsRGF0YXMgPSBbWyJhdXRvIiwgImF1dG8iLCB0cnVlLCB0cnVlXSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIFsiY29udGFpbiIsICJhdXRvIiwgZmFsc2UsIHRydWVdLAorICAgICAgICAg
ICAgICAgICAgICAgICAgWyJub25lIiwgImF1dG8iLCBmYWxzZSwgdHJ1ZV0sCisgICAgICAgICAg
ICAgICAgICAgICAgICBbImF1dG8iLCAiY29udGFpbiIsIHRydWUsIGZhbHNlXSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIFsiY29udGFpbiIsICJjb250YWluIiwgZmFsc2UsIGZhbHNlXSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIFsibm9uZSIsICJjb250YWluIiwgZmFsc2UsIGZhbHNlXSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIFsiYXV0byIsICJub25lIiwgdHJ1ZSwgZmFsc2VdLAor
ICAgICAgICAgICAgICAgICAgICAgICAgWyJjb250YWluIiwgIm5vbmUiLCBmYWxzZSwgZmFsc2Vd
LAorICAgICAgICAgICAgICAgICAgICAgICAgWyJub25lIiwgIm5vbmUiLCBmYWxzZSwgZmFsc2Vd
XTsKKworZnVuY3Rpb24gcmVzZXRUZXN0KCkgeworICAgIC8vIFRyeSB2YXJpb3VzIG1ldGhvZHMg
dG8gZW5zdXJlIHRoZSBlbGVtZW50IHBvc2l0aW9uIGlzIHJlc2V0IGltbWVkaWF0ZWx5LgorICAg
IHNjcm9sbGVyLnNjcm9sbExlZnQgPSAzMDA7CisgICAgc2Nyb2xsZXIuc2Nyb2xsVG9wID0gMzAw
OworICAgIHNjcm9sbGVyLnNjcm9sbFRvKDMwMCwgMzAwKTsKKworICAgIHJvb3Quc2Nyb2xsTGVm
dCA9IDA7CisgICAgcm9vdC5zY3JvbGxUb3AgPSAwOworICAgIHJvb3Quc2Nyb2xsVG8oMCwgMCk7
Cit9CisKK2Z1bmN0aW9uIHN0YXJ0VGVzdCgpIHsKKyAgICBvdmVyc2Nyb2xsRGF0YXMuZm9yRWFj
aCgoW292ZXJzY3JvbGxYLCBvdmVyc2Nyb2xsWSwgcHJvcGFnYXRlWCwgcHJvcGFnYXRlWV0pID0+
IHsKKyAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAgIHJlc2V0VGVzdCgp
OworICAgICAgICAgICAgc2Nyb2xsZXIuc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWCA9IG92ZXJz
Y3JvbGxYOworICAgICAgICAgICAgc2Nyb2xsZXIuc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWSA9
IG92ZXJzY3JvbGxZOworICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aDsKKwor
ICAgICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAgICAgICAg
ICB2YXIgeSA9IHNjcm9sbGVyLmNsaWVudEhlaWdodCAvIDI7CisgICAgICAgICAgICB2YXIgZGVs
dGEgPSBnZXREZWx0YXMoInJpZ2h0Iik7CisgICAgICAgICAgICByZXR1cm4gbW91c2VXaGVlbFNj
cm9sbEFuZFdhaXQoeCwgeSwgZGVsdGEuWCwgZGVsdGEuWSwgZGVsdGEuWCwgZGVsdGEuWSkudGhl
bigoKSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbExlZnQg
PiAwLCBwcm9wYWdhdGVYLCAnQ29udGludWUgdXAgdGhlIGhvcml6b250YWwgc2Nyb2xsIGNoYWlu
aW5nJyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSwgJ0VsZW1lbnQgaG9yaXpvbnRhbCBz
Y3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6ICcgKyBvdmVyc2Nyb2xsWCArICcg
JyArIG92ZXJzY3JvbGxZICsgJy4nKTsKKworICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4gewor
ICAgICAgICAgICAgcmVzZXRUZXN0KCk7CisgICAgICAgICAgICBzY3JvbGxlci5zdHlsZS5vdmVy
c2Nyb2xsQmVoYXZpb3JYID0gb3ZlcnNjcm9sbFg7CisgICAgICAgICAgICBzY3JvbGxlci5zdHls
ZS5vdmVyc2Nyb2xsQmVoYXZpb3JZID0gb3ZlcnNjcm9sbFk7CisKKyAgICAgICAgICAgIHZhciB4
ID0gc2Nyb2xsZXIuY2xpZW50V2lkdGggLyAyOworICAgICAgICAgICAgdmFyIHkgPSBzY3JvbGxl
ci5jbGllbnRIZWlnaHQgLyAyOworICAgICAgICAgICAgdmFyIGRlbHRhID0gZ2V0RGVsdGFzKCJk
b3duIik7CisgICAgICAgICAgICByZXR1cm4gbW91c2VXaGVlbFNjcm9sbEFuZFdhaXQoeCwgeSwg
ZGVsdGEuWCwgZGVsdGEuWSwgZGVsdGEuWCwgZGVsdGEuWSkudGhlbigoKSA9PiB7CisgICAgICAg
ICAgICAgICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbFRvcCA+IDAsIHByb3BhZ2F0ZVksICdD
b250aW51ZSB1cCB0aGUgdmVydGljYWwgc2Nyb2xsIGNoYWluaW5nJyk7CisgICAgICAgICAgICB9
KTsKKyAgICAgICAgfSwgJ0VsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Ny
b2xsLWJlaGF2aW9yOiAnICsgb3ZlcnNjcm9sbFggKyAnICcgKyBvdmVyc2Nyb2xsWSArICcuJyk7
CisgICAgfSk7Cit9CisKK2FkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBzdGFydFRlc3QpOworPC9z
Y3JpcHQ+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3Zl
cnNjcm9sbC1iZWhhdmlvci1pZnJhbWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU1ZjA5ODky
MzI4ZWQxMGM4YmIwNGFhOTY5ZWJiYjUyMGE1NmU2MDcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWlm
cmFtZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMSBAQAorCisKK1BBU1MgSWZyYW1lIGhvcml6
b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIGF1dG8uCitQ
QVNTIElmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6
IGF1dG8gYXV0by4KK0ZBSUwgSWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVy
c2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGF1dG8uIGFzc2VydF9lcXVhbHM6IENvbnRpbnVlIHVw
IHRoZSBob3Jpem9udGFsIHNjcm9sbCBjaGFpbmluZyBleHBlY3RlZCBmYWxzZSBidXQgZ290IHRy
dWUKK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhh
dmlvcjogY29udGFpbiBhdXRvLgorRkFJTCBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3
aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgYXV0by4gYXNzZXJ0X2VxdWFsczogQ29udGlu
dWUgdXAgdGhlIGhvcml6b250YWwgc2Nyb2xsIGNoYWluaW5nIGV4cGVjdGVkIGZhbHNlIGJ1dCBn
b3QgdHJ1ZQorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xs
LWJlaGF2aW9yOiBub25lIGF1dG8uCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0
IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBjb250YWluLgorRkFJTCBJZnJhbWUgdmVy
dGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIGNvbnRhaW4u
IGFzc2VydF9lcXVhbHM6IENvbnRpbnVlIHVwIHRoZSB2ZXJ0aWNhbCBzY3JvbGwgY2hhaW5pbmcg
ZXhwZWN0ZWQgZmFsc2UgYnV0IGdvdCB0cnVlCitGQUlMIElmcmFtZSBob3Jpem9udGFsIHNjcm9s
bCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBjb250YWluLiBhc3NlcnRf
ZXF1YWxzOiBDb250aW51ZSB1cCB0aGUgaG9yaXpvbnRhbCBzY3JvbGwgY2hhaW5pbmcgZXhwZWN0
ZWQgZmFsc2UgYnV0IGdvdCB0cnVlCitGQUlMIElmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3
aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gY29udGFpbi4gYXNzZXJ0X2VxdWFsczog
Q29udGludWUgdXAgdGhlIHZlcnRpY2FsIHNjcm9sbCBjaGFpbmluZyBleHBlY3RlZCBmYWxzZSBi
dXQgZ290IHRydWUKK0ZBSUwgSWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVy
c2Nyb2xsLWJlaGF2aW9yOiBub25lIGNvbnRhaW4uIGFzc2VydF9lcXVhbHM6IENvbnRpbnVlIHVw
IHRoZSBob3Jpem9udGFsIHNjcm9sbCBjaGFpbmluZyBleHBlY3RlZCBmYWxzZSBidXQgZ290IHRy
dWUKK0ZBSUwgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhh
dmlvcjogbm9uZSBjb250YWluLiBhc3NlcnRfZXF1YWxzOiBDb250aW51ZSB1cCB0aGUgdmVydGlj
YWwgc2Nyb2xsIGNoYWluaW5nIGV4cGVjdGVkIGZhbHNlIGJ1dCBnb3QgdHJ1ZQorUEFTUyBJZnJh
bWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8g
bm9uZS4KK0ZBSUwgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1i
ZWhhdmlvcjogYXV0byBub25lLiBhc3NlcnRfZXF1YWxzOiBDb250aW51ZSB1cCB0aGUgdmVydGlj
YWwgc2Nyb2xsIGNoYWluaW5nIGV4cGVjdGVkIGZhbHNlIGJ1dCBnb3QgdHJ1ZQorRkFJTCBJZnJh
bWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRh
aW4gbm9uZS4gYXNzZXJ0X2VxdWFsczogQ29udGludWUgdXAgdGhlIGhvcml6b250YWwgc2Nyb2xs
IGNoYWluaW5nIGV4cGVjdGVkIGZhbHNlIGJ1dCBnb3QgdHJ1ZQorRkFJTCBJZnJhbWUgdmVydGlj
YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIG5vbmUuIGFz
c2VydF9lcXVhbHM6IENvbnRpbnVlIHVwIHRoZSB2ZXJ0aWNhbCBzY3JvbGwgY2hhaW5pbmcgZXhw
ZWN0ZWQgZmFsc2UgYnV0IGdvdCB0cnVlCitGQUlMIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0
ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBub25lLiBhc3NlcnRfZXF1YWxzOiBD
b250aW51ZSB1cCB0aGUgaG9yaXpvbnRhbCBzY3JvbGwgY2hhaW5pbmcgZXhwZWN0ZWQgZmFsc2Ug
YnV0IGdvdCB0cnVlCitGQUlMIElmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJz
Y3JvbGwtYmVoYXZpb3I6IG5vbmUgbm9uZS4gYXNzZXJ0X2VxdWFsczogQ29udGludWUgdXAgdGhl
IHZlcnRpY2FsIHNjcm9sbCBjaGFpbmluZyBleHBlY3RlZCBmYWxzZSBidXQgZ290IHRydWUKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNj
cm9sbC1iZWhhdmlvci1pZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5
bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTY4
ZTVkYWVmOWEzYjFkMDg1NmFiNzNhZmYxNmUyY2FjNTJiOGM5NQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZp
b3ItaWZyYW1lLmh0bWwKQEAgLTAsMCArMSw4NiBAQAorPCFkb2N0eXBlIGh0bWw+CisKKzxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL292ZXJzY3JvbGwtYmVoYXZpb3Itc3VwcG9ydC5qcyI+PC9z
Y3JpcHQ+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9j
c3Mtb3ZlcnNjcm9sbC1iZWhhdmlvciI+Cis8c3R5bGU+CisgICAgLnNjcm9sbGluZyB7CisgICAg
ICAgIG92ZXJmbG93OiBzY3JvbGw7CisgICAgfQorICAgIC5zY3JvbGxDb250ZW50IHsKKyAgICAg
ICAgd2lkdGg6IDMwMHB4OworICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICBiYWNrZ3Jv
dW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZWQsIGJsdWUpOworICAgIH0KKyAgICAjcm9v
dCB7CisgICAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgICAgaGVpZ2h0OiAyMDBweDsKKyAgICB9
CisgICAgI3Njcm9sbGVyIHsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBoZWlnaHQ6
IDEwMHB4OworICAgICAgICBvdmVyc2Nyb2xsLWJlaGF2aW9yLXk6IGF1dG87CisgICAgfQorPC9z
dHlsZT4KKzxkaXYgaWQ9J3Jvb3QnIGNsYXNzPSJzY3JvbGxpbmciPgorICAgIDxpZnJhbWUgaWQ9
J3Njcm9sbGVyJyBzcmNkb2M9IjxodG1sPjxkaXYgc3R5bGU9J3dpZHRoOiAzMDBweDsgaGVpZ2h0
OiAzMDBweDsnPjwvZGl2PjwvaHRtbD4KKyAgICAgICAgIj48L2lmcmFtZT4KKyAgICA8ZGl2IGNs
YXNzPSJzY3JvbGxDb250ZW50Ij48L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0PgorICAgIGNvbnN0
IHJvb3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncm9vdCcpOworICAgIGNvbnN0IHNjcm9s
bGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Njcm9sbGVyJyk7CisgICAgdmFyIG92ZXJz
Y3JvbGxEYXRhcyA9IFtbImF1dG8iLCAiYXV0byIsIHRydWUsIHRydWVdLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFsiY29udGFpbiIsICJhdXRvIiwgZmFsc2UsIHRydWVdLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFsibm9uZSIsICJhdXRvIiwgZmFsc2UsIHRydWVdLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFsiYXV0byIsICJjb250YWluIiwgdHJ1ZSwgZmFsc2Vd
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiY29udGFpbiIsICJjb250YWluIiwgZmFs
c2UsIGZhbHNlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIm5vbmUiLCAiY29udGFp
biIsIGZhbHNlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJhdXRvIiwg
Im5vbmUiLCB0cnVlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJjb250
YWluIiwgIm5vbmUiLCBmYWxzZSwgZmFsc2VdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFsibm9uZSIsICJub25lIiwgZmFsc2UsIGZhbHNlXV07CisgICAgZnVuY3Rpb24gcmVzZXRUZXN0
KCkgeworICAgICAgICAvLyBUcnkgdmFyaW91cyBtZXRob2RzIHRvIGVuc3VyZSB0aGUgZWxlbWVu
dCBwb3NpdGlvbiBpcyByZXNldCBpbW1lZGlhdGVseS4KKyAgICAgICAgc2Nyb2xsZXIuY29udGVu
dFdpbmRvdy5zY3JvbGxYID0gMzAwOworICAgICAgICBzY3JvbGxlci5jb250ZW50V2luZG93LnNj
cm9sbFkgPSAzMDA7CisgICAgICAgIHNjcm9sbGVyLmNvbnRlbnRXaW5kb3cuc2Nyb2xsVG8oMzAw
LCAzMDApOworICAgICAgICByb290LnNjcm9sbExlZnQgPSAwOworICAgICAgICByb290LnNjcm9s
bFRvcCA9IDA7CisgICAgICAgIHJvb3Quc2Nyb2xsVG8oMCwgMCk7CisgICAgfQorCisgICAgZnVu
Y3Rpb24gb3ZlcnNjcm9sbEJlaGF2aW9yVGVzdCgpIHsKKyAgICAgICAgb3ZlcnNjcm9sbERhdGFz
LmZvckVhY2goKFtvdmVyc2Nyb2xsWCwgb3ZlcnNjcm9sbFksIHByb3BhZ2F0ZVgsIHByb3BhZ2F0
ZVldKSA9PiB7CisgICAgICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgICAgICAgICAg
ICAgIHJlc2V0VGVzdCgpOworICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSBzY3JvbGxlci5j
b250ZW50V2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJodG1sIilbMF07Cisg
ICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclggPSBvdmVyc2Ny
b2xsWDsKKyAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWSA9
IG92ZXJzY3JvbGxZOworICAgICAgICAgICAgICAgIHZhciB4ID0gc2Nyb2xsZXIuY2xpZW50V2lk
dGggLyAyOworICAgICAgICAgICAgICAgIHZhciB5ID0gc2Nyb2xsZXIuY2xpZW50SGVpZ2h0IC8g
MjsKKyAgICAgICAgICAgICAgICB2YXIgZGVsdGEgPSBnZXREZWx0YXMoInJpZ2h0Iik7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIG1vdXNlV2hlZWxTY3JvbGxBbmRXYWl0KHgsIHksIGRlbHRhLlgs
IGRlbHRhLlksIGRlbHRhLlgsIGRlbHRhLlkpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAg
ICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsTGVmdCA+IDAsIHByb3BhZ2F0ZVgsICdDb250
aW51ZSB1cCB0aGUgaG9yaXpvbnRhbCBzY3JvbGwgY2hhaW5pbmcnKTsKKyAgICAgICAgICAgICAg
ICB9KTsKKyAgICAgICAgICAgIH0sICdJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRo
IG92ZXJzY3JvbGwtYmVoYXZpb3I6ICcgKyBvdmVyc2Nyb2xsWCArICcgJyArIG92ZXJzY3JvbGxZ
ICsgJy4nKTsKKworICAgICAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAg
ICAgICByZXNldFRlc3QoKTsKKyAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gc2Nyb2xsZXIu
Y29udGVudFdpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaHRtbCIpWzBdOwor
ICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JYID0gb3ZlcnNj
cm9sbFg7CisgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclkg
PSBvdmVyc2Nyb2xsWTsKKworICAgICAgICAgICAgICAgIHZhciB4ID0gc2Nyb2xsZXIuY2xpZW50
V2lkdGggLyAyOworICAgICAgICAgICAgICAgIHZhciB5ID0gc2Nyb2xsZXIuY2xpZW50SGVpZ2h0
IC8gMjsKKyAgICAgICAgICAgICAgICB2YXIgZGVsdGEgPSBnZXREZWx0YXMoImRvd24iKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gbW91c2VXaGVlbFNjcm9sbEFuZFdhaXQoeCwgeSwgZGVsdGEu
WCwgZGVsdGEuWSwgZGVsdGEuWCwgZGVsdGEuWSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAg
ICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxUb3AgPiAwLCBwcm9wYWdhdGVZLCAnQ29u
dGludWUgdXAgdGhlIHZlcnRpY2FsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAgICAgICAgICAg
IH0pOworICAgICAgICAgICAgfSwgJ0lmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92
ZXJzY3JvbGwtYmVoYXZpb3I6ICcgKyBvdmVyc2Nyb2xsWCArICcgJyArIG92ZXJzY3JvbGxZICsg
Jy4nKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgc2Nyb2xsZXIuYWRkRXZlbnRMaXN0ZW5l
cigibG9hZCIsIG92ZXJzY3JvbGxCZWhhdmlvclRlc3QpOworPC9zY3JpcHQ+ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcv
c3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Ny
b2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5mMzk1YjY0ODhkMDg3MGI5NTYxYzAyODY3OWQ3ZTE1YTQ3ZmNlNmU5Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1i
ZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBA
CisKK1BBU1MgVW5zY3JvbGxhYmxlIGVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRo
IG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuCitQQVNTIFVuc2Nyb2xsYWJsZSBlbGVtZW50IHZl
cnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4KKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9s
bC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9z
Y3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxl
bWVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMxZTU3MzhhNWQ3YTc5NjljYWU2ZWNhY2JiM2Y4ZTljMmIy
MDczZWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5j
LXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWwKQEAg
LTAsMCArMSw2NyBAQAorPCFkb2N0eXBlIGh0bWw+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL292ZXJzY3JvbGwtYmVoYXZpb3Itc3VwcG9ydC5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9
ImhlbHAiIGhyZWY9Imh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3Mtb3ZlcnNjcm9sbC1iZWhh
dmlvciI+Cis8c3R5bGU+CisgICAgLnNjcm9sbGluZyB7CisgICAgICAgIG92ZXJmbG93OiBzY3Jv
bGw7CisgICAgfQorICAgIC5zY3JvbGxDb250ZW50IHsKKyAgICAgICAgd2lkdGg6IDMwMHB4Owor
ICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgIH0KKyAgICAjcm9vdCB7CisgICAgICAgIHdpZHRo
OiAyMDBweDsKKyAgICAgICAgaGVpZ2h0OiAyMDBweDsKKyAgICB9CisgICAgI3Njcm9sbGVyIHsK
KyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgICBv
dmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lOworICAgICAgICBvdmVyZmxvdzogdmlzaWJsZTsKKyAg
ICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmVkLCBibHVlKTsKKyAg
ICB9Cis8L3N0eWxlPgorPGRpdiBpZD0icm9vdCIgY2xhc3M9InNjcm9sbGluZyI+CisgICAgPGRp
diBpZD0ic2Nyb2xsZXIiPgorICAgICAgICA8ZGl2IGNsYXNzPSJzY3JvbGxDb250ZW50Ij48L2Rp
dj4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJzY3JvbGxDb250ZW50Ij48L2Rpdj4KKzwv
ZGl2PgorCis8c2NyaXB0PgorY29uc3Qgcm9vdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdy
b290Jyk7Citjb25zdCBzY3JvbGxlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY3JvbGxl
cicpOworCitmdW5jdGlvbiByZXNldFRlc3QoKSB7CisgICAgcm9vdC5zY3JvbGxMZWZ0ID0gMDsK
KyAgICByb290LnNjcm9sbFRvcCA9IDA7CisgICAgcm9vdC5zY3JvbGxUbygwLCAwKTsKK30KKwor
ZnVuY3Rpb24gc3RhcnRUZXN0KCkgeworICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAg
ICAgICAgICAgcmVzZXRUZXN0KCk7CisgICAgICAgICAgICB2YXIgeCA9IHNjcm9sbGVyLmNsaWVu
dFdpZHRoIC8gMjsKKyAgICAgICAgICAgIHZhciB5ID0gc2Nyb2xsZXIuY2xpZW50SGVpZ2h0IC8g
MjsKKyAgICAgICAgICAgIHZhciBkZWx0YSA9IGdldERlbHRhcygicmlnaHQiKTsKKyAgICAgICAg
ICAgIHJldHVybiBtb3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCh4LCB5LCBkZWx0YS5YLCBkZWx0YS5Z
LCBkZWx0YS5YLCBkZWx0YS5ZKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRf
ZXF1YWxzKHJvb3Quc2Nyb2xsTGVmdCA+IDAsIHRydWUsICdDb250aW51ZSB1cCB0aGUgaG9yaXpv
bnRhbCBzY3JvbGwgY2hhaW5pbmcnKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9LCAnVW5z
Y3JvbGxhYmxlIGVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwt
YmVoYXZpb3I6IG5vbmUuJyk7CisKKyAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAg
ICAgICAgIHJlc2V0VGVzdCgpOworICAgICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRX
aWR0aCAvIDI7CisgICAgICAgICAgICB2YXIgeSA9IHNjcm9sbGVyLmNsaWVudEhlaWdodCAvIDI7
CisgICAgICAgICAgICB2YXIgZGVsdGEgPSBnZXREZWx0YXMoImRvd24iKTsKKyAgICAgICAgICAg
IHJldHVybiBtb3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCh4LCB5LCBkZWx0YS5YLCBkZWx0YS5ZLCBk
ZWx0YS5YLCBkZWx0YS5ZKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1
YWxzKHJvb3Quc2Nyb2xsVG9wID4gMCwgdHJ1ZSwgJ0NvbnRpbnVlIHVwIHRoZSB2ZXJ0aWNhbCBz
Y3JvbGwgY2hhaW5pbmcnKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9LCAnVW5zY3JvbGxh
YmxlIGVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9y
OiBub25lLicpOworfQorCithZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgc3RhcnRUZXN0KTsKKzwv
c2NyaXB0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3Jv
bGxhYmxlLWlmcmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9z
eW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjdmYTU5Y2NiYTc5YWVmZjMzZGE3MGU5M2Q0ODhhMDdlZWM5YzU2
OTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNj
cm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsNSBAQAorCisKK1BBU1MgVW5zY3JvbGxhYmxlIGlmcmFtZSBob3Jpem9udGFs
IHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4KK1BBU1MgVW5zY3Jv
bGxhYmxlIGlmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZp
b3I6IG5vbmUuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMt
c2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11
bnNjcm9sbGFibGUtaWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTI0MjVhZmM2MzdkZjUxZTQ0MTU0
MjZhYjQ2N2M2MTRlMzhlZjYxNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
c2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlm
cmFtZS5odG1sCkBAIC0wLDAgKzEsNjYgQEAKKzwhZG9jdHlwZSBodG1sPgorCis8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9InJlc291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXN1cHBvcnQuanMiPjwvc2NyaXB0
PgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLW92
ZXJzY3JvbGwtYmVoYXZpb3IiPgorPHN0eWxlPgorICAgIC5zY3JvbGxpbmcgeworICAgICAgICBv
dmVyZmxvdzogc2Nyb2xsOworICAgIH0KKyAgICAuc2Nyb2xsQ29udGVudCB7CisgICAgICAgIHdp
ZHRoOiAzMDBweDsKKyAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICB9CisgICAgI3Jvb3Qgewor
ICAgICAgICB3aWR0aDogMjAwcHg7CisgICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgfQorICAg
ICNzY3JvbGxlciB7CisgICAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgICAgaGVpZ2h0OiAyMDBw
eDsKKyAgICAgICAgb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZTsKKyAgICAgICAgb3ZlcmZsb3c6
IHZpc2libGU7CisgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJl
ZCwgYmx1ZSk7CisgICAgfQorPC9zdHlsZT4KKzxkaXYgaWQ9J3Jvb3QnIGNsYXNzPSJzY3JvbGxp
bmciPgorICAgIDxpZnJhbWUgaWQ9J3Njcm9sbGVyJyBzcmNkb2M9IjxodG1sIHN0eWxlPSdvdmVy
c2Nyb2xsLWJlaGF2aW9yOiBub25lOyc+PGRpdiBzdHlsZT0nd2lkdGg6IDEwMHB4OyBoZWlnaHQ6
IDEwMHB4Oyc+PC9kaXY+PC9odG1sPgorICAgICAgICAiPjwvaWZyYW1lPgorICAgIDxkaXYgY2xh
c3M9InNjcm9sbENvbnRlbnQiPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+Citjb25zdCByb290
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jvb3QnKTsKK2NvbnN0IHNjcm9sbGVyID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Njcm9sbGVyJyk7CisKK2Z1bmN0aW9uIHJlc2V0VGVzdCgp
IHsKKyAgICByb290LnNjcm9sbExlZnQgPSAwOworICAgIHJvb3Quc2Nyb2xsVG9wID0gMDsKKyAg
ICByb290LnNjcm9sbFRvKDAsIDApOworfQorCitmdW5jdGlvbiBzdGFydFRlc3QoKSB7CisgICAg
ICAgIHByb21pc2VfdGVzdCgoKSA9PiB7CisgICAgICAgICAgICByZXNldFRlc3QoKTsKKyAgICAg
ICAgICAgIHZhciB4ID0gc2Nyb2xsZXIuY2xpZW50V2lkdGggLyAyOworICAgICAgICAgICAgdmFy
IHkgPSBzY3JvbGxlci5jbGllbnRIZWlnaHQgLyAyOworICAgICAgICAgICAgdmFyIGRlbHRhID0g
Z2V0RGVsdGFzKCJyaWdodCIpOworICAgICAgICAgICAgcmV0dXJuIG1vdXNlV2hlZWxTY3JvbGxB
bmRXYWl0KHgsIHksIGRlbHRhLlgsIGRlbHRhLlksIGRlbHRhLlgsIGRlbHRhLlkpLnRoZW4oKCkg
PT4geworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxMZWZ0ID4gMCwg
dHJ1ZSwgJ0NvbnRpbnVlIHVwIHRoZSBob3Jpem9udGFsIHNjcm9sbCBjaGFpbmluZycpOworICAg
ICAgICAgICAgfSk7CisgICAgICAgIH0sICdVbnNjcm9sbGFibGUgaWZyYW1lIGhvcml6b250YWwg
c2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLicpOworCisgICAgICAg
IHByb21pc2VfdGVzdCgoKSA9PiB7CisgICAgICAgICAgICByZXNldFRlc3QoKTsKKyAgICAgICAg
ICAgIHZhciB4ID0gc2Nyb2xsZXIuY2xpZW50V2lkdGggLyAyOworICAgICAgICAgICAgdmFyIHkg
PSBzY3JvbGxlci5jbGllbnRIZWlnaHQgLyAyOworICAgICAgICAgICAgdmFyIGRlbHRhID0gZ2V0
RGVsdGFzKCJkb3duIik7CisgICAgICAgICAgICByZXR1cm4gbW91c2VXaGVlbFNjcm9sbEFuZFdh
aXQoeCwgeSwgZGVsdGEuWCwgZGVsdGEuWSwgZGVsdGEuWCwgZGVsdGEuWSkudGhlbigoKSA9PiB7
CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbFRvcCA+IDAsIHRydWUs
ICdDb250aW51ZSB1cCB0aGUgdmVydGljYWwgc2Nyb2xsIGNoYWluaW5nJyk7CisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgfSwgJ1Vuc2Nyb2xsYWJsZSBpZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRl
c3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLicpOworfQorCithZGRFdmVudExpc3Rl
bmVyKCJsb2FkIiwgc3RhcnRUZXN0KTsKKzwvc2NyaXB0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRp
b25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggZTUz
ZDM0ZjVjY2EyMWM1NWZjY2RkMDVkMDFjNjkzOWQyOGMxNTRmMi4uMzQ5NmZiNDU0ZDdiNWRhMjU4
MTMwYmE5YmRhMDFlNmFkZjYzYzYwMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
aW9zL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RF
eHBlY3RhdGlvbnMKQEAgLTgxMSw2ICs4MTEsMTIgQEAgc3ZnL3RleHQvc2VsZWN0aW9uLWRvdWJs
ZWNsaWNrLnN2ZyBbIFNraXAgXQogc3ZnL3RleHQvc2VsZWN0aW9uLXRyaXBsZWNsaWNrLnN2ZyBb
IFNraXAgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXNoYWRvdy1w
YXJ0cy9pbnZhbGlkYXRpb24tcGFydC1wc2V1ZG8uaHRtbCBbIFNraXAgXQogCisjIE92ZXJzY3Jv
bGwtYmVoYXZpb3IgaXMgbm90IHN1cHBvcnRlZCBvbiBpT1MgeWV0OiBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNzg4CitmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9s
bC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQuaHRtbCBbIFNraXAgXQorZmFzdC9zY3JvbGxp
bmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUuaHRtbCBbIFNraXAgXQor
ZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFi
bGUtZWxlbWVudC5odG1sIFsgU2tpcCBdCitmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVy
c2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUuaHRtbCBbIFNraXAgXQorCiAjIElP
UyBkb2VzIG5vdCBpbXBsZW1lbnQgc2V0QXV0b21hdGljTGlua0RldGVjdGlvbkVuYWJsZWQKIGVk
aXRpbmcvaW5zZXJ0aW5nL3R5cGluZy1zcGFjZS10by10cmlnZ2VyLXNtYXJ0LWxpbmsuaHRtbCBb
IFNraXAgXQogZWRpdGluZy9pbnNlcnRpbmcvc21hcnQtbGluay13aGVuLWNhcmV0LWlzLW1vdmVk
LWJlZm9yZS1VUkwuaHRtbCBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdr
MS9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDY3YThlODMxNjJkYjRjYmQxNGFjYjZlNDIzMTI1YzI5
ZWI1MDA2MjkuLjA4ZWNlYzQ5NTRiY2I5NWE5YWM3OTQ4YjIzYmUwMjcxMGNkMDIyZWMgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucworKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTUwNCw2
ICs1MDQsMTAgQEAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXNjcm9s
bC1zbmFwL3Njcm9sbC10YXJnZXQtcGFkZGluZy0wMDEuaHQKIGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy1zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1zdG9wLWNoYW5nZS5o
dG1sIFsgRmFpbHVyZSBdCiBjc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1wYWRkaW5nLW1haW5mcmFt
ZS1wYWdpbmcuaHRtbCBbIEZhaWx1cmUgXQogCisjIExhY2sgb2Ygd2F5cyB0byBjb250cm9sIHRo
ZSBjcm9zcy1mcmFtZSBzY3JvbGwgY2hhaW5pbmcgaW4gV0sxLgorZmFzdC9zY3JvbGxpbmcvc3lu
Yy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUuaHRtbCBbIFNraXAgXQorZmFzdC9z
Y3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZy
YW1lLmh0bWwgWyBTa2lwIF0KKwogIyMjIEVORCBPRiAoMikgRmFpbHVyZXMgd2l0aG91dCBidWcg
cmVwb3J0cwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGVmNzViZDExZjYyZDE0
YTU2NjM0MGVlMjNjMWY5YTkzMGNjNjM2NDMuLjhkYjRlZWIzMWY1MzE5ZDgyYzE1NTY1YTViMTBh
MjVkYmUxMzM1MWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhw
ZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25z
CkBAIC02MzIsNiArNjMyLDEyIEBAIGZhc3QvZXZlbnRzL3doZWVsL3BsYXRmb3JtLXdoZWVsZXZl
bnQtcGFnaW5nLXktaW4tc2Nyb2xsaW5nLXBhZ2UuaHRtbCBbIFNraXAgXQogcG9pbnRlci1sb2Nr
LyBbIFNraXAgXQogaHR0cC90ZXN0cy9wb2ludGVyLWxvY2svIFsgU2tpcCBdCiAKKyMgT3ZlcnNj
cm9sbC1iZWhhdmlvciBpcyBub3Qgc3VwcG9ydGVkIG9uIFdpbmRvd3MKK2Zhc3Qvc2Nyb2xsaW5n
L3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC5odG1sIFsgU2tpcCBdCitm
YXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS5odG1s
IFsgU2tpcCBdCitmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9y
LXVuc2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWwgWyBTa2lwIF0KK2Zhc3Qvc2Nyb2xsaW5nL3N5bmMt
c2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sIFsgU2tp
cCBdCisKICMgRGF0YWxpc3QgaXMgdW5zdXBwb3J0ZWQgb24gV2luZG93cwogYWNjZXNzaWJpbGl0
eS9kYXRhbGlzdC5odG1sIFsgV29udEZpeCBdCiBmYXN0L2Zvcm1zL2RhdGFsaXN0IFsgV29udEZp
eCBdCg==
</data>
<flag name="commit-queue"
          id="471195"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445897</attachid>
            <date>2021-12-03 14:15:43 -0800</date>
            <delta_ts>2021-12-08 17:25:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222968-20211203141542.patch</filename>
            <type>text/plain</type>
            <size>38769</size>
            <attacher name="Nikos Mouchtaris">nmouchtaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MzUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGJiNmQyZjJmYmNkN2I3
ODU1MzIxY2U1YjgwMWQ1YzJmYWNiMzhmNC4uMmFkOTAxNmM5ZmExMjhiYTlkODY4MWU2M2NjNGI5
MjcyZWY1YjgzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDIxLTEyLTAyICBOaWtv
bGFvcyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxl
bWVudCBDU1Mgb3ZlcnNjcm9sbC1iZWhhdmlvciBmb3Igc3luY2hyb25vdXMgc2Nyb2xsCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI5NjgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTcGxpdCB1cCBwYXRj
aCBieSBDYXRoaWUgQ2hlbiBhbmQgRnJlZGVyaWMgV2FuZy4gQWRkIGZ1bmN0aW9uIGZvciBibG9j
a2luZyBzY3JvbGwgY2hhaW5pbmcKKyAgICAgICAgYW5kIGZpbHRlcmluZyBzY3JvbGwgZGVsdGEg
ZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZXMgb2Ygb3ZlcnNjcm9sbCBiZWhhdmlvciBmb3IgYSBzY3Jv
bGxhYmxlCisgICAgICAgIGFyZWEuIFRoaXMgcGF0Y2ggaXMgZm9yIHN5bmNocm9ub3VzIHNjcm9s
bGluZyBvbmx5LgorCisgICAgICAgIFRlc3RzOiBmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1v
dmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9zY3Jv
bGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUuaHRtbAorICAgICAg
ICAgICAgICAgZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11
bnNjcm9sbGFibGUtZWxlbWVudC5odG1sCisgICAgICAgICAgICAgICBmYXN0L3Njcm9sbGluZy9z
eW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUuaHRtbAor
CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hv
dWxkQmxvY2tTY3JvbGxDaGFpbmluZ1dpdGhTY3JvbGxhYmxlQXJlYSk6CisgICAgICAgIChXZWJD
b3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnRJbnRlcm5hbCk6CisgICAgICAgIChX
ZWJDb3JlOjpkaWRTY3JvbGxJblNjcm9sbGFibGVBcmVhKToKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudEluQXBwcm9wcmlhdGVFbmNsb3NpbmdCb3gpOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpzY3JvbGxhYmxlQXJlYUNhbkhhbmRsZUV2
ZW50KToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5oOgorICAgICAgICAqIHBhZ2UvRnJh
bWVWaWV3Lmg6CisgICAgICAgICogcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6ZmluZEVuY2xvc2luZ1Njcm9sbGFibGVDb250YWluZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmg6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsaW5n
RWZmZWN0c0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0
b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck1hYzo6c2hvdWxkRm9y
d2FyZFdoZWVsRXZlbnRzVG9QYXJlbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
QW5pbWF0b3JNYWM6OmFsbG93c1ZlcnRpY2FsU3RyZXRjaGluZyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxBbmltYXRvck1hYzo6YWxsb3dzSG9yaXpvbnRhbFN0cmV0Y2hpbmcgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjp3aGVlbERl
bHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxh
eWVyU2Nyb2xsYWJsZUFyZWEuaDoKKwogMjAyMS0xMS0zMCAgU2ltb24gRnJhc2VyICA8c2ltb24u
ZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBQYXNzIHRoZSB0aW1lc3RhbXAgZm9yIHNjcm9s
bGluZyB0aHJlYWQgYW5pbWF0aW9ucyB0aHJvdWdoIGFsbCB0aGUgc2VydmljZVNjcm9sbEFuaW1h
dGlvbigpIGNhbGxzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggZWMzZTQy
MGU3OWJiMWI1ZGNmNzAxMzU1ZDFhY2U2OWJmODg2NDE1MS4uOGRkYzk1MDI2NjdkODgwMmVlYmM4
ZWI1M2JkMzVmZjNmN2FiOGE1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApA
QCAtMjkxOSw2ICsyOTE5LDE5IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpjb21wbGV0ZVdpZGdldFdo
ZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCwgY29uCiAgICAgcmV0dXJu
IHBsYXRmb3JtQ29tcGxldGVQbGF0Zm9ybVdpZGdldFdoZWVsRXZlbnQoZXZlbnQsICp3aWRnZXQu
Z2V0KCksIHNjcm9sbGFibGVBcmVhKTsKIH0KIAorc3RhdGljIGJvb2wgc2hvdWxkQmxvY2tTY3Jv
bGxDaGFpbmluZ1dpdGhTY3JvbGxhYmxlQXJlYShjb25zdCBTY3JvbGxhYmxlQXJlYSogc2Nyb2xs
YWJsZUFyZWEsIEZsb2F0U2l6ZSYgYmlhc2VkRGVsdGEpCit7CisgICAgaWYgKHNjcm9sbGFibGVB
cmVhICYmIChzY3JvbGxhYmxlQXJlYS0+aG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpICE9
IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0byB8fCBzY3JvbGxhYmxlQXJlYS0+dmVydGljYWxPdmVy
c2Nyb2xsQmVoYXZpb3IoKSAhPSBPdmVyc2Nyb2xsQmVoYXZpb3I6OkF1dG8pKSB7CisgICAgICAg
IGlmIChzY3JvbGxhYmxlQXJlYS0+aG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpICE9IE92
ZXJzY3JvbGxCZWhhdmlvcjo6QXV0byAmJiAhYmlhc2VkRGVsdGEuaGVpZ2h0KCkgJiYgYmlhc2Vk
RGVsdGEud2lkdGgoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBpZiAoKHNj
cm9sbGFibGVBcmVhLT5ob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgIT0gT3ZlcnNjcm9s
bEJlaGF2aW9yOjpBdXRvICYmIHNjcm9sbGFibGVBcmVhLT52ZXJ0aWNhbE92ZXJzY3JvbGxCZWhh
dmlvcigpICE9IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0bykgfHwgKHNjcm9sbGFibGVBcmVhLT5o
b3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkhPSBPdmVyc2Nyb2xsQmVoYXZpb3I6OkF1dG8g
JiYgIWJpYXNlZERlbHRhLmhlaWdodCgpKSB8fCAoc2Nyb2xsYWJsZUFyZWEtPnZlcnRpY2FsT3Zl
cnNjcm9sbEJlaGF2aW9yKCkhPSBPdmVyc2Nyb2xsQmVoYXZpb3I6OkF1dG8gJiYgIWJpYXNlZERl
bHRhLndpZHRoKCkpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGJpYXNlZERl
bHRhLnNldFdpZHRoKHNjcm9sbGFibGVBcmVhLT5ob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9y
KCkhPSBPdmVyc2Nyb2xsQmVoYXZpb3I6OkF1dG8gPyAwIDogYmlhc2VkRGVsdGEud2lkdGgoKSk7
CisgICAgICAgIGJpYXNlZERlbHRhLnNldEhlaWdodChzY3JvbGxhYmxlQXJlYS0+dmVydGljYWxP
dmVyc2Nyb2xsQmVoYXZpb3IoKSE9IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0byA/IDAgOiBiaWFz
ZWREZWx0YS5oZWlnaHQoKSk7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwogYm9vbCBF
dmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3
aGVlbEV2ZW50LCBPcHRpb25TZXQ8V2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwcz4gcHJvY2Vzc2lu
Z1N0ZXBzKQogewogICAgIFJlZiBwcm90ZWN0ZWRGcmFtZSA9IG1fZnJhbWU7CkBAIC0zMDI5LDgg
KzMwNDIsMTMgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnRJbnRlcm5hbChj
b25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50LCBPcHQKIAogICAgIGlmIChhbGxvd1Njcm9s
bGluZykgewogICAgICAgICAvLyBGSVhNRTogcHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxpbmco
KSBpcyBvbmx5IGNhbGxlZCBmb3IgRnJhbWVWaWV3IHNjcm9sbGluZywgbm90IG92ZXJmbG93IHNj
cm9sbGluZywgd2hpY2ggaXMgY29uZnVzaW5nLgotICAgICAgICBoYW5kbGVkRXZlbnQgPSBwcm9j
ZXNzV2hlZWxFdmVudEZvclNjcm9sbGluZyhldmVudCwgc2Nyb2xsYWJsZUFyZWEsIGhhbmRsaW5n
KTsKLSAgICAgICAgcHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxTbmFwKGV2ZW50LCBzY3JvbGxh
YmxlQXJlYSk7CisgICAgICAgIFBsYXRmb3JtV2hlZWxFdmVudCBhZGp1c3RlZFdoZWVsRXZlbnQg
PSBQbGF0Zm9ybVdoZWVsRXZlbnQoZXZlbnQpOworICAgICAgICBhdXRvIGZpbHRlcmVkRGVsdGEg
PSBhZGp1c3RlZFdoZWVsRXZlbnQuZGVsdGEoKTsKKyAgICAgICAgaWYgKCFzaG91bGRCbG9ja1Nj
cm9sbENoYWluaW5nV2l0aFNjcm9sbGFibGVBcmVhKHNjcm9sbGFibGVBcmVhLmdldCgpLCBmaWx0
ZXJlZERlbHRhKSkgeworICAgICAgICAgICAgYWRqdXN0ZWRXaGVlbEV2ZW50ID0gYWRqdXN0ZWRX
aGVlbEV2ZW50LmNvcHlXaXRoRGVsdGFBbmRWZWxvY2l0eShmaWx0ZXJlZERlbHRhLCBhZGp1c3Rl
ZFdoZWVsRXZlbnQuc2Nyb2xsaW5nVmVsb2NpdHkoKSk7CisgICAgICAgICAgICBoYW5kbGVkRXZl
bnQgPSBwcm9jZXNzV2hlZWxFdmVudEZvclNjcm9sbGluZyhhZGp1c3RlZFdoZWVsRXZlbnQsIHNj
cm9sbGFibGVBcmVhLCBoYW5kbGluZyk7CisgICAgICAgICAgICBwcm9jZXNzV2hlZWxFdmVudEZv
clNjcm9sbFNuYXAoYWRqdXN0ZWRXaGVlbEV2ZW50LCBzY3JvbGxhYmxlQXJlYSk7CisgICAgICAg
IH0KICAgICB9CiAKICAgICByZXR1cm4gaGFuZGxlZEV2ZW50OwpAQCAtMzA0OSwxOCArMzA2Nywy
MCBAQCBzdGF0aWMgdm9pZCBoYW5kbGVXaGVlbEV2ZW50UGhhc2VJblNjcm9sbGFibGVBcmVhKFNj
cm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYQogCiBzdGF0aWMgYm9vbCBkaWRTY3JvbGxJblNj
cm9sbGFibGVBcmVhKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSwgY29uc3QgV2hlZWxF
dmVudCYgd2hlZWxFdmVudCkKIHsKKyAgICBGbG9hdFNpemUgZmlsdGVyZWREZWx0YSh3aGVlbEV2
ZW50LmRlbHRhWCgpLCB3aGVlbEV2ZW50LmRlbHRhWSgpKTsKKyAgICBzaG91bGRCbG9ja1Njcm9s
bENoYWluaW5nV2l0aFNjcm9sbGFibGVBcmVhKCZzY3JvbGxhYmxlQXJlYSwgZmlsdGVyZWREZWx0
YSk7CiAgICAgU2Nyb2xsR3JhbnVsYXJpdHkgc2Nyb2xsR3JhbnVsYXJpdHkgPSB3aGVlbEdyYW51
bGFyaXR5VG9TY3JvbGxHcmFudWxhcml0eSh3aGVlbEV2ZW50LmRlbHRhTW9kZSgpKTsKICAgICBi
b29sIGRpZEhhbmRsZVdoZWVsRXZlbnQgPSBmYWxzZTsKLSAgICBpZiAoZmxvYXQgYWJzb2x1dGVE
ZWx0YSA9IHN0ZDo6YWJzKHdoZWVsRXZlbnQuZGVsdGFYKCkpKQotICAgICAgICBkaWRIYW5kbGVX
aGVlbEV2ZW50IHw9IHNjcm9sbGFibGVBcmVhLnNjcm9sbCh3aGVlbEV2ZW50LmRlbHRhWCgpID4g
MCA/IFNjcm9sbFJpZ2h0IDogU2Nyb2xsTGVmdCwgc2Nyb2xsR3JhbnVsYXJpdHksIGFic29sdXRl
RGVsdGEpOworICAgIGlmIChmbG9hdCBhYnNvbHV0ZURlbHRhID0gc3RkOjphYnMoZmlsdGVyZWRE
ZWx0YS53aWR0aCgpKSkKKyAgICAgICAgZGlkSGFuZGxlV2hlZWxFdmVudCB8PSBzY3JvbGxhYmxl
QXJlYS5zY3JvbGwoZmlsdGVyZWREZWx0YS53aWR0aCgpID4gMCA/IFNjcm9sbFJpZ2h0IDogU2Ny
b2xsTGVmdCwgc2Nyb2xsR3JhbnVsYXJpdHksIGFic29sdXRlRGVsdGEpOwogCi0gICAgaWYgKGZs
b2F0IGFic29sdXRlRGVsdGEgPSBzdGQ6OmFicyh3aGVlbEV2ZW50LmRlbHRhWSgpKSkKLSAgICAg
ICAgZGlkSGFuZGxlV2hlZWxFdmVudCB8PSBzY3JvbGxhYmxlQXJlYS5zY3JvbGwod2hlZWxFdmVu
dC5kZWx0YVkoKSA+IDAgPyBTY3JvbGxEb3duIDogU2Nyb2xsVXAsIHNjcm9sbEdyYW51bGFyaXR5
LCBhYnNvbHV0ZURlbHRhKTsKKyAgICBpZiAoZmxvYXQgYWJzb2x1dGVEZWx0YSA9IHN0ZDo6YWJz
KGZpbHRlcmVkRGVsdGEuaGVpZ2h0KCkpKQorICAgICAgICBkaWRIYW5kbGVXaGVlbEV2ZW50IHw9
IHNjcm9sbGFibGVBcmVhLnNjcm9sbChmaWx0ZXJlZERlbHRhLmhlaWdodCgpID4gMCA/IFNjcm9s
bERvd24gOiBTY3JvbGxVcCwgc2Nyb2xsR3JhbnVsYXJpdHksIGFic29sdXRlRGVsdGEpOwogCiAg
ICAgcmV0dXJuIGRpZEhhbmRsZVdoZWVsRXZlbnQ7CiB9CiAKLWJvb2wgRXZlbnRIYW5kbGVyOjpo
YW5kbGVXaGVlbEV2ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2luZ0JveChOb2RlKiBzdGFydE5vZGUs
IGNvbnN0IFdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyZWRQ
bGF0Zm9ybURlbHRhLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlcmVkVmVsb2NpdHksIE9wdGlvblNl
dDxFdmVudEhhbmRsaW5nPiBldmVudEhhbmRsaW5nKQorYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRs
ZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94KE5vZGUqIHN0YXJ0Tm9kZSwgY29u
c3QgV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgRmxvYXRTaXplJiBmaWx0ZXJlZFBsYXRmb3JtRGVs
dGEsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyZWRWZWxvY2l0eSwgT3B0aW9uU2V0PEV2ZW50SGFu
ZGxpbmc+IGV2ZW50SGFuZGxpbmcpCiB7CiAgICAgYm9vbCBzaG91bGRIYW5kbGVFdmVudCA9IHdo
ZWVsRXZlbnQuZGVsdGFYKCkgfHwgd2hlZWxFdmVudC5kZWx0YVkoKTsKICNpZiBFTkFCTEUoV0hF
RUxfRVZFTlRfTEFUQ0hJTkcpCkBAIC0zMDgzLDggKzMxMDMsMTggQEAgYm9vbCBFdmVudEhhbmRs
ZXI6OmhhbmRsZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94KE5vZGUqIHN0YXJ0
Tm9kZSwgY28KICAgICAgICAgcmV0dXJuIGRpZFNjcm9sbEluU2Nyb2xsYWJsZUFyZWEoZG93bmNh
c3Q8UmVuZGVyTGlzdEJveD4oaW5pdGlhbEVuY2xvc2luZ0JveCksIHdoZWVsRXZlbnQpOwogCiAg
ICAgUmVuZGVyQm94KiBjdXJyZW50RW5jbG9zaW5nQm94ID0gJmluaXRpYWxFbmNsb3NpbmdCb3g7
CisjaWYgUExBVEZPUk0oTUFDKQorICAgIGF1dG8gYmlhc2VkRGVsdGEgPSBTY3JvbGxpbmdFZmZl
Y3RzQ29udHJvbGxlcjo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoRmxvYXRTaXpl
KHdoZWVsRXZlbnQuZGVsdGFYKCksIHdoZWVsRXZlbnQuZGVsdGFZKCkpKTsKKyNlbHNlCisgICAg
RmxvYXRTaXplIGJpYXNlZERlbHRhKHdoZWVsRXZlbnQuZGVsdGFYKCksIHdoZWVsRXZlbnQuZGVs
dGFZKCkpOworI2VuZGlmCiAgICAgd2hpbGUgKGN1cnJlbnRFbmNsb3NpbmdCb3gpIHsKICAgICAg
ICAgaWYgKGF1dG8qIGJveFNjcm9sbGFibGVBcmVhID0gY3VycmVudEVuY2xvc2luZ0JveC0+bGF5
ZXIoKSA/IGN1cnJlbnRFbmNsb3NpbmdCb3gtPmxheWVyKCktPnNjcm9sbGFibGVBcmVhKCkgOiBu
dWxscHRyKSB7CisgICAgICAgICAgICBpZiAoYm94U2Nyb2xsYWJsZUFyZWEgJiYgc2hvdWxkQmxv
Y2tTY3JvbGxDaGFpbmluZ1dpdGhTY3JvbGxhYmxlQXJlYShib3hTY3JvbGxhYmxlQXJlYSwgYmlh
c2VkRGVsdGEpKSB7CisgICAgICAgICAgICAgICAgaWYgKGJveFNjcm9sbGFibGVBcmVhLT5ob3Jp
em9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgIT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpBdXRvICYm
ICFmaWx0ZXJlZFBsYXRmb3JtRGVsdGEuaGVpZ2h0KCkpCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIGF1dG8gcGxhdGZvcm1FdmVudCA9IHdoZWVsRXZlbnQudW5kZXJseWluZ1Bs
YXRmb3JtRXZlbnQoKTsKICAgICAgICAgICAgIGJvb2wgc2Nyb2xsaW5nV2FzSGFuZGxlZDsKICAg
ICAgICAgICAgIGlmIChwbGF0Zm9ybUV2ZW50KSB7CkBAIC0zMTA3LDcgKzMxMzcsNyBAQCBib29s
IEV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudEluQXBwcm9wcmlhdGVFbmNsb3NpbmdCb3go
Tm9kZSogc3RhcnROb2RlLCBjbwogYm9vbCBFdmVudEhhbmRsZXI6OnNjcm9sbGFibGVBcmVhQ2Fu
SGFuZGxlRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBTY3JvbGxh
YmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEpCiB7CiAjaWYgUExBVEZPUk0oTUFDKQotICAgIGF1dG8g
Ymlhc2VkRGVsdGEgPSBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6d2hlZWxEZWx0YUJpYXNp
bmdUb3dhcmRzVmVydGljYWwod2hlZWxFdmVudCk7CisgICAgYXV0byBiaWFzZWREZWx0YSA9IFNj
cm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNh
bCh3aGVlbEV2ZW50LmRlbHRhKCkpOwogI2Vsc2UKICAgICBhdXRvIGJpYXNlZERlbHRhID0gd2hl
ZWxFdmVudC5kZWx0YSgpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAppbmRl
eCBlYWMxZDVmMzQwMDg2YzM2MzZiZmY2MTA5NjUxZGVjOWY0ZWIzMGZlLi43ODdkNTNkMTkzN2Nj
NTdhODFjOGUxYzE4ZWQzYWVhOTQzMGIxMTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50SGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVy
LmgKQEAgLTQ3Niw3ICs0NzYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcHJvY2Vzc1doZWVsRXZl
bnRGb3JTY3JvbGxTbmFwKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIGNvbnN0IFdlYWtQdHI8
U2Nyb2xsYWJsZUFyZWE+Jik7CiAgICAgYm9vbCBjb21wbGV0ZVdpZGdldFdoZWVsRXZlbnQoY29u
c3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgY29uc3QgV2Vha1B0cjxXaWRnZXQ+JiwgY29uc3QgV2Vh
a1B0cjxTY3JvbGxhYmxlQXJlYT4mKTsKIAotICAgIGJvb2wgaGFuZGxlV2hlZWxFdmVudEluQXBw
cm9wcmlhdGVFbmNsb3NpbmdCb3goTm9kZSogc3RhcnROb2RlLCBjb25zdCBXaGVlbEV2ZW50Jiwg
Y29uc3QgRmxvYXRTaXplJiBmaWx0ZXJlZFBsYXRmb3JtRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYg
ZmlsdGVyZWRWZWxvY2l0eSwgT3B0aW9uU2V0PEV2ZW50SGFuZGxpbmc+KTsKKyAgICBib29sIGhh
bmRsZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94KE5vZGUqIHN0YXJ0Tm9kZSwg
Y29uc3QgV2hlZWxFdmVudCYsIEZsb2F0U2l6ZSYgZmlsdGVyZWRQbGF0Zm9ybURlbHRhLCBjb25z
dCBGbG9hdFNpemUmIGZpbHRlcmVkVmVsb2NpdHksIE9wdGlvblNldDxFdmVudEhhbmRsaW5nPik7
CiAKICAgICBib29sIGhhbmRsZVdoZWVsRXZlbnRJblNjcm9sbGFibGVBcmVhKGNvbnN0IFBsYXRm
b3JtV2hlZWxFdmVudCYsIFNjcm9sbGFibGVBcmVhJiwgT3B0aW9uU2V0PEV2ZW50SGFuZGxpbmc+
KTsKICAgICBzdGQ6Om9wdGlvbmFsPFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlPiB1cGRhdGVXaGVl
bEdlc3R1cmVTdGF0ZShjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBPcHRpb25TZXQ8RXZlbnRI
YW5kbGluZz4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5k
bGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tCmlu
ZGV4IDFlY2QwY2M3OGVkNTU1NjRmMDMyYjMwYzljODNlYmY1NzRhZGU4MDAuLjYxMGQxYWQzMzAy
NWViM2UxNWM0NDYwMTdjY2I2YWU5OGVmN2Y3ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21h
Yy9FdmVudEhhbmRsZXJNYWMubW0KQEAgLTgxNSw2ICs4MTUsOCBAQCBzdGF0aWMgQ29udGFpbmVy
Tm9kZSogZmluZEVuY2xvc2luZ1Njcm9sbGFibGVDb250YWluZXIoQ29udGFpbmVyTm9kZSogbm9k
ZSwgY29ucwogICAgICAgICBhdXRvKiBzY3JvbGxhYmxlQXJlYSA9IHNjcm9sbGFibGVBcmVhRm9y
Qm94KCpib3gpOwogICAgICAgICBpZiAoIXNjcm9sbGFibGVBcmVhKQogICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgIGlmICgoc2Nyb2xsYWJsZUFyZWEtPmhvcml6b250YWxPdmVyc2Nyb2xs
QmVoYXZpb3IoKSAhPSBPdmVyc2Nyb2xsQmVoYXZpb3I6OkF1dG8gJiYgc2Nyb2xsYWJsZUFyZWEt
PnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgIT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpBdXRv
KSB8fCAoc2Nyb2xsYWJsZUFyZWEtPmhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSAhPSBP
dmVyc2Nyb2xsQmVoYXZpb3I6OkF1dG8gJiYgIXdoZWVsRXZlbnQuZGVsdGEoKS5oZWlnaHQoKSkg
fHwgKHNjcm9sbGFibGVBcmVhLT52ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpICE9IE92ZXJz
Y3JvbGxCZWhhdmlvcjo6QXV0byAmJiAhd2hlZWxFdmVudC5kZWx0YSgpLndpZHRoKCkpKQorICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAgICAgaWYgKHdoZWVsRXZlbnQucGhhc2Uo
KSA9PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZTo6TWF5QmVnaW4gfHwgd2hlZWxFdmVudC5waGFz
ZSgpID09IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlOjpDYW5jZWxsZWQpCiAgICAgICAgICAgICBy
ZXR1cm4gY2FuZGlkYXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bGluZ0VmZmVjdHNDb250cm9sbGVyLmgKaW5kZXggYzdhM2EyZjg1ZWEwZWQ1YTdjNmE5NGJlMWJm
MzU3MjhiMThjODhmMy4uMDY2NzkxZDBjZTQzYjZkZmM5Mzk2OTY1MDgxNDI0MjI4MmJmZTdmZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRy
b2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29u
dHJvbGxlci5oCkBAIC0xNzQsNyArMTc0LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNVc2VyU2Ny
b2xsSW5Qcm9ncmVzcygpIGNvbnN0OwogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIHN0YXRpYyBG
bG9hdFNpemUgd2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoY29uc3QgUGxhdGZvcm1X
aGVlbEV2ZW50Jik7CisgICAgc3RhdGljIEZsb2F0U2l6ZSB3aGVlbERlbHRhQmlhc2luZ1Rvd2Fy
ZHNWZXJ0aWNhbChjb25zdCBGbG9hdFNpemUmKTsKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBo
YW5kbGVkLgogICAgIGJvb2wgcHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxTbmFwKGNvbnN0IFBs
YXRmb3JtV2hlZWxFdmVudCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Nj
cm9sbEFuaW1hdG9yTWFjLm1tCmluZGV4IDUzYTQwNzUzZGI3NDdjNWFjNGIxZjdiMjFhOWFkNWMx
ZmY0NWE4MzYuLmZjYWE5ZjQxMmIxNGY2OGVjNjZjNDEwZDVkZTVhYTg1MGE0YmRlZTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0KQEAg
LTk0LDkgKzk0LDkgQEAgdm9pZCBTY3JvbGxBbmltYXRvck1hYzo6aGFuZGxlV2hlZWxFdmVudFBo
YXNlKFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlIHBoYXNlKQogYm9vbCBTY3JvbGxBbmltYXRvck1h
Yzo6c2hvdWxkRm9yd2FyZFdoZWVsRXZlbnRzVG9QYXJlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2
ZW50JiB3aGVlbEV2ZW50KSBjb25zdAogewogICAgIGlmIChzdGQ6OmFicyh3aGVlbEV2ZW50LmRl
bHRhWSgpKSA+PSBzdGQ6OmFicyh3aGVlbEV2ZW50LmRlbHRhWCgpKSkKLSAgICAgICAgcmV0dXJu
ICFhbGxvd3NWZXJ0aWNhbFN0cmV0Y2hpbmcod2hlZWxFdmVudCk7CisgICAgICAgIHJldHVybiBt
X3Njcm9sbGFibGVBcmVhLnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgPT0gT3ZlcnNjcm9s
bEJlaGF2aW9yOjpBdXRvICYmICFhbGxvd3NWZXJ0aWNhbFN0cmV0Y2hpbmcod2hlZWxFdmVudCk7
CiAKLSAgICByZXR1cm4gIWFsbG93c0hvcml6b250YWxTdHJldGNoaW5nKHdoZWVsRXZlbnQpOwor
ICAgIHJldHVybiBtX3Njcm9sbGFibGVBcmVhLmhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3Io
KSA9PSBPdmVyc2Nyb2xsQmVoYXZpb3I6OkF1dG8gJiYgIWFsbG93c0hvcml6b250YWxTdHJldGNo
aW5nKHdoZWVsRXZlbnQpOwogfQogICAgIAogYm9vbCBTY3JvbGxBbmltYXRvck1hYzo6aGFuZGxl
V2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpCkBAIC0xNDMs
NiArMTQzLDkgQEAgc3RhdGljIGJvb2wgZ2VzdHVyZVNob3VsZEJlZ2luU25hcChjb25zdCBQbGF0
Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIFNjcm9sbEUKIAogYm9vbCBTY3JvbGxBbmltYXRv
ck1hYzo6YWxsb3dzVmVydGljYWxTdHJldGNoaW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYg
d2hlZWxFdmVudCkgY29uc3QKIHsKKyAgICBpZiAobV9zY3JvbGxhYmxlQXJlYS52ZXJ0aWNhbE92
ZXJzY3JvbGxCZWhhdmlvcigpID09IE92ZXJzY3JvbGxCZWhhdmlvcjo6Tm9uZSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIAogICAgIHN3aXRjaCAobV9zY3JvbGxhYmxlQXJlYS52ZXJ0aWNh
bFNjcm9sbEVsYXN0aWNpdHkoKSkgewogICAgIGNhc2UgU2Nyb2xsRWxhc3RpY2l0eTo6QXV0b21h
dGljOiB7CiAgICAgICAgIFNjcm9sbGJhciogaFNjcm9sbGVyID0gbV9zY3JvbGxhYmxlQXJlYS5o
b3Jpem9udGFsU2Nyb2xsYmFyKCk7CkBAIC0xNjYsNiArMTY5LDkgQEAgYm9vbCBTY3JvbGxBbmlt
YXRvck1hYzo6YWxsb3dzVmVydGljYWxTdHJldGNoaW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVu
dCYgd2hlZWwKIAogYm9vbCBTY3JvbGxBbmltYXRvck1hYzo6YWxsb3dzSG9yaXpvbnRhbFN0cmV0
Y2hpbmcoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50KSBjb25zdAogeworICAg
IGlmIChtX3Njcm9sbGFibGVBcmVhLmhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSA9PSBP
dmVyc2Nyb2xsQmVoYXZpb3I6Ok5vbmUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKICAg
ICBzd2l0Y2ggKG1fc2Nyb2xsYWJsZUFyZWEuaG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkoKSkg
ewogICAgIGNhc2UgU2Nyb2xsRWxhc3RpY2l0eTo6QXV0b21hdGljOiB7CiAgICAgICAgIFNjcm9s
bGJhciogaFNjcm9sbGVyID0gbV9zY3JvbGxhYmxlQXJlYS5ob3Jpem9udGFsU2Nyb2xsYmFyKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsaW5nRWZmZWN0
c0NvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsaW5nRWZm
ZWN0c0NvbnRyb2xsZXIubW0KaW5kZXggODAwY2M1MTEwNzVhYWIwMjA4ZTg5NjczNWEzZTliZDFl
MzAyMjgxMS4uMGQxMjU2MGM0N2I2MzQ4ZTc3ZjYzNmFlYjQ0NjI1YjcxNzU1NDI3ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGluZ0VmZmVjdHNDb250cm9s
bGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxpbmdFZmZlY3Rz
Q29udHJvbGxlci5tbQpAQCAtMzM3LDkgKzMzNyw5IEBAIGJvb2wgU2Nyb2xsaW5nRWZmZWN0c0Nv
bnRyb2xsZXI6OmFwcGx5U2Nyb2xsRGVsdGFXaXRoU3RyZXRjaGluZyhjb25zdCBQbGF0Zm9ybVdo
CiAgICAgcmV0dXJuIGNhblN0YXJ0QW5pbWF0aW9uOwogfQogCi1GbG9hdFNpemUgU2Nyb2xsaW5n
RWZmZWN0c0NvbnRyb2xsZXI6OndoZWVsRGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRpY2FsKGNvbnN0
IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCkKK0Zsb2F0U2l6ZSBTY3JvbGxpbmdFZmZl
Y3RzQ29udHJvbGxlcjo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoY29uc3QgRmxv
YXRTaXplJiB3aGVlbERlbHRhKQogewotICAgIHJldHVybiBkZWx0YUFsaWduZWRUb0RvbWluYW50
QXhpcyh3aGVlbEV2ZW50LmRlbHRhKCkpOworICAgIHJldHVybiBkZWx0YUFsaWduZWRUb0RvbWlu
YW50QXhpcyh3aGVlbERlbHRhKTsKIH0KIAogdm9pZCBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxl
cjo6dXBkYXRlUnViYmVyQmFuZEFuaW1hdGluZ1N0YXRlKCkKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5YjA2M2Q0NjEwOGJl
ZWNiNzlhMjJkYzhlMWE4M2QzOWFjNzNlMjJiLi5iNjg4ZTQ2NzJjYTRkNmEzZGY2ZmMzNDFkOWY2
NWVmNGZmNmRjODE0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMTItMDIgIE5pa29sYW9z
IE1vdWNodGFyaXMgIDxubW91Y2h0YXJpc0BhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50
IENTUyBvdmVyc2Nyb2xsLWJlaGF2aW9yIGZvciBzeW5jaHJvbm91cyBzY3JvbGwKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjk2OAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcv
cmVzb3VyY2VzL292ZXJzY3JvbGwtYmVoYXZpb3Itc3VwcG9ydC5qczogQWRkZWQuCisgICAgICAg
IChnZXREZWx0YXMpOgorICAgICAgICAoYXN5bmMgbW91c2VXaGVlbFNjcm9sbEFuZFdhaXQpOgor
ICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3It
ZWxlbWVudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9s
bC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1l
bGVtZW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xs
LW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sOiBBZGRlZC4KKwog
MjAyMS0xMS0zMCAgUm9iZXJ0IEplbm5lciAgPEplbm5lckBhcHBsZS5jb20+CiAKICAgICAgICAg
UkVCQVNFTElORSBbIE1vbnRlcmV5IF1mYXN0L2Nzcy9jb250aW51YXRpb25DcmFzaC5odG1sIChs
YXlvdXQtdGVzdCkgaXMgYSBjb25zdGFudCB0ZXh0IGZhaWx1cmUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3Jlc291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXN1cHBv
cnQuanMgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9yZXNvdXJjZXMvb3ZlcnNjcm9sbC1i
ZWhhdmlvci1zdXBwb3J0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNiZDIyMmU5MGI1MmExOTMwYjdmY2ZlNDQy
M2U5NDU4M2MwNDYwMGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9s
bGluZy9yZXNvdXJjZXMvb3ZlcnNjcm9sbC1iZWhhdmlvci1zdXBwb3J0LmpzCkBAIC0wLDAgKzEs
MzkgQEAKK2Z1bmN0aW9uIGdldERlbHRhcyhkaXJlY3Rpb24pIHsKKyAgICB2YXIgZGVsdGFYID0g
MDsKKyAgICB2YXIgZGVsdGFZID0gMDsKKyAgICBpZiAoZGlyZWN0aW9uID09ICJkb3duIikKKyAg
ICAgICAgZGVsdGFZID0gLTUKKyAgICBlbHNlIGlmIChkaXJlY3Rpb24gPT0gInVwIikKKyAgICAg
ICAgZGVsdGFZID0gNTsKKyAgICBlbHNlIGlmIChkaXJlY3Rpb24gPT0gInJpZ2h0IikKKyAgICAg
ICAgZGVsdGFYID0gLTU7CisgICAgZWxzZSBpZiAoZGlyZWN0aW9uID09ICJsZWZ0IikKKyAgICAg
ICAgZGVsdGFYID0gNTsKKyAgICByZXR1cm4geworICAgICAgICBYOiBkZWx0YVgsCisgICAgICAg
IFk6IGRlbHRhWQorICAgIH07Cit9CisKK2FzeW5jIGZ1bmN0aW9uIG1vdXNlV2hlZWxTY3JvbGxB
bmRXYWl0KHgsIHksIGJlZ2luWCwgYmVnaW5ZLCBkZWx0YVgsIGRlbHRhWSkKK3sKKyAgICBpZiAo
YmVnaW5YID09PSB1bmRlZmluZWQpCisgICAgICAgIGJlZ2luWCA9IDA7CisgICAgaWYgKGJlZ2lu
WSA9PT0gdW5kZWZpbmVkKQorICAgICAgICBiZWdpblkgPSAtMTsKKyAgICBpZiAoZGVsdGFYID09
PSB1bmRlZmluZWQpCisgICAgICAgIGRlbHRhWCA9IDA7CisgICAgaWYgKGRlbHRhWSA9PT0gdW5k
ZWZpbmVkKQorICAgICAgICBkZWx0YVkgPSAtMTA7CisKKyAgICBldmVudFNlbmRlci5tb25pdG9y
V2hlZWxFdmVudHMoKTsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoYmVnaW5Y
LCBiZWdpblksICJiZWdhbiIsICJub25lIik7CisgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGRlbHRhWCwgZGVsdGFZLCAiY2hhbmdlZCIsICJu
b25lIik7CisgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKDAsIDAsICJlbmRlZCIsICJub25lIik7CisgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJl
c29sdmUgPT4geworICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgICAgICAgIHJlcXVl
c3RBbmltYXRpb25GcmFtZShyZXNvbHZlKTsKKyAgICAgICAgfSwgNTAwKTsKKyAgICB9KTsKK30K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9s
bC1iZWhhdmlvci1lbGVtZW50LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNzE1MGZmNjBiNWRi
ZGQwYjRhN2FjNmY4M2ZiNTZmNTdjZDJjZDgyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIwIEBACisKK1BBU1MgRWxlbWVudCBob3Jpem9udGFs
IHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBhdXRvLgorUEFTUyBF
bGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0
byBhdXRvLgorUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Ny
b2xsLWJlaGF2aW9yOiBjb250YWluIGF1dG8uCitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xs
IHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGF1dG8uCitQQVNTIEVsZW1l
bnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUg
YXV0by4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwt
YmVoYXZpb3I6IG5vbmUgYXV0by4KK1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0
IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBjb250YWluLgorUEFTUyBFbGVtZW50IHZl
cnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBjb250YWlu
LgorUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJl
aGF2aW9yOiBjb250YWluIGNvbnRhaW4uCitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRl
c3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGNvbnRhaW4uCitQQVNTIEVsZW1l
bnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUg
Y29udGFpbi4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3Jv
bGwtYmVoYXZpb3I6IG5vbmUgY29udGFpbi4KK1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9s
bCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBub25lLgorUEFTUyBFbGVtZW50
IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBub25l
LgorUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJl
aGF2aW9yOiBjb250YWluIG5vbmUuCitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qg
d2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIG5vbmUuCitQQVNTIEVsZW1lbnQgaG9y
aXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgbm9uZS4K
K1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZp
b3I6IG5vbmUgbm9uZS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcv
c3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50Lmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iNjY0NzZmMDVmZDJmNDAzYWE0ZTZlZGJmOGRiZmZlNGI3MzI5YzIw
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3Jv
bGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50Lmh0bWwKQEAgLTAsMCArMSw4NiBAQAorPCFk
b2N0eXBlIGh0bWw+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBv
cnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2
aW9yLXN1cHBvcnQuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczov
L2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLW92ZXJzY3JvbGwtYmVoYXZpb3IiPgorPHN0eWxlPgorICAg
IC5zY3JvbGxpbmcgeworICAgICAgICBvdmVyZmxvdzogc2Nyb2xsOworICAgIH0KKyAgICAuc2Ny
b2xsQ29udGVudCB7CisgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgaGVpZ2h0OiAzMDBw
eDsKKyAgICB9CisgICAgI3Jvb3QgeworICAgICAgICB3aWR0aDogMjAwcHg7CisgICAgICAgIGhl
aWdodDogMjAwcHg7CisgICAgfQorICAgICNzY3JvbGxlciB7CisgICAgICAgIHdpZHRoOiAxMDBw
eDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICB9Cis8L3N0eWxlPgorPGRpdiBpZD0ncm9v
dCcgY2xhc3M9InNjcm9sbGluZyI+CisgICAgPGRpdiBpZD0nc2Nyb2xsZXInIGNsYXNzPSJzY3Jv
bGxpbmciPgorICAgICAgICA8ZGl2IGNsYXNzPSJzY3JvbGxDb250ZW50Ij48L2Rpdj4KKyAgICA8
L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJzY3JvbGxDb250ZW50Ij48L2Rpdj4KKzwvZGl2PgorCis8
c2NyaXB0PgorY29uc3Qgcm9vdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyb290Jyk7Citj
b25zdCBzY3JvbGxlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY3JvbGxlcicpOwordmFy
IG92ZXJzY3JvbGxEYXRhcyA9IFtbImF1dG8iLCAiYXV0byIsIHRydWUsIHRydWVdLAorICAgICAg
ICAgICAgICAgICAgICAgICAgWyJjb250YWluIiwgImF1dG8iLCBmYWxzZSwgdHJ1ZV0sCisgICAg
ICAgICAgICAgICAgICAgICAgICBbIm5vbmUiLCAiYXV0byIsIGZhbHNlLCB0cnVlXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIFsiYXV0byIsICJjb250YWluIiwgdHJ1ZSwgZmFsc2VdLAorICAg
ICAgICAgICAgICAgICAgICAgICAgWyJjb250YWluIiwgImNvbnRhaW4iLCBmYWxzZSwgZmFsc2Vd
LAorICAgICAgICAgICAgICAgICAgICAgICAgWyJub25lIiwgImNvbnRhaW4iLCBmYWxzZSwgZmFs
c2VdLAorICAgICAgICAgICAgICAgICAgICAgICAgWyJhdXRvIiwgIm5vbmUiLCB0cnVlLCBmYWxz
ZV0sCisgICAgICAgICAgICAgICAgICAgICAgICBbImNvbnRhaW4iLCAibm9uZSIsIGZhbHNlLCBm
YWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAgICBbIm5vbmUiLCAibm9uZSIsIGZhbHNlLCBm
YWxzZV1dOworCitmdW5jdGlvbiByZXNldFRlc3QoKSB7CisgICAgLy8gVHJ5IHZhcmlvdXMgbWV0
aG9kcyB0byBlbnN1cmUgdGhlIGVsZW1lbnQgcG9zaXRpb24gaXMgcmVzZXQgaW1tZWRpYXRlbHku
CisgICAgc2Nyb2xsZXIuc2Nyb2xsTGVmdCA9IDMwMDsKKyAgICBzY3JvbGxlci5zY3JvbGxUb3Ag
PSAzMDA7CisgICAgc2Nyb2xsZXIuc2Nyb2xsVG8oMzAwLCAzMDApOworCisgICAgcm9vdC5zY3Jv
bGxMZWZ0ID0gMDsKKyAgICByb290LnNjcm9sbFRvcCA9IDA7CisgICAgcm9vdC5zY3JvbGxUbygw
LCAwKTsKK30KKworZnVuY3Rpb24gc3RhcnRUZXN0KCkgeworICAgIG92ZXJzY3JvbGxEYXRhcy5m
b3JFYWNoKChbb3ZlcnNjcm9sbFgsIG92ZXJzY3JvbGxZLCBwcm9wYWdhdGVYLCBwcm9wYWdhdGVZ
XSkgPT4geworICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgICAgICAgICAgcmVzZXRU
ZXN0KCk7CisgICAgICAgICAgICBzY3JvbGxlci5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JYID0g
b3ZlcnNjcm9sbFg7CisgICAgICAgICAgICBzY3JvbGxlci5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZp
b3JZID0gb3ZlcnNjcm9sbFk7CisgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRo
OworCisgICAgICAgICAgICB2YXIgeCA9IHNjcm9sbGVyLmNsaWVudFdpZHRoIC8gMjsKKyAgICAg
ICAgICAgIHZhciB5ID0gc2Nyb2xsZXIuY2xpZW50SGVpZ2h0IC8gMjsKKyAgICAgICAgICAgIHZh
ciBkZWx0YSA9IGdldERlbHRhcygicmlnaHQiKTsKKyAgICAgICAgICAgIHJldHVybiBtb3VzZVdo
ZWVsU2Nyb2xsQW5kV2FpdCh4LCB5LCBkZWx0YS5YLCBkZWx0YS5ZLCBkZWx0YS5YLCBkZWx0YS5Z
KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xs
TGVmdCA+IDAsIHByb3BhZ2F0ZVgsICdDb250aW51ZSB1cCB0aGUgaG9yaXpvbnRhbCBzY3JvbGwg
Y2hhaW5pbmcnKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9LCAnRWxlbWVudCBob3Jpem9u
dGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogJyArIG92ZXJzY3JvbGxY
ICsgJyAnICsgb3ZlcnNjcm9sbFkgKyAnLicpOworCisgICAgICAgIHByb21pc2VfdGVzdCgoKSA9
PiB7CisgICAgICAgICAgICByZXNldFRlc3QoKTsKKyAgICAgICAgICAgIHNjcm9sbGVyLnN0eWxl
Lm92ZXJzY3JvbGxCZWhhdmlvclggPSBvdmVyc2Nyb2xsWDsKKyAgICAgICAgICAgIHNjcm9sbGVy
LnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclkgPSBvdmVyc2Nyb2xsWTsKKworICAgICAgICAgICAg
dmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAgICAgICAgICB2YXIgeSA9IHNj
cm9sbGVyLmNsaWVudEhlaWdodCAvIDI7CisgICAgICAgICAgICB2YXIgZGVsdGEgPSBnZXREZWx0
YXMoImRvd24iKTsKKyAgICAgICAgICAgIHJldHVybiBtb3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCh4
LCB5LCBkZWx0YS5YLCBkZWx0YS5ZLCBkZWx0YS5YLCBkZWx0YS5ZKS50aGVuKCgpID0+IHsKKyAg
ICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsVG9wID4gMCwgcHJvcGFnYXRl
WSwgJ0NvbnRpbnVlIHVwIHRoZSB2ZXJ0aWNhbCBzY3JvbGwgY2hhaW5pbmcnKTsKKyAgICAgICAg
ICAgIH0pOworICAgICAgICB9LCAnRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92
ZXJzY3JvbGwtYmVoYXZpb3I6ICcgKyBvdmVyc2Nyb2xsWCArICcgJyArIG92ZXJzY3JvbGxZICsg
Jy4nKTsKKyAgICB9KTsKK30KKworYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIHN0YXJ0VGVzdCk7
Cis8L3NjcmlwdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWlm
cmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9s
bC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTVm
MDk4OTIzMjhlZDEwYzhiYjA0YWE5NjllYmJiNTIwYTU2ZTYwNwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZp
b3ItaWZyYW1lLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIxIEBACisKKworUEFTUyBJZnJhbWUg
aG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gYXV0
by4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhh
dmlvcjogYXV0byBhdXRvLgorRkFJTCBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRo
IG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gYXV0by4gYXNzZXJ0X2VxdWFsczogQ29udGlu
dWUgdXAgdGhlIGhvcml6b250YWwgc2Nyb2xsIGNoYWluaW5nIGV4cGVjdGVkIGZhbHNlIGJ1dCBn
b3QgdHJ1ZQorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xs
LWJlaGF2aW9yOiBjb250YWluIGF1dG8uCitGQUlMIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0
ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBhdXRvLiBhc3NlcnRfZXF1YWxzOiBD
b250aW51ZSB1cCB0aGUgaG9yaXpvbnRhbCBzY3JvbGwgY2hhaW5pbmcgZXhwZWN0ZWQgZmFsc2Ug
YnV0IGdvdCB0cnVlCitQQVNTIElmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJz
Y3JvbGwtYmVoYXZpb3I6IG5vbmUgYXV0by4KK1BBU1MgSWZyYW1lIGhvcml6b250YWwgc2Nyb2xs
IHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIGNvbnRhaW4uCitGQUlMIElmcmFt
ZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gY29u
dGFpbi4gYXNzZXJ0X2VxdWFsczogQ29udGludWUgdXAgdGhlIHZlcnRpY2FsIHNjcm9sbCBjaGFp
bmluZyBleHBlY3RlZCBmYWxzZSBidXQgZ290IHRydWUKK0ZBSUwgSWZyYW1lIGhvcml6b250YWwg
c2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGNvbnRhaW4uIGFz
c2VydF9lcXVhbHM6IENvbnRpbnVlIHVwIHRoZSBob3Jpem9udGFsIHNjcm9sbCBjaGFpbmluZyBl
eHBlY3RlZCBmYWxzZSBidXQgZ290IHRydWUKK0ZBSUwgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0
ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBjb250YWluLiBhc3NlcnRfZXF1
YWxzOiBDb250aW51ZSB1cCB0aGUgdmVydGljYWwgc2Nyb2xsIGNoYWluaW5nIGV4cGVjdGVkIGZh
bHNlIGJ1dCBnb3QgdHJ1ZQorRkFJTCBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRo
IG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgY29udGFpbi4gYXNzZXJ0X2VxdWFsczogQ29udGlu
dWUgdXAgdGhlIGhvcml6b250YWwgc2Nyb2xsIGNoYWluaW5nIGV4cGVjdGVkIGZhbHNlIGJ1dCBn
b3QgdHJ1ZQorRkFJTCBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xs
LWJlaGF2aW9yOiBub25lIGNvbnRhaW4uIGFzc2VydF9lcXVhbHM6IENvbnRpbnVlIHVwIHRoZSB2
ZXJ0aWNhbCBzY3JvbGwgY2hhaW5pbmcgZXhwZWN0ZWQgZmFsc2UgYnV0IGdvdCB0cnVlCitQQVNT
IElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjog
YXV0byBub25lLgorRkFJTCBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Ny
b2xsLWJlaGF2aW9yOiBhdXRvIG5vbmUuIGFzc2VydF9lcXVhbHM6IENvbnRpbnVlIHVwIHRoZSB2
ZXJ0aWNhbCBzY3JvbGwgY2hhaW5pbmcgZXhwZWN0ZWQgZmFsc2UgYnV0IGdvdCB0cnVlCitGQUlM
IElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjog
Y29udGFpbiBub25lLiBhc3NlcnRfZXF1YWxzOiBDb250aW51ZSB1cCB0aGUgaG9yaXpvbnRhbCBz
Y3JvbGwgY2hhaW5pbmcgZXhwZWN0ZWQgZmFsc2UgYnV0IGdvdCB0cnVlCitGQUlMIElmcmFtZSB2
ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gbm9u
ZS4gYXNzZXJ0X2VxdWFsczogQ29udGludWUgdXAgdGhlIHZlcnRpY2FsIHNjcm9sbCBjaGFpbmlu
ZyBleHBlY3RlZCBmYWxzZSBidXQgZ290IHRydWUKK0ZBSUwgSWZyYW1lIGhvcml6b250YWwgc2Ny
b2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIG5vbmUuIGFzc2VydF9lcXVh
bHM6IENvbnRpbnVlIHVwIHRoZSBob3Jpem9udGFsIHNjcm9sbCBjaGFpbmluZyBleHBlY3RlZCBm
YWxzZSBidXQgZ290IHRydWUKK0ZBSUwgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGgg
b3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBub25lLiBhc3NlcnRfZXF1YWxzOiBDb250aW51ZSB1
cCB0aGUgdmVydGljYWwgc2Nyb2xsIGNoYWluaW5nIGV4cGVjdGVkIGZhbHNlIGJ1dCBnb3QgdHJ1
ZQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1v
dmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxp
bmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5hNjhlNWRhZWY5YTNiMWQwODU2YWI3M2FmZjE2ZTJjYWM1MmI4Yzk1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1i
ZWhhdmlvci1pZnJhbWUuaHRtbApAQCAtMCwwICsxLDg2IEBACis8IWRvY3R5cGUgaHRtbD4KKwor
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb3ZlcnNjcm9sbC1iZWhhdmlvci1zdXBwb3J0Lmpz
Ij48L3NjcmlwdD4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9kcmFmdHMuY3Nzd2cu
b3JnL2Nzcy1vdmVyc2Nyb2xsLWJlaGF2aW9yIj4KKzxzdHlsZT4KKyAgICAuc2Nyb2xsaW5nIHsK
KyAgICAgICAgb3ZlcmZsb3c6IHNjcm9sbDsKKyAgICB9CisgICAgLnNjcm9sbENvbnRlbnQgewor
ICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgIGJh
Y2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJlZCwgYmx1ZSk7CisgICAgfQorICAg
ICNyb290IHsKKyAgICAgICAgd2lkdGg6IDIwMHB4OworICAgICAgICBoZWlnaHQ6IDIwMHB4Owor
ICAgIH0KKyAgICAjc2Nyb2xsZXIgeworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhl
aWdodDogMTAwcHg7CisgICAgICAgIG92ZXJzY3JvbGwtYmVoYXZpb3IteTogYXV0bzsKKyAgICB9
Cis8L3N0eWxlPgorPGRpdiBpZD0ncm9vdCcgY2xhc3M9InNjcm9sbGluZyI+CisgICAgPGlmcmFt
ZSBpZD0nc2Nyb2xsZXInIHNyY2RvYz0iPGh0bWw+PGRpdiBzdHlsZT0nd2lkdGg6IDMwMHB4OyBo
ZWlnaHQ6IDMwMHB4Oyc+PC9kaXY+PC9odG1sPgorICAgICAgICAiPjwvaWZyYW1lPgorICAgIDxk
aXYgY2xhc3M9InNjcm9sbENvbnRlbnQiPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+CisgICAg
Y29uc3Qgcm9vdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyb290Jyk7CisgICAgY29uc3Qg
c2Nyb2xsZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2Nyb2xsZXInKTsKKyAgICB2YXIg
b3ZlcnNjcm9sbERhdGFzID0gW1siYXV0byIsICJhdXRvIiwgdHJ1ZSwgdHJ1ZV0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgWyJjb250YWluIiwgImF1dG8iLCBmYWxzZSwgdHJ1ZV0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJub25lIiwgImF1dG8iLCBmYWxzZSwgdHJ1ZV0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJhdXRvIiwgImNvbnRhaW4iLCB0cnVlLCBm
YWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJjb250YWluIiwgImNvbnRhaW4i
LCBmYWxzZSwgZmFsc2VdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsibm9uZSIsICJj
b250YWluIiwgZmFsc2UsIGZhbHNlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImF1
dG8iLCAibm9uZSIsIHRydWUsIGZhbHNlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBb
ImNvbnRhaW4iLCAibm9uZSIsIGZhbHNlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgWyJub25lIiwgIm5vbmUiLCBmYWxzZSwgZmFsc2VdXTsKKyAgICBmdW5jdGlvbiByZXNl
dFRlc3QoKSB7CisgICAgICAgIC8vIFRyeSB2YXJpb3VzIG1ldGhvZHMgdG8gZW5zdXJlIHRoZSBl
bGVtZW50IHBvc2l0aW9uIGlzIHJlc2V0IGltbWVkaWF0ZWx5LgorICAgICAgICBzY3JvbGxlci5j
b250ZW50V2luZG93LnNjcm9sbFggPSAzMDA7CisgICAgICAgIHNjcm9sbGVyLmNvbnRlbnRXaW5k
b3cuc2Nyb2xsWSA9IDMwMDsKKyAgICAgICAgc2Nyb2xsZXIuY29udGVudFdpbmRvdy5zY3JvbGxU
bygzMDAsIDMwMCk7CisgICAgICAgIHJvb3Quc2Nyb2xsTGVmdCA9IDA7CisgICAgICAgIHJvb3Qu
c2Nyb2xsVG9wID0gMDsKKyAgICAgICAgcm9vdC5zY3JvbGxUbygwLCAwKTsKKyAgICB9CisKKyAg
ICBmdW5jdGlvbiBvdmVyc2Nyb2xsQmVoYXZpb3JUZXN0KCkgeworICAgICAgICBvdmVyc2Nyb2xs
RGF0YXMuZm9yRWFjaCgoW292ZXJzY3JvbGxYLCBvdmVyc2Nyb2xsWSwgcHJvcGFnYXRlWCwgcHJv
cGFnYXRlWV0pID0+IHsKKyAgICAgICAgICAgIHByb21pc2VfdGVzdCgoKSA9PiB7CisgICAgICAg
ICAgICAgICAgcmVzZXRUZXN0KCk7CisgICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IHNjcm9s
bGVyLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImh0bWwiKVsw
XTsKKyAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWCA9IG92
ZXJzY3JvbGxYOworICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZp
b3JZID0gb3ZlcnNjcm9sbFk7CisgICAgICAgICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGll
bnRXaWR0aCAvIDI7CisgICAgICAgICAgICAgICAgdmFyIHkgPSBzY3JvbGxlci5jbGllbnRIZWln
aHQgLyAyOworICAgICAgICAgICAgICAgIHZhciBkZWx0YSA9IGdldERlbHRhcygicmlnaHQiKTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gbW91c2VXaGVlbFNjcm9sbEFuZFdhaXQoeCwgeSwgZGVs
dGEuWCwgZGVsdGEuWSwgZGVsdGEuWCwgZGVsdGEuWSkudGhlbigoKSA9PiB7CisgICAgICAgICAg
ICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxMZWZ0ID4gMCwgcHJvcGFnYXRlWCwg
J0NvbnRpbnVlIHVwIHRoZSBob3Jpem9udGFsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAgICAg
ICAgICAgIH0pOworICAgICAgICAgICAgfSwgJ0lmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0
IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogJyArIG92ZXJzY3JvbGxYICsgJyAnICsgb3ZlcnNj
cm9sbFkgKyAnLicpOworCisgICAgICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgICAg
ICAgICAgICAgIHJlc2V0VGVzdCgpOworICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSBzY3Jv
bGxlci5jb250ZW50V2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJodG1sIilb
MF07CisgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclggPSBv
dmVyc2Nyb2xsWDsKKyAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUub3ZlcnNjcm9sbEJlaGF2
aW9yWSA9IG92ZXJzY3JvbGxZOworCisgICAgICAgICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5j
bGllbnRXaWR0aCAvIDI7CisgICAgICAgICAgICAgICAgdmFyIHkgPSBzY3JvbGxlci5jbGllbnRI
ZWlnaHQgLyAyOworICAgICAgICAgICAgICAgIHZhciBkZWx0YSA9IGdldERlbHRhcygiZG93biIp
OworICAgICAgICAgICAgICAgIHJldHVybiBtb3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCh4LCB5LCBk
ZWx0YS5YLCBkZWx0YS5ZLCBkZWx0YS5YLCBkZWx0YS5ZKS50aGVuKCgpID0+IHsKKyAgICAgICAg
ICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbFRvcCA+IDAsIHByb3BhZ2F0ZVks
ICdDb250aW51ZSB1cCB0aGUgdmVydGljYWwgc2Nyb2xsIGNoYWluaW5nJyk7CisgICAgICAgICAg
ICAgICAgfSk7CisgICAgICAgICAgICB9LCAnSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdp
dGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogJyArIG92ZXJzY3JvbGxYICsgJyAnICsgb3ZlcnNjcm9s
bFkgKyAnLicpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBzY3JvbGxlci5hZGRFdmVudExp
c3RlbmVyKCJsb2FkIiwgb3ZlcnNjcm9sbEJlaGF2aW9yVGVzdCk7Cis8L3NjcmlwdD4KXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9s
bGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92
ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmYzOTViNjQ4OGQwODcwYjk1NjFjMDI4Njc5ZDdlMTVhNDdmY2U2ZTkKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Ny
b2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDQgQEAKKworUEFTUyBVbnNjcm9sbGFibGUgZWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0
IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4KK1BBU1MgVW5zY3JvbGxhYmxlIGVsZW1l
bnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLgor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVy
c2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJs
ZS1lbGVtZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzFlNTczOGE1ZDdhNzk2OWNhZTZlY2FjYmIzZjhl
OWMyYjIwNzNlYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5n
L3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRt
bApAQCAtMCwwICsxLDY3IEBACis8IWRvY3R5cGUgaHRtbD4KKworPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvb3ZlcnNjcm9sbC1iZWhhdmlvci1zdXBwb3J0LmpzIj48L3NjcmlwdD4KKzxsaW5r
IHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1vdmVyc2Nyb2xs
LWJlaGF2aW9yIj4KKzxzdHlsZT4KKyAgICAuc2Nyb2xsaW5nIHsKKyAgICAgICAgb3ZlcmZsb3c6
IHNjcm9sbDsKKyAgICB9CisgICAgLnNjcm9sbENvbnRlbnQgeworICAgICAgICB3aWR0aDogMzAw
cHg7CisgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgfQorICAgICNyb290IHsKKyAgICAgICAg
d2lkdGg6IDIwMHB4OworICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAgIH0KKyAgICAjc2Nyb2xs
ZXIgeworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAg
ICAgIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmU7CisgICAgICAgIG92ZXJmbG93OiB2aXNpYmxl
OworICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZWQsIGJsdWUp
OworICAgIH0KKzwvc3R5bGU+Cis8ZGl2IGlkPSJyb290IiBjbGFzcz0ic2Nyb2xsaW5nIj4KKyAg
ICA8ZGl2IGlkPSJzY3JvbGxlciI+CisgICAgICAgIDxkaXYgY2xhc3M9InNjcm9sbENvbnRlbnQi
PjwvZGl2PgorICAgIDwvZGl2PgorICAgIDxkaXYgY2xhc3M9InNjcm9sbENvbnRlbnQiPjwvZGl2
PgorPC9kaXY+CisKKzxzY3JpcHQ+Citjb25zdCByb290ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3Jvb3QnKTsKK2NvbnN0IHNjcm9sbGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Nj
cm9sbGVyJyk7CisKK2Z1bmN0aW9uIHJlc2V0VGVzdCgpIHsKKyAgICByb290LnNjcm9sbExlZnQg
PSAwOworICAgIHJvb3Quc2Nyb2xsVG9wID0gMDsKKyAgICByb290LnNjcm9sbFRvKDAsIDApOwor
fQorCitmdW5jdGlvbiBzdGFydFRlc3QoKSB7CisgICAgICAgIHByb21pc2VfdGVzdCgoKSA9PiB7
CisgICAgICAgICAgICByZXNldFRlc3QoKTsKKyAgICAgICAgICAgIHZhciB4ID0gc2Nyb2xsZXIu
Y2xpZW50V2lkdGggLyAyOworICAgICAgICAgICAgdmFyIHkgPSBzY3JvbGxlci5jbGllbnRIZWln
aHQgLyAyOworICAgICAgICAgICAgdmFyIGRlbHRhID0gZ2V0RGVsdGFzKCJyaWdodCIpOworICAg
ICAgICAgICAgcmV0dXJuIG1vdXNlV2hlZWxTY3JvbGxBbmRXYWl0KHgsIHksIGRlbHRhLlgsIGRl
bHRhLlksIGRlbHRhLlgsIGRlbHRhLlkpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGFz
c2VydF9lcXVhbHMocm9vdC5zY3JvbGxMZWZ0ID4gMCwgdHJ1ZSwgJ0NvbnRpbnVlIHVwIHRoZSBo
b3Jpem9udGFsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0s
ICdVbnNjcm9sbGFibGUgZWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNj
cm9sbC1iZWhhdmlvcjogbm9uZS4nKTsKKworICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4gewor
ICAgICAgICAgICAgcmVzZXRUZXN0KCk7CisgICAgICAgICAgICB2YXIgeCA9IHNjcm9sbGVyLmNs
aWVudFdpZHRoIC8gMjsKKyAgICAgICAgICAgIHZhciB5ID0gc2Nyb2xsZXIuY2xpZW50SGVpZ2h0
IC8gMjsKKyAgICAgICAgICAgIHZhciBkZWx0YSA9IGdldERlbHRhcygiZG93biIpOworICAgICAg
ICAgICAgcmV0dXJuIG1vdXNlV2hlZWxTY3JvbGxBbmRXYWl0KHgsIHksIGRlbHRhLlgsIGRlbHRh
LlksIGRlbHRhLlgsIGRlbHRhLlkpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGFzc2Vy
dF9lcXVhbHMocm9vdC5zY3JvbGxUb3AgPiAwLCB0cnVlLCAnQ29udGludWUgdXAgdGhlIHZlcnRp
Y2FsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0sICdVbnNj
cm9sbGFibGUgZWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVo
YXZpb3I6IG5vbmUuJyk7Cit9CisKK2FkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBzdGFydFRlc3Qp
OworPC9zY3JpcHQ+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11
bnNjcm9sbGFibGUtaWZyYW1lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xs
aW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2ZhNTljY2JhNzlhZWZmMzNkYTcwZTkzZDQ4OGEwN2Vl
YzljNTY5MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5
bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSw1IEBACisKKworUEFTUyBVbnNjcm9sbGFibGUgaWZyYW1lIGhvcml6
b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLgorUEFTUyBV
bnNjcm9sbGFibGUgaWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1i
ZWhhdmlvcjogbm9uZS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcv
c3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2
aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMjQyNWFmYzYzN2RmNTFl
NDQxNTQyNmFiNDY3YzYxNGUzOGVmNjE2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFi
bGUtaWZyYW1lLmh0bWwKQEAgLTAsMCArMSw2NiBAQAorPCFkb2N0eXBlIGh0bWw+CisKKzxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL292ZXJzY3JvbGwtYmVoYXZpb3Itc3VwcG9ydC5qcyI+PC9z
Y3JpcHQ+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9j
c3Mtb3ZlcnNjcm9sbC1iZWhhdmlvciI+Cis8c3R5bGU+CisgICAgLnNjcm9sbGluZyB7CisgICAg
ICAgIG92ZXJmbG93OiBzY3JvbGw7CisgICAgfQorICAgIC5zY3JvbGxDb250ZW50IHsKKyAgICAg
ICAgd2lkdGg6IDMwMHB4OworICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgIH0KKyAgICAjcm9v
dCB7CisgICAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgICAgaGVpZ2h0OiAyMDBweDsKKyAgICB9
CisgICAgI3Njcm9sbGVyIHsKKyAgICAgICAgd2lkdGg6IDIwMHB4OworICAgICAgICBoZWlnaHQ6
IDIwMHB4OworICAgICAgICBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lOworICAgICAgICBvdmVy
ZmxvdzogdmlzaWJsZTsKKyAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRl
ZywgcmVkLCBibHVlKTsKKyAgICB9Cis8L3N0eWxlPgorPGRpdiBpZD0ncm9vdCcgY2xhc3M9InNj
cm9sbGluZyI+CisgICAgPGlmcmFtZSBpZD0nc2Nyb2xsZXInIHNyY2RvYz0iPGh0bWwgc3R5bGU9
J292ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmU7Jz48ZGl2IHN0eWxlPSd3aWR0aDogMTAwcHg7IGhl
aWdodDogMTAwcHg7Jz48L2Rpdj48L2h0bWw+CisgICAgICAgICI+PC9pZnJhbWU+CisgICAgPGRp
diBjbGFzcz0ic2Nyb2xsQ29udGVudCI+PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4KK2NvbnN0
IHJvb3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncm9vdCcpOworY29uc3Qgc2Nyb2xsZXIg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2Nyb2xsZXInKTsKKworZnVuY3Rpb24gcmVzZXRU
ZXN0KCkgeworICAgIHJvb3Quc2Nyb2xsTGVmdCA9IDA7CisgICAgcm9vdC5zY3JvbGxUb3AgPSAw
OworICAgIHJvb3Quc2Nyb2xsVG8oMCwgMCk7Cit9CisKK2Z1bmN0aW9uIHN0YXJ0VGVzdCgpIHsK
KyAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAgIHJlc2V0VGVzdCgpOwor
ICAgICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAgICAgICAg
ICB2YXIgeSA9IHNjcm9sbGVyLmNsaWVudEhlaWdodCAvIDI7CisgICAgICAgICAgICB2YXIgZGVs
dGEgPSBnZXREZWx0YXMoInJpZ2h0Iik7CisgICAgICAgICAgICByZXR1cm4gbW91c2VXaGVlbFNj
cm9sbEFuZFdhaXQoeCwgeSwgZGVsdGEuWCwgZGVsdGEuWSwgZGVsdGEuWCwgZGVsdGEuWSkudGhl
bigoKSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbExlZnQg
PiAwLCB0cnVlLCAnQ29udGludWUgdXAgdGhlIGhvcml6b250YWwgc2Nyb2xsIGNoYWluaW5nJyk7
CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSwgJ1Vuc2Nyb2xsYWJsZSBpZnJhbWUgaG9yaXpv
bnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuJyk7CisKKyAg
ICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAgIHJlc2V0VGVzdCgpOworICAg
ICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAgICAgICAgICB2
YXIgeSA9IHNjcm9sbGVyLmNsaWVudEhlaWdodCAvIDI7CisgICAgICAgICAgICB2YXIgZGVsdGEg
PSBnZXREZWx0YXMoImRvd24iKTsKKyAgICAgICAgICAgIHJldHVybiBtb3VzZVdoZWVsU2Nyb2xs
QW5kV2FpdCh4LCB5LCBkZWx0YS5YLCBkZWx0YS5ZLCBkZWx0YS5YLCBkZWx0YS5ZKS50aGVuKCgp
ID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsVG9wID4gMCwg
dHJ1ZSwgJ0NvbnRpbnVlIHVwIHRoZSB2ZXJ0aWNhbCBzY3JvbGwgY2hhaW5pbmcnKTsKKyAgICAg
ICAgICAgIH0pOworICAgICAgICB9LCAnVW5zY3JvbGxhYmxlIGlmcmFtZSB2ZXJ0aWNhbCBzY3Jv
bGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuJyk7Cit9CisKK2FkZEV2ZW50
TGlzdGVuZXIoImxvYWQiLCBzdGFydFRlc3QpOworPC9zY3JpcHQ+ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBl
Y3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucwppbmRl
eCBlNTNkMzRmNWNjYTIxYzU1ZmNjZGQwNWQwMWM2OTM5ZDI4YzE1NGYyLi4zNDk2ZmI0NTRkN2I1
ZGEyNTgxMzBiYTliZGEwMWU2YWRmNjNjNjAxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mv
VGVzdEV4cGVjdGF0aW9ucwpAQCAtODExLDYgKzgxMSwxMiBAQCBzdmcvdGV4dC9zZWxlY3Rpb24t
ZG91YmxlY2xpY2suc3ZnIFsgU2tpcCBdCiBzdmcvdGV4dC9zZWxlY3Rpb24tdHJpcGxlY2xpY2su
c3ZnIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mtc2hh
ZG93LXBhcnRzL2ludmFsaWRhdGlvbi1wYXJ0LXBzZXVkby5odG1sIFsgU2tpcCBdCiAKKyMgT3Zl
cnNjcm9sbC1iZWhhdmlvciBpcyBub3Qgc3VwcG9ydGVkIG9uIGlPUyB5ZXQ6IGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM3ODgKK2Zhc3Qvc2Nyb2xsaW5nL3N5bmMt
c2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC5odG1sIFsgU2tpcCBdCitmYXN0L3Nj
cm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS5odG1sIFsgU2tp
cCBdCitmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Ny
b2xsYWJsZS1lbGVtZW50Lmh0bWwgWyBTa2lwIF0KK2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xs
LW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sIFsgU2tpcCBdCisK
ICMgSU9TIGRvZXMgbm90IGltcGxlbWVudCBzZXRBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxl
ZAogZWRpdGluZy9pbnNlcnRpbmcvdHlwaW5nLXNwYWNlLXRvLXRyaWdnZXItc21hcnQtbGluay5o
dG1sIFsgU2tpcCBdCiBlZGl0aW5nL2luc2VydGluZy9zbWFydC1saW5rLXdoZW4tY2FyZXQtaXMt
bW92ZWQtYmVmb3JlLVVSTC5odG1sIFsgU2tpcCBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggNjdhOGU4MzE2MmRiNGNiZDE0YWNiNmU0MjMx
MjVjMjllYjUwMDYyOS4uMDhlY2VjNDk1NGJjYjk1YTlhYzc5NDhiMjNiZTAyNzEwY2QwMjJlYyAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25z
CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwpAQCAt
NTA0LDYgKzUwNCwxMCBAQCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
c2Nyb2xsLXNuYXAvc2Nyb2xsLXRhcmdldC1wYWRkaW5nLTAwMS5odAogaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXNjcm9sbC1zbmFwL3Njcm9sbC1zbmFwLXN0b3AtY2hh
bmdlLmh0bWwgWyBGYWlsdXJlIF0KIGNzczMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXBhZGRpbmctbWFp
bmZyYW1lLXBhZ2luZy5odG1sIFsgRmFpbHVyZSBdCiAKKyMgTGFjayBvZiB3YXlzIHRvIGNvbnRy
b2wgdGhlIGNyb3NzLWZyYW1lIHNjcm9sbCBjaGFpbmluZyBpbiBXSzEuCitmYXN0L3Njcm9sbGlu
Zy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS5odG1sIFsgU2tpcCBdCitm
YXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJs
ZS1pZnJhbWUuaHRtbCBbIFNraXAgXQorCiAjIyMgRU5EIE9GICgyKSBGYWlsdXJlcyB3aXRob3V0
IGJ1ZyByZXBvcnRzCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggZWY3NWJkMTFm
NjJkMTRhNTY2MzQwZWUyM2MxZjlhOTMwY2M2MzY0My4uOGRiNGVlYjMxZjUzMTlkODJjMTU1NjVh
NWIxMGEyNWRiZTEzMzUxYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rl
c3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3Rh
dGlvbnMKQEAgLTYzMiw2ICs2MzIsMTIgQEAgZmFzdC9ldmVudHMvd2hlZWwvcGxhdGZvcm0td2hl
ZWxldmVudC1wYWdpbmcteS1pbi1zY3JvbGxpbmctcGFnZS5odG1sIFsgU2tpcCBdCiBwb2ludGVy
LWxvY2svIFsgU2tpcCBdCiBodHRwL3Rlc3RzL3BvaW50ZXItbG9jay8gWyBTa2lwIF0KIAorIyBP
dmVyc2Nyb2xsLWJlaGF2aW9yIGlzIG5vdCBzdXBwb3J0ZWQgb24gV2luZG93cworZmFzdC9zY3Jv
bGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50Lmh0bWwgWyBTa2lw
IF0KK2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1l
Lmh0bWwgWyBTa2lwIF0KK2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVo
YXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRtbCBbIFNraXAgXQorZmFzdC9zY3JvbGxpbmcv
c3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLmh0bWwg
WyBTa2lwIF0KKwogIyBEYXRhbGlzdCBpcyB1bnN1cHBvcnRlZCBvbiBXaW5kb3dzCiBhY2Nlc3Np
YmlsaXR5L2RhdGFsaXN0Lmh0bWwgWyBXb250Rml4IF0KIGZhc3QvZm9ybXMvZGF0YWxpc3QgWyBX
b250Rml4IF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446466</attachid>
            <date>2021-12-08 17:25:25 -0800</date>
            <delta_ts>2021-12-09 14:39:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222968-20211208172524.patch</filename>
            <type>text/plain</type>
            <size>38988</size>
            <attacher name="Nikos Mouchtaris">nmouchtaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MzUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGJiNmQyZjJmYmNkN2I3
ODU1MzIxY2U1YjgwMWQ1YzJmYWNiMzhmNC4uMmFkOTAxNmM5ZmExMjhiYTlkODY4MWU2M2NjNGI5
MjcyZWY1YjgzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDIxLTEyLTAyICBOaWtv
bGFvcyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxl
bWVudCBDU1Mgb3ZlcnNjcm9sbC1iZWhhdmlvciBmb3Igc3luY2hyb25vdXMgc2Nyb2xsCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI5NjgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTcGxpdCB1cCBwYXRj
aCBieSBDYXRoaWUgQ2hlbiBhbmQgRnJlZGVyaWMgV2FuZy4gQWRkIGZ1bmN0aW9uIGZvciBibG9j
a2luZyBzY3JvbGwgY2hhaW5pbmcKKyAgICAgICAgYW5kIGZpbHRlcmluZyBzY3JvbGwgZGVsdGEg
ZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZXMgb2Ygb3ZlcnNjcm9sbCBiZWhhdmlvciBmb3IgYSBzY3Jv
bGxhYmxlCisgICAgICAgIGFyZWEuIFRoaXMgcGF0Y2ggaXMgZm9yIHN5bmNocm9ub3VzIHNjcm9s
bGluZyBvbmx5LgorCisgICAgICAgIFRlc3RzOiBmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1v
dmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9zY3Jv
bGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUuaHRtbAorICAgICAg
ICAgICAgICAgZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11
bnNjcm9sbGFibGUtZWxlbWVudC5odG1sCisgICAgICAgICAgICAgICBmYXN0L3Njcm9sbGluZy9z
eW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUuaHRtbAor
CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hv
dWxkQmxvY2tTY3JvbGxDaGFpbmluZ1dpdGhTY3JvbGxhYmxlQXJlYSk6CisgICAgICAgIChXZWJD
b3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnRJbnRlcm5hbCk6CisgICAgICAgIChX
ZWJDb3JlOjpkaWRTY3JvbGxJblNjcm9sbGFibGVBcmVhKToKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudEluQXBwcm9wcmlhdGVFbmNsb3NpbmdCb3gpOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpzY3JvbGxhYmxlQXJlYUNhbkhhbmRsZUV2
ZW50KToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5oOgorICAgICAgICAqIHBhZ2UvRnJh
bWVWaWV3Lmg6CisgICAgICAgICogcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6ZmluZEVuY2xvc2luZ1Njcm9sbGFibGVDb250YWluZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmg6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsaW5n
RWZmZWN0c0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0
b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck1hYzo6c2hvdWxkRm9y
d2FyZFdoZWVsRXZlbnRzVG9QYXJlbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
QW5pbWF0b3JNYWM6OmFsbG93c1ZlcnRpY2FsU3RyZXRjaGluZyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxBbmltYXRvck1hYzo6YWxsb3dzSG9yaXpvbnRhbFN0cmV0Y2hpbmcgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjp3aGVlbERl
bHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxh
eWVyU2Nyb2xsYWJsZUFyZWEuaDoKKwogMjAyMS0xMS0zMCAgU2ltb24gRnJhc2VyICA8c2ltb24u
ZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBQYXNzIHRoZSB0aW1lc3RhbXAgZm9yIHNjcm9s
bGluZyB0aHJlYWQgYW5pbWF0aW9ucyB0aHJvdWdoIGFsbCB0aGUgc2VydmljZVNjcm9sbEFuaW1h
dGlvbigpIGNhbGxzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggZWMzZTQy
MGU3OWJiMWI1ZGNmNzAxMzU1ZDFhY2U2OWJmODg2NDE1MS4uZDc0YmQyZmY1NjU3NGFkMzZmMGJh
NjNmYjMyMDkyYTcyODYzZDFjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApA
QCAtMjkxOSw2ICsyOTE5LDMyIEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpjb21wbGV0ZVdpZGdldFdo
ZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCwgY29uCiAgICAgcmV0dXJu
IHBsYXRmb3JtQ29tcGxldGVQbGF0Zm9ybVdpZGdldFdoZWVsRXZlbnQoZXZlbnQsICp3aWRnZXQu
Z2V0KCksIHNjcm9sbGFibGVBcmVhKTsKIH0KIAorc3RhdGljIGJvb2wgc2hvdWxkQmxvY2tTY3Jv
bGxDaGFpbmluZ1dpdGhTY3JvbGxhYmxlQXJlYShjb25zdCBTY3JvbGxhYmxlQXJlYSogc2Nyb2xs
YWJsZUFyZWEsIEZsb2F0U2l6ZSYgYmlhc2VkRGVsdGEpCit7CisgICAgaWYgKHNjcm9sbGFibGVB
cmVhICYmIChzY3JvbGxhYmxlQXJlYS0+aG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpICE9
IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0byB8fCBzY3JvbGxhYmxlQXJlYS0+dmVydGljYWxPdmVy
c2Nyb2xsQmVoYXZpb3IoKSAhPSBPdmVyc2Nyb2xsQmVoYXZpb3I6OkF1dG8pKSB7CisgICAgICAg
IGlmIChzY3JvbGxhYmxlQXJlYS0+aG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpICE9IE92
ZXJzY3JvbGxCZWhhdmlvcjo6QXV0byAmJiAhYmlhc2VkRGVsdGEuaGVpZ2h0KCkgJiYgYmlhc2Vk
RGVsdGEud2lkdGgoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBpZiAoKHNj
cm9sbGFibGVBcmVhLT5ob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgIT0gT3ZlcnNjcm9s
bEJlaGF2aW9yOjpBdXRvICYmIHNjcm9sbGFibGVBcmVhLT52ZXJ0aWNhbE92ZXJzY3JvbGxCZWhh
dmlvcigpICE9IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0bykgfHwgKHNjcm9sbGFibGVBcmVhLT5o
b3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkhPSBPdmVyc2Nyb2xsQmVoYXZpb3I6OkF1dG8g
JiYgIWJpYXNlZERlbHRhLmhlaWdodCgpKSB8fCAoc2Nyb2xsYWJsZUFyZWEtPnZlcnRpY2FsT3Zl
cnNjcm9sbEJlaGF2aW9yKCkhPSBPdmVyc2Nyb2xsQmVoYXZpb3I6OkF1dG8gJiYgIWJpYXNlZERl
bHRhLndpZHRoKCkpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGJpYXNlZERl
bHRhLnNldFdpZHRoKHNjcm9sbGFibGVBcmVhLT5ob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9y
KCkhPSBPdmVyc2Nyb2xsQmVoYXZpb3I6OkF1dG8gPyAwIDogYmlhc2VkRGVsdGEud2lkdGgoKSk7
CisgICAgICAgIGJpYXNlZERlbHRhLnNldEhlaWdodChzY3JvbGxhYmxlQXJlYS0+dmVydGljYWxP
dmVyc2Nyb2xsQmVoYXZpb3IoKSE9IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0byA/IDAgOiBiaWFz
ZWREZWx0YS5oZWlnaHQoKSk7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworc3RhdGlj
IGJvb2wgc2hvdWxkQmxvY2tTY3JvbGxDaGFpbmluZ1dpdGhGcmFtZVZpZXcoY29uc3QgRnJhbWVW
aWV3KiBmcmFtZVZpZXcsIEZsb2F0U2l6ZSYgYmlhc2VkRGVsdGEpCit7CisgICAgaWYgKGZyYW1l
VmlldyAmJiAoZnJhbWVWaWV3LT5ob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgIT0gT3Zl
cnNjcm9sbEJlaGF2aW9yOjpBdXRvIHx8IGZyYW1lVmlldy0+dmVydGljYWxPdmVyc2Nyb2xsQmVo
YXZpb3IoKSAhPSBPdmVyc2Nyb2xsQmVoYXZpb3I6OkF1dG8pKSB7CisgICAgICAgIGlmIChmcmFt
ZVZpZXctPmhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSAhPSBPdmVyc2Nyb2xsQmVoYXZp
b3I6OkF1dG8gJiYgIWJpYXNlZERlbHRhLmhlaWdodCgpICYmIGJpYXNlZERlbHRhLndpZHRoKCkp
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKChmcmFtZVZpZXctPmhvcml6
b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSAhPSBPdmVyc2Nyb2xsQmVoYXZpb3I6OkF1dG8gJiYg
ZnJhbWVWaWV3LT52ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpICE9IE92ZXJzY3JvbGxCZWhh
dmlvcjo6QXV0bykgfHwgKGZyYW1lVmlldy0+aG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigp
IT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpBdXRvICYmICFiaWFzZWREZWx0YS5oZWlnaHQoKSkgfHwg
KGZyYW1lVmlldy0+dmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSE9IE92ZXJzY3JvbGxCZWhh
dmlvcjo6QXV0byAmJiAhYmlhc2VkRGVsdGEud2lkdGgoKSkpCisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgYmlhc2VkRGVsdGEuc2V0V2lkdGgoZnJhbWVWaWV3LT5ob3Jpem9udGFs
T3ZlcnNjcm9sbEJlaGF2aW9yKCkhPSBPdmVyc2Nyb2xsQmVoYXZpb3I6OkF1dG8gPyAwIDogYmlh
c2VkRGVsdGEud2lkdGgoKSk7CisgICAgICAgIGJpYXNlZERlbHRhLnNldEhlaWdodChmcmFtZVZp
ZXctPnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkhPSBPdmVyc2Nyb2xsQmVoYXZpb3I6OkF1
dG8gPyAwIDogYmlhc2VkRGVsdGEuaGVpZ2h0KCkpOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3Jt
V2hlZWxFdmVudCYgd2hlZWxFdmVudCwgT3B0aW9uU2V0PFdoZWVsRXZlbnRQcm9jZXNzaW5nU3Rl
cHM+IHByb2Nlc3NpbmdTdGVwcykKIHsKICAgICBSZWYgcHJvdGVjdGVkRnJhbWUgPSBtX2ZyYW1l
OwpAQCAtMzAyNiwxMSArMzA1MiwxNiBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxF
dmVudEludGVybmFsKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgZXZlbnQsIE9wdAogICAgIGlm
IChhbGxvd1Njcm9sbGluZykKICAgICAgICAgYWxsb3dTY3JvbGxpbmcgPSBtX2ZyYW1lLnBhZ2Uo
KS0+c2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyKCkubGF0Y2hpbmdBbGxvd3NTY3JvbGxpbmdJbkZy
YW1lKG1fZnJhbWUsIHNjcm9sbGFibGVBcmVhKTsKICNlbmRpZgorICAgIFBsYXRmb3JtV2hlZWxF
dmVudCBhZGp1c3RlZFdoZWVsRXZlbnQgPSBQbGF0Zm9ybVdoZWVsRXZlbnQoZXZlbnQpOworICAg
IGF1dG8gZmlsdGVyZWREZWx0YSA9IGFkanVzdGVkV2hlZWxFdmVudC5kZWx0YSgpOworICAgIGlm
ICh2aWV3LmdldCgpICYmIHNob3VsZEJsb2NrU2Nyb2xsQ2hhaW5pbmdXaXRoRnJhbWVWaWV3KHZp
ZXcuZ2V0KCksIGZpbHRlcmVkRGVsdGEpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGlm
IChhbGxvd1Njcm9sbGluZykgewogICAgICAgICAvLyBGSVhNRTogcHJvY2Vzc1doZWVsRXZlbnRG
b3JTY3JvbGxpbmcoKSBpcyBvbmx5IGNhbGxlZCBmb3IgRnJhbWVWaWV3IHNjcm9sbGluZywgbm90
IG92ZXJmbG93IHNjcm9sbGluZywgd2hpY2ggaXMgY29uZnVzaW5nLgotICAgICAgICBoYW5kbGVk
RXZlbnQgPSBwcm9jZXNzV2hlZWxFdmVudEZvclNjcm9sbGluZyhldmVudCwgc2Nyb2xsYWJsZUFy
ZWEsIGhhbmRsaW5nKTsKLSAgICAgICAgcHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxTbmFwKGV2
ZW50LCBzY3JvbGxhYmxlQXJlYSk7CisgICAgICAgIGFkanVzdGVkV2hlZWxFdmVudCA9IGFkanVz
dGVkV2hlZWxFdmVudC5jb3B5V2l0aERlbHRhQW5kVmVsb2NpdHkoZmlsdGVyZWREZWx0YSwgYWRq
dXN0ZWRXaGVlbEV2ZW50LnNjcm9sbGluZ1ZlbG9jaXR5KCkpOworICAgICAgICBoYW5kbGVkRXZl
bnQgPSBwcm9jZXNzV2hlZWxFdmVudEZvclNjcm9sbGluZyhhZGp1c3RlZFdoZWVsRXZlbnQsIHNj
cm9sbGFibGVBcmVhLCBoYW5kbGluZyk7CisgICAgICAgIHByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Ny
b2xsU25hcChhZGp1c3RlZFdoZWVsRXZlbnQsIHNjcm9sbGFibGVBcmVhKTsKICAgICB9CiAKICAg
ICByZXR1cm4gaGFuZGxlZEV2ZW50OwpAQCAtMzA0OSwxOCArMzA4MCwyMCBAQCBzdGF0aWMgdm9p
ZCBoYW5kbGVXaGVlbEV2ZW50UGhhc2VJblNjcm9sbGFibGVBcmVhKFNjcm9sbGFibGVBcmVhJiBz
Y3JvbGxhYmxlQXJlYQogCiBzdGF0aWMgYm9vbCBkaWRTY3JvbGxJblNjcm9sbGFibGVBcmVhKFNj
cm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSwgY29uc3QgV2hlZWxFdmVudCYgd2hlZWxFdmVu
dCkKIHsKKyAgICBGbG9hdFNpemUgZmlsdGVyZWREZWx0YSh3aGVlbEV2ZW50LmRlbHRhWCgpLCB3
aGVlbEV2ZW50LmRlbHRhWSgpKTsKKyAgICBzaG91bGRCbG9ja1Njcm9sbENoYWluaW5nV2l0aFNj
cm9sbGFibGVBcmVhKCZzY3JvbGxhYmxlQXJlYSwgZmlsdGVyZWREZWx0YSk7CiAgICAgU2Nyb2xs
R3JhbnVsYXJpdHkgc2Nyb2xsR3JhbnVsYXJpdHkgPSB3aGVlbEdyYW51bGFyaXR5VG9TY3JvbGxH
cmFudWxhcml0eSh3aGVlbEV2ZW50LmRlbHRhTW9kZSgpKTsKICAgICBib29sIGRpZEhhbmRsZVdo
ZWVsRXZlbnQgPSBmYWxzZTsKLSAgICBpZiAoZmxvYXQgYWJzb2x1dGVEZWx0YSA9IHN0ZDo6YWJz
KHdoZWVsRXZlbnQuZGVsdGFYKCkpKQotICAgICAgICBkaWRIYW5kbGVXaGVlbEV2ZW50IHw9IHNj
cm9sbGFibGVBcmVhLnNjcm9sbCh3aGVlbEV2ZW50LmRlbHRhWCgpID4gMCA/IFNjcm9sbFJpZ2h0
IDogU2Nyb2xsTGVmdCwgc2Nyb2xsR3JhbnVsYXJpdHksIGFic29sdXRlRGVsdGEpOworICAgIGlm
IChmbG9hdCBhYnNvbHV0ZURlbHRhID0gc3RkOjphYnMoZmlsdGVyZWREZWx0YS53aWR0aCgpKSkK
KyAgICAgICAgZGlkSGFuZGxlV2hlZWxFdmVudCB8PSBzY3JvbGxhYmxlQXJlYS5zY3JvbGwoZmls
dGVyZWREZWx0YS53aWR0aCgpID4gMCA/IFNjcm9sbFJpZ2h0IDogU2Nyb2xsTGVmdCwgc2Nyb2xs
R3JhbnVsYXJpdHksIGFic29sdXRlRGVsdGEpOwogCi0gICAgaWYgKGZsb2F0IGFic29sdXRlRGVs
dGEgPSBzdGQ6OmFicyh3aGVlbEV2ZW50LmRlbHRhWSgpKSkKLSAgICAgICAgZGlkSGFuZGxlV2hl
ZWxFdmVudCB8PSBzY3JvbGxhYmxlQXJlYS5zY3JvbGwod2hlZWxFdmVudC5kZWx0YVkoKSA+IDAg
PyBTY3JvbGxEb3duIDogU2Nyb2xsVXAsIHNjcm9sbEdyYW51bGFyaXR5LCBhYnNvbHV0ZURlbHRh
KTsKKyAgICBpZiAoZmxvYXQgYWJzb2x1dGVEZWx0YSA9IHN0ZDo6YWJzKGZpbHRlcmVkRGVsdGEu
aGVpZ2h0KCkpKQorICAgICAgICBkaWRIYW5kbGVXaGVlbEV2ZW50IHw9IHNjcm9sbGFibGVBcmVh
LnNjcm9sbChmaWx0ZXJlZERlbHRhLmhlaWdodCgpID4gMCA/IFNjcm9sbERvd24gOiBTY3JvbGxV
cCwgc2Nyb2xsR3JhbnVsYXJpdHksIGFic29sdXRlRGVsdGEpOwogCiAgICAgcmV0dXJuIGRpZEhh
bmRsZVdoZWVsRXZlbnQ7CiB9CiAKLWJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50
SW5BcHByb3ByaWF0ZUVuY2xvc2luZ0JveChOb2RlKiBzdGFydE5vZGUsIGNvbnN0IFdoZWVsRXZl
bnQmIHdoZWVsRXZlbnQsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyZWRQbGF0Zm9ybURlbHRhLCBj
b25zdCBGbG9hdFNpemUmIGZpbHRlcmVkVmVsb2NpdHksIE9wdGlvblNldDxFdmVudEhhbmRsaW5n
PiBldmVudEhhbmRsaW5nKQorYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnRJbkFw
cHJvcHJpYXRlRW5jbG9zaW5nQm94KE5vZGUqIHN0YXJ0Tm9kZSwgY29uc3QgV2hlZWxFdmVudCYg
d2hlZWxFdmVudCwgRmxvYXRTaXplJiBmaWx0ZXJlZFBsYXRmb3JtRGVsdGEsIGNvbnN0IEZsb2F0
U2l6ZSYgZmlsdGVyZWRWZWxvY2l0eSwgT3B0aW9uU2V0PEV2ZW50SGFuZGxpbmc+IGV2ZW50SGFu
ZGxpbmcpCiB7CiAgICAgYm9vbCBzaG91bGRIYW5kbGVFdmVudCA9IHdoZWVsRXZlbnQuZGVsdGFY
KCkgfHwgd2hlZWxFdmVudC5kZWx0YVkoKTsKICNpZiBFTkFCTEUoV0hFRUxfRVZFTlRfTEFUQ0hJ
TkcpCkBAIC0zMDgzLDggKzMxMTYsMTggQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVs
RXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94KE5vZGUqIHN0YXJ0Tm9kZSwgY28KICAgICAg
ICAgcmV0dXJuIGRpZFNjcm9sbEluU2Nyb2xsYWJsZUFyZWEoZG93bmNhc3Q8UmVuZGVyTGlzdEJv
eD4oaW5pdGlhbEVuY2xvc2luZ0JveCksIHdoZWVsRXZlbnQpOwogCiAgICAgUmVuZGVyQm94KiBj
dXJyZW50RW5jbG9zaW5nQm94ID0gJmluaXRpYWxFbmNsb3NpbmdCb3g7CisjaWYgUExBVEZPUk0o
TUFDKQorICAgIGF1dG8gYmlhc2VkRGVsdGEgPSBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6
d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoRmxvYXRTaXplKHdoZWVsRXZlbnQuZGVs
dGFYKCksIHdoZWVsRXZlbnQuZGVsdGFZKCkpKTsKKyNlbHNlCisgICAgRmxvYXRTaXplIGJpYXNl
ZERlbHRhKHdoZWVsRXZlbnQuZGVsdGFYKCksIHdoZWVsRXZlbnQuZGVsdGFZKCkpOworI2VuZGlm
CiAgICAgd2hpbGUgKGN1cnJlbnRFbmNsb3NpbmdCb3gpIHsKICAgICAgICAgaWYgKGF1dG8qIGJv
eFNjcm9sbGFibGVBcmVhID0gY3VycmVudEVuY2xvc2luZ0JveC0+bGF5ZXIoKSA/IGN1cnJlbnRF
bmNsb3NpbmdCb3gtPmxheWVyKCktPnNjcm9sbGFibGVBcmVhKCkgOiBudWxscHRyKSB7CisgICAg
ICAgICAgICBpZiAoYm94U2Nyb2xsYWJsZUFyZWEgJiYgc2hvdWxkQmxvY2tTY3JvbGxDaGFpbmlu
Z1dpdGhTY3JvbGxhYmxlQXJlYShib3hTY3JvbGxhYmxlQXJlYSwgYmlhc2VkRGVsdGEpKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKGJveFNjcm9sbGFibGVBcmVhLT5ob3Jpem9udGFsT3ZlcnNjcm9s
bEJlaGF2aW9yKCkgIT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpBdXRvICYmICFmaWx0ZXJlZFBsYXRm
b3JtRGVsdGEuaGVpZ2h0KCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGF1
dG8gcGxhdGZvcm1FdmVudCA9IHdoZWVsRXZlbnQudW5kZXJseWluZ1BsYXRmb3JtRXZlbnQoKTsK
ICAgICAgICAgICAgIGJvb2wgc2Nyb2xsaW5nV2FzSGFuZGxlZDsKICAgICAgICAgICAgIGlmIChw
bGF0Zm9ybUV2ZW50KSB7CkBAIC0zMTA3LDcgKzMxNTAsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6
aGFuZGxlV2hlZWxFdmVudEluQXBwcm9wcmlhdGVFbmNsb3NpbmdCb3goTm9kZSogc3RhcnROb2Rl
LCBjbwogYm9vbCBFdmVudEhhbmRsZXI6OnNjcm9sbGFibGVBcmVhQ2FuSGFuZGxlRXZlbnQoY29u
c3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBTY3JvbGxhYmxlQXJlYSYgc2Nyb2xs
YWJsZUFyZWEpCiB7CiAjaWYgUExBVEZPUk0oTUFDKQotICAgIGF1dG8gYmlhc2VkRGVsdGEgPSBT
Y3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGlj
YWwod2hlZWxFdmVudCk7CisgICAgYXV0byBiaWFzZWREZWx0YSA9IFNjcm9sbGluZ0VmZmVjdHND
b250cm9sbGVyOjp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbCh3aGVlbEV2ZW50LmRl
bHRhKCkpOwogI2Vsc2UKICAgICBhdXRvIGJpYXNlZERlbHRhID0gd2hlZWxFdmVudC5kZWx0YSgp
OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAppbmRleCBlYWMxZDVmMzQwMDg2
YzM2MzZiZmY2MTA5NjUxZGVjOWY0ZWIzMGZlLi43ODdkNTNkMTkzN2NjNTdhODFjOGUxYzE4ZWQz
YWVhOTQzMGIxMTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKQEAgLTQ3Niw3ICs0
NzYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxTbmFw
KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIGNvbnN0IFdlYWtQdHI8U2Nyb2xsYWJsZUFyZWE+
Jik7CiAgICAgYm9vbCBjb21wbGV0ZVdpZGdldFdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVl
bEV2ZW50JiwgY29uc3QgV2Vha1B0cjxXaWRnZXQ+JiwgY29uc3QgV2Vha1B0cjxTY3JvbGxhYmxl
QXJlYT4mKTsKIAotICAgIGJvb2wgaGFuZGxlV2hlZWxFdmVudEluQXBwcm9wcmlhdGVFbmNsb3Np
bmdCb3goTm9kZSogc3RhcnROb2RlLCBjb25zdCBXaGVlbEV2ZW50JiwgY29uc3QgRmxvYXRTaXpl
JiBmaWx0ZXJlZFBsYXRmb3JtRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyZWRWZWxvY2l0
eSwgT3B0aW9uU2V0PEV2ZW50SGFuZGxpbmc+KTsKKyAgICBib29sIGhhbmRsZVdoZWVsRXZlbnRJ
bkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94KE5vZGUqIHN0YXJ0Tm9kZSwgY29uc3QgV2hlZWxFdmVu
dCYsIEZsb2F0U2l6ZSYgZmlsdGVyZWRQbGF0Zm9ybURlbHRhLCBjb25zdCBGbG9hdFNpemUmIGZp
bHRlcmVkVmVsb2NpdHksIE9wdGlvblNldDxFdmVudEhhbmRsaW5nPik7CiAKICAgICBib29sIGhh
bmRsZVdoZWVsRXZlbnRJblNjcm9sbGFibGVBcmVhKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYs
IFNjcm9sbGFibGVBcmVhJiwgT3B0aW9uU2V0PEV2ZW50SGFuZGxpbmc+KTsKICAgICBzdGQ6Om9w
dGlvbmFsPFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlPiB1cGRhdGVXaGVlbEdlc3R1cmVTdGF0ZShj
b25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBPcHRpb25TZXQ8RXZlbnRIYW5kbGluZz4pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tCmluZGV4IDFlY2QwY2M3OGVk
NTU1NjRmMDMyYjMwYzljODNlYmY1NzRhZGU4MDAuLjYxMGQxYWQzMzAyNWViM2UxNWM0NDYwMTdj
Y2I2YWU5OGVmN2Y3ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50
SGFuZGxlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJN
YWMubW0KQEAgLTgxNSw2ICs4MTUsOCBAQCBzdGF0aWMgQ29udGFpbmVyTm9kZSogZmluZEVuY2xv
c2luZ1Njcm9sbGFibGVDb250YWluZXIoQ29udGFpbmVyTm9kZSogbm9kZSwgY29ucwogICAgICAg
ICBhdXRvKiBzY3JvbGxhYmxlQXJlYSA9IHNjcm9sbGFibGVBcmVhRm9yQm94KCpib3gpOwogICAg
ICAgICBpZiAoIXNjcm9sbGFibGVBcmVhKQogICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
IGlmICgoc2Nyb2xsYWJsZUFyZWEtPmhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSAhPSBP
dmVyc2Nyb2xsQmVoYXZpb3I6OkF1dG8gJiYgc2Nyb2xsYWJsZUFyZWEtPnZlcnRpY2FsT3ZlcnNj
cm9sbEJlaGF2aW9yKCkgIT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpBdXRvKSB8fCAoc2Nyb2xsYWJs
ZUFyZWEtPmhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSAhPSBPdmVyc2Nyb2xsQmVoYXZp
b3I6OkF1dG8gJiYgIXdoZWVsRXZlbnQuZGVsdGEoKS5oZWlnaHQoKSkgfHwgKHNjcm9sbGFibGVB
cmVhLT52ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpICE9IE92ZXJzY3JvbGxCZWhhdmlvcjo6
QXV0byAmJiAhd2hlZWxFdmVudC5kZWx0YSgpLndpZHRoKCkpKQorICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKICAgICAgICAgaWYgKHdoZWVsRXZlbnQucGhhc2UoKSA9PSBQbGF0Zm9ybVdo
ZWVsRXZlbnRQaGFzZTo6TWF5QmVnaW4gfHwgd2hlZWxFdmVudC5waGFzZSgpID09IFBsYXRmb3Jt
V2hlZWxFdmVudFBoYXNlOjpDYW5jZWxsZWQpCiAgICAgICAgICAgICByZXR1cm4gY2FuZGlkYXRl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0Nv
bnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHNDb250
cm9sbGVyLmgKaW5kZXggYzdhM2EyZjg1ZWEwZWQ1YTdjNmE5NGJlMWJmMzU3MjhiMThjODhmMy4u
MDY2NzkxZDBjZTQzYjZkZmM5Mzk2OTY1MDgxNDI0MjI4MmJmZTdmZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5oCkBAIC0x
NzQsNyArMTc0LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNVc2VyU2Nyb2xsSW5Qcm9ncmVzcygp
IGNvbnN0OwogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIHN0YXRpYyBGbG9hdFNpemUgd2hlZWxE
ZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jik7Cisg
ICAgc3RhdGljIEZsb2F0U2l6ZSB3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbChjb25z
dCBGbG9hdFNpemUmKTsKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBoYW5kbGVkLgogICAgIGJv
b2wgcHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxTbmFwKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVu
dCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1h
dG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFj
Lm1tCmluZGV4IDUzYTQwNzUzZGI3NDdjNWFjNGIxZjdiMjFhOWFkNWMxZmY0NWE4MzYuLmZjYWE5
ZjQxMmIxNGY2OGVjNjZjNDEwZDVkZTVhYTg1MGE0YmRlZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0KQEAgLTk0LDkgKzk0LDkgQEAg
dm9pZCBTY3JvbGxBbmltYXRvck1hYzo6aGFuZGxlV2hlZWxFdmVudFBoYXNlKFBsYXRmb3JtV2hl
ZWxFdmVudFBoYXNlIHBoYXNlKQogYm9vbCBTY3JvbGxBbmltYXRvck1hYzo6c2hvdWxkRm9yd2Fy
ZFdoZWVsRXZlbnRzVG9QYXJlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50
KSBjb25zdAogewogICAgIGlmIChzdGQ6OmFicyh3aGVlbEV2ZW50LmRlbHRhWSgpKSA+PSBzdGQ6
OmFicyh3aGVlbEV2ZW50LmRlbHRhWCgpKSkKLSAgICAgICAgcmV0dXJuICFhbGxvd3NWZXJ0aWNh
bFN0cmV0Y2hpbmcod2hlZWxFdmVudCk7CisgICAgICAgIHJldHVybiBtX3Njcm9sbGFibGVBcmVh
LnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgPT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpBdXRv
ICYmICFhbGxvd3NWZXJ0aWNhbFN0cmV0Y2hpbmcod2hlZWxFdmVudCk7CiAKLSAgICByZXR1cm4g
IWFsbG93c0hvcml6b250YWxTdHJldGNoaW5nKHdoZWVsRXZlbnQpOworICAgIHJldHVybiBtX3Nj
cm9sbGFibGVBcmVhLmhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSA9PSBPdmVyc2Nyb2xs
QmVoYXZpb3I6OkF1dG8gJiYgIWFsbG93c0hvcml6b250YWxTdHJldGNoaW5nKHdoZWVsRXZlbnQp
OwogfQogICAgIAogYm9vbCBTY3JvbGxBbmltYXRvck1hYzo6aGFuZGxlV2hlZWxFdmVudChjb25z
dCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpCkBAIC0xNDMsNiArMTQzLDkgQEAgc3Rh
dGljIGJvb2wgZ2VzdHVyZVNob3VsZEJlZ2luU25hcChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQm
IHdoZWVsRXZlbnQsIFNjcm9sbEUKIAogYm9vbCBTY3JvbGxBbmltYXRvck1hYzo6YWxsb3dzVmVy
dGljYWxTdHJldGNoaW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCkgY29u
c3QKIHsKKyAgICBpZiAobV9zY3JvbGxhYmxlQXJlYS52ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlv
cigpID09IE92ZXJzY3JvbGxCZWhhdmlvcjo6Tm9uZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIAogICAgIHN3aXRjaCAobV9zY3JvbGxhYmxlQXJlYS52ZXJ0aWNhbFNjcm9sbEVsYXN0aWNp
dHkoKSkgewogICAgIGNhc2UgU2Nyb2xsRWxhc3RpY2l0eTo6QXV0b21hdGljOiB7CiAgICAgICAg
IFNjcm9sbGJhciogaFNjcm9sbGVyID0gbV9zY3JvbGxhYmxlQXJlYS5ob3Jpem9udGFsU2Nyb2xs
YmFyKCk7CkBAIC0xNjYsNiArMTY5LDkgQEAgYm9vbCBTY3JvbGxBbmltYXRvck1hYzo6YWxsb3dz
VmVydGljYWxTdHJldGNoaW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWwKIAogYm9v
bCBTY3JvbGxBbmltYXRvck1hYzo6YWxsb3dzSG9yaXpvbnRhbFN0cmV0Y2hpbmcoY29uc3QgUGxh
dGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50KSBjb25zdAogeworICAgIGlmIChtX3Njcm9sbGFi
bGVBcmVhLmhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSA9PSBPdmVyc2Nyb2xsQmVoYXZp
b3I6Ok5vbmUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKICAgICBzd2l0Y2ggKG1fc2Ny
b2xsYWJsZUFyZWEuaG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkoKSkgewogICAgIGNhc2UgU2Ny
b2xsRWxhc3RpY2l0eTo6QXV0b21hdGljOiB7CiAgICAgICAgIFNjcm9sbGJhciogaFNjcm9sbGVy
ID0gbV9zY3JvbGxhYmxlQXJlYS5ob3Jpem9udGFsU2Nyb2xsYmFyKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIu
bW0KaW5kZXggODAwY2M1MTEwNzVhYWIwMjA4ZTg5NjczNWEzZTliZDFlMzAyMjgxMS4uMGQxMjU2
MGM0N2I2MzQ4ZTc3ZjYzNmFlYjQ0NjI1YjcxNzU1NDI3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5tbQpA
QCAtMzM3LDkgKzMzNyw5IEBAIGJvb2wgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OmFwcGx5
U2Nyb2xsRGVsdGFXaXRoU3RyZXRjaGluZyhjb25zdCBQbGF0Zm9ybVdoCiAgICAgcmV0dXJuIGNh
blN0YXJ0QW5pbWF0aW9uOwogfQogCi1GbG9hdFNpemUgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xs
ZXI6OndoZWVsRGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRpY2FsKGNvbnN0IFBsYXRmb3JtV2hlZWxF
dmVudCYgd2hlZWxFdmVudCkKK0Zsb2F0U2l6ZSBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6
d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoY29uc3QgRmxvYXRTaXplJiB3aGVlbERl
bHRhKQogewotICAgIHJldHVybiBkZWx0YUFsaWduZWRUb0RvbWluYW50QXhpcyh3aGVlbEV2ZW50
LmRlbHRhKCkpOworICAgIHJldHVybiBkZWx0YUFsaWduZWRUb0RvbWluYW50QXhpcyh3aGVlbERl
bHRhKTsKIH0KIAogdm9pZCBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6dXBkYXRlUnViYmVy
QmFuZEFuaW1hdGluZ1N0YXRlKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5YjA2M2Q0NjEwOGJlZWNiNzlhMjJkYzhlMWE4
M2QzOWFjNzNlMjJiLi5iNjg4ZTQ2NzJjYTRkNmEzZGY2ZmMzNDFkOWY2NWVmNGZmNmRjODE0IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMTItMDIgIE5pa29sYW9zIE1vdWNodGFyaXMgIDxu
bW91Y2h0YXJpc0BhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IENTUyBvdmVyc2Nyb2xs
LWJlaGF2aW9yIGZvciBzeW5jaHJvbm91cyBzY3JvbGwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjk2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvcmVzb3VyY2VzL292ZXJz
Y3JvbGwtYmVoYXZpb3Itc3VwcG9ydC5qczogQWRkZWQuCisgICAgICAgIChnZXREZWx0YXMpOgor
ICAgICAgICAoYXN5bmMgbW91c2VXaGVlbFNjcm9sbEFuZFdhaXQpOgorICAgICAgICAqIGZhc3Qv
c2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJl
aGF2aW9yLWlmcmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9zeW5j
LXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVo
YXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sOiBBZGRlZC4KKwogMjAyMS0xMS0zMCAgUm9i
ZXJ0IEplbm5lciAgPEplbm5lckBhcHBsZS5jb20+CiAKICAgICAgICAgUkVCQVNFTElORSBbIE1v
bnRlcmV5IF1mYXN0L2Nzcy9jb250aW51YXRpb25DcmFzaC5odG1sIChsYXlvdXQtdGVzdCkgaXMg
YSBjb25zdGFudCB0ZXh0IGZhaWx1cmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Ny
b2xsaW5nL3Jlc291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXN1cHBvcnQuanMgYi9MYXlvdXRU
ZXN0cy9mYXN0L3Njcm9sbGluZy9yZXNvdXJjZXMvb3ZlcnNjcm9sbC1iZWhhdmlvci1zdXBwb3J0
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmNiZDIyMmU5MGI1MmExOTMwYjdmY2ZlNDQyM2U5NDU4M2MwNDYwMGUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9yZXNvdXJjZXMv
b3ZlcnNjcm9sbC1iZWhhdmlvci1zdXBwb3J0LmpzCkBAIC0wLDAgKzEsMzkgQEAKK2Z1bmN0aW9u
IGdldERlbHRhcyhkaXJlY3Rpb24pIHsKKyAgICB2YXIgZGVsdGFYID0gMDsKKyAgICB2YXIgZGVs
dGFZID0gMDsKKyAgICBpZiAoZGlyZWN0aW9uID09ICJkb3duIikKKyAgICAgICAgZGVsdGFZID0g
LTUKKyAgICBlbHNlIGlmIChkaXJlY3Rpb24gPT0gInVwIikKKyAgICAgICAgZGVsdGFZID0gNTsK
KyAgICBlbHNlIGlmIChkaXJlY3Rpb24gPT0gInJpZ2h0IikKKyAgICAgICAgZGVsdGFYID0gLTU7
CisgICAgZWxzZSBpZiAoZGlyZWN0aW9uID09ICJsZWZ0IikKKyAgICAgICAgZGVsdGFYID0gNTsK
KyAgICByZXR1cm4geworICAgICAgICBYOiBkZWx0YVgsCisgICAgICAgIFk6IGRlbHRhWQorICAg
IH07Cit9CisKK2FzeW5jIGZ1bmN0aW9uIG1vdXNlV2hlZWxTY3JvbGxBbmRXYWl0KHgsIHksIGJl
Z2luWCwgYmVnaW5ZLCBkZWx0YVgsIGRlbHRhWSkKK3sKKyAgICBpZiAoYmVnaW5YID09PSB1bmRl
ZmluZWQpCisgICAgICAgIGJlZ2luWCA9IDA7CisgICAgaWYgKGJlZ2luWSA9PT0gdW5kZWZpbmVk
KQorICAgICAgICBiZWdpblkgPSAtMTsKKyAgICBpZiAoZGVsdGFYID09PSB1bmRlZmluZWQpCisg
ICAgICAgIGRlbHRhWCA9IDA7CisgICAgaWYgKGRlbHRhWSA9PT0gdW5kZWZpbmVkKQorICAgICAg
ICBkZWx0YVkgPSAtMTA7CisKKyAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsK
KyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoYmVnaW5YLCBiZWdpblksICJiZWdh
biIsICJub25lIik7CisgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGRlbHRhWCwgZGVsdGFZLCAiY2hhbmdlZCIsICJub25lIik7CisgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICJl
bmRlZCIsICJub25lIik7CisgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4geworICAg
ICAgICBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFt
ZShyZXNvbHZlKTsKKyAgICAgICAgfSwgNTAwKTsKKyAgICB9KTsKK30KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5j
LXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVt
ZW50LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNzE1MGZmNjBiNWRiZGQwYjRhN2FjNmY4M2Zi
NTZmNTdjZDJjZDgyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxp
bmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50LWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDIwIEBACisKK1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdp
dGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBhdXRvLgorUEFTUyBFbGVtZW50IHZlcnRpY2Fs
IHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBhdXRvLgorUEFTUyBF
bGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBj
b250YWluIGF1dG8uCitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVy
c2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGF1dG8uCitQQVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBz
Y3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgYXV0by4KK1BBU1MgRWxl
bWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUg
YXV0by4KK1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9s
bC1iZWhhdmlvcjogYXV0byBjb250YWluLgorUEFTUyBFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0
ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBjb250YWluLgorUEFTUyBFbGVtZW50
IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWlu
IGNvbnRhaW4uCitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Ny
b2xsLWJlaGF2aW9yOiBjb250YWluIGNvbnRhaW4uCitQQVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBz
Y3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgY29udGFpbi4KK1BBU1Mg
RWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5v
bmUgY29udGFpbi4KK1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3Zl
cnNjcm9sbC1iZWhhdmlvcjogYXV0byBub25lLgorUEFTUyBFbGVtZW50IHZlcnRpY2FsIHNjcm9s
bCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBub25lLgorUEFTUyBFbGVtZW50
IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWlu
IG5vbmUuCitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xs
LWJlaGF2aW9yOiBjb250YWluIG5vbmUuCitQQVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwg
dGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgbm9uZS4KK1BBU1MgRWxlbWVudCB2
ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgbm9uZS4K
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3Zl
cnNjcm9sbC1iZWhhdmlvci1lbGVtZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGlu
Zy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5iNjY0NzZmMDVmZDJmNDAzYWE0ZTZlZGJmOGRiZmZlNGI3MzI5YzIwCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1i
ZWhhdmlvci1lbGVtZW50Lmh0bWwKQEAgLTAsMCArMSw4NiBAQAorPCFkb2N0eXBlIGh0bWw+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXN1cHBvcnQuanMi
Pjwvc2NyaXB0PgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL2RyYWZ0cy5jc3N3Zy5v
cmcvY3NzLW92ZXJzY3JvbGwtYmVoYXZpb3IiPgorPHN0eWxlPgorICAgIC5zY3JvbGxpbmcgewor
ICAgICAgICBvdmVyZmxvdzogc2Nyb2xsOworICAgIH0KKyAgICAuc2Nyb2xsQ29udGVudCB7Cisg
ICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICB9CisgICAg
I3Jvb3QgeworICAgICAgICB3aWR0aDogMjAwcHg7CisgICAgICAgIGhlaWdodDogMjAwcHg7Cisg
ICAgfQorICAgICNzY3JvbGxlciB7CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgaGVp
Z2h0OiAxMDBweDsKKyAgICB9Cis8L3N0eWxlPgorPGRpdiBpZD0ncm9vdCcgY2xhc3M9InNjcm9s
bGluZyI+CisgICAgPGRpdiBpZD0nc2Nyb2xsZXInIGNsYXNzPSJzY3JvbGxpbmciPgorICAgICAg
ICA8ZGl2IGNsYXNzPSJzY3JvbGxDb250ZW50Ij48L2Rpdj4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2
IGNsYXNzPSJzY3JvbGxDb250ZW50Ij48L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0PgorY29uc3Qg
cm9vdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyb290Jyk7Citjb25zdCBzY3JvbGxlciA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY3JvbGxlcicpOwordmFyIG92ZXJzY3JvbGxEYXRh
cyA9IFtbImF1dG8iLCAiYXV0byIsIHRydWUsIHRydWVdLAorICAgICAgICAgICAgICAgICAgICAg
ICAgWyJjb250YWluIiwgImF1dG8iLCBmYWxzZSwgdHJ1ZV0sCisgICAgICAgICAgICAgICAgICAg
ICAgICBbIm5vbmUiLCAiYXV0byIsIGZhbHNlLCB0cnVlXSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIFsiYXV0byIsICJjb250YWluIiwgdHJ1ZSwgZmFsc2VdLAorICAgICAgICAgICAgICAgICAg
ICAgICAgWyJjb250YWluIiwgImNvbnRhaW4iLCBmYWxzZSwgZmFsc2VdLAorICAgICAgICAgICAg
ICAgICAgICAgICAgWyJub25lIiwgImNvbnRhaW4iLCBmYWxzZSwgZmFsc2VdLAorICAgICAgICAg
ICAgICAgICAgICAgICAgWyJhdXRvIiwgIm5vbmUiLCB0cnVlLCBmYWxzZV0sCisgICAgICAgICAg
ICAgICAgICAgICAgICBbImNvbnRhaW4iLCAibm9uZSIsIGZhbHNlLCBmYWxzZV0sCisgICAgICAg
ICAgICAgICAgICAgICAgICBbIm5vbmUiLCAibm9uZSIsIGZhbHNlLCBmYWxzZV1dOworCitmdW5j
dGlvbiByZXNldFRlc3QoKSB7CisgICAgLy8gVHJ5IHZhcmlvdXMgbWV0aG9kcyB0byBlbnN1cmUg
dGhlIGVsZW1lbnQgcG9zaXRpb24gaXMgcmVzZXQgaW1tZWRpYXRlbHkuCisgICAgc2Nyb2xsZXIu
c2Nyb2xsTGVmdCA9IDMwMDsKKyAgICBzY3JvbGxlci5zY3JvbGxUb3AgPSAzMDA7CisgICAgc2Ny
b2xsZXIuc2Nyb2xsVG8oMzAwLCAzMDApOworCisgICAgcm9vdC5zY3JvbGxMZWZ0ID0gMDsKKyAg
ICByb290LnNjcm9sbFRvcCA9IDA7CisgICAgcm9vdC5zY3JvbGxUbygwLCAwKTsKK30KKworZnVu
Y3Rpb24gc3RhcnRUZXN0KCkgeworICAgIG92ZXJzY3JvbGxEYXRhcy5mb3JFYWNoKChbb3ZlcnNj
cm9sbFgsIG92ZXJzY3JvbGxZLCBwcm9wYWdhdGVYLCBwcm9wYWdhdGVZXSkgPT4geworICAgICAg
ICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgICAgICAgICAgcmVzZXRUZXN0KCk7CisgICAgICAg
ICAgICBzY3JvbGxlci5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JYID0gb3ZlcnNjcm9sbFg7Cisg
ICAgICAgICAgICBzY3JvbGxlci5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JZID0gb3ZlcnNjcm9s
bFk7CisgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoOworCisgICAgICAgICAg
ICB2YXIgeCA9IHNjcm9sbGVyLmNsaWVudFdpZHRoIC8gMjsKKyAgICAgICAgICAgIHZhciB5ID0g
c2Nyb2xsZXIuY2xpZW50SGVpZ2h0IC8gMjsKKyAgICAgICAgICAgIHZhciBkZWx0YSA9IGdldERl
bHRhcygicmlnaHQiKTsKKyAgICAgICAgICAgIHJldHVybiBtb3VzZVdoZWVsU2Nyb2xsQW5kV2Fp
dCh4LCB5LCBkZWx0YS5YLCBkZWx0YS5ZLCBkZWx0YS5YLCBkZWx0YS5ZKS50aGVuKCgpID0+IHsK
KyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsTGVmdCA+IDAsIHByb3Bh
Z2F0ZVgsICdDb250aW51ZSB1cCB0aGUgaG9yaXpvbnRhbCBzY3JvbGwgY2hhaW5pbmcnKTsKKyAg
ICAgICAgICAgIH0pOworICAgICAgICB9LCAnRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0
IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogJyArIG92ZXJzY3JvbGxYICsgJyAnICsgb3ZlcnNj
cm9sbFkgKyAnLicpOworCisgICAgICAgIHByb21pc2VfdGVzdCgoKSA9PiB7CisgICAgICAgICAg
ICByZXNldFRlc3QoKTsKKyAgICAgICAgICAgIHNjcm9sbGVyLnN0eWxlLm92ZXJzY3JvbGxCZWhh
dmlvclggPSBvdmVyc2Nyb2xsWDsKKyAgICAgICAgICAgIHNjcm9sbGVyLnN0eWxlLm92ZXJzY3Jv
bGxCZWhhdmlvclkgPSBvdmVyc2Nyb2xsWTsKKworICAgICAgICAgICAgdmFyIHggPSBzY3JvbGxl
ci5jbGllbnRXaWR0aCAvIDI7CisgICAgICAgICAgICB2YXIgeSA9IHNjcm9sbGVyLmNsaWVudEhl
aWdodCAvIDI7CisgICAgICAgICAgICB2YXIgZGVsdGEgPSBnZXREZWx0YXMoImRvd24iKTsKKyAg
ICAgICAgICAgIHJldHVybiBtb3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCh4LCB5LCBkZWx0YS5YLCBk
ZWx0YS5ZLCBkZWx0YS5YLCBkZWx0YS5ZKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBh
c3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsVG9wID4gMCwgcHJvcGFnYXRlWSwgJ0NvbnRpbnVlIHVw
IHRoZSB2ZXJ0aWNhbCBzY3JvbGwgY2hhaW5pbmcnKTsKKyAgICAgICAgICAgIH0pOworICAgICAg
ICB9LCAnRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZp
b3I6ICcgKyBvdmVyc2Nyb2xsWCArICcgJyArIG92ZXJzY3JvbGxZICsgJy4nKTsKKyAgICB9KTsK
K30KKworYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIHN0YXJ0VGVzdCk7Cis8L3NjcmlwdD4KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Nj
cm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJl
aGF2aW9yLWlmcmFtZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTAwYTBiN2Q5MDViODdjMWRi
NzYyNjk0ZmQwMDYzOGYxOTc2OTUzNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDIxIEBACisKKworUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3Jv
bGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gYXV0by4KK1BBU1MgSWZyYW1l
IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBhdXRv
LgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVo
YXZpb3I6IGNvbnRhaW4gYXV0by4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdp
dGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBhdXRvLgorUEFTUyBJZnJhbWUgaG9yaXpv
bnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgYXV0by4KK1BB
U1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjog
bm9uZSBhdXRvLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJz
Y3JvbGwtYmVoYXZpb3I6IGF1dG8gY29udGFpbi4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9s
bCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBjb250YWluLgorUEFTUyBJZnJh
bWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRh
aW4gY29udGFpbi4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNj
cm9sbC1iZWhhdmlvcjogY29udGFpbiBjb250YWluLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBz
Y3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgY29udGFpbi4KK1BBU1Mg
SWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9u
ZSBjb250YWluLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJz
Y3JvbGwtYmVoYXZpb3I6IGF1dG8gbm9uZS4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0
ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBub25lLgorUEFTUyBJZnJhbWUgaG9y
aXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gbm9u
ZS4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhh
dmlvcjogY29udGFpbiBub25lLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3
aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgbm9uZS4KK1BBU1MgSWZyYW1lIHZlcnRpY2Fs
IHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBub25lLgorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xs
LWJlaGF2aW9yLWlmcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1z
Y3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNjhlNWRh
ZWY5YTNiMWQwODU2YWI3M2FmZjE2ZTJjYWM1MmI4Yzk1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1p
ZnJhbWUuaHRtbApAQCAtMCwwICsxLDg2IEBACis8IWRvY3R5cGUgaHRtbD4KKworPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvb3ZlcnNjcm9sbC1iZWhhdmlvci1zdXBwb3J0LmpzIj48L3Njcmlw
dD4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1v
dmVyc2Nyb2xsLWJlaGF2aW9yIj4KKzxzdHlsZT4KKyAgICAuc2Nyb2xsaW5nIHsKKyAgICAgICAg
b3ZlcmZsb3c6IHNjcm9sbDsKKyAgICB9CisgICAgLnNjcm9sbENvbnRlbnQgeworICAgICAgICB3
aWR0aDogMzAwcHg7CisgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgIGJhY2tncm91bmQ6
IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJlZCwgYmx1ZSk7CisgICAgfQorICAgICNyb290IHsK
KyAgICAgICAgd2lkdGg6IDIwMHB4OworICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAgIH0KKyAg
ICAjc2Nyb2xsZXIgeworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDogMTAw
cHg7CisgICAgICAgIG92ZXJzY3JvbGwtYmVoYXZpb3IteTogYXV0bzsKKyAgICB9Cis8L3N0eWxl
PgorPGRpdiBpZD0ncm9vdCcgY2xhc3M9InNjcm9sbGluZyI+CisgICAgPGlmcmFtZSBpZD0nc2Ny
b2xsZXInIHNyY2RvYz0iPGh0bWw+PGRpdiBzdHlsZT0nd2lkdGg6IDMwMHB4OyBoZWlnaHQ6IDMw
MHB4Oyc+PC9kaXY+PC9odG1sPgorICAgICAgICAiPjwvaWZyYW1lPgorICAgIDxkaXYgY2xhc3M9
InNjcm9sbENvbnRlbnQiPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+CisgICAgY29uc3Qgcm9v
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyb290Jyk7CisgICAgY29uc3Qgc2Nyb2xsZXIg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2Nyb2xsZXInKTsKKyAgICB2YXIgb3ZlcnNjcm9s
bERhdGFzID0gW1siYXV0byIsICJhdXRvIiwgdHJ1ZSwgdHJ1ZV0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgWyJjb250YWluIiwgImF1dG8iLCBmYWxzZSwgdHJ1ZV0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgWyJub25lIiwgImF1dG8iLCBmYWxzZSwgdHJ1ZV0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgWyJhdXRvIiwgImNvbnRhaW4iLCB0cnVlLCBmYWxzZV0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJjb250YWluIiwgImNvbnRhaW4iLCBmYWxzZSwg
ZmFsc2VdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsibm9uZSIsICJjb250YWluIiwg
ZmFsc2UsIGZhbHNlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImF1dG8iLCAibm9u
ZSIsIHRydWUsIGZhbHNlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImNvbnRhaW4i
LCAibm9uZSIsIGZhbHNlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJu
b25lIiwgIm5vbmUiLCBmYWxzZSwgZmFsc2VdXTsKKyAgICBmdW5jdGlvbiByZXNldFRlc3QoKSB7
CisgICAgICAgIC8vIFRyeSB2YXJpb3VzIG1ldGhvZHMgdG8gZW5zdXJlIHRoZSBlbGVtZW50IHBv
c2l0aW9uIGlzIHJlc2V0IGltbWVkaWF0ZWx5LgorICAgICAgICBzY3JvbGxlci5jb250ZW50V2lu
ZG93LnNjcm9sbFggPSAzMDA7CisgICAgICAgIHNjcm9sbGVyLmNvbnRlbnRXaW5kb3cuc2Nyb2xs
WSA9IDMwMDsKKyAgICAgICAgc2Nyb2xsZXIuY29udGVudFdpbmRvdy5zY3JvbGxUbygzMDAsIDMw
MCk7CisgICAgICAgIHJvb3Quc2Nyb2xsTGVmdCA9IDA7CisgICAgICAgIHJvb3Quc2Nyb2xsVG9w
ID0gMDsKKyAgICAgICAgcm9vdC5zY3JvbGxUbygwLCAwKTsKKyAgICB9CisKKyAgICBmdW5jdGlv
biBvdmVyc2Nyb2xsQmVoYXZpb3JUZXN0KCkgeworICAgICAgICBvdmVyc2Nyb2xsRGF0YXMuZm9y
RWFjaCgoW292ZXJzY3JvbGxYLCBvdmVyc2Nyb2xsWSwgcHJvcGFnYXRlWCwgcHJvcGFnYXRlWV0p
ID0+IHsKKyAgICAgICAgICAgIHByb21pc2VfdGVzdCgoKSA9PiB7CisgICAgICAgICAgICAgICAg
cmVzZXRUZXN0KCk7CisgICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IHNjcm9sbGVyLmNvbnRl
bnRXaW5kb3cuZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImh0bWwiKVswXTsKKyAgICAg
ICAgICAgICAgICB0YXJnZXQuc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWCA9IG92ZXJzY3JvbGxY
OworICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JZID0gb3Zl
cnNjcm9sbFk7CisgICAgICAgICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAv
IDI7CisgICAgICAgICAgICAgICAgdmFyIHkgPSBzY3JvbGxlci5jbGllbnRIZWlnaHQgLyAyOwor
ICAgICAgICAgICAgICAgIHZhciBkZWx0YSA9IGdldERlbHRhcygicmlnaHQiKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gbW91c2VXaGVlbFNjcm9sbEFuZFdhaXQoeCwgeSwgZGVsdGEuWCwgZGVs
dGEuWSwgZGVsdGEuWCwgZGVsdGEuWSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgICAg
IGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxMZWZ0ID4gMCwgcHJvcGFnYXRlWCwgJ0NvbnRpbnVl
IHVwIHRoZSBob3Jpem9udGFsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAgICAgICAgICAgIH0p
OworICAgICAgICAgICAgfSwgJ0lmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3Zl
cnNjcm9sbC1iZWhhdmlvcjogJyArIG92ZXJzY3JvbGxYICsgJyAnICsgb3ZlcnNjcm9sbFkgKyAn
LicpOworCisgICAgICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgICAgICAgICAgICAg
IHJlc2V0VGVzdCgpOworICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSBzY3JvbGxlci5jb250
ZW50V2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJodG1sIilbMF07CisgICAg
ICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclggPSBvdmVyc2Nyb2xs
WDsKKyAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWSA9IG92
ZXJzY3JvbGxZOworCisgICAgICAgICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0
aCAvIDI7CisgICAgICAgICAgICAgICAgdmFyIHkgPSBzY3JvbGxlci5jbGllbnRIZWlnaHQgLyAy
OworICAgICAgICAgICAgICAgIHZhciBkZWx0YSA9IGdldERlbHRhcygiZG93biIpOworICAgICAg
ICAgICAgICAgIHJldHVybiBtb3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCh4LCB5LCBkZWx0YS5YLCBk
ZWx0YS5ZLCBkZWx0YS5YLCBkZWx0YS5ZKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICAg
ICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbFRvcCA+IDAsIHByb3BhZ2F0ZVksICdDb250aW51
ZSB1cCB0aGUgdmVydGljYWwgc2Nyb2xsIGNoYWluaW5nJyk7CisgICAgICAgICAgICAgICAgfSk7
CisgICAgICAgICAgICB9LCAnSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNj
cm9sbC1iZWhhdmlvcjogJyArIG92ZXJzY3JvbGxYICsgJyAnICsgb3ZlcnNjcm9sbFkgKyAnLicp
OworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBzY3JvbGxlci5hZGRFdmVudExpc3RlbmVyKCJs
b2FkIiwgb3ZlcnNjcm9sbEJlaGF2aW9yVGVzdCk7Cis8L3NjcmlwdD4KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5j
LXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50LWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwt
YmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYz
OTViNjQ4OGQwODcwYjk1NjFjMDI4Njc5ZDdlMTVhNDdmY2U2ZTkKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2
aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKKwor
UEFTUyBVbnNjcm9sbGFibGUgZWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3Zl
cnNjcm9sbC1iZWhhdmlvcjogbm9uZS4KK1BBU1MgVW5zY3JvbGxhYmxlIGVsZW1lbnQgdmVydGlj
YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLgorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJl
aGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9s
bGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYzFlNTczOGE1ZDdhNzk2OWNhZTZlY2FjYmIzZjhlOWMyYjIwNzNl
YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Ny
b2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRtbApAQCAtMCww
ICsxLDY3IEBACis8IWRvY3R5cGUgaHRtbD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
b3ZlcnNjcm9sbC1iZWhhdmlvci1zdXBwb3J0LmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0iaGVs
cCIgaHJlZj0iaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1vdmVyc2Nyb2xsLWJlaGF2aW9y
Ij4KKzxzdHlsZT4KKyAgICAuc2Nyb2xsaW5nIHsKKyAgICAgICAgb3ZlcmZsb3c6IHNjcm9sbDsK
KyAgICB9CisgICAgLnNjcm9sbENvbnRlbnQgeworICAgICAgICB3aWR0aDogMzAwcHg7CisgICAg
ICAgIGhlaWdodDogMzAwcHg7CisgICAgfQorICAgICNyb290IHsKKyAgICAgICAgd2lkdGg6IDIw
MHB4OworICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAgIH0KKyAgICAjc2Nyb2xsZXIgeworICAg
ICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICAgIG92ZXJz
Y3JvbGwtYmVoYXZpb3I6IG5vbmU7CisgICAgICAgIG92ZXJmbG93OiB2aXNpYmxlOworICAgICAg
ICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZWQsIGJsdWUpOworICAgIH0K
Kzwvc3R5bGU+Cis8ZGl2IGlkPSJyb290IiBjbGFzcz0ic2Nyb2xsaW5nIj4KKyAgICA8ZGl2IGlk
PSJzY3JvbGxlciI+CisgICAgICAgIDxkaXYgY2xhc3M9InNjcm9sbENvbnRlbnQiPjwvZGl2Pgor
ICAgIDwvZGl2PgorICAgIDxkaXYgY2xhc3M9InNjcm9sbENvbnRlbnQiPjwvZGl2PgorPC9kaXY+
CisKKzxzY3JpcHQ+Citjb25zdCByb290ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jvb3Qn
KTsKK2NvbnN0IHNjcm9sbGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Njcm9sbGVyJyk7
CisKK2Z1bmN0aW9uIHJlc2V0VGVzdCgpIHsKKyAgICByb290LnNjcm9sbExlZnQgPSAwOworICAg
IHJvb3Quc2Nyb2xsVG9wID0gMDsKKyAgICByb290LnNjcm9sbFRvKDAsIDApOworfQorCitmdW5j
dGlvbiBzdGFydFRlc3QoKSB7CisgICAgICAgIHByb21pc2VfdGVzdCgoKSA9PiB7CisgICAgICAg
ICAgICByZXNldFRlc3QoKTsKKyAgICAgICAgICAgIHZhciB4ID0gc2Nyb2xsZXIuY2xpZW50V2lk
dGggLyAyOworICAgICAgICAgICAgdmFyIHkgPSBzY3JvbGxlci5jbGllbnRIZWlnaHQgLyAyOwor
ICAgICAgICAgICAgdmFyIGRlbHRhID0gZ2V0RGVsdGFzKCJyaWdodCIpOworICAgICAgICAgICAg
cmV0dXJuIG1vdXNlV2hlZWxTY3JvbGxBbmRXYWl0KHgsIHksIGRlbHRhLlgsIGRlbHRhLlksIGRl
bHRhLlgsIGRlbHRhLlkpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVh
bHMocm9vdC5zY3JvbGxMZWZ0ID4gMCwgdHJ1ZSwgJ0NvbnRpbnVlIHVwIHRoZSBob3Jpem9udGFs
IHNjcm9sbCBjaGFpbmluZycpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0sICdVbnNjcm9s
bGFibGUgZWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhh
dmlvcjogbm9uZS4nKTsKKworICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgICAgICAg
ICAgcmVzZXRUZXN0KCk7CisgICAgICAgICAgICB2YXIgeCA9IHNjcm9sbGVyLmNsaWVudFdpZHRo
IC8gMjsKKyAgICAgICAgICAgIHZhciB5ID0gc2Nyb2xsZXIuY2xpZW50SGVpZ2h0IC8gMjsKKyAg
ICAgICAgICAgIHZhciBkZWx0YSA9IGdldERlbHRhcygiZG93biIpOworICAgICAgICAgICAgcmV0
dXJuIG1vdXNlV2hlZWxTY3JvbGxBbmRXYWl0KHgsIHksIGRlbHRhLlgsIGRlbHRhLlksIGRlbHRh
LlgsIGRlbHRhLlkpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMo
cm9vdC5zY3JvbGxUb3AgPiAwLCB0cnVlLCAnQ29udGludWUgdXAgdGhlIHZlcnRpY2FsIHNjcm9s
bCBjaGFpbmluZycpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0sICdVbnNjcm9sbGFibGUg
ZWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5v
bmUuJyk7Cit9CisKK2FkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBzdGFydFRlc3QpOworPC9zY3Jp
cHQ+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFi
bGUtaWZyYW1lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMt
c2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uN2ZhNTljY2JhNzlhZWZmMzNkYTcwZTkzZDQ4OGEwN2VlYzljNTY5MQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xs
LW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSw1IEBACisKKworUEFTUyBVbnNjcm9sbGFibGUgaWZyYW1lIGhvcml6b250YWwgc2Ny
b2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLgorUEFTUyBVbnNjcm9sbGFi
bGUgaWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjog
bm9uZS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3Jv
bGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Ny
b2xsYWJsZS1pZnJhbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMjQyNWFmYzYzN2RmNTFlNDQxNTQyNmFi
NDY3YzYxNGUzOGVmNjE2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3Jv
bGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1l
Lmh0bWwKQEAgLTAsMCArMSw2NiBAQAorPCFkb2N0eXBlIGh0bWw+CisKKzxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL292ZXJzY3JvbGwtYmVoYXZpb3Itc3VwcG9ydC5qcyI+PC9zY3JpcHQ+Cis8
bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3Mtb3ZlcnNj
cm9sbC1iZWhhdmlvciI+Cis8c3R5bGU+CisgICAgLnNjcm9sbGluZyB7CisgICAgICAgIG92ZXJm
bG93OiBzY3JvbGw7CisgICAgfQorICAgIC5zY3JvbGxDb250ZW50IHsKKyAgICAgICAgd2lkdGg6
IDMwMHB4OworICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgIH0KKyAgICAjcm9vdCB7CisgICAg
ICAgIHdpZHRoOiAyMDBweDsKKyAgICAgICAgaGVpZ2h0OiAyMDBweDsKKyAgICB9CisgICAgI3Nj
cm9sbGVyIHsKKyAgICAgICAgd2lkdGg6IDIwMHB4OworICAgICAgICBoZWlnaHQ6IDIwMHB4Owor
ICAgICAgICBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lOworICAgICAgICBvdmVyZmxvdzogdmlz
aWJsZTsKKyAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmVkLCBi
bHVlKTsKKyAgICB9Cis8L3N0eWxlPgorPGRpdiBpZD0ncm9vdCcgY2xhc3M9InNjcm9sbGluZyI+
CisgICAgPGlmcmFtZSBpZD0nc2Nyb2xsZXInIHNyY2RvYz0iPGh0bWwgc3R5bGU9J292ZXJzY3Jv
bGwtYmVoYXZpb3I6IG5vbmU7Jz48ZGl2IHN0eWxlPSd3aWR0aDogMTAwcHg7IGhlaWdodDogMTAw
cHg7Jz48L2Rpdj48L2h0bWw+CisgICAgICAgICI+PC9pZnJhbWU+CisgICAgPGRpdiBjbGFzcz0i
c2Nyb2xsQ29udGVudCI+PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4KK2NvbnN0IHJvb3QgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgncm9vdCcpOworY29uc3Qgc2Nyb2xsZXIgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnc2Nyb2xsZXInKTsKKworZnVuY3Rpb24gcmVzZXRUZXN0KCkgewor
ICAgIHJvb3Quc2Nyb2xsTGVmdCA9IDA7CisgICAgcm9vdC5zY3JvbGxUb3AgPSAwOworICAgIHJv
b3Quc2Nyb2xsVG8oMCwgMCk7Cit9CisKK2Z1bmN0aW9uIHN0YXJ0VGVzdCgpIHsKKyAgICAgICAg
cHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAgIHJlc2V0VGVzdCgpOworICAgICAgICAg
ICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAgICAgICAgICB2YXIgeSA9
IHNjcm9sbGVyLmNsaWVudEhlaWdodCAvIDI7CisgICAgICAgICAgICB2YXIgZGVsdGEgPSBnZXRE
ZWx0YXMoInJpZ2h0Iik7CisgICAgICAgICAgICByZXR1cm4gbW91c2VXaGVlbFNjcm9sbEFuZFdh
aXQoeCwgeSwgZGVsdGEuWCwgZGVsdGEuWSwgZGVsdGEuWCwgZGVsdGEuWSkudGhlbigoKSA9PiB7
CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbExlZnQgPiAwLCB0cnVl
LCAnQ29udGludWUgdXAgdGhlIGhvcml6b250YWwgc2Nyb2xsIGNoYWluaW5nJyk7CisgICAgICAg
ICAgICB9KTsKKyAgICAgICAgfSwgJ1Vuc2Nyb2xsYWJsZSBpZnJhbWUgaG9yaXpvbnRhbCBzY3Jv
bGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuJyk7CisKKyAgICAgICAgcHJv
bWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAgIHJlc2V0VGVzdCgpOworICAgICAgICAgICAg
dmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAgICAgICAgICB2YXIgeSA9IHNj
cm9sbGVyLmNsaWVudEhlaWdodCAvIDI7CisgICAgICAgICAgICB2YXIgZGVsdGEgPSBnZXREZWx0
YXMoImRvd24iKTsKKyAgICAgICAgICAgIHJldHVybiBtb3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCh4
LCB5LCBkZWx0YS5YLCBkZWx0YS5ZLCBkZWx0YS5YLCBkZWx0YS5ZKS50aGVuKCgpID0+IHsKKyAg
ICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsVG9wID4gMCwgdHJ1ZSwgJ0Nv
bnRpbnVlIHVwIHRoZSB2ZXJ0aWNhbCBzY3JvbGwgY2hhaW5pbmcnKTsKKyAgICAgICAgICAgIH0p
OworICAgICAgICB9LCAnVW5zY3JvbGxhYmxlIGlmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3
aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuJyk7Cit9CisKK2FkZEV2ZW50TGlzdGVuZXIo
ImxvYWQiLCBzdGFydFRlc3QpOworPC9zY3JpcHQ+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBlNTNkMzRm
NWNjYTIxYzU1ZmNjZGQwNWQwMWM2OTM5ZDI4YzE1NGYyLi4zNDk2ZmI0NTRkN2I1ZGEyNTgxMzBi
YTliZGEwMWU2YWRmNjNjNjAxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mv
VGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVj
dGF0aW9ucwpAQCAtODExLDYgKzgxMSwxMiBAQCBzdmcvdGV4dC9zZWxlY3Rpb24tZG91YmxlY2xp
Y2suc3ZnIFsgU2tpcCBdCiBzdmcvdGV4dC9zZWxlY3Rpb24tdHJpcGxlY2xpY2suc3ZnIFsgU2tp
cCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mtc2hhZG93LXBhcnRz
L2ludmFsaWRhdGlvbi1wYXJ0LXBzZXVkby5odG1sIFsgU2tpcCBdCiAKKyMgT3ZlcnNjcm9sbC1i
ZWhhdmlvciBpcyBub3Qgc3VwcG9ydGVkIG9uIGlPUyB5ZXQ6IGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM3ODgKK2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92
ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC5odG1sIFsgU2tpcCBdCitmYXN0L3Njcm9sbGluZy9z
eW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS5odG1sIFsgU2tpcCBdCitmYXN0
L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1l
bGVtZW50Lmh0bWwgWyBTa2lwIF0KK2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3Jv
bGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sIFsgU2tpcCBdCisKICMgSU9TIGRv
ZXMgbm90IGltcGxlbWVudCBzZXRBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZAogZWRpdGlu
Zy9pbnNlcnRpbmcvdHlwaW5nLXNwYWNlLXRvLXRyaWdnZXItc21hcnQtbGluay5odG1sIFsgU2tp
cCBdCiBlZGl0aW5nL2luc2VydGluZy9zbWFydC1saW5rLXdoZW4tY2FyZXQtaXMtbW92ZWQtYmVm
b3JlLVVSTC5odG1sIFsgU2tpcCBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rl
c3RFeHBlY3RhdGlvbnMKaW5kZXggNjdhOGU4MzE2MmRiNGNiZDE0YWNiNmU0MjMxMjVjMjllYjUw
MDYyOS4uMDhlY2VjNDk1NGJjYjk1YTlhYzc5NDhiMjNiZTAyNzEwY2QwMjJlYyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNTA0LDYgKzUw
NCwxMCBAQCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mtc2Nyb2xsLXNu
YXAvc2Nyb2xsLXRhcmdldC1wYWRkaW5nLTAwMS5odAogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLXNjcm9sbC1zbmFwL3Njcm9sbC1zbmFwLXN0b3AtY2hhbmdlLmh0bWwg
WyBGYWlsdXJlIF0KIGNzczMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXBhZGRpbmctbWFpbmZyYW1lLXBh
Z2luZy5odG1sIFsgRmFpbHVyZSBdCiAKKyMgTGFjayBvZiB3YXlzIHRvIGNvbnRyb2wgdGhlIGNy
b3NzLWZyYW1lIHNjcm9sbCBjaGFpbmluZyBpbiBXSzEuCitmYXN0L3Njcm9sbGluZy9zeW5jLXNj
cm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS5odG1sIFsgU2tpcCBdCitmYXN0L3Njcm9s
bGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUu
aHRtbCBbIFNraXAgXQorCiAjIyMgRU5EIE9GICgyKSBGYWlsdXJlcyB3aXRob3V0IGJ1ZyByZXBv
cnRzCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggZWY3NWJkMTFmNjJkMTRhNTY2
MzQwZWUyM2MxZjlhOTMwY2M2MzY0My4uOGRiNGVlYjMxZjUzMTlkODJjMTU1NjVhNWIxMGEyNWRi
ZTEzMzUxYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3Rh
dGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMKQEAg
LTYzMiw2ICs2MzIsMTIgQEAgZmFzdC9ldmVudHMvd2hlZWwvcGxhdGZvcm0td2hlZWxldmVudC1w
YWdpbmcteS1pbi1zY3JvbGxpbmctcGFnZS5odG1sIFsgU2tpcCBdCiBwb2ludGVyLWxvY2svIFsg
U2tpcCBdCiBodHRwL3Rlc3RzL3BvaW50ZXItbG9jay8gWyBTa2lwIF0KIAorIyBPdmVyc2Nyb2xs
LWJlaGF2aW9yIGlzIG5vdCBzdXBwb3J0ZWQgb24gV2luZG93cworZmFzdC9zY3JvbGxpbmcvc3lu
Yy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50Lmh0bWwgWyBTa2lwIF0KK2Zhc3Qv
c2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0bWwgWyBT
a2lwIF0KK2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5z
Y3JvbGxhYmxlLWVsZW1lbnQuaHRtbCBbIFNraXAgXQorZmFzdC9zY3JvbGxpbmcvc3luYy1zY3Jv
bGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLmh0bWwgWyBTa2lwIF0K
KwogIyBEYXRhbGlzdCBpcyB1bnN1cHBvcnRlZCBvbiBXaW5kb3dzCiBhY2Nlc3NpYmlsaXR5L2Rh
dGFsaXN0Lmh0bWwgWyBXb250Rml4IF0KIGZhc3QvZm9ybXMvZGF0YWxpc3QgWyBXb250Rml4IF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446608</attachid>
            <date>2021-12-09 14:39:45 -0800</date>
            <delta_ts>2021-12-10 13:53:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222968-20211209143944.patch</filename>
            <type>text/plain</type>
            <size>40730</size>
            <attacher name="Nikos Mouchtaris">nmouchtaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MzUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGJiNmQyZjJmYmNkN2I3
ODU1MzIxY2U1YjgwMWQ1YzJmYWNiMzhmNC4uMmFkOTAxNmM5ZmExMjhiYTlkODY4MWU2M2NjNGI5
MjcyZWY1YjgzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDIxLTEyLTAyICBOaWtv
bGFvcyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxl
bWVudCBDU1Mgb3ZlcnNjcm9sbC1iZWhhdmlvciBmb3Igc3luY2hyb25vdXMgc2Nyb2xsCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI5NjgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTcGxpdCB1cCBwYXRj
aCBieSBDYXRoaWUgQ2hlbiBhbmQgRnJlZGVyaWMgV2FuZy4gQWRkIGZ1bmN0aW9uIGZvciBibG9j
a2luZyBzY3JvbGwgY2hhaW5pbmcKKyAgICAgICAgYW5kIGZpbHRlcmluZyBzY3JvbGwgZGVsdGEg
ZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZXMgb2Ygb3ZlcnNjcm9sbCBiZWhhdmlvciBmb3IgYSBzY3Jv
bGxhYmxlCisgICAgICAgIGFyZWEuIFRoaXMgcGF0Y2ggaXMgZm9yIHN5bmNocm9ub3VzIHNjcm9s
bGluZyBvbmx5LgorCisgICAgICAgIFRlc3RzOiBmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1v
dmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9zY3Jv
bGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUuaHRtbAorICAgICAg
ICAgICAgICAgZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11
bnNjcm9sbGFibGUtZWxlbWVudC5odG1sCisgICAgICAgICAgICAgICBmYXN0L3Njcm9sbGluZy9z
eW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUuaHRtbAor
CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hv
dWxkQmxvY2tTY3JvbGxDaGFpbmluZ1dpdGhTY3JvbGxhYmxlQXJlYSk6CisgICAgICAgIChXZWJD
b3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnRJbnRlcm5hbCk6CisgICAgICAgIChX
ZWJDb3JlOjpkaWRTY3JvbGxJblNjcm9sbGFibGVBcmVhKToKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudEluQXBwcm9wcmlhdGVFbmNsb3NpbmdCb3gpOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpzY3JvbGxhYmxlQXJlYUNhbkhhbmRsZUV2
ZW50KToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5oOgorICAgICAgICAqIHBhZ2UvRnJh
bWVWaWV3Lmg6CisgICAgICAgICogcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6ZmluZEVuY2xvc2luZ1Njcm9sbGFibGVDb250YWluZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmg6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsaW5n
RWZmZWN0c0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0
b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck1hYzo6c2hvdWxkRm9y
d2FyZFdoZWVsRXZlbnRzVG9QYXJlbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
QW5pbWF0b3JNYWM6OmFsbG93c1ZlcnRpY2FsU3RyZXRjaGluZyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxBbmltYXRvck1hYzo6YWxsb3dzSG9yaXpvbnRhbFN0cmV0Y2hpbmcgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjp3aGVlbERl
bHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxh
eWVyU2Nyb2xsYWJsZUFyZWEuaDoKKwogMjAyMS0xMS0zMCAgU2ltb24gRnJhc2VyICA8c2ltb24u
ZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBQYXNzIHRoZSB0aW1lc3RhbXAgZm9yIHNjcm9s
bGluZyB0aHJlYWQgYW5pbWF0aW9ucyB0aHJvdWdoIGFsbCB0aGUgc2VydmljZVNjcm9sbEFuaW1h
dGlvbigpIGNhbGxzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggZWMzZTQy
MGU3OWJiMWI1ZGNmNzAxMzU1ZDFhY2U2OWJmODg2NDE1MS4uMDE5YWE2MmVjODdkMzQ4NmE5ZmE4
MGJmZDU4ZmFiNDIwZjQyYjdhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApA
QCAtMjkxOSw2ICsyOTE5LDMyIEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpjb21wbGV0ZVdpZGdldFdo
ZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCwgY29uCiAgICAgcmV0dXJu
IHBsYXRmb3JtQ29tcGxldGVQbGF0Zm9ybVdpZGdldFdoZWVsRXZlbnQoZXZlbnQsICp3aWRnZXQu
Z2V0KCksIHNjcm9sbGFibGVBcmVhKTsKIH0KIAorc3RhdGljIGJvb2wgc2hvdWxkQmxvY2tTY3Jv
bGxQcm9wb2dhdGlvbldpdGhTY3JvbGxhYmxlQXJlYShjb25zdCBTY3JvbGxhYmxlQXJlYSogc2Ny
b2xsYWJsZUFyZWEsIEZsb2F0U2l6ZSYgYmlhc2VkRGVsdGEpCit7CisgICAgaWYgKHNjcm9sbGFi
bGVBcmVhICYmIChzY3JvbGxhYmxlQXJlYS0+aGFzSG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlv
cigpIHx8IHNjcm9sbGFibGVBcmVhLT5oYXNWZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpKSkg
eworICAgICAgICBpZiAoc2Nyb2xsYWJsZUFyZWEtPmhhc0hvcml6b250YWxPdmVyc2Nyb2xsQmVo
YXZpb3IoKSAmJiAhYmlhc2VkRGVsdGEuaGVpZ2h0KCkgJiYgYmlhc2VkRGVsdGEud2lkdGgoKSkK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBpZiAoKHNjcm9sbGFibGVBcmVhLT5o
YXNIb3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgJiYgc2Nyb2xsYWJsZUFyZWEtPmhhc1Zl
cnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkpIHx8IChzY3JvbGxhYmxlQXJlYS0+aGFzSG9yaXpv
bnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpICYmICFiaWFzZWREZWx0YS5oZWlnaHQoKSkgfHwgKHNj
cm9sbGFibGVBcmVhLT5oYXNWZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpICYmICFiaWFzZWRE
ZWx0YS53aWR0aCgpKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBiaWFzZWRE
ZWx0YS5zZXRXaWR0aChzY3JvbGxhYmxlQXJlYS0+aGFzSG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhh
dmlvcigpID8gMCA6IGJpYXNlZERlbHRhLndpZHRoKCkpOworICAgICAgICBiaWFzZWREZWx0YS5z
ZXRIZWlnaHQoc2Nyb2xsYWJsZUFyZWEtPmhhc1ZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkg
PyAwIDogYmlhc2VkRGVsdGEuaGVpZ2h0KCkpOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK3N0YXRpYyBib29sIHNob3VsZEJsb2NrU2Nyb2xsUHJvcG9nYXRpb25XaXRoRnJhbWVWaWV3
KGNvbnN0IEZyYW1lVmlldyogZnJhbWVWaWV3LCBGbG9hdFNpemUmIGJpYXNlZERlbHRhKQorewor
ICAgIGlmIChmcmFtZVZpZXcgJiYgKGZyYW1lVmlldy0+aGFzSG9yaXpvbnRhbE92ZXJzY3JvbGxC
ZWhhdmlvcigpIHx8IGZyYW1lVmlldy0+aGFzVmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSkp
IHsKKyAgICAgICAgaWYgKGZyYW1lVmlldy0+aGFzSG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlv
cigpICYmICFiaWFzZWREZWx0YS5oZWlnaHQoKSAmJiBiaWFzZWREZWx0YS53aWR0aCgpKQorICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmICgoZnJhbWVWaWV3LT5oYXNIb3Jpem9u
dGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgJiYgZnJhbWVWaWV3LT5oYXNWZXJ0aWNhbE92ZXJzY3Jv
bGxCZWhhdmlvcigpKSB8fCAoZnJhbWVWaWV3LT5oYXNIb3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2
aW9yKCkgJiYgIWJpYXNlZERlbHRhLmhlaWdodCgpKSB8fCAoZnJhbWVWaWV3LT5oYXNWZXJ0aWNh
bE92ZXJzY3JvbGxCZWhhdmlvcigpICYmICFiaWFzZWREZWx0YS53aWR0aCgpKSkKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICBiaWFzZWREZWx0YS5zZXRXaWR0aChmcmFtZVZpZXct
Pmhhc0hvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSA/IDAgOiBiaWFzZWREZWx0YS53aWR0
aCgpKTsKKyAgICAgICAgYmlhc2VkRGVsdGEuc2V0SGVpZ2h0KGZyYW1lVmlldy0+aGFzVmVydGlj
YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSA/IDAgOiBiaWFzZWREZWx0YS5oZWlnaHQoKSk7CisgICAg
fQorICAgIHJldHVybiBmYWxzZTsKK30KKwogYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVs
RXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBPcHRpb25TZXQ8V2hl
ZWxFdmVudFByb2Nlc3NpbmdTdGVwcz4gcHJvY2Vzc2luZ1N0ZXBzKQogewogICAgIFJlZiBwcm90
ZWN0ZWRGcmFtZSA9IG1fZnJhbWU7CkBAIC0zMDI2LDExICszMDUyLDE2IEBAIGJvb2wgRXZlbnRI
YW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50SW50ZXJuYWwoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50
JiBldmVudCwgT3B0CiAgICAgaWYgKGFsbG93U2Nyb2xsaW5nKQogICAgICAgICBhbGxvd1Njcm9s
bGluZyA9IG1fZnJhbWUucGFnZSgpLT5zY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIoKS5sYXRjaGlu
Z0FsbG93c1Njcm9sbGluZ0luRnJhbWUobV9mcmFtZSwgc2Nyb2xsYWJsZUFyZWEpOwogI2VuZGlm
CisgICAgUGxhdGZvcm1XaGVlbEV2ZW50IGFkanVzdGVkV2hlZWxFdmVudCA9IFBsYXRmb3JtV2hl
ZWxFdmVudChldmVudCk7CisgICAgYXV0byBmaWx0ZXJlZERlbHRhID0gYWRqdXN0ZWRXaGVlbEV2
ZW50LmRlbHRhKCk7CisgICAgaWYgKHZpZXcuZ2V0KCkgJiYgc2hvdWxkQmxvY2tTY3JvbGxQcm9w
b2dhdGlvbldpdGhGcmFtZVZpZXcodmlldy5nZXQoKSwgZmlsdGVyZWREZWx0YSkpCisgICAgICAg
IHJldHVybiB0cnVlOwogCiAgICAgaWYgKGFsbG93U2Nyb2xsaW5nKSB7CiAgICAgICAgIC8vIEZJ
WE1FOiBwcm9jZXNzV2hlZWxFdmVudEZvclNjcm9sbGluZygpIGlzIG9ubHkgY2FsbGVkIGZvciBG
cmFtZVZpZXcgc2Nyb2xsaW5nLCBub3Qgb3ZlcmZsb3cgc2Nyb2xsaW5nLCB3aGljaCBpcyBjb25m
dXNpbmcuCi0gICAgICAgIGhhbmRsZWRFdmVudCA9IHByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xs
aW5nKGV2ZW50LCBzY3JvbGxhYmxlQXJlYSwgaGFuZGxpbmcpOwotICAgICAgICBwcm9jZXNzV2hl
ZWxFdmVudEZvclNjcm9sbFNuYXAoZXZlbnQsIHNjcm9sbGFibGVBcmVhKTsKKyAgICAgICAgYWRq
dXN0ZWRXaGVlbEV2ZW50ID0gYWRqdXN0ZWRXaGVlbEV2ZW50LmNvcHlXaXRoRGVsdGFBbmRWZWxv
Y2l0eShmaWx0ZXJlZERlbHRhLCBhZGp1c3RlZFdoZWVsRXZlbnQuc2Nyb2xsaW5nVmVsb2NpdHko
KSk7CisgICAgICAgIGhhbmRsZWRFdmVudCA9IHByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5n
KGFkanVzdGVkV2hlZWxFdmVudCwgc2Nyb2xsYWJsZUFyZWEsIGhhbmRsaW5nKTsKKyAgICAgICAg
cHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxTbmFwKGFkanVzdGVkV2hlZWxFdmVudCwgc2Nyb2xs
YWJsZUFyZWEpOwogICAgIH0KIAogICAgIHJldHVybiBoYW5kbGVkRXZlbnQ7CkBAIC0zMDQ5LDE4
ICszMDgwLDIwIEBAIHN0YXRpYyB2b2lkIGhhbmRsZVdoZWVsRXZlbnRQaGFzZUluU2Nyb2xsYWJs
ZUFyZWEoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhCiAKIHN0YXRpYyBib29sIGRpZFNj
cm9sbEluU2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhLCBjb25z
dCBXaGVlbEV2ZW50JiB3aGVlbEV2ZW50KQogeworICAgIEZsb2F0U2l6ZSBmaWx0ZXJlZERlbHRh
KHdoZWVsRXZlbnQuZGVsdGFYKCksIHdoZWVsRXZlbnQuZGVsdGFZKCkpOworICAgIHNob3VsZEJs
b2NrU2Nyb2xsUHJvcG9nYXRpb25XaXRoU2Nyb2xsYWJsZUFyZWEoJnNjcm9sbGFibGVBcmVhLCBm
aWx0ZXJlZERlbHRhKTsKICAgICBTY3JvbGxHcmFudWxhcml0eSBzY3JvbGxHcmFudWxhcml0eSA9
IHdoZWVsR3JhbnVsYXJpdHlUb1Njcm9sbEdyYW51bGFyaXR5KHdoZWVsRXZlbnQuZGVsdGFNb2Rl
KCkpOwogICAgIGJvb2wgZGlkSGFuZGxlV2hlZWxFdmVudCA9IGZhbHNlOwotICAgIGlmIChmbG9h
dCBhYnNvbHV0ZURlbHRhID0gc3RkOjphYnMod2hlZWxFdmVudC5kZWx0YVgoKSkpCi0gICAgICAg
IGRpZEhhbmRsZVdoZWVsRXZlbnQgfD0gc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsKHdoZWVsRXZlbnQu
ZGVsdGFYKCkgPiAwID8gU2Nyb2xsUmlnaHQgOiBTY3JvbGxMZWZ0LCBzY3JvbGxHcmFudWxhcml0
eSwgYWJzb2x1dGVEZWx0YSk7CisgICAgaWYgKGZsb2F0IGFic29sdXRlRGVsdGEgPSBzdGQ6OmFi
cyhmaWx0ZXJlZERlbHRhLndpZHRoKCkpKQorICAgICAgICBkaWRIYW5kbGVXaGVlbEV2ZW50IHw9
IHNjcm9sbGFibGVBcmVhLnNjcm9sbChmaWx0ZXJlZERlbHRhLndpZHRoKCkgPiAwID8gU2Nyb2xs
UmlnaHQgOiBTY3JvbGxMZWZ0LCBzY3JvbGxHcmFudWxhcml0eSwgYWJzb2x1dGVEZWx0YSk7CiAK
LSAgICBpZiAoZmxvYXQgYWJzb2x1dGVEZWx0YSA9IHN0ZDo6YWJzKHdoZWVsRXZlbnQuZGVsdGFZ
KCkpKQotICAgICAgICBkaWRIYW5kbGVXaGVlbEV2ZW50IHw9IHNjcm9sbGFibGVBcmVhLnNjcm9s
bCh3aGVlbEV2ZW50LmRlbHRhWSgpID4gMCA/IFNjcm9sbERvd24gOiBTY3JvbGxVcCwgc2Nyb2xs
R3JhbnVsYXJpdHksIGFic29sdXRlRGVsdGEpOworICAgIGlmIChmbG9hdCBhYnNvbHV0ZURlbHRh
ID0gc3RkOjphYnMoZmlsdGVyZWREZWx0YS5oZWlnaHQoKSkpCisgICAgICAgIGRpZEhhbmRsZVdo
ZWVsRXZlbnQgfD0gc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsKGZpbHRlcmVkRGVsdGEuaGVpZ2h0KCkg
PiAwID8gU2Nyb2xsRG93biA6IFNjcm9sbFVwLCBzY3JvbGxHcmFudWxhcml0eSwgYWJzb2x1dGVE
ZWx0YSk7CiAKICAgICByZXR1cm4gZGlkSGFuZGxlV2hlZWxFdmVudDsKIH0KIAotYm9vbCBFdmVu
dEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94KE5vZGUq
IHN0YXJ0Tm9kZSwgY29uc3QgV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgY29uc3QgRmxvYXRTaXpl
JiBmaWx0ZXJlZFBsYXRmb3JtRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyZWRWZWxvY2l0
eSwgT3B0aW9uU2V0PEV2ZW50SGFuZGxpbmc+IGV2ZW50SGFuZGxpbmcpCitib29sIEV2ZW50SGFu
ZGxlcjo6aGFuZGxlV2hlZWxFdmVudEluQXBwcm9wcmlhdGVFbmNsb3NpbmdCb3goTm9kZSogc3Rh
cnROb2RlLCBjb25zdCBXaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBGbG9hdFNpemUmIGZpbHRlcmVk
UGxhdGZvcm1EZWx0YSwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJlZFZlbG9jaXR5LCBPcHRpb25T
ZXQ8RXZlbnRIYW5kbGluZz4gZXZlbnRIYW5kbGluZykKIHsKICAgICBib29sIHNob3VsZEhhbmRs
ZUV2ZW50ID0gd2hlZWxFdmVudC5kZWx0YVgoKSB8fCB3aGVlbEV2ZW50LmRlbHRhWSgpOwogI2lm
IEVOQUJMRShXSEVFTF9FVkVOVF9MQVRDSElORykKQEAgLTMwODMsOCArMzExNiwxOCBAQCBib29s
IEV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudEluQXBwcm9wcmlhdGVFbmNsb3NpbmdCb3go
Tm9kZSogc3RhcnROb2RlLCBjbwogICAgICAgICByZXR1cm4gZGlkU2Nyb2xsSW5TY3JvbGxhYmxl
QXJlYShkb3duY2FzdDxSZW5kZXJMaXN0Qm94Pihpbml0aWFsRW5jbG9zaW5nQm94KSwgd2hlZWxF
dmVudCk7CiAKICAgICBSZW5kZXJCb3gqIGN1cnJlbnRFbmNsb3NpbmdCb3ggPSAmaW5pdGlhbEVu
Y2xvc2luZ0JveDsKKyNpZiBQTEFURk9STShNQUMpCisgICAgYXV0byBiaWFzZWREZWx0YSA9IFNj
cm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNh
bChGbG9hdFNpemUod2hlZWxFdmVudC5kZWx0YVgoKSwgd2hlZWxFdmVudC5kZWx0YVkoKSkpOwor
I2Vsc2UKKyAgICBGbG9hdFNpemUgYmlhc2VkRGVsdGEod2hlZWxFdmVudC5kZWx0YVgoKSwgd2hl
ZWxFdmVudC5kZWx0YVkoKSk7CisjZW5kaWYKICAgICB3aGlsZSAoY3VycmVudEVuY2xvc2luZ0Jv
eCkgewogICAgICAgICBpZiAoYXV0byogYm94U2Nyb2xsYWJsZUFyZWEgPSBjdXJyZW50RW5jbG9z
aW5nQm94LT5sYXllcigpID8gY3VycmVudEVuY2xvc2luZ0JveC0+bGF5ZXIoKS0+c2Nyb2xsYWJs
ZUFyZWEoKSA6IG51bGxwdHIpIHsKKyAgICAgICAgICAgIGlmIChib3hTY3JvbGxhYmxlQXJlYSAm
JiBzaG91bGRCbG9ja1Njcm9sbFByb3BvZ2F0aW9uV2l0aFNjcm9sbGFibGVBcmVhKGJveFNjcm9s
bGFibGVBcmVhLCBiaWFzZWREZWx0YSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoYm94U2Nyb2xs
YWJsZUFyZWEtPmhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSAhPSBPdmVyc2Nyb2xsQmVo
YXZpb3I6OkF1dG8gJiYgIWZpbHRlcmVkUGxhdGZvcm1EZWx0YS5oZWlnaHQoKSkKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICAgICAgfQogICAgICAgICAgICAgYXV0byBwbGF0Zm9ybUV2ZW50ID0gd2hlZWxFdmVu
dC51bmRlcmx5aW5nUGxhdGZvcm1FdmVudCgpOwogICAgICAgICAgICAgYm9vbCBzY3JvbGxpbmdX
YXNIYW5kbGVkOwogICAgICAgICAgICAgaWYgKHBsYXRmb3JtRXZlbnQpIHsKQEAgLTMxMDcsNyAr
MzE1MCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50SW5BcHByb3ByaWF0
ZUVuY2xvc2luZ0JveChOb2RlKiBzdGFydE5vZGUsIGNvCiBib29sIEV2ZW50SGFuZGxlcjo6c2Ny
b2xsYWJsZUFyZWFDYW5IYW5kbGVFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVs
RXZlbnQsIFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSkKIHsKICNpZiBQTEFURk9STShN
QUMpCi0gICAgYXV0byBiaWFzZWREZWx0YSA9IFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjp3
aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbCh3aGVlbEV2ZW50KTsKKyAgICBhdXRvIGJp
YXNlZERlbHRhID0gU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OndoZWVsRGVsdGFCaWFzaW5n
VG93YXJkc1ZlcnRpY2FsKHdoZWVsRXZlbnQuZGVsdGEoKSk7CiAjZWxzZQogICAgIGF1dG8gYmlh
c2VkRGVsdGEgPSB3aGVlbEV2ZW50LmRlbHRhKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50
SGFuZGxlci5oCmluZGV4IGVhYzFkNWYzNDAwODZjMzYzNmJmZjYxMDk2NTFkZWM5ZjRlYjMwZmUu
Ljc4N2Q1M2QxOTM3Y2M1N2E4MWM4ZTFjMThlZDNhZWE5NDMwYjExODUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuaApAQCAtNDc2LDcgKzQ3Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBw
cm9jZXNzV2hlZWxFdmVudEZvclNjcm9sbFNuYXAoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jiwg
Y29uc3QgV2Vha1B0cjxTY3JvbGxhYmxlQXJlYT4mKTsKICAgICBib29sIGNvbXBsZXRlV2lkZ2V0
V2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBjb25zdCBXZWFrUHRyPFdpZGdl
dD4mLCBjb25zdCBXZWFrUHRyPFNjcm9sbGFibGVBcmVhPiYpOwogCi0gICAgYm9vbCBoYW5kbGVX
aGVlbEV2ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2luZ0JveChOb2RlKiBzdGFydE5vZGUsIGNvbnN0
IFdoZWVsRXZlbnQmLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlcmVkUGxhdGZvcm1EZWx0YSwgY29u
c3QgRmxvYXRTaXplJiBmaWx0ZXJlZFZlbG9jaXR5LCBPcHRpb25TZXQ8RXZlbnRIYW5kbGluZz4p
OworICAgIGJvb2wgaGFuZGxlV2hlZWxFdmVudEluQXBwcm9wcmlhdGVFbmNsb3NpbmdCb3goTm9k
ZSogc3RhcnROb2RlLCBjb25zdCBXaGVlbEV2ZW50JiwgRmxvYXRTaXplJiBmaWx0ZXJlZFBsYXRm
b3JtRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyZWRWZWxvY2l0eSwgT3B0aW9uU2V0PEV2
ZW50SGFuZGxpbmc+KTsKIAogICAgIGJvb2wgaGFuZGxlV2hlZWxFdmVudEluU2Nyb2xsYWJsZUFy
ZWEoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgU2Nyb2xsYWJsZUFyZWEmLCBPcHRpb25TZXQ8
RXZlbnRIYW5kbGluZz4pOwogICAgIHN0ZDo6b3B0aW9uYWw8V2hlZWxTY3JvbGxHZXN0dXJlU3Rh
dGU+IHVwZGF0ZVdoZWVsR2VzdHVyZVN0YXRlKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIE9w
dGlvblNldDxFdmVudEhhbmRsaW5nPik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCA4NWFj
YTVkN2JiMzJiZGFiZGM3MDFkZDgyYjI2ZjY1ZTQzZjkyODJlLi4xZTY2NGNlOWM4OWI5NDFjYzQ5
MWI0OWYzMGVjOGI1YmZiM2JjZDFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTcwMiw2
ICs3MDIsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAgT3ZlcnNjcm9sbEJlaGF2aW9yIGhvcml6b250
YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdCBmaW5hbDsKICAgICBPdmVyc2Nyb2xsQmVoYXZp
b3IgdmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdCBmaW5hbDsKKyAgICBib29sIGhh
c0hvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdCBmaW5hbCB7IHJldHVybiBob3Jp
em9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgIT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpBdXRvOyB9
CisgICAgYm9vbCBoYXNWZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIHZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgIT0gT3ZlcnNjcm9sbEJlaGF2aW9y
OjpBdXRvOyB9CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgRnJhbWVWaWV3KEZyYW1lJik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0KaW5kZXggMWVjZDBjYzc4
ZWQ1NTU2NGYwMzJiMzBjOWM4M2ViZjU3NGFkZTgwMC4uNjEwZDFhZDMzMDI1ZWIzZTE1YzQ0NjAx
N2NjYjZhZTk4ZWY3ZjdkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZl
bnRIYW5kbGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxl
ck1hYy5tbQpAQCAtODE1LDYgKzgxNSw4IEBAIHN0YXRpYyBDb250YWluZXJOb2RlKiBmaW5kRW5j
bG9zaW5nU2Nyb2xsYWJsZUNvbnRhaW5lcihDb250YWluZXJOb2RlKiBub2RlLCBjb25zCiAgICAg
ICAgIGF1dG8qIHNjcm9sbGFibGVBcmVhID0gc2Nyb2xsYWJsZUFyZWFGb3JCb3goKmJveCk7CiAg
ICAgICAgIGlmICghc2Nyb2xsYWJsZUFyZWEpCiAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgaWYgKChzY3JvbGxhYmxlQXJlYS0+aG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpICE9
IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0byAmJiBzY3JvbGxhYmxlQXJlYS0+dmVydGljYWxPdmVy
c2Nyb2xsQmVoYXZpb3IoKSAhPSBPdmVyc2Nyb2xsQmVoYXZpb3I6OkF1dG8pIHx8IChzY3JvbGxh
YmxlQXJlYS0+aG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpICE9IE92ZXJzY3JvbGxCZWhh
dmlvcjo6QXV0byAmJiAhd2hlZWxFdmVudC5kZWx0YSgpLmhlaWdodCgpKSB8fCAoc2Nyb2xsYWJs
ZUFyZWEtPnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgIT0gT3ZlcnNjcm9sbEJlaGF2aW9y
OjpBdXRvICYmICF3aGVlbEV2ZW50LmRlbHRhKCkud2lkdGgoKSkpCisgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAogICAgICAgICBpZiAod2hlZWxFdmVudC5waGFzZSgpID09IFBsYXRmb3Jt
V2hlZWxFdmVudFBoYXNlOjpNYXlCZWdpbiB8fCB3aGVlbEV2ZW50LnBoYXNlKCkgPT0gUGxhdGZv
cm1XaGVlbEV2ZW50UGhhc2U6OkNhbmNlbGxlZCkKICAgICAgICAgICAgIHJldHVybiBjYW5kaWRh
dGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaAppbmRleCBhYjc0NWM0
YmJhOWYyM2UxOGFiYTNjZjEzNmUzZTkxNTMxMGI5MDUxLi40OTk0YjgwZGIwZWIxMzNkYWE4OTc2
NmM4ZmUxNjc5ODYxMTA0MDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxhYmxlQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVB
cmVhLmgKQEAgLTM3MCw2ICszNzAsOSBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdmlydHVhbCB2
b2lkIGRpZFN0YXJ0U2Nyb2xsQW5pbWF0aW9uKCkgeyB9CisgICAgCisgICAgdmlydHVhbCBib29s
IGhhc0hvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQorICAgIHZpcnR1YWwgYm9vbCBoYXNWZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CiAKIHByb3RlY3RlZDoKICAgICBXRUJDT1JFX0VYUE9SVCBTY3Jv
bGxhYmxlQXJlYSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
aW5nRWZmZWN0c0NvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGlu
Z0VmZmVjdHNDb250cm9sbGVyLmgKaW5kZXggYzdhM2EyZjg1ZWEwZWQ1YTdjNmE5NGJlMWJmMzU3
MjhiMThjODhmMy4uMDY2NzkxZDBjZTQzYjZkZmM5Mzk2OTY1MDgxNDI0MjI4MmJmZTdmZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xs
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJv
bGxlci5oCkBAIC0xNzQsNyArMTc0LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNVc2VyU2Nyb2xs
SW5Qcm9ncmVzcygpIGNvbnN0OwogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIHN0YXRpYyBGbG9h
dFNpemUgd2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoY29uc3QgUGxhdGZvcm1XaGVl
bEV2ZW50Jik7CisgICAgc3RhdGljIEZsb2F0U2l6ZSB3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNW
ZXJ0aWNhbChjb25zdCBGbG9hdFNpemUmKTsKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBoYW5k
bGVkLgogICAgIGJvb2wgcHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxTbmFwKGNvbnN0IFBsYXRm
b3JtV2hlZWxFdmVudCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1Njcm9sbEFuaW1hdG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9s
bEFuaW1hdG9yTWFjLm1tCmluZGV4IDUzYTQwNzUzZGI3NDdjNWFjNGIxZjdiMjFhOWFkNWMxZmY0
NWE4MzYuLmZjYWE5ZjQxMmIxNGY2OGVjNjZjNDEwZDVkZTVhYTg1MGE0YmRlZTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0KQEAgLTk0
LDkgKzk0LDkgQEAgdm9pZCBTY3JvbGxBbmltYXRvck1hYzo6aGFuZGxlV2hlZWxFdmVudFBoYXNl
KFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlIHBoYXNlKQogYm9vbCBTY3JvbGxBbmltYXRvck1hYzo6
c2hvdWxkRm9yd2FyZFdoZWVsRXZlbnRzVG9QYXJlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50
JiB3aGVlbEV2ZW50KSBjb25zdAogewogICAgIGlmIChzdGQ6OmFicyh3aGVlbEV2ZW50LmRlbHRh
WSgpKSA+PSBzdGQ6OmFicyh3aGVlbEV2ZW50LmRlbHRhWCgpKSkKLSAgICAgICAgcmV0dXJuICFh
bGxvd3NWZXJ0aWNhbFN0cmV0Y2hpbmcod2hlZWxFdmVudCk7CisgICAgICAgIHJldHVybiBtX3Nj
cm9sbGFibGVBcmVhLnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgPT0gT3ZlcnNjcm9sbEJl
aGF2aW9yOjpBdXRvICYmICFhbGxvd3NWZXJ0aWNhbFN0cmV0Y2hpbmcod2hlZWxFdmVudCk7CiAK
LSAgICByZXR1cm4gIWFsbG93c0hvcml6b250YWxTdHJldGNoaW5nKHdoZWVsRXZlbnQpOworICAg
IHJldHVybiBtX3Njcm9sbGFibGVBcmVhLmhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSA9
PSBPdmVyc2Nyb2xsQmVoYXZpb3I6OkF1dG8gJiYgIWFsbG93c0hvcml6b250YWxTdHJldGNoaW5n
KHdoZWVsRXZlbnQpOwogfQogICAgIAogYm9vbCBTY3JvbGxBbmltYXRvck1hYzo6aGFuZGxlV2hl
ZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpCkBAIC0xNDMsNiAr
MTQzLDkgQEAgc3RhdGljIGJvb2wgZ2VzdHVyZVNob3VsZEJlZ2luU25hcChjb25zdCBQbGF0Zm9y
bVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIFNjcm9sbEUKIAogYm9vbCBTY3JvbGxBbmltYXRvck1h
Yzo6YWxsb3dzVmVydGljYWxTdHJldGNoaW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hl
ZWxFdmVudCkgY29uc3QKIHsKKyAgICBpZiAobV9zY3JvbGxhYmxlQXJlYS52ZXJ0aWNhbE92ZXJz
Y3JvbGxCZWhhdmlvcigpID09IE92ZXJzY3JvbGxCZWhhdmlvcjo6Tm9uZSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIAogICAgIHN3aXRjaCAobV9zY3JvbGxhYmxlQXJlYS52ZXJ0aWNhbFNj
cm9sbEVsYXN0aWNpdHkoKSkgewogICAgIGNhc2UgU2Nyb2xsRWxhc3RpY2l0eTo6QXV0b21hdGlj
OiB7CiAgICAgICAgIFNjcm9sbGJhciogaFNjcm9sbGVyID0gbV9zY3JvbGxhYmxlQXJlYS5ob3Jp
em9udGFsU2Nyb2xsYmFyKCk7CkBAIC0xNjYsNiArMTY5LDkgQEAgYm9vbCBTY3JvbGxBbmltYXRv
ck1hYzo6YWxsb3dzVmVydGljYWxTdHJldGNoaW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYg
d2hlZWwKIAogYm9vbCBTY3JvbGxBbmltYXRvck1hYzo6YWxsb3dzSG9yaXpvbnRhbFN0cmV0Y2hp
bmcoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50KSBjb25zdAogeworICAgIGlm
IChtX3Njcm9sbGFibGVBcmVhLmhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSA9PSBPdmVy
c2Nyb2xsQmVoYXZpb3I6Ok5vbmUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKICAgICBz
d2l0Y2ggKG1fc2Nyb2xsYWJsZUFyZWEuaG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkoKSkgewog
ICAgIGNhc2UgU2Nyb2xsRWxhc3RpY2l0eTo6QXV0b21hdGljOiB7CiAgICAgICAgIFNjcm9sbGJh
ciogaFNjcm9sbGVyID0gbV9zY3JvbGxhYmxlQXJlYS5ob3Jpem9udGFsU2Nyb2xsYmFyKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsaW5nRWZmZWN0c0Nv
bnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsaW5nRWZmZWN0
c0NvbnRyb2xsZXIubW0KaW5kZXggODAwY2M1MTEwNzVhYWIwMjA4ZTg5NjczNWEzZTliZDFlMzAy
MjgxMS4uMGQxMjU2MGM0N2I2MzQ4ZTc3ZjYzNmFlYjQ0NjI1YjcxNzU1NDI3ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVy
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxpbmdFZmZlY3RzQ29u
dHJvbGxlci5tbQpAQCAtMzM3LDkgKzMzNyw5IEBAIGJvb2wgU2Nyb2xsaW5nRWZmZWN0c0NvbnRy
b2xsZXI6OmFwcGx5U2Nyb2xsRGVsdGFXaXRoU3RyZXRjaGluZyhjb25zdCBQbGF0Zm9ybVdoCiAg
ICAgcmV0dXJuIGNhblN0YXJ0QW5pbWF0aW9uOwogfQogCi1GbG9hdFNpemUgU2Nyb2xsaW5nRWZm
ZWN0c0NvbnRyb2xsZXI6OndoZWVsRGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRpY2FsKGNvbnN0IFBs
YXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCkKK0Zsb2F0U2l6ZSBTY3JvbGxpbmdFZmZlY3Rz
Q29udHJvbGxlcjo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoY29uc3QgRmxvYXRT
aXplJiB3aGVlbERlbHRhKQogewotICAgIHJldHVybiBkZWx0YUFsaWduZWRUb0RvbWluYW50QXhp
cyh3aGVlbEV2ZW50LmRlbHRhKCkpOworICAgIHJldHVybiBkZWx0YUFsaWduZWRUb0RvbWluYW50
QXhpcyh3aGVlbERlbHRhKTsKIH0KIAogdm9pZCBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6
dXBkYXRlUnViYmVyQmFuZEFuaW1hdGluZ1N0YXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5oCmluZGV4IDdhYzhjZGRiYjA5
NDMyMzdjMTI3YWY4ZjY3ZTRlZmFlYWZiZjVkNTkuLjJiMzljMGNiN2M1MzIzZDlmMTk3NjJiNmY5
MTNkNDVlYjk5MTMwYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllclNjcm9sbGFibGVBcmVhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuaApAQCAtMjQwLDYgKzI0MCw4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHVwZGF0ZUxheWVyUG9zaXRpb25zQWZ0ZXJEb2N1bWVudFNjcm9sbCgpOwogCiAgICAg
c3RkOjpvcHRpb25hbDxMYXlvdXRSZWN0PiB1cGRhdGVTY3JvbGxQb3NpdGlvbihjb25zdCBTY3Jv
bGxQb3NpdGlvbkNoYW5nZU9wdGlvbnMmLCBjb25zdCBMYXlvdXRSZWN0JiByZXZlYWxSZWN0LCBj
b25zdCBMYXlvdXRSZWN0JiBsb2NhbEV4cG9zZVJlY3QpOworICAgIGJvb2wgaGFzSG9yaXpvbnRh
bE92ZXJzY3JvbGxCZWhhdmlvcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGhvcml6b250YWxPdmVy
c2Nyb2xsQmVoYXZpb3IoKSAhPSBPdmVyc2Nyb2xsQmVoYXZpb3I6OkF1dG87IH0KKyAgICBib29s
IGhhc1ZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdmVy
dGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSAhPSBPdmVyc2Nyb2xsQmVoYXZpb3I6OkF1dG87IH0K
IAogcHJpdmF0ZToKICAgICBib29sIGhhc0hvcml6b250YWxPdmVyZmxvdygpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDliMDYzZDQ2MTA4YmVlY2I3OWEyMmRjOGUxYTgzZDM5YWM3M2UyMmIuLmI2ODhlNDY3MmNh
NGQ2YTNkZjZmYzM0MWQ5ZjY1ZWY0ZmY2ZGM4MTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAy
MS0xMi0wMiAgTmlrb2xhb3MgTW91Y2h0YXJpcyAgPG5tb3VjaHRhcmlzQGFwcGxlLmNvbT4KKwor
ICAgICAgICBJbXBsZW1lbnQgQ1NTIG92ZXJzY3JvbGwtYmVoYXZpb3IgZm9yIHN5bmNocm9ub3Vz
IHNjcm9sbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjIyOTY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBmYXN0L3Njcm9sbGluZy9yZXNvdXJjZXMvb3ZlcnNjcm9sbC1iZWhhdmlvci1zdXBwb3J0Lmpz
OiBBZGRlZC4KKyAgICAgICAgKGdldERlbHRhcyk6CisgICAgICAgIChhc3luYyBtb3VzZVdoZWVs
U2Nyb2xsQW5kV2FpdCk6CisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3Zl
cnNjcm9sbC1iZWhhdmlvci1lbGVtZW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2Ny
b2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZp
b3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9zY3Jv
bGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1l
Lmh0bWw6IEFkZGVkLgorCiAyMDIxLTExLTMwICBSb2JlcnQgSmVubmVyICA8SmVubmVyQGFwcGxl
LmNvbT4KIAogICAgICAgICBSRUJBU0VMSU5FIFsgTW9udGVyZXkgXWZhc3QvY3NzL2NvbnRpbnVh
dGlvbkNyYXNoLmh0bWwgKGxheW91dC10ZXN0KSBpcyBhIGNvbnN0YW50IHRleHQgZmFpbHVyZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvcmVzb3VyY2VzL292ZXJzY3Jv
bGwtYmVoYXZpb3Itc3VwcG9ydC5qcyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3Jlc291
cmNlcy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXN1cHBvcnQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2JkMjIyZTkw
YjUyYTE5MzBiN2ZjZmU0NDIzZTk0NTgzYzA0NjAwZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3Jlc291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXN1cHBv
cnQuanMKQEAgLTAsMCArMSwzOSBAQAorZnVuY3Rpb24gZ2V0RGVsdGFzKGRpcmVjdGlvbikgewor
ICAgIHZhciBkZWx0YVggPSAwOworICAgIHZhciBkZWx0YVkgPSAwOworICAgIGlmIChkaXJlY3Rp
b24gPT0gImRvd24iKQorICAgICAgICBkZWx0YVkgPSAtNQorICAgIGVsc2UgaWYgKGRpcmVjdGlv
biA9PSAidXAiKQorICAgICAgICBkZWx0YVkgPSA1OworICAgIGVsc2UgaWYgKGRpcmVjdGlvbiA9
PSAicmlnaHQiKQorICAgICAgICBkZWx0YVggPSAtNTsKKyAgICBlbHNlIGlmIChkaXJlY3Rpb24g
PT0gImxlZnQiKQorICAgICAgICBkZWx0YVggPSA1OworICAgIHJldHVybiB7CisgICAgICAgIFg6
IGRlbHRhWCwKKyAgICAgICAgWTogZGVsdGFZCisgICAgfTsKK30KKworYXN5bmMgZnVuY3Rpb24g
bW91c2VXaGVlbFNjcm9sbEFuZFdhaXQoeCwgeSwgYmVnaW5YLCBiZWdpblksIGRlbHRhWCwgZGVs
dGFZKQoreworICAgIGlmIChiZWdpblggPT09IHVuZGVmaW5lZCkKKyAgICAgICAgYmVnaW5YID0g
MDsKKyAgICBpZiAoYmVnaW5ZID09PSB1bmRlZmluZWQpCisgICAgICAgIGJlZ2luWSA9IC0xOwor
ICAgIGlmIChkZWx0YVggPT09IHVuZGVmaW5lZCkKKyAgICAgICAgZGVsdGFYID0gMDsKKyAgICBp
ZiAoZGVsdGFZID09PSB1bmRlZmluZWQpCisgICAgICAgIGRlbHRhWSA9IC0xMDsKKworICAgIGV2
ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92
ZVRvKHgsIHkpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhiZWdpblgsIGJlZ2luWSwgImJlZ2FuIiwgIm5vbmUiKTsKKyAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZGVsdGFYLCBkZWx0
YVksICJjaGFuZ2VkIiwgIm5vbmUiKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgImVuZGVkIiwgIm5vbmUiKTsKKyAgICByZXR1
cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gewor
ICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHJlc29sdmUpOworICAgICAgICB9LCA1
MDApOworICAgIH0pOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZp
b3ItZWxlbWVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5j
LXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjI3MTUwZmY2MGI1ZGJkZDBiNGE3YWM2ZjgzZmI1NmY1N2NkMmNkODIKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xs
LWJlaGF2aW9yLWVsZW1lbnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjAgQEAKKworUEFTUyBF
bGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBh
dXRvIGF1dG8uCitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Ny
b2xsLWJlaGF2aW9yOiBhdXRvIGF1dG8uCitQQVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwg
dGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gYXV0by4KK1BBU1MgRWxlbWVu
dCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4g
YXV0by4KK1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9s
bC1iZWhhdmlvcjogbm9uZSBhdXRvLgorUEFTUyBFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0
IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBhdXRvLgorUEFTUyBFbGVtZW50IGhvcml6
b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIGNvbnRhaW4u
CitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2
aW9yOiBhdXRvIGNvbnRhaW4uCitQQVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3
aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gY29udGFpbi4KK1BBU1MgRWxlbWVudCB2
ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gY29u
dGFpbi4KK1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9s
bC1iZWhhdmlvcjogbm9uZSBjb250YWluLgorUEFTUyBFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0
ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBjb250YWluLgorUEFTUyBFbGVtZW50
IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIG5v
bmUuCitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJl
aGF2aW9yOiBhdXRvIG5vbmUuCitQQVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3
aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gbm9uZS4KK1BBU1MgRWxlbWVudCB2ZXJ0
aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gbm9uZS4K
K1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhh
dmlvcjogbm9uZSBub25lLgorUEFTUyBFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGgg
b3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBub25lLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwt
YmVoYXZpb3ItZWxlbWVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI2NjQ3NmYwNWZkMmY0MDNhYTRlNmVk
YmY4ZGJmZmU0YjczMjljMjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Nj
cm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQuaHRtbApAQCAt
MCwwICsxLDg2IEBACis8IWRvY3R5cGUgaHRtbD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L292ZXJzY3JvbGwtYmVoYXZpb3Itc3VwcG9ydC5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9Imhl
bHAiIGhyZWY9Imh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3Mtb3ZlcnNjcm9sbC1iZWhhdmlv
ciI+Cis8c3R5bGU+CisgICAgLnNjcm9sbGluZyB7CisgICAgICAgIG92ZXJmbG93OiBzY3JvbGw7
CisgICAgfQorICAgIC5zY3JvbGxDb250ZW50IHsKKyAgICAgICAgd2lkdGg6IDMwMHB4OworICAg
ICAgICBoZWlnaHQ6IDMwMHB4OworICAgIH0KKyAgICAjcm9vdCB7CisgICAgICAgIHdpZHRoOiAy
MDBweDsKKyAgICAgICAgaGVpZ2h0OiAyMDBweDsKKyAgICB9CisgICAgI3Njcm9sbGVyIHsKKyAg
ICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgIH0KKzwvc3R5
bGU+Cis8ZGl2IGlkPSdyb290JyBjbGFzcz0ic2Nyb2xsaW5nIj4KKyAgICA8ZGl2IGlkPSdzY3Jv
bGxlcicgY2xhc3M9InNjcm9sbGluZyI+CisgICAgICAgIDxkaXYgY2xhc3M9InNjcm9sbENvbnRl
bnQiPjwvZGl2PgorICAgIDwvZGl2PgorICAgIDxkaXYgY2xhc3M9InNjcm9sbENvbnRlbnQiPjwv
ZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+Citjb25zdCByb290ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3Jvb3QnKTsKK2NvbnN0IHNjcm9sbGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3Njcm9sbGVyJyk7Cit2YXIgb3ZlcnNjcm9sbERhdGFzID0gW1siYXV0byIsICJhdXRvIiwgdHJ1
ZSwgdHJ1ZV0sCisgICAgICAgICAgICAgICAgICAgICAgICBbImNvbnRhaW4iLCAiYXV0byIsIGZh
bHNlLCB0cnVlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFsibm9uZSIsICJhdXRvIiwgZmFs
c2UsIHRydWVdLAorICAgICAgICAgICAgICAgICAgICAgICAgWyJhdXRvIiwgImNvbnRhaW4iLCB0
cnVlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAgICBbImNvbnRhaW4iLCAiY29udGFp
biIsIGZhbHNlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAgICBbIm5vbmUiLCAiY29u
dGFpbiIsIGZhbHNlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAgICBbImF1dG8iLCAi
bm9uZSIsIHRydWUsIGZhbHNlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFsiY29udGFpbiIs
ICJub25lIiwgZmFsc2UsIGZhbHNlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFsibm9uZSIs
ICJub25lIiwgZmFsc2UsIGZhbHNlXV07CisKK2Z1bmN0aW9uIHJlc2V0VGVzdCgpIHsKKyAgICAv
LyBUcnkgdmFyaW91cyBtZXRob2RzIHRvIGVuc3VyZSB0aGUgZWxlbWVudCBwb3NpdGlvbiBpcyBy
ZXNldCBpbW1lZGlhdGVseS4KKyAgICBzY3JvbGxlci5zY3JvbGxMZWZ0ID0gMzAwOworICAgIHNj
cm9sbGVyLnNjcm9sbFRvcCA9IDMwMDsKKyAgICBzY3JvbGxlci5zY3JvbGxUbygzMDAsIDMwMCk7
CisKKyAgICByb290LnNjcm9sbExlZnQgPSAwOworICAgIHJvb3Quc2Nyb2xsVG9wID0gMDsKKyAg
ICByb290LnNjcm9sbFRvKDAsIDApOworfQorCitmdW5jdGlvbiBzdGFydFRlc3QoKSB7CisgICAg
b3ZlcnNjcm9sbERhdGFzLmZvckVhY2goKFtvdmVyc2Nyb2xsWCwgb3ZlcnNjcm9sbFksIHByb3Bh
Z2F0ZVgsIHByb3BhZ2F0ZVldKSA9PiB7CisgICAgICAgIHByb21pc2VfdGVzdCgoKSA9PiB7Cisg
ICAgICAgICAgICByZXNldFRlc3QoKTsKKyAgICAgICAgICAgIHNjcm9sbGVyLnN0eWxlLm92ZXJz
Y3JvbGxCZWhhdmlvclggPSBvdmVyc2Nyb2xsWDsKKyAgICAgICAgICAgIHNjcm9sbGVyLnN0eWxl
Lm92ZXJzY3JvbGxCZWhhdmlvclkgPSBvdmVyc2Nyb2xsWTsKKyAgICAgICAgICAgIGRvY3VtZW50
LmJvZHkuY2xpZW50V2lkdGg7CisKKyAgICAgICAgICAgIHZhciB4ID0gc2Nyb2xsZXIuY2xpZW50
V2lkdGggLyAyOworICAgICAgICAgICAgdmFyIHkgPSBzY3JvbGxlci5jbGllbnRIZWlnaHQgLyAy
OworICAgICAgICAgICAgdmFyIGRlbHRhID0gZ2V0RGVsdGFzKCJyaWdodCIpOworICAgICAgICAg
ICAgcmV0dXJuIG1vdXNlV2hlZWxTY3JvbGxBbmRXYWl0KHgsIHksIGRlbHRhLlgsIGRlbHRhLlks
IGRlbHRhLlgsIGRlbHRhLlkpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGFzc2VydF9l
cXVhbHMocm9vdC5zY3JvbGxMZWZ0ID4gMCwgcHJvcGFnYXRlWCwgJ0NvbnRpbnVlIHVwIHRoZSBo
b3Jpem9udGFsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0s
ICdFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9y
OiAnICsgb3ZlcnNjcm9sbFggKyAnICcgKyBvdmVyc2Nyb2xsWSArICcuJyk7CisKKyAgICAgICAg
cHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAgIHJlc2V0VGVzdCgpOworICAgICAgICAg
ICAgc2Nyb2xsZXIuc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWCA9IG92ZXJzY3JvbGxYOworICAg
ICAgICAgICAgc2Nyb2xsZXIuc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWSA9IG92ZXJzY3JvbGxZ
OworCisgICAgICAgICAgICB2YXIgeCA9IHNjcm9sbGVyLmNsaWVudFdpZHRoIC8gMjsKKyAgICAg
ICAgICAgIHZhciB5ID0gc2Nyb2xsZXIuY2xpZW50SGVpZ2h0IC8gMjsKKyAgICAgICAgICAgIHZh
ciBkZWx0YSA9IGdldERlbHRhcygiZG93biIpOworICAgICAgICAgICAgcmV0dXJuIG1vdXNlV2hl
ZWxTY3JvbGxBbmRXYWl0KHgsIHksIGRlbHRhLlgsIGRlbHRhLlksIGRlbHRhLlgsIGRlbHRhLlkp
LnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxU
b3AgPiAwLCBwcm9wYWdhdGVZLCAnQ29udGludWUgdXAgdGhlIHZlcnRpY2FsIHNjcm9sbCBjaGFp
bmluZycpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0sICdFbGVtZW50IHZlcnRpY2FsIHNj
cm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogJyArIG92ZXJzY3JvbGxYICsgJyAn
ICsgb3ZlcnNjcm9sbFkgKyAnLicpOworICAgIH0pOworfQorCithZGRFdmVudExpc3RlbmVyKCJs
b2FkIiwgc3RhcnRUZXN0KTsKKzwvc2NyaXB0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJz
Y3JvbGwtYmVoYXZpb3ItaWZyYW1lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Ny
b2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45MDBhMGI3ZDkwNWI4N2MxZGI3NjI2OTRmZDAwNjM4ZjE5NzY5NTM3Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwt
b3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjEgQEAK
KworCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1i
ZWhhdmlvcjogYXV0byBhdXRvLgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0
aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIGF1dG8uCitQQVNTIElmcmFtZSBob3Jpem9udGFs
IHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBhdXRvLgorUEFT
UyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBj
b250YWluIGF1dG8uCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3Zl
cnNjcm9sbC1iZWhhdmlvcjogbm9uZSBhdXRvLgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xs
IHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIGF1dG8uCitQQVNTIElmcmFtZSBo
b3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBjb250
YWluLgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJl
aGF2aW9yOiBhdXRvIGNvbnRhaW4uCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0
IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBjb250YWluLgorUEFTUyBJZnJhbWUg
dmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGNv
bnRhaW4uCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9s
bC1iZWhhdmlvcjogbm9uZSBjb250YWluLgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRl
c3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIGNvbnRhaW4uCitQQVNTIElmcmFtZSBo
b3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBub25l
LgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2
aW9yOiBhdXRvIG5vbmUuCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGgg
b3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBub25lLgorUEFTUyBJZnJhbWUgdmVydGljYWwg
c2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIG5vbmUuCitQQVNT
IElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjog
bm9uZSBub25lLgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Ny
b2xsLWJlaGF2aW9yOiBub25lIG5vbmUuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
c2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9y
LWlmcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE2OGU1ZGFlZjlhM2IxZDA4NTZhYjczYWZmMTZlMmNh
YzUyYjhjOTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9z
eW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS5odG1sCkBAIC0wLDAgKzEsODYg
QEAKKzwhZG9jdHlwZSBodG1sPgorCis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhh
cm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9vdmVyc2Ny
b2xsLWJlaGF2aW9yLXN1cHBvcnQuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJoZWxwIiBocmVm
PSJodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLW92ZXJzY3JvbGwtYmVoYXZpb3IiPgorPHN0
eWxlPgorICAgIC5zY3JvbGxpbmcgeworICAgICAgICBvdmVyZmxvdzogc2Nyb2xsOworICAgIH0K
KyAgICAuc2Nyb2xsQ29udGVudCB7CisgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgaGVp
Z2h0OiAzMDBweDsKKyAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywg
cmVkLCBibHVlKTsKKyAgICB9CisgICAgI3Jvb3QgeworICAgICAgICB3aWR0aDogMjAwcHg7Cisg
ICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgfQorICAgICNzY3JvbGxlciB7CisgICAgICAgIHdp
ZHRoOiAxMDBweDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgICAgb3ZlcnNjcm9sbC1i
ZWhhdmlvci15OiBhdXRvOworICAgIH0KKzwvc3R5bGU+Cis8ZGl2IGlkPSdyb290JyBjbGFzcz0i
c2Nyb2xsaW5nIj4KKyAgICA8aWZyYW1lIGlkPSdzY3JvbGxlcicgc3JjZG9jPSI8aHRtbD48ZGl2
IHN0eWxlPSd3aWR0aDogMzAwcHg7IGhlaWdodDogMzAwcHg7Jz48L2Rpdj48L2h0bWw+CisgICAg
ICAgICI+PC9pZnJhbWU+CisgICAgPGRpdiBjbGFzcz0ic2Nyb2xsQ29udGVudCI+PC9kaXY+Cis8
L2Rpdj4KKworPHNjcmlwdD4KKyAgICBjb25zdCByb290ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3Jvb3QnKTsKKyAgICBjb25zdCBzY3JvbGxlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdzY3JvbGxlcicpOworICAgIHZhciBvdmVyc2Nyb2xsRGF0YXMgPSBbWyJhdXRvIiwgImF1dG8i
LCB0cnVlLCB0cnVlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImNvbnRhaW4iLCAi
YXV0byIsIGZhbHNlLCB0cnVlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIm5vbmUi
LCAiYXV0byIsIGZhbHNlLCB0cnVlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImF1
dG8iLCAiY29udGFpbiIsIHRydWUsIGZhbHNlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBbImNvbnRhaW4iLCAiY29udGFpbiIsIGZhbHNlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgWyJub25lIiwgImNvbnRhaW4iLCBmYWxzZSwgZmFsc2VdLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFsiYXV0byIsICJub25lIiwgdHJ1ZSwgZmFsc2VdLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFsiY29udGFpbiIsICJub25lIiwgZmFsc2UsIGZhbHNlXSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIm5vbmUiLCAibm9uZSIsIGZhbHNlLCBmYWxz
ZV1dOworICAgIGZ1bmN0aW9uIHJlc2V0VGVzdCgpIHsKKyAgICAgICAgLy8gVHJ5IHZhcmlvdXMg
bWV0aG9kcyB0byBlbnN1cmUgdGhlIGVsZW1lbnQgcG9zaXRpb24gaXMgcmVzZXQgaW1tZWRpYXRl
bHkuCisgICAgICAgIHNjcm9sbGVyLmNvbnRlbnRXaW5kb3cuc2Nyb2xsWCA9IDMwMDsKKyAgICAg
ICAgc2Nyb2xsZXIuY29udGVudFdpbmRvdy5zY3JvbGxZID0gMzAwOworICAgICAgICBzY3JvbGxl
ci5jb250ZW50V2luZG93LnNjcm9sbFRvKDMwMCwgMzAwKTsKKyAgICAgICAgcm9vdC5zY3JvbGxM
ZWZ0ID0gMDsKKyAgICAgICAgcm9vdC5zY3JvbGxUb3AgPSAwOworICAgICAgICByb290LnNjcm9s
bFRvKDAsIDApOworICAgIH0KKworICAgIGZ1bmN0aW9uIG92ZXJzY3JvbGxCZWhhdmlvclRlc3Qo
KSB7CisgICAgICAgIG92ZXJzY3JvbGxEYXRhcy5mb3JFYWNoKChbb3ZlcnNjcm9sbFgsIG92ZXJz
Y3JvbGxZLCBwcm9wYWdhdGVYLCBwcm9wYWdhdGVZXSkgPT4geworICAgICAgICAgICAgcHJvbWlz
ZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAgICAgICByZXNldFRlc3QoKTsKKyAgICAgICAgICAg
ICAgICB2YXIgdGFyZ2V0ID0gc2Nyb2xsZXIuY29udGVudFdpbmRvdy5kb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgiaHRtbCIpWzBdOworICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5v
dmVyc2Nyb2xsQmVoYXZpb3JYID0gb3ZlcnNjcm9sbFg7CisgICAgICAgICAgICAgICAgdGFyZ2V0
LnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclkgPSBvdmVyc2Nyb2xsWTsKKyAgICAgICAgICAgICAg
ICB2YXIgeCA9IHNjcm9sbGVyLmNsaWVudFdpZHRoIC8gMjsKKyAgICAgICAgICAgICAgICB2YXIg
eSA9IHNjcm9sbGVyLmNsaWVudEhlaWdodCAvIDI7CisgICAgICAgICAgICAgICAgdmFyIGRlbHRh
ID0gZ2V0RGVsdGFzKCJyaWdodCIpOworICAgICAgICAgICAgICAgIHJldHVybiBtb3VzZVdoZWVs
U2Nyb2xsQW5kV2FpdCh4LCB5LCBkZWx0YS5YLCBkZWx0YS5ZLCBkZWx0YS5YLCBkZWx0YS5ZKS50
aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9s
bExlZnQgPiAwLCBwcm9wYWdhdGVYLCAnQ29udGludWUgdXAgdGhlIGhvcml6b250YWwgc2Nyb2xs
IGNoYWluaW5nJyk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9LCAnSWZyYW1l
IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiAnICsgb3Zl
cnNjcm9sbFggKyAnICcgKyBvdmVyc2Nyb2xsWSArICcuJyk7CisKKyAgICAgICAgICAgIHByb21p
c2VfdGVzdCgoKSA9PiB7CisgICAgICAgICAgICAgICAgcmVzZXRUZXN0KCk7CisgICAgICAgICAg
ICAgICAgdmFyIHRhcmdldCA9IHNjcm9sbGVyLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoImh0bWwiKVswXTsKKyAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUu
b3ZlcnNjcm9sbEJlaGF2aW9yWCA9IG92ZXJzY3JvbGxYOworICAgICAgICAgICAgICAgIHRhcmdl
dC5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JZID0gb3ZlcnNjcm9sbFk7CisKKyAgICAgICAgICAg
ICAgICB2YXIgeCA9IHNjcm9sbGVyLmNsaWVudFdpZHRoIC8gMjsKKyAgICAgICAgICAgICAgICB2
YXIgeSA9IHNjcm9sbGVyLmNsaWVudEhlaWdodCAvIDI7CisgICAgICAgICAgICAgICAgdmFyIGRl
bHRhID0gZ2V0RGVsdGFzKCJkb3duIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1vdXNlV2hl
ZWxTY3JvbGxBbmRXYWl0KHgsIHksIGRlbHRhLlgsIGRlbHRhLlksIGRlbHRhLlgsIGRlbHRhLlkp
LnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Ny
b2xsVG9wID4gMCwgcHJvcGFnYXRlWSwgJ0NvbnRpbnVlIHVwIHRoZSB2ZXJ0aWNhbCBzY3JvbGwg
Y2hhaW5pbmcnKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0sICdJZnJhbWUg
dmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiAnICsgb3ZlcnNj
cm9sbFggKyAnICcgKyBvdmVyc2Nyb2xsWSArICcuJyk7CisgICAgICAgIH0pOworICAgIH0KKwor
ICAgIHNjcm9sbGVyLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBvdmVyc2Nyb2xsQmVoYXZpb3JU
ZXN0KTsKKzwvc2NyaXB0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZp
b3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9z
Y3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxl
bWVudC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjM5NWI2NDg4ZDA4NzBiOTU2MWMwMjg2Nzlk
N2UxNWE0N2ZjZTZlOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xs
aW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorCitQQVNTIFVuc2Nyb2xsYWJsZSBlbGVtZW50
IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLgor
UEFTUyBVbnNjcm9sbGFibGUgZWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJz
Y3JvbGwtYmVoYXZpb3I6IG5vbmUuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Ny
b2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1l
bnQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3Jv
bGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMWU1NzM4
YTVkN2E3OTY5Y2FlNmVjYWNiYjNmOGU5YzJiMjA3M2ViCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11
bnNjcm9sbGFibGUtZWxlbWVudC5odG1sCkBAIC0wLDAgKzEsNjcgQEAKKzwhZG9jdHlwZSBodG1s
PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXN1cHBv
cnQuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL2RyYWZ0cy5j
c3N3Zy5vcmcvY3NzLW92ZXJzY3JvbGwtYmVoYXZpb3IiPgorPHN0eWxlPgorICAgIC5zY3JvbGxp
bmcgeworICAgICAgICBvdmVyZmxvdzogc2Nyb2xsOworICAgIH0KKyAgICAuc2Nyb2xsQ29udGVu
dCB7CisgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICB9
CisgICAgI3Jvb3QgeworICAgICAgICB3aWR0aDogMjAwcHg7CisgICAgICAgIGhlaWdodDogMjAw
cHg7CisgICAgfQorICAgICNzY3JvbGxlciB7CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAg
ICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgICAgb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZTsKKyAg
ICAgICAgb3ZlcmZsb3c6IHZpc2libGU7CisgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFk
aWVudCgxMzVkZWcsIHJlZCwgYmx1ZSk7CisgICAgfQorPC9zdHlsZT4KKzxkaXYgaWQ9InJvb3Qi
IGNsYXNzPSJzY3JvbGxpbmciPgorICAgIDxkaXYgaWQ9InNjcm9sbGVyIj4KKyAgICAgICAgPGRp
diBjbGFzcz0ic2Nyb2xsQ29udGVudCI+PC9kaXY+CisgICAgPC9kaXY+CisgICAgPGRpdiBjbGFz
cz0ic2Nyb2xsQ29udGVudCI+PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4KK2NvbnN0IHJvb3Qg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncm9vdCcpOworY29uc3Qgc2Nyb2xsZXIgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnc2Nyb2xsZXInKTsKKworZnVuY3Rpb24gcmVzZXRUZXN0KCkg
eworICAgIHJvb3Quc2Nyb2xsTGVmdCA9IDA7CisgICAgcm9vdC5zY3JvbGxUb3AgPSAwOworICAg
IHJvb3Quc2Nyb2xsVG8oMCwgMCk7Cit9CisKK2Z1bmN0aW9uIHN0YXJ0VGVzdCgpIHsKKyAgICAg
ICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAgIHJlc2V0VGVzdCgpOworICAgICAg
ICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAgICAgICAgICB2YXIg
eSA9IHNjcm9sbGVyLmNsaWVudEhlaWdodCAvIDI7CisgICAgICAgICAgICB2YXIgZGVsdGEgPSBn
ZXREZWx0YXMoInJpZ2h0Iik7CisgICAgICAgICAgICByZXR1cm4gbW91c2VXaGVlbFNjcm9sbEFu
ZFdhaXQoeCwgeSwgZGVsdGEuWCwgZGVsdGEuWSwgZGVsdGEuWCwgZGVsdGEuWSkudGhlbigoKSA9
PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbExlZnQgPiAwLCB0
cnVlLCAnQ29udGludWUgdXAgdGhlIGhvcml6b250YWwgc2Nyb2xsIGNoYWluaW5nJyk7CisgICAg
ICAgICAgICB9KTsKKyAgICAgICAgfSwgJ1Vuc2Nyb2xsYWJsZSBlbGVtZW50IGhvcml6b250YWwg
c2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLicpOworCisgICAgICAg
IHByb21pc2VfdGVzdCgoKSA9PiB7CisgICAgICAgICAgICByZXNldFRlc3QoKTsKKyAgICAgICAg
ICAgIHZhciB4ID0gc2Nyb2xsZXIuY2xpZW50V2lkdGggLyAyOworICAgICAgICAgICAgdmFyIHkg
PSBzY3JvbGxlci5jbGllbnRIZWlnaHQgLyAyOworICAgICAgICAgICAgdmFyIGRlbHRhID0gZ2V0
RGVsdGFzKCJkb3duIik7CisgICAgICAgICAgICByZXR1cm4gbW91c2VXaGVlbFNjcm9sbEFuZFdh
aXQoeCwgeSwgZGVsdGEuWCwgZGVsdGEuWSwgZGVsdGEuWCwgZGVsdGEuWSkudGhlbigoKSA9PiB7
CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbFRvcCA+IDAsIHRydWUs
ICdDb250aW51ZSB1cCB0aGUgdmVydGljYWwgc2Nyb2xsIGNoYWluaW5nJyk7CisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgfSwgJ1Vuc2Nyb2xsYWJsZSBlbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0
ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4nKTsKK30KKworYWRkRXZlbnRMaXN0
ZW5lcigibG9hZCIsIHN0YXJ0VGVzdCk7Cis8L3NjcmlwdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9s
bC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlv
ci11bnNjcm9sbGFibGUtaWZyYW1lLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZmE1OWNjYmE3
OWFlZmYzM2RhNzBlOTNkNDg4YTA3ZWVjOWM1NjkxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNj
cm9sbGFibGUtaWZyYW1lLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKKworCitQQVNTIFVu
c2Nyb2xsYWJsZSBpZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwt
YmVoYXZpb3I6IG5vbmUuCitQQVNTIFVuc2Nyb2xsYWJsZSBpZnJhbWUgdmVydGljYWwgc2Nyb2xs
IHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLgorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVu
c2Nyb2xsYWJsZS1pZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMt
c2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmUyNDI1YWZjNjM3ZGY1MWU0NDE1NDI2YWI0NjdjNjE0ZTM4ZWY2MTYKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Ny
b2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUuaHRtbApAQCAtMCwwICsxLDY2IEBACis8
IWRvY3R5cGUgaHRtbD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVz
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
cmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb3ZlcnNjcm9sbC1i
ZWhhdmlvci1zdXBwb3J0LmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0
cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1vdmVyc2Nyb2xsLWJlaGF2aW9yIj4KKzxzdHlsZT4K
KyAgICAuc2Nyb2xsaW5nIHsKKyAgICAgICAgb3ZlcmZsb3c6IHNjcm9sbDsKKyAgICB9CisgICAg
LnNjcm9sbENvbnRlbnQgeworICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgIGhlaWdodDog
MzAwcHg7CisgICAgfQorICAgICNyb290IHsKKyAgICAgICAgd2lkdGg6IDIwMHB4OworICAgICAg
ICBoZWlnaHQ6IDIwMHB4OworICAgIH0KKyAgICAjc2Nyb2xsZXIgeworICAgICAgICB3aWR0aDog
MjAwcHg7CisgICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgICAgIG92ZXJzY3JvbGwtYmVoYXZp
b3I6IG5vbmU7CisgICAgICAgIG92ZXJmbG93OiB2aXNpYmxlOworICAgICAgICBiYWNrZ3JvdW5k
OiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZWQsIGJsdWUpOworICAgIH0KKzwvc3R5bGU+Cis8
ZGl2IGlkPSdyb290JyBjbGFzcz0ic2Nyb2xsaW5nIj4KKyAgICA8aWZyYW1lIGlkPSdzY3JvbGxl
cicgc3JjZG9jPSI8aHRtbCBzdHlsZT0nb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZTsnPjxkaXYg
c3R5bGU9J3dpZHRoOiAxMDBweDsgaGVpZ2h0OiAxMDBweDsnPjwvZGl2PjwvaHRtbD4KKyAgICAg
ICAgIj48L2lmcmFtZT4KKyAgICA8ZGl2IGNsYXNzPSJzY3JvbGxDb250ZW50Ij48L2Rpdj4KKzwv
ZGl2PgorCis8c2NyaXB0PgorY29uc3Qgcm9vdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdy
b290Jyk7Citjb25zdCBzY3JvbGxlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY3JvbGxl
cicpOworCitmdW5jdGlvbiByZXNldFRlc3QoKSB7CisgICAgcm9vdC5zY3JvbGxMZWZ0ID0gMDsK
KyAgICByb290LnNjcm9sbFRvcCA9IDA7CisgICAgcm9vdC5zY3JvbGxUbygwLCAwKTsKK30KKwor
ZnVuY3Rpb24gc3RhcnRUZXN0KCkgeworICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAg
ICAgICAgICAgcmVzZXRUZXN0KCk7CisgICAgICAgICAgICB2YXIgeCA9IHNjcm9sbGVyLmNsaWVu
dFdpZHRoIC8gMjsKKyAgICAgICAgICAgIHZhciB5ID0gc2Nyb2xsZXIuY2xpZW50SGVpZ2h0IC8g
MjsKKyAgICAgICAgICAgIHZhciBkZWx0YSA9IGdldERlbHRhcygicmlnaHQiKTsKKyAgICAgICAg
ICAgIHJldHVybiBtb3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCh4LCB5LCBkZWx0YS5YLCBkZWx0YS5Z
LCBkZWx0YS5YLCBkZWx0YS5ZKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRf
ZXF1YWxzKHJvb3Quc2Nyb2xsTGVmdCA+IDAsIHRydWUsICdDb250aW51ZSB1cCB0aGUgaG9yaXpv
bnRhbCBzY3JvbGwgY2hhaW5pbmcnKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9LCAnVW5z
Y3JvbGxhYmxlIGlmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1i
ZWhhdmlvcjogbm9uZS4nKTsKKworICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgICAg
ICAgICAgcmVzZXRUZXN0KCk7CisgICAgICAgICAgICB2YXIgeCA9IHNjcm9sbGVyLmNsaWVudFdp
ZHRoIC8gMjsKKyAgICAgICAgICAgIHZhciB5ID0gc2Nyb2xsZXIuY2xpZW50SGVpZ2h0IC8gMjsK
KyAgICAgICAgICAgIHZhciBkZWx0YSA9IGdldERlbHRhcygiZG93biIpOworICAgICAgICAgICAg
cmV0dXJuIG1vdXNlV2hlZWxTY3JvbGxBbmRXYWl0KHgsIHksIGRlbHRhLlgsIGRlbHRhLlksIGRl
bHRhLlgsIGRlbHRhLlkpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVh
bHMocm9vdC5zY3JvbGxUb3AgPiAwLCB0cnVlLCAnQ29udGludWUgdXAgdGhlIHZlcnRpY2FsIHNj
cm9sbCBjaGFpbmluZycpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0sICdVbnNjcm9sbGFi
bGUgaWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjog
bm9uZS4nKTsKK30KKworYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIHN0YXJ0VGVzdCk7Cis8L3Nj
cmlwdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lv
cy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGU1M2QzNGY1Y2NhMjFjNTVmY2NkZDA1ZDAxYzY5Mzlk
MjhjMTU0ZjIuLjM0OTZmYjQ1NGQ3YjVkYTI1ODEzMGJhOWJkYTAxZTZhZGY2M2M2MDEgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zCkBAIC04MTEsNiArODExLDEy
IEBAIHN2Zy90ZXh0L3NlbGVjdGlvbi1kb3VibGVjbGljay5zdmcgWyBTa2lwIF0KIHN2Zy90ZXh0
L3NlbGVjdGlvbi10cmlwbGVjbGljay5zdmcgWyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy1zaGFkb3ctcGFydHMvaW52YWxpZGF0aW9uLXBhcnQtcHNldWRv
Lmh0bWwgWyBTa2lwIF0KIAorIyBPdmVyc2Nyb2xsLWJlaGF2aW9yIGlzIG5vdCBzdXBwb3J0ZWQg
b24gaU9TIHlldDogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzc4
OAorZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50
Lmh0bWwgWyBTa2lwIF0KK2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVo
YXZpb3ItaWZyYW1lLmh0bWwgWyBTa2lwIF0KK2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92
ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRtbCBbIFNraXAgXQorZmFz
dC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUt
aWZyYW1lLmh0bWwgWyBTa2lwIF0KKwogIyBJT1MgZG9lcyBub3QgaW1wbGVtZW50IHNldEF1dG9t
YXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkCiBlZGl0aW5nL2luc2VydGluZy90eXBpbmctc3BhY2Ut
dG8tdHJpZ2dlci1zbWFydC1saW5rLmh0bWwgWyBTa2lwIF0KIGVkaXRpbmcvaW5zZXJ0aW5nL3Nt
YXJ0LWxpbmstd2hlbi1jYXJldC1pcy1tb3ZlZC1iZWZvcmUtVVJMLmh0bWwgWyBTa2lwIF0KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA2N2E4
ZTgzMTYyZGI0Y2JkMTRhY2I2ZTQyMzEyNWMyOWViNTAwNjI5Li4wOGVjZWM0OTU0YmNiOTVhOWFj
Nzk0OGIyM2JlMDI3MTBjZDAyMmVjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdr
MS9UZXN0RXhwZWN0YXRpb25zCkBAIC01MDQsNiArNTA0LDEwIEBAIGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1zY3JvbGwtc25hcC9zY3JvbGwtdGFyZ2V0LXBhZGRpbmct
MDAxLmh0CiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mtc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtc3RvcC1jaGFuZ2UuaHRtbCBbIEZhaWx1cmUgXQogY3NzMy9zY3JvbGwt
c25hcC9zY3JvbGwtcGFkZGluZy1tYWluZnJhbWUtcGFnaW5nLmh0bWwgWyBGYWlsdXJlIF0KIAor
IyBMYWNrIG9mIHdheXMgdG8gY29udHJvbCB0aGUgY3Jvc3MtZnJhbWUgc2Nyb2xsIGNoYWluaW5n
IGluIFdLMS4KK2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3It
aWZyYW1lLmh0bWwgWyBTa2lwIF0KK2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3Jv
bGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sIFsgU2tpcCBdCisKICMjIyBFTkQg
T0YgKDIpIEZhaWx1cmVzIHdpdGhvdXQgYnVnIHJlcG9ydHMKICMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
d2luL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVj
dGF0aW9ucwppbmRleCBlZjc1YmQxMWY2MmQxNGE1NjYzNDBlZTIzYzFmOWE5MzBjYzYzNjQzLi44
ZGI0ZWViMzFmNTMxOWQ4MmMxNTU2NWE1YjEwYTI1ZGJlMTMzNTFhIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucwpAQCAtNjMyLDYgKzYzMiwxMiBAQCBmYXN0L2V2
ZW50cy93aGVlbC9wbGF0Zm9ybS13aGVlbGV2ZW50LXBhZ2luZy15LWluLXNjcm9sbGluZy1wYWdl
Lmh0bWwgWyBTa2lwIF0KIHBvaW50ZXItbG9jay8gWyBTa2lwIF0KIGh0dHAvdGVzdHMvcG9pbnRl
ci1sb2NrLyBbIFNraXAgXQogCisjIE92ZXJzY3JvbGwtYmVoYXZpb3IgaXMgbm90IHN1cHBvcnRl
ZCBvbiBXaW5kb3dzCitmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2
aW9yLWVsZW1lbnQuaHRtbCBbIFNraXAgXQorZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3Zl
cnNjcm9sbC1iZWhhdmlvci1pZnJhbWUuaHRtbCBbIFNraXAgXQorZmFzdC9zY3JvbGxpbmcvc3lu
Yy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC5odG1sIFsg
U2tpcCBdCitmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVu
c2Nyb2xsYWJsZS1pZnJhbWUuaHRtbCBbIFNraXAgXQorCiAjIERhdGFsaXN0IGlzIHVuc3VwcG9y
dGVkIG9uIFdpbmRvd3MKIGFjY2Vzc2liaWxpdHkvZGF0YWxpc3QuaHRtbCBbIFdvbnRGaXggXQog
ZmFzdC9mb3Jtcy9kYXRhbGlzdCBbIFdvbnRGaXggXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446805</attachid>
            <date>2021-12-10 13:53:42 -0800</date>
            <delta_ts>2021-12-10 15:35:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222968-20211210135341.patch</filename>
            <type>text/plain</type>
            <size>40605</size>
            <attacher name="Nikos Mouchtaris">nmouchtaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MzUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGJiNmQyZjJmYmNkN2I3
ODU1MzIxY2U1YjgwMWQ1YzJmYWNiMzhmNC4uMmFkOTAxNmM5ZmExMjhiYTlkODY4MWU2M2NjNGI5
MjcyZWY1YjgzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDIxLTEyLTAyICBOaWtv
bGFvcyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxl
bWVudCBDU1Mgb3ZlcnNjcm9sbC1iZWhhdmlvciBmb3Igc3luY2hyb25vdXMgc2Nyb2xsCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI5NjgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTcGxpdCB1cCBwYXRj
aCBieSBDYXRoaWUgQ2hlbiBhbmQgRnJlZGVyaWMgV2FuZy4gQWRkIGZ1bmN0aW9uIGZvciBibG9j
a2luZyBzY3JvbGwgY2hhaW5pbmcKKyAgICAgICAgYW5kIGZpbHRlcmluZyBzY3JvbGwgZGVsdGEg
ZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZXMgb2Ygb3ZlcnNjcm9sbCBiZWhhdmlvciBmb3IgYSBzY3Jv
bGxhYmxlCisgICAgICAgIGFyZWEuIFRoaXMgcGF0Y2ggaXMgZm9yIHN5bmNocm9ub3VzIHNjcm9s
bGluZyBvbmx5LgorCisgICAgICAgIFRlc3RzOiBmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1v
dmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9zY3Jv
bGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUuaHRtbAorICAgICAg
ICAgICAgICAgZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11
bnNjcm9sbGFibGUtZWxlbWVudC5odG1sCisgICAgICAgICAgICAgICBmYXN0L3Njcm9sbGluZy9z
eW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUuaHRtbAor
CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hv
dWxkQmxvY2tTY3JvbGxDaGFpbmluZ1dpdGhTY3JvbGxhYmxlQXJlYSk6CisgICAgICAgIChXZWJD
b3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnRJbnRlcm5hbCk6CisgICAgICAgIChX
ZWJDb3JlOjpkaWRTY3JvbGxJblNjcm9sbGFibGVBcmVhKToKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudEluQXBwcm9wcmlhdGVFbmNsb3NpbmdCb3gpOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpzY3JvbGxhYmxlQXJlYUNhbkhhbmRsZUV2
ZW50KToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5oOgorICAgICAgICAqIHBhZ2UvRnJh
bWVWaWV3Lmg6CisgICAgICAgICogcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6ZmluZEVuY2xvc2luZ1Njcm9sbGFibGVDb250YWluZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmg6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsaW5n
RWZmZWN0c0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0
b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck1hYzo6c2hvdWxkRm9y
d2FyZFdoZWVsRXZlbnRzVG9QYXJlbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
QW5pbWF0b3JNYWM6OmFsbG93c1ZlcnRpY2FsU3RyZXRjaGluZyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxBbmltYXRvck1hYzo6YWxsb3dzSG9yaXpvbnRhbFN0cmV0Y2hpbmcgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjp3aGVlbERl
bHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxh
eWVyU2Nyb2xsYWJsZUFyZWEuaDoKKwogMjAyMS0xMS0zMCAgU2ltb24gRnJhc2VyICA8c2ltb24u
ZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBQYXNzIHRoZSB0aW1lc3RhbXAgZm9yIHNjcm9s
bGluZyB0aHJlYWQgYW5pbWF0aW9ucyB0aHJvdWdoIGFsbCB0aGUgc2VydmljZVNjcm9sbEFuaW1h
dGlvbigpIGNhbGxzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggZWMzZTQy
MGU3OWJiMWI1ZGNmNzAxMzU1ZDFhY2U2OWJmODg2NDE1MS4uMzQyZDZmMzc2M2ZlZGQ0NDJjOWI5
ZTlmMjk3ZTRlYzZmOTFkNTc2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApA
QCAtMjkxOSw2ICsyOTE5LDMyIEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpjb21wbGV0ZVdpZGdldFdo
ZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCwgY29uCiAgICAgcmV0dXJu
IHBsYXRmb3JtQ29tcGxldGVQbGF0Zm9ybVdpZGdldFdoZWVsRXZlbnQoZXZlbnQsICp3aWRnZXQu
Z2V0KCksIHNjcm9sbGFibGVBcmVhKTsKIH0KIAorc3RhdGljIGJvb2wgc2hvdWxkQmxvY2tTY3Jv
bGxQcm9wb2dhdGlvbldpdGhTY3JvbGxhYmxlQXJlYShjb25zdCBTY3JvbGxhYmxlQXJlYSogc2Ny
b2xsYWJsZUFyZWEsIEZsb2F0U2l6ZSYgYmlhc2VkRGVsdGEpCit7CisgICAgaWYgKHNjcm9sbGFi
bGVBcmVhICYmIChzY3JvbGxhYmxlQXJlYS0+aGFzSG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlv
cigpIHx8IHNjcm9sbGFibGVBcmVhLT5oYXNWZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpKSkg
eworICAgICAgICBpZiAoc2Nyb2xsYWJsZUFyZWEtPmhhc0hvcml6b250YWxPdmVyc2Nyb2xsQmVo
YXZpb3IoKSAmJiAhYmlhc2VkRGVsdGEuaGVpZ2h0KCkgJiYgYmlhc2VkRGVsdGEud2lkdGgoKSkK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBpZiAoKHNjcm9sbGFibGVBcmVhLT5o
YXNIb3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgJiYgc2Nyb2xsYWJsZUFyZWEtPmhhc1Zl
cnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkpIHx8IChzY3JvbGxhYmxlQXJlYS0+aGFzSG9yaXpv
bnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpICYmICFiaWFzZWREZWx0YS5oZWlnaHQoKSkgfHwgKHNj
cm9sbGFibGVBcmVhLT5oYXNWZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpICYmICFiaWFzZWRE
ZWx0YS53aWR0aCgpKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBiaWFzZWRE
ZWx0YS5zZXRXaWR0aChzY3JvbGxhYmxlQXJlYS0+aGFzSG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhh
dmlvcigpID8gMCA6IGJpYXNlZERlbHRhLndpZHRoKCkpOworICAgICAgICBiaWFzZWREZWx0YS5z
ZXRIZWlnaHQoc2Nyb2xsYWJsZUFyZWEtPmhhc1ZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkg
PyAwIDogYmlhc2VkRGVsdGEuaGVpZ2h0KCkpOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK3N0YXRpYyBib29sIHNob3VsZEJsb2NrU2Nyb2xsUHJvcG9nYXRpb25XaXRoRnJhbWVWaWV3
KGNvbnN0IEZyYW1lVmlldyogZnJhbWVWaWV3LCBGbG9hdFNpemUmIGJpYXNlZERlbHRhKQorewor
ICAgIGlmIChmcmFtZVZpZXcgJiYgKGZyYW1lVmlldy0+aGFzSG9yaXpvbnRhbE92ZXJzY3JvbGxC
ZWhhdmlvcigpIHx8IGZyYW1lVmlldy0+aGFzVmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSkp
IHsKKyAgICAgICAgaWYgKGZyYW1lVmlldy0+aGFzSG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlv
cigpICYmICFiaWFzZWREZWx0YS5oZWlnaHQoKSAmJiBiaWFzZWREZWx0YS53aWR0aCgpKQorICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmICgoZnJhbWVWaWV3LT5oYXNIb3Jpem9u
dGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgJiYgZnJhbWVWaWV3LT5oYXNWZXJ0aWNhbE92ZXJzY3Jv
bGxCZWhhdmlvcigpKSB8fCAoZnJhbWVWaWV3LT5oYXNIb3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2
aW9yKCkgJiYgIWJpYXNlZERlbHRhLmhlaWdodCgpKSB8fCAoZnJhbWVWaWV3LT5oYXNWZXJ0aWNh
bE92ZXJzY3JvbGxCZWhhdmlvcigpICYmICFiaWFzZWREZWx0YS53aWR0aCgpKSkKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICBiaWFzZWREZWx0YS5zZXRXaWR0aChmcmFtZVZpZXct
Pmhhc0hvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSA/IDAgOiBiaWFzZWREZWx0YS53aWR0
aCgpKTsKKyAgICAgICAgYmlhc2VkRGVsdGEuc2V0SGVpZ2h0KGZyYW1lVmlldy0+aGFzVmVydGlj
YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSA/IDAgOiBiaWFzZWREZWx0YS5oZWlnaHQoKSk7CisgICAg
fQorICAgIHJldHVybiBmYWxzZTsKK30KKwogYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVs
RXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBPcHRpb25TZXQ8V2hl
ZWxFdmVudFByb2Nlc3NpbmdTdGVwcz4gcHJvY2Vzc2luZ1N0ZXBzKQogewogICAgIFJlZiBwcm90
ZWN0ZWRGcmFtZSA9IG1fZnJhbWU7CkBAIC0zMDI2LDExICszMDUyLDE2IEBAIGJvb2wgRXZlbnRI
YW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50SW50ZXJuYWwoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50
JiBldmVudCwgT3B0CiAgICAgaWYgKGFsbG93U2Nyb2xsaW5nKQogICAgICAgICBhbGxvd1Njcm9s
bGluZyA9IG1fZnJhbWUucGFnZSgpLT5zY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIoKS5sYXRjaGlu
Z0FsbG93c1Njcm9sbGluZ0luRnJhbWUobV9mcmFtZSwgc2Nyb2xsYWJsZUFyZWEpOwogI2VuZGlm
CisgICAgUGxhdGZvcm1XaGVlbEV2ZW50IGFkanVzdGVkV2hlZWxFdmVudCA9IFBsYXRmb3JtV2hl
ZWxFdmVudChldmVudCk7CisgICAgYXV0byBmaWx0ZXJlZERlbHRhID0gYWRqdXN0ZWRXaGVlbEV2
ZW50LmRlbHRhKCk7CisgICAgaWYgKHZpZXcuZ2V0KCkgJiYgc2hvdWxkQmxvY2tTY3JvbGxQcm9w
b2dhdGlvbldpdGhGcmFtZVZpZXcodmlldy5nZXQoKSwgZmlsdGVyZWREZWx0YSkpCisgICAgICAg
IHJldHVybiB0cnVlOwogCiAgICAgaWYgKGFsbG93U2Nyb2xsaW5nKSB7CiAgICAgICAgIC8vIEZJ
WE1FOiBwcm9jZXNzV2hlZWxFdmVudEZvclNjcm9sbGluZygpIGlzIG9ubHkgY2FsbGVkIGZvciBG
cmFtZVZpZXcgc2Nyb2xsaW5nLCBub3Qgb3ZlcmZsb3cgc2Nyb2xsaW5nLCB3aGljaCBpcyBjb25m
dXNpbmcuCi0gICAgICAgIGhhbmRsZWRFdmVudCA9IHByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xs
aW5nKGV2ZW50LCBzY3JvbGxhYmxlQXJlYSwgaGFuZGxpbmcpOwotICAgICAgICBwcm9jZXNzV2hl
ZWxFdmVudEZvclNjcm9sbFNuYXAoZXZlbnQsIHNjcm9sbGFibGVBcmVhKTsKKyAgICAgICAgYWRq
dXN0ZWRXaGVlbEV2ZW50ID0gYWRqdXN0ZWRXaGVlbEV2ZW50LmNvcHlXaXRoRGVsdGFBbmRWZWxv
Y2l0eShmaWx0ZXJlZERlbHRhLCBhZGp1c3RlZFdoZWVsRXZlbnQuc2Nyb2xsaW5nVmVsb2NpdHko
KSk7CisgICAgICAgIGhhbmRsZWRFdmVudCA9IHByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5n
KGFkanVzdGVkV2hlZWxFdmVudCwgc2Nyb2xsYWJsZUFyZWEsIGhhbmRsaW5nKTsKKyAgICAgICAg
cHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxTbmFwKGFkanVzdGVkV2hlZWxFdmVudCwgc2Nyb2xs
YWJsZUFyZWEpOwogICAgIH0KIAogICAgIHJldHVybiBoYW5kbGVkRXZlbnQ7CkBAIC0zMDQ5LDE4
ICszMDgwLDIwIEBAIHN0YXRpYyB2b2lkIGhhbmRsZVdoZWVsRXZlbnRQaGFzZUluU2Nyb2xsYWJs
ZUFyZWEoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhCiAKIHN0YXRpYyBib29sIGRpZFNj
cm9sbEluU2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhLCBjb25z
dCBXaGVlbEV2ZW50JiB3aGVlbEV2ZW50KQogeworICAgIEZsb2F0U2l6ZSBmaWx0ZXJlZERlbHRh
KHdoZWVsRXZlbnQuZGVsdGFYKCksIHdoZWVsRXZlbnQuZGVsdGFZKCkpOworICAgIHNob3VsZEJs
b2NrU2Nyb2xsUHJvcG9nYXRpb25XaXRoU2Nyb2xsYWJsZUFyZWEoJnNjcm9sbGFibGVBcmVhLCBm
aWx0ZXJlZERlbHRhKTsKICAgICBTY3JvbGxHcmFudWxhcml0eSBzY3JvbGxHcmFudWxhcml0eSA9
IHdoZWVsR3JhbnVsYXJpdHlUb1Njcm9sbEdyYW51bGFyaXR5KHdoZWVsRXZlbnQuZGVsdGFNb2Rl
KCkpOwogICAgIGJvb2wgZGlkSGFuZGxlV2hlZWxFdmVudCA9IGZhbHNlOwotICAgIGlmIChmbG9h
dCBhYnNvbHV0ZURlbHRhID0gc3RkOjphYnMod2hlZWxFdmVudC5kZWx0YVgoKSkpCi0gICAgICAg
IGRpZEhhbmRsZVdoZWVsRXZlbnQgfD0gc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsKHdoZWVsRXZlbnQu
ZGVsdGFYKCkgPiAwID8gU2Nyb2xsUmlnaHQgOiBTY3JvbGxMZWZ0LCBzY3JvbGxHcmFudWxhcml0
eSwgYWJzb2x1dGVEZWx0YSk7CisgICAgaWYgKGZsb2F0IGFic29sdXRlRGVsdGEgPSBzdGQ6OmFi
cyhmaWx0ZXJlZERlbHRhLndpZHRoKCkpKQorICAgICAgICBkaWRIYW5kbGVXaGVlbEV2ZW50IHw9
IHNjcm9sbGFibGVBcmVhLnNjcm9sbChmaWx0ZXJlZERlbHRhLndpZHRoKCkgPiAwID8gU2Nyb2xs
UmlnaHQgOiBTY3JvbGxMZWZ0LCBzY3JvbGxHcmFudWxhcml0eSwgYWJzb2x1dGVEZWx0YSk7CiAK
LSAgICBpZiAoZmxvYXQgYWJzb2x1dGVEZWx0YSA9IHN0ZDo6YWJzKHdoZWVsRXZlbnQuZGVsdGFZ
KCkpKQotICAgICAgICBkaWRIYW5kbGVXaGVlbEV2ZW50IHw9IHNjcm9sbGFibGVBcmVhLnNjcm9s
bCh3aGVlbEV2ZW50LmRlbHRhWSgpID4gMCA/IFNjcm9sbERvd24gOiBTY3JvbGxVcCwgc2Nyb2xs
R3JhbnVsYXJpdHksIGFic29sdXRlRGVsdGEpOworICAgIGlmIChmbG9hdCBhYnNvbHV0ZURlbHRh
ID0gc3RkOjphYnMoZmlsdGVyZWREZWx0YS5oZWlnaHQoKSkpCisgICAgICAgIGRpZEhhbmRsZVdo
ZWVsRXZlbnQgfD0gc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsKGZpbHRlcmVkRGVsdGEuaGVpZ2h0KCkg
PiAwID8gU2Nyb2xsRG93biA6IFNjcm9sbFVwLCBzY3JvbGxHcmFudWxhcml0eSwgYWJzb2x1dGVE
ZWx0YSk7CiAKICAgICByZXR1cm4gZGlkSGFuZGxlV2hlZWxFdmVudDsKIH0KIAotYm9vbCBFdmVu
dEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94KE5vZGUq
IHN0YXJ0Tm9kZSwgY29uc3QgV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgY29uc3QgRmxvYXRTaXpl
JiBmaWx0ZXJlZFBsYXRmb3JtRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyZWRWZWxvY2l0
eSwgT3B0aW9uU2V0PEV2ZW50SGFuZGxpbmc+IGV2ZW50SGFuZGxpbmcpCitib29sIEV2ZW50SGFu
ZGxlcjo6aGFuZGxlV2hlZWxFdmVudEluQXBwcm9wcmlhdGVFbmNsb3NpbmdCb3goTm9kZSogc3Rh
cnROb2RlLCBjb25zdCBXaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBGbG9hdFNpemUmIGZpbHRlcmVk
UGxhdGZvcm1EZWx0YSwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJlZFZlbG9jaXR5LCBPcHRpb25T
ZXQ8RXZlbnRIYW5kbGluZz4gZXZlbnRIYW5kbGluZykKIHsKICAgICBib29sIHNob3VsZEhhbmRs
ZUV2ZW50ID0gd2hlZWxFdmVudC5kZWx0YVgoKSB8fCB3aGVlbEV2ZW50LmRlbHRhWSgpOwogI2lm
IEVOQUJMRShXSEVFTF9FVkVOVF9MQVRDSElORykKQEAgLTMwODMsOCArMzExNiwxOCBAQCBib29s
IEV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudEluQXBwcm9wcmlhdGVFbmNsb3NpbmdCb3go
Tm9kZSogc3RhcnROb2RlLCBjbwogICAgICAgICByZXR1cm4gZGlkU2Nyb2xsSW5TY3JvbGxhYmxl
QXJlYShkb3duY2FzdDxSZW5kZXJMaXN0Qm94Pihpbml0aWFsRW5jbG9zaW5nQm94KSwgd2hlZWxF
dmVudCk7CiAKICAgICBSZW5kZXJCb3gqIGN1cnJlbnRFbmNsb3NpbmdCb3ggPSAmaW5pdGlhbEVu
Y2xvc2luZ0JveDsKKyNpZiBQTEFURk9STShNQUMpCisgICAgYXV0byBiaWFzZWREZWx0YSA9IFNj
cm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNh
bChGbG9hdFNpemUod2hlZWxFdmVudC5kZWx0YVgoKSwgd2hlZWxFdmVudC5kZWx0YVkoKSkpOwor
I2Vsc2UKKyAgICBGbG9hdFNpemUgYmlhc2VkRGVsdGEod2hlZWxFdmVudC5kZWx0YVgoKSwgd2hl
ZWxFdmVudC5kZWx0YVkoKSk7CisjZW5kaWYKICAgICB3aGlsZSAoY3VycmVudEVuY2xvc2luZ0Jv
eCkgewogICAgICAgICBpZiAoYXV0byogYm94U2Nyb2xsYWJsZUFyZWEgPSBjdXJyZW50RW5jbG9z
aW5nQm94LT5sYXllcigpID8gY3VycmVudEVuY2xvc2luZ0JveC0+bGF5ZXIoKS0+c2Nyb2xsYWJs
ZUFyZWEoKSA6IG51bGxwdHIpIHsKKyAgICAgICAgICAgIGlmIChib3hTY3JvbGxhYmxlQXJlYSAm
JiBzaG91bGRCbG9ja1Njcm9sbFByb3BvZ2F0aW9uV2l0aFNjcm9sbGFibGVBcmVhKGJveFNjcm9s
bGFibGVBcmVhLCBiaWFzZWREZWx0YSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoYm94U2Nyb2xs
YWJsZUFyZWEtPmhhc0hvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSAmJiAhZmlsdGVyZWRQ
bGF0Zm9ybURlbHRhLmhlaWdodCgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBhdXRvIHBsYXRmb3JtRXZlbnQgPSB3aGVlbEV2ZW50LnVuZGVybHlpbmdQbGF0Zm9ybUV2ZW50
KCk7CiAgICAgICAgICAgICBib29sIHNjcm9sbGluZ1dhc0hhbmRsZWQ7CiAgICAgICAgICAgICBp
ZiAocGxhdGZvcm1FdmVudCkgewpAQCAtMzEwNyw3ICszMTUwLDcgQEAgYm9vbCBFdmVudEhhbmRs
ZXI6OmhhbmRsZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94KE5vZGUqIHN0YXJ0
Tm9kZSwgY28KIGJvb2wgRXZlbnRIYW5kbGVyOjpzY3JvbGxhYmxlQXJlYUNhbkhhbmRsZUV2ZW50
KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgU2Nyb2xsYWJsZUFyZWEmIHNj
cm9sbGFibGVBcmVhKQogewogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBhdXRvIGJpYXNlZERlbHRh
ID0gU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OndoZWVsRGVsdGFCaWFzaW5nVG93YXJkc1Zl
cnRpY2FsKHdoZWVsRXZlbnQpOworICAgIGF1dG8gYmlhc2VkRGVsdGEgPSBTY3JvbGxpbmdFZmZl
Y3RzQ29udHJvbGxlcjo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwod2hlZWxFdmVu
dC5kZWx0YSgpKTsKICNlbHNlCiAgICAgYXV0byBiaWFzZWREZWx0YSA9IHdoZWVsRXZlbnQuZGVs
dGEoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRs
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKaW5kZXggZWFjMWQ1ZjM0
MDA4NmMzNjM2YmZmNjEwOTY1MWRlYzlmNGViMzBmZS4uNzg3ZDUzZDE5MzdjYzU3YTgxYzhlMWMx
OGVkM2FlYTk0MzBiMTE4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCkBAIC00NzYs
NyArNDc2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xs
U25hcChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBjb25zdCBXZWFrUHRyPFNjcm9sbGFibGVB
cmVhPiYpOwogICAgIGJvb2wgY29tcGxldGVXaWRnZXRXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3Jt
V2hlZWxFdmVudCYsIGNvbnN0IFdlYWtQdHI8V2lkZ2V0PiYsIGNvbnN0IFdlYWtQdHI8U2Nyb2xs
YWJsZUFyZWE+Jik7CiAKLSAgICBib29sIGhhbmRsZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5j
bG9zaW5nQm94KE5vZGUqIHN0YXJ0Tm9kZSwgY29uc3QgV2hlZWxFdmVudCYsIGNvbnN0IEZsb2F0
U2l6ZSYgZmlsdGVyZWRQbGF0Zm9ybURlbHRhLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlcmVkVmVs
b2NpdHksIE9wdGlvblNldDxFdmVudEhhbmRsaW5nPik7CisgICAgYm9vbCBoYW5kbGVXaGVlbEV2
ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2luZ0JveChOb2RlKiBzdGFydE5vZGUsIGNvbnN0IFdoZWVs
RXZlbnQmLCBGbG9hdFNpemUmIGZpbHRlcmVkUGxhdGZvcm1EZWx0YSwgY29uc3QgRmxvYXRTaXpl
JiBmaWx0ZXJlZFZlbG9jaXR5LCBPcHRpb25TZXQ8RXZlbnRIYW5kbGluZz4pOwogCiAgICAgYm9v
bCBoYW5kbGVXaGVlbEV2ZW50SW5TY3JvbGxhYmxlQXJlYShjb25zdCBQbGF0Zm9ybVdoZWVsRXZl
bnQmLCBTY3JvbGxhYmxlQXJlYSYsIE9wdGlvblNldDxFdmVudEhhbmRsaW5nPik7CiAgICAgc3Rk
OjpvcHRpb25hbDxXaGVlbFNjcm9sbEdlc3R1cmVTdGF0ZT4gdXBkYXRlV2hlZWxHZXN0dXJlU3Rh
dGUoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgT3B0aW9uU2V0PEV2ZW50SGFuZGxpbmc+KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlldy5oCmluZGV4IDg1YWNhNWQ3YmIzMmJkYWJkYzcwMWRkODJiMjZm
NjVlNDNmOTI4MmUuLjFlNjY0Y2U5Yzg5Yjk0MWNjNDkxYjQ5ZjMwZWM4YjViZmIzYmNkMWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuaApAQCAtNzAyLDYgKzcwMiw4IEBAIHB1YmxpYzoKICAgICAK
ICAgICBPdmVyc2Nyb2xsQmVoYXZpb3IgaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpIGNv
bnN0IGZpbmFsOwogICAgIE92ZXJzY3JvbGxCZWhhdmlvciB2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhh
dmlvcigpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgaGFzSG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhh
dmlvcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3Io
KSAhPSBPdmVyc2Nyb2xsQmVoYXZpb3I6OkF1dG87IH0KKyAgICBib29sIGhhc1ZlcnRpY2FsT3Zl
cnNjcm9sbEJlaGF2aW9yKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdmVydGljYWxPdmVyc2Nyb2xs
QmVoYXZpb3IoKSAhPSBPdmVyc2Nyb2xsQmVoYXZpb3I6OkF1dG87IH0KIAogcHJpdmF0ZToKICAg
ICBleHBsaWNpdCBGcmFtZVZpZXcoRnJhbWUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2
ZW50SGFuZGxlck1hYy5tbQppbmRleCAxZWNkMGNjNzhlZDU1NTY0ZjAzMmIzMGM5YzgzZWJmNTc0
YWRlODAwLi5iNWM4ZjUyNWNmM2JjMmU3M2FiNjY2YTQwYjFhNGVhNTQ2NzUxZTcxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tCkBAIC04MTUsNiArODE1LDgg
QEAgc3RhdGljIENvbnRhaW5lck5vZGUqIGZpbmRFbmNsb3NpbmdTY3JvbGxhYmxlQ29udGFpbmVy
KENvbnRhaW5lck5vZGUqIG5vZGUsIGNvbnMKICAgICAgICAgYXV0byogc2Nyb2xsYWJsZUFyZWEg
PSBzY3JvbGxhYmxlQXJlYUZvckJveCgqYm94KTsKICAgICAgICAgaWYgKCFzY3JvbGxhYmxlQXJl
YSkKICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoKHNjcm9sbGFibGVBcmVhLT5o
YXNIb3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgJiYgc2Nyb2xsYWJsZUFyZWEtPmhhc1Zl
cnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkpIHx8IChzY3JvbGxhYmxlQXJlYS0+aGFzSG9yaXpv
bnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpICYmICF3aGVlbEV2ZW50LmRlbHRhKCkuaGVpZ2h0KCkp
IHx8IChzY3JvbGxhYmxlQXJlYS0+aGFzVmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSAmJiAh
d2hlZWxFdmVudC5kZWx0YSgpLndpZHRoKCkpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKICAgICAgICAgaWYgKHdoZWVsRXZlbnQucGhhc2UoKSA9PSBQbGF0Zm9ybVdoZWVsRXZlbnRQ
aGFzZTo6TWF5QmVnaW4gfHwgd2hlZWxFdmVudC5waGFzZSgpID09IFBsYXRmb3JtV2hlZWxFdmVu
dFBoYXNlOjpDYW5jZWxsZWQpCiAgICAgICAgICAgICByZXR1cm4gY2FuZGlkYXRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgKaW5kZXggYWI3NDVjNGJiYTlmMjNlMThh
YmEzY2YxMzZlM2U5MTUzMTBiOTA1MS4uNDk5NGI4MGRiMGViMTMzZGFhODk3NjZjOGZlMTY3OTg2
MTEwNDA2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFy
ZWEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCkBAIC0z
NzAsNiArMzcwLDkgQEAgcHVibGljOgogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFy
dFNjcm9sbEFuaW1hdGlvbigpIHsgfQorICAgIAorICAgIHZpcnR1YWwgYm9vbCBoYXNIb3Jpem9u
dGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0
dWFsIGJvb2wgaGFzVmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgV0VCQ09SRV9FWFBPUlQgU2Nyb2xsYWJsZUFyZWEo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHND
b250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29u
dHJvbGxlci5oCmluZGV4IGM3YTNhMmY4NWVhMGVkNWE3YzZhOTRiZTFiZjM1NzI4YjE4Yzg4ZjMu
LjA2Njc5MWQwY2U0M2I2ZGZjOTM5Njk2NTA4MTQyNDIyODJiZmU3ZmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuaApAQCAt
MTc0LDcgKzE3NCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzVXNlclNjcm9sbEluUHJvZ3Jlc3Mo
KSBjb25zdDsKIAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBzdGF0aWMgRmxvYXRTaXplIHdoZWVs
RGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRpY2FsKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpOwor
ICAgIHN0YXRpYyBGbG9hdFNpemUgd2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoY29u
c3QgRmxvYXRTaXplJik7CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgaGFuZGxlZC4KICAgICBi
b29sIHByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsU25hcChjb25zdCBQbGF0Zm9ybVdoZWVsRXZl
bnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmlt
YXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1h
Yy5tbQppbmRleCA1M2E0MDc1M2RiNzQ3YzVhYzRiMWY3YjIxYTlhZDVjMWZmNDVhODM2Li5mY2Fh
OWY0MTJiMTRmNjhlYzY2YzQxMGQ1ZGU1YWE4NTBhNGJkZWU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tCkBAIC05NCw5ICs5NCw5IEBA
IHZvaWQgU2Nyb2xsQW5pbWF0b3JNYWM6OmhhbmRsZVdoZWVsRXZlbnRQaGFzZShQbGF0Zm9ybVdo
ZWVsRXZlbnRQaGFzZSBwaGFzZSkKIGJvb2wgU2Nyb2xsQW5pbWF0b3JNYWM6OnNob3VsZEZvcndh
cmRXaGVlbEV2ZW50c1RvUGFyZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVu
dCkgY29uc3QKIHsKICAgICBpZiAoc3RkOjphYnMod2hlZWxFdmVudC5kZWx0YVkoKSkgPj0gc3Rk
OjphYnMod2hlZWxFdmVudC5kZWx0YVgoKSkpCi0gICAgICAgIHJldHVybiAhYWxsb3dzVmVydGlj
YWxTdHJldGNoaW5nKHdoZWVsRXZlbnQpOworICAgICAgICByZXR1cm4gbV9zY3JvbGxhYmxlQXJl
YS52ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpID09IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0
byAmJiAhYWxsb3dzVmVydGljYWxTdHJldGNoaW5nKHdoZWVsRXZlbnQpOwogCi0gICAgcmV0dXJu
ICFhbGxvd3NIb3Jpem9udGFsU3RyZXRjaGluZyh3aGVlbEV2ZW50KTsKKyAgICByZXR1cm4gbV9z
Y3JvbGxhYmxlQXJlYS5ob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgPT0gT3ZlcnNjcm9s
bEJlaGF2aW9yOjpBdXRvICYmICFhbGxvd3NIb3Jpem9udGFsU3RyZXRjaGluZyh3aGVlbEV2ZW50
KTsKIH0KICAgICAKIGJvb2wgU2Nyb2xsQW5pbWF0b3JNYWM6OmhhbmRsZVdoZWVsRXZlbnQoY29u
c3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50KQpAQCAtMTQzLDYgKzE0Myw5IEBAIHN0
YXRpYyBib29sIGdlc3R1cmVTaG91bGRCZWdpblNuYXAoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50
JiB3aGVlbEV2ZW50LCBTY3JvbGxFCiAKIGJvb2wgU2Nyb2xsQW5pbWF0b3JNYWM6OmFsbG93c1Zl
cnRpY2FsU3RyZXRjaGluZyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpIGNv
bnN0CiB7CisgICAgaWYgKG1fc2Nyb2xsYWJsZUFyZWEudmVydGljYWxPdmVyc2Nyb2xsQmVoYXZp
b3IoKSA9PSBPdmVyc2Nyb2xsQmVoYXZpb3I6Ok5vbmUpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAKICAgICBzd2l0Y2ggKG1fc2Nyb2xsYWJsZUFyZWEudmVydGljYWxTY3JvbGxFbGFzdGlj
aXR5KCkpIHsKICAgICBjYXNlIFNjcm9sbEVsYXN0aWNpdHk6OkF1dG9tYXRpYzogewogICAgICAg
ICBTY3JvbGxiYXIqIGhTY3JvbGxlciA9IG1fc2Nyb2xsYWJsZUFyZWEuaG9yaXpvbnRhbFNjcm9s
bGJhcigpOwpAQCAtMTY2LDYgKzE2OSw5IEBAIGJvb2wgU2Nyb2xsQW5pbWF0b3JNYWM6OmFsbG93
c1ZlcnRpY2FsU3RyZXRjaGluZyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsCiAKIGJv
b2wgU2Nyb2xsQW5pbWF0b3JNYWM6OmFsbG93c0hvcml6b250YWxTdHJldGNoaW5nKGNvbnN0IFBs
YXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCkgY29uc3QKIHsKKyAgICBpZiAobV9zY3JvbGxh
YmxlQXJlYS5ob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgPT0gT3ZlcnNjcm9sbEJlaGF2
aW9yOjpOb25lKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCiAgICAgc3dpdGNoIChtX3Nj
cm9sbGFibGVBcmVhLmhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5KCkpIHsKICAgICBjYXNlIFNj
cm9sbEVsYXN0aWNpdHk6OkF1dG9tYXRpYzogewogICAgICAgICBTY3JvbGxiYXIqIGhTY3JvbGxl
ciA9IG1fc2Nyb2xsYWJsZUFyZWEuaG9yaXpvbnRhbFNjcm9sbGJhcigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVy
Lm1tCmluZGV4IDgwMGNjNTExMDc1YWFiMDIwOGU4OTY3MzVhM2U5YmQxZTMwMjI4MTEuLjBkMTI1
NjBjNDdiNjM0OGU3N2Y2MzZhZWI0NDYyNWI3MTc1NTQyN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIubW0K
QEAgLTMzNyw5ICszMzcsOSBAQCBib29sIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjphcHBs
eVNjcm9sbERlbHRhV2l0aFN0cmV0Y2hpbmcoY29uc3QgUGxhdGZvcm1XaAogICAgIHJldHVybiBj
YW5TdGFydEFuaW1hdGlvbjsKIH0KIAotRmxvYXRTaXplIFNjcm9sbGluZ0VmZmVjdHNDb250cm9s
bGVyOjp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbChjb25zdCBQbGF0Zm9ybVdoZWVs
RXZlbnQmIHdoZWVsRXZlbnQpCitGbG9hdFNpemUgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6
OndoZWVsRGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRpY2FsKGNvbnN0IEZsb2F0U2l6ZSYgd2hlZWxE
ZWx0YSkKIHsKLSAgICByZXR1cm4gZGVsdGFBbGlnbmVkVG9Eb21pbmFudEF4aXMod2hlZWxFdmVu
dC5kZWx0YSgpKTsKKyAgICByZXR1cm4gZGVsdGFBbGlnbmVkVG9Eb21pbmFudEF4aXMod2hlZWxE
ZWx0YSk7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnVwZGF0ZVJ1YmJl
ckJhbmRBbmltYXRpbmdTdGF0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuaAppbmRleCA3YWM4Y2RkYmIwOTQzMjM3YzEyN2Fm
OGY2N2U0ZWZhZWFmYmY1ZDU5Li4yYjM5YzBjYjdjNTMyM2Q5ZjE5NzYyYjZmOTEzZDQ1ZWI5OTEz
MGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3Jv
bGxhYmxlQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllclNj
cm9sbGFibGVBcmVhLmgKQEAgLTI0MCw2ICsyNDAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRh
dGVMYXllclBvc2l0aW9uc0FmdGVyRG9jdW1lbnRTY3JvbGwoKTsKIAogICAgIHN0ZDo6b3B0aW9u
YWw8TGF5b3V0UmVjdD4gdXBkYXRlU2Nyb2xsUG9zaXRpb24oY29uc3QgU2Nyb2xsUG9zaXRpb25D
aGFuZ2VPcHRpb25zJiwgY29uc3QgTGF5b3V0UmVjdCYgcmV2ZWFsUmVjdCwgY29uc3QgTGF5b3V0
UmVjdCYgbG9jYWxFeHBvc2VSZWN0KTsKKyAgICBib29sIGhhc0hvcml6b250YWxPdmVyc2Nyb2xs
QmVoYXZpb3IoKSBjb25zdCBmaW5hbCB7IHJldHVybiBob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2
aW9yKCkgIT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpBdXRvOyB9CisgICAgYm9vbCBoYXNWZXJ0aWNh
bE92ZXJzY3JvbGxCZWhhdmlvcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHZlcnRpY2FsT3ZlcnNj
cm9sbEJlaGF2aW9yKCkgIT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpBdXRvOyB9CiAKIHByaXZhdGU6
CiAgICAgYm9vbCBoYXNIb3Jpem9udGFsT3ZlcmZsb3coKSBjb25zdDsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5YjA2M2Q0
NjEwOGJlZWNiNzlhMjJkYzhlMWE4M2QzOWFjNzNlMjJiLi5iNjg4ZTQ2NzJjYTRkNmEzZGY2ZmMz
NDFkOWY2NWVmNGZmNmRjODE0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMTItMDIgIE5p
a29sYW9zIE1vdWNodGFyaXMgIDxubW91Y2h0YXJpc0BhcHBsZS5jb20+CisKKyAgICAgICAgSW1w
bGVtZW50IENTUyBvdmVyc2Nyb2xsLWJlaGF2aW9yIGZvciBzeW5jaHJvbm91cyBzY3JvbGwKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjk2OAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9zY3Jv
bGxpbmcvcmVzb3VyY2VzL292ZXJzY3JvbGwtYmVoYXZpb3Itc3VwcG9ydC5qczogQWRkZWQuCisg
ICAgICAgIChnZXREZWx0YXMpOgorICAgICAgICAoYXN5bmMgbW91c2VXaGVlbFNjcm9sbEFuZFdh
aXQpOgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVo
YXZpb3ItZWxlbWVudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9zeW5j
LXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xs
YWJsZS1lbGVtZW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL3N5bmMt
c2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sOiBBZGRl
ZC4KKwogMjAyMS0xMS0zMCAgUm9iZXJ0IEplbm5lciAgPEplbm5lckBhcHBsZS5jb20+CiAKICAg
ICAgICAgUkVCQVNFTElORSBbIE1vbnRlcmV5IF1mYXN0L2Nzcy9jb250aW51YXRpb25DcmFzaC5o
dG1sIChsYXlvdXQtdGVzdCkgaXMgYSBjb25zdGFudCB0ZXh0IGZhaWx1cmUKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3Jlc291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2aW9y
LXN1cHBvcnQuanMgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9yZXNvdXJjZXMvb3ZlcnNj
cm9sbC1iZWhhdmlvci1zdXBwb3J0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNiZDIyMmU5MGI1MmExOTMwYjdm
Y2ZlNDQyM2U5NDU4M2MwNDYwMGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L3Njcm9sbGluZy9yZXNvdXJjZXMvb3ZlcnNjcm9sbC1iZWhhdmlvci1zdXBwb3J0LmpzCkBAIC0w
LDAgKzEsMzkgQEAKK2Z1bmN0aW9uIGdldERlbHRhcyhkaXJlY3Rpb24pIHsKKyAgICB2YXIgZGVs
dGFYID0gMDsKKyAgICB2YXIgZGVsdGFZID0gMDsKKyAgICBpZiAoZGlyZWN0aW9uID09ICJkb3du
IikKKyAgICAgICAgZGVsdGFZID0gLTUKKyAgICBlbHNlIGlmIChkaXJlY3Rpb24gPT0gInVwIikK
KyAgICAgICAgZGVsdGFZID0gNTsKKyAgICBlbHNlIGlmIChkaXJlY3Rpb24gPT0gInJpZ2h0IikK
KyAgICAgICAgZGVsdGFYID0gLTU7CisgICAgZWxzZSBpZiAoZGlyZWN0aW9uID09ICJsZWZ0IikK
KyAgICAgICAgZGVsdGFYID0gNTsKKyAgICByZXR1cm4geworICAgICAgICBYOiBkZWx0YVgsCisg
ICAgICAgIFk6IGRlbHRhWQorICAgIH07Cit9CisKK2FzeW5jIGZ1bmN0aW9uIG1vdXNlV2hlZWxT
Y3JvbGxBbmRXYWl0KHgsIHksIGJlZ2luWCwgYmVnaW5ZLCBkZWx0YVgsIGRlbHRhWSkKK3sKKyAg
ICBpZiAoYmVnaW5YID09PSB1bmRlZmluZWQpCisgICAgICAgIGJlZ2luWCA9IDA7CisgICAgaWYg
KGJlZ2luWSA9PT0gdW5kZWZpbmVkKQorICAgICAgICBiZWdpblkgPSAtMTsKKyAgICBpZiAoZGVs
dGFYID09PSB1bmRlZmluZWQpCisgICAgICAgIGRlbHRhWCA9IDA7CisgICAgaWYgKGRlbHRhWSA9
PT0gdW5kZWZpbmVkKQorICAgICAgICBkZWx0YVkgPSAtMTA7CisKKyAgICBldmVudFNlbmRlci5t
b25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsK
KyAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
YmVnaW5YLCBiZWdpblksICJiZWdhbiIsICJub25lIik7CisgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGRlbHRhWCwgZGVsdGFZLCAiY2hhbmdl
ZCIsICJub25lIik7CisgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKDAsIDAsICJlbmRlZCIsICJub25lIik7CisgICAgcmV0dXJuIG5ldyBQcm9t
aXNlKHJlc29sdmUgPT4geworICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgICAgICAg
IHJlcXVlc3RBbmltYXRpb25GcmFtZShyZXNvbHZlKTsKKyAgICAgICAgfSwgNTAwKTsKKyAgICB9
KTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3Zl
cnNjcm9sbC1iZWhhdmlvci1lbGVtZW50LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNzE1MGZm
NjBiNWRiZGQwYjRhN2FjNmY4M2ZiNTZmNTdjZDJjZDgyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1l
bGVtZW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIwIEBACisKK1BBU1MgRWxlbWVudCBob3Jp
em9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBhdXRvLgor
UEFTUyBFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlv
cjogYXV0byBhdXRvLgorUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBv
dmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGF1dG8uCitQQVNTIEVsZW1lbnQgdmVydGljYWwg
c2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGF1dG8uCitQQVNT
IEVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6
IG5vbmUgYXV0by4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJz
Y3JvbGwtYmVoYXZpb3I6IG5vbmUgYXV0by4KK1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9s
bCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBjb250YWluLgorUEFTUyBFbGVt
ZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBj
b250YWluLgorUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Ny
b2xsLWJlaGF2aW9yOiBjb250YWluIGNvbnRhaW4uCitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Ny
b2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGNvbnRhaW4uCitQQVNT
IEVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6
IG5vbmUgY29udGFpbi4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92
ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgY29udGFpbi4KK1BBU1MgRWxlbWVudCBob3Jpem9udGFs
IHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBub25lLgorUEFTUyBF
bGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0
byBub25lLgorUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Ny
b2xsLWJlaGF2aW9yOiBjb250YWluIG5vbmUuCitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xs
IHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIG5vbmUuCitQQVNTIEVsZW1l
bnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUg
bm9uZS4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwt
YmVoYXZpb3I6IG5vbmUgbm9uZS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3Jv
bGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50Lmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWVs
ZW1lbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNjY0NzZmMDVmZDJmNDAzYWE0ZTZlZGJmOGRiZmZlNGI3
MzI5YzIwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3lu
Yy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50Lmh0bWwKQEAgLTAsMCArMSw4NiBA
QAorPCFkb2N0eXBlIGh0bWw+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5l
c3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9vdmVyc2Nyb2xs
LWJlaGF2aW9yLXN1cHBvcnQuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJo
dHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLW92ZXJzY3JvbGwtYmVoYXZpb3IiPgorPHN0eWxl
PgorICAgIC5zY3JvbGxpbmcgeworICAgICAgICBvdmVyZmxvdzogc2Nyb2xsOworICAgIH0KKyAg
ICAuc2Nyb2xsQ29udGVudCB7CisgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgaGVpZ2h0
OiAzMDBweDsKKyAgICB9CisgICAgI3Jvb3QgeworICAgICAgICB3aWR0aDogMjAwcHg7CisgICAg
ICAgIGhlaWdodDogMjAwcHg7CisgICAgfQorICAgICNzY3JvbGxlciB7CisgICAgICAgIHdpZHRo
OiAxMDBweDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICB9Cis8L3N0eWxlPgorPGRpdiBp
ZD0ncm9vdCcgY2xhc3M9InNjcm9sbGluZyI+CisgICAgPGRpdiBpZD0nc2Nyb2xsZXInIGNsYXNz
PSJzY3JvbGxpbmciPgorICAgICAgICA8ZGl2IGNsYXNzPSJzY3JvbGxDb250ZW50Ij48L2Rpdj4K
KyAgICA8L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJzY3JvbGxDb250ZW50Ij48L2Rpdj4KKzwvZGl2
PgorCis8c2NyaXB0PgorY29uc3Qgcm9vdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyb290
Jyk7Citjb25zdCBzY3JvbGxlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY3JvbGxlcicp
OwordmFyIG92ZXJzY3JvbGxEYXRhcyA9IFtbImF1dG8iLCAiYXV0byIsIHRydWUsIHRydWVdLAor
ICAgICAgICAgICAgICAgICAgICAgICAgWyJjb250YWluIiwgImF1dG8iLCBmYWxzZSwgdHJ1ZV0s
CisgICAgICAgICAgICAgICAgICAgICAgICBbIm5vbmUiLCAiYXV0byIsIGZhbHNlLCB0cnVlXSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIFsiYXV0byIsICJjb250YWluIiwgdHJ1ZSwgZmFsc2Vd
LAorICAgICAgICAgICAgICAgICAgICAgICAgWyJjb250YWluIiwgImNvbnRhaW4iLCBmYWxzZSwg
ZmFsc2VdLAorICAgICAgICAgICAgICAgICAgICAgICAgWyJub25lIiwgImNvbnRhaW4iLCBmYWxz
ZSwgZmFsc2VdLAorICAgICAgICAgICAgICAgICAgICAgICAgWyJhdXRvIiwgIm5vbmUiLCB0cnVl
LCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAgICBbImNvbnRhaW4iLCAibm9uZSIsIGZh
bHNlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAgICBbIm5vbmUiLCAibm9uZSIsIGZh
bHNlLCBmYWxzZV1dOworCitmdW5jdGlvbiByZXNldFRlc3QoKSB7CisgICAgLy8gVHJ5IHZhcmlv
dXMgbWV0aG9kcyB0byBlbnN1cmUgdGhlIGVsZW1lbnQgcG9zaXRpb24gaXMgcmVzZXQgaW1tZWRp
YXRlbHkuCisgICAgc2Nyb2xsZXIuc2Nyb2xsTGVmdCA9IDMwMDsKKyAgICBzY3JvbGxlci5zY3Jv
bGxUb3AgPSAzMDA7CisgICAgc2Nyb2xsZXIuc2Nyb2xsVG8oMzAwLCAzMDApOworCisgICAgcm9v
dC5zY3JvbGxMZWZ0ID0gMDsKKyAgICByb290LnNjcm9sbFRvcCA9IDA7CisgICAgcm9vdC5zY3Jv
bGxUbygwLCAwKTsKK30KKworZnVuY3Rpb24gc3RhcnRUZXN0KCkgeworICAgIG92ZXJzY3JvbGxE
YXRhcy5mb3JFYWNoKChbb3ZlcnNjcm9sbFgsIG92ZXJzY3JvbGxZLCBwcm9wYWdhdGVYLCBwcm9w
YWdhdGVZXSkgPT4geworICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgICAgICAgICAg
cmVzZXRUZXN0KCk7CisgICAgICAgICAgICBzY3JvbGxlci5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZp
b3JYID0gb3ZlcnNjcm9sbFg7CisgICAgICAgICAgICBzY3JvbGxlci5zdHlsZS5vdmVyc2Nyb2xs
QmVoYXZpb3JZID0gb3ZlcnNjcm9sbFk7CisgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmNsaWVu
dFdpZHRoOworCisgICAgICAgICAgICB2YXIgeCA9IHNjcm9sbGVyLmNsaWVudFdpZHRoIC8gMjsK
KyAgICAgICAgICAgIHZhciB5ID0gc2Nyb2xsZXIuY2xpZW50SGVpZ2h0IC8gMjsKKyAgICAgICAg
ICAgIHZhciBkZWx0YSA9IGdldERlbHRhcygicmlnaHQiKTsKKyAgICAgICAgICAgIHJldHVybiBt
b3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCh4LCB5LCBkZWx0YS5YLCBkZWx0YS5ZLCBkZWx0YS5YLCBk
ZWx0YS5ZKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJvb3Qu
c2Nyb2xsTGVmdCA+IDAsIHByb3BhZ2F0ZVgsICdDb250aW51ZSB1cCB0aGUgaG9yaXpvbnRhbCBz
Y3JvbGwgY2hhaW5pbmcnKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9LCAnRWxlbWVudCBo
b3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogJyArIG92ZXJz
Y3JvbGxYICsgJyAnICsgb3ZlcnNjcm9sbFkgKyAnLicpOworCisgICAgICAgIHByb21pc2VfdGVz
dCgoKSA9PiB7CisgICAgICAgICAgICByZXNldFRlc3QoKTsKKyAgICAgICAgICAgIHNjcm9sbGVy
LnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclggPSBvdmVyc2Nyb2xsWDsKKyAgICAgICAgICAgIHNj
cm9sbGVyLnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclkgPSBvdmVyc2Nyb2xsWTsKKworICAgICAg
ICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAgICAgICAgICB2YXIg
eSA9IHNjcm9sbGVyLmNsaWVudEhlaWdodCAvIDI7CisgICAgICAgICAgICB2YXIgZGVsdGEgPSBn
ZXREZWx0YXMoImRvd24iKTsKKyAgICAgICAgICAgIHJldHVybiBtb3VzZVdoZWVsU2Nyb2xsQW5k
V2FpdCh4LCB5LCBkZWx0YS5YLCBkZWx0YS5ZLCBkZWx0YS5YLCBkZWx0YS5ZKS50aGVuKCgpID0+
IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsVG9wID4gMCwgcHJv
cGFnYXRlWSwgJ0NvbnRpbnVlIHVwIHRoZSB2ZXJ0aWNhbCBzY3JvbGwgY2hhaW5pbmcnKTsKKyAg
ICAgICAgICAgIH0pOworICAgICAgICB9LCAnRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3
aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6ICcgKyBvdmVyc2Nyb2xsWCArICcgJyArIG92ZXJzY3Jv
bGxZICsgJy4nKTsKKyAgICB9KTsKK30KKworYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIHN0YXJ0
VGVzdCk7Cis8L3NjcmlwdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2
aW9yLWlmcmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5j
LXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOTAwYTBiN2Q5MDViODdjMWRiNzYyNjk0ZmQwMDYzOGYxOTc2OTUzNwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwt
YmVoYXZpb3ItaWZyYW1lLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIxIEBACisKKworUEFTUyBJ
ZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1
dG8gYXV0by4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9s
bC1iZWhhdmlvcjogYXV0byBhdXRvLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVz
dCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gYXV0by4KK1BBU1MgSWZyYW1lIHZl
cnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBhdXRv
LgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVo
YXZpb3I6IG5vbmUgYXV0by4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGgg
b3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBhdXRvLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBz
Y3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gY29udGFpbi4KK1BBU1Mg
SWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0
byBjb250YWluLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJz
Y3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gY29udGFpbi4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNj
cm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBjb250YWluLgorUEFT
UyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6
IG5vbmUgY29udGFpbi4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3Zl
cnNjcm9sbC1iZWhhdmlvcjogbm9uZSBjb250YWluLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBz
Y3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gbm9uZS4KK1BBU1MgSWZy
YW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBu
b25lLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwt
YmVoYXZpb3I6IGNvbnRhaW4gbm9uZS4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0
IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBub25lLgorUEFTUyBJZnJhbWUgaG9y
aXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgbm9uZS4K
K1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlv
cjogbm9uZSBub25lLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9z
eW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5hNjhlNWRhZWY5YTNiMWQwODU2YWI3M2FmZjE2ZTJjYWM1MmI4Yzk1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwt
b3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUuaHRtbApAQCAtMCwwICsxLDg2IEBACis8IWRvY3R5
cGUgaHRtbD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb3ZlcnNjcm9sbC1iZWhhdmlv
ci1zdXBwb3J0LmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9k
cmFmdHMuY3Nzd2cub3JnL2Nzcy1vdmVyc2Nyb2xsLWJlaGF2aW9yIj4KKzxzdHlsZT4KKyAgICAu
c2Nyb2xsaW5nIHsKKyAgICAgICAgb3ZlcmZsb3c6IHNjcm9sbDsKKyAgICB9CisgICAgLnNjcm9s
bENvbnRlbnQgeworICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgIGhlaWdodDogMzAwcHg7
CisgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJlZCwgYmx1ZSk7
CisgICAgfQorICAgICNyb290IHsKKyAgICAgICAgd2lkdGg6IDIwMHB4OworICAgICAgICBoZWln
aHQ6IDIwMHB4OworICAgIH0KKyAgICAjc2Nyb2xsZXIgeworICAgICAgICB3aWR0aDogMTAwcHg7
CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICAgIG92ZXJzY3JvbGwtYmVoYXZpb3IteTog
YXV0bzsKKyAgICB9Cis8L3N0eWxlPgorPGRpdiBpZD0ncm9vdCcgY2xhc3M9InNjcm9sbGluZyI+
CisgICAgPGlmcmFtZSBpZD0nc2Nyb2xsZXInIHNyY2RvYz0iPGh0bWw+PGRpdiBzdHlsZT0nd2lk
dGg6IDMwMHB4OyBoZWlnaHQ6IDMwMHB4Oyc+PC9kaXY+PC9odG1sPgorICAgICAgICAiPjwvaWZy
YW1lPgorICAgIDxkaXYgY2xhc3M9InNjcm9sbENvbnRlbnQiPjwvZGl2PgorPC9kaXY+CisKKzxz
Y3JpcHQ+CisgICAgY29uc3Qgcm9vdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyb290Jyk7
CisgICAgY29uc3Qgc2Nyb2xsZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2Nyb2xsZXIn
KTsKKyAgICB2YXIgb3ZlcnNjcm9sbERhdGFzID0gW1siYXV0byIsICJhdXRvIiwgdHJ1ZSwgdHJ1
ZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJjb250YWluIiwgImF1dG8iLCBmYWxz
ZSwgdHJ1ZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJub25lIiwgImF1dG8iLCBm
YWxzZSwgdHJ1ZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJhdXRvIiwgImNvbnRh
aW4iLCB0cnVlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJjb250YWlu
IiwgImNvbnRhaW4iLCBmYWxzZSwgZmFsc2VdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFsibm9uZSIsICJjb250YWluIiwgZmFsc2UsIGZhbHNlXSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBbImF1dG8iLCAibm9uZSIsIHRydWUsIGZhbHNlXSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBbImNvbnRhaW4iLCAibm9uZSIsIGZhbHNlLCBmYWxzZV0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgWyJub25lIiwgIm5vbmUiLCBmYWxzZSwgZmFsc2VdXTsKKyAgICBm
dW5jdGlvbiByZXNldFRlc3QoKSB7CisgICAgICAgIC8vIFRyeSB2YXJpb3VzIG1ldGhvZHMgdG8g
ZW5zdXJlIHRoZSBlbGVtZW50IHBvc2l0aW9uIGlzIHJlc2V0IGltbWVkaWF0ZWx5LgorICAgICAg
ICBzY3JvbGxlci5jb250ZW50V2luZG93LnNjcm9sbFggPSAzMDA7CisgICAgICAgIHNjcm9sbGVy
LmNvbnRlbnRXaW5kb3cuc2Nyb2xsWSA9IDMwMDsKKyAgICAgICAgc2Nyb2xsZXIuY29udGVudFdp
bmRvdy5zY3JvbGxUbygzMDAsIDMwMCk7CisgICAgICAgIHJvb3Quc2Nyb2xsTGVmdCA9IDA7Cisg
ICAgICAgIHJvb3Quc2Nyb2xsVG9wID0gMDsKKyAgICAgICAgcm9vdC5zY3JvbGxUbygwLCAwKTsK
KyAgICB9CisKKyAgICBmdW5jdGlvbiBvdmVyc2Nyb2xsQmVoYXZpb3JUZXN0KCkgeworICAgICAg
ICBvdmVyc2Nyb2xsRGF0YXMuZm9yRWFjaCgoW292ZXJzY3JvbGxYLCBvdmVyc2Nyb2xsWSwgcHJv
cGFnYXRlWCwgcHJvcGFnYXRlWV0pID0+IHsKKyAgICAgICAgICAgIHByb21pc2VfdGVzdCgoKSA9
PiB7CisgICAgICAgICAgICAgICAgcmVzZXRUZXN0KCk7CisgICAgICAgICAgICAgICAgdmFyIHRh
cmdldCA9IHNjcm9sbGVyLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoImh0bWwiKVswXTsKKyAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUub3ZlcnNjcm9sbEJl
aGF2aW9yWCA9IG92ZXJzY3JvbGxYOworICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5vdmVy
c2Nyb2xsQmVoYXZpb3JZID0gb3ZlcnNjcm9sbFk7CisgICAgICAgICAgICAgICAgdmFyIHggPSBz
Y3JvbGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAgICAgICAgICAgICAgdmFyIHkgPSBzY3JvbGxl
ci5jbGllbnRIZWlnaHQgLyAyOworICAgICAgICAgICAgICAgIHZhciBkZWx0YSA9IGdldERlbHRh
cygicmlnaHQiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbW91c2VXaGVlbFNjcm9sbEFuZFdh
aXQoeCwgeSwgZGVsdGEuWCwgZGVsdGEuWSwgZGVsdGEuWCwgZGVsdGEuWSkudGhlbigoKSA9PiB7
CisgICAgICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxMZWZ0ID4gMCwg
cHJvcGFnYXRlWCwgJ0NvbnRpbnVlIHVwIHRoZSBob3Jpem9udGFsIHNjcm9sbCBjaGFpbmluZycp
OworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSwgJ0lmcmFtZSBob3Jpem9udGFs
IHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogJyArIG92ZXJzY3JvbGxYICsg
JyAnICsgb3ZlcnNjcm9sbFkgKyAnLicpOworCisgICAgICAgICAgICBwcm9taXNlX3Rlc3QoKCkg
PT4geworICAgICAgICAgICAgICAgIHJlc2V0VGVzdCgpOworICAgICAgICAgICAgICAgIHZhciB0
YXJnZXQgPSBzY3JvbGxlci5jb250ZW50V2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJodG1sIilbMF07CisgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLm92ZXJzY3JvbGxC
ZWhhdmlvclggPSBvdmVyc2Nyb2xsWDsKKyAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUub3Zl
cnNjcm9sbEJlaGF2aW9yWSA9IG92ZXJzY3JvbGxZOworCisgICAgICAgICAgICAgICAgdmFyIHgg
PSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAgICAgICAgICAgICAgdmFyIHkgPSBzY3Jv
bGxlci5jbGllbnRIZWlnaHQgLyAyOworICAgICAgICAgICAgICAgIHZhciBkZWx0YSA9IGdldERl
bHRhcygiZG93biIpOworICAgICAgICAgICAgICAgIHJldHVybiBtb3VzZVdoZWVsU2Nyb2xsQW5k
V2FpdCh4LCB5LCBkZWx0YS5YLCBkZWx0YS5ZLCBkZWx0YS5YLCBkZWx0YS5ZKS50aGVuKCgpID0+
IHsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbFRvcCA+IDAs
IHByb3BhZ2F0ZVksICdDb250aW51ZSB1cCB0aGUgdmVydGljYWwgc2Nyb2xsIGNoYWluaW5nJyk7
CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9LCAnSWZyYW1lIHZlcnRpY2FsIHNj
cm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogJyArIG92ZXJzY3JvbGxYICsgJyAn
ICsgb3ZlcnNjcm9sbFkgKyAnLicpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBzY3JvbGxl
ci5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgb3ZlcnNjcm9sbEJlaGF2aW9yVGVzdCk7Cis8L3Nj
cmlwdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xs
YWJsZS1lbGVtZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5
bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmYzOTViNjQ4OGQwODcwYjk1NjFjMDI4Njc5ZDdlMTVhNDdmY2U2
ZTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNj
cm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50LWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDQgQEAKKworUEFTUyBVbnNjcm9sbGFibGUgZWxlbWVudCBob3Jpem9udGFs
IHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4KK1BBU1MgVW5zY3Jv
bGxhYmxlIGVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2
aW9yOiBub25lLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5j
LXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9y
LXVuc2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzFlNTczOGE1ZDdhNzk2OWNh
ZTZlY2FjYmIzZjhlOWMyYjIwNzNlYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxl
LWVsZW1lbnQuaHRtbApAQCAtMCwwICsxLDY3IEBACis8IWRvY3R5cGUgaHRtbD4KKworPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvb3ZlcnNjcm9sbC1iZWhhdmlvci1zdXBwb3J0LmpzIj48L3Nj
cmlwdD4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nz
cy1vdmVyc2Nyb2xsLWJlaGF2aW9yIj4KKzxzdHlsZT4KKyAgICAuc2Nyb2xsaW5nIHsKKyAgICAg
ICAgb3ZlcmZsb3c6IHNjcm9sbDsKKyAgICB9CisgICAgLnNjcm9sbENvbnRlbnQgeworICAgICAg
ICB3aWR0aDogMzAwcHg7CisgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgfQorICAgICNyb290
IHsKKyAgICAgICAgd2lkdGg6IDIwMHB4OworICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAgIH0K
KyAgICAjc2Nyb2xsZXIgeworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDog
MTAwcHg7CisgICAgICAgIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmU7CisgICAgICAgIG92ZXJm
bG93OiB2aXNpYmxlOworICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVn
LCByZWQsIGJsdWUpOworICAgIH0KKzwvc3R5bGU+Cis8ZGl2IGlkPSJyb290IiBjbGFzcz0ic2Ny
b2xsaW5nIj4KKyAgICA8ZGl2IGlkPSJzY3JvbGxlciI+CisgICAgICAgIDxkaXYgY2xhc3M9InNj
cm9sbENvbnRlbnQiPjwvZGl2PgorICAgIDwvZGl2PgorICAgIDxkaXYgY2xhc3M9InNjcm9sbENv
bnRlbnQiPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+Citjb25zdCByb290ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ3Jvb3QnKTsKK2NvbnN0IHNjcm9sbGVyID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ3Njcm9sbGVyJyk7CisKK2Z1bmN0aW9uIHJlc2V0VGVzdCgpIHsKKyAgICByb290
LnNjcm9sbExlZnQgPSAwOworICAgIHJvb3Quc2Nyb2xsVG9wID0gMDsKKyAgICByb290LnNjcm9s
bFRvKDAsIDApOworfQorCitmdW5jdGlvbiBzdGFydFRlc3QoKSB7CisgICAgICAgIHByb21pc2Vf
dGVzdCgoKSA9PiB7CisgICAgICAgICAgICByZXNldFRlc3QoKTsKKyAgICAgICAgICAgIHZhciB4
ID0gc2Nyb2xsZXIuY2xpZW50V2lkdGggLyAyOworICAgICAgICAgICAgdmFyIHkgPSBzY3JvbGxl
ci5jbGllbnRIZWlnaHQgLyAyOworICAgICAgICAgICAgdmFyIGRlbHRhID0gZ2V0RGVsdGFzKCJy
aWdodCIpOworICAgICAgICAgICAgcmV0dXJuIG1vdXNlV2hlZWxTY3JvbGxBbmRXYWl0KHgsIHks
IGRlbHRhLlgsIGRlbHRhLlksIGRlbHRhLlgsIGRlbHRhLlkpLnRoZW4oKCkgPT4geworICAgICAg
ICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxMZWZ0ID4gMCwgdHJ1ZSwgJ0NvbnRp
bnVlIHVwIHRoZSBob3Jpem9udGFsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAgICAgICAgfSk7
CisgICAgICAgIH0sICdVbnNjcm9sbGFibGUgZWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0
IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4nKTsKKworICAgICAgICBwcm9taXNlX3Rl
c3QoKCkgPT4geworICAgICAgICAgICAgcmVzZXRUZXN0KCk7CisgICAgICAgICAgICB2YXIgeCA9
IHNjcm9sbGVyLmNsaWVudFdpZHRoIC8gMjsKKyAgICAgICAgICAgIHZhciB5ID0gc2Nyb2xsZXIu
Y2xpZW50SGVpZ2h0IC8gMjsKKyAgICAgICAgICAgIHZhciBkZWx0YSA9IGdldERlbHRhcygiZG93
biIpOworICAgICAgICAgICAgcmV0dXJuIG1vdXNlV2hlZWxTY3JvbGxBbmRXYWl0KHgsIHksIGRl
bHRhLlgsIGRlbHRhLlksIGRlbHRhLlgsIGRlbHRhLlkpLnRoZW4oKCkgPT4geworICAgICAgICAg
ICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxUb3AgPiAwLCB0cnVlLCAnQ29udGludWUg
dXAgdGhlIHZlcnRpY2FsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAgICAgICAgfSk7CisgICAg
ICAgIH0sICdVbnNjcm9sbGFibGUgZWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92
ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuJyk7Cit9CisKK2FkZEV2ZW50TGlzdGVuZXIoImxvYWQi
LCBzdGFydFRlc3QpOworPC9zY3JpcHQ+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9s
bC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxh
YmxlLWlmcmFtZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2ZhNTljY2JhNzlhZWZmMzNkYTcw
ZTkzZDQ4OGEwN2VlYzljNTY5MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
c2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlm
cmFtZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBACisKKworUEFTUyBVbnNjcm9sbGFibGUg
aWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBu
b25lLgorUEFTUyBVbnNjcm9sbGFibGUgaWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGgg
b3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUt
aWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVy
c2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMjQy
NWFmYzYzN2RmNTFlNDQxNTQyNmFiNDY3YzYxNGUzOGVmNjE2Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlv
ci11bnNjcm9sbGFibGUtaWZyYW1lLmh0bWwKQEAgLTAsMCArMSw2NiBAQAorPCFkb2N0eXBlIGh0
bWw+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL292ZXJzY3JvbGwtYmVoYXZpb3Itc3Vw
cG9ydC5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vZHJhZnRz
LmNzc3dnLm9yZy9jc3Mtb3ZlcnNjcm9sbC1iZWhhdmlvciI+Cis8c3R5bGU+CisgICAgLnNjcm9s
bGluZyB7CisgICAgICAgIG92ZXJmbG93OiBzY3JvbGw7CisgICAgfQorICAgIC5zY3JvbGxDb250
ZW50IHsKKyAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAg
IH0KKyAgICAjcm9vdCB7CisgICAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgICAgaGVpZ2h0OiAy
MDBweDsKKyAgICB9CisgICAgI3Njcm9sbGVyIHsKKyAgICAgICAgd2lkdGg6IDIwMHB4OworICAg
ICAgICBoZWlnaHQ6IDIwMHB4OworICAgICAgICBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lOwor
ICAgICAgICBvdmVyZmxvdzogdmlzaWJsZTsKKyAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdy
YWRpZW50KDEzNWRlZywgcmVkLCBibHVlKTsKKyAgICB9Cis8L3N0eWxlPgorPGRpdiBpZD0ncm9v
dCcgY2xhc3M9InNjcm9sbGluZyI+CisgICAgPGlmcmFtZSBpZD0nc2Nyb2xsZXInIHNyY2RvYz0i
PGh0bWwgc3R5bGU9J292ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmU7Jz48ZGl2IHN0eWxlPSd3aWR0
aDogMTAwcHg7IGhlaWdodDogMTAwcHg7Jz48L2Rpdj48L2h0bWw+CisgICAgICAgICI+PC9pZnJh
bWU+CisgICAgPGRpdiBjbGFzcz0ic2Nyb2xsQ29udGVudCI+PC9kaXY+Cis8L2Rpdj4KKworPHNj
cmlwdD4KK2NvbnN0IHJvb3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncm9vdCcpOworY29u
c3Qgc2Nyb2xsZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2Nyb2xsZXInKTsKKworZnVu
Y3Rpb24gcmVzZXRUZXN0KCkgeworICAgIHJvb3Quc2Nyb2xsTGVmdCA9IDA7CisgICAgcm9vdC5z
Y3JvbGxUb3AgPSAwOworICAgIHJvb3Quc2Nyb2xsVG8oMCwgMCk7Cit9CisKK2Z1bmN0aW9uIHN0
YXJ0VGVzdCgpIHsKKyAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAgIHJl
c2V0VGVzdCgpOworICAgICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7
CisgICAgICAgICAgICB2YXIgeSA9IHNjcm9sbGVyLmNsaWVudEhlaWdodCAvIDI7CisgICAgICAg
ICAgICB2YXIgZGVsdGEgPSBnZXREZWx0YXMoInJpZ2h0Iik7CisgICAgICAgICAgICByZXR1cm4g
bW91c2VXaGVlbFNjcm9sbEFuZFdhaXQoeCwgeSwgZGVsdGEuWCwgZGVsdGEuWSwgZGVsdGEuWCwg
ZGVsdGEuWSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyb290
LnNjcm9sbExlZnQgPiAwLCB0cnVlLCAnQ29udGludWUgdXAgdGhlIGhvcml6b250YWwgc2Nyb2xs
IGNoYWluaW5nJyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSwgJ1Vuc2Nyb2xsYWJsZSBp
ZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5v
bmUuJyk7CisKKyAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAgIHJlc2V0
VGVzdCgpOworICAgICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7Cisg
ICAgICAgICAgICB2YXIgeSA9IHNjcm9sbGVyLmNsaWVudEhlaWdodCAvIDI7CisgICAgICAgICAg
ICB2YXIgZGVsdGEgPSBnZXREZWx0YXMoImRvd24iKTsKKyAgICAgICAgICAgIHJldHVybiBtb3Vz
ZVdoZWVsU2Nyb2xsQW5kV2FpdCh4LCB5LCBkZWx0YS5YLCBkZWx0YS5ZLCBkZWx0YS5YLCBkZWx0
YS5ZKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Ny
b2xsVG9wID4gMCwgdHJ1ZSwgJ0NvbnRpbnVlIHVwIHRoZSB2ZXJ0aWNhbCBzY3JvbGwgY2hhaW5p
bmcnKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9LCAnVW5zY3JvbGxhYmxlIGlmcmFtZSB2
ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuJyk7Cit9
CisKK2FkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBzdGFydFRlc3QpOworPC9zY3JpcHQ+ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
aW9zL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVj
dGF0aW9ucwppbmRleCBlNTNkMzRmNWNjYTIxYzU1ZmNjZGQwNWQwMWM2OTM5ZDI4YzE1NGYyLi4z
NDk2ZmI0NTRkN2I1ZGEyNTgxMzBiYTliZGEwMWU2YWRmNjNjNjAxIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucwpAQCAtODExLDYgKzgxMSwxMiBAQCBzdmcvdGV4
dC9zZWxlY3Rpb24tZG91YmxlY2xpY2suc3ZnIFsgU2tpcCBdCiBzdmcvdGV4dC9zZWxlY3Rpb24t
dHJpcGxlY2xpY2suc3ZnIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3Mtc2hhZG93LXBhcnRzL2ludmFsaWRhdGlvbi1wYXJ0LXBzZXVkby5odG1sIFsgU2tp
cCBdCiAKKyMgT3ZlcnNjcm9sbC1iZWhhdmlvciBpcyBub3Qgc3VwcG9ydGVkIG9uIGlPUyB5ZXQ6
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM3ODgKK2Zhc3Qvc2Ny
b2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC5odG1sIFsgU2tp
cCBdCitmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFt
ZS5odG1sIFsgU2tpcCBdCitmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJl
aGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWwgWyBTa2lwIF0KK2Zhc3Qvc2Nyb2xsaW5n
L3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5odG1s
IFsgU2tpcCBdCisKICMgSU9TIGRvZXMgbm90IGltcGxlbWVudCBzZXRBdXRvbWF0aWNMaW5rRGV0
ZWN0aW9uRW5hYmxlZAogZWRpdGluZy9pbnNlcnRpbmcvdHlwaW5nLXNwYWNlLXRvLXRyaWdnZXIt
c21hcnQtbGluay5odG1sIFsgU2tpcCBdCiBlZGl0aW5nL2luc2VydGluZy9zbWFydC1saW5rLXdo
ZW4tY2FyZXQtaXMtbW92ZWQtYmVmb3JlLVVSTC5odG1sIFsgU2tpcCBdCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggNjdhOGU4MzE2MmRiNGNi
ZDE0YWNiNmU0MjMxMjVjMjllYjUwMDYyOS4uMDhlY2VjNDk1NGJjYjk1YTlhYzc5NDhiMjNiZTAy
NzEwY2QwMjJlYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0
RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVj
dGF0aW9ucwpAQCAtNTA0LDYgKzUwNCwxMCBAQCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3Mtc2Nyb2xsLXNuYXAvc2Nyb2xsLXRhcmdldC1wYWRkaW5nLTAwMS5odAogaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXNjcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLXN0b3AtY2hhbmdlLmh0bWwgWyBGYWlsdXJlIF0KIGNzczMvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXBhZGRpbmctbWFpbmZyYW1lLXBhZ2luZy5odG1sIFsgRmFpbHVyZSBdCiAKKyMgTGFjayBvZiB3
YXlzIHRvIGNvbnRyb2wgdGhlIGNyb3NzLWZyYW1lIHNjcm9sbCBjaGFpbmluZyBpbiBXSzEuCitm
YXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS5odG1s
IFsgU2tpcCBdCitmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9y
LXVuc2Nyb2xsYWJsZS1pZnJhbWUuaHRtbCBbIFNraXAgXQorCiAjIyMgRU5EIE9GICgyKSBGYWls
dXJlcyB3aXRob3V0IGJ1ZyByZXBvcnRzCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhw
ZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMKaW5k
ZXggZWY3NWJkMTFmNjJkMTRhNTY2MzQwZWUyM2MxZjlhOTMwY2M2MzY0My4uOGRiNGVlYjMxZjUz
MTlkODJjMTU1NjVhNWIxMGEyNWRiZTEzMzUxYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2lu
L1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTYzMiw2ICs2MzIsMTIgQEAgZmFzdC9ldmVudHMvd2hlZWwv
cGxhdGZvcm0td2hlZWxldmVudC1wYWdpbmcteS1pbi1zY3JvbGxpbmctcGFnZS5odG1sIFsgU2tp
cCBdCiBwb2ludGVyLWxvY2svIFsgU2tpcCBdCiBodHRwL3Rlc3RzL3BvaW50ZXItbG9jay8gWyBT
a2lwIF0KIAorIyBPdmVyc2Nyb2xsLWJlaGF2aW9yIGlzIG5vdCBzdXBwb3J0ZWQgb24gV2luZG93
cworZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50
Lmh0bWwgWyBTa2lwIF0KK2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVo
YXZpb3ItaWZyYW1lLmh0bWwgWyBTa2lwIF0KK2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92
ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRtbCBbIFNraXAgXQorZmFz
dC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUt
aWZyYW1lLmh0bWwgWyBTa2lwIF0KKwogIyBEYXRhbGlzdCBpcyB1bnN1cHBvcnRlZCBvbiBXaW5k
b3dzCiBhY2Nlc3NpYmlsaXR5L2RhdGFsaXN0Lmh0bWwgWyBXb250Rml4IF0KIGZhc3QvZm9ybXMv
ZGF0YWxpc3QgWyBXb250Rml4IF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446830</attachid>
            <date>2021-12-10 15:35:05 -0800</date>
            <delta_ts>2022-01-28 17:51:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222968-20211210153504.patch</filename>
            <type>text/plain</type>
            <size>39619</size>
            <attacher name="Nikos Mouchtaris">nmouchtaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MzUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGJiNmQyZjJmYmNkN2I3
ODU1MzIxY2U1YjgwMWQ1YzJmYWNiMzhmNC4uMmFkOTAxNmM5ZmExMjhiYTlkODY4MWU2M2NjNGI5
MjcyZWY1YjgzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDIxLTEyLTAyICBOaWtv
bGFvcyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxl
bWVudCBDU1Mgb3ZlcnNjcm9sbC1iZWhhdmlvciBmb3Igc3luY2hyb25vdXMgc2Nyb2xsCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI5NjgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTcGxpdCB1cCBwYXRj
aCBieSBDYXRoaWUgQ2hlbiBhbmQgRnJlZGVyaWMgV2FuZy4gQWRkIGZ1bmN0aW9uIGZvciBibG9j
a2luZyBzY3JvbGwgY2hhaW5pbmcKKyAgICAgICAgYW5kIGZpbHRlcmluZyBzY3JvbGwgZGVsdGEg
ZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZXMgb2Ygb3ZlcnNjcm9sbCBiZWhhdmlvciBmb3IgYSBzY3Jv
bGxhYmxlCisgICAgICAgIGFyZWEuIFRoaXMgcGF0Y2ggaXMgZm9yIHN5bmNocm9ub3VzIHNjcm9s
bGluZyBvbmx5LgorCisgICAgICAgIFRlc3RzOiBmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1v
dmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9zY3Jv
bGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUuaHRtbAorICAgICAg
ICAgICAgICAgZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11
bnNjcm9sbGFibGUtZWxlbWVudC5odG1sCisgICAgICAgICAgICAgICBmYXN0L3Njcm9sbGluZy9z
eW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUuaHRtbAor
CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hv
dWxkQmxvY2tTY3JvbGxDaGFpbmluZ1dpdGhTY3JvbGxhYmxlQXJlYSk6CisgICAgICAgIChXZWJD
b3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnRJbnRlcm5hbCk6CisgICAgICAgIChX
ZWJDb3JlOjpkaWRTY3JvbGxJblNjcm9sbGFibGVBcmVhKToKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudEluQXBwcm9wcmlhdGVFbmNsb3NpbmdCb3gpOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpzY3JvbGxhYmxlQXJlYUNhbkhhbmRsZUV2
ZW50KToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5oOgorICAgICAgICAqIHBhZ2UvRnJh
bWVWaWV3Lmg6CisgICAgICAgICogcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6ZmluZEVuY2xvc2luZ1Njcm9sbGFibGVDb250YWluZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmg6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsaW5n
RWZmZWN0c0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0
b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck1hYzo6c2hvdWxkRm9y
d2FyZFdoZWVsRXZlbnRzVG9QYXJlbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
QW5pbWF0b3JNYWM6OmFsbG93c1ZlcnRpY2FsU3RyZXRjaGluZyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxBbmltYXRvck1hYzo6YWxsb3dzSG9yaXpvbnRhbFN0cmV0Y2hpbmcgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjp3aGVlbERl
bHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxh
eWVyU2Nyb2xsYWJsZUFyZWEuaDoKKwogMjAyMS0xMS0zMCAgU2ltb24gRnJhc2VyICA8c2ltb24u
ZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBQYXNzIHRoZSB0aW1lc3RhbXAgZm9yIHNjcm9s
bGluZyB0aHJlYWQgYW5pbWF0aW9ucyB0aHJvdWdoIGFsbCB0aGUgc2VydmljZVNjcm9sbEFuaW1h
dGlvbigpIGNhbGxzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggZWMzZTQy
MGU3OWJiMWI1ZGNmNzAxMzU1ZDFhY2U2OWJmODg2NDE1MS4uYmNkNTE3NjY5NWZlYzIyNDJmMWFl
MzNhODQwYTA4MTNkNWM1OTY2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApA
QCAtMzAyNiwxMSArMzAyNiwxNiBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVu
dEludGVybmFsKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgZXZlbnQsIE9wdAogICAgIGlmIChh
bGxvd1Njcm9sbGluZykKICAgICAgICAgYWxsb3dTY3JvbGxpbmcgPSBtX2ZyYW1lLnBhZ2UoKS0+
c2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyKCkubGF0Y2hpbmdBbGxvd3NTY3JvbGxpbmdJbkZyYW1l
KG1fZnJhbWUsIHNjcm9sbGFibGVBcmVhKTsKICNlbmRpZgorICAgIFBsYXRmb3JtV2hlZWxFdmVu
dCBhZGp1c3RlZFdoZWVsRXZlbnQgPSBQbGF0Zm9ybVdoZWVsRXZlbnQoZXZlbnQpOworICAgIGF1
dG8gZmlsdGVyZWREZWx0YSA9IGFkanVzdGVkV2hlZWxFdmVudC5kZWx0YSgpOworICAgIGlmICh2
aWV3LT5zaG91bGRCbG9ja1Njcm9sbFByb3BhZ2F0aW9uKGZpbHRlcmVkRGVsdGEpKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKIAogICAgIGlmIChhbGxvd1Njcm9sbGluZykgewogICAgICAgICAvLyBG
SVhNRTogcHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxpbmcoKSBpcyBvbmx5IGNhbGxlZCBmb3Ig
RnJhbWVWaWV3IHNjcm9sbGluZywgbm90IG92ZXJmbG93IHNjcm9sbGluZywgd2hpY2ggaXMgY29u
ZnVzaW5nLgotICAgICAgICBoYW5kbGVkRXZlbnQgPSBwcm9jZXNzV2hlZWxFdmVudEZvclNjcm9s
bGluZyhldmVudCwgc2Nyb2xsYWJsZUFyZWEsIGhhbmRsaW5nKTsKLSAgICAgICAgcHJvY2Vzc1do
ZWVsRXZlbnRGb3JTY3JvbGxTbmFwKGV2ZW50LCBzY3JvbGxhYmxlQXJlYSk7CisgICAgICAgIGFk
anVzdGVkV2hlZWxFdmVudCA9IGFkanVzdGVkV2hlZWxFdmVudC5jb3B5V2l0aERlbHRhQW5kVmVs
b2NpdHkoZmlsdGVyZWREZWx0YSwgYWRqdXN0ZWRXaGVlbEV2ZW50LnNjcm9sbGluZ1ZlbG9jaXR5
KCkpOworICAgICAgICBoYW5kbGVkRXZlbnQgPSBwcm9jZXNzV2hlZWxFdmVudEZvclNjcm9sbGlu
ZyhhZGp1c3RlZFdoZWVsRXZlbnQsIHNjcm9sbGFibGVBcmVhLCBoYW5kbGluZyk7CisgICAgICAg
IHByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsU25hcChhZGp1c3RlZFdoZWVsRXZlbnQsIHNjcm9s
bGFibGVBcmVhKTsKICAgICB9CiAKICAgICByZXR1cm4gaGFuZGxlZEV2ZW50OwpAQCAtMzA0OSwx
OCArMzA1NCwyMCBAQCBzdGF0aWMgdm9pZCBoYW5kbGVXaGVlbEV2ZW50UGhhc2VJblNjcm9sbGFi
bGVBcmVhKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYQogCiBzdGF0aWMgYm9vbCBkaWRT
Y3JvbGxJblNjcm9sbGFibGVBcmVhKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSwgY29u
c3QgV2hlZWxFdmVudCYgd2hlZWxFdmVudCkKIHsKKyAgICBGbG9hdFNpemUgZmlsdGVyZWREZWx0
YSh3aGVlbEV2ZW50LmRlbHRhWCgpLCB3aGVlbEV2ZW50LmRlbHRhWSgpKTsKKyAgICBzY3JvbGxh
YmxlQXJlYS5zaG91bGRCbG9ja1Njcm9sbFByb3BhZ2F0aW9uKGZpbHRlcmVkRGVsdGEpOwogICAg
IFNjcm9sbEdyYW51bGFyaXR5IHNjcm9sbEdyYW51bGFyaXR5ID0gd2hlZWxHcmFudWxhcml0eVRv
U2Nyb2xsR3JhbnVsYXJpdHkod2hlZWxFdmVudC5kZWx0YU1vZGUoKSk7CiAgICAgYm9vbCBkaWRI
YW5kbGVXaGVlbEV2ZW50ID0gZmFsc2U7Ci0gICAgaWYgKGZsb2F0IGFic29sdXRlRGVsdGEgPSBz
dGQ6OmFicyh3aGVlbEV2ZW50LmRlbHRhWCgpKSkKLSAgICAgICAgZGlkSGFuZGxlV2hlZWxFdmVu
dCB8PSBzY3JvbGxhYmxlQXJlYS5zY3JvbGwod2hlZWxFdmVudC5kZWx0YVgoKSA+IDAgPyBTY3Jv
bGxSaWdodCA6IFNjcm9sbExlZnQsIHNjcm9sbEdyYW51bGFyaXR5LCBhYnNvbHV0ZURlbHRhKTsK
KyAgICBpZiAoZmxvYXQgYWJzb2x1dGVEZWx0YSA9IHN0ZDo6YWJzKGZpbHRlcmVkRGVsdGEud2lk
dGgoKSkpCisgICAgICAgIGRpZEhhbmRsZVdoZWVsRXZlbnQgfD0gc2Nyb2xsYWJsZUFyZWEuc2Ny
b2xsKGZpbHRlcmVkRGVsdGEud2lkdGgoKSA+IDAgPyBTY3JvbGxSaWdodCA6IFNjcm9sbExlZnQs
IHNjcm9sbEdyYW51bGFyaXR5LCBhYnNvbHV0ZURlbHRhKTsKIAotICAgIGlmIChmbG9hdCBhYnNv
bHV0ZURlbHRhID0gc3RkOjphYnMod2hlZWxFdmVudC5kZWx0YVkoKSkpCi0gICAgICAgIGRpZEhh
bmRsZVdoZWVsRXZlbnQgfD0gc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsKHdoZWVsRXZlbnQuZGVsdGFZ
KCkgPiAwID8gU2Nyb2xsRG93biA6IFNjcm9sbFVwLCBzY3JvbGxHcmFudWxhcml0eSwgYWJzb2x1
dGVEZWx0YSk7CisgICAgaWYgKGZsb2F0IGFic29sdXRlRGVsdGEgPSBzdGQ6OmFicyhmaWx0ZXJl
ZERlbHRhLmhlaWdodCgpKSkKKyAgICAgICAgZGlkSGFuZGxlV2hlZWxFdmVudCB8PSBzY3JvbGxh
YmxlQXJlYS5zY3JvbGwoZmlsdGVyZWREZWx0YS5oZWlnaHQoKSA+IDAgPyBTY3JvbGxEb3duIDog
U2Nyb2xsVXAsIHNjcm9sbEdyYW51bGFyaXR5LCBhYnNvbHV0ZURlbHRhKTsKIAogICAgIHJldHVy
biBkaWRIYW5kbGVXaGVlbEV2ZW50OwogfQogCi1ib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlV2hl
ZWxFdmVudEluQXBwcm9wcmlhdGVFbmNsb3NpbmdCb3goTm9kZSogc3RhcnROb2RlLCBjb25zdCBX
aGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBjb25zdCBGbG9hdFNpemUmIGZpbHRlcmVkUGxhdGZvcm1E
ZWx0YSwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJlZFZlbG9jaXR5LCBPcHRpb25TZXQ8RXZlbnRI
YW5kbGluZz4gZXZlbnRIYW5kbGluZykKK2Jvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2
ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2luZ0JveChOb2RlKiBzdGFydE5vZGUsIGNvbnN0IFdoZWVs
RXZlbnQmIHdoZWVsRXZlbnQsIEZsb2F0U2l6ZSYgZmlsdGVyZWRQbGF0Zm9ybURlbHRhLCBjb25z
dCBGbG9hdFNpemUmIGZpbHRlcmVkVmVsb2NpdHksIE9wdGlvblNldDxFdmVudEhhbmRsaW5nPiBl
dmVudEhhbmRsaW5nKQogewogICAgIGJvb2wgc2hvdWxkSGFuZGxlRXZlbnQgPSB3aGVlbEV2ZW50
LmRlbHRhWCgpIHx8IHdoZWVsRXZlbnQuZGVsdGFZKCk7CiAjaWYgRU5BQkxFKFdIRUVMX0VWRU5U
X0xBVENISU5HKQpAQCAtMzA4Myw4ICszMDkwLDE4IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5k
bGVXaGVlbEV2ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2luZ0JveChOb2RlKiBzdGFydE5vZGUsIGNv
CiAgICAgICAgIHJldHVybiBkaWRTY3JvbGxJblNjcm9sbGFibGVBcmVhKGRvd25jYXN0PFJlbmRl
ckxpc3RCb3g+KGluaXRpYWxFbmNsb3NpbmdCb3gpLCB3aGVlbEV2ZW50KTsKIAogICAgIFJlbmRl
ckJveCogY3VycmVudEVuY2xvc2luZ0JveCA9ICZpbml0aWFsRW5jbG9zaW5nQm94OworI2lmIFBM
QVRGT1JNKE1BQykKKyAgICBhdXRvIGJpYXNlZERlbHRhID0gU2Nyb2xsaW5nRWZmZWN0c0NvbnRy
b2xsZXI6OndoZWVsRGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRpY2FsKEZsb2F0U2l6ZSh3aGVlbEV2
ZW50LmRlbHRhWCgpLCB3aGVlbEV2ZW50LmRlbHRhWSgpKSk7CisjZWxzZQorICAgIEZsb2F0U2l6
ZSBiaWFzZWREZWx0YSh3aGVlbEV2ZW50LmRlbHRhWCgpLCB3aGVlbEV2ZW50LmRlbHRhWSgpKTsK
KyNlbmRpZgogICAgIHdoaWxlIChjdXJyZW50RW5jbG9zaW5nQm94KSB7CiAgICAgICAgIGlmIChh
dXRvKiBib3hTY3JvbGxhYmxlQXJlYSA9IGN1cnJlbnRFbmNsb3NpbmdCb3gtPmxheWVyKCkgPyBj
dXJyZW50RW5jbG9zaW5nQm94LT5sYXllcigpLT5zY3JvbGxhYmxlQXJlYSgpIDogbnVsbHB0cikg
eworICAgICAgICAgICAgaWYgKGJveFNjcm9sbGFibGVBcmVhICYmIGJveFNjcm9sbGFibGVBcmVh
LT5zaG91bGRCbG9ja1Njcm9sbFByb3BhZ2F0aW9uKGJpYXNlZERlbHRhKSkgeworICAgICAgICAg
ICAgICAgIGlmIChib3hTY3JvbGxhYmxlQXJlYS0+aGFzSG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhh
dmlvcigpICYmICFmaWx0ZXJlZFBsYXRmb3JtRGVsdGEuaGVpZ2h0KCkpCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIGF1dG8gcGxhdGZvcm1FdmVudCA9IHdoZWVsRXZlbnQudW5k
ZXJseWluZ1BsYXRmb3JtRXZlbnQoKTsKICAgICAgICAgICAgIGJvb2wgc2Nyb2xsaW5nV2FzSGFu
ZGxlZDsKICAgICAgICAgICAgIGlmIChwbGF0Zm9ybUV2ZW50KSB7CkBAIC0zMTA3LDcgKzMxMjQs
NyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudEluQXBwcm9wcmlhdGVFbmNs
b3NpbmdCb3goTm9kZSogc3RhcnROb2RlLCBjbwogYm9vbCBFdmVudEhhbmRsZXI6OnNjcm9sbGFi
bGVBcmVhQ2FuSGFuZGxlRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50
LCBTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEpCiB7CiAjaWYgUExBVEZPUk0oTUFDKQot
ICAgIGF1dG8gYmlhc2VkRGVsdGEgPSBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6d2hlZWxE
ZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwod2hlZWxFdmVudCk7CisgICAgYXV0byBiaWFzZWRE
ZWx0YSA9IFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjp3aGVlbERlbHRhQmlhc2luZ1Rvd2Fy
ZHNWZXJ0aWNhbCh3aGVlbEV2ZW50LmRlbHRhKCkpOwogI2Vsc2UKICAgICBhdXRvIGJpYXNlZERl
bHRhID0gd2hlZWxFdmVudC5kZWx0YSgpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRs
ZXIuaAppbmRleCBlYWMxZDVmMzQwMDg2YzM2MzZiZmY2MTA5NjUxZGVjOWY0ZWIzMGZlLi43ODdk
NTNkMTkzN2NjNTdhODFjOGUxYzE4ZWQzYWVhOTQzMGIxMTg1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZl
bnRIYW5kbGVyLmgKQEAgLTQ3Niw3ICs0NzYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcHJvY2Vz
c1doZWVsRXZlbnRGb3JTY3JvbGxTbmFwKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIGNvbnN0
IFdlYWtQdHI8U2Nyb2xsYWJsZUFyZWE+Jik7CiAgICAgYm9vbCBjb21wbGV0ZVdpZGdldFdoZWVs
RXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgY29uc3QgV2Vha1B0cjxXaWRnZXQ+Jiwg
Y29uc3QgV2Vha1B0cjxTY3JvbGxhYmxlQXJlYT4mKTsKIAotICAgIGJvb2wgaGFuZGxlV2hlZWxF
dmVudEluQXBwcm9wcmlhdGVFbmNsb3NpbmdCb3goTm9kZSogc3RhcnROb2RlLCBjb25zdCBXaGVl
bEV2ZW50JiwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJlZFBsYXRmb3JtRGVsdGEsIGNvbnN0IEZs
b2F0U2l6ZSYgZmlsdGVyZWRWZWxvY2l0eSwgT3B0aW9uU2V0PEV2ZW50SGFuZGxpbmc+KTsKKyAg
ICBib29sIGhhbmRsZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94KE5vZGUqIHN0
YXJ0Tm9kZSwgY29uc3QgV2hlZWxFdmVudCYsIEZsb2F0U2l6ZSYgZmlsdGVyZWRQbGF0Zm9ybURl
bHRhLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlcmVkVmVsb2NpdHksIE9wdGlvblNldDxFdmVudEhh
bmRsaW5nPik7CiAKICAgICBib29sIGhhbmRsZVdoZWVsRXZlbnRJblNjcm9sbGFibGVBcmVhKGNv
bnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIFNjcm9sbGFibGVBcmVhJiwgT3B0aW9uU2V0PEV2ZW50
SGFuZGxpbmc+KTsKICAgICBzdGQ6Om9wdGlvbmFsPFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlPiB1
cGRhdGVXaGVlbEdlc3R1cmVTdGF0ZShjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBPcHRpb25T
ZXQ8RXZlbnRIYW5kbGluZz4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKaW5kZXggODVhY2E1ZDdi
YjMyYmRhYmRjNzAxZGQ4MmIyNmY2NWU0M2Y5MjgyZS4uMWU2NjRjZTljODliOTQxY2M0OTFiNDlm
MzBlYzhiNWJmYjNiY2QxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCkBAIC03MDIsNiArNzAy
LDggQEAgcHVibGljOgogICAgIAogICAgIE92ZXJzY3JvbGxCZWhhdmlvciBob3Jpem9udGFsT3Zl
cnNjcm9sbEJlaGF2aW9yKCkgY29uc3QgZmluYWw7CiAgICAgT3ZlcnNjcm9sbEJlaGF2aW9yIHZl
cnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29uc3QgZmluYWw7CisgICAgYm9vbCBoYXNIb3Jp
em9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29uc3QgZmluYWwgeyByZXR1cm4gaG9yaXpvbnRh
bE92ZXJzY3JvbGxCZWhhdmlvcigpICE9IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0bzsgfQorICAg
IGJvb2wgaGFzVmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdCBmaW5hbCB7IHJldHVy
biB2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpICE9IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0
bzsgfQogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEZyYW1lVmlldyhGcmFtZSYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tCmluZGV4IDFlY2QwY2M3OGVkNTU1
NjRmMDMyYjMwYzljODNlYmY1NzRhZGU4MDAuLmI1YzhmNTI1Y2YzYmMyZTczYWI2NjZhNDBiMWE0
ZWE1NDY3NTFlNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFu
ZGxlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMu
bW0KQEAgLTgxNSw2ICs4MTUsOCBAQCBzdGF0aWMgQ29udGFpbmVyTm9kZSogZmluZEVuY2xvc2lu
Z1Njcm9sbGFibGVDb250YWluZXIoQ29udGFpbmVyTm9kZSogbm9kZSwgY29ucwogICAgICAgICBh
dXRvKiBzY3JvbGxhYmxlQXJlYSA9IHNjcm9sbGFibGVBcmVhRm9yQm94KCpib3gpOwogICAgICAg
ICBpZiAoIXNjcm9sbGFibGVBcmVhKQogICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlm
ICgoc2Nyb2xsYWJsZUFyZWEtPmhhc0hvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSAmJiBz
Y3JvbGxhYmxlQXJlYS0+aGFzVmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSkgfHwgKHNjcm9s
bGFibGVBcmVhLT5oYXNIb3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgJiYgIXdoZWVsRXZl
bnQuZGVsdGEoKS5oZWlnaHQoKSkgfHwgKHNjcm9sbGFibGVBcmVhLT5oYXNWZXJ0aWNhbE92ZXJz
Y3JvbGxCZWhhdmlvcigpICYmICF3aGVlbEV2ZW50LmRlbHRhKCkud2lkdGgoKSkpCisgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgICAgICBpZiAod2hlZWxFdmVudC5waGFzZSgpID09
IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlOjpNYXlCZWdpbiB8fCB3aGVlbEV2ZW50LnBoYXNlKCkg
PT0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2U6OkNhbmNlbGxlZCkKICAgICAgICAgICAgIHJldHVy
biBjYW5kaWRhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxh
YmxlQXJlYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAK
aW5kZXggN2JjY2ViZjgwZWNlNzgxNDcwMmZiNTE1MWU0Zjk1OTVkNzFmOTk5Mi4uZWI3MDRlZWUz
NDljMjViZWRiOGM4MzRjN2YyMjY2MGE5NWNhYzAxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbGFibGVBcmVhLmNwcApAQCAtODA4LDQgKzgwOCwxNyBAQCBUZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJs
ZUFyZWEpCiAgICAgcmV0dXJuIHRzOwogfQogCitib29sIFNjcm9sbGFibGVBcmVhOjpzaG91bGRC
bG9ja1Njcm9sbFByb3BhZ2F0aW9uKEZsb2F0U2l6ZSYgYmlhc2VkRGVsdGEpIGNvbnN0Cit7Cisg
ICAgaWYgKGhhc0hvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSB8fCBoYXNWZXJ0aWNhbE92
ZXJzY3JvbGxCZWhhdmlvcigpKSB7CisgICAgICAgIGlmIChoYXNIb3Jpem9udGFsT3ZlcnNjcm9s
bEJlaGF2aW9yKCkgJiYgIWJpYXNlZERlbHRhLmhlaWdodCgpICYmIGJpYXNlZERlbHRhLndpZHRo
KCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKChoYXNIb3Jpem9udGFs
T3ZlcnNjcm9sbEJlaGF2aW9yKCkgJiYgaGFzVmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSkg
fHwgKGhhc0hvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSAmJiAhYmlhc2VkRGVsdGEuaGVp
Z2h0KCkpIHx8IChoYXNWZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpICYmICFiaWFzZWREZWx0
YS53aWR0aCgpKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBiaWFzZWREZWx0
YS5zZXRXaWR0aChoYXNIb3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgPyAwIDogYmlhc2Vk
RGVsdGEud2lkdGgoKSk7CisgICAgICAgIGJpYXNlZERlbHRhLnNldEhlaWdodChoYXNWZXJ0aWNh
bE92ZXJzY3JvbGxCZWhhdmlvcigpID8gMCA6IGJpYXNlZERlbHRhLmhlaWdodCgpKTsKKyAgICB9
CisgICAgcmV0dXJuIGZhbHNlOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaAppbmRleCBhYjc0NWM0YmJhOWYyM2UxOGFi
YTNjZjEzNmUzZTkxNTMxMGI5MDUxLi4wN2RiN2I4NjI2YjhmNmE0NGYwNTNmZDg2Y2U5MzJiZWFl
NTk1ZGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJl
YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgKQEAgLTM3
MCw2ICszNzAsMTAgQEAgcHVibGljOgogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFy
dFNjcm9sbEFuaW1hdGlvbigpIHsgfQorICAgIAorICAgIHZpcnR1YWwgYm9vbCBoYXNIb3Jpem9u
dGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0
dWFsIGJvb2wgaGFzVmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQorICAgIGJvb2wgc2hvdWxkQmxvY2tTY3JvbGxQcm9wYWdhdGlvbihGbG9hdFNpemUm
KSBjb25zdDsKIAogcHJvdGVjdGVkOgogICAgIFdFQkNPUkVfRVhQT1JUIFNjcm9sbGFibGVBcmVh
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3Rz
Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0Nv
bnRyb2xsZXIuaAppbmRleCBjN2EzYTJmODVlYTBlZDVhN2M2YTk0YmUxYmYzNTcyOGIxOGM4OGYz
Li4wNjY3OTFkMGNlNDNiNmRmYzkzOTY5NjUwODE0MjQyMjgyYmZlN2ZmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmgKQEAg
LTE3NCw3ICsxNzQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1VzZXJTY3JvbGxJblByb2dyZXNz
KCkgY29uc3Q7CiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgc3RhdGljIEZsb2F0U2l6ZSB3aGVl
bERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKTsK
KyAgICBzdGF0aWMgRmxvYXRTaXplIHdoZWVsRGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRpY2FsKGNv
bnN0IEZsb2F0U2l6ZSYpOwogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIGhhbmRsZWQuCiAgICAg
Ym9vbCBwcm9jZXNzV2hlZWxFdmVudEZvclNjcm9sbFNuYXAoY29uc3QgUGxhdGZvcm1XaGVlbEV2
ZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5p
bWF0b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JN
YWMubW0KaW5kZXggNTNhNDA3NTNkYjc0N2M1YWM0YjFmN2IyMWE5YWQ1YzFmZjQ1YTgzNi4uZmNh
YTlmNDEyYjE0ZjY4ZWM2NmM0MTBkNWRlNWFhODUwYTRiZGVlOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQpAQCAtOTQsOSArOTQsOSBA
QCB2b2lkIFNjcm9sbEFuaW1hdG9yTWFjOjpoYW5kbGVXaGVlbEV2ZW50UGhhc2UoUGxhdGZvcm1X
aGVlbEV2ZW50UGhhc2UgcGhhc2UpCiBib29sIFNjcm9sbEFuaW1hdG9yTWFjOjpzaG91bGRGb3J3
YXJkV2hlZWxFdmVudHNUb1BhcmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZl
bnQpIGNvbnN0CiB7CiAgICAgaWYgKHN0ZDo6YWJzKHdoZWVsRXZlbnQuZGVsdGFZKCkpID49IHN0
ZDo6YWJzKHdoZWVsRXZlbnQuZGVsdGFYKCkpKQotICAgICAgICByZXR1cm4gIWFsbG93c1ZlcnRp
Y2FsU3RyZXRjaGluZyh3aGVlbEV2ZW50KTsKKyAgICAgICAgcmV0dXJuIG1fc2Nyb2xsYWJsZUFy
ZWEudmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSA9PSBPdmVyc2Nyb2xsQmVoYXZpb3I6OkF1
dG8gJiYgIWFsbG93c1ZlcnRpY2FsU3RyZXRjaGluZyh3aGVlbEV2ZW50KTsKIAotICAgIHJldHVy
biAhYWxsb3dzSG9yaXpvbnRhbFN0cmV0Y2hpbmcod2hlZWxFdmVudCk7CisgICAgcmV0dXJuIG1f
c2Nyb2xsYWJsZUFyZWEuaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpID09IE92ZXJzY3Jv
bGxCZWhhdmlvcjo6QXV0byAmJiAhYWxsb3dzSG9yaXpvbnRhbFN0cmV0Y2hpbmcod2hlZWxFdmVu
dCk7CiB9CiAgICAgCiBib29sIFNjcm9sbEFuaW1hdG9yTWFjOjpoYW5kbGVXaGVlbEV2ZW50KGNv
bnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCkKQEAgLTE0Myw2ICsxNDMsOSBAQCBz
dGF0aWMgYm9vbCBnZXN0dXJlU2hvdWxkQmVnaW5TbmFwKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVu
dCYgd2hlZWxFdmVudCwgU2Nyb2xsRQogCiBib29sIFNjcm9sbEFuaW1hdG9yTWFjOjphbGxvd3NW
ZXJ0aWNhbFN0cmV0Y2hpbmcoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50KSBj
b25zdAogeworICAgIGlmIChtX3Njcm9sbGFibGVBcmVhLnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2
aW9yKCkgPT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpOb25lKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgCiAgICAgc3dpdGNoIChtX3Njcm9sbGFibGVBcmVhLnZlcnRpY2FsU2Nyb2xsRWxhc3Rp
Y2l0eSgpKSB7CiAgICAgY2FzZSBTY3JvbGxFbGFzdGljaXR5OjpBdXRvbWF0aWM6IHsKICAgICAg
ICAgU2Nyb2xsYmFyKiBoU2Nyb2xsZXIgPSBtX3Njcm9sbGFibGVBcmVhLmhvcml6b250YWxTY3Jv
bGxiYXIoKTsKQEAgLTE2Niw2ICsxNjksOSBAQCBib29sIFNjcm9sbEFuaW1hdG9yTWFjOjphbGxv
d3NWZXJ0aWNhbFN0cmV0Y2hpbmcoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbAogCiBi
b29sIFNjcm9sbEFuaW1hdG9yTWFjOjphbGxvd3NIb3Jpem9udGFsU3RyZXRjaGluZyhjb25zdCBQ
bGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpIGNvbnN0CiB7CisgICAgaWYgKG1fc2Nyb2xs
YWJsZUFyZWEuaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpID09IE92ZXJzY3JvbGxCZWhh
dmlvcjo6Tm9uZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAogICAgIHN3aXRjaCAobV9z
Y3JvbGxhYmxlQXJlYS5ob3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eSgpKSB7CiAgICAgY2FzZSBT
Y3JvbGxFbGFzdGljaXR5OjpBdXRvbWF0aWM6IHsKICAgICAgICAgU2Nyb2xsYmFyKiBoU2Nyb2xs
ZXIgPSBtX3Njcm9sbGFibGVBcmVhLmhvcml6b250YWxTY3JvbGxiYXIoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxl
ci5tbQppbmRleCA4MDBjYzUxMTA3NWFhYjAyMDhlODk2NzM1YTNlOWJkMWUzMDIyODExLi4wZDEy
NTYwYzQ3YjYzNDhlNzdmNjM2YWViNDQ2MjViNzE3NTU0MjdmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLm1t
CkBAIC0zMzcsOSArMzM3LDkgQEAgYm9vbCBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6YXBw
bHlTY3JvbGxEZWx0YVdpdGhTdHJldGNoaW5nKGNvbnN0IFBsYXRmb3JtV2gKICAgICByZXR1cm4g
Y2FuU3RhcnRBbmltYXRpb247CiB9CiAKLUZsb2F0U2l6ZSBTY3JvbGxpbmdFZmZlY3RzQ29udHJv
bGxlcjo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoY29uc3QgUGxhdGZvcm1XaGVl
bEV2ZW50JiB3aGVlbEV2ZW50KQorRmxvYXRTaXplIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVy
Ojp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbChjb25zdCBGbG9hdFNpemUmIHdoZWVs
RGVsdGEpCiB7Ci0gICAgcmV0dXJuIGRlbHRhQWxpZ25lZFRvRG9taW5hbnRBeGlzKHdoZWVsRXZl
bnQuZGVsdGEoKSk7CisgICAgcmV0dXJuIGRlbHRhQWxpZ25lZFRvRG9taW5hbnRBeGlzKHdoZWVs
RGVsdGEpOwogfQogCiB2b2lkIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjp1cGRhdGVSdWJi
ZXJCYW5kQW5pbWF0aW5nU3RhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmgKaW5kZXggN2FjOGNkZGJiMDk0MzIzN2MxMjdh
ZjhmNjdlNGVmYWVhZmJmNWQ1OS4uMjJhZDQ3MWE1ZTlkYzM1MTU1OTJmZjBkZmRiOGY0NmJjMjcx
YmM3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyU2Ny
b2xsYWJsZUFyZWEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJT
Y3JvbGxhYmxlQXJlYS5oCkBAIC0yNDAsNyArMjQwLDggQEAgcHVibGljOgogICAgIHZvaWQgdXBk
YXRlTGF5ZXJQb3NpdGlvbnNBZnRlckRvY3VtZW50U2Nyb2xsKCk7CiAKICAgICBzdGQ6Om9wdGlv
bmFsPExheW91dFJlY3Q+IHVwZGF0ZVNjcm9sbFBvc2l0aW9uKGNvbnN0IFNjcm9sbFBvc2l0aW9u
Q2hhbmdlT3B0aW9ucyYsIGNvbnN0IExheW91dFJlY3QmIHJldmVhbFJlY3QsIGNvbnN0IExheW91
dFJlY3QmIGxvY2FsRXhwb3NlUmVjdCk7Ci0KKyAgICBib29sIGhhc0hvcml6b250YWxPdmVyc2Ny
b2xsQmVoYXZpb3IoKSBjb25zdCBmaW5hbCB7IHJldHVybiBob3Jpem9udGFsT3ZlcnNjcm9sbEJl
aGF2aW9yKCkgIT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpBdXRvOyB9CisgICAgYm9vbCBoYXNWZXJ0
aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHZlcnRpY2FsT3Zl
cnNjcm9sbEJlaGF2aW9yKCkgIT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpBdXRvOyB9CiBwcml2YXRl
OgogICAgIGJvb2wgaGFzSG9yaXpvbnRhbE92ZXJmbG93KCkgY29uc3Q7CiAgICAgYm9vbCBoYXNW
ZXJ0aWNhbE92ZXJmbG93KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOWIwNjNkNDYxMDhiZWVjYjc5YTIyZGM4
ZTFhODNkMzlhYzczZTIyYi4uYjY4OGU0NjcyY2E0ZDZhM2RmNmZjMzQxZDlmNjVlZjRmZjZkYzgx
NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTEyLTAyICBOaWtvbGFvcyBNb3VjaHRhcmlz
ICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBDU1Mgb3ZlcnNj
cm9sbC1iZWhhdmlvciBmb3Igc3luY2hyb25vdXMgc2Nyb2xsCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI5NjgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL3Jlc291cmNlcy9v
dmVyc2Nyb2xsLWJlaGF2aW9yLXN1cHBvcnQuanM6IEFkZGVkLgorICAgICAgICAoZ2V0RGVsdGFz
KToKKyAgICAgICAgKGFzeW5jIG1vdXNlV2hlZWxTY3JvbGxBbmRXYWl0KToKKyAgICAgICAgKiBm
YXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQuaHRt
bDogQWRkZWQuCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9s
bC1iZWhhdmlvci1pZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcv
c3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xs
LWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUuaHRtbDogQWRkZWQuCisKIDIwMjEtMTEtMzAg
IFJvYmVydCBKZW5uZXIgIDxKZW5uZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJFQkFTRUxJTkUg
WyBNb250ZXJleSBdZmFzdC9jc3MvY29udGludWF0aW9uQ3Jhc2guaHRtbCAobGF5b3V0LXRlc3Qp
IGlzIGEgY29uc3RhbnQgdGV4dCBmYWlsdXJlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L3Njcm9sbGluZy9yZXNvdXJjZXMvb3ZlcnNjcm9sbC1iZWhhdmlvci1zdXBwb3J0LmpzIGIvTGF5
b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvcmVzb3VyY2VzL292ZXJzY3JvbGwtYmVoYXZpb3Itc3Vw
cG9ydC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5jYmQyMjJlOTBiNTJhMTkzMGI3ZmNmZTQ0MjNlOTQ1ODNjMDQ2
MDBlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvcmVzb3Vy
Y2VzL292ZXJzY3JvbGwtYmVoYXZpb3Itc3VwcG9ydC5qcwpAQCAtMCwwICsxLDM5IEBACitmdW5j
dGlvbiBnZXREZWx0YXMoZGlyZWN0aW9uKSB7CisgICAgdmFyIGRlbHRhWCA9IDA7CisgICAgdmFy
IGRlbHRhWSA9IDA7CisgICAgaWYgKGRpcmVjdGlvbiA9PSAiZG93biIpCisgICAgICAgIGRlbHRh
WSA9IC01CisgICAgZWxzZSBpZiAoZGlyZWN0aW9uID09ICJ1cCIpCisgICAgICAgIGRlbHRhWSA9
IDU7CisgICAgZWxzZSBpZiAoZGlyZWN0aW9uID09ICJyaWdodCIpCisgICAgICAgIGRlbHRhWCA9
IC01OworICAgIGVsc2UgaWYgKGRpcmVjdGlvbiA9PSAibGVmdCIpCisgICAgICAgIGRlbHRhWCA9
IDU7CisgICAgcmV0dXJuIHsKKyAgICAgICAgWDogZGVsdGFYLAorICAgICAgICBZOiBkZWx0YVkK
KyAgICB9OworfQorCithc3luYyBmdW5jdGlvbiBtb3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCh4LCB5
LCBiZWdpblgsIGJlZ2luWSwgZGVsdGFYLCBkZWx0YVkpCit7CisgICAgaWYgKGJlZ2luWCA9PT0g
dW5kZWZpbmVkKQorICAgICAgICBiZWdpblggPSAwOworICAgIGlmIChiZWdpblkgPT09IHVuZGVm
aW5lZCkKKyAgICAgICAgYmVnaW5ZID0gLTE7CisgICAgaWYgKGRlbHRhWCA9PT0gdW5kZWZpbmVk
KQorICAgICAgICBkZWx0YVggPSAwOworICAgIGlmIChkZWx0YVkgPT09IHVuZGVmaW5lZCkKKyAg
ICAgICAgZGVsdGFZID0gLTEwOworCisgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRz
KCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGJlZ2luWCwgYmVnaW5ZLCAi
YmVnYW4iLCAibm9uZSIpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkZWx0YVgsIGRlbHRhWSwgImNoYW5nZWQiLCAibm9uZSIpOworICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAw
LCAiZW5kZWQiLCAibm9uZSIpOworICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsK
KyAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9u
RnJhbWUocmVzb2x2ZSk7CisgICAgICAgIH0sIDUwMCk7CisgICAgfSk7Cit9ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcv
c3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3It
ZWxlbWVudC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjcxNTBmZjYwYjVkYmRkMGI0YTdhYzZm
ODNmYjU2ZjU3Y2QyY2Q4MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Ny
b2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwyMCBAQAorCitQQVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVz
dCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gYXV0by4KK1BBU1MgRWxlbWVudCB2ZXJ0
aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gYXV0by4KK1BB
U1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlv
cjogY29udGFpbiBhdXRvLgorUEFTUyBFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGgg
b3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBhdXRvLgorUEFTUyBFbGVtZW50IGhvcml6b250
YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIGF1dG8uCitQQVNT
IEVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBu
b25lIGF1dG8uCitQQVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJz
Y3JvbGwtYmVoYXZpb3I6IGF1dG8gY29udGFpbi4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3Jv
bGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gY29udGFpbi4KK1BBU1MgRWxl
bWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29u
dGFpbiBjb250YWluLgorUEFTUyBFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3Zl
cnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBjb250YWluLgorUEFTUyBFbGVtZW50IGhvcml6b250
YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIGNvbnRhaW4uCitQ
QVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9y
OiBub25lIGNvbnRhaW4uCitQQVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRo
IG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gbm9uZS4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBz
Y3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gbm9uZS4KK1BBU1MgRWxl
bWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29u
dGFpbiBub25lLgorUEFTUyBFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNj
cm9sbC1iZWhhdmlvcjogY29udGFpbiBub25lLgorUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Ny
b2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIG5vbmUuCitQQVNTIEVsZW1l
bnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIG5v
bmUuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xs
LW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3Jv
bGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50Lmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYjY2NDc2ZjA1ZmQyZjQwM2FhNGU2ZWRiZjhkYmZmZTRiNzMyOWMyMAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3Jv
bGwtYmVoYXZpb3ItZWxlbWVudC5odG1sCkBAIC0wLDAgKzEsODYgQEAKKzwhZG9jdHlwZSBodG1s
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb3ZlcnNjcm9sbC1iZWhhdmlvci1zdXBwb3J0
LmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9kcmFmdHMuY3Nz
d2cub3JnL2Nzcy1vdmVyc2Nyb2xsLWJlaGF2aW9yIj4KKzxzdHlsZT4KKyAgICAuc2Nyb2xsaW5n
IHsKKyAgICAgICAgb3ZlcmZsb3c6IHNjcm9sbDsKKyAgICB9CisgICAgLnNjcm9sbENvbnRlbnQg
eworICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgfQor
ICAgICNyb290IHsKKyAgICAgICAgd2lkdGg6IDIwMHB4OworICAgICAgICBoZWlnaHQ6IDIwMHB4
OworICAgIH0KKyAgICAjc2Nyb2xsZXIgeworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAg
IGhlaWdodDogMTAwcHg7CisgICAgfQorPC9zdHlsZT4KKzxkaXYgaWQ9J3Jvb3QnIGNsYXNzPSJz
Y3JvbGxpbmciPgorICAgIDxkaXYgaWQ9J3Njcm9sbGVyJyBjbGFzcz0ic2Nyb2xsaW5nIj4KKyAg
ICAgICAgPGRpdiBjbGFzcz0ic2Nyb2xsQ29udGVudCI+PC9kaXY+CisgICAgPC9kaXY+CisgICAg
PGRpdiBjbGFzcz0ic2Nyb2xsQ29udGVudCI+PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4KK2Nv
bnN0IHJvb3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncm9vdCcpOworY29uc3Qgc2Nyb2xs
ZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2Nyb2xsZXInKTsKK3ZhciBvdmVyc2Nyb2xs
RGF0YXMgPSBbWyJhdXRvIiwgImF1dG8iLCB0cnVlLCB0cnVlXSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIFsiY29udGFpbiIsICJhdXRvIiwgZmFsc2UsIHRydWVdLAorICAgICAgICAgICAgICAg
ICAgICAgICAgWyJub25lIiwgImF1dG8iLCBmYWxzZSwgdHJ1ZV0sCisgICAgICAgICAgICAgICAg
ICAgICAgICBbImF1dG8iLCAiY29udGFpbiIsIHRydWUsIGZhbHNlXSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIFsiY29udGFpbiIsICJjb250YWluIiwgZmFsc2UsIGZhbHNlXSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIFsibm9uZSIsICJjb250YWluIiwgZmFsc2UsIGZhbHNlXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIFsiYXV0byIsICJub25lIiwgdHJ1ZSwgZmFsc2VdLAorICAgICAg
ICAgICAgICAgICAgICAgICAgWyJjb250YWluIiwgIm5vbmUiLCBmYWxzZSwgZmFsc2VdLAorICAg
ICAgICAgICAgICAgICAgICAgICAgWyJub25lIiwgIm5vbmUiLCBmYWxzZSwgZmFsc2VdXTsKKwor
ZnVuY3Rpb24gcmVzZXRUZXN0KCkgeworICAgIC8vIFRyeSB2YXJpb3VzIG1ldGhvZHMgdG8gZW5z
dXJlIHRoZSBlbGVtZW50IHBvc2l0aW9uIGlzIHJlc2V0IGltbWVkaWF0ZWx5LgorICAgIHNjcm9s
bGVyLnNjcm9sbExlZnQgPSAzMDA7CisgICAgc2Nyb2xsZXIuc2Nyb2xsVG9wID0gMzAwOworICAg
IHNjcm9sbGVyLnNjcm9sbFRvKDMwMCwgMzAwKTsKKworICAgIHJvb3Quc2Nyb2xsTGVmdCA9IDA7
CisgICAgcm9vdC5zY3JvbGxUb3AgPSAwOworICAgIHJvb3Quc2Nyb2xsVG8oMCwgMCk7Cit9CisK
K2Z1bmN0aW9uIHN0YXJ0VGVzdCgpIHsKKyAgICBvdmVyc2Nyb2xsRGF0YXMuZm9yRWFjaCgoW292
ZXJzY3JvbGxYLCBvdmVyc2Nyb2xsWSwgcHJvcGFnYXRlWCwgcHJvcGFnYXRlWV0pID0+IHsKKyAg
ICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAgIHJlc2V0VGVzdCgpOworICAg
ICAgICAgICAgc2Nyb2xsZXIuc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWCA9IG92ZXJzY3JvbGxY
OworICAgICAgICAgICAgc2Nyb2xsZXIuc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWSA9IG92ZXJz
Y3JvbGxZOworICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aDsKKworICAgICAg
ICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAgICAgICAgICB2YXIg
eSA9IHNjcm9sbGVyLmNsaWVudEhlaWdodCAvIDI7CisgICAgICAgICAgICB2YXIgZGVsdGEgPSBn
ZXREZWx0YXMoInJpZ2h0Iik7CisgICAgICAgICAgICByZXR1cm4gbW91c2VXaGVlbFNjcm9sbEFu
ZFdhaXQoeCwgeSwgZGVsdGEuWCwgZGVsdGEuWSwgZGVsdGEuWCwgZGVsdGEuWSkudGhlbigoKSA9
PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbExlZnQgPiAwLCBw
cm9wYWdhdGVYLCAnQ29udGludWUgdXAgdGhlIGhvcml6b250YWwgc2Nyb2xsIGNoYWluaW5nJyk7
CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSwgJ0VsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwg
dGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6ICcgKyBvdmVyc2Nyb2xsWCArICcgJyArIG92
ZXJzY3JvbGxZICsgJy4nKTsKKworICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgICAg
ICAgICAgcmVzZXRUZXN0KCk7CisgICAgICAgICAgICBzY3JvbGxlci5zdHlsZS5vdmVyc2Nyb2xs
QmVoYXZpb3JYID0gb3ZlcnNjcm9sbFg7CisgICAgICAgICAgICBzY3JvbGxlci5zdHlsZS5vdmVy
c2Nyb2xsQmVoYXZpb3JZID0gb3ZlcnNjcm9sbFk7CisKKyAgICAgICAgICAgIHZhciB4ID0gc2Ny
b2xsZXIuY2xpZW50V2lkdGggLyAyOworICAgICAgICAgICAgdmFyIHkgPSBzY3JvbGxlci5jbGll
bnRIZWlnaHQgLyAyOworICAgICAgICAgICAgdmFyIGRlbHRhID0gZ2V0RGVsdGFzKCJkb3duIik7
CisgICAgICAgICAgICByZXR1cm4gbW91c2VXaGVlbFNjcm9sbEFuZFdhaXQoeCwgeSwgZGVsdGEu
WCwgZGVsdGEuWSwgZGVsdGEuWCwgZGVsdGEuWSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAg
ICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbFRvcCA+IDAsIHByb3BhZ2F0ZVksICdDb250aW51
ZSB1cCB0aGUgdmVydGljYWwgc2Nyb2xsIGNoYWluaW5nJyk7CisgICAgICAgICAgICB9KTsKKyAg
ICAgICAgfSwgJ0VsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJl
aGF2aW9yOiAnICsgb3ZlcnNjcm9sbFggKyAnICcgKyBvdmVyc2Nyb2xsWSArICcuJyk7CisgICAg
fSk7Cit9CisKK2FkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBzdGFydFRlc3QpOworPC9zY3JpcHQ+
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9s
bC1iZWhhdmlvci1pZnJhbWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkwMGEwYjdkOTA1Yjg3
YzFkYjc2MjY5NGZkMDA2MzhmMTk3Njk1MzcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMSBAQAorCisKK1BBU1MgSWZyYW1lIGhvcml6b250YWwg
c2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIGF1dG8uCitQQVNTIElm
cmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8g
YXV0by4KK1BBU1MgSWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xs
LWJlaGF2aW9yOiBjb250YWluIGF1dG8uCitQQVNTIElmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVz
dCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gYXV0by4KK1BBU1MgSWZyYW1lIGhv
cml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIGF1dG8u
CitQQVNTIElmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZp
b3I6IG5vbmUgYXV0by4KK1BBU1MgSWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBv
dmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIGNvbnRhaW4uCitQQVNTIElmcmFtZSB2ZXJ0aWNhbCBz
Y3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gY29udGFpbi4KK1BBU1Mg
SWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBj
b250YWluIGNvbnRhaW4uCitQQVNTIElmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92
ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gY29udGFpbi4KK1BBU1MgSWZyYW1lIGhvcml6b250
YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIGNvbnRhaW4uCitQ
QVNTIElmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6
IG5vbmUgY29udGFpbi4KK1BBU1MgSWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBv
dmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIG5vbmUuCitQQVNTIElmcmFtZSB2ZXJ0aWNhbCBzY3Jv
bGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gbm9uZS4KK1BBU1MgSWZyYW1l
IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWlu
IG5vbmUuCitQQVNTIElmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwt
YmVoYXZpb3I6IGNvbnRhaW4gbm9uZS4KK1BBU1MgSWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRl
c3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIG5vbmUuCitQQVNTIElmcmFtZSB2ZXJ0
aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgbm9uZS4KKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNj
cm9sbC1iZWhhdmlvci1pZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5
bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTY4
ZTVkYWVmOWEzYjFkMDg1NmFiNzNhZmYxNmUyY2FjNTJiOGM5NQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZp
b3ItaWZyYW1lLmh0bWwKQEAgLTAsMCArMSw4NiBAQAorPCFkb2N0eXBlIGh0bWw+CisKKzxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL292ZXJzY3JvbGwtYmVoYXZpb3Itc3VwcG9ydC5qcyI+PC9z
Y3JpcHQ+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9j
c3Mtb3ZlcnNjcm9sbC1iZWhhdmlvciI+Cis8c3R5bGU+CisgICAgLnNjcm9sbGluZyB7CisgICAg
ICAgIG92ZXJmbG93OiBzY3JvbGw7CisgICAgfQorICAgIC5zY3JvbGxDb250ZW50IHsKKyAgICAg
ICAgd2lkdGg6IDMwMHB4OworICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICBiYWNrZ3Jv
dW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZWQsIGJsdWUpOworICAgIH0KKyAgICAjcm9v
dCB7CisgICAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgICAgaGVpZ2h0OiAyMDBweDsKKyAgICB9
CisgICAgI3Njcm9sbGVyIHsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBoZWlnaHQ6
IDEwMHB4OworICAgICAgICBvdmVyc2Nyb2xsLWJlaGF2aW9yLXk6IGF1dG87CisgICAgfQorPC9z
dHlsZT4KKzxkaXYgaWQ9J3Jvb3QnIGNsYXNzPSJzY3JvbGxpbmciPgorICAgIDxpZnJhbWUgaWQ9
J3Njcm9sbGVyJyBzcmNkb2M9IjxodG1sPjxkaXYgc3R5bGU9J3dpZHRoOiAzMDBweDsgaGVpZ2h0
OiAzMDBweDsnPjwvZGl2PjwvaHRtbD4KKyAgICAgICAgIj48L2lmcmFtZT4KKyAgICA8ZGl2IGNs
YXNzPSJzY3JvbGxDb250ZW50Ij48L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0PgorICAgIGNvbnN0
IHJvb3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncm9vdCcpOworICAgIGNvbnN0IHNjcm9s
bGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Njcm9sbGVyJyk7CisgICAgdmFyIG92ZXJz
Y3JvbGxEYXRhcyA9IFtbImF1dG8iLCAiYXV0byIsIHRydWUsIHRydWVdLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFsiY29udGFpbiIsICJhdXRvIiwgZmFsc2UsIHRydWVdLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFsibm9uZSIsICJhdXRvIiwgZmFsc2UsIHRydWVdLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFsiYXV0byIsICJjb250YWluIiwgdHJ1ZSwgZmFsc2Vd
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiY29udGFpbiIsICJjb250YWluIiwgZmFs
c2UsIGZhbHNlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIm5vbmUiLCAiY29udGFp
biIsIGZhbHNlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJhdXRvIiwg
Im5vbmUiLCB0cnVlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJjb250
YWluIiwgIm5vbmUiLCBmYWxzZSwgZmFsc2VdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFsibm9uZSIsICJub25lIiwgZmFsc2UsIGZhbHNlXV07CisgICAgZnVuY3Rpb24gcmVzZXRUZXN0
KCkgeworICAgICAgICAvLyBUcnkgdmFyaW91cyBtZXRob2RzIHRvIGVuc3VyZSB0aGUgZWxlbWVu
dCBwb3NpdGlvbiBpcyByZXNldCBpbW1lZGlhdGVseS4KKyAgICAgICAgc2Nyb2xsZXIuY29udGVu
dFdpbmRvdy5zY3JvbGxYID0gMzAwOworICAgICAgICBzY3JvbGxlci5jb250ZW50V2luZG93LnNj
cm9sbFkgPSAzMDA7CisgICAgICAgIHNjcm9sbGVyLmNvbnRlbnRXaW5kb3cuc2Nyb2xsVG8oMzAw
LCAzMDApOworICAgICAgICByb290LnNjcm9sbExlZnQgPSAwOworICAgICAgICByb290LnNjcm9s
bFRvcCA9IDA7CisgICAgICAgIHJvb3Quc2Nyb2xsVG8oMCwgMCk7CisgICAgfQorCisgICAgZnVu
Y3Rpb24gb3ZlcnNjcm9sbEJlaGF2aW9yVGVzdCgpIHsKKyAgICAgICAgb3ZlcnNjcm9sbERhdGFz
LmZvckVhY2goKFtvdmVyc2Nyb2xsWCwgb3ZlcnNjcm9sbFksIHByb3BhZ2F0ZVgsIHByb3BhZ2F0
ZVldKSA9PiB7CisgICAgICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgICAgICAgICAg
ICAgIHJlc2V0VGVzdCgpOworICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSBzY3JvbGxlci5j
b250ZW50V2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJodG1sIilbMF07Cisg
ICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclggPSBvdmVyc2Ny
b2xsWDsKKyAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWSA9
IG92ZXJzY3JvbGxZOworICAgICAgICAgICAgICAgIHZhciB4ID0gc2Nyb2xsZXIuY2xpZW50V2lk
dGggLyAyOworICAgICAgICAgICAgICAgIHZhciB5ID0gc2Nyb2xsZXIuY2xpZW50SGVpZ2h0IC8g
MjsKKyAgICAgICAgICAgICAgICB2YXIgZGVsdGEgPSBnZXREZWx0YXMoInJpZ2h0Iik7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIG1vdXNlV2hlZWxTY3JvbGxBbmRXYWl0KHgsIHksIGRlbHRhLlgs
IGRlbHRhLlksIGRlbHRhLlgsIGRlbHRhLlkpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAg
ICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsTGVmdCA+IDAsIHByb3BhZ2F0ZVgsICdDb250
aW51ZSB1cCB0aGUgaG9yaXpvbnRhbCBzY3JvbGwgY2hhaW5pbmcnKTsKKyAgICAgICAgICAgICAg
ICB9KTsKKyAgICAgICAgICAgIH0sICdJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRo
IG92ZXJzY3JvbGwtYmVoYXZpb3I6ICcgKyBvdmVyc2Nyb2xsWCArICcgJyArIG92ZXJzY3JvbGxZ
ICsgJy4nKTsKKworICAgICAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAg
ICAgICByZXNldFRlc3QoKTsKKyAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gc2Nyb2xsZXIu
Y29udGVudFdpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaHRtbCIpWzBdOwor
ICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JYID0gb3ZlcnNj
cm9sbFg7CisgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclkg
PSBvdmVyc2Nyb2xsWTsKKworICAgICAgICAgICAgICAgIHZhciB4ID0gc2Nyb2xsZXIuY2xpZW50
V2lkdGggLyAyOworICAgICAgICAgICAgICAgIHZhciB5ID0gc2Nyb2xsZXIuY2xpZW50SGVpZ2h0
IC8gMjsKKyAgICAgICAgICAgICAgICB2YXIgZGVsdGEgPSBnZXREZWx0YXMoImRvd24iKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gbW91c2VXaGVlbFNjcm9sbEFuZFdhaXQoeCwgeSwgZGVsdGEu
WCwgZGVsdGEuWSwgZGVsdGEuWCwgZGVsdGEuWSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAg
ICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxUb3AgPiAwLCBwcm9wYWdhdGVZLCAnQ29u
dGludWUgdXAgdGhlIHZlcnRpY2FsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAgICAgICAgICAg
IH0pOworICAgICAgICAgICAgfSwgJ0lmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92
ZXJzY3JvbGwtYmVoYXZpb3I6ICcgKyBvdmVyc2Nyb2xsWCArICcgJyArIG92ZXJzY3JvbGxZICsg
Jy4nKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgc2Nyb2xsZXIuYWRkRXZlbnRMaXN0ZW5l
cigibG9hZCIsIG92ZXJzY3JvbGxCZWhhdmlvclRlc3QpOworPC9zY3JpcHQ+ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcv
c3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Ny
b2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5mMzk1YjY0ODhkMDg3MGI5NTYxYzAyODY3OWQ3ZTE1YTQ3ZmNlNmU5Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1i
ZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBA
CisKK1BBU1MgVW5zY3JvbGxhYmxlIGVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRo
IG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuCitQQVNTIFVuc2Nyb2xsYWJsZSBlbGVtZW50IHZl
cnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4KKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9s
bC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9z
Y3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxl
bWVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMxZTU3MzhhNWQ3YTc5NjljYWU2ZWNhY2JiM2Y4ZTljMmIy
MDczZWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5j
LXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWwKQEAg
LTAsMCArMSw2NyBAQAorPCFkb2N0eXBlIGh0bWw+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL292ZXJzY3JvbGwtYmVoYXZpb3Itc3VwcG9ydC5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9
ImhlbHAiIGhyZWY9Imh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3Mtb3ZlcnNjcm9sbC1iZWhh
dmlvciI+Cis8c3R5bGU+CisgICAgLnNjcm9sbGluZyB7CisgICAgICAgIG92ZXJmbG93OiBzY3Jv
bGw7CisgICAgfQorICAgIC5zY3JvbGxDb250ZW50IHsKKyAgICAgICAgd2lkdGg6IDMwMHB4Owor
ICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgIH0KKyAgICAjcm9vdCB7CisgICAgICAgIHdpZHRo
OiAyMDBweDsKKyAgICAgICAgaGVpZ2h0OiAyMDBweDsKKyAgICB9CisgICAgI3Njcm9sbGVyIHsK
KyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgICBv
dmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lOworICAgICAgICBvdmVyZmxvdzogdmlzaWJsZTsKKyAg
ICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmVkLCBibHVlKTsKKyAg
ICB9Cis8L3N0eWxlPgorPGRpdiBpZD0icm9vdCIgY2xhc3M9InNjcm9sbGluZyI+CisgICAgPGRp
diBpZD0ic2Nyb2xsZXIiPgorICAgICAgICA8ZGl2IGNsYXNzPSJzY3JvbGxDb250ZW50Ij48L2Rp
dj4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJzY3JvbGxDb250ZW50Ij48L2Rpdj4KKzwv
ZGl2PgorCis8c2NyaXB0PgorY29uc3Qgcm9vdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdy
b290Jyk7Citjb25zdCBzY3JvbGxlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY3JvbGxl
cicpOworCitmdW5jdGlvbiByZXNldFRlc3QoKSB7CisgICAgcm9vdC5zY3JvbGxMZWZ0ID0gMDsK
KyAgICByb290LnNjcm9sbFRvcCA9IDA7CisgICAgcm9vdC5zY3JvbGxUbygwLCAwKTsKK30KKwor
ZnVuY3Rpb24gc3RhcnRUZXN0KCkgeworICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAg
ICAgICAgICAgcmVzZXRUZXN0KCk7CisgICAgICAgICAgICB2YXIgeCA9IHNjcm9sbGVyLmNsaWVu
dFdpZHRoIC8gMjsKKyAgICAgICAgICAgIHZhciB5ID0gc2Nyb2xsZXIuY2xpZW50SGVpZ2h0IC8g
MjsKKyAgICAgICAgICAgIHZhciBkZWx0YSA9IGdldERlbHRhcygicmlnaHQiKTsKKyAgICAgICAg
ICAgIHJldHVybiBtb3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCh4LCB5LCBkZWx0YS5YLCBkZWx0YS5Z
LCBkZWx0YS5YLCBkZWx0YS5ZKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRf
ZXF1YWxzKHJvb3Quc2Nyb2xsTGVmdCA+IDAsIHRydWUsICdDb250aW51ZSB1cCB0aGUgaG9yaXpv
bnRhbCBzY3JvbGwgY2hhaW5pbmcnKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9LCAnVW5z
Y3JvbGxhYmxlIGVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwt
YmVoYXZpb3I6IG5vbmUuJyk7CisKKyAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAg
ICAgICAgIHJlc2V0VGVzdCgpOworICAgICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRX
aWR0aCAvIDI7CisgICAgICAgICAgICB2YXIgeSA9IHNjcm9sbGVyLmNsaWVudEhlaWdodCAvIDI7
CisgICAgICAgICAgICB2YXIgZGVsdGEgPSBnZXREZWx0YXMoImRvd24iKTsKKyAgICAgICAgICAg
IHJldHVybiBtb3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCh4LCB5LCBkZWx0YS5YLCBkZWx0YS5ZLCBk
ZWx0YS5YLCBkZWx0YS5ZKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1
YWxzKHJvb3Quc2Nyb2xsVG9wID4gMCwgdHJ1ZSwgJ0NvbnRpbnVlIHVwIHRoZSB2ZXJ0aWNhbCBz
Y3JvbGwgY2hhaW5pbmcnKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9LCAnVW5zY3JvbGxh
YmxlIGVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9y
OiBub25lLicpOworfQorCithZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgc3RhcnRUZXN0KTsKKzwv
c2NyaXB0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3Jv
bGxhYmxlLWlmcmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9z
eW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjdmYTU5Y2NiYTc5YWVmZjMzZGE3MGU5M2Q0ODhhMDdlZWM5YzU2
OTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNj
cm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsNSBAQAorCisKK1BBU1MgVW5zY3JvbGxhYmxlIGlmcmFtZSBob3Jpem9udGFs
IHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4KK1BBU1MgVW5zY3Jv
bGxhYmxlIGlmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZp
b3I6IG5vbmUuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMt
c2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11
bnNjcm9sbGFibGUtaWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTI0MjVhZmM2MzdkZjUxZTQ0MTU0
MjZhYjQ2N2M2MTRlMzhlZjYxNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
c2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlm
cmFtZS5odG1sCkBAIC0wLDAgKzEsNjYgQEAKKzwhZG9jdHlwZSBodG1sPgorCis8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9InJlc291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXN1cHBvcnQuanMiPjwvc2NyaXB0
PgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLW92
ZXJzY3JvbGwtYmVoYXZpb3IiPgorPHN0eWxlPgorICAgIC5zY3JvbGxpbmcgeworICAgICAgICBv
dmVyZmxvdzogc2Nyb2xsOworICAgIH0KKyAgICAuc2Nyb2xsQ29udGVudCB7CisgICAgICAgIHdp
ZHRoOiAzMDBweDsKKyAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICB9CisgICAgI3Jvb3Qgewor
ICAgICAgICB3aWR0aDogMjAwcHg7CisgICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgfQorICAg
ICNzY3JvbGxlciB7CisgICAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgICAgaGVpZ2h0OiAyMDBw
eDsKKyAgICAgICAgb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZTsKKyAgICAgICAgb3ZlcmZsb3c6
IHZpc2libGU7CisgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJl
ZCwgYmx1ZSk7CisgICAgfQorPC9zdHlsZT4KKzxkaXYgaWQ9J3Jvb3QnIGNsYXNzPSJzY3JvbGxp
bmciPgorICAgIDxpZnJhbWUgaWQ9J3Njcm9sbGVyJyBzcmNkb2M9IjxodG1sIHN0eWxlPSdvdmVy
c2Nyb2xsLWJlaGF2aW9yOiBub25lOyc+PGRpdiBzdHlsZT0nd2lkdGg6IDEwMHB4OyBoZWlnaHQ6
IDEwMHB4Oyc+PC9kaXY+PC9odG1sPgorICAgICAgICAiPjwvaWZyYW1lPgorICAgIDxkaXYgY2xh
c3M9InNjcm9sbENvbnRlbnQiPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+Citjb25zdCByb290
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jvb3QnKTsKK2NvbnN0IHNjcm9sbGVyID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Njcm9sbGVyJyk7CisKK2Z1bmN0aW9uIHJlc2V0VGVzdCgp
IHsKKyAgICByb290LnNjcm9sbExlZnQgPSAwOworICAgIHJvb3Quc2Nyb2xsVG9wID0gMDsKKyAg
ICByb290LnNjcm9sbFRvKDAsIDApOworfQorCitmdW5jdGlvbiBzdGFydFRlc3QoKSB7CisgICAg
ICAgIHByb21pc2VfdGVzdCgoKSA9PiB7CisgICAgICAgICAgICByZXNldFRlc3QoKTsKKyAgICAg
ICAgICAgIHZhciB4ID0gc2Nyb2xsZXIuY2xpZW50V2lkdGggLyAyOworICAgICAgICAgICAgdmFy
IHkgPSBzY3JvbGxlci5jbGllbnRIZWlnaHQgLyAyOworICAgICAgICAgICAgdmFyIGRlbHRhID0g
Z2V0RGVsdGFzKCJyaWdodCIpOworICAgICAgICAgICAgcmV0dXJuIG1vdXNlV2hlZWxTY3JvbGxB
bmRXYWl0KHgsIHksIGRlbHRhLlgsIGRlbHRhLlksIGRlbHRhLlgsIGRlbHRhLlkpLnRoZW4oKCkg
PT4geworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxMZWZ0ID4gMCwg
dHJ1ZSwgJ0NvbnRpbnVlIHVwIHRoZSBob3Jpem9udGFsIHNjcm9sbCBjaGFpbmluZycpOworICAg
ICAgICAgICAgfSk7CisgICAgICAgIH0sICdVbnNjcm9sbGFibGUgaWZyYW1lIGhvcml6b250YWwg
c2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLicpOworCisgICAgICAg
IHByb21pc2VfdGVzdCgoKSA9PiB7CisgICAgICAgICAgICByZXNldFRlc3QoKTsKKyAgICAgICAg
ICAgIHZhciB4ID0gc2Nyb2xsZXIuY2xpZW50V2lkdGggLyAyOworICAgICAgICAgICAgdmFyIHkg
PSBzY3JvbGxlci5jbGllbnRIZWlnaHQgLyAyOworICAgICAgICAgICAgdmFyIGRlbHRhID0gZ2V0
RGVsdGFzKCJkb3duIik7CisgICAgICAgICAgICByZXR1cm4gbW91c2VXaGVlbFNjcm9sbEFuZFdh
aXQoeCwgeSwgZGVsdGEuWCwgZGVsdGEuWSwgZGVsdGEuWCwgZGVsdGEuWSkudGhlbigoKSA9PiB7
CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbFRvcCA+IDAsIHRydWUs
ICdDb250aW51ZSB1cCB0aGUgdmVydGljYWwgc2Nyb2xsIGNoYWluaW5nJyk7CisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgfSwgJ1Vuc2Nyb2xsYWJsZSBpZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRl
c3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLicpOworfQorCithZGRFdmVudExpc3Rl
bmVyKCJsb2FkIiwgc3RhcnRUZXN0KTsKKzwvc2NyaXB0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRp
b25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggZTUz
ZDM0ZjVjY2EyMWM1NWZjY2RkMDVkMDFjNjkzOWQyOGMxNTRmMi4uMzQ5NmZiNDU0ZDdiNWRhMjU4
MTMwYmE5YmRhMDFlNmFkZjYzYzYwMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
aW9zL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RF
eHBlY3RhdGlvbnMKQEAgLTgxMSw2ICs4MTEsMTIgQEAgc3ZnL3RleHQvc2VsZWN0aW9uLWRvdWJs
ZWNsaWNrLnN2ZyBbIFNraXAgXQogc3ZnL3RleHQvc2VsZWN0aW9uLXRyaXBsZWNsaWNrLnN2ZyBb
IFNraXAgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXNoYWRvdy1w
YXJ0cy9pbnZhbGlkYXRpb24tcGFydC1wc2V1ZG8uaHRtbCBbIFNraXAgXQogCisjIE92ZXJzY3Jv
bGwtYmVoYXZpb3IgaXMgbm90IHN1cHBvcnRlZCBvbiBpT1MgeWV0OiBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNzg4CitmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9s
bC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQuaHRtbCBbIFNraXAgXQorZmFzdC9zY3JvbGxp
bmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUuaHRtbCBbIFNraXAgXQor
ZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFi
bGUtZWxlbWVudC5odG1sIFsgU2tpcCBdCitmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVy
c2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUuaHRtbCBbIFNraXAgXQorCiAjIElP
UyBkb2VzIG5vdCBpbXBsZW1lbnQgc2V0QXV0b21hdGljTGlua0RldGVjdGlvbkVuYWJsZWQKIGVk
aXRpbmcvaW5zZXJ0aW5nL3R5cGluZy1zcGFjZS10by10cmlnZ2VyLXNtYXJ0LWxpbmsuaHRtbCBb
IFNraXAgXQogZWRpdGluZy9pbnNlcnRpbmcvc21hcnQtbGluay13aGVuLWNhcmV0LWlzLW1vdmVk
LWJlZm9yZS1VUkwuaHRtbCBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdr
MS9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDY3YThlODMxNjJkYjRjYmQxNGFjYjZlNDIzMTI1YzI5
ZWI1MDA2MjkuLjA4ZWNlYzQ5NTRiY2I5NWE5YWM3OTQ4YjIzYmUwMjcxMGNkMDIyZWMgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucworKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTUwNCw2
ICs1MDQsMTAgQEAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXNjcm9s
bC1zbmFwL3Njcm9sbC10YXJnZXQtcGFkZGluZy0wMDEuaHQKIGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy1zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1zdG9wLWNoYW5nZS5o
dG1sIFsgRmFpbHVyZSBdCiBjc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1wYWRkaW5nLW1haW5mcmFt
ZS1wYWdpbmcuaHRtbCBbIEZhaWx1cmUgXQogCisjIExhY2sgb2Ygd2F5cyB0byBjb250cm9sIHRo
ZSBjcm9zcy1mcmFtZSBzY3JvbGwgY2hhaW5pbmcgaW4gV0sxLgorZmFzdC9zY3JvbGxpbmcvc3lu
Yy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUuaHRtbCBbIFNraXAgXQorZmFzdC9z
Y3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZy
YW1lLmh0bWwgWyBTa2lwIF0KKwogIyMjIEVORCBPRiAoMikgRmFpbHVyZXMgd2l0aG91dCBidWcg
cmVwb3J0cwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGVmNzViZDExZjYyZDE0
YTU2NjM0MGVlMjNjMWY5YTkzMGNjNjM2NDMuLjhkYjRlZWIzMWY1MzE5ZDgyYzE1NTY1YTViMTBh
MjVkYmUxMzM1MWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhw
ZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25z
CkBAIC02MzIsNiArNjMyLDEyIEBAIGZhc3QvZXZlbnRzL3doZWVsL3BsYXRmb3JtLXdoZWVsZXZl
bnQtcGFnaW5nLXktaW4tc2Nyb2xsaW5nLXBhZ2UuaHRtbCBbIFNraXAgXQogcG9pbnRlci1sb2Nr
LyBbIFNraXAgXQogaHR0cC90ZXN0cy9wb2ludGVyLWxvY2svIFsgU2tpcCBdCiAKKyMgT3ZlcnNj
cm9sbC1iZWhhdmlvciBpcyBub3Qgc3VwcG9ydGVkIG9uIFdpbmRvd3MKK2Zhc3Qvc2Nyb2xsaW5n
L3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC5odG1sIFsgU2tpcCBdCitm
YXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS5odG1s
IFsgU2tpcCBdCitmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9y
LXVuc2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWwgWyBTa2lwIF0KK2Zhc3Qvc2Nyb2xsaW5nL3N5bmMt
c2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sIFsgU2tp
cCBdCisKICMgRGF0YWxpc3QgaXMgdW5zdXBwb3J0ZWQgb24gV2luZG93cwogYWNjZXNzaWJpbGl0
eS9kYXRhbGlzdC5odG1sIFsgV29udEZpeCBdCiBmYXN0L2Zvcm1zL2RhdGFsaXN0IFsgV29udEZp
eCBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450298</attachid>
            <date>2022-01-28 17:51:10 -0800</date>
            <delta_ts>2022-01-28 21:09:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222968-20220128175109.patch</filename>
            <type>text/plain</type>
            <size>17482</size>
            <attacher name="Nikos Mouchtaris">nmouchtaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MzUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGJiNmQyZjJmYmNkN2I3
ODU1MzIxY2U1YjgwMWQ1YzJmYWNiMzhmNC4uMmFkOTAxNmM5ZmExMjhiYTlkODY4MWU2M2NjNGI5
MjcyZWY1YjgzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDIxLTEyLTAyICBOaWtv
bGFvcyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxl
bWVudCBDU1Mgb3ZlcnNjcm9sbC1iZWhhdmlvciBmb3Igc3luY2hyb25vdXMgc2Nyb2xsCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI5NjgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTcGxpdCB1cCBwYXRj
aCBieSBDYXRoaWUgQ2hlbiBhbmQgRnJlZGVyaWMgV2FuZy4gQWRkIGZ1bmN0aW9uIGZvciBibG9j
a2luZyBzY3JvbGwgY2hhaW5pbmcKKyAgICAgICAgYW5kIGZpbHRlcmluZyBzY3JvbGwgZGVsdGEg
ZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZXMgb2Ygb3ZlcnNjcm9sbCBiZWhhdmlvciBmb3IgYSBzY3Jv
bGxhYmxlCisgICAgICAgIGFyZWEuIFRoaXMgcGF0Y2ggaXMgZm9yIHN5bmNocm9ub3VzIHNjcm9s
bGluZyBvbmx5LgorCisgICAgICAgIFRlc3RzOiBmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1v
dmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9zY3Jv
bGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUuaHRtbAorICAgICAg
ICAgICAgICAgZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11
bnNjcm9sbGFibGUtZWxlbWVudC5odG1sCisgICAgICAgICAgICAgICBmYXN0L3Njcm9sbGluZy9z
eW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUuaHRtbAor
CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hv
dWxkQmxvY2tTY3JvbGxDaGFpbmluZ1dpdGhTY3JvbGxhYmxlQXJlYSk6CisgICAgICAgIChXZWJD
b3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnRJbnRlcm5hbCk6CisgICAgICAgIChX
ZWJDb3JlOjpkaWRTY3JvbGxJblNjcm9sbGFibGVBcmVhKToKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudEluQXBwcm9wcmlhdGVFbmNsb3NpbmdCb3gpOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpzY3JvbGxhYmxlQXJlYUNhbkhhbmRsZUV2
ZW50KToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5oOgorICAgICAgICAqIHBhZ2UvRnJh
bWVWaWV3Lmg6CisgICAgICAgICogcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6ZmluZEVuY2xvc2luZ1Njcm9sbGFibGVDb250YWluZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmg6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsaW5n
RWZmZWN0c0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0
b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck1hYzo6c2hvdWxkRm9y
d2FyZFdoZWVsRXZlbnRzVG9QYXJlbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
QW5pbWF0b3JNYWM6OmFsbG93c1ZlcnRpY2FsU3RyZXRjaGluZyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxBbmltYXRvck1hYzo6YWxsb3dzSG9yaXpvbnRhbFN0cmV0Y2hpbmcgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjp3aGVlbERl
bHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxh
eWVyU2Nyb2xsYWJsZUFyZWEuaDoKKwogMjAyMS0xMS0zMCAgU2ltb24gRnJhc2VyICA8c2ltb24u
ZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBQYXNzIHRoZSB0aW1lc3RhbXAgZm9yIHNjcm9s
bGluZyB0aHJlYWQgYW5pbWF0aW9ucyB0aHJvdWdoIGFsbCB0aGUgc2VydmljZVNjcm9sbEFuaW1h
dGlvbigpIGNhbGxzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggZWMzZTQy
MGU3OWJiMWI1ZGNmNzAxMzU1ZDFhY2U2OWJmODg2NDE1MS4uZTc0YTVjYTI5YjNiMjZkNDRkMjNi
Y2JiZWUwY2ZlMzA2MzQ3MTNjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApA
QCAtMzAyNiwxMSArMzAyNiwxNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVu
dEludGVybmFsKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgZXZlbnQsIE9wdAogICAgIGlmIChh
bGxvd1Njcm9sbGluZykKICAgICAgICAgYWxsb3dTY3JvbGxpbmcgPSBtX2ZyYW1lLnBhZ2UoKS0+
c2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyKCkubGF0Y2hpbmdBbGxvd3NTY3JvbGxpbmdJbkZyYW1l
KG1fZnJhbWUsIHNjcm9sbGFibGVBcmVhKTsKICNlbmRpZgorICAgIGF1dG8gYWRqdXN0ZWRXaGVl
bEV2ZW50ID0gZXZlbnQ7CisgICAgYXV0byBmaWx0ZXJlZERlbHRhID0gYWRqdXN0ZWRXaGVlbEV2
ZW50LmRlbHRhKCk7CisgICAgZmlsdGVyZWREZWx0YSA9IHZpZXctPmRlbHRhRm9yUHJvcGFnYXRp
b24oZmlsdGVyZWREZWx0YSk7CisgICAgaWYgKHZpZXctPnNob3VsZEJsb2NrU2Nyb2xsUHJvcGFn
YXRpb24oZmlsdGVyZWREZWx0YSkpCisgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgaWYgKGFs
bG93U2Nyb2xsaW5nKSB7CiAgICAgICAgIC8vIEZJWE1FOiBwcm9jZXNzV2hlZWxFdmVudEZvclNj
cm9sbGluZygpIGlzIG9ubHkgY2FsbGVkIGZvciBGcmFtZVZpZXcgc2Nyb2xsaW5nLCBub3Qgb3Zl
cmZsb3cgc2Nyb2xsaW5nLCB3aGljaCBpcyBjb25mdXNpbmcuCi0gICAgICAgIGhhbmRsZWRFdmVu
dCA9IHByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKGV2ZW50LCBzY3JvbGxhYmxlQXJlYSwg
aGFuZGxpbmcpOwotICAgICAgICBwcm9jZXNzV2hlZWxFdmVudEZvclNjcm9sbFNuYXAoZXZlbnQs
IHNjcm9sbGFibGVBcmVhKTsKKyAgICAgICAgYWRqdXN0ZWRXaGVlbEV2ZW50ID0gYWRqdXN0ZWRX
aGVlbEV2ZW50LmNvcHlXaXRoRGVsdGFBbmRWZWxvY2l0eShmaWx0ZXJlZERlbHRhLCBhZGp1c3Rl
ZFdoZWVsRXZlbnQuc2Nyb2xsaW5nVmVsb2NpdHkoKSk7CisgICAgICAgIGhhbmRsZWRFdmVudCA9
IHByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKGFkanVzdGVkV2hlZWxFdmVudCwgc2Nyb2xs
YWJsZUFyZWEsIGhhbmRsaW5nKTsKKyAgICAgICAgcHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxT
bmFwKGFkanVzdGVkV2hlZWxFdmVudCwgc2Nyb2xsYWJsZUFyZWEpOwogICAgIH0KIAogICAgIHJl
dHVybiBoYW5kbGVkRXZlbnQ7CkBAIC0zMDQ5LDE4ICszMDU1LDIwIEBAIHN0YXRpYyB2b2lkIGhh
bmRsZVdoZWVsRXZlbnRQaGFzZUluU2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJsZUFyZWEmIHNjcm9s
bGFibGVBcmVhCiAKIHN0YXRpYyBib29sIGRpZFNjcm9sbEluU2Nyb2xsYWJsZUFyZWEoU2Nyb2xs
YWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhLCBjb25zdCBXaGVlbEV2ZW50JiB3aGVlbEV2ZW50KQog
eworICAgIGF1dG8gZmlsdGVyZWREZWx0YSA9IEZsb2F0U2l6ZSh3aGVlbEV2ZW50LmRlbHRhWCgp
LCB3aGVlbEV2ZW50LmRlbHRhWSgpKTsKKyAgICBmaWx0ZXJlZERlbHRhID0gc2Nyb2xsYWJsZUFy
ZWEuZGVsdGFGb3JQcm9wYWdhdGlvbihmaWx0ZXJlZERlbHRhKTsKICAgICBTY3JvbGxHcmFudWxh
cml0eSBzY3JvbGxHcmFudWxhcml0eSA9IHdoZWVsR3JhbnVsYXJpdHlUb1Njcm9sbEdyYW51bGFy
aXR5KHdoZWVsRXZlbnQuZGVsdGFNb2RlKCkpOwogICAgIGJvb2wgZGlkSGFuZGxlV2hlZWxFdmVu
dCA9IGZhbHNlOwotICAgIGlmIChmbG9hdCBhYnNvbHV0ZURlbHRhID0gc3RkOjphYnMod2hlZWxF
dmVudC5kZWx0YVgoKSkpCi0gICAgICAgIGRpZEhhbmRsZVdoZWVsRXZlbnQgfD0gc2Nyb2xsYWJs
ZUFyZWEuc2Nyb2xsKHdoZWVsRXZlbnQuZGVsdGFYKCkgPiAwID8gU2Nyb2xsUmlnaHQgOiBTY3Jv
bGxMZWZ0LCBzY3JvbGxHcmFudWxhcml0eSwgYWJzb2x1dGVEZWx0YSk7CisgICAgaWYgKGZsb2F0
IGFic29sdXRlRGVsdGEgPSBzdGQ6OmFicyhmaWx0ZXJlZERlbHRhLndpZHRoKCkpKQorICAgICAg
ICBkaWRIYW5kbGVXaGVlbEV2ZW50IHw9IHNjcm9sbGFibGVBcmVhLnNjcm9sbChmaWx0ZXJlZERl
bHRhLndpZHRoKCkgPiAwID8gU2Nyb2xsUmlnaHQgOiBTY3JvbGxMZWZ0LCBzY3JvbGxHcmFudWxh
cml0eSwgYWJzb2x1dGVEZWx0YSk7CiAKLSAgICBpZiAoZmxvYXQgYWJzb2x1dGVEZWx0YSA9IHN0
ZDo6YWJzKHdoZWVsRXZlbnQuZGVsdGFZKCkpKQotICAgICAgICBkaWRIYW5kbGVXaGVlbEV2ZW50
IHw9IHNjcm9sbGFibGVBcmVhLnNjcm9sbCh3aGVlbEV2ZW50LmRlbHRhWSgpID4gMCA/IFNjcm9s
bERvd24gOiBTY3JvbGxVcCwgc2Nyb2xsR3JhbnVsYXJpdHksIGFic29sdXRlRGVsdGEpOworICAg
IGlmIChmbG9hdCBhYnNvbHV0ZURlbHRhID0gc3RkOjphYnMoZmlsdGVyZWREZWx0YS5oZWlnaHQo
KSkpCisgICAgICAgIGRpZEhhbmRsZVdoZWVsRXZlbnQgfD0gc2Nyb2xsYWJsZUFyZWEuc2Nyb2xs
KGZpbHRlcmVkRGVsdGEuaGVpZ2h0KCkgPiAwID8gU2Nyb2xsRG93biA6IFNjcm9sbFVwLCBzY3Jv
bGxHcmFudWxhcml0eSwgYWJzb2x1dGVEZWx0YSk7CiAKICAgICByZXR1cm4gZGlkSGFuZGxlV2hl
ZWxFdmVudDsKIH0KIAotYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnRJbkFwcHJv
cHJpYXRlRW5jbG9zaW5nQm94KE5vZGUqIHN0YXJ0Tm9kZSwgY29uc3QgV2hlZWxFdmVudCYgd2hl
ZWxFdmVudCwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJlZFBsYXRmb3JtRGVsdGEsIGNvbnN0IEZs
b2F0U2l6ZSYgZmlsdGVyZWRWZWxvY2l0eSwgT3B0aW9uU2V0PEV2ZW50SGFuZGxpbmc+IGV2ZW50
SGFuZGxpbmcpCitib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudEluQXBwcm9wcmlh
dGVFbmNsb3NpbmdCb3goTm9kZSogc3RhcnROb2RlLCBjb25zdCBXaGVlbEV2ZW50JiB3aGVlbEV2
ZW50LCBGbG9hdFNpemUmIGZpbHRlcmVkUGxhdGZvcm1EZWx0YSwgY29uc3QgRmxvYXRTaXplJiBm
aWx0ZXJlZFZlbG9jaXR5LCBPcHRpb25TZXQ8RXZlbnRIYW5kbGluZz4gZXZlbnRIYW5kbGluZykK
IHsKICAgICBib29sIHNob3VsZEhhbmRsZUV2ZW50ID0gd2hlZWxFdmVudC5kZWx0YVgoKSB8fCB3
aGVlbEV2ZW50LmRlbHRhWSgpOwogI2lmIEVOQUJMRShXSEVFTF9FVkVOVF9MQVRDSElORykKQEAg
LTMwODMsOCArMzA5MSwxOSBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudElu
QXBwcm9wcmlhdGVFbmNsb3NpbmdCb3goTm9kZSogc3RhcnROb2RlLCBjbwogICAgICAgICByZXR1
cm4gZGlkU2Nyb2xsSW5TY3JvbGxhYmxlQXJlYShkb3duY2FzdDxSZW5kZXJMaXN0Qm94Pihpbml0
aWFsRW5jbG9zaW5nQm94KSwgd2hlZWxFdmVudCk7CiAKICAgICBSZW5kZXJCb3gqIGN1cnJlbnRF
bmNsb3NpbmdCb3ggPSAmaW5pdGlhbEVuY2xvc2luZ0JveDsKKyNpZiBQTEFURk9STShNQUMpCisg
ICAgYXV0byBiaWFzZWREZWx0YSA9IFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjp3aGVlbERl
bHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbChGbG9hdFNpemUod2hlZWxFdmVudC5kZWx0YVgoKSwg
d2hlZWxFdmVudC5kZWx0YVkoKSkpOworI2Vsc2UKKyAgICBhdXRvIGJpYXNlZERlbHRhID0gd2hl
ZWxFdmVudC5kZWx0YSgpOworI2VuZGlmCiAgICAgd2hpbGUgKGN1cnJlbnRFbmNsb3NpbmdCb3gp
IHsKICAgICAgICAgaWYgKGF1dG8qIGJveFNjcm9sbGFibGVBcmVhID0gY3VycmVudEVuY2xvc2lu
Z0JveC0+bGF5ZXIoKSA/IGN1cnJlbnRFbmNsb3NpbmdCb3gtPmxheWVyKCktPnNjcm9sbGFibGVB
cmVhKCkgOiBudWxscHRyKSB7CisgICAgICAgICAgICBiaWFzZWREZWx0YSA9IGJveFNjcm9sbGFi
bGVBcmVhLT5kZWx0YUZvclByb3BhZ2F0aW9uKGJpYXNlZERlbHRhKTsKKyAgICAgICAgICAgIGlm
IChib3hTY3JvbGxhYmxlQXJlYSAmJiBib3hTY3JvbGxhYmxlQXJlYS0+c2hvdWxkQmxvY2tTY3Jv
bGxQcm9wYWdhdGlvbihiaWFzZWREZWx0YSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoYm94U2Ny
b2xsYWJsZUFyZWEtPmhhc0hvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSAmJiAhZmlsdGVy
ZWRQbGF0Zm9ybURlbHRhLmhlaWdodCgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBhdXRvIHBsYXRmb3JtRXZlbnQgPSB3aGVlbEV2ZW50LnVuZGVybHlpbmdQbGF0Zm9ybUV2
ZW50KCk7CiAgICAgICAgICAgICBib29sIHNjcm9sbGluZ1dhc0hhbmRsZWQ7CiAgICAgICAgICAg
ICBpZiAocGxhdGZvcm1FdmVudCkgewpAQCAtMzA5NSw2ICszMTE0LDcgQEAgYm9vbCBFdmVudEhh
bmRsZXI6OmhhbmRsZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94KE5vZGUqIHN0
YXJ0Tm9kZSwgY28KIAogICAgICAgICAgICAgaWYgKHNjcm9sbGluZ1dhc0hhbmRsZWQpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAKICAgICAgICAgfQogCiAgICAg
ICAgIGN1cnJlbnRFbmNsb3NpbmdCb3ggPSBjdXJyZW50RW5jbG9zaW5nQm94LT5jb250YWluaW5n
QmxvY2soKTsKQEAgLTMxMDcsNyArMzEyNyw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVX
aGVlbEV2ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2luZ0JveChOb2RlKiBzdGFydE5vZGUsIGNvCiBi
b29sIEV2ZW50SGFuZGxlcjo6c2Nyb2xsYWJsZUFyZWFDYW5IYW5kbGVFdmVudChjb25zdCBQbGF0
Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJl
YSkKIHsKICNpZiBQTEFURk9STShNQUMpCi0gICAgYXV0byBiaWFzZWREZWx0YSA9IFNjcm9sbGlu
Z0VmZmVjdHNDb250cm9sbGVyOjp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbCh3aGVl
bEV2ZW50KTsKKyAgICBhdXRvIGJpYXNlZERlbHRhID0gU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xs
ZXI6OndoZWVsRGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRpY2FsKHdoZWVsRXZlbnQuZGVsdGEoKSk7
CiAjZWxzZQogICAgIGF1dG8gYmlhc2VkRGVsdGEgPSB3aGVlbEV2ZW50LmRlbHRhKCk7CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCmluZGV4IGVhYzFkNWYzNDAwODZjMzYzNmJm
ZjYxMDk2NTFkZWM5ZjRlYjMwZmUuLjc4N2Q1M2QxOTM3Y2M1N2E4MWM4ZTFjMThlZDNhZWE5NDMw
YjExODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaApAQCAtNDc2LDcgKzQ3Niw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBwcm9jZXNzV2hlZWxFdmVudEZvclNjcm9sbFNuYXAoY29uc3Qg
UGxhdGZvcm1XaGVlbEV2ZW50JiwgY29uc3QgV2Vha1B0cjxTY3JvbGxhYmxlQXJlYT4mKTsKICAg
ICBib29sIGNvbXBsZXRlV2lkZ2V0V2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQm
LCBjb25zdCBXZWFrUHRyPFdpZGdldD4mLCBjb25zdCBXZWFrUHRyPFNjcm9sbGFibGVBcmVhPiYp
OwogCi0gICAgYm9vbCBoYW5kbGVXaGVlbEV2ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2luZ0JveChO
b2RlKiBzdGFydE5vZGUsIGNvbnN0IFdoZWVsRXZlbnQmLCBjb25zdCBGbG9hdFNpemUmIGZpbHRl
cmVkUGxhdGZvcm1EZWx0YSwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJlZFZlbG9jaXR5LCBPcHRp
b25TZXQ8RXZlbnRIYW5kbGluZz4pOworICAgIGJvb2wgaGFuZGxlV2hlZWxFdmVudEluQXBwcm9w
cmlhdGVFbmNsb3NpbmdCb3goTm9kZSogc3RhcnROb2RlLCBjb25zdCBXaGVlbEV2ZW50JiwgRmxv
YXRTaXplJiBmaWx0ZXJlZFBsYXRmb3JtRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyZWRW
ZWxvY2l0eSwgT3B0aW9uU2V0PEV2ZW50SGFuZGxpbmc+KTsKIAogICAgIGJvb2wgaGFuZGxlV2hl
ZWxFdmVudEluU2Nyb2xsYWJsZUFyZWEoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgU2Nyb2xs
YWJsZUFyZWEmLCBPcHRpb25TZXQ8RXZlbnRIYW5kbGluZz4pOwogICAgIHN0ZDo6b3B0aW9uYWw8
V2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU+IHVwZGF0ZVdoZWVsR2VzdHVyZVN0YXRlKGNvbnN0IFBs
YXRmb3JtV2hlZWxFdmVudCYsIE9wdGlvblNldDxFdmVudEhhbmRsaW5nPik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuaAppbmRleCA4NWFjYTVkN2JiMzJiZGFiZGM3MDFkZDgyYjI2ZjY1ZTQzZjkyODJl
Li4xZTY2NGNlOWM4OWI5NDFjYzQ5MWI0OWYzMGVjOGI1YmZiM2JjZDFmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmgKQEAgLTcwMiw2ICs3MDIsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAgT3ZlcnNj
cm9sbEJlaGF2aW9yIGhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdCBmaW5hbDsK
ICAgICBPdmVyc2Nyb2xsQmVoYXZpb3IgdmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25z
dCBmaW5hbDsKKyAgICBib29sIGhhc0hvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgIT0gT3ZlcnNj
cm9sbEJlaGF2aW9yOjpBdXRvOyB9CisgICAgYm9vbCBoYXNWZXJ0aWNhbE92ZXJzY3JvbGxCZWhh
dmlvcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkg
IT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpBdXRvOyB9CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQg
RnJhbWVWaWV3KEZyYW1lJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9F
dmVudEhhbmRsZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJN
YWMubW0KaW5kZXggMWVjZDBjYzc4ZWQ1NTU2NGYwMzJiMzBjOWM4M2ViZjU3NGFkZTgwMC4uYjVj
OGY1MjVjZjNiYzJlNzNhYjY2NmE0MGIxYTRlYTU0Njc1MWU3MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbQpAQCAtODE1LDYgKzgxNSw4IEBAIHN0YXRpYyBD
b250YWluZXJOb2RlKiBmaW5kRW5jbG9zaW5nU2Nyb2xsYWJsZUNvbnRhaW5lcihDb250YWluZXJO
b2RlKiBub2RlLCBjb25zCiAgICAgICAgIGF1dG8qIHNjcm9sbGFibGVBcmVhID0gc2Nyb2xsYWJs
ZUFyZWFGb3JCb3goKmJveCk7CiAgICAgICAgIGlmICghc2Nyb2xsYWJsZUFyZWEpCiAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKChzY3JvbGxhYmxlQXJlYS0+aGFzSG9yaXpvbnRh
bE92ZXJzY3JvbGxCZWhhdmlvcigpICYmIHNjcm9sbGFibGVBcmVhLT5oYXNWZXJ0aWNhbE92ZXJz
Y3JvbGxCZWhhdmlvcigpKSB8fCAoc2Nyb2xsYWJsZUFyZWEtPmhhc0hvcml6b250YWxPdmVyc2Ny
b2xsQmVoYXZpb3IoKSAmJiAhd2hlZWxFdmVudC5kZWx0YSgpLmhlaWdodCgpKSB8fCAoc2Nyb2xs
YWJsZUFyZWEtPmhhc1ZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgJiYgIXdoZWVsRXZlbnQu
ZGVsdGEoKS53aWR0aCgpKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgICAg
IGlmICh3aGVlbEV2ZW50LnBoYXNlKCkgPT0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2U6Ok1heUJl
Z2luIHx8IHdoZWVsRXZlbnQucGhhc2UoKSA9PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZTo6Q2Fu
Y2VsbGVkKQogICAgICAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcAppbmRleCA3YmNjZWJmODBlY2U3ODE0NzAyZmI1MTUx
ZTRmOTU5NWQ3MWY5OTkyLi4xOGUwNmFiYzQ0NTU4ZGY5MWJlYjIzNTgyNjExOTE1ZTYzMGU5OGFh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwCkBAIC04MDgs
NCArODA4LDE5IEBAIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0
IFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSkKICAgICByZXR1cm4gdHM7CiB9CiAKK0Zs
b2F0U2l6ZSBTY3JvbGxhYmxlQXJlYTo6ZGVsdGFGb3JQcm9wYWdhdGlvbihjb25zdCBGbG9hdFNp
emUmIGJpYXNlZERlbHRhKSBjb25zdAoreworICAgIGF1dG8gZmlsdGVyZWREZWx0YSA9IGJpYXNl
ZERlbHRhOworICAgIGlmIChoYXNIb3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkpCisgICAg
ICAgIGZpbHRlcmVkRGVsdGEuc2V0V2lkdGgoMCk7CisgICAgaWYgKGhhc1ZlcnRpY2FsT3ZlcnNj
cm9sbEJlaGF2aW9yKCkpCisgICAgICAgIGZpbHRlcmVkRGVsdGEuc2V0SGVpZ2h0KDApOworICAg
IHJldHVybiBmaWx0ZXJlZERlbHRhOworfQorCitib29sIFNjcm9sbGFibGVBcmVhOjpzaG91bGRC
bG9ja1Njcm9sbFByb3BhZ2F0aW9uKGNvbnN0IEZsb2F0U2l6ZSYgYmlhc2VkRGVsdGEpIGNvbnN0
Cit7CisgICAgcmV0dXJuICgoaGFzSG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpIHx8IGhh
c1ZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkpICYmICgoaGFzSG9yaXpvbnRhbE92ZXJzY3Jv
bGxCZWhhdmlvcigpICYmIGhhc1ZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkpIHx8IChoYXNI
b3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgJiYgIWJpYXNlZERlbHRhLmhlaWdodCgpKSB8
fCAoaGFzVmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSAmJiAhYmlhc2VkRGVsdGEud2lkdGgo
KSkpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbGFibGVBcmVhLmgKaW5kZXggYWI3NDVjNGJiYTlmMjNlMThhYmEzY2YxMzZlM2U5MTUz
MTBiOTA1MS4uNDMwOGIzZTc5OGRkN2EzOTViNjViYmFmZTIxN2UxMTQyOTRhZGFjZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCkBAIC0zNzAsNiArMzcwLDExIEBA
IHB1YmxpYzoKICAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRTY3JvbGxBbmltYXRp
b24oKSB7IH0KKyAgICAKKyAgICB2aXJ0dWFsIGJvb2wgaGFzSG9yaXpvbnRhbE92ZXJzY3JvbGxC
ZWhhdmlvcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGhhc1Zl
cnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBi
b29sIHNob3VsZEJsb2NrU2Nyb2xsUHJvcGFnYXRpb24oY29uc3QgRmxvYXRTaXplJikgY29uc3Q7
CisgICAgRmxvYXRTaXplIGRlbHRhRm9yUHJvcGFnYXRpb24oY29uc3QgRmxvYXRTaXplJikgY29u
c3Q7CiAKIHByb3RlY3RlZDoKICAgICBXRUJDT1JFX0VYUE9SVCBTY3JvbGxhYmxlQXJlYSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRy
b2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHNDb250cm9s
bGVyLmgKaW5kZXggYzdhM2EyZjg1ZWEwZWQ1YTdjNmE5NGJlMWJmMzU3MjhiMThjODhmMy4uMDY2
NzkxZDBjZTQzYjZkZmM5Mzk2OTY1MDgxNDI0MjI4MmJmZTdmZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5oCkBAIC0xNzQs
NyArMTc0LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNVc2VyU2Nyb2xsSW5Qcm9ncmVzcygpIGNv
bnN0OwogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIHN0YXRpYyBGbG9hdFNpemUgd2hlZWxEZWx0
YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jik7CisgICAg
c3RhdGljIEZsb2F0U2l6ZSB3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbChjb25zdCBG
bG9hdFNpemUmKTsKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBoYW5kbGVkLgogICAgIGJvb2wg
cHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxTbmFwKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9y
TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1t
CmluZGV4IDUzYTQwNzUzZGI3NDdjNWFjNGIxZjdiMjFhOWFkNWMxZmY0NWE4MzYuLmZjYWE5ZjQx
MmIxNGY2OGVjNjZjNDEwZDVkZTVhYTg1MGE0YmRlZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0KQEAgLTk0LDkgKzk0LDkgQEAgdm9p
ZCBTY3JvbGxBbmltYXRvck1hYzo6aGFuZGxlV2hlZWxFdmVudFBoYXNlKFBsYXRmb3JtV2hlZWxF
dmVudFBoYXNlIHBoYXNlKQogYm9vbCBTY3JvbGxBbmltYXRvck1hYzo6c2hvdWxkRm9yd2FyZFdo
ZWVsRXZlbnRzVG9QYXJlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50KSBj
b25zdAogewogICAgIGlmIChzdGQ6OmFicyh3aGVlbEV2ZW50LmRlbHRhWSgpKSA+PSBzdGQ6OmFi
cyh3aGVlbEV2ZW50LmRlbHRhWCgpKSkKLSAgICAgICAgcmV0dXJuICFhbGxvd3NWZXJ0aWNhbFN0
cmV0Y2hpbmcod2hlZWxFdmVudCk7CisgICAgICAgIHJldHVybiBtX3Njcm9sbGFibGVBcmVhLnZl
cnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgPT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpBdXRvICYm
ICFhbGxvd3NWZXJ0aWNhbFN0cmV0Y2hpbmcod2hlZWxFdmVudCk7CiAKLSAgICByZXR1cm4gIWFs
bG93c0hvcml6b250YWxTdHJldGNoaW5nKHdoZWVsRXZlbnQpOworICAgIHJldHVybiBtX3Njcm9s
bGFibGVBcmVhLmhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSA9PSBPdmVyc2Nyb2xsQmVo
YXZpb3I6OkF1dG8gJiYgIWFsbG93c0hvcml6b250YWxTdHJldGNoaW5nKHdoZWVsRXZlbnQpOwog
fQogICAgIAogYm9vbCBTY3JvbGxBbmltYXRvck1hYzo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQ
bGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpCkBAIC0xNDMsNiArMTQzLDkgQEAgc3RhdGlj
IGJvb2wgZ2VzdHVyZVNob3VsZEJlZ2luU25hcChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdo
ZWVsRXZlbnQsIFNjcm9sbEUKIAogYm9vbCBTY3JvbGxBbmltYXRvck1hYzo6YWxsb3dzVmVydGlj
YWxTdHJldGNoaW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCkgY29uc3QK
IHsKKyAgICBpZiAobV9zY3JvbGxhYmxlQXJlYS52ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigp
ID09IE92ZXJzY3JvbGxCZWhhdmlvcjo6Tm9uZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IAogICAgIHN3aXRjaCAobV9zY3JvbGxhYmxlQXJlYS52ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHko
KSkgewogICAgIGNhc2UgU2Nyb2xsRWxhc3RpY2l0eTo6QXV0b21hdGljOiB7CiAgICAgICAgIFNj
cm9sbGJhciogaFNjcm9sbGVyID0gbV9zY3JvbGxhYmxlQXJlYS5ob3Jpem9udGFsU2Nyb2xsYmFy
KCk7CkBAIC0xNjYsNiArMTY5LDkgQEAgYm9vbCBTY3JvbGxBbmltYXRvck1hYzo6YWxsb3dzVmVy
dGljYWxTdHJldGNoaW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWwKIAogYm9vbCBT
Y3JvbGxBbmltYXRvck1hYzo6YWxsb3dzSG9yaXpvbnRhbFN0cmV0Y2hpbmcoY29uc3QgUGxhdGZv
cm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50KSBjb25zdAogeworICAgIGlmIChtX3Njcm9sbGFibGVB
cmVhLmhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSA9PSBPdmVyc2Nyb2xsQmVoYXZpb3I6
Ok5vbmUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKICAgICBzd2l0Y2ggKG1fc2Nyb2xs
YWJsZUFyZWEuaG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkoKSkgewogICAgIGNhc2UgU2Nyb2xs
RWxhc3RpY2l0eTo6QXV0b21hdGljOiB7CiAgICAgICAgIFNjcm9sbGJhciogaFNjcm9sbGVyID0g
bV9zY3JvbGxhYmxlQXJlYS5ob3Jpem9udGFsU2Nyb2xsYmFyKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIubW0K
aW5kZXggODAwY2M1MTEwNzVhYWIwMjA4ZTg5NjczNWEzZTliZDFlMzAyMjgxMS4uMGQxMjU2MGM0
N2I2MzQ4ZTc3ZjYzNmFlYjQ0NjI1YjcxNzU1NDI3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5tbQpAQCAt
MzM3LDkgKzMzNyw5IEBAIGJvb2wgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OmFwcGx5U2Ny
b2xsRGVsdGFXaXRoU3RyZXRjaGluZyhjb25zdCBQbGF0Zm9ybVdoCiAgICAgcmV0dXJuIGNhblN0
YXJ0QW5pbWF0aW9uOwogfQogCi1GbG9hdFNpemUgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6
OndoZWVsRGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRpY2FsKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVu
dCYgd2hlZWxFdmVudCkKK0Zsb2F0U2l6ZSBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6d2hl
ZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoY29uc3QgRmxvYXRTaXplJiB3aGVlbERlbHRh
KQogewotICAgIHJldHVybiBkZWx0YUFsaWduZWRUb0RvbWluYW50QXhpcyh3aGVlbEV2ZW50LmRl
bHRhKCkpOworICAgIHJldHVybiBkZWx0YUFsaWduZWRUb0RvbWluYW50QXhpcyh3aGVlbERlbHRh
KTsKIH0KIAogdm9pZCBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6dXBkYXRlUnViYmVyQmFu
ZEFuaW1hdGluZ1N0YXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3Bw
CmluZGV4IDA5MjVkODI4ZjhhYTVhNWIwY2I0ZjJkMjc4NjhiMGZhMjk1MmJhZWYuLmMwMTVkM2E0
N2ExYzk4ZTk4NjI5ZjgwYjNlZjM1Y2NhN2E5YWM0NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyLmNwcApAQCAtMjMwOSw3ICsyMzA5LDcgQEAgc3RhdGljIGlubGluZSBj
b25zdCBSZW5kZXJMYXllciogYWNjdW11bGF0ZU9mZnNldFRvd2FyZHNBbmNlc3Rvcihjb25zdCBS
ZW5kZXJMYXkKIAogICAgICAgICAgICAgaWYgKGlzQ29udGFpbmVyRm9yUG9zaXRpb25lZCgqY3Vy
ckxheWVyLCBQb3NpdGlvblR5cGU6OkZpeGVkKSkgewogICAgICAgICAgICAgICAgIGZpeGVkUG9z
aXRpb25Db250YWluZXJMYXllciA9IGN1cnJMYXllcjsKLSAgICAgICAgICAgICAgICBBU1NFUlRf
VU5VU0VEKGZvdW5kQW5jZXN0b3IsIGZvdW5kQW5jZXN0b3IpOworLy8gICAgICAgICAgICAgICAg
QVNTRVJUX1VOVVNFRChmb3VuZEFuY2VzdG9yLCBmb3VuZEFuY2VzdG9yKTsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmgKaW5kZXggN2FjOGNk
ZGJiMDk0MzIzN2MxMjdhZjhmNjdlNGVmYWVhZmJmNWQ1OS4uMjJhZDQ3MWE1ZTlkYzM1MTU1OTJm
ZjBkZmRiOGY0NmJjMjcxYmM3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5oCkBAIC0yNDAsNyArMjQwLDggQEAgcHVibGlj
OgogICAgIHZvaWQgdXBkYXRlTGF5ZXJQb3NpdGlvbnNBZnRlckRvY3VtZW50U2Nyb2xsKCk7CiAK
ICAgICBzdGQ6Om9wdGlvbmFsPExheW91dFJlY3Q+IHVwZGF0ZVNjcm9sbFBvc2l0aW9uKGNvbnN0
IFNjcm9sbFBvc2l0aW9uQ2hhbmdlT3B0aW9ucyYsIGNvbnN0IExheW91dFJlY3QmIHJldmVhbFJl
Y3QsIGNvbnN0IExheW91dFJlY3QmIGxvY2FsRXhwb3NlUmVjdCk7Ci0KKyAgICBib29sIGhhc0hv
cml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdCBmaW5hbCB7IHJldHVybiBob3Jpem9u
dGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgIT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpBdXRvOyB9Cisg
ICAgYm9vbCBoYXNWZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIHZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgIT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpB
dXRvOyB9CiBwcml2YXRlOgogICAgIGJvb2wgaGFzSG9yaXpvbnRhbE92ZXJmbG93KCkgY29uc3Q7
CiAgICAgYm9vbCBoYXNWZXJ0aWNhbE92ZXJmbG93KCkgY29uc3Q7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450309</attachid>
            <date>2022-01-28 21:09:47 -0800</date>
            <delta_ts>2022-01-28 22:00:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222968-20220128210946.patch</filename>
            <type>text/plain</type>
            <size>37718</size>
            <attacher name="Nikos Mouchtaris">nmouchtaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4NzgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTk2NDIzYTE4N2NiMTkz
MTgxNmMwMDk4YWY0NDQ5ZTBhODQ1ODE2OS4uZTRlOWNmNzJiZTUzNzBlMTUzNmY4ZDI4ZjIxM2M3
ZmQzN2M3MWZhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDIyLTAxLTI4ICBOaWtv
bGFvcyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxl
bWVudCBDU1Mgb3ZlcnNjcm9sbC1iZWhhdmlvciBmb3Igc3luY2hyb25vdXMgc2Nyb2xsCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI5NjgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0czogZmFzdC9z
Y3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50Lmh0bWwKKyAg
ICAgICAgICAgICAgIGZhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZp
b3ItaWZyYW1lLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xs
LW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRtbAorICAgICAgICAg
ICAgICAgZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNj
cm9sbGFibGUtaWZyYW1lLmh0bWwKKworICAgICAgICBTcGxpdCB1cCBwYXRjaCBieSBDYXRoaWUg
Q2hlbiBhbmQgRnJlZGVyaWMgV2FuZy4gQWRkIGZ1bmN0aW9uIGZvciBibG9ja2luZyBzY3JvbGwg
Y2hhaW5pbmcKKyAgICAgICAgYW5kIGZpbHRlcmluZyBzY3JvbGwgZGVsdGEgZGVwZW5kaW5nIG9u
IHRoZSB2YWx1ZXMgb2Ygb3ZlcnNjcm9sbCBiZWhhdmlvciBmb3IgYSBzY3JvbGxhYmxlCisgICAg
ICAgIGFyZWEuIFRoaXMgcGF0Y2ggaXMgZm9yIHN5bmNocm9ub3VzIHNjcm9sbGluZyBvbmx5Lgor
CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZl
bnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6
c2Nyb2xsVmlhTm9uUGxhdGZvcm1FdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRs
ZXI6OmhhbmRsZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94KToKKyAgICAgICAg
KFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6c2Nyb2xsYWJsZUFyZWFDYW5IYW5kbGVFdmVudCk6Cisg
ICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuaDoKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5o
OgorICAgICAgICAqIHBhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OmZpbmRFbmNsb3NpbmdTY3JvbGxhYmxlQ29udGFpbmVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9TY3JvbGxhYmxlQXJlYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6
ZGVsdGFGb3JQcm9wYWdhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxl
QXJlYTo6c2hvdWxkQmxvY2tTY3JvbGxQcm9wYWdhdGlvbiBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vU2Nyb2xsYWJsZUFyZWEuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGFibGVBcmVh
OjpoYXNIb3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGFibGVBcmVhOjpoYXNWZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvciBjb25zdCk6
CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW06CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxBbmltYXRvck1hYzo6c2hvdWxkRm9yd2FyZFdoZWVsRXZlbnRzVG9QYXJlbnQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JNYWM6OmFsbG93c1ZlcnRpY2Fs
U3RyZXRjaGluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck1hYzo6
YWxsb3dzSG9yaXpvbnRhbFN0cmV0Y2hpbmcgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGluZ0VmZmVjdHNDb250cm9sbGVyOjp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmFjY3VtdWxhdGVPZmZzZXRUb3dhcmRzQW5jZXN0b3IpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmg6CisKIDIwMjItMDEtMjggIE5pa29sYW9zIE1vdWNo
dGFyaXMgIDxubW91Y2h0YXJpc0BhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IENTUyBv
dmVyc2Nyb2xsLWJlaGF2aW9yIGZvciBhc3luY2hyb25vdXMgc2Nyb2xsIG9uIE1hYwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDE2ZDUzODlkZmZmYWMzMjU0ZmNlZjRmYTc5
YTA3NjU1ZGQwMDMzMDIuLmRiMWZmNDMyZmZmNzc2NDUyZTExZjAzZWY3YTEyMTZlODMwYzc0MjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTMwMjcsMTEgKzMwMjcsMTcg
QEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnRJbnRlcm5hbChjb25zdCBQbGF0
Zm9ybVdoZWVsRXZlbnQmIGV2ZW50LCBPcHQKICAgICBpZiAoYWxsb3dTY3JvbGxpbmcpCiAgICAg
ICAgIGFsbG93U2Nyb2xsaW5nID0gbV9mcmFtZS5wYWdlKCktPnNjcm9sbExhdGNoaW5nQ29udHJv
bGxlcigpLmxhdGNoaW5nQWxsb3dzU2Nyb2xsaW5nSW5GcmFtZShtX2ZyYW1lLCBzY3JvbGxhYmxl
QXJlYSk7CiAjZW5kaWYKKyAgICBhdXRvIGFkanVzdGVkV2hlZWxFdmVudCA9IGV2ZW50OworICAg
IGF1dG8gZmlsdGVyZWREZWx0YSA9IGFkanVzdGVkV2hlZWxFdmVudC5kZWx0YSgpOworICAgIGZp
bHRlcmVkRGVsdGEgPSB2aWV3LT5kZWx0YUZvclByb3BhZ2F0aW9uKGZpbHRlcmVkRGVsdGEpOwor
ICAgIGlmICh2aWV3LT5zaG91bGRCbG9ja1Njcm9sbFByb3BhZ2F0aW9uKGZpbHRlcmVkRGVsdGEp
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGlmIChhbGxvd1Njcm9sbGluZykgewogICAg
ICAgICAvLyBGSVhNRTogcHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxpbmcoKSBpcyBvbmx5IGNh
bGxlZCBmb3IgRnJhbWVWaWV3IHNjcm9sbGluZywgbm90IG92ZXJmbG93IHNjcm9sbGluZywgd2hp
Y2ggaXMgY29uZnVzaW5nLgotICAgICAgICBoYW5kbGVkRXZlbnQgPSBwcm9jZXNzV2hlZWxFdmVu
dEZvclNjcm9sbGluZyhldmVudCwgc2Nyb2xsYWJsZUFyZWEsIGhhbmRsaW5nKTsKLSAgICAgICAg
cHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxTbmFwKGV2ZW50LCBzY3JvbGxhYmxlQXJlYSk7Cisg
ICAgICAgIGFkanVzdGVkV2hlZWxFdmVudCA9IGFkanVzdGVkV2hlZWxFdmVudC5jb3B5V2l0aERl
bHRhQW5kVmVsb2NpdHkoZmlsdGVyZWREZWx0YSwgYWRqdXN0ZWRXaGVlbEV2ZW50LnNjcm9sbGlu
Z1ZlbG9jaXR5KCkpOworICAgICAgICBoYW5kbGVkRXZlbnQgPSBwcm9jZXNzV2hlZWxFdmVudEZv
clNjcm9sbGluZyhhZGp1c3RlZFdoZWVsRXZlbnQsIHNjcm9sbGFibGVBcmVhLCBoYW5kbGluZyk7
CisgICAgICAgIHByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsU25hcChhZGp1c3RlZFdoZWVsRXZl
bnQsIHNjcm9sbGFibGVBcmVhKTsKICAgICB9CiAKICAgICByZXR1cm4gaGFuZGxlZEV2ZW50OwpA
QCAtMzA1MCwxOCArMzA1NiwyMCBAQCBzdGF0aWMgdm9pZCBoYW5kbGVXaGVlbEV2ZW50UGhhc2VJ
blNjcm9sbGFibGVBcmVhKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYQogCiBzdGF0aWMg
Ym9vbCBzY3JvbGxWaWFOb25QbGF0Zm9ybUV2ZW50KFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxl
QXJlYSwgY29uc3QgV2hlZWxFdmVudCYgd2hlZWxFdmVudCkKIHsKKyAgICBhdXRvIGZpbHRlcmVk
RGVsdGEgPSBGbG9hdFNpemUod2hlZWxFdmVudC5kZWx0YVgoKSwgd2hlZWxFdmVudC5kZWx0YVko
KSk7CisgICAgZmlsdGVyZWREZWx0YSA9IHNjcm9sbGFibGVBcmVhLmRlbHRhRm9yUHJvcGFnYXRp
b24oZmlsdGVyZWREZWx0YSk7CiAgICAgU2Nyb2xsR3JhbnVsYXJpdHkgc2Nyb2xsR3JhbnVsYXJp
dHkgPSB3aGVlbEdyYW51bGFyaXR5VG9TY3JvbGxHcmFudWxhcml0eSh3aGVlbEV2ZW50LmRlbHRh
TW9kZSgpKTsKICAgICBib29sIGRpZEhhbmRsZVdoZWVsRXZlbnQgPSBmYWxzZTsKLSAgICBpZiAo
ZmxvYXQgYWJzb2x1dGVEZWx0YSA9IHN0ZDo6YWJzKHdoZWVsRXZlbnQuZGVsdGFYKCkpKQotICAg
ICAgICBkaWRIYW5kbGVXaGVlbEV2ZW50IHw9IHNjcm9sbGFibGVBcmVhLnNjcm9sbCh3aGVlbEV2
ZW50LmRlbHRhWCgpID4gMCA/IFNjcm9sbFJpZ2h0IDogU2Nyb2xsTGVmdCwgc2Nyb2xsR3JhbnVs
YXJpdHksIGFic29sdXRlRGVsdGEpOworICAgIGlmIChmbG9hdCBhYnNvbHV0ZURlbHRhID0gc3Rk
OjphYnMoZmlsdGVyZWREZWx0YS53aWR0aCgpKSkKKyAgICAgICAgZGlkSGFuZGxlV2hlZWxFdmVu
dCB8PSBzY3JvbGxhYmxlQXJlYS5zY3JvbGwoZmlsdGVyZWREZWx0YS53aWR0aCgpID4gMCA/IFNj
cm9sbFJpZ2h0IDogU2Nyb2xsTGVmdCwgc2Nyb2xsR3JhbnVsYXJpdHksIGFic29sdXRlRGVsdGEp
OwogCi0gICAgaWYgKGZsb2F0IGFic29sdXRlRGVsdGEgPSBzdGQ6OmFicyh3aGVlbEV2ZW50LmRl
bHRhWSgpKSkKLSAgICAgICAgZGlkSGFuZGxlV2hlZWxFdmVudCB8PSBzY3JvbGxhYmxlQXJlYS5z
Y3JvbGwod2hlZWxFdmVudC5kZWx0YVkoKSA+IDAgPyBTY3JvbGxEb3duIDogU2Nyb2xsVXAsIHNj
cm9sbEdyYW51bGFyaXR5LCBhYnNvbHV0ZURlbHRhKTsKKyAgICBpZiAoZmxvYXQgYWJzb2x1dGVE
ZWx0YSA9IHN0ZDo6YWJzKGZpbHRlcmVkRGVsdGEuaGVpZ2h0KCkpKQorICAgICAgICBkaWRIYW5k
bGVXaGVlbEV2ZW50IHw9IHNjcm9sbGFibGVBcmVhLnNjcm9sbChmaWx0ZXJlZERlbHRhLmhlaWdo
dCgpID4gMCA/IFNjcm9sbERvd24gOiBTY3JvbGxVcCwgc2Nyb2xsR3JhbnVsYXJpdHksIGFic29s
dXRlRGVsdGEpOwogCiAgICAgcmV0dXJuIGRpZEhhbmRsZVdoZWVsRXZlbnQ7CiB9CiAKLWJvb2wg
RXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2luZ0JveChO
b2RlKiBzdGFydE5vZGUsIGNvbnN0IFdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIGNvbnN0IEZsb2F0
U2l6ZSYgZmlsdGVyZWRQbGF0Zm9ybURlbHRhLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlcmVkVmVs
b2NpdHksIE9wdGlvblNldDxFdmVudEhhbmRsaW5nPiBldmVudEhhbmRsaW5nKQorYm9vbCBFdmVu
dEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94KE5vZGUq
IHN0YXJ0Tm9kZSwgY29uc3QgV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgRmxvYXRTaXplJiBmaWx0
ZXJlZFBsYXRmb3JtRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyZWRWZWxvY2l0eSwgT3B0
aW9uU2V0PEV2ZW50SGFuZGxpbmc+IGV2ZW50SGFuZGxpbmcpCiB7CiAgICAgYm9vbCBzaG91bGRI
YW5kbGVFdmVudCA9IHdoZWVsRXZlbnQuZGVsdGFYKCkgfHwgd2hlZWxFdmVudC5kZWx0YVkoKTsK
ICNpZiBFTkFCTEUoV0hFRUxfRVZFTlRfTEFUQ0hJTkcpCkBAIC0zMDkxLDggKzMwOTksMTYgQEAg
Ym9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5n
Qm94KE5vZGUqIHN0YXJ0Tm9kZSwgY28KICAgICB9OwogCiAgICAgUmVuZGVyQm94KiBjdXJyZW50
RW5jbG9zaW5nQm94ID0gJmluaXRpYWxFbmNsb3NpbmdCb3g7CisjaWYgUExBVEZPUk0oTUFDKQor
ICAgIGF1dG8gYmlhc2VkRGVsdGEgPSBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6d2hlZWxE
ZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoRmxvYXRTaXplKHdoZWVsRXZlbnQuZGVsdGFYKCks
IHdoZWVsRXZlbnQuZGVsdGFZKCkpKTsKKyNlbHNlCisgICAgYXV0byBiaWFzZWREZWx0YSA9IHdo
ZWVsRXZlbnQuZGVsdGEoKTsKKyNlbmRpZgogICAgIHdoaWxlIChjdXJyZW50RW5jbG9zaW5nQm94
KSB7CiAgICAgICAgIGlmIChhdXRvKiBib3hTY3JvbGxhYmxlQXJlYSA9IHNjcm9sbGFibGVBcmVh
Rm9yQm94KCpjdXJyZW50RW5jbG9zaW5nQm94KSkgeworICAgICAgICAgICAgYmlhc2VkRGVsdGEg
PSBib3hTY3JvbGxhYmxlQXJlYS0+ZGVsdGFGb3JQcm9wYWdhdGlvbihiaWFzZWREZWx0YSk7Cisg
ICAgICAgICAgICBpZiAoYm94U2Nyb2xsYWJsZUFyZWEgJiYgYm94U2Nyb2xsYWJsZUFyZWEtPnNo
b3VsZEJsb2NrU2Nyb2xsUHJvcGFnYXRpb24oYmlhc2VkRGVsdGEpKQorICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICAgICAgYXV0byBwbGF0Zm9ybUV2ZW50ID0gd2hlZWxFdmVu
dC51bmRlcmx5aW5nUGxhdGZvcm1FdmVudCgpOwogICAgICAgICAgICAgYm9vbCBzY3JvbGxpbmdX
YXNIYW5kbGVkOwogICAgICAgICAgICAgaWYgKHBsYXRmb3JtRXZlbnQpIHsKQEAgLTMxMTUsNyAr
MzEzMSw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50SW5BcHByb3ByaWF0
ZUVuY2xvc2luZ0JveChOb2RlKiBzdGFydE5vZGUsIGNvCiBib29sIEV2ZW50SGFuZGxlcjo6c2Ny
b2xsYWJsZUFyZWFDYW5IYW5kbGVFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVs
RXZlbnQsIFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSkKIHsKICNpZiBQTEFURk9STShN
QUMpCi0gICAgYXV0byBiaWFzZWREZWx0YSA9IFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjp3
aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbCh3aGVlbEV2ZW50KTsKKyAgICBhdXRvIGJp
YXNlZERlbHRhID0gU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OndoZWVsRGVsdGFCaWFzaW5n
VG93YXJkc1ZlcnRpY2FsKHdoZWVsRXZlbnQuZGVsdGEoKSk7CiAjZWxzZQogICAgIGF1dG8gYmlh
c2VkRGVsdGEgPSB3aGVlbEV2ZW50LmRlbHRhKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50
SGFuZGxlci5oCmluZGV4IDZiMzU5ZTc1NTZhMmQ2YTE0ODVlMDRlOGMyMGZhNWY0NzBjNWEwNGEu
LmVhNDM0ODg5MTE1NDkyMTU4ODYzNTNmZWU2ODZhZmZlNzMyYmEzNjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuaApAQCAtNDc1LDcgKzQ3NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBw
cm9jZXNzV2hlZWxFdmVudEZvclNjcm9sbFNuYXAoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jiwg
Y29uc3QgV2Vha1B0cjxTY3JvbGxhYmxlQXJlYT4mKTsKICAgICBib29sIGNvbXBsZXRlV2lkZ2V0
V2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBjb25zdCBXZWFrUHRyPFdpZGdl
dD4mLCBjb25zdCBXZWFrUHRyPFNjcm9sbGFibGVBcmVhPiYpOwogCi0gICAgYm9vbCBoYW5kbGVX
aGVlbEV2ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2luZ0JveChOb2RlKiBzdGFydE5vZGUsIGNvbnN0
IFdoZWVsRXZlbnQmLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlcmVkUGxhdGZvcm1EZWx0YSwgY29u
c3QgRmxvYXRTaXplJiBmaWx0ZXJlZFZlbG9jaXR5LCBPcHRpb25TZXQ8RXZlbnRIYW5kbGluZz4p
OworICAgIGJvb2wgaGFuZGxlV2hlZWxFdmVudEluQXBwcm9wcmlhdGVFbmNsb3NpbmdCb3goTm9k
ZSogc3RhcnROb2RlLCBjb25zdCBXaGVlbEV2ZW50JiwgRmxvYXRTaXplJiBmaWx0ZXJlZFBsYXRm
b3JtRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyZWRWZWxvY2l0eSwgT3B0aW9uU2V0PEV2
ZW50SGFuZGxpbmc+KTsKIAogICAgIGJvb2wgaGFuZGxlV2hlZWxFdmVudEluU2Nyb2xsYWJsZUFy
ZWEoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgU2Nyb2xsYWJsZUFyZWEmLCBPcHRpb25TZXQ8
RXZlbnRIYW5kbGluZz4pOwogICAgIHN0ZDo6b3B0aW9uYWw8V2hlZWxTY3JvbGxHZXN0dXJlU3Rh
dGU+IHVwZGF0ZVdoZWVsR2VzdHVyZVN0YXRlKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIE9w
dGlvblNldDxFdmVudEhhbmRsaW5nPik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCA2MDJk
NjBjOWM5NzA1NWY2NDhjYTQ4ZmZmYmY5YzQyYjVjMTZmOTMzLi5kMThmNmU4NzA3NjEwYjNjOTE0
ODVlMTBhMzhiNTEzMTc2OWQwYWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTcwMiw2
ICs3MDIsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAgT3ZlcnNjcm9sbEJlaGF2aW9yIGhvcml6b250
YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdCBmaW5hbDsKICAgICBPdmVyc2Nyb2xsQmVoYXZp
b3IgdmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdCBmaW5hbDsKKyAgICBib29sIGhv
cml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3JQcmV2ZW50c1Byb3BhZ2F0aW9uKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpICE9IE92ZXJzY3JvbGxC
ZWhhdmlvcjo6QXV0bzsgfQorICAgIGJvb2wgdmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3JQcmV2
ZW50c1Byb3BhZ2F0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdmVydGljYWxPdmVyc2Nyb2xs
QmVoYXZpb3IoKSAhPSBPdmVyc2Nyb2xsQmVoYXZpb3I6OkF1dG87IH0KIAogcHJpdmF0ZToKICAg
ICBleHBsaWNpdCBGcmFtZVZpZXcoRnJhbWUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2
ZW50SGFuZGxlck1hYy5tbQppbmRleCA1NjdmMWVlMjIzNzYzNmY5YjMwODBhODkxMjViNDQ3MWUx
MjYwZjdjLi4yZDRkZTRhMWMzZDE5ZjU2NjM1YzdiYmI4NTY1OTFjNTIzZDNmMTU2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tCkBAIC04MTUsNiArODE1LDgg
QEAgc3RhdGljIENvbnRhaW5lck5vZGUqIGZpbmRFbmNsb3NpbmdTY3JvbGxhYmxlQ29udGFpbmVy
KENvbnRhaW5lck5vZGUqIG5vZGUsIGNvbnMKICAgICAgICAgYXV0byogc2Nyb2xsYWJsZUFyZWEg
PSBzY3JvbGxhYmxlQXJlYUZvckJveCgqYm94KTsKICAgICAgICAgaWYgKCFzY3JvbGxhYmxlQXJl
YSkKICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoc2Nyb2xsYWJsZUFyZWEtPnNo
b3VsZEJsb2NrU2Nyb2xsUHJvcGFnYXRpb24od2hlZWxFdmVudC5kZWx0YSgpKSkKKyAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCiAgICAgICAgIGlmICh3aGVlbEV2ZW50LnBoYXNlKCkgPT0g
UGxhdGZvcm1XaGVlbEV2ZW50UGhhc2U6Ok1heUJlZ2luIHx8IHdoZWVsRXZlbnQucGhhc2UoKSA9
PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZTo6Q2FuY2VsbGVkKQogICAgICAgICAgICAgcmV0dXJu
IGNhbmRpZGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFi
bGVBcmVhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcApp
bmRleCAxNGJiN2FmMDk1M2UwNmNiYzQ2N2U2NmFkMDFmMmYzZTBlNDk2NmVjLi4xZDM0OTQ1MzQ4
MGU4NThkZWRjYjM0ZGYwOWM2ZjMwNzE5NjcxYzE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsYWJsZUFyZWEuY3BwCkBAIC04MDcsNCArODA3LDE5IEBAIFRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxl
QXJlYSkKICAgICByZXR1cm4gdHM7CiB9CiAKK0Zsb2F0U2l6ZSBTY3JvbGxhYmxlQXJlYTo6ZGVs
dGFGb3JQcm9wYWdhdGlvbihjb25zdCBGbG9hdFNpemUmIGJpYXNlZERlbHRhKSBjb25zdAorewor
ICAgIGF1dG8gZmlsdGVyZWREZWx0YSA9IGJpYXNlZERlbHRhOworICAgIGlmIChob3Jpem9udGFs
T3ZlcnNjcm9sbEJlaGF2aW9yUHJldmVudHNQcm9wYWdhdGlvbigpKQorICAgICAgICBmaWx0ZXJl
ZERlbHRhLnNldFdpZHRoKDApOworICAgIGlmICh2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvclBy
ZXZlbnRzUHJvcGFnYXRpb24oKSkKKyAgICAgICAgZmlsdGVyZWREZWx0YS5zZXRIZWlnaHQoMCk7
CisgICAgcmV0dXJuIGZpbHRlcmVkRGVsdGE7Cit9CisKK2Jvb2wgU2Nyb2xsYWJsZUFyZWE6OnNo
b3VsZEJsb2NrU2Nyb2xsUHJvcGFnYXRpb24oY29uc3QgRmxvYXRTaXplJiBiaWFzZWREZWx0YSkg
Y29uc3QKK3sKKyAgICByZXR1cm4gKChob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yUHJldmVu
dHNQcm9wYWdhdGlvbigpIHx8IHZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yUHJldmVudHNQcm9w
YWdhdGlvbigpKSAmJiAoKGhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3JQcmV2ZW50c1Byb3Bh
Z2F0aW9uKCkgJiYgdmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3JQcmV2ZW50c1Byb3BhZ2F0aW9u
KCkpIHx8IChob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yUHJldmVudHNQcm9wYWdhdGlvbigp
ICYmICFiaWFzZWREZWx0YS5oZWlnaHQoKSkgfHwgKHZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9y
UHJldmVudHNQcm9wYWdhdGlvbigpICYmICFiaWFzZWREZWx0YS53aWR0aCgpKSkpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxhYmxlQXJlYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFy
ZWEuaAppbmRleCBhMzZlMTk4YzY5NWIxYjg0NjVhYzA1MGZlMWMzNGE2OGUxZTk4NWFlLi4zNjNl
ZDkyMWY0OTM4MWRlMGUyNmZjOTA1MjU5ZDBiNzExYzJhZTgwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbGFibGVBcmVhLmgKQEAgLTM3Myw2ICszNzMsMTEgQEAgcHVibGljOgogICAg
IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydFNjcm9sbEFuaW1hdGlvbigpIHsgfQorICAg
IAorICAgIHZpcnR1YWwgYm9vbCBob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yUHJldmVudHNQ
cm9wYWdhdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIHZl
cnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yUHJldmVudHNQcm9wYWdhdGlvbigpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgYm9vbCBzaG91bGRCbG9ja1Njcm9sbFByb3BhZ2F0aW9uKGNvbnN0
IEZsb2F0U2l6ZSYpIGNvbnN0OworICAgIEZsb2F0U2l6ZSBkZWx0YUZvclByb3BhZ2F0aW9uKGNv
bnN0IEZsb2F0U2l6ZSYpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6CiAgICAgV0VCQ09SRV9FWFBPUlQg
U2Nyb2xsYWJsZUFyZWEoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxpbmdFZmZlY3RzQ29udHJvbGxlci5oCmluZGV4IGI3OGY2NjRiODI4NjU5YjVhNzliNjY0N2I2
Mzk0YTI1ZGFjM2ZmZTcuLjFmOTQyOGMyYmEzNDMwYWZiZWM4MDEwNmI4ZjkxYWQ1MzYyMDRlMWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHNDb250
cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0Nv
bnRyb2xsZXIuaApAQCAtMTc0LDcgKzE3NCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzVXNlclNj
cm9sbEluUHJvZ3Jlc3MoKSBjb25zdDsKIAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBzdGF0aWMg
RmxvYXRTaXplIHdoZWVsRGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRpY2FsKGNvbnN0IFBsYXRmb3Jt
V2hlZWxFdmVudCYpOworICAgIHN0YXRpYyBGbG9hdFNpemUgd2hlZWxEZWx0YUJpYXNpbmdUb3dh
cmRzVmVydGljYWwoY29uc3QgRmxvYXRTaXplJik7CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYg
aGFuZGxlZC4KICAgICBib29sIHByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsU25hcChjb25zdCBQ
bGF0Zm9ybVdoZWVsRXZlbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9TY3JvbGxBbmltYXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9T
Y3JvbGxBbmltYXRvck1hYy5tbQppbmRleCBhYjhiN2Y3NjNjNWJmMWVhMzUxMzcyYTRiZjA4YTA5
MzJhN2MxZTkxLi4wNzBmNGQ4NjIzZTA0NTU1MWVmOWYwMTZmMTVkMWZlZTdiYmUzMzI2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tCkBA
IC0xMDUsNiArMTA1LDkgQEAgc3RhdGljIGJvb2wgZ2VzdHVyZVNob3VsZEJlZ2luU25hcChjb25z
dCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIFNjcm9sbEUKIAogYm9vbCBTY3JvbGxB
bmltYXRvck1hYzo6YWxsb3dzVmVydGljYWxTdHJldGNoaW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxF
dmVudCYgd2hlZWxFdmVudCkgY29uc3QKIHsKKyAgICBpZiAobV9zY3JvbGxhYmxlQXJlYS52ZXJ0
aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpID09IE92ZXJzY3JvbGxCZWhhdmlvcjo6Tm9uZSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIAogICAgIHN3aXRjaCAobV9zY3JvbGxhYmxlQXJlYS52
ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkoKSkgewogICAgIGNhc2UgU2Nyb2xsRWxhc3RpY2l0eTo6
QXV0b21hdGljOiB7CiAgICAgICAgIFNjcm9sbGJhciogaFNjcm9sbGVyID0gbV9zY3JvbGxhYmxl
QXJlYS5ob3Jpem9udGFsU2Nyb2xsYmFyKCk7CkBAIC0xMjgsNiArMTMxLDkgQEAgYm9vbCBTY3Jv
bGxBbmltYXRvck1hYzo6YWxsb3dzVmVydGljYWxTdHJldGNoaW5nKGNvbnN0IFBsYXRmb3JtV2hl
ZWxFdmVudCYgd2hlZWwKIAogYm9vbCBTY3JvbGxBbmltYXRvck1hYzo6YWxsb3dzSG9yaXpvbnRh
bFN0cmV0Y2hpbmcoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50KSBjb25zdAog
eworICAgIGlmIChtX3Njcm9sbGFibGVBcmVhLmhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3Io
KSA9PSBPdmVyc2Nyb2xsQmVoYXZpb3I6Ok5vbmUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAKICAgICBzd2l0Y2ggKG1fc2Nyb2xsYWJsZUFyZWEuaG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNp
dHkoKSkgewogICAgIGNhc2UgU2Nyb2xsRWxhc3RpY2l0eTo6QXV0b21hdGljOiB7CiAgICAgICAg
IFNjcm9sbGJhciogaFNjcm9sbGVyID0gbV9zY3JvbGxhYmxlQXJlYS5ob3Jpem9udGFsU2Nyb2xs
YmFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsaW5n
RWZmZWN0c0NvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xs
aW5nRWZmZWN0c0NvbnRyb2xsZXIubW0KaW5kZXggM2NjM2QyNGZhOTA5ZDljZWRhOGUzMmY4NjQz
MjEzMjU3MGE3MThmOS4uODA4ZWQ1NTgyYTI4MjZiYTBlN2ZiZWQ2OTQ1NzYxZGY0MjIxYWJjOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGluZ0VmZmVjdHND
b250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxpbmdF
ZmZlY3RzQ29udHJvbGxlci5tbQpAQCAtMzQ1LDkgKzM0NSw5IEBAIGJvb2wgU2Nyb2xsaW5nRWZm
ZWN0c0NvbnRyb2xsZXI6OmFwcGx5U2Nyb2xsRGVsdGFXaXRoU3RyZXRjaGluZyhjb25zdCBQbGF0
Zm9ybVdoCiAgICAgcmV0dXJuIGNhblN0YXJ0QW5pbWF0aW9uOwogfQogCi1GbG9hdFNpemUgU2Ny
b2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OndoZWVsRGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRpY2Fs
KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCkKK0Zsb2F0U2l6ZSBTY3JvbGxp
bmdFZmZlY3RzQ29udHJvbGxlcjo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoY29u
c3QgRmxvYXRTaXplJiB3aGVlbERlbHRhKQogewotICAgIHJldHVybiBkZWx0YUFsaWduZWRUb0Rv
bWluYW50QXhpcyh3aGVlbEV2ZW50LmRlbHRhKCkpOworICAgIHJldHVybiBkZWx0YUFsaWduZWRU
b0RvbWluYW50QXhpcyh3aGVlbERlbHRhKTsKIH0KIAogdm9pZCBTY3JvbGxpbmdFZmZlY3RzQ29u
dHJvbGxlcjo6dXBkYXRlUnViYmVyQmFuZEFuaW1hdGluZ1N0YXRlKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5oCmluZGV4IGJm
MjdlZGMxNTI2NzQ0ODNmYzc5Nzc3YjY5YTllYzFiZGRhMTZhNjMuLjgyZGQwODE0MGE3OWIzMGZm
ODZhYTUwMmQ3N2Q5NmM3MGZiZDQ0MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuaApAQCAtMjM3LDcgKzIzNyw4IEBAIHB1
YmxpYzoKICAgICBJbnRTaXplIHNjcm9sbGJhck9mZnNldChjb25zdCBTY3JvbGxiYXImKSBjb25z
dDsKIAogICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0UmVjdD4gdXBkYXRlU2Nyb2xsUG9zaXRpb24o
Y29uc3QgU2Nyb2xsUG9zaXRpb25DaGFuZ2VPcHRpb25zJiwgY29uc3QgTGF5b3V0UmVjdCYgcmV2
ZWFsUmVjdCwgY29uc3QgTGF5b3V0UmVjdCYgbG9jYWxFeHBvc2VSZWN0KTsKLQorICAgIGJvb2wg
aG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvclByZXZlbnRzUHJvcGFnYXRpb24oKSBjb25zdCBm
aW5hbCB7IHJldHVybiBob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgIT0gT3ZlcnNjcm9s
bEJlaGF2aW9yOjpBdXRvOyB9CisgICAgYm9vbCB2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvclBy
ZXZlbnRzUHJvcGFnYXRpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiB2ZXJ0aWNhbE92ZXJzY3Jv
bGxCZWhhdmlvcigpICE9IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0bzsgfQogcHJpdmF0ZToKICAg
ICBib29sIGhhc0hvcml6b250YWxPdmVyZmxvdygpIGNvbnN0OwogICAgIGJvb2wgaGFzVmVydGlj
YWxPdmVyZmxvdygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDAwOWU1ZTE2YTk4YWY2MTY2NDEyNTM2MzU5NGY0
YTdiNThjMzBiMWIuLjI1NjI1NDA3NDlkYTJkYTAyNDVmZmM0YTY0MzczN2FkZDM1ZGU1OWIgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyMiBAQAorMjAyMi0wMS0yOCAgTmlrb2xhb3MgTW91Y2h0YXJpcyAgPG5t
b3VjaHRhcmlzQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgQ1NTIG92ZXJzY3JvbGwt
YmVoYXZpb3IgZm9yIHN5bmNocm9ub3VzIHNjcm9sbAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyOTY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVy
c2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQuaHRt
bDogQWRkZWQuCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9s
bC1iZWhhdmlvci1pZnJhbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Nj
cm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2
aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFi
bGUtZWxlbWVudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9zeW5jLXNj
cm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xs
LWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxh
dGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMS9U
ZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25z
OgorCiAyMDIyLTAxLTI4ICBOaWtvbGFvcyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUu
Y29tPgogCiAgICAgICAgIEltcGxlbWVudCBDU1Mgb3ZlcnNjcm9sbC1iZWhhdmlvciBmb3IgYXN5
bmNocm9ub3VzIHNjcm9sbCBvbiBNYWMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Ny
b2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJl
aGF2aW9yLWVsZW1lbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI3MTUwZmY2MGI1ZGJkZDBi
NGE3YWM2ZjgzZmI1NmY1N2NkMmNkODIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjAgQEAKKworUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Ny
b2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIGF1dG8uCitQQVNTIEVsZW1l
bnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIGF1
dG8uCitQQVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwt
YmVoYXZpb3I6IGNvbnRhaW4gYXV0by4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVz
dCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gYXV0by4KK1BBU1MgRWxlbWVudCBo
b3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBhdXRv
LgorUEFTUyBFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhh
dmlvcjogbm9uZSBhdXRvLgorUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0
aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIGNvbnRhaW4uCitQQVNTIEVsZW1lbnQgdmVydGlj
YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIGNvbnRhaW4uCitQ
QVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZp
b3I6IGNvbnRhaW4gY29udGFpbi4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3
aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gY29udGFpbi4KK1BBU1MgRWxlbWVudCBo
b3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBjb250
YWluLgorUEFTUyBFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1i
ZWhhdmlvcjogbm9uZSBjb250YWluLgorUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRl
c3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIG5vbmUuCitQQVNTIEVsZW1lbnQgdmVy
dGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIG5vbmUuCitQ
QVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZp
b3I6IGNvbnRhaW4gbm9uZS4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRo
IG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gbm9uZS4KK1BBU1MgRWxlbWVudCBob3Jpem9u
dGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBub25lLgorUEFT
UyBFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjog
bm9uZSBub25lLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5j
LXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjE5NGJjNWJiODVkYjU3NTY1NDMyZmZlNzJlNDA2Mzg1ODg2NTk2NWEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1v
dmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQuaHRtbApAQCAtMCwwICsxLDg2IEBACis8IWRvY3R5
cGUgaHRtbD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL292ZXJzY3JvbGwtYmVoYXZpb3It
c3VwcG9ydC5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vZHJh
ZnRzLmNzc3dnLm9yZy9jc3Mtb3ZlcnNjcm9sbC1iZWhhdmlvciI+Cis8c3R5bGU+CisgICAgLnNj
cm9sbGluZyB7CisgICAgICAgIG92ZXJmbG93OiBzY3JvbGw7CisgICAgfQorICAgIC5zY3JvbGxD
b250ZW50IHsKKyAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICBoZWlnaHQ6IDMwMHB4Owor
ICAgIH0KKyAgICAjcm9vdCB7CisgICAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgICAgaGVpZ2h0
OiAyMDBweDsKKyAgICB9CisgICAgI3Njcm9sbGVyIHsKKyAgICAgICAgd2lkdGg6IDEwMHB4Owor
ICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgIH0KKzwvc3R5bGU+Cis8ZGl2IGlkPSdyb290JyBj
bGFzcz0ic2Nyb2xsaW5nIj4KKyAgICA8ZGl2IGlkPSdzY3JvbGxlcicgY2xhc3M9InNjcm9sbGlu
ZyI+CisgICAgICAgIDxkaXYgY2xhc3M9InNjcm9sbENvbnRlbnQiPjwvZGl2PgorICAgIDwvZGl2
PgorICAgIDxkaXYgY2xhc3M9InNjcm9sbENvbnRlbnQiPjwvZGl2PgorPC9kaXY+CisKKzxzY3Jp
cHQ+Citjb25zdCByb290ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jvb3QnKTsKK2NvbnN0
IHNjcm9sbGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Njcm9sbGVyJyk7Cit2YXIgb3Zl
cnNjcm9sbERhdGFzID0gW1siYXV0byIsICJhdXRvIiwgdHJ1ZSwgdHJ1ZV0sCisgICAgICAgICAg
ICAgICAgICAgICAgICBbImNvbnRhaW4iLCAiYXV0byIsIGZhbHNlLCB0cnVlXSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIFsibm9uZSIsICJhdXRvIiwgZmFsc2UsIHRydWVdLAorICAgICAgICAg
ICAgICAgICAgICAgICAgWyJhdXRvIiwgImNvbnRhaW4iLCB0cnVlLCBmYWxzZV0sCisgICAgICAg
ICAgICAgICAgICAgICAgICBbImNvbnRhaW4iLCAiY29udGFpbiIsIGZhbHNlLCBmYWxzZV0sCisg
ICAgICAgICAgICAgICAgICAgICAgICBbIm5vbmUiLCAiY29udGFpbiIsIGZhbHNlLCBmYWxzZV0s
CisgICAgICAgICAgICAgICAgICAgICAgICBbImF1dG8iLCAibm9uZSIsIHRydWUsIGZhbHNlXSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIFsiY29udGFpbiIsICJub25lIiwgZmFsc2UsIGZhbHNl
XSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFsibm9uZSIsICJub25lIiwgZmFsc2UsIGZhbHNl
XV07CisKK2Z1bmN0aW9uIHJlc2V0VGVzdCgpIHsKKyAgICAvLyBUcnkgdmFyaW91cyBtZXRob2Rz
IHRvIGVuc3VyZSB0aGUgZWxlbWVudCBwb3NpdGlvbiBpcyByZXNldCBpbW1lZGlhdGVseS4KKyAg
ICBzY3JvbGxlci5zY3JvbGxMZWZ0ID0gMzAwOworICAgIHNjcm9sbGVyLnNjcm9sbFRvcCA9IDMw
MDsKKyAgICBzY3JvbGxlci5zY3JvbGxUbygzMDAsIDMwMCk7CisKKyAgICByb290LnNjcm9sbExl
ZnQgPSAwOworICAgIHJvb3Quc2Nyb2xsVG9wID0gMDsKKyAgICByb290LnNjcm9sbFRvKDAsIDAp
OworfQorCitmdW5jdGlvbiBzdGFydFRlc3QoKSB7CisgICAgb3ZlcnNjcm9sbERhdGFzLmZvckVh
Y2goKFtvdmVyc2Nyb2xsWCwgb3ZlcnNjcm9sbFksIHByb3BhZ2F0ZVgsIHByb3BhZ2F0ZVldKSA9
PiB7CisgICAgICAgIHByb21pc2VfdGVzdCgoKSA9PiB7CisgICAgICAgICAgICByZXNldFRlc3Qo
KTsKKyAgICAgICAgICAgIHNjcm9sbGVyLnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclggPSBvdmVy
c2Nyb2xsWDsKKyAgICAgICAgICAgIHNjcm9sbGVyLnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclkg
PSBvdmVyc2Nyb2xsWTsKKyAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGg7CisK
KyAgICAgICAgICAgIHZhciB4ID0gc2Nyb2xsZXIuY2xpZW50V2lkdGggLyAyOworICAgICAgICAg
ICAgdmFyIHkgPSBzY3JvbGxlci5jbGllbnRIZWlnaHQgLyAyOworICAgICAgICAgICAgdmFyIGRl
bHRhID0gZ2V0RGVsdGFzKCJyaWdodCIpOworICAgICAgICAgICAgcmV0dXJuIG1vdXNlV2hlZWxT
Y3JvbGxBbmRXYWl0KHgsIHksIGRlbHRhLlgsIGRlbHRhLlksIGRlbHRhLlgsIGRlbHRhLlkpLnRo
ZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxMZWZ0
ID4gMCwgcHJvcGFnYXRlWCwgJ1Byb3BhZ2F0ZSBob3Jpem9udGFsIHNjcm9sbCcpOworICAgICAg
ICAgICAgfSk7CisgICAgICAgIH0sICdFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0
aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiAnICsgb3ZlcnNjcm9sbFggKyAnICcgKyBvdmVyc2Nyb2xs
WSArICcuJyk7CisKKyAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAgIHJl
c2V0VGVzdCgpOworICAgICAgICAgICAgc2Nyb2xsZXIuc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9y
WCA9IG92ZXJzY3JvbGxYOworICAgICAgICAgICAgc2Nyb2xsZXIuc3R5bGUub3ZlcnNjcm9sbEJl
aGF2aW9yWSA9IG92ZXJzY3JvbGxZOworCisgICAgICAgICAgICB2YXIgeCA9IHNjcm9sbGVyLmNs
aWVudFdpZHRoIC8gMjsKKyAgICAgICAgICAgIHZhciB5ID0gc2Nyb2xsZXIuY2xpZW50SGVpZ2h0
IC8gMjsKKyAgICAgICAgICAgIHZhciBkZWx0YSA9IGdldERlbHRhcygiZG93biIpOworICAgICAg
ICAgICAgcmV0dXJuIG1vdXNlV2hlZWxTY3JvbGxBbmRXYWl0KHgsIHksIGRlbHRhLlgsIGRlbHRh
LlksIGRlbHRhLlgsIGRlbHRhLlkpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGFzc2Vy
dF9lcXVhbHMocm9vdC5zY3JvbGxUb3AgPiAwLCBwcm9wYWdhdGVZLCAnUHJvcGFnYXRlIHZlcnRp
Y2FsIHNjcm9sbCcpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0sICdFbGVtZW50IHZlcnRp
Y2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogJyArIG92ZXJzY3JvbGxY
ICsgJyAnICsgb3ZlcnNjcm9sbFkgKyAnLicpOworICAgIH0pOworfQorCithZGRFdmVudExpc3Rl
bmVyKCJsb2FkIiwgc3RhcnRUZXN0KTsKKzwvc2NyaXB0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xs
LW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zh
c3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45MDBhMGI3ZDkwNWI4N2MxZGI3NjI2OTRmZDAwNjM4ZjE5NzY5
NTM3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1z
Y3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MjEgQEAKKworCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNj
cm9sbC1iZWhhdmlvcjogYXV0byBhdXRvLgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRl
c3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIGF1dG8uCitQQVNTIElmcmFtZSBob3Jp
em9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBhdXRv
LgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2
aW9yOiBjb250YWluIGF1dG8uCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdp
dGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBhdXRvLgorUEFTUyBJZnJhbWUgdmVydGljYWwg
c2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIGF1dG8uCitQQVNTIElm
cmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0
byBjb250YWluLgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Ny
b2xsLWJlaGF2aW9yOiBhdXRvIGNvbnRhaW4uCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9s
bCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBjb250YWluLgorUEFTUyBJ
ZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250
YWluIGNvbnRhaW4uCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3Zl
cnNjcm9sbC1iZWhhdmlvcjogbm9uZSBjb250YWluLgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Ny
b2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIGNvbnRhaW4uCitQQVNTIElm
cmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0
byBub25lLgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xs
LWJlaGF2aW9yOiBhdXRvIG5vbmUuCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0
IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBub25lLgorUEFTUyBJZnJhbWUgdmVy
dGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIG5vbmUu
CitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhh
dmlvcjogbm9uZSBub25lLgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBv
dmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIG5vbmUuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJl
aGF2aW9yLWlmcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRiM2I4MTFkMWJkYjMxMDM4OTA2MTYwNGQ1
YzMwNmQyY2YxOTQyZDgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9s
bGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS5odG1sCkBAIC0wLDAg
KzEsODUgQEAKKzwhZG9jdHlwZSBodG1sPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90
ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb3Zl
cnNjcm9sbC1iZWhhdmlvci1zdXBwb3J0LmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0iaGVscCIg
aHJlZj0iaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1vdmVyc2Nyb2xsLWJlaGF2aW9yIj4K
KzxzdHlsZT4KKyAgICAuc2Nyb2xsaW5nIHsKKyAgICAgICAgb3ZlcmZsb3c6IHNjcm9sbDsKKyAg
ICB9CisgICAgLnNjcm9sbENvbnRlbnQgeworICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAg
IGhlaWdodDogMzAwcHg7CisgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVk
ZWcsIHJlZCwgYmx1ZSk7CisgICAgfQorICAgICNyb290IHsKKyAgICAgICAgd2lkdGg6IDIwMHB4
OworICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAgIH0KKyAgICAjc2Nyb2xsZXIgeworICAgICAg
ICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICAgIG92ZXJzY3Jv
bGwtYmVoYXZpb3IteTogYXV0bzsKKyAgICB9Cis8L3N0eWxlPgorPGRpdiBpZD0ncm9vdCcgY2xh
c3M9InNjcm9sbGluZyI+CisgICAgPGlmcmFtZSBpZD0nc2Nyb2xsZXInIHNyY2RvYz0iPGh0bWw+
PGRpdiBzdHlsZT0nd2lkdGg6IDMwMHB4OyBoZWlnaHQ6IDMwMHB4Oyc+PC9kaXY+PC9odG1sPgor
ICAgICAgICAiPjwvaWZyYW1lPgorICAgIDxkaXYgY2xhc3M9InNjcm9sbENvbnRlbnQiPjwvZGl2
PgorPC9kaXY+CisKKzxzY3JpcHQ+CisgICAgY29uc3Qgcm9vdCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdyb290Jyk7CisgICAgY29uc3Qgc2Nyb2xsZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnc2Nyb2xsZXInKTsKKyAgICB2YXIgb3ZlcnNjcm9sbERhdGFzID0gW1siYXV0byIsICJh
dXRvIiwgdHJ1ZSwgdHJ1ZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJjb250YWlu
IiwgImF1dG8iLCBmYWxzZSwgdHJ1ZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJu
b25lIiwgImF1dG8iLCBmYWxzZSwgdHJ1ZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
WyJhdXRvIiwgImNvbnRhaW4iLCB0cnVlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgWyJjb250YWluIiwgImNvbnRhaW4iLCBmYWxzZSwgZmFsc2VdLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFsibm9uZSIsICJjb250YWluIiwgZmFsc2UsIGZhbHNlXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBbImF1dG8iLCAibm9uZSIsIHRydWUsIGZhbHNlXSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBbImNvbnRhaW4iLCAibm9uZSIsIGZhbHNlLCBmYWxz
ZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJub25lIiwgIm5vbmUiLCBmYWxzZSwg
ZmFsc2VdXTsKKyAgICBmdW5jdGlvbiByZXNldFRlc3QoKSB7CisgICAgICAgIC8vIFRyeSB2YXJp
b3VzIG1ldGhvZHMgdG8gZW5zdXJlIHRoZSBlbGVtZW50IHBvc2l0aW9uIGlzIHJlc2V0IGltbWVk
aWF0ZWx5LgorICAgICAgICBzY3JvbGxlci5jb250ZW50V2luZG93LnNjcm9sbFggPSAzMDA7Cisg
ICAgICAgIHNjcm9sbGVyLmNvbnRlbnRXaW5kb3cuc2Nyb2xsWSA9IDMwMDsKKyAgICAgICAgc2Ny
b2xsZXIuY29udGVudFdpbmRvdy5zY3JvbGxUbygzMDAsIDMwMCk7CisgICAgICAgIHJvb3Quc2Ny
b2xsTGVmdCA9IDA7CisgICAgICAgIHJvb3Quc2Nyb2xsVG9wID0gMDsKKyAgICAgICAgcm9vdC5z
Y3JvbGxUbygwLCAwKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBvdmVyc2Nyb2xsQmVoYXZpb3JU
ZXN0KCkgeworICAgICAgICBvdmVyc2Nyb2xsRGF0YXMuZm9yRWFjaCgoW292ZXJzY3JvbGxYLCBv
dmVyc2Nyb2xsWSwgcHJvcGFnYXRlWCwgcHJvcGFnYXRlWV0pID0+IHsKKyAgICAgICAgICAgIHBy
b21pc2VfdGVzdCgoKSA9PiB7CisgICAgICAgICAgICAgICAgcmVzZXRUZXN0KCk7CisgICAgICAg
ICAgICAgICAgdmFyIHRhcmdldCA9IHNjcm9sbGVyLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoImh0bWwiKVswXTsKKyAgICAgICAgICAgICAgICB0YXJnZXQuc3R5
bGUub3ZlcnNjcm9sbEJlaGF2aW9yWCA9IG92ZXJzY3JvbGxYOworICAgICAgICAgICAgICAgIHRh
cmdldC5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JZID0gb3ZlcnNjcm9sbFk7CisgICAgICAgICAg
ICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAgICAgICAgICAgICAg
dmFyIHkgPSBzY3JvbGxlci5jbGllbnRIZWlnaHQgLyAyOworICAgICAgICAgICAgICAgIHZhciBk
ZWx0YSA9IGdldERlbHRhcygicmlnaHQiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbW91c2VX
aGVlbFNjcm9sbEFuZFdhaXQoeCwgeSwgZGVsdGEuWCwgZGVsdGEuWSwgZGVsdGEuWCwgZGVsdGEu
WSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5z
Y3JvbGxMZWZ0ID4gMCwgcHJvcGFnYXRlWCwgJ1Byb3BhZ2F0ZSBob3Jpem9udGFsIHNjcm9sbCcp
OworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSwgJ0lmcmFtZSBob3Jpem9udGFs
IHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogJyArIG92ZXJzY3JvbGxYICsg
JyAnICsgb3ZlcnNjcm9sbFkgKyAnLicpOworCisgICAgICAgICAgICBwcm9taXNlX3Rlc3QoKCkg
PT4geworICAgICAgICAgICAgICAgIHJlc2V0VGVzdCgpOworICAgICAgICAgICAgICAgIHZhciB0
YXJnZXQgPSBzY3JvbGxlci5jb250ZW50V2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJodG1sIilbMF07CisgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLm92ZXJzY3JvbGxC
ZWhhdmlvclggPSBvdmVyc2Nyb2xsWDsKKyAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUub3Zl
cnNjcm9sbEJlaGF2aW9yWSA9IG92ZXJzY3JvbGxZOworCisgICAgICAgICAgICAgICAgdmFyIHgg
PSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAgICAgICAgICAgICAgdmFyIHkgPSBzY3Jv
bGxlci5jbGllbnRIZWlnaHQgLyAyOworICAgICAgICAgICAgICAgIHZhciBkZWx0YSA9IGdldERl
bHRhcygiZG93biIpOworICAgICAgICAgICAgICAgIHJldHVybiBtb3VzZVdoZWVsU2Nyb2xsQW5k
V2FpdCh4LCB5LCBkZWx0YS5YLCBkZWx0YS5ZLCBkZWx0YS5YLCBkZWx0YS5ZKS50aGVuKCgpID0+
IHsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbFRvcCA+IDAs
IHByb3BhZ2F0ZVksICdQcm9wYWdhdGUgdmVydGljYWwgc2Nyb2xsJyk7CisgICAgICAgICAgICAg
ICAgfSk7CisgICAgICAgICAgICB9LCAnSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGgg
b3ZlcnNjcm9sbC1iZWhhdmlvcjogJyArIG92ZXJzY3JvbGxYICsgJyAnICsgb3ZlcnNjcm9sbFkg
KyAnLicpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBzY3JvbGxlci5hZGRFdmVudExpc3Rl
bmVyKCJsb2FkIiwgb3ZlcnNjcm9sbEJlaGF2aW9yVGVzdCk7Cis8L3NjcmlwdD4KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGlu
Zy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJz
Y3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmYzOTViNjQ4OGQwODcwYjk1NjFjMDI4Njc5ZDdlMTVhNDdmY2U2ZTkKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xs
LWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQg
QEAKKworUEFTUyBVbnNjcm9sbGFibGUgZWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdp
dGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4KK1BBU1MgVW5zY3JvbGxhYmxlIGVsZW1lbnQg
dmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLgorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Ny
b2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1l
bGVtZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmI0YjA2ZTllNjQxOTM3MDgwODEyNzhkOTEwMDNjMDVk
NTcyNGIyNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5
bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRtbApA
QCAtMCwwICsxLDY2IEBACis8IWRvY3R5cGUgaHRtbD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL292ZXJzY3JvbGwtYmVoYXZpb3Itc3VwcG9ydC5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9
ImhlbHAiIGhyZWY9Imh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3Mtb3ZlcnNjcm9sbC1iZWhh
dmlvciI+Cis8c3R5bGU+CisgICAgLnNjcm9sbGluZyB7CisgICAgICAgIG92ZXJmbG93OiBzY3Jv
bGw7CisgICAgfQorICAgIC5zY3JvbGxDb250ZW50IHsKKyAgICAgICAgd2lkdGg6IDMwMHB4Owor
ICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgIH0KKyAgICAjcm9vdCB7CisgICAgICAgIHdpZHRo
OiAyMDBweDsKKyAgICAgICAgaGVpZ2h0OiAyMDBweDsKKyAgICB9CisgICAgI3Njcm9sbGVyIHsK
KyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgICBv
dmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lOworICAgICAgICBvdmVyZmxvdzogdmlzaWJsZTsKKyAg
ICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmVkLCBibHVlKTsKKyAg
ICB9Cis8L3N0eWxlPgorPGRpdiBpZD0icm9vdCIgY2xhc3M9InNjcm9sbGluZyI+CisgICAgPGRp
diBpZD0ic2Nyb2xsZXIiPgorICAgICAgICA8ZGl2IGNsYXNzPSJzY3JvbGxDb250ZW50Ij48L2Rp
dj4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJzY3JvbGxDb250ZW50Ij48L2Rpdj4KKzwv
ZGl2PgorCis8c2NyaXB0PgorY29uc3Qgcm9vdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdy
b290Jyk7Citjb25zdCBzY3JvbGxlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY3JvbGxl
cicpOworCitmdW5jdGlvbiByZXNldFRlc3QoKSB7CisgICAgcm9vdC5zY3JvbGxMZWZ0ID0gMDsK
KyAgICByb290LnNjcm9sbFRvcCA9IDA7CisgICAgcm9vdC5zY3JvbGxUbygwLCAwKTsKK30KKwor
ZnVuY3Rpb24gc3RhcnRUZXN0KCkgeworICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAg
ICAgICAgICAgcmVzZXRUZXN0KCk7CisgICAgICAgICAgICB2YXIgeCA9IHNjcm9sbGVyLmNsaWVu
dFdpZHRoIC8gMjsKKyAgICAgICAgICAgIHZhciB5ID0gc2Nyb2xsZXIuY2xpZW50SGVpZ2h0IC8g
MjsKKyAgICAgICAgICAgIHZhciBkZWx0YSA9IGdldERlbHRhcygicmlnaHQiKTsKKyAgICAgICAg
ICAgIHJldHVybiBtb3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCh4LCB5LCBkZWx0YS5YLCBkZWx0YS5Z
LCBkZWx0YS5YLCBkZWx0YS5ZKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRf
ZXF1YWxzKHJvb3Quc2Nyb2xsTGVmdCA+IDAsIHRydWUsICdQcm9wYWdhdGUgaG9yaXpvbnRhbCBz
Y3JvbGwnKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9LCAnVW5zY3JvbGxhYmxlIGVsZW1l
bnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUu
Jyk7CisKKyAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAgIHJlc2V0VGVz
dCgpOworICAgICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAg
ICAgICAgICB2YXIgeSA9IHNjcm9sbGVyLmNsaWVudEhlaWdodCAvIDI7CisgICAgICAgICAgICB2
YXIgZGVsdGEgPSBnZXREZWx0YXMoImRvd24iKTsKKyAgICAgICAgICAgIHJldHVybiBtb3VzZVdo
ZWVsU2Nyb2xsQW5kV2FpdCh4LCB5LCBkZWx0YS5YLCBkZWx0YS5ZLCBkZWx0YS5YLCBkZWx0YS5Z
KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xs
VG9wID4gMCwgdHJ1ZSwgJ1Byb3BhZ2F0ZSB2ZXJ0aWNhbCBzY3JvbGwnKTsKKyAgICAgICAgICAg
IH0pOworICAgICAgICB9LCAnVW5zY3JvbGxhYmxlIGVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRl
c3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLicpOworfQorCithZGRFdmVudExpc3Rl
bmVyKCJsb2FkIiwgc3RhcnRUZXN0KTsKKzwvc2NyaXB0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xs
LW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9y
LXVuc2Nyb2xsYWJsZS1pZnJhbWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdmYTU5Y2NiYTc5
YWVmZjMzZGE3MGU5M2Q0ODhhMDdlZWM5YzU2OTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Ny
b2xsYWJsZS1pZnJhbWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorCisKK1BBU1MgVW5z
Y3JvbGxhYmxlIGlmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1i
ZWhhdmlvcjogbm9uZS4KK1BBU1MgVW5zY3JvbGxhYmxlIGlmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwg
dGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5z
Y3JvbGxhYmxlLWlmcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1z
Y3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYmRmNjc1YWM0MzcyOWQzZGJiNGY1ZjUzMjQ4OTEyM2U2NjlhNTdiMgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3Jv
bGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sCkBAIC0wLDAgKzEsNjUgQEAKKzwh
ZG9jdHlwZSBodG1sPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVw
b3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb3ZlcnNjcm9sbC1iZWhh
dmlvci1zdXBwb3J0LmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6
Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1vdmVyc2Nyb2xsLWJlaGF2aW9yIj4KKzxzdHlsZT4KKyAg
ICAuc2Nyb2xsaW5nIHsKKyAgICAgICAgb3ZlcmZsb3c6IHNjcm9sbDsKKyAgICB9CisgICAgLnNj
cm9sbENvbnRlbnQgeworICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgIGhlaWdodDogMzAw
cHg7CisgICAgfQorICAgICNyb290IHsKKyAgICAgICAgd2lkdGg6IDIwMHB4OworICAgICAgICBo
ZWlnaHQ6IDIwMHB4OworICAgIH0KKyAgICAjc2Nyb2xsZXIgeworICAgICAgICB3aWR0aDogMjAw
cHg7CisgICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgICAgIG92ZXJzY3JvbGwtYmVoYXZpb3I6
IG5vbmU7CisgICAgICAgIG92ZXJmbG93OiB2aXNpYmxlOworICAgICAgICBiYWNrZ3JvdW5kOiBs
aW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZWQsIGJsdWUpOworICAgIH0KKzwvc3R5bGU+Cis8ZGl2
IGlkPSdyb290JyBjbGFzcz0ic2Nyb2xsaW5nIj4KKyAgICA8aWZyYW1lIGlkPSdzY3JvbGxlcicg
c3JjZG9jPSI8aHRtbCBzdHlsZT0nb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZTsnPjxkaXYgc3R5
bGU9J3dpZHRoOiAxMDBweDsgaGVpZ2h0OiAxMDBweDsnPjwvZGl2PjwvaHRtbD4KKyAgICAgICAg
Ij48L2lmcmFtZT4KKyAgICA8ZGl2IGNsYXNzPSJzY3JvbGxDb250ZW50Ij48L2Rpdj4KKzwvZGl2
PgorCis8c2NyaXB0PgorY29uc3Qgcm9vdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyb290
Jyk7Citjb25zdCBzY3JvbGxlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY3JvbGxlcicp
OworCitmdW5jdGlvbiByZXNldFRlc3QoKSB7CisgICAgcm9vdC5zY3JvbGxMZWZ0ID0gMDsKKyAg
ICByb290LnNjcm9sbFRvcCA9IDA7CisgICAgcm9vdC5zY3JvbGxUbygwLCAwKTsKK30KKworZnVu
Y3Rpb24gc3RhcnRUZXN0KCkgeworICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgICAg
ICAgICAgcmVzZXRUZXN0KCk7CisgICAgICAgICAgICB2YXIgeCA9IHNjcm9sbGVyLmNsaWVudFdp
ZHRoIC8gMjsKKyAgICAgICAgICAgIHZhciB5ID0gc2Nyb2xsZXIuY2xpZW50SGVpZ2h0IC8gMjsK
KyAgICAgICAgICAgIHZhciBkZWx0YSA9IGdldERlbHRhcygicmlnaHQiKTsKKyAgICAgICAgICAg
IHJldHVybiBtb3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCh4LCB5LCBkZWx0YS5YLCBkZWx0YS5ZLCBk
ZWx0YS5YLCBkZWx0YS5ZKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1
YWxzKHJvb3Quc2Nyb2xsTGVmdCA+IDAsIHRydWUsICdQcm9wYWdhdGUgaG9yaXpvbnRhbCBzY3Jv
bGwnKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9LCAnVW5zY3JvbGxhYmxlIGlmcmFtZSBo
b3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4nKTsK
KworICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgICAgICAgICAgcmVzZXRUZXN0KCk7
CisgICAgICAgICAgICB2YXIgeCA9IHNjcm9sbGVyLmNsaWVudFdpZHRoIC8gMjsKKyAgICAgICAg
ICAgIHZhciB5ID0gc2Nyb2xsZXIuY2xpZW50SGVpZ2h0IC8gMjsKKyAgICAgICAgICAgIHZhciBk
ZWx0YSA9IGdldERlbHRhcygiZG93biIpOworICAgICAgICAgICAgcmV0dXJuIG1vdXNlV2hlZWxT
Y3JvbGxBbmRXYWl0KHgsIHksIGRlbHRhLlgsIGRlbHRhLlksIGRlbHRhLlgsIGRlbHRhLlkpLnRo
ZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxUb3Ag
PiAwLCB0cnVlLCAnUHJvcGFnYXRlIHZlcnRpY2FsIHNjcm9sbCcpOworICAgICAgICAgICAgfSk7
CisgICAgICAgIH0sICdVbnNjcm9sbGFibGUgaWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdp
dGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4nKTsKK30KKworYWRkRXZlbnRMaXN0ZW5lcigi
bG9hZCIsIHN0YXJ0VGVzdCk7Cis8L3NjcmlwdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGIxMWQzMTdk
YjgxZDg4MDY5N2UyNDEyODkwNjczNmJmMzFjY2JiM2UuLmVjNjBlNDk0NjRkNGI4YWZkNjE4NmZh
MWYxNDY5OTk0YjVkYzAyZmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9U
ZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0
YXRpb25zCkBAIC04MTQsNiArODE0LDEyIEBAIHN2Zy90ZXh0L3NlbGVjdGlvbi1kb3VibGVjbGlj
ay5zdmcgWyBTa2lwIF0KIHN2Zy90ZXh0L3NlbGVjdGlvbi10cmlwbGVjbGljay5zdmcgWyBTa2lw
IF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1zaGFkb3ctcGFydHMv
aW52YWxpZGF0aW9uLXBhcnQtcHNldWRvLmh0bWwgWyBTa2lwIF0KIAorIyBPdmVyc2Nyb2xsLWJl
aGF2aW9yIGlzIG5vdCBzdXBwb3J0ZWQgb24gaU9TIHlldDogaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzMzc4OAorZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3Zl
cnNjcm9sbC1iZWhhdmlvci1lbGVtZW50Lmh0bWwgWyBTa2lwIF0KK2Zhc3Qvc2Nyb2xsaW5nL3N5
bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0bWwgWyBTa2lwIF0KK2Zhc3Qv
c2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVs
ZW1lbnQuaHRtbCBbIFNraXAgXQorZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9s
bC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLmh0bWwgWyBTa2lwIF0KKwogIyBJT1MgZG9l
cyBub3QgaW1wbGVtZW50IHNldEF1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkCiBlZGl0aW5n
L2luc2VydGluZy90eXBpbmctc3BhY2UtdG8tdHJpZ2dlci1zbWFydC1saW5rLmh0bWwgWyBTa2lw
IF0KIGVkaXRpbmcvaW5zZXJ0aW5nL3NtYXJ0LWxpbmstd2hlbi1jYXJldC1pcy1tb3ZlZC1iZWZv
cmUtVVJMLmh0bWwgWyBTa2lwIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy13azEvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVz
dEV4cGVjdGF0aW9ucwppbmRleCAzYjJjNDlkNjUwMTZlMjQ5MGIwNTFhYmI1NGM0Yjg5ODkxZGUy
ZGU3Li40ODQ1ZjYxMmI1NzVlZDY1NjJhOGMxMTg5NWFkYTE2NDZmNTY4MmJmIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCkBAIC01NTYsNiArNTU2
LDEwIEBAIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1zY3JvbGwtc25h
cC9zY3JvbGwtdGFyZ2V0LXBhZGRpbmctMDAxLmh0CiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3Mtc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtc3RvcC1jaGFuZ2UuaHRtbCBb
IEZhaWx1cmUgXQogY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwtcGFkZGluZy1tYWluZnJhbWUtcGFn
aW5nLmh0bWwgWyBGYWlsdXJlIF0KIAorIyBMYWNrIG9mIHdheXMgdG8gY29udHJvbCB0aGUgY3Jv
c3MtZnJhbWUgc2Nyb2xsIGNoYWluaW5nIGluIFdLMS4KK2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Ny
b2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0bWwgWyBTa2lwIF0KK2Zhc3Qvc2Nyb2xs
aW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5o
dG1sIFsgU2tpcCBdCisKICMjIyBFTkQgT0YgKDIpIEZhaWx1cmVzIHdpdGhvdXQgYnVnIHJlcG9y
dHMKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucwppbmRleCBhMmU5ZjUwMzA3ODMwNmM5MTQ5
MDAyZTNiZmM4YWFmOWU4ZWUwZGNkLi42NmFhNjRhYWNkZjU2NzczZWQzNzliZTQyNjhmNDIzNjIx
ZWYxNzY4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0
aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucwpAQCAt
NjQ0LDYgKzY0NCwxMiBAQCBwb2ludGVyLWxvY2svIFsgU2tpcCBdCiBodHRwL3Rlc3RzL3BvaW50
ZXItbG9jay8gWyBTa2lwIF0KIGZhc3QvanMtcHJvbWlzZS9qcy1wcm9taXNlLWludmFsaWQtY29u
dGV4dC1hY2Nlc3MuaHRtbCBbIFNraXAgXQogCisjIE92ZXJzY3JvbGwtYmVoYXZpb3IgaXMgbm90
IHN1cHBvcnRlZCBvbiBXaW5kb3dzCitmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Ny
b2xsLWJlaGF2aW9yLWVsZW1lbnQuaHRtbCBbIFNraXAgXQorZmFzdC9zY3JvbGxpbmcvc3luYy1z
Y3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUuaHRtbCBbIFNraXAgXQorZmFzdC9zY3Jv
bGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVu
dC5odG1sIFsgU2tpcCBdCitmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJl
aGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUuaHRtbCBbIFNraXAgXQorCiAjIERhdGFsaXN0IGlz
IHVuc3VwcG9ydGVkIG9uIFdpbmRvd3MKIGFjY2Vzc2liaWxpdHkvZGF0YWxpc3QuaHRtbCBbIFdv
bnRGaXggXQogZmFzdC9mb3Jtcy9kYXRhbGlzdCBbIFdvbnRGaXggXQo=
</data>
<flag name="commit-queue"
          id="476694"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450311</attachid>
            <date>2022-01-28 21:55:55 -0800</date>
            <delta_ts>2022-01-28 23:55:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222968-20220128215555.patch</filename>
            <type>text/plain</type>
            <size>37751</size>
            <attacher name="Nikos Mouchtaris">nmouchtaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4NzgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTk2NDIzYTE4N2NiMTkz
MTgxNmMwMDk4YWY0NDQ5ZTBhODQ1ODE2OS4uZTRlOWNmNzJiZTUzNzBlMTUzNmY4ZDI4ZjIxM2M3
ZmQzN2M3MWZhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDIyLTAxLTI4ICBOaWtv
bGFvcyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxl
bWVudCBDU1Mgb3ZlcnNjcm9sbC1iZWhhdmlvciBmb3Igc3luY2hyb25vdXMgc2Nyb2xsCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI5NjgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0czogZmFzdC9z
Y3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50Lmh0bWwKKyAg
ICAgICAgICAgICAgIGZhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZp
b3ItaWZyYW1lLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xs
LW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRtbAorICAgICAgICAg
ICAgICAgZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNj
cm9sbGFibGUtaWZyYW1lLmh0bWwKKworICAgICAgICBTcGxpdCB1cCBwYXRjaCBieSBDYXRoaWUg
Q2hlbiBhbmQgRnJlZGVyaWMgV2FuZy4gQWRkIGZ1bmN0aW9uIGZvciBibG9ja2luZyBzY3JvbGwg
Y2hhaW5pbmcKKyAgICAgICAgYW5kIGZpbHRlcmluZyBzY3JvbGwgZGVsdGEgZGVwZW5kaW5nIG9u
IHRoZSB2YWx1ZXMgb2Ygb3ZlcnNjcm9sbCBiZWhhdmlvciBmb3IgYSBzY3JvbGxhYmxlCisgICAg
ICAgIGFyZWEuIFRoaXMgcGF0Y2ggaXMgZm9yIHN5bmNocm9ub3VzIHNjcm9sbGluZyBvbmx5Lgor
CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZl
bnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6
c2Nyb2xsVmlhTm9uUGxhdGZvcm1FdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRs
ZXI6OmhhbmRsZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94KToKKyAgICAgICAg
KFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6c2Nyb2xsYWJsZUFyZWFDYW5IYW5kbGVFdmVudCk6Cisg
ICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuaDoKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5o
OgorICAgICAgICAqIHBhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OmZpbmRFbmNsb3NpbmdTY3JvbGxhYmxlQ29udGFpbmVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9TY3JvbGxhYmxlQXJlYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6
ZGVsdGFGb3JQcm9wYWdhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxl
QXJlYTo6c2hvdWxkQmxvY2tTY3JvbGxQcm9wYWdhdGlvbiBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vU2Nyb2xsYWJsZUFyZWEuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGFibGVBcmVh
OjpoYXNIb3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGFibGVBcmVhOjpoYXNWZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvciBjb25zdCk6
CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW06CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxBbmltYXRvck1hYzo6c2hvdWxkRm9yd2FyZFdoZWVsRXZlbnRzVG9QYXJlbnQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JNYWM6OmFsbG93c1ZlcnRpY2Fs
U3RyZXRjaGluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck1hYzo6
YWxsb3dzSG9yaXpvbnRhbFN0cmV0Y2hpbmcgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGluZ0VmZmVjdHNDb250cm9sbGVyOjp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmFjY3VtdWxhdGVPZmZzZXRUb3dhcmRzQW5jZXN0b3IpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmg6CisKIDIwMjItMDEtMjggIE5pa29sYW9zIE1vdWNo
dGFyaXMgIDxubW91Y2h0YXJpc0BhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IENTUyBv
dmVyc2Nyb2xsLWJlaGF2aW9yIGZvciBhc3luY2hyb25vdXMgc2Nyb2xsIG9uIE1hYwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDE2ZDUzODlkZmZmYWMzMjU0ZmNlZjRmYTc5
YTA3NjU1ZGQwMDMzMDIuLjY0ZTBmNjJiNmFhOTlkMTU1M2ZkZmI2ZGNhZTg4YjU2MDQ3M2I3NjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTMwMjcsMTEgKzMwMjcsMTcg
QEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnRJbnRlcm5hbChjb25zdCBQbGF0
Zm9ybVdoZWVsRXZlbnQmIGV2ZW50LCBPcHQKICAgICBpZiAoYWxsb3dTY3JvbGxpbmcpCiAgICAg
ICAgIGFsbG93U2Nyb2xsaW5nID0gbV9mcmFtZS5wYWdlKCktPnNjcm9sbExhdGNoaW5nQ29udHJv
bGxlcigpLmxhdGNoaW5nQWxsb3dzU2Nyb2xsaW5nSW5GcmFtZShtX2ZyYW1lLCBzY3JvbGxhYmxl
QXJlYSk7CiAjZW5kaWYKKyAgICBhdXRvIGFkanVzdGVkV2hlZWxFdmVudCA9IGV2ZW50OworICAg
IGF1dG8gZmlsdGVyZWREZWx0YSA9IGFkanVzdGVkV2hlZWxFdmVudC5kZWx0YSgpOworICAgIGZp
bHRlcmVkRGVsdGEgPSB2aWV3LT5kZWx0YUZvclByb3BhZ2F0aW9uKGZpbHRlcmVkRGVsdGEpOwor
ICAgIGlmICh2aWV3LT5zaG91bGRCbG9ja1Njcm9sbFByb3BhZ2F0aW9uKGZpbHRlcmVkRGVsdGEp
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGlmIChhbGxvd1Njcm9sbGluZykgewogICAg
ICAgICAvLyBGSVhNRTogcHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxpbmcoKSBpcyBvbmx5IGNh
bGxlZCBmb3IgRnJhbWVWaWV3IHNjcm9sbGluZywgbm90IG92ZXJmbG93IHNjcm9sbGluZywgd2hp
Y2ggaXMgY29uZnVzaW5nLgotICAgICAgICBoYW5kbGVkRXZlbnQgPSBwcm9jZXNzV2hlZWxFdmVu
dEZvclNjcm9sbGluZyhldmVudCwgc2Nyb2xsYWJsZUFyZWEsIGhhbmRsaW5nKTsKLSAgICAgICAg
cHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxTbmFwKGV2ZW50LCBzY3JvbGxhYmxlQXJlYSk7Cisg
ICAgICAgIGFkanVzdGVkV2hlZWxFdmVudCA9IGFkanVzdGVkV2hlZWxFdmVudC5jb3B5V2l0aERl
bHRhQW5kVmVsb2NpdHkoZmlsdGVyZWREZWx0YSwgYWRqdXN0ZWRXaGVlbEV2ZW50LnNjcm9sbGlu
Z1ZlbG9jaXR5KCkpOworICAgICAgICBoYW5kbGVkRXZlbnQgPSBwcm9jZXNzV2hlZWxFdmVudEZv
clNjcm9sbGluZyhhZGp1c3RlZFdoZWVsRXZlbnQsIHNjcm9sbGFibGVBcmVhLCBoYW5kbGluZyk7
CisgICAgICAgIHByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsU25hcChhZGp1c3RlZFdoZWVsRXZl
bnQsIHNjcm9sbGFibGVBcmVhKTsKICAgICB9CiAKICAgICByZXR1cm4gaGFuZGxlZEV2ZW50OwpA
QCAtMzA1MCwxOCArMzA1NiwyMCBAQCBzdGF0aWMgdm9pZCBoYW5kbGVXaGVlbEV2ZW50UGhhc2VJ
blNjcm9sbGFibGVBcmVhKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYQogCiBzdGF0aWMg
Ym9vbCBzY3JvbGxWaWFOb25QbGF0Zm9ybUV2ZW50KFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxl
QXJlYSwgY29uc3QgV2hlZWxFdmVudCYgd2hlZWxFdmVudCkKIHsKKyAgICBhdXRvIGZpbHRlcmVk
RGVsdGEgPSBGbG9hdFNpemUod2hlZWxFdmVudC5kZWx0YVgoKSwgd2hlZWxFdmVudC5kZWx0YVko
KSk7CisgICAgZmlsdGVyZWREZWx0YSA9IHNjcm9sbGFibGVBcmVhLmRlbHRhRm9yUHJvcGFnYXRp
b24oZmlsdGVyZWREZWx0YSk7CiAgICAgU2Nyb2xsR3JhbnVsYXJpdHkgc2Nyb2xsR3JhbnVsYXJp
dHkgPSB3aGVlbEdyYW51bGFyaXR5VG9TY3JvbGxHcmFudWxhcml0eSh3aGVlbEV2ZW50LmRlbHRh
TW9kZSgpKTsKICAgICBib29sIGRpZEhhbmRsZVdoZWVsRXZlbnQgPSBmYWxzZTsKLSAgICBpZiAo
ZmxvYXQgYWJzb2x1dGVEZWx0YSA9IHN0ZDo6YWJzKHdoZWVsRXZlbnQuZGVsdGFYKCkpKQotICAg
ICAgICBkaWRIYW5kbGVXaGVlbEV2ZW50IHw9IHNjcm9sbGFibGVBcmVhLnNjcm9sbCh3aGVlbEV2
ZW50LmRlbHRhWCgpID4gMCA/IFNjcm9sbFJpZ2h0IDogU2Nyb2xsTGVmdCwgc2Nyb2xsR3JhbnVs
YXJpdHksIGFic29sdXRlRGVsdGEpOworICAgIGlmIChmbG9hdCBhYnNvbHV0ZURlbHRhID0gc3Rk
OjphYnMoZmlsdGVyZWREZWx0YS53aWR0aCgpKSkKKyAgICAgICAgZGlkSGFuZGxlV2hlZWxFdmVu
dCB8PSBzY3JvbGxhYmxlQXJlYS5zY3JvbGwoZmlsdGVyZWREZWx0YS53aWR0aCgpID4gMCA/IFNj
cm9sbFJpZ2h0IDogU2Nyb2xsTGVmdCwgc2Nyb2xsR3JhbnVsYXJpdHksIGFic29sdXRlRGVsdGEp
OwogCi0gICAgaWYgKGZsb2F0IGFic29sdXRlRGVsdGEgPSBzdGQ6OmFicyh3aGVlbEV2ZW50LmRl
bHRhWSgpKSkKLSAgICAgICAgZGlkSGFuZGxlV2hlZWxFdmVudCB8PSBzY3JvbGxhYmxlQXJlYS5z
Y3JvbGwod2hlZWxFdmVudC5kZWx0YVkoKSA+IDAgPyBTY3JvbGxEb3duIDogU2Nyb2xsVXAsIHNj
cm9sbEdyYW51bGFyaXR5LCBhYnNvbHV0ZURlbHRhKTsKKyAgICBpZiAoZmxvYXQgYWJzb2x1dGVE
ZWx0YSA9IHN0ZDo6YWJzKGZpbHRlcmVkRGVsdGEuaGVpZ2h0KCkpKQorICAgICAgICBkaWRIYW5k
bGVXaGVlbEV2ZW50IHw9IHNjcm9sbGFibGVBcmVhLnNjcm9sbChmaWx0ZXJlZERlbHRhLmhlaWdo
dCgpID4gMCA/IFNjcm9sbERvd24gOiBTY3JvbGxVcCwgc2Nyb2xsR3JhbnVsYXJpdHksIGFic29s
dXRlRGVsdGEpOwogCiAgICAgcmV0dXJuIGRpZEhhbmRsZVdoZWVsRXZlbnQ7CiB9CiAKLWJvb2wg
RXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2luZ0JveChO
b2RlKiBzdGFydE5vZGUsIGNvbnN0IFdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIGNvbnN0IEZsb2F0
U2l6ZSYgZmlsdGVyZWRQbGF0Zm9ybURlbHRhLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlcmVkVmVs
b2NpdHksIE9wdGlvblNldDxFdmVudEhhbmRsaW5nPiBldmVudEhhbmRsaW5nKQorYm9vbCBFdmVu
dEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94KE5vZGUq
IHN0YXJ0Tm9kZSwgY29uc3QgV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgRmxvYXRTaXplJiBmaWx0
ZXJlZFBsYXRmb3JtRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyZWRWZWxvY2l0eSwgT3B0
aW9uU2V0PEV2ZW50SGFuZGxpbmc+IGV2ZW50SGFuZGxpbmcpCiB7CiAgICAgYm9vbCBzaG91bGRI
YW5kbGVFdmVudCA9IHdoZWVsRXZlbnQuZGVsdGFYKCkgfHwgd2hlZWxFdmVudC5kZWx0YVkoKTsK
ICNpZiBFTkFCTEUoV0hFRUxfRVZFTlRfTEFUQ0hJTkcpCkBAIC0zMDkxLDggKzMwOTksMTYgQEAg
Ym9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5n
Qm94KE5vZGUqIHN0YXJ0Tm9kZSwgY28KICAgICB9OwogCiAgICAgUmVuZGVyQm94KiBjdXJyZW50
RW5jbG9zaW5nQm94ID0gJmluaXRpYWxFbmNsb3NpbmdCb3g7CisjaWYgUExBVEZPUk0oTUFDKQor
ICAgIGF1dG8gYmlhc2VkRGVsdGEgPSBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6d2hlZWxE
ZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoRmxvYXRTaXplKHdoZWVsRXZlbnQuZGVsdGFYKCks
IHdoZWVsRXZlbnQuZGVsdGFZKCkpKTsKKyNlbHNlCisgICAgYXV0byBiaWFzZWREZWx0YSA9IEZs
b2F0U2l6ZSh3aGVlbEV2ZW50LmRlbHRhWCgpLCB3aGVlbEV2ZW50LmRlbHRhWSgpKTsKKyNlbmRp
ZgogICAgIHdoaWxlIChjdXJyZW50RW5jbG9zaW5nQm94KSB7CiAgICAgICAgIGlmIChhdXRvKiBi
b3hTY3JvbGxhYmxlQXJlYSA9IHNjcm9sbGFibGVBcmVhRm9yQm94KCpjdXJyZW50RW5jbG9zaW5n
Qm94KSkgeworICAgICAgICAgICAgYmlhc2VkRGVsdGEgPSBib3hTY3JvbGxhYmxlQXJlYS0+ZGVs
dGFGb3JQcm9wYWdhdGlvbihiaWFzZWREZWx0YSk7CisgICAgICAgICAgICBpZiAoYm94U2Nyb2xs
YWJsZUFyZWEgJiYgYm94U2Nyb2xsYWJsZUFyZWEtPnNob3VsZEJsb2NrU2Nyb2xsUHJvcGFnYXRp
b24oYmlhc2VkRGVsdGEpKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAg
ICAgYXV0byBwbGF0Zm9ybUV2ZW50ID0gd2hlZWxFdmVudC51bmRlcmx5aW5nUGxhdGZvcm1FdmVu
dCgpOwogICAgICAgICAgICAgYm9vbCBzY3JvbGxpbmdXYXNIYW5kbGVkOwogICAgICAgICAgICAg
aWYgKHBsYXRmb3JtRXZlbnQpIHsKQEAgLTMxMTUsNyArMzEzMSw3IEBAIGJvb2wgRXZlbnRIYW5k
bGVyOjpoYW5kbGVXaGVlbEV2ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2luZ0JveChOb2RlKiBzdGFy
dE5vZGUsIGNvCiBib29sIEV2ZW50SGFuZGxlcjo6c2Nyb2xsYWJsZUFyZWFDYW5IYW5kbGVFdmVu
dChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIFNjcm9sbGFibGVBcmVhJiBz
Y3JvbGxhYmxlQXJlYSkKIHsKICNpZiBQTEFURk9STShNQUMpCi0gICAgYXV0byBiaWFzZWREZWx0
YSA9IFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNW
ZXJ0aWNhbCh3aGVlbEV2ZW50KTsKKyAgICBhdXRvIGJpYXNlZERlbHRhID0gU2Nyb2xsaW5nRWZm
ZWN0c0NvbnRyb2xsZXI6OndoZWVsRGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRpY2FsKHdoZWVsRXZl
bnQuZGVsdGEoKSk7CiAjZWxzZQogICAgIGF1dG8gYmlhc2VkRGVsdGEgPSB3aGVlbEV2ZW50LmRl
bHRhKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5k
bGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCmluZGV4IDZiMzU5ZTc1
NTZhMmQ2YTE0ODVlMDRlOGMyMGZhNWY0NzBjNWEwNGEuLmVhNDM0ODg5MTE1NDkyMTU4ODYzNTNm
ZWU2ODZhZmZlNzMyYmEzNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaApAQCAtNDc1
LDcgKzQ3NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwcm9jZXNzV2hlZWxFdmVudEZvclNjcm9s
bFNuYXAoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgY29uc3QgV2Vha1B0cjxTY3JvbGxhYmxl
QXJlYT4mKTsKICAgICBib29sIGNvbXBsZXRlV2lkZ2V0V2hlZWxFdmVudChjb25zdCBQbGF0Zm9y
bVdoZWVsRXZlbnQmLCBjb25zdCBXZWFrUHRyPFdpZGdldD4mLCBjb25zdCBXZWFrUHRyPFNjcm9s
bGFibGVBcmVhPiYpOwogCi0gICAgYm9vbCBoYW5kbGVXaGVlbEV2ZW50SW5BcHByb3ByaWF0ZUVu
Y2xvc2luZ0JveChOb2RlKiBzdGFydE5vZGUsIGNvbnN0IFdoZWVsRXZlbnQmLCBjb25zdCBGbG9h
dFNpemUmIGZpbHRlcmVkUGxhdGZvcm1EZWx0YSwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJlZFZl
bG9jaXR5LCBPcHRpb25TZXQ8RXZlbnRIYW5kbGluZz4pOworICAgIGJvb2wgaGFuZGxlV2hlZWxF
dmVudEluQXBwcm9wcmlhdGVFbmNsb3NpbmdCb3goTm9kZSogc3RhcnROb2RlLCBjb25zdCBXaGVl
bEV2ZW50JiwgRmxvYXRTaXplJiBmaWx0ZXJlZFBsYXRmb3JtRGVsdGEsIGNvbnN0IEZsb2F0U2l6
ZSYgZmlsdGVyZWRWZWxvY2l0eSwgT3B0aW9uU2V0PEV2ZW50SGFuZGxpbmc+KTsKIAogICAgIGJv
b2wgaGFuZGxlV2hlZWxFdmVudEluU2Nyb2xsYWJsZUFyZWEoY29uc3QgUGxhdGZvcm1XaGVlbEV2
ZW50JiwgU2Nyb2xsYWJsZUFyZWEmLCBPcHRpb25TZXQ8RXZlbnRIYW5kbGluZz4pOwogICAgIHN0
ZDo6b3B0aW9uYWw8V2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU+IHVwZGF0ZVdoZWVsR2VzdHVyZVN0
YXRlKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIE9wdGlvblNldDxFdmVudEhhbmRsaW5nPik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCA2MDJkNjBjOWM5NzA1NWY2NDhjYTQ4ZmZmYmY5
YzQyYjVjMTZmOTMzLi5kMThmNmU4NzA3NjEwYjNjOTE0ODVlMTBhMzhiNTEzMTc2OWQwYWU4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTcwMiw2ICs3MDIsOCBAQCBwdWJsaWM6CiAgICAg
CiAgICAgT3ZlcnNjcm9sbEJlaGF2aW9yIGhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBj
b25zdCBmaW5hbDsKICAgICBPdmVyc2Nyb2xsQmVoYXZpb3IgdmVydGljYWxPdmVyc2Nyb2xsQmVo
YXZpb3IoKSBjb25zdCBmaW5hbDsKKyAgICBib29sIGhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZp
b3JQcmV2ZW50c1Byb3BhZ2F0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gaG9yaXpvbnRhbE92
ZXJzY3JvbGxCZWhhdmlvcigpICE9IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0bzsgfQorICAgIGJv
b2wgdmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3JQcmV2ZW50c1Byb3BhZ2F0aW9uKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gdmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSAhPSBPdmVyc2Nyb2xs
QmVoYXZpb3I6OkF1dG87IH0KIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBGcmFtZVZpZXcoRnJh
bWUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1h
Yy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbQppbmRleCA1
NjdmMWVlMjIzNzYzNmY5YjMwODBhODkxMjViNDQ3MWUxMjYwZjdjLi4yZDRkZTRhMWMzZDE5ZjU2
NjM1YzdiYmI4NTY1OTFjNTIzZDNmMTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L21hYy9FdmVudEhhbmRsZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZl
bnRIYW5kbGVyTWFjLm1tCkBAIC04MTUsNiArODE1LDggQEAgc3RhdGljIENvbnRhaW5lck5vZGUq
IGZpbmRFbmNsb3NpbmdTY3JvbGxhYmxlQ29udGFpbmVyKENvbnRhaW5lck5vZGUqIG5vZGUsIGNv
bnMKICAgICAgICAgYXV0byogc2Nyb2xsYWJsZUFyZWEgPSBzY3JvbGxhYmxlQXJlYUZvckJveCgq
Ym94KTsKICAgICAgICAgaWYgKCFzY3JvbGxhYmxlQXJlYSkKICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICBpZiAoc2Nyb2xsYWJsZUFyZWEtPnNob3VsZEJsb2NrU2Nyb2xsUHJvcGFnYXRp
b24od2hlZWxFdmVudC5kZWx0YSgpKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAg
ICAgICAgIGlmICh3aGVlbEV2ZW50LnBoYXNlKCkgPT0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2U6
Ok1heUJlZ2luIHx8IHdoZWVsRXZlbnQucGhhc2UoKSA9PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFz
ZTo6Q2FuY2VsbGVkKQogICAgICAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcAppbmRleCAxNGJiN2FmMDk1M2UwNmNiYzQ2
N2U2NmFkMDFmMmYzZTBlNDk2NmVjLi4xZDM0OTQ1MzQ4MGU4NThkZWRjYjM0ZGYwOWM2ZjMwNzE5
NjcxYzE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJl
YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwCkBA
IC04MDcsNCArODA3LDE5IEBAIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMs
IGNvbnN0IFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSkKICAgICByZXR1cm4gdHM7CiB9
CiAKK0Zsb2F0U2l6ZSBTY3JvbGxhYmxlQXJlYTo6ZGVsdGFGb3JQcm9wYWdhdGlvbihjb25zdCBG
bG9hdFNpemUmIGJpYXNlZERlbHRhKSBjb25zdAoreworICAgIGF1dG8gZmlsdGVyZWREZWx0YSA9
IGJpYXNlZERlbHRhOworICAgIGlmIChob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yUHJldmVu
dHNQcm9wYWdhdGlvbigpKQorICAgICAgICBmaWx0ZXJlZERlbHRhLnNldFdpZHRoKDApOworICAg
IGlmICh2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvclByZXZlbnRzUHJvcGFnYXRpb24oKSkKKyAg
ICAgICAgZmlsdGVyZWREZWx0YS5zZXRIZWlnaHQoMCk7CisgICAgcmV0dXJuIGZpbHRlcmVkRGVs
dGE7Cit9CisKK2Jvb2wgU2Nyb2xsYWJsZUFyZWE6OnNob3VsZEJsb2NrU2Nyb2xsUHJvcGFnYXRp
b24oY29uc3QgRmxvYXRTaXplJiBiaWFzZWREZWx0YSkgY29uc3QKK3sKKyAgICByZXR1cm4gKCho
b3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yUHJldmVudHNQcm9wYWdhdGlvbigpIHx8IHZlcnRp
Y2FsT3ZlcnNjcm9sbEJlaGF2aW9yUHJldmVudHNQcm9wYWdhdGlvbigpKSAmJiAoKGhvcml6b250
YWxPdmVyc2Nyb2xsQmVoYXZpb3JQcmV2ZW50c1Byb3BhZ2F0aW9uKCkgJiYgdmVydGljYWxPdmVy
c2Nyb2xsQmVoYXZpb3JQcmV2ZW50c1Byb3BhZ2F0aW9uKCkpIHx8IChob3Jpem9udGFsT3ZlcnNj
cm9sbEJlaGF2aW9yUHJldmVudHNQcm9wYWdhdGlvbigpICYmICFiaWFzZWREZWx0YS5oZWlnaHQo
KSkgfHwgKHZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yUHJldmVudHNQcm9wYWdhdGlvbigpICYm
ICFiaWFzZWREZWx0YS53aWR0aCgpKSkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaAppbmRleCBhMzZlMTk4YzY5NWIx
Yjg0NjVhYzA1MGZlMWMzNGE2OGUxZTk4NWFlLi4zNjNlZDkyMWY0OTM4MWRlMGUyNmZjOTA1MjU5
ZDBiNzExYzJhZTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxh
YmxlQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgK
QEAgLTM3Myw2ICszNzMsMTEgQEAgcHVibGljOgogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBk
aWRTdGFydFNjcm9sbEFuaW1hdGlvbigpIHsgfQorICAgIAorICAgIHZpcnR1YWwgYm9vbCBob3Jp
em9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yUHJldmVudHNQcm9wYWdhdGlvbigpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIHZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9y
UHJldmVudHNQcm9wYWdhdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBz
aG91bGRCbG9ja1Njcm9sbFByb3BhZ2F0aW9uKGNvbnN0IEZsb2F0U2l6ZSYpIGNvbnN0OworICAg
IEZsb2F0U2l6ZSBkZWx0YUZvclByb3BhZ2F0aW9uKGNvbnN0IEZsb2F0U2l6ZSYpIGNvbnN0Owog
CiBwcm90ZWN0ZWQ6CiAgICAgV0VCQ09SRV9FWFBPUlQgU2Nyb2xsYWJsZUFyZWEoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5o
CmluZGV4IGI3OGY2NjRiODI4NjU5YjVhNzliNjY0N2I2Mzk0YTI1ZGFjM2ZmZTcuLjFmOTQyOGMy
YmEzNDMwYWZiZWM4MDEwNmI4ZjkxYWQ1MzYyMDRlMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuaApAQCAtMTc0LDcgKzE3
NCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzVXNlclNjcm9sbEluUHJvZ3Jlc3MoKSBjb25zdDsK
IAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBzdGF0aWMgRmxvYXRTaXplIHdoZWVsRGVsdGFCaWFz
aW5nVG93YXJkc1ZlcnRpY2FsKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpOworICAgIHN0YXRp
YyBGbG9hdFNpemUgd2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoY29uc3QgRmxvYXRT
aXplJik7CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgaGFuZGxlZC4KICAgICBib29sIHByb2Nl
c3NXaGVlbEV2ZW50Rm9yU2Nyb2xsU25hcChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQppbmRl
eCBhYjhiN2Y3NjNjNWJmMWVhMzUxMzcyYTRiZjA4YTA5MzJhN2MxZTkxLi4wNzBmNGQ4NjIzZTA0
NTU1MWVmOWYwMTZmMTVkMWZlZTdiYmUzMzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tCkBAIC0xMDUsNiArMTA1LDkgQEAgc3RhdGlj
IGJvb2wgZ2VzdHVyZVNob3VsZEJlZ2luU25hcChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdo
ZWVsRXZlbnQsIFNjcm9sbEUKIAogYm9vbCBTY3JvbGxBbmltYXRvck1hYzo6YWxsb3dzVmVydGlj
YWxTdHJldGNoaW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCkgY29uc3QK
IHsKKyAgICBpZiAobV9zY3JvbGxhYmxlQXJlYS52ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigp
ID09IE92ZXJzY3JvbGxCZWhhdmlvcjo6Tm9uZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IAogICAgIHN3aXRjaCAobV9zY3JvbGxhYmxlQXJlYS52ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHko
KSkgewogICAgIGNhc2UgU2Nyb2xsRWxhc3RpY2l0eTo6QXV0b21hdGljOiB7CiAgICAgICAgIFNj
cm9sbGJhciogaFNjcm9sbGVyID0gbV9zY3JvbGxhYmxlQXJlYS5ob3Jpem9udGFsU2Nyb2xsYmFy
KCk7CkBAIC0xMjgsNiArMTMxLDkgQEAgYm9vbCBTY3JvbGxBbmltYXRvck1hYzo6YWxsb3dzVmVy
dGljYWxTdHJldGNoaW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWwKIAogYm9vbCBT
Y3JvbGxBbmltYXRvck1hYzo6YWxsb3dzSG9yaXpvbnRhbFN0cmV0Y2hpbmcoY29uc3QgUGxhdGZv
cm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50KSBjb25zdAogeworICAgIGlmIChtX3Njcm9sbGFibGVB
cmVhLmhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSA9PSBPdmVyc2Nyb2xsQmVoYXZpb3I6
Ok5vbmUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKICAgICBzd2l0Y2ggKG1fc2Nyb2xs
YWJsZUFyZWEuaG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkoKSkgewogICAgIGNhc2UgU2Nyb2xs
RWxhc3RpY2l0eTo6QXV0b21hdGljOiB7CiAgICAgICAgIFNjcm9sbGJhciogaFNjcm9sbGVyID0g
bV9zY3JvbGxhYmxlQXJlYS5ob3Jpem9udGFsU2Nyb2xsYmFyKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIubW0K
aW5kZXggM2NjM2QyNGZhOTA5ZDljZWRhOGUzMmY4NjQzMjEzMjU3MGE3MThmOS4uODA4ZWQ1NTgy
YTI4MjZiYTBlN2ZiZWQ2OTQ1NzYxZGY0MjIxYWJjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5tbQpAQCAt
MzQ1LDkgKzM0NSw5IEBAIGJvb2wgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OmFwcGx5U2Ny
b2xsRGVsdGFXaXRoU3RyZXRjaGluZyhjb25zdCBQbGF0Zm9ybVdoCiAgICAgcmV0dXJuIGNhblN0
YXJ0QW5pbWF0aW9uOwogfQogCi1GbG9hdFNpemUgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6
OndoZWVsRGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRpY2FsKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVu
dCYgd2hlZWxFdmVudCkKK0Zsb2F0U2l6ZSBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6d2hl
ZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoY29uc3QgRmxvYXRTaXplJiB3aGVlbERlbHRh
KQogewotICAgIHJldHVybiBkZWx0YUFsaWduZWRUb0RvbWluYW50QXhpcyh3aGVlbEV2ZW50LmRl
bHRhKCkpOworICAgIHJldHVybiBkZWx0YUFsaWduZWRUb0RvbWluYW50QXhpcyh3aGVlbERlbHRh
KTsKIH0KIAogdm9pZCBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6dXBkYXRlUnViYmVyQmFu
ZEFuaW1hdGluZ1N0YXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5oCmluZGV4IGJmMjdlZGMxNTI2NzQ0ODNmYzc5Nzc3YjY5
YTllYzFiZGRhMTZhNjMuLjgyZGQwODE0MGE3OWIzMGZmODZhYTUwMmQ3N2Q5NmM3MGZiZDQ0MWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFi
bGVBcmVhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xs
YWJsZUFyZWEuaApAQCAtMjM3LDcgKzIzNyw4IEBAIHB1YmxpYzoKICAgICBJbnRTaXplIHNjcm9s
bGJhck9mZnNldChjb25zdCBTY3JvbGxiYXImKSBjb25zdDsKIAogICAgIHN0ZDo6b3B0aW9uYWw8
TGF5b3V0UmVjdD4gdXBkYXRlU2Nyb2xsUG9zaXRpb24oY29uc3QgU2Nyb2xsUG9zaXRpb25DaGFu
Z2VPcHRpb25zJiwgY29uc3QgTGF5b3V0UmVjdCYgcmV2ZWFsUmVjdCwgY29uc3QgTGF5b3V0UmVj
dCYgbG9jYWxFeHBvc2VSZWN0KTsKLQorICAgIGJvb2wgaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhh
dmlvclByZXZlbnRzUHJvcGFnYXRpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiBob3Jpem9udGFs
T3ZlcnNjcm9sbEJlaGF2aW9yKCkgIT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpBdXRvOyB9CisgICAg
Ym9vbCB2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvclByZXZlbnRzUHJvcGFnYXRpb24oKSBjb25z
dCBmaW5hbCB7IHJldHVybiB2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpICE9IE92ZXJzY3Jv
bGxCZWhhdmlvcjo6QXV0bzsgfQogcHJpdmF0ZToKICAgICBib29sIGhhc0hvcml6b250YWxPdmVy
ZmxvdygpIGNvbnN0OwogICAgIGJvb2wgaGFzVmVydGljYWxPdmVyZmxvdygpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDAwOWU1ZTE2YTk4YWY2MTY2NDEyNTM2MzU5NGY0YTdiNThjMzBiMWIuLjI1NjI1NDA3NDlk
YTJkYTAyNDVmZmM0YTY0MzczN2FkZDM1ZGU1OWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAy
Mi0wMS0yOCAgTmlrb2xhb3MgTW91Y2h0YXJpcyAgPG5tb3VjaHRhcmlzQGFwcGxlLmNvbT4KKwor
ICAgICAgICBJbXBsZW1lbnQgQ1NTIG92ZXJzY3JvbGwtYmVoYXZpb3IgZm9yIHN5bmNocm9ub3Vz
IHNjcm9sbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjIyOTY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9s
bC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVy
c2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9s
bGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvc3luYy1zY3Jv
bGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9y
LXVuc2Nyb2xsYWJsZS1pZnJhbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1p
ZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlv
bnM6CisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zOgorICAgICAg
ICAqIHBsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDIyLTAxLTI4ICBOaWtvbGFv
cyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVu
dCBDU1Mgb3ZlcnNjcm9sbC1iZWhhdmlvciBmb3IgYXN5bmNocm9ub3VzIHNjcm9sbCBvbiBNYWMK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJz
Y3JvbGwtYmVoYXZpb3ItZWxlbWVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3Nj
cm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjI3MTUwZmY2MGI1ZGJkZDBiNGE3YWM2ZjgzZmI1NmY1N2NkMmNkODIK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9s
bC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjAg
QEAKKworUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xs
LWJlaGF2aW9yOiBhdXRvIGF1dG8uCitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qg
d2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIGF1dG8uCitQQVNTIEVsZW1lbnQgaG9yaXpv
bnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gYXV0by4K
K1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZp
b3I6IGNvbnRhaW4gYXV0by4KK1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdp
dGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBhdXRvLgorUEFTUyBFbGVtZW50IHZlcnRpY2Fs
IHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBhdXRvLgorUEFTUyBF
bGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBh
dXRvIGNvbnRhaW4uCitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVy
c2Nyb2xsLWJlaGF2aW9yOiBhdXRvIGNvbnRhaW4uCitQQVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBz
Y3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gY29udGFpbi4KK1BB
U1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6
IGNvbnRhaW4gY29udGFpbi4KK1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdp
dGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBjb250YWluLgorUEFTUyBFbGVtZW50IHZlcnRp
Y2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBjb250YWluLgor
UEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2
aW9yOiBhdXRvIG5vbmUuCitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBv
dmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIG5vbmUuCitQQVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBz
Y3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gbm9uZS4KK1BBU1Mg
RWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNv
bnRhaW4gbm9uZS4KK1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3Zl
cnNjcm9sbC1iZWhhdmlvcjogbm9uZSBub25lLgorUEFTUyBFbGVtZW50IHZlcnRpY2FsIHNjcm9s
bCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBub25lLgorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2
aW9yLWVsZW1lbnQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xs
LW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE5NGJjNWJiODVk
YjU3NTY1NDMyZmZlNzJlNDA2Mzg1ODg2NTk2NWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1l
bnQuaHRtbApAQCAtMCwwICsxLDg2IEBACis8IWRvY3R5cGUgaHRtbD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL292ZXJzY3JvbGwtYmVoYXZpb3Itc3VwcG9ydC5qcyI+PC9zY3JpcHQ+Cis8
bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3Mtb3ZlcnNj
cm9sbC1iZWhhdmlvciI+Cis8c3R5bGU+CisgICAgLnNjcm9sbGluZyB7CisgICAgICAgIG92ZXJm
bG93OiBzY3JvbGw7CisgICAgfQorICAgIC5zY3JvbGxDb250ZW50IHsKKyAgICAgICAgd2lkdGg6
IDMwMHB4OworICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgIH0KKyAgICAjcm9vdCB7CisgICAg
ICAgIHdpZHRoOiAyMDBweDsKKyAgICAgICAgaGVpZ2h0OiAyMDBweDsKKyAgICB9CisgICAgI3Nj
cm9sbGVyIHsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBoZWlnaHQ6IDEwMHB4Owor
ICAgIH0KKzwvc3R5bGU+Cis8ZGl2IGlkPSdyb290JyBjbGFzcz0ic2Nyb2xsaW5nIj4KKyAgICA8
ZGl2IGlkPSdzY3JvbGxlcicgY2xhc3M9InNjcm9sbGluZyI+CisgICAgICAgIDxkaXYgY2xhc3M9
InNjcm9sbENvbnRlbnQiPjwvZGl2PgorICAgIDwvZGl2PgorICAgIDxkaXYgY2xhc3M9InNjcm9s
bENvbnRlbnQiPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+Citjb25zdCByb290ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3Jvb3QnKTsKK2NvbnN0IHNjcm9sbGVyID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ3Njcm9sbGVyJyk7Cit2YXIgb3ZlcnNjcm9sbERhdGFzID0gW1siYXV0byIs
ICJhdXRvIiwgdHJ1ZSwgdHJ1ZV0sCisgICAgICAgICAgICAgICAgICAgICAgICBbImNvbnRhaW4i
LCAiYXV0byIsIGZhbHNlLCB0cnVlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFsibm9uZSIs
ICJhdXRvIiwgZmFsc2UsIHRydWVdLAorICAgICAgICAgICAgICAgICAgICAgICAgWyJhdXRvIiwg
ImNvbnRhaW4iLCB0cnVlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAgICBbImNvbnRh
aW4iLCAiY29udGFpbiIsIGZhbHNlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAgICBb
Im5vbmUiLCAiY29udGFpbiIsIGZhbHNlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAg
ICBbImF1dG8iLCAibm9uZSIsIHRydWUsIGZhbHNlXSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IFsiY29udGFpbiIsICJub25lIiwgZmFsc2UsIGZhbHNlXSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIFsibm9uZSIsICJub25lIiwgZmFsc2UsIGZhbHNlXV07CisKK2Z1bmN0aW9uIHJlc2V0VGVz
dCgpIHsKKyAgICAvLyBUcnkgdmFyaW91cyBtZXRob2RzIHRvIGVuc3VyZSB0aGUgZWxlbWVudCBw
b3NpdGlvbiBpcyByZXNldCBpbW1lZGlhdGVseS4KKyAgICBzY3JvbGxlci5zY3JvbGxMZWZ0ID0g
MzAwOworICAgIHNjcm9sbGVyLnNjcm9sbFRvcCA9IDMwMDsKKyAgICBzY3JvbGxlci5zY3JvbGxU
bygzMDAsIDMwMCk7CisKKyAgICByb290LnNjcm9sbExlZnQgPSAwOworICAgIHJvb3Quc2Nyb2xs
VG9wID0gMDsKKyAgICByb290LnNjcm9sbFRvKDAsIDApOworfQorCitmdW5jdGlvbiBzdGFydFRl
c3QoKSB7CisgICAgb3ZlcnNjcm9sbERhdGFzLmZvckVhY2goKFtvdmVyc2Nyb2xsWCwgb3ZlcnNj
cm9sbFksIHByb3BhZ2F0ZVgsIHByb3BhZ2F0ZVldKSA9PiB7CisgICAgICAgIHByb21pc2VfdGVz
dCgoKSA9PiB7CisgICAgICAgICAgICByZXNldFRlc3QoKTsKKyAgICAgICAgICAgIHNjcm9sbGVy
LnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclggPSBvdmVyc2Nyb2xsWDsKKyAgICAgICAgICAgIHNj
cm9sbGVyLnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclkgPSBvdmVyc2Nyb2xsWTsKKyAgICAgICAg
ICAgIGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGg7CisKKyAgICAgICAgICAgIHZhciB4ID0gc2Ny
b2xsZXIuY2xpZW50V2lkdGggLyAyOworICAgICAgICAgICAgdmFyIHkgPSBzY3JvbGxlci5jbGll
bnRIZWlnaHQgLyAyOworICAgICAgICAgICAgdmFyIGRlbHRhID0gZ2V0RGVsdGFzKCJyaWdodCIp
OworICAgICAgICAgICAgcmV0dXJuIG1vdXNlV2hlZWxTY3JvbGxBbmRXYWl0KHgsIHksIGRlbHRh
LlgsIGRlbHRhLlksIGRlbHRhLlgsIGRlbHRhLlkpLnRoZW4oKCkgPT4geworICAgICAgICAgICAg
ICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxMZWZ0ID4gMCwgcHJvcGFnYXRlWCwgJ1Byb3Bh
Z2F0ZSBob3Jpem9udGFsIHNjcm9sbCcpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0sICdF
bGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiAn
ICsgb3ZlcnNjcm9sbFggKyAnICcgKyBvdmVyc2Nyb2xsWSArICcuJyk7CisKKyAgICAgICAgcHJv
bWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAgIHJlc2V0VGVzdCgpOworICAgICAgICAgICAg
c2Nyb2xsZXIuc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWCA9IG92ZXJzY3JvbGxYOworICAgICAg
ICAgICAgc2Nyb2xsZXIuc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWSA9IG92ZXJzY3JvbGxZOwor
CisgICAgICAgICAgICB2YXIgeCA9IHNjcm9sbGVyLmNsaWVudFdpZHRoIC8gMjsKKyAgICAgICAg
ICAgIHZhciB5ID0gc2Nyb2xsZXIuY2xpZW50SGVpZ2h0IC8gMjsKKyAgICAgICAgICAgIHZhciBk
ZWx0YSA9IGdldERlbHRhcygiZG93biIpOworICAgICAgICAgICAgcmV0dXJuIG1vdXNlV2hlZWxT
Y3JvbGxBbmRXYWl0KHgsIHksIGRlbHRhLlgsIGRlbHRhLlksIGRlbHRhLlgsIGRlbHRhLlkpLnRo
ZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxUb3Ag
PiAwLCBwcm9wYWdhdGVZLCAnUHJvcGFnYXRlIHZlcnRpY2FsIHNjcm9sbCcpOworICAgICAgICAg
ICAgfSk7CisgICAgICAgIH0sICdFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3Zl
cnNjcm9sbC1iZWhhdmlvcjogJyArIG92ZXJzY3JvbGxYICsgJyAnICsgb3ZlcnNjcm9sbFkgKyAn
LicpOworICAgIH0pOworfQorCithZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgc3RhcnRUZXN0KTsK
Kzwvc2NyaXB0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZy
YW1lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xs
LW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MDBh
MGI3ZDkwNWI4N2MxZGI3NjI2OTRmZDAwNjM4ZjE5NzY5NTM3Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlv
ci1pZnJhbWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjEgQEAKKworCitQQVNTIElmcmFtZSBo
b3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBhdXRv
LgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2
aW9yOiBhdXRvIGF1dG8uCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGgg
b3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBhdXRvLgorUEFTUyBJZnJhbWUgdmVydGljYWwg
c2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGF1dG8uCitQQVNT
IElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjog
bm9uZSBhdXRvLgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Ny
b2xsLWJlaGF2aW9yOiBub25lIGF1dG8uCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0
ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBjb250YWluLgorUEFTUyBJZnJhbWUg
dmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIGNvbnRh
aW4uCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1i
ZWhhdmlvcjogY29udGFpbiBjb250YWluLgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRl
c3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGNvbnRhaW4uCitQQVNTIElmcmFt
ZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBj
b250YWluLgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xs
LWJlaGF2aW9yOiBub25lIGNvbnRhaW4uCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0
ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBub25lLgorUEFTUyBJZnJhbWUgdmVy
dGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIG5vbmUuCitQ
QVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlv
cjogY29udGFpbiBub25lLgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBv
dmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIG5vbmUuCitQQVNTIElmcmFtZSBob3Jpem9udGFs
IHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBub25lLgorUEFTUyBJ
ZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25l
IG5vbmUuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Ny
b2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3Nj
cm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmRiM2I4MTFkMWJkYjMxMDM4OTA2MTYwNGQ1YzMwNmQyY2YxOTQyZDgKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Ny
b2xsLWJlaGF2aW9yLWlmcmFtZS5odG1sCkBAIC0wLDAgKzEsODUgQEAKKzwhZG9jdHlwZSBodG1s
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb3ZlcnNjcm9sbC1iZWhhdmlvci1zdXBwb3J0
LmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9kcmFmdHMuY3Nz
d2cub3JnL2Nzcy1vdmVyc2Nyb2xsLWJlaGF2aW9yIj4KKzxzdHlsZT4KKyAgICAuc2Nyb2xsaW5n
IHsKKyAgICAgICAgb3ZlcmZsb3c6IHNjcm9sbDsKKyAgICB9CisgICAgLnNjcm9sbENvbnRlbnQg
eworICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAg
IGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJlZCwgYmx1ZSk7CisgICAgfQor
ICAgICNyb290IHsKKyAgICAgICAgd2lkdGg6IDIwMHB4OworICAgICAgICBoZWlnaHQ6IDIwMHB4
OworICAgIH0KKyAgICAjc2Nyb2xsZXIgeworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAg
IGhlaWdodDogMTAwcHg7CisgICAgICAgIG92ZXJzY3JvbGwtYmVoYXZpb3IteTogYXV0bzsKKyAg
ICB9Cis8L3N0eWxlPgorPGRpdiBpZD0ncm9vdCcgY2xhc3M9InNjcm9sbGluZyI+CisgICAgPGlm
cmFtZSBpZD0nc2Nyb2xsZXInIHNyY2RvYz0iPGh0bWw+PGRpdiBzdHlsZT0nd2lkdGg6IDMwMHB4
OyBoZWlnaHQ6IDMwMHB4Oyc+PC9kaXY+PC9odG1sPgorICAgICAgICAiPjwvaWZyYW1lPgorICAg
IDxkaXYgY2xhc3M9InNjcm9sbENvbnRlbnQiPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+Cisg
ICAgY29uc3Qgcm9vdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyb290Jyk7CisgICAgY29u
c3Qgc2Nyb2xsZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2Nyb2xsZXInKTsKKyAgICB2
YXIgb3ZlcnNjcm9sbERhdGFzID0gW1siYXV0byIsICJhdXRvIiwgdHJ1ZSwgdHJ1ZV0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgWyJjb250YWluIiwgImF1dG8iLCBmYWxzZSwgdHJ1ZV0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJub25lIiwgImF1dG8iLCBmYWxzZSwgdHJ1
ZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJhdXRvIiwgImNvbnRhaW4iLCB0cnVl
LCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJjb250YWluIiwgImNvbnRh
aW4iLCBmYWxzZSwgZmFsc2VdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsibm9uZSIs
ICJjb250YWluIiwgZmFsc2UsIGZhbHNlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBb
ImF1dG8iLCAibm9uZSIsIHRydWUsIGZhbHNlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBbImNvbnRhaW4iLCAibm9uZSIsIGZhbHNlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgWyJub25lIiwgIm5vbmUiLCBmYWxzZSwgZmFsc2VdXTsKKyAgICBmdW5jdGlvbiBy
ZXNldFRlc3QoKSB7CisgICAgICAgIC8vIFRyeSB2YXJpb3VzIG1ldGhvZHMgdG8gZW5zdXJlIHRo
ZSBlbGVtZW50IHBvc2l0aW9uIGlzIHJlc2V0IGltbWVkaWF0ZWx5LgorICAgICAgICBzY3JvbGxl
ci5jb250ZW50V2luZG93LnNjcm9sbFggPSAzMDA7CisgICAgICAgIHNjcm9sbGVyLmNvbnRlbnRX
aW5kb3cuc2Nyb2xsWSA9IDMwMDsKKyAgICAgICAgc2Nyb2xsZXIuY29udGVudFdpbmRvdy5zY3Jv
bGxUbygzMDAsIDMwMCk7CisgICAgICAgIHJvb3Quc2Nyb2xsTGVmdCA9IDA7CisgICAgICAgIHJv
b3Quc2Nyb2xsVG9wID0gMDsKKyAgICAgICAgcm9vdC5zY3JvbGxUbygwLCAwKTsKKyAgICB9CisK
KyAgICBmdW5jdGlvbiBvdmVyc2Nyb2xsQmVoYXZpb3JUZXN0KCkgeworICAgICAgICBvdmVyc2Ny
b2xsRGF0YXMuZm9yRWFjaCgoW292ZXJzY3JvbGxYLCBvdmVyc2Nyb2xsWSwgcHJvcGFnYXRlWCwg
cHJvcGFnYXRlWV0pID0+IHsKKyAgICAgICAgICAgIHByb21pc2VfdGVzdCgoKSA9PiB7CisgICAg
ICAgICAgICAgICAgcmVzZXRUZXN0KCk7CisgICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IHNj
cm9sbGVyLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImh0bWwi
KVswXTsKKyAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWCA9
IG92ZXJzY3JvbGxYOworICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5vdmVyc2Nyb2xsQmVo
YXZpb3JZID0gb3ZlcnNjcm9sbFk7CisgICAgICAgICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5j
bGllbnRXaWR0aCAvIDI7CisgICAgICAgICAgICAgICAgdmFyIHkgPSBzY3JvbGxlci5jbGllbnRI
ZWlnaHQgLyAyOworICAgICAgICAgICAgICAgIHZhciBkZWx0YSA9IGdldERlbHRhcygicmlnaHQi
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbW91c2VXaGVlbFNjcm9sbEFuZFdhaXQoeCwgeSwg
ZGVsdGEuWCwgZGVsdGEuWSwgZGVsdGEuWCwgZGVsdGEuWSkudGhlbigoKSA9PiB7CisgICAgICAg
ICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxMZWZ0ID4gMCwgcHJvcGFnYXRl
WCwgJ1Byb3BhZ2F0ZSBob3Jpem9udGFsIHNjcm9sbCcpOworICAgICAgICAgICAgICAgIH0pOwor
ICAgICAgICAgICAgfSwgJ0lmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNj
cm9sbC1iZWhhdmlvcjogJyArIG92ZXJzY3JvbGxYICsgJyAnICsgb3ZlcnNjcm9sbFkgKyAnLicp
OworCisgICAgICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgICAgICAgICAgICAgIHJl
c2V0VGVzdCgpOworICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSBzY3JvbGxlci5jb250ZW50
V2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJodG1sIilbMF07CisgICAgICAg
ICAgICAgICAgdGFyZ2V0LnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclggPSBvdmVyc2Nyb2xsWDsK
KyAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWSA9IG92ZXJz
Y3JvbGxZOworCisgICAgICAgICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAv
IDI7CisgICAgICAgICAgICAgICAgdmFyIHkgPSBzY3JvbGxlci5jbGllbnRIZWlnaHQgLyAyOwor
ICAgICAgICAgICAgICAgIHZhciBkZWx0YSA9IGdldERlbHRhcygiZG93biIpOworICAgICAgICAg
ICAgICAgIHJldHVybiBtb3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCh4LCB5LCBkZWx0YS5YLCBkZWx0
YS5ZLCBkZWx0YS5YLCBkZWx0YS5ZKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICAgICAg
YXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbFRvcCA+IDAsIHByb3BhZ2F0ZVksICdQcm9wYWdhdGUg
dmVydGljYWwgc2Nyb2xsJyk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9LCAn
SWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogJyAr
IG92ZXJzY3JvbGxYICsgJyAnICsgb3ZlcnNjcm9sbFkgKyAnLicpOworICAgICAgICB9KTsKKyAg
ICB9CisKKyAgICBzY3JvbGxlci5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgb3ZlcnNjcm9sbEJl
aGF2aW9yVGVzdCk7Cis8L3NjcmlwdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xs
LWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxh
YmxlLWVsZW1lbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYzOTViNjQ4OGQwODcwYjk1NjFj
MDI4Njc5ZDdlMTVhNDdmY2U2ZTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1l
bGVtZW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKKworUEFTUyBVbnNjcm9sbGFibGUg
ZWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjog
bm9uZS4KK1BBU1MgVW5zY3JvbGxhYmxlIGVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0
aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJs
ZS1lbGVtZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1v
dmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YmI0YjA2ZTllNjQxOTM3MDgwODEyNzhkOTEwMDNjMDVkNTcyNGIyNgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVo
YXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRtbApAQCAtMCwwICsxLDY2IEBACis8IWRvY3R5
cGUgaHRtbD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL292ZXJzY3JvbGwtYmVoYXZpb3It
c3VwcG9ydC5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vZHJh
ZnRzLmNzc3dnLm9yZy9jc3Mtb3ZlcnNjcm9sbC1iZWhhdmlvciI+Cis8c3R5bGU+CisgICAgLnNj
cm9sbGluZyB7CisgICAgICAgIG92ZXJmbG93OiBzY3JvbGw7CisgICAgfQorICAgIC5zY3JvbGxD
b250ZW50IHsKKyAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICBoZWlnaHQ6IDMwMHB4Owor
ICAgIH0KKyAgICAjcm9vdCB7CisgICAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgICAgaGVpZ2h0
OiAyMDBweDsKKyAgICB9CisgICAgI3Njcm9sbGVyIHsKKyAgICAgICAgd2lkdGg6IDEwMHB4Owor
ICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgICBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25l
OworICAgICAgICBvdmVyZmxvdzogdmlzaWJsZTsKKyAgICAgICAgYmFja2dyb3VuZDogbGluZWFy
LWdyYWRpZW50KDEzNWRlZywgcmVkLCBibHVlKTsKKyAgICB9Cis8L3N0eWxlPgorPGRpdiBpZD0i
cm9vdCIgY2xhc3M9InNjcm9sbGluZyI+CisgICAgPGRpdiBpZD0ic2Nyb2xsZXIiPgorICAgICAg
ICA8ZGl2IGNsYXNzPSJzY3JvbGxDb250ZW50Ij48L2Rpdj4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2
IGNsYXNzPSJzY3JvbGxDb250ZW50Ij48L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0PgorY29uc3Qg
cm9vdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyb290Jyk7Citjb25zdCBzY3JvbGxlciA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY3JvbGxlcicpOworCitmdW5jdGlvbiByZXNldFRl
c3QoKSB7CisgICAgcm9vdC5zY3JvbGxMZWZ0ID0gMDsKKyAgICByb290LnNjcm9sbFRvcCA9IDA7
CisgICAgcm9vdC5zY3JvbGxUbygwLCAwKTsKK30KKworZnVuY3Rpb24gc3RhcnRUZXN0KCkgewor
ICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgICAgICAgICAgcmVzZXRUZXN0KCk7Cisg
ICAgICAgICAgICB2YXIgeCA9IHNjcm9sbGVyLmNsaWVudFdpZHRoIC8gMjsKKyAgICAgICAgICAg
IHZhciB5ID0gc2Nyb2xsZXIuY2xpZW50SGVpZ2h0IC8gMjsKKyAgICAgICAgICAgIHZhciBkZWx0
YSA9IGdldERlbHRhcygicmlnaHQiKTsKKyAgICAgICAgICAgIHJldHVybiBtb3VzZVdoZWVsU2Ny
b2xsQW5kV2FpdCh4LCB5LCBkZWx0YS5YLCBkZWx0YS5ZLCBkZWx0YS5YLCBkZWx0YS5ZKS50aGVu
KCgpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsTGVmdCA+
IDAsIHRydWUsICdQcm9wYWdhdGUgaG9yaXpvbnRhbCBzY3JvbGwnKTsKKyAgICAgICAgICAgIH0p
OworICAgICAgICB9LCAnVW5zY3JvbGxhYmxlIGVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVz
dCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuJyk7CisKKyAgICAgICAgcHJvbWlzZV90
ZXN0KCgpID0+IHsKKyAgICAgICAgICAgIHJlc2V0VGVzdCgpOworICAgICAgICAgICAgdmFyIHgg
PSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAgICAgICAgICB2YXIgeSA9IHNjcm9sbGVy
LmNsaWVudEhlaWdodCAvIDI7CisgICAgICAgICAgICB2YXIgZGVsdGEgPSBnZXREZWx0YXMoImRv
d24iKTsKKyAgICAgICAgICAgIHJldHVybiBtb3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCh4LCB5LCBk
ZWx0YS5YLCBkZWx0YS5ZLCBkZWx0YS5YLCBkZWx0YS5ZKS50aGVuKCgpID0+IHsKKyAgICAgICAg
ICAgICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsVG9wID4gMCwgdHJ1ZSwgJ1Byb3BhZ2F0
ZSB2ZXJ0aWNhbCBzY3JvbGwnKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9LCAnVW5zY3Jv
bGxhYmxlIGVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2
aW9yOiBub25lLicpOworfQorCithZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgc3RhcnRUZXN0KTsK
Kzwvc2NyaXB0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5z
Y3JvbGxhYmxlLWlmcmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGlu
Zy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdmYTU5Y2NiYTc5YWVmZjMzZGE3MGU5M2Q0ODhhMDdlZWM5
YzU2OTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5j
LXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsNSBAQAorCisKK1BBU1MgVW5zY3JvbGxhYmxlIGlmcmFtZSBob3Jpem9u
dGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4KK1BBU1MgVW5z
Y3JvbGxhYmxlIGlmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVo
YXZpb3I6IG5vbmUuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5
bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlv
ci11bnNjcm9sbGFibGUtaWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmRmNjc1YWM0MzcyOWQzZGJi
NGY1ZjUzMjQ4OTEyM2U2NjlhNTdiMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxl
LWlmcmFtZS5odG1sCkBAIC0wLDAgKzEsNjUgQEAKKzwhZG9jdHlwZSBodG1sPgorPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvb3ZlcnNjcm9sbC1iZWhhdmlvci1zdXBwb3J0LmpzIj48L3Njcmlw
dD4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1v
dmVyc2Nyb2xsLWJlaGF2aW9yIj4KKzxzdHlsZT4KKyAgICAuc2Nyb2xsaW5nIHsKKyAgICAgICAg
b3ZlcmZsb3c6IHNjcm9sbDsKKyAgICB9CisgICAgLnNjcm9sbENvbnRlbnQgeworICAgICAgICB3
aWR0aDogMzAwcHg7CisgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgfQorICAgICNyb290IHsK
KyAgICAgICAgd2lkdGg6IDIwMHB4OworICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAgIH0KKyAg
ICAjc2Nyb2xsZXIgeworICAgICAgICB3aWR0aDogMjAwcHg7CisgICAgICAgIGhlaWdodDogMjAw
cHg7CisgICAgICAgIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmU7CisgICAgICAgIG92ZXJmbG93
OiB2aXNpYmxlOworICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCBy
ZWQsIGJsdWUpOworICAgIH0KKzwvc3R5bGU+Cis8ZGl2IGlkPSdyb290JyBjbGFzcz0ic2Nyb2xs
aW5nIj4KKyAgICA8aWZyYW1lIGlkPSdzY3JvbGxlcicgc3JjZG9jPSI8aHRtbCBzdHlsZT0nb3Zl
cnNjcm9sbC1iZWhhdmlvcjogbm9uZTsnPjxkaXYgc3R5bGU9J3dpZHRoOiAxMDBweDsgaGVpZ2h0
OiAxMDBweDsnPjwvZGl2PjwvaHRtbD4KKyAgICAgICAgIj48L2lmcmFtZT4KKyAgICA8ZGl2IGNs
YXNzPSJzY3JvbGxDb250ZW50Ij48L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0PgorY29uc3Qgcm9v
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyb290Jyk7Citjb25zdCBzY3JvbGxlciA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY3JvbGxlcicpOworCitmdW5jdGlvbiByZXNldFRlc3Qo
KSB7CisgICAgcm9vdC5zY3JvbGxMZWZ0ID0gMDsKKyAgICByb290LnNjcm9sbFRvcCA9IDA7Cisg
ICAgcm9vdC5zY3JvbGxUbygwLCAwKTsKK30KKworZnVuY3Rpb24gc3RhcnRUZXN0KCkgeworICAg
ICAgICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgICAgICAgICAgcmVzZXRUZXN0KCk7CisgICAg
ICAgICAgICB2YXIgeCA9IHNjcm9sbGVyLmNsaWVudFdpZHRoIC8gMjsKKyAgICAgICAgICAgIHZh
ciB5ID0gc2Nyb2xsZXIuY2xpZW50SGVpZ2h0IC8gMjsKKyAgICAgICAgICAgIHZhciBkZWx0YSA9
IGdldERlbHRhcygicmlnaHQiKTsKKyAgICAgICAgICAgIHJldHVybiBtb3VzZVdoZWVsU2Nyb2xs
QW5kV2FpdCh4LCB5LCBkZWx0YS5YLCBkZWx0YS5ZLCBkZWx0YS5YLCBkZWx0YS5ZKS50aGVuKCgp
ID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsTGVmdCA+IDAs
IHRydWUsICdQcm9wYWdhdGUgaG9yaXpvbnRhbCBzY3JvbGwnKTsKKyAgICAgICAgICAgIH0pOwor
ICAgICAgICB9LCAnVW5zY3JvbGxhYmxlIGlmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdp
dGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4nKTsKKworICAgICAgICBwcm9taXNlX3Rlc3Qo
KCkgPT4geworICAgICAgICAgICAgcmVzZXRUZXN0KCk7CisgICAgICAgICAgICB2YXIgeCA9IHNj
cm9sbGVyLmNsaWVudFdpZHRoIC8gMjsKKyAgICAgICAgICAgIHZhciB5ID0gc2Nyb2xsZXIuY2xp
ZW50SGVpZ2h0IC8gMjsKKyAgICAgICAgICAgIHZhciBkZWx0YSA9IGdldERlbHRhcygiZG93biIp
OworICAgICAgICAgICAgcmV0dXJuIG1vdXNlV2hlZWxTY3JvbGxBbmRXYWl0KHgsIHksIGRlbHRh
LlgsIGRlbHRhLlksIGRlbHRhLlgsIGRlbHRhLlkpLnRoZW4oKCkgPT4geworICAgICAgICAgICAg
ICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxUb3AgPiAwLCB0cnVlLCAnUHJvcGFnYXRlIHZl
cnRpY2FsIHNjcm9sbCcpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0sICdVbnNjcm9sbGFi
bGUgaWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjog
bm9uZS4nKTsKK30KKworYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIHN0YXJ0VGVzdCk7Cis8L3Nj
cmlwdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lv
cy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGIxMWQzMTdkYjgxZDg4MDY5N2UyNDEyODkwNjczNmJm
MzFjY2JiM2UuLmVjNjBlNDk0NjRkNGI4YWZkNjE4NmZhMWYxNDY5OTk0YjVkYzAyZmIgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zCkBAIC04MTQsNiArODE0LDEy
IEBAIHN2Zy90ZXh0L3NlbGVjdGlvbi1kb3VibGVjbGljay5zdmcgWyBTa2lwIF0KIHN2Zy90ZXh0
L3NlbGVjdGlvbi10cmlwbGVjbGljay5zdmcgWyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy1zaGFkb3ctcGFydHMvaW52YWxpZGF0aW9uLXBhcnQtcHNldWRv
Lmh0bWwgWyBTa2lwIF0KIAorIyBPdmVyc2Nyb2xsLWJlaGF2aW9yIGlzIG5vdCBzdXBwb3J0ZWQg
b24gaU9TIHlldDogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzc4
OAorZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50
Lmh0bWwgWyBTa2lwIF0KK2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVo
YXZpb3ItaWZyYW1lLmh0bWwgWyBTa2lwIF0KK2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92
ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRtbCBbIFNraXAgXQorZmFz
dC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUt
aWZyYW1lLmh0bWwgWyBTa2lwIF0KKwogIyBJT1MgZG9lcyBub3QgaW1wbGVtZW50IHNldEF1dG9t
YXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkCiBlZGl0aW5nL2luc2VydGluZy90eXBpbmctc3BhY2Ut
dG8tdHJpZ2dlci1zbWFydC1saW5rLmh0bWwgWyBTa2lwIF0KIGVkaXRpbmcvaW5zZXJ0aW5nL3Nt
YXJ0LWxpbmstd2hlbi1jYXJldC1pcy1tb3ZlZC1iZWZvcmUtVVJMLmh0bWwgWyBTa2lwIF0KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAzYjJj
NDlkNjUwMTZlMjQ5MGIwNTFhYmI1NGM0Yjg5ODkxZGUyZGU3Li40ODQ1ZjYxMmI1NzVlZDY1NjJh
OGMxMTg5NWFkYTE2NDZmNTY4MmJmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdr
MS9UZXN0RXhwZWN0YXRpb25zCkBAIC01NTYsNiArNTU2LDEwIEBAIGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1zY3JvbGwtc25hcC9zY3JvbGwtdGFyZ2V0LXBhZGRpbmct
MDAxLmh0CiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mtc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtc3RvcC1jaGFuZ2UuaHRtbCBbIEZhaWx1cmUgXQogY3NzMy9zY3JvbGwt
c25hcC9zY3JvbGwtcGFkZGluZy1tYWluZnJhbWUtcGFnaW5nLmh0bWwgWyBGYWlsdXJlIF0KIAor
IyBMYWNrIG9mIHdheXMgdG8gY29udHJvbCB0aGUgY3Jvc3MtZnJhbWUgc2Nyb2xsIGNoYWluaW5n
IGluIFdLMS4KK2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3It
aWZyYW1lLmh0bWwgWyBTa2lwIF0KK2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3Jv
bGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sIFsgU2tpcCBdCisKICMjIyBFTkQg
T0YgKDIpIEZhaWx1cmVzIHdpdGhvdXQgYnVnIHJlcG9ydHMKICMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
d2luL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVj
dGF0aW9ucwppbmRleCBhMmU5ZjUwMzA3ODMwNmM5MTQ5MDAyZTNiZmM4YWFmOWU4ZWUwZGNkLi42
NmFhNjRhYWNkZjU2NzczZWQzNzliZTQyNjhmNDIzNjIxZWYxNzY4IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucwpAQCAtNjQ0LDYgKzY0NCwxMiBAQCBwb2ludGVy
LWxvY2svIFsgU2tpcCBdCiBodHRwL3Rlc3RzL3BvaW50ZXItbG9jay8gWyBTa2lwIF0KIGZhc3Qv
anMtcHJvbWlzZS9qcy1wcm9taXNlLWludmFsaWQtY29udGV4dC1hY2Nlc3MuaHRtbCBbIFNraXAg
XQogCisjIE92ZXJzY3JvbGwtYmVoYXZpb3IgaXMgbm90IHN1cHBvcnRlZCBvbiBXaW5kb3dzCitm
YXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQuaHRt
bCBbIFNraXAgXQorZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlv
ci1pZnJhbWUuaHRtbCBbIFNraXAgXQorZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNj
cm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC5odG1sIFsgU2tpcCBdCitmYXN0L3Nj
cm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJh
bWUuaHRtbCBbIFNraXAgXQorCiAjIERhdGFsaXN0IGlzIHVuc3VwcG9ydGVkIG9uIFdpbmRvd3MK
IGFjY2Vzc2liaWxpdHkvZGF0YWxpc3QuaHRtbCBbIFdvbnRGaXggXQogZmFzdC9mb3Jtcy9kYXRh
bGlzdCBbIFdvbnRGaXggXQo=
</data>
<flag name="commit-queue"
          id="476704"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450319</attachid>
            <date>2022-01-28 23:04:25 -0800</date>
            <delta_ts>2022-02-01 13:58:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222968-20220128230424.patch</filename>
            <type>text/plain</type>
            <size>38596</size>
            <attacher name="Nikos Mouchtaris">nmouchtaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4Nzg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2U5NWUxN2ZlNTEzZjU0
NTJmMGU4ZTczYWE2ZWJiYjhiYzhmZWUxZC4uYzBjYWQ5YTI2MjNhNGYyMGNlNjZiMWExYjYzNmU2
NzdkM2ExZjkzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDIyLTAxLTI4ICBOaWtv
bGFvcyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxl
bWVudCBDU1Mgb3ZlcnNjcm9sbC1iZWhhdmlvciBmb3Igc3luY2hyb25vdXMgc2Nyb2xsCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI5NjgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0czogZmFzdC9z
Y3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50Lmh0bWwKKyAg
ICAgICAgICAgICAgIGZhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZp
b3ItaWZyYW1lLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xs
LW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRtbAorICAgICAgICAg
ICAgICAgZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNj
cm9sbGFibGUtaWZyYW1lLmh0bWwKKyAgICAgICAgCisgICAgICAgIFNwbGl0IHVwIHBhdGNoIGJ5
IENhdGhpZSBDaGVuIGFuZCBGcmVkZXJpYyBXYW5nLiBBZGQgZnVuY3Rpb24gZm9yIGJsb2NraW5n
IHNjcm9sbCBjaGFpbmluZworICAgICAgICBhbmQgZmlsdGVyaW5nIHNjcm9sbCBkZWx0YSBkZXBl
bmRpbmcgb24gdGhlIHZhbHVlcyBvZiBvdmVyc2Nyb2xsIGJlaGF2aW9yIGZvciBhIHNjcm9sbGFi
bGUKKyAgICAgICAgYXJlYS4gVGhpcyBwYXRjaCBpcyBmb3Igc3luY2hyb25vdXMgc2Nyb2xsaW5n
IG9ubHkuCisKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnRJbnRlcm5hbCk6CisgICAgICAgIChX
ZWJDb3JlOjpzY3JvbGxWaWFOb25QbGF0Zm9ybUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudEluQXBwcm9wcmlhdGVFbmNsb3NpbmdCb3gpOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpzY3JvbGxhYmxlQXJlYUNhbkhhbmRsZUV2
ZW50KToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5oOgorICAgICAgICAqIHBhZ2UvRnJh
bWVWaWV3Lmg6CisgICAgICAgICogcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6ZmluZEVuY2xvc2luZ1Njcm9sbGFibGVDb250YWluZXIpOgorICAgICAgICAq
IHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjpldmVudEZvclByb3BhZ2F0aW9u
IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6ZGVsdGFGb3JQcm9wYWdhdGlvbiBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6c2hvdWxkQmxvY2tTY3JvbGxQcm9wYWdh
dGlvbiBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGFibGVBcmVhOjpob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9y
UHJldmVudHNQcm9wYWdhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxl
QXJlYTo6dmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3JQcmV2ZW50c1Byb3BhZ2F0aW9uIGNvbnN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbEFuaW1hdG9yTWFjOjphbGxvd3NWZXJ0aWNhbFN0cmV0Y2hpbmcgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JNYWM6OmFsbG93c0hvcml6b250YWxTdHJl
dGNoaW5nIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xsaW5nRWZmZWN0c0Nv
bnRyb2xsZXIubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxl
cjo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmg6CisKIDIwMjItMDEtMjggIERpZWdvIFBpbm8g
R2FyY2lhICA8ZHBpbm9AaWdhbGlhLmNvbT4KIAogICAgICAgICBbV1BFXSBVbnJldmlld2VkLCBm
aXggbm9uLXVuaWZpZWQgYnVpbGQgYWZ0ZXIgcjI4ODc1OQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwCmluZGV4IDE2ZDUzODlkZmZmYWMzMjU0ZmNlZjRmYTc5YTA3NjU1ZGQwMDMzMDIu
LjY0ZTBmNjJiNmFhOTlkMTU1M2ZkZmI2ZGNhZTg4YjU2MDQ3M2I3NjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTMwMjcsMTEgKzMwMjcsMTcgQEAgYm9vbCBFdmVudEhh
bmRsZXI6OmhhbmRsZVdoZWVsRXZlbnRJbnRlcm5hbChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQm
IGV2ZW50LCBPcHQKICAgICBpZiAoYWxsb3dTY3JvbGxpbmcpCiAgICAgICAgIGFsbG93U2Nyb2xs
aW5nID0gbV9mcmFtZS5wYWdlKCktPnNjcm9sbExhdGNoaW5nQ29udHJvbGxlcigpLmxhdGNoaW5n
QWxsb3dzU2Nyb2xsaW5nSW5GcmFtZShtX2ZyYW1lLCBzY3JvbGxhYmxlQXJlYSk7CiAjZW5kaWYK
KyAgICBhdXRvIGFkanVzdGVkV2hlZWxFdmVudCA9IGV2ZW50OworICAgIGF1dG8gZmlsdGVyZWRE
ZWx0YSA9IGFkanVzdGVkV2hlZWxFdmVudC5kZWx0YSgpOworICAgIGZpbHRlcmVkRGVsdGEgPSB2
aWV3LT5kZWx0YUZvclByb3BhZ2F0aW9uKGZpbHRlcmVkRGVsdGEpOworICAgIGlmICh2aWV3LT5z
aG91bGRCbG9ja1Njcm9sbFByb3BhZ2F0aW9uKGZpbHRlcmVkRGVsdGEpKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKIAogICAgIGlmIChhbGxvd1Njcm9sbGluZykgewogICAgICAgICAvLyBGSVhNRTog
cHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxpbmcoKSBpcyBvbmx5IGNhbGxlZCBmb3IgRnJhbWVW
aWV3IHNjcm9sbGluZywgbm90IG92ZXJmbG93IHNjcm9sbGluZywgd2hpY2ggaXMgY29uZnVzaW5n
LgotICAgICAgICBoYW5kbGVkRXZlbnQgPSBwcm9jZXNzV2hlZWxFdmVudEZvclNjcm9sbGluZyhl
dmVudCwgc2Nyb2xsYWJsZUFyZWEsIGhhbmRsaW5nKTsKLSAgICAgICAgcHJvY2Vzc1doZWVsRXZl
bnRGb3JTY3JvbGxTbmFwKGV2ZW50LCBzY3JvbGxhYmxlQXJlYSk7CisgICAgICAgIGFkanVzdGVk
V2hlZWxFdmVudCA9IGFkanVzdGVkV2hlZWxFdmVudC5jb3B5V2l0aERlbHRhQW5kVmVsb2NpdHko
ZmlsdGVyZWREZWx0YSwgYWRqdXN0ZWRXaGVlbEV2ZW50LnNjcm9sbGluZ1ZlbG9jaXR5KCkpOwor
ICAgICAgICBoYW5kbGVkRXZlbnQgPSBwcm9jZXNzV2hlZWxFdmVudEZvclNjcm9sbGluZyhhZGp1
c3RlZFdoZWVsRXZlbnQsIHNjcm9sbGFibGVBcmVhLCBoYW5kbGluZyk7CisgICAgICAgIHByb2Nl
c3NXaGVlbEV2ZW50Rm9yU2Nyb2xsU25hcChhZGp1c3RlZFdoZWVsRXZlbnQsIHNjcm9sbGFibGVB
cmVhKTsKICAgICB9CiAKICAgICByZXR1cm4gaGFuZGxlZEV2ZW50OwpAQCAtMzA1MCwxOCArMzA1
NiwyMCBAQCBzdGF0aWMgdm9pZCBoYW5kbGVXaGVlbEV2ZW50UGhhc2VJblNjcm9sbGFibGVBcmVh
KFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYQogCiBzdGF0aWMgYm9vbCBzY3JvbGxWaWFO
b25QbGF0Zm9ybUV2ZW50KFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSwgY29uc3QgV2hl
ZWxFdmVudCYgd2hlZWxFdmVudCkKIHsKKyAgICBhdXRvIGZpbHRlcmVkRGVsdGEgPSBGbG9hdFNp
emUod2hlZWxFdmVudC5kZWx0YVgoKSwgd2hlZWxFdmVudC5kZWx0YVkoKSk7CisgICAgZmlsdGVy
ZWREZWx0YSA9IHNjcm9sbGFibGVBcmVhLmRlbHRhRm9yUHJvcGFnYXRpb24oZmlsdGVyZWREZWx0
YSk7CiAgICAgU2Nyb2xsR3JhbnVsYXJpdHkgc2Nyb2xsR3JhbnVsYXJpdHkgPSB3aGVlbEdyYW51
bGFyaXR5VG9TY3JvbGxHcmFudWxhcml0eSh3aGVlbEV2ZW50LmRlbHRhTW9kZSgpKTsKICAgICBi
b29sIGRpZEhhbmRsZVdoZWVsRXZlbnQgPSBmYWxzZTsKLSAgICBpZiAoZmxvYXQgYWJzb2x1dGVE
ZWx0YSA9IHN0ZDo6YWJzKHdoZWVsRXZlbnQuZGVsdGFYKCkpKQotICAgICAgICBkaWRIYW5kbGVX
aGVlbEV2ZW50IHw9IHNjcm9sbGFibGVBcmVhLnNjcm9sbCh3aGVlbEV2ZW50LmRlbHRhWCgpID4g
MCA/IFNjcm9sbFJpZ2h0IDogU2Nyb2xsTGVmdCwgc2Nyb2xsR3JhbnVsYXJpdHksIGFic29sdXRl
RGVsdGEpOworICAgIGlmIChmbG9hdCBhYnNvbHV0ZURlbHRhID0gc3RkOjphYnMoZmlsdGVyZWRE
ZWx0YS53aWR0aCgpKSkKKyAgICAgICAgZGlkSGFuZGxlV2hlZWxFdmVudCB8PSBzY3JvbGxhYmxl
QXJlYS5zY3JvbGwoZmlsdGVyZWREZWx0YS53aWR0aCgpID4gMCA/IFNjcm9sbFJpZ2h0IDogU2Ny
b2xsTGVmdCwgc2Nyb2xsR3JhbnVsYXJpdHksIGFic29sdXRlRGVsdGEpOwogCi0gICAgaWYgKGZs
b2F0IGFic29sdXRlRGVsdGEgPSBzdGQ6OmFicyh3aGVlbEV2ZW50LmRlbHRhWSgpKSkKLSAgICAg
ICAgZGlkSGFuZGxlV2hlZWxFdmVudCB8PSBzY3JvbGxhYmxlQXJlYS5zY3JvbGwod2hlZWxFdmVu
dC5kZWx0YVkoKSA+IDAgPyBTY3JvbGxEb3duIDogU2Nyb2xsVXAsIHNjcm9sbEdyYW51bGFyaXR5
LCBhYnNvbHV0ZURlbHRhKTsKKyAgICBpZiAoZmxvYXQgYWJzb2x1dGVEZWx0YSA9IHN0ZDo6YWJz
KGZpbHRlcmVkRGVsdGEuaGVpZ2h0KCkpKQorICAgICAgICBkaWRIYW5kbGVXaGVlbEV2ZW50IHw9
IHNjcm9sbGFibGVBcmVhLnNjcm9sbChmaWx0ZXJlZERlbHRhLmhlaWdodCgpID4gMCA/IFNjcm9s
bERvd24gOiBTY3JvbGxVcCwgc2Nyb2xsR3JhbnVsYXJpdHksIGFic29sdXRlRGVsdGEpOwogCiAg
ICAgcmV0dXJuIGRpZEhhbmRsZVdoZWVsRXZlbnQ7CiB9CiAKLWJvb2wgRXZlbnRIYW5kbGVyOjpo
YW5kbGVXaGVlbEV2ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2luZ0JveChOb2RlKiBzdGFydE5vZGUs
IGNvbnN0IFdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyZWRQ
bGF0Zm9ybURlbHRhLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlcmVkVmVsb2NpdHksIE9wdGlvblNl
dDxFdmVudEhhbmRsaW5nPiBldmVudEhhbmRsaW5nKQorYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRs
ZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94KE5vZGUqIHN0YXJ0Tm9kZSwgY29u
c3QgV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgRmxvYXRTaXplJiBmaWx0ZXJlZFBsYXRmb3JtRGVs
dGEsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyZWRWZWxvY2l0eSwgT3B0aW9uU2V0PEV2ZW50SGFu
ZGxpbmc+IGV2ZW50SGFuZGxpbmcpCiB7CiAgICAgYm9vbCBzaG91bGRIYW5kbGVFdmVudCA9IHdo
ZWVsRXZlbnQuZGVsdGFYKCkgfHwgd2hlZWxFdmVudC5kZWx0YVkoKTsKICNpZiBFTkFCTEUoV0hF
RUxfRVZFTlRfTEFUQ0hJTkcpCkBAIC0zMDkxLDggKzMwOTksMTYgQEAgYm9vbCBFdmVudEhhbmRs
ZXI6OmhhbmRsZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94KE5vZGUqIHN0YXJ0
Tm9kZSwgY28KICAgICB9OwogCiAgICAgUmVuZGVyQm94KiBjdXJyZW50RW5jbG9zaW5nQm94ID0g
JmluaXRpYWxFbmNsb3NpbmdCb3g7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIGF1dG8gYmlhc2Vk
RGVsdGEgPSBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6d2hlZWxEZWx0YUJpYXNpbmdUb3dh
cmRzVmVydGljYWwoRmxvYXRTaXplKHdoZWVsRXZlbnQuZGVsdGFYKCksIHdoZWVsRXZlbnQuZGVs
dGFZKCkpKTsKKyNlbHNlCisgICAgYXV0byBiaWFzZWREZWx0YSA9IEZsb2F0U2l6ZSh3aGVlbEV2
ZW50LmRlbHRhWCgpLCB3aGVlbEV2ZW50LmRlbHRhWSgpKTsKKyNlbmRpZgogICAgIHdoaWxlIChj
dXJyZW50RW5jbG9zaW5nQm94KSB7CiAgICAgICAgIGlmIChhdXRvKiBib3hTY3JvbGxhYmxlQXJl
YSA9IHNjcm9sbGFibGVBcmVhRm9yQm94KCpjdXJyZW50RW5jbG9zaW5nQm94KSkgeworICAgICAg
ICAgICAgYmlhc2VkRGVsdGEgPSBib3hTY3JvbGxhYmxlQXJlYS0+ZGVsdGFGb3JQcm9wYWdhdGlv
bihiaWFzZWREZWx0YSk7CisgICAgICAgICAgICBpZiAoYm94U2Nyb2xsYWJsZUFyZWEgJiYgYm94
U2Nyb2xsYWJsZUFyZWEtPnNob3VsZEJsb2NrU2Nyb2xsUHJvcGFnYXRpb24oYmlhc2VkRGVsdGEp
KQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgYXV0byBwbGF0Zm9y
bUV2ZW50ID0gd2hlZWxFdmVudC51bmRlcmx5aW5nUGxhdGZvcm1FdmVudCgpOwogICAgICAgICAg
ICAgYm9vbCBzY3JvbGxpbmdXYXNIYW5kbGVkOwogICAgICAgICAgICAgaWYgKHBsYXRmb3JtRXZl
bnQpIHsKQEAgLTMxMTUsNyArMzEzMSw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVl
bEV2ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2luZ0JveChOb2RlKiBzdGFydE5vZGUsIGNvCiBib29s
IEV2ZW50SGFuZGxlcjo6c2Nyb2xsYWJsZUFyZWFDYW5IYW5kbGVFdmVudChjb25zdCBQbGF0Zm9y
bVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSkK
IHsKICNpZiBQTEFURk9STShNQUMpCi0gICAgYXV0byBiaWFzZWREZWx0YSA9IFNjcm9sbGluZ0Vm
ZmVjdHNDb250cm9sbGVyOjp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbCh3aGVlbEV2
ZW50KTsKKyAgICBhdXRvIGJpYXNlZERlbHRhID0gU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6
OndoZWVsRGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRpY2FsKHdoZWVsRXZlbnQuZGVsdGEoKSk7CiAj
ZWxzZQogICAgIGF1dG8gYmlhc2VkRGVsdGEgPSB3aGVlbEV2ZW50LmRlbHRhKCk7CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCmluZGV4IDZiMzU5ZTc1NTZhMmQ2YTE0ODVlMDRl
OGMyMGZhNWY0NzBjNWEwNGEuLmVhNDM0ODg5MTE1NDkyMTU4ODYzNTNmZWU2ODZhZmZlNzMyYmEz
NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaApAQCAtNDc1LDcgKzQ3NSw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBwcm9jZXNzV2hlZWxFdmVudEZvclNjcm9sbFNuYXAoY29uc3QgUGxh
dGZvcm1XaGVlbEV2ZW50JiwgY29uc3QgV2Vha1B0cjxTY3JvbGxhYmxlQXJlYT4mKTsKICAgICBi
b29sIGNvbXBsZXRlV2lkZ2V0V2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBj
b25zdCBXZWFrUHRyPFdpZGdldD4mLCBjb25zdCBXZWFrUHRyPFNjcm9sbGFibGVBcmVhPiYpOwog
Ci0gICAgYm9vbCBoYW5kbGVXaGVlbEV2ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2luZ0JveChOb2Rl
KiBzdGFydE5vZGUsIGNvbnN0IFdoZWVsRXZlbnQmLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlcmVk
UGxhdGZvcm1EZWx0YSwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJlZFZlbG9jaXR5LCBPcHRpb25T
ZXQ8RXZlbnRIYW5kbGluZz4pOworICAgIGJvb2wgaGFuZGxlV2hlZWxFdmVudEluQXBwcm9wcmlh
dGVFbmNsb3NpbmdCb3goTm9kZSogc3RhcnROb2RlLCBjb25zdCBXaGVlbEV2ZW50JiwgRmxvYXRT
aXplJiBmaWx0ZXJlZFBsYXRmb3JtRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyZWRWZWxv
Y2l0eSwgT3B0aW9uU2V0PEV2ZW50SGFuZGxpbmc+KTsKIAogICAgIGJvb2wgaGFuZGxlV2hlZWxF
dmVudEluU2Nyb2xsYWJsZUFyZWEoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgU2Nyb2xsYWJs
ZUFyZWEmLCBPcHRpb25TZXQ8RXZlbnRIYW5kbGluZz4pOwogICAgIHN0ZDo6b3B0aW9uYWw8V2hl
ZWxTY3JvbGxHZXN0dXJlU3RhdGU+IHVwZGF0ZVdoZWVsR2VzdHVyZVN0YXRlKGNvbnN0IFBsYXRm
b3JtV2hlZWxFdmVudCYsIE9wdGlvblNldDxFdmVudEhhbmRsaW5nPik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVZpZXcuaAppbmRleCA2MDJkNjBjOWM5NzA1NWY2NDhjYTQ4ZmZmYmY5YzQyYjVjMTZmOTMzLi5k
MThmNmU4NzA3NjEwYjNjOTE0ODVlMTBhMzhiNTEzMTc2OWQwYWU4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3LmgKQEAgLTcwMiw2ICs3MDIsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAgT3ZlcnNjcm9s
bEJlaGF2aW9yIGhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdCBmaW5hbDsKICAg
ICBPdmVyc2Nyb2xsQmVoYXZpb3IgdmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdCBm
aW5hbDsKKyAgICBib29sIGhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3JQcmV2ZW50c1Byb3Bh
Z2F0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlv
cigpICE9IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0bzsgfQorICAgIGJvb2wgdmVydGljYWxPdmVy
c2Nyb2xsQmVoYXZpb3JQcmV2ZW50c1Byb3BhZ2F0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
dmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSAhPSBPdmVyc2Nyb2xsQmVoYXZpb3I6OkF1dG87
IH0KIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBGcmFtZVZpZXcoRnJhbWUmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbQppbmRleCA1NjdmMWVlMjIzNzYzNmY5
YjMwODBhODkxMjViNDQ3MWUxMjYwZjdjLi4yZDRkZTRhMWMzZDE5ZjU2NjM1YzdiYmI4NTY1OTFj
NTIzZDNmMTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRs
ZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1t
CkBAIC04MTUsNiArODE1LDggQEAgc3RhdGljIENvbnRhaW5lck5vZGUqIGZpbmRFbmNsb3NpbmdT
Y3JvbGxhYmxlQ29udGFpbmVyKENvbnRhaW5lck5vZGUqIG5vZGUsIGNvbnMKICAgICAgICAgYXV0
byogc2Nyb2xsYWJsZUFyZWEgPSBzY3JvbGxhYmxlQXJlYUZvckJveCgqYm94KTsKICAgICAgICAg
aWYgKCFzY3JvbGxhYmxlQXJlYSkKICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAo
c2Nyb2xsYWJsZUFyZWEtPnNob3VsZEJsb2NrU2Nyb2xsUHJvcGFnYXRpb24od2hlZWxFdmVudC5k
ZWx0YSgpKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgICAgIGlmICh3aGVl
bEV2ZW50LnBoYXNlKCkgPT0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2U6Ok1heUJlZ2luIHx8IHdo
ZWVsRXZlbnQucGhhc2UoKSA9PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZTo6Q2FuY2VsbGVkKQog
ICAgICAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcAppbmRl
eCBmMzM4NmZjYzU1YWJmYWMxYWU4YTA2N2YzNDE4ZjRiM2RlM2NiOTQ1Li5hZjMxYjk0MzFiYTI1
NzZhNjIzMGQzZDJhNmM4MTdhOWNiZjMwYWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwCkBA
IC00MDQsNyArNDA0LDcgQEAgUGxhdGZvcm1XaGVlbEV2ZW50IFNjcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlOjpldmVudEZvclByb3BhZ2F0aW9uKGNvbnN0IFBsYXRmb3IKIHsKICAgICBhdXRvIGZp
bHRlcmVkRGVsdGEgPSB3aGVlbEV2ZW50LmRlbHRhKCk7CiAjaWYgUExBVEZPUk0oTUFDKQotICAg
IGF1dG8gYmlhc2VkRGVsdGEgPSBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6d2hlZWxEZWx0
YUJpYXNpbmdUb3dhcmRzVmVydGljYWwod2hlZWxFdmVudCk7CisgICAgYXV0byBiaWFzZWREZWx0
YSA9IFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNW
ZXJ0aWNhbCh3aGVlbEV2ZW50LmRlbHRhKCkpOwogI2Vsc2UKICAgICBhdXRvIGJpYXNlZERlbHRh
ID0gd2hlZWxFdmVudC5kZWx0YSgpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxhYmxlQXJlYS5jcHAKaW5kZXggMTRiYjdhZjA5NTNlMDZjYmM0NjdlNjZhZDAxZjJmM2Uw
ZTQ5NjZlYy4uMWQzNDk0NTM0ODBlODU4ZGVkY2IzNGRmMDljNmYzMDcxOTY3MWMxOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcApAQCAtODA3LDQgKzgwNywx
OSBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTY3JvbGxh
YmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEpCiAgICAgcmV0dXJuIHRzOwogfQogCitGbG9hdFNpemUg
U2Nyb2xsYWJsZUFyZWE6OmRlbHRhRm9yUHJvcGFnYXRpb24oY29uc3QgRmxvYXRTaXplJiBiaWFz
ZWREZWx0YSkgY29uc3QKK3sKKyAgICBhdXRvIGZpbHRlcmVkRGVsdGEgPSBiaWFzZWREZWx0YTsK
KyAgICBpZiAoaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvclByZXZlbnRzUHJvcGFnYXRpb24o
KSkKKyAgICAgICAgZmlsdGVyZWREZWx0YS5zZXRXaWR0aCgwKTsKKyAgICBpZiAodmVydGljYWxP
dmVyc2Nyb2xsQmVoYXZpb3JQcmV2ZW50c1Byb3BhZ2F0aW9uKCkpCisgICAgICAgIGZpbHRlcmVk
RGVsdGEuc2V0SGVpZ2h0KDApOworICAgIHJldHVybiBmaWx0ZXJlZERlbHRhOworfQorCitib29s
IFNjcm9sbGFibGVBcmVhOjpzaG91bGRCbG9ja1Njcm9sbFByb3BhZ2F0aW9uKGNvbnN0IEZsb2F0
U2l6ZSYgYmlhc2VkRGVsdGEpIGNvbnN0Cit7CisgICAgcmV0dXJuICgoaG9yaXpvbnRhbE92ZXJz
Y3JvbGxCZWhhdmlvclByZXZlbnRzUHJvcGFnYXRpb24oKSB8fCB2ZXJ0aWNhbE92ZXJzY3JvbGxC
ZWhhdmlvclByZXZlbnRzUHJvcGFnYXRpb24oKSkgJiYgKChob3Jpem9udGFsT3ZlcnNjcm9sbEJl
aGF2aW9yUHJldmVudHNQcm9wYWdhdGlvbigpICYmIHZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9y
UHJldmVudHNQcm9wYWdhdGlvbigpKSB8fCAoaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvclBy
ZXZlbnRzUHJvcGFnYXRpb24oKSAmJiAhYmlhc2VkRGVsdGEuaGVpZ2h0KCkpIHx8ICh2ZXJ0aWNh
bE92ZXJzY3JvbGxCZWhhdmlvclByZXZlbnRzUHJvcGFnYXRpb24oKSAmJiAhYmlhc2VkRGVsdGEu
d2lkdGgoKSkpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbGFibGVBcmVhLmgKaW5kZXggYTM2ZTE5OGM2OTViMWI4NDY1YWMwNTBmZTFj
MzRhNjhlMWU5ODVhZS4uMzYzZWQ5MjFmNDkzODFkZTBlMjZmYzkwNTI1OWQwYjcxMWMyYWU4MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCkBAIC0zNzMsNiArMzcz
LDExIEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRTY3JvbGxB
bmltYXRpb24oKSB7IH0KKyAgICAKKyAgICB2aXJ0dWFsIGJvb2wgaG9yaXpvbnRhbE92ZXJzY3Jv
bGxCZWhhdmlvclByZXZlbnRzUHJvcGFnYXRpb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQor
ICAgIHZpcnR1YWwgYm9vbCB2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvclByZXZlbnRzUHJvcGFn
YXRpb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgc2hvdWxkQmxvY2tTY3Jv
bGxQcm9wYWdhdGlvbihjb25zdCBGbG9hdFNpemUmKSBjb25zdDsKKyAgICBGbG9hdFNpemUgZGVs
dGFGb3JQcm9wYWdhdGlvbihjb25zdCBGbG9hdFNpemUmKSBjb25zdDsKIAogcHJvdGVjdGVkOgog
ICAgIFdFQkNPUkVfRVhQT1JUIFNjcm9sbGFibGVBcmVhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuaAppbmRleCBiNzhmNjY0
YjgyODY1OWI1YTc5YjY2NDdiNjM5NGEyNWRhYzNmZmU3Li4xZjk0MjhjMmJhMzQzMGFmYmVjODAx
MDZiOGY5MWFkNTM2MjA0ZTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmgKQEAgLTE3NCw3ICsxNzQsNyBAQCBwdWJsaWM6
CiAgICAgYm9vbCBpc1VzZXJTY3JvbGxJblByb2dyZXNzKCkgY29uc3Q7CiAKICNpZiBQTEFURk9S
TShNQUMpCi0gICAgc3RhdGljIEZsb2F0U2l6ZSB3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0
aWNhbChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKTsKKyAgICBzdGF0aWMgRmxvYXRTaXplIHdo
ZWVsRGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRpY2FsKGNvbnN0IEZsb2F0U2l6ZSYpOwogCiAgICAg
Ly8gUmV0dXJucyB0cnVlIGlmIGhhbmRsZWQuCiAgICAgYm9vbCBwcm9jZXNzV2hlZWxFdmVudEZv
clNjcm9sbFNuYXAoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0KaW5kZXggYWI4YjdmNzYzYzVi
ZjFlYTM1MTM3MmE0YmYwOGEwOTMyYTdjMWU5MS4uMDcwZjRkODYyM2UwNDU1NTFlZjlmMDE2ZjE1
ZDFmZWU3YmJlMzMyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Nj
cm9sbEFuaW1hdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3Jv
bGxBbmltYXRvck1hYy5tbQpAQCAtMTA1LDYgKzEwNSw5IEBAIHN0YXRpYyBib29sIGdlc3R1cmVT
aG91bGRCZWdpblNuYXAoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBTY3Jv
bGxFCiAKIGJvb2wgU2Nyb2xsQW5pbWF0b3JNYWM6OmFsbG93c1ZlcnRpY2FsU3RyZXRjaGluZyhj
b25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpIGNvbnN0CiB7CisgICAgaWYgKG1f
c2Nyb2xsYWJsZUFyZWEudmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSA9PSBPdmVyc2Nyb2xs
QmVoYXZpb3I6Ok5vbmUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKICAgICBzd2l0Y2gg
KG1fc2Nyb2xsYWJsZUFyZWEudmVydGljYWxTY3JvbGxFbGFzdGljaXR5KCkpIHsKICAgICBjYXNl
IFNjcm9sbEVsYXN0aWNpdHk6OkF1dG9tYXRpYzogewogICAgICAgICBTY3JvbGxiYXIqIGhTY3Jv
bGxlciA9IG1fc2Nyb2xsYWJsZUFyZWEuaG9yaXpvbnRhbFNjcm9sbGJhcigpOwpAQCAtMTI4LDYg
KzEzMSw5IEBAIGJvb2wgU2Nyb2xsQW5pbWF0b3JNYWM6OmFsbG93c1ZlcnRpY2FsU3RyZXRjaGlu
Zyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsCiAKIGJvb2wgU2Nyb2xsQW5pbWF0b3JN
YWM6OmFsbG93c0hvcml6b250YWxTdHJldGNoaW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYg
d2hlZWxFdmVudCkgY29uc3QKIHsKKyAgICBpZiAobV9zY3JvbGxhYmxlQXJlYS5ob3Jpem9udGFs
T3ZlcnNjcm9sbEJlaGF2aW9yKCkgPT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpOb25lKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgCiAgICAgc3dpdGNoIChtX3Njcm9sbGFibGVBcmVhLmhvcml6
b250YWxTY3JvbGxFbGFzdGljaXR5KCkpIHsKICAgICBjYXNlIFNjcm9sbEVsYXN0aWNpdHk6OkF1
dG9tYXRpYzogewogICAgICAgICBTY3JvbGxiYXIqIGhTY3JvbGxlciA9IG1fc2Nyb2xsYWJsZUFy
ZWEuaG9yaXpvbnRhbFNjcm9sbGJhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLm1tCmluZGV4IDNjYzNkMjRm
YTkwOWQ5Y2VkYThlMzJmODY0MzIxMzI1NzBhNzE4ZjkuLjgwOGVkNTU4MmEyODI2YmEwZTdmYmVk
Njk0NTc2MWRmNDIyMWFiYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIubW0KQEAgLTM0NSw5ICszNDUsOSBA
QCBib29sIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjphcHBseVNjcm9sbERlbHRhV2l0aFN0
cmV0Y2hpbmcoY29uc3QgUGxhdGZvcm1XaAogICAgIHJldHVybiBjYW5TdGFydEFuaW1hdGlvbjsK
IH0KIAotRmxvYXRTaXplIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjp3aGVlbERlbHRhQmlh
c2luZ1Rvd2FyZHNWZXJ0aWNhbChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQp
CitGbG9hdFNpemUgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OndoZWVsRGVsdGFCaWFzaW5n
VG93YXJkc1ZlcnRpY2FsKGNvbnN0IEZsb2F0U2l6ZSYgd2hlZWxEZWx0YSkKIHsKLSAgICByZXR1
cm4gZGVsdGFBbGlnbmVkVG9Eb21pbmFudEF4aXMod2hlZWxFdmVudC5kZWx0YSgpKTsKKyAgICBy
ZXR1cm4gZGVsdGFBbGlnbmVkVG9Eb21pbmFudEF4aXMod2hlZWxEZWx0YSk7CiB9CiAKIHZvaWQg
U2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnVwZGF0ZVJ1YmJlckJhbmRBbmltYXRpbmdTdGF0
ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3Jv
bGxhYmxlQXJlYS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xs
YWJsZUFyZWEuaAppbmRleCBiZjI3ZWRjMTUyNjc0NDgzZmM3OTc3N2I2OWE5ZWMxYmRkYTE2YTYz
Li44MmRkMDgxNDBhNzliMzBmZjg2YWE1MDJkNzdkOTZjNzBmYmQ0NDFmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmgKQEAg
LTIzNyw3ICsyMzcsOCBAQCBwdWJsaWM6CiAgICAgSW50U2l6ZSBzY3JvbGxiYXJPZmZzZXQoY29u
c3QgU2Nyb2xsYmFyJikgY29uc3Q7CiAKICAgICBzdGQ6Om9wdGlvbmFsPExheW91dFJlY3Q+IHVw
ZGF0ZVNjcm9sbFBvc2l0aW9uKGNvbnN0IFNjcm9sbFBvc2l0aW9uQ2hhbmdlT3B0aW9ucyYsIGNv
bnN0IExheW91dFJlY3QmIHJldmVhbFJlY3QsIGNvbnN0IExheW91dFJlY3QmIGxvY2FsRXhwb3Nl
UmVjdCk7Ci0KKyAgICBib29sIGhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3JQcmV2ZW50c1By
b3BhZ2F0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhh
dmlvcigpICE9IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0bzsgfQorICAgIGJvb2wgdmVydGljYWxP
dmVyc2Nyb2xsQmVoYXZpb3JQcmV2ZW50c1Byb3BhZ2F0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gdmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSAhPSBPdmVyc2Nyb2xsQmVoYXZpb3I6OkF1
dG87IH0KIHByaXZhdGU6CiAgICAgYm9vbCBoYXNIb3Jpem9udGFsT3ZlcmZsb3coKSBjb25zdDsK
ICAgICBib29sIGhhc1ZlcnRpY2FsT3ZlcmZsb3coKSBjb25zdDsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxZjRiZWQwZGZj
OTMwZTczNTUzZjQyODkxNDUzY2JiNzUwMDJkYjRiLi5kOTdhZDg4YzgwMDgzMmM5MzJkMzM0ODZj
ZjQxOWI0YThlZGI1ZjgxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMjItMDEtMjggIE5pa29s
YW9zIE1vdWNodGFyaXMgIDxubW91Y2h0YXJpc0BhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVt
ZW50IENTUyBvdmVyc2Nyb2xsLWJlaGF2aW9yIGZvciBzeW5jaHJvbm91cyBzY3JvbGwKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjk2OAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9zY3JvbGxp
bmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50LWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1i
ZWhhdmlvci1lbGVtZW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL3N5
bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlv
ci1pZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvc3luYy1zY3Jv
bGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwt
YmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUt
aWZyYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvc3lu
Yy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAq
IHBsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9ybS93
aW4vVGVzdEV4cGVjdGF0aW9uczoKKwogMjAyMi0wMS0yOCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxt
bWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjI4MTY4Nyk6IFNwYWNl
IHdpZHRocyBoYXZlIHN5bnRoZXRpYyBib2xkIGFwcGxpZWQgdG8gdGhlbSBpbiB0aGUgZmFzdCB0
ZXh0IGNvZGVwYXRoIGJ1dCBub3QgdGhlIGNvbXBsZXggdGV4dCBjb2RlcGF0aApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhh
dmlvci1lbGVtZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5
bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMjcxNTBmZjYwYjVkYmRkMGI0YTdhYzZmODNmYjU2ZjU3Y2QyY2Q4MgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3Jv
bGwtYmVoYXZpb3ItZWxlbWVudC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMCBAQAorCitQQVNT
IEVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6
IGF1dG8gYXV0by4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJz
Y3JvbGwtYmVoYXZpb3I6IGF1dG8gYXV0by4KK1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9s
bCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBhdXRvLgorUEFTUyBFbGVt
ZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFp
biBhdXRvLgorUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Ny
b2xsLWJlaGF2aW9yOiBub25lIGF1dG8uCitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRl
c3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIGF1dG8uCitQQVNTIEVsZW1lbnQgaG9y
aXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gY29udGFp
bi4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVo
YXZpb3I6IGF1dG8gY29udGFpbi4KK1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0
IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBjb250YWluLgorUEFTUyBFbGVtZW50
IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBj
b250YWluLgorUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Ny
b2xsLWJlaGF2aW9yOiBub25lIGNvbnRhaW4uCitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xs
IHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIGNvbnRhaW4uCitQQVNTIEVsZW1l
bnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8g
bm9uZS4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwt
YmVoYXZpb3I6IGF1dG8gbm9uZS4KK1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0
IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBub25lLgorUEFTUyBFbGVtZW50IHZl
cnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBub25l
LgorUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJl
aGF2aW9yOiBub25lIG5vbmUuCitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0
aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIG5vbmUuCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVu
dC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9s
bC1iZWhhdmlvci1lbGVtZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTk0YmM1YmI4NWRiNTc1NjU0MzJm
ZmU3MmU0MDYzODU4ODY1OTY1YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
c2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC5odG1sCkBA
IC0wLDAgKzEsODYgQEAKKzwhZG9jdHlwZSBodG1sPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvb3ZlcnNjcm9sbC1iZWhhdmlvci1zdXBwb3J0LmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0i
aGVscCIgaHJlZj0iaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1vdmVyc2Nyb2xsLWJlaGF2
aW9yIj4KKzxzdHlsZT4KKyAgICAuc2Nyb2xsaW5nIHsKKyAgICAgICAgb3ZlcmZsb3c6IHNjcm9s
bDsKKyAgICB9CisgICAgLnNjcm9sbENvbnRlbnQgeworICAgICAgICB3aWR0aDogMzAwcHg7Cisg
ICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgfQorICAgICNyb290IHsKKyAgICAgICAgd2lkdGg6
IDIwMHB4OworICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAgIH0KKyAgICAjc2Nyb2xsZXIgewor
ICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgfQorPC9z
dHlsZT4KKzxkaXYgaWQ9J3Jvb3QnIGNsYXNzPSJzY3JvbGxpbmciPgorICAgIDxkaXYgaWQ9J3Nj
cm9sbGVyJyBjbGFzcz0ic2Nyb2xsaW5nIj4KKyAgICAgICAgPGRpdiBjbGFzcz0ic2Nyb2xsQ29u
dGVudCI+PC9kaXY+CisgICAgPC9kaXY+CisgICAgPGRpdiBjbGFzcz0ic2Nyb2xsQ29udGVudCI+
PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4KK2NvbnN0IHJvb3QgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgncm9vdCcpOworY29uc3Qgc2Nyb2xsZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnc2Nyb2xsZXInKTsKK3ZhciBvdmVyc2Nyb2xsRGF0YXMgPSBbWyJhdXRvIiwgImF1dG8iLCB0
cnVlLCB0cnVlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFsiY29udGFpbiIsICJhdXRvIiwg
ZmFsc2UsIHRydWVdLAorICAgICAgICAgICAgICAgICAgICAgICAgWyJub25lIiwgImF1dG8iLCBm
YWxzZSwgdHJ1ZV0sCisgICAgICAgICAgICAgICAgICAgICAgICBbImF1dG8iLCAiY29udGFpbiIs
IHRydWUsIGZhbHNlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFsiY29udGFpbiIsICJjb250
YWluIiwgZmFsc2UsIGZhbHNlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFsibm9uZSIsICJj
b250YWluIiwgZmFsc2UsIGZhbHNlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFsiYXV0byIs
ICJub25lIiwgdHJ1ZSwgZmFsc2VdLAorICAgICAgICAgICAgICAgICAgICAgICAgWyJjb250YWlu
IiwgIm5vbmUiLCBmYWxzZSwgZmFsc2VdLAorICAgICAgICAgICAgICAgICAgICAgICAgWyJub25l
IiwgIm5vbmUiLCBmYWxzZSwgZmFsc2VdXTsKKworZnVuY3Rpb24gcmVzZXRUZXN0KCkgeworICAg
IC8vIFRyeSB2YXJpb3VzIG1ldGhvZHMgdG8gZW5zdXJlIHRoZSBlbGVtZW50IHBvc2l0aW9uIGlz
IHJlc2V0IGltbWVkaWF0ZWx5LgorICAgIHNjcm9sbGVyLnNjcm9sbExlZnQgPSAzMDA7CisgICAg
c2Nyb2xsZXIuc2Nyb2xsVG9wID0gMzAwOworICAgIHNjcm9sbGVyLnNjcm9sbFRvKDMwMCwgMzAw
KTsKKworICAgIHJvb3Quc2Nyb2xsTGVmdCA9IDA7CisgICAgcm9vdC5zY3JvbGxUb3AgPSAwOwor
ICAgIHJvb3Quc2Nyb2xsVG8oMCwgMCk7Cit9CisKK2Z1bmN0aW9uIHN0YXJ0VGVzdCgpIHsKKyAg
ICBvdmVyc2Nyb2xsRGF0YXMuZm9yRWFjaCgoW292ZXJzY3JvbGxYLCBvdmVyc2Nyb2xsWSwgcHJv
cGFnYXRlWCwgcHJvcGFnYXRlWV0pID0+IHsKKyAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsK
KyAgICAgICAgICAgIHJlc2V0VGVzdCgpOworICAgICAgICAgICAgc2Nyb2xsZXIuc3R5bGUub3Zl
cnNjcm9sbEJlaGF2aW9yWCA9IG92ZXJzY3JvbGxYOworICAgICAgICAgICAgc2Nyb2xsZXIuc3R5
bGUub3ZlcnNjcm9sbEJlaGF2aW9yWSA9IG92ZXJzY3JvbGxZOworICAgICAgICAgICAgZG9jdW1l
bnQuYm9keS5jbGllbnRXaWR0aDsKKworICAgICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGll
bnRXaWR0aCAvIDI7CisgICAgICAgICAgICB2YXIgeSA9IHNjcm9sbGVyLmNsaWVudEhlaWdodCAv
IDI7CisgICAgICAgICAgICB2YXIgZGVsdGEgPSBnZXREZWx0YXMoInJpZ2h0Iik7CisgICAgICAg
ICAgICByZXR1cm4gbW91c2VXaGVlbFNjcm9sbEFuZFdhaXQoeCwgeSwgZGVsdGEuWCwgZGVsdGEu
WSwgZGVsdGEuWCwgZGVsdGEuWSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0
X2VxdWFscyhyb290LnNjcm9sbExlZnQgPiAwLCBwcm9wYWdhdGVYLCAnUHJvcGFnYXRlIGhvcml6
b250YWwgc2Nyb2xsJyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSwgJ0VsZW1lbnQgaG9y
aXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6ICcgKyBvdmVyc2Ny
b2xsWCArICcgJyArIG92ZXJzY3JvbGxZICsgJy4nKTsKKworICAgICAgICBwcm9taXNlX3Rlc3Qo
KCkgPT4geworICAgICAgICAgICAgcmVzZXRUZXN0KCk7CisgICAgICAgICAgICBzY3JvbGxlci5z
dHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JYID0gb3ZlcnNjcm9sbFg7CisgICAgICAgICAgICBzY3Jv
bGxlci5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JZID0gb3ZlcnNjcm9sbFk7CisKKyAgICAgICAg
ICAgIHZhciB4ID0gc2Nyb2xsZXIuY2xpZW50V2lkdGggLyAyOworICAgICAgICAgICAgdmFyIHkg
PSBzY3JvbGxlci5jbGllbnRIZWlnaHQgLyAyOworICAgICAgICAgICAgdmFyIGRlbHRhID0gZ2V0
RGVsdGFzKCJkb3duIik7CisgICAgICAgICAgICByZXR1cm4gbW91c2VXaGVlbFNjcm9sbEFuZFdh
aXQoeCwgeSwgZGVsdGEuWCwgZGVsdGEuWSwgZGVsdGEuWCwgZGVsdGEuWSkudGhlbigoKSA9PiB7
CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbFRvcCA+IDAsIHByb3Bh
Z2F0ZVksICdQcm9wYWdhdGUgdmVydGljYWwgc2Nyb2xsJyk7CisgICAgICAgICAgICB9KTsKKyAg
ICAgICAgfSwgJ0VsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJl
aGF2aW9yOiAnICsgb3ZlcnNjcm9sbFggKyAnICcgKyBvdmVyc2Nyb2xsWSArICcuJyk7CisgICAg
fSk7Cit9CisKK2FkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBzdGFydFRlc3QpOworPC9zY3JpcHQ+
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9s
bC1iZWhhdmlvci1pZnJhbWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkwMGEwYjdkOTA1Yjg3
YzFkYjc2MjY5NGZkMDA2MzhmMTk3Njk1MzcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMSBAQAorCisKK1BBU1MgSWZyYW1lIGhvcml6b250YWwg
c2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIGF1dG8uCitQQVNTIElm
cmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8g
YXV0by4KK1BBU1MgSWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xs
LWJlaGF2aW9yOiBjb250YWluIGF1dG8uCitQQVNTIElmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVz
dCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gYXV0by4KK1BBU1MgSWZyYW1lIGhv
cml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIGF1dG8u
CitQQVNTIElmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZp
b3I6IG5vbmUgYXV0by4KK1BBU1MgSWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBv
dmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIGNvbnRhaW4uCitQQVNTIElmcmFtZSB2ZXJ0aWNhbCBz
Y3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gY29udGFpbi4KK1BBU1Mg
SWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBj
b250YWluIGNvbnRhaW4uCitQQVNTIElmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92
ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gY29udGFpbi4KK1BBU1MgSWZyYW1lIGhvcml6b250
YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIGNvbnRhaW4uCitQ
QVNTIElmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6
IG5vbmUgY29udGFpbi4KK1BBU1MgSWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBv
dmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIG5vbmUuCitQQVNTIElmcmFtZSB2ZXJ0aWNhbCBzY3Jv
bGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gbm9uZS4KK1BBU1MgSWZyYW1l
IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWlu
IG5vbmUuCitQQVNTIElmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwt
YmVoYXZpb3I6IGNvbnRhaW4gbm9uZS4KK1BBU1MgSWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRl
c3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIG5vbmUuCitQQVNTIElmcmFtZSB2ZXJ0
aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgbm9uZS4KKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNj
cm9sbC1iZWhhdmlvci1pZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5
bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGIz
YjgxMWQxYmRiMzEwMzg5MDYxNjA0ZDVjMzA2ZDJjZjE5NDJkOAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZp
b3ItaWZyYW1lLmh0bWwKQEAgLTAsMCArMSw4NSBAQAorPCFkb2N0eXBlIGh0bWw+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9InJlc291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXN1cHBvcnQuanMiPjwvc2Ny
aXB0PgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3Nz
LW92ZXJzY3JvbGwtYmVoYXZpb3IiPgorPHN0eWxlPgorICAgIC5zY3JvbGxpbmcgeworICAgICAg
ICBvdmVyZmxvdzogc2Nyb2xsOworICAgIH0KKyAgICAuc2Nyb2xsQ29udGVudCB7CisgICAgICAg
IHdpZHRoOiAzMDBweDsKKyAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgYmFja2dyb3Vu
ZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmVkLCBibHVlKTsKKyAgICB9CisgICAgI3Jvb3Qg
eworICAgICAgICB3aWR0aDogMjAwcHg7CisgICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgfQor
ICAgICNzY3JvbGxlciB7CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgaGVpZ2h0OiAx
MDBweDsKKyAgICAgICAgb3ZlcnNjcm9sbC1iZWhhdmlvci15OiBhdXRvOworICAgIH0KKzwvc3R5
bGU+Cis8ZGl2IGlkPSdyb290JyBjbGFzcz0ic2Nyb2xsaW5nIj4KKyAgICA8aWZyYW1lIGlkPSdz
Y3JvbGxlcicgc3JjZG9jPSI8aHRtbD48ZGl2IHN0eWxlPSd3aWR0aDogMzAwcHg7IGhlaWdodDog
MzAwcHg7Jz48L2Rpdj48L2h0bWw+CisgICAgICAgICI+PC9pZnJhbWU+CisgICAgPGRpdiBjbGFz
cz0ic2Nyb2xsQ29udGVudCI+PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4KKyAgICBjb25zdCBy
b290ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jvb3QnKTsKKyAgICBjb25zdCBzY3JvbGxl
ciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY3JvbGxlcicpOworICAgIHZhciBvdmVyc2Ny
b2xsRGF0YXMgPSBbWyJhdXRvIiwgImF1dG8iLCB0cnVlLCB0cnVlXSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBbImNvbnRhaW4iLCAiYXV0byIsIGZhbHNlLCB0cnVlXSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBbIm5vbmUiLCAiYXV0byIsIGZhbHNlLCB0cnVlXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBbImF1dG8iLCAiY29udGFpbiIsIHRydWUsIGZhbHNlXSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImNvbnRhaW4iLCAiY29udGFpbiIsIGZhbHNl
LCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJub25lIiwgImNvbnRhaW4i
LCBmYWxzZSwgZmFsc2VdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiYXV0byIsICJu
b25lIiwgdHJ1ZSwgZmFsc2VdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiY29udGFp
biIsICJub25lIiwgZmFsc2UsIGZhbHNlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBb
Im5vbmUiLCAibm9uZSIsIGZhbHNlLCBmYWxzZV1dOworICAgIGZ1bmN0aW9uIHJlc2V0VGVzdCgp
IHsKKyAgICAgICAgLy8gVHJ5IHZhcmlvdXMgbWV0aG9kcyB0byBlbnN1cmUgdGhlIGVsZW1lbnQg
cG9zaXRpb24gaXMgcmVzZXQgaW1tZWRpYXRlbHkuCisgICAgICAgIHNjcm9sbGVyLmNvbnRlbnRX
aW5kb3cuc2Nyb2xsWCA9IDMwMDsKKyAgICAgICAgc2Nyb2xsZXIuY29udGVudFdpbmRvdy5zY3Jv
bGxZID0gMzAwOworICAgICAgICBzY3JvbGxlci5jb250ZW50V2luZG93LnNjcm9sbFRvKDMwMCwg
MzAwKTsKKyAgICAgICAgcm9vdC5zY3JvbGxMZWZ0ID0gMDsKKyAgICAgICAgcm9vdC5zY3JvbGxU
b3AgPSAwOworICAgICAgICByb290LnNjcm9sbFRvKDAsIDApOworICAgIH0KKworICAgIGZ1bmN0
aW9uIG92ZXJzY3JvbGxCZWhhdmlvclRlc3QoKSB7CisgICAgICAgIG92ZXJzY3JvbGxEYXRhcy5m
b3JFYWNoKChbb3ZlcnNjcm9sbFgsIG92ZXJzY3JvbGxZLCBwcm9wYWdhdGVYLCBwcm9wYWdhdGVZ
XSkgPT4geworICAgICAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAgICAg
ICByZXNldFRlc3QoKTsKKyAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gc2Nyb2xsZXIuY29u
dGVudFdpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaHRtbCIpWzBdOworICAg
ICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JYID0gb3ZlcnNjcm9s
bFg7CisgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclkgPSBv
dmVyc2Nyb2xsWTsKKyAgICAgICAgICAgICAgICB2YXIgeCA9IHNjcm9sbGVyLmNsaWVudFdpZHRo
IC8gMjsKKyAgICAgICAgICAgICAgICB2YXIgeSA9IHNjcm9sbGVyLmNsaWVudEhlaWdodCAvIDI7
CisgICAgICAgICAgICAgICAgdmFyIGRlbHRhID0gZ2V0RGVsdGFzKCJyaWdodCIpOworICAgICAg
ICAgICAgICAgIHJldHVybiBtb3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCh4LCB5LCBkZWx0YS5YLCBk
ZWx0YS5ZLCBkZWx0YS5YLCBkZWx0YS5ZKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICAg
ICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbExlZnQgPiAwLCBwcm9wYWdhdGVYLCAnUHJvcGFn
YXRlIGhvcml6b250YWwgc2Nyb2xsJyk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAg
ICB9LCAnSWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2
aW9yOiAnICsgb3ZlcnNjcm9sbFggKyAnICcgKyBvdmVyc2Nyb2xsWSArICcuJyk7CisKKyAgICAg
ICAgICAgIHByb21pc2VfdGVzdCgoKSA9PiB7CisgICAgICAgICAgICAgICAgcmVzZXRUZXN0KCk7
CisgICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IHNjcm9sbGVyLmNvbnRlbnRXaW5kb3cuZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImh0bWwiKVswXTsKKyAgICAgICAgICAgICAgICB0
YXJnZXQuc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWCA9IG92ZXJzY3JvbGxYOworICAgICAgICAg
ICAgICAgIHRhcmdldC5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JZID0gb3ZlcnNjcm9sbFk7CisK
KyAgICAgICAgICAgICAgICB2YXIgeCA9IHNjcm9sbGVyLmNsaWVudFdpZHRoIC8gMjsKKyAgICAg
ICAgICAgICAgICB2YXIgeSA9IHNjcm9sbGVyLmNsaWVudEhlaWdodCAvIDI7CisgICAgICAgICAg
ICAgICAgdmFyIGRlbHRhID0gZ2V0RGVsdGFzKCJkb3duIik7CisgICAgICAgICAgICAgICAgcmV0
dXJuIG1vdXNlV2hlZWxTY3JvbGxBbmRXYWl0KHgsIHksIGRlbHRhLlgsIGRlbHRhLlksIGRlbHRh
LlgsIGRlbHRhLlkpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgICAgICBhc3NlcnRfZXF1
YWxzKHJvb3Quc2Nyb2xsVG9wID4gMCwgcHJvcGFnYXRlWSwgJ1Byb3BhZ2F0ZSB2ZXJ0aWNhbCBz
Y3JvbGwnKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0sICdJZnJhbWUgdmVy
dGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiAnICsgb3ZlcnNjcm9s
bFggKyAnICcgKyBvdmVyc2Nyb2xsWSArICcuJyk7CisgICAgICAgIH0pOworICAgIH0KKworICAg
IHNjcm9sbGVyLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBvdmVyc2Nyb2xsQmVoYXZpb3JUZXN0
KTsKKzwvc2NyaXB0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3It
dW5zY3JvbGxhYmxlLWVsZW1lbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9zY3Jv
bGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVu
dC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjM5NWI2NDg4ZDA4NzBiOTU2MWMwMjg2NzlkN2Ux
NWE0N2ZjZTZlOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5n
L3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorCitQQVNTIFVuc2Nyb2xsYWJsZSBlbGVtZW50IGhv
cml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLgorUEFT
UyBVbnNjcm9sbGFibGUgZWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3Jv
bGwtYmVoYXZpb3I6IG5vbmUuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xs
aW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwt
YmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYjRiMDZlOWU2
NDE5MzcwODA4MTI3OGQ5MTAwM2MwNWQ1NzI0YjI2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNj
cm9sbGFibGUtZWxlbWVudC5odG1sCkBAIC0wLDAgKzEsNjYgQEAKKzwhZG9jdHlwZSBodG1sPgor
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb3ZlcnNjcm9sbC1iZWhhdmlvci1zdXBwb3J0Lmpz
Ij48L3NjcmlwdD4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9kcmFmdHMuY3Nzd2cu
b3JnL2Nzcy1vdmVyc2Nyb2xsLWJlaGF2aW9yIj4KKzxzdHlsZT4KKyAgICAuc2Nyb2xsaW5nIHsK
KyAgICAgICAgb3ZlcmZsb3c6IHNjcm9sbDsKKyAgICB9CisgICAgLnNjcm9sbENvbnRlbnQgewor
ICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgfQorICAg
ICNyb290IHsKKyAgICAgICAgd2lkdGg6IDIwMHB4OworICAgICAgICBoZWlnaHQ6IDIwMHB4Owor
ICAgIH0KKyAgICAjc2Nyb2xsZXIgeworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhl
aWdodDogMTAwcHg7CisgICAgICAgIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmU7CisgICAgICAg
IG92ZXJmbG93OiB2aXNpYmxlOworICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQo
MTM1ZGVnLCByZWQsIGJsdWUpOworICAgIH0KKzwvc3R5bGU+Cis8ZGl2IGlkPSJyb290IiBjbGFz
cz0ic2Nyb2xsaW5nIj4KKyAgICA8ZGl2IGlkPSJzY3JvbGxlciI+CisgICAgICAgIDxkaXYgY2xh
c3M9InNjcm9sbENvbnRlbnQiPjwvZGl2PgorICAgIDwvZGl2PgorICAgIDxkaXYgY2xhc3M9InNj
cm9sbENvbnRlbnQiPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+Citjb25zdCByb290ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jvb3QnKTsKK2NvbnN0IHNjcm9sbGVyID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ3Njcm9sbGVyJyk7CisKK2Z1bmN0aW9uIHJlc2V0VGVzdCgpIHsKKyAg
ICByb290LnNjcm9sbExlZnQgPSAwOworICAgIHJvb3Quc2Nyb2xsVG9wID0gMDsKKyAgICByb290
LnNjcm9sbFRvKDAsIDApOworfQorCitmdW5jdGlvbiBzdGFydFRlc3QoKSB7CisgICAgICAgIHBy
b21pc2VfdGVzdCgoKSA9PiB7CisgICAgICAgICAgICByZXNldFRlc3QoKTsKKyAgICAgICAgICAg
IHZhciB4ID0gc2Nyb2xsZXIuY2xpZW50V2lkdGggLyAyOworICAgICAgICAgICAgdmFyIHkgPSBz
Y3JvbGxlci5jbGllbnRIZWlnaHQgLyAyOworICAgICAgICAgICAgdmFyIGRlbHRhID0gZ2V0RGVs
dGFzKCJyaWdodCIpOworICAgICAgICAgICAgcmV0dXJuIG1vdXNlV2hlZWxTY3JvbGxBbmRXYWl0
KHgsIHksIGRlbHRhLlgsIGRlbHRhLlksIGRlbHRhLlgsIGRlbHRhLlkpLnRoZW4oKCkgPT4gewor
ICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxMZWZ0ID4gMCwgdHJ1ZSwg
J1Byb3BhZ2F0ZSBob3Jpem9udGFsIHNjcm9sbCcpOworICAgICAgICAgICAgfSk7CisgICAgICAg
IH0sICdVbnNjcm9sbGFibGUgZWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3Zl
cnNjcm9sbC1iZWhhdmlvcjogbm9uZS4nKTsKKworICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4g
eworICAgICAgICAgICAgcmVzZXRUZXN0KCk7CisgICAgICAgICAgICB2YXIgeCA9IHNjcm9sbGVy
LmNsaWVudFdpZHRoIC8gMjsKKyAgICAgICAgICAgIHZhciB5ID0gc2Nyb2xsZXIuY2xpZW50SGVp
Z2h0IC8gMjsKKyAgICAgICAgICAgIHZhciBkZWx0YSA9IGdldERlbHRhcygiZG93biIpOworICAg
ICAgICAgICAgcmV0dXJuIG1vdXNlV2hlZWxTY3JvbGxBbmRXYWl0KHgsIHksIGRlbHRhLlgsIGRl
bHRhLlksIGRlbHRhLlgsIGRlbHRhLlkpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGFz
c2VydF9lcXVhbHMocm9vdC5zY3JvbGxUb3AgPiAwLCB0cnVlLCAnUHJvcGFnYXRlIHZlcnRpY2Fs
IHNjcm9sbCcpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0sICdVbnNjcm9sbGFibGUgZWxl
bWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUu
Jyk7Cit9CisKK2FkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBzdGFydFRlc3QpOworPC9zY3JpcHQ+
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUt
aWZyYW1lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Ny
b2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uN2ZhNTljY2JhNzlhZWZmMzNkYTcwZTkzZDQ4OGEwN2VlYzljNTY5MQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92
ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSw1IEBACisKKworUEFTUyBVbnNjcm9sbGFibGUgaWZyYW1lIGhvcml6b250YWwgc2Nyb2xs
IHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLgorUEFTUyBVbnNjcm9sbGFibGUg
aWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9u
ZS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwt
b3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xs
YWJsZS1pZnJhbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZGY2NzVhYzQzNzI5ZDNkYmI0ZjVmNTMyNDg5
MTIzZTY2OWE1N2IyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxp
bmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLmh0
bWwKQEAgLTAsMCArMSw2NSBAQAorPCFkb2N0eXBlIGh0bWw+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJl
c291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXN1cHBvcnQuanMiPjwvc2NyaXB0PgorPGxpbmsg
cmVsPSJoZWxwIiBocmVmPSJodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLW92ZXJzY3JvbGwt
YmVoYXZpb3IiPgorPHN0eWxlPgorICAgIC5zY3JvbGxpbmcgeworICAgICAgICBvdmVyZmxvdzog
c2Nyb2xsOworICAgIH0KKyAgICAuc2Nyb2xsQ29udGVudCB7CisgICAgICAgIHdpZHRoOiAzMDBw
eDsKKyAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICB9CisgICAgI3Jvb3QgeworICAgICAgICB3
aWR0aDogMjAwcHg7CisgICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgfQorICAgICNzY3JvbGxl
ciB7CisgICAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgICAgaGVpZ2h0OiAyMDBweDsKKyAgICAg
ICAgb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZTsKKyAgICAgICAgb3ZlcmZsb3c6IHZpc2libGU7
CisgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJlZCwgYmx1ZSk7
CisgICAgfQorPC9zdHlsZT4KKzxkaXYgaWQ9J3Jvb3QnIGNsYXNzPSJzY3JvbGxpbmciPgorICAg
IDxpZnJhbWUgaWQ9J3Njcm9sbGVyJyBzcmNkb2M9IjxodG1sIHN0eWxlPSdvdmVyc2Nyb2xsLWJl
aGF2aW9yOiBub25lOyc+PGRpdiBzdHlsZT0nd2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDEwMHB4Oyc+
PC9kaXY+PC9odG1sPgorICAgICAgICAiPjwvaWZyYW1lPgorICAgIDxkaXYgY2xhc3M9InNjcm9s
bENvbnRlbnQiPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+Citjb25zdCByb290ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3Jvb3QnKTsKK2NvbnN0IHNjcm9sbGVyID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ3Njcm9sbGVyJyk7CisKK2Z1bmN0aW9uIHJlc2V0VGVzdCgpIHsKKyAgICBy
b290LnNjcm9sbExlZnQgPSAwOworICAgIHJvb3Quc2Nyb2xsVG9wID0gMDsKKyAgICByb290LnNj
cm9sbFRvKDAsIDApOworfQorCitmdW5jdGlvbiBzdGFydFRlc3QoKSB7CisgICAgICAgIHByb21p
c2VfdGVzdCgoKSA9PiB7CisgICAgICAgICAgICByZXNldFRlc3QoKTsKKyAgICAgICAgICAgIHZh
ciB4ID0gc2Nyb2xsZXIuY2xpZW50V2lkdGggLyAyOworICAgICAgICAgICAgdmFyIHkgPSBzY3Jv
bGxlci5jbGllbnRIZWlnaHQgLyAyOworICAgICAgICAgICAgdmFyIGRlbHRhID0gZ2V0RGVsdGFz
KCJyaWdodCIpOworICAgICAgICAgICAgcmV0dXJuIG1vdXNlV2hlZWxTY3JvbGxBbmRXYWl0KHgs
IHksIGRlbHRhLlgsIGRlbHRhLlksIGRlbHRhLlgsIGRlbHRhLlkpLnRoZW4oKCkgPT4geworICAg
ICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxMZWZ0ID4gMCwgdHJ1ZSwgJ1By
b3BhZ2F0ZSBob3Jpem9udGFsIHNjcm9sbCcpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0s
ICdVbnNjcm9sbGFibGUgaWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Ny
b2xsLWJlaGF2aW9yOiBub25lLicpOworCisgICAgICAgIHByb21pc2VfdGVzdCgoKSA9PiB7Cisg
ICAgICAgICAgICByZXNldFRlc3QoKTsKKyAgICAgICAgICAgIHZhciB4ID0gc2Nyb2xsZXIuY2xp
ZW50V2lkdGggLyAyOworICAgICAgICAgICAgdmFyIHkgPSBzY3JvbGxlci5jbGllbnRIZWlnaHQg
LyAyOworICAgICAgICAgICAgdmFyIGRlbHRhID0gZ2V0RGVsdGFzKCJkb3duIik7CisgICAgICAg
ICAgICByZXR1cm4gbW91c2VXaGVlbFNjcm9sbEFuZFdhaXQoeCwgeSwgZGVsdGEuWCwgZGVsdGEu
WSwgZGVsdGEuWCwgZGVsdGEuWSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0
X2VxdWFscyhyb290LnNjcm9sbFRvcCA+IDAsIHRydWUsICdQcm9wYWdhdGUgdmVydGljYWwgc2Ny
b2xsJyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSwgJ1Vuc2Nyb2xsYWJsZSBpZnJhbWUg
dmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLicpOwor
fQorCithZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgc3RhcnRUZXN0KTsKKzwvc2NyaXB0PgpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2lvcy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBl
Y3RhdGlvbnMKaW5kZXggYjExZDMxN2RiODFkODgwNjk3ZTI0MTI4OTA2NzM2YmYzMWNjYmIzZS4u
ZWM2MGU0OTQ2NGQ0YjhhZmQ2MTg2ZmExZjE0Njk5OTRiNWRjMDJmYiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTgxNCw2ICs4MTQsMTIgQEAgc3ZnL3Rl
eHQvc2VsZWN0aW9uLWRvdWJsZWNsaWNrLnN2ZyBbIFNraXAgXQogc3ZnL3RleHQvc2VsZWN0aW9u
LXRyaXBsZWNsaWNrLnN2ZyBbIFNraXAgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvY3NzLXNoYWRvdy1wYXJ0cy9pbnZhbGlkYXRpb24tcGFydC1wc2V1ZG8uaHRtbCBbIFNr
aXAgXQogCisjIE92ZXJzY3JvbGwtYmVoYXZpb3IgaXMgbm90IHN1cHBvcnRlZCBvbiBpT1MgeWV0
OiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNzg4CitmYXN0L3Nj
cm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQuaHRtbCBbIFNr
aXAgXQorZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJh
bWUuaHRtbCBbIFNraXAgXQorZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1i
ZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC5odG1sIFsgU2tpcCBdCitmYXN0L3Njcm9sbGlu
Zy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUuaHRt
bCBbIFNraXAgXQorCiAjIElPUyBkb2VzIG5vdCBpbXBsZW1lbnQgc2V0QXV0b21hdGljTGlua0Rl
dGVjdGlvbkVuYWJsZWQKIGVkaXRpbmcvaW5zZXJ0aW5nL3R5cGluZy1zcGFjZS10by10cmlnZ2Vy
LXNtYXJ0LWxpbmsuaHRtbCBbIFNraXAgXQogZWRpdGluZy9pbnNlcnRpbmcvc21hcnQtbGluay13
aGVuLWNhcmV0LWlzLW1vdmVkLWJlZm9yZS1VUkwuaHRtbCBbIFNraXAgXQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDNiMmM0OWQ2NTAxNmUy
NDkwYjA1MWFiYjU0YzRiODk4OTFkZTJkZTcuLjQ4NDVmNjEyYjU3NWVkNjU2MmE4YzExODk1YWRh
MTY0NmY1NjgyYmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVz
dEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBl
Y3RhdGlvbnMKQEAgLTU1Niw2ICs1NTYsMTAgQEAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLXNjcm9sbC1zbmFwL3Njcm9sbC10YXJnZXQtcGFkZGluZy0wMDEuaHQKIGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1zdG9wLWNoYW5nZS5odG1sIFsgRmFpbHVyZSBdCiBjc3MzL3Njcm9sbC1zbmFwL3Njcm9s
bC1wYWRkaW5nLW1haW5mcmFtZS1wYWdpbmcuaHRtbCBbIEZhaWx1cmUgXQogCisjIExhY2sgb2Yg
d2F5cyB0byBjb250cm9sIHRoZSBjcm9zcy1mcmFtZSBzY3JvbGwgY2hhaW5pbmcgaW4gV0sxLgor
ZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUuaHRt
bCBbIFNraXAgXQorZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlv
ci11bnNjcm9sbGFibGUtaWZyYW1lLmh0bWwgWyBTa2lwIF0KKwogIyMjIEVORCBPRiAoMikgRmFp
bHVyZXMgd2l0aG91dCBidWcgcmVwb3J0cwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4
cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCmlu
ZGV4IGEyZTlmNTAzMDc4MzA2YzkxNDkwMDJlM2JmYzhhYWY5ZThlZTBkY2QuLjY2YWE2NGFhY2Rm
NTY3NzNlZDM3OWJlNDI2OGY0MjM2MjFlZjE3NjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dp
bi9UZXN0RXhwZWN0YXRpb25zCkBAIC02NDQsNiArNjQ0LDEyIEBAIHBvaW50ZXItbG9jay8gWyBT
a2lwIF0KIGh0dHAvdGVzdHMvcG9pbnRlci1sb2NrLyBbIFNraXAgXQogZmFzdC9qcy1wcm9taXNl
L2pzLXByb21pc2UtaW52YWxpZC1jb250ZXh0LWFjY2Vzcy5odG1sIFsgU2tpcCBdCiAKKyMgT3Zl
cnNjcm9sbC1iZWhhdmlvciBpcyBub3Qgc3VwcG9ydGVkIG9uIFdpbmRvd3MKK2Zhc3Qvc2Nyb2xs
aW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC5odG1sIFsgU2tpcCBd
CitmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS5o
dG1sIFsgU2tpcCBdCitmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2
aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWwgWyBTa2lwIF0KK2Zhc3Qvc2Nyb2xsaW5nL3N5
bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sIFsg
U2tpcCBdCisKICMgRGF0YWxpc3QgaXMgdW5zdXBwb3J0ZWQgb24gV2luZG93cwogYWNjZXNzaWJp
bGl0eS9kYXRhbGlzdC5odG1sIFsgV29udEZpeCBdCiBmYXN0L2Zvcm1zL2RhdGFsaXN0IFsgV29u
dEZpeCBdCg==
</data>
<flag name="review"
          id="476700"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
    <flag name="commit-queue"
          id="476706"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450690</attachid>
            <date>2022-02-02 12:46:52 -0800</date>
            <delta_ts>2022-02-02 21:39:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222968-20220202124651.patch</filename>
            <type>text/plain</type>
            <size>36370</size>
            <attacher name="Nikos Mouchtaris">nmouchtaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4OTI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmViYTMyMjJlM2VmZjFk
MTI5NTRiNzA0YjFiNjJkMTA5NDk3OGU1Zi4uZDQyNDRmMzhkOTYzNzI1ZjgxNmNlOGRiZDI1OWJi
ZGJmNThjYTZmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDIyLTAyLTAyICBOaWtv
bGFvcyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxl
bWVudCBDU1Mgb3ZlcnNjcm9sbC1iZWhhdmlvciBmb3Igc3luY2hyb25vdXMgc2Nyb2xsCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI5NjgKKworICAg
ICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgVGVzdHM6IGZhc3Qvc2Ny
b2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC5odG1sCisgICAg
ICAgICAgICAgICBmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9y
LWlmcmFtZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1v
dmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWwKKyAgICAgICAgICAg
ICAgIGZhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3Jv
bGxhYmxlLWlmcmFtZS5odG1sCisKKyAgICAgICAgU3BsaXQgdXAgcGF0Y2ggYnkgQ2F0aGllIENo
ZW4gYW5kIEZyZWRlcmljIFdhbmcuIEFkZCBmdW5jdGlvbiBmb3IgYmxvY2tpbmcgc2Nyb2xsIGNo
YWluaW5nCisgICAgICAgIGFuZCBmaWx0ZXJpbmcgc2Nyb2xsIGRlbHRhIGRlcGVuZGluZyBvbiB0
aGUgdmFsdWVzIG9mIG92ZXJzY3JvbGwgYmVoYXZpb3IgZm9yIGEgc2Nyb2xsYWJsZQorICAgICAg
ICBhcmVhLiBUaGlzIHBhdGNoIGlzIGZvciBzeW5jaHJvbm91cyBzY3JvbGxpbmcgb25seS4KKwor
ICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudEludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OnNj
cm9sbFZpYU5vblBsYXRmb3JtRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVy
OjpoYW5kbGVXaGVlbEV2ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2luZ0JveCk6CisgICAgICAgIChX
ZWJDb3JlOjpFdmVudEhhbmRsZXI6OnNjcm9sbGFibGVBcmVhQ2FuSGFuZGxlRXZlbnQpOgorICAg
ICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmg6CisgICAgICAgICogcGFnZS9tYWMvRXZlbnRIYW5k
bGVyTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6ZmluZEVuY2xvc2luZ1Njcm9sbGFibGVDb250
YWluZXIpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjpl
dmVudEZvclByb3BhZ2F0aW9uIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxhYmxl
QXJlYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6ZGVsdGFGb3JQcm9w
YWdhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6c2hvdWxk
QmxvY2tTY3JvbGxQcm9wYWdhdGlvbiBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xs
YWJsZUFyZWEuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGFibGVBcmVhOjpob3Jpem9udGFs
T3ZlcnNjcm9sbEJlaGF2aW9yUHJldmVudHNQcm9wYWdhdGlvbiBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6dmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3JQcmV2ZW50
c1Byb3BhZ2F0aW9uIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3Rz
Q29udHJvbGxlci5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTWFjOjphbGxvd3NWZXJ0aWNhbFN0
cmV0Y2hpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JNYWM6OmFs
bG93c0hvcml6b250YWxTdHJldGNoaW5nIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMv
U2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxp
bmdFZmZlY3RzQ29udHJvbGxlcjo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwpOgor
CiAyMDIyLTAyLTAxICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbV1BdIFJlbW92ZSBQb3N0U2NyaXB0IGNvbnZlcnNpb24gY29kZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDI3NTE3YzIyZTc3MDllYWFlNTUxMjNmOTllZTY5N2Vk
NjY4NWE5MDEuLjVjMjE4MTY2NzhlMjFkZTQ3YzBmN2YzYTY3ZWE3OTRiYTQ4ODczNGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTMwMjcsMTEgKzMwMjcsMTcgQEAgYm9v
bCBFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnRJbnRlcm5hbChjb25zdCBQbGF0Zm9ybVdo
ZWVsRXZlbnQmIGV2ZW50LCBPcHQKICAgICBpZiAoYWxsb3dTY3JvbGxpbmcpCiAgICAgICAgIGFs
bG93U2Nyb2xsaW5nID0gbV9mcmFtZS5wYWdlKCktPnNjcm9sbExhdGNoaW5nQ29udHJvbGxlcigp
LmxhdGNoaW5nQWxsb3dzU2Nyb2xsaW5nSW5GcmFtZShtX2ZyYW1lLCBzY3JvbGxhYmxlQXJlYSk7
CiAjZW5kaWYKKyAgICBhdXRvIGFkanVzdGVkV2hlZWxFdmVudCA9IGV2ZW50OworICAgIGF1dG8g
ZmlsdGVyZWREZWx0YSA9IGFkanVzdGVkV2hlZWxFdmVudC5kZWx0YSgpOworICAgIGZpbHRlcmVk
RGVsdGEgPSB2aWV3LT5kZWx0YUZvclByb3BhZ2F0aW9uKGZpbHRlcmVkRGVsdGEpOworICAgIGlm
ICh2aWV3LT5zaG91bGRCbG9ja1Njcm9sbFByb3BhZ2F0aW9uKGZpbHRlcmVkRGVsdGEpKQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGlmIChhbGxvd1Njcm9sbGluZykgewogICAgICAgICAv
LyBGSVhNRTogcHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxpbmcoKSBpcyBvbmx5IGNhbGxlZCBm
b3IgRnJhbWVWaWV3IHNjcm9sbGluZywgbm90IG92ZXJmbG93IHNjcm9sbGluZywgd2hpY2ggaXMg
Y29uZnVzaW5nLgotICAgICAgICBoYW5kbGVkRXZlbnQgPSBwcm9jZXNzV2hlZWxFdmVudEZvclNj
cm9sbGluZyhldmVudCwgc2Nyb2xsYWJsZUFyZWEsIGhhbmRsaW5nKTsKLSAgICAgICAgcHJvY2Vz
c1doZWVsRXZlbnRGb3JTY3JvbGxTbmFwKGV2ZW50LCBzY3JvbGxhYmxlQXJlYSk7CisgICAgICAg
IGFkanVzdGVkV2hlZWxFdmVudCA9IGFkanVzdGVkV2hlZWxFdmVudC5jb3B5V2l0aERlbHRhQW5k
VmVsb2NpdHkoZmlsdGVyZWREZWx0YSwgYWRqdXN0ZWRXaGVlbEV2ZW50LnNjcm9sbGluZ1ZlbG9j
aXR5KCkpOworICAgICAgICBoYW5kbGVkRXZlbnQgPSBwcm9jZXNzV2hlZWxFdmVudEZvclNjcm9s
bGluZyhhZGp1c3RlZFdoZWVsRXZlbnQsIHNjcm9sbGFibGVBcmVhLCBoYW5kbGluZyk7CisgICAg
ICAgIHByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsU25hcChhZGp1c3RlZFdoZWVsRXZlbnQsIHNj
cm9sbGFibGVBcmVhKTsKICAgICB9CiAKICAgICByZXR1cm4gaGFuZGxlZEV2ZW50OwpAQCAtMzA1
MCwxOCArMzA1NiwxOSBAQCBzdGF0aWMgdm9pZCBoYW5kbGVXaGVlbEV2ZW50UGhhc2VJblNjcm9s
bGFibGVBcmVhKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYQogCiBzdGF0aWMgYm9vbCBz
Y3JvbGxWaWFOb25QbGF0Zm9ybUV2ZW50KFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSwg
Y29uc3QgV2hlZWxFdmVudCYgd2hlZWxFdmVudCkKIHsKKyAgICBhdXRvIGZpbHRlcmVkRGVsdGEg
PSBGbG9hdFNpemUod2hlZWxFdmVudC5kZWx0YVgoKSwgd2hlZWxFdmVudC5kZWx0YVkoKSk7Cisg
ICAgZmlsdGVyZWREZWx0YSA9IHNjcm9sbGFibGVBcmVhLmRlbHRhRm9yUHJvcGFnYXRpb24oZmls
dGVyZWREZWx0YSk7CiAgICAgU2Nyb2xsR3JhbnVsYXJpdHkgc2Nyb2xsR3JhbnVsYXJpdHkgPSB3
aGVlbEdyYW51bGFyaXR5VG9TY3JvbGxHcmFudWxhcml0eSh3aGVlbEV2ZW50LmRlbHRhTW9kZSgp
KTsKICAgICBib29sIGRpZEhhbmRsZVdoZWVsRXZlbnQgPSBmYWxzZTsKLSAgICBpZiAoZmxvYXQg
YWJzb2x1dGVEZWx0YSA9IHN0ZDo6YWJzKHdoZWVsRXZlbnQuZGVsdGFYKCkpKQotICAgICAgICBk
aWRIYW5kbGVXaGVlbEV2ZW50IHw9IHNjcm9sbGFibGVBcmVhLnNjcm9sbCh3aGVlbEV2ZW50LmRl
bHRhWCgpID4gMCA/IFNjcm9sbFJpZ2h0IDogU2Nyb2xsTGVmdCwgc2Nyb2xsR3JhbnVsYXJpdHks
IGFic29sdXRlRGVsdGEpOwotCi0gICAgaWYgKGZsb2F0IGFic29sdXRlRGVsdGEgPSBzdGQ6OmFi
cyh3aGVlbEV2ZW50LmRlbHRhWSgpKSkKLSAgICAgICAgZGlkSGFuZGxlV2hlZWxFdmVudCB8PSBz
Y3JvbGxhYmxlQXJlYS5zY3JvbGwod2hlZWxFdmVudC5kZWx0YVkoKSA+IDAgPyBTY3JvbGxEb3du
IDogU2Nyb2xsVXAsIHNjcm9sbEdyYW51bGFyaXR5LCBhYnNvbHV0ZURlbHRhKTsKKyAgICBpZiAo
ZmxvYXQgYWJzb2x1dGVEZWx0YSA9IHN0ZDo6YWJzKGZpbHRlcmVkRGVsdGEud2lkdGgoKSkpCisg
ICAgICAgIGRpZEhhbmRsZVdoZWVsRXZlbnQgfD0gc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsKGZpbHRl
cmVkRGVsdGEud2lkdGgoKSA+IDAgPyBTY3JvbGxSaWdodCA6IFNjcm9sbExlZnQsIHNjcm9sbEdy
YW51bGFyaXR5LCBhYnNvbHV0ZURlbHRhKTsKIAorICAgIGlmIChmbG9hdCBhYnNvbHV0ZURlbHRh
ID0gc3RkOjphYnMoZmlsdGVyZWREZWx0YS5oZWlnaHQoKSkpCisgICAgICAgIGRpZEhhbmRsZVdo
ZWVsRXZlbnQgfD0gc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsKGZpbHRlcmVkRGVsdGEuaGVpZ2h0KCkg
PiAwID8gU2Nyb2xsRG93biA6IFNjcm9sbFVwLCBzY3JvbGxHcmFudWxhcml0eSwgYWJzb2x1dGVE
ZWx0YSk7CiAgICAgcmV0dXJuIGRpZEhhbmRsZVdoZWVsRXZlbnQ7CiB9CiAKLWJvb2wgRXZlbnRI
YW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2luZ0JveChOb2RlKiBz
dGFydE5vZGUsIGNvbnN0IFdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIGNvbnN0IEZsb2F0U2l6ZSYg
ZmlsdGVyZWRQbGF0Zm9ybURlbHRhLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlcmVkVmVsb2NpdHks
IE9wdGlvblNldDxFdmVudEhhbmRsaW5nPiBldmVudEhhbmRsaW5nKQorYm9vbCBFdmVudEhhbmRs
ZXI6OmhhbmRsZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94KE5vZGUqIHN0YXJ0
Tm9kZSwgY29uc3QgV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgRmxvYXRTaXplJiBmaWx0ZXJlZFBs
YXRmb3JtRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyZWRWZWxvY2l0eSwgT3B0aW9uU2V0
PEV2ZW50SGFuZGxpbmc+IGV2ZW50SGFuZGxpbmcpCiB7CiAgICAgYm9vbCBzaG91bGRIYW5kbGVF
dmVudCA9IHdoZWVsRXZlbnQuZGVsdGFYKCkgfHwgd2hlZWxFdmVudC5kZWx0YVkoKTsKICNpZiBF
TkFCTEUoV0hFRUxfRVZFTlRfTEFUQ0hJTkcpCkBAIC0zMDkxLDYgKzMwOTgsMTIgQEAgYm9vbCBF
dmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94KE5v
ZGUqIHN0YXJ0Tm9kZSwgY28KICAgICB9OwogCiAgICAgUmVuZGVyQm94KiBjdXJyZW50RW5jbG9z
aW5nQm94ID0gJmluaXRpYWxFbmNsb3NpbmdCb3g7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIGF1
dG8gYmlhc2VkRGVsdGEgPSBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6d2hlZWxEZWx0YUJp
YXNpbmdUb3dhcmRzVmVydGljYWwoRmxvYXRTaXplKHdoZWVsRXZlbnQuZGVsdGFYKCksIHdoZWVs
RXZlbnQuZGVsdGFZKCkpKTsKKyNlbHNlCisgICAgYXV0byBiaWFzZWREZWx0YSA9IEZsb2F0U2l6
ZSh3aGVlbEV2ZW50LmRlbHRhWCgpLCB3aGVlbEV2ZW50LmRlbHRhWSgpKTsKKyNlbmRpZgorICAg
IAogICAgIHdoaWxlIChjdXJyZW50RW5jbG9zaW5nQm94KSB7CiAgICAgICAgIGlmIChhdXRvKiBi
b3hTY3JvbGxhYmxlQXJlYSA9IHNjcm9sbGFibGVBcmVhRm9yQm94KCpjdXJyZW50RW5jbG9zaW5n
Qm94KSkgewogICAgICAgICAgICAgYXV0byBwbGF0Zm9ybUV2ZW50ID0gd2hlZWxFdmVudC51bmRl
cmx5aW5nUGxhdGZvcm1FdmVudCgpOwpAQCAtMzEwMyw2ICszMTE2LDEwIEBAIGJvb2wgRXZlbnRI
YW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2luZ0JveChOb2RlKiBz
dGFydE5vZGUsIGNvCiAKICAgICAgICAgICAgIGlmIChzY3JvbGxpbmdXYXNIYW5kbGVkKQogICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgCisgICAgICAgICAgICBiaWFz
ZWREZWx0YSA9IGJveFNjcm9sbGFibGVBcmVhLT5kZWx0YUZvclByb3BhZ2F0aW9uKGJpYXNlZERl
bHRhKTsKKyAgICAgICAgICAgIGlmIChib3hTY3JvbGxhYmxlQXJlYS0+c2hvdWxkQmxvY2tTY3Jv
bGxQcm9wYWdhdGlvbihiaWFzZWREZWx0YSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgIH0KIAogICAgICAgICBjdXJyZW50RW5jbG9zaW5nQm94ID0gY3VycmVudEVuY2xv
c2luZ0JveC0+Y29udGFpbmluZ0Jsb2NrKCk7CkBAIC0zMTE1LDcgKzMxMzIsNyBAQCBib29sIEV2
ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudEluQXBwcm9wcmlhdGVFbmNsb3NpbmdCb3goTm9k
ZSogc3RhcnROb2RlLCBjbwogYm9vbCBFdmVudEhhbmRsZXI6OnNjcm9sbGFibGVBcmVhQ2FuSGFu
ZGxlRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBTY3JvbGxhYmxl
QXJlYSYgc2Nyb2xsYWJsZUFyZWEpCiB7CiAjaWYgUExBVEZPUk0oTUFDKQotICAgIGF1dG8gYmlh
c2VkRGVsdGEgPSBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6d2hlZWxEZWx0YUJpYXNpbmdU
b3dhcmRzVmVydGljYWwod2hlZWxFdmVudCk7CisgICAgYXV0byBiaWFzZWREZWx0YSA9IFNjcm9s
bGluZ0VmZmVjdHNDb250cm9sbGVyOjp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbCh3
aGVlbEV2ZW50LmRlbHRhKCkpOwogI2Vsc2UKICAgICBhdXRvIGJpYXNlZERlbHRhID0gd2hlZWxF
dmVudC5kZWx0YSgpOwogI2VuZGlmCkBAIC0zMTI3LDYgKzMxNDQsOCBAQCBib29sIEV2ZW50SGFu
ZGxlcjo6c2Nyb2xsYWJsZUFyZWFDYW5IYW5kbGVFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZl
bnQmIHdoZWVsRQogICAgIGF1dG8gaG9yaXpvbnRhbFNpZGUgPSBTY3JvbGxhYmxlQXJlYTo6dGFy
Z2V0U2lkZUZvclNjcm9sbERlbHRhKC1iaWFzZWREZWx0YSwgU2Nyb2xsRXZlbnRBeGlzOjpIb3Jp
em9udGFsKTsKICAgICBpZiAoaG9yaXpvbnRhbFNpZGUgJiYgIXNjcm9sbGFibGVBcmVhLmlzUGlu
bmVkT25TaWRlKCpob3Jpem9udGFsU2lkZSkpCiAgICAgICAgIHJldHVybiB0cnVlOworICAgIGlm
IChzY3JvbGxhYmxlQXJlYS5zaG91bGRCbG9ja1Njcm9sbFByb3BhZ2F0aW9uKGJpYXNlZERlbHRh
KSkKKyAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICByZXR1cm4gZmFsc2U7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuaAppbmRleCA2YjM1OWU3NTU2YTJkNmExNDg1ZTA0ZThjMjBmYTVm
NDcwYzVhMDRhLi5lYTQzNDg4OTExNTQ5MjE1ODg2MzUzZmVlNjg2YWZmZTczMmJhMzY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKQEAgLTQ3NSw3ICs0NzUsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgcHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxTbmFwKGNvbnN0IFBsYXRmb3JtV2hl
ZWxFdmVudCYsIGNvbnN0IFdlYWtQdHI8U2Nyb2xsYWJsZUFyZWE+Jik7CiAgICAgYm9vbCBjb21w
bGV0ZVdpZGdldFdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgY29uc3QgV2Vh
a1B0cjxXaWRnZXQ+JiwgY29uc3QgV2Vha1B0cjxTY3JvbGxhYmxlQXJlYT4mKTsKIAotICAgIGJv
b2wgaGFuZGxlV2hlZWxFdmVudEluQXBwcm9wcmlhdGVFbmNsb3NpbmdCb3goTm9kZSogc3RhcnRO
b2RlLCBjb25zdCBXaGVlbEV2ZW50JiwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJlZFBsYXRmb3Jt
RGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyZWRWZWxvY2l0eSwgT3B0aW9uU2V0PEV2ZW50
SGFuZGxpbmc+KTsKKyAgICBib29sIGhhbmRsZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9z
aW5nQm94KE5vZGUqIHN0YXJ0Tm9kZSwgY29uc3QgV2hlZWxFdmVudCYsIEZsb2F0U2l6ZSYgZmls
dGVyZWRQbGF0Zm9ybURlbHRhLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlcmVkVmVsb2NpdHksIE9w
dGlvblNldDxFdmVudEhhbmRsaW5nPik7CiAKICAgICBib29sIGhhbmRsZVdoZWVsRXZlbnRJblNj
cm9sbGFibGVBcmVhKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIFNjcm9sbGFibGVBcmVhJiwg
T3B0aW9uU2V0PEV2ZW50SGFuZGxpbmc+KTsKICAgICBzdGQ6Om9wdGlvbmFsPFdoZWVsU2Nyb2xs
R2VzdHVyZVN0YXRlPiB1cGRhdGVXaGVlbEdlc3R1cmVTdGF0ZShjb25zdCBQbGF0Zm9ybVdoZWVs
RXZlbnQmLCBPcHRpb25TZXQ8RXZlbnRIYW5kbGluZz4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9t
YWMvRXZlbnRIYW5kbGVyTWFjLm1tCmluZGV4IDU2N2YxZWUyMjM3NjM2ZjliMzA4MGE4OTEyNWI0
NDcxZTEyNjBmN2MuLmI3MGM5MDQ1ZjQyYmNlYTQxYjdlMmE1NGYwMGY0NmQ4NDczMDI1MjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0KQEAgLTgxNSw3ICs4
MTUsMTAgQEAgc3RhdGljIENvbnRhaW5lck5vZGUqIGZpbmRFbmNsb3NpbmdTY3JvbGxhYmxlQ29u
dGFpbmVyKENvbnRhaW5lck5vZGUqIG5vZGUsIGNvbnMKICAgICAgICAgYXV0byogc2Nyb2xsYWJs
ZUFyZWEgPSBzY3JvbGxhYmxlQXJlYUZvckJveCgqYm94KTsKICAgICAgICAgaWYgKCFzY3JvbGxh
YmxlQXJlYSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotCisgICAgICAgIAorICAgICAgICBpZiAo
c2Nyb2xsYWJsZUFyZWEtPnNob3VsZEJsb2NrU2Nyb2xsUHJvcGFnYXRpb24od2hlZWxFdmVudC5k
ZWx0YSgpKSkKKyAgICAgICAgICAgIHJldHVybiBjYW5kaWRhdGU7CisgICAgICAgIAogICAgICAg
ICBpZiAod2hlZWxFdmVudC5waGFzZSgpID09IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlOjpNYXlC
ZWdpbiB8fCB3aGVlbEV2ZW50LnBoYXNlKCkgPT0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2U6OkNh
bmNlbGxlZCkKICAgICAgICAgICAgIHJldHVybiBjYW5kaWRhdGU7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlLmNwcAppbmRleCBmMzM4NmZjYzU1YWJmYWMxYWU4YTA2N2YzNDE4ZjRiM2RlM2NiOTQ1Li5h
ZjMxYjk0MzFiYTI1NzZhNjIzMGQzZDJhNmM4MTdhOWNiZjMwYWM2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGUuY3BwCkBAIC00MDQsNyArNDA0LDcgQEAgUGxhdGZvcm1XaGVlbEV2ZW50IFNjcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlOjpldmVudEZvclByb3BhZ2F0aW9uKGNvbnN0IFBsYXRmb3IKIHsK
ICAgICBhdXRvIGZpbHRlcmVkRGVsdGEgPSB3aGVlbEV2ZW50LmRlbHRhKCk7CiAjaWYgUExBVEZP
Uk0oTUFDKQotICAgIGF1dG8gYmlhc2VkRGVsdGEgPSBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxl
cjo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwod2hlZWxFdmVudCk7CisgICAgYXV0
byBiaWFzZWREZWx0YSA9IFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjp3aGVlbERlbHRhQmlh
c2luZ1Rvd2FyZHNWZXJ0aWNhbCh3aGVlbEV2ZW50LmRlbHRhKCkpOwogI2Vsc2UKICAgICBhdXRv
IGJpYXNlZERlbHRhID0gd2hlZWxFdmVudC5kZWx0YSgpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKaW5kZXggMTRiYjdhZjA5NTNlMDZjYmM0Njdl
NjZhZDAxZjJmM2UwZTQ5NjZlYy4uOWU2MWJkN2VlZGZjNTA0ZmM2YzhlZWIxMTI1ODI2NDViNjBk
MWJjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcApAQCAt
ODA3LDQgKzgwNywyMiBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBj
b25zdCBTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEpCiAgICAgcmV0dXJuIHRzOwogfQog
CitGbG9hdFNpemUgU2Nyb2xsYWJsZUFyZWE6OmRlbHRhRm9yUHJvcGFnYXRpb24oY29uc3QgRmxv
YXRTaXplJiBiaWFzZWREZWx0YSkgY29uc3QKK3sKKyAgICBhdXRvIGZpbHRlcmVkRGVsdGEgPSBi
aWFzZWREZWx0YTsKKyAgICBpZiAoaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvclByZXZlbnRz
UHJvcGFnYXRpb24oKSkKKyAgICAgICAgZmlsdGVyZWREZWx0YS5zZXRXaWR0aCgwKTsKKyAgICBp
ZiAodmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3JQcmV2ZW50c1Byb3BhZ2F0aW9uKCkpCisgICAg
ICAgIGZpbHRlcmVkRGVsdGEuc2V0SGVpZ2h0KDApOworICAgIHJldHVybiBmaWx0ZXJlZERlbHRh
OworfQorCitib29sIFNjcm9sbGFibGVBcmVhOjpzaG91bGRCbG9ja1Njcm9sbFByb3BhZ2F0aW9u
KGNvbnN0IEZsb2F0U2l6ZSYgYmlhc2VkRGVsdGEpIGNvbnN0Cit7CisgICAgcmV0dXJuICgoaG9y
aXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvclByZXZlbnRzUHJvcGFnYXRpb24oKSB8fCB2ZXJ0aWNh
bE92ZXJzY3JvbGxCZWhhdmlvclByZXZlbnRzUHJvcGFnYXRpb24oKSkKKyAgICAgICAgJiYgKCho
b3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yUHJldmVudHNQcm9wYWdhdGlvbigpICYmIHZlcnRp
Y2FsT3ZlcnNjcm9sbEJlaGF2aW9yUHJldmVudHNQcm9wYWdhdGlvbigpKQorICAgICAgICB8fCAo
aG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvclByZXZlbnRzUHJvcGFnYXRpb24oKSAmJiAhYmlh
c2VkRGVsdGEuaGVpZ2h0KCkpIHx8ICh2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvclByZXZlbnRz
UHJvcGFnYXRpb24oKQorICAgICAgICAmJiAhYmlhc2VkRGVsdGEud2lkdGgoKSkpKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsYWJsZUFyZWEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVB
cmVhLmgKaW5kZXggYTM2ZTE5OGM2OTViMWI4NDY1YWMwNTBmZTFjMzRhNjhlMWU5ODVhZS4uZDUw
MmZmZjRmNDFiZWRjMjljZTk3YzFhZDVmZTUyNDEzMzhiZWUyMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCkBAIC0zNzMsNiArMzczLDExIEBAIHB1YmxpYzoKICAg
ICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRTY3JvbGxBbmltYXRpb24oKSB7IH0KKyAg
ICAKKyAgICBib29sIGhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3JQcmV2ZW50c1Byb3BhZ2F0
aW9uKCkgY29uc3QgeyByZXR1cm4gaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpICE9IE92
ZXJzY3JvbGxCZWhhdmlvcjo6QXV0bzsgfQorICAgIGJvb2wgdmVydGljYWxPdmVyc2Nyb2xsQmVo
YXZpb3JQcmV2ZW50c1Byb3BhZ2F0aW9uKCkgY29uc3QgeyByZXR1cm4gdmVydGljYWxPdmVyc2Ny
b2xsQmVoYXZpb3IoKSAhPSBPdmVyc2Nyb2xsQmVoYXZpb3I6OkF1dG87IH0KKyAgICBib29sIHNo
b3VsZEJsb2NrU2Nyb2xsUHJvcGFnYXRpb24oY29uc3QgRmxvYXRTaXplJikgY29uc3Q7CisgICAg
RmxvYXRTaXplIGRlbHRhRm9yUHJvcGFnYXRpb24oY29uc3QgRmxvYXRTaXplJikgY29uc3Q7CiAK
IHByb3RlY3RlZDoKICAgICBXRUJDT1JFX0VYUE9SVCBTY3JvbGxhYmxlQXJlYSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmgK
aW5kZXggYjc4ZjY2NGI4Mjg2NTliNWE3OWI2NjQ3YjYzOTRhMjVkYWMzZmZlNy4uMWY5NDI4YzJi
YTM0MzBhZmJlYzgwMTA2YjhmOTFhZDUzNjIwNGUxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5oCkBAIC0xNzQsNyArMTc0
LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNVc2VyU2Nyb2xsSW5Qcm9ncmVzcygpIGNvbnN0Owog
CiAjaWYgUExBVEZPUk0oTUFDKQotICAgIHN0YXRpYyBGbG9hdFNpemUgd2hlZWxEZWx0YUJpYXNp
bmdUb3dhcmRzVmVydGljYWwoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jik7CisgICAgc3RhdGlj
IEZsb2F0U2l6ZSB3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbChjb25zdCBGbG9hdFNp
emUmKTsKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBoYW5kbGVkLgogICAgIGJvb2wgcHJvY2Vz
c1doZWVsRXZlbnRGb3JTY3JvbGxTbmFwKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tCmluZGV4
IGFiOGI3Zjc2M2M1YmYxZWEzNTEzNzJhNGJmMDhhMDkzMmE3YzFlOTEuLjA3MGY0ZDg2MjNlMDQ1
NTUxZWY5ZjAxNmYxNWQxZmVlN2JiZTMzMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0KQEAgLTEwNSw2ICsxMDUsOSBAQCBzdGF0aWMg
Ym9vbCBnZXN0dXJlU2hvdWxkQmVnaW5TbmFwKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hl
ZWxFdmVudCwgU2Nyb2xsRQogCiBib29sIFNjcm9sbEFuaW1hdG9yTWFjOjphbGxvd3NWZXJ0aWNh
bFN0cmV0Y2hpbmcoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50KSBjb25zdAog
eworICAgIGlmIChtX3Njcm9sbGFibGVBcmVhLnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkg
PT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpOb25lKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
CiAgICAgc3dpdGNoIChtX3Njcm9sbGFibGVBcmVhLnZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eSgp
KSB7CiAgICAgY2FzZSBTY3JvbGxFbGFzdGljaXR5OjpBdXRvbWF0aWM6IHsKICAgICAgICAgU2Ny
b2xsYmFyKiBoU2Nyb2xsZXIgPSBtX3Njcm9sbGFibGVBcmVhLmhvcml6b250YWxTY3JvbGxiYXIo
KTsKQEAgLTEyOCw2ICsxMzEsOSBAQCBib29sIFNjcm9sbEFuaW1hdG9yTWFjOjphbGxvd3NWZXJ0
aWNhbFN0cmV0Y2hpbmcoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbAogCiBib29sIFNj
cm9sbEFuaW1hdG9yTWFjOjphbGxvd3NIb3Jpem9udGFsU3RyZXRjaGluZyhjb25zdCBQbGF0Zm9y
bVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpIGNvbnN0CiB7CisgICAgaWYgKG1fc2Nyb2xsYWJsZUFy
ZWEuaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpID09IE92ZXJzY3JvbGxCZWhhdmlvcjo6
Tm9uZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAogICAgIHN3aXRjaCAobV9zY3JvbGxh
YmxlQXJlYS5ob3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eSgpKSB7CiAgICAgY2FzZSBTY3JvbGxF
bGFzdGljaXR5OjpBdXRvbWF0aWM6IHsKICAgICAgICAgU2Nyb2xsYmFyKiBoU2Nyb2xsZXIgPSBt
X3Njcm9sbGFibGVBcmVhLmhvcml6b250YWxTY3JvbGxiYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5tbQpp
bmRleCAzY2MzZDI0ZmE5MDlkOWNlZGE4ZTMyZjg2NDMyMTMyNTcwYTcxOGY5Li44MDhlZDU1ODJh
MjgyNmJhMGU3ZmJlZDY5NDU3NjFkZjQyMjFhYmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLm1tCkBAIC0z
NDUsOSArMzQ1LDkgQEAgYm9vbCBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6YXBwbHlTY3Jv
bGxEZWx0YVdpdGhTdHJldGNoaW5nKGNvbnN0IFBsYXRmb3JtV2gKICAgICByZXR1cm4gY2FuU3Rh
cnRBbmltYXRpb247CiB9CiAKLUZsb2F0U2l6ZSBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6
d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50
JiB3aGVlbEV2ZW50KQorRmxvYXRTaXplIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjp3aGVl
bERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbChjb25zdCBGbG9hdFNpemUmIHdoZWVsRGVsdGEp
CiB7Ci0gICAgcmV0dXJuIGRlbHRhQWxpZ25lZFRvRG9taW5hbnRBeGlzKHdoZWVsRXZlbnQuZGVs
dGEoKSk7CisgICAgcmV0dXJuIGRlbHRhQWxpZ25lZFRvRG9taW5hbnRBeGlzKHdoZWVsRGVsdGEp
OwogfQogCiB2b2lkIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjp1cGRhdGVSdWJiZXJCYW5k
QW5pbWF0aW5nU3RhdGUoKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDUwZjZhNTJlYTUwMWE3NzY3YTQ5NzkyYjk3ZTA3NGE3
MzYyMTZiZTAuLjRjYjVhZGZkYmY0MTIwMWVlZDBmNGFhMDcxZGUzODM0OGY0N2U5ZWIgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyMSBAQAorMjAyMi0wMi0wMiAgTmlrb2xhb3MgTW91Y2h0YXJpcyAgPG5tb3Vj
aHRhcmlzQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgQ1NTIG92ZXJzY3JvbGwtYmVo
YXZpb3IgZm9yIHN5bmNocm9ub3VzIHNjcm9sbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyOTY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24g
RnJhc2VyLgorCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9s
bC1iZWhhdmlvci1lbGVtZW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9z
Y3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50Lmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVo
YXZpb3ItaWZyYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9zY3JvbGxp
bmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUuaHRtbDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11
bnNjcm9sbGFibGUtZWxlbWVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
c2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVs
ZW1lbnQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwt
b3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhh
dmlvci11bnNjcm9sbGFibGUtaWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy13azEvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vVGVzdEV4
cGVjdGF0aW9uczoKKwogMjAyMi0wMi0wMSAgQWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+
CiAKICAgICAgICAgW0xGQ11bSUZDXSBVc2luZyBGb250Y2FzY2FkZTo6c3BhY2VXaWR0aCB0byBz
dWJ0cmFjdCB0aGUgdHJhaWxpbmcgc3BhY2Ugd2lkdGggbWF5IHJlc3VsdCBpbiBpbmNvcnJlY3Qg
bGF5b3V0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9s
bC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50LWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNzE1MGZmNjBiNWRiZGQwYjRhN2FjNmY4M2ZiNTZmNTdj
ZDJjZDgyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3lu
Yy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50LWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDIwIEBACisKK1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3Zl
cnNjcm9sbC1iZWhhdmlvcjogYXV0byBhdXRvLgorUEFTUyBFbGVtZW50IHZlcnRpY2FsIHNjcm9s
bCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBhdXRvLgorUEFTUyBFbGVtZW50
IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWlu
IGF1dG8uCitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xs
LWJlaGF2aW9yOiBjb250YWluIGF1dG8uCitQQVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwg
dGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgYXV0by4KK1BBU1MgRWxlbWVudCB2
ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgYXV0by4K
K1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhh
dmlvcjogYXV0byBjb250YWluLgorUEFTUyBFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdp
dGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBjb250YWluLgorUEFTUyBFbGVtZW50IGhvcml6
b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGNvbnRh
aW4uCitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJl
aGF2aW9yOiBjb250YWluIGNvbnRhaW4uCitQQVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwg
dGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgY29udGFpbi4KK1BBU1MgRWxlbWVu
dCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgY29u
dGFpbi4KK1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9s
bC1iZWhhdmlvcjogYXV0byBub25lLgorUEFTUyBFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0
IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBub25lLgorUEFTUyBFbGVtZW50IGhvcml6
b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIG5vbmUu
CitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2
aW9yOiBjb250YWluIG5vbmUuCitQQVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3
aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgbm9uZS4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNh
bCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgbm9uZS4KKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9s
bC1iZWhhdmlvci1lbGVtZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5j
LXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOTRi
YzViYjg1ZGI1NzU2NTQzMmZmZTcyZTQwNjM4NTg4NjU5NjVhCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlv
ci1lbGVtZW50Lmh0bWwKQEAgLTAsMCArMSw4NiBAQAorPCFkb2N0eXBlIGh0bWw+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9InJlc291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXN1cHBvcnQuanMiPjwvc2Ny
aXB0PgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3Nz
LW92ZXJzY3JvbGwtYmVoYXZpb3IiPgorPHN0eWxlPgorICAgIC5zY3JvbGxpbmcgeworICAgICAg
ICBvdmVyZmxvdzogc2Nyb2xsOworICAgIH0KKyAgICAuc2Nyb2xsQ29udGVudCB7CisgICAgICAg
IHdpZHRoOiAzMDBweDsKKyAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICB9CisgICAgI3Jvb3Qg
eworICAgICAgICB3aWR0aDogMjAwcHg7CisgICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgfQor
ICAgICNzY3JvbGxlciB7CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgaGVpZ2h0OiAx
MDBweDsKKyAgICB9Cis8L3N0eWxlPgorPGRpdiBpZD0ncm9vdCcgY2xhc3M9InNjcm9sbGluZyI+
CisgICAgPGRpdiBpZD0nc2Nyb2xsZXInIGNsYXNzPSJzY3JvbGxpbmciPgorICAgICAgICA8ZGl2
IGNsYXNzPSJzY3JvbGxDb250ZW50Ij48L2Rpdj4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2IGNsYXNz
PSJzY3JvbGxDb250ZW50Ij48L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0PgorY29uc3Qgcm9vdCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyb290Jyk7Citjb25zdCBzY3JvbGxlciA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdzY3JvbGxlcicpOwordmFyIG92ZXJzY3JvbGxEYXRhcyA9IFtb
ImF1dG8iLCAiYXV0byIsIHRydWUsIHRydWVdLAorICAgICAgICAgICAgICAgICAgICAgICAgWyJj
b250YWluIiwgImF1dG8iLCBmYWxzZSwgdHJ1ZV0sCisgICAgICAgICAgICAgICAgICAgICAgICBb
Im5vbmUiLCAiYXV0byIsIGZhbHNlLCB0cnVlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFsi
YXV0byIsICJjb250YWluIiwgdHJ1ZSwgZmFsc2VdLAorICAgICAgICAgICAgICAgICAgICAgICAg
WyJjb250YWluIiwgImNvbnRhaW4iLCBmYWxzZSwgZmFsc2VdLAorICAgICAgICAgICAgICAgICAg
ICAgICAgWyJub25lIiwgImNvbnRhaW4iLCBmYWxzZSwgZmFsc2VdLAorICAgICAgICAgICAgICAg
ICAgICAgICAgWyJhdXRvIiwgIm5vbmUiLCB0cnVlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAg
ICAgICAgICBbImNvbnRhaW4iLCAibm9uZSIsIGZhbHNlLCBmYWxzZV0sCisgICAgICAgICAgICAg
ICAgICAgICAgICBbIm5vbmUiLCAibm9uZSIsIGZhbHNlLCBmYWxzZV1dOworCitmdW5jdGlvbiBy
ZXNldFRlc3QoKSB7CisgICAgLy8gVHJ5IHZhcmlvdXMgbWV0aG9kcyB0byBlbnN1cmUgdGhlIGVs
ZW1lbnQgcG9zaXRpb24gaXMgcmVzZXQgaW1tZWRpYXRlbHkuCisgICAgc2Nyb2xsZXIuc2Nyb2xs
TGVmdCA9IDMwMDsKKyAgICBzY3JvbGxlci5zY3JvbGxUb3AgPSAzMDA7CisgICAgc2Nyb2xsZXIu
c2Nyb2xsVG8oMzAwLCAzMDApOworCisgICAgcm9vdC5zY3JvbGxMZWZ0ID0gMDsKKyAgICByb290
LnNjcm9sbFRvcCA9IDA7CisgICAgcm9vdC5zY3JvbGxUbygwLCAwKTsKK30KKworZnVuY3Rpb24g
c3RhcnRUZXN0KCkgeworICAgIG92ZXJzY3JvbGxEYXRhcy5mb3JFYWNoKChbb3ZlcnNjcm9sbFgs
IG92ZXJzY3JvbGxZLCBwcm9wYWdhdGVYLCBwcm9wYWdhdGVZXSkgPT4geworICAgICAgICBwcm9t
aXNlX3Rlc3QoKCkgPT4geworICAgICAgICAgICAgcmVzZXRUZXN0KCk7CisgICAgICAgICAgICBz
Y3JvbGxlci5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JYID0gb3ZlcnNjcm9sbFg7CisgICAgICAg
ICAgICBzY3JvbGxlci5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JZID0gb3ZlcnNjcm9sbFk7Cisg
ICAgICAgICAgICBkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoOworCisgICAgICAgICAgICB2YXIg
eCA9IHNjcm9sbGVyLmNsaWVudFdpZHRoIC8gMjsKKyAgICAgICAgICAgIHZhciB5ID0gc2Nyb2xs
ZXIuY2xpZW50SGVpZ2h0IC8gMjsKKyAgICAgICAgICAgIHZhciBkZWx0YSA9IGdldERlbHRhcygi
cmlnaHQiKTsKKyAgICAgICAgICAgIHJldHVybiBtb3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCh4LCB5
LCBkZWx0YS5YLCBkZWx0YS5ZLCBkZWx0YS5YLCBkZWx0YS5ZKS50aGVuKCgpID0+IHsKKyAgICAg
ICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsTGVmdCA+IDAsIHByb3BhZ2F0ZVgs
ICdQcm9wYWdhdGUgaG9yaXpvbnRhbCBzY3JvbGwnKTsKKyAgICAgICAgICAgIH0pOworICAgICAg
ICB9LCAnRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhh
dmlvcjogJyArIG92ZXJzY3JvbGxYICsgJyAnICsgb3ZlcnNjcm9sbFkgKyAnLicpOworCisgICAg
ICAgIHByb21pc2VfdGVzdCgoKSA9PiB7CisgICAgICAgICAgICByZXNldFRlc3QoKTsKKyAgICAg
ICAgICAgIHNjcm9sbGVyLnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclggPSBvdmVyc2Nyb2xsWDsK
KyAgICAgICAgICAgIHNjcm9sbGVyLnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclkgPSBvdmVyc2Ny
b2xsWTsKKworICAgICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7Cisg
ICAgICAgICAgICB2YXIgeSA9IHNjcm9sbGVyLmNsaWVudEhlaWdodCAvIDI7CisgICAgICAgICAg
ICB2YXIgZGVsdGEgPSBnZXREZWx0YXMoImRvd24iKTsKKyAgICAgICAgICAgIHJldHVybiBtb3Vz
ZVdoZWVsU2Nyb2xsQW5kV2FpdCh4LCB5LCBkZWx0YS5YLCBkZWx0YS5ZLCBkZWx0YS5YLCBkZWx0
YS5ZKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Ny
b2xsVG9wID4gMCwgcHJvcGFnYXRlWSwgJ1Byb3BhZ2F0ZSB2ZXJ0aWNhbCBzY3JvbGwnKTsKKyAg
ICAgICAgICAgIH0pOworICAgICAgICB9LCAnRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3
aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6ICcgKyBvdmVyc2Nyb2xsWCArICcgJyArIG92ZXJzY3Jv
bGxZICsgJy4nKTsKKyAgICB9KTsKK30KKworYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIHN0YXJ0
VGVzdCk7Cis8L3NjcmlwdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2
aW9yLWlmcmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5j
LXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOTAwYTBiN2Q5MDViODdjMWRiNzYyNjk0ZmQwMDYzOGYxOTc2OTUzNwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwt
YmVoYXZpb3ItaWZyYW1lLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIxIEBACisKKworUEFTUyBJ
ZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1
dG8gYXV0by4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9s
bC1iZWhhdmlvcjogYXV0byBhdXRvLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVz
dCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gYXV0by4KK1BBU1MgSWZyYW1lIHZl
cnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBhdXRv
LgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVo
YXZpb3I6IG5vbmUgYXV0by4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGgg
b3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBhdXRvLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBz
Y3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gY29udGFpbi4KK1BBU1Mg
SWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0
byBjb250YWluLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJz
Y3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gY29udGFpbi4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNj
cm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBjb250YWluLgorUEFT
UyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6
IG5vbmUgY29udGFpbi4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3Zl
cnNjcm9sbC1iZWhhdmlvcjogbm9uZSBjb250YWluLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBz
Y3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gbm9uZS4KK1BBU1MgSWZy
YW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBu
b25lLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwt
YmVoYXZpb3I6IGNvbnRhaW4gbm9uZS4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0
IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBub25lLgorUEFTUyBJZnJhbWUgaG9y
aXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgbm9uZS4K
K1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlv
cjogbm9uZSBub25lLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9z
eW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5kYjNiODExZDFiZGIzMTAzODkwNjE2MDRkNWMzMDZkMmNmMTk0MmQ4Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwt
b3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUuaHRtbApAQCAtMCwwICsxLDg1IEBACis8IWRvY3R5
cGUgaHRtbD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL292ZXJzY3JvbGwtYmVoYXZpb3It
c3VwcG9ydC5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vZHJh
ZnRzLmNzc3dnLm9yZy9jc3Mtb3ZlcnNjcm9sbC1iZWhhdmlvciI+Cis8c3R5bGU+CisgICAgLnNj
cm9sbGluZyB7CisgICAgICAgIG92ZXJmbG93OiBzY3JvbGw7CisgICAgfQorICAgIC5zY3JvbGxD
b250ZW50IHsKKyAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICBoZWlnaHQ6IDMwMHB4Owor
ICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZWQsIGJsdWUpOwor
ICAgIH0KKyAgICAjcm9vdCB7CisgICAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgICAgaGVpZ2h0
OiAyMDBweDsKKyAgICB9CisgICAgI3Njcm9sbGVyIHsKKyAgICAgICAgd2lkdGg6IDEwMHB4Owor
ICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgICBvdmVyc2Nyb2xsLWJlaGF2aW9yLXk6IGF1
dG87CisgICAgfQorPC9zdHlsZT4KKzxkaXYgaWQ9J3Jvb3QnIGNsYXNzPSJzY3JvbGxpbmciPgor
ICAgIDxpZnJhbWUgaWQ9J3Njcm9sbGVyJyBzcmNkb2M9IjxodG1sPjxkaXYgc3R5bGU9J3dpZHRo
OiAzMDBweDsgaGVpZ2h0OiAzMDBweDsnPjwvZGl2PjwvaHRtbD4KKyAgICAgICAgIj48L2lmcmFt
ZT4KKyAgICA8ZGl2IGNsYXNzPSJzY3JvbGxDb250ZW50Ij48L2Rpdj4KKzwvZGl2PgorCis8c2Ny
aXB0PgorICAgIGNvbnN0IHJvb3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncm9vdCcpOwor
ICAgIGNvbnN0IHNjcm9sbGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Njcm9sbGVyJyk7
CisgICAgdmFyIG92ZXJzY3JvbGxEYXRhcyA9IFtbImF1dG8iLCAiYXV0byIsIHRydWUsIHRydWVd
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiY29udGFpbiIsICJhdXRvIiwgZmFsc2Us
IHRydWVdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsibm9uZSIsICJhdXRvIiwgZmFs
c2UsIHRydWVdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiYXV0byIsICJjb250YWlu
IiwgdHJ1ZSwgZmFsc2VdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiY29udGFpbiIs
ICJjb250YWluIiwgZmFsc2UsIGZhbHNlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBb
Im5vbmUiLCAiY29udGFpbiIsIGZhbHNlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgWyJhdXRvIiwgIm5vbmUiLCB0cnVlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgWyJjb250YWluIiwgIm5vbmUiLCBmYWxzZSwgZmFsc2VdLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFsibm9uZSIsICJub25lIiwgZmFsc2UsIGZhbHNlXV07CisgICAgZnVu
Y3Rpb24gcmVzZXRUZXN0KCkgeworICAgICAgICAvLyBUcnkgdmFyaW91cyBtZXRob2RzIHRvIGVu
c3VyZSB0aGUgZWxlbWVudCBwb3NpdGlvbiBpcyByZXNldCBpbW1lZGlhdGVseS4KKyAgICAgICAg
c2Nyb2xsZXIuY29udGVudFdpbmRvdy5zY3JvbGxYID0gMzAwOworICAgICAgICBzY3JvbGxlci5j
b250ZW50V2luZG93LnNjcm9sbFkgPSAzMDA7CisgICAgICAgIHNjcm9sbGVyLmNvbnRlbnRXaW5k
b3cuc2Nyb2xsVG8oMzAwLCAzMDApOworICAgICAgICByb290LnNjcm9sbExlZnQgPSAwOworICAg
ICAgICByb290LnNjcm9sbFRvcCA9IDA7CisgICAgICAgIHJvb3Quc2Nyb2xsVG8oMCwgMCk7Cisg
ICAgfQorCisgICAgZnVuY3Rpb24gb3ZlcnNjcm9sbEJlaGF2aW9yVGVzdCgpIHsKKyAgICAgICAg
b3ZlcnNjcm9sbERhdGFzLmZvckVhY2goKFtvdmVyc2Nyb2xsWCwgb3ZlcnNjcm9sbFksIHByb3Bh
Z2F0ZVgsIHByb3BhZ2F0ZVldKSA9PiB7CisgICAgICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4g
eworICAgICAgICAgICAgICAgIHJlc2V0VGVzdCgpOworICAgICAgICAgICAgICAgIHZhciB0YXJn
ZXQgPSBzY3JvbGxlci5jb250ZW50V2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJodG1sIilbMF07CisgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLm92ZXJzY3JvbGxCZWhh
dmlvclggPSBvdmVyc2Nyb2xsWDsKKyAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUub3ZlcnNj
cm9sbEJlaGF2aW9yWSA9IG92ZXJzY3JvbGxZOworICAgICAgICAgICAgICAgIHZhciB4ID0gc2Ny
b2xsZXIuY2xpZW50V2lkdGggLyAyOworICAgICAgICAgICAgICAgIHZhciB5ID0gc2Nyb2xsZXIu
Y2xpZW50SGVpZ2h0IC8gMjsKKyAgICAgICAgICAgICAgICB2YXIgZGVsdGEgPSBnZXREZWx0YXMo
InJpZ2h0Iik7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1vdXNlV2hlZWxTY3JvbGxBbmRXYWl0
KHgsIHksIGRlbHRhLlgsIGRlbHRhLlksIGRlbHRhLlgsIGRlbHRhLlkpLnRoZW4oKCkgPT4gewor
ICAgICAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsTGVmdCA+IDAsIHBy
b3BhZ2F0ZVgsICdQcm9wYWdhdGUgaG9yaXpvbnRhbCBzY3JvbGwnKTsKKyAgICAgICAgICAgICAg
ICB9KTsKKyAgICAgICAgICAgIH0sICdJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRo
IG92ZXJzY3JvbGwtYmVoYXZpb3I6ICcgKyBvdmVyc2Nyb2xsWCArICcgJyArIG92ZXJzY3JvbGxZ
ICsgJy4nKTsKKworICAgICAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAg
ICAgICByZXNldFRlc3QoKTsKKyAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gc2Nyb2xsZXIu
Y29udGVudFdpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaHRtbCIpWzBdOwor
ICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JYID0gb3ZlcnNj
cm9sbFg7CisgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclkg
PSBvdmVyc2Nyb2xsWTsKKworICAgICAgICAgICAgICAgIHZhciB4ID0gc2Nyb2xsZXIuY2xpZW50
V2lkdGggLyAyOworICAgICAgICAgICAgICAgIHZhciB5ID0gc2Nyb2xsZXIuY2xpZW50SGVpZ2h0
IC8gMjsKKyAgICAgICAgICAgICAgICB2YXIgZGVsdGEgPSBnZXREZWx0YXMoImRvd24iKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gbW91c2VXaGVlbFNjcm9sbEFuZFdhaXQoeCwgeSwgZGVsdGEu
WCwgZGVsdGEuWSwgZGVsdGEuWCwgZGVsdGEuWSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAg
ICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxUb3AgPiAwLCBwcm9wYWdhdGVZLCAnUHJv
cGFnYXRlIHZlcnRpY2FsIHNjcm9sbCcpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAg
ICAgfSwgJ0lmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZp
b3I6ICcgKyBvdmVyc2Nyb2xsWCArICcgJyArIG92ZXJzY3JvbGxZICsgJy4nKTsKKyAgICAgICAg
fSk7CisgICAgfQorCisgICAgc2Nyb2xsZXIuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIG92ZXJz
Y3JvbGxCZWhhdmlvclRlc3QpOworPC9zY3JpcHQ+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3Zl
cnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVu
c2Nyb2xsYWJsZS1lbGVtZW50LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMzk1YjY0ODhkMDg3
MGI5NTYxYzAyODY3OWQ3ZTE1YTQ3ZmNlNmU5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9s
bGFibGUtZWxlbWVudC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACisKK1BBU1MgVW5zY3Jv
bGxhYmxlIGVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVo
YXZpb3I6IG5vbmUuCitQQVNTIFVuc2Nyb2xsYWJsZSBlbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0
ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNj
cm9sbGFibGUtZWxlbWVudC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1z
Y3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmJiNGIwNmU5ZTY0MTkzNzA4MDgxMjc4ZDkxMDAzYzA1ZDU3MjRiMjYKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Ny
b2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWwKQEAgLTAsMCArMSw2NiBAQAor
PCFkb2N0eXBlIGh0bWw+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3Ny
ZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9vdmVyc2Nyb2xsLWJl
aGF2aW9yLXN1cHBvcnQuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRw
czovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLW92ZXJzY3JvbGwtYmVoYXZpb3IiPgorPHN0eWxlPgor
ICAgIC5zY3JvbGxpbmcgeworICAgICAgICBvdmVyZmxvdzogc2Nyb2xsOworICAgIH0KKyAgICAu
c2Nyb2xsQ29udGVudCB7CisgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgaGVpZ2h0OiAz
MDBweDsKKyAgICB9CisgICAgI3Jvb3QgeworICAgICAgICB3aWR0aDogMjAwcHg7CisgICAgICAg
IGhlaWdodDogMjAwcHg7CisgICAgfQorICAgICNzY3JvbGxlciB7CisgICAgICAgIHdpZHRoOiAx
MDBweDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgICAgb3ZlcnNjcm9sbC1iZWhhdmlv
cjogbm9uZTsKKyAgICAgICAgb3ZlcmZsb3c6IHZpc2libGU7CisgICAgICAgIGJhY2tncm91bmQ6
IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJlZCwgYmx1ZSk7CisgICAgfQorPC9zdHlsZT4KKzxk
aXYgaWQ9InJvb3QiIGNsYXNzPSJzY3JvbGxpbmciPgorICAgIDxkaXYgaWQ9InNjcm9sbGVyIj4K
KyAgICAgICAgPGRpdiBjbGFzcz0ic2Nyb2xsQ29udGVudCI+PC9kaXY+CisgICAgPC9kaXY+Cisg
ICAgPGRpdiBjbGFzcz0ic2Nyb2xsQ29udGVudCI+PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4K
K2NvbnN0IHJvb3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncm9vdCcpOworY29uc3Qgc2Ny
b2xsZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2Nyb2xsZXInKTsKKworZnVuY3Rpb24g
cmVzZXRUZXN0KCkgeworICAgIHJvb3Quc2Nyb2xsTGVmdCA9IDA7CisgICAgcm9vdC5zY3JvbGxU
b3AgPSAwOworICAgIHJvb3Quc2Nyb2xsVG8oMCwgMCk7Cit9CisKK2Z1bmN0aW9uIHN0YXJ0VGVz
dCgpIHsKKyAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAgIHJlc2V0VGVz
dCgpOworICAgICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAg
ICAgICAgICB2YXIgeSA9IHNjcm9sbGVyLmNsaWVudEhlaWdodCAvIDI7CisgICAgICAgICAgICB2
YXIgZGVsdGEgPSBnZXREZWx0YXMoInJpZ2h0Iik7CisgICAgICAgICAgICByZXR1cm4gbW91c2VX
aGVlbFNjcm9sbEFuZFdhaXQoeCwgeSwgZGVsdGEuWCwgZGVsdGEuWSwgZGVsdGEuWCwgZGVsdGEu
WSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9s
bExlZnQgPiAwLCB0cnVlLCAnUHJvcGFnYXRlIGhvcml6b250YWwgc2Nyb2xsJyk7CisgICAgICAg
ICAgICB9KTsKKyAgICAgICAgfSwgJ1Vuc2Nyb2xsYWJsZSBlbGVtZW50IGhvcml6b250YWwgc2Ny
b2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLicpOworCisgICAgICAgIHBy
b21pc2VfdGVzdCgoKSA9PiB7CisgICAgICAgICAgICByZXNldFRlc3QoKTsKKyAgICAgICAgICAg
IHZhciB4ID0gc2Nyb2xsZXIuY2xpZW50V2lkdGggLyAyOworICAgICAgICAgICAgdmFyIHkgPSBz
Y3JvbGxlci5jbGllbnRIZWlnaHQgLyAyOworICAgICAgICAgICAgdmFyIGRlbHRhID0gZ2V0RGVs
dGFzKCJkb3duIik7CisgICAgICAgICAgICByZXR1cm4gbW91c2VXaGVlbFNjcm9sbEFuZFdhaXQo
eCwgeSwgZGVsdGEuWCwgZGVsdGEuWSwgZGVsdGEuWCwgZGVsdGEuWSkudGhlbigoKSA9PiB7Cisg
ICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbFRvcCA+IDAsIHRydWUsICdQ
cm9wYWdhdGUgdmVydGljYWwgc2Nyb2xsJyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSwg
J1Vuc2Nyb2xsYWJsZSBlbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9s
bC1iZWhhdmlvcjogbm9uZS4nKTsKK30KKworYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIHN0YXJ0
VGVzdCk7Cis8L3NjcmlwdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2
aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9z
Y3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZy
YW1lLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZmE1OWNjYmE3OWFlZmYzM2RhNzBlOTNkNDg4
YTA3ZWVjOWM1NjkxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxp
bmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKKworCitQQVNTIFVuc2Nyb2xsYWJsZSBpZnJhbWUg
aG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuCitQ
QVNTIFVuc2Nyb2xsYWJsZSBpZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Ny
b2xsLWJlaGF2aW9yOiBub25lLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9s
bGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwt
YmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJkZjY3NWFjNDM3
MjlkM2RiYjRmNWY1MzI0ODkxMjNlNjY5YTU3YjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Ny
b2xsYWJsZS1pZnJhbWUuaHRtbApAQCAtMCwwICsxLDY1IEBACis8IWRvY3R5cGUgaHRtbD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL292ZXJzY3JvbGwtYmVoYXZpb3Itc3VwcG9ydC5qcyI+
PC9zY3JpcHQ+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vZHJhZnRzLmNzc3dnLm9y
Zy9jc3Mtb3ZlcnNjcm9sbC1iZWhhdmlvciI+Cis8c3R5bGU+CisgICAgLnNjcm9sbGluZyB7Cisg
ICAgICAgIG92ZXJmbG93OiBzY3JvbGw7CisgICAgfQorICAgIC5zY3JvbGxDb250ZW50IHsKKyAg
ICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgIH0KKyAgICAj
cm9vdCB7CisgICAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgICAgaGVpZ2h0OiAyMDBweDsKKyAg
ICB9CisgICAgI3Njcm9sbGVyIHsKKyAgICAgICAgd2lkdGg6IDIwMHB4OworICAgICAgICBoZWln
aHQ6IDIwMHB4OworICAgICAgICBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lOworICAgICAgICBv
dmVyZmxvdzogdmlzaWJsZTsKKyAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEz
NWRlZywgcmVkLCBibHVlKTsKKyAgICB9Cis8L3N0eWxlPgorPGRpdiBpZD0ncm9vdCcgY2xhc3M9
InNjcm9sbGluZyI+CisgICAgPGlmcmFtZSBpZD0nc2Nyb2xsZXInIHNyY2RvYz0iPGh0bWwgc3R5
bGU9J292ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmU7Jz48ZGl2IHN0eWxlPSd3aWR0aDogMTAwcHg7
IGhlaWdodDogMTAwcHg7Jz48L2Rpdj48L2h0bWw+CisgICAgICAgICI+PC9pZnJhbWU+CisgICAg
PGRpdiBjbGFzcz0ic2Nyb2xsQ29udGVudCI+PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4KK2Nv
bnN0IHJvb3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncm9vdCcpOworY29uc3Qgc2Nyb2xs
ZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2Nyb2xsZXInKTsKKworZnVuY3Rpb24gcmVz
ZXRUZXN0KCkgeworICAgIHJvb3Quc2Nyb2xsTGVmdCA9IDA7CisgICAgcm9vdC5zY3JvbGxUb3Ag
PSAwOworICAgIHJvb3Quc2Nyb2xsVG8oMCwgMCk7Cit9CisKK2Z1bmN0aW9uIHN0YXJ0VGVzdCgp
IHsKKyAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAgIHJlc2V0VGVzdCgp
OworICAgICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAgICAg
ICAgICB2YXIgeSA9IHNjcm9sbGVyLmNsaWVudEhlaWdodCAvIDI7CisgICAgICAgICAgICB2YXIg
ZGVsdGEgPSBnZXREZWx0YXMoInJpZ2h0Iik7CisgICAgICAgICAgICByZXR1cm4gbW91c2VXaGVl
bFNjcm9sbEFuZFdhaXQoeCwgeSwgZGVsdGEuWCwgZGVsdGEuWSwgZGVsdGEuWCwgZGVsdGEuWSku
dGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbExl
ZnQgPiAwLCB0cnVlLCAnUHJvcGFnYXRlIGhvcml6b250YWwgc2Nyb2xsJyk7CisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgfSwgJ1Vuc2Nyb2xsYWJsZSBpZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwg
dGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuJyk7CisKKyAgICAgICAgcHJvbWlz
ZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAgIHJlc2V0VGVzdCgpOworICAgICAgICAgICAgdmFy
IHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAgICAgICAgICB2YXIgeSA9IHNjcm9s
bGVyLmNsaWVudEhlaWdodCAvIDI7CisgICAgICAgICAgICB2YXIgZGVsdGEgPSBnZXREZWx0YXMo
ImRvd24iKTsKKyAgICAgICAgICAgIHJldHVybiBtb3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCh4LCB5
LCBkZWx0YS5YLCBkZWx0YS5ZLCBkZWx0YS5YLCBkZWx0YS5ZKS50aGVuKCgpID0+IHsKKyAgICAg
ICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsVG9wID4gMCwgdHJ1ZSwgJ1Byb3Bh
Z2F0ZSB2ZXJ0aWNhbCBzY3JvbGwnKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9LCAnVW5z
Y3JvbGxhYmxlIGlmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVo
YXZpb3I6IG5vbmUuJyk7Cit9CisKK2FkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBzdGFydFRlc3Qp
OworPC9zY3JpcHQ+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDg2ZGYyN2Q1YmFiYmFiN2Nk
MDI2ZWYyZGM1MjI2ZjUyYTYwZDNlYTcuLjNjYzNiNjdjYjZhMzU3ZTEyOTU2Y2EyMjdiYmRjYTEy
YjJlZjI4NTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4
cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3Rh
dGlvbnMKQEAgLTU1Niw2ICs1NTYsMTAgQEAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvY3NzLXNjcm9sbC1zbmFwL3Njcm9sbC10YXJnZXQtcGFkZGluZy0wMDEuaHQKIGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1zdG9wLWNoYW5nZS5odG1sIFsgRmFpbHVyZSBdCiBjc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1w
YWRkaW5nLW1haW5mcmFtZS1wYWdpbmcuaHRtbCBbIEZhaWx1cmUgXQogCisjIExhY2sgb2Ygd2F5
cyB0byBjb250cm9sIHRoZSBjcm9zcy1mcmFtZSBzY3JvbGwgY2hhaW5pbmcgaW4gV0sxLgorZmFz
dC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUuaHRtbCBb
IFNraXAgXQorZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11
bnNjcm9sbGFibGUtaWZyYW1lLmh0bWwgWyBTa2lwIF0KKwogIyMjIEVORCBPRiAoMikgRmFpbHVy
ZXMgd2l0aG91dCBidWcgcmVwb3J0cwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVj
dGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCmluZGV4
IDE2ZGI3YzRlZDljOWE1ZWIzY2QzNThjNzQ4ZTgxYjBkYWEyNDNmNDAuLjRmYmYzMDg1MTczN2Uz
NWEyMzRhNDIzMjhiZTIwYTM0ZWI5ZjJlMmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9U
ZXN0RXhwZWN0YXRpb25zCkBAIC02NDQsNiArNjQ0LDEyIEBAIHBvaW50ZXItbG9jay8gWyBTa2lw
IF0KIGh0dHAvdGVzdHMvcG9pbnRlci1sb2NrLyBbIFNraXAgXQogZmFzdC9qcy1wcm9taXNlL2pz
LXByb21pc2UtaW52YWxpZC1jb250ZXh0LWFjY2Vzcy5odG1sIFsgU2tpcCBdCiAKKyMgT3ZlcnNj
cm9sbC1iZWhhdmlvciBpcyBub3Qgc3VwcG9ydGVkIG9uIFdpbmRvd3MKK2Zhc3Qvc2Nyb2xsaW5n
L3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC5odG1sIFsgU2tpcCBdCitm
YXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS5odG1s
IFsgU2tpcCBdCitmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9y
LXVuc2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWwgWyBTa2lwIF0KK2Zhc3Qvc2Nyb2xsaW5nL3N5bmMt
c2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sIFsgU2tp
cCBdCisKICMgRGF0YWxpc3QgaXMgdW5zdXBwb3J0ZWQgb24gV2luZG93cwogYWNjZXNzaWJpbGl0
eS9kYXRhbGlzdC5odG1sIFsgV29udEZpeCBdCiBmYXN0L2Zvcm1zL2RhdGFsaXN0IFsgV29udEZp
eCBdCg==
</data>
<flag name="commit-queue"
          id="477229"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450692</attachid>
            <date>2022-02-02 12:57:30 -0800</date>
            <delta_ts>2022-02-02 21:44:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222968-20220202125729.patch</filename>
            <type>text/plain</type>
            <size>36607</size>
            <attacher name="Nikos Mouchtaris">nmouchtaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4OTI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmViYTMyMjJlM2VmZjFk
MTI5NTRiNzA0YjFiNjJkMTA5NDk3OGU1Zi4uZDQyNDRmMzhkOTYzNzI1ZjgxNmNlOGRiZDI1OWJi
ZGJmNThjYTZmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDIyLTAyLTAyICBOaWtv
bGFvcyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxl
bWVudCBDU1Mgb3ZlcnNjcm9sbC1iZWhhdmlvciBmb3Igc3luY2hyb25vdXMgc2Nyb2xsCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI5NjgKKworICAg
ICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgVGVzdHM6IGZhc3Qvc2Ny
b2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC5odG1sCisgICAg
ICAgICAgICAgICBmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9y
LWlmcmFtZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1v
dmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWwKKyAgICAgICAgICAg
ICAgIGZhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3Jv
bGxhYmxlLWlmcmFtZS5odG1sCisKKyAgICAgICAgU3BsaXQgdXAgcGF0Y2ggYnkgQ2F0aGllIENo
ZW4gYW5kIEZyZWRlcmljIFdhbmcuIEFkZCBmdW5jdGlvbiBmb3IgYmxvY2tpbmcgc2Nyb2xsIGNo
YWluaW5nCisgICAgICAgIGFuZCBmaWx0ZXJpbmcgc2Nyb2xsIGRlbHRhIGRlcGVuZGluZyBvbiB0
aGUgdmFsdWVzIG9mIG92ZXJzY3JvbGwgYmVoYXZpb3IgZm9yIGEgc2Nyb2xsYWJsZQorICAgICAg
ICBhcmVhLiBUaGlzIHBhdGNoIGlzIGZvciBzeW5jaHJvbm91cyBzY3JvbGxpbmcgb25seS4KKwor
ICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudEludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OnNj
cm9sbFZpYU5vblBsYXRmb3JtRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVy
OjpoYW5kbGVXaGVlbEV2ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2luZ0JveCk6CisgICAgICAgIChX
ZWJDb3JlOjpFdmVudEhhbmRsZXI6OnNjcm9sbGFibGVBcmVhQ2FuSGFuZGxlRXZlbnQpOgorICAg
ICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmg6CisgICAgICAgICogcGFnZS9tYWMvRXZlbnRIYW5k
bGVyTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6ZmluZEVuY2xvc2luZ1Njcm9sbGFibGVDb250
YWluZXIpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjpl
dmVudEZvclByb3BhZ2F0aW9uIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxhYmxl
QXJlYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6ZGVsdGFGb3JQcm9w
YWdhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6c2hvdWxk
QmxvY2tTY3JvbGxQcm9wYWdhdGlvbiBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xs
YWJsZUFyZWEuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGFibGVBcmVhOjpob3Jpem9udGFs
T3ZlcnNjcm9sbEJlaGF2aW9yUHJldmVudHNQcm9wYWdhdGlvbiBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6dmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3JQcmV2ZW50
c1Byb3BhZ2F0aW9uIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3Rz
Q29udHJvbGxlci5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTWFjOjphbGxvd3NWZXJ0aWNhbFN0
cmV0Y2hpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JNYWM6OmFs
bG93c0hvcml6b250YWxTdHJldGNoaW5nIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMv
U2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxp
bmdFZmZlY3RzQ29udHJvbGxlcjo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwpOgor
CiAyMDIyLTAyLTAxICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbV1BdIFJlbW92ZSBQb3N0U2NyaXB0IGNvbnZlcnNpb24gY29kZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDI3NTE3YzIyZTc3MDllYWFlNTUxMjNmOTllZTY5N2Vk
NjY4NWE5MDEuLmVjZWEwZjE5NTUxMWU3YWRjNGU1NzU2N2E0OGZjMjgxOTA1MjIwNTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTMwMjcsMTEgKzMwMjcsMTcgQEAgYm9v
bCBFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnRJbnRlcm5hbChjb25zdCBQbGF0Zm9ybVdo
ZWVsRXZlbnQmIGV2ZW50LCBPcHQKICAgICBpZiAoYWxsb3dTY3JvbGxpbmcpCiAgICAgICAgIGFs
bG93U2Nyb2xsaW5nID0gbV9mcmFtZS5wYWdlKCktPnNjcm9sbExhdGNoaW5nQ29udHJvbGxlcigp
LmxhdGNoaW5nQWxsb3dzU2Nyb2xsaW5nSW5GcmFtZShtX2ZyYW1lLCBzY3JvbGxhYmxlQXJlYSk7
CiAjZW5kaWYKKyAgICBhdXRvIGFkanVzdGVkV2hlZWxFdmVudCA9IGV2ZW50OworICAgIGF1dG8g
ZmlsdGVyZWREZWx0YSA9IGFkanVzdGVkV2hlZWxFdmVudC5kZWx0YSgpOworICAgIGZpbHRlcmVk
RGVsdGEgPSB2aWV3LT5kZWx0YUZvclByb3BhZ2F0aW9uKGZpbHRlcmVkRGVsdGEpOworICAgIGlm
ICh2aWV3LT5zaG91bGRCbG9ja1Njcm9sbFByb3BhZ2F0aW9uKGZpbHRlcmVkRGVsdGEpKQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGlmIChhbGxvd1Njcm9sbGluZykgewogICAgICAgICAv
LyBGSVhNRTogcHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxpbmcoKSBpcyBvbmx5IGNhbGxlZCBm
b3IgRnJhbWVWaWV3IHNjcm9sbGluZywgbm90IG92ZXJmbG93IHNjcm9sbGluZywgd2hpY2ggaXMg
Y29uZnVzaW5nLgotICAgICAgICBoYW5kbGVkRXZlbnQgPSBwcm9jZXNzV2hlZWxFdmVudEZvclNj
cm9sbGluZyhldmVudCwgc2Nyb2xsYWJsZUFyZWEsIGhhbmRsaW5nKTsKLSAgICAgICAgcHJvY2Vz
c1doZWVsRXZlbnRGb3JTY3JvbGxTbmFwKGV2ZW50LCBzY3JvbGxhYmxlQXJlYSk7CisgICAgICAg
IGFkanVzdGVkV2hlZWxFdmVudCA9IGFkanVzdGVkV2hlZWxFdmVudC5jb3B5V2l0aERlbHRhQW5k
VmVsb2NpdHkoZmlsdGVyZWREZWx0YSwgYWRqdXN0ZWRXaGVlbEV2ZW50LnNjcm9sbGluZ1ZlbG9j
aXR5KCkpOworICAgICAgICBoYW5kbGVkRXZlbnQgPSBwcm9jZXNzV2hlZWxFdmVudEZvclNjcm9s
bGluZyhhZGp1c3RlZFdoZWVsRXZlbnQsIHNjcm9sbGFibGVBcmVhLCBoYW5kbGluZyk7CisgICAg
ICAgIHByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsU25hcChhZGp1c3RlZFdoZWVsRXZlbnQsIHNj
cm9sbGFibGVBcmVhKTsKICAgICB9CiAKICAgICByZXR1cm4gaGFuZGxlZEV2ZW50OwpAQCAtMzA1
MCwxOCArMzA1NiwxOSBAQCBzdGF0aWMgdm9pZCBoYW5kbGVXaGVlbEV2ZW50UGhhc2VJblNjcm9s
bGFibGVBcmVhKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYQogCiBzdGF0aWMgYm9vbCBz
Y3JvbGxWaWFOb25QbGF0Zm9ybUV2ZW50KFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSwg
Y29uc3QgV2hlZWxFdmVudCYgd2hlZWxFdmVudCkKIHsKKyAgICBhdXRvIGZpbHRlcmVkRGVsdGEg
PSBGbG9hdFNpemUod2hlZWxFdmVudC5kZWx0YVgoKSwgd2hlZWxFdmVudC5kZWx0YVkoKSk7Cisg
ICAgZmlsdGVyZWREZWx0YSA9IHNjcm9sbGFibGVBcmVhLmRlbHRhRm9yUHJvcGFnYXRpb24oZmls
dGVyZWREZWx0YSk7CiAgICAgU2Nyb2xsR3JhbnVsYXJpdHkgc2Nyb2xsR3JhbnVsYXJpdHkgPSB3
aGVlbEdyYW51bGFyaXR5VG9TY3JvbGxHcmFudWxhcml0eSh3aGVlbEV2ZW50LmRlbHRhTW9kZSgp
KTsKICAgICBib29sIGRpZEhhbmRsZVdoZWVsRXZlbnQgPSBmYWxzZTsKLSAgICBpZiAoZmxvYXQg
YWJzb2x1dGVEZWx0YSA9IHN0ZDo6YWJzKHdoZWVsRXZlbnQuZGVsdGFYKCkpKQotICAgICAgICBk
aWRIYW5kbGVXaGVlbEV2ZW50IHw9IHNjcm9sbGFibGVBcmVhLnNjcm9sbCh3aGVlbEV2ZW50LmRl
bHRhWCgpID4gMCA/IFNjcm9sbFJpZ2h0IDogU2Nyb2xsTGVmdCwgc2Nyb2xsR3JhbnVsYXJpdHks
IGFic29sdXRlRGVsdGEpOwotCi0gICAgaWYgKGZsb2F0IGFic29sdXRlRGVsdGEgPSBzdGQ6OmFi
cyh3aGVlbEV2ZW50LmRlbHRhWSgpKSkKLSAgICAgICAgZGlkSGFuZGxlV2hlZWxFdmVudCB8PSBz
Y3JvbGxhYmxlQXJlYS5zY3JvbGwod2hlZWxFdmVudC5kZWx0YVkoKSA+IDAgPyBTY3JvbGxEb3du
IDogU2Nyb2xsVXAsIHNjcm9sbEdyYW51bGFyaXR5LCBhYnNvbHV0ZURlbHRhKTsKKyAgICBpZiAo
ZmxvYXQgYWJzb2x1dGVEZWx0YSA9IHN0ZDo6YWJzKGZpbHRlcmVkRGVsdGEud2lkdGgoKSkpCisg
ICAgICAgIGRpZEhhbmRsZVdoZWVsRXZlbnQgfD0gc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsKGZpbHRl
cmVkRGVsdGEud2lkdGgoKSA+IDAgPyBTY3JvbGxSaWdodCA6IFNjcm9sbExlZnQsIHNjcm9sbEdy
YW51bGFyaXR5LCBhYnNvbHV0ZURlbHRhKTsKIAorICAgIGlmIChmbG9hdCBhYnNvbHV0ZURlbHRh
ID0gc3RkOjphYnMoZmlsdGVyZWREZWx0YS5oZWlnaHQoKSkpCisgICAgICAgIGRpZEhhbmRsZVdo
ZWVsRXZlbnQgfD0gc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsKGZpbHRlcmVkRGVsdGEuaGVpZ2h0KCkg
PiAwID8gU2Nyb2xsRG93biA6IFNjcm9sbFVwLCBzY3JvbGxHcmFudWxhcml0eSwgYWJzb2x1dGVE
ZWx0YSk7CiAgICAgcmV0dXJuIGRpZEhhbmRsZVdoZWVsRXZlbnQ7CiB9CiAKLWJvb2wgRXZlbnRI
YW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2luZ0JveChOb2RlKiBz
dGFydE5vZGUsIGNvbnN0IFdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIGNvbnN0IEZsb2F0U2l6ZSYg
ZmlsdGVyZWRQbGF0Zm9ybURlbHRhLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlcmVkVmVsb2NpdHks
IE9wdGlvblNldDxFdmVudEhhbmRsaW5nPiBldmVudEhhbmRsaW5nKQorYm9vbCBFdmVudEhhbmRs
ZXI6OmhhbmRsZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94KE5vZGUqIHN0YXJ0
Tm9kZSwgY29uc3QgV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgRmxvYXRTaXplJiBmaWx0ZXJlZFBs
YXRmb3JtRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyZWRWZWxvY2l0eSwgT3B0aW9uU2V0
PEV2ZW50SGFuZGxpbmc+IGV2ZW50SGFuZGxpbmcpCiB7CiAgICAgYm9vbCBzaG91bGRIYW5kbGVF
dmVudCA9IHdoZWVsRXZlbnQuZGVsdGFYKCkgfHwgd2hlZWxFdmVudC5kZWx0YVkoKTsKICNpZiBF
TkFCTEUoV0hFRUxfRVZFTlRfTEFUQ0hJTkcpCkBAIC0zMDkxLDYgKzMwOTgsMTIgQEAgYm9vbCBF
dmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94KE5v
ZGUqIHN0YXJ0Tm9kZSwgY28KICAgICB9OwogCiAgICAgUmVuZGVyQm94KiBjdXJyZW50RW5jbG9z
aW5nQm94ID0gJmluaXRpYWxFbmNsb3NpbmdCb3g7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIGF1
dG8gYmlhc2VkRGVsdGEgPSBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6d2hlZWxEZWx0YUJp
YXNpbmdUb3dhcmRzVmVydGljYWwoRmxvYXRTaXplKHdoZWVsRXZlbnQuZGVsdGFYKCksIHdoZWVs
RXZlbnQuZGVsdGFZKCkpKTsKKyNlbHNlCisgICAgYXV0byBiaWFzZWREZWx0YSA9IEZsb2F0U2l6
ZSh3aGVlbEV2ZW50LmRlbHRhWCgpLCB3aGVlbEV2ZW50LmRlbHRhWSgpKTsKKyNlbmRpZgorICAg
IAogICAgIHdoaWxlIChjdXJyZW50RW5jbG9zaW5nQm94KSB7CiAgICAgICAgIGlmIChhdXRvKiBi
b3hTY3JvbGxhYmxlQXJlYSA9IHNjcm9sbGFibGVBcmVhRm9yQm94KCpjdXJyZW50RW5jbG9zaW5n
Qm94KSkgewogICAgICAgICAgICAgYXV0byBwbGF0Zm9ybUV2ZW50ID0gd2hlZWxFdmVudC51bmRl
cmx5aW5nUGxhdGZvcm1FdmVudCgpOwpAQCAtMzEwMyw2ICszMTE2LDEwIEBAIGJvb2wgRXZlbnRI
YW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2luZ0JveChOb2RlKiBz
dGFydE5vZGUsIGNvCiAKICAgICAgICAgICAgIGlmIChzY3JvbGxpbmdXYXNIYW5kbGVkKQogICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgCisgICAgICAgICAgICBiaWFz
ZWREZWx0YSA9IGJveFNjcm9sbGFibGVBcmVhLT5kZWx0YUZvclByb3BhZ2F0aW9uKGJpYXNlZERl
bHRhKTsKKyAgICAgICAgICAgIGlmIChib3hTY3JvbGxhYmxlQXJlYS0+c2hvdWxkQmxvY2tTY3Jv
bGxQcm9wYWdhdGlvbihiaWFzZWREZWx0YSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgIH0KIAogICAgICAgICBjdXJyZW50RW5jbG9zaW5nQm94ID0gY3VycmVudEVuY2xv
c2luZ0JveC0+Y29udGFpbmluZ0Jsb2NrKCk7CkBAIC0zMTE1LDcgKzMxMzIsNyBAQCBib29sIEV2
ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudEluQXBwcm9wcmlhdGVFbmNsb3NpbmdCb3goTm9k
ZSogc3RhcnROb2RlLCBjbwogYm9vbCBFdmVudEhhbmRsZXI6OnNjcm9sbGFibGVBcmVhQ2FuSGFu
ZGxlRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBTY3JvbGxhYmxl
QXJlYSYgc2Nyb2xsYWJsZUFyZWEpCiB7CiAjaWYgUExBVEZPUk0oTUFDKQotICAgIGF1dG8gYmlh
c2VkRGVsdGEgPSBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6d2hlZWxEZWx0YUJpYXNpbmdU
b3dhcmRzVmVydGljYWwod2hlZWxFdmVudCk7CisgICAgYXV0byBiaWFzZWREZWx0YSA9IFNjcm9s
bGluZ0VmZmVjdHNDb250cm9sbGVyOjp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbCh3
aGVlbEV2ZW50LmRlbHRhKCkpOwogI2Vsc2UKICAgICBhdXRvIGJpYXNlZERlbHRhID0gd2hlZWxF
dmVudC5kZWx0YSgpOwogI2VuZGlmCkBAIC0zMTI3LDYgKzMxNDQsOCBAQCBib29sIEV2ZW50SGFu
ZGxlcjo6c2Nyb2xsYWJsZUFyZWFDYW5IYW5kbGVFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZl
bnQmIHdoZWVsRQogICAgIGF1dG8gaG9yaXpvbnRhbFNpZGUgPSBTY3JvbGxhYmxlQXJlYTo6dGFy
Z2V0U2lkZUZvclNjcm9sbERlbHRhKC1iaWFzZWREZWx0YSwgU2Nyb2xsRXZlbnRBeGlzOjpIb3Jp
em9udGFsKTsKICAgICBpZiAoaG9yaXpvbnRhbFNpZGUgJiYgIXNjcm9sbGFibGVBcmVhLmlzUGlu
bmVkT25TaWRlKCpob3Jpem9udGFsU2lkZSkpCiAgICAgICAgIHJldHVybiB0cnVlOworICAgIGlm
IChzY3JvbGxhYmxlQXJlYS5zaG91bGRCbG9ja1Njcm9sbFByb3BhZ2F0aW9uKGJpYXNlZERlbHRh
KSAmJiBzY3JvbGxhYmxlQXJlYS5vdmVyc2Nyb2xsQmVoYXZpb3JBbGxvd1J1YmJlckJhbmQoKSkK
KyAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICByZXR1cm4gZmFsc2U7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuaAppbmRleCA2YjM1OWU3NTU2YTJkNmExNDg1ZTA0ZThjMjBmYTVmNDcw
YzVhMDRhLi5lYTQzNDg4OTExNTQ5MjE1ODg2MzUzZmVlNjg2YWZmZTczMmJhMzY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKQEAgLTQ3NSw3ICs0NzUsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgcHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxTbmFwKGNvbnN0IFBsYXRmb3JtV2hlZWxF
dmVudCYsIGNvbnN0IFdlYWtQdHI8U2Nyb2xsYWJsZUFyZWE+Jik7CiAgICAgYm9vbCBjb21wbGV0
ZVdpZGdldFdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgY29uc3QgV2Vha1B0
cjxXaWRnZXQ+JiwgY29uc3QgV2Vha1B0cjxTY3JvbGxhYmxlQXJlYT4mKTsKIAotICAgIGJvb2wg
aGFuZGxlV2hlZWxFdmVudEluQXBwcm9wcmlhdGVFbmNsb3NpbmdCb3goTm9kZSogc3RhcnROb2Rl
LCBjb25zdCBXaGVlbEV2ZW50JiwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJlZFBsYXRmb3JtRGVs
dGEsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyZWRWZWxvY2l0eSwgT3B0aW9uU2V0PEV2ZW50SGFu
ZGxpbmc+KTsKKyAgICBib29sIGhhbmRsZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5n
Qm94KE5vZGUqIHN0YXJ0Tm9kZSwgY29uc3QgV2hlZWxFdmVudCYsIEZsb2F0U2l6ZSYgZmlsdGVy
ZWRQbGF0Zm9ybURlbHRhLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlcmVkVmVsb2NpdHksIE9wdGlv
blNldDxFdmVudEhhbmRsaW5nPik7CiAKICAgICBib29sIGhhbmRsZVdoZWVsRXZlbnRJblNjcm9s
bGFibGVBcmVhKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIFNjcm9sbGFibGVBcmVhJiwgT3B0
aW9uU2V0PEV2ZW50SGFuZGxpbmc+KTsKICAgICBzdGQ6Om9wdGlvbmFsPFdoZWVsU2Nyb2xsR2Vz
dHVyZVN0YXRlPiB1cGRhdGVXaGVlbEdlc3R1cmVTdGF0ZShjb25zdCBQbGF0Zm9ybVdoZWVsRXZl
bnQmLCBPcHRpb25TZXQ8RXZlbnRIYW5kbGluZz4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMv
RXZlbnRIYW5kbGVyTWFjLm1tCmluZGV4IDU2N2YxZWUyMjM3NjM2ZjliMzA4MGE4OTEyNWI0NDcx
ZTEyNjBmN2MuLmI3MGM5MDQ1ZjQyYmNlYTQxYjdlMmE1NGYwMGY0NmQ4NDczMDI1MjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0KQEAgLTgxNSw3ICs4MTUs
MTAgQEAgc3RhdGljIENvbnRhaW5lck5vZGUqIGZpbmRFbmNsb3NpbmdTY3JvbGxhYmxlQ29udGFp
bmVyKENvbnRhaW5lck5vZGUqIG5vZGUsIGNvbnMKICAgICAgICAgYXV0byogc2Nyb2xsYWJsZUFy
ZWEgPSBzY3JvbGxhYmxlQXJlYUZvckJveCgqYm94KTsKICAgICAgICAgaWYgKCFzY3JvbGxhYmxl
QXJlYSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotCisgICAgICAgIAorICAgICAgICBpZiAoc2Ny
b2xsYWJsZUFyZWEtPnNob3VsZEJsb2NrU2Nyb2xsUHJvcGFnYXRpb24od2hlZWxFdmVudC5kZWx0
YSgpKSkKKyAgICAgICAgICAgIHJldHVybiBjYW5kaWRhdGU7CisgICAgICAgIAogICAgICAgICBp
ZiAod2hlZWxFdmVudC5waGFzZSgpID09IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlOjpNYXlCZWdp
biB8fCB3aGVlbEV2ZW50LnBoYXNlKCkgPT0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2U6OkNhbmNl
bGxlZCkKICAgICAgICAgICAgIHJldHVybiBjYW5kaWRhdGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
LmNwcAppbmRleCBmMzM4NmZjYzU1YWJmYWMxYWU4YTA2N2YzNDE4ZjRiM2RlM2NiOTQ1Li5hZjMx
Yjk0MzFiYTI1NzZhNjIzMGQzZDJhNmM4MTdhOWNiZjMwYWM2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGUuY3BwCkBAIC00MDQsNyArNDA0LDcgQEAgUGxhdGZvcm1XaGVlbEV2ZW50IFNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlOjpldmVudEZvclByb3BhZ2F0aW9uKGNvbnN0IFBsYXRmb3IKIHsKICAg
ICBhdXRvIGZpbHRlcmVkRGVsdGEgPSB3aGVlbEV2ZW50LmRlbHRhKCk7CiAjaWYgUExBVEZPUk0o
TUFDKQotICAgIGF1dG8gYmlhc2VkRGVsdGEgPSBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6
d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwod2hlZWxFdmVudCk7CisgICAgYXV0byBi
aWFzZWREZWx0YSA9IFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjp3aGVlbERlbHRhQmlhc2lu
Z1Rvd2FyZHNWZXJ0aWNhbCh3aGVlbEV2ZW50LmRlbHRhKCkpOwogI2Vsc2UKICAgICBhdXRvIGJp
YXNlZERlbHRhID0gd2hlZWxFdmVudC5kZWx0YSgpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKaW5kZXggMTRiYjdhZjA5NTNlMDZjYmM0NjdlNjZh
ZDAxZjJmM2UwZTQ5NjZlYy4uOWU2MWJkN2VlZGZjNTA0ZmM2YzhlZWIxMTI1ODI2NDViNjBkMWJj
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcApAQCAtODA3
LDQgKzgwNywyMiBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25z
dCBTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEpCiAgICAgcmV0dXJuIHRzOwogfQogCitG
bG9hdFNpemUgU2Nyb2xsYWJsZUFyZWE6OmRlbHRhRm9yUHJvcGFnYXRpb24oY29uc3QgRmxvYXRT
aXplJiBiaWFzZWREZWx0YSkgY29uc3QKK3sKKyAgICBhdXRvIGZpbHRlcmVkRGVsdGEgPSBiaWFz
ZWREZWx0YTsKKyAgICBpZiAoaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvclByZXZlbnRzUHJv
cGFnYXRpb24oKSkKKyAgICAgICAgZmlsdGVyZWREZWx0YS5zZXRXaWR0aCgwKTsKKyAgICBpZiAo
dmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3JQcmV2ZW50c1Byb3BhZ2F0aW9uKCkpCisgICAgICAg
IGZpbHRlcmVkRGVsdGEuc2V0SGVpZ2h0KDApOworICAgIHJldHVybiBmaWx0ZXJlZERlbHRhOwor
fQorCitib29sIFNjcm9sbGFibGVBcmVhOjpzaG91bGRCbG9ja1Njcm9sbFByb3BhZ2F0aW9uKGNv
bnN0IEZsb2F0U2l6ZSYgYmlhc2VkRGVsdGEpIGNvbnN0Cit7CisgICAgcmV0dXJuICgoaG9yaXpv
bnRhbE92ZXJzY3JvbGxCZWhhdmlvclByZXZlbnRzUHJvcGFnYXRpb24oKSB8fCB2ZXJ0aWNhbE92
ZXJzY3JvbGxCZWhhdmlvclByZXZlbnRzUHJvcGFnYXRpb24oKSkKKyAgICAgICAgJiYgKChob3Jp
em9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yUHJldmVudHNQcm9wYWdhdGlvbigpICYmIHZlcnRpY2Fs
T3ZlcnNjcm9sbEJlaGF2aW9yUHJldmVudHNQcm9wYWdhdGlvbigpKQorICAgICAgICB8fCAoaG9y
aXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvclByZXZlbnRzUHJvcGFnYXRpb24oKSAmJiAhYmlhc2Vk
RGVsdGEuaGVpZ2h0KCkpIHx8ICh2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvclByZXZlbnRzUHJv
cGFnYXRpb24oKQorICAgICAgICAmJiAhYmlhc2VkRGVsdGEud2lkdGgoKSkpKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsYWJsZUFyZWEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVh
LmgKaW5kZXggYTM2ZTE5OGM2OTViMWI4NDY1YWMwNTBmZTFjMzRhNjhlMWU5ODVhZS4uOWQ4MjUx
Y2JmMDcwMWEzYzExNDk0NzliZTkwMWM5Nzg2MWQ3ZmYwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCkBAIC0zNzMsNiArMzczLDEyIEBAIHB1YmxpYzoKICAgICB9
CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRTY3JvbGxBbmltYXRpb24oKSB7IH0KKyAgICAK
KyAgICBib29sIGhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3JQcmV2ZW50c1Byb3BhZ2F0aW9u
KCkgY29uc3QgeyByZXR1cm4gaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpICE9IE92ZXJz
Y3JvbGxCZWhhdmlvcjo6QXV0bzsgfQorICAgIGJvb2wgdmVydGljYWxPdmVyc2Nyb2xsQmVoYXZp
b3JQcmV2ZW50c1Byb3BhZ2F0aW9uKCkgY29uc3QgeyByZXR1cm4gdmVydGljYWxPdmVyc2Nyb2xs
QmVoYXZpb3IoKSAhPSBPdmVyc2Nyb2xsQmVoYXZpb3I6OkF1dG87IH0KKyAgICBib29sIG92ZXJz
Y3JvbGxCZWhhdmlvckFsbG93UnViYmVyQmFuZCgpIGNvbnN0IHsgcmV0dXJuIGhvcml6b250YWxP
dmVyc2Nyb2xsQmVoYXZpb3IoKSAhPSBPdmVyc2Nyb2xsQmVoYXZpb3I6Ok5vbmUgfHwgdmVydGlj
YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSAhPSBPdmVyc2Nyb2xsQmVoYXZpb3I6Ok5vbmU7IH0KKyAg
ICBib29sIHNob3VsZEJsb2NrU2Nyb2xsUHJvcGFnYXRpb24oY29uc3QgRmxvYXRTaXplJikgY29u
c3Q7CisgICAgRmxvYXRTaXplIGRlbHRhRm9yUHJvcGFnYXRpb24oY29uc3QgRmxvYXRTaXplJikg
Y29uc3Q7CiAKIHByb3RlY3RlZDoKICAgICBXRUJDT1JFX0VYUE9SVCBTY3JvbGxhYmxlQXJlYSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0Nv
bnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHNDb250
cm9sbGVyLmgKaW5kZXggYjc4ZjY2NGI4Mjg2NTliNWE3OWI2NjQ3YjYzOTRhMjVkYWMzZmZlNy4u
MWY5NDI4YzJiYTM0MzBhZmJlYzgwMTA2YjhmOTFhZDUzNjIwNGUxYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5oCkBAIC0x
NzQsNyArMTc0LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNVc2VyU2Nyb2xsSW5Qcm9ncmVzcygp
IGNvbnN0OwogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIHN0YXRpYyBGbG9hdFNpemUgd2hlZWxE
ZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jik7Cisg
ICAgc3RhdGljIEZsb2F0U2l6ZSB3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbChjb25z
dCBGbG9hdFNpemUmKTsKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBoYW5kbGVkLgogICAgIGJv
b2wgcHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxTbmFwKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVu
dCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1h
dG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFj
Lm1tCmluZGV4IGFiOGI3Zjc2M2M1YmYxZWEzNTEzNzJhNGJmMDhhMDkzMmE3YzFlOTEuLjA3MGY0
ZDg2MjNlMDQ1NTUxZWY5ZjAxNmYxNWQxZmVlN2JiZTMzMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0KQEAgLTEwNSw2ICsxMDUsOSBA
QCBzdGF0aWMgYm9vbCBnZXN0dXJlU2hvdWxkQmVnaW5TbmFwKGNvbnN0IFBsYXRmb3JtV2hlZWxF
dmVudCYgd2hlZWxFdmVudCwgU2Nyb2xsRQogCiBib29sIFNjcm9sbEFuaW1hdG9yTWFjOjphbGxv
d3NWZXJ0aWNhbFN0cmV0Y2hpbmcoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50
KSBjb25zdAogeworICAgIGlmIChtX3Njcm9sbGFibGVBcmVhLnZlcnRpY2FsT3ZlcnNjcm9sbEJl
aGF2aW9yKCkgPT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpOb25lKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgCiAgICAgc3dpdGNoIChtX3Njcm9sbGFibGVBcmVhLnZlcnRpY2FsU2Nyb2xsRWxh
c3RpY2l0eSgpKSB7CiAgICAgY2FzZSBTY3JvbGxFbGFzdGljaXR5OjpBdXRvbWF0aWM6IHsKICAg
ICAgICAgU2Nyb2xsYmFyKiBoU2Nyb2xsZXIgPSBtX3Njcm9sbGFibGVBcmVhLmhvcml6b250YWxT
Y3JvbGxiYXIoKTsKQEAgLTEyOCw2ICsxMzEsOSBAQCBib29sIFNjcm9sbEFuaW1hdG9yTWFjOjph
bGxvd3NWZXJ0aWNhbFN0cmV0Y2hpbmcoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbAog
CiBib29sIFNjcm9sbEFuaW1hdG9yTWFjOjphbGxvd3NIb3Jpem9udGFsU3RyZXRjaGluZyhjb25z
dCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpIGNvbnN0CiB7CisgICAgaWYgKG1fc2Ny
b2xsYWJsZUFyZWEuaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpID09IE92ZXJzY3JvbGxC
ZWhhdmlvcjo6Tm9uZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAogICAgIHN3aXRjaCAo
bV9zY3JvbGxhYmxlQXJlYS5ob3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eSgpKSB7CiAgICAgY2Fz
ZSBTY3JvbGxFbGFzdGljaXR5OjpBdXRvbWF0aWM6IHsKICAgICAgICAgU2Nyb2xsYmFyKiBoU2Ny
b2xsZXIgPSBtX3Njcm9sbGFibGVBcmVhLmhvcml6b250YWxTY3JvbGxiYXIoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxl
ci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxpbmdFZmZlY3RzQ29udHJv
bGxlci5tbQppbmRleCAzY2MzZDI0ZmE5MDlkOWNlZGE4ZTMyZjg2NDMyMTMyNTcwYTcxOGY5Li44
MDhlZDU1ODJhMjgyNmJhMGU3ZmJlZDY5NDU3NjFkZjQyMjFhYmM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVy
Lm1tCkBAIC0zNDUsOSArMzQ1LDkgQEAgYm9vbCBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6
YXBwbHlTY3JvbGxEZWx0YVdpdGhTdHJldGNoaW5nKGNvbnN0IFBsYXRmb3JtV2gKICAgICByZXR1
cm4gY2FuU3RhcnRBbmltYXRpb247CiB9CiAKLUZsb2F0U2l6ZSBTY3JvbGxpbmdFZmZlY3RzQ29u
dHJvbGxlcjo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoY29uc3QgUGxhdGZvcm1X
aGVlbEV2ZW50JiB3aGVlbEV2ZW50KQorRmxvYXRTaXplIFNjcm9sbGluZ0VmZmVjdHNDb250cm9s
bGVyOjp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbChjb25zdCBGbG9hdFNpemUmIHdo
ZWVsRGVsdGEpCiB7Ci0gICAgcmV0dXJuIGRlbHRhQWxpZ25lZFRvRG9taW5hbnRBeGlzKHdoZWVs
RXZlbnQuZGVsdGEoKSk7CisgICAgcmV0dXJuIGRlbHRhQWxpZ25lZFRvRG9taW5hbnRBeGlzKHdo
ZWVsRGVsdGEpOwogfQogCiB2b2lkIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjp1cGRhdGVS
dWJiZXJCYW5kQW5pbWF0aW5nU3RhdGUoKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDUwZjZhNTJlYTUwMWE3NzY3YTQ5Nzky
Yjk3ZTA3NGE3MzYyMTZiZTAuLjRjYjVhZGZkYmY0MTIwMWVlZDBmNGFhMDcxZGUzODM0OGY0N2U5
ZWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAyMi0wMi0wMiAgTmlrb2xhb3MgTW91Y2h0YXJp
cyAgPG5tb3VjaHRhcmlzQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgQ1NTIG92ZXJz
Y3JvbGwtYmVoYXZpb3IgZm9yIHN5bmNocm9ub3VzIHNjcm9sbAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyOTY4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgU2ltb24gRnJhc2VyLgorCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwt
b3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJz
Y3JvbGwtYmVoYXZpb3ItaWZyYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFz
dC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1i
ZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGZhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3Jv
bGxhYmxlLWVsZW1lbnQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvc3lu
Yy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNj
cm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IHBsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9ybS93
aW4vVGVzdEV4cGVjdGF0aW9uczoKKwogMjAyMi0wMi0wMSAgQWxhbiBCdWp0YXMgIDx6YWxhbkBh
cHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSUZDXSBVc2luZyBGb250Y2FzY2FkZTo6c3BhY2VX
aWR0aCB0byBzdWJ0cmFjdCB0aGUgdHJhaWxpbmcgc3BhY2Ugd2lkdGggbWF5IHJlc3VsdCBpbiBp
bmNvcnJlY3QgbGF5b3V0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9z
eW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1l
bGVtZW50LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNzE1MGZmNjBiNWRiZGQwYjRhN2FjNmY4
M2ZiNTZmNTdjZDJjZDgyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3Jv
bGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50LWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDIwIEBACisKK1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0
IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBhdXRvLgorUEFTUyBFbGVtZW50IHZlcnRp
Y2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBhdXRvLgorUEFT
UyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9y
OiBjb250YWluIGF1dG8uCitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBv
dmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGF1dG8uCitQQVNTIEVsZW1lbnQgaG9yaXpvbnRh
bCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgYXV0by4KK1BBU1Mg
RWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5v
bmUgYXV0by4KK1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNj
cm9sbC1iZWhhdmlvcjogYXV0byBjb250YWluLgorUEFTUyBFbGVtZW50IHZlcnRpY2FsIHNjcm9s
bCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBjb250YWluLgorUEFTUyBFbGVt
ZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250
YWluIGNvbnRhaW4uCitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVy
c2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGNvbnRhaW4uCitQQVNTIEVsZW1lbnQgaG9yaXpvbnRh
bCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgY29udGFpbi4KK1BB
U1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6
IG5vbmUgY29udGFpbi4KK1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGgg
b3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBub25lLgorUEFTUyBFbGVtZW50IHZlcnRpY2FsIHNj
cm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBub25lLgorUEFTUyBFbGVt
ZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250
YWluIG5vbmUuCitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Ny
b2xsLWJlaGF2aW9yOiBjb250YWluIG5vbmUuCitQQVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBzY3Jv
bGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgbm9uZS4KK1BBU1MgRWxlbWVu
dCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgbm9u
ZS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwt
b3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9s
bGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4xOTRiYzViYjg1ZGI1NzU2NTQzMmZmZTcyZTQwNjM4NTg4NjU5NjVhCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9s
bC1iZWhhdmlvci1lbGVtZW50Lmh0bWwKQEAgLTAsMCArMSw4NiBAQAorPCFkb2N0eXBlIGh0bWw+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXN1cHBvcnQu
anMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL2RyYWZ0cy5jc3N3
Zy5vcmcvY3NzLW92ZXJzY3JvbGwtYmVoYXZpb3IiPgorPHN0eWxlPgorICAgIC5zY3JvbGxpbmcg
eworICAgICAgICBvdmVyZmxvdzogc2Nyb2xsOworICAgIH0KKyAgICAuc2Nyb2xsQ29udGVudCB7
CisgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICB9Cisg
ICAgI3Jvb3QgeworICAgICAgICB3aWR0aDogMjAwcHg7CisgICAgICAgIGhlaWdodDogMjAwcHg7
CisgICAgfQorICAgICNzY3JvbGxlciB7CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAg
aGVpZ2h0OiAxMDBweDsKKyAgICB9Cis8L3N0eWxlPgorPGRpdiBpZD0ncm9vdCcgY2xhc3M9InNj
cm9sbGluZyI+CisgICAgPGRpdiBpZD0nc2Nyb2xsZXInIGNsYXNzPSJzY3JvbGxpbmciPgorICAg
ICAgICA8ZGl2IGNsYXNzPSJzY3JvbGxDb250ZW50Ij48L2Rpdj4KKyAgICA8L2Rpdj4KKyAgICA8
ZGl2IGNsYXNzPSJzY3JvbGxDb250ZW50Ij48L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0PgorY29u
c3Qgcm9vdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyb290Jyk7Citjb25zdCBzY3JvbGxl
ciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY3JvbGxlcicpOwordmFyIG92ZXJzY3JvbGxE
YXRhcyA9IFtbImF1dG8iLCAiYXV0byIsIHRydWUsIHRydWVdLAorICAgICAgICAgICAgICAgICAg
ICAgICAgWyJjb250YWluIiwgImF1dG8iLCBmYWxzZSwgdHJ1ZV0sCisgICAgICAgICAgICAgICAg
ICAgICAgICBbIm5vbmUiLCAiYXV0byIsIGZhbHNlLCB0cnVlXSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIFsiYXV0byIsICJjb250YWluIiwgdHJ1ZSwgZmFsc2VdLAorICAgICAgICAgICAgICAg
ICAgICAgICAgWyJjb250YWluIiwgImNvbnRhaW4iLCBmYWxzZSwgZmFsc2VdLAorICAgICAgICAg
ICAgICAgICAgICAgICAgWyJub25lIiwgImNvbnRhaW4iLCBmYWxzZSwgZmFsc2VdLAorICAgICAg
ICAgICAgICAgICAgICAgICAgWyJhdXRvIiwgIm5vbmUiLCB0cnVlLCBmYWxzZV0sCisgICAgICAg
ICAgICAgICAgICAgICAgICBbImNvbnRhaW4iLCAibm9uZSIsIGZhbHNlLCBmYWxzZV0sCisgICAg
ICAgICAgICAgICAgICAgICAgICBbIm5vbmUiLCAibm9uZSIsIGZhbHNlLCBmYWxzZV1dOworCitm
dW5jdGlvbiByZXNldFRlc3QoKSB7CisgICAgLy8gVHJ5IHZhcmlvdXMgbWV0aG9kcyB0byBlbnN1
cmUgdGhlIGVsZW1lbnQgcG9zaXRpb24gaXMgcmVzZXQgaW1tZWRpYXRlbHkuCisgICAgc2Nyb2xs
ZXIuc2Nyb2xsTGVmdCA9IDMwMDsKKyAgICBzY3JvbGxlci5zY3JvbGxUb3AgPSAzMDA7CisgICAg
c2Nyb2xsZXIuc2Nyb2xsVG8oMzAwLCAzMDApOworCisgICAgcm9vdC5zY3JvbGxMZWZ0ID0gMDsK
KyAgICByb290LnNjcm9sbFRvcCA9IDA7CisgICAgcm9vdC5zY3JvbGxUbygwLCAwKTsKK30KKwor
ZnVuY3Rpb24gc3RhcnRUZXN0KCkgeworICAgIG92ZXJzY3JvbGxEYXRhcy5mb3JFYWNoKChbb3Zl
cnNjcm9sbFgsIG92ZXJzY3JvbGxZLCBwcm9wYWdhdGVYLCBwcm9wYWdhdGVZXSkgPT4geworICAg
ICAgICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgICAgICAgICAgcmVzZXRUZXN0KCk7CisgICAg
ICAgICAgICBzY3JvbGxlci5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JYID0gb3ZlcnNjcm9sbFg7
CisgICAgICAgICAgICBzY3JvbGxlci5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JZID0gb3ZlcnNj
cm9sbFk7CisgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoOworCisgICAgICAg
ICAgICB2YXIgeCA9IHNjcm9sbGVyLmNsaWVudFdpZHRoIC8gMjsKKyAgICAgICAgICAgIHZhciB5
ID0gc2Nyb2xsZXIuY2xpZW50SGVpZ2h0IC8gMjsKKyAgICAgICAgICAgIHZhciBkZWx0YSA9IGdl
dERlbHRhcygicmlnaHQiKTsKKyAgICAgICAgICAgIHJldHVybiBtb3VzZVdoZWVsU2Nyb2xsQW5k
V2FpdCh4LCB5LCBkZWx0YS5YLCBkZWx0YS5ZLCBkZWx0YS5YLCBkZWx0YS5ZKS50aGVuKCgpID0+
IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsTGVmdCA+IDAsIHBy
b3BhZ2F0ZVgsICdQcm9wYWdhdGUgaG9yaXpvbnRhbCBzY3JvbGwnKTsKKyAgICAgICAgICAgIH0p
OworICAgICAgICB9LCAnRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNj
cm9sbC1iZWhhdmlvcjogJyArIG92ZXJzY3JvbGxYICsgJyAnICsgb3ZlcnNjcm9sbFkgKyAnLicp
OworCisgICAgICAgIHByb21pc2VfdGVzdCgoKSA9PiB7CisgICAgICAgICAgICByZXNldFRlc3Qo
KTsKKyAgICAgICAgICAgIHNjcm9sbGVyLnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclggPSBvdmVy
c2Nyb2xsWDsKKyAgICAgICAgICAgIHNjcm9sbGVyLnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclkg
PSBvdmVyc2Nyb2xsWTsKKworICAgICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0
aCAvIDI7CisgICAgICAgICAgICB2YXIgeSA9IHNjcm9sbGVyLmNsaWVudEhlaWdodCAvIDI7Cisg
ICAgICAgICAgICB2YXIgZGVsdGEgPSBnZXREZWx0YXMoImRvd24iKTsKKyAgICAgICAgICAgIHJl
dHVybiBtb3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCh4LCB5LCBkZWx0YS5YLCBkZWx0YS5ZLCBkZWx0
YS5YLCBkZWx0YS5ZKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxz
KHJvb3Quc2Nyb2xsVG9wID4gMCwgcHJvcGFnYXRlWSwgJ1Byb3BhZ2F0ZSB2ZXJ0aWNhbCBzY3Jv
bGwnKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9LCAnRWxlbWVudCB2ZXJ0aWNhbCBzY3Jv
bGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6ICcgKyBvdmVyc2Nyb2xsWCArICcgJyAr
IG92ZXJzY3JvbGxZICsgJy4nKTsKKyAgICB9KTsKK30KKworYWRkRXZlbnRMaXN0ZW5lcigibG9h
ZCIsIHN0YXJ0VGVzdCk7Cis8L3NjcmlwdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Ny
b2xsLWJlaGF2aW9yLWlmcmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9s
bGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOTAwYTBiN2Q5MDViODdjMWRiNzYyNjk0ZmQwMDYzOGYxOTc2OTUzNwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92
ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIxIEBACisK
KworUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVo
YXZpb3I6IGF1dG8gYXV0by4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGgg
b3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBhdXRvLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBz
Y3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gYXV0by4KK1BBU1Mg
SWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29u
dGFpbiBhdXRvLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJz
Y3JvbGwtYmVoYXZpb3I6IG5vbmUgYXV0by4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0
ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBhdXRvLgorUEFTUyBJZnJhbWUgaG9y
aXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gY29udGFp
bi4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhh
dmlvcjogYXV0byBjb250YWluLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3
aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gY29udGFpbi4KK1BBU1MgSWZyYW1lIHZl
cnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBjb250
YWluLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwt
YmVoYXZpb3I6IG5vbmUgY29udGFpbi4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0
IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBjb250YWluLgorUEFTUyBJZnJhbWUgaG9y
aXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gbm9uZS4K
K1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlv
cjogYXV0byBub25lLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92
ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gbm9uZS4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNj
cm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBub25lLgorUEFTUyBJ
ZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5v
bmUgbm9uZS4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9s
bC1iZWhhdmlvcjogbm9uZSBub25lLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Nj
cm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1p
ZnJhbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYjNiODExZDFiZGIzMTAzODkwNjE2MDRkNWMzMDZkMmNm
MTk0MmQ4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3lu
Yy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUuaHRtbApAQCAtMCwwICsxLDg1IEBA
Cis8IWRvY3R5cGUgaHRtbD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5l
c3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVz
c3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL292ZXJzY3JvbGwt
YmVoYXZpb3Itc3VwcG9ydC5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0
dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3Mtb3ZlcnNjcm9sbC1iZWhhdmlvciI+Cis8c3R5bGU+
CisgICAgLnNjcm9sbGluZyB7CisgICAgICAgIG92ZXJmbG93OiBzY3JvbGw7CisgICAgfQorICAg
IC5zY3JvbGxDb250ZW50IHsKKyAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICBoZWlnaHQ6
IDMwMHB4OworICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZWQs
IGJsdWUpOworICAgIH0KKyAgICAjcm9vdCB7CisgICAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAg
ICAgaGVpZ2h0OiAyMDBweDsKKyAgICB9CisgICAgI3Njcm9sbGVyIHsKKyAgICAgICAgd2lkdGg6
IDEwMHB4OworICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgICBvdmVyc2Nyb2xsLWJlaGF2
aW9yLXk6IGF1dG87CisgICAgfQorPC9zdHlsZT4KKzxkaXYgaWQ9J3Jvb3QnIGNsYXNzPSJzY3Jv
bGxpbmciPgorICAgIDxpZnJhbWUgaWQ9J3Njcm9sbGVyJyBzcmNkb2M9IjxodG1sPjxkaXYgc3R5
bGU9J3dpZHRoOiAzMDBweDsgaGVpZ2h0OiAzMDBweDsnPjwvZGl2PjwvaHRtbD4KKyAgICAgICAg
Ij48L2lmcmFtZT4KKyAgICA8ZGl2IGNsYXNzPSJzY3JvbGxDb250ZW50Ij48L2Rpdj4KKzwvZGl2
PgorCis8c2NyaXB0PgorICAgIGNvbnN0IHJvb3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
cm9vdCcpOworICAgIGNvbnN0IHNjcm9sbGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Nj
cm9sbGVyJyk7CisgICAgdmFyIG92ZXJzY3JvbGxEYXRhcyA9IFtbImF1dG8iLCAiYXV0byIsIHRy
dWUsIHRydWVdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiY29udGFpbiIsICJhdXRv
IiwgZmFsc2UsIHRydWVdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsibm9uZSIsICJh
dXRvIiwgZmFsc2UsIHRydWVdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiYXV0byIs
ICJjb250YWluIiwgdHJ1ZSwgZmFsc2VdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsi
Y29udGFpbiIsICJjb250YWluIiwgZmFsc2UsIGZhbHNlXSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBbIm5vbmUiLCAiY29udGFpbiIsIGZhbHNlLCBmYWxzZV0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgWyJhdXRvIiwgIm5vbmUiLCB0cnVlLCBmYWxzZV0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgWyJjb250YWluIiwgIm5vbmUiLCBmYWxzZSwgZmFsc2VdLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFsibm9uZSIsICJub25lIiwgZmFsc2UsIGZhbHNlXV07
CisgICAgZnVuY3Rpb24gcmVzZXRUZXN0KCkgeworICAgICAgICAvLyBUcnkgdmFyaW91cyBtZXRo
b2RzIHRvIGVuc3VyZSB0aGUgZWxlbWVudCBwb3NpdGlvbiBpcyByZXNldCBpbW1lZGlhdGVseS4K
KyAgICAgICAgc2Nyb2xsZXIuY29udGVudFdpbmRvdy5zY3JvbGxYID0gMzAwOworICAgICAgICBz
Y3JvbGxlci5jb250ZW50V2luZG93LnNjcm9sbFkgPSAzMDA7CisgICAgICAgIHNjcm9sbGVyLmNv
bnRlbnRXaW5kb3cuc2Nyb2xsVG8oMzAwLCAzMDApOworICAgICAgICByb290LnNjcm9sbExlZnQg
PSAwOworICAgICAgICByb290LnNjcm9sbFRvcCA9IDA7CisgICAgICAgIHJvb3Quc2Nyb2xsVG8o
MCwgMCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gb3ZlcnNjcm9sbEJlaGF2aW9yVGVzdCgpIHsK
KyAgICAgICAgb3ZlcnNjcm9sbERhdGFzLmZvckVhY2goKFtvdmVyc2Nyb2xsWCwgb3ZlcnNjcm9s
bFksIHByb3BhZ2F0ZVgsIHByb3BhZ2F0ZVldKSA9PiB7CisgICAgICAgICAgICBwcm9taXNlX3Rl
c3QoKCkgPT4geworICAgICAgICAgICAgICAgIHJlc2V0VGVzdCgpOworICAgICAgICAgICAgICAg
IHZhciB0YXJnZXQgPSBzY3JvbGxlci5jb250ZW50V2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJodG1sIilbMF07CisgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLm92ZXJz
Y3JvbGxCZWhhdmlvclggPSBvdmVyc2Nyb2xsWDsKKyAgICAgICAgICAgICAgICB0YXJnZXQuc3R5
bGUub3ZlcnNjcm9sbEJlaGF2aW9yWSA9IG92ZXJzY3JvbGxZOworICAgICAgICAgICAgICAgIHZh
ciB4ID0gc2Nyb2xsZXIuY2xpZW50V2lkdGggLyAyOworICAgICAgICAgICAgICAgIHZhciB5ID0g
c2Nyb2xsZXIuY2xpZW50SGVpZ2h0IC8gMjsKKyAgICAgICAgICAgICAgICB2YXIgZGVsdGEgPSBn
ZXREZWx0YXMoInJpZ2h0Iik7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1vdXNlV2hlZWxTY3Jv
bGxBbmRXYWl0KHgsIHksIGRlbHRhLlgsIGRlbHRhLlksIGRlbHRhLlgsIGRlbHRhLlkpLnRoZW4o
KCkgPT4geworICAgICAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsTGVm
dCA+IDAsIHByb3BhZ2F0ZVgsICdQcm9wYWdhdGUgaG9yaXpvbnRhbCBzY3JvbGwnKTsKKyAgICAg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0sICdJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwg
dGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6ICcgKyBvdmVyc2Nyb2xsWCArICcgJyArIG92
ZXJzY3JvbGxZICsgJy4nKTsKKworICAgICAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAg
ICAgICAgICAgICAgICByZXNldFRlc3QoKTsKKyAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0g
c2Nyb2xsZXIuY29udGVudFdpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaHRt
bCIpWzBdOworICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JY
ID0gb3ZlcnNjcm9sbFg7CisgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLm92ZXJzY3JvbGxC
ZWhhdmlvclkgPSBvdmVyc2Nyb2xsWTsKKworICAgICAgICAgICAgICAgIHZhciB4ID0gc2Nyb2xs
ZXIuY2xpZW50V2lkdGggLyAyOworICAgICAgICAgICAgICAgIHZhciB5ID0gc2Nyb2xsZXIuY2xp
ZW50SGVpZ2h0IC8gMjsKKyAgICAgICAgICAgICAgICB2YXIgZGVsdGEgPSBnZXREZWx0YXMoImRv
d24iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbW91c2VXaGVlbFNjcm9sbEFuZFdhaXQoeCwg
eSwgZGVsdGEuWCwgZGVsdGEuWSwgZGVsdGEuWCwgZGVsdGEuWSkudGhlbigoKSA9PiB7CisgICAg
ICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxUb3AgPiAwLCBwcm9wYWdh
dGVZLCAnUHJvcGFnYXRlIHZlcnRpY2FsIHNjcm9sbCcpOworICAgICAgICAgICAgICAgIH0pOwor
ICAgICAgICAgICAgfSwgJ0lmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3Jv
bGwtYmVoYXZpb3I6ICcgKyBvdmVyc2Nyb2xsWCArICcgJyArIG92ZXJzY3JvbGxZICsgJy4nKTsK
KyAgICAgICAgfSk7CisgICAgfQorCisgICAgc2Nyb2xsZXIuYWRkRXZlbnRMaXN0ZW5lcigibG9h
ZCIsIG92ZXJzY3JvbGxCZWhhdmlvclRlc3QpOworPC9zY3JpcHQ+ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1z
Y3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJl
aGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMzk1
YjY0ODhkMDg3MGI5NTYxYzAyODY3OWQ3ZTE1YTQ3ZmNlNmU5Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlv
ci11bnNjcm9sbGFibGUtZWxlbWVudC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACisKK1BB
U1MgVW5zY3JvbGxhYmxlIGVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJz
Y3JvbGwtYmVoYXZpb3I6IG5vbmUuCitQQVNTIFVuc2Nyb2xsYWJsZSBlbGVtZW50IHZlcnRpY2Fs
IHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4KKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhh
dmlvci11bnNjcm9sbGFibGUtZWxlbWVudC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxp
bmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmJiNGIwNmU5ZTY0MTkzNzA4MDgxMjc4ZDkxMDAzYzA1ZDU3MjRiMjYK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9s
bC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWwKQEAgLTAsMCAr
MSw2NiBAQAorPCFkb2N0eXBlIGh0bWw+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVz
dGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9vdmVy
c2Nyb2xsLWJlaGF2aW9yLXN1cHBvcnQuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJoZWxwIiBo
cmVmPSJodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLW92ZXJzY3JvbGwtYmVoYXZpb3IiPgor
PHN0eWxlPgorICAgIC5zY3JvbGxpbmcgeworICAgICAgICBvdmVyZmxvdzogc2Nyb2xsOworICAg
IH0KKyAgICAuc2Nyb2xsQ29udGVudCB7CisgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAg
aGVpZ2h0OiAzMDBweDsKKyAgICB9CisgICAgI3Jvb3QgeworICAgICAgICB3aWR0aDogMjAwcHg7
CisgICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgfQorICAgICNzY3JvbGxlciB7CisgICAgICAg
IHdpZHRoOiAxMDBweDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgICAgb3ZlcnNjcm9s
bC1iZWhhdmlvcjogbm9uZTsKKyAgICAgICAgb3ZlcmZsb3c6IHZpc2libGU7CisgICAgICAgIGJh
Y2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJlZCwgYmx1ZSk7CisgICAgfQorPC9z
dHlsZT4KKzxkaXYgaWQ9InJvb3QiIGNsYXNzPSJzY3JvbGxpbmciPgorICAgIDxkaXYgaWQ9InNj
cm9sbGVyIj4KKyAgICAgICAgPGRpdiBjbGFzcz0ic2Nyb2xsQ29udGVudCI+PC9kaXY+CisgICAg
PC9kaXY+CisgICAgPGRpdiBjbGFzcz0ic2Nyb2xsQ29udGVudCI+PC9kaXY+Cis8L2Rpdj4KKwor
PHNjcmlwdD4KK2NvbnN0IHJvb3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncm9vdCcpOwor
Y29uc3Qgc2Nyb2xsZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2Nyb2xsZXInKTsKKwor
ZnVuY3Rpb24gcmVzZXRUZXN0KCkgeworICAgIHJvb3Quc2Nyb2xsTGVmdCA9IDA7CisgICAgcm9v
dC5zY3JvbGxUb3AgPSAwOworICAgIHJvb3Quc2Nyb2xsVG8oMCwgMCk7Cit9CisKK2Z1bmN0aW9u
IHN0YXJ0VGVzdCgpIHsKKyAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAg
IHJlc2V0VGVzdCgpOworICAgICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAv
IDI7CisgICAgICAgICAgICB2YXIgeSA9IHNjcm9sbGVyLmNsaWVudEhlaWdodCAvIDI7CisgICAg
ICAgICAgICB2YXIgZGVsdGEgPSBnZXREZWx0YXMoInJpZ2h0Iik7CisgICAgICAgICAgICByZXR1
cm4gbW91c2VXaGVlbFNjcm9sbEFuZFdhaXQoeCwgeSwgZGVsdGEuWCwgZGVsdGEuWSwgZGVsdGEu
WCwgZGVsdGEuWSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhy
b290LnNjcm9sbExlZnQgPiAwLCB0cnVlLCAnUHJvcGFnYXRlIGhvcml6b250YWwgc2Nyb2xsJyk7
CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSwgJ1Vuc2Nyb2xsYWJsZSBlbGVtZW50IGhvcml6
b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLicpOworCisg
ICAgICAgIHByb21pc2VfdGVzdCgoKSA9PiB7CisgICAgICAgICAgICByZXNldFRlc3QoKTsKKyAg
ICAgICAgICAgIHZhciB4ID0gc2Nyb2xsZXIuY2xpZW50V2lkdGggLyAyOworICAgICAgICAgICAg
dmFyIHkgPSBzY3JvbGxlci5jbGllbnRIZWlnaHQgLyAyOworICAgICAgICAgICAgdmFyIGRlbHRh
ID0gZ2V0RGVsdGFzKCJkb3duIik7CisgICAgICAgICAgICByZXR1cm4gbW91c2VXaGVlbFNjcm9s
bEFuZFdhaXQoeCwgeSwgZGVsdGEuWCwgZGVsdGEuWSwgZGVsdGEuWCwgZGVsdGEuWSkudGhlbigo
KSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbFRvcCA+IDAs
IHRydWUsICdQcm9wYWdhdGUgdmVydGljYWwgc2Nyb2xsJyk7CisgICAgICAgICAgICB9KTsKKyAg
ICAgICAgfSwgJ1Vuc2Nyb2xsYWJsZSBlbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGgg
b3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4nKTsKK30KKworYWRkRXZlbnRMaXN0ZW5lcigibG9h
ZCIsIHN0YXJ0VGVzdCk7Cis8L3NjcmlwdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Ny
b2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9s
bGFibGUtaWZyYW1lLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZmE1OWNjYmE3OWFlZmYzM2Rh
NzBlOTNkNDg4YTA3ZWVjOWM1NjkxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUt
aWZyYW1lLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKKworCitQQVNTIFVuc2Nyb2xsYWJs
ZSBpZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6
IG5vbmUuCitQQVNTIFVuc2Nyb2xsYWJsZSBpZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0
aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJs
ZS1pZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92
ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJk
ZjY3NWFjNDM3MjlkM2RiYjRmNWY1MzI0ODkxMjNlNjY5YTU3YjIKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2
aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUuaHRtbApAQCAtMCwwICsxLDY1IEBACis8IWRvY3R5cGUg
aHRtbD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL292ZXJzY3JvbGwtYmVoYXZpb3Itc3Vw
cG9ydC5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vZHJhZnRz
LmNzc3dnLm9yZy9jc3Mtb3ZlcnNjcm9sbC1iZWhhdmlvciI+Cis8c3R5bGU+CisgICAgLnNjcm9s
bGluZyB7CisgICAgICAgIG92ZXJmbG93OiBzY3JvbGw7CisgICAgfQorICAgIC5zY3JvbGxDb250
ZW50IHsKKyAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAg
IH0KKyAgICAjcm9vdCB7CisgICAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgICAgaGVpZ2h0OiAy
MDBweDsKKyAgICB9CisgICAgI3Njcm9sbGVyIHsKKyAgICAgICAgd2lkdGg6IDIwMHB4OworICAg
ICAgICBoZWlnaHQ6IDIwMHB4OworICAgICAgICBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lOwor
ICAgICAgICBvdmVyZmxvdzogdmlzaWJsZTsKKyAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdy
YWRpZW50KDEzNWRlZywgcmVkLCBibHVlKTsKKyAgICB9Cis8L3N0eWxlPgorPGRpdiBpZD0ncm9v
dCcgY2xhc3M9InNjcm9sbGluZyI+CisgICAgPGlmcmFtZSBpZD0nc2Nyb2xsZXInIHNyY2RvYz0i
PGh0bWwgc3R5bGU9J292ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmU7Jz48ZGl2IHN0eWxlPSd3aWR0
aDogMTAwcHg7IGhlaWdodDogMTAwcHg7Jz48L2Rpdj48L2h0bWw+CisgICAgICAgICI+PC9pZnJh
bWU+CisgICAgPGRpdiBjbGFzcz0ic2Nyb2xsQ29udGVudCI+PC9kaXY+Cis8L2Rpdj4KKworPHNj
cmlwdD4KK2NvbnN0IHJvb3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncm9vdCcpOworY29u
c3Qgc2Nyb2xsZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2Nyb2xsZXInKTsKKworZnVu
Y3Rpb24gcmVzZXRUZXN0KCkgeworICAgIHJvb3Quc2Nyb2xsTGVmdCA9IDA7CisgICAgcm9vdC5z
Y3JvbGxUb3AgPSAwOworICAgIHJvb3Quc2Nyb2xsVG8oMCwgMCk7Cit9CisKK2Z1bmN0aW9uIHN0
YXJ0VGVzdCgpIHsKKyAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAgIHJl
c2V0VGVzdCgpOworICAgICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7
CisgICAgICAgICAgICB2YXIgeSA9IHNjcm9sbGVyLmNsaWVudEhlaWdodCAvIDI7CisgICAgICAg
ICAgICB2YXIgZGVsdGEgPSBnZXREZWx0YXMoInJpZ2h0Iik7CisgICAgICAgICAgICByZXR1cm4g
bW91c2VXaGVlbFNjcm9sbEFuZFdhaXQoeCwgeSwgZGVsdGEuWCwgZGVsdGEuWSwgZGVsdGEuWCwg
ZGVsdGEuWSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyb290
LnNjcm9sbExlZnQgPiAwLCB0cnVlLCAnUHJvcGFnYXRlIGhvcml6b250YWwgc2Nyb2xsJyk7Cisg
ICAgICAgICAgICB9KTsKKyAgICAgICAgfSwgJ1Vuc2Nyb2xsYWJsZSBpZnJhbWUgaG9yaXpvbnRh
bCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuJyk7CisKKyAgICAg
ICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAgIHJlc2V0VGVzdCgpOworICAgICAg
ICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAgICAgICAgICB2YXIg
eSA9IHNjcm9sbGVyLmNsaWVudEhlaWdodCAvIDI7CisgICAgICAgICAgICB2YXIgZGVsdGEgPSBn
ZXREZWx0YXMoImRvd24iKTsKKyAgICAgICAgICAgIHJldHVybiBtb3VzZVdoZWVsU2Nyb2xsQW5k
V2FpdCh4LCB5LCBkZWx0YS5YLCBkZWx0YS5ZLCBkZWx0YS5YLCBkZWx0YS5ZKS50aGVuKCgpID0+
IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsVG9wID4gMCwgdHJ1
ZSwgJ1Byb3BhZ2F0ZSB2ZXJ0aWNhbCBzY3JvbGwnKTsKKyAgICAgICAgICAgIH0pOworICAgICAg
ICB9LCAnVW5zY3JvbGxhYmxlIGlmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJz
Y3JvbGwtYmVoYXZpb3I6IG5vbmUuJyk7Cit9CisKK2FkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBz
dGFydFRlc3QpOworPC9zY3JpcHQ+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDg2ZGYyN2Q1
YmFiYmFiN2NkMDI2ZWYyZGM1MjI2ZjUyYTYwZDNlYTcuLjNjYzNiNjdjYjZhMzU3ZTEyOTU2Y2Ey
MjdiYmRjYTEyYjJlZjI4NTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13
azEvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rl
c3RFeHBlY3RhdGlvbnMKQEAgLTU1Niw2ICs1NTYsMTAgQEAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLXNjcm9sbC1zbmFwL3Njcm9sbC10YXJnZXQtcGFkZGluZy0wMDEu
aHQKIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1zdG9wLWNoYW5nZS5odG1sIFsgRmFpbHVyZSBdCiBjc3MzL3Njcm9sbC1zbmFw
L3Njcm9sbC1wYWRkaW5nLW1haW5mcmFtZS1wYWdpbmcuaHRtbCBbIEZhaWx1cmUgXQogCisjIExh
Y2sgb2Ygd2F5cyB0byBjb250cm9sIHRoZSBjcm9zcy1mcmFtZSBzY3JvbGwgY2hhaW5pbmcgaW4g
V0sxLgorZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJh
bWUuaHRtbCBbIFNraXAgXQorZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1i
ZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLmh0bWwgWyBTa2lwIF0KKwogIyMjIEVORCBPRiAo
MikgRmFpbHVyZXMgd2l0aG91dCBidWcgcmVwb3J0cwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4v
VGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRp
b25zCmluZGV4IDE2ZGI3YzRlZDljOWE1ZWIzY2QzNThjNzQ4ZTgxYjBkYWEyNDNmNDAuLjRmYmYz
MDg1MTczN2UzNWEyMzRhNDIzMjhiZTIwYTM0ZWI5ZjJlMmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCkBAIC02NDQsNiArNjQ0LDEyIEBAIHBvaW50ZXItbG9j
ay8gWyBTa2lwIF0KIGh0dHAvdGVzdHMvcG9pbnRlci1sb2NrLyBbIFNraXAgXQogZmFzdC9qcy1w
cm9taXNlL2pzLXByb21pc2UtaW52YWxpZC1jb250ZXh0LWFjY2Vzcy5odG1sIFsgU2tpcCBdCiAK
KyMgT3ZlcnNjcm9sbC1iZWhhdmlvciBpcyBub3Qgc3VwcG9ydGVkIG9uIFdpbmRvd3MKK2Zhc3Qv
c2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC5odG1sIFsg
U2tpcCBdCitmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWlm
cmFtZS5odG1sIFsgU2tpcCBdCitmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xs
LWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWwgWyBTa2lwIF0KK2Zhc3Qvc2Nyb2xs
aW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5o
dG1sIFsgU2tpcCBdCisKICMgRGF0YWxpc3QgaXMgdW5zdXBwb3J0ZWQgb24gV2luZG93cwogYWNj
ZXNzaWJpbGl0eS9kYXRhbGlzdC5odG1sIFsgV29udEZpeCBdCiBmYXN0L2Zvcm1zL2RhdGFsaXN0
IFsgV29udEZpeCBdCg==
</data>
<flag name="commit-queue"
          id="477230"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450737</attachid>
            <date>2022-02-02 23:35:19 -0800</date>
            <delta_ts>2022-02-03 13:34:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222968-20220202233518.patch</filename>
            <type>text/plain</type>
            <size>39945</size>
            <attacher name="Nikos Mouchtaris">nmouchtaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4OTI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmViYTMyMjJlM2VmZjFk
MTI5NTRiNzA0YjFiNjJkMTA5NDk3OGU1Zi4uZDQyNDRmMzhkOTYzNzI1ZjgxNmNlOGRiZDI1OWJi
ZGJmNThjYTZmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDIyLTAyLTAyICBOaWtv
bGFvcyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxl
bWVudCBDU1Mgb3ZlcnNjcm9sbC1iZWhhdmlvciBmb3Igc3luY2hyb25vdXMgc2Nyb2xsCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI5NjgKKworICAg
ICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgVGVzdHM6IGZhc3Qvc2Ny
b2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC5odG1sCisgICAg
ICAgICAgICAgICBmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9y
LWlmcmFtZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1v
dmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWwKKyAgICAgICAgICAg
ICAgIGZhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3Jv
bGxhYmxlLWlmcmFtZS5odG1sCisKKyAgICAgICAgU3BsaXQgdXAgcGF0Y2ggYnkgQ2F0aGllIENo
ZW4gYW5kIEZyZWRlcmljIFdhbmcuIEFkZCBmdW5jdGlvbiBmb3IgYmxvY2tpbmcgc2Nyb2xsIGNo
YWluaW5nCisgICAgICAgIGFuZCBmaWx0ZXJpbmcgc2Nyb2xsIGRlbHRhIGRlcGVuZGluZyBvbiB0
aGUgdmFsdWVzIG9mIG92ZXJzY3JvbGwgYmVoYXZpb3IgZm9yIGEgc2Nyb2xsYWJsZQorICAgICAg
ICBhcmVhLiBUaGlzIHBhdGNoIGlzIGZvciBzeW5jaHJvbm91cyBzY3JvbGxpbmcgb25seS4KKwor
ICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudEludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OnNj
cm9sbFZpYU5vblBsYXRmb3JtRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVy
OjpoYW5kbGVXaGVlbEV2ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2luZ0JveCk6CisgICAgICAgIChX
ZWJDb3JlOjpFdmVudEhhbmRsZXI6OnNjcm9sbGFibGVBcmVhQ2FuSGFuZGxlRXZlbnQpOgorICAg
ICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmg6CisgICAgICAgICogcGFnZS9tYWMvRXZlbnRIYW5k
bGVyTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6ZmluZEVuY2xvc2luZ1Njcm9sbGFibGVDb250
YWluZXIpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjpl
dmVudEZvclByb3BhZ2F0aW9uIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxhYmxl
QXJlYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6ZGVsdGFGb3JQcm9w
YWdhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6c2hvdWxk
QmxvY2tTY3JvbGxQcm9wYWdhdGlvbiBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xs
YWJsZUFyZWEuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGFibGVBcmVhOjpob3Jpem9udGFs
T3ZlcnNjcm9sbEJlaGF2aW9yUHJldmVudHNQcm9wYWdhdGlvbiBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6dmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3JQcmV2ZW50
c1Byb3BhZ2F0aW9uIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3Rz
Q29udHJvbGxlci5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTWFjOjphbGxvd3NWZXJ0aWNhbFN0
cmV0Y2hpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JNYWM6OmFs
bG93c0hvcml6b250YWxTdHJldGNoaW5nIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMv
U2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxp
bmdFZmZlY3RzQ29udHJvbGxlcjo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwpOgor
CiAyMDIyLTAyLTAxICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbV1BdIFJlbW92ZSBQb3N0U2NyaXB0IGNvbnZlcnNpb24gY29kZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDI3NTE3YzIyZTc3MDllYWFlNTUxMjNmOTllZTY5N2Vk
NjY4NWE5MDEuLmVmOGNmMjIxMTJjYWI5YjE0Mjk2MTUzNDY3OTBkN2JjZTUzNGU1ZWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTMwMjcsMTEgKzMwMjcsMTcgQEAgYm9v
bCBFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnRJbnRlcm5hbChjb25zdCBQbGF0Zm9ybVdo
ZWVsRXZlbnQmIGV2ZW50LCBPcHQKICAgICBpZiAoYWxsb3dTY3JvbGxpbmcpCiAgICAgICAgIGFs
bG93U2Nyb2xsaW5nID0gbV9mcmFtZS5wYWdlKCktPnNjcm9sbExhdGNoaW5nQ29udHJvbGxlcigp
LmxhdGNoaW5nQWxsb3dzU2Nyb2xsaW5nSW5GcmFtZShtX2ZyYW1lLCBzY3JvbGxhYmxlQXJlYSk7
CiAjZW5kaWYKKyAgICBhdXRvIGFkanVzdGVkV2hlZWxFdmVudCA9IGV2ZW50OworICAgIGF1dG8g
ZmlsdGVyZWREZWx0YSA9IGFkanVzdGVkV2hlZWxFdmVudC5kZWx0YSgpOworICAgIGZpbHRlcmVk
RGVsdGEgPSB2aWV3LT5kZWx0YUZvclByb3BhZ2F0aW9uKGZpbHRlcmVkRGVsdGEpOworICAgIGlm
ICh2aWV3LT5zaG91bGRCbG9ja1Njcm9sbFByb3BhZ2F0aW9uKGZpbHRlcmVkRGVsdGEpKQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGlmIChhbGxvd1Njcm9sbGluZykgewogICAgICAgICAv
LyBGSVhNRTogcHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxpbmcoKSBpcyBvbmx5IGNhbGxlZCBm
b3IgRnJhbWVWaWV3IHNjcm9sbGluZywgbm90IG92ZXJmbG93IHNjcm9sbGluZywgd2hpY2ggaXMg
Y29uZnVzaW5nLgotICAgICAgICBoYW5kbGVkRXZlbnQgPSBwcm9jZXNzV2hlZWxFdmVudEZvclNj
cm9sbGluZyhldmVudCwgc2Nyb2xsYWJsZUFyZWEsIGhhbmRsaW5nKTsKLSAgICAgICAgcHJvY2Vz
c1doZWVsRXZlbnRGb3JTY3JvbGxTbmFwKGV2ZW50LCBzY3JvbGxhYmxlQXJlYSk7CisgICAgICAg
IGFkanVzdGVkV2hlZWxFdmVudCA9IGFkanVzdGVkV2hlZWxFdmVudC5jb3B5V2l0aERlbHRhQW5k
VmVsb2NpdHkoZmlsdGVyZWREZWx0YSwgYWRqdXN0ZWRXaGVlbEV2ZW50LnNjcm9sbGluZ1ZlbG9j
aXR5KCkpOworICAgICAgICBoYW5kbGVkRXZlbnQgPSBwcm9jZXNzV2hlZWxFdmVudEZvclNjcm9s
bGluZyhhZGp1c3RlZFdoZWVsRXZlbnQsIHNjcm9sbGFibGVBcmVhLCBoYW5kbGluZyk7CisgICAg
ICAgIHByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsU25hcChhZGp1c3RlZFdoZWVsRXZlbnQsIHNj
cm9sbGFibGVBcmVhKTsKICAgICB9CiAKICAgICByZXR1cm4gaGFuZGxlZEV2ZW50OwpAQCAtMzA1
MCwxOCArMzA1NiwxOSBAQCBzdGF0aWMgdm9pZCBoYW5kbGVXaGVlbEV2ZW50UGhhc2VJblNjcm9s
bGFibGVBcmVhKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYQogCiBzdGF0aWMgYm9vbCBz
Y3JvbGxWaWFOb25QbGF0Zm9ybUV2ZW50KFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSwg
Y29uc3QgV2hlZWxFdmVudCYgd2hlZWxFdmVudCkKIHsKKyAgICBhdXRvIGZpbHRlcmVkRGVsdGEg
PSBGbG9hdFNpemUod2hlZWxFdmVudC5kZWx0YVgoKSwgd2hlZWxFdmVudC5kZWx0YVkoKSk7Cisg
ICAgZmlsdGVyZWREZWx0YSA9IHNjcm9sbGFibGVBcmVhLmRlbHRhRm9yUHJvcGFnYXRpb24oZmls
dGVyZWREZWx0YSk7CiAgICAgU2Nyb2xsR3JhbnVsYXJpdHkgc2Nyb2xsR3JhbnVsYXJpdHkgPSB3
aGVlbEdyYW51bGFyaXR5VG9TY3JvbGxHcmFudWxhcml0eSh3aGVlbEV2ZW50LmRlbHRhTW9kZSgp
KTsKICAgICBib29sIGRpZEhhbmRsZVdoZWVsRXZlbnQgPSBmYWxzZTsKLSAgICBpZiAoZmxvYXQg
YWJzb2x1dGVEZWx0YSA9IHN0ZDo6YWJzKHdoZWVsRXZlbnQuZGVsdGFYKCkpKQotICAgICAgICBk
aWRIYW5kbGVXaGVlbEV2ZW50IHw9IHNjcm9sbGFibGVBcmVhLnNjcm9sbCh3aGVlbEV2ZW50LmRl
bHRhWCgpID4gMCA/IFNjcm9sbFJpZ2h0IDogU2Nyb2xsTGVmdCwgc2Nyb2xsR3JhbnVsYXJpdHks
IGFic29sdXRlRGVsdGEpOwotCi0gICAgaWYgKGZsb2F0IGFic29sdXRlRGVsdGEgPSBzdGQ6OmFi
cyh3aGVlbEV2ZW50LmRlbHRhWSgpKSkKLSAgICAgICAgZGlkSGFuZGxlV2hlZWxFdmVudCB8PSBz
Y3JvbGxhYmxlQXJlYS5zY3JvbGwod2hlZWxFdmVudC5kZWx0YVkoKSA+IDAgPyBTY3JvbGxEb3du
IDogU2Nyb2xsVXAsIHNjcm9sbEdyYW51bGFyaXR5LCBhYnNvbHV0ZURlbHRhKTsKKyAgICBpZiAo
ZmxvYXQgYWJzb2x1dGVEZWx0YSA9IHN0ZDo6YWJzKGZpbHRlcmVkRGVsdGEud2lkdGgoKSkpCisg
ICAgICAgIGRpZEhhbmRsZVdoZWVsRXZlbnQgfD0gc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsKGZpbHRl
cmVkRGVsdGEud2lkdGgoKSA+IDAgPyBTY3JvbGxSaWdodCA6IFNjcm9sbExlZnQsIHNjcm9sbEdy
YW51bGFyaXR5LCBhYnNvbHV0ZURlbHRhKTsKIAorICAgIGlmIChmbG9hdCBhYnNvbHV0ZURlbHRh
ID0gc3RkOjphYnMoZmlsdGVyZWREZWx0YS5oZWlnaHQoKSkpCisgICAgICAgIGRpZEhhbmRsZVdo
ZWVsRXZlbnQgfD0gc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsKGZpbHRlcmVkRGVsdGEuaGVpZ2h0KCkg
PiAwID8gU2Nyb2xsRG93biA6IFNjcm9sbFVwLCBzY3JvbGxHcmFudWxhcml0eSwgYWJzb2x1dGVE
ZWx0YSk7CiAgICAgcmV0dXJuIGRpZEhhbmRsZVdoZWVsRXZlbnQ7CiB9CiAKLWJvb2wgRXZlbnRI
YW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2luZ0JveChOb2RlKiBz
dGFydE5vZGUsIGNvbnN0IFdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIGNvbnN0IEZsb2F0U2l6ZSYg
ZmlsdGVyZWRQbGF0Zm9ybURlbHRhLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlcmVkVmVsb2NpdHks
IE9wdGlvblNldDxFdmVudEhhbmRsaW5nPiBldmVudEhhbmRsaW5nKQorYm9vbCBFdmVudEhhbmRs
ZXI6OmhhbmRsZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94KE5vZGUqIHN0YXJ0
Tm9kZSwgY29uc3QgV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgRmxvYXRTaXplJiBmaWx0ZXJlZFBs
YXRmb3JtRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyZWRWZWxvY2l0eSwgT3B0aW9uU2V0
PEV2ZW50SGFuZGxpbmc+IGV2ZW50SGFuZGxpbmcpCiB7CiAgICAgYm9vbCBzaG91bGRIYW5kbGVF
dmVudCA9IHdoZWVsRXZlbnQuZGVsdGFYKCkgfHwgd2hlZWxFdmVudC5kZWx0YVkoKTsKICNpZiBF
TkFCTEUoV0hFRUxfRVZFTlRfTEFUQ0hJTkcpCkBAIC0zMDkxLDYgKzMwOTgsMTIgQEAgYm9vbCBF
dmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94KE5v
ZGUqIHN0YXJ0Tm9kZSwgY28KICAgICB9OwogCiAgICAgUmVuZGVyQm94KiBjdXJyZW50RW5jbG9z
aW5nQm94ID0gJmluaXRpYWxFbmNsb3NpbmdCb3g7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIGF1
dG8gYmlhc2VkRGVsdGEgPSBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6d2hlZWxEZWx0YUJp
YXNpbmdUb3dhcmRzVmVydGljYWwoRmxvYXRTaXplKHdoZWVsRXZlbnQuZGVsdGFYKCksIHdoZWVs
RXZlbnQuZGVsdGFZKCkpKTsKKyNlbHNlCisgICAgYXV0byBiaWFzZWREZWx0YSA9IEZsb2F0U2l6
ZSh3aGVlbEV2ZW50LmRlbHRhWCgpLCB3aGVlbEV2ZW50LmRlbHRhWSgpKTsKKyNlbmRpZgorICAg
IAogICAgIHdoaWxlIChjdXJyZW50RW5jbG9zaW5nQm94KSB7CiAgICAgICAgIGlmIChhdXRvKiBi
b3hTY3JvbGxhYmxlQXJlYSA9IHNjcm9sbGFibGVBcmVhRm9yQm94KCpjdXJyZW50RW5jbG9zaW5n
Qm94KSkgewogICAgICAgICAgICAgYXV0byBwbGF0Zm9ybUV2ZW50ID0gd2hlZWxFdmVudC51bmRl
cmx5aW5nUGxhdGZvcm1FdmVudCgpOwpAQCAtMzEwMyw2ICszMTE2LDEwIEBAIGJvb2wgRXZlbnRI
YW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2luZ0JveChOb2RlKiBz
dGFydE5vZGUsIGNvCiAKICAgICAgICAgICAgIGlmIChzY3JvbGxpbmdXYXNIYW5kbGVkKQogICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgCisgICAgICAgICAgICBiaWFz
ZWREZWx0YSA9IGJveFNjcm9sbGFibGVBcmVhLT5kZWx0YUZvclByb3BhZ2F0aW9uKGJpYXNlZERl
bHRhKTsKKyAgICAgICAgICAgIGlmIChib3hTY3JvbGxhYmxlQXJlYS0+c2hvdWxkQmxvY2tTY3Jv
bGxQcm9wYWdhdGlvbihiaWFzZWREZWx0YSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgIH0KIAogICAgICAgICBjdXJyZW50RW5jbG9zaW5nQm94ID0gY3VycmVudEVuY2xv
c2luZ0JveC0+Y29udGFpbmluZ0Jsb2NrKCk7CkBAIC0zMTE1LDcgKzMxMzIsNyBAQCBib29sIEV2
ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudEluQXBwcm9wcmlhdGVFbmNsb3NpbmdCb3goTm9k
ZSogc3RhcnROb2RlLCBjbwogYm9vbCBFdmVudEhhbmRsZXI6OnNjcm9sbGFibGVBcmVhQ2FuSGFu
ZGxlRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBTY3JvbGxhYmxl
QXJlYSYgc2Nyb2xsYWJsZUFyZWEpCiB7CiAjaWYgUExBVEZPUk0oTUFDKQotICAgIGF1dG8gYmlh
c2VkRGVsdGEgPSBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6d2hlZWxEZWx0YUJpYXNpbmdU
b3dhcmRzVmVydGljYWwod2hlZWxFdmVudCk7CisgICAgYXV0byBiaWFzZWREZWx0YSA9IFNjcm9s
bGluZ0VmZmVjdHNDb250cm9sbGVyOjp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbCh3
aGVlbEV2ZW50LmRlbHRhKCkpOwogI2Vsc2UKICAgICBhdXRvIGJpYXNlZERlbHRhID0gd2hlZWxF
dmVudC5kZWx0YSgpOwogI2VuZGlmCkBAIC0zMTI3LDYgKzMxNDQsOCBAQCBib29sIEV2ZW50SGFu
ZGxlcjo6c2Nyb2xsYWJsZUFyZWFDYW5IYW5kbGVFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZl
bnQmIHdoZWVsRQogICAgIGF1dG8gaG9yaXpvbnRhbFNpZGUgPSBTY3JvbGxhYmxlQXJlYTo6dGFy
Z2V0U2lkZUZvclNjcm9sbERlbHRhKC1iaWFzZWREZWx0YSwgU2Nyb2xsRXZlbnRBeGlzOjpIb3Jp
em9udGFsKTsKICAgICBpZiAoaG9yaXpvbnRhbFNpZGUgJiYgIXNjcm9sbGFibGVBcmVhLmlzUGlu
bmVkT25TaWRlKCpob3Jpem9udGFsU2lkZSkpCiAgICAgICAgIHJldHVybiB0cnVlOworICAgIGlm
IChzY3JvbGxhYmxlQXJlYS5zaG91bGRCbG9ja1Njcm9sbFByb3BhZ2F0aW9uKGJpYXNlZERlbHRh
KSAmJiBzY3JvbGxhYmxlQXJlYS5vdmVyc2Nyb2xsQmVoYXZpb3JBbGxvd3NSdWJiZXJCYW5kKCkp
CisgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgcmV0dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRIYW5kbGVyLmgKaW5kZXggNmIzNTllNzU1NmEyZDZhMTQ4NWUwNGU4YzIwZmE1ZjQ3
MGM1YTA0YS4uZWE0MzQ4ODkxMTU0OTIxNTg4NjM1M2ZlZTY4NmFmZmU3MzJiYTM2NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCkBAIC00NzUsNyArNDc1LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsU25hcChjb25zdCBQbGF0Zm9ybVdoZWVs
RXZlbnQmLCBjb25zdCBXZWFrUHRyPFNjcm9sbGFibGVBcmVhPiYpOwogICAgIGJvb2wgY29tcGxl
dGVXaWRnZXRXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIGNvbnN0IFdlYWtQ
dHI8V2lkZ2V0PiYsIGNvbnN0IFdlYWtQdHI8U2Nyb2xsYWJsZUFyZWE+Jik7CiAKLSAgICBib29s
IGhhbmRsZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94KE5vZGUqIHN0YXJ0Tm9k
ZSwgY29uc3QgV2hlZWxFdmVudCYsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyZWRQbGF0Zm9ybURl
bHRhLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlcmVkVmVsb2NpdHksIE9wdGlvblNldDxFdmVudEhh
bmRsaW5nPik7CisgICAgYm9vbCBoYW5kbGVXaGVlbEV2ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2lu
Z0JveChOb2RlKiBzdGFydE5vZGUsIGNvbnN0IFdoZWVsRXZlbnQmLCBGbG9hdFNpemUmIGZpbHRl
cmVkUGxhdGZvcm1EZWx0YSwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJlZFZlbG9jaXR5LCBPcHRp
b25TZXQ8RXZlbnRIYW5kbGluZz4pOwogCiAgICAgYm9vbCBoYW5kbGVXaGVlbEV2ZW50SW5TY3Jv
bGxhYmxlQXJlYShjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBTY3JvbGxhYmxlQXJlYSYsIE9w
dGlvblNldDxFdmVudEhhbmRsaW5nPik7CiAgICAgc3RkOjpvcHRpb25hbDxXaGVlbFNjcm9sbEdl
c3R1cmVTdGF0ZT4gdXBkYXRlV2hlZWxHZXN0dXJlU3RhdGUoY29uc3QgUGxhdGZvcm1XaGVlbEV2
ZW50JiwgT3B0aW9uU2V0PEV2ZW50SGFuZGxpbmc+KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFj
L0V2ZW50SGFuZGxlck1hYy5tbQppbmRleCA1NjdmMWVlMjIzNzYzNmY5YjMwODBhODkxMjViNDQ3
MWUxMjYwZjdjLi5iNzBjOTA0NWY0MmJjZWE0MWI3ZTJhNTRmMDBmNDZkODQ3MzAyNTIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tCkBAIC04MTUsNyArODE1
LDEwIEBAIHN0YXRpYyBDb250YWluZXJOb2RlKiBmaW5kRW5jbG9zaW5nU2Nyb2xsYWJsZUNvbnRh
aW5lcihDb250YWluZXJOb2RlKiBub2RlLCBjb25zCiAgICAgICAgIGF1dG8qIHNjcm9sbGFibGVB
cmVhID0gc2Nyb2xsYWJsZUFyZWFGb3JCb3goKmJveCk7CiAgICAgICAgIGlmICghc2Nyb2xsYWJs
ZUFyZWEpCiAgICAgICAgICAgICBjb250aW51ZTsKLQorICAgICAgICAKKyAgICAgICAgaWYgKHNj
cm9sbGFibGVBcmVhLT5zaG91bGRCbG9ja1Njcm9sbFByb3BhZ2F0aW9uKHdoZWVsRXZlbnQuZGVs
dGEoKSkpCisgICAgICAgICAgICByZXR1cm4gY2FuZGlkYXRlOworICAgICAgICAKICAgICAgICAg
aWYgKHdoZWVsRXZlbnQucGhhc2UoKSA9PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZTo6TWF5QmVn
aW4gfHwgd2hlZWxFdmVudC5waGFzZSgpID09IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlOjpDYW5j
ZWxsZWQpCiAgICAgICAgICAgICByZXR1cm4gY2FuZGlkYXRlOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZS5jcHAKaW5kZXggZjMzODZmY2M1NWFiZmFjMWFlOGEwNjdmMzQxOGY0YjNkZTNjYjk0NS4uYmZl
Zjk5YWU2NmNhMDBlYWIwYjQwYTg0YzhiYzBmNjNmOWVhODRkZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlLmNwcApAQCAtMTI4LDcgKzEyOCw3IEBAIGJvb2wgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGU6OnNob3VsZFJ1YmJlckJhbmQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlCiAgICAg
Ly8gVGhlIHN0YXRlbGVzcyB3aGVlbCBldmVudCBkb2Vzbid0IHRyaWdnZXIgcnViYmVyLWJhbmQu
CiAgICAgLy8gQWxzbyBydWJiZXJiYW5kIHdoZW4gd2Ugc2hvdWxkIGJsb2NrIHNjcm9sbCBwcm9w
YWdhdGlvbgogICAgIC8vIGF0IHRoaXMgbm9kZSwgd2hpY2ggaGFzIG92ZXJzY3JvbGwgYmVoYXZp
b3IgdGhhdCBpcyBub3Qgbm9uZS4KLSAgICByZXR1cm4gKGlzTGF0Y2hlZE5vZGUoKSB8fCBldmVu
dFRhcmdldGluZyA9PSBFdmVudFRhcmdldGluZzo6Tm9kZU9ubHkgfHwgKGlzUm9vdE5vZGUoKSAm
JiAhd2hlZWxFdmVudC5pc05vbkdlc3R1cmVFdmVudCgpKSB8fCAoc2hvdWxkQmxvY2tTY3JvbGxQ
cm9wYWdhdGlvbih3aGVlbEV2ZW50LmRlbHRhKCkpICYmIG92ZXJzY3JvbGxCZWhhdmlvckFsbG93
UnViYmVyQmFuZCgpKSk7CisgICAgcmV0dXJuIChpc0xhdGNoZWROb2RlKCkgfHwgZXZlbnRUYXJn
ZXRpbmcgPT0gRXZlbnRUYXJnZXRpbmc6Ok5vZGVPbmx5IHx8IChpc1Jvb3ROb2RlKCkgJiYgIXdo
ZWVsRXZlbnQuaXNOb25HZXN0dXJlRXZlbnQoKSkgfHwgKHNob3VsZEJsb2NrU2Nyb2xsUHJvcGFn
YXRpb24od2hlZWxFdmVudC5kZWx0YSgpKSAmJiBvdmVyc2Nyb2xsQmVoYXZpb3JBbGxvd3NSdWJi
ZXJCYW5kKCkpKTsKIH0KIAogYm9vbCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6Y2FuSGFu
ZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIEV2ZW50
VGFyZ2V0aW5nIGV2ZW50VGFyZ2V0aW5nKSBjb25zdApAQCAtNDA0LDcgKzQwNCw3IEBAIFBsYXRm
b3JtV2hlZWxFdmVudCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6ZXZlbnRGb3JQcm9wYWdh
dGlvbihjb25zdCBQbGF0Zm9yCiB7CiAgICAgYXV0byBmaWx0ZXJlZERlbHRhID0gd2hlZWxFdmVu
dC5kZWx0YSgpOwogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBhdXRvIGJpYXNlZERlbHRhID0gU2Ny
b2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OndoZWVsRGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRpY2Fs
KHdoZWVsRXZlbnQpOworICAgIGF1dG8gYmlhc2VkRGVsdGEgPSBTY3JvbGxpbmdFZmZlY3RzQ29u
dHJvbGxlcjo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwod2hlZWxFdmVudC5kZWx0
YSgpKTsKICNlbHNlCiAgICAgYXV0byBiaWFzZWREZWx0YSA9IHdoZWVsRXZlbnQuZGVsdGEoKTsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmgKaW5kZXggODBhNWUxZGUzYmNjOWUwMTVhMGEyMDc0
ZTQyZDUxNmIyNDc4MDY1Ny4uZDE2ZGNjNGYzM2MxNTM0ZTUwODkzMmM0ZDU1ZDVmNjI2NmVjZWY4
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oCkBAIC0xNjUsNyArMTY1LDcgQEAgcHJvdGVjdGVkOgog
ICAgIGJvb2wgdmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3JQcmV2ZW50c1Byb3BhZ2F0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMudmVydGljYWxPdmVyc2Ny
b2xsQmVoYXZpb3IgIT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpBdXRvOyB9CiAgICAgUGxhdGZvcm1X
aGVlbEV2ZW50IGV2ZW50Rm9yUHJvcGFnYXRpb24oY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jikg
Y29uc3Q7CiAgICAgYm9vbCBzaG91bGRCbG9ja1Njcm9sbFByb3BhZ2F0aW9uKGNvbnN0IEZsb2F0
U2l6ZSYpIGNvbnN0OwotICAgIGJvb2wgb3ZlcnNjcm9sbEJlaGF2aW9yQWxsb3dSdWJiZXJCYW5k
KCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMuaG9yaXpvbnRhbE92
ZXJzY3JvbGxCZWhhdmlvciAhPSBPdmVyc2Nyb2xsQmVoYXZpb3I6Ok5vbmUgfHwgIG1fc2Nyb2xs
YWJsZUFyZWFQYXJhbWV0ZXJzLnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yICE9IE92ZXJzY3Jv
bGxCZWhhdmlvcjo6Tm9uZTsgfQorICAgIGJvb2wgb3ZlcnNjcm9sbEJlaGF2aW9yQWxsb3dzUnVi
YmVyQmFuZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzLmhvcml6
b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IgIT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpOb25lIHx8ICBt
X3Njcm9sbGFibGVBcmVhUGFyYW1ldGVycy52ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvciAhPSBP
dmVyc2Nyb2xsQmVoYXZpb3I6Ok5vbmU7IH0KICAgICBib29sIHNob3VsZFJ1YmJlckJhbmQoY29u
c3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgRXZlbnRUYXJnZXRpbmcpIGNvbnN0OwogICAgIHZvaWQg
ZHVtcFByb3BlcnRpZXMoV1RGOjpUZXh0U3RyZWFtJiwgT3B0aW9uU2V0PFNjcm9sbGluZ1N0YXRl
VHJlZUFzVGV4dEJlaGF2aW9yPikgY29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcAppbmRleCAxNGJiN2FmMDk1M2UwNmNiYzQ2N2U2NmFk
MDFmMmYzZTBlNDk2NmVjLi45ZTYxYmQ3ZWVkZmM1MDRmYzZjOGVlYjExMjU4MjY0NWI2MGQxYmNm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwCkBAIC04MDcs
NCArODA3LDIyIEBAIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0
IFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSkKICAgICByZXR1cm4gdHM7CiB9CiAKK0Zs
b2F0U2l6ZSBTY3JvbGxhYmxlQXJlYTo6ZGVsdGFGb3JQcm9wYWdhdGlvbihjb25zdCBGbG9hdFNp
emUmIGJpYXNlZERlbHRhKSBjb25zdAoreworICAgIGF1dG8gZmlsdGVyZWREZWx0YSA9IGJpYXNl
ZERlbHRhOworICAgIGlmIChob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yUHJldmVudHNQcm9w
YWdhdGlvbigpKQorICAgICAgICBmaWx0ZXJlZERlbHRhLnNldFdpZHRoKDApOworICAgIGlmICh2
ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvclByZXZlbnRzUHJvcGFnYXRpb24oKSkKKyAgICAgICAg
ZmlsdGVyZWREZWx0YS5zZXRIZWlnaHQoMCk7CisgICAgcmV0dXJuIGZpbHRlcmVkRGVsdGE7Cit9
CisKK2Jvb2wgU2Nyb2xsYWJsZUFyZWE6OnNob3VsZEJsb2NrU2Nyb2xsUHJvcGFnYXRpb24oY29u
c3QgRmxvYXRTaXplJiBiaWFzZWREZWx0YSkgY29uc3QKK3sKKyAgICByZXR1cm4gKChob3Jpem9u
dGFsT3ZlcnNjcm9sbEJlaGF2aW9yUHJldmVudHNQcm9wYWdhdGlvbigpIHx8IHZlcnRpY2FsT3Zl
cnNjcm9sbEJlaGF2aW9yUHJldmVudHNQcm9wYWdhdGlvbigpKQorICAgICAgICAmJiAoKGhvcml6
b250YWxPdmVyc2Nyb2xsQmVoYXZpb3JQcmV2ZW50c1Byb3BhZ2F0aW9uKCkgJiYgdmVydGljYWxP
dmVyc2Nyb2xsQmVoYXZpb3JQcmV2ZW50c1Byb3BhZ2F0aW9uKCkpCisgICAgICAgIHx8IChob3Jp
em9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yUHJldmVudHNQcm9wYWdhdGlvbigpICYmICFiaWFzZWRE
ZWx0YS5oZWlnaHQoKSkgfHwgKHZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yUHJldmVudHNQcm9w
YWdhdGlvbigpCisgICAgICAgICYmICFiaWFzZWREZWx0YS53aWR0aCgpKSkpOworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxhYmxlQXJlYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEu
aAppbmRleCBhMzZlMTk4YzY5NWIxYjg0NjVhYzA1MGZlMWMzNGE2OGUxZTk4NWFlLi4yYmRjMThh
MTk4ODAwNGZhZmMyMzc1NzJkYWYyOTI3MjkxZWQ4ZGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbGFibGVBcmVhLmgKQEAgLTM3Myw2ICszNzMsMTIgQEAgcHVibGljOgogICAgIH0K
IAogICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydFNjcm9sbEFuaW1hdGlvbigpIHsgfQorICAgIAor
ICAgIGJvb2wgaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvclByZXZlbnRzUHJvcGFnYXRpb24o
KSBjb25zdCB7IHJldHVybiBob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgIT0gT3ZlcnNj
cm9sbEJlaGF2aW9yOjpBdXRvOyB9CisgICAgYm9vbCB2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlv
clByZXZlbnRzUHJvcGFnYXRpb24oKSBjb25zdCB7IHJldHVybiB2ZXJ0aWNhbE92ZXJzY3JvbGxC
ZWhhdmlvcigpICE9IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0bzsgfQorICAgIGJvb2wgb3ZlcnNj
cm9sbEJlaGF2aW9yQWxsb3dzUnViYmVyQmFuZCgpIGNvbnN0IHsgcmV0dXJuIGhvcml6b250YWxP
dmVyc2Nyb2xsQmVoYXZpb3IoKSAhPSBPdmVyc2Nyb2xsQmVoYXZpb3I6Ok5vbmUgfHwgdmVydGlj
YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSAhPSBPdmVyc2Nyb2xsQmVoYXZpb3I6Ok5vbmU7IH0KKyAg
ICBib29sIHNob3VsZEJsb2NrU2Nyb2xsUHJvcGFnYXRpb24oY29uc3QgRmxvYXRTaXplJikgY29u
c3Q7CisgICAgRmxvYXRTaXplIGRlbHRhRm9yUHJvcGFnYXRpb24oY29uc3QgRmxvYXRTaXplJikg
Y29uc3Q7CiAKIHByb3RlY3RlZDoKICAgICBXRUJDT1JFX0VYUE9SVCBTY3JvbGxhYmxlQXJlYSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0Nv
bnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHNDb250
cm9sbGVyLmgKaW5kZXggYjc4ZjY2NGI4Mjg2NTliNWE3OWI2NjQ3YjYzOTRhMjVkYWMzZmZlNy4u
MWY5NDI4YzJiYTM0MzBhZmJlYzgwMTA2YjhmOTFhZDUzNjIwNGUxYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5oCkBAIC0x
NzQsNyArMTc0LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNVc2VyU2Nyb2xsSW5Qcm9ncmVzcygp
IGNvbnN0OwogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIHN0YXRpYyBGbG9hdFNpemUgd2hlZWxE
ZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jik7Cisg
ICAgc3RhdGljIEZsb2F0U2l6ZSB3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbChjb25z
dCBGbG9hdFNpemUmKTsKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBoYW5kbGVkLgogICAgIGJv
b2wgcHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxTbmFwKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVu
dCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1h
dG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFj
Lm1tCmluZGV4IGFiOGI3Zjc2M2M1YmYxZWEzNTEzNzJhNGJmMDhhMDkzMmE3YzFlOTEuLjA3MGY0
ZDg2MjNlMDQ1NTUxZWY5ZjAxNmYxNWQxZmVlN2JiZTMzMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0KQEAgLTEwNSw2ICsxMDUsOSBA
QCBzdGF0aWMgYm9vbCBnZXN0dXJlU2hvdWxkQmVnaW5TbmFwKGNvbnN0IFBsYXRmb3JtV2hlZWxF
dmVudCYgd2hlZWxFdmVudCwgU2Nyb2xsRQogCiBib29sIFNjcm9sbEFuaW1hdG9yTWFjOjphbGxv
d3NWZXJ0aWNhbFN0cmV0Y2hpbmcoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50
KSBjb25zdAogeworICAgIGlmIChtX3Njcm9sbGFibGVBcmVhLnZlcnRpY2FsT3ZlcnNjcm9sbEJl
aGF2aW9yKCkgPT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpOb25lKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgCiAgICAgc3dpdGNoIChtX3Njcm9sbGFibGVBcmVhLnZlcnRpY2FsU2Nyb2xsRWxh
c3RpY2l0eSgpKSB7CiAgICAgY2FzZSBTY3JvbGxFbGFzdGljaXR5OjpBdXRvbWF0aWM6IHsKICAg
ICAgICAgU2Nyb2xsYmFyKiBoU2Nyb2xsZXIgPSBtX3Njcm9sbGFibGVBcmVhLmhvcml6b250YWxT
Y3JvbGxiYXIoKTsKQEAgLTEyOCw2ICsxMzEsOSBAQCBib29sIFNjcm9sbEFuaW1hdG9yTWFjOjph
bGxvd3NWZXJ0aWNhbFN0cmV0Y2hpbmcoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbAog
CiBib29sIFNjcm9sbEFuaW1hdG9yTWFjOjphbGxvd3NIb3Jpem9udGFsU3RyZXRjaGluZyhjb25z
dCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpIGNvbnN0CiB7CisgICAgaWYgKG1fc2Ny
b2xsYWJsZUFyZWEuaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpID09IE92ZXJzY3JvbGxC
ZWhhdmlvcjo6Tm9uZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAogICAgIHN3aXRjaCAo
bV9zY3JvbGxhYmxlQXJlYS5ob3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eSgpKSB7CiAgICAgY2Fz
ZSBTY3JvbGxFbGFzdGljaXR5OjpBdXRvbWF0aWM6IHsKICAgICAgICAgU2Nyb2xsYmFyKiBoU2Ny
b2xsZXIgPSBtX3Njcm9sbGFibGVBcmVhLmhvcml6b250YWxTY3JvbGxiYXIoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxl
ci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxpbmdFZmZlY3RzQ29udHJv
bGxlci5tbQppbmRleCAzY2MzZDI0ZmE5MDlkOWNlZGE4ZTMyZjg2NDMyMTMyNTcwYTcxOGY5Li44
MDhlZDU1ODJhMjgyNmJhMGU3ZmJlZDY5NDU3NjFkZjQyMjFhYmM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVy
Lm1tCkBAIC0zNDUsOSArMzQ1LDkgQEAgYm9vbCBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6
YXBwbHlTY3JvbGxEZWx0YVdpdGhTdHJldGNoaW5nKGNvbnN0IFBsYXRmb3JtV2gKICAgICByZXR1
cm4gY2FuU3RhcnRBbmltYXRpb247CiB9CiAKLUZsb2F0U2l6ZSBTY3JvbGxpbmdFZmZlY3RzQ29u
dHJvbGxlcjo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoY29uc3QgUGxhdGZvcm1X
aGVlbEV2ZW50JiB3aGVlbEV2ZW50KQorRmxvYXRTaXplIFNjcm9sbGluZ0VmZmVjdHNDb250cm9s
bGVyOjp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbChjb25zdCBGbG9hdFNpemUmIHdo
ZWVsRGVsdGEpCiB7Ci0gICAgcmV0dXJuIGRlbHRhQWxpZ25lZFRvRG9taW5hbnRBeGlzKHdoZWVs
RXZlbnQuZGVsdGEoKSk7CisgICAgcmV0dXJuIGRlbHRhQWxpZ25lZFRvRG9taW5hbnRBeGlzKHdo
ZWVsRGVsdGEpOwogfQogCiB2b2lkIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjp1cGRhdGVS
dWJiZXJCYW5kQW5pbWF0aW5nU3RhdGUoKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDUwZjZhNTJlYTUwMWE3NzY3YTQ5Nzky
Yjk3ZTA3NGE3MzYyMTZiZTAuLjRjYjVhZGZkYmY0MTIwMWVlZDBmNGFhMDcxZGUzODM0OGY0N2U5
ZWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAyMi0wMi0wMiAgTmlrb2xhb3MgTW91Y2h0YXJp
cyAgPG5tb3VjaHRhcmlzQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgQ1NTIG92ZXJz
Y3JvbGwtYmVoYXZpb3IgZm9yIHN5bmNocm9ub3VzIHNjcm9sbAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyOTY4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgU2ltb24gRnJhc2VyLgorCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwt
b3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJz
Y3JvbGwtYmVoYXZpb3ItaWZyYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFz
dC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1i
ZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGZhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3Jv
bGxhYmxlLWVsZW1lbnQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvc3lu
Yy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNj
cm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IHBsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9ybS93
aW4vVGVzdEV4cGVjdGF0aW9uczoKKwogMjAyMi0wMi0wMSAgQWxhbiBCdWp0YXMgIDx6YWxhbkBh
cHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSUZDXSBVc2luZyBGb250Y2FzY2FkZTo6c3BhY2VX
aWR0aCB0byBzdWJ0cmFjdCB0aGUgdHJhaWxpbmcgc3BhY2Ugd2lkdGggbWF5IHJlc3VsdCBpbiBp
bmNvcnJlY3QgbGF5b3V0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9z
eW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1l
bGVtZW50LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNzE1MGZmNjBiNWRiZGQwYjRhN2FjNmY4
M2ZiNTZmNTdjZDJjZDgyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3Jv
bGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50LWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDIwIEBACisKK1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0
IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBhdXRvLgorUEFTUyBFbGVtZW50IHZlcnRp
Y2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBhdXRvLgorUEFT
UyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9y
OiBjb250YWluIGF1dG8uCitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBv
dmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGF1dG8uCitQQVNTIEVsZW1lbnQgaG9yaXpvbnRh
bCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgYXV0by4KK1BBU1Mg
RWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5v
bmUgYXV0by4KK1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNj
cm9sbC1iZWhhdmlvcjogYXV0byBjb250YWluLgorUEFTUyBFbGVtZW50IHZlcnRpY2FsIHNjcm9s
bCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBjb250YWluLgorUEFTUyBFbGVt
ZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250
YWluIGNvbnRhaW4uCitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVy
c2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGNvbnRhaW4uCitQQVNTIEVsZW1lbnQgaG9yaXpvbnRh
bCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgY29udGFpbi4KK1BB
U1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6
IG5vbmUgY29udGFpbi4KK1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGgg
b3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBub25lLgorUEFTUyBFbGVtZW50IHZlcnRpY2FsIHNj
cm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBub25lLgorUEFTUyBFbGVt
ZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250
YWluIG5vbmUuCitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Ny
b2xsLWJlaGF2aW9yOiBjb250YWluIG5vbmUuCitQQVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBzY3Jv
bGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgbm9uZS4KK1BBU1MgRWxlbWVu
dCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgbm9u
ZS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwt
b3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9s
bGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4xOTRiYzViYjg1ZGI1NzU2NTQzMmZmZTcyZTQwNjM4NTg4NjU5NjVhCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9s
bC1iZWhhdmlvci1lbGVtZW50Lmh0bWwKQEAgLTAsMCArMSw4NiBAQAorPCFkb2N0eXBlIGh0bWw+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXN1cHBvcnQu
anMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL2RyYWZ0cy5jc3N3
Zy5vcmcvY3NzLW92ZXJzY3JvbGwtYmVoYXZpb3IiPgorPHN0eWxlPgorICAgIC5zY3JvbGxpbmcg
eworICAgICAgICBvdmVyZmxvdzogc2Nyb2xsOworICAgIH0KKyAgICAuc2Nyb2xsQ29udGVudCB7
CisgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICB9Cisg
ICAgI3Jvb3QgeworICAgICAgICB3aWR0aDogMjAwcHg7CisgICAgICAgIGhlaWdodDogMjAwcHg7
CisgICAgfQorICAgICNzY3JvbGxlciB7CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAg
aGVpZ2h0OiAxMDBweDsKKyAgICB9Cis8L3N0eWxlPgorPGRpdiBpZD0ncm9vdCcgY2xhc3M9InNj
cm9sbGluZyI+CisgICAgPGRpdiBpZD0nc2Nyb2xsZXInIGNsYXNzPSJzY3JvbGxpbmciPgorICAg
ICAgICA8ZGl2IGNsYXNzPSJzY3JvbGxDb250ZW50Ij48L2Rpdj4KKyAgICA8L2Rpdj4KKyAgICA8
ZGl2IGNsYXNzPSJzY3JvbGxDb250ZW50Ij48L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0PgorY29u
c3Qgcm9vdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyb290Jyk7Citjb25zdCBzY3JvbGxl
ciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY3JvbGxlcicpOwordmFyIG92ZXJzY3JvbGxE
YXRhcyA9IFtbImF1dG8iLCAiYXV0byIsIHRydWUsIHRydWVdLAorICAgICAgICAgICAgICAgICAg
ICAgICAgWyJjb250YWluIiwgImF1dG8iLCBmYWxzZSwgdHJ1ZV0sCisgICAgICAgICAgICAgICAg
ICAgICAgICBbIm5vbmUiLCAiYXV0byIsIGZhbHNlLCB0cnVlXSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIFsiYXV0byIsICJjb250YWluIiwgdHJ1ZSwgZmFsc2VdLAorICAgICAgICAgICAgICAg
ICAgICAgICAgWyJjb250YWluIiwgImNvbnRhaW4iLCBmYWxzZSwgZmFsc2VdLAorICAgICAgICAg
ICAgICAgICAgICAgICAgWyJub25lIiwgImNvbnRhaW4iLCBmYWxzZSwgZmFsc2VdLAorICAgICAg
ICAgICAgICAgICAgICAgICAgWyJhdXRvIiwgIm5vbmUiLCB0cnVlLCBmYWxzZV0sCisgICAgICAg
ICAgICAgICAgICAgICAgICBbImNvbnRhaW4iLCAibm9uZSIsIGZhbHNlLCBmYWxzZV0sCisgICAg
ICAgICAgICAgICAgICAgICAgICBbIm5vbmUiLCAibm9uZSIsIGZhbHNlLCBmYWxzZV1dOworCitm
dW5jdGlvbiByZXNldFRlc3QoKSB7CisgICAgLy8gVHJ5IHZhcmlvdXMgbWV0aG9kcyB0byBlbnN1
cmUgdGhlIGVsZW1lbnQgcG9zaXRpb24gaXMgcmVzZXQgaW1tZWRpYXRlbHkuCisgICAgc2Nyb2xs
ZXIuc2Nyb2xsTGVmdCA9IDMwMDsKKyAgICBzY3JvbGxlci5zY3JvbGxUb3AgPSAzMDA7CisgICAg
c2Nyb2xsZXIuc2Nyb2xsVG8oMzAwLCAzMDApOworCisgICAgcm9vdC5zY3JvbGxMZWZ0ID0gMDsK
KyAgICByb290LnNjcm9sbFRvcCA9IDA7CisgICAgcm9vdC5zY3JvbGxUbygwLCAwKTsKK30KKwor
ZnVuY3Rpb24gc3RhcnRUZXN0KCkgeworICAgIG92ZXJzY3JvbGxEYXRhcy5mb3JFYWNoKChbb3Zl
cnNjcm9sbFgsIG92ZXJzY3JvbGxZLCBwcm9wYWdhdGVYLCBwcm9wYWdhdGVZXSkgPT4geworICAg
ICAgICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgICAgICAgICAgcmVzZXRUZXN0KCk7CisgICAg
ICAgICAgICBzY3JvbGxlci5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JYID0gb3ZlcnNjcm9sbFg7
CisgICAgICAgICAgICBzY3JvbGxlci5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JZID0gb3ZlcnNj
cm9sbFk7CisgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoOworCisgICAgICAg
ICAgICB2YXIgeCA9IHNjcm9sbGVyLmNsaWVudFdpZHRoIC8gMjsKKyAgICAgICAgICAgIHZhciB5
ID0gc2Nyb2xsZXIuY2xpZW50SGVpZ2h0IC8gMjsKKyAgICAgICAgICAgIHZhciBkZWx0YSA9IGdl
dERlbHRhcygicmlnaHQiKTsKKyAgICAgICAgICAgIHJldHVybiBtb3VzZVdoZWVsU2Nyb2xsQW5k
V2FpdCh4LCB5LCBkZWx0YS5YLCBkZWx0YS5ZLCBkZWx0YS5YLCBkZWx0YS5ZKS50aGVuKCgpID0+
IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsTGVmdCA+IDAsIHBy
b3BhZ2F0ZVgsICdQcm9wYWdhdGUgaG9yaXpvbnRhbCBzY3JvbGwnKTsKKyAgICAgICAgICAgIH0p
OworICAgICAgICB9LCAnRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNj
cm9sbC1iZWhhdmlvcjogJyArIG92ZXJzY3JvbGxYICsgJyAnICsgb3ZlcnNjcm9sbFkgKyAnLicp
OworCisgICAgICAgIHByb21pc2VfdGVzdCgoKSA9PiB7CisgICAgICAgICAgICByZXNldFRlc3Qo
KTsKKyAgICAgICAgICAgIHNjcm9sbGVyLnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclggPSBvdmVy
c2Nyb2xsWDsKKyAgICAgICAgICAgIHNjcm9sbGVyLnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclkg
PSBvdmVyc2Nyb2xsWTsKKworICAgICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0
aCAvIDI7CisgICAgICAgICAgICB2YXIgeSA9IHNjcm9sbGVyLmNsaWVudEhlaWdodCAvIDI7Cisg
ICAgICAgICAgICB2YXIgZGVsdGEgPSBnZXREZWx0YXMoImRvd24iKTsKKyAgICAgICAgICAgIHJl
dHVybiBtb3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCh4LCB5LCBkZWx0YS5YLCBkZWx0YS5ZLCBkZWx0
YS5YLCBkZWx0YS5ZKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxz
KHJvb3Quc2Nyb2xsVG9wID4gMCwgcHJvcGFnYXRlWSwgJ1Byb3BhZ2F0ZSB2ZXJ0aWNhbCBzY3Jv
bGwnKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9LCAnRWxlbWVudCB2ZXJ0aWNhbCBzY3Jv
bGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6ICcgKyBvdmVyc2Nyb2xsWCArICcgJyAr
IG92ZXJzY3JvbGxZICsgJy4nKTsKKyAgICB9KTsKK30KKworYWRkRXZlbnRMaXN0ZW5lcigibG9h
ZCIsIHN0YXJ0VGVzdCk7Cis8L3NjcmlwdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Ny
b2xsLWJlaGF2aW9yLWlmcmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9s
bGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOTAwYTBiN2Q5MDViODdjMWRiNzYyNjk0ZmQwMDYzOGYxOTc2OTUzNwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92
ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIxIEBACisK
KworUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVo
YXZpb3I6IGF1dG8gYXV0by4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGgg
b3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBhdXRvLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBz
Y3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gYXV0by4KK1BBU1Mg
SWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29u
dGFpbiBhdXRvLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJz
Y3JvbGwtYmVoYXZpb3I6IG5vbmUgYXV0by4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0
ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBhdXRvLgorUEFTUyBJZnJhbWUgaG9y
aXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gY29udGFp
bi4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhh
dmlvcjogYXV0byBjb250YWluLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3
aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gY29udGFpbi4KK1BBU1MgSWZyYW1lIHZl
cnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBjb250
YWluLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwt
YmVoYXZpb3I6IG5vbmUgY29udGFpbi4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0
IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBjb250YWluLgorUEFTUyBJZnJhbWUgaG9y
aXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gbm9uZS4K
K1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlv
cjogYXV0byBub25lLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92
ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gbm9uZS4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNj
cm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBub25lLgorUEFTUyBJ
ZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5v
bmUgbm9uZS4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9s
bC1iZWhhdmlvcjogbm9uZSBub25lLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Nj
cm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1p
ZnJhbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYjNiODExZDFiZGIzMTAzODkwNjE2MDRkNWMzMDZkMmNm
MTk0MmQ4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3lu
Yy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUuaHRtbApAQCAtMCwwICsxLDg1IEBA
Cis8IWRvY3R5cGUgaHRtbD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5l
c3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVz
c3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL292ZXJzY3JvbGwt
YmVoYXZpb3Itc3VwcG9ydC5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0
dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3Mtb3ZlcnNjcm9sbC1iZWhhdmlvciI+Cis8c3R5bGU+
CisgICAgLnNjcm9sbGluZyB7CisgICAgICAgIG92ZXJmbG93OiBzY3JvbGw7CisgICAgfQorICAg
IC5zY3JvbGxDb250ZW50IHsKKyAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICBoZWlnaHQ6
IDMwMHB4OworICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZWQs
IGJsdWUpOworICAgIH0KKyAgICAjcm9vdCB7CisgICAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAg
ICAgaGVpZ2h0OiAyMDBweDsKKyAgICB9CisgICAgI3Njcm9sbGVyIHsKKyAgICAgICAgd2lkdGg6
IDEwMHB4OworICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgICBvdmVyc2Nyb2xsLWJlaGF2
aW9yLXk6IGF1dG87CisgICAgfQorPC9zdHlsZT4KKzxkaXYgaWQ9J3Jvb3QnIGNsYXNzPSJzY3Jv
bGxpbmciPgorICAgIDxpZnJhbWUgaWQ9J3Njcm9sbGVyJyBzcmNkb2M9IjxodG1sPjxkaXYgc3R5
bGU9J3dpZHRoOiAzMDBweDsgaGVpZ2h0OiAzMDBweDsnPjwvZGl2PjwvaHRtbD4KKyAgICAgICAg
Ij48L2lmcmFtZT4KKyAgICA8ZGl2IGNsYXNzPSJzY3JvbGxDb250ZW50Ij48L2Rpdj4KKzwvZGl2
PgorCis8c2NyaXB0PgorICAgIGNvbnN0IHJvb3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
cm9vdCcpOworICAgIGNvbnN0IHNjcm9sbGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Nj
cm9sbGVyJyk7CisgICAgdmFyIG92ZXJzY3JvbGxEYXRhcyA9IFtbImF1dG8iLCAiYXV0byIsIHRy
dWUsIHRydWVdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiY29udGFpbiIsICJhdXRv
IiwgZmFsc2UsIHRydWVdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsibm9uZSIsICJh
dXRvIiwgZmFsc2UsIHRydWVdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiYXV0byIs
ICJjb250YWluIiwgdHJ1ZSwgZmFsc2VdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsi
Y29udGFpbiIsICJjb250YWluIiwgZmFsc2UsIGZhbHNlXSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBbIm5vbmUiLCAiY29udGFpbiIsIGZhbHNlLCBmYWxzZV0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgWyJhdXRvIiwgIm5vbmUiLCB0cnVlLCBmYWxzZV0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgWyJjb250YWluIiwgIm5vbmUiLCBmYWxzZSwgZmFsc2VdLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFsibm9uZSIsICJub25lIiwgZmFsc2UsIGZhbHNlXV07
CisgICAgZnVuY3Rpb24gcmVzZXRUZXN0KCkgeworICAgICAgICAvLyBUcnkgdmFyaW91cyBtZXRo
b2RzIHRvIGVuc3VyZSB0aGUgZWxlbWVudCBwb3NpdGlvbiBpcyByZXNldCBpbW1lZGlhdGVseS4K
KyAgICAgICAgc2Nyb2xsZXIuY29udGVudFdpbmRvdy5zY3JvbGxYID0gMzAwOworICAgICAgICBz
Y3JvbGxlci5jb250ZW50V2luZG93LnNjcm9sbFkgPSAzMDA7CisgICAgICAgIHNjcm9sbGVyLmNv
bnRlbnRXaW5kb3cuc2Nyb2xsVG8oMzAwLCAzMDApOworICAgICAgICByb290LnNjcm9sbExlZnQg
PSAwOworICAgICAgICByb290LnNjcm9sbFRvcCA9IDA7CisgICAgICAgIHJvb3Quc2Nyb2xsVG8o
MCwgMCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gb3ZlcnNjcm9sbEJlaGF2aW9yVGVzdCgpIHsK
KyAgICAgICAgb3ZlcnNjcm9sbERhdGFzLmZvckVhY2goKFtvdmVyc2Nyb2xsWCwgb3ZlcnNjcm9s
bFksIHByb3BhZ2F0ZVgsIHByb3BhZ2F0ZVldKSA9PiB7CisgICAgICAgICAgICBwcm9taXNlX3Rl
c3QoKCkgPT4geworICAgICAgICAgICAgICAgIHJlc2V0VGVzdCgpOworICAgICAgICAgICAgICAg
IHZhciB0YXJnZXQgPSBzY3JvbGxlci5jb250ZW50V2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJodG1sIilbMF07CisgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLm92ZXJz
Y3JvbGxCZWhhdmlvclggPSBvdmVyc2Nyb2xsWDsKKyAgICAgICAgICAgICAgICB0YXJnZXQuc3R5
bGUub3ZlcnNjcm9sbEJlaGF2aW9yWSA9IG92ZXJzY3JvbGxZOworICAgICAgICAgICAgICAgIHZh
ciB4ID0gc2Nyb2xsZXIuY2xpZW50V2lkdGggLyAyOworICAgICAgICAgICAgICAgIHZhciB5ID0g
c2Nyb2xsZXIuY2xpZW50SGVpZ2h0IC8gMjsKKyAgICAgICAgICAgICAgICB2YXIgZGVsdGEgPSBn
ZXREZWx0YXMoInJpZ2h0Iik7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1vdXNlV2hlZWxTY3Jv
bGxBbmRXYWl0KHgsIHksIGRlbHRhLlgsIGRlbHRhLlksIGRlbHRhLlgsIGRlbHRhLlkpLnRoZW4o
KCkgPT4geworICAgICAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsTGVm
dCA+IDAsIHByb3BhZ2F0ZVgsICdQcm9wYWdhdGUgaG9yaXpvbnRhbCBzY3JvbGwnKTsKKyAgICAg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0sICdJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwg
dGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6ICcgKyBvdmVyc2Nyb2xsWCArICcgJyArIG92
ZXJzY3JvbGxZICsgJy4nKTsKKworICAgICAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAg
ICAgICAgICAgICAgICByZXNldFRlc3QoKTsKKyAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0g
c2Nyb2xsZXIuY29udGVudFdpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaHRt
bCIpWzBdOworICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JY
ID0gb3ZlcnNjcm9sbFg7CisgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLm92ZXJzY3JvbGxC
ZWhhdmlvclkgPSBvdmVyc2Nyb2xsWTsKKworICAgICAgICAgICAgICAgIHZhciB4ID0gc2Nyb2xs
ZXIuY2xpZW50V2lkdGggLyAyOworICAgICAgICAgICAgICAgIHZhciB5ID0gc2Nyb2xsZXIuY2xp
ZW50SGVpZ2h0IC8gMjsKKyAgICAgICAgICAgICAgICB2YXIgZGVsdGEgPSBnZXREZWx0YXMoImRv
d24iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbW91c2VXaGVlbFNjcm9sbEFuZFdhaXQoeCwg
eSwgZGVsdGEuWCwgZGVsdGEuWSwgZGVsdGEuWCwgZGVsdGEuWSkudGhlbigoKSA9PiB7CisgICAg
ICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxUb3AgPiAwLCBwcm9wYWdh
dGVZLCAnUHJvcGFnYXRlIHZlcnRpY2FsIHNjcm9sbCcpOworICAgICAgICAgICAgICAgIH0pOwor
ICAgICAgICAgICAgfSwgJ0lmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3Jv
bGwtYmVoYXZpb3I6ICcgKyBvdmVyc2Nyb2xsWCArICcgJyArIG92ZXJzY3JvbGxZICsgJy4nKTsK
KyAgICAgICAgfSk7CisgICAgfQorCisgICAgc2Nyb2xsZXIuYWRkRXZlbnRMaXN0ZW5lcigibG9h
ZCIsIG92ZXJzY3JvbGxCZWhhdmlvclRlc3QpOworPC9zY3JpcHQ+ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1z
Y3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJl
aGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMzk1
YjY0ODhkMDg3MGI5NTYxYzAyODY3OWQ3ZTE1YTQ3ZmNlNmU5Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlv
ci11bnNjcm9sbGFibGUtZWxlbWVudC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACisKK1BB
U1MgVW5zY3JvbGxhYmxlIGVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJz
Y3JvbGwtYmVoYXZpb3I6IG5vbmUuCitQQVNTIFVuc2Nyb2xsYWJsZSBlbGVtZW50IHZlcnRpY2Fs
IHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4KKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhh
dmlvci11bnNjcm9sbGFibGUtZWxlbWVudC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxp
bmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmJiNGIwNmU5ZTY0MTkzNzA4MDgxMjc4ZDkxMDAzYzA1ZDU3MjRiMjYK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9s
bC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWwKQEAgLTAsMCAr
MSw2NiBAQAorPCFkb2N0eXBlIGh0bWw+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVz
dGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9vdmVy
c2Nyb2xsLWJlaGF2aW9yLXN1cHBvcnQuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJoZWxwIiBo
cmVmPSJodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLW92ZXJzY3JvbGwtYmVoYXZpb3IiPgor
PHN0eWxlPgorICAgIC5zY3JvbGxpbmcgeworICAgICAgICBvdmVyZmxvdzogc2Nyb2xsOworICAg
IH0KKyAgICAuc2Nyb2xsQ29udGVudCB7CisgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAg
aGVpZ2h0OiAzMDBweDsKKyAgICB9CisgICAgI3Jvb3QgeworICAgICAgICB3aWR0aDogMjAwcHg7
CisgICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgfQorICAgICNzY3JvbGxlciB7CisgICAgICAg
IHdpZHRoOiAxMDBweDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgICAgb3ZlcnNjcm9s
bC1iZWhhdmlvcjogbm9uZTsKKyAgICAgICAgb3ZlcmZsb3c6IHZpc2libGU7CisgICAgICAgIGJh
Y2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJlZCwgYmx1ZSk7CisgICAgfQorPC9z
dHlsZT4KKzxkaXYgaWQ9InJvb3QiIGNsYXNzPSJzY3JvbGxpbmciPgorICAgIDxkaXYgaWQ9InNj
cm9sbGVyIj4KKyAgICAgICAgPGRpdiBjbGFzcz0ic2Nyb2xsQ29udGVudCI+PC9kaXY+CisgICAg
PC9kaXY+CisgICAgPGRpdiBjbGFzcz0ic2Nyb2xsQ29udGVudCI+PC9kaXY+Cis8L2Rpdj4KKwor
PHNjcmlwdD4KK2NvbnN0IHJvb3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncm9vdCcpOwor
Y29uc3Qgc2Nyb2xsZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2Nyb2xsZXInKTsKKwor
ZnVuY3Rpb24gcmVzZXRUZXN0KCkgeworICAgIHJvb3Quc2Nyb2xsTGVmdCA9IDA7CisgICAgcm9v
dC5zY3JvbGxUb3AgPSAwOworICAgIHJvb3Quc2Nyb2xsVG8oMCwgMCk7Cit9CisKK2Z1bmN0aW9u
IHN0YXJ0VGVzdCgpIHsKKyAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAg
IHJlc2V0VGVzdCgpOworICAgICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAv
IDI7CisgICAgICAgICAgICB2YXIgeSA9IHNjcm9sbGVyLmNsaWVudEhlaWdodCAvIDI7CisgICAg
ICAgICAgICB2YXIgZGVsdGEgPSBnZXREZWx0YXMoInJpZ2h0Iik7CisgICAgICAgICAgICByZXR1
cm4gbW91c2VXaGVlbFNjcm9sbEFuZFdhaXQoeCwgeSwgZGVsdGEuWCwgZGVsdGEuWSwgZGVsdGEu
WCwgZGVsdGEuWSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhy
b290LnNjcm9sbExlZnQgPiAwLCB0cnVlLCAnUHJvcGFnYXRlIGhvcml6b250YWwgc2Nyb2xsJyk7
CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSwgJ1Vuc2Nyb2xsYWJsZSBlbGVtZW50IGhvcml6
b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLicpOworCisg
ICAgICAgIHByb21pc2VfdGVzdCgoKSA9PiB7CisgICAgICAgICAgICByZXNldFRlc3QoKTsKKyAg
ICAgICAgICAgIHZhciB4ID0gc2Nyb2xsZXIuY2xpZW50V2lkdGggLyAyOworICAgICAgICAgICAg
dmFyIHkgPSBzY3JvbGxlci5jbGllbnRIZWlnaHQgLyAyOworICAgICAgICAgICAgdmFyIGRlbHRh
ID0gZ2V0RGVsdGFzKCJkb3duIik7CisgICAgICAgICAgICByZXR1cm4gbW91c2VXaGVlbFNjcm9s
bEFuZFdhaXQoeCwgeSwgZGVsdGEuWCwgZGVsdGEuWSwgZGVsdGEuWCwgZGVsdGEuWSkudGhlbigo
KSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbFRvcCA+IDAs
IHRydWUsICdQcm9wYWdhdGUgdmVydGljYWwgc2Nyb2xsJyk7CisgICAgICAgICAgICB9KTsKKyAg
ICAgICAgfSwgJ1Vuc2Nyb2xsYWJsZSBlbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGgg
b3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4nKTsKK30KKworYWRkRXZlbnRMaXN0ZW5lcigibG9h
ZCIsIHN0YXJ0VGVzdCk7Cis8L3NjcmlwdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Ny
b2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9s
bGFibGUtaWZyYW1lLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZmE1OWNjYmE3OWFlZmYzM2Rh
NzBlOTNkNDg4YTA3ZWVjOWM1NjkxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUt
aWZyYW1lLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKKworCitQQVNTIFVuc2Nyb2xsYWJs
ZSBpZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6
IG5vbmUuCitQQVNTIFVuc2Nyb2xsYWJsZSBpZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0
aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJs
ZS1pZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92
ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJk
ZjY3NWFjNDM3MjlkM2RiYjRmNWY1MzI0ODkxMjNlNjY5YTU3YjIKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2
aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUuaHRtbApAQCAtMCwwICsxLDY1IEBACis8IWRvY3R5cGUg
aHRtbD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL292ZXJzY3JvbGwtYmVoYXZpb3Itc3Vw
cG9ydC5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vZHJhZnRz
LmNzc3dnLm9yZy9jc3Mtb3ZlcnNjcm9sbC1iZWhhdmlvciI+Cis8c3R5bGU+CisgICAgLnNjcm9s
bGluZyB7CisgICAgICAgIG92ZXJmbG93OiBzY3JvbGw7CisgICAgfQorICAgIC5zY3JvbGxDb250
ZW50IHsKKyAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAg
IH0KKyAgICAjcm9vdCB7CisgICAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgICAgaGVpZ2h0OiAy
MDBweDsKKyAgICB9CisgICAgI3Njcm9sbGVyIHsKKyAgICAgICAgd2lkdGg6IDIwMHB4OworICAg
ICAgICBoZWlnaHQ6IDIwMHB4OworICAgICAgICBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lOwor
ICAgICAgICBvdmVyZmxvdzogdmlzaWJsZTsKKyAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdy
YWRpZW50KDEzNWRlZywgcmVkLCBibHVlKTsKKyAgICB9Cis8L3N0eWxlPgorPGRpdiBpZD0ncm9v
dCcgY2xhc3M9InNjcm9sbGluZyI+CisgICAgPGlmcmFtZSBpZD0nc2Nyb2xsZXInIHNyY2RvYz0i
PGh0bWwgc3R5bGU9J292ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmU7Jz48ZGl2IHN0eWxlPSd3aWR0
aDogMTAwcHg7IGhlaWdodDogMTAwcHg7Jz48L2Rpdj48L2h0bWw+CisgICAgICAgICI+PC9pZnJh
bWU+CisgICAgPGRpdiBjbGFzcz0ic2Nyb2xsQ29udGVudCI+PC9kaXY+Cis8L2Rpdj4KKworPHNj
cmlwdD4KK2NvbnN0IHJvb3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncm9vdCcpOworY29u
c3Qgc2Nyb2xsZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2Nyb2xsZXInKTsKKworZnVu
Y3Rpb24gcmVzZXRUZXN0KCkgeworICAgIHJvb3Quc2Nyb2xsTGVmdCA9IDA7CisgICAgcm9vdC5z
Y3JvbGxUb3AgPSAwOworICAgIHJvb3Quc2Nyb2xsVG8oMCwgMCk7Cit9CisKK2Z1bmN0aW9uIHN0
YXJ0VGVzdCgpIHsKKyAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAgIHJl
c2V0VGVzdCgpOworICAgICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7
CisgICAgICAgICAgICB2YXIgeSA9IHNjcm9sbGVyLmNsaWVudEhlaWdodCAvIDI7CisgICAgICAg
ICAgICB2YXIgZGVsdGEgPSBnZXREZWx0YXMoInJpZ2h0Iik7CisgICAgICAgICAgICByZXR1cm4g
bW91c2VXaGVlbFNjcm9sbEFuZFdhaXQoeCwgeSwgZGVsdGEuWCwgZGVsdGEuWSwgZGVsdGEuWCwg
ZGVsdGEuWSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyb290
LnNjcm9sbExlZnQgPiAwLCB0cnVlLCAnUHJvcGFnYXRlIGhvcml6b250YWwgc2Nyb2xsJyk7Cisg
ICAgICAgICAgICB9KTsKKyAgICAgICAgfSwgJ1Vuc2Nyb2xsYWJsZSBpZnJhbWUgaG9yaXpvbnRh
bCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuJyk7CisKKyAgICAg
ICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAgIHJlc2V0VGVzdCgpOworICAgICAg
ICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAgICAgICAgICB2YXIg
eSA9IHNjcm9sbGVyLmNsaWVudEhlaWdodCAvIDI7CisgICAgICAgICAgICB2YXIgZGVsdGEgPSBn
ZXREZWx0YXMoImRvd24iKTsKKyAgICAgICAgICAgIHJldHVybiBtb3VzZVdoZWVsU2Nyb2xsQW5k
V2FpdCh4LCB5LCBkZWx0YS5YLCBkZWx0YS5ZLCBkZWx0YS5YLCBkZWx0YS5ZKS50aGVuKCgpID0+
IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsVG9wID4gMCwgdHJ1
ZSwgJ1Byb3BhZ2F0ZSB2ZXJ0aWNhbCBzY3JvbGwnKTsKKyAgICAgICAgICAgIH0pOworICAgICAg
ICB9LCAnVW5zY3JvbGxhYmxlIGlmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJz
Y3JvbGwtYmVoYXZpb3I6IG5vbmUuJyk7Cit9CisKK2FkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBz
dGFydFRlc3QpOworPC9zY3JpcHQ+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBiMTFkMzE3ZGI4MWQ4ODA2
OTdlMjQxMjg5MDY3MzZiZjMxY2NiYjNlLi41ZWE0ZDQ1MGMyMTExMDRhM2E4MTc5OTQ5ZmYxOWIx
OTQ2OTRjNzUwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVj
dGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucwpA
QCAtODE0LDYgKzgxNCwxMiBAQCBzdmcvdGV4dC9zZWxlY3Rpb24tZG91YmxlY2xpY2suc3ZnIFsg
U2tpcCBdCiBzdmcvdGV4dC9zZWxlY3Rpb24tdHJpcGxlY2xpY2suc3ZnIFsgU2tpcCBdCiBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mtc2hhZG93LXBhcnRzL2ludmFsaWRh
dGlvbi1wYXJ0LXBzZXVkby5odG1sIFsgU2tpcCBdCiAKKyMgT3ZlcnNjcm9sbC1iZWhhdmlvciBv
biBpT1MgbmVlZHMgU2t5RWNobzE5RTE3OS9TdGFyRTIxRTE2OGE6IGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzU4NTIKK2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xs
LW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC5odG1sIFsgU2tpcCBdCitmYXN0L3Njcm9sbGlu
Zy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS5odG1sIFsgU2tpcCBdCitm
YXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJs
ZS1lbGVtZW50Lmh0bWwgWyBTa2lwIF0KK2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJz
Y3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sIFsgU2tpcCBdCisKICMgSU9T
IGRvZXMgbm90IGltcGxlbWVudCBzZXRBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZAogZWRp
dGluZy9pbnNlcnRpbmcvdHlwaW5nLXNwYWNlLXRvLXRyaWdnZXItc21hcnQtbGluay5odG1sIFsg
U2tpcCBdCiBlZGl0aW5nL2luc2VydGluZy9zbWFydC1saW5rLXdoZW4tY2FyZXQtaXMtbW92ZWQt
YmVmb3JlLVVSTC5odG1sIFsgU2tpcCBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sx
L1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggODZkZjI3ZDViYWJiYWI3Y2QwMjZlZjJkYzUyMjZmNTJh
NjBkM2VhNy4uM2NjM2I2N2NiNmEzNTdlMTI5NTZjYTIyN2JiZGNhMTJiMmVmMjg1NiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNTU2LDYg
KzU1NiwxMCBAQCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mtc2Nyb2xs
LXNuYXAvc2Nyb2xsLXRhcmdldC1wYWRkaW5nLTAwMS5odAogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLXNjcm9sbC1zbmFwL3Njcm9sbC1zbmFwLXN0b3AtY2hhbmdlLmh0
bWwgWyBGYWlsdXJlIF0KIGNzczMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXBhZGRpbmctbWFpbmZyYW1l
LXBhZ2luZy5odG1sIFsgRmFpbHVyZSBdCiAKKyMgTGFjayBvZiB3YXlzIHRvIGNvbnRyb2wgdGhl
IGNyb3NzLWZyYW1lIHNjcm9sbCBjaGFpbmluZyBpbiBXSzEuCitmYXN0L3Njcm9sbGluZy9zeW5j
LXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS5odG1sIFsgU2tpcCBdCitmYXN0L3Nj
cm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJh
bWUuaHRtbCBbIFNraXAgXQorCiAjIyMgRU5EIE9GICgyKSBGYWlsdXJlcyB3aXRob3V0IGJ1ZyBy
ZXBvcnRzCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggMTZkYjdjNGVkOWM5YTVl
YjNjZDM1OGM3NDhlODFiMGRhYTI0M2Y0MC4uNGZiZjMwODUxNzM3ZTM1YTIzNGE0MjMyOGJlMjBh
MzRlYjlmMmUyYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBl
Y3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMK
QEAgLTY0NCw2ICs2NDQsMTIgQEAgcG9pbnRlci1sb2NrLyBbIFNraXAgXQogaHR0cC90ZXN0cy9w
b2ludGVyLWxvY2svIFsgU2tpcCBdCiBmYXN0L2pzLXByb21pc2UvanMtcHJvbWlzZS1pbnZhbGlk
LWNvbnRleHQtYWNjZXNzLmh0bWwgWyBTa2lwIF0KIAorIyBPdmVyc2Nyb2xsLWJlaGF2aW9yIGlz
IG5vdCBzdXBwb3J0ZWQgb24gV2luZG93cworZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3Zl
cnNjcm9sbC1iZWhhdmlvci1lbGVtZW50Lmh0bWwgWyBTa2lwIF0KK2Zhc3Qvc2Nyb2xsaW5nL3N5
bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0bWwgWyBTa2lwIF0KK2Zhc3Qv
c2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVs
ZW1lbnQuaHRtbCBbIFNraXAgXQorZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9s
bC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLmh0bWwgWyBTa2lwIF0KKwogIyBEYXRhbGlz
dCBpcyB1bnN1cHBvcnRlZCBvbiBXaW5kb3dzCiBhY2Nlc3NpYmlsaXR5L2RhdGFsaXN0Lmh0bWwg
WyBXb250Rml4IF0KIGZhc3QvZm9ybXMvZGF0YWxpc3QgWyBXb250Rml4IF0K
</data>

          </attachment>
      

    </bug>

</bugzilla>