<?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>220139</bug_id>
          
          <creation_ts>2020-12-24 01:52:41 -0800</creation_ts>
          <short_desc>Implement CSS overscroll-behavior for asynchronous scroll on Mac</short_desc>
          <delta_ts>2022-02-06 12:18:43 -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>
          <dependson>222968</dependson>
          <blocked>176454</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="cathiechen">cathiechen</reporter>
          <assigned_to name="cathiechen">cathiechen</assigned_to>
          <cc>augus.dupin</cc>
    
    <cc>bramus</cc>
    
    <cc>brian</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>ik</cc>
    
    <cc>jakub.g.opensource</cc>
    
    <cc>jamesr</cc>
    
    <cc>jochempim</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>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1716557</commentid>
    <comment_count>0</comment_count>
    <who name="cathiechen">cathiechen</who>
    <bug_when>2020-12-24 01:52:41 -0800</bug_when>
    <thetext>Implement CSS property overscroll-behavior on Mac</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716559</commentid>
    <comment_count>1</comment_count>
      <attachid>416742</attachid>
    <who name="cathiechen">cathiechen</who>
    <bug_when>2020-12-24 03:21:03 -0800</bug_when>
    <thetext>Created attachment 416742
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716560</commentid>
    <comment_count>2</comment_count>
      <attachid>416743</attachid>
    <who name="cathiechen">cathiechen</who>
    <bug_when>2020-12-24 03:25:15 -0800</bug_when>
    <thetext>Created attachment 416743
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716561</commentid>
    <comment_count>3</comment_count>
      <attachid>416744</attachid>
    <who name="cathiechen">cathiechen</who>
    <bug_when>2020-12-24 03:37:32 -0800</bug_when>
    <thetext>Created attachment 416744
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716562</commentid>
    <comment_count>4</comment_count>
      <attachid>416745</attachid>
    <who name="cathiechen">cathiechen</who>
    <bug_when>2020-12-24 03:46:39 -0800</bug_when>
    <thetext>Created attachment 416745
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716566</commentid>
    <comment_count>5</comment_count>
      <attachid>416747</attachid>
    <who name="cathiechen">cathiechen</who>
    <bug_when>2020-12-24 04:38:16 -0800</bug_when>
    <thetext>Created attachment 416747
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716576</commentid>
    <comment_count>6</comment_count>
      <attachid>416751</attachid>
    <who name="cathiechen">cathiechen</who>
    <bug_when>2020-12-24 08:28:51 -0800</bug_when>
    <thetext>Created attachment 416751
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716905</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-12-31 01:53:13 -0800</bug_when>
    <thetext>&lt;rdar://problem/72751742&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1719917</commentid>
    <comment_count>8</comment_count>
      <attachid>417713</attachid>
    <who name="cathiechen">cathiechen</who>
    <bug_when>2021-01-15 10:16:52 -0800</bug_when>
    <thetext>Created attachment 417713
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1720272</commentid>
    <comment_count>9</comment_count>
      <attachid>417806</attachid>
    <who name="cathiechen">cathiechen</who>
    <bug_when>2021-01-18 00:06:50 -0800</bug_when>
    <thetext>Created attachment 417806
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1720282</commentid>
    <comment_count>10</comment_count>
      <attachid>417809</attachid>
    <who name="cathiechen">cathiechen</who>
    <bug_when>2021-01-18 00:41:50 -0800</bug_when>
    <thetext>Created attachment 417809
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1720285</commentid>
    <comment_count>11</comment_count>
      <attachid>417811</attachid>
    <who name="cathiechen">cathiechen</who>
    <bug_when>2021-01-18 00:50:30 -0800</bug_when>
    <thetext>Created attachment 417811
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1720290</commentid>
    <comment_count>12</comment_count>
      <attachid>417813</attachid>
    <who name="cathiechen">cathiechen</who>
    <bug_when>2021-01-18 01:00:25 -0800</bug_when>
    <thetext>Created attachment 417813
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1720297</commentid>
    <comment_count>13</comment_count>
      <attachid>417818</attachid>
    <who name="cathiechen">cathiechen</who>
    <bug_when>2021-01-18 01:43:11 -0800</bug_when>
    <thetext>Created attachment 417818
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1720323</commentid>
    <comment_count>14</comment_count>
      <attachid>417818</attachid>
    <who name="cathiechen">cathiechen</who>
    <bug_when>2021-01-18 03:25:48 -0800</bug_when>
    <thetext>Comment on attachment 417818
Patch

Hi,
I think this patch is ready to review.
Please take a look, thanks:)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1739416</commentid>
    <comment_count>15</comment_count>
      <attachid>423169</attachid>
    <who name="cathiechen">cathiechen</who>
    <bug_when>2021-03-15 06:22:51 -0700</bug_when>
    <thetext>Created attachment 423169
async-overscroll-behavior-for-ews</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1739417</commentid>
    <comment_count>16</comment_count>
      <attachid>423170</attachid>
    <who name="cathiechen">cathiechen</who>
    <bug_when>2021-03-15 06:23:26 -0700</bug_when>
    <thetext>Created attachment 423170
async-overscroll-behavior-for-review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1739844</commentid>
    <comment_count>17</comment_count>
      <attachid>423301</attachid>
    <who name="cathiechen">cathiechen</who>
    <bug_when>2021-03-15 22:48:29 -0700</bug_when>
    <thetext>Created attachment 423301
async-overscroll-behavior-for-ews</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1742246</commentid>
    <comment_count>18</comment_count>
      <attachid>423891</attachid>
    <who name="cathiechen">cathiechen</who>
    <bug_when>2021-03-22 08:47:58 -0700</bug_when>
    <thetext>Created attachment 423891
async-overscroll-behavior-for-ews</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816193</commentid>
    <comment_count>19</comment_count>
      <attachid>444598</attachid>
    <who name="Nikos Mouchtaris">nmouchtaris</who>
    <bug_when>2021-11-17 16:26:37 -0800</bug_when>
    <thetext>Created attachment 444598
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819116</commentid>
    <comment_count>20</comment_count>
      <attachid>445528</attachid>
    <who name="Nikos Mouchtaris">nmouchtaris</who>
    <bug_when>2021-11-30 23:22:34 -0800</bug_when>
    <thetext>Created attachment 445528
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819330</commentid>
    <comment_count>21</comment_count>
      <attachid>445595</attachid>
    <who name="Nikos Mouchtaris">nmouchtaris</who>
    <bug_when>2021-12-01 11:21:02 -0800</bug_when>
    <thetext>Created attachment 445595
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819343</commentid>
    <comment_count>22</comment_count>
      <attachid>445600</attachid>
    <who name="Nikos Mouchtaris">nmouchtaris</who>
    <bug_when>2021-12-01 11:38:34 -0800</bug_when>
    <thetext>Created attachment 445600
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819617</commentid>
    <comment_count>23</comment_count>
      <attachid>445600</attachid>
    <who name="cathiechen">cathiechen</who>
    <bug_when>2021-12-02 01:14:57 -0800</bug_when>
    <thetext>Comment on attachment 445600
Patch

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

Hi Nikolaos,

Thanks for working on this!

&gt; Source/WebCore/page/scrolling/ScrollingTree.cpp:211
&gt; +    if (scrollingNode.hasHorizontalOverscrollBehavior() || scrollingNode.hasVerticalOverscrollBehavior()) {

It seems if we only check the overscroll behavior of the current scrollingNode here, the wheelEvent might skip the scroll chaining blocker.

For instance, 
&lt;div id=&quot;parent&quot;&gt;
  &lt;div id=&quot;scroller&quot; style=&quot;overscroll-behavior-y: none;&quot;&gt; &lt;/div&gt;
&lt;/div&gt;

First, let&apos;s horizontally scroll &quot;scroller&quot;, for overscroll-behavior-x is auto and it&apos;s horizontal scroll, so the wheel event can pass on the tree to &quot;parent&quot;.
Then we start to scroll vertically, because the current scrolling node is &quot;parent&quot;, so it won&apos;t break the scroll chaining.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822193</commentid>
    <comment_count>24</comment_count>
      <attachid>445600</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-12-09 10:52:19 -0800</bug_when>
    <thetext>Comment on attachment 445600
Patch

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

&gt; Source/WebCore/page/scrolling/ScrollingTree.h:237
&gt; +    bool shouldBlockScrollChainingWithNode(const ScrollingTreeScrollingNode&amp;, PlatformWheelEvent&amp;, bool&amp;);

We don&apos;t use the term &quot;scroll chaining&quot; anywhere else. I would prefer something like &quot;scroll propagation&quot;. Can this function be const? What does the the bool&amp; param mean?

Why isn&apos;t this a function on ScrollingTreeScrollingNode?

&gt; Source/WebCore/page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.mm:218
&gt; +    if (scrollingNode().horizontalOverscrollBehavior() == OverscrollBehavior::None)
&gt; +        return false;
&gt; +    
&gt;      switch (horizontalScrollElasticity()) {

Does OverscrollBehavior not change the value of elasticity?

&gt; Source/WebCore/rendering/RenderLayerCompositor.cpp:3953
&gt; +    if (oldStyle &amp;&amp; (oldStyle-&gt;overscrollBehaviorX() != renderer.style().overscrollBehaviorX() || oldStyle-&gt;overscrollBehaviorY() != renderer.style().overscrollBehaviorY())) {
&gt; +        if (auto* layer = m_renderView.layer())
&gt; +            layer-&gt;setNeedsCompositingGeometryUpdate();

Is this the signal we use elsewhere for updating the scrolling tree? RenderLayerCompositor::updateBackingAndHierarchy() calls updateScrollCoordinationForLayer() unconditionally, so it&apos;s not clear that this is the best signal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822423</commentid>
    <comment_count>25</comment_count>
      <attachid>446631</attachid>
    <who name="Nikos Mouchtaris">nmouchtaris</who>
    <bug_when>2021-12-09 16:37:52 -0800</bug_when>
    <thetext>Created attachment 446631
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822443</commentid>
    <comment_count>26</comment_count>
      <attachid>446637</attachid>
    <who name="Nikos Mouchtaris">nmouchtaris</who>
    <bug_when>2021-12-09 17:10:03 -0800</bug_when>
    <thetext>Created attachment 446637
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822983</commentid>
    <comment_count>27</comment_count>
      <attachid>446816</attachid>
    <who name="Nikos Mouchtaris">nmouchtaris</who>
    <bug_when>2021-12-10 14:28:39 -0800</bug_when>
    <thetext>Created attachment 446816
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832671</commentid>
    <comment_count>28</comment_count>
      <attachid>446816</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-01-20 21:02:26 -0800</bug_when>
    <thetext>Comment on attachment 446816
Patch

Testing this patch on macOS, I see a bug where `overscroll-behavior: contain;` on an overflow:scroll also prevents rubberbanding when it should not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832673</commentid>
    <comment_count>29</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-01-20 21:22:12 -0800</bug_when>
    <thetext>With an `overscroll-behavior: contain` node, we need to allow rubberbanding if propagation will stop at this node. That means that we need to enter ScrollingEffectsController::handleWheelEvent() for such a node, and instead of the &quot;root node always rubber bands&quot; code that we have, the logic needs to be &quot;if scroll propagation stops at this node, and if `overscroll-behavior` is not `none`, rubberband.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832942</commentid>
    <comment_count>30</comment_count>
      <attachid>449713</attachid>
    <who name="Nikos Mouchtaris">nmouchtaris</who>
    <bug_when>2022-01-21 17:09:23 -0800</bug_when>
    <thetext>Created attachment 449713
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832944</commentid>
    <comment_count>31</comment_count>
      <attachid>449713</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-21 17:19:34 -0800</bug_when>
    <thetext>Comment on attachment 449713
Patch

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

&gt; Source/WebCore/page/scrolling/ScrollingTree.cpp:205
&gt; +    PlatformWheelEvent adjustedWheelEvent = PlatformWheelEvent(wheelEvent);

Should just be this:

    auto adjustedWheelEvent = wheelEvent;

At the very least, there is no need to list the class name twice. But I think you don’t need it even once.

&gt; Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.cpp:127
&gt; +    PlatformWheelEvent adjustedWheelEvent = PlatformWheelEvent(wheelEvent);

Same.

&gt; Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.cpp:132
&gt; +    if (isLatchedNode() || eventTargeting == EventTargeting::NodeOnly || (isRootNode() &amp;&amp; !wheelEvent.isNonGestureEvent()) || (shouldBlockScrollPropagation(adjustedWheelEvent, handled) &amp;&amp; overscrollBehaviorAllowRubberBand()))
&gt; +        return true;
&gt; +    return false;

Can we just say:

    return xxx;

Instead of:

    if (xxx)
        return true;
    return false;

&gt; Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.h:167
&gt; +    bool shouldBlockScrollPropagation(PlatformWheelEvent&amp;, bool&amp;) const;

This seems confusing. What are the bools for? How would I know that? Why is the wheel event passed in as a reference? Very much &quot;not self explanatory&quot;.

If we have two return values, I suggest we consider returning a structure with two named booleans, making it easier to understand at the call site.

Reading the code, it seems neither of the callers are taking advantages of the adjustments made to the passed-in wheel event; they never look at the adjusted event. Given that, why does this function do the adjustment?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832966</commentid>
    <comment_count>32</comment_count>
      <attachid>449718</attachid>
    <who name="Nikos Mouchtaris">nmouchtaris</who>
    <bug_when>2022-01-21 19:21:04 -0800</bug_when>
    <thetext>Created attachment 449718
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832967</commentid>
    <comment_count>33</comment_count>
    <who name="Nikos Mouchtaris">nmouchtaris</who>
    <bug_when>2022-01-21 19:25:45 -0800</bug_when>
    <thetext>&gt; Reading the code, it seems neither of the callers are taking advantages of
&gt; the adjustments made to the passed-in wheel event; they never look at the
&gt; adjusted event. Given that, why does this function do the adjustment?

The caller in ScrollingTree::handleWheelEventWithNode uses this adjusted wheel event in the case where we block one axis of the wheel event (based on the value of the overscroll behavior) and the wheel event is propagated up the scroll tree. The other caller doesn&apos;t make use of the adjusted event but I think that&apos;s ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832974</commentid>
    <comment_count>34</comment_count>
      <attachid>449718</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-01-21 21:16:20 -0800</bug_when>
    <thetext>Comment on attachment 449718
Patch

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

&gt; Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.cpp:128
&gt; +    bool shouldBlock = shouldBlockScrollPropagation(adjustedWheelEvent).first;

Sucks that we have to copy the PlatformWheelEvent just to ask whether propagation is prevented.

&gt; Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.cpp:134
&gt; +    

Blank line.

&gt; Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.cpp:407
&gt; +// Returns if it should block scroll propogation, and if the wheel event is handled
&gt; +std::pair&lt;bool, bool&gt; ScrollingTreeScrollingNode::shouldBlockScrollPropagation(PlatformWheelEvent&amp; wheelEvent) const

If you need a comment to explain the return value, perhaps it should be a simple struct instead.

&gt; Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.cpp:418
&gt; +        if (hasHorizontalOverscrollBehavior() &amp;&amp; !biasedDelta.height() &amp;&amp; biasedDelta.width())
&gt; +            return std::make_pair&lt;bool, bool&gt;(true, false);

I&apos;m confused by the lack of symmetry between checking horizontal and vertical over scroll behavior.

Also, this would be easier to read if instead of hasHorizontalOverscrollBehavior() it was overscrollBehaviorPreventsPropagation().

&gt; Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.h:162
&gt; +    

Whitespace

&gt; LayoutTests/fast/scrolling/resources/overscroll-behavior-support.js:39
&gt; +async function mouseWheelScrollAndWait(x, y, beginX, beginY, deltaX, deltaY)
&gt; +{
&gt; +    if (beginX === undefined)
&gt; +        beginX = 0;
&gt; +    if (beginY === undefined)
&gt; +        beginY = -1;
&gt; +    if (deltaX === undefined)
&gt; +        deltaX = 0;
&gt; +    if (deltaY === undefined)
&gt; +        deltaY = -10;
&gt; +
&gt; +    eventSender.monitorWheelEvents();
&gt; +    eventSender.mouseMoveTo(x, y);
&gt; +    eventSender.mouseScrollByWithWheelAndMomentumPhases(beginX, beginY, &quot;began&quot;, &quot;none&quot;);
&gt; +    eventSender.mouseScrollByWithWheelAndMomentumPhases(deltaX, deltaY, &quot;changed&quot;, &quot;none&quot;);
&gt; +    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, &quot;ended&quot;, &quot;none&quot;);
&gt; +    return new Promise(resolve =&gt; {
&gt; +        setTimeout(() =&gt; {
&gt; +            requestAnimationFrame(resolve);
&gt; +        }, 500);
&gt; +    });
&gt; +}

This looks very similar to code in UIHelpers.js. Please use that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833543</commentid>
    <comment_count>35</comment_count>
      <attachid>449877</attachid>
    <who name="Nikos Mouchtaris">nmouchtaris</who>
    <bug_when>2022-01-24 15:58:57 -0800</bug_when>
    <thetext>Created attachment 449877
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833544</commentid>
    <comment_count>36</comment_count>
    <who name="Nikos Mouchtaris">nmouchtaris</who>
    <bug_when>2022-01-24 16:04:55 -0800</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #34)
&gt; Comment on attachment 449718 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=449718&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.cpp:418
&gt; &gt; +        if (hasHorizontalOverscrollBehavior() &amp;&amp; !biasedDelta.height() &amp;&amp; biasedDelta.width())
&gt; &gt; +            return std::make_pair&lt;bool, bool&gt;(true, false);
&gt; 
&gt; I&apos;m confused by the lack of symmetry between checking horizontal and
&gt; vertical over scroll behavior.

This has to do with allowing horizontal swipe gestures for navigation. Firefox and Chrome don&apos;t allow navigations in this case, so we could make that the case as well.

&gt; &gt; LayoutTests/fast/scrolling/resources/overscroll-behavior-support.js:39
&gt; &gt; +async function mouseWheelScrollAndWait(x, y, beginX, beginY, deltaX, deltaY)
&gt; &gt; +{
&gt; &gt; +    if (beginX === undefined)
&gt; &gt; +        beginX = 0;
&gt; &gt; +    if (beginY === undefined)
&gt; &gt; +        beginY = -1;
&gt; &gt; +    if (deltaX === undefined)
&gt; &gt; +        deltaX = 0;
&gt; &gt; +    if (deltaY === undefined)
&gt; &gt; +        deltaY = -10;
&gt; &gt; +
&gt; &gt; +    eventSender.monitorWheelEvents();
&gt; &gt; +    eventSender.mouseMoveTo(x, y);
&gt; &gt; +    eventSender.mouseScrollByWithWheelAndMomentumPhases(beginX, beginY, &quot;began&quot;, &quot;none&quot;);
&gt; &gt; +    eventSender.mouseScrollByWithWheelAndMomentumPhases(deltaX, deltaY, &quot;changed&quot;, &quot;none&quot;);
&gt; &gt; +    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, &quot;ended&quot;, &quot;none&quot;);
&gt; &gt; +    return new Promise(resolve =&gt; {
&gt; &gt; +        setTimeout(() =&gt; {
&gt; &gt; +            requestAnimationFrame(resolve);
&gt; &gt; +        }, 500);
&gt; &gt; +    });
&gt; &gt; +}
&gt; 
&gt; This looks very similar to code in UIHelpers.js. Please use that.
Unfortunately the tests timeout when using the original function in ui-helpers.js, so this one is needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833551</commentid>
    <comment_count>37</comment_count>
      <attachid>449877</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-24 16:22:14 -0800</bug_when>
    <thetext>Comment on attachment 449877
Patch

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

Looking good; some thoughts

&gt; Source/WebCore/page/scrolling/ScrollingTree.cpp:220
&gt; +            auto ret = scrollingNode.shouldBlockScrollPropagationFilter(adjustedWheelEvent);

WebKit coding style says we use words for local variable names. We could use a name like shouldBlock, blockingPolicy, policy, or propagation. If it doesn’t make the line too long, could also write it this way to scope the variable:

    if (auto propagation = scrollingNode.shouldBlockScrollPropagationFilter(adjustedWheelEvent); propagation.shouldBlockScrollPropogation)

&gt; Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.cpp:35
&gt; +#import &quot;ScrollingEffectsController.h&quot;

Needs to be &quot;include&quot;, not &quot;import&quot;.

&gt; Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.cpp:412
&gt; +    BlockScrollPropogation ret = shouldBlockScrollPropagation(biasedDelta);

Same &quot;ret&quot; feedback here. I also suggest using auto instead of writing the name BlockScrollPropogation.

&gt; Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.cpp:426
&gt; +    BlockScrollPropogation ret = { false, false };

Here it would be good to have these false values just default in the structures’s definition.

&gt; Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.h:40
&gt;  struct WheelEventHandlingResult;

Forward declarations should not be right up next to structures defined in this file. I suggest a blank line.

&gt; Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.h:44
&gt; +struct BlockScrollPropogation {
&gt; +    bool shouldBlockScrollPropogation;
&gt; +    bool isHandled;
&gt; +};

There&apos;s some misspelling here, &quot;propogation&quot;, with an &quot;o&quot; instead of an &quot;a&quot;.

Also, it’s best to give these booleans default values, even if they are never needed in practice. Just better to not have uninitialized variables.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833828</commentid>
    <comment_count>38</comment_count>
      <attachid>449960</attachid>
    <who name="Nikos Mouchtaris">nmouchtaris</who>
    <bug_when>2022-01-25 13:11:31 -0800</bug_when>
    <thetext>Created attachment 449960
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834749</commentid>
    <comment_count>39</comment_count>
      <attachid>449960</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-01-27 16:00:03 -0800</bug_when>
    <thetext>Comment on attachment 449960
Patch

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

&gt; Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.cpp:404
&gt; +BlockScrollPropagation ScrollingTreeScrollingNode::shouldBlockScrollPropagationFilter(PlatformWheelEvent&amp; wheelEvent) const

This function has two tasks: computing BlockScrollPropagation, and filtering the wheel event, but at call sites, it&apos;s hard to see that the event is being modified. It would be nice to separate these; at the call site, it could look something like:

auto scrollPropagation = computeScrollPropagation(delta);
if (scrollPropagation.propagationBlocked)
  filteredWheelEvent = eventForPropagation(wheelEvent, scrollPropagation)

or something.

&gt; Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.cpp:406
&gt; +    FloatSize filteredDelta(wheelEvent.deltaX(), wheelEvent.deltaY());

auto filteredDelta = wheelEvent.delta();

&gt; Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.cpp:413
&gt; +    if (hasHorizontalOverscrollBehavior() || hasVerticalOverscrollBehavior()) {

I still think hasHorizontalOverscrollBehavior() needs a better name.

&gt; Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.cpp:424
&gt; +BlockScrollPropagation ScrollingTreeScrollingNode::shouldBlockScrollPropagation(const FloatSize&amp; delta) const

Since this no longer returns a bool, call it `computeScrollPropagation`

&gt; Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.cpp:438
&gt; +        if (hasHorizontalOverscrollBehavior() &amp;&amp; !delta.height() &amp;&amp; delta.width()) {
&gt; +            propagation.shouldBlockScrollPropagation = true;
&gt; +            propagation.isHandled = false;
&gt; +            return propagation;
&gt; +        }
&gt; +        
&gt; +        if ((hasHorizontalOverscrollBehavior() &amp;&amp; hasVerticalOverscrollBehavior()) || (hasHorizontalOverscrollBehavior() &amp;&amp; !delta.height()) || (hasVerticalOverscrollBehavior() &amp;&amp; !delta.width())) {
&gt; +            propagation.shouldBlockScrollPropagation = true;
&gt; +            propagation.isHandled = true;
&gt; +            return propagation;
&gt; +        }

In a previous response, you said that the lack of symmetry between vertical and horizontal was about history swiping. But this function is called for non-root nodes, and there&apos;s no code here that looks at whether the node is a root node, or consults scrollingTree-&gt;mainFrameCanRubberBandOnSide().

&gt; Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.h:42
&gt; +struct BlockScrollPropagation {

Let&apos;s just call this `ScrollPropagation` or `ScrollPropagationInfo`</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834792</commentid>
    <comment_count>40</comment_count>
      <attachid>450197</attachid>
    <who name="Nikos Mouchtaris">nmouchtaris</who>
    <bug_when>2022-01-27 17:43:40 -0800</bug_when>
    <thetext>Created attachment 450197
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834794</commentid>
    <comment_count>41</comment_count>
    <who name="Nikos Mouchtaris">nmouchtaris</who>
    <bug_when>2022-01-27 17:46:49 -0800</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #39)
&gt; Comment on attachment 449960 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=449960&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.cpp:438
&gt; &gt; +        if (hasHorizontalOverscrollBehavior() &amp;&amp; !delta.height() &amp;&amp; delta.width()) {
&gt; &gt; +            propagation.shouldBlockScrollPropagation = true;
&gt; &gt; +            propagation.isHandled = false;
&gt; &gt; +            return propagation;
&gt; &gt; +        }
&gt; &gt; +        
&gt; &gt; +        if ((hasHorizontalOverscrollBehavior() &amp;&amp; hasVerticalOverscrollBehavior()) || (hasHorizontalOverscrollBehavior() &amp;&amp; !delta.height()) || (hasVerticalOverscrollBehavior() &amp;&amp; !delta.width())) {
&gt; &gt; +            propagation.shouldBlockScrollPropagation = true;
&gt; &gt; +            propagation.isHandled = true;
&gt; &gt; +            return propagation;
&gt; &gt; +        }
&gt; 
&gt; In a previous response, you said that the lack of symmetry between vertical
&gt; and horizontal was about history swiping. But this function is called for
&gt; non-root nodes, and there&apos;s no code here that looks at whether the node is a
&gt; root node, or consults scrollingTree-&gt;mainFrameCanRubberBandOnSide().

Adjusted this area so that we have same behavior as Firefox and Chrome.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834804</commentid>
    <comment_count>42</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-01-27 19:20:47 -0800</bug_when>
    <thetext>(In reply to Nikos Mouchtaris from comment #36)
&gt; &gt; &gt; LayoutTests/fast/scrolling/resources/overscroll-behavior-support.js:39
&gt; &gt; &gt; +async function mouseWheelScrollAndWait(x, y, beginX, beginY, deltaX, deltaY)
&gt; &gt; &gt; +{
&gt; &gt; &gt; +    if (beginX === undefined)
&gt; &gt; &gt; +        beginX = 0;
&gt; &gt; &gt; +    if (beginY === undefined)
&gt; &gt; &gt; +        beginY = -1;
&gt; &gt; &gt; +    if (deltaX === undefined)
&gt; &gt; &gt; +        deltaX = 0;
&gt; &gt; &gt; +    if (deltaY === undefined)
&gt; &gt; &gt; +        deltaY = -10;
&gt; &gt; &gt; +
&gt; &gt; &gt; +    eventSender.monitorWheelEvents();
&gt; &gt; &gt; +    eventSender.mouseMoveTo(x, y);
&gt; &gt; &gt; +    eventSender.mouseScrollByWithWheelAndMomentumPhases(beginX, beginY, &quot;began&quot;, &quot;none&quot;);
&gt; &gt; &gt; +    eventSender.mouseScrollByWithWheelAndMomentumPhases(deltaX, deltaY, &quot;changed&quot;, &quot;none&quot;);
&gt; &gt; &gt; +    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, &quot;ended&quot;, &quot;none&quot;);
&gt; &gt; &gt; +    return new Promise(resolve =&gt; {
&gt; &gt; &gt; +        setTimeout(() =&gt; {
&gt; &gt; &gt; +            requestAnimationFrame(resolve);
&gt; &gt; &gt; +        }, 500);
&gt; &gt; &gt; +    });
&gt; &gt; &gt; +}
&gt; &gt; 
&gt; &gt; This looks very similar to code in UIHelpers.js. Please use that.
&gt; Unfortunately the tests timeout when using the original function in
&gt; ui-helpers.js, so this one is needed.

Did you figure out why?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834805</commentid>
    <comment_count>43</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-01-27 19:21:05 -0800</bug_when>
    <thetext>(In reply to Nikos Mouchtaris from comment #41)

&gt; &gt; In a previous response, you said that the lack of symmetry between vertical
&gt; &gt; and horizontal was about history swiping. But this function is called for
&gt; &gt; non-root nodes, and there&apos;s no code here that looks at whether the node is a
&gt; &gt; root node, or consults scrollingTree-&gt;mainFrameCanRubberBandOnSide().
&gt; 
&gt; Adjusted this area so that we have same behavior as Firefox and Chrome.

Is there a test for this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835179</commentid>
    <comment_count>44</comment_count>
      <attachid>450197</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-01-28 16:29:59 -0800</bug_when>
    <thetext>Comment on attachment 450197
Patch

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

Please file followup bugs on the testing-related tasks: 1. Testing history swipe. 2. Removing mouseWheelScrollAndWait(). 3. Making the tests more like other fast/scrolling/ tests

&gt; Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.cpp:413
&gt; +        filteredDelta.setWidth(horizontalOverscrollBehaviorPreventsPropagation() || (verticalOverscrollBehaviorPreventsPropagation() &amp;&amp; !biasedDelta.width()) ? 0 : filteredDelta.width());
&gt; +        filteredDelta.setHeight(verticalOverscrollBehaviorPreventsPropagation() || (horizontalOverscrollBehaviorPreventsPropagation() &amp;&amp; !biasedDelta.height()) ? 0 : filteredDelta.height());

I&apos;d write these with an if (). It&apos;s odd to set the value to itself.

&gt; Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.h:166
&gt; +    PlatformWheelEvent eventForPropogation(const PlatformWheelEvent&amp;) const;

eventForPropogation -&gt; eventForPropagation

&gt; LayoutTests/fast/scrolling/mac/async-overscroll-behavior-element.html:41
&gt; +var overscrollDatas = [[&quot;auto&quot;, &quot;auto&quot;, true, true],
&gt; +                        [&quot;contain&quot;, &quot;auto&quot;, false, true],
&gt; +                        [&quot;none&quot;, &quot;auto&quot;, false, true],
&gt; +                        [&quot;auto&quot;, &quot;contain&quot;, true, false],
&gt; +                        [&quot;contain&quot;, &quot;contain&quot;, false, false],
&gt; +                        [&quot;none&quot;, &quot;contain&quot;, false, false],
&gt; +                        [&quot;auto&quot;, &quot;none&quot;, true, false],
&gt; +                        [&quot;contain&quot;, &quot;none&quot;, false, false],
&gt; +                        [&quot;none&quot;, &quot;none&quot;, false, false]];

This is really hard to read. Variable can be a const.

Might be better to rewrite this as a js-test-pre/post-style test, not a WPT style test.

&gt; LayoutTests/fast/scrolling/mac/async-overscroll-behavior-element.html:47
&gt; +    // Try various methods to ensure the element position is reset immediately.
&gt; +    scroller.scrollLeft = 300;
&gt; +    scroller.scrollTop = 300;
&gt; +    scroller.scrollTo(300, 300);

Why the uncertainty? Look at other scrolling tests to see how to do this.

&gt; LayoutTests/fast/scrolling/mac/async-overscroll-behavior-element.html:66
&gt; +                assert_equals(root.scrollLeft &gt; 0, propagateX, &apos;Continue up the horizontal scroll chaining&apos;);

Mentions chaining.

&gt; LayoutTests/fast/scrolling/mac/async-overscroll-behavior-iframe.html:35
&gt; +    var overscrollDatas = [[&quot;auto&quot;, &quot;auto&quot;, true, true],

Same comments as the previous test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835181</commentid>
    <comment_count>45</comment_count>
      <attachid>450197</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-01-28 16:37:11 -0800</bug_when>
    <thetext>Comment on attachment 450197
Patch

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

&gt; LayoutTests/fast/scrolling/mac/async-overscroll-behavior-iframe.html:2
&gt; +

Blank line here, not in the other test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835186</commentid>
    <comment_count>46</comment_count>
      <attachid>450289</attachid>
    <who name="Nikos Mouchtaris">nmouchtaris</who>
    <bug_when>2022-01-28 16:55:10 -0800</bug_when>
    <thetext>Created attachment 450289
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835220</commentid>
    <comment_count>47</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-01-28 18:57:50 -0800</bug_when>
    <thetext>Committed r288777 (246558@main): &lt;https://commits.webkit.org/246558@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 450289.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837926</commentid>
    <comment_count>48</comment_count>
      <attachid>450289</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-02-06 12:18:20 -0800</bug_when>
    <thetext>Comment on attachment 450289
Patch

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

&gt; Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.cpp:415
&gt; +        if(horizontalOverscrollBehaviorPreventsPropagation() || (verticalOverscrollBehaviorPreventsPropagation() &amp;&amp; !biasedDelta.width()))
&gt; +           filteredDelta.setWidth(0);
&gt; +        if(verticalOverscrollBehaviorPreventsPropagation() || (horizontalOverscrollBehaviorPreventsPropagation() &amp;&amp; !biasedDelta.height()))
&gt; +           filteredDelta.setHeight(0);

Missing spaces here after the &quot;if&quot;.

&gt; Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.h:163
&gt; +    OverscrollBehavior horizontalOverscrollBehavior() const { return m_scrollableAreaParameters.horizontalOverscrollBehavior; }
&gt; +    OverscrollBehavior verticalOverscrollBehavior() const { return m_scrollableAreaParameters.verticalOverscrollBehavior; }

Not new to this patch, but this design where we have separate getters for each of the ScrollableAreaParameters isn’t really good. We literally have 11 of these. One small thing that’s good about them is that some are public and some protected. But for the protected one at least, instead a single getter that returns a const&amp; would be better. The callers don’t need a cover function for each to abstract away that these are part of the scrollable area parameters, does it.

This patch leads to difficult-to-maintain code where things are repeated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837927</commentid>
    <comment_count>49</comment_count>
      <attachid>450289</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-02-06 12:18:43 -0800</bug_when>
    <thetext>Comment on attachment 450289
Patch

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

&gt;&gt; Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.h:163
&gt;&gt; +    OverscrollBehavior verticalOverscrollBehavior() const { return m_scrollableAreaParameters.verticalOverscrollBehavior; }
&gt; 
&gt; Not new to this patch, but this design where we have separate getters for each of the ScrollableAreaParameters isn’t really good. We literally have 11 of these. One small thing that’s good about them is that some are public and some protected. But for the protected one at least, instead a single getter that returns a const&amp; would be better. The callers don’t need a cover function for each to abstract away that these are part of the scrollable area parameters, does it.
&gt; 
&gt; This patch leads to difficult-to-maintain code where things are repeated.

I meant &quot;this pattern&quot;, not &quot;this patch&quot;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416742</attachid>
            <date>2020-12-24 03:21:03 -0800</date>
            <delta_ts>2020-12-24 03:25:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220139-20201224192102.patch</filename>
            <type>text/plain</type>
            <size>87391</size>
            <attacher name="cathiechen">cathiechen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNjI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjI3NGY3YzJlMzk3MmZh
ZDdjOTJjNThmZWJjM2I5MWZlZTYwZmVjZS4uYmE4OTVjNjg4OTlhMWMwYjBhOTIzZmQ0NDUxM2Rm
ZDRjMjNjZDYzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNiBAQAorMjAyMC0xMi0yNCAgQ2F0
aGllIENoZW4gIDxjYXRoaWVjaGVuQGlnYWxpYS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IENT
UyBvdmVyc2Nyb2xsLWJlaGF2aW9yIG9uIE1hYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwMTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQmFzZWQgb24gRnLDqWTDqXJpYyBXYW5nJ3MgcGF0Y2guCisK
KyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIG92ZXJzY3JvbGwtYmVoYXZpb3Ig
b24gTWFjLgorICAgICAgICBBY2NvcmRpbmcgdG8gWzFdLCB0aGVyZSBhcmUgdHdvIGtpbmRzIG9m
IGFjdGlvbnM6IG5vbi1sb2NhbCBib3VuZGFyeSBkZWZhdWx0IGFjdGlvbnMgYW5kIGxvY2FsIGJv
dW5kYXJ5IGRlZmF1bHQgYWN0aW9ucy4KKyAgICAgICAgSW4gV2ViS2l0IG1hYywgdGhlIHJ1YmJl
ciBiYW5kaW5nIGVmZm9ydCBpcyBiZWxvbmdlZCB0byBsb2NhbCBib3VuZGFyeSBkZWZhdWx0IGFj
dGlvbnMuIFRoZSBzY3JvbGwgY2hhaW5pbmcgYW5kIHN3aXBlCisgICAgICAgIGdlc3R1cmVzICh0
cmlnZ2VyIGdvIGJhY2sgb3IgZ28gZm9yd2FyZCBhY3Rpb25zKSBhcmUgYmVsb25nZWQgdG8gbm9u
LWxvY2FsIGJvdW5kYXJ5IGRlZmF1bHQgYWN0aW9ucy4KKyAgICAgICAgMS4gVG8gaGFuZGxlIHRo
ZSBydWJiZXIgYmFuZGluZyBlZmZlY3QsIHNob3VsZFN0b3BIb3Jpem9udGFsU3RyZWNoKCkgYW5k
IHNob3VsZFN0b3BWZXJ0aWNhbFN0cmVjaCgpIGFyZSBhZGRlZCB0byBkZWNpZGUKKyAgICAgICAg
d2hldGhlciB0aGUgcnViYmVyIGJhbmRpbmcgZWZmb3J0IGlzIGFsbG93ZWQgb3Igbm90LgorICAg
ICAgICAyLiBUbyBibG9jayBzY3JvbGwgY2hhaW5pbmcgYWN0aW9ucyBpbiBkaWZmZXJlbnQgc2Ny
b2xsIG1vZGVzLgorICAgICAgICAgIC0gRm9yIGFzeW5jaHJvbm91cyBzY3JvbGxpbmcsIGl0J3Mg
aGFuZGxlZCBpbiBTY3JvbGxpbmdUcmVlOjpoYW5kbGVXaGVlbEV2ZW50V2l0aE5vZGUoKSwgYWNj
b3JkaW5nIHRvIHRoZSB2YWx1ZSBvZgorICAgICAgICAgIG92ZXJzY3JvbGwtYmVoYXZpb3IsIGl0
IGJsb2NrcyB0aGUgc2Nyb2xsIGNoYWluaW5nIGlmIG5lZWRlZCwgdGhlIHJlc3VsdCB3b3VsZCBi
ZSBhZGRlZCB0byBtX2xhdGNoaW5nQ29udHJvbGxlcgorICAgICAgICAgIGFuZCBtaWdodCBiZSBy
ZXVzZWQuCisgICAgICAgICAgLSBGb3Igc3luY2hyb25vdXMgc2Nyb2xsaW5nLCBpZiBXSEVFTF9F
VkVOVF9MQVRDSElORyBpcyBkaXNhYmxlZCwgaXQgaGFuZGxlcyBvdmVyc2Nyb2xsLWJlaGF2aW9y
IGluIGhhbmRsZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94KCkuCisgICAgICAg
ICAgSWYgV0hFRUxfRVZFTlRfTEFUQ0hJTkcgaXMgZW5hYmxlZC4gT3ZlcnNjcm9sbC1iZWhhdmlv
ciBpcyBoYW5kbGVkIGluIGZpbmRFbmNsb3NpbmdTY3JvbGxhYmxlQ29udGFpbmVyKCkuCisgICAg
ICAgICAgSXQgYWRkZWQgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIHRvIEZyYW1lU3RhdGUgdG8gaW5k
aWNhdGUgd2hldGhlciB0aGUgY3VycmVudCBsYXRjaGVkIG5vZGUgc2hvdWxkIGJsb2NrIHNjcm9s
bCBjaGFpbmluZy4KKyAgICAgICAgICBJZiB0aGUgY3VycmVudCBmcmFtZSBpcyBhIHN1YmZyYW1l
LCBpdCBwYXNzZXMgaXRzIFNjcm9sbENoYWluaW5nQmxvY2tlciB0byB0aGUgcGFyZW50ZnJhbWUs
IGFuZCBldmVudHVhbGx5CisgICAgICAgICAgbGV0IHRoZSBtYWluZnJhbWUgZGVjaWRlIHdoZXRo
ZXIgc2hvdWxkIHRyaWdnZXIgc3dpcGUgZ2VzdHVyZXMgb3Igbm90LgorICAgICAgICAzLiBUaGUg
c3dpcGUgZ2VzdHVyZXMuCisgICAgICAgICAgSWYgdGhlIG1haW5mcmFtZSByZWFjaGVzIGl0cyBz
Y3JvbGwgZWRnZXMsIHRoZXJlIHdpbGwgYmUgc3dpcGUgZ2VzdHVyZXMgZXZlbiBpZiBvdmVyc2Ny
b2xsLWJlaGF2aW9yJ3MgdmFsdWUgaXMgbm9uZS4KKyAgICAgICAgICBUaGlzIGJlaGF2aW9yIGlz
IG5vdCBzdXBvb3J0ZWQgaW4gV0sxIGFuZCBXSzIncyBzeW5jaHJvbm91cyBzY3JvbGwgd2l0aCBX
SEVFTF9FVkVOVF9MQVRDSElORyBvZmYuCisKKyAgICAgICAgWzFdIGh0dHBzOi8vZHJhZnRzLmNz
c3dnLm9yZy9jc3Mtb3ZlcnNjcm9sbC0xLyNvdmVyc2Nyb2xsLWJlaGF2aW9yLXByb3BlcnRpZXMK
KworICAgICAgICBUZXN0czogZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVt
ZW50Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZp
b3ItaWZyYW1lLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwt
YmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9z
Y3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLmh0bWwKKwor
ICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
SGFuZGxlcjo6dXBkYXRlU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKTogVXBkYXRlZCB0aGUgdmFsdWUg
b2YgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIGZyb20gU2Nyb2xsYWJsZUFyZWEncyBvdmVyc2Nyb2xs
LWJlaGF2aW9yLgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpzaG91bGRCbG9ja1Nj
cm9sbENoYWluaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZVBhcmVudEZyYW1lU2Nyb2xs
Q2hhaW5pbmdCbG9ja2VyKTogQXBwbGllZCB0aGUgY3VycmVudCBmcmFtZSdzIG92ZXJzY3JvbGwt
YmVoYXZpb3IgdmFsdWUgdG8gU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyCisgICAgICAgIGFuZCBwYXNz
IHRoaXMgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIHRvIHBhcmVudCBmcmFtZS4KKyAgICAgICAgKFdl
YkNvcmU6OmFkanVzdERlbHRhcyk6CisgICAgICAgIChXZWJDb3JlOjppc1Nyb2xsQ2hhaW5pbmdT
dG9wcGVkQnlPdmVyc2Nyb2xsQmVoYXZpb3IpOiAKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFu
ZGxlcjo6aGFuZGxlV2hlZWxFdmVudEludGVybmFsKTogU3RvcCBoYW5kbGluZyB3aGVlbEV2ZW50
IGZvciBGcmFtZVZpZXcgaWYgaXNTcm9sbENoYWluaW5nU3RvcHBlZEJ5T3ZlcnNjcm9sbEJlaGF2
aW9yLgorICAgICAgICAoV2ViQ29yZTo6ZGlkU2Nyb2xsSW5TY3JvbGxhYmxlQXJlYSk6IEFkanVz
dCB3aGVlbEV2ZW50J3MgZGVsdGFzIGFjY29yZGluZyB0byB0aGUgdmFsdWUgb2YgU2Nyb2xsQ2hh
aW5pbmdCbG9ja2VyLgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVl
bEV2ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2luZ0JveCk6IEFkanVzdCBmaWx0ZXJlZFBsYXRmb3Jt
RGVsdGEgYWNjb3JkaW5nIHRvIG92ZXJzY3JvbGwtYmVoYXZpb3IncyB2YWx1ZSwKKyAgICAgICAg
YW5kIHN0b3Agc2Nyb2xsLWNoYWluaW5nIGlmIG5lY2Vzc2FyeSBmb3IgdGhlIHNjZW5hcmlvIG9m
IHN5bmNocm9ub3VzIHNjcm9sbCB3aXRoIFdIRUVMX0VWRU5UX0xBVENISU5HIGlzIG9mZi4KKyAg
ICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZGVmYXVsdFdoZWVsRXZlbnRIYW5kbGVyKTog
QWRqdXN0IGZpbHRlcmVkUGxhdGZvcm1EZWx0YSBhY2NvcmRpbmcgdG8gb3ZlcnNjcm9sbC1iZWhh
dmlvcidzIHZhbHVlLAorICAgICAgICBhbmQgcGFzcyBTY3JvbGxDaGFpbmluZ0Jsb2NrZXIgdG8g
cGFyZW50IGZyYW1lIGlmIG5lZWRlZC4KKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5oOgor
ICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmll
dzo6aG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvciBjb25zdCk6IFJldHVybnMgZG9jdW1lbnRF
bGVtZW50J3MgdmFsdWUgb2Ygb3ZlcnNjcm9sbC1iZWhhdmlvci14LgorICAgICAgICBJZiBkb2N1
bWVudEVsZW1lbnQgaXMgbm90IGEgc2Nyb2xsIGNvbnRhaW5lciwgcmV0dXJucyBPdmVyc2Nyb2xs
QmVoYXZpb3I6OkF1dG8uCisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnZlcnRpY2FsT3Zl
cnNjcm9sbEJlaGF2aW9yIGNvbnN0KTogRGl0dG8uCisgICAgICAgICogcGFnZS9GcmFtZVZpZXcu
aDoKKyAgICAgICAgKiBwYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW06CisgICAgICAgIChXZWJD
b3JlOjpmaW5kRW5jbG9zaW5nU2Nyb2xsYWJsZUNvbnRhaW5lcik6IEFwcGx5IG92ZXJzY3JvbGwt
YmVoYXZpb3IgdG8gU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIGFuZCBzdG9wIHRoZSBzY3JvbGwgY2hh
aW5pbmcgaWYgbmVlZGVkCisgICAgICAgIGZvciB0aGUgc2NlbmFyaW8gb2Ygc3luY2hyb25vdXMg
c2Nyb2xsIHdpdGggV0hFRUxfRVZFTlRfTEFUQ0hJTkcgaXMgb24uCisgICAgICAgIChXZWJDb3Jl
OjpFdmVudEhhbmRsZXI6OmRldGVybWluZVdoZWVsRXZlbnRUYXJnZXQpOiBTdG9yZXMgU2Nyb2xs
Q2hhaW5pbmdCbG9ja2VyIGluIHNjcm9sbExhdGNoaW5nQ29udHJvbGxlcgorICAgICAgICAqIHBh
Z2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0U2Nyb2xsaW5nTm9kZVNjcm9sbGFi
bGVBcmVhR2VvbWV0cnkpOiBVcGRhdGUgb3ZlcnNjcm9sbC1iZWhhdmlvciB2YWx1ZXMgaW4gc2Ny
b2xsUGFyYW1ldGVycy4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxMYXRjaGluZ0Nv
bnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVy
Ojp1cGRhdGVBbmRGZXRjaExhdGNoaW5nU3RhdGVGb3JGcmFtZSk6IEFkZCBTY3JvbGxDaGFpbmlu
Z0Jsb2NrZXIgdG8gRnJhbWVTdGF0ZS4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbExhdGNoaW5n
Q29udHJvbGxlcjo6Z2V0U2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIGNvbnN0KTogUmV0dXJucyBTY3Jv
bGxDaGFpbmluZ0Jsb2NrZXIgb2YgZnJhbWUuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxMYXRj
aGluZ0NvbnRyb2xsZXI6OnVwZGF0ZVNjcm9sbENoYWluaW5nQmxvY2tlcik6IFVwZGF0ZXMgU2Ny
b2xsQ2hhaW5pbmdCbG9ja2VyIG9mIGZyYW1lLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsTGF0
Y2hpbmdDb250cm9sbGVyOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9T
Y3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdDb29yZGluYXRvclR5cGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJl
YVBhcmFtZXRlcnM6Om9wZXJhdG9yPT0gY29uc3QpOiBBZGRlZCBob3Jpem9udGFsT3ZlcnNjcm9s
bEJlaGF2aW9yIGFuZCB2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvci4KKyAgICAgICAgKiBwYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z1RyZWU6OmhhbmRsZVdoZWVsRXZlbnRXaXRoTm9kZSk6IFVwZGF0ZSBTY3JvbGxDaGFpbmluZ0Js
b2NrZXIgYWNjb3JkaW5nIHRvIHRoZSBvdmVyc2Nyb2xsLWJlaGF2aW9yIHZhbHVlcywKKyAgICAg
ICAgc3RvcCB0aGUgc2Nyb2xsIGNoYWluaW5nIGlmIG5lZWRlZCwgYW5kIGlmIGl0J3MgaG9yaXpv
bnRhbCBzY3JvbGwgYW5kIHdpbGxXaGVlbEV2ZW50U3RhcnRTd2lwZUdlc3R1cmUsIGxldCBpdCB0
cmlnZ2VyIHN3aXBlIGdlc3R1cmUuCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGU6Omhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IgY29uc3QpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjp2ZXJ0aWNhbE92
ZXJzY3JvbGxCZWhhdmlvciBjb25zdCk6IERpdHRvLgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmg6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcv
bWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMuaDoKKyAgICAgICAgKiBw
YWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVN
YWM6OmFsbG93c0hvcml6b250YWxTdHJldGNoaW5nIGNvbnN0KTogSWYgb3ZlcnNjcm9sbC1iZWhh
dmlvci14OiBub25lLCB0aGUgc2Nyb2xsIHN0cmV0Y2ggc2hvdWxkIGJlIGJsb2NrZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjphbGxv
d3NWZXJ0aWNhbFN0cmV0Y2hpbmcgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OnNob3VsZFN0b3BIb3Jpem9udGFs
U3RyZWNoIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZURlbGVnYXRlTWFjOjpzaG91bGRTdG9wVmVydGljYWxTdHJlY2ggY29uc3QpOiBE
aXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtV2hlZWxFdmVudDo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVy
dGljYWwpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFR5cGVzLmg6CisgICAgICAgICogcGxh
dGZvcm0vU2Nyb2xsYWJsZUFyZWEuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGFibGVBcmVh
Ojpob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGFibGVBcmVhOjp2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvciBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5oOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsQ29udHJvbGxlckNsaWVudDo6c2hvdWxkU3RvcEhvcml6b250YWxTdHJlY2ggY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQ29udHJvbGxlckNsaWVudDo6c2hvdWxkU3Rv
cFZlcnRpY2FsU3RyZWNoIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TY3JvbGxD
b250cm9sbGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQ29udHJvbGxlcjo6aGFuZGxl
V2hlZWxFdmVudCk6IFN0b3Agc2Nyb2xsIHN0cmVjaGluZyBpZiBuZWVkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxDb250cm9sbGVyOjpkaXJlY3Rpb25Gcm9tRXZlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsQ29udHJvbGxlcjo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGlj
YWwpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5o
OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTWFjOjpzaG91bGRTdG9wSG9yaXpvbnRhbFN0cmVjaCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck1hYzo6c2hvdWxkU3RvcFZl
cnRpY2FsU3RyZWNoIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6Omhvcml6b250YWxPdmVyc2Nyb2xsQmVo
YXZpb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnZlcnRpY2FsT3Zl
cnNjcm9sbEJlaGF2aW9yIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
aDoKKwogMjAyMC0xMi0xMCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAg
ICAgICAgSUNFIGRvZXMgbm90IHJlc29sdmUgZm9yIGB0dXJuc2AgcmVsYXkgY2FuZGlkYXRlcyBy
b290ZWQgaW4gTGV0c0VuY3J5cHQgQ0EKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYzM5NDRmNzg0ZmRiMzRhOWY4ZGRl
OGNmYjU1NDliZWYzYjkyMWUxZC4uZmRmZTBkYjRmNmQzZmQ2Zjk5ZjE4Y2M3ZTgzZTE4ODczZTNh
ZmEwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMC0xMi0yNCAgQ2F0aGllIENoZW4g
IDxjYXRoaWVjaGVuQGlnYWxpYS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IENTUyBvdmVyc2Ny
b2xsLWJlaGF2aW9yIG9uIE1hYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjIwMTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQmFzZWQgb24gRnLDqWTDqXJpYyBXYW5nJ3MgcGF0Y2guCisKKyAgICAgICAg
KiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1l
bnRDb2RlcjxTY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnM+OjplbmNvZGUpOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPFNjcm9sbGFibGVBcmVhUGFyYW1ldGVycz46OmRlY29kZSk6CisgICAg
ICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJ
T1MubW06CisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdh
dGVJT1M6OmNvbW1pdFN0YXRlQWZ0ZXJDaGlsZHJlbik6CisKIDIwMjAtMTItMTAgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIElDRSBkb2VzIG5vdCByZXNvbHZl
IGZvciBgdHVybnNgIHJlbGF5IGNhbmRpZGF0ZXMgcm9vdGVkIGluIExldHNFbmNyeXB0IENBCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggYWNlOThjNTEyYjAxN2UzY2Y5Y2RlM2IxZWJm
NjFlMTE0MGM3YTU4Zi4uZWE5OTQ4NjcwNzQ0NDA1ZTlkM2E5OWVmNWUxNTAyN2YyMDA2NjhjMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIwLTEyLTI0
ICBDYXRoaWUgQ2hlbiAgPGNhdGhpZWNoZW5AaWdhbGlhLmNvbT4KKworICAgICAgICBJbXBsZW1l
bnQgQ1NTIG92ZXJzY3JvbGwtYmVoYXZpb3Igb24gTWFjCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjAxMzkKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCYXNlZCBvbiBGcsOpZMOpcmljIFdhbmcncyBwYXRj
aC4KKworICAgICAgICBOZWVkIHRvIGZpbmQgYSB3YXkgdG8gYmxvY2sgdGhlIGNyb3NzLWZyYW1l
IHNjcm9sbCBjaGFpbmluZyBpbiBXSzEuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3
Lm1tOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBzY3JvbGxXaGVlbDpdKToKKwogMjAyMC0xMi0w
OSAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09T
XSBDaGFuZ2UgVW5pdmVyc2FsIEFjY2VzcyB6b29tIGluIHRoZSBVSSBwcm9jZXNzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggNTYzMjNiODViNWJlMGU4ODlkYTE4YmVhZjUw
MTQ4ZmFhYmI4MTFkMy4uYjMzZDQ1OGM0NTg4YTllODUwZjYxOGFlNTFhYTE1NDk5ODU0OTc4NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtMjgyNyw2ICsyODI3LDk3IEBA
IGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxF
dmVudCYgd2hlZWxFdmVudCwgT3B0aW9uCiAgICAgcmV0dXJuIGhhbmRsZWQ7CiB9CiAKK3ZvaWQg
RXZlbnRIYW5kbGVyOjp1cGRhdGVTY3JvbGxDaGFpbmluZ0Jsb2NrZXIoU2Nyb2xsYWJsZUFyZWEq
IHNjcm9sbGFibGVBcmVhLCBTY3JvbGxDaGFpbmluZ0Jsb2NrZXImIHNjcm9sbENoYWluaW5nQmxv
Y2tlcikKK3sKKyAgICBpZiAoIXNjcm9sbGFibGVBcmVhKQorICAgICAgICByZXR1cm47CisgICAg
c2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLmJsb2NrWCB8PSBzY3JvbGxhYmxlQXJlYS0+aG9yaXpvbnRh
bE92ZXJzY3JvbGxCZWhhdmlvcigpICE9IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0bzsKKyAgICBz
Y3JvbGxDaGFpbmluZ0Jsb2NrZXIuYmxvY2tZIHw9IHNjcm9sbGFibGVBcmVhLT52ZXJ0aWNhbE92
ZXJzY3JvbGxCZWhhdmlvcigpICE9IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0bzsKK30KKworYm9v
bCBFdmVudEhhbmRsZXI6OnNob3VsZEJsb2NrU2Nyb2xsQ2hhaW5pbmcoY29uc3QgUGxhdGZvcm1X
aGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBjb25zdCBTY3JvbGxDaGFpbmluZ0Jsb2NrZXImIHNjcm9s
bENoYWluaW5nQmxvY2tlcikKK3sKKyAgICBhdXRvIGJpYXNlZERlbHRhID0gUGxhdGZvcm1XaGVl
bEV2ZW50Ojp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbCh3aGVlbEV2ZW50LmRlbHRh
KCkpOworICAgIGlmICgoc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLmJsb2NrWCAmJiBzY3JvbGxDaGFp
bmluZ0Jsb2NrZXIuYmxvY2tZKQorICAgICAgICB8fCAoc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLmJs
b2NrWCAmJiAhYmlhc2VkRGVsdGEuaGVpZ2h0KCkpCisgICAgICAgIHx8IChzY3JvbGxDaGFpbmlu
Z0Jsb2NrZXIuYmxvY2tZICYmICFiaWFzZWREZWx0YS53aWR0aCgpKSkKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgcmV0dXJuIGZhbHNlOworfQorCisjaWYgRU5BQkxFKFdIRUVMX0VWRU5UX0xB
VENISU5HKQorc3RhdGljIHZvaWQgdXBkYXRlUGFyZW50RnJhbWVTY3JvbGxDaGFpbmluZ0Jsb2Nr
ZXIoU2Nyb2xsYWJsZUFyZWEqIHNjcm9sbGFibGVBcmVhLCBGcmFtZSYgZnJhbWUsIFNjcm9sbENo
YWluaW5nQmxvY2tlciYgc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKQoreworICAgIGF1dG8qIHBhcmVu
dCA9IGZyYW1lLnRyZWUoKS5wYXJlbnQoKTsKKyAgICBpZiAoIXNjcm9sbGFibGVBcmVhKQorICAg
ICAgICBzY3JvbGxhYmxlQXJlYSA9IGZyYW1lLnZpZXcoKTsKKyAgICBpZiAoIWZyYW1lLnBhZ2Uo
KSB8fCAhcGFyZW50IHx8ICFzY3JvbGxhYmxlQXJlYSkKKyAgICAgICAgcmV0dXJuOworICAgIEV2
ZW50SGFuZGxlcjo6dXBkYXRlU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKHNjcm9sbGFibGVBcmVhLCBz
Y3JvbGxDaGFpbmluZ0Jsb2NrZXIpOworICAgIGZyYW1lLnBhZ2UoKS0+c2Nyb2xsTGF0Y2hpbmdD
b250cm9sbGVyKCkudXBkYXRlU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKCpwYXJlbnQsIHNjcm9sbENo
YWluaW5nQmxvY2tlcik7Cit9CisjZW5kaWYKKworc3RhdGljIHZvaWQgYWRqdXN0RGVsdGFzKGNv
bnN0IFNjcm9sbENoYWluaW5nQmxvY2tlciYgc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLCBGbG9hdFNp
emUmIGZpbHRlcmVkUGxhdGZvcm1EZWx0YSkKK3sKKyAgICAvLyBJZiB3aGVlbEV2ZW50IGlzIGJp
YXMgdG8gaG9yaXpvbnRhbCwgZGVsdGFZIHNob3VsZCBiZSB6ZXJvIHRvbywgb3RoZXJ3aXNlIGl0
IHdpbGwgcGVyZm9ybSB2ZXJ0aWNhbCBzY3JvbGwuCisgICAgLy8gVmljZSB2ZXJzYS4KKyAgICBh
dXRvIGJpYXNlZERlbHRhID0gUGxhdGZvcm1XaGVlbEV2ZW50Ojp3aGVlbERlbHRhQmlhc2luZ1Rv
d2FyZHNWZXJ0aWNhbChmaWx0ZXJlZFBsYXRmb3JtRGVsdGEpOworICAgIGlmIChzY3JvbGxDaGFp
bmluZ0Jsb2NrZXIuYmxvY2tYKSB7CisgICAgICAgIGZpbHRlcmVkUGxhdGZvcm1EZWx0YS5zZXRX
aWR0aCgwKTsKKyAgICAgICAgaWYgKCFiaWFzZWREZWx0YS5oZWlnaHQoKSkKKyAgICAgICAgICAg
IGZpbHRlcmVkUGxhdGZvcm1EZWx0YS5zZXRIZWlnaHQoMCk7CisgICAgfQorICAgIGlmIChzY3Jv
bGxDaGFpbmluZ0Jsb2NrZXIuYmxvY2tZKSB7CisgICAgICAgIGZpbHRlcmVkUGxhdGZvcm1EZWx0
YS5zZXRIZWlnaHQoMCk7CisgICAgICAgIGlmICghYmlhc2VkRGVsdGEud2lkdGgoKSkKKyAgICAg
ICAgICAgIGZpbHRlcmVkUGxhdGZvcm1EZWx0YS5zZXRXaWR0aCgwKTsKKyAgICB9Cit9CisKK3N0
YXRpYyBib29sIGlzU3JvbGxDaGFpbmluZ1N0b3BwZWRCeU92ZXJzY3JvbGxCZWhhdmlvcihXZWFr
UHRyPFNjcm9sbGFibGVBcmVhPiBzY3JvbGxhYmxlQXJlYSwgRnJhbWUmIGZyYW1lLCBQbGF0Zm9y
bVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIFNjcm9sbENoYWluaW5nQmxvY2tlciBzY3JvbGxDaGFp
bmluZ0Jsb2NrZXIsIGJvb2wmIGhhbmRsZWRFdmVudCkKK3sKKyNpZiBFTkFCTEUoV0hFRUxfRVZF
TlRfTEFUQ0hJTkcpCisgICAgaWYgKCFzY3JvbGxhYmxlQXJlYSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgRmxvYXRTaXplIGZpbHRlcmVkUGxhdGZvcm1EZWx0YSh3aGVlbEV2ZW50LmRl
bHRhWCgpLCB3aGVlbEV2ZW50LmRlbHRhWSgpKTsKKyAgICBpZiAoc2Nyb2xsYWJsZUFyZWEgIT0g
ZnJhbWUudmlldygpKSB7CisgICAgICAgIC8vIFdoZWVsIGV2ZW50IGlzIGdvaW5nIHRvIGJlIGhh
bmRsZWQgYnkgRnJhbWVWaWV3IGluIHByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKCksCisg
ICAgICAgIC8vIHNob3VsZCBsZXQgc2Nyb2xsYWJsZUFyZWEncyBvdmVyc2Nyb2xsLWJlaGF2aW9y
IGVmZmVjdCBTY3JvbGxDaGFpbmluZ0Jsb2NrZXIuCisgICAgICAgIEV2ZW50SGFuZGxlcjo6dXBk
YXRlU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKHNjcm9sbGFibGVBcmVhLmdldCgpLCBzY3JvbGxDaGFp
bmluZ0Jsb2NrZXIpOworICAgIH0KKworICAgIGF1dG8gYmlhc2VkRGVsdGEgPSBQbGF0Zm9ybVdo
ZWVsRXZlbnQ6OndoZWVsRGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRpY2FsKHdoZWVsRXZlbnQuZGVs
dGEoKTsKKyAgICBpZiAoc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLmJsb2NrWCAmJiAhYmlhc2VkRGVs
dGEuaGVpZ2h0KCkpIHsKKyAgICAgICAgLy8gSWYgdGhlIGhvcml6b250YWwgc2Nyb2xsIGNoYWlu
aW5nIGlzIGJsb2NrZWQgYnkgb3ZlcnNjcm9sbC1iZWhhdmlvciBpbiBhIHN1YmZyYW1lLgorICAg
ICAgICAvLyBJdCBwcm9wYWdhdGVzIGl0cyBTY3JvbGxDaGFpbmluZ0Jsb2NrZXIgdG8gcGFyZW50
IGZyYW1lcyBhbmQgZXZlbnR1YWxseSBsZXQgbWFpbmZyYW1lCisgICAgICAgIC8vIGRlY2lkZSB3
aGV0aGVyIG5lZWQgdG8gdHJpZ2dlciBhIHN3aXBlIGdlc3R1cmUgb3Igbm90LgorICAgICAgICBp
ZiAoZnJhbWUuaXNNYWluRnJhbWUoKSkgeworICAgICAgICAgICAgaGFuZGxlZEV2ZW50ID0gdHJ1
ZTsKKyAgICAgICAgICAgIC8vIEluIG1haW4gZnJhbWUsIGlmIHRoZSBzY3JvbGwgcG9zaXRpb24g
cmVhY2hlcyBvdCBpdHMgZWRnZXMsIHRyaWdnZXIgdGhlIHN3aXBlIGdlc3R1cmUsIG90aGVyd2lz
ZSBub3QuCisgICAgICAgICAgICBhdXRvIHBvc2l0aW9uWCA9IHNjcm9sbGFibGVBcmVhLT5zY3Jv
bGxQb3NpdGlvbigpLngoKTsKKyAgICAgICAgICAgIGlmICgocG9zaXRpb25YIDw9IHNjcm9sbGFi
bGVBcmVhLT5taW5pbXVtU2Nyb2xsUG9zaXRpb24oKS54KCkgJiYgZmlsdGVyZWRQbGF0Zm9ybURl
bHRhLndpZHRoKCkgPiAwKQorICAgICAgICAgICAgICAgIHx8IChwb3NpdGlvblggPj0gc2Nyb2xs
YWJsZUFyZWEtPm1heGltdW1TY3JvbGxQb3NpdGlvbigpLngoKSAmJiBmaWx0ZXJlZFBsYXRmb3Jt
RGVsdGEud2lkdGgoKSA8IDApKQorICAgICAgICAgICAgICAgIGhhbmRsZWRFdmVudCA9IGZhbHNl
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdXBkYXRlUGFyZW50RnJhbWVTY3JvbGxD
aGFpbmluZ0Jsb2NrZXIoc2Nyb2xsYWJsZUFyZWEuZ2V0KCksIGZyYW1lLCBzY3JvbGxDaGFpbmlu
Z0Jsb2NrZXIpOworICAgICAgICAgICAgaGFuZGxlZEV2ZW50ID0gZmFsc2U7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgaWYgKEV2ZW50SGFuZGxlcjo6c2hv
dWxkQmxvY2tTY3JvbGxDaGFpbmluZyh3aGVlbEV2ZW50LCBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIp
KSB7CisgICAgICAgIGhhbmRsZWRFdmVudCA9IHRydWU7CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKworICAgIGFkanVzdERlbHRhcyhzY3JvbGxDaGFpbmluZ0Jsb2NrZXIsIGZpbHRlcmVk
UGxhdGZvcm1EZWx0YSk7CisgICAgd2hlZWxFdmVudCA9IHdoZWVsRXZlbnQuY29weVdpdGhEZWx0
YXNBbmRWZWxvY2l0eShmaWx0ZXJlZFBsYXRmb3JtRGVsdGEud2lkdGgoKSwgZmlsdGVyZWRQbGF0
Zm9ybURlbHRhLmhlaWdodCgpLCB3aGVlbEV2ZW50LnNjcm9sbGluZ1ZlbG9jaXR5KCkpOworI2Vu
ZGlmCisgICAgcmV0dXJuIGZhbHNlOworfQorCiBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlV2hl
ZWxFdmVudEludGVybmFsKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgZXZlbnQsIE9wdGlvblNl
dDxXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBzPiBwcm9jZXNzaW5nU3RlcHMsIE9wdGlvblNldDxF
dmVudEhhbmRsaW5nPiYgaGFuZGxpbmcpCiB7CiAgICAgYXV0byogZG9jdW1lbnQgPSBtX2ZyYW1l
LmRvY3VtZW50KCk7CkBAIC0yOTE3LDExICszMDA4LDI2IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpo
YW5kbGVXaGVlbEV2ZW50SW50ZXJuYWwoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCwg
T3B0CiAgICAgYm9vbCBhbGxvd1Njcm9sbGluZyA9IHRydWU7CiAjaWYgRU5BQkxFKFdIRUVMX0VW
RU5UX0xBVENISU5HKQogICAgIGFsbG93U2Nyb2xsaW5nID0gbV9jdXJyZW50V2hlZWxFdmVudEFs
bG93c1Njcm9sbGluZyAmJiBtX2ZyYW1lLnBhZ2UoKS0+c2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVy
KCkubGF0Y2hpbmdBbGxvd3NTY3JvbGxpbmdJbkZyYW1lKG1fZnJhbWUsIHNjcm9sbGFibGVBcmVh
KTsKKyAgICBTY3JvbGxDaGFpbmluZ0Jsb2NrZXIgc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyID0gbV9m
cmFtZS5wYWdlKCktPnNjcm9sbExhdGNoaW5nQ29udHJvbGxlcigpLmdldFNjcm9sbENoYWluaW5n
QmxvY2tlcihtX2ZyYW1lKTsKICNlbmRpZgogICAgIGlmIChhbGxvd1Njcm9sbGluZykgewotICAg
ICAgICAvLyBGSVhNRTogcHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxpbmcoKSBpcyBvbmx5IGNh
bGxlZCBmb3IgRnJhbWVWaWV3IHNjcm9sbGluZywgbm90IG92ZXJmbG93IHNjcm9sbGluZywgd2hp
Y2ggaXMgY29uZnVzaW5nLgotICAgICAgICBoYW5kbGVkRXZlbnQgPSBwcm9jZXNzV2hlZWxFdmVu
dEZvclNjcm9sbGluZyhldmVudCwgc2Nyb2xsYWJsZUFyZWEsIGhhbmRsaW5nKTsKLSAgICAgICAg
cHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxTbmFwKGV2ZW50LCBzY3JvbGxhYmxlQXJlYSk7Cisg
ICAgICAgIFBsYXRmb3JtV2hlZWxFdmVudCBhZGp1c3RlZFdoZWVsRXZlbnQgPSBQbGF0Zm9ybVdo
ZWVsRXZlbnQoZXZlbnQpOworICAgICAgICBpZiAoIWlzU3JvbGxDaGFpbmluZ1N0b3BwZWRCeU92
ZXJzY3JvbGxCZWhhdmlvcihzY3JvbGxhYmxlQXJlYSwgbV9mcmFtZSwgYWRqdXN0ZWRXaGVlbEV2
ZW50LCBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIsIGhhbmRsZWRFdmVudCkpIHsKKyAgICAgICAgICAg
IC8vIEZJWE1FOiBwcm9jZXNzV2hlZWxFdmVudEZvclNjcm9sbGluZygpIGlzIG9ubHkgY2FsbGVk
IGZvciBGcmFtZVZpZXcgc2Nyb2xsaW5nLCBub3Qgb3ZlcmZsb3cgc2Nyb2xsaW5nLCB3aGljaCBp
cyBjb25mdXNpbmcuCisgICAgICAgICAgICBoYW5kbGVkRXZlbnQgPSBwcm9jZXNzV2hlZWxFdmVu
dEZvclNjcm9sbGluZyhhZGp1c3RlZFdoZWVsRXZlbnQsIHNjcm9sbGFibGVBcmVhLCBoYW5kbGlu
Zyk7CisgICAgICAgICAgICBwcm9jZXNzV2hlZWxFdmVudEZvclNjcm9sbFNuYXAoYWRqdXN0ZWRX
aGVlbEV2ZW50LCBzY3JvbGxhYmxlQXJlYSk7CisjaWYgIUVOQUJMRShXSEVFTF9FVkVOVF9MQVRD
SElORykKKyAgICAgICAgICAgIGlmICghaGFuZGxlZEV2ZW50ICYmIG1fZnJhbWUudmlldygpKSB7
CisgICAgICAgICAgICAgICAgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIHNjcm9sbENoYWluaW5nQmxv
Y2tlciA9IHsgbV9mcmFtZS52aWV3KCktPmhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSAh
PSBPdmVyc2Nyb2xsQmVoYXZpb3I6OkF1dG8sIG1fZnJhbWUudmlldygpLT52ZXJ0aWNhbE92ZXJz
Y3JvbGxCZWhhdmlvcigpICE9IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0byB9OworICAgICAgICAg
ICAgICAgIGlmIChzaG91bGRCbG9ja1Njcm9sbENoYWluaW5nKGFkanVzdGVkV2hlZWxFdmVudCwg
c2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKSkKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlZEV2ZW50
ID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyNlbmRpZgorICAgICAgICB9CisgICAgfSBlbHNlIGlm
ICghbV9mcmFtZS5pc01haW5GcmFtZSgpKSB7CisjaWYgRU5BQkxFKFdIRUVMX0VWRU5UX0xBVENI
SU5HKQorICAgICAgICB1cGRhdGVQYXJlbnRGcmFtZVNjcm9sbENoYWluaW5nQmxvY2tlcihzY3Jv
bGxhYmxlQXJlYS5nZXQoKSwgbV9mcmFtZSwgc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKTsKKyNlbmRp
ZgogICAgIH0KIAogICAgIHJldHVybiBoYW5kbGVkRXZlbnQ7CkBAIC0yOTM4LDIwICszMDQ0LDIy
IEBAIHN0YXRpYyB2b2lkIGhhbmRsZVdoZWVsRXZlbnRQaGFzZUluU2Nyb2xsYWJsZUFyZWEoU2Ny
b2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhCiAjZW5kaWYKIH0KIAotc3RhdGljIGJvb2wgZGlk
U2Nyb2xsSW5TY3JvbGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEsIGNv
bnN0IFdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpCitzdGF0aWMgYm9vbCBkaWRTY3JvbGxJblNjcm9s
bGFibGVBcmVhKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSwgY29uc3QgV2hlZWxFdmVu
dCYgd2hlZWxFdmVudCwgY29uc3QgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyJiBzY3JvbGxDaGFpbmlu
Z0Jsb2NrZXIpCiB7CisgICAgRmxvYXRTaXplIGZpbHRlcmVkUGxhdGZvcm1EZWx0YSh3aGVlbEV2
ZW50LmRlbHRhWCgpLCB3aGVlbEV2ZW50LmRlbHRhWSgpKTsKKyAgICBhZGp1c3REZWx0YXMoc2Ny
b2xsQ2hhaW5pbmdCbG9ja2VyLCBmaWx0ZXJlZFBsYXRmb3JtRGVsdGEpOwogICAgIFNjcm9sbEdy
YW51bGFyaXR5IHNjcm9sbEdyYW51bGFyaXR5ID0gd2hlZWxHcmFudWxhcml0eVRvU2Nyb2xsR3Jh
bnVsYXJpdHkod2hlZWxFdmVudC5kZWx0YU1vZGUoKSk7CiAgICAgYm9vbCBkaWRIYW5kbGVXaGVl
bEV2ZW50ID0gZmFsc2U7Ci0gICAgaWYgKGZsb2F0IGFic29sdXRlRGVsdGEgPSBzdGQ6OmFicyh3
aGVlbEV2ZW50LmRlbHRhWCgpKSkKLSAgICAgICAgZGlkSGFuZGxlV2hlZWxFdmVudCB8PSBzY3Jv
bGxhYmxlQXJlYS5zY3JvbGwod2hlZWxFdmVudC5kZWx0YVgoKSA+IDAgPyBTY3JvbGxSaWdodCA6
IFNjcm9sbExlZnQsIHNjcm9sbEdyYW51bGFyaXR5LCBhYnNvbHV0ZURlbHRhKTsKKyAgICBpZiAo
ZmxvYXQgYWJzb2x1dGVEZWx0YSA9IHN0ZDo6YWJzKGZpbHRlcmVkUGxhdGZvcm1EZWx0YS53aWR0
aCgpKSkKKyAgICAgICAgZGlkSGFuZGxlV2hlZWxFdmVudCB8PSBzY3JvbGxhYmxlQXJlYS5zY3Jv
bGwoZmlsdGVyZWRQbGF0Zm9ybURlbHRhLndpZHRoKCkgPiAwID8gU2Nyb2xsUmlnaHQgOiBTY3Jv
bGxMZWZ0LCBzY3JvbGxHcmFudWxhcml0eSwgYWJzb2x1dGVEZWx0YSk7CiAKLSAgICBpZiAoZmxv
YXQgYWJzb2x1dGVEZWx0YSA9IHN0ZDo6YWJzKHdoZWVsRXZlbnQuZGVsdGFZKCkpKQotICAgICAg
ICBkaWRIYW5kbGVXaGVlbEV2ZW50IHw9IHNjcm9sbGFibGVBcmVhLnNjcm9sbCh3aGVlbEV2ZW50
LmRlbHRhWSgpID4gMCA/IFNjcm9sbERvd24gOiBTY3JvbGxVcCwgc2Nyb2xsR3JhbnVsYXJpdHks
IGFic29sdXRlRGVsdGEpOworICAgIGlmIChmbG9hdCBhYnNvbHV0ZURlbHRhID0gc3RkOjphYnMo
ZmlsdGVyZWRQbGF0Zm9ybURlbHRhLmhlaWdodCgpKSkKKyAgICAgICAgZGlkSGFuZGxlV2hlZWxF
dmVudCB8PSBzY3JvbGxhYmxlQXJlYS5zY3JvbGwoZmlsdGVyZWRQbGF0Zm9ybURlbHRhLmhlaWdo
dCgpID4gMCA/IFNjcm9sbERvd24gOiBTY3JvbGxVcCwgc2Nyb2xsR3JhbnVsYXJpdHksIGFic29s
dXRlRGVsdGEpOwogCiAgICAgcmV0dXJuIGRpZEhhbmRsZVdoZWVsRXZlbnQ7CiB9CiAKLWJvb2wg
RXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2luZ0JveChO
b2RlKiBzdGFydE5vZGUsIGNvbnN0IFdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIGNvbnN0IEZsb2F0
U2l6ZSYgZmlsdGVyZWRQbGF0Zm9ybURlbHRhLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlcmVkVmVs
b2NpdHksIE9wdGlvblNldDxFdmVudEhhbmRsaW5nPiBldmVudEhhbmRsaW5nKQorYm9vbCBFdmVu
dEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94KE5vZGUq
IHN0YXJ0Tm9kZSwgY29uc3QgV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgRmxvYXRTaXplJiBmaWx0
ZXJlZFBsYXRmb3JtRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyZWRWZWxvY2l0eSwgT3B0
aW9uU2V0PEV2ZW50SGFuZGxpbmc+IGV2ZW50SGFuZGxpbmcpCiB7CiAgICAgYm9vbCBzaG91bGRI
YW5kbGVFdmVudCA9IHdoZWVsRXZlbnQuZGVsdGFYKCkgfHwgd2hlZWxFdmVudC5kZWx0YVkoKTsK
ICNpZiBFTkFCTEUoV0hFRUxfRVZFTlRfTEFUQ0hJTkcpCkBAIC0yOTcyLDIyICszMDgwLDMzIEBA
IGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2lu
Z0JveChOb2RlKiBzdGFydE5vZGUsIGNvCiAgICAgaWYgKCFzaG91bGRIYW5kbGVFdmVudCkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIHNjcm9sbENo
YWluaW5nQmxvY2tlciA9IHsgZmFsc2UsIGZhbHNlIH07CiAgICAgaWYgKGlzPFJlbmRlckxpc3RC
b3g+KGluaXRpYWxFbmNsb3NpbmdCb3gpKQotICAgICAgICByZXR1cm4gZGlkU2Nyb2xsSW5TY3Jv
bGxhYmxlQXJlYShkb3duY2FzdDxSZW5kZXJMaXN0Qm94Pihpbml0aWFsRW5jbG9zaW5nQm94KSwg
d2hlZWxFdmVudCk7CisgICAgICAgIHJldHVybiBkaWRTY3JvbGxJblNjcm9sbGFibGVBcmVhKGRv
d25jYXN0PFJlbmRlckxpc3RCb3g+KGluaXRpYWxFbmNsb3NpbmdCb3gpLCB3aGVlbEV2ZW50LCBz
Y3JvbGxDaGFpbmluZ0Jsb2NrZXIpOwogCisgICAgYXV0byBiaWFzZWREZWx0YSA9IFBsYXRmb3Jt
V2hlZWxFdmVudDo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoRmxvYXRTaXplKHdo
ZWVsRXZlbnQuZGVsdGFYKCksIHdoZWVsRXZlbnQuZGVsdGFZKCkpKTsKICAgICBSZW5kZXJCb3gq
IGN1cnJlbnRFbmNsb3NpbmdCb3ggPSAmaW5pdGlhbEVuY2xvc2luZ0JveDsKICAgICB3aGlsZSAo
Y3VycmVudEVuY2xvc2luZ0JveCkgewogICAgICAgICBpZiAoUmVuZGVyTGF5ZXIqIGJveExheWVy
ID0gY3VycmVudEVuY2xvc2luZ0JveC0+bGF5ZXIoKSkgewogICAgICAgICAgICAgYXV0byBwbGF0
Zm9ybUV2ZW50ID0gd2hlZWxFdmVudC51bmRlcmx5aW5nUGxhdGZvcm1FdmVudCgpOwogICAgICAg
ICAgICAgYm9vbCBzY3JvbGxpbmdXYXNIYW5kbGVkOwogICAgICAgICAgICAgaWYgKHBsYXRmb3Jt
RXZlbnQpIHsKKyAgICAgICAgICAgICAgICBhZGp1c3REZWx0YXMoc2Nyb2xsQ2hhaW5pbmdCbG9j
a2VyLCBmaWx0ZXJlZFBsYXRmb3JtRGVsdGEpOwogICAgICAgICAgICAgICAgIGF1dG8gY29waWVk
RXZlbnQgPSBwbGF0Zm9ybUV2ZW50LT5jb3B5V2l0aERlbHRhc0FuZFZlbG9jaXR5KGZpbHRlcmVk
UGxhdGZvcm1EZWx0YS53aWR0aCgpLCBmaWx0ZXJlZFBsYXRmb3JtRGVsdGEuaGVpZ2h0KCksIGZp
bHRlcmVkVmVsb2NpdHkpOwogICAgICAgICAgICAgICAgIHNjcm9sbGluZ1dhc0hhbmRsZWQgPSBo
YW5kbGVXaGVlbEV2ZW50SW5TY3JvbGxhYmxlQXJlYShjb3BpZWRFdmVudCwgKmJveExheWVyLCBl
dmVudEhhbmRsaW5nKTsKICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHNjcm9s
bGluZ1dhc0hhbmRsZWQgPSBkaWRTY3JvbGxJblNjcm9sbGFibGVBcmVhKCpib3hMYXllciwgd2hl
ZWxFdmVudCk7CisgICAgICAgICAgICAgICAgc2Nyb2xsaW5nV2FzSGFuZGxlZCA9IGRpZFNjcm9s
bEluU2Nyb2xsYWJsZUFyZWEoKmJveExheWVyLCB3aGVlbEV2ZW50LCBzY3JvbGxDaGFpbmluZ0Js
b2NrZXIpOwogCiAgICAgICAgICAgICBpZiAoc2Nyb2xsaW5nV2FzSGFuZGxlZCkKICAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAgICAgaWYgKGN1cnJlbnRFbmNsb3NpbmdC
b3gtPmVsZW1lbnQoKSAhPSBjdXJyZW50RW5jbG9zaW5nQm94LT5kb2N1bWVudCgpLmRvY3VtZW50
RWxlbWVudCgpKSB7CisgICAgICAgICAgICAgICAgdXBkYXRlU2Nyb2xsQ2hhaW5pbmdCbG9ja2Vy
KGJveExheWVyLCBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIpOworICAgICAgICAgICAgICAgIGlmICgo
c2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLmJsb2NrWCAmJiBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIuYmxv
Y2tZKQorICAgICAgICAgICAgICAgICAgICB8fCAoc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLmJsb2Nr
WSAmJiAhYmlhc2VkRGVsdGEud2lkdGgoKSkKKyAgICAgICAgICAgICAgICAgICAgfHwgKHNjcm9s
bENoYWluaW5nQmxvY2tlci5ibG9ja1ggJiYgIWJpYXNlZERlbHRhLmhlaWdodCgpKSkKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAog
ICAgICAgICBjdXJyZW50RW5jbG9zaW5nQm94ID0gY3VycmVudEVuY2xvc2luZ0JveC0+Y29udGFp
bmluZ0Jsb2NrKCk7CkBAIC0zMDY3LDYgKzMxODYsNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6ZGVm
YXVsdFdoZWVsRXZlbnRIYW5kbGVyKE5vZGUqIHN0YXJ0Tm9kZSwgV2hlZWxFdmVudCYgd2hlZWxF
dgogICAgIGlmICghbV9mcmFtZS5wYWdlKCktPnNjcm9sbExhdGNoaW5nQ29udHJvbGxlcigpLmxh
dGNoaW5nQWxsb3dzU2Nyb2xsaW5nSW5GcmFtZShtX2ZyYW1lLCBsYXRjaGVkU2Nyb2xsZXIpKQog
ICAgICAgICByZXR1cm47CiAKKyAgICBTY3JvbGxDaGFpbmluZ0Jsb2NrZXIgc2Nyb2xsQ2hhaW5p
bmdCbG9ja2VyID0gbV9mcmFtZS5wYWdlKCktPnNjcm9sbExhdGNoaW5nQ29udHJvbGxlcigpLmdl
dFNjcm9sbENoYWluaW5nQmxvY2tlcihtX2ZyYW1lKTsKICAgICBpZiAobGF0Y2hlZFNjcm9sbGVy
KSB7CiAgICAgICAgIGlmIChsYXRjaGVkU2Nyb2xsZXIgPT0gbV9mcmFtZS52aWV3KCkpIHsKICAg
ICAgICAgICAgIC8vIEZyYW1lVmlldyBzY3JvbGxpbmcgaXMgaGFuZGxlZCB2aWEgcHJvY2Vzc1do
ZWVsRXZlbnRGb3JTY3JvbGxpbmcoKS4KQEAgLTMwNzUsNiArMzE5NSw3IEBAIHZvaWQgRXZlbnRI
YW5kbGVyOjpkZWZhdWx0V2hlZWxFdmVudEhhbmRsZXIoTm9kZSogc3RhcnROb2RlLCBXaGVlbEV2
ZW50JiB3aGVlbEV2CiAKICAgICAgICAgYXV0byBwbGF0Zm9ybUV2ZW50ID0gd2hlZWxFdmVudC51
bmRlcmx5aW5nUGxhdGZvcm1FdmVudCgpOwogICAgICAgICBpZiAocGxhdGZvcm1FdmVudCkgewor
ICAgICAgICAgICAgYWRqdXN0RGVsdGFzKHNjcm9sbENoYWluaW5nQmxvY2tlciwgZmlsdGVyZWRQ
bGF0Zm9ybURlbHRhKTsKICAgICAgICAgICAgIGF1dG8gY29waWVkRXZlbnQgPSBwbGF0Zm9ybUV2
ZW50LT5jb3B5V2l0aERlbHRhc0FuZFZlbG9jaXR5KGZpbHRlcmVkUGxhdGZvcm1EZWx0YS53aWR0
aCgpLCBmaWx0ZXJlZFBsYXRmb3JtRGVsdGEuaGVpZ2h0KCksIGZpbHRlcmVkVmVsb2NpdHkpOwog
ICAgICAgICAgICAgaWYgKGhhbmRsZVdoZWVsRXZlbnRJblNjcm9sbGFibGVBcmVhKGNvcGllZEV2
ZW50LCAqbGF0Y2hlZFNjcm9sbGVyLCBldmVudEhhbmRsaW5nKSkKICAgICAgICAgICAgICAgICB3
aGVlbEV2ZW50LnNldERlZmF1bHRIYW5kbGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0V2ZW50SGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIu
aAppbmRleCA0YmI1MDYxMWY0YzlhMjFiZjU4NjQwMWQxOWMzOTFiNGQ3OGIzZGIwLi4zMTZkMjZm
Zjk2M2ZmZWQ5YzM5ODE1Y2IzOTk1NDNmOTlhMDNjYTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmgKQEAgLTM0OSw2ICszNDksMTAgQEAgcHVibGljOgogI2lmIEVOQUJMRShEUkFHX1NV
UFBPUlQpCiAgICAgRWxlbWVudCogZHJhZ2dpbmdFbGVtZW50KCkgY29uc3Q7CiAjZW5kaWYKKwor
ICAgIHN0YXRpYyB2b2lkIHVwZGF0ZVNjcm9sbENoYWluaW5nQmxvY2tlcihTY3JvbGxhYmxlQXJl
YSosIFNjcm9sbENoYWluaW5nQmxvY2tlciYpOworICAgIHN0YXRpYyBib29sIHNob3VsZEJsb2Nr
U2Nyb2xsQ2hhaW5pbmcoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgY29uc3QgU2Nyb2xsQ2hh
aW5pbmdCbG9ja2VyJik7CisKIHByaXZhdGU6CiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKICAg
ICBzdGF0aWMgRHJhZ1N0YXRlJiBkcmFnU3RhdGUoKTsKQEAgLTQ2NCw3ICs0NjgsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgcHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxTbmFwKGNvbnN0IFBsYXRm
b3JtV2hlZWxFdmVudCYsIGNvbnN0IFdlYWtQdHI8U2Nyb2xsYWJsZUFyZWE+Jik7CiAgICAgYm9v
bCBjb21wbGV0ZVdpZGdldFdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgY29u
c3QgV2Vha1B0cjxXaWRnZXQ+JiwgY29uc3QgV2Vha1B0cjxTY3JvbGxhYmxlQXJlYT4mKTsKIAot
ICAgIGJvb2wgaGFuZGxlV2hlZWxFdmVudEluQXBwcm9wcmlhdGVFbmNsb3NpbmdCb3goTm9kZSog
c3RhcnROb2RlLCBjb25zdCBXaGVlbEV2ZW50JiwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJlZFBs
YXRmb3JtRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyZWRWZWxvY2l0eSwgT3B0aW9uU2V0
PEV2ZW50SGFuZGxpbmc+KTsKKyAgICBib29sIGhhbmRsZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRl
RW5jbG9zaW5nQm94KE5vZGUqIHN0YXJ0Tm9kZSwgY29uc3QgV2hlZWxFdmVudCYsIEZsb2F0U2l6
ZSYgZmlsdGVyZWRQbGF0Zm9ybURlbHRhLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlcmVkVmVsb2Np
dHksIE9wdGlvblNldDxFdmVudEhhbmRsaW5nPik7CiAKICAgICBib29sIGhhbmRsZVdoZWVsRXZl
bnRJblNjcm9sbGFibGVBcmVhKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIFNjcm9sbGFibGVB
cmVhJiwgT3B0aW9uU2V0PEV2ZW50SGFuZGxpbmc+KTsKICAgICBPcHRpb25hbDxXaGVlbFNjcm9s
bEdlc3R1cmVTdGF0ZT4gdXBkYXRlV2hlZWxHZXN0dXJlU3RhdGUoY29uc3QgUGxhdGZvcm1XaGVl
bEV2ZW50JiwgT3B0aW9uU2V0PEV2ZW50SGFuZGxpbmc+KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
LmNwcAppbmRleCA4ZGUzZGVlZmQzYThiYjZmM2I2NTdkMDVkZDlhZTJmNGYxMzgxZjMyLi40MGE3
M2Y1YjJjNzI2Y2MzMWI1MDc3YzJmZWI2ZDZjNDE5ZTYyYWZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVZpZXcuY3BwCkBAIC00MTgsNiArNDE4LDI0IEBAIGJvb2wgRnJhbWVWaWV3OjpkaWRGaXJzdExh
eW91dCgpIGNvbnN0CiAgICAgcmV0dXJuIGxheW91dENvbnRleHQoKS5kaWRGaXJzdExheW91dCgp
OwogfQogCitPdmVyc2Nyb2xsQmVoYXZpb3IgRnJhbWVWaWV3Ojpob3Jpem9udGFsT3ZlcnNjcm9s
bEJlaGF2aW9yKCkgY29uc3QKK3sKKyAgICBhdXRvKiBkb2N1bWVudCA9IGZyYW1lKCkuZG9jdW1l
bnQoKTsKKyAgICBhdXRvIHNjcm9sbGluZ09iamVjdCA9IGRvY3VtZW50ICYmIGRvY3VtZW50LT5k
b2N1bWVudEVsZW1lbnQoKSA/IGRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKS0+cmVuZGVyZXIo
KSA6IG51bGxwdHI7CisgICAgaWYgKCFzY3JvbGxpbmdPYmplY3QgfHwgIW1heGltdW1TY3JvbGxP
ZmZzZXQoKS54KCkpCisgICAgICAgIHJldHVybiBTY3JvbGxhYmxlQXJlYTo6aG9yaXpvbnRhbE92
ZXJzY3JvbGxCZWhhdmlvcigpOworICAgIHJldHVybiBzY3JvbGxpbmdPYmplY3QtPnN0eWxlKCku
b3ZlcnNjcm9sbEJlaGF2aW9yWCgpOworfQorCitPdmVyc2Nyb2xsQmVoYXZpb3IgRnJhbWVWaWV3
Ojp2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpICBjb25zdAoreworICAgIGF1dG8qIGRvY3Vt
ZW50ID0gZnJhbWUoKS5kb2N1bWVudCgpOworICAgIGF1dG8gc2Nyb2xsaW5nT2JqZWN0ID0gZG9j
dW1lbnQgJiYgZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpID8gZG9jdW1lbnQtPmRvY3VtZW50
RWxlbWVudCgpLT5yZW5kZXJlcigpIDogbnVsbHB0cjsKKyAgICBpZiAoIXNjcm9sbGluZ09iamVj
dCB8fCAhbWF4aW11bVNjcm9sbE9mZnNldCgpLnkoKSkKKyAgICAgICAgcmV0dXJuIFNjcm9sbGFi
bGVBcmVhOjp2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpOworICAgIHJldHVybiBzY3JvbGxp
bmdPYmplY3QtPnN0eWxlKCkub3ZlcnNjcm9sbEJlaGF2aW9yWSgpOworfQorCiB2b2lkIEZyYW1l
Vmlldzo6aW52YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICBpZiAoIXBh
cmVudCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCAwOWM4ZGY2NDc0YWExZjY4MzNm
NzU3ZDRmZTE3NDQ4NWVmZjE1OTgxLi43ZWQ4YmUzODEyM2E0MTg1NTUwYTM3MDdiM2NkNjVkNGQ0
N2FiNTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTc1MSw2ICs3NTEsOSBAQCBwcml2
YXRlOgogICAgIHZvaWQgdW5vYnNjdXJlZENvbnRlbnRTaXplQ2hhbmdlZCgpIGZpbmFsOwogCiAg
ICAgLy8gU2Nyb2xsYWJsZUFyZWEgaW50ZXJmYWNlCisgICAgT3ZlcnNjcm9sbEJlaGF2aW9yIGhv
cml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdCBmaW5hbDsKKyAgICBPdmVyc2Nyb2xs
QmVoYXZpb3IgdmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdCBmaW5hbDsKKwogICAg
IHZvaWQgaW52YWxpZGF0ZVNjcm9sbGJhclJlY3QoU2Nyb2xsYmFyJiwgY29uc3QgSW50UmVjdCYp
IGZpbmFsOwogICAgIHZvaWQgc2Nyb2xsVG8oY29uc3QgU2Nyb2xsUG9zaXRpb24mKSBmaW5hbDsK
ICAgICB2b2lkIHNldFZpc2libGVTY3JvbGxlclRodW1iUmVjdChjb25zdCBJbnRSZWN0JikgZmlu
YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0KaW5kZXggNzE0
MTUzNjViYWJhZjVhOTQyM2EyOWY2MWI3ODJmZmUzMmI0OTMxNy4uYjhiODI2MGY2ZTZhZmMyMTZl
NTBiY2QzMjEyY2M4NmU3MDUwODIwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9t
YWMvRXZlbnRIYW5kbGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50
SGFuZGxlck1hYy5tbQpAQCAtNzk1LDkgKzc5NSw5IEBAIHN0YXRpYyBTY3JvbGxhYmxlQXJlYSog
c2Nyb2xsYWJsZUFyZWFGb3JCb3goUmVuZGVyQm94JiBib3gpCiB9CiAKIC8vIEZJWE1FOiBUaGlz
IGNvdWxkIGJlIHdyaXR0ZW4gaW4gdGVybXMgb2YgU2Nyb2xsYWJsZUFyZWE6OmVuY2xvc2luZ1Nj
cm9sbGFibGVBcmVhKCkuCi1zdGF0aWMgQ29udGFpbmVyTm9kZSogZmluZEVuY2xvc2luZ1Njcm9s
bGFibGVDb250YWluZXIoQ29udGFpbmVyTm9kZSogbm9kZSwgY29uc3QgUGxhdGZvcm1XaGVlbEV2
ZW50JiB3aGVlbEV2ZW50KQorc3RhdGljIENvbnRhaW5lck5vZGUqIGZpbmRFbmNsb3NpbmdTY3Jv
bGxhYmxlQ29udGFpbmVyKENvbnRhaW5lck5vZGUqIG5vZGUsIGNvbnN0IFBsYXRmb3JtV2hlZWxF
dmVudCYgd2hlZWxFdmVudCwgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyJiBzY3JvbGxDaGFpbmluZ0Js
b2NrZXIpCiB7Ci0gICAgYXV0byBiaWFzZWREZWx0YSA9IFNjcm9sbENvbnRyb2xsZXI6OndoZWVs
RGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRpY2FsKHdoZWVsRXZlbnQpOworICAgIGF1dG8gYmlhc2Vk
RGVsdGEgPSBQbGF0Zm9ybVdoZWVsRXZlbnQ6OndoZWVsRGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRp
Y2FsKHdoZWVsRXZlbnQuZGVsdGEoKSk7CiAKICAgICAvLyBGaW5kIHRoZSBmaXJzdCBub2RlIHdp
dGggYSB2YWxpZCBzY3JvbGxhYmxlIGFyZWEgc3RhcnRpbmcgd2l0aCB0aGUgY3VycmVudAogICAg
IC8vIG5vZGUgYW5kIHRyYXZlcnNpbmcgaXRzIHBhcmVudHMgKG9yIHNoYWRvdyBob3N0cykuCkBA
IC04MDksMjEgKzgwOSwyOSBAQCBzdGF0aWMgQ29udGFpbmVyTm9kZSogZmluZEVuY2xvc2luZ1Nj
cm9sbGFibGVDb250YWluZXIoQ29udGFpbmVyTm9kZSogbm9kZSwgY29ucwogICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKICAgICAgICAgUmVuZGVyQm94KiBib3ggPSBjYW5kaWRhdGUtPnJl
bmRlckJveCgpOwotICAgICAgICBpZiAoIWJveCB8fCAhYm94LT5jYW5CZVNjcm9sbGVkQW5kSGFz
U2Nyb2xsYWJsZUFyZWEoKSkKKyAgICAgICAgaWYgKCFib3gpCiAgICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgCisKICAgICAgICAgYXV0byogc2Nyb2xsYWJsZUFyZWEgPSBzY3JvbGxhYmxl
QXJlYUZvckJveCgqYm94KTsKLSAgICAgICAgaWYgKCFzY3JvbGxhYmxlQXJlYSkKLSAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoc2Nyb2xsYWJsZUFyZWEgJiYgYm94LT5jYW5CZVNj
cm9sbGVkQW5kSGFzU2Nyb2xsYWJsZUFyZWEoKSkgeworICAgICAgICAgICAgaWYgKHdoZWVsRXZl
bnQucGhhc2UoKSA9PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZTo6TWF5QmVnaW4gIHx8IHdoZWVs
RXZlbnQucGhhc2UoKSA9PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZTo6Q2FuY2VsbGVkKQorICAg
ICAgICAgICAgICAgIHJldHVybiBjYW5kaWRhdGU7CiAKLSAgICAgICAgaWYgKHdoZWVsRXZlbnQu
cGhhc2UoKSA9PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZTo6TWF5QmVnaW4gfHwgd2hlZWxFdmVu
dC5waGFzZSgpID09IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlOjpDYW5jZWxsZWQpCi0gICAgICAg
ICAgICByZXR1cm4gY2FuZGlkYXRlOworICAgICAgICAgICAgaWYgKChiaWFzZWREZWx0YS5oZWln
aHQoKSA+IDAgJiYgIXNjcm9sbGFibGVBcmVhLT5zY3JvbGxlZFRvVG9wKCkpIHx8IChiaWFzZWRE
ZWx0YS5oZWlnaHQoKSA8IDAgJiYgIXNjcm9sbGFibGVBcmVhLT5zY3JvbGxlZFRvQm90dG9tKCkp
CisgICAgICAgICAgICAgICAgfHwgKGJpYXNlZERlbHRhLndpZHRoKCkgPiAwICYmICFzY3JvbGxh
YmxlQXJlYS0+c2Nyb2xsZWRUb0xlZnQoKSkgfHwgKGJpYXNlZERlbHRhLndpZHRoKCkgPCAwICYm
ICFzY3JvbGxhYmxlQXJlYS0+c2Nyb2xsZWRUb1JpZ2h0KCkpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBjYW5kaWRhdGU7CisgICAgICAgIH0KKyAgICAgICAgLy8gTGV0IEZyYW1lVmlldzo6aG9y
aXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvciBkZWNpZGUgd2hpY2ggbm9kZSdzIG92ZXJzY3JvbGwt
YmFodmlvciBpcyBlZmZlY3RpdmUgdG8gRnJhbWVWaWV3LgorICAgICAgICBpZiAoY2FuZGlkYXRl
ID09IGNhbmRpZGF0ZS0+ZG9jdW1lbnQoKS5ib2R5KCkpCisgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgaWYgKGNhbmRpZGF0ZSA9PSBub2RlKQorICAgICAgICAgICAgY29udGludWU7CiAK
LSAgICAgICAgaWYgKChiaWFzZWREZWx0YS5oZWlnaHQoKSA+IDAgJiYgIXNjcm9sbGFibGVBcmVh
LT5zY3JvbGxlZFRvVG9wKCkpIHx8IChiaWFzZWREZWx0YS5oZWlnaHQoKSA8IDAgJiYgIXNjcm9s
bGFibGVBcmVhLT5zY3JvbGxlZFRvQm90dG9tKCkpCi0gICAgICAgICAgICB8fCAoYmlhc2VkRGVs
dGEud2lkdGgoKSA+IDAgJiYgIXNjcm9sbGFibGVBcmVhLT5zY3JvbGxlZFRvTGVmdCgpKSB8fCAo
Ymlhc2VkRGVsdGEud2lkdGgoKSA8IDAgJiYgIXNjcm9sbGFibGVBcmVhLT5zY3JvbGxlZFRvUmln
aHQoKSkpCi0gICAgICAgICAgICByZXR1cm4gY2FuZGlkYXRlOworICAgICAgICBFdmVudEhhbmRs
ZXI6OnVwZGF0ZVNjcm9sbENoYWluaW5nQmxvY2tlcihzY3JvbGxhYmxlQXJlYSwgc2Nyb2xsQ2hh
aW5pbmdCbG9ja2VyKTsKKyAgICAgICAgaWYgKEV2ZW50SGFuZGxlcjo6c2hvdWxkQmxvY2tTY3Jv
bGxDaGFpbmluZyh3aGVlbEV2ZW50LCBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIpKQorICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9
CiAKQEAgLTg2OCwxMCArODc2LDExIEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpkZXRlcm1pbmVXaGVl
bEV2ZW50VGFyZ2V0KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVuCiAgICAgaWYg
KCF2aWV3KQogICAgICAgICByZXR1cm47CiAKKyAgICBTY3JvbGxDaGFpbmluZ0Jsb2NrZXIgc2Ny
b2xsQ2hhaW5pbmdCbG9ja2VyOwogICAgIGlmIChldmVudFRhcmdldElzUGxhdGZvcm1XaWRnZXQo
d2hlZWxFdmVudFRhcmdldC5nZXQoKSkpCiAgICAgICAgIHNjcm9sbGFibGVBcmVhID0gc2Nyb2xs
YWJsZUFyZWFGb3JFdmVudFRhcmdldCh3aGVlbEV2ZW50VGFyZ2V0LmdldCgpKTsKICAgICBlbHNl
IHsKLSAgICAgICAgYXV0byogc2Nyb2xsYWJsZUNvbnRhaW5lciA9IGZpbmRFbmNsb3NpbmdTY3Jv
bGxhYmxlQ29udGFpbmVyKHdoZWVsRXZlbnRUYXJnZXQuZ2V0KCksIHdoZWVsRXZlbnQpOworICAg
ICAgICBhdXRvKiBzY3JvbGxhYmxlQ29udGFpbmVyID0gZmluZEVuY2xvc2luZ1Njcm9sbGFibGVD
b250YWluZXIod2hlZWxFdmVudFRhcmdldC5nZXQoKSwgd2hlZWxFdmVudCwgc2Nyb2xsQ2hhaW5p
bmdCbG9ja2VyKTsKICAgICAgICAgaWYgKHNjcm9sbGFibGVDb250YWluZXIpCiAgICAgICAgICAg
ICBzY3JvbGxhYmxlQXJlYSA9IHNjcm9sbGFibGVBcmVhRm9yQ29udGFpbmVyTm9kZSgqc2Nyb2xs
YWJsZUNvbnRhaW5lcik7CiAgICAgICAgIGVsc2UKQEAgLTg4OSw3ICs4OTgsNyBAQCB2b2lkIEV2
ZW50SGFuZGxlcjo6ZGV0ZXJtaW5lV2hlZWxFdmVudFRhcmdldChjb25zdCBQbGF0Zm9ybVdoZWVs
RXZlbnQmIHdoZWVsRXZlbgogICAgIGlmIChtX2ZyYW1lLmlzTWFpbkZyYW1lKCkgJiYgd2hlZWxF
dmVudC5pc0dlc3R1cmVTdGFydCgpKQogICAgICAgICBwYWdlLT53aGVlbEV2ZW50RGVsdGFGaWx0
ZXIoKS0+YmVnaW5GaWx0ZXJpbmdEZWx0YXMoKTsKIAotICAgIHBhZ2UtPnNjcm9sbExhdGNoaW5n
Q29udHJvbGxlcigpLnVwZGF0ZUFuZEZldGNoTGF0Y2hpbmdTdGF0ZUZvckZyYW1lKG1fZnJhbWUs
IHdoZWVsRXZlbnQsIHdoZWVsRXZlbnRUYXJnZXQsIHNjcm9sbGFibGVBcmVhLCBpc092ZXJXaWRn
ZXQpOworICAgIHBhZ2UtPnNjcm9sbExhdGNoaW5nQ29udHJvbGxlcigpLnVwZGF0ZUFuZEZldGNo
TGF0Y2hpbmdTdGF0ZUZvckZyYW1lKG1fZnJhbWUsIHdoZWVsRXZlbnQsIHdoZWVsRXZlbnRUYXJn
ZXQsIHNjcm9sbGFibGVBcmVhLCBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIsIGlzT3ZlcldpZGdldCk7
CiB9CiAKIHZvaWQgRXZlbnRIYW5kbGVyOjpyZWNvcmRXaGVlbEV2ZW50Rm9yRGVsdGFGaWx0ZXIo
Y29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50KQpAQCAtOTA4LDYgKzkxNyw3IEBA
IHZvaWQgRXZlbnRIYW5kbGVyOjpyZWNvcmRXaGVlbEV2ZW50Rm9yRGVsdGFGaWx0ZXIoY29uc3Qg
UGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlCiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAg
ICAgfQorCiAgICAgcGFnZS0+d2hlZWxFdmVudERlbHRhRmlsdGVyKCktPnVwZGF0ZUZyb21EZWx0
YShGbG9hdFNpemUod2hlZWxFdmVudC5kZWx0YVgoKSwgd2hlZWxFdmVudC5kZWx0YVkoKSkpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9s
bGluZ0Nvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5j
U2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCmluZGV4IGY3YzA0YjFkZTAwMjc5NTlkOGNlNjNiNjA3
ZGM2MGNhMTY5YTM0YzUuLmU1NWY3YWMwNjEyNjgzMzc2YjVkZjY1ZmFlMDM2OTVmNGEzZDUyYjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5n
Q29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5j
U2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCkBAIC02OTcsNiArNjk3LDggQEAgdm9pZCBBc3luY1Nj
cm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRTY3JvbGxpbmdOb2RlU2Nyb2xsYWJsZUFyZWFHZW9tZXRy
eShTY3JvbGxpbmcKICAgICBzY3JvbGxpbmdOb2RlLnNldFNjcm9sbGFibGVBcmVhU2l6ZShzY3Jv
bGxhYmxlQXJlYS52aXNpYmxlU2l6ZSgpKTsKIAogICAgIFNjcm9sbGFibGVBcmVhUGFyYW1ldGVy
cyBzY3JvbGxQYXJhbWV0ZXJzOworICAgIHNjcm9sbFBhcmFtZXRlcnMuaG9yaXpvbnRhbE92ZXJz
Y3JvbGxCZWhhdmlvciA9IHNjcm9sbGFibGVBcmVhLmhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZp
b3IoKTsKKyAgICBzY3JvbGxQYXJhbWV0ZXJzLnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yID0g
c2Nyb2xsYWJsZUFyZWEudmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKTsKICAgICBzY3JvbGxQ
YXJhbWV0ZXJzLmhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5ID0gc2Nyb2xsYWJsZUFyZWEuaG9y
aXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkoKTsKICAgICBzY3JvbGxQYXJhbWV0ZXJzLnZlcnRpY2Fs
U2Nyb2xsRWxhc3RpY2l0eSA9IHNjcm9sbGFibGVBcmVhLnZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0
eSgpOwogICAgIHNjcm9sbFBhcmFtZXRlcnMuaGFzRW5hYmxlZEhvcml6b250YWxTY3JvbGxiYXIg
PSBob3Jpem9udGFsU2Nyb2xsYmFyICYmIGhvcml6b250YWxTY3JvbGxiYXItPmVuYWJsZWQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbExhdGNoaW5n
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxMYXRj
aGluZ0NvbnRyb2xsZXIuY3BwCmluZGV4IDRlZDRkOTc1YTdlYTQ1MDA5N2ZjYmI0ZGU5YTJlMDMy
MWM2YTY3N2IuLmJhMDAxMWQzMWIzNzg1NTEyYjQ1NDI5MDI5OWE1ZWFjMDFmZWIwZjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbExhdGNoaW5nQ29udHJv
bGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsTGF0Y2hp
bmdDb250cm9sbGVyLmNwcApAQCAtMTA4LDcgKzEwOCw3IEBAIGJvb2wgU2Nyb2xsTGF0Y2hpbmdD
b250cm9sbGVyOjpsYXRjaGluZ0FsbG93c1Njcm9sbGluZ0luRnJhbWUoY29uc3QgRnJhbWUmIGZy
YW1lCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFNjcm9sbExhdGNoaW5nQ29udHJvbGxl
cjo6dXBkYXRlQW5kRmV0Y2hMYXRjaGluZ1N0YXRlRm9yRnJhbWUoRnJhbWUmIGZyYW1lLCBjb25z
dCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIFJlZlB0cjxFbGVtZW50PiYgbGF0Y2hl
ZEVsZW1lbnQsIFdlYWtQdHI8U2Nyb2xsYWJsZUFyZWE+JiBzY3JvbGxhYmxlQXJlYSwgYm9vbCYg
aXNPdmVyV2lkZ2V0KQordm9pZCBTY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXI6OnVwZGF0ZUFuZEZl
dGNoTGF0Y2hpbmdTdGF0ZUZvckZyYW1lKEZyYW1lJiBmcmFtZSwgY29uc3QgUGxhdGZvcm1XaGVl
bEV2ZW50JiB3aGVlbEV2ZW50LCBSZWZQdHI8RWxlbWVudD4mIGxhdGNoZWRFbGVtZW50LCBXZWFr
UHRyPFNjcm9sbGFibGVBcmVhPiYgc2Nyb2xsYWJsZUFyZWEsIFNjcm9sbENoYWluaW5nQmxvY2tl
ciYgc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLCBib29sJiBpc092ZXJXaWRnZXQpCiB7CiAgICAgaWYg
KHdoZWVsRXZlbnQuaXNHZXN0dXJlU3RhcnQoKSkgewogICAgICAgICAvLyBXZSBjYW4gaGF2ZSBl
eGlzdGluZyBzdGF0ZSBoZXJlIGJlY2F1c2Ugc3RhdGUgaXMgY2xlYXJlZCBvbiBhIHRpbWVyLgpA
QCAtMTE4LDYgKzExOCw3IEBAIHZvaWQgU2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyOjp1cGRhdGVB
bmRGZXRjaExhdGNoaW5nU3RhdGVGb3JGcmFtZShGcmFtZSYgZnJhbWUsCiAgICAgICAgICAgICBz
dGF0ZS53aGVlbEV2ZW50RWxlbWVudCA9IG1ha2VXZWFrUHRyKGxhdGNoZWRFbGVtZW50LmdldCgp
KTsKICAgICAgICAgICAgIGlmIChzaG91bGRMYXRjaFRvU2Nyb2xsYWJsZUFyZWEoZnJhbWUsIHNj
cm9sbGFibGVBcmVhLmdldCgpLCBtX2N1bXVsYXRpdmVFdmVudERlbHRhKSkKICAgICAgICAgICAg
ICAgICBzdGF0ZS5zY3JvbGxhYmxlQXJlYSA9IHNjcm9sbGFibGVBcmVhOworICAgICAgICAgICAg
c3RhdGUuc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyID0gc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyOwogICAg
ICAgICAgICAgc3RhdGUuaXNPdmVyV2lkZ2V0ID0gaXNPdmVyV2lkZ2V0OwogCiAgICAgICAgICAg
ICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xsTGF0Y2hpbmcsIHN0cmVhbSA8PCAiU2Nyb2xsTGF0Y2hp
bmdDb250cm9sbGVyOjp1cGRhdGVBbmRGZXRjaExhdGNoaW5nU3RhdGVGb3JGcmFtZSgpIC0gcHVz
aGluZyBzdGF0ZSBmb3IgRnJhbWUgIiA8PCAmZnJhbWUgPDwgIiBlbGVtZW50ICIgPDwgc3RhdGUu
d2hlZWxFdmVudEVsZW1lbnQuZ2V0KCkgPDwgIiBzY3JvbGxhYmxlQXJlYSAiIDw8IHN0YXRlLnNj
cm9sbGFibGVBcmVhKTsKQEAgLTEzMiw4ICsxMzMsMTAgQEAgdm9pZCBTY3JvbGxMYXRjaGluZ0Nv
bnRyb2xsZXI6OnVwZGF0ZUFuZEZldGNoTGF0Y2hpbmdTdGF0ZUZvckZyYW1lKEZyYW1lJiBmcmFt
ZSwKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAvLyBXZSBtYXkgbm90IGhhdmUgbGF0
Y2hlZCBhdCBnZXN0dXJlIHN0YXJ0IGJlY2F1c2Ugb2Ygc21hbGwgZGVsdGFzLiBSZS1ldmFsdWF0
ZSBsYXRjaGluZyBiYXNlZCBvbiBhY2N1bXVsYXRlZCBkZWx0YS4KLSAgICAgICAgaWYgKCFzdGF0
ZS0+c2Nyb2xsYWJsZUFyZWEgJiYgc2hvdWxkTGF0Y2hUb1Njcm9sbGFibGVBcmVhKGZyYW1lLCBz
Y3JvbGxhYmxlQXJlYS5nZXQoKSwgbV9jdW11bGF0aXZlRXZlbnREZWx0YSkpCisgICAgICAgIGlm
ICghc3RhdGUtPnNjcm9sbGFibGVBcmVhICYmIHNob3VsZExhdGNoVG9TY3JvbGxhYmxlQXJlYShm
cmFtZSwgc2Nyb2xsYWJsZUFyZWEuZ2V0KCksIG1fY3VtdWxhdGl2ZUV2ZW50RGVsdGEpKSB7CiAg
ICAgICAgICAgICBzdGF0ZS0+c2Nyb2xsYWJsZUFyZWEgPSBzY3JvbGxhYmxlQXJlYTsKKyAgICAg
ICAgICAgIHN0YXRlLT5zY3JvbGxDaGFpbmluZ0Jsb2NrZXIgPSBzY3JvbGxDaGFpbmluZ0Jsb2Nr
ZXI7CisgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoIXdoZWVsRXZlbnQudXNlTGF0Y2hlZEV2
ZW50RWxlbWVudCgpKQpAQCAtMTQ0LDEyICsxNDcsMzQgQEAgdm9pZCBTY3JvbGxMYXRjaGluZ0Nv
bnRyb2xsZXI6OnVwZGF0ZUFuZEZldGNoTGF0Y2hpbmdTdGF0ZUZvckZyYW1lKEZyYW1lJiBmcmFt
ZSwKICAgICAgICAgICAgIGxhdGNoZWRFbGVtZW50ID0gc3RhdGUud2hlZWxFdmVudEVsZW1lbnQu
Z2V0KCk7CiAgICAgICAgICAgICBzY3JvbGxhYmxlQXJlYSA9IHN0YXRlLnNjcm9sbGFibGVBcmVh
OwogICAgICAgICAgICAgaXNPdmVyV2lkZ2V0ID0gc3RhdGUuaXNPdmVyV2lkZ2V0OworICAgICAg
ICAgICAgc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyID0gc3RhdGUuc2Nyb2xsQ2hhaW5pbmdCbG9ja2Vy
OwogCiAgICAgICAgICAgICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xsTGF0Y2hpbmcsIHN0cmVhbSA8
PCAiU2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyOjp1cGRhdGVBbmRGZXRjaExhdGNoaW5nU3RhdGVG
b3JGcmFtZSgpIC0gdXNpbmcgc3RhdGUgZm9yIEZyYW1lICIgPDwgJmZyYW1lIDw8ICIgZWxlbWVu
dCAiIDw8IGxhdGNoZWRFbGVtZW50LmdldCgpIDw8ICIgc2Nyb2xsYWJsZUFyZWEgIiA8PCBzY3Jv
bGxhYmxlQXJlYSk7CiAgICAgICAgIH0KICAgICB9CiB9CiAKK1Njcm9sbENoYWluaW5nQmxvY2tl
ciBTY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXI6OmdldFNjcm9sbENoYWluaW5nQmxvY2tlcihjb25z
dCBGcmFtZSYgZnJhbWUpIGNvbnN0Cit7CisgICAgaWYgKCFtX2ZyYW1lU3RhdGVTdGFjay5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgYXV0byogZnJhbWVTdGF0ZSA9IHN0YXRlRm9yRnJhbWUoZnJhbWUp
OworICAgICAgICBpZiAoZnJhbWVTdGF0ZSkKKyAgICAgICAgICAgIHJldHVybiBmcmFtZVN0YXRl
LT5zY3JvbGxDaGFpbmluZ0Jsb2NrZXI7CisgICAgfQorCisgICAgcmV0dXJuIHsgZmFsc2UsIGZh
bHNlIH07Cit9CisKK3ZvaWQgU2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyOjp1cGRhdGVTY3JvbGxD
aGFpbmluZ0Jsb2NrZXIoY29uc3QgRnJhbWUmIGZyYW1lLCBjb25zdCBTY3JvbGxDaGFpbmluZ0Js
b2NrZXImIHNjcm9sbENoYWluaW5nQmxvY2tlckZyb21TdWJmcmFtZSkKK3sKKyAgICBpZiAobV9m
cmFtZVN0YXRlU3RhY2suaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKGF1dG8q
IGZyYW1lU3RhdGUgPSBzdGF0ZUZvckZyYW1lKGZyYW1lKSkgeworICAgICAgICBmcmFtZVN0YXRl
LT5zY3JvbGxDaGFpbmluZ0Jsb2NrZXIuYmxvY2tYIHw9IHNjcm9sbENoYWluaW5nQmxvY2tlckZy
b21TdWJmcmFtZS5ibG9ja1g7CisgICAgICAgIGZyYW1lU3RhdGUtPnNjcm9sbENoYWluaW5nQmxv
Y2tlci5ibG9ja1kgfD0gc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyRnJvbVN1YmZyYW1lLmJsb2NrWTsK
KyAgICB9Cit9CisKIHZvaWQgU2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyOjpyZW1vdmVMYXRjaGlu
Z1N0YXRlRm9yVGFyZ2V0KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgaWYgKG1fZnJh
bWVTdGF0ZVN0YWNrLmlzRW1wdHkoKSkKQEAgLTI1Miw2ICsyNzcsOCBAQCB2b2lkIFNjcm9sbExh
dGNoaW5nQ29udHJvbGxlcjo6ZHVtcChXVEY6OlRleHRTdHJlYW0mIHRzKSBjb25zdAogICAgICAg
ICBtdWx0aWxpbmVTdHJlYW0uZHVtcFByb3BlcnR5KCJmcmFtZSIsIFZhbHVlT3JOdWxsKHN0YXRl
LmZyYW1lKSk7CiAgICAgICAgIG11bHRpbGluZVN0cmVhbS5kdW1wUHJvcGVydHkoImVsZW1lbnQi
LCBWYWx1ZU9yTnVsbChzdGF0ZS53aGVlbEV2ZW50RWxlbWVudC5nZXQoKSkpOwogICAgICAgICBt
dWx0aWxpbmVTdHJlYW0uZHVtcFByb3BlcnR5KCJzY3JvbGxhYmxlIGFyZWEiLCBWYWx1ZU9yTnVs
bChzdGF0ZS5zY3JvbGxhYmxlQXJlYS5nZXQoKSkpOworICAgICAgICBtdWx0aWxpbmVTdHJlYW0u
ZHVtcFByb3BlcnR5KCJzdGF0ZS5zY3JvbGxDaGFpbmluZ0Jsb2NrZXIuYmxvY2tYIiwgc3RhdGUu
c2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLmJsb2NrWCk7CisgICAgICAgIG11bHRpbGluZVN0cmVhbS5k
dW1wUHJvcGVydHkoInN0YXRlLnNjcm9sbENoYWluaW5nQmxvY2tlci5ibG9ja1kiLCBzdGF0ZS5z
Y3JvbGxDaGFpbmluZ0Jsb2NrZXIuYmxvY2tZKTsKICAgICAgICAgbXVsdGlsaW5lU3RyZWFtLmR1
bXBQcm9wZXJ0eSgiaXMgb3ZlciB3aWRnZXQiLCBzdGF0ZS5pc092ZXJXaWRnZXQpOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsTGF0Y2hp
bmdDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxMYXRj
aGluZ0NvbnRyb2xsZXIuaAppbmRleCA1NjQ5NjE1OWM1ZTY4ZDJiY2NlZjhjMjY1ZWU2MWNjYjlk
ZmI0YjI4Li44ZmQ4ZTMwYzZhMTY1ZDk5OThkNDExZDI4YmJmZmQzMmVlZjIzNjE5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxMYXRjaGluZ0NvbnRyb2xs
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxMYXRjaGluZ0Nv
bnRyb2xsZXIuaApAQCAtNjEsNyArNjEsMTAgQEAgcHVibGljOgogICAgIC8vIFJldHVybnMgdHJ1
ZSBpZiBubyBmcmFtZSBpcyBsYXRjaGVkLCBvciBsYXRjaGluZyBpcyBpbiB0aGUgZ2l2ZW4gZnJh
bWUgKGluIHdoaWNoIGNhc2UgbGF0Y2hlZFNjcm9sbGVyIHdpbGwgYmUgbm9uLW51bGwpLgogICAg
IGJvb2wgbGF0Y2hpbmdBbGxvd3NTY3JvbGxpbmdJbkZyYW1lKGNvbnN0IEZyYW1lJiwgV2Vha1B0
cjxTY3JvbGxhYmxlQXJlYT4mIGxhdGNoZWRTY3JvbGxlcikgY29uc3Q7CiAKLSAgICB2b2lkIHVw
ZGF0ZUFuZEZldGNoTGF0Y2hpbmdTdGF0ZUZvckZyYW1lKEZyYW1lJiwgY29uc3QgUGxhdGZvcm1X
aGVlbEV2ZW50JiwgUmVmUHRyPEVsZW1lbnQ+JiBsYXRjaGVkRWxlbWVudCwgV2Vha1B0cjxTY3Jv
bGxhYmxlQXJlYT4mLCBib29sJiBpc092ZXJXaWRnZXQpOworICAgIHZvaWQgdXBkYXRlQW5kRmV0
Y2hMYXRjaGluZ1N0YXRlRm9yRnJhbWUoRnJhbWUmLCBjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQm
LCBSZWZQdHI8RWxlbWVudD4mIGxhdGNoZWRFbGVtZW50LCBXZWFrUHRyPFNjcm9sbGFibGVBcmVh
PiYsIFNjcm9sbENoYWluaW5nQmxvY2tlciYsIGJvb2wmIGlzT3ZlcldpZGdldCk7CisKKyAgICBT
Y3JvbGxDaGFpbmluZ0Jsb2NrZXIgZ2V0U2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKGNvbnN0IEZyYW1l
JikgY29uc3Q7CisgICAgdm9pZCB1cGRhdGVTY3JvbGxDaGFpbmluZ0Jsb2NrZXIoY29uc3QgRnJh
bWUmLCBjb25zdCBTY3JvbGxDaGFpbmluZ0Jsb2NrZXImIFNjcm9sbENoYWluaW5nQmxvY2tlckZy
b21TdWJmcmFtZSk7CiAKICAgICB2b2lkIHJlbW92ZUxhdGNoaW5nU3RhdGVGb3JUYXJnZXQoY29u
c3QgRWxlbWVudCYpOwogICAgIHZvaWQgcmVtb3ZlTGF0Y2hpbmdTdGF0ZUZvckZyYW1lKGNvbnN0
IEZyYW1lJik7CkBAIC03Myw2ICs3Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIFdlYWtQdHI8RWxl
bWVudD4gd2hlZWxFdmVudEVsZW1lbnQ7CiAgICAgICAgIFdlYWtQdHI8U2Nyb2xsYWJsZUFyZWE+
IHNjcm9sbGFibGVBcmVhOwogICAgICAgICBGcmFtZSogZnJhbWUgeyBudWxscHRyIH07CisgICAg
ICAgIFNjcm9sbENoYWluaW5nQmxvY2tlciBzY3JvbGxDaGFpbmluZ0Jsb2NrZXI7CiAgICAgICAg
IGJvb2wgaXNPdmVyV2lkZ2V0IHsgZmFsc2UgfTsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvclR5cGVzLmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvclR5cGVzLmgK
aW5kZXggYmQ0Nzg0YjkzODVhYzdlYTZkNTFlOWUyOTRhYmJkM2YyMjE5ZDNmZC4uNjlkMGY2MjQ0
ZGMwNGFjYWM5ODljMzBiNGE2MDcwZTNmODg0ODQyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3JUeXBlcy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yVHlwZXMuaApAQCAt
NjgsNiArNjgsOSBAQCBlbnVtIGNsYXNzIFNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb24gewog
fTsKIAogc3RydWN0IFNjcm9sbGFibGVBcmVhUGFyYW1ldGVycyB7CisgICAgT3ZlcnNjcm9sbEJl
aGF2aW9yIGhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IgeyBPdmVyc2Nyb2xsQmVoYXZpb3I6
OiBBdXRvIH07CisgICAgT3ZlcnNjcm9sbEJlaGF2aW9yIHZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2
aW9yIHsgT3ZlcnNjcm9sbEJlaGF2aW9yOjogQXV0byB9OworCiAgICAgU2Nyb2xsRWxhc3RpY2l0
eSBob3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eSB7IFNjcm9sbEVsYXN0aWNpdHlOb25lIH07CiAg
ICAgU2Nyb2xsRWxhc3RpY2l0eSB2ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkgeyBTY3JvbGxFbGFz
dGljaXR5Tm9uZSB9OwogCkBAIC04NCw3ICs4Nyw5IEBAIHN0cnVjdCBTY3JvbGxhYmxlQXJlYVBh
cmFtZXRlcnMgewogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNjcm9sbGFibGVBcmVhUGFy
YW1ldGVycyYgb3RoZXIpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gaG9yaXpvbnRhbFNj
cm9sbEVsYXN0aWNpdHkgPT0gb3RoZXIuaG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkKKyAgICAg
ICAgcmV0dXJuIGhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IgPT0gb3RoZXIuaG9yaXpvbnRh
bE92ZXJzY3JvbGxCZWhhdmlvcgorICAgICAgICAgICAgJiYgdmVydGljYWxPdmVyc2Nyb2xsQmVo
YXZpb3IgPT0gb3RoZXIudmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IKKyAgICAgICAgICAgICYm
IGhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5ID09IG90aGVyLmhvcml6b250YWxTY3JvbGxFbGFz
dGljaXR5CiAgICAgICAgICAgICAmJiB2ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkgPT0gb3RoZXIu
dmVydGljYWxTY3JvbGxFbGFzdGljaXR5CiAgICAgICAgICAgICAmJiBob3Jpem9udGFsU2Nyb2xs
YmFyTW9kZSA9PSBvdGhlci5ob3Jpem9udGFsU2Nyb2xsYmFyTW9kZQogICAgICAgICAgICAgJiYg
dmVydGljYWxTY3JvbGxiYXJNb2RlID09IG90aGVyLnZlcnRpY2FsU2Nyb2xsYmFyTW9kZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcAppbmRleCAx
Y2VmMzFiYjM2NjUxNmQzYjRhOGNlODFmYzE5ZGZhYjZlOTJhMGQ1Li42M2M0OGExZWYwY2UwMmQ1
MzlkMjM2Y2QyMzQ3YjNlYzRkNWVmY2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcApAQCAtMTc2LDE5ICsxNzYsNTUgQEAgV2hlZWxFdmVu
dEhhbmRsaW5nUmVzdWx0IFNjcm9sbGluZ1RyZWU6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxh
dGZvcm1XaGVlbEV2ZW4KIAogV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0IFNjcm9sbGluZ1RyZWU6
OmhhbmRsZVdoZWVsRXZlbnRXaXRoTm9kZShjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVs
RXZlbnQsIE9wdGlvblNldDxXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBzPiBwcm9jZXNzaW5nU3Rl
cHMsIFNjcm9sbGluZ1RyZWVOb2RlKiBub2RlLCBFdmVudFRhcmdldGluZyBldmVudFRhcmdldGlu
ZykKIHsKKyAgICBGbG9hdFNpemUgZmlsdGVyZWRQbGF0Zm9ybURlbHRhKHdoZWVsRXZlbnQuZGVs
dGFYKCksIHdoZWVsRXZlbnQuZGVsdGFZKCkpOworICAgIFBsYXRmb3JtV2hlZWxFdmVudCBhZGp1
c3RlZFdoZWVsRXZlbnQgPSBQbGF0Zm9ybVdoZWVsRXZlbnQod2hlZWxFdmVudCk7CisgICAgU2Ny
b2xsQ2hhaW5pbmdCbG9ja2VyIHNjcm9sbENoYWluaW5nQmxvY2tlciA9IHsgZmFsc2UsIGZhbHNl
IH07CisgICAgYXV0byBiaWFzZWREZWx0YSA9IFBsYXRmb3JtV2hlZWxFdmVudDo6d2hlZWxEZWx0
YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoZmlsdGVyZWRQbGF0Zm9ybURlbHRhKTsKICAgICB3aGls
ZSAobm9kZSkgewogICAgICAgICBpZiAoaXM8U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU+KCpu
b2RlKSkgewogICAgICAgICAgICAgYXV0byYgc2Nyb2xsaW5nTm9kZSA9IGRvd25jYXN0PFNjcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlPigqbm9kZSk7Ci0gICAgICAgICAgICBhdXRvIHJlc3VsdCA9
IHNjcm9sbGluZ05vZGUuaGFuZGxlV2hlZWxFdmVudCh3aGVlbEV2ZW50LCBldmVudFRhcmdldGlu
Zyk7CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IHNjcm9sbGluZ05vZGUuaGFuZGxlV2hlZWxF
dmVudChhZGp1c3RlZFdoZWVsRXZlbnQsIGV2ZW50VGFyZ2V0aW5nKTsKIAogICAgICAgICAgICAg
aWYgKHJlc3VsdC53YXNIYW5kbGVkKSB7Ci0gICAgICAgICAgICAgICAgbV9sYXRjaGluZ0NvbnRy
b2xsZXIubm9kZURpZEhhbmRsZUV2ZW50KHNjcm9sbGluZ05vZGUuc2Nyb2xsaW5nTm9kZUlEKCks
IHByb2Nlc3NpbmdTdGVwcywgd2hlZWxFdmVudCwgbV9hbGxvd0xhdGNoaW5nKTsKKyAgICAgICAg
ICAgICAgICAvLyBJZiB0aGUgc2Nyb2xsIGNoYWluaW5nIGlzIGJsb2NrZWQgaW4gYSBzaW5nbGUg
ZGlyZWN0aW9uLCBpdCBzaG91bGQgc3RvcCBsYXRjaGluZyB0byBhIG5vZGUsCisgICAgICAgICAg
ICAgICAgLy8gZm9yIHRoZSB3aGVlbCBldmVudCBtaWdodCBjaGFuZ2UgdGhlIGRpcmVjdGlvbiBh
bmQgb3ZlcnNjcm9sbC1iZWhhdmlvciBtaWdodCBub3QgYmUgYWJsZSBibG9jaworICAgICAgICAg
ICAgICAgIC8vIHRoZSBzY3JvbGwgY2hhaW5pbmcgaWYgaXQgbGF0Y2hlcyB0byB0aGUgYW5jZXN0
cnkgbm9kZSBvZiBvdmVyc2Nyb2xsLWJlaGF2aW9yIHRhcmdldC4KKyAgICAgICAgICAgICAgICBp
ZiAoKHNjcm9sbENoYWluaW5nQmxvY2tlci5ibG9ja1ggJiYgc2Nyb2xsQ2hhaW5pbmdCbG9ja2Vy
LmJsb2NrWSkgfHwgKCFzY3JvbGxDaGFpbmluZ0Jsb2NrZXIuYmxvY2tYICYmICFzY3JvbGxDaGFp
bmluZ0Jsb2NrZXIuYmxvY2tZKSkKKyAgICAgICAgICAgICAgICAgICAgbV9sYXRjaGluZ0NvbnRy
b2xsZXIubm9kZURpZEhhbmRsZUV2ZW50KHNjcm9sbGluZ05vZGUuc2Nyb2xsaW5nTm9kZUlEKCks
IHByb2Nlc3NpbmdTdGVwcywgd2hlZWxFdmVudCwgbV9hbGxvd0xhdGNoaW5nKTsKICAgICAgICAg
ICAgICAgICBtX2dlc3R1cmVTdGF0ZS5ub2RlRGlkSGFuZGxlRXZlbnQoc2Nyb2xsaW5nTm9kZS5z
Y3JvbGxpbmdOb2RlSUQoKSwgd2hlZWxFdmVudCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKHJlc3VsdC5uZWVkc01haW5U
aHJlYWRQcm9jZXNzaW5nKCkgfHwgZXZlbnRUYXJnZXRpbmcgIT0gRXZlbnRUYXJnZXRpbmc6OlBy
b3BhZ2F0ZSkKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworCisgICAgICAgICAgICBz
Y3JvbGxDaGFpbmluZ0Jsb2NrZXIuYmxvY2tYIHw9IHNjcm9sbGluZ05vZGUuaG9yaXpvbnRhbE92
ZXJzY3JvbGxCZWhhdmlvcigpICE9IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0bzsKKyAgICAgICAg
ICAgIHNjcm9sbENoYWluaW5nQmxvY2tlci5ibG9ja1kgfD0gc2Nyb2xsaW5nTm9kZS52ZXJ0aWNh
bE92ZXJzY3JvbGxCZWhhdmlvcigpICE9IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0bzsKKyAgICAg
ICAgICAgIGlmIChzY3JvbGxDaGFpbmluZ0Jsb2NrZXIuYmxvY2tYKSB7CisgICAgICAgICAgICAg
ICAgZmlsdGVyZWRQbGF0Zm9ybURlbHRhLnNldFdpZHRoKDApOworICAgICAgICAgICAgICAgIGlm
ICghYmlhc2VkRGVsdGEuaGVpZ2h0KCkpCisgICAgICAgICAgICAgICAgICAgIGZpbHRlcmVkUGxh
dGZvcm1EZWx0YS5zZXRIZWlnaHQoMCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAo
c2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLmJsb2NrWSkgeworICAgICAgICAgICAgICAgIGZpbHRlcmVk
UGxhdGZvcm1EZWx0YS5zZXRIZWlnaHQoMCk7CisgICAgICAgICAgICAgICAgaWYgKCFiaWFzZWRE
ZWx0YS53aWR0aCgpKQorICAgICAgICAgICAgICAgICAgICBmaWx0ZXJlZFBsYXRmb3JtRGVsdGEu
c2V0V2lkdGgoMCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBhZGp1c3RlZFdoZWVsRXZl
bnQgPSBhZGp1c3RlZFdoZWVsRXZlbnQuY29weVdpdGhEZWx0YXNBbmRWZWxvY2l0eShmaWx0ZXJl
ZFBsYXRmb3JtRGVsdGEud2lkdGgoKSwgZmlsdGVyZWRQbGF0Zm9ybURlbHRhLmhlaWdodCgpLCBh
ZGp1c3RlZFdoZWVsRXZlbnQuc2Nyb2xsaW5nVmVsb2NpdHkoKSk7CisKKyAgICAgICAgICAgIGlm
IChzY3JvbGxDaGFpbmluZ0Jsb2NrZXIuYmxvY2tYIHx8IHNjcm9sbENoYWluaW5nQmxvY2tlci5i
bG9ja1kpIHsKKyAgICAgICAgICAgICAgICBpZiAoc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLmJsb2Nr
WCAmJiAhYmlhc2VkRGVsdGEuaGVpZ2h0KCkgJiYgd2lsbFdoZWVsRXZlbnRTdGFydFN3aXBlR2Vz
dHVyZSh3aGVlbEV2ZW50KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFdoZWVsRXZlbnRI
YW5kbGluZ1Jlc3VsdDo6dW5oYW5kbGVkKCk7CisKKyAgICAgICAgICAgICAgICBpZiAoKHNjcm9s
bENoYWluaW5nQmxvY2tlci5ibG9ja1ggJiYgc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLmJsb2NrWSkK
KyAgICAgICAgICAgICAgICAgICAgfHwgKHNjcm9sbENoYWluaW5nQmxvY2tlci5ibG9ja1ggJiYg
IWJpYXNlZERlbHRhLmhlaWdodCgpKQorICAgICAgICAgICAgICAgICAgICB8fCAoc2Nyb2xsQ2hh
aW5pbmdCbG9ja2VyLmJsb2NrWSAmJiAhYmlhc2VkRGVsdGEud2lkdGgoKSkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKHNjcm9sbENoYWluaW5nQmxvY2tlci5ibG9ja1ggJiYgc2Nyb2xsQ2hh
aW5pbmdCbG9ja2VyLmJsb2NrWSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fbGF0Y2hpbmdD
b250cm9sbGVyLm5vZGVEaWRIYW5kbGVFdmVudChzY3JvbGxpbmdOb2RlLnNjcm9sbGluZ05vZGVJ
RCgpLCBwcm9jZXNzaW5nU3RlcHMsIHdoZWVsRXZlbnQsIG1fYWxsb3dMYXRjaGluZyk7CisgICAg
ICAgICAgICAgICAgICAgIG1fZ2VzdHVyZVN0YXRlLm5vZGVEaWRIYW5kbGVFdmVudChzY3JvbGxp
bmdOb2RlLnNjcm9sbGluZ05vZGVJRCgpLCB3aGVlbEV2ZW50KTsKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdDo6aGFuZGxlZCgpOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIGlmIChpczxTY3Jv
bGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxQcm94eU5vZGU+KCpub2RlKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGUuY3BwCmluZGV4IDI1MzlkM2QyZTE0YjNlMmMzMThiNDAzMGY1NzQ0OWIwMDk3NzYxNmQu
LjM0MTczMzQ1Mzg2YjNmZjUzZTg5NjcyNTMxMzI1MGZiNzEzZjY5ZjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZS5jcHAKQEAgLTEzNCw2ICsxMzQsMTYgQEAgYm9vbCBTY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZTo6aXNMYXRjaGVkTm9kZSgpIGNvbnN0CiAgICAgcmV0dXJuIHNjcm9sbGluZ1RyZWUo
KS5sYXRjaGVkTm9kZUlEKCkgPT0gc2Nyb2xsaW5nTm9kZUlEKCk7CiB9CiAKK092ZXJzY3JvbGxC
ZWhhdmlvciBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6aG9yaXpvbnRhbE92ZXJzY3JvbGxC
ZWhhdmlvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJz
Lmhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3I7Cit9CisKK092ZXJzY3JvbGxCZWhhdmlvciBT
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6dmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBj
b25zdAoreworICAgIHJldHVybiBtX3Njcm9sbGFibGVBcmVhUGFyYW1ldGVycy52ZXJ0aWNhbE92
ZXJzY3JvbGxCZWhhdmlvcjsKK30KKwogYm9vbCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6
Y2FuSGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQs
IEV2ZW50VGFyZ2V0aW5nIGV2ZW50VGFyZ2V0aW5nKSBjb25zdAogewogICAgIGlmICghY2FuSGF2
ZVNjcm9sbGJhcnMoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oCmluZGV4IDU5Y2EyMzk2MzAyZWUxOTg2
ZTQwOThhYzAwYmFhYTI2M2VkYzY0NGEuLjU0NTVhNzZkMmU0M2ViOTY1ODFhNDVmZTliZjc1ZDA5
MDhjNWI2NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaApAQCAtMTQ1LDYgKzE0NSw4IEBAIHByb3Rl
Y3RlZDoKICAgICBjb25zdCBGbG9hdFNpemUmIHRvdGFsQ29udGVudHNTaXplRm9yUnViYmVyQmFu
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fdG90YWxDb250ZW50c1NpemVGb3JSdWJiZXJCYW5kOyB9CiAg
ICAgdm9pZCBzZXRUb3RhbENvbnRlbnRzU2l6ZUZvclJ1YmJlckJhbmQoY29uc3QgRmxvYXRTaXpl
JiB0b3RhbENvbnRlbnRzU2l6ZUZvclJ1YmJlckJhbmQpIHsgbV90b3RhbENvbnRlbnRzU2l6ZUZv
clJ1YmJlckJhbmQgPSB0b3RhbENvbnRlbnRzU2l6ZUZvclJ1YmJlckJhbmQ7IH0KIAorICAgIE92
ZXJzY3JvbGxCZWhhdmlvciBob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29uc3Q7Cisg
ICAgT3ZlcnNjcm9sbEJlaGF2aW9yIHZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29uc3Q7
CiAgICAgU2Nyb2xsRWxhc3RpY2l0eSBob3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eSgpIGNvbnN0
IHsgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzLmhvcml6b250YWxTY3JvbGxFbGFz
dGljaXR5OyB9CiAgICAgU2Nyb2xsRWxhc3RpY2l0eSB2ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHko
KSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGFibGVBcmVhUGFyYW1ldGVycy52ZXJ0aWNhbFNjcm9s
bEVsYXN0aWNpdHk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVn
YXRlTWFjLmgKaW5kZXggN2EwZTczYTFlYjZhNGE5ZWU3NmIyYmNjZDNhZGVhNWE3YjFkMmZjZS4u
ZWY5MzZjYjU3OTY4M2I5MGY3ZTUwOGE5YjAzMmM2ZWE1YjFkZjNhNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
RGVsZWdhdGVNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5oCkBAIC0xMDEsNiArMTAxLDkgQEAg
cHJpdmF0ZToKICAgICBGbG9hdFNpemUgdmlld3BvcnRTaXplKCkgY29uc3Qgb3ZlcnJpZGU7CiAj
ZW5kaWYKIAorICAgIGJvb2wgc2hvdWxkU3RvcEhvcml6b250YWxTdHJlY2goKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBib29sIHNob3VsZFN0b3BWZXJ0aWNhbFN0cmVjaCgpIGNvbnN0IG92ZXJyaWRl
OworCiAgICAgdm9pZCByZWxlYXNlUmVmZXJlbmNlc1RvU2Nyb2xsZXJJbXBzT25UaGVNYWluVGhy
ZWFkKCk7CiAKICAgICBTY3JvbGxDb250cm9sbGVyIG1fc2Nyb2xsQ29udHJvbGxlcjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZURlbGVnYXRlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
bWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMubW0KaW5kZXggOGZkYzNl
NWU5M2MwNTA0N2QwYTI1NmQ2MWZmMjAzMjg4YjYxZTA4My4uNzIyNzQxZTY4MjM3OWFiZjBiNmI5
MDhjZTkxZWJmNjZhMTFlZjJlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlRGVsZWdhdGVNYWMubW0KQEAgLTI0MSw2ICsyNDEsOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2Ny
b2xsQ29udHJvbGxlclRpbWVyPiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFj
OjpjcgogCiBib29sIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OmFsbG93
c0hvcml6b250YWxTdHJldGNoaW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVu
dCkgY29uc3QKIHsKKyAgICBpZiAoc2hvdWxkU3RvcEhvcml6b250YWxTdHJlY2goKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCiAgICAgc3dpdGNoIChob3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0
eSgpKSB7CiAgICAgY2FzZSBTY3JvbGxFbGFzdGljaXR5QXV0b21hdGljOiB7CiAgICAgICAgIGJv
b2wgc2Nyb2xsYmFyc0FsbG93U3RyZXRjaGluZyA9IGhhc0VuYWJsZWRIb3Jpem9udGFsU2Nyb2xs
YmFyKCkgfHwgIWhhc0VuYWJsZWRWZXJ0aWNhbFNjcm9sbGJhcigpOwpAQCAtMjYzLDYgKzI2Niw5
IEBAIGJvb2wgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6YWxsb3dzSG9y
aXpvbnRhbFN0cmV0Y2hpbmcoY29uc3QgUGxhCiAKIGJvb2wgU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZU1hYzo6YWxsb3dzVmVydGljYWxTdHJldGNoaW5nKGNvbnN0IFBsYXRmb3Jt
V2hlZWxFdmVudCYgd2hlZWxFdmVudCkgY29uc3QKIHsKKyAgICBpZiAoc2hvdWxkU3RvcFZlcnRp
Y2FsU3RyZWNoKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIHN3aXRjaCAodmVydGlj
YWxTY3JvbGxFbGFzdGljaXR5KCkpIHsKICAgICBjYXNlIFNjcm9sbEVsYXN0aWNpdHlBdXRvbWF0
aWM6IHsKICAgICAgICAgYm9vbCBzY3JvbGxiYXJzQWxsb3dTdHJldGNoaW5nID0gaGFzRW5hYmxl
ZFZlcnRpY2FsU2Nyb2xsYmFyKCkgfHwgIWhhc0VuYWJsZWRIb3Jpem9udGFsU2Nyb2xsYmFyKCk7
CkBAIC00MzIsNiArNDM4LDE2IEBAIEZsb2F0U2l6ZSBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZURlbGVnYXRlTWFjOjp2aWV3cG9ydFNpemUoKSBjb25zdAogfQogI2VuZGlmCiAKK2Jvb2wgU2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6c2hvdWxkU3RvcEhvcml6b250YWxT
dHJlY2goKSBjb25zdAoreworICAgIHJldHVybiBzY3JvbGxpbmdOb2RlKCkuaG9yaXpvbnRhbE92
ZXJzY3JvbGxCZWhhdmlvcigpID09IE92ZXJzY3JvbGxCZWhhdmlvcjo6Tm9uZTsKK30KKworYm9v
bCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjpzaG91bGRTdG9wVmVydGlj
YWxTdHJlY2goKSBjb25zdAoreworICAgIHJldHVybiBzY3JvbGxpbmdOb2RlKCkudmVydGljYWxP
dmVyc2Nyb2xsQmVoYXZpb3IoKSA9PSBPdmVyc2Nyb2xsQmVoYXZpb3I6Ok5vbmU7Cit9CisKIHZv
aWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6ZGVmZXJXaGVlbEV2ZW50
VGVzdENvbXBsZXRpb25Gb3JSZWFzb24oV2hlZWxFdmVudFRlc3RNb25pdG9yOjpTY3JvbGxhYmxl
QXJlYUlkZW50aWZpZXIgaWRlbnRpZmllciwgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpEZWZlclJl
YXNvbiByZWFzb24pIGNvbnN0CiB7CiAgICAgaWYgKCFzY3JvbGxpbmdUcmVlKCkuaXNNb25pdG9y
aW5nV2hlZWxFdmVudHMoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bs
YXRmb3JtV2hlZWxFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1XaGVl
bEV2ZW50LmgKaW5kZXggZDcxNjkzNDZhMjQwMjNjMmE0Nzg3YWUzNDU0MGEzNzYwN2MwYTJkNS4u
MmZlOTA1YzNiYmExN2NmMWY5NDZhNTg4NzQyMTgyYTQ2OGE5MWI4MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNw
cmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgorI2luY2x1ZGUgIkZsb2F0U2l6
ZS5oIgogI2luY2x1ZGUgIkludFBvaW50LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1FdmVudC5oIgog
I2luY2x1ZGUgPHd0Zi9XaW5kb3dzRXh0cmFzLmg+CkBAIC0xNzQsNiArMTc1LDggQEAgcHVibGlj
OgogICAgIFBsYXRmb3JtV2hlZWxFdmVudChIV05ELCBXUEFSQU0sIExQQVJBTSwgYm9vbCBpc01v
dXNlSFdoZWVsKTsKICNlbmRpZgogCisgICAgc3RhdGljIEZsb2F0U2l6ZSB3aGVlbERlbHRhQmlh
c2luZ1Rvd2FyZHNWZXJ0aWNhbChjb25zdCBGbG9hdFNpemUmKTsKKwogcHJvdGVjdGVkOgogICAg
IFBsYXRmb3JtV2hlZWxFdmVudEdyYW51bGFyaXR5IG1fZ3JhbnVsYXJpdHkgeyBTY3JvbGxCeVBp
eGVsV2hlZWxFdmVudCB9OwogICAgIGJvb2wgbV9kaXJlY3Rpb25JbnZlcnRlZEZyb21EZXZpY2Ug
eyBmYWxzZSB9OwpAQCAtMjY0LDYgKzI2NywxOSBAQCBpbmxpbmUgRmxvYXRQb2ludCBQbGF0Zm9y
bVdoZWVsRXZlbnQ6OnN3aXBlVmVsb2NpdHkoKSBjb25zdAogCiAjZW5kaWYgLy8gRU5BQkxFKEtJ
TkVUSUNfU0NST0xMSU5HKQogCitpbmxpbmUgRmxvYXRTaXplIFBsYXRmb3JtV2hlZWxFdmVudDo6
d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoY29uc3QgRmxvYXRTaXplJiBkZWx0YSkK
K3sKKyAgICBhdXRvIGRlbHRhWCA9IGRlbHRhLngoKTsKKyAgICBhdXRvIGRlbHRhWSA9IGRlbHRh
LnkoKTsKKworICAgIGlmIChmYWJzZihkZWx0YVkpID49IGZhYnNmKGRlbHRhWCkpCisgICAgICAg
IGRlbHRhWCA9IDA7CisgICAgZWxzZQorICAgICAgICBkZWx0YVkgPSAwOworCisgICAgcmV0dXJu
IHsgZGVsdGFYLCBkZWx0YVkgfTsKK30KKwogV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYp
OwogV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0
cmVhbSYsIFdoZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHMpOwogV0VCQ09SRV9FWFBPUlQgV1RGOjpU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIEV2ZW50SGFuZGxpbmcpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVHlwZXMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFR5cGVzLmgKaW5kZXggYTA5M2M5YjNlNjBhZGI5Zjk5
MjYyNTc4Y2FmM2RmYTQwZGY2MDQxYS4uMWNkZjllNmRiNDRmNjIzM2M4NmNmYjdhMzQ2MDJjYzBj
NTc3MTg2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVHlwZXMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxUeXBlcy5oCkBAIC0yNDksNiAr
MjQ5LDExIEBAIGVudW0gY2xhc3MgU2Nyb2xsUG9zaXRpb25pbmdCZWhhdmlvciA6IHVpbnQ4X3Qg
ewogICAgIFN0YXRpb25hcnkKIH07CiAKK3N0cnVjdCBTY3JvbGxDaGFpbmluZ0Jsb2NrZXIgewor
ICAgIGJvb2wgYmxvY2tYIHsgZmFsc2UgfTsKKyAgICBib29sIGJsb2NrWSB7IGZhbHNlIH07Cit9
OworCiB1c2luZyBTY3JvbGxiYXJDb250cm9sU3RhdGUgPSB1bnNpZ25lZDsKIHVzaW5nIFNjcm9s
bGJhckNvbnRyb2xQYXJ0TWFzayA9IHVuc2lnbmVkOwogdXNpbmcgU2Nyb2xsaW5nTm9kZUlEID0g
dWludDY0X3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxl
QXJlYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaAppbmRleCBm
NjRlNjgwYmFhMDA4MTU5OTM0YzY5YmNmYjNiZmMxNGMxZmMzYWNmLi45NTNhM2U2MGUwODc4NzJm
ZjA3ZGNmNDhmMWI3MmM0OWU2ZTMwNDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bGFibGVBcmVhLmgKQEAgLTEyNCw2ICsxMjQsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBjb25zdHJh
aW5zU2Nyb2xsaW5nVG9Db250ZW50RWRnZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29uc3RyYWluc1Nj
cm9sbGluZ1RvQ29udGVudEVkZ2U7IH0KICAgICB2b2lkIHNldENvbnN0cmFpbnNTY3JvbGxpbmdU
b0NvbnRlbnRFZGdlKGJvb2wgY29uc3RyYWluc1Njcm9sbGluZ1RvQ29udGVudEVkZ2UpIHsgbV9j
b25zdHJhaW5zU2Nyb2xsaW5nVG9Db250ZW50RWRnZSA9IGNvbnN0cmFpbnNTY3JvbGxpbmdUb0Nv
bnRlbnRFZGdlOyB9CiAKKyAgICB2aXJ0dWFsIE92ZXJzY3JvbGxCZWhhdmlvciBob3Jpem9udGFs
T3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29uc3QgeyByZXR1cm4gT3ZlcnNjcm9sbEJlaGF2aW9yOjpB
dXRvOyB9CisgICAgdmlydHVhbCBPdmVyc2Nyb2xsQmVoYXZpb3IgdmVydGljYWxPdmVyc2Nyb2xs
QmVoYXZpb3IoKSBjb25zdCB7IHJldHVybiBPdmVyc2Nyb2xsQmVoYXZpb3I6OkF1dG87IH0KKwog
ICAgIHZvaWQgc2V0VmVydGljYWxTY3JvbGxFbGFzdGljaXR5KFNjcm9sbEVsYXN0aWNpdHkgc2Ny
b2xsRWxhc3RpY2l0eSkgeyBtX3ZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eSA9IHNjcm9sbEVsYXN0
aWNpdHk7IH0KICAgICBTY3JvbGxFbGFzdGljaXR5IHZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eSgp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFNjcm9sbEVsYXN0aWNpdHk+KG1fdmVydGljYWxT
Y3JvbGxFbGFzdGljaXR5KTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9TY3JvbGxDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9TY3JvbGxDb250cm9sbGVyLmgKaW5kZXggZmIyYWE4NjM3Y2Y4YzczMGVlYzFlNDMzZmQ2YWIw
MTA4ZmQ5YjExMi4uMDdiNGJjZmMwZWRmOTAzNzYxOTc3ZGRkYTcxMmUyOTljMDUzNmNmNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIuaApA
QCAtMTIxLDYgKzEyMSwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBMYXlvdXRTaXplIHNjcm9s
bEV4dGVudCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIEZsb2F0U2l6ZSB2aWV3cG9ydFNpemUo
KSBjb25zdCA9IDA7CiAjZW5kaWYKKworI2lmIFBMQVRGT1JNKE1BQykKKyAgICB2aXJ0dWFsIGJv
b2wgc2hvdWxkU3RvcEhvcml6b250YWxTdHJlY2goKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQor
ICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTdG9wVmVydGljYWxTdHJlY2goKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQorI2VuZGlmCiB9OwogCiBlbnVtIGNsYXNzIFdoZWVsRXZlbnRTdGF0dXMgewpA
QCAtMTc1LDggKzE4MCw2IEBAIHB1YmxpYzoKICNlbmRpZgogI2VuZGlmCiAKLSAgICBzdGF0aWMg
RmxvYXRTaXplIHdoZWVsRGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRpY2FsKGNvbnN0IFBsYXRmb3Jt
V2hlZWxFdmVudCYpOwotCiAgICAgZW51bSBjbGFzcyBXaGVlbEF4aXNCaWFzIHsgTm9uZSwgVmVy
dGljYWwgfTsKICAgICBzdGF0aWMgT3B0aW9uYWw8U2Nyb2xsRGlyZWN0aW9uPiBkaXJlY3Rpb25G
cm9tRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgT3B0aW9uYWw8U2Nyb2xsRXZlbnRB
eGlzPiwgV2hlZWxBeGlzQmlhcyA9IFdoZWVsQXhpc0JpYXM6Ok5vbmUpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9sbGVyLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5tbQppbmRleCAyNzAw
YTJmOWE5NDM3M2ZjODc5YjdiYTNhMTI3NDA5NzhkYjY5ZTUyLi5lMTY1MzBhZmJiNTkwMmYyOGE1
NmNmYzRmMzA3NDQ1MzIwYzQ4MWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9TY3JvbGxDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL1Njcm9sbENvbnRyb2xsZXIubW0KQEAgLTI1Myw3ICsyNTMsOCBAQCBib29sIFNjcm9s
bENvbnRyb2xsZXI6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3
aGVlbEV2ZW50KQogICAgICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAg
ICAgICAgIG1fb3ZlcmZsb3dTY3JvbGxEZWx0YS5zZXRXaWR0aChtX292ZXJmbG93U2Nyb2xsRGVs
dGEud2lkdGgoKSArIGRlbHRhWCk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
IHNob3VsZFN0cmV0Y2ggPSB0cnVlOworICAgICAgICAgICAgICAgIGlmICgoIWRlbHRhWCB8fCAh
bV9jbGllbnQuc2hvdWxkU3RvcEhvcml6b250YWxTdHJlY2goKSkgJiYgKCFkZWx0YVkgfHwgIW1f
Y2xpZW50LnNob3VsZFN0b3BWZXJ0aWNhbFN0cmVjaCgpKSkKKyAgICAgICAgICAgICAgICAgICAg
c2hvdWxkU3RyZXRjaCA9IHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtMzMw
LDE5ICszMzEsNiBAQCBib29sIFNjcm9sbENvbnRyb2xsZXI6OmhhbmRsZVdoZWVsRXZlbnQoY29u
c3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50KQogfQogI2VuZGlmIC8vIFBMQVRGT1JN
KE1BQykKIAotRmxvYXRTaXplIFNjcm9sbENvbnRyb2xsZXI6OndoZWVsRGVsdGFCaWFzaW5nVG93
YXJkc1ZlcnRpY2FsKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCkKLXsKLSAg
ICBhdXRvIGRlbHRhWCA9IHdoZWVsRXZlbnQuZGVsdGFYKCk7Ci0gICAgYXV0byBkZWx0YVkgPSB3
aGVlbEV2ZW50LmRlbHRhWSgpOwotCi0gICAgaWYgKGZhYnNmKGRlbHRhWSkgPj0gZmFic2YoZGVs
dGFYKSkKLSAgICAgICAgZGVsdGFYID0gMDsKLSAgICBlbHNlCi0gICAgICAgIGRlbHRhWSA9IDA7
Ci0KLSAgICByZXR1cm4geyBkZWx0YVgsIGRlbHRhWSB9OwotfQotCiBPcHRpb25hbDxTY3JvbGxE
aXJlY3Rpb24+IFNjcm9sbENvbnRyb2xsZXI6OmRpcmVjdGlvbkZyb21FdmVudChjb25zdCBQbGF0
Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIE9wdGlvbmFsPFNjcm9sbEV2ZW50QXhpcz4gYXhp
cywgV2hlZWxBeGlzQmlhcyBiaWFzKQogewogICAgIC8vIEZJWE1FOiBJdCdzIGltcG9zc2libGUg
dG8gaW5mZXIgZGlyZWN0aW9uIGZyb20gYSBzaW5nbGUgZXZlbnQsIHNpbmNlIHRoZSBzdGFydCBv
ZiBhIGdlc3R1cmUgaXMgZWl0aGVyIHplcm8gb3IKQEAgLTM1MCw3ICszMzgsNyBAQCBPcHRpb25h
bDxTY3JvbGxEaXJlY3Rpb24+IFNjcm9sbENvbnRyb2xsZXI6OmRpcmVjdGlvbkZyb21FdmVudChj
b25zdCBQbGF0Zm9ybVdoZQogCiAgICAgYXV0byB3aGVlbERlbHRhID0gRmxvYXRTaXplIHsgd2hl
ZWxFdmVudC5kZWx0YVgoKSwgd2hlZWxFdmVudC5kZWx0YVkoKSB9OwogICAgIGlmIChiaWFzID09
IFdoZWVsQXhpc0JpYXM6OlZlcnRpY2FsKQotICAgICAgICB3aGVlbERlbHRhID0gd2hlZWxEZWx0
YUJpYXNpbmdUb3dhcmRzVmVydGljYWwod2hlZWxFdmVudCk7CisgICAgICAgIHdoZWVsRGVsdGEg
PSBQbGF0Zm9ybVdoZWVsRXZlbnQ6OndoZWVsRGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRpY2FsKHdo
ZWVsRXZlbnQuZGVsdGEoKSk7CiAKICAgICBpZiAoYXhpcykgewogICAgICAgICBzd2l0Y2ggKGF4
aXMudmFsdWUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Nj
cm9sbEFuaW1hdG9yTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5p
bWF0b3JNYWMuaAppbmRleCA2NGYwOGFjNTQ3YjUwMjkyOGFjYWJjYWIzNjM4ZTVjNzUwMTQ4ODI1
Li40YjJhYzNhNTcyNDVhYzQwZGExODhlMTMzZWIwZTk4ZDlhZDRhNzhmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMuaApAQCAtMTU4LDYgKzE1
OCw5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0FscmVhZHlQaW5uZWRJbkRpcmVjdGlvbk9mR2Vz
dHVyZShjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBTY3JvbGxFdmVudEF4aXMpIGNvbnN0Owog
I2VuZGlmCiAKKyAgICBib29sIHNob3VsZFN0b3BIb3Jpem9udGFsU3RyZWNoKCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgYm9vbCBzaG91bGRTdG9wVmVydGljYWxTdHJlY2goKSBjb25zdCBvdmVycmlk
ZTsKKwogICAgIGJvb2wgbV9oYXZlU2Nyb2xsZWRTaW5jZVBhZ2VMb2FkOwogICAgIGJvb2wgbV9u
ZWVkc1Njcm9sbGVyU3R5bGVVcGRhdGU7CiAgICAgSW50UmVjdCBtX3Zpc2libGVTY3JvbGxlclRo
dW1iUmVjdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxB
bmltYXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRv
ck1hYy5tbQppbmRleCBjZDhjMzZkMjdlMmIxNjVjY2YwMDFhZWQ4OTNhY2ZhY2U1ZWQwZDVmLi4y
NDkyYzQ1NWM0ZmYxNGNjMTE5OGFiMGYzNzkwNzlhMDdiN2U4MjJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tCkBAIC0xNTcxLDYgKzE1
NzEsMTYgQEAgdm9pZCBTY3JvbGxBbmltYXRvck1hYzo6c2V0VmlzaWJsZVNjcm9sbGVyVGh1bWJS
ZWN0KGNvbnN0IEludFJlY3QmIHNjcm9sbGVyVGh1bWIKICAgICBtX3Zpc2libGVTY3JvbGxlclRo
dW1iUmVjdCA9IHJlY3RJblZpZXdDb29yZGluYXRlczsKIH0KIAorYm9vbCBTY3JvbGxBbmltYXRv
ck1hYzo6c2hvdWxkU3RvcEhvcml6b250YWxTdHJlY2goKSBjb25zdAoreworICAgIHJldHVybiBt
X3Njcm9sbGFibGVBcmVhLmhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSA9PSBPdmVyc2Ny
b2xsQmVoYXZpb3I6Ok5vbmU7Cit9CisKK2Jvb2wgU2Nyb2xsQW5pbWF0b3JNYWM6OnNob3VsZFN0
b3BWZXJ0aWNhbFN0cmVjaCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWEu
dmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSA9PSBPdmVyc2Nyb2xsQmVoYXZpb3I6Ok5vbmU7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTTU9PVEhf
U0NST0xMSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXgg
MDhlY2U3NjJkOWJkZGM0ZTgxNjNkMzY0NzFkMzhkNzk0YTBmNWMyMy4uZDZkZmQ4ZGIzZTJkMWVh
NGNkMDFkZjU3OWFjODBkNGEzNjZiZGIzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuY3BwCkBAIC0zNDc2LDYgKzM0NzYsMjIgQEAgdm9pZCBSZW5kZXJMYXllcjo6aW52
YWxpZGF0ZVNjcm9sbENvcm5lclJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKICAgICAgICAgbV9y
ZXNpemVyLT5yZXBhaW50UmVjdGFuZ2xlKHJlY3QpOwogfQogCitPdmVyc2Nyb2xsQmVoYXZpb3Ig
UmVuZGVyTGF5ZXI6Omhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdAoreworICAg
IGF1dG8qIGJveCA9IHJlbmRlckJveCgpOworICAgIGlmIChib3ggJiYgIWJveC0+c2Nyb2xsc092
ZXJmbG93WCgpKQorICAgICAgICByZXR1cm4gU2Nyb2xsYWJsZUFyZWE6Omhvcml6b250YWxPdmVy
c2Nyb2xsQmVoYXZpb3IoKTsKKyAgICByZXR1cm4gcmVuZGVyZXIoKS5zdHlsZSgpLm92ZXJzY3Jv
bGxCZWhhdmlvclgoKTsKK30KKworT3ZlcnNjcm9sbEJlaGF2aW9yIFJlbmRlckxheWVyOjp2ZXJ0
aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpICBjb25zdAoreworICAgIGF1dG8qIGJveCA9IHJlbmRl
ckJveCgpOworICAgIGlmIChib3ggJiYgIWJveC0+c2Nyb2xsc092ZXJmbG93WSgpKQorICAgICAg
ICByZXR1cm4gU2Nyb2xsYWJsZUFyZWE6OnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCk7Cisg
ICAgcmV0dXJuIHJlbmRlcmVyKCkuc3R5bGUoKS5vdmVyc2Nyb2xsQmVoYXZpb3JZKCk7Cit9CisK
IHN0YXRpYyBib29sIHNjcm9sbGJhckhpZGRlbkJ5U3R5bGUoU2Nyb2xsYmFyKiBzY3JvbGxiYXIp
CiB7CiAgICAgcmV0dXJuIHNjcm9sbGJhciAmJiBzY3JvbGxiYXItPmlzSGlkZGVuQnlTdHlsZSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAppbmRleCA2NjI2ODJmZDE1NTU2
ZjRkNGQ5OGI4YTgxNTIwNmJlMDRiMDllM2ZlLi5mMGRjMWU5ZjE2MmQxMjdiMjhjYmM5YWU1Njdj
Nzc3NjhhNTMwZDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaApAQCAt
NDgzLDYgKzQ4Myw5IEBAIHB1YmxpYzoKICAgICBib29sIGhhc0hvcml6b250YWxTY3JvbGxiYXIo
KSBjb25zdCB7IHJldHVybiBob3Jpem9udGFsU2Nyb2xsYmFyKCk7IH0KICAgICBib29sIGhhc1Zl
cnRpY2FsU2Nyb2xsYmFyKCkgY29uc3QgeyByZXR1cm4gdmVydGljYWxTY3JvbGxiYXIoKTsgfQog
CisgICAgT3ZlcnNjcm9sbEJlaGF2aW9yIGhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBj
b25zdCBmaW5hbDsKKyAgICBPdmVyc2Nyb2xsQmVoYXZpb3IgdmVydGljYWxPdmVyc2Nyb2xsQmVo
YXZpb3IoKSBjb25zdCBmaW5hbDsKKwogICAgIGJvb2wgaG9yaXpvbnRhbFNjcm9sbGJhckhpZGRl
bkJ5U3R5bGUoKSBjb25zdCBmaW5hbDsKICAgICBib29sIHZlcnRpY2FsU2Nyb2xsYmFySGlkZGVu
QnlTdHlsZSgpIGNvbnN0IGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCAwMzI1MjExYTlhZDAxN2JkZDJhZGM1ZTYxN2I4M2Q3
Zjk3Zjk1ZTM3Li4yNGRlMzlmYzAzNmU5ZWMzM2MyMDA5NjNiNTBkMDY3ZTBkZGEwNzdjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTIw
MTMsNiArMjAxMyw5IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxVc2VyU3R5bGVTaGVldD46OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyLCBVc2VyU3R5bGVTaGVldCYgdXNlCiAKIHZvaWQgQXJndW1lbnRD
b2RlcjxTY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnM+OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlciwg
Y29uc3QgU2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogeworICAgIGVuY29k
ZXIgPDwgcGFyYW1ldGVycy5ob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yOworICAgIGVuY29k
ZXIgPDwgcGFyYW1ldGVycy52ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcjsKKwogICAgIGVuY29k
ZXIgPDwgcGFyYW1ldGVycy5ob3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eTsKICAgICBlbmNvZGVy
IDw8IHBhcmFtZXRlcnMudmVydGljYWxTY3JvbGxFbGFzdGljaXR5OwogCkBAIC0yMDMwLDYgKzIw
MzMsMTEgQEAgdm9pZCBBcmd1bWVudENvZGVyPFNjcm9sbGFibGVBcmVhUGFyYW1ldGVycz46OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTY3IKIAogYm9vbCBBcmd1bWVudENvZGVyPFNj
cm9sbGFibGVBcmVhUGFyYW1ldGVycz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBTY3JvbGxh
YmxlQXJlYVBhcmFtZXRlcnMmIHBhcmFtcykKIHsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBh
cmFtcy5ob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1zLnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2
aW9yKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShw
YXJhbXMuaG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbXMudmVydGljYWxTY3JvbGxFbGFzdGljaXR5
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXgg
ZmU3ODU4ZmY5Y2E2YTRmY2M1OWYxMjQzYjM4MTM0NGVjNWRmZmNhYy4uMGM2Njk0ZDQ0NzZkYzVl
OGYwZmRjMzdkMGRkNDRiMTJiOWJkYTA3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlIDxXZWJDb3Jl
L1JlYWx0aW1lTWVkaWFTb3VyY2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlcmluZ01vZGUu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvU2Nyb2xsVHlwZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcmlhbGl6ZWRQbGF0
Zm9ybURhdGFDdWVWYWx1ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlclR5cGVz
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TdG9yZWRDcmVkZW50aWFsc1BvbGljeS5oPgpAQCAtODk2
LDYgKzg5NywxNSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvPiB7CiAKIG5hbWVzcGFjZSBXVEYgewogCit0ZW1w
bGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6Ok92ZXJzY3JvbGxCZWhhdmlvcj4gewor
ICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgV2ViQ29yZTo6T3ZlcnNjcm9sbEJl
aGF2aW9yLAorICAgIFdlYkNvcmU6Ok92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0bywKKyAgICBXZWJD
b3JlOjpPdmVyc2Nyb2xsQmVoYXZpb3I6OkNvbnRhaW4sCisgICAgV2ViQ29yZTo6T3ZlcnNjcm9s
bEJlaGF2aW9yOjpOb25lCisgICAgPjsKK307CisKIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFp
dHM8V2ViQ29yZTo6Q29sb3JTcGFjZT4gewogICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8
CiAgICAgV2ViQ29yZTo6Q29sb3JTcGFjZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxl
Z2F0ZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3Mv
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5tbQppbmRleCBhYjM3NDcyMGEz
Mjg0N2Y3ZTVjYzU3YmJjNTc5NzRkMWUzMDQ2NTBmLi5mODk4YjY4MzE0NDA1ODIxNDc4NzBiNzdh
N2Q4OTM2OTQ5ZjkyZmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1v
dGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLm1tCkBAIC0yMjksMTIgKzIyOSwzMSBAQCB2
b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M6OmNvbW1pdFN0YXRlQWZ0
ZXJDaGlsZHJlbihjb25zdCBTY3JvbAogICAgIFNldEZvclNjb3BlPGJvb2w+IHVwZGF0aW5nQ2hh
bmdlKG1fdXBkYXRpbmdGcm9tU3RhdGVOb2RlLCB0cnVlKTsKIAogICAgIGlmIChzY3JvbGxpbmdT
dGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6
OlNjcm9sbENvbnRhaW5lckxheWVyKQorICAgICAgICB8fCBzY3JvbGxpbmdTdGF0ZU5vZGUuaGFz
Q2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsYWJsZUFy
ZWFQYXJhbXMpCiAgICAgICAgIHx8IHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVy
dHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6VG90YWxDb250ZW50c1NpemUpCiAgICAg
ICAgIHx8IHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3Rh
dGVOb2RlOjpQcm9wZXJ0eTo6UmVhY2hhYmxlQ29udGVudHNTaXplKQogICAgICAgICB8fCBzY3Jv
bGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJv
cGVydHk6OlNjcm9sbFBvc2l0aW9uKQogICAgICAgICB8fCBzY3JvbGxpbmdTdGF0ZU5vZGUuaGFz
Q2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlNjcm9sbE9yaWdp
bikpIHsKICAgICAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAgICAgICAgIFVJU2Ny
b2xsVmlldyAqc2Nyb2xsVmlldyA9IHRoaXMtPnNjcm9sbFZpZXcoKTsKKworICAgICAgICAvLyBG
SVhNRShyZGFyOi8vcHJvYmxlbS8zNDMxNTk5Nyk6IFVJU2Nyb2xsVmlldyBzaG91bGQgaGF2ZSBz
b21lIGtpbmQgb2Ygc3VwcG9ydCBmb3Igb3ZlcnNjcm9sbC1iZWhhdmlvciB0byBlbmFibGUvZGlz
YWJsZToKKyAgICAgICAgLy8gLSBub24tbG9jYWwgYm91bmRhcnkgZGVmYXVsdCBhY3Rpb25zIChl
LmcuIHNjcm9sbCBjaGFpbmluZykuCisgICAgICAgIC8vIC0gbG9jYWwgYm91bmRhcnkgZGVmYXVs
dCBhY3Rpb25zIChlLmcuIGJvdW5jaW5nKS4KKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQor
ICAgICAgICAvLyBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3Jv
bGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbGFibGVBcmVhUGFyYW1zKSkgeworICAgICAg
ICAvLyAgICAgc2Nyb2xsVmlldy5vdmVyc2Nyb2xsQmVoYXZpb3JIb3Jpem9udGFsID0gY29udmVy
dE92ZXJzY3JvbGxCZWhhdmlvckZyb21XZWJLaXRUb1VJS2l0KHNjcm9sbGluZ1N0YXRlTm9kZS5z
Y3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMoKS5ob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKTsK
KyAgICAgICAgLy8gICAgIHNjcm9sbFZpZXcub3ZlcnNjcm9sbEJlaGF2aW9yVmVydGljYWwgPSBj
b252ZXJ0T3ZlcnNjcm9sbEJlaGF2aW9yRnJvbVdlYktpdFRvVUlLaXQoc2Nyb2xsaW5nU3RhdGVO
b2RlLnNjcm9sbGFibGVBcmVhUGFyYW1ldGVycygpLnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9y
KTsKKyAgICAgICAgLy8gfQorI2VuZGlmCisgICAgICAgIC8vIEZvciBub3csIHdlIG9ubHkgZGlz
YWJsZSBib3VuY2luZyB3aGVuIGJvdGggb3ZlcmZsb3cteCBhbmQgb3ZlcmZsb3cteSBhcmUgbm9u
ZS4KKyAgICAgICAgLy8gVUlTY3JvbGxWaWV3OjphbHdheXNCb3VuY2UqIGZ1bmN0aW9ucyBjYW5u
b3QgaGVscCBoZXJlLgorICAgICAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQ
cm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbGFibGVBcmVhUGFyYW1z
KSkgeworICAgICAgICAgICAgc2Nyb2xsVmlldy5ib3VuY2VzID0gc2Nyb2xsaW5nU3RhdGVOb2Rl
LnNjcm9sbGFibGVBcmVhUGFyYW1ldGVycygpLmhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3Ig
PT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpOb25lCisgICAgICAgICAgICAmJiBzY3JvbGxpbmdTdGF0
ZU5vZGUuc2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzKCkudmVydGljYWxPdmVyc2Nyb2xsQmVoYXZp
b3IgPT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpOb25lCisgICAgICAgICAgICA/IE5PIDogWUVTOwor
ICAgICAgICB9CisKICAgICAgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJv
cGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6U2Nyb2xsQ29udGFpbmVyTGF5ZXIp
KSB7CiAgICAgICAgICAgICBpZiAoIW1fc2Nyb2xsVmlld0RlbGVnYXRlKQogICAgICAgICAgICAg
ICAgIG1fc2Nyb2xsVmlld0RlbGVnYXRlID0gYWRvcHROUyhbW1dLU2Nyb2xsaW5nTm9kZVNjcm9s
bFZpZXdEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhTY3JvbGxpbmdUcmVlTm9kZURlbGVnYXRlOnRo
aXNdKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRN
TFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1t
CmluZGV4IDQ5NjU1N2UwNzk5YzYwYTM0MjA3NWQ0OTU2MzYzOTU2NjVhYWQ2ODEuLjliNzY4YWY3
NzhjMjYxM2QxMGIyNGYyMGYzMTg5ZTg3ZDQxN2Y2MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQpAQCAtNDA5MSw2ICs0MDkxLDggQEAgc3Rh
dGljIEJPT0wgY3VycmVudFNjcm9sbElzQmxpdChOU1ZpZXcgKmNsaXBWaWV3KQogICAgIGF1dG8q
IGZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKTsKICAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+
ZXZlbnRIYW5kbGVyKCkud2hlZWxFdmVudChldmVudCkpIHsKICNpZiBQTEFURk9STShNQUMpCisg
ICAgICAgIC8vIEZJWE1FOiBOZWVkIHRvIGZpbmQgYSB3YXkgdG8gYmxvY2sgdGhlIGNyb3NzLWZy
YW1lIHNjcm9sbCBjaGFpbmluZyBpbiBXSzEuCisgICAgICAgIC8vIFdlIGNhbiBub3QganVzdCBz
a2lwIHRoZSBzY3JvbGwgaGVyZSwgaXQgbm90IG9ubHkgYmxvY2tzIHNjcm9sbCBjaGFpbmluZyBi
dXQgYWxzbyBibG9ja3MgdGhlIHNjcm9sbCBvbiBjdXJyZW50IHZpZXcuCiAgICAgICAgIFtzdXBl
ciBzY3JvbGxXaGVlbDpldmVudF07CiAjZW5kaWYKICAgICB9CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYTM1OGQ4ZmY4ZmJj
Nzg3MDI0NDA5ZTI4M2FlZDk4ZjI3OTVmNWYxZC4uNzUyMGQ3ZGM1NTNkYTEwNmQ3M2ZiZDllMTFh
N2FlZjcxNWNhODRiYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIwLTEyLTI0ICBDYXRoaWUg
Q2hlbiAgPGNhdGhpZWNoZW5AaWdhbGlhLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgQ1NTIG92
ZXJzY3JvbGwtYmVoYXZpb3Igb24gTWFjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjAxMzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBCYXNlZCBvbiBGcsOpZMOpcmljIFdhbmcncyBwYXRjaC4KKworICAg
ICAgICAqIGZhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZp
b3ItZWxlbWVudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9vdmVyc2Ny
b2xsLWJlaGF2aW9yLWlmcmFtZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
c2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGZhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1l
bnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9vdmVyc2Ny
b2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGZhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwt
YmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sOiBBZGRlZC4KKwogMjAyMC0xMi0xMCAg
QWRpdHlhIEtlZXJ0aGkgIDxha2VlcnRoaUBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU11bRkNS
XSBBZGQgbmV3IGxvb2sgZm9yIGlucHV0IHR5cGU9cmFuZ2UKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1l
bnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI3MTUwZmY2MGI1ZGJkZDBiNGE3YWM2ZjgzZmI1
NmY1N2NkMmNkODIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGlu
Zy9vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjAg
QEAKKworUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xs
LWJlaGF2aW9yOiBhdXRvIGF1dG8uCitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qg
d2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIGF1dG8uCitQQVNTIEVsZW1lbnQgaG9yaXpv
bnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gYXV0by4K
K1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZp
b3I6IGNvbnRhaW4gYXV0by4KK1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdp
dGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBhdXRvLgorUEFTUyBFbGVtZW50IHZlcnRpY2Fs
IHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBhdXRvLgorUEFTUyBF
bGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBh
dXRvIGNvbnRhaW4uCitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVy
c2Nyb2xsLWJlaGF2aW9yOiBhdXRvIGNvbnRhaW4uCitQQVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBz
Y3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gY29udGFpbi4KK1BB
U1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6
IGNvbnRhaW4gY29udGFpbi4KK1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdp
dGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBjb250YWluLgorUEFTUyBFbGVtZW50IHZlcnRp
Y2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBjb250YWluLgor
UEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2
aW9yOiBhdXRvIG5vbmUuCitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBv
dmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIG5vbmUuCitQQVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBz
Y3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gbm9uZS4KK1BBU1Mg
RWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNv
bnRhaW4gbm9uZS4KK1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3Zl
cnNjcm9sbC1iZWhhdmlvcjogbm9uZSBub25lLgorUEFTUyBFbGVtZW50IHZlcnRpY2FsIHNjcm9s
bCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBub25lLgorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItZWxl
bWVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZhMzAxNGRhOTEzNzM2ZDFhMTczY2M5ZGY2OTZlZmMwNTM4
NDVjY2YKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9vdmVy
c2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQuaHRtbApAQCAtMCwwICsxLDEwOCBAQAorPCFkb2N0eXBl
IGh0bWw+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5q
cyI+PC9zY3JpcHQ+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vZHJhZnRzLmNzc3dn
Lm9yZy9jc3Mtb3ZlcnNjcm9sbC1iZWhhdmlvciI+Cis8c3R5bGU+CisgICAgLnNjcm9sbGluZyB7
CisgICAgICAgIG92ZXJmbG93OiBzY3JvbGw7CisgICAgfQorICAgIC5zY3JvbGxDb250ZW50IHsK
KyAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgIH0KKyAg
ICAjcm9vdCB7CisgICAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgICAgaGVpZ2h0OiAyMDBweDsK
KyAgICB9CisgICAgI3Njcm9sbGVyIHsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBo
ZWlnaHQ6IDEwMHB4OworICAgIH0KKzwvc3R5bGU+Cis8ZGl2IGlkPSdyb290JyBjbGFzcz0ic2Ny
b2xsaW5nIj4KKyAgICA8ZGl2IGlkPSdzY3JvbGxlcicgY2xhc3M9InNjcm9sbGluZyI+CisgICAg
ICAgIDxkaXYgY2xhc3M9InNjcm9sbENvbnRlbnQiPjwvZGl2PgorICAgIDwvZGl2PgorICAgIDxk
aXYgY2xhc3M9InNjcm9sbENvbnRlbnQiPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+Citjb25z
dCByb290ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jvb3QnKTsKK2NvbnN0IHNjcm9sbGVy
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Njcm9sbGVyJyk7Cit2YXIgb3ZlcnNjcm9sbERh
dGFzID0gW1siYXV0byIsICJhdXRvIiwgdHJ1ZSwgdHJ1ZV0sCisgICAgICAgICAgICAgICAgICAg
ICAgICBbImNvbnRhaW4iLCAiYXV0byIsIGZhbHNlLCB0cnVlXSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIFsibm9uZSIsICJhdXRvIiwgZmFsc2UsIHRydWVdLAorICAgICAgICAgICAgICAgICAg
ICAgICAgWyJhdXRvIiwgImNvbnRhaW4iLCB0cnVlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAg
ICAgICAgICBbImNvbnRhaW4iLCAiY29udGFpbiIsIGZhbHNlLCBmYWxzZV0sCisgICAgICAgICAg
ICAgICAgICAgICAgICBbIm5vbmUiLCAiY29udGFpbiIsIGZhbHNlLCBmYWxzZV0sCisgICAgICAg
ICAgICAgICAgICAgICAgICBbImF1dG8iLCAibm9uZSIsIHRydWUsIGZhbHNlXSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIFsiY29udGFpbiIsICJub25lIiwgZmFsc2UsIGZhbHNlXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIFsibm9uZSIsICJub25lIiwgZmFsc2UsIGZhbHNlXV07Cithc3lu
YyBmdW5jdGlvbiBwZXJmb3JtV2hlZWxTY3JvbGwoc2Nyb2xsZXIsIGRpcmVjdGlvbikgeworICAg
IHZhciBkZWx0YVggPSAwOworICAgIHZhciBkZWx0YVkgPSAwOworICAgIGlmIChkaXJlY3Rpb24g
PT0gImRvd24iKQorICAgICAgICBkZWx0YVkgPSAtNTsKKyAgICBlbHNlIGlmIChkaXJlY3Rpb24g
PT0gInVwIikKKyAgICAgICAgZGVsdGFZID0gNTsKKyAgICBlbHNlIGlmIChkaXJlY3Rpb24gPT0g
InJpZ2h0IikKKyAgICAgICAgZGVsdGFYID0gLTU7CisgICAgZWxzZSBpZiAoZGlyZWN0aW9uID09
ICJsZWZ0IikKKyAgICAgICAgZGVsdGFYID0gNTsKKworICAgIHZhciB4ID0gc2Nyb2xsZXIuY2xp
ZW50V2lkdGggLyAyOworICAgIHZhciB5ID0gc2Nyb2xsZXIuY2xpZW50SGVpZ2h0IC8gMjsKKyAg
ICBldmVudFNlbmRlci5kcmFnTW9kZSA9IGZhbHNlOworICAgIGV2ZW50U2VuZGVyLm1vbml0b3JX
aGVlbEV2ZW50cygpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkZWx0YVgs
IGRlbHRhWSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZGVsdGFYICogMiwgZGVsdGFZICogMiwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkZWx0YVggKiAzLCBkZWx0YVkgKiAzLCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGRlbHRhWCwgZGVsdGFZLCAnbm9uZScsICdiZWdpbicp
OworICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkZWx0YVggKiAyLCBkZWx0YVkgKiAyLCAnbm9uZScsICdjb250aW51ZScpOworICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkZWx0YVggKiAz
LCBkZWx0YVkgKiAzLCAnbm9uZScsICdjb250aW51ZScpOworICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsK
KyAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgICAgIGV2ZW50U2VuZGVy
LmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcygoKSA9PiB7CisgICAgICAgICAgICByZXNvbHZl
KCk7CisgICAgICAgIH0pOworICAgIH0pOworfQorCitmdW5jdGlvbiByZXNldFRlc3QoKSB7Cisg
ICAgLy8gVHJ5IHZhcmlvdXMgbWV0aG9kcyB0byBlbnN1cmUgdGhlIGVsZW1lbnQgcG9zaXRpb24g
aXMgcmVzZXQgaW1tZWRpYXRlbHkuCisgICAgc2Nyb2xsZXIuc2Nyb2xsTGVmdCA9IDMwMDsKKyAg
ICBzY3JvbGxlci5zY3JvbGxUb3AgPSAzMDA7CisgICAgc2Nyb2xsZXIuc2Nyb2xsVG8oMzAwLCAz
MDApOworCisgICAgcm9vdC5zY3JvbGxMZWZ0ID0gMDsKKyAgICByb290LnNjcm9sbFRvcCA9IDA7
CisgICAgcm9vdC5zY3JvbGxUbygwLCAwKTsKK30KKworZnVuY3Rpb24gc3RhcnRUZXN0KCkgewor
ICAgIG92ZXJzY3JvbGxEYXRhcy5mb3JFYWNoKChbb3ZlcnNjcm9sbFgsIG92ZXJzY3JvbGxZLCBw
cm9wYWdhdGVYLCBwcm9wYWdhdGVZXSkgPT4geworICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4g
eworICAgICAgICAgICAgcmVzZXRUZXN0KCk7CisgICAgICAgICAgICBzY3JvbGxlci5zdHlsZS5v
dmVyc2Nyb2xsQmVoYXZpb3JYID0gb3ZlcnNjcm9sbFg7CisgICAgICAgICAgICBzY3JvbGxlci5z
dHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JZID0gb3ZlcnNjcm9sbFk7CisgICAgICAgICAgICByZXR1
cm4gcGVyZm9ybVdoZWVsU2Nyb2xsKHNjcm9sbGVyLCAicmlnaHQiKS50aGVuKCgpID0+IHsKKyAg
ICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsTGVmdCA+IDAsIHByb3BhZ2F0
ZVgsICdDb250aW51ZSB1cCB0aGUgaG9yaXpvbnRhbCBzY3JvbGwgY2hhaW5pbmcnKTsKKyAgICAg
ICAgICAgIH0pOworICAgICAgICB9LCAnRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdp
dGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogJyArIG92ZXJzY3JvbGxYICsgJyAnICsgb3ZlcnNjcm9s
bFkgKyAnLicpOworCisgICAgICAgIHByb21pc2VfdGVzdCgoKSA9PiB7CisgICAgICAgICAgICBy
ZXNldFRlc3QoKTsKKyAgICAgICAgICAgIHNjcm9sbGVyLnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlv
clggPSBvdmVyc2Nyb2xsWDsKKyAgICAgICAgICAgIHNjcm9sbGVyLnN0eWxlLm92ZXJzY3JvbGxC
ZWhhdmlvclkgPSBvdmVyc2Nyb2xsWTsKKyAgICAgICAgICAgIHJldHVybiBwZXJmb3JtV2hlZWxT
Y3JvbGwoc2Nyb2xsZXIsICJkb3duIikudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgYXNz
ZXJ0X2VxdWFscyhyb290LnNjcm9sbFRvcCA+IDAsIHByb3BhZ2F0ZVksICdDb250aW51ZSB1cCB0
aGUgdmVydGljYWwgc2Nyb2xsIGNoYWluaW5nJyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAg
fSwgJ0VsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9y
OiAnICsgb3ZlcnNjcm9sbFggKyAnICcgKyBvdmVyc2Nyb2xsWSArICcuJyk7CisgICAgfSk7Cit9
CisKK2FkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBzdGFydFRlc3QpOworPC9zY3JpcHQ+ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3Jv
bGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjkwMGEwYjdkOTA1Yjg3YzFkYjc2MjY5NGZkMDA2MzhmMTk3Njk1MzcKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJl
aGF2aW9yLWlmcmFtZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMSBAQAorCisKK1BBU1MgSWZy
YW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRv
IGF1dG8uCitQQVNTIElmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwt
YmVoYXZpb3I6IGF1dG8gYXV0by4KK1BBU1MgSWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qg
d2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGF1dG8uCitQQVNTIElmcmFtZSB2ZXJ0
aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gYXV0by4K
K1BBU1MgSWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2
aW9yOiBub25lIGF1dG8uCitQQVNTIElmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92
ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgYXV0by4KK1BBU1MgSWZyYW1lIGhvcml6b250YWwgc2Ny
b2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIGNvbnRhaW4uCitQQVNTIElm
cmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8g
Y29udGFpbi4KK1BBU1MgSWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Ny
b2xsLWJlaGF2aW9yOiBjb250YWluIGNvbnRhaW4uCitQQVNTIElmcmFtZSB2ZXJ0aWNhbCBzY3Jv
bGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gY29udGFpbi4KK1BBU1Mg
SWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBu
b25lIGNvbnRhaW4uCitQQVNTIElmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJz
Y3JvbGwtYmVoYXZpb3I6IG5vbmUgY29udGFpbi4KK1BBU1MgSWZyYW1lIGhvcml6b250YWwgc2Ny
b2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIG5vbmUuCitQQVNTIElmcmFt
ZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gbm9u
ZS4KK1BBU1MgSWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJl
aGF2aW9yOiBjb250YWluIG5vbmUuCitQQVNTIElmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3
aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gbm9uZS4KK1BBU1MgSWZyYW1lIGhvcml6
b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIG5vbmUuCitQ
QVNTIElmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6
IG5vbmUgbm9uZS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvb3Zl
cnNjcm9sbC1iZWhhdmlvci1pZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5n
L292ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDdkNjkzNzYxM2I4
MDMyN2RlNjZmN2IxOGUzNmJkMDg2NTM4MTRkMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0bWwKQEAgLTAs
MCArMSwxMTIgQEAKKzwhZG9jdHlwZSBodG1sPgorCis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJoZWxwIiBocmVm
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
ZV1dOworICAgIGFzeW5jIGZ1bmN0aW9uIHBlcmZvcm1XaGVlbFNjcm9sbChzY3JvbGxlciwgZGly
ZWN0aW9uKSB7CisgICAgICAgIHZhciBkZWx0YVggPSAwOworICAgICAgICB2YXIgZGVsdGFZID0g
MDsKKyAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSAiZG93biIpCisgICAgICAgICAgICBkZWx0YVkg
PSAtNTsKKyAgICAgICAgZWxzZSBpZiAoZGlyZWN0aW9uID09ICJ1cCIpCisgICAgICAgICAgICBk
ZWx0YVkgPSA1OworICAgICAgICBlbHNlIGlmIChkaXJlY3Rpb24gPT0gInJpZ2h0IikKKyAgICAg
ICAgICAgIGRlbHRhWCA9IC01OworICAgICAgICBlbHNlIGlmIChkaXJlY3Rpb24gPT0gImxlZnQi
KQorICAgICAgICAgICAgZGVsdGFYID0gNTsKKworICAgICAgICB2YXIgeCA9IHNjcm9sbGVyLmNs
aWVudFdpZHRoIC8gMjsKKyAgICAgICAgdmFyIHkgPSBzY3JvbGxlci5jbGllbnRIZWlnaHQgLyAy
OworICAgICAgICBldmVudFNlbmRlci5kcmFnTW9kZSA9IGZhbHNlOworICAgICAgICBldmVudFNl
bmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3Zl
VG8oeCwgeSk7CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkZWx0YVgsIGRlbHRhWSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGRlbHRh
WCAqIDIsIGRlbHRhWSAqIDIsICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGRlbHRhWCAqIDMsIGRl
bHRhWSAqIDMsICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7
CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkZWx0YVgsIGRlbHRhWSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGRlbHRhWCAqIDIsIGRl
bHRhWSAqIDIsICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkZWx0YVggKiAzLCBkZWx0YVkgKiAz
LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAg
IHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
LmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcygoKSA9PiB7CisgICAgICAgICAgICAgICAgcmVz
b2x2ZSgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIGZ1bmN0
aW9uIHJlc2V0VGVzdCgpIHsKKyAgICAgICAgLy8gVHJ5IHZhcmlvdXMgbWV0aG9kcyB0byBlbnN1
cmUgdGhlIGVsZW1lbnQgcG9zaXRpb24gaXMgcmVzZXQgaW1tZWRpYXRlbHkuCisgICAgICAgIHNj
cm9sbGVyLmNvbnRlbnRXaW5kb3cuc2Nyb2xsWCA9IDMwMDsKKyAgICAgICAgc2Nyb2xsZXIuY29u
dGVudFdpbmRvdy5zY3JvbGxZID0gMzAwOworICAgICAgICBzY3JvbGxlci5jb250ZW50V2luZG93
LnNjcm9sbFRvKDMwMCwgMzAwKTsKKworICAgICAgICByb290LnNjcm9sbExlZnQgPSAwOworICAg
ICAgICByb290LnNjcm9sbFRvcCA9IDA7CisgICAgICAgIHJvb3Quc2Nyb2xsVG8oMCwgMCk7Cisg
ICAgfQorCisgICAgZnVuY3Rpb24gb3ZlcnNjcm9sbEJlaGF2aW9yVGVzdCgpIHsKKyAgICAgICAg
b3ZlcnNjcm9sbERhdGFzLmZvckVhY2goKFtvdmVyc2Nyb2xsWCwgb3ZlcnNjcm9sbFksIHByb3Bh
Z2F0ZVgsIHByb3BhZ2F0ZVldKSA9PiB7CisgICAgICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4g
eworICAgICAgICAgICAgICAgIHJlc2V0VGVzdCgpOworICAgICAgICAgICAgICAgIHZhciB0YXJn
ZXQgPSBzY3JvbGxlci5jb250ZW50V2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJodG1sIilbMF07CisgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLm92ZXJzY3JvbGxCZWhh
dmlvclggPSBvdmVyc2Nyb2xsWDsKKyAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUub3ZlcnNj
cm9sbEJlaGF2aW9yWSA9IG92ZXJzY3JvbGxZOworCisgICAgICAgICAgICAgICAgcmV0dXJuIHBl
cmZvcm1XaGVlbFNjcm9sbChzY3JvbGxlciwgInJpZ2h0IikudGhlbigoKSA9PiB7CisgICAgICAg
ICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxMZWZ0ID4gMCwgcHJvcGFnYXRl
WCwgJ0NvbnRpbnVlIHVwIHRoZSBob3Jpem9udGFsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAg
ICAgICAgICAgIH0pOworICAgICAgICAgICAgfSwgJ0lmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0
ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogJyArIG92ZXJzY3JvbGxYICsgJyAnICsgb3Zl
cnNjcm9sbFkgKyAnLicpOworCisgICAgICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAg
ICAgICAgICAgICAgIHJlc2V0VGVzdCgpOworICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSBz
Y3JvbGxlci5jb250ZW50V2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJodG1s
IilbMF07CisgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclgg
PSBvdmVyc2Nyb2xsWDsKKyAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUub3ZlcnNjcm9sbEJl
aGF2aW9yWSA9IG92ZXJzY3JvbGxZOworICAgICAgICAgICAgICAgIHJldHVybiBwZXJmb3JtV2hl
ZWxTY3JvbGwoc2Nyb2xsZXIsICJkb3duIikudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAg
ICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxUb3AgPiAwLCBwcm9wYWdhdGVZLCAnQ29udGlu
dWUgdXAgdGhlIHZlcnRpY2FsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAgICAgICAgICAgIH0p
OworICAgICAgICAgICAgfSwgJ0lmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJz
Y3JvbGwtYmVoYXZpb3I6ICcgKyBvdmVyc2Nyb2xsWCArICcgJyArIG92ZXJzY3JvbGxZICsgJy4n
KTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgc2Nyb2xsZXIuYWRkRXZlbnRMaXN0ZW5lcigi
bG9hZCIsIG92ZXJzY3JvbGxCZWhhdmlvclRlc3QpOworPC9zY3JpcHQ+ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvb3Zl
cnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9mYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1l
bGVtZW50LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMzk1YjY0ODhkMDg3MGI5NTYxYzAyODY3
OWQ3ZTE1YTQ3ZmNlNmU5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3Jv
bGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSw0IEBACisKK1BBU1MgVW5zY3JvbGxhYmxlIGVsZW1lbnQgaG9yaXpvbnRh
bCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuCitQQVNTIFVuc2Ny
b2xsYWJsZSBlbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhh
dmlvcjogbm9uZS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvb3Zl
cnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjY3YWNiOGY4ZjkwMWNjOTQ5YjFmZmRkODdkYWU4YTFmYjllZWI5NGIK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xs
LWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWwKQEAgLTAsMCArMSw5MiBAQAorPCFk
b2N0eXBlIGh0bWw+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3Mu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3Jl
cG9ydC5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vZHJhZnRz
LmNzc3dnLm9yZy9jc3Mtb3ZlcnNjcm9sbC1iZWhhdmlvciI+Cis8c3R5bGU+CisgICAgLnNjcm9s
bGluZyB7CisgICAgICAgIG92ZXJmbG93OiBzY3JvbGw7CisgICAgfQorICAgIC5zY3JvbGxDb250
ZW50IHsKKyAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAg
IH0KKyAgICAjcm9vdCB7CisgICAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgICAgaGVpZ2h0OiAy
MDBweDsKKyAgICB9CisgICAgI3Njcm9sbGVyIHsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAg
ICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgICBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lOwor
ICAgICAgICBvdmVyZmxvdzogdmlzaWJsZTsKKyAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdy
YWRpZW50KDEzNWRlZywgcmVkLCBibHVlKTsKKyAgICB9Cis8L3N0eWxlPgorPGRpdiBpZD0icm9v
dCIgY2xhc3M9InNjcm9sbGluZyI+CisgICAgPGRpdiBpZD0ic2Nyb2xsZXIiPgorICAgICAgICA8
ZGl2IGNsYXNzPSJzY3JvbGxDb250ZW50Ij48L2Rpdj4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2IGNs
YXNzPSJzY3JvbGxDb250ZW50Ij48L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0PgorY29uc3Qgcm9v
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyb290Jyk7Citjb25zdCBzY3JvbGxlciA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY3JvbGxlcicpOworYXN5bmMgZnVuY3Rpb24gcGVyZm9y
bVdoZWVsU2Nyb2xsKHNjcm9sbGVyLCBkaXJlY3Rpb24pIHsKKyAgICB2YXIgZGVsdGFYID0gMDsK
KyAgICB2YXIgZGVsdGFZID0gMDsKKyAgICBpZiAoZGlyZWN0aW9uID09ICJkb3duIikKKyAgICAg
ICAgZGVsdGFZID0gLTU7CisgICAgZWxzZSBpZiAoZGlyZWN0aW9uID09ICJ1cCIpCisgICAgICAg
IGRlbHRhWSA9IDU7CisgICAgZWxzZSBpZiAoZGlyZWN0aW9uID09ICJyaWdodCIpCisgICAgICAg
IGRlbHRhWCA9IC01OworICAgIGVsc2UgaWYgKGRpcmVjdGlvbiA9PSAibGVmdCIpCisgICAgICAg
IGRlbHRhWCA9IDU7CisKKyAgICB2YXIgeCA9IHNjcm9sbGVyLmNsaWVudFdpZHRoIC8gMjsKKyAg
ICB2YXIgeSA9IHNjcm9sbGVyLmNsaWVudEhlaWdodCAvIDI7CisgICAgZXZlbnRTZW5kZXIuZHJh
Z01vZGUgPSBmYWxzZTsKKyAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAg
ICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZGVsdGFYLCBkZWx0YVksICdiZWdhbics
ICdub25lJyk7CisgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGRlbHRhWCAqIDIsIGRlbHRhWSAqIDIsICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZGVs
dGFYICogMywgZGVsdGFZICogMywgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAn
bm9uZScpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkZWx0YVgsIGRlbHRhWSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZGVsdGFYICogMiwgZGVs
dGFZICogMiwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZGVsdGFYICogMywgZGVsdGFZICogMywgJ25v
bmUnLCAnY29udGludWUnKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgcmV0dXJuIG5ldyBQ
cm9taXNlKHJlc29sdmUgPT4geworICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxp
bmdDb21wbGV0ZXMoKCkgPT4geworICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICB9KTsK
KyAgICB9KTsKK30KKworZnVuY3Rpb24gcmVzZXRUZXN0KCkgeworICAgIHJvb3Quc2Nyb2xsTGVm
dCA9IDA7CisgICAgcm9vdC5zY3JvbGxUb3AgPSAwOworICAgIHJvb3Quc2Nyb2xsVG8oMCwgMCk7
Cit9CisKK2Z1bmN0aW9uIHN0YXJ0VGVzdCgpIHsKKyAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+
IHsKKyAgICAgICAgICAgIHJlc2V0VGVzdCgpOworICAgICAgICAgICAgcmV0dXJuIHBlcmZvcm1X
aGVlbFNjcm9sbChzY3JvbGxlciwgInJpZ2h0IikudGhlbigoKSA9PiB7CisgICAgICAgICAgICAg
ICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbExlZnQgPiAwLCB0cnVlLCAnQ29udGludWUgdXAg
dGhlIGhvcml6b250YWwgc2Nyb2xsIGNoYWluaW5nJyk7CisgICAgICAgICAgICB9KTsKKyAgICAg
ICAgfSwgJ1Vuc2Nyb2xsYWJsZSBlbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBv
dmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLicpOworCisgICAgICAgIHByb21pc2VfdGVzdCgoKSA9
PiB7CisgICAgICAgICAgICByZXNldFRlc3QoKTsKKworICAgICAgICAgICAgcmV0dXJuIHBlcmZv
cm1XaGVlbFNjcm9sbChzY3JvbGxlciwgImRvd24iKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAg
ICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsVG9wID4gMCwgdHJ1ZSwgJ0NvbnRpbnVlIHVw
IHRoZSB2ZXJ0aWNhbCBzY3JvbGwgY2hhaW5pbmcnKTsKKyAgICAgICAgICAgIH0pOworICAgICAg
ICB9LCAnVW5zY3JvbGxhYmxlIGVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVy
c2Nyb2xsLWJlaGF2aW9yOiBub25lLicpOworfQorCithZGRFdmVudExpc3RlbmVyKCJsb2FkIiwg
c3RhcnRUZXN0KTsKKzwvc2NyaXB0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItdW5z
Y3JvbGxhYmxlLWlmcmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGlu
Zy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjdmYTU5Y2NiYTc5YWVmZjMzZGE3MGU5M2Q0ODhhMDdlZWM5YzU2OTEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2
aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorCisK
K1BBU1MgVW5zY3JvbGxhYmxlIGlmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3Zl
cnNjcm9sbC1iZWhhdmlvcjogbm9uZS4KK1BBU1MgVW5zY3JvbGxhYmxlIGlmcmFtZSB2ZXJ0aWNh
bCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3Jv
bGxhYmxlLWlmcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9s
bC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTg2OWNkZWMw
MTU3YzE4OTgxMWQ2ZDc3Njk4ZDMwZjZhMTc3YmE1OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlm
cmFtZS5odG1sCkBAIC0wLDAgKzEsOTIgQEAKKzwhZG9jdHlwZSBodG1sPgorCis8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPGxpbmsg
cmVsPSJoZWxwIiBocmVmPSJodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLW92ZXJzY3JvbGwt
YmVoYXZpb3IiPgorPHN0eWxlPgorICAgIC5zY3JvbGxpbmcgeworICAgICAgICBvdmVyZmxvdzog
c2Nyb2xsOworICAgIH0KKyAgICAuc2Nyb2xsQ29udGVudCB7CisgICAgICAgIHdpZHRoOiAzMDBw
eDsKKyAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICB9CisgICAgI3Jvb3QgeworICAgICAgICB3
aWR0aDogMjAwcHg7CisgICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgfQorICAgICNzY3JvbGxl
ciB7CisgICAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgICAgaGVpZ2h0OiAyMDBweDsKKyAgICAg
ICAgb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZTsKKyAgICAgICAgb3ZlcmZsb3c6IHZpc2libGU7
CisgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJlZCwgYmx1ZSk7
CisgICAgfQorPC9zdHlsZT4KKzxkaXYgaWQ9J3Jvb3QnIGNsYXNzPSJzY3JvbGxpbmciPgorICAg
IDxpZnJhbWUgaWQ9J3Njcm9sbGVyJyBzcmNkb2M9IjxodG1sIHN0eWxlPSdvdmVyc2Nyb2xsLWJl
aGF2aW9yOiBub25lOyc+PGRpdiBzdHlsZT0nd2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDEwMHB4Oyc+
PC9kaXY+PC9odG1sPgorICAgICAgICAiPjwvaWZyYW1lPgorICAgIDxkaXYgY2xhc3M9InNjcm9s
bENvbnRlbnQiPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+Citjb25zdCByb290ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3Jvb3QnKTsKK2NvbnN0IHNjcm9sbGVyID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ3Njcm9sbGVyJyk7CisKK2FzeW5jIGZ1bmN0aW9uIHBlcmZvcm1XaGVlbFNj
cm9sbChzY3JvbGxlciwgZGlyZWN0aW9uKSB7CisgICAgdmFyIGRlbHRhWCA9IDA7CisgICAgdmFy
IGRlbHRhWSA9IDA7CisgICAgaWYgKGRpcmVjdGlvbiA9PSAiZG93biIpCisgICAgICAgIGRlbHRh
WSA9IC01OworICAgIGVsc2UgaWYgKGRpcmVjdGlvbiA9PSAidXAiKQorICAgICAgICBkZWx0YVkg
PSA1OworICAgIGVsc2UgaWYgKGRpcmVjdGlvbiA9PSAicmlnaHQiKQorICAgICAgICBkZWx0YVgg
PSAtNTsKKyAgICBlbHNlIGlmIChkaXJlY3Rpb24gPT0gImxlZnQiKQorICAgICAgICBkZWx0YVgg
PSA1OworCisgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAgdmFyIHkg
PSBzY3JvbGxlci5jbGllbnRIZWlnaHQgLyAyOworICAgIGV2ZW50U2VuZGVyLmRyYWdNb2RlID0g
ZmFsc2U7CisgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgZXZlbnRT
ZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGRlbHRhWCwgZGVsdGFZLCAnYmVnYW4nLCAnbm9uZScp
OworICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkZWx0YVggKiAyLCBkZWx0YVkgKiAyLCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGRlbHRhWCAqIDMs
IGRlbHRhWSAqIDMsICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsK
KyAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZGVsdGFYLCBkZWx0YVksICdub25lJywgJ2JlZ2luJyk7CisgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGRlbHRhWCAqIDIsIGRlbHRhWSAqIDIs
ICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGRlbHRhWCAqIDMsIGRlbHRhWSAqIDMsICdub25lJywgJ2Nv
bnRpbnVlJyk7CisgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgIHJldHVybiBuZXcgUHJvbWlzZShy
ZXNvbHZlID0+IHsKKyAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxl
dGVzKCgpID0+IHsKKyAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgfSk7CisgICAgfSk7
Cit9CisKK2Z1bmN0aW9uIHJlc2V0VGVzdCgpIHsKKyAgICByb290LnNjcm9sbExlZnQgPSAwOwor
ICAgIHJvb3Quc2Nyb2xsVG9wID0gMDsKKyAgICByb290LnNjcm9sbFRvKDAsIDApOworfQorCitm
dW5jdGlvbiBzdGFydFRlc3QoKSB7CisgICAgICAgIHByb21pc2VfdGVzdCgoKSA9PiB7CisgICAg
ICAgICAgICByZXNldFRlc3QoKTsKKyAgICAgICAgICAgIHJldHVybiBwZXJmb3JtV2hlZWxTY3Jv
bGwoc2Nyb2xsZXIsICJyaWdodCIpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGFzc2Vy
dF9lcXVhbHMocm9vdC5zY3JvbGxMZWZ0ID4gMCwgdHJ1ZSwgJ0NvbnRpbnVlIHVwIHRoZSBob3Jp
em9udGFsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0sICdV
bnNjcm9sbGFibGUgaWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xs
LWJlaGF2aW9yOiBub25lLicpOworCisgICAgICAgIHByb21pc2VfdGVzdCgoKSA9PiB7CisgICAg
ICAgICAgICByZXNldFRlc3QoKTsKKworICAgICAgICAgICAgcmV0dXJuIHBlcmZvcm1XaGVlbFNj
cm9sbChzY3JvbGxlciwgImRvd24iKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBhc3Nl
cnRfZXF1YWxzKHJvb3Quc2Nyb2xsVG9wID4gMCwgdHJ1ZSwgJ0NvbnRpbnVlIHVwIHRoZSB2ZXJ0
aWNhbCBzY3JvbGwgY2hhaW5pbmcnKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9LCAnVW5z
Y3JvbGxhYmxlIGlmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVo
YXZpb3I6IG5vbmUuJyk7Cit9CisKK2FkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBzdGFydFRlc3Qp
OworPC9zY3JpcHQ+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDE0OGNkN2Q2ZDc4ZDYwYzAx
NmQzODAyOGY2OTM4ZjBlMDBlMDQ4ZDAuLjcxMDFkZGY3ZTYwYmJjOTdjZGNhOWRhMDMzM2NmZGNi
NDAwYjc0NmUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4
cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3Rh
dGlvbnMKQEAgLTQ0OCw2ICs0NDgsMTAgQEAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jb29raWVzL3NlY3VyZS9zZXQtZnJvbS13cy5zdWIuaHRtbCBbIEZhaWx1cmUgXQogIyBXZWJL
aXQxIGZyYW1lcyB1c2UgbmF0aXZlIHNjcm9sbGJhcnMgY2F1c2luZyB0aGlzIHJlZmVyZW5jZSB0
ZXN0IHRvIGZhaWwuCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mtc2Ny
b2xsLXNuYXAvc2Nyb2xsLXRhcmdldC1wYWRkaW5nLTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVy
ZSBdCiAKKyMgTmVlZCB0byBmaW5kIGEgd2F5IHRvIGJsb2NrIHRoZSBjcm9zcy1mcmFtZSBzY3Jv
bGwgY2hhaW5pbmcgaW4gV0sxLgorZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci1p
ZnJhbWUuaHRtbCBbIFNraXAgXQorZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci11
bnNjcm9sbGFibGUtaWZyYW1lLmh0bWwgWyBTa2lwIF0KKwogIyMjIEVORCBPRiAoMikgRmFpbHVy
ZXMgd2l0aG91dCBidWcgcmVwb3J0cwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416743</attachid>
            <date>2020-12-24 03:25:15 -0800</date>
            <delta_ts>2020-12-24 03:37:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220139-20201224192513.patch</filename>
            <type>text/plain</type>
            <size>87400</size>
            <attacher name="cathiechen">cathiechen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNjI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjI3NGY3YzJlMzk3MmZh
ZDdjOTJjNThmZWJjM2I5MWZlZTYwZmVjZS4uYmE4OTVjNjg4OTlhMWMwYjBhOTIzZmQ0NDUxM2Rm
ZDRjMjNjZDYzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNiBAQAorMjAyMC0xMi0yNCAgQ2F0
aGllIENoZW4gIDxjYXRoaWVjaGVuQGlnYWxpYS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IENT
UyBvdmVyc2Nyb2xsLWJlaGF2aW9yIG9uIE1hYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwMTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQmFzZWQgb24gRnLDqWTDqXJpYyBXYW5nJ3MgcGF0Y2guCisK
KyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIG92ZXJzY3JvbGwtYmVoYXZpb3Ig
b24gTWFjLgorICAgICAgICBBY2NvcmRpbmcgdG8gWzFdLCB0aGVyZSBhcmUgdHdvIGtpbmRzIG9m
IGFjdGlvbnM6IG5vbi1sb2NhbCBib3VuZGFyeSBkZWZhdWx0IGFjdGlvbnMgYW5kIGxvY2FsIGJv
dW5kYXJ5IGRlZmF1bHQgYWN0aW9ucy4KKyAgICAgICAgSW4gV2ViS2l0IG1hYywgdGhlIHJ1YmJl
ciBiYW5kaW5nIGVmZm9ydCBpcyBiZWxvbmdlZCB0byBsb2NhbCBib3VuZGFyeSBkZWZhdWx0IGFj
dGlvbnMuIFRoZSBzY3JvbGwgY2hhaW5pbmcgYW5kIHN3aXBlCisgICAgICAgIGdlc3R1cmVzICh0
cmlnZ2VyIGdvIGJhY2sgb3IgZ28gZm9yd2FyZCBhY3Rpb25zKSBhcmUgYmVsb25nZWQgdG8gbm9u
LWxvY2FsIGJvdW5kYXJ5IGRlZmF1bHQgYWN0aW9ucy4KKyAgICAgICAgMS4gVG8gaGFuZGxlIHRo
ZSBydWJiZXIgYmFuZGluZyBlZmZlY3QsIHNob3VsZFN0b3BIb3Jpem9udGFsU3RyZWNoKCkgYW5k
IHNob3VsZFN0b3BWZXJ0aWNhbFN0cmVjaCgpIGFyZSBhZGRlZCB0byBkZWNpZGUKKyAgICAgICAg
d2hldGhlciB0aGUgcnViYmVyIGJhbmRpbmcgZWZmb3J0IGlzIGFsbG93ZWQgb3Igbm90LgorICAg
ICAgICAyLiBUbyBibG9jayBzY3JvbGwgY2hhaW5pbmcgYWN0aW9ucyBpbiBkaWZmZXJlbnQgc2Ny
b2xsIG1vZGVzLgorICAgICAgICAgIC0gRm9yIGFzeW5jaHJvbm91cyBzY3JvbGxpbmcsIGl0J3Mg
aGFuZGxlZCBpbiBTY3JvbGxpbmdUcmVlOjpoYW5kbGVXaGVlbEV2ZW50V2l0aE5vZGUoKSwgYWNj
b3JkaW5nIHRvIHRoZSB2YWx1ZSBvZgorICAgICAgICAgIG92ZXJzY3JvbGwtYmVoYXZpb3IsIGl0
IGJsb2NrcyB0aGUgc2Nyb2xsIGNoYWluaW5nIGlmIG5lZWRlZCwgdGhlIHJlc3VsdCB3b3VsZCBi
ZSBhZGRlZCB0byBtX2xhdGNoaW5nQ29udHJvbGxlcgorICAgICAgICAgIGFuZCBtaWdodCBiZSBy
ZXVzZWQuCisgICAgICAgICAgLSBGb3Igc3luY2hyb25vdXMgc2Nyb2xsaW5nLCBpZiBXSEVFTF9F
VkVOVF9MQVRDSElORyBpcyBkaXNhYmxlZCwgaXQgaGFuZGxlcyBvdmVyc2Nyb2xsLWJlaGF2aW9y
IGluIGhhbmRsZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94KCkuCisgICAgICAg
ICAgSWYgV0hFRUxfRVZFTlRfTEFUQ0hJTkcgaXMgZW5hYmxlZC4gT3ZlcnNjcm9sbC1iZWhhdmlv
ciBpcyBoYW5kbGVkIGluIGZpbmRFbmNsb3NpbmdTY3JvbGxhYmxlQ29udGFpbmVyKCkuCisgICAg
ICAgICAgSXQgYWRkZWQgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIHRvIEZyYW1lU3RhdGUgdG8gaW5k
aWNhdGUgd2hldGhlciB0aGUgY3VycmVudCBsYXRjaGVkIG5vZGUgc2hvdWxkIGJsb2NrIHNjcm9s
bCBjaGFpbmluZy4KKyAgICAgICAgICBJZiB0aGUgY3VycmVudCBmcmFtZSBpcyBhIHN1YmZyYW1l
LCBpdCBwYXNzZXMgaXRzIFNjcm9sbENoYWluaW5nQmxvY2tlciB0byB0aGUgcGFyZW50ZnJhbWUs
IGFuZCBldmVudHVhbGx5CisgICAgICAgICAgbGV0IHRoZSBtYWluZnJhbWUgZGVjaWRlIHdoZXRo
ZXIgc2hvdWxkIHRyaWdnZXIgc3dpcGUgZ2VzdHVyZXMgb3Igbm90LgorICAgICAgICAzLiBUaGUg
c3dpcGUgZ2VzdHVyZXMuCisgICAgICAgICAgSWYgdGhlIG1haW5mcmFtZSByZWFjaGVzIGl0cyBz
Y3JvbGwgZWRnZXMsIHRoZXJlIHdpbGwgYmUgc3dpcGUgZ2VzdHVyZXMgZXZlbiBpZiBvdmVyc2Ny
b2xsLWJlaGF2aW9yJ3MgdmFsdWUgaXMgbm9uZS4KKyAgICAgICAgICBUaGlzIGJlaGF2aW9yIGlz
IG5vdCBzdXBvb3J0ZWQgaW4gV0sxIGFuZCBXSzIncyBzeW5jaHJvbm91cyBzY3JvbGwgd2l0aCBX
SEVFTF9FVkVOVF9MQVRDSElORyBvZmYuCisKKyAgICAgICAgWzFdIGh0dHBzOi8vZHJhZnRzLmNz
c3dnLm9yZy9jc3Mtb3ZlcnNjcm9sbC0xLyNvdmVyc2Nyb2xsLWJlaGF2aW9yLXByb3BlcnRpZXMK
KworICAgICAgICBUZXN0czogZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVt
ZW50Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZp
b3ItaWZyYW1lLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwt
YmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9z
Y3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLmh0bWwKKwor
ICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
SGFuZGxlcjo6dXBkYXRlU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKTogVXBkYXRlZCB0aGUgdmFsdWUg
b2YgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIGZyb20gU2Nyb2xsYWJsZUFyZWEncyBvdmVyc2Nyb2xs
LWJlaGF2aW9yLgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpzaG91bGRCbG9ja1Nj
cm9sbENoYWluaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZVBhcmVudEZyYW1lU2Nyb2xs
Q2hhaW5pbmdCbG9ja2VyKTogQXBwbGllZCB0aGUgY3VycmVudCBmcmFtZSdzIG92ZXJzY3JvbGwt
YmVoYXZpb3IgdmFsdWUgdG8gU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyCisgICAgICAgIGFuZCBwYXNz
IHRoaXMgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIHRvIHBhcmVudCBmcmFtZS4KKyAgICAgICAgKFdl
YkNvcmU6OmFkanVzdERlbHRhcyk6CisgICAgICAgIChXZWJDb3JlOjppc1Nyb2xsQ2hhaW5pbmdT
dG9wcGVkQnlPdmVyc2Nyb2xsQmVoYXZpb3IpOiAKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFu
ZGxlcjo6aGFuZGxlV2hlZWxFdmVudEludGVybmFsKTogU3RvcCBoYW5kbGluZyB3aGVlbEV2ZW50
IGZvciBGcmFtZVZpZXcgaWYgaXNTcm9sbENoYWluaW5nU3RvcHBlZEJ5T3ZlcnNjcm9sbEJlaGF2
aW9yLgorICAgICAgICAoV2ViQ29yZTo6ZGlkU2Nyb2xsSW5TY3JvbGxhYmxlQXJlYSk6IEFkanVz
dCB3aGVlbEV2ZW50J3MgZGVsdGFzIGFjY29yZGluZyB0byB0aGUgdmFsdWUgb2YgU2Nyb2xsQ2hh
aW5pbmdCbG9ja2VyLgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVl
bEV2ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2luZ0JveCk6IEFkanVzdCBmaWx0ZXJlZFBsYXRmb3Jt
RGVsdGEgYWNjb3JkaW5nIHRvIG92ZXJzY3JvbGwtYmVoYXZpb3IncyB2YWx1ZSwKKyAgICAgICAg
YW5kIHN0b3Agc2Nyb2xsLWNoYWluaW5nIGlmIG5lY2Vzc2FyeSBmb3IgdGhlIHNjZW5hcmlvIG9m
IHN5bmNocm9ub3VzIHNjcm9sbCB3aXRoIFdIRUVMX0VWRU5UX0xBVENISU5HIGlzIG9mZi4KKyAg
ICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZGVmYXVsdFdoZWVsRXZlbnRIYW5kbGVyKTog
QWRqdXN0IGZpbHRlcmVkUGxhdGZvcm1EZWx0YSBhY2NvcmRpbmcgdG8gb3ZlcnNjcm9sbC1iZWhh
dmlvcidzIHZhbHVlLAorICAgICAgICBhbmQgcGFzcyBTY3JvbGxDaGFpbmluZ0Jsb2NrZXIgdG8g
cGFyZW50IGZyYW1lIGlmIG5lZWRlZC4KKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5oOgor
ICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmll
dzo6aG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvciBjb25zdCk6IFJldHVybnMgZG9jdW1lbnRF
bGVtZW50J3MgdmFsdWUgb2Ygb3ZlcnNjcm9sbC1iZWhhdmlvci14LgorICAgICAgICBJZiBkb2N1
bWVudEVsZW1lbnQgaXMgbm90IGEgc2Nyb2xsIGNvbnRhaW5lciwgcmV0dXJucyBPdmVyc2Nyb2xs
QmVoYXZpb3I6OkF1dG8uCisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnZlcnRpY2FsT3Zl
cnNjcm9sbEJlaGF2aW9yIGNvbnN0KTogRGl0dG8uCisgICAgICAgICogcGFnZS9GcmFtZVZpZXcu
aDoKKyAgICAgICAgKiBwYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW06CisgICAgICAgIChXZWJD
b3JlOjpmaW5kRW5jbG9zaW5nU2Nyb2xsYWJsZUNvbnRhaW5lcik6IEFwcGx5IG92ZXJzY3JvbGwt
YmVoYXZpb3IgdG8gU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIGFuZCBzdG9wIHRoZSBzY3JvbGwgY2hh
aW5pbmcgaWYgbmVlZGVkCisgICAgICAgIGZvciB0aGUgc2NlbmFyaW8gb2Ygc3luY2hyb25vdXMg
c2Nyb2xsIHdpdGggV0hFRUxfRVZFTlRfTEFUQ0hJTkcgaXMgb24uCisgICAgICAgIChXZWJDb3Jl
OjpFdmVudEhhbmRsZXI6OmRldGVybWluZVdoZWVsRXZlbnRUYXJnZXQpOiBTdG9yZXMgU2Nyb2xs
Q2hhaW5pbmdCbG9ja2VyIGluIHNjcm9sbExhdGNoaW5nQ29udHJvbGxlcgorICAgICAgICAqIHBh
Z2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0U2Nyb2xsaW5nTm9kZVNjcm9sbGFi
bGVBcmVhR2VvbWV0cnkpOiBVcGRhdGUgb3ZlcnNjcm9sbC1iZWhhdmlvciB2YWx1ZXMgaW4gc2Ny
b2xsUGFyYW1ldGVycy4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxMYXRjaGluZ0Nv
bnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVy
Ojp1cGRhdGVBbmRGZXRjaExhdGNoaW5nU3RhdGVGb3JGcmFtZSk6IEFkZCBTY3JvbGxDaGFpbmlu
Z0Jsb2NrZXIgdG8gRnJhbWVTdGF0ZS4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbExhdGNoaW5n
Q29udHJvbGxlcjo6Z2V0U2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIGNvbnN0KTogUmV0dXJucyBTY3Jv
bGxDaGFpbmluZ0Jsb2NrZXIgb2YgZnJhbWUuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxMYXRj
aGluZ0NvbnRyb2xsZXI6OnVwZGF0ZVNjcm9sbENoYWluaW5nQmxvY2tlcik6IFVwZGF0ZXMgU2Ny
b2xsQ2hhaW5pbmdCbG9ja2VyIG9mIGZyYW1lLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsTGF0
Y2hpbmdDb250cm9sbGVyOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9T
Y3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdDb29yZGluYXRvclR5cGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJl
YVBhcmFtZXRlcnM6Om9wZXJhdG9yPT0gY29uc3QpOiBBZGRlZCBob3Jpem9udGFsT3ZlcnNjcm9s
bEJlaGF2aW9yIGFuZCB2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvci4KKyAgICAgICAgKiBwYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z1RyZWU6OmhhbmRsZVdoZWVsRXZlbnRXaXRoTm9kZSk6IFVwZGF0ZSBTY3JvbGxDaGFpbmluZ0Js
b2NrZXIgYWNjb3JkaW5nIHRvIHRoZSBvdmVyc2Nyb2xsLWJlaGF2aW9yIHZhbHVlcywKKyAgICAg
ICAgc3RvcCB0aGUgc2Nyb2xsIGNoYWluaW5nIGlmIG5lZWRlZCwgYW5kIGlmIGl0J3MgaG9yaXpv
bnRhbCBzY3JvbGwgYW5kIHdpbGxXaGVlbEV2ZW50U3RhcnRTd2lwZUdlc3R1cmUsIGxldCBpdCB0
cmlnZ2VyIHN3aXBlIGdlc3R1cmUuCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGU6Omhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IgY29uc3QpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjp2ZXJ0aWNhbE92
ZXJzY3JvbGxCZWhhdmlvciBjb25zdCk6IERpdHRvLgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmg6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcv
bWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMuaDoKKyAgICAgICAgKiBw
YWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVN
YWM6OmFsbG93c0hvcml6b250YWxTdHJldGNoaW5nIGNvbnN0KTogSWYgb3ZlcnNjcm9sbC1iZWhh
dmlvci14OiBub25lLCB0aGUgc2Nyb2xsIHN0cmV0Y2ggc2hvdWxkIGJlIGJsb2NrZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjphbGxv
d3NWZXJ0aWNhbFN0cmV0Y2hpbmcgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OnNob3VsZFN0b3BIb3Jpem9udGFs
U3RyZWNoIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZURlbGVnYXRlTWFjOjpzaG91bGRTdG9wVmVydGljYWxTdHJlY2ggY29uc3QpOiBE
aXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtV2hlZWxFdmVudDo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVy
dGljYWwpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFR5cGVzLmg6CisgICAgICAgICogcGxh
dGZvcm0vU2Nyb2xsYWJsZUFyZWEuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGFibGVBcmVh
Ojpob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGFibGVBcmVhOjp2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvciBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5oOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsQ29udHJvbGxlckNsaWVudDo6c2hvdWxkU3RvcEhvcml6b250YWxTdHJlY2ggY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQ29udHJvbGxlckNsaWVudDo6c2hvdWxkU3Rv
cFZlcnRpY2FsU3RyZWNoIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TY3JvbGxD
b250cm9sbGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQ29udHJvbGxlcjo6aGFuZGxl
V2hlZWxFdmVudCk6IFN0b3Agc2Nyb2xsIHN0cmVjaGluZyBpZiBuZWVkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxDb250cm9sbGVyOjpkaXJlY3Rpb25Gcm9tRXZlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsQ29udHJvbGxlcjo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGlj
YWwpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5o
OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTWFjOjpzaG91bGRTdG9wSG9yaXpvbnRhbFN0cmVjaCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck1hYzo6c2hvdWxkU3RvcFZl
cnRpY2FsU3RyZWNoIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6Omhvcml6b250YWxPdmVyc2Nyb2xsQmVo
YXZpb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnZlcnRpY2FsT3Zl
cnNjcm9sbEJlaGF2aW9yIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
aDoKKwogMjAyMC0xMi0xMCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAg
ICAgICAgSUNFIGRvZXMgbm90IHJlc29sdmUgZm9yIGB0dXJuc2AgcmVsYXkgY2FuZGlkYXRlcyBy
b290ZWQgaW4gTGV0c0VuY3J5cHQgQ0EKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYzM5NDRmNzg0ZmRiMzRhOWY4ZGRl
OGNmYjU1NDliZWYzYjkyMWUxZC4uZmRmZTBkYjRmNmQzZmQ2Zjk5ZjE4Y2M3ZTgzZTE4ODczZTNh
ZmEwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMC0xMi0yNCAgQ2F0aGllIENoZW4g
IDxjYXRoaWVjaGVuQGlnYWxpYS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IENTUyBvdmVyc2Ny
b2xsLWJlaGF2aW9yIG9uIE1hYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjIwMTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQmFzZWQgb24gRnLDqWTDqXJpYyBXYW5nJ3MgcGF0Y2guCisKKyAgICAgICAg
KiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1l
bnRDb2RlcjxTY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnM+OjplbmNvZGUpOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPFNjcm9sbGFibGVBcmVhUGFyYW1ldGVycz46OmRlY29kZSk6CisgICAg
ICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJ
T1MubW06CisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdh
dGVJT1M6OmNvbW1pdFN0YXRlQWZ0ZXJDaGlsZHJlbik6CisKIDIwMjAtMTItMTAgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIElDRSBkb2VzIG5vdCByZXNvbHZl
IGZvciBgdHVybnNgIHJlbGF5IGNhbmRpZGF0ZXMgcm9vdGVkIGluIExldHNFbmNyeXB0IENBCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggYWNlOThjNTEyYjAxN2UzY2Y5Y2RlM2IxZWJm
NjFlMTE0MGM3YTU4Zi4uZWE5OTQ4NjcwNzQ0NDA1ZTlkM2E5OWVmNWUxNTAyN2YyMDA2NjhjMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIwLTEyLTI0
ICBDYXRoaWUgQ2hlbiAgPGNhdGhpZWNoZW5AaWdhbGlhLmNvbT4KKworICAgICAgICBJbXBsZW1l
bnQgQ1NTIG92ZXJzY3JvbGwtYmVoYXZpb3Igb24gTWFjCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjAxMzkKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCYXNlZCBvbiBGcsOpZMOpcmljIFdhbmcncyBwYXRj
aC4KKworICAgICAgICBOZWVkIHRvIGZpbmQgYSB3YXkgdG8gYmxvY2sgdGhlIGNyb3NzLWZyYW1l
IHNjcm9sbCBjaGFpbmluZyBpbiBXSzEuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3
Lm1tOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBzY3JvbGxXaGVlbDpdKToKKwogMjAyMC0xMi0w
OSAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09T
XSBDaGFuZ2UgVW5pdmVyc2FsIEFjY2VzcyB6b29tIGluIHRoZSBVSSBwcm9jZXNzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggNTYzMjNiODViNWJlMGU4ODlkYTE4YmVhZjUw
MTQ4ZmFhYmI4MTFkMy4uYjMzZDQ1OGM0NTg4YTllODUwZjYxOGFlNTFhYTE1NDk5ODU0OTc4NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtMjgyNyw2ICsyODI3LDk3IEBA
IGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxF
dmVudCYgd2hlZWxFdmVudCwgT3B0aW9uCiAgICAgcmV0dXJuIGhhbmRsZWQ7CiB9CiAKK3ZvaWQg
RXZlbnRIYW5kbGVyOjp1cGRhdGVTY3JvbGxDaGFpbmluZ0Jsb2NrZXIoU2Nyb2xsYWJsZUFyZWEq
IHNjcm9sbGFibGVBcmVhLCBTY3JvbGxDaGFpbmluZ0Jsb2NrZXImIHNjcm9sbENoYWluaW5nQmxv
Y2tlcikKK3sKKyAgICBpZiAoIXNjcm9sbGFibGVBcmVhKQorICAgICAgICByZXR1cm47CisgICAg
c2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLmJsb2NrWCB8PSBzY3JvbGxhYmxlQXJlYS0+aG9yaXpvbnRh
bE92ZXJzY3JvbGxCZWhhdmlvcigpICE9IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0bzsKKyAgICBz
Y3JvbGxDaGFpbmluZ0Jsb2NrZXIuYmxvY2tZIHw9IHNjcm9sbGFibGVBcmVhLT52ZXJ0aWNhbE92
ZXJzY3JvbGxCZWhhdmlvcigpICE9IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0bzsKK30KKworYm9v
bCBFdmVudEhhbmRsZXI6OnNob3VsZEJsb2NrU2Nyb2xsQ2hhaW5pbmcoY29uc3QgUGxhdGZvcm1X
aGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBjb25zdCBTY3JvbGxDaGFpbmluZ0Jsb2NrZXImIHNjcm9s
bENoYWluaW5nQmxvY2tlcikKK3sKKyAgICBhdXRvIGJpYXNlZERlbHRhID0gUGxhdGZvcm1XaGVl
bEV2ZW50Ojp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbCh3aGVlbEV2ZW50LmRlbHRh
KCkpOworICAgIGlmICgoc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLmJsb2NrWCAmJiBzY3JvbGxDaGFp
bmluZ0Jsb2NrZXIuYmxvY2tZKQorICAgICAgICB8fCAoc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLmJs
b2NrWCAmJiAhYmlhc2VkRGVsdGEuaGVpZ2h0KCkpCisgICAgICAgIHx8IChzY3JvbGxDaGFpbmlu
Z0Jsb2NrZXIuYmxvY2tZICYmICFiaWFzZWREZWx0YS53aWR0aCgpKSkKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgcmV0dXJuIGZhbHNlOworfQorCisjaWYgRU5BQkxFKFdIRUVMX0VWRU5UX0xB
VENISU5HKQorc3RhdGljIHZvaWQgdXBkYXRlUGFyZW50RnJhbWVTY3JvbGxDaGFpbmluZ0Jsb2Nr
ZXIoU2Nyb2xsYWJsZUFyZWEqIHNjcm9sbGFibGVBcmVhLCBGcmFtZSYgZnJhbWUsIFNjcm9sbENo
YWluaW5nQmxvY2tlciYgc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKQoreworICAgIGF1dG8qIHBhcmVu
dCA9IGZyYW1lLnRyZWUoKS5wYXJlbnQoKTsKKyAgICBpZiAoIXNjcm9sbGFibGVBcmVhKQorICAg
ICAgICBzY3JvbGxhYmxlQXJlYSA9IGZyYW1lLnZpZXcoKTsKKyAgICBpZiAoIWZyYW1lLnBhZ2Uo
KSB8fCAhcGFyZW50IHx8ICFzY3JvbGxhYmxlQXJlYSkKKyAgICAgICAgcmV0dXJuOworICAgIEV2
ZW50SGFuZGxlcjo6dXBkYXRlU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKHNjcm9sbGFibGVBcmVhLCBz
Y3JvbGxDaGFpbmluZ0Jsb2NrZXIpOworICAgIGZyYW1lLnBhZ2UoKS0+c2Nyb2xsTGF0Y2hpbmdD
b250cm9sbGVyKCkudXBkYXRlU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKCpwYXJlbnQsIHNjcm9sbENo
YWluaW5nQmxvY2tlcik7Cit9CisjZW5kaWYKKworc3RhdGljIHZvaWQgYWRqdXN0RGVsdGFzKGNv
bnN0IFNjcm9sbENoYWluaW5nQmxvY2tlciYgc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLCBGbG9hdFNp
emUmIGZpbHRlcmVkUGxhdGZvcm1EZWx0YSkKK3sKKyAgICAvLyBJZiB3aGVlbEV2ZW50IGlzIGJp
YXMgdG8gaG9yaXpvbnRhbCwgZGVsdGFZIHNob3VsZCBiZSB6ZXJvIHRvbywgb3RoZXJ3aXNlIGl0
IHdpbGwgcGVyZm9ybSB2ZXJ0aWNhbCBzY3JvbGwuCisgICAgLy8gVmljZSB2ZXJzYS4KKyAgICBh
dXRvIGJpYXNlZERlbHRhID0gUGxhdGZvcm1XaGVlbEV2ZW50Ojp3aGVlbERlbHRhQmlhc2luZ1Rv
d2FyZHNWZXJ0aWNhbChmaWx0ZXJlZFBsYXRmb3JtRGVsdGEpOworICAgIGlmIChzY3JvbGxDaGFp
bmluZ0Jsb2NrZXIuYmxvY2tYKSB7CisgICAgICAgIGZpbHRlcmVkUGxhdGZvcm1EZWx0YS5zZXRX
aWR0aCgwKTsKKyAgICAgICAgaWYgKCFiaWFzZWREZWx0YS5oZWlnaHQoKSkKKyAgICAgICAgICAg
IGZpbHRlcmVkUGxhdGZvcm1EZWx0YS5zZXRIZWlnaHQoMCk7CisgICAgfQorICAgIGlmIChzY3Jv
bGxDaGFpbmluZ0Jsb2NrZXIuYmxvY2tZKSB7CisgICAgICAgIGZpbHRlcmVkUGxhdGZvcm1EZWx0
YS5zZXRIZWlnaHQoMCk7CisgICAgICAgIGlmICghYmlhc2VkRGVsdGEud2lkdGgoKSkKKyAgICAg
ICAgICAgIGZpbHRlcmVkUGxhdGZvcm1EZWx0YS5zZXRXaWR0aCgwKTsKKyAgICB9Cit9CisKK3N0
YXRpYyBib29sIGlzU3JvbGxDaGFpbmluZ1N0b3BwZWRCeU92ZXJzY3JvbGxCZWhhdmlvcihXZWFr
UHRyPFNjcm9sbGFibGVBcmVhPiBzY3JvbGxhYmxlQXJlYSwgRnJhbWUmIGZyYW1lLCBQbGF0Zm9y
bVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIFNjcm9sbENoYWluaW5nQmxvY2tlciBzY3JvbGxDaGFp
bmluZ0Jsb2NrZXIsIGJvb2wmIGhhbmRsZWRFdmVudCkKK3sKKyNpZiBFTkFCTEUoV0hFRUxfRVZF
TlRfTEFUQ0hJTkcpCisgICAgaWYgKCFzY3JvbGxhYmxlQXJlYSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgRmxvYXRTaXplIGZpbHRlcmVkUGxhdGZvcm1EZWx0YSh3aGVlbEV2ZW50LmRl
bHRhWCgpLCB3aGVlbEV2ZW50LmRlbHRhWSgpKTsKKyAgICBpZiAoc2Nyb2xsYWJsZUFyZWEgIT0g
ZnJhbWUudmlldygpKSB7CisgICAgICAgIC8vIFdoZWVsIGV2ZW50IGlzIGdvaW5nIHRvIGJlIGhh
bmRsZWQgYnkgRnJhbWVWaWV3IGluIHByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKCksCisg
ICAgICAgIC8vIHNob3VsZCBsZXQgc2Nyb2xsYWJsZUFyZWEncyBvdmVyc2Nyb2xsLWJlaGF2aW9y
IGVmZmVjdCBTY3JvbGxDaGFpbmluZ0Jsb2NrZXIuCisgICAgICAgIEV2ZW50SGFuZGxlcjo6dXBk
YXRlU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKHNjcm9sbGFibGVBcmVhLmdldCgpLCBzY3JvbGxDaGFp
bmluZ0Jsb2NrZXIpOworICAgIH0KKworICAgIGF1dG8gYmlhc2VkRGVsdGEgPSBQbGF0Zm9ybVdo
ZWVsRXZlbnQ6OndoZWVsRGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRpY2FsKHdoZWVsRXZlbnQuZGVs
dGEoKTsKKyAgICBpZiAoc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLmJsb2NrWCAmJiAhYmlhc2VkRGVs
dGEuaGVpZ2h0KCkpIHsKKyAgICAgICAgLy8gSWYgdGhlIGhvcml6b250YWwgc2Nyb2xsIGNoYWlu
aW5nIGlzIGJsb2NrZWQgYnkgb3ZlcnNjcm9sbC1iZWhhdmlvciBpbiBhIHN1YmZyYW1lLgorICAg
ICAgICAvLyBJdCBwcm9wYWdhdGVzIGl0cyBTY3JvbGxDaGFpbmluZ0Jsb2NrZXIgdG8gcGFyZW50
IGZyYW1lcyBhbmQgZXZlbnR1YWxseSBsZXQgbWFpbmZyYW1lCisgICAgICAgIC8vIGRlY2lkZSB3
aGV0aGVyIG5lZWQgdG8gdHJpZ2dlciBhIHN3aXBlIGdlc3R1cmUgb3Igbm90LgorICAgICAgICBp
ZiAoZnJhbWUuaXNNYWluRnJhbWUoKSkgeworICAgICAgICAgICAgaGFuZGxlZEV2ZW50ID0gdHJ1
ZTsKKyAgICAgICAgICAgIC8vIEluIG1haW4gZnJhbWUsIGlmIHRoZSBzY3JvbGwgcG9zaXRpb24g
cmVhY2hlcyBvdCBpdHMgZWRnZXMsIHRyaWdnZXIgdGhlIHN3aXBlIGdlc3R1cmUsIG90aGVyd2lz
ZSBub3QuCisgICAgICAgICAgICBhdXRvIHBvc2l0aW9uWCA9IHNjcm9sbGFibGVBcmVhLT5zY3Jv
bGxQb3NpdGlvbigpLngoKTsKKyAgICAgICAgICAgIGlmICgocG9zaXRpb25YIDw9IHNjcm9sbGFi
bGVBcmVhLT5taW5pbXVtU2Nyb2xsUG9zaXRpb24oKS54KCkgJiYgZmlsdGVyZWRQbGF0Zm9ybURl
bHRhLndpZHRoKCkgPiAwKQorICAgICAgICAgICAgICAgIHx8IChwb3NpdGlvblggPj0gc2Nyb2xs
YWJsZUFyZWEtPm1heGltdW1TY3JvbGxQb3NpdGlvbigpLngoKSAmJiBmaWx0ZXJlZFBsYXRmb3Jt
RGVsdGEud2lkdGgoKSA8IDApKQorICAgICAgICAgICAgICAgIGhhbmRsZWRFdmVudCA9IGZhbHNl
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdXBkYXRlUGFyZW50RnJhbWVTY3JvbGxD
aGFpbmluZ0Jsb2NrZXIoc2Nyb2xsYWJsZUFyZWEuZ2V0KCksIGZyYW1lLCBzY3JvbGxDaGFpbmlu
Z0Jsb2NrZXIpOworICAgICAgICAgICAgaGFuZGxlZEV2ZW50ID0gZmFsc2U7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgaWYgKEV2ZW50SGFuZGxlcjo6c2hv
dWxkQmxvY2tTY3JvbGxDaGFpbmluZyh3aGVlbEV2ZW50LCBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIp
KSB7CisgICAgICAgIGhhbmRsZWRFdmVudCA9IHRydWU7CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKworICAgIGFkanVzdERlbHRhcyhzY3JvbGxDaGFpbmluZ0Jsb2NrZXIsIGZpbHRlcmVk
UGxhdGZvcm1EZWx0YSk7CisgICAgd2hlZWxFdmVudCA9IHdoZWVsRXZlbnQuY29weVdpdGhEZWx0
YXNBbmRWZWxvY2l0eShmaWx0ZXJlZFBsYXRmb3JtRGVsdGEud2lkdGgoKSwgZmlsdGVyZWRQbGF0
Zm9ybURlbHRhLmhlaWdodCgpLCB3aGVlbEV2ZW50LnNjcm9sbGluZ1ZlbG9jaXR5KCkpOworI2Vu
ZGlmCisgICAgcmV0dXJuIGZhbHNlOworfQorCiBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlV2hl
ZWxFdmVudEludGVybmFsKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgZXZlbnQsIE9wdGlvblNl
dDxXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBzPiBwcm9jZXNzaW5nU3RlcHMsIE9wdGlvblNldDxF
dmVudEhhbmRsaW5nPiYgaGFuZGxpbmcpCiB7CiAgICAgYXV0byogZG9jdW1lbnQgPSBtX2ZyYW1l
LmRvY3VtZW50KCk7CkBAIC0yOTE3LDExICszMDA4LDI2IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpo
YW5kbGVXaGVlbEV2ZW50SW50ZXJuYWwoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCwg
T3B0CiAgICAgYm9vbCBhbGxvd1Njcm9sbGluZyA9IHRydWU7CiAjaWYgRU5BQkxFKFdIRUVMX0VW
RU5UX0xBVENISU5HKQogICAgIGFsbG93U2Nyb2xsaW5nID0gbV9jdXJyZW50V2hlZWxFdmVudEFs
bG93c1Njcm9sbGluZyAmJiBtX2ZyYW1lLnBhZ2UoKS0+c2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVy
KCkubGF0Y2hpbmdBbGxvd3NTY3JvbGxpbmdJbkZyYW1lKG1fZnJhbWUsIHNjcm9sbGFibGVBcmVh
KTsKKyAgICBTY3JvbGxDaGFpbmluZ0Jsb2NrZXIgc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyID0gbV9m
cmFtZS5wYWdlKCktPnNjcm9sbExhdGNoaW5nQ29udHJvbGxlcigpLmdldFNjcm9sbENoYWluaW5n
QmxvY2tlcihtX2ZyYW1lKTsKICNlbmRpZgogICAgIGlmIChhbGxvd1Njcm9sbGluZykgewotICAg
ICAgICAvLyBGSVhNRTogcHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxpbmcoKSBpcyBvbmx5IGNh
bGxlZCBmb3IgRnJhbWVWaWV3IHNjcm9sbGluZywgbm90IG92ZXJmbG93IHNjcm9sbGluZywgd2hp
Y2ggaXMgY29uZnVzaW5nLgotICAgICAgICBoYW5kbGVkRXZlbnQgPSBwcm9jZXNzV2hlZWxFdmVu
dEZvclNjcm9sbGluZyhldmVudCwgc2Nyb2xsYWJsZUFyZWEsIGhhbmRsaW5nKTsKLSAgICAgICAg
cHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxTbmFwKGV2ZW50LCBzY3JvbGxhYmxlQXJlYSk7Cisg
ICAgICAgIFBsYXRmb3JtV2hlZWxFdmVudCBhZGp1c3RlZFdoZWVsRXZlbnQgPSBQbGF0Zm9ybVdo
ZWVsRXZlbnQoZXZlbnQpOworICAgICAgICBpZiAoIWlzU3JvbGxDaGFpbmluZ1N0b3BwZWRCeU92
ZXJzY3JvbGxCZWhhdmlvcihzY3JvbGxhYmxlQXJlYSwgbV9mcmFtZSwgYWRqdXN0ZWRXaGVlbEV2
ZW50LCBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIsIGhhbmRsZWRFdmVudCkpIHsKKyAgICAgICAgICAg
IC8vIEZJWE1FOiBwcm9jZXNzV2hlZWxFdmVudEZvclNjcm9sbGluZygpIGlzIG9ubHkgY2FsbGVk
IGZvciBGcmFtZVZpZXcgc2Nyb2xsaW5nLCBub3Qgb3ZlcmZsb3cgc2Nyb2xsaW5nLCB3aGljaCBp
cyBjb25mdXNpbmcuCisgICAgICAgICAgICBoYW5kbGVkRXZlbnQgPSBwcm9jZXNzV2hlZWxFdmVu
dEZvclNjcm9sbGluZyhhZGp1c3RlZFdoZWVsRXZlbnQsIHNjcm9sbGFibGVBcmVhLCBoYW5kbGlu
Zyk7CisgICAgICAgICAgICBwcm9jZXNzV2hlZWxFdmVudEZvclNjcm9sbFNuYXAoYWRqdXN0ZWRX
aGVlbEV2ZW50LCBzY3JvbGxhYmxlQXJlYSk7CisjaWYgIUVOQUJMRShXSEVFTF9FVkVOVF9MQVRD
SElORykKKyAgICAgICAgICAgIGlmICghaGFuZGxlZEV2ZW50ICYmIG1fZnJhbWUudmlldygpKSB7
CisgICAgICAgICAgICAgICAgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIHNjcm9sbENoYWluaW5nQmxv
Y2tlciA9IHsgbV9mcmFtZS52aWV3KCktPmhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSAh
PSBPdmVyc2Nyb2xsQmVoYXZpb3I6OkF1dG8sIG1fZnJhbWUudmlldygpLT52ZXJ0aWNhbE92ZXJz
Y3JvbGxCZWhhdmlvcigpICE9IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0byB9OworICAgICAgICAg
ICAgICAgIGlmIChzaG91bGRCbG9ja1Njcm9sbENoYWluaW5nKGFkanVzdGVkV2hlZWxFdmVudCwg
c2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKSkKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlZEV2ZW50
ID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyNlbmRpZgorICAgICAgICB9CisgICAgfSBlbHNlIGlm
ICghbV9mcmFtZS5pc01haW5GcmFtZSgpKSB7CisjaWYgRU5BQkxFKFdIRUVMX0VWRU5UX0xBVENI
SU5HKQorICAgICAgICB1cGRhdGVQYXJlbnRGcmFtZVNjcm9sbENoYWluaW5nQmxvY2tlcihzY3Jv
bGxhYmxlQXJlYS5nZXQoKSwgbV9mcmFtZSwgc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKTsKKyNlbmRp
ZgogICAgIH0KIAogICAgIHJldHVybiBoYW5kbGVkRXZlbnQ7CkBAIC0yOTM4LDIwICszMDQ0LDIy
IEBAIHN0YXRpYyB2b2lkIGhhbmRsZVdoZWVsRXZlbnRQaGFzZUluU2Nyb2xsYWJsZUFyZWEoU2Ny
b2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhCiAjZW5kaWYKIH0KIAotc3RhdGljIGJvb2wgZGlk
U2Nyb2xsSW5TY3JvbGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEsIGNv
bnN0IFdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpCitzdGF0aWMgYm9vbCBkaWRTY3JvbGxJblNjcm9s
bGFibGVBcmVhKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSwgY29uc3QgV2hlZWxFdmVu
dCYgd2hlZWxFdmVudCwgY29uc3QgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyJiBzY3JvbGxDaGFpbmlu
Z0Jsb2NrZXIpCiB7CisgICAgRmxvYXRTaXplIGZpbHRlcmVkUGxhdGZvcm1EZWx0YSh3aGVlbEV2
ZW50LmRlbHRhWCgpLCB3aGVlbEV2ZW50LmRlbHRhWSgpKTsKKyAgICBhZGp1c3REZWx0YXMoc2Ny
b2xsQ2hhaW5pbmdCbG9ja2VyLCBmaWx0ZXJlZFBsYXRmb3JtRGVsdGEpOwogICAgIFNjcm9sbEdy
YW51bGFyaXR5IHNjcm9sbEdyYW51bGFyaXR5ID0gd2hlZWxHcmFudWxhcml0eVRvU2Nyb2xsR3Jh
bnVsYXJpdHkod2hlZWxFdmVudC5kZWx0YU1vZGUoKSk7CiAgICAgYm9vbCBkaWRIYW5kbGVXaGVl
bEV2ZW50ID0gZmFsc2U7Ci0gICAgaWYgKGZsb2F0IGFic29sdXRlRGVsdGEgPSBzdGQ6OmFicyh3
aGVlbEV2ZW50LmRlbHRhWCgpKSkKLSAgICAgICAgZGlkSGFuZGxlV2hlZWxFdmVudCB8PSBzY3Jv
bGxhYmxlQXJlYS5zY3JvbGwod2hlZWxFdmVudC5kZWx0YVgoKSA+IDAgPyBTY3JvbGxSaWdodCA6
IFNjcm9sbExlZnQsIHNjcm9sbEdyYW51bGFyaXR5LCBhYnNvbHV0ZURlbHRhKTsKKyAgICBpZiAo
ZmxvYXQgYWJzb2x1dGVEZWx0YSA9IHN0ZDo6YWJzKGZpbHRlcmVkUGxhdGZvcm1EZWx0YS53aWR0
aCgpKSkKKyAgICAgICAgZGlkSGFuZGxlV2hlZWxFdmVudCB8PSBzY3JvbGxhYmxlQXJlYS5zY3Jv
bGwoZmlsdGVyZWRQbGF0Zm9ybURlbHRhLndpZHRoKCkgPiAwID8gU2Nyb2xsUmlnaHQgOiBTY3Jv
bGxMZWZ0LCBzY3JvbGxHcmFudWxhcml0eSwgYWJzb2x1dGVEZWx0YSk7CiAKLSAgICBpZiAoZmxv
YXQgYWJzb2x1dGVEZWx0YSA9IHN0ZDo6YWJzKHdoZWVsRXZlbnQuZGVsdGFZKCkpKQotICAgICAg
ICBkaWRIYW5kbGVXaGVlbEV2ZW50IHw9IHNjcm9sbGFibGVBcmVhLnNjcm9sbCh3aGVlbEV2ZW50
LmRlbHRhWSgpID4gMCA/IFNjcm9sbERvd24gOiBTY3JvbGxVcCwgc2Nyb2xsR3JhbnVsYXJpdHks
IGFic29sdXRlRGVsdGEpOworICAgIGlmIChmbG9hdCBhYnNvbHV0ZURlbHRhID0gc3RkOjphYnMo
ZmlsdGVyZWRQbGF0Zm9ybURlbHRhLmhlaWdodCgpKSkKKyAgICAgICAgZGlkSGFuZGxlV2hlZWxF
dmVudCB8PSBzY3JvbGxhYmxlQXJlYS5zY3JvbGwoZmlsdGVyZWRQbGF0Zm9ybURlbHRhLmhlaWdo
dCgpID4gMCA/IFNjcm9sbERvd24gOiBTY3JvbGxVcCwgc2Nyb2xsR3JhbnVsYXJpdHksIGFic29s
dXRlRGVsdGEpOwogCiAgICAgcmV0dXJuIGRpZEhhbmRsZVdoZWVsRXZlbnQ7CiB9CiAKLWJvb2wg
RXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2luZ0JveChO
b2RlKiBzdGFydE5vZGUsIGNvbnN0IFdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIGNvbnN0IEZsb2F0
U2l6ZSYgZmlsdGVyZWRQbGF0Zm9ybURlbHRhLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlcmVkVmVs
b2NpdHksIE9wdGlvblNldDxFdmVudEhhbmRsaW5nPiBldmVudEhhbmRsaW5nKQorYm9vbCBFdmVu
dEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94KE5vZGUq
IHN0YXJ0Tm9kZSwgY29uc3QgV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgRmxvYXRTaXplJiBmaWx0
ZXJlZFBsYXRmb3JtRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyZWRWZWxvY2l0eSwgT3B0
aW9uU2V0PEV2ZW50SGFuZGxpbmc+IGV2ZW50SGFuZGxpbmcpCiB7CiAgICAgYm9vbCBzaG91bGRI
YW5kbGVFdmVudCA9IHdoZWVsRXZlbnQuZGVsdGFYKCkgfHwgd2hlZWxFdmVudC5kZWx0YVkoKTsK
ICNpZiBFTkFCTEUoV0hFRUxfRVZFTlRfTEFUQ0hJTkcpCkBAIC0yOTcyLDIyICszMDgwLDMzIEBA
IGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2lu
Z0JveChOb2RlKiBzdGFydE5vZGUsIGNvCiAgICAgaWYgKCFzaG91bGRIYW5kbGVFdmVudCkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIHNjcm9sbENo
YWluaW5nQmxvY2tlciA9IHsgZmFsc2UsIGZhbHNlIH07CiAgICAgaWYgKGlzPFJlbmRlckxpc3RC
b3g+KGluaXRpYWxFbmNsb3NpbmdCb3gpKQotICAgICAgICByZXR1cm4gZGlkU2Nyb2xsSW5TY3Jv
bGxhYmxlQXJlYShkb3duY2FzdDxSZW5kZXJMaXN0Qm94Pihpbml0aWFsRW5jbG9zaW5nQm94KSwg
d2hlZWxFdmVudCk7CisgICAgICAgIHJldHVybiBkaWRTY3JvbGxJblNjcm9sbGFibGVBcmVhKGRv
d25jYXN0PFJlbmRlckxpc3RCb3g+KGluaXRpYWxFbmNsb3NpbmdCb3gpLCB3aGVlbEV2ZW50LCBz
Y3JvbGxDaGFpbmluZ0Jsb2NrZXIpOwogCisgICAgYXV0byBiaWFzZWREZWx0YSA9IFBsYXRmb3Jt
V2hlZWxFdmVudDo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoRmxvYXRTaXplKHdo
ZWVsRXZlbnQuZGVsdGFYKCksIHdoZWVsRXZlbnQuZGVsdGFZKCkpKTsKICAgICBSZW5kZXJCb3gq
IGN1cnJlbnRFbmNsb3NpbmdCb3ggPSAmaW5pdGlhbEVuY2xvc2luZ0JveDsKICAgICB3aGlsZSAo
Y3VycmVudEVuY2xvc2luZ0JveCkgewogICAgICAgICBpZiAoUmVuZGVyTGF5ZXIqIGJveExheWVy
ID0gY3VycmVudEVuY2xvc2luZ0JveC0+bGF5ZXIoKSkgewogICAgICAgICAgICAgYXV0byBwbGF0
Zm9ybUV2ZW50ID0gd2hlZWxFdmVudC51bmRlcmx5aW5nUGxhdGZvcm1FdmVudCgpOwogICAgICAg
ICAgICAgYm9vbCBzY3JvbGxpbmdXYXNIYW5kbGVkOwogICAgICAgICAgICAgaWYgKHBsYXRmb3Jt
RXZlbnQpIHsKKyAgICAgICAgICAgICAgICBhZGp1c3REZWx0YXMoc2Nyb2xsQ2hhaW5pbmdCbG9j
a2VyLCBmaWx0ZXJlZFBsYXRmb3JtRGVsdGEpOwogICAgICAgICAgICAgICAgIGF1dG8gY29waWVk
RXZlbnQgPSBwbGF0Zm9ybUV2ZW50LT5jb3B5V2l0aERlbHRhc0FuZFZlbG9jaXR5KGZpbHRlcmVk
UGxhdGZvcm1EZWx0YS53aWR0aCgpLCBmaWx0ZXJlZFBsYXRmb3JtRGVsdGEuaGVpZ2h0KCksIGZp
bHRlcmVkVmVsb2NpdHkpOwogICAgICAgICAgICAgICAgIHNjcm9sbGluZ1dhc0hhbmRsZWQgPSBo
YW5kbGVXaGVlbEV2ZW50SW5TY3JvbGxhYmxlQXJlYShjb3BpZWRFdmVudCwgKmJveExheWVyLCBl
dmVudEhhbmRsaW5nKTsKICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHNjcm9s
bGluZ1dhc0hhbmRsZWQgPSBkaWRTY3JvbGxJblNjcm9sbGFibGVBcmVhKCpib3hMYXllciwgd2hl
ZWxFdmVudCk7CisgICAgICAgICAgICAgICAgc2Nyb2xsaW5nV2FzSGFuZGxlZCA9IGRpZFNjcm9s
bEluU2Nyb2xsYWJsZUFyZWEoKmJveExheWVyLCB3aGVlbEV2ZW50LCBzY3JvbGxDaGFpbmluZ0Js
b2NrZXIpOwogCiAgICAgICAgICAgICBpZiAoc2Nyb2xsaW5nV2FzSGFuZGxlZCkKICAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAgICAgaWYgKGN1cnJlbnRFbmNsb3NpbmdC
b3gtPmVsZW1lbnQoKSAhPSBjdXJyZW50RW5jbG9zaW5nQm94LT5kb2N1bWVudCgpLmRvY3VtZW50
RWxlbWVudCgpKSB7CisgICAgICAgICAgICAgICAgdXBkYXRlU2Nyb2xsQ2hhaW5pbmdCbG9ja2Vy
KGJveExheWVyLCBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIpOworICAgICAgICAgICAgICAgIGlmICgo
c2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLmJsb2NrWCAmJiBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIuYmxv
Y2tZKQorICAgICAgICAgICAgICAgICAgICB8fCAoc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLmJsb2Nr
WSAmJiAhYmlhc2VkRGVsdGEud2lkdGgoKSkKKyAgICAgICAgICAgICAgICAgICAgfHwgKHNjcm9s
bENoYWluaW5nQmxvY2tlci5ibG9ja1ggJiYgIWJpYXNlZERlbHRhLmhlaWdodCgpKSkKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAog
ICAgICAgICBjdXJyZW50RW5jbG9zaW5nQm94ID0gY3VycmVudEVuY2xvc2luZ0JveC0+Y29udGFp
bmluZ0Jsb2NrKCk7CkBAIC0zMDY3LDYgKzMxODYsNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6ZGVm
YXVsdFdoZWVsRXZlbnRIYW5kbGVyKE5vZGUqIHN0YXJ0Tm9kZSwgV2hlZWxFdmVudCYgd2hlZWxF
dgogICAgIGlmICghbV9mcmFtZS5wYWdlKCktPnNjcm9sbExhdGNoaW5nQ29udHJvbGxlcigpLmxh
dGNoaW5nQWxsb3dzU2Nyb2xsaW5nSW5GcmFtZShtX2ZyYW1lLCBsYXRjaGVkU2Nyb2xsZXIpKQog
ICAgICAgICByZXR1cm47CiAKKyAgICBTY3JvbGxDaGFpbmluZ0Jsb2NrZXIgc2Nyb2xsQ2hhaW5p
bmdCbG9ja2VyID0gbV9mcmFtZS5wYWdlKCktPnNjcm9sbExhdGNoaW5nQ29udHJvbGxlcigpLmdl
dFNjcm9sbENoYWluaW5nQmxvY2tlcihtX2ZyYW1lKTsKICAgICBpZiAobGF0Y2hlZFNjcm9sbGVy
KSB7CiAgICAgICAgIGlmIChsYXRjaGVkU2Nyb2xsZXIgPT0gbV9mcmFtZS52aWV3KCkpIHsKICAg
ICAgICAgICAgIC8vIEZyYW1lVmlldyBzY3JvbGxpbmcgaXMgaGFuZGxlZCB2aWEgcHJvY2Vzc1do
ZWVsRXZlbnRGb3JTY3JvbGxpbmcoKS4KQEAgLTMwNzUsNiArMzE5NSw3IEBAIHZvaWQgRXZlbnRI
YW5kbGVyOjpkZWZhdWx0V2hlZWxFdmVudEhhbmRsZXIoTm9kZSogc3RhcnROb2RlLCBXaGVlbEV2
ZW50JiB3aGVlbEV2CiAKICAgICAgICAgYXV0byBwbGF0Zm9ybUV2ZW50ID0gd2hlZWxFdmVudC51
bmRlcmx5aW5nUGxhdGZvcm1FdmVudCgpOwogICAgICAgICBpZiAocGxhdGZvcm1FdmVudCkgewor
ICAgICAgICAgICAgYWRqdXN0RGVsdGFzKHNjcm9sbENoYWluaW5nQmxvY2tlciwgZmlsdGVyZWRQ
bGF0Zm9ybURlbHRhKTsKICAgICAgICAgICAgIGF1dG8gY29waWVkRXZlbnQgPSBwbGF0Zm9ybUV2
ZW50LT5jb3B5V2l0aERlbHRhc0FuZFZlbG9jaXR5KGZpbHRlcmVkUGxhdGZvcm1EZWx0YS53aWR0
aCgpLCBmaWx0ZXJlZFBsYXRmb3JtRGVsdGEuaGVpZ2h0KCksIGZpbHRlcmVkVmVsb2NpdHkpOwog
ICAgICAgICAgICAgaWYgKGhhbmRsZVdoZWVsRXZlbnRJblNjcm9sbGFibGVBcmVhKGNvcGllZEV2
ZW50LCAqbGF0Y2hlZFNjcm9sbGVyLCBldmVudEhhbmRsaW5nKSkKICAgICAgICAgICAgICAgICB3
aGVlbEV2ZW50LnNldERlZmF1bHRIYW5kbGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0V2ZW50SGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIu
aAppbmRleCA0YmI1MDYxMWY0YzlhMjFiZjU4NjQwMWQxOWMzOTFiNGQ3OGIzZGIwLi4zMTZkMjZm
Zjk2M2ZmZWQ5YzM5ODE1Y2IzOTk1NDNmOTlhMDNjYTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmgKQEAgLTM0OSw2ICszNDksMTAgQEAgcHVibGljOgogI2lmIEVOQUJMRShEUkFHX1NV
UFBPUlQpCiAgICAgRWxlbWVudCogZHJhZ2dpbmdFbGVtZW50KCkgY29uc3Q7CiAjZW5kaWYKKwor
ICAgIHN0YXRpYyB2b2lkIHVwZGF0ZVNjcm9sbENoYWluaW5nQmxvY2tlcihTY3JvbGxhYmxlQXJl
YSosIFNjcm9sbENoYWluaW5nQmxvY2tlciYpOworICAgIHN0YXRpYyBib29sIHNob3VsZEJsb2Nr
U2Nyb2xsQ2hhaW5pbmcoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgY29uc3QgU2Nyb2xsQ2hh
aW5pbmdCbG9ja2VyJik7CisKIHByaXZhdGU6CiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKICAg
ICBzdGF0aWMgRHJhZ1N0YXRlJiBkcmFnU3RhdGUoKTsKQEAgLTQ2NCw3ICs0NjgsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgcHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxTbmFwKGNvbnN0IFBsYXRm
b3JtV2hlZWxFdmVudCYsIGNvbnN0IFdlYWtQdHI8U2Nyb2xsYWJsZUFyZWE+Jik7CiAgICAgYm9v
bCBjb21wbGV0ZVdpZGdldFdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgY29u
c3QgV2Vha1B0cjxXaWRnZXQ+JiwgY29uc3QgV2Vha1B0cjxTY3JvbGxhYmxlQXJlYT4mKTsKIAot
ICAgIGJvb2wgaGFuZGxlV2hlZWxFdmVudEluQXBwcm9wcmlhdGVFbmNsb3NpbmdCb3goTm9kZSog
c3RhcnROb2RlLCBjb25zdCBXaGVlbEV2ZW50JiwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJlZFBs
YXRmb3JtRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyZWRWZWxvY2l0eSwgT3B0aW9uU2V0
PEV2ZW50SGFuZGxpbmc+KTsKKyAgICBib29sIGhhbmRsZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRl
RW5jbG9zaW5nQm94KE5vZGUqIHN0YXJ0Tm9kZSwgY29uc3QgV2hlZWxFdmVudCYsIEZsb2F0U2l6
ZSYgZmlsdGVyZWRQbGF0Zm9ybURlbHRhLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlcmVkVmVsb2Np
dHksIE9wdGlvblNldDxFdmVudEhhbmRsaW5nPik7CiAKICAgICBib29sIGhhbmRsZVdoZWVsRXZl
bnRJblNjcm9sbGFibGVBcmVhKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIFNjcm9sbGFibGVB
cmVhJiwgT3B0aW9uU2V0PEV2ZW50SGFuZGxpbmc+KTsKICAgICBPcHRpb25hbDxXaGVlbFNjcm9s
bEdlc3R1cmVTdGF0ZT4gdXBkYXRlV2hlZWxHZXN0dXJlU3RhdGUoY29uc3QgUGxhdGZvcm1XaGVl
bEV2ZW50JiwgT3B0aW9uU2V0PEV2ZW50SGFuZGxpbmc+KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
LmNwcAppbmRleCA4ZGUzZGVlZmQzYThiYjZmM2I2NTdkMDVkZDlhZTJmNGYxMzgxZjMyLi40MGE3
M2Y1YjJjNzI2Y2MzMWI1MDc3YzJmZWI2ZDZjNDE5ZTYyYWZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVZpZXcuY3BwCkBAIC00MTgsNiArNDE4LDI0IEBAIGJvb2wgRnJhbWVWaWV3OjpkaWRGaXJzdExh
eW91dCgpIGNvbnN0CiAgICAgcmV0dXJuIGxheW91dENvbnRleHQoKS5kaWRGaXJzdExheW91dCgp
OwogfQogCitPdmVyc2Nyb2xsQmVoYXZpb3IgRnJhbWVWaWV3Ojpob3Jpem9udGFsT3ZlcnNjcm9s
bEJlaGF2aW9yKCkgY29uc3QKK3sKKyAgICBhdXRvKiBkb2N1bWVudCA9IGZyYW1lKCkuZG9jdW1l
bnQoKTsKKyAgICBhdXRvIHNjcm9sbGluZ09iamVjdCA9IGRvY3VtZW50ICYmIGRvY3VtZW50LT5k
b2N1bWVudEVsZW1lbnQoKSA/IGRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKS0+cmVuZGVyZXIo
KSA6IG51bGxwdHI7CisgICAgaWYgKCFzY3JvbGxpbmdPYmplY3QgfHwgIW1heGltdW1TY3JvbGxP
ZmZzZXQoKS54KCkpCisgICAgICAgIHJldHVybiBTY3JvbGxhYmxlQXJlYTo6aG9yaXpvbnRhbE92
ZXJzY3JvbGxCZWhhdmlvcigpOworICAgIHJldHVybiBzY3JvbGxpbmdPYmplY3QtPnN0eWxlKCku
b3ZlcnNjcm9sbEJlaGF2aW9yWCgpOworfQorCitPdmVyc2Nyb2xsQmVoYXZpb3IgRnJhbWVWaWV3
Ojp2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpICBjb25zdAoreworICAgIGF1dG8qIGRvY3Vt
ZW50ID0gZnJhbWUoKS5kb2N1bWVudCgpOworICAgIGF1dG8gc2Nyb2xsaW5nT2JqZWN0ID0gZG9j
dW1lbnQgJiYgZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpID8gZG9jdW1lbnQtPmRvY3VtZW50
RWxlbWVudCgpLT5yZW5kZXJlcigpIDogbnVsbHB0cjsKKyAgICBpZiAoIXNjcm9sbGluZ09iamVj
dCB8fCAhbWF4aW11bVNjcm9sbE9mZnNldCgpLnkoKSkKKyAgICAgICAgcmV0dXJuIFNjcm9sbGFi
bGVBcmVhOjp2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpOworICAgIHJldHVybiBzY3JvbGxp
bmdPYmplY3QtPnN0eWxlKCkub3ZlcnNjcm9sbEJlaGF2aW9yWSgpOworfQorCiB2b2lkIEZyYW1l
Vmlldzo6aW52YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICBpZiAoIXBh
cmVudCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCAwOWM4ZGY2NDc0YWExZjY4MzNm
NzU3ZDRmZTE3NDQ4NWVmZjE1OTgxLi43ZWQ4YmUzODEyM2E0MTg1NTUwYTM3MDdiM2NkNjVkNGQ0
N2FiNTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTc1MSw2ICs3NTEsOSBAQCBwcml2
YXRlOgogICAgIHZvaWQgdW5vYnNjdXJlZENvbnRlbnRTaXplQ2hhbmdlZCgpIGZpbmFsOwogCiAg
ICAgLy8gU2Nyb2xsYWJsZUFyZWEgaW50ZXJmYWNlCisgICAgT3ZlcnNjcm9sbEJlaGF2aW9yIGhv
cml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdCBmaW5hbDsKKyAgICBPdmVyc2Nyb2xs
QmVoYXZpb3IgdmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdCBmaW5hbDsKKwogICAg
IHZvaWQgaW52YWxpZGF0ZVNjcm9sbGJhclJlY3QoU2Nyb2xsYmFyJiwgY29uc3QgSW50UmVjdCYp
IGZpbmFsOwogICAgIHZvaWQgc2Nyb2xsVG8oY29uc3QgU2Nyb2xsUG9zaXRpb24mKSBmaW5hbDsK
ICAgICB2b2lkIHNldFZpc2libGVTY3JvbGxlclRodW1iUmVjdChjb25zdCBJbnRSZWN0JikgZmlu
YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0KaW5kZXggNzE0
MTUzNjViYWJhZjVhOTQyM2EyOWY2MWI3ODJmZmUzMmI0OTMxNy4uYjhiODI2MGY2ZTZhZmMyMTZl
NTBiY2QzMjEyY2M4NmU3MDUwODIwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9t
YWMvRXZlbnRIYW5kbGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50
SGFuZGxlck1hYy5tbQpAQCAtNzk1LDkgKzc5NSw5IEBAIHN0YXRpYyBTY3JvbGxhYmxlQXJlYSog
c2Nyb2xsYWJsZUFyZWFGb3JCb3goUmVuZGVyQm94JiBib3gpCiB9CiAKIC8vIEZJWE1FOiBUaGlz
IGNvdWxkIGJlIHdyaXR0ZW4gaW4gdGVybXMgb2YgU2Nyb2xsYWJsZUFyZWE6OmVuY2xvc2luZ1Nj
cm9sbGFibGVBcmVhKCkuCi1zdGF0aWMgQ29udGFpbmVyTm9kZSogZmluZEVuY2xvc2luZ1Njcm9s
bGFibGVDb250YWluZXIoQ29udGFpbmVyTm9kZSogbm9kZSwgY29uc3QgUGxhdGZvcm1XaGVlbEV2
ZW50JiB3aGVlbEV2ZW50KQorc3RhdGljIENvbnRhaW5lck5vZGUqIGZpbmRFbmNsb3NpbmdTY3Jv
bGxhYmxlQ29udGFpbmVyKENvbnRhaW5lck5vZGUqIG5vZGUsIGNvbnN0IFBsYXRmb3JtV2hlZWxF
dmVudCYgd2hlZWxFdmVudCwgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyJiBzY3JvbGxDaGFpbmluZ0Js
b2NrZXIpCiB7Ci0gICAgYXV0byBiaWFzZWREZWx0YSA9IFNjcm9sbENvbnRyb2xsZXI6OndoZWVs
RGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRpY2FsKHdoZWVsRXZlbnQpOworICAgIGF1dG8gYmlhc2Vk
RGVsdGEgPSBQbGF0Zm9ybVdoZWVsRXZlbnQ6OndoZWVsRGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRp
Y2FsKHdoZWVsRXZlbnQuZGVsdGEoKSk7CiAKICAgICAvLyBGaW5kIHRoZSBmaXJzdCBub2RlIHdp
dGggYSB2YWxpZCBzY3JvbGxhYmxlIGFyZWEgc3RhcnRpbmcgd2l0aCB0aGUgY3VycmVudAogICAg
IC8vIG5vZGUgYW5kIHRyYXZlcnNpbmcgaXRzIHBhcmVudHMgKG9yIHNoYWRvdyBob3N0cykuCkBA
IC04MDksMjEgKzgwOSwyOSBAQCBzdGF0aWMgQ29udGFpbmVyTm9kZSogZmluZEVuY2xvc2luZ1Nj
cm9sbGFibGVDb250YWluZXIoQ29udGFpbmVyTm9kZSogbm9kZSwgY29ucwogICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKICAgICAgICAgUmVuZGVyQm94KiBib3ggPSBjYW5kaWRhdGUtPnJl
bmRlckJveCgpOwotICAgICAgICBpZiAoIWJveCB8fCAhYm94LT5jYW5CZVNjcm9sbGVkQW5kSGFz
U2Nyb2xsYWJsZUFyZWEoKSkKKyAgICAgICAgaWYgKCFib3gpCiAgICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgCisKICAgICAgICAgYXV0byogc2Nyb2xsYWJsZUFyZWEgPSBzY3JvbGxhYmxl
QXJlYUZvckJveCgqYm94KTsKLSAgICAgICAgaWYgKCFzY3JvbGxhYmxlQXJlYSkKLSAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoc2Nyb2xsYWJsZUFyZWEgJiYgYm94LT5jYW5CZVNj
cm9sbGVkQW5kSGFzU2Nyb2xsYWJsZUFyZWEoKSkgeworICAgICAgICAgICAgaWYgKHdoZWVsRXZl
bnQucGhhc2UoKSA9PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZTo6TWF5QmVnaW4gIHx8IHdoZWVs
RXZlbnQucGhhc2UoKSA9PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZTo6Q2FuY2VsbGVkKQorICAg
ICAgICAgICAgICAgIHJldHVybiBjYW5kaWRhdGU7CiAKLSAgICAgICAgaWYgKHdoZWVsRXZlbnQu
cGhhc2UoKSA9PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZTo6TWF5QmVnaW4gfHwgd2hlZWxFdmVu
dC5waGFzZSgpID09IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlOjpDYW5jZWxsZWQpCi0gICAgICAg
ICAgICByZXR1cm4gY2FuZGlkYXRlOworICAgICAgICAgICAgaWYgKChiaWFzZWREZWx0YS5oZWln
aHQoKSA+IDAgJiYgIXNjcm9sbGFibGVBcmVhLT5zY3JvbGxlZFRvVG9wKCkpIHx8IChiaWFzZWRE
ZWx0YS5oZWlnaHQoKSA8IDAgJiYgIXNjcm9sbGFibGVBcmVhLT5zY3JvbGxlZFRvQm90dG9tKCkp
CisgICAgICAgICAgICAgICAgfHwgKGJpYXNlZERlbHRhLndpZHRoKCkgPiAwICYmICFzY3JvbGxh
YmxlQXJlYS0+c2Nyb2xsZWRUb0xlZnQoKSkgfHwgKGJpYXNlZERlbHRhLndpZHRoKCkgPCAwICYm
ICFzY3JvbGxhYmxlQXJlYS0+c2Nyb2xsZWRUb1JpZ2h0KCkpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBjYW5kaWRhdGU7CisgICAgICAgIH0KKyAgICAgICAgLy8gTGV0IEZyYW1lVmlldzo6aG9y
aXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvciBkZWNpZGUgd2hpY2ggbm9kZSdzIG92ZXJzY3JvbGwt
YmFodmlvciBpcyBlZmZlY3RpdmUgdG8gRnJhbWVWaWV3LgorICAgICAgICBpZiAoY2FuZGlkYXRl
ID09IGNhbmRpZGF0ZS0+ZG9jdW1lbnQoKS5ib2R5KCkpCisgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgaWYgKGNhbmRpZGF0ZSA9PSBub2RlKQorICAgICAgICAgICAgY29udGludWU7CiAK
LSAgICAgICAgaWYgKChiaWFzZWREZWx0YS5oZWlnaHQoKSA+IDAgJiYgIXNjcm9sbGFibGVBcmVh
LT5zY3JvbGxlZFRvVG9wKCkpIHx8IChiaWFzZWREZWx0YS5oZWlnaHQoKSA8IDAgJiYgIXNjcm9s
bGFibGVBcmVhLT5zY3JvbGxlZFRvQm90dG9tKCkpCi0gICAgICAgICAgICB8fCAoYmlhc2VkRGVs
dGEud2lkdGgoKSA+IDAgJiYgIXNjcm9sbGFibGVBcmVhLT5zY3JvbGxlZFRvTGVmdCgpKSB8fCAo
Ymlhc2VkRGVsdGEud2lkdGgoKSA8IDAgJiYgIXNjcm9sbGFibGVBcmVhLT5zY3JvbGxlZFRvUmln
aHQoKSkpCi0gICAgICAgICAgICByZXR1cm4gY2FuZGlkYXRlOworICAgICAgICBFdmVudEhhbmRs
ZXI6OnVwZGF0ZVNjcm9sbENoYWluaW5nQmxvY2tlcihzY3JvbGxhYmxlQXJlYSwgc2Nyb2xsQ2hh
aW5pbmdCbG9ja2VyKTsKKyAgICAgICAgaWYgKEV2ZW50SGFuZGxlcjo6c2hvdWxkQmxvY2tTY3Jv
bGxDaGFpbmluZyh3aGVlbEV2ZW50LCBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIpKQorICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9
CiAKQEAgLTg2OCwxMCArODc2LDExIEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpkZXRlcm1pbmVXaGVl
bEV2ZW50VGFyZ2V0KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVuCiAgICAgaWYg
KCF2aWV3KQogICAgICAgICByZXR1cm47CiAKKyAgICBTY3JvbGxDaGFpbmluZ0Jsb2NrZXIgc2Ny
b2xsQ2hhaW5pbmdCbG9ja2VyOwogICAgIGlmIChldmVudFRhcmdldElzUGxhdGZvcm1XaWRnZXQo
d2hlZWxFdmVudFRhcmdldC5nZXQoKSkpCiAgICAgICAgIHNjcm9sbGFibGVBcmVhID0gc2Nyb2xs
YWJsZUFyZWFGb3JFdmVudFRhcmdldCh3aGVlbEV2ZW50VGFyZ2V0LmdldCgpKTsKICAgICBlbHNl
IHsKLSAgICAgICAgYXV0byogc2Nyb2xsYWJsZUNvbnRhaW5lciA9IGZpbmRFbmNsb3NpbmdTY3Jv
bGxhYmxlQ29udGFpbmVyKHdoZWVsRXZlbnRUYXJnZXQuZ2V0KCksIHdoZWVsRXZlbnQpOworICAg
ICAgICBhdXRvKiBzY3JvbGxhYmxlQ29udGFpbmVyID0gZmluZEVuY2xvc2luZ1Njcm9sbGFibGVD
b250YWluZXIod2hlZWxFdmVudFRhcmdldC5nZXQoKSwgd2hlZWxFdmVudCwgc2Nyb2xsQ2hhaW5p
bmdCbG9ja2VyKTsKICAgICAgICAgaWYgKHNjcm9sbGFibGVDb250YWluZXIpCiAgICAgICAgICAg
ICBzY3JvbGxhYmxlQXJlYSA9IHNjcm9sbGFibGVBcmVhRm9yQ29udGFpbmVyTm9kZSgqc2Nyb2xs
YWJsZUNvbnRhaW5lcik7CiAgICAgICAgIGVsc2UKQEAgLTg4OSw3ICs4OTgsNyBAQCB2b2lkIEV2
ZW50SGFuZGxlcjo6ZGV0ZXJtaW5lV2hlZWxFdmVudFRhcmdldChjb25zdCBQbGF0Zm9ybVdoZWVs
RXZlbnQmIHdoZWVsRXZlbgogICAgIGlmIChtX2ZyYW1lLmlzTWFpbkZyYW1lKCkgJiYgd2hlZWxF
dmVudC5pc0dlc3R1cmVTdGFydCgpKQogICAgICAgICBwYWdlLT53aGVlbEV2ZW50RGVsdGFGaWx0
ZXIoKS0+YmVnaW5GaWx0ZXJpbmdEZWx0YXMoKTsKIAotICAgIHBhZ2UtPnNjcm9sbExhdGNoaW5n
Q29udHJvbGxlcigpLnVwZGF0ZUFuZEZldGNoTGF0Y2hpbmdTdGF0ZUZvckZyYW1lKG1fZnJhbWUs
IHdoZWVsRXZlbnQsIHdoZWVsRXZlbnRUYXJnZXQsIHNjcm9sbGFibGVBcmVhLCBpc092ZXJXaWRn
ZXQpOworICAgIHBhZ2UtPnNjcm9sbExhdGNoaW5nQ29udHJvbGxlcigpLnVwZGF0ZUFuZEZldGNo
TGF0Y2hpbmdTdGF0ZUZvckZyYW1lKG1fZnJhbWUsIHdoZWVsRXZlbnQsIHdoZWVsRXZlbnRUYXJn
ZXQsIHNjcm9sbGFibGVBcmVhLCBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIsIGlzT3ZlcldpZGdldCk7
CiB9CiAKIHZvaWQgRXZlbnRIYW5kbGVyOjpyZWNvcmRXaGVlbEV2ZW50Rm9yRGVsdGFGaWx0ZXIo
Y29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50KQpAQCAtOTA4LDYgKzkxNyw3IEBA
IHZvaWQgRXZlbnRIYW5kbGVyOjpyZWNvcmRXaGVlbEV2ZW50Rm9yRGVsdGFGaWx0ZXIoY29uc3Qg
UGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlCiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAg
ICAgfQorCiAgICAgcGFnZS0+d2hlZWxFdmVudERlbHRhRmlsdGVyKCktPnVwZGF0ZUZyb21EZWx0
YShGbG9hdFNpemUod2hlZWxFdmVudC5kZWx0YVgoKSwgd2hlZWxFdmVudC5kZWx0YVkoKSkpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9s
bGluZ0Nvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5j
U2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCmluZGV4IGY3YzA0YjFkZTAwMjc5NTlkOGNlNjNiNjA3
ZGM2MGNhMTY5YTM0YzUuLmU1NWY3YWMwNjEyNjgzMzc2YjVkZjY1ZmFlMDM2OTVmNGEzZDUyYjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5n
Q29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5j
U2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCkBAIC02OTcsNiArNjk3LDggQEAgdm9pZCBBc3luY1Nj
cm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRTY3JvbGxpbmdOb2RlU2Nyb2xsYWJsZUFyZWFHZW9tZXRy
eShTY3JvbGxpbmcKICAgICBzY3JvbGxpbmdOb2RlLnNldFNjcm9sbGFibGVBcmVhU2l6ZShzY3Jv
bGxhYmxlQXJlYS52aXNpYmxlU2l6ZSgpKTsKIAogICAgIFNjcm9sbGFibGVBcmVhUGFyYW1ldGVy
cyBzY3JvbGxQYXJhbWV0ZXJzOworICAgIHNjcm9sbFBhcmFtZXRlcnMuaG9yaXpvbnRhbE92ZXJz
Y3JvbGxCZWhhdmlvciA9IHNjcm9sbGFibGVBcmVhLmhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZp
b3IoKTsKKyAgICBzY3JvbGxQYXJhbWV0ZXJzLnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yID0g
c2Nyb2xsYWJsZUFyZWEudmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKTsKICAgICBzY3JvbGxQ
YXJhbWV0ZXJzLmhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5ID0gc2Nyb2xsYWJsZUFyZWEuaG9y
aXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkoKTsKICAgICBzY3JvbGxQYXJhbWV0ZXJzLnZlcnRpY2Fs
U2Nyb2xsRWxhc3RpY2l0eSA9IHNjcm9sbGFibGVBcmVhLnZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0
eSgpOwogICAgIHNjcm9sbFBhcmFtZXRlcnMuaGFzRW5hYmxlZEhvcml6b250YWxTY3JvbGxiYXIg
PSBob3Jpem9udGFsU2Nyb2xsYmFyICYmIGhvcml6b250YWxTY3JvbGxiYXItPmVuYWJsZWQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbExhdGNoaW5n
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxMYXRj
aGluZ0NvbnRyb2xsZXIuY3BwCmluZGV4IDRlZDRkOTc1YTdlYTQ1MDA5N2ZjYmI0ZGU5YTJlMDMy
MWM2YTY3N2IuLmJhMDAxMWQzMWIzNzg1NTEyYjQ1NDI5MDI5OWE1ZWFjMDFmZWIwZjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbExhdGNoaW5nQ29udHJv
bGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsTGF0Y2hp
bmdDb250cm9sbGVyLmNwcApAQCAtMTA4LDcgKzEwOCw3IEBAIGJvb2wgU2Nyb2xsTGF0Y2hpbmdD
b250cm9sbGVyOjpsYXRjaGluZ0FsbG93c1Njcm9sbGluZ0luRnJhbWUoY29uc3QgRnJhbWUmIGZy
YW1lCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFNjcm9sbExhdGNoaW5nQ29udHJvbGxl
cjo6dXBkYXRlQW5kRmV0Y2hMYXRjaGluZ1N0YXRlRm9yRnJhbWUoRnJhbWUmIGZyYW1lLCBjb25z
dCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIFJlZlB0cjxFbGVtZW50PiYgbGF0Y2hl
ZEVsZW1lbnQsIFdlYWtQdHI8U2Nyb2xsYWJsZUFyZWE+JiBzY3JvbGxhYmxlQXJlYSwgYm9vbCYg
aXNPdmVyV2lkZ2V0KQordm9pZCBTY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXI6OnVwZGF0ZUFuZEZl
dGNoTGF0Y2hpbmdTdGF0ZUZvckZyYW1lKEZyYW1lJiBmcmFtZSwgY29uc3QgUGxhdGZvcm1XaGVl
bEV2ZW50JiB3aGVlbEV2ZW50LCBSZWZQdHI8RWxlbWVudD4mIGxhdGNoZWRFbGVtZW50LCBXZWFr
UHRyPFNjcm9sbGFibGVBcmVhPiYgc2Nyb2xsYWJsZUFyZWEsIFNjcm9sbENoYWluaW5nQmxvY2tl
ciYgc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLCBib29sJiBpc092ZXJXaWRnZXQpCiB7CiAgICAgaWYg
KHdoZWVsRXZlbnQuaXNHZXN0dXJlU3RhcnQoKSkgewogICAgICAgICAvLyBXZSBjYW4gaGF2ZSBl
eGlzdGluZyBzdGF0ZSBoZXJlIGJlY2F1c2Ugc3RhdGUgaXMgY2xlYXJlZCBvbiBhIHRpbWVyLgpA
QCAtMTE4LDYgKzExOCw3IEBAIHZvaWQgU2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyOjp1cGRhdGVB
bmRGZXRjaExhdGNoaW5nU3RhdGVGb3JGcmFtZShGcmFtZSYgZnJhbWUsCiAgICAgICAgICAgICBz
dGF0ZS53aGVlbEV2ZW50RWxlbWVudCA9IG1ha2VXZWFrUHRyKGxhdGNoZWRFbGVtZW50LmdldCgp
KTsKICAgICAgICAgICAgIGlmIChzaG91bGRMYXRjaFRvU2Nyb2xsYWJsZUFyZWEoZnJhbWUsIHNj
cm9sbGFibGVBcmVhLmdldCgpLCBtX2N1bXVsYXRpdmVFdmVudERlbHRhKSkKICAgICAgICAgICAg
ICAgICBzdGF0ZS5zY3JvbGxhYmxlQXJlYSA9IHNjcm9sbGFibGVBcmVhOworICAgICAgICAgICAg
c3RhdGUuc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyID0gc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyOwogICAg
ICAgICAgICAgc3RhdGUuaXNPdmVyV2lkZ2V0ID0gaXNPdmVyV2lkZ2V0OwogCiAgICAgICAgICAg
ICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xsTGF0Y2hpbmcsIHN0cmVhbSA8PCAiU2Nyb2xsTGF0Y2hp
bmdDb250cm9sbGVyOjp1cGRhdGVBbmRGZXRjaExhdGNoaW5nU3RhdGVGb3JGcmFtZSgpIC0gcHVz
aGluZyBzdGF0ZSBmb3IgRnJhbWUgIiA8PCAmZnJhbWUgPDwgIiBlbGVtZW50ICIgPDwgc3RhdGUu
d2hlZWxFdmVudEVsZW1lbnQuZ2V0KCkgPDwgIiBzY3JvbGxhYmxlQXJlYSAiIDw8IHN0YXRlLnNj
cm9sbGFibGVBcmVhKTsKQEAgLTEzMiw4ICsxMzMsMTAgQEAgdm9pZCBTY3JvbGxMYXRjaGluZ0Nv
bnRyb2xsZXI6OnVwZGF0ZUFuZEZldGNoTGF0Y2hpbmdTdGF0ZUZvckZyYW1lKEZyYW1lJiBmcmFt
ZSwKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAvLyBXZSBtYXkgbm90IGhhdmUgbGF0
Y2hlZCBhdCBnZXN0dXJlIHN0YXJ0IGJlY2F1c2Ugb2Ygc21hbGwgZGVsdGFzLiBSZS1ldmFsdWF0
ZSBsYXRjaGluZyBiYXNlZCBvbiBhY2N1bXVsYXRlZCBkZWx0YS4KLSAgICAgICAgaWYgKCFzdGF0
ZS0+c2Nyb2xsYWJsZUFyZWEgJiYgc2hvdWxkTGF0Y2hUb1Njcm9sbGFibGVBcmVhKGZyYW1lLCBz
Y3JvbGxhYmxlQXJlYS5nZXQoKSwgbV9jdW11bGF0aXZlRXZlbnREZWx0YSkpCisgICAgICAgIGlm
ICghc3RhdGUtPnNjcm9sbGFibGVBcmVhICYmIHNob3VsZExhdGNoVG9TY3JvbGxhYmxlQXJlYShm
cmFtZSwgc2Nyb2xsYWJsZUFyZWEuZ2V0KCksIG1fY3VtdWxhdGl2ZUV2ZW50RGVsdGEpKSB7CiAg
ICAgICAgICAgICBzdGF0ZS0+c2Nyb2xsYWJsZUFyZWEgPSBzY3JvbGxhYmxlQXJlYTsKKyAgICAg
ICAgICAgIHN0YXRlLT5zY3JvbGxDaGFpbmluZ0Jsb2NrZXIgPSBzY3JvbGxDaGFpbmluZ0Jsb2Nr
ZXI7CisgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoIXdoZWVsRXZlbnQudXNlTGF0Y2hlZEV2
ZW50RWxlbWVudCgpKQpAQCAtMTQ0LDEyICsxNDcsMzQgQEAgdm9pZCBTY3JvbGxMYXRjaGluZ0Nv
bnRyb2xsZXI6OnVwZGF0ZUFuZEZldGNoTGF0Y2hpbmdTdGF0ZUZvckZyYW1lKEZyYW1lJiBmcmFt
ZSwKICAgICAgICAgICAgIGxhdGNoZWRFbGVtZW50ID0gc3RhdGUud2hlZWxFdmVudEVsZW1lbnQu
Z2V0KCk7CiAgICAgICAgICAgICBzY3JvbGxhYmxlQXJlYSA9IHN0YXRlLnNjcm9sbGFibGVBcmVh
OwogICAgICAgICAgICAgaXNPdmVyV2lkZ2V0ID0gc3RhdGUuaXNPdmVyV2lkZ2V0OworICAgICAg
ICAgICAgc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyID0gc3RhdGUuc2Nyb2xsQ2hhaW5pbmdCbG9ja2Vy
OwogCiAgICAgICAgICAgICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xsTGF0Y2hpbmcsIHN0cmVhbSA8
PCAiU2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyOjp1cGRhdGVBbmRGZXRjaExhdGNoaW5nU3RhdGVG
b3JGcmFtZSgpIC0gdXNpbmcgc3RhdGUgZm9yIEZyYW1lICIgPDwgJmZyYW1lIDw8ICIgZWxlbWVu
dCAiIDw8IGxhdGNoZWRFbGVtZW50LmdldCgpIDw8ICIgc2Nyb2xsYWJsZUFyZWEgIiA8PCBzY3Jv
bGxhYmxlQXJlYSk7CiAgICAgICAgIH0KICAgICB9CiB9CiAKK1Njcm9sbENoYWluaW5nQmxvY2tl
ciBTY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXI6OmdldFNjcm9sbENoYWluaW5nQmxvY2tlcihjb25z
dCBGcmFtZSYgZnJhbWUpIGNvbnN0Cit7CisgICAgaWYgKCFtX2ZyYW1lU3RhdGVTdGFjay5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgYXV0byogZnJhbWVTdGF0ZSA9IHN0YXRlRm9yRnJhbWUoZnJhbWUp
OworICAgICAgICBpZiAoZnJhbWVTdGF0ZSkKKyAgICAgICAgICAgIHJldHVybiBmcmFtZVN0YXRl
LT5zY3JvbGxDaGFpbmluZ0Jsb2NrZXI7CisgICAgfQorCisgICAgcmV0dXJuIHsgZmFsc2UsIGZh
bHNlIH07Cit9CisKK3ZvaWQgU2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyOjp1cGRhdGVTY3JvbGxD
aGFpbmluZ0Jsb2NrZXIoY29uc3QgRnJhbWUmIGZyYW1lLCBjb25zdCBTY3JvbGxDaGFpbmluZ0Js
b2NrZXImIHNjcm9sbENoYWluaW5nQmxvY2tlckZyb21TdWJmcmFtZSkKK3sKKyAgICBpZiAobV9m
cmFtZVN0YXRlU3RhY2suaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKGF1dG8q
IGZyYW1lU3RhdGUgPSBzdGF0ZUZvckZyYW1lKGZyYW1lKSkgeworICAgICAgICBmcmFtZVN0YXRl
LT5zY3JvbGxDaGFpbmluZ0Jsb2NrZXIuYmxvY2tYIHw9IHNjcm9sbENoYWluaW5nQmxvY2tlckZy
b21TdWJmcmFtZS5ibG9ja1g7CisgICAgICAgIGZyYW1lU3RhdGUtPnNjcm9sbENoYWluaW5nQmxv
Y2tlci5ibG9ja1kgfD0gc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyRnJvbVN1YmZyYW1lLmJsb2NrWTsK
KyAgICB9Cit9CisKIHZvaWQgU2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyOjpyZW1vdmVMYXRjaGlu
Z1N0YXRlRm9yVGFyZ2V0KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgaWYgKG1fZnJh
bWVTdGF0ZVN0YWNrLmlzRW1wdHkoKSkKQEAgLTI1Miw2ICsyNzcsOCBAQCB2b2lkIFNjcm9sbExh
dGNoaW5nQ29udHJvbGxlcjo6ZHVtcChXVEY6OlRleHRTdHJlYW0mIHRzKSBjb25zdAogICAgICAg
ICBtdWx0aWxpbmVTdHJlYW0uZHVtcFByb3BlcnR5KCJmcmFtZSIsIFZhbHVlT3JOdWxsKHN0YXRl
LmZyYW1lKSk7CiAgICAgICAgIG11bHRpbGluZVN0cmVhbS5kdW1wUHJvcGVydHkoImVsZW1lbnQi
LCBWYWx1ZU9yTnVsbChzdGF0ZS53aGVlbEV2ZW50RWxlbWVudC5nZXQoKSkpOwogICAgICAgICBt
dWx0aWxpbmVTdHJlYW0uZHVtcFByb3BlcnR5KCJzY3JvbGxhYmxlIGFyZWEiLCBWYWx1ZU9yTnVs
bChzdGF0ZS5zY3JvbGxhYmxlQXJlYS5nZXQoKSkpOworICAgICAgICBtdWx0aWxpbmVTdHJlYW0u
ZHVtcFByb3BlcnR5KCJzdGF0ZS5zY3JvbGxDaGFpbmluZ0Jsb2NrZXIuYmxvY2tYIiwgc3RhdGUu
c2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLmJsb2NrWCk7CisgICAgICAgIG11bHRpbGluZVN0cmVhbS5k
dW1wUHJvcGVydHkoInN0YXRlLnNjcm9sbENoYWluaW5nQmxvY2tlci5ibG9ja1kiLCBzdGF0ZS5z
Y3JvbGxDaGFpbmluZ0Jsb2NrZXIuYmxvY2tZKTsKICAgICAgICAgbXVsdGlsaW5lU3RyZWFtLmR1
bXBQcm9wZXJ0eSgiaXMgb3ZlciB3aWRnZXQiLCBzdGF0ZS5pc092ZXJXaWRnZXQpOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsTGF0Y2hp
bmdDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxMYXRj
aGluZ0NvbnRyb2xsZXIuaAppbmRleCA1NjQ5NjE1OWM1ZTY4ZDJiY2NlZjhjMjY1ZWU2MWNjYjlk
ZmI0YjI4Li44ZmQ4ZTMwYzZhMTY1ZDk5OThkNDExZDI4YmJmZmQzMmVlZjIzNjE5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxMYXRjaGluZ0NvbnRyb2xs
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxMYXRjaGluZ0Nv
bnRyb2xsZXIuaApAQCAtNjEsNyArNjEsMTAgQEAgcHVibGljOgogICAgIC8vIFJldHVybnMgdHJ1
ZSBpZiBubyBmcmFtZSBpcyBsYXRjaGVkLCBvciBsYXRjaGluZyBpcyBpbiB0aGUgZ2l2ZW4gZnJh
bWUgKGluIHdoaWNoIGNhc2UgbGF0Y2hlZFNjcm9sbGVyIHdpbGwgYmUgbm9uLW51bGwpLgogICAg
IGJvb2wgbGF0Y2hpbmdBbGxvd3NTY3JvbGxpbmdJbkZyYW1lKGNvbnN0IEZyYW1lJiwgV2Vha1B0
cjxTY3JvbGxhYmxlQXJlYT4mIGxhdGNoZWRTY3JvbGxlcikgY29uc3Q7CiAKLSAgICB2b2lkIHVw
ZGF0ZUFuZEZldGNoTGF0Y2hpbmdTdGF0ZUZvckZyYW1lKEZyYW1lJiwgY29uc3QgUGxhdGZvcm1X
aGVlbEV2ZW50JiwgUmVmUHRyPEVsZW1lbnQ+JiBsYXRjaGVkRWxlbWVudCwgV2Vha1B0cjxTY3Jv
bGxhYmxlQXJlYT4mLCBib29sJiBpc092ZXJXaWRnZXQpOworICAgIHZvaWQgdXBkYXRlQW5kRmV0
Y2hMYXRjaGluZ1N0YXRlRm9yRnJhbWUoRnJhbWUmLCBjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQm
LCBSZWZQdHI8RWxlbWVudD4mIGxhdGNoZWRFbGVtZW50LCBXZWFrUHRyPFNjcm9sbGFibGVBcmVh
PiYsIFNjcm9sbENoYWluaW5nQmxvY2tlciYsIGJvb2wmIGlzT3ZlcldpZGdldCk7CisKKyAgICBT
Y3JvbGxDaGFpbmluZ0Jsb2NrZXIgZ2V0U2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKGNvbnN0IEZyYW1l
JikgY29uc3Q7CisgICAgdm9pZCB1cGRhdGVTY3JvbGxDaGFpbmluZ0Jsb2NrZXIoY29uc3QgRnJh
bWUmLCBjb25zdCBTY3JvbGxDaGFpbmluZ0Jsb2NrZXImIFNjcm9sbENoYWluaW5nQmxvY2tlckZy
b21TdWJmcmFtZSk7CiAKICAgICB2b2lkIHJlbW92ZUxhdGNoaW5nU3RhdGVGb3JUYXJnZXQoY29u
c3QgRWxlbWVudCYpOwogICAgIHZvaWQgcmVtb3ZlTGF0Y2hpbmdTdGF0ZUZvckZyYW1lKGNvbnN0
IEZyYW1lJik7CkBAIC03Myw2ICs3Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIFdlYWtQdHI8RWxl
bWVudD4gd2hlZWxFdmVudEVsZW1lbnQ7CiAgICAgICAgIFdlYWtQdHI8U2Nyb2xsYWJsZUFyZWE+
IHNjcm9sbGFibGVBcmVhOwogICAgICAgICBGcmFtZSogZnJhbWUgeyBudWxscHRyIH07CisgICAg
ICAgIFNjcm9sbENoYWluaW5nQmxvY2tlciBzY3JvbGxDaGFpbmluZ0Jsb2NrZXI7CiAgICAgICAg
IGJvb2wgaXNPdmVyV2lkZ2V0IHsgZmFsc2UgfTsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvclR5cGVzLmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvclR5cGVzLmgK
aW5kZXggYmQ0Nzg0YjkzODVhYzdlYTZkNTFlOWUyOTRhYmJkM2YyMjE5ZDNmZC4uNjlkMGY2MjQ0
ZGMwNGFjYWM5ODljMzBiNGE2MDcwZTNmODg0ODQyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3JUeXBlcy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yVHlwZXMuaApAQCAt
NjgsNiArNjgsOSBAQCBlbnVtIGNsYXNzIFNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb24gewog
fTsKIAogc3RydWN0IFNjcm9sbGFibGVBcmVhUGFyYW1ldGVycyB7CisgICAgT3ZlcnNjcm9sbEJl
aGF2aW9yIGhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IgeyBPdmVyc2Nyb2xsQmVoYXZpb3I6
OiBBdXRvIH07CisgICAgT3ZlcnNjcm9sbEJlaGF2aW9yIHZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2
aW9yIHsgT3ZlcnNjcm9sbEJlaGF2aW9yOjogQXV0byB9OworCiAgICAgU2Nyb2xsRWxhc3RpY2l0
eSBob3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eSB7IFNjcm9sbEVsYXN0aWNpdHlOb25lIH07CiAg
ICAgU2Nyb2xsRWxhc3RpY2l0eSB2ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkgeyBTY3JvbGxFbGFz
dGljaXR5Tm9uZSB9OwogCkBAIC04NCw3ICs4Nyw5IEBAIHN0cnVjdCBTY3JvbGxhYmxlQXJlYVBh
cmFtZXRlcnMgewogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNjcm9sbGFibGVBcmVhUGFy
YW1ldGVycyYgb3RoZXIpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gaG9yaXpvbnRhbFNj
cm9sbEVsYXN0aWNpdHkgPT0gb3RoZXIuaG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkKKyAgICAg
ICAgcmV0dXJuIGhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IgPT0gb3RoZXIuaG9yaXpvbnRh
bE92ZXJzY3JvbGxCZWhhdmlvcgorICAgICAgICAgICAgJiYgdmVydGljYWxPdmVyc2Nyb2xsQmVo
YXZpb3IgPT0gb3RoZXIudmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IKKyAgICAgICAgICAgICYm
IGhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5ID09IG90aGVyLmhvcml6b250YWxTY3JvbGxFbGFz
dGljaXR5CiAgICAgICAgICAgICAmJiB2ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkgPT0gb3RoZXIu
dmVydGljYWxTY3JvbGxFbGFzdGljaXR5CiAgICAgICAgICAgICAmJiBob3Jpem9udGFsU2Nyb2xs
YmFyTW9kZSA9PSBvdGhlci5ob3Jpem9udGFsU2Nyb2xsYmFyTW9kZQogICAgICAgICAgICAgJiYg
dmVydGljYWxTY3JvbGxiYXJNb2RlID09IG90aGVyLnZlcnRpY2FsU2Nyb2xsYmFyTW9kZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcAppbmRleCAx
Y2VmMzFiYjM2NjUxNmQzYjRhOGNlODFmYzE5ZGZhYjZlOTJhMGQ1Li42M2M0OGExZWYwY2UwMmQ1
MzlkMjM2Y2QyMzQ3YjNlYzRkNWVmY2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcApAQCAtMTc2LDE5ICsxNzYsNTUgQEAgV2hlZWxFdmVu
dEhhbmRsaW5nUmVzdWx0IFNjcm9sbGluZ1RyZWU6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxh
dGZvcm1XaGVlbEV2ZW4KIAogV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0IFNjcm9sbGluZ1RyZWU6
OmhhbmRsZVdoZWVsRXZlbnRXaXRoTm9kZShjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVs
RXZlbnQsIE9wdGlvblNldDxXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBzPiBwcm9jZXNzaW5nU3Rl
cHMsIFNjcm9sbGluZ1RyZWVOb2RlKiBub2RlLCBFdmVudFRhcmdldGluZyBldmVudFRhcmdldGlu
ZykKIHsKKyAgICBGbG9hdFNpemUgZmlsdGVyZWRQbGF0Zm9ybURlbHRhKHdoZWVsRXZlbnQuZGVs
dGFYKCksIHdoZWVsRXZlbnQuZGVsdGFZKCkpOworICAgIFBsYXRmb3JtV2hlZWxFdmVudCBhZGp1
c3RlZFdoZWVsRXZlbnQgPSBQbGF0Zm9ybVdoZWVsRXZlbnQod2hlZWxFdmVudCk7CisgICAgU2Ny
b2xsQ2hhaW5pbmdCbG9ja2VyIHNjcm9sbENoYWluaW5nQmxvY2tlciA9IHsgZmFsc2UsIGZhbHNl
IH07CisgICAgYXV0byBiaWFzZWREZWx0YSA9IFBsYXRmb3JtV2hlZWxFdmVudDo6d2hlZWxEZWx0
YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoZmlsdGVyZWRQbGF0Zm9ybURlbHRhKTsKICAgICB3aGls
ZSAobm9kZSkgewogICAgICAgICBpZiAoaXM8U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU+KCpu
b2RlKSkgewogICAgICAgICAgICAgYXV0byYgc2Nyb2xsaW5nTm9kZSA9IGRvd25jYXN0PFNjcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlPigqbm9kZSk7Ci0gICAgICAgICAgICBhdXRvIHJlc3VsdCA9
IHNjcm9sbGluZ05vZGUuaGFuZGxlV2hlZWxFdmVudCh3aGVlbEV2ZW50LCBldmVudFRhcmdldGlu
Zyk7CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IHNjcm9sbGluZ05vZGUuaGFuZGxlV2hlZWxF
dmVudChhZGp1c3RlZFdoZWVsRXZlbnQsIGV2ZW50VGFyZ2V0aW5nKTsKIAogICAgICAgICAgICAg
aWYgKHJlc3VsdC53YXNIYW5kbGVkKSB7Ci0gICAgICAgICAgICAgICAgbV9sYXRjaGluZ0NvbnRy
b2xsZXIubm9kZURpZEhhbmRsZUV2ZW50KHNjcm9sbGluZ05vZGUuc2Nyb2xsaW5nTm9kZUlEKCks
IHByb2Nlc3NpbmdTdGVwcywgd2hlZWxFdmVudCwgbV9hbGxvd0xhdGNoaW5nKTsKKyAgICAgICAg
ICAgICAgICAvLyBJZiB0aGUgc2Nyb2xsIGNoYWluaW5nIGlzIGJsb2NrZWQgaW4gYSBzaW5nbGUg
ZGlyZWN0aW9uLCBpdCBzaG91bGQgc3RvcCBsYXRjaGluZyB0byBhIG5vZGUsCisgICAgICAgICAg
ICAgICAgLy8gZm9yIHRoZSB3aGVlbCBldmVudCBtaWdodCBjaGFuZ2UgdGhlIGRpcmVjdGlvbiBh
bmQgb3ZlcnNjcm9sbC1iZWhhdmlvciBtaWdodCBub3QgYmUgYWJsZSBibG9jaworICAgICAgICAg
ICAgICAgIC8vIHRoZSBzY3JvbGwgY2hhaW5pbmcgaWYgaXQgbGF0Y2hlcyB0byB0aGUgYW5jZXN0
cnkgbm9kZSBvZiBvdmVyc2Nyb2xsLWJlaGF2aW9yIHRhcmdldC4KKyAgICAgICAgICAgICAgICBp
ZiAoKHNjcm9sbENoYWluaW5nQmxvY2tlci5ibG9ja1ggJiYgc2Nyb2xsQ2hhaW5pbmdCbG9ja2Vy
LmJsb2NrWSkgfHwgKCFzY3JvbGxDaGFpbmluZ0Jsb2NrZXIuYmxvY2tYICYmICFzY3JvbGxDaGFp
bmluZ0Jsb2NrZXIuYmxvY2tZKSkKKyAgICAgICAgICAgICAgICAgICAgbV9sYXRjaGluZ0NvbnRy
b2xsZXIubm9kZURpZEhhbmRsZUV2ZW50KHNjcm9sbGluZ05vZGUuc2Nyb2xsaW5nTm9kZUlEKCks
IHByb2Nlc3NpbmdTdGVwcywgd2hlZWxFdmVudCwgbV9hbGxvd0xhdGNoaW5nKTsKICAgICAgICAg
ICAgICAgICBtX2dlc3R1cmVTdGF0ZS5ub2RlRGlkSGFuZGxlRXZlbnQoc2Nyb2xsaW5nTm9kZS5z
Y3JvbGxpbmdOb2RlSUQoKSwgd2hlZWxFdmVudCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKHJlc3VsdC5uZWVkc01haW5U
aHJlYWRQcm9jZXNzaW5nKCkgfHwgZXZlbnRUYXJnZXRpbmcgIT0gRXZlbnRUYXJnZXRpbmc6OlBy
b3BhZ2F0ZSkKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworCisgICAgICAgICAgICBz
Y3JvbGxDaGFpbmluZ0Jsb2NrZXIuYmxvY2tYIHw9IHNjcm9sbGluZ05vZGUuaG9yaXpvbnRhbE92
ZXJzY3JvbGxCZWhhdmlvcigpICE9IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0bzsKKyAgICAgICAg
ICAgIHNjcm9sbENoYWluaW5nQmxvY2tlci5ibG9ja1kgfD0gc2Nyb2xsaW5nTm9kZS52ZXJ0aWNh
bE92ZXJzY3JvbGxCZWhhdmlvcigpICE9IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0bzsKKyAgICAg
ICAgICAgIGlmIChzY3JvbGxDaGFpbmluZ0Jsb2NrZXIuYmxvY2tYKSB7CisgICAgICAgICAgICAg
ICAgZmlsdGVyZWRQbGF0Zm9ybURlbHRhLnNldFdpZHRoKDApOworICAgICAgICAgICAgICAgIGlm
ICghYmlhc2VkRGVsdGEuaGVpZ2h0KCkpCisgICAgICAgICAgICAgICAgICAgIGZpbHRlcmVkUGxh
dGZvcm1EZWx0YS5zZXRIZWlnaHQoMCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAo
c2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLmJsb2NrWSkgeworICAgICAgICAgICAgICAgIGZpbHRlcmVk
UGxhdGZvcm1EZWx0YS5zZXRIZWlnaHQoMCk7CisgICAgICAgICAgICAgICAgaWYgKCFiaWFzZWRE
ZWx0YS53aWR0aCgpKQorICAgICAgICAgICAgICAgICAgICBmaWx0ZXJlZFBsYXRmb3JtRGVsdGEu
c2V0V2lkdGgoMCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBhZGp1c3RlZFdoZWVsRXZl
bnQgPSBhZGp1c3RlZFdoZWVsRXZlbnQuY29weVdpdGhEZWx0YXNBbmRWZWxvY2l0eShmaWx0ZXJl
ZFBsYXRmb3JtRGVsdGEud2lkdGgoKSwgZmlsdGVyZWRQbGF0Zm9ybURlbHRhLmhlaWdodCgpLCBh
ZGp1c3RlZFdoZWVsRXZlbnQuc2Nyb2xsaW5nVmVsb2NpdHkoKSk7CisKKyAgICAgICAgICAgIGlm
IChzY3JvbGxDaGFpbmluZ0Jsb2NrZXIuYmxvY2tYIHx8IHNjcm9sbENoYWluaW5nQmxvY2tlci5i
bG9ja1kpIHsKKyAgICAgICAgICAgICAgICBpZiAoc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLmJsb2Nr
WCAmJiAhYmlhc2VkRGVsdGEuaGVpZ2h0KCkgJiYgd2lsbFdoZWVsRXZlbnRTdGFydFN3aXBlR2Vz
dHVyZSh3aGVlbEV2ZW50KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFdoZWVsRXZlbnRI
YW5kbGluZ1Jlc3VsdDo6dW5oYW5kbGVkKCk7CisKKyAgICAgICAgICAgICAgICBpZiAoKHNjcm9s
bENoYWluaW5nQmxvY2tlci5ibG9ja1ggJiYgc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLmJsb2NrWSkK
KyAgICAgICAgICAgICAgICAgICAgfHwgKHNjcm9sbENoYWluaW5nQmxvY2tlci5ibG9ja1ggJiYg
IWJpYXNlZERlbHRhLmhlaWdodCgpKQorICAgICAgICAgICAgICAgICAgICB8fCAoc2Nyb2xsQ2hh
aW5pbmdCbG9ja2VyLmJsb2NrWSAmJiAhYmlhc2VkRGVsdGEud2lkdGgoKSkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKHNjcm9sbENoYWluaW5nQmxvY2tlci5ibG9ja1ggJiYgc2Nyb2xsQ2hh
aW5pbmdCbG9ja2VyLmJsb2NrWSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fbGF0Y2hpbmdD
b250cm9sbGVyLm5vZGVEaWRIYW5kbGVFdmVudChzY3JvbGxpbmdOb2RlLnNjcm9sbGluZ05vZGVJ
RCgpLCBwcm9jZXNzaW5nU3RlcHMsIHdoZWVsRXZlbnQsIG1fYWxsb3dMYXRjaGluZyk7CisgICAg
ICAgICAgICAgICAgICAgIG1fZ2VzdHVyZVN0YXRlLm5vZGVEaWRIYW5kbGVFdmVudChzY3JvbGxp
bmdOb2RlLnNjcm9sbGluZ05vZGVJRCgpLCB3aGVlbEV2ZW50KTsKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdDo6aGFuZGxlZCgpOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIGlmIChpczxTY3Jv
bGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxQcm94eU5vZGU+KCpub2RlKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGUuY3BwCmluZGV4IDI1MzlkM2QyZTE0YjNlMmMzMThiNDAzMGY1NzQ0OWIwMDk3NzYxNmQu
LjM0MTczMzQ1Mzg2YjNmZjUzZTg5NjcyNTMxMzI1MGZiNzEzZjY5ZjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZS5jcHAKQEAgLTEzNCw2ICsxMzQsMTYgQEAgYm9vbCBTY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZTo6aXNMYXRjaGVkTm9kZSgpIGNvbnN0CiAgICAgcmV0dXJuIHNjcm9sbGluZ1RyZWUo
KS5sYXRjaGVkTm9kZUlEKCkgPT0gc2Nyb2xsaW5nTm9kZUlEKCk7CiB9CiAKK092ZXJzY3JvbGxC
ZWhhdmlvciBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6aG9yaXpvbnRhbE92ZXJzY3JvbGxC
ZWhhdmlvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJz
Lmhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3I7Cit9CisKK092ZXJzY3JvbGxCZWhhdmlvciBT
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6dmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBj
b25zdAoreworICAgIHJldHVybiBtX3Njcm9sbGFibGVBcmVhUGFyYW1ldGVycy52ZXJ0aWNhbE92
ZXJzY3JvbGxCZWhhdmlvcjsKK30KKwogYm9vbCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6
Y2FuSGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQs
IEV2ZW50VGFyZ2V0aW5nIGV2ZW50VGFyZ2V0aW5nKSBjb25zdAogewogICAgIGlmICghY2FuSGF2
ZVNjcm9sbGJhcnMoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oCmluZGV4IDU5Y2EyMzk2MzAyZWUxOTg2
ZTQwOThhYzAwYmFhYTI2M2VkYzY0NGEuLjU0NTVhNzZkMmU0M2ViOTY1ODFhNDVmZTliZjc1ZDA5
MDhjNWI2NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaApAQCAtMTQ1LDYgKzE0NSw4IEBAIHByb3Rl
Y3RlZDoKICAgICBjb25zdCBGbG9hdFNpemUmIHRvdGFsQ29udGVudHNTaXplRm9yUnViYmVyQmFu
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fdG90YWxDb250ZW50c1NpemVGb3JSdWJiZXJCYW5kOyB9CiAg
ICAgdm9pZCBzZXRUb3RhbENvbnRlbnRzU2l6ZUZvclJ1YmJlckJhbmQoY29uc3QgRmxvYXRTaXpl
JiB0b3RhbENvbnRlbnRzU2l6ZUZvclJ1YmJlckJhbmQpIHsgbV90b3RhbENvbnRlbnRzU2l6ZUZv
clJ1YmJlckJhbmQgPSB0b3RhbENvbnRlbnRzU2l6ZUZvclJ1YmJlckJhbmQ7IH0KIAorICAgIE92
ZXJzY3JvbGxCZWhhdmlvciBob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29uc3Q7Cisg
ICAgT3ZlcnNjcm9sbEJlaGF2aW9yIHZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29uc3Q7
CiAgICAgU2Nyb2xsRWxhc3RpY2l0eSBob3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eSgpIGNvbnN0
IHsgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzLmhvcml6b250YWxTY3JvbGxFbGFz
dGljaXR5OyB9CiAgICAgU2Nyb2xsRWxhc3RpY2l0eSB2ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHko
KSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGFibGVBcmVhUGFyYW1ldGVycy52ZXJ0aWNhbFNjcm9s
bEVsYXN0aWNpdHk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVn
YXRlTWFjLmgKaW5kZXggN2EwZTczYTFlYjZhNGE5ZWU3NmIyYmNjZDNhZGVhNWE3YjFkMmZjZS4u
ZWY5MzZjYjU3OTY4M2I5MGY3ZTUwOGE5YjAzMmM2ZWE1YjFkZjNhNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
RGVsZWdhdGVNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5oCkBAIC0xMDEsNiArMTAxLDkgQEAg
cHJpdmF0ZToKICAgICBGbG9hdFNpemUgdmlld3BvcnRTaXplKCkgY29uc3Qgb3ZlcnJpZGU7CiAj
ZW5kaWYKIAorICAgIGJvb2wgc2hvdWxkU3RvcEhvcml6b250YWxTdHJlY2goKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBib29sIHNob3VsZFN0b3BWZXJ0aWNhbFN0cmVjaCgpIGNvbnN0IG92ZXJyaWRl
OworCiAgICAgdm9pZCByZWxlYXNlUmVmZXJlbmNlc1RvU2Nyb2xsZXJJbXBzT25UaGVNYWluVGhy
ZWFkKCk7CiAKICAgICBTY3JvbGxDb250cm9sbGVyIG1fc2Nyb2xsQ29udHJvbGxlcjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZURlbGVnYXRlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
bWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMubW0KaW5kZXggOGZkYzNl
NWU5M2MwNTA0N2QwYTI1NmQ2MWZmMjAzMjg4YjYxZTA4My4uNzIyNzQxZTY4MjM3OWFiZjBiNmI5
MDhjZTkxZWJmNjZhMTFlZjJlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlRGVsZWdhdGVNYWMubW0KQEAgLTI0MSw2ICsyNDEsOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2Ny
b2xsQ29udHJvbGxlclRpbWVyPiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFj
OjpjcgogCiBib29sIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OmFsbG93
c0hvcml6b250YWxTdHJldGNoaW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVu
dCkgY29uc3QKIHsKKyAgICBpZiAoc2hvdWxkU3RvcEhvcml6b250YWxTdHJlY2goKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCiAgICAgc3dpdGNoIChob3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0
eSgpKSB7CiAgICAgY2FzZSBTY3JvbGxFbGFzdGljaXR5QXV0b21hdGljOiB7CiAgICAgICAgIGJv
b2wgc2Nyb2xsYmFyc0FsbG93U3RyZXRjaGluZyA9IGhhc0VuYWJsZWRIb3Jpem9udGFsU2Nyb2xs
YmFyKCkgfHwgIWhhc0VuYWJsZWRWZXJ0aWNhbFNjcm9sbGJhcigpOwpAQCAtMjYzLDYgKzI2Niw5
IEBAIGJvb2wgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6YWxsb3dzSG9y
aXpvbnRhbFN0cmV0Y2hpbmcoY29uc3QgUGxhCiAKIGJvb2wgU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZU1hYzo6YWxsb3dzVmVydGljYWxTdHJldGNoaW5nKGNvbnN0IFBsYXRmb3Jt
V2hlZWxFdmVudCYgd2hlZWxFdmVudCkgY29uc3QKIHsKKyAgICBpZiAoc2hvdWxkU3RvcFZlcnRp
Y2FsU3RyZWNoKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIHN3aXRjaCAodmVydGlj
YWxTY3JvbGxFbGFzdGljaXR5KCkpIHsKICAgICBjYXNlIFNjcm9sbEVsYXN0aWNpdHlBdXRvbWF0
aWM6IHsKICAgICAgICAgYm9vbCBzY3JvbGxiYXJzQWxsb3dTdHJldGNoaW5nID0gaGFzRW5hYmxl
ZFZlcnRpY2FsU2Nyb2xsYmFyKCkgfHwgIWhhc0VuYWJsZWRIb3Jpem9udGFsU2Nyb2xsYmFyKCk7
CkBAIC00MzIsNiArNDM4LDE2IEBAIEZsb2F0U2l6ZSBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZURlbGVnYXRlTWFjOjp2aWV3cG9ydFNpemUoKSBjb25zdAogfQogI2VuZGlmCiAKK2Jvb2wgU2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6c2hvdWxkU3RvcEhvcml6b250YWxT
dHJlY2goKSBjb25zdAoreworICAgIHJldHVybiBzY3JvbGxpbmdOb2RlKCkuaG9yaXpvbnRhbE92
ZXJzY3JvbGxCZWhhdmlvcigpID09IE92ZXJzY3JvbGxCZWhhdmlvcjo6Tm9uZTsKK30KKworYm9v
bCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjpzaG91bGRTdG9wVmVydGlj
YWxTdHJlY2goKSBjb25zdAoreworICAgIHJldHVybiBzY3JvbGxpbmdOb2RlKCkudmVydGljYWxP
dmVyc2Nyb2xsQmVoYXZpb3IoKSA9PSBPdmVyc2Nyb2xsQmVoYXZpb3I6Ok5vbmU7Cit9CisKIHZv
aWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6ZGVmZXJXaGVlbEV2ZW50
VGVzdENvbXBsZXRpb25Gb3JSZWFzb24oV2hlZWxFdmVudFRlc3RNb25pdG9yOjpTY3JvbGxhYmxl
QXJlYUlkZW50aWZpZXIgaWRlbnRpZmllciwgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpEZWZlclJl
YXNvbiByZWFzb24pIGNvbnN0CiB7CiAgICAgaWYgKCFzY3JvbGxpbmdUcmVlKCkuaXNNb25pdG9y
aW5nV2hlZWxFdmVudHMoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bs
YXRmb3JtV2hlZWxFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1XaGVl
bEV2ZW50LmgKaW5kZXggZDcxNjkzNDZhMjQwMjNjMmE0Nzg3YWUzNDU0MGEzNzYwN2MwYTJkNS4u
NjQxNzk3YTZmNDE4NzUzMzhjYTcxZWE3MzkxNjBkMTBiMDZmODhlNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNw
cmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgorI2luY2x1ZGUgIkZsb2F0U2l6
ZS5oIgogI2luY2x1ZGUgIkludFBvaW50LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1FdmVudC5oIgog
I2luY2x1ZGUgPHd0Zi9XaW5kb3dzRXh0cmFzLmg+CkBAIC0xNzQsNiArMTc1LDggQEAgcHVibGlj
OgogICAgIFBsYXRmb3JtV2hlZWxFdmVudChIV05ELCBXUEFSQU0sIExQQVJBTSwgYm9vbCBpc01v
dXNlSFdoZWVsKTsKICNlbmRpZgogCisgICAgc3RhdGljIEZsb2F0U2l6ZSB3aGVlbERlbHRhQmlh
c2luZ1Rvd2FyZHNWZXJ0aWNhbChjb25zdCBGbG9hdFNpemUmKTsKKwogcHJvdGVjdGVkOgogICAg
IFBsYXRmb3JtV2hlZWxFdmVudEdyYW51bGFyaXR5IG1fZ3JhbnVsYXJpdHkgeyBTY3JvbGxCeVBp
eGVsV2hlZWxFdmVudCB9OwogICAgIGJvb2wgbV9kaXJlY3Rpb25JbnZlcnRlZEZyb21EZXZpY2Ug
eyBmYWxzZSB9OwpAQCAtMjY0LDYgKzI2NywxOSBAQCBpbmxpbmUgRmxvYXRQb2ludCBQbGF0Zm9y
bVdoZWVsRXZlbnQ6OnN3aXBlVmVsb2NpdHkoKSBjb25zdAogCiAjZW5kaWYgLy8gRU5BQkxFKEtJ
TkVUSUNfU0NST0xMSU5HKQogCitpbmxpbmUgRmxvYXRTaXplIFBsYXRmb3JtV2hlZWxFdmVudDo6
d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoY29uc3QgRmxvYXRTaXplJiBkZWx0YSkK
K3sKKyAgICBhdXRvIGRlbHRhWCA9IGRlbHRhLndpZHRoKCk7CisgICAgYXV0byBkZWx0YVkgPSBk
ZWx0YS5oZWlnaHQoKTsKKworICAgIGlmIChmYWJzZihkZWx0YVkpID49IGZhYnNmKGRlbHRhWCkp
CisgICAgICAgIGRlbHRhWCA9IDA7CisgICAgZWxzZQorICAgICAgICBkZWx0YVkgPSAwOworCisg
ICAgcmV0dXJuIHsgZGVsdGFYLCBkZWx0YVkgfTsKK30KKwogV0VCQ09SRV9FWFBPUlQgV1RGOjpU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IFBsYXRmb3JtV2hl
ZWxFdmVudCYpOwogV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdU
Rjo6VGV4dFN0cmVhbSYsIFdoZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHMpOwogV0VCQ09SRV9FWFBP
UlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIEV2ZW50SGFu
ZGxpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVHlwZXMu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFR5cGVzLmgKaW5kZXggYTA5M2M5YjNl
NjBhZGI5Zjk5MjYyNTc4Y2FmM2RmYTQwZGY2MDQxYS4uMWNkZjllNmRiNDRmNjIzM2M4NmNmYjdh
MzQ2MDJjYzBjNTc3MTg2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsVHlwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxUeXBlcy5oCkBA
IC0yNDksNiArMjQ5LDExIEBAIGVudW0gY2xhc3MgU2Nyb2xsUG9zaXRpb25pbmdCZWhhdmlvciA6
IHVpbnQ4X3QgewogICAgIFN0YXRpb25hcnkKIH07CiAKK3N0cnVjdCBTY3JvbGxDaGFpbmluZ0Js
b2NrZXIgeworICAgIGJvb2wgYmxvY2tYIHsgZmFsc2UgfTsKKyAgICBib29sIGJsb2NrWSB7IGZh
bHNlIH07Cit9OworCiB1c2luZyBTY3JvbGxiYXJDb250cm9sU3RhdGUgPSB1bnNpZ25lZDsKIHVz
aW5nIFNjcm9sbGJhckNvbnRyb2xQYXJ0TWFzayA9IHVuc2lnbmVkOwogdXNpbmcgU2Nyb2xsaW5n
Tm9kZUlEID0gdWludDY0X3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxhYmxlQXJlYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEu
aAppbmRleCBmNjRlNjgwYmFhMDA4MTU5OTM0YzY5YmNmYjNiZmMxNGMxZmMzYWNmLi45NTNhM2U2
MGUwODc4NzJmZjA3ZGNmNDhmMWI3MmM0OWU2ZTMwNDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbGFibGVBcmVhLmgKQEAgLTEyNCw2ICsxMjQsOSBAQCBwdWJsaWM6CiAgICAgYm9v
bCBjb25zdHJhaW5zU2Nyb2xsaW5nVG9Db250ZW50RWRnZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29u
c3RyYWluc1Njcm9sbGluZ1RvQ29udGVudEVkZ2U7IH0KICAgICB2b2lkIHNldENvbnN0cmFpbnNT
Y3JvbGxpbmdUb0NvbnRlbnRFZGdlKGJvb2wgY29uc3RyYWluc1Njcm9sbGluZ1RvQ29udGVudEVk
Z2UpIHsgbV9jb25zdHJhaW5zU2Nyb2xsaW5nVG9Db250ZW50RWRnZSA9IGNvbnN0cmFpbnNTY3Jv
bGxpbmdUb0NvbnRlbnRFZGdlOyB9CiAKKyAgICB2aXJ0dWFsIE92ZXJzY3JvbGxCZWhhdmlvciBo
b3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29uc3QgeyByZXR1cm4gT3ZlcnNjcm9sbEJl
aGF2aW9yOjpBdXRvOyB9CisgICAgdmlydHVhbCBPdmVyc2Nyb2xsQmVoYXZpb3IgdmVydGljYWxP
dmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdCB7IHJldHVybiBPdmVyc2Nyb2xsQmVoYXZpb3I6OkF1
dG87IH0KKwogICAgIHZvaWQgc2V0VmVydGljYWxTY3JvbGxFbGFzdGljaXR5KFNjcm9sbEVsYXN0
aWNpdHkgc2Nyb2xsRWxhc3RpY2l0eSkgeyBtX3ZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eSA9IHNj
cm9sbEVsYXN0aWNpdHk7IH0KICAgICBTY3JvbGxFbGFzdGljaXR5IHZlcnRpY2FsU2Nyb2xsRWxh
c3RpY2l0eSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFNjcm9sbEVsYXN0aWNpdHk+KG1f
dmVydGljYWxTY3JvbGxFbGFzdGljaXR5KTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9sbGVyLmgKaW5kZXggZmIyYWE4NjM3Y2Y4YzczMGVlYzFl
NDMzZmQ2YWIwMTA4ZmQ5YjExMi4uMDdiNGJjZmMwZWRmOTAzNzYxOTc3ZGRkYTcxMmUyOTljMDUz
NmNmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29u
dHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRy
b2xsZXIuaApAQCAtMTIxLDYgKzEyMSwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBMYXlvdXRT
aXplIHNjcm9sbEV4dGVudCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIEZsb2F0U2l6ZSB2aWV3
cG9ydFNpemUoKSBjb25zdCA9IDA7CiAjZW5kaWYKKworI2lmIFBMQVRGT1JNKE1BQykKKyAgICB2
aXJ0dWFsIGJvb2wgc2hvdWxkU3RvcEhvcml6b250YWxTdHJlY2goKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTdG9wVmVydGljYWxTdHJlY2goKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQorI2VuZGlmCiB9OwogCiBlbnVtIGNsYXNzIFdoZWVsRXZlbnRT
dGF0dXMgewpAQCAtMTc1LDggKzE4MCw2IEBAIHB1YmxpYzoKICNlbmRpZgogI2VuZGlmCiAKLSAg
ICBzdGF0aWMgRmxvYXRTaXplIHdoZWVsRGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRpY2FsKGNvbnN0
IFBsYXRmb3JtV2hlZWxFdmVudCYpOwotCiAgICAgZW51bSBjbGFzcyBXaGVlbEF4aXNCaWFzIHsg
Tm9uZSwgVmVydGljYWwgfTsKICAgICBzdGF0aWMgT3B0aW9uYWw8U2Nyb2xsRGlyZWN0aW9uPiBk
aXJlY3Rpb25Gcm9tRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgT3B0aW9uYWw8U2Ny
b2xsRXZlbnRBeGlzPiwgV2hlZWxBeGlzQmlhcyA9IFdoZWVsQXhpc0JpYXM6Ok5vbmUpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9sbGVy
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5tbQpp
bmRleCAyNzAwYTJmOWE5NDM3M2ZjODc5YjdiYTNhMTI3NDA5NzhkYjY5ZTUyLi5lMTY1MzBhZmJi
NTkwMmYyOGE1NmNmYzRmMzA3NDQ1MzIwYzQ4MWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIubW0KQEAgLTI1Myw3ICsyNTMsOCBAQCBi
b29sIFNjcm9sbENvbnRyb2xsZXI6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVl
bEV2ZW50JiB3aGVlbEV2ZW50KQogICAgICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAg
ICAgICAgICAgICAgICAgIG1fb3ZlcmZsb3dTY3JvbGxEZWx0YS5zZXRXaWR0aChtX292ZXJmbG93
U2Nyb2xsRGVsdGEud2lkdGgoKSArIGRlbHRhWCk7CiAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIHNob3VsZFN0cmV0Y2ggPSB0cnVlOworICAgICAgICAgICAgICAgIGlmICgoIWRl
bHRhWCB8fCAhbV9jbGllbnQuc2hvdWxkU3RvcEhvcml6b250YWxTdHJlY2goKSkgJiYgKCFkZWx0
YVkgfHwgIW1fY2xpZW50LnNob3VsZFN0b3BWZXJ0aWNhbFN0cmVjaCgpKSkKKyAgICAgICAgICAg
ICAgICAgICAgc2hvdWxkU3RyZXRjaCA9IHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
IApAQCAtMzMwLDE5ICszMzEsNiBAQCBib29sIFNjcm9sbENvbnRyb2xsZXI6OmhhbmRsZVdoZWVs
RXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50KQogfQogI2VuZGlmIC8v
IFBMQVRGT1JNKE1BQykKIAotRmxvYXRTaXplIFNjcm9sbENvbnRyb2xsZXI6OndoZWVsRGVsdGFC
aWFzaW5nVG93YXJkc1ZlcnRpY2FsKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVu
dCkKLXsKLSAgICBhdXRvIGRlbHRhWCA9IHdoZWVsRXZlbnQuZGVsdGFYKCk7Ci0gICAgYXV0byBk
ZWx0YVkgPSB3aGVlbEV2ZW50LmRlbHRhWSgpOwotCi0gICAgaWYgKGZhYnNmKGRlbHRhWSkgPj0g
ZmFic2YoZGVsdGFYKSkKLSAgICAgICAgZGVsdGFYID0gMDsKLSAgICBlbHNlCi0gICAgICAgIGRl
bHRhWSA9IDA7Ci0KLSAgICByZXR1cm4geyBkZWx0YVgsIGRlbHRhWSB9OwotfQotCiBPcHRpb25h
bDxTY3JvbGxEaXJlY3Rpb24+IFNjcm9sbENvbnRyb2xsZXI6OmRpcmVjdGlvbkZyb21FdmVudChj
b25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIE9wdGlvbmFsPFNjcm9sbEV2ZW50
QXhpcz4gYXhpcywgV2hlZWxBeGlzQmlhcyBiaWFzKQogewogICAgIC8vIEZJWE1FOiBJdCdzIGlt
cG9zc2libGUgdG8gaW5mZXIgZGlyZWN0aW9uIGZyb20gYSBzaW5nbGUgZXZlbnQsIHNpbmNlIHRo
ZSBzdGFydCBvZiBhIGdlc3R1cmUgaXMgZWl0aGVyIHplcm8gb3IKQEAgLTM1MCw3ICszMzgsNyBA
QCBPcHRpb25hbDxTY3JvbGxEaXJlY3Rpb24+IFNjcm9sbENvbnRyb2xsZXI6OmRpcmVjdGlvbkZy
b21FdmVudChjb25zdCBQbGF0Zm9ybVdoZQogCiAgICAgYXV0byB3aGVlbERlbHRhID0gRmxvYXRT
aXplIHsgd2hlZWxFdmVudC5kZWx0YVgoKSwgd2hlZWxFdmVudC5kZWx0YVkoKSB9OwogICAgIGlm
IChiaWFzID09IFdoZWVsQXhpc0JpYXM6OlZlcnRpY2FsKQotICAgICAgICB3aGVlbERlbHRhID0g
d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwod2hlZWxFdmVudCk7CisgICAgICAgIHdo
ZWVsRGVsdGEgPSBQbGF0Zm9ybVdoZWVsRXZlbnQ6OndoZWVsRGVsdGFCaWFzaW5nVG93YXJkc1Zl
cnRpY2FsKHdoZWVsRXZlbnQuZGVsdGEoKSk7CiAKICAgICBpZiAoYXhpcykgewogICAgICAgICBz
d2l0Y2ggKGF4aXMudmFsdWUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
U2Nyb2xsQW5pbWF0b3JNYWMuaAppbmRleCA2NGYwOGFjNTQ3YjUwMjkyOGFjYWJjYWIzNjM4ZTVj
NzUwMTQ4ODI1Li40YjJhYzNhNTcyNDVhYzQwZGExODhlMTMzZWIwZTk4ZDlhZDRhNzhmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMuaApAQCAt
MTU4LDYgKzE1OCw5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0FscmVhZHlQaW5uZWRJbkRpcmVj
dGlvbk9mR2VzdHVyZShjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBTY3JvbGxFdmVudEF4aXMp
IGNvbnN0OwogI2VuZGlmCiAKKyAgICBib29sIHNob3VsZFN0b3BIb3Jpem9udGFsU3RyZWNoKCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBzaG91bGRTdG9wVmVydGljYWxTdHJlY2goKSBjb25z
dCBvdmVycmlkZTsKKwogICAgIGJvb2wgbV9oYXZlU2Nyb2xsZWRTaW5jZVBhZ2VMb2FkOwogICAg
IGJvb2wgbV9uZWVkc1Njcm9sbGVyU3R5bGVVcGRhdGU7CiAgICAgSW50UmVjdCBtX3Zpc2libGVT
Y3JvbGxlclRodW1iUmVjdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9TY3JvbGxBbmltYXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3Jv
bGxBbmltYXRvck1hYy5tbQppbmRleCBjZDhjMzZkMjdlMmIxNjVjY2YwMDFhZWQ4OTNhY2ZhY2U1
ZWQwZDVmLi4yNDkyYzQ1NWM0ZmYxNGNjMTE5OGFiMGYzNzkwNzlhMDdiN2U4MjJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tCkBAIC0x
NTcxLDYgKzE1NzEsMTYgQEAgdm9pZCBTY3JvbGxBbmltYXRvck1hYzo6c2V0VmlzaWJsZVNjcm9s
bGVyVGh1bWJSZWN0KGNvbnN0IEludFJlY3QmIHNjcm9sbGVyVGh1bWIKICAgICBtX3Zpc2libGVT
Y3JvbGxlclRodW1iUmVjdCA9IHJlY3RJblZpZXdDb29yZGluYXRlczsKIH0KIAorYm9vbCBTY3Jv
bGxBbmltYXRvck1hYzo6c2hvdWxkU3RvcEhvcml6b250YWxTdHJlY2goKSBjb25zdAoreworICAg
IHJldHVybiBtX3Njcm9sbGFibGVBcmVhLmhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSA9
PSBPdmVyc2Nyb2xsQmVoYXZpb3I6Ok5vbmU7Cit9CisKK2Jvb2wgU2Nyb2xsQW5pbWF0b3JNYWM6
OnNob3VsZFN0b3BWZXJ0aWNhbFN0cmVjaCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2Nyb2xs
YWJsZUFyZWEudmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSA9PSBPdmVyc2Nyb2xsQmVoYXZp
b3I6Ok5vbmU7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJM
RShTTU9PVEhfU0NST0xMSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5j
cHAKaW5kZXggMDhlY2U3NjJkOWJkZGM0ZTgxNjNkMzY0NzFkMzhkNzk0YTBmNWMyMy4uZDZkZmQ4
ZGIzZTJkMWVhNGNkMDFkZjU3OWFjODBkNGEzNjZiZGIzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC0zNDc2LDYgKzM0NzYsMjIgQEAgdm9pZCBSZW5kZXJM
YXllcjo6aW52YWxpZGF0ZVNjcm9sbENvcm5lclJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKICAg
ICAgICAgbV9yZXNpemVyLT5yZXBhaW50UmVjdGFuZ2xlKHJlY3QpOwogfQogCitPdmVyc2Nyb2xs
QmVoYXZpb3IgUmVuZGVyTGF5ZXI6Omhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25z
dAoreworICAgIGF1dG8qIGJveCA9IHJlbmRlckJveCgpOworICAgIGlmIChib3ggJiYgIWJveC0+
c2Nyb2xsc092ZXJmbG93WCgpKQorICAgICAgICByZXR1cm4gU2Nyb2xsYWJsZUFyZWE6Omhvcml6
b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKTsKKyAgICByZXR1cm4gcmVuZGVyZXIoKS5zdHlsZSgp
Lm92ZXJzY3JvbGxCZWhhdmlvclgoKTsKK30KKworT3ZlcnNjcm9sbEJlaGF2aW9yIFJlbmRlckxh
eWVyOjp2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpICBjb25zdAoreworICAgIGF1dG8qIGJv
eCA9IHJlbmRlckJveCgpOworICAgIGlmIChib3ggJiYgIWJveC0+c2Nyb2xsc092ZXJmbG93WSgp
KQorICAgICAgICByZXR1cm4gU2Nyb2xsYWJsZUFyZWE6OnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2
aW9yKCk7CisgICAgcmV0dXJuIHJlbmRlcmVyKCkuc3R5bGUoKS5vdmVyc2Nyb2xsQmVoYXZpb3JZ
KCk7Cit9CisKIHN0YXRpYyBib29sIHNjcm9sbGJhckhpZGRlbkJ5U3R5bGUoU2Nyb2xsYmFyKiBz
Y3JvbGxiYXIpCiB7CiAgICAgcmV0dXJuIHNjcm9sbGJhciAmJiBzY3JvbGxiYXItPmlzSGlkZGVu
QnlTdHlsZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAppbmRleCA2NjI2
ODJmZDE1NTU2ZjRkNGQ5OGI4YTgxNTIwNmJlMDRiMDllM2ZlLi5mMGRjMWU5ZjE2MmQxMjdiMjhj
YmM5YWU1NjdjNzc3NjhhNTMwZDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuaApAQCAtNDgzLDYgKzQ4Myw5IEBAIHB1YmxpYzoKICAgICBib29sIGhhc0hvcml6b250YWxT
Y3JvbGxiYXIoKSBjb25zdCB7IHJldHVybiBob3Jpem9udGFsU2Nyb2xsYmFyKCk7IH0KICAgICBi
b29sIGhhc1ZlcnRpY2FsU2Nyb2xsYmFyKCkgY29uc3QgeyByZXR1cm4gdmVydGljYWxTY3JvbGxi
YXIoKTsgfQogCisgICAgT3ZlcnNjcm9sbEJlaGF2aW9yIGhvcml6b250YWxPdmVyc2Nyb2xsQmVo
YXZpb3IoKSBjb25zdCBmaW5hbDsKKyAgICBPdmVyc2Nyb2xsQmVoYXZpb3IgdmVydGljYWxPdmVy
c2Nyb2xsQmVoYXZpb3IoKSBjb25zdCBmaW5hbDsKKwogICAgIGJvb2wgaG9yaXpvbnRhbFNjcm9s
bGJhckhpZGRlbkJ5U3R5bGUoKSBjb25zdCBmaW5hbDsKICAgICBib29sIHZlcnRpY2FsU2Nyb2xs
YmFySGlkZGVuQnlTdHlsZSgpIGNvbnN0IGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCAwMzI1MjExYTlhZDAxN2JkZDJhZGM1
ZTYxN2I4M2Q3Zjk3Zjk1ZTM3Li4yNGRlMzlmYzAzNmU5ZWMzM2MyMDA5NjNiNTBkMDY3ZTBkZGEw
NzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5j
cHAKQEAgLTIwMTMsNiArMjAxMyw5IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxVc2VyU3R5bGVTaGVl
dD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBVc2VyU3R5bGVTaGVldCYgdXNlCiAKIHZvaWQg
QXJndW1lbnRDb2RlcjxTY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnM+OjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlciwgY29uc3QgU2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewor
ICAgIGVuY29kZXIgPDwgcGFyYW1ldGVycy5ob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yOwor
ICAgIGVuY29kZXIgPDwgcGFyYW1ldGVycy52ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcjsKKwog
ICAgIGVuY29kZXIgPDwgcGFyYW1ldGVycy5ob3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eTsKICAg
ICBlbmNvZGVyIDw8IHBhcmFtZXRlcnMudmVydGljYWxTY3JvbGxFbGFzdGljaXR5OwogCkBAIC0y
MDMwLDYgKzIwMzMsMTEgQEAgdm9pZCBBcmd1bWVudENvZGVyPFNjcm9sbGFibGVBcmVhUGFyYW1l
dGVycz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTY3IKIAogYm9vbCBBcmd1bWVu
dENvZGVyPFNjcm9sbGFibGVBcmVhUGFyYW1ldGVycz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
LCBTY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMmIHBhcmFtcykKIHsKKyAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHBhcmFtcy5ob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1zLnZlcnRpY2FsT3ZlcnNj
cm9sbEJlaGF2aW9yKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShwYXJhbXMuaG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbXMudmVydGljYWxTY3JvbGxF
bGFzdGljaXR5KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmgKaW5kZXggZmU3ODU4ZmY5Y2E2YTRmY2M1OWYxMjQzYjM4MTM0NGVjNWRmZmNhYy4uMGM2Njk0
ZDQ0NzZkYzVlOGYwZmRjMzdkMGRkNDRiMTJiOWJkYTA3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRl
IDxXZWJDb3JlL1JlYWx0aW1lTWVkaWFTb3VyY2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRl
cmluZ01vZGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvU2Nyb2xsVHlwZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Nlcmlh
bGl6ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdv
cmtlclR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TdG9yZWRDcmVkZW50aWFsc1BvbGljeS5o
PgpAQCAtODk2LDYgKzg5NywxNSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvPiB7CiAKIG5hbWVzcGFjZSBXVEYg
ewogCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6Ok92ZXJzY3JvbGxCZWhh
dmlvcj4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgV2ViQ29yZTo6T3Zl
cnNjcm9sbEJlaGF2aW9yLAorICAgIFdlYkNvcmU6Ok92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0bywK
KyAgICBXZWJDb3JlOjpPdmVyc2Nyb2xsQmVoYXZpb3I6OkNvbnRhaW4sCisgICAgV2ViQ29yZTo6
T3ZlcnNjcm9sbEJlaGF2aW9yOjpOb25lCisgICAgPjsKK307CisKIHRlbXBsYXRlPD4gc3RydWN0
IEVudW1UcmFpdHM8V2ViQ29yZTo6Q29sb3JTcGFjZT4gewogICAgIHVzaW5nIHZhbHVlcyA9IEVu
dW1WYWx1ZXM8CiAgICAgV2ViQ29yZTo6Q29sb3JTcGFjZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVy
VHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5tbQppbmRleCBh
YjM3NDcyMGEzMjg0N2Y3ZTVjYzU3YmJjNTc5NzRkMWUzMDQ2NTBmLi5mODk4YjY4MzE0NDA1ODIx
NDc4NzBiNzdhN2Q4OTM2OTQ5ZjkyZmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdh
dGVJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lv
cy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLm1tCkBAIC0yMjksMTIgKzIy
OSwzMSBAQCB2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M6OmNvbW1p
dFN0YXRlQWZ0ZXJDaGlsZHJlbihjb25zdCBTY3JvbAogICAgIFNldEZvclNjb3BlPGJvb2w+IHVw
ZGF0aW5nQ2hhbmdlKG1fdXBkYXRpbmdGcm9tU3RhdGVOb2RlLCB0cnVlKTsKIAogICAgIGlmIChz
Y3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6
UHJvcGVydHk6OlNjcm9sbENvbnRhaW5lckxheWVyKQorICAgICAgICB8fCBzY3JvbGxpbmdTdGF0
ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Ny
b2xsYWJsZUFyZWFQYXJhbXMpCiAgICAgICAgIHx8IHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFu
Z2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6VG90YWxDb250ZW50c1Np
emUpCiAgICAgICAgIHx8IHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Ny
b2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6UmVhY2hhYmxlQ29udGVudHNTaXplKQogICAgICAg
ICB8fCBzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRl
Tm9kZTo6UHJvcGVydHk6OlNjcm9sbFBvc2l0aW9uKQogICAgICAgICB8fCBzY3JvbGxpbmdTdGF0
ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlNj
cm9sbE9yaWdpbikpIHsKICAgICAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAgICAg
ICAgIFVJU2Nyb2xsVmlldyAqc2Nyb2xsVmlldyA9IHRoaXMtPnNjcm9sbFZpZXcoKTsKKworICAg
ICAgICAvLyBGSVhNRShyZGFyOi8vcHJvYmxlbS8zNDMxNTk5Nyk6IFVJU2Nyb2xsVmlldyBzaG91
bGQgaGF2ZSBzb21lIGtpbmQgb2Ygc3VwcG9ydCBmb3Igb3ZlcnNjcm9sbC1iZWhhdmlvciB0byBl
bmFibGUvZGlzYWJsZToKKyAgICAgICAgLy8gLSBub24tbG9jYWwgYm91bmRhcnkgZGVmYXVsdCBh
Y3Rpb25zIChlLmcuIHNjcm9sbCBjaGFpbmluZykuCisgICAgICAgIC8vIC0gbG9jYWwgYm91bmRh
cnkgZGVmYXVsdCBhY3Rpb25zIChlLmcuIGJvdW5jaW5nKS4KKyNpZiBVU0UoQVBQTEVfSU5URVJO
QUxfU0RLKQorICAgICAgICAvLyBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9w
ZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbGFibGVBcmVhUGFyYW1zKSkg
eworICAgICAgICAvLyAgICAgc2Nyb2xsVmlldy5vdmVyc2Nyb2xsQmVoYXZpb3JIb3Jpem9udGFs
ID0gY29udmVydE92ZXJzY3JvbGxCZWhhdmlvckZyb21XZWJLaXRUb1VJS2l0KHNjcm9sbGluZ1N0
YXRlTm9kZS5zY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMoKS5ob3Jpem9udGFsT3ZlcnNjcm9sbEJl
aGF2aW9yKTsKKyAgICAgICAgLy8gICAgIHNjcm9sbFZpZXcub3ZlcnNjcm9sbEJlaGF2aW9yVmVy
dGljYWwgPSBjb252ZXJ0T3ZlcnNjcm9sbEJlaGF2aW9yRnJvbVdlYktpdFRvVUlLaXQoc2Nyb2xs
aW5nU3RhdGVOb2RlLnNjcm9sbGFibGVBcmVhUGFyYW1ldGVycygpLnZlcnRpY2FsT3ZlcnNjcm9s
bEJlaGF2aW9yKTsKKyAgICAgICAgLy8gfQorI2VuZGlmCisgICAgICAgIC8vIEZvciBub3csIHdl
IG9ubHkgZGlzYWJsZSBib3VuY2luZyB3aGVuIGJvdGggb3ZlcmZsb3cteCBhbmQgb3ZlcmZsb3ct
eSBhcmUgbm9uZS4KKyAgICAgICAgLy8gVUlTY3JvbGxWaWV3OjphbHdheXNCb3VuY2UqIGZ1bmN0
aW9ucyBjYW5ub3QgaGVscCBoZXJlLgorICAgICAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhh
c0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbGFibGVB
cmVhUGFyYW1zKSkgeworICAgICAgICAgICAgc2Nyb2xsVmlldy5ib3VuY2VzID0gc2Nyb2xsaW5n
U3RhdGVOb2RlLnNjcm9sbGFibGVBcmVhUGFyYW1ldGVycygpLmhvcml6b250YWxPdmVyc2Nyb2xs
QmVoYXZpb3IgPT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpOb25lCisgICAgICAgICAgICAmJiBzY3Jv
bGxpbmdTdGF0ZU5vZGUuc2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzKCkudmVydGljYWxPdmVyc2Ny
b2xsQmVoYXZpb3IgPT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpOb25lCisgICAgICAgICAgICA/IE5P
IDogWUVTOworICAgICAgICB9CisKICAgICAgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXND
aGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6U2Nyb2xsQ29udGFp
bmVyTGF5ZXIpKSB7CiAgICAgICAgICAgICBpZiAoIW1fc2Nyb2xsVmlld0RlbGVnYXRlKQogICAg
ICAgICAgICAgICAgIG1fc2Nyb2xsVmlld0RlbGVnYXRlID0gYWRvcHROUyhbW1dLU2Nyb2xsaW5n
Tm9kZVNjcm9sbFZpZXdEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhTY3JvbGxpbmdUcmVlTm9kZURl
bGVnYXRlOnRoaXNdKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViSFRNTFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhU
TUxWaWV3Lm1tCmluZGV4IDQ5NjU1N2UwNzk5YzYwYTM0MjA3NWQ0OTU2MzYzOTU2NjVhYWQ2ODEu
LjliNzY4YWY3NzhjMjYxM2QxMGIyNGYyMGYzMTg5ZTg3ZDQxN2Y2MjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQpAQCAtNDA5MSw2ICs0MDkx
LDggQEAgc3RhdGljIEJPT0wgY3VycmVudFNjcm9sbElzQmxpdChOU1ZpZXcgKmNsaXBWaWV3KQog
ICAgIGF1dG8qIGZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKTsKICAgICBpZiAoIWZyYW1lIHx8
ICFmcmFtZS0+ZXZlbnRIYW5kbGVyKCkud2hlZWxFdmVudChldmVudCkpIHsKICNpZiBQTEFURk9S
TShNQUMpCisgICAgICAgIC8vIEZJWE1FOiBOZWVkIHRvIGZpbmQgYSB3YXkgdG8gYmxvY2sgdGhl
IGNyb3NzLWZyYW1lIHNjcm9sbCBjaGFpbmluZyBpbiBXSzEuCisgICAgICAgIC8vIFdlIGNhbiBu
b3QganVzdCBza2lwIHRoZSBzY3JvbGwgaGVyZSwgaXQgbm90IG9ubHkgYmxvY2tzIHNjcm9sbCBj
aGFpbmluZyBidXQgYWxzbyBibG9ja3MgdGhlIHNjcm9sbCBvbiBjdXJyZW50IHZpZXcuCiAgICAg
ICAgIFtzdXBlciBzY3JvbGxXaGVlbDpldmVudF07CiAjZW5kaWYKICAgICB9CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYTM1
OGQ4ZmY4ZmJjNzg3MDI0NDA5ZTI4M2FlZDk4ZjI3OTVmNWYxZC4uNzUyMGQ3ZGM1NTNkYTEwNmQ3
M2ZiZDllMTFhN2FlZjcxNWNhODRiYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIwLTEyLTI0
ICBDYXRoaWUgQ2hlbiAgPGNhdGhpZWNoZW5AaWdhbGlhLmNvbT4KKworICAgICAgICBJbXBsZW1l
bnQgQ1NTIG92ZXJzY3JvbGwtYmVoYXZpb3Igb24gTWFjCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjAxMzkKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCYXNlZCBvbiBGcsOpZMOpcmljIFdhbmcncyBwYXRj
aC4KKworICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVu
dC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL292ZXJzY3Jv
bGwtYmVoYXZpb3ItZWxlbWVudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGlu
Zy9vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGZhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxh
YmxlLWVsZW1lbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGlu
Zy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxl
LWlmcmFtZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL292
ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sOiBBZGRlZC4KKwogMjAy
MC0xMi0xMCAgQWRpdHlhIEtlZXJ0aGkgIDxha2VlcnRoaUBhcHBsZS5jb20+CiAKICAgICAgICAg
W2lPU11bRkNSXSBBZGQgbmV3IGxvb2sgZm9yIGlucHV0IHR5cGU9cmFuZ2UKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2
aW9yLWVsZW1lbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI3MTUwZmY2MGI1ZGJkZDBiNGE3
YWM2ZjgzZmI1NmY1N2NkMmNkODIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMjAgQEAKKworUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBv
dmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIGF1dG8uCitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Ny
b2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIGF1dG8uCitQQVNTIEVsZW1l
bnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRh
aW4gYXV0by4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3Jv
bGwtYmVoYXZpb3I6IGNvbnRhaW4gYXV0by4KK1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9s
bCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBhdXRvLgorUEFTUyBFbGVtZW50
IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBhdXRv
LgorUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJl
aGF2aW9yOiBhdXRvIGNvbnRhaW4uCitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qg
d2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIGNvbnRhaW4uCitQQVNTIEVsZW1lbnQgaG9y
aXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gY29u
dGFpbi4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwt
YmVoYXZpb3I6IGNvbnRhaW4gY29udGFpbi4KK1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9s
bCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBjb250YWluLgorUEFTUyBFbGVt
ZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBj
b250YWluLgorUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Ny
b2xsLWJlaGF2aW9yOiBhdXRvIG5vbmUuCitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRl
c3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIG5vbmUuCitQQVNTIEVsZW1lbnQgaG9y
aXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gbm9u
ZS4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVo
YXZpb3I6IGNvbnRhaW4gbm9uZS4KK1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0
IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBub25lLgorUEFTUyBFbGVtZW50IHZlcnRp
Y2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBub25lLgorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9y
LWVsZW1lbnQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVo
YXZpb3ItZWxlbWVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZhMzAxNGRhOTEzNzM2ZDFhMTczY2M5ZGY2
OTZlZmMwNTM4NDVjY2YKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9s
bGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQuaHRtbApAQCAtMCwwICsxLDEwOCBAQAor
PCFkb2N0eXBlIGh0bWw+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5l
c3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVz
c3JlcG9ydC5qcyI+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
XV07Cithc3luYyBmdW5jdGlvbiBwZXJmb3JtV2hlZWxTY3JvbGwoc2Nyb2xsZXIsIGRpcmVjdGlv
bikgeworICAgIHZhciBkZWx0YVggPSAwOworICAgIHZhciBkZWx0YVkgPSAwOworICAgIGlmIChk
aXJlY3Rpb24gPT0gImRvd24iKQorICAgICAgICBkZWx0YVkgPSAtNTsKKyAgICBlbHNlIGlmIChk
aXJlY3Rpb24gPT0gInVwIikKKyAgICAgICAgZGVsdGFZID0gNTsKKyAgICBlbHNlIGlmIChkaXJl
Y3Rpb24gPT0gInJpZ2h0IikKKyAgICAgICAgZGVsdGFYID0gLTU7CisgICAgZWxzZSBpZiAoZGly
ZWN0aW9uID09ICJsZWZ0IikKKyAgICAgICAgZGVsdGFYID0gNTsKKworICAgIHZhciB4ID0gc2Ny
b2xsZXIuY2xpZW50V2lkdGggLyAyOworICAgIHZhciB5ID0gc2Nyb2xsZXIuY2xpZW50SGVpZ2h0
IC8gMjsKKyAgICBldmVudFNlbmRlci5kcmFnTW9kZSA9IGZhbHNlOworICAgIGV2ZW50U2VuZGVy
Lm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkp
OworICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkZWx0YVgsIGRlbHRhWSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZGVsdGFYICogMiwgZGVsdGFZICog
MiwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkZWx0YVggKiAzLCBkZWx0YVkgKiAzLCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGRlbHRhWCwgZGVsdGFZLCAnbm9uZScs
ICdiZWdpbicpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkZWx0YVggKiAyLCBkZWx0YVkgKiAyLCAnbm9uZScsICdjb250aW51ZScpOwor
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
ZWx0YVggKiAzLCBkZWx0YVkgKiAzLCAnbm9uZScsICdjb250aW51ZScpOworICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScs
ICdlbmQnKTsKKyAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgICAgIGV2
ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcygoKSA9PiB7CisgICAgICAgICAg
ICByZXNvbHZlKCk7CisgICAgICAgIH0pOworICAgIH0pOworfQorCitmdW5jdGlvbiByZXNldFRl
c3QoKSB7CisgICAgLy8gVHJ5IHZhcmlvdXMgbWV0aG9kcyB0byBlbnN1cmUgdGhlIGVsZW1lbnQg
cG9zaXRpb24gaXMgcmVzZXQgaW1tZWRpYXRlbHkuCisgICAgc2Nyb2xsZXIuc2Nyb2xsTGVmdCA9
IDMwMDsKKyAgICBzY3JvbGxlci5zY3JvbGxUb3AgPSAzMDA7CisgICAgc2Nyb2xsZXIuc2Nyb2xs
VG8oMzAwLCAzMDApOworCisgICAgcm9vdC5zY3JvbGxMZWZ0ID0gMDsKKyAgICByb290LnNjcm9s
bFRvcCA9IDA7CisgICAgcm9vdC5zY3JvbGxUbygwLCAwKTsKK30KKworZnVuY3Rpb24gc3RhcnRU
ZXN0KCkgeworICAgIG92ZXJzY3JvbGxEYXRhcy5mb3JFYWNoKChbb3ZlcnNjcm9sbFgsIG92ZXJz
Y3JvbGxZLCBwcm9wYWdhdGVYLCBwcm9wYWdhdGVZXSkgPT4geworICAgICAgICBwcm9taXNlX3Rl
c3QoKCkgPT4geworICAgICAgICAgICAgcmVzZXRUZXN0KCk7CisgICAgICAgICAgICBzY3JvbGxl
ci5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JYID0gb3ZlcnNjcm9sbFg7CisgICAgICAgICAgICBz
Y3JvbGxlci5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JZID0gb3ZlcnNjcm9sbFk7CisgICAgICAg
ICAgICByZXR1cm4gcGVyZm9ybVdoZWVsU2Nyb2xsKHNjcm9sbGVyLCAicmlnaHQiKS50aGVuKCgp
ID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsTGVmdCA+IDAs
IHByb3BhZ2F0ZVgsICdDb250aW51ZSB1cCB0aGUgaG9yaXpvbnRhbCBzY3JvbGwgY2hhaW5pbmcn
KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9LCAnRWxlbWVudCBob3Jpem9udGFsIHNjcm9s
bCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogJyArIG92ZXJzY3JvbGxYICsgJyAnICsg
b3ZlcnNjcm9sbFkgKyAnLicpOworCisgICAgICAgIHByb21pc2VfdGVzdCgoKSA9PiB7CisgICAg
ICAgICAgICByZXNldFRlc3QoKTsKKyAgICAgICAgICAgIHNjcm9sbGVyLnN0eWxlLm92ZXJzY3Jv
bGxCZWhhdmlvclggPSBvdmVyc2Nyb2xsWDsKKyAgICAgICAgICAgIHNjcm9sbGVyLnN0eWxlLm92
ZXJzY3JvbGxCZWhhdmlvclkgPSBvdmVyc2Nyb2xsWTsKKyAgICAgICAgICAgIHJldHVybiBwZXJm
b3JtV2hlZWxTY3JvbGwoc2Nyb2xsZXIsICJkb3duIikudGhlbigoKSA9PiB7CisgICAgICAgICAg
ICAgICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbFRvcCA+IDAsIHByb3BhZ2F0ZVksICdDb250
aW51ZSB1cCB0aGUgdmVydGljYWwgc2Nyb2xsIGNoYWluaW5nJyk7CisgICAgICAgICAgICB9KTsK
KyAgICAgICAgfSwgJ0VsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xs
LWJlaGF2aW9yOiAnICsgb3ZlcnNjcm9sbFggKyAnICcgKyBvdmVyc2Nyb2xsWSArICcuJyk7Cisg
ICAgfSk7Cit9CisKK2FkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBzdGFydFRlc3QpOworPC9zY3Jp
cHQ+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkwMGEwYjdkOTA1Yjg3YzFkYjc2MjY5NGZkMDA2MzhmMTk3
Njk1MzcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9vdmVy
c2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMSBAQAorCisK
K1BBU1MgSWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2
aW9yOiBhdXRvIGF1dG8uCitQQVNTIElmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92
ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gYXV0by4KK1BBU1MgSWZyYW1lIGhvcml6b250YWwgc2Ny
b2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGF1dG8uCitQQVNTIElm
cmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRh
aW4gYXV0by4KK1BBU1MgSWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Ny
b2xsLWJlaGF2aW9yOiBub25lIGF1dG8uCitQQVNTIElmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVz
dCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgYXV0by4KK1BBU1MgSWZyYW1lIGhvcml6
b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIGNvbnRhaW4u
CitQQVNTIElmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZp
b3I6IGF1dG8gY29udGFpbi4KK1BBU1MgSWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0
aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGNvbnRhaW4uCitQQVNTIElmcmFtZSB2ZXJ0
aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gY29udGFp
bi4KK1BBU1MgSWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJl
aGF2aW9yOiBub25lIGNvbnRhaW4uCitQQVNTIElmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3
aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgY29udGFpbi4KK1BBU1MgSWZyYW1lIGhvcml6
b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIG5vbmUuCitQ
QVNTIElmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6
IGF1dG8gbm9uZS4KK1BBU1MgSWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVy
c2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIG5vbmUuCitQQVNTIElmcmFtZSB2ZXJ0aWNhbCBzY3Jv
bGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gbm9uZS4KK1BBU1MgSWZy
YW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25l
IG5vbmUuCitQQVNTIElmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwt
YmVoYXZpb3I6IG5vbmUgbm9uZS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3Jv
bGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
c2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDdk
NjkzNzYxM2I4MDMyN2RlNjZmN2IxOGUzNmJkMDg2NTM4MTRkMgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0
bWwKQEAgLTAsMCArMSwxMTIgQEAKKzwhZG9jdHlwZSBodG1sPgorCis8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJo
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
bHNlLCBmYWxzZV1dOworICAgIGFzeW5jIGZ1bmN0aW9uIHBlcmZvcm1XaGVlbFNjcm9sbChzY3Jv
bGxlciwgZGlyZWN0aW9uKSB7CisgICAgICAgIHZhciBkZWx0YVggPSAwOworICAgICAgICB2YXIg
ZGVsdGFZID0gMDsKKyAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSAiZG93biIpCisgICAgICAgICAg
ICBkZWx0YVkgPSAtNTsKKyAgICAgICAgZWxzZSBpZiAoZGlyZWN0aW9uID09ICJ1cCIpCisgICAg
ICAgICAgICBkZWx0YVkgPSA1OworICAgICAgICBlbHNlIGlmIChkaXJlY3Rpb24gPT0gInJpZ2h0
IikKKyAgICAgICAgICAgIGRlbHRhWCA9IC01OworICAgICAgICBlbHNlIGlmIChkaXJlY3Rpb24g
PT0gImxlZnQiKQorICAgICAgICAgICAgZGVsdGFYID0gNTsKKworICAgICAgICB2YXIgeCA9IHNj
cm9sbGVyLmNsaWVudFdpZHRoIC8gMjsKKyAgICAgICAgdmFyIHkgPSBzY3JvbGxlci5jbGllbnRI
ZWlnaHQgLyAyOworICAgICAgICBldmVudFNlbmRlci5kcmFnTW9kZSA9IGZhbHNlOworICAgICAg
ICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VNb3ZlVG8oeCwgeSk7CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkZWx0YVgsIGRlbHRhWSwgJ2JlZ2FuJywgJ25vbmUnKTsK
KyAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGRlbHRhWCAqIDIsIGRlbHRhWSAqIDIsICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGRlbHRh
WCAqIDMsIGRlbHRhWSAqIDMsICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcs
ICdub25lJyk7CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkZWx0YVgsIGRlbHRhWSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGRlbHRh
WCAqIDIsIGRlbHRhWSAqIDIsICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkZWx0YVggKiAzLCBk
ZWx0YVkgKiAzLCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7
CisgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcygoKSA9PiB7CisgICAgICAgICAg
ICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0KKwor
ICAgIGZ1bmN0aW9uIHJlc2V0VGVzdCgpIHsKKyAgICAgICAgLy8gVHJ5IHZhcmlvdXMgbWV0aG9k
cyB0byBlbnN1cmUgdGhlIGVsZW1lbnQgcG9zaXRpb24gaXMgcmVzZXQgaW1tZWRpYXRlbHkuCisg
ICAgICAgIHNjcm9sbGVyLmNvbnRlbnRXaW5kb3cuc2Nyb2xsWCA9IDMwMDsKKyAgICAgICAgc2Ny
b2xsZXIuY29udGVudFdpbmRvdy5zY3JvbGxZID0gMzAwOworICAgICAgICBzY3JvbGxlci5jb250
ZW50V2luZG93LnNjcm9sbFRvKDMwMCwgMzAwKTsKKworICAgICAgICByb290LnNjcm9sbExlZnQg
PSAwOworICAgICAgICByb290LnNjcm9sbFRvcCA9IDA7CisgICAgICAgIHJvb3Quc2Nyb2xsVG8o
MCwgMCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gb3ZlcnNjcm9sbEJlaGF2aW9yVGVzdCgpIHsK
KyAgICAgICAgb3ZlcnNjcm9sbERhdGFzLmZvckVhY2goKFtvdmVyc2Nyb2xsWCwgb3ZlcnNjcm9s
bFksIHByb3BhZ2F0ZVgsIHByb3BhZ2F0ZVldKSA9PiB7CisgICAgICAgICAgICBwcm9taXNlX3Rl
c3QoKCkgPT4geworICAgICAgICAgICAgICAgIHJlc2V0VGVzdCgpOworICAgICAgICAgICAgICAg
IHZhciB0YXJnZXQgPSBzY3JvbGxlci5jb250ZW50V2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJodG1sIilbMF07CisgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLm92ZXJz
Y3JvbGxCZWhhdmlvclggPSBvdmVyc2Nyb2xsWDsKKyAgICAgICAgICAgICAgICB0YXJnZXQuc3R5
bGUub3ZlcnNjcm9sbEJlaGF2aW9yWSA9IG92ZXJzY3JvbGxZOworCisgICAgICAgICAgICAgICAg
cmV0dXJuIHBlcmZvcm1XaGVlbFNjcm9sbChzY3JvbGxlciwgInJpZ2h0IikudGhlbigoKSA9PiB7
CisgICAgICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxMZWZ0ID4gMCwg
cHJvcGFnYXRlWCwgJ0NvbnRpbnVlIHVwIHRoZSBob3Jpem9udGFsIHNjcm9sbCBjaGFpbmluZycp
OworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSwgJ0lmcmFtZSBob3Jpem9udGFs
IHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogJyArIG92ZXJzY3JvbGxYICsg
JyAnICsgb3ZlcnNjcm9sbFkgKyAnLicpOworCisgICAgICAgICAgICBwcm9taXNlX3Rlc3QoKCkg
PT4geworICAgICAgICAgICAgICAgIHJlc2V0VGVzdCgpOworICAgICAgICAgICAgICAgIHZhciB0
YXJnZXQgPSBzY3JvbGxlci5jb250ZW50V2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJodG1sIilbMF07CisgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLm92ZXJzY3JvbGxC
ZWhhdmlvclggPSBvdmVyc2Nyb2xsWDsKKyAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUub3Zl
cnNjcm9sbEJlaGF2aW9yWSA9IG92ZXJzY3JvbGxZOworICAgICAgICAgICAgICAgIHJldHVybiBw
ZXJmb3JtV2hlZWxTY3JvbGwoc2Nyb2xsZXIsICJkb3duIikudGhlbigoKSA9PiB7CisgICAgICAg
ICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxUb3AgPiAwLCBwcm9wYWdhdGVZ
LCAnQ29udGludWUgdXAgdGhlIHZlcnRpY2FsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAgICAg
ICAgICAgIH0pOworICAgICAgICAgICAgfSwgJ0lmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3
aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6ICcgKyBvdmVyc2Nyb2xsWCArICcgJyArIG92ZXJzY3Jv
bGxZICsgJy4nKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgc2Nyb2xsZXIuYWRkRXZlbnRM
aXN0ZW5lcigibG9hZCIsIG92ZXJzY3JvbGxCZWhhdmlvclRlc3QpOworPC9zY3JpcHQ+ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3Jv
bGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Ny
b2xsYWJsZS1lbGVtZW50LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMzk1YjY0ODhkMDg3MGI5
NTYxYzAyODY3OWQ3ZTE1YTQ3ZmNlNmU5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACisKK1BBU1MgVW5zY3JvbGxhYmxlIGVsZW1lbnQg
aG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuCitQ
QVNTIFVuc2Nyb2xsYWJsZSBlbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNj
cm9sbC1iZWhhdmlvcjogbm9uZS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3Jv
bGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUt
ZWxlbWVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY3YWNiOGY4ZjkwMWNjOTQ5YjFmZmRkODdkYWU4YTFm
YjllZWI5NGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9v
dmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWwKQEAgLTAsMCArMSw5
MiBAQAorPCFkb2N0eXBlIGh0bWw+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVz
dGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0
aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBz
Oi8vZHJhZnRzLmNzc3dnLm9yZy9jc3Mtb3ZlcnNjcm9sbC1iZWhhdmlvciI+Cis8c3R5bGU+Cisg
ICAgLnNjcm9sbGluZyB7CisgICAgICAgIG92ZXJmbG93OiBzY3JvbGw7CisgICAgfQorICAgIC5z
Y3JvbGxDb250ZW50IHsKKyAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICBoZWlnaHQ6IDMw
MHB4OworICAgIH0KKyAgICAjcm9vdCB7CisgICAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgICAg
aGVpZ2h0OiAyMDBweDsKKyAgICB9CisgICAgI3Njcm9sbGVyIHsKKyAgICAgICAgd2lkdGg6IDEw
MHB4OworICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgICBvdmVyc2Nyb2xsLWJlaGF2aW9y
OiBub25lOworICAgICAgICBvdmVyZmxvdzogdmlzaWJsZTsKKyAgICAgICAgYmFja2dyb3VuZDog
bGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmVkLCBibHVlKTsKKyAgICB9Cis8L3N0eWxlPgorPGRp
diBpZD0icm9vdCIgY2xhc3M9InNjcm9sbGluZyI+CisgICAgPGRpdiBpZD0ic2Nyb2xsZXIiPgor
ICAgICAgICA8ZGl2IGNsYXNzPSJzY3JvbGxDb250ZW50Ij48L2Rpdj4KKyAgICA8L2Rpdj4KKyAg
ICA8ZGl2IGNsYXNzPSJzY3JvbGxDb250ZW50Ij48L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0Pgor
Y29uc3Qgcm9vdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyb290Jyk7Citjb25zdCBzY3Jv
bGxlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY3JvbGxlcicpOworYXN5bmMgZnVuY3Rp
b24gcGVyZm9ybVdoZWVsU2Nyb2xsKHNjcm9sbGVyLCBkaXJlY3Rpb24pIHsKKyAgICB2YXIgZGVs
dGFYID0gMDsKKyAgICB2YXIgZGVsdGFZID0gMDsKKyAgICBpZiAoZGlyZWN0aW9uID09ICJkb3du
IikKKyAgICAgICAgZGVsdGFZID0gLTU7CisgICAgZWxzZSBpZiAoZGlyZWN0aW9uID09ICJ1cCIp
CisgICAgICAgIGRlbHRhWSA9IDU7CisgICAgZWxzZSBpZiAoZGlyZWN0aW9uID09ICJyaWdodCIp
CisgICAgICAgIGRlbHRhWCA9IC01OworICAgIGVsc2UgaWYgKGRpcmVjdGlvbiA9PSAibGVmdCIp
CisgICAgICAgIGRlbHRhWCA9IDU7CisKKyAgICB2YXIgeCA9IHNjcm9sbGVyLmNsaWVudFdpZHRo
IC8gMjsKKyAgICB2YXIgeSA9IHNjcm9sbGVyLmNsaWVudEhlaWdodCAvIDI7CisgICAgZXZlbnRT
ZW5kZXIuZHJhZ01vZGUgPSBmYWxzZTsKKyAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVu
dHMoKTsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZGVsdGFYLCBkZWx0YVks
ICdiZWdhbicsICdub25lJyk7CisgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGRlbHRhWCAqIDIsIGRlbHRhWSAqIDIsICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZGVsdGFYICogMywgZGVsdGFZICogMywgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAn
ZW5kZWQnLCAnbm9uZScpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkZWx0YVgsIGRlbHRhWSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZGVsdGFY
ICogMiwgZGVsdGFZICogMiwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZGVsdGFYICogMywgZGVsdGFZ
ICogMywgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgcmV0
dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4geworICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0
ZXJTY3JvbGxpbmdDb21wbGV0ZXMoKCkgPT4geworICAgICAgICAgICAgcmVzb2x2ZSgpOworICAg
ICAgICB9KTsKKyAgICB9KTsKK30KKworZnVuY3Rpb24gcmVzZXRUZXN0KCkgeworICAgIHJvb3Qu
c2Nyb2xsTGVmdCA9IDA7CisgICAgcm9vdC5zY3JvbGxUb3AgPSAwOworICAgIHJvb3Quc2Nyb2xs
VG8oMCwgMCk7Cit9CisKK2Z1bmN0aW9uIHN0YXJ0VGVzdCgpIHsKKyAgICAgICAgcHJvbWlzZV90
ZXN0KCgpID0+IHsKKyAgICAgICAgICAgIHJlc2V0VGVzdCgpOworICAgICAgICAgICAgcmV0dXJu
IHBlcmZvcm1XaGVlbFNjcm9sbChzY3JvbGxlciwgInJpZ2h0IikudGhlbigoKSA9PiB7CisgICAg
ICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbExlZnQgPiAwLCB0cnVlLCAnQ29u
dGludWUgdXAgdGhlIGhvcml6b250YWwgc2Nyb2xsIGNoYWluaW5nJyk7CisgICAgICAgICAgICB9
KTsKKyAgICAgICAgfSwgJ1Vuc2Nyb2xsYWJsZSBlbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRl
c3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLicpOworCisgICAgICAgIHByb21pc2Vf
dGVzdCgoKSA9PiB7CisgICAgICAgICAgICByZXNldFRlc3QoKTsKKworICAgICAgICAgICAgcmV0
dXJuIHBlcmZvcm1XaGVlbFNjcm9sbChzY3JvbGxlciwgImRvd24iKS50aGVuKCgpID0+IHsKKyAg
ICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsVG9wID4gMCwgdHJ1ZSwgJ0Nv
bnRpbnVlIHVwIHRoZSB2ZXJ0aWNhbCBzY3JvbGwgY2hhaW5pbmcnKTsKKyAgICAgICAgICAgIH0p
OworICAgICAgICB9LCAnVW5zY3JvbGxhYmxlIGVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qg
d2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLicpOworfQorCithZGRFdmVudExpc3RlbmVy
KCJsb2FkIiwgc3RhcnRUZXN0KTsKKzwvc2NyaXB0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVo
YXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0
L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjdmYTU5Y2NiYTc5YWVmZjMzZGE3MGU5M2Q0ODhhMDdlZWM5YzU2
OTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9vdmVyc2Ny
b2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
NSBAQAorCisKK1BBU1MgVW5zY3JvbGxhYmxlIGlmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0
IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4KK1BBU1MgVW5zY3JvbGxhYmxlIGlmcmFt
ZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZp
b3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcv
b3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NTg2OWNkZWMwMTU3YzE4OTgxMWQ2ZDc3Njk4ZDMwZjZhMTc3YmE1OQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3Jv
bGxhYmxlLWlmcmFtZS5odG1sCkBAIC0wLDAgKzEsOTIgQEAKKzwhZG9jdHlwZSBodG1sPgorCis8
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0
PgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLW92
ZXJzY3JvbGwtYmVoYXZpb3IiPgorPHN0eWxlPgorICAgIC5zY3JvbGxpbmcgeworICAgICAgICBv
dmVyZmxvdzogc2Nyb2xsOworICAgIH0KKyAgICAuc2Nyb2xsQ29udGVudCB7CisgICAgICAgIHdp
ZHRoOiAzMDBweDsKKyAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICB9CisgICAgI3Jvb3Qgewor
ICAgICAgICB3aWR0aDogMjAwcHg7CisgICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgfQorICAg
ICNzY3JvbGxlciB7CisgICAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgICAgaGVpZ2h0OiAyMDBw
eDsKKyAgICAgICAgb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZTsKKyAgICAgICAgb3ZlcmZsb3c6
IHZpc2libGU7CisgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJl
ZCwgYmx1ZSk7CisgICAgfQorPC9zdHlsZT4KKzxkaXYgaWQ9J3Jvb3QnIGNsYXNzPSJzY3JvbGxp
bmciPgorICAgIDxpZnJhbWUgaWQ9J3Njcm9sbGVyJyBzcmNkb2M9IjxodG1sIHN0eWxlPSdvdmVy
c2Nyb2xsLWJlaGF2aW9yOiBub25lOyc+PGRpdiBzdHlsZT0nd2lkdGg6IDEwMHB4OyBoZWlnaHQ6
IDEwMHB4Oyc+PC9kaXY+PC9odG1sPgorICAgICAgICAiPjwvaWZyYW1lPgorICAgIDxkaXYgY2xh
c3M9InNjcm9sbENvbnRlbnQiPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+Citjb25zdCByb290
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jvb3QnKTsKK2NvbnN0IHNjcm9sbGVyID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Njcm9sbGVyJyk7CisKK2FzeW5jIGZ1bmN0aW9uIHBlcmZv
cm1XaGVlbFNjcm9sbChzY3JvbGxlciwgZGlyZWN0aW9uKSB7CisgICAgdmFyIGRlbHRhWCA9IDA7
CisgICAgdmFyIGRlbHRhWSA9IDA7CisgICAgaWYgKGRpcmVjdGlvbiA9PSAiZG93biIpCisgICAg
ICAgIGRlbHRhWSA9IC01OworICAgIGVsc2UgaWYgKGRpcmVjdGlvbiA9PSAidXAiKQorICAgICAg
ICBkZWx0YVkgPSA1OworICAgIGVsc2UgaWYgKGRpcmVjdGlvbiA9PSAicmlnaHQiKQorICAgICAg
ICBkZWx0YVggPSAtNTsKKyAgICBlbHNlIGlmIChkaXJlY3Rpb24gPT0gImxlZnQiKQorICAgICAg
ICBkZWx0YVggPSA1OworCisgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7Cisg
ICAgdmFyIHkgPSBzY3JvbGxlci5jbGllbnRIZWlnaHQgLyAyOworICAgIGV2ZW50U2VuZGVyLmRy
YWdNb2RlID0gZmFsc2U7CisgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7Cisg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGRlbHRhWCwgZGVsdGFZLCAnYmVnYW4n
LCAnbm9uZScpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkZWx0YVggKiAyLCBkZWx0YVkgKiAyLCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGRl
bHRhWCAqIDMsIGRlbHRhWSAqIDMsICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywg
J25vbmUnKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZGVsdGFYLCBkZWx0YVksICdub25lJywgJ2JlZ2luJyk7CisgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGRlbHRhWCAqIDIsIGRl
bHRhWSAqIDIsICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGRlbHRhWCAqIDMsIGRlbHRhWSAqIDMsICdu
b25lJywgJ2NvbnRpbnVlJyk7CisgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgIHJldHVybiBuZXcg
UHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xs
aW5nQ29tcGxldGVzKCgpID0+IHsKKyAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgfSk7
CisgICAgfSk7Cit9CisKK2Z1bmN0aW9uIHJlc2V0VGVzdCgpIHsKKyAgICByb290LnNjcm9sbExl
ZnQgPSAwOworICAgIHJvb3Quc2Nyb2xsVG9wID0gMDsKKyAgICByb290LnNjcm9sbFRvKDAsIDAp
OworfQorCitmdW5jdGlvbiBzdGFydFRlc3QoKSB7CisgICAgICAgIHByb21pc2VfdGVzdCgoKSA9
PiB7CisgICAgICAgICAgICByZXNldFRlc3QoKTsKKyAgICAgICAgICAgIHJldHVybiBwZXJmb3Jt
V2hlZWxTY3JvbGwoc2Nyb2xsZXIsICJyaWdodCIpLnRoZW4oKCkgPT4geworICAgICAgICAgICAg
ICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxMZWZ0ID4gMCwgdHJ1ZSwgJ0NvbnRpbnVlIHVw
IHRoZSBob3Jpem9udGFsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAgICAgICAgfSk7CisgICAg
ICAgIH0sICdVbnNjcm9sbGFibGUgaWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBv
dmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLicpOworCisgICAgICAgIHByb21pc2VfdGVzdCgoKSA9
PiB7CisgICAgICAgICAgICByZXNldFRlc3QoKTsKKworICAgICAgICAgICAgcmV0dXJuIHBlcmZv
cm1XaGVlbFNjcm9sbChzY3JvbGxlciwgImRvd24iKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAg
ICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsVG9wID4gMCwgdHJ1ZSwgJ0NvbnRpbnVlIHVw
IHRoZSB2ZXJ0aWNhbCBzY3JvbGwgY2hhaW5pbmcnKTsKKyAgICAgICAgICAgIH0pOworICAgICAg
ICB9LCAnVW5zY3JvbGxhYmxlIGlmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJz
Y3JvbGwtYmVoYXZpb3I6IG5vbmUuJyk7Cit9CisKK2FkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBz
dGFydFRlc3QpOworPC9zY3JpcHQ+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDE0OGNkN2Q2
ZDc4ZDYwYzAxNmQzODAyOGY2OTM4ZjBlMDBlMDQ4ZDAuLjcxMDFkZGY3ZTYwYmJjOTdjZGNhOWRh
MDMzM2NmZGNiNDAwYjc0NmUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13
azEvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rl
c3RFeHBlY3RhdGlvbnMKQEAgLTQ0OCw2ICs0NDgsMTAgQEAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jb29raWVzL3NlY3VyZS9zZXQtZnJvbS13cy5zdWIuaHRtbCBbIEZhaWx1cmUg
XQogIyBXZWJLaXQxIGZyYW1lcyB1c2UgbmF0aXZlIHNjcm9sbGJhcnMgY2F1c2luZyB0aGlzIHJl
ZmVyZW5jZSB0ZXN0IHRvIGZhaWwuCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3Mtc2Nyb2xsLXNuYXAvc2Nyb2xsLXRhcmdldC1wYWRkaW5nLTAwMS5odG1sIFsgSW1hZ2VP
bmx5RmFpbHVyZSBdCiAKKyMgTmVlZCB0byBmaW5kIGEgd2F5IHRvIGJsb2NrIHRoZSBjcm9zcy1m
cmFtZSBzY3JvbGwgY2hhaW5pbmcgaW4gV0sxLgorZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1i
ZWhhdmlvci1pZnJhbWUuaHRtbCBbIFNraXAgXQorZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1i
ZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLmh0bWwgWyBTa2lwIF0KKwogIyMjIEVORCBPRiAo
MikgRmFpbHVyZXMgd2l0aG91dCBidWcgcmVwb3J0cwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416744</attachid>
            <date>2020-12-24 03:37:32 -0800</date>
            <delta_ts>2020-12-24 03:46:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220139-20201224193730.patch</filename>
            <type>text/plain</type>
            <size>87293</size>
            <attacher name="cathiechen">cathiechen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxMDgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmY1ZTU2NzljMTQ4MDA0
MmY2ZTJiODhhNWQyMGZjOTNhMmFjMzFhNi4uMzhjYWVlY2EzNzNiZTE4NzYzYzNiMGIyYWZjNzg2
MmM5M2ZkY2NmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNiBAQAorMjAyMC0xMi0yNCAgQ2F0
aGllIENoZW4gIDxjYXRoaWVjaGVuQGlnYWxpYS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IENT
UyBvdmVyc2Nyb2xsLWJlaGF2aW9yIG9uIE1hYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwMTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQmFzZWQgb24gRnLDqWTDqXJpYyBXYW5nJ3MgcGF0Y2guCisK
KyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIG92ZXJzY3JvbGwtYmVoYXZpb3Ig
b24gTWFjLgorICAgICAgICBBY2NvcmRpbmcgdG8gWzFdLCB0aGVyZSBhcmUgdHdvIGtpbmRzIG9m
IGFjdGlvbnM6IG5vbi1sb2NhbCBib3VuZGFyeSBkZWZhdWx0IGFjdGlvbnMgYW5kIGxvY2FsIGJv
dW5kYXJ5IGRlZmF1bHQgYWN0aW9ucy4KKyAgICAgICAgSW4gV2ViS2l0IG1hYywgdGhlIHJ1YmJl
ciBiYW5kaW5nIGVmZm9ydCBpcyBiZWxvbmdlZCB0byBsb2NhbCBib3VuZGFyeSBkZWZhdWx0IGFj
dGlvbnMuIFRoZSBzY3JvbGwgY2hhaW5pbmcgYW5kIHN3aXBlCisgICAgICAgIGdlc3R1cmVzICh0
cmlnZ2VyIGdvIGJhY2sgb3IgZ28gZm9yd2FyZCBhY3Rpb25zKSBhcmUgYmVsb25nZWQgdG8gbm9u
LWxvY2FsIGJvdW5kYXJ5IGRlZmF1bHQgYWN0aW9ucy4KKyAgICAgICAgMS4gVG8gaGFuZGxlIHRo
ZSBydWJiZXIgYmFuZGluZyBlZmZlY3QsIHNob3VsZFN0b3BIb3Jpem9udGFsU3RyZWNoKCkgYW5k
IHNob3VsZFN0b3BWZXJ0aWNhbFN0cmVjaCgpIGFyZSBhZGRlZCB0byBkZWNpZGUKKyAgICAgICAg
d2hldGhlciB0aGUgcnViYmVyIGJhbmRpbmcgZWZmb3J0IGlzIGFsbG93ZWQgb3Igbm90LgorICAg
ICAgICAyLiBUbyBibG9jayBzY3JvbGwgY2hhaW5pbmcgYWN0aW9ucyBpbiBkaWZmZXJlbnQgc2Ny
b2xsIG1vZGVzLgorICAgICAgICAgIC0gRm9yIGFzeW5jaHJvbm91cyBzY3JvbGxpbmcsIGl0J3Mg
aGFuZGxlZCBpbiBTY3JvbGxpbmdUcmVlOjpoYW5kbGVXaGVlbEV2ZW50V2l0aE5vZGUoKSwgYWNj
b3JkaW5nIHRvIHRoZSB2YWx1ZSBvZgorICAgICAgICAgIG92ZXJzY3JvbGwtYmVoYXZpb3IsIGl0
IGJsb2NrcyB0aGUgc2Nyb2xsIGNoYWluaW5nIGlmIG5lZWRlZCwgdGhlIHJlc3VsdCB3b3VsZCBi
ZSBhZGRlZCB0byBtX2xhdGNoaW5nQ29udHJvbGxlcgorICAgICAgICAgIGFuZCBtaWdodCBiZSBy
ZXVzZWQuCisgICAgICAgICAgLSBGb3Igc3luY2hyb25vdXMgc2Nyb2xsaW5nLCBpZiBXSEVFTF9F
VkVOVF9MQVRDSElORyBpcyBkaXNhYmxlZCwgaXQgaGFuZGxlcyBvdmVyc2Nyb2xsLWJlaGF2aW9y
IGluIGhhbmRsZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94KCkuCisgICAgICAg
ICAgSWYgV0hFRUxfRVZFTlRfTEFUQ0hJTkcgaXMgZW5hYmxlZC4gT3ZlcnNjcm9sbC1iZWhhdmlv
ciBpcyBoYW5kbGVkIGluIGZpbmRFbmNsb3NpbmdTY3JvbGxhYmxlQ29udGFpbmVyKCkuCisgICAg
ICAgICAgSXQgYWRkZWQgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIHRvIEZyYW1lU3RhdGUgdG8gaW5k
aWNhdGUgd2hldGhlciB0aGUgY3VycmVudCBsYXRjaGVkIG5vZGUgc2hvdWxkIGJsb2NrIHNjcm9s
bCBjaGFpbmluZy4KKyAgICAgICAgICBJZiB0aGUgY3VycmVudCBmcmFtZSBpcyBhIHN1YmZyYW1l
LCBpdCBwYXNzZXMgaXRzIFNjcm9sbENoYWluaW5nQmxvY2tlciB0byB0aGUgcGFyZW50ZnJhbWUs
IGFuZCBldmVudHVhbGx5CisgICAgICAgICAgbGV0IHRoZSBtYWluZnJhbWUgZGVjaWRlIHdoZXRo
ZXIgc2hvdWxkIHRyaWdnZXIgc3dpcGUgZ2VzdHVyZXMgb3Igbm90LgorICAgICAgICAzLiBUaGUg
c3dpcGUgZ2VzdHVyZXMuCisgICAgICAgICAgSWYgdGhlIG1haW5mcmFtZSByZWFjaGVzIGl0cyBz
Y3JvbGwgZWRnZXMsIHRoZXJlIHdpbGwgYmUgc3dpcGUgZ2VzdHVyZXMgZXZlbiBpZiBvdmVyc2Ny
b2xsLWJlaGF2aW9yJ3MgdmFsdWUgaXMgbm9uZS4KKyAgICAgICAgICBUaGlzIGJlaGF2aW9yIGlz
IG5vdCBzdXBvb3J0ZWQgaW4gV0sxIGFuZCBXSzIncyBzeW5jaHJvbm91cyBzY3JvbGwgd2l0aCBX
SEVFTF9FVkVOVF9MQVRDSElORyBvZmYuCisKKyAgICAgICAgWzFdIGh0dHBzOi8vZHJhZnRzLmNz
c3dnLm9yZy9jc3Mtb3ZlcnNjcm9sbC0xLyNvdmVyc2Nyb2xsLWJlaGF2aW9yLXByb3BlcnRpZXMK
KworICAgICAgICBUZXN0czogZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVt
ZW50Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZp
b3ItaWZyYW1lLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwt
YmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9z
Y3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLmh0bWwKKwor
ICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
SGFuZGxlcjo6dXBkYXRlU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKTogVXBkYXRlZCB0aGUgdmFsdWUg
b2YgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIGZyb20gU2Nyb2xsYWJsZUFyZWEncyBvdmVyc2Nyb2xs
LWJlaGF2aW9yLgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpzaG91bGRCbG9ja1Nj
cm9sbENoYWluaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZVBhcmVudEZyYW1lU2Nyb2xs
Q2hhaW5pbmdCbG9ja2VyKTogQXBwbGllZCB0aGUgY3VycmVudCBmcmFtZSdzIG92ZXJzY3JvbGwt
YmVoYXZpb3IgdmFsdWUgdG8gU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyCisgICAgICAgIGFuZCBwYXNz
IHRoaXMgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIHRvIHBhcmVudCBmcmFtZS4KKyAgICAgICAgKFdl
YkNvcmU6OmFkanVzdERlbHRhcyk6CisgICAgICAgIChXZWJDb3JlOjppc1Nyb2xsQ2hhaW5pbmdT
dG9wcGVkQnlPdmVyc2Nyb2xsQmVoYXZpb3IpOiAKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFu
ZGxlcjo6aGFuZGxlV2hlZWxFdmVudEludGVybmFsKTogU3RvcCBoYW5kbGluZyB3aGVlbEV2ZW50
IGZvciBGcmFtZVZpZXcgaWYgaXNTcm9sbENoYWluaW5nU3RvcHBlZEJ5T3ZlcnNjcm9sbEJlaGF2
aW9yLgorICAgICAgICAoV2ViQ29yZTo6ZGlkU2Nyb2xsSW5TY3JvbGxhYmxlQXJlYSk6IEFkanVz
dCB3aGVlbEV2ZW50J3MgZGVsdGFzIGFjY29yZGluZyB0byB0aGUgdmFsdWUgb2YgU2Nyb2xsQ2hh
aW5pbmdCbG9ja2VyLgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVl
bEV2ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2luZ0JveCk6IEFkanVzdCBmaWx0ZXJlZFBsYXRmb3Jt
RGVsdGEgYWNjb3JkaW5nIHRvIG92ZXJzY3JvbGwtYmVoYXZpb3IncyB2YWx1ZSwKKyAgICAgICAg
YW5kIHN0b3Agc2Nyb2xsLWNoYWluaW5nIGlmIG5lY2Vzc2FyeSBmb3IgdGhlIHNjZW5hcmlvIG9m
IHN5bmNocm9ub3VzIHNjcm9sbCB3aXRoIFdIRUVMX0VWRU5UX0xBVENISU5HIGlzIG9mZi4KKyAg
ICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZGVmYXVsdFdoZWVsRXZlbnRIYW5kbGVyKTog
QWRqdXN0IGZpbHRlcmVkUGxhdGZvcm1EZWx0YSBhY2NvcmRpbmcgdG8gb3ZlcnNjcm9sbC1iZWhh
dmlvcidzIHZhbHVlLAorICAgICAgICBhbmQgcGFzcyBTY3JvbGxDaGFpbmluZ0Jsb2NrZXIgdG8g
cGFyZW50IGZyYW1lIGlmIG5lZWRlZC4KKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5oOgor
ICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmll
dzo6aG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvciBjb25zdCk6IFJldHVybnMgZG9jdW1lbnRF
bGVtZW50J3MgdmFsdWUgb2Ygb3ZlcnNjcm9sbC1iZWhhdmlvci14LgorICAgICAgICBJZiBkb2N1
bWVudEVsZW1lbnQgaXMgbm90IGEgc2Nyb2xsIGNvbnRhaW5lciwgcmV0dXJucyBPdmVyc2Nyb2xs
QmVoYXZpb3I6OkF1dG8uCisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnZlcnRpY2FsT3Zl
cnNjcm9sbEJlaGF2aW9yIGNvbnN0KTogRGl0dG8uCisgICAgICAgICogcGFnZS9GcmFtZVZpZXcu
aDoKKyAgICAgICAgKiBwYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW06CisgICAgICAgIChXZWJD
b3JlOjpmaW5kRW5jbG9zaW5nU2Nyb2xsYWJsZUNvbnRhaW5lcik6IEFwcGx5IG92ZXJzY3JvbGwt
YmVoYXZpb3IgdG8gU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIGFuZCBzdG9wIHRoZSBzY3JvbGwgY2hh
aW5pbmcgaWYgbmVlZGVkCisgICAgICAgIGZvciB0aGUgc2NlbmFyaW8gb2Ygc3luY2hyb25vdXMg
c2Nyb2xsIHdpdGggV0hFRUxfRVZFTlRfTEFUQ0hJTkcgaXMgb24uCisgICAgICAgIChXZWJDb3Jl
OjpFdmVudEhhbmRsZXI6OmRldGVybWluZVdoZWVsRXZlbnRUYXJnZXQpOiBTdG9yZXMgU2Nyb2xs
Q2hhaW5pbmdCbG9ja2VyIGluIHNjcm9sbExhdGNoaW5nQ29udHJvbGxlcgorICAgICAgICAqIHBh
Z2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0U2Nyb2xsaW5nTm9kZVNjcm9sbGFi
bGVBcmVhR2VvbWV0cnkpOiBVcGRhdGUgb3ZlcnNjcm9sbC1iZWhhdmlvciB2YWx1ZXMgaW4gc2Ny
b2xsUGFyYW1ldGVycy4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxMYXRjaGluZ0Nv
bnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVy
Ojp1cGRhdGVBbmRGZXRjaExhdGNoaW5nU3RhdGVGb3JGcmFtZSk6IEFkZCBTY3JvbGxDaGFpbmlu
Z0Jsb2NrZXIgdG8gRnJhbWVTdGF0ZS4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbExhdGNoaW5n
Q29udHJvbGxlcjo6Z2V0U2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIGNvbnN0KTogUmV0dXJucyBTY3Jv
bGxDaGFpbmluZ0Jsb2NrZXIgb2YgZnJhbWUuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxMYXRj
aGluZ0NvbnRyb2xsZXI6OnVwZGF0ZVNjcm9sbENoYWluaW5nQmxvY2tlcik6IFVwZGF0ZXMgU2Ny
b2xsQ2hhaW5pbmdCbG9ja2VyIG9mIGZyYW1lLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsTGF0
Y2hpbmdDb250cm9sbGVyOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9T
Y3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdDb29yZGluYXRvclR5cGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJl
YVBhcmFtZXRlcnM6Om9wZXJhdG9yPT0gY29uc3QpOiBBZGRlZCBob3Jpem9udGFsT3ZlcnNjcm9s
bEJlaGF2aW9yIGFuZCB2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvci4KKyAgICAgICAgKiBwYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z1RyZWU6OmhhbmRsZVdoZWVsRXZlbnRXaXRoTm9kZSk6IFVwZGF0ZSBTY3JvbGxDaGFpbmluZ0Js
b2NrZXIgYWNjb3JkaW5nIHRvIHRoZSBvdmVyc2Nyb2xsLWJlaGF2aW9yIHZhbHVlcywKKyAgICAg
ICAgc3RvcCB0aGUgc2Nyb2xsIGNoYWluaW5nIGlmIG5lZWRlZCwgYW5kIGlmIGl0J3MgaG9yaXpv
bnRhbCBzY3JvbGwgYW5kIHdpbGxXaGVlbEV2ZW50U3RhcnRTd2lwZUdlc3R1cmUsIGxldCBpdCB0
cmlnZ2VyIHN3aXBlIGdlc3R1cmUuCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGU6Omhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IgY29uc3QpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjp2ZXJ0aWNhbE92
ZXJzY3JvbGxCZWhhdmlvciBjb25zdCk6IERpdHRvLgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmg6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcv
bWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMuaDoKKyAgICAgICAgKiBw
YWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVN
YWM6OmFsbG93c0hvcml6b250YWxTdHJldGNoaW5nIGNvbnN0KTogSWYgb3ZlcnNjcm9sbC1iZWhh
dmlvci14OiBub25lLCB0aGUgc2Nyb2xsIHN0cmV0Y2ggc2hvdWxkIGJlIGJsb2NrZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjphbGxv
d3NWZXJ0aWNhbFN0cmV0Y2hpbmcgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OnNob3VsZFN0b3BIb3Jpem9udGFs
U3RyZWNoIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZURlbGVnYXRlTWFjOjpzaG91bGRTdG9wVmVydGljYWxTdHJlY2ggY29uc3QpOiBE
aXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtV2hlZWxFdmVudDo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVy
dGljYWwpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFR5cGVzLmg6CisgICAgICAgICogcGxh
dGZvcm0vU2Nyb2xsYWJsZUFyZWEuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGFibGVBcmVh
Ojpob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGFibGVBcmVhOjp2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvciBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5oOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsQ29udHJvbGxlckNsaWVudDo6c2hvdWxkU3RvcEhvcml6b250YWxTdHJlY2ggY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQ29udHJvbGxlckNsaWVudDo6c2hvdWxkU3Rv
cFZlcnRpY2FsU3RyZWNoIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TY3JvbGxD
b250cm9sbGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQ29udHJvbGxlcjo6aGFuZGxl
V2hlZWxFdmVudCk6IFN0b3Agc2Nyb2xsIHN0cmVjaGluZyBpZiBuZWVkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxDb250cm9sbGVyOjpkaXJlY3Rpb25Gcm9tRXZlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsQ29udHJvbGxlcjo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGlj
YWwpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5o
OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTWFjOjpzaG91bGRTdG9wSG9yaXpvbnRhbFN0cmVjaCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck1hYzo6c2hvdWxkU3RvcFZl
cnRpY2FsU3RyZWNoIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6Omhvcml6b250YWxPdmVyc2Nyb2xsQmVo
YXZpb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnZlcnRpY2FsT3Zl
cnNjcm9sbEJlaGF2aW9yIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
aDoKKwogMjAyMC0xMi0yMyAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4K
IAogICAgICAgICBDbGVhbiB1cCBzb21lIGNvZGUgcmVsYXRlZCB0byBzY3JvbGwgcGlubmluZwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCA3ZDM1YzVhZTEzMTc0ZTMzMjBjMDRmY2FiYTYzNzdiNjJmZGU5NGFjLi44ZTdl
YjA4MDg1OTRhNmFhNTdiZmQ1MWJhYjI3Mzc1NDhlNDAxNGFlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE5IEBACisyMDIwLTEyLTI0ICBDYXRoaWUgQ2hlbiAgPGNhdGhpZWNoZW5AaWdhbGlhLmNvbT4K
KworICAgICAgICBJbXBsZW1lbnQgQ1NTIG92ZXJzY3JvbGwtYmVoYXZpb3Igb24gTWFjCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjAxMzkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCYXNlZCBvbiBGcsOp
ZMOpcmljIFdhbmcncyBwYXRjaC4KKworICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFNjcm9sbGFibGVBcmVhUGFy
YW1ldGVycz46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8U2Nyb2xsYWJs
ZUFyZWFQYXJhbWV0ZXJzPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmg6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUzo6Y29tbWl0U3RhdGVBZnRlckNo
aWxkcmVuKToKKwogMjAyMC0xMi0yMyAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNv
bT4KIAogICAgICAgICBbR1BVIFByb2Nlc3NdOiBEb24ndCBjYWxsIGZsdXNoRHJhd2luZ0NvbnRl
eHQoKSBpbiB0aGUgbWlkZGxlIG9mIHJlY29yZGluZyBkcmF3aW5nIGNvbW1hbmRzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggZTEwYjRkYjAzMTA2ZTY4ZjU0MTIzYmNlODY2YWU2YjQz
MDkzM2JlOC4uYWFmNDk1N2Y1YTA5ZTcyZTg2OTllY2Y5MDQ5NzE1YzVjYTAyM2IwYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIwLTEyLTI0ICBDYXRo
aWUgQ2hlbiAgPGNhdGhpZWNoZW5AaWdhbGlhLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgQ1NT
IG92ZXJzY3JvbGwtYmVoYXZpb3Igb24gTWFjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjAxMzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBCYXNlZCBvbiBGcsOpZMOpcmljIFdhbmcncyBwYXRjaC4KKwor
ICAgICAgICBOZWVkIHRvIGZpbmQgYSB3YXkgdG8gYmxvY2sgdGhlIGNyb3NzLWZyYW1lIHNjcm9s
bCBjaGFpbmluZyBpbiBXSzEuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgor
ICAgICAgICAoLVtXZWJIVE1MVmlldyBzY3JvbGxXaGVlbDpdKToKKwogMjAyMC0xMi0xOSAgUm9i
IEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIE1vdmUgRnJhbWVMb2FkZXI6OmFy
ZVBsdWdpbnNFbmFibGVkIHRvIEZyYW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAK
aW5kZXggYzgyZmY3YzVkM2Y2YmM4ODQ1ODI5NGJmZjFiNzAwYTMxZTBiZmExZS4uNTU0YzI3ODUw
MGM3ZWYyYjBlYWMwODM2N2E4M2U1ZWFhOWIzOGUwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmNwcApAQCAtMjgyNyw2ICsyODI3LDk3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5k
bGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgT3B0aW9u
CiAgICAgcmV0dXJuIGhhbmRsZWQ7CiB9CiAKK3ZvaWQgRXZlbnRIYW5kbGVyOjp1cGRhdGVTY3Jv
bGxDaGFpbmluZ0Jsb2NrZXIoU2Nyb2xsYWJsZUFyZWEqIHNjcm9sbGFibGVBcmVhLCBTY3JvbGxD
aGFpbmluZ0Jsb2NrZXImIHNjcm9sbENoYWluaW5nQmxvY2tlcikKK3sKKyAgICBpZiAoIXNjcm9s
bGFibGVBcmVhKQorICAgICAgICByZXR1cm47CisgICAgc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLmJs
b2NrWCB8PSBzY3JvbGxhYmxlQXJlYS0+aG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpICE9
IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0bzsKKyAgICBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIuYmxv
Y2tZIHw9IHNjcm9sbGFibGVBcmVhLT52ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpICE9IE92
ZXJzY3JvbGxCZWhhdmlvcjo6QXV0bzsKK30KKworYm9vbCBFdmVudEhhbmRsZXI6OnNob3VsZEJs
b2NrU2Nyb2xsQ2hhaW5pbmcoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBj
b25zdCBTY3JvbGxDaGFpbmluZ0Jsb2NrZXImIHNjcm9sbENoYWluaW5nQmxvY2tlcikKK3sKKyAg
ICBhdXRvIGJpYXNlZERlbHRhID0gUGxhdGZvcm1XaGVlbEV2ZW50Ojp3aGVlbERlbHRhQmlhc2lu
Z1Rvd2FyZHNWZXJ0aWNhbCh3aGVlbEV2ZW50LmRlbHRhKCkpOworICAgIGlmICgoc2Nyb2xsQ2hh
aW5pbmdCbG9ja2VyLmJsb2NrWCAmJiBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIuYmxvY2tZKQorICAg
ICAgICB8fCAoc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLmJsb2NrWCAmJiAhYmlhc2VkRGVsdGEuaGVp
Z2h0KCkpCisgICAgICAgIHx8IChzY3JvbGxDaGFpbmluZ0Jsb2NrZXIuYmxvY2tZICYmICFiaWFz
ZWREZWx0YS53aWR0aCgpKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGZhbHNl
OworfQorCisjaWYgRU5BQkxFKFdIRUVMX0VWRU5UX0xBVENISU5HKQorc3RhdGljIHZvaWQgdXBk
YXRlUGFyZW50RnJhbWVTY3JvbGxDaGFpbmluZ0Jsb2NrZXIoU2Nyb2xsYWJsZUFyZWEqIHNjcm9s
bGFibGVBcmVhLCBGcmFtZSYgZnJhbWUsIFNjcm9sbENoYWluaW5nQmxvY2tlciYgc2Nyb2xsQ2hh
aW5pbmdCbG9ja2VyKQoreworICAgIGF1dG8qIHBhcmVudCA9IGZyYW1lLnRyZWUoKS5wYXJlbnQo
KTsKKyAgICBpZiAoIXNjcm9sbGFibGVBcmVhKQorICAgICAgICBzY3JvbGxhYmxlQXJlYSA9IGZy
YW1lLnZpZXcoKTsKKyAgICBpZiAoIWZyYW1lLnBhZ2UoKSB8fCAhcGFyZW50IHx8ICFzY3JvbGxh
YmxlQXJlYSkKKyAgICAgICAgcmV0dXJuOworICAgIEV2ZW50SGFuZGxlcjo6dXBkYXRlU2Nyb2xs
Q2hhaW5pbmdCbG9ja2VyKHNjcm9sbGFibGVBcmVhLCBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIpOwor
ICAgIGZyYW1lLnBhZ2UoKS0+c2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyKCkudXBkYXRlU2Nyb2xs
Q2hhaW5pbmdCbG9ja2VyKCpwYXJlbnQsIHNjcm9sbENoYWluaW5nQmxvY2tlcik7Cit9CisjZW5k
aWYKKworc3RhdGljIHZvaWQgYWRqdXN0RGVsdGFzKGNvbnN0IFNjcm9sbENoYWluaW5nQmxvY2tl
ciYgc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLCBGbG9hdFNpemUmIGZpbHRlcmVkUGxhdGZvcm1EZWx0
YSkKK3sKKyAgICAvLyBJZiB3aGVlbEV2ZW50IGlzIGJpYXMgdG8gaG9yaXpvbnRhbCwgZGVsdGFZ
IHNob3VsZCBiZSB6ZXJvIHRvbywgb3RoZXJ3aXNlIGl0IHdpbGwgcGVyZm9ybSB2ZXJ0aWNhbCBz
Y3JvbGwuCisgICAgLy8gVmljZSB2ZXJzYS4KKyAgICBhdXRvIGJpYXNlZERlbHRhID0gUGxhdGZv
cm1XaGVlbEV2ZW50Ojp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbChmaWx0ZXJlZFBs
YXRmb3JtRGVsdGEpOworICAgIGlmIChzY3JvbGxDaGFpbmluZ0Jsb2NrZXIuYmxvY2tYKSB7Cisg
ICAgICAgIGZpbHRlcmVkUGxhdGZvcm1EZWx0YS5zZXRXaWR0aCgwKTsKKyAgICAgICAgaWYgKCFi
aWFzZWREZWx0YS5oZWlnaHQoKSkKKyAgICAgICAgICAgIGZpbHRlcmVkUGxhdGZvcm1EZWx0YS5z
ZXRIZWlnaHQoMCk7CisgICAgfQorICAgIGlmIChzY3JvbGxDaGFpbmluZ0Jsb2NrZXIuYmxvY2tZ
KSB7CisgICAgICAgIGZpbHRlcmVkUGxhdGZvcm1EZWx0YS5zZXRIZWlnaHQoMCk7CisgICAgICAg
IGlmICghYmlhc2VkRGVsdGEud2lkdGgoKSkKKyAgICAgICAgICAgIGZpbHRlcmVkUGxhdGZvcm1E
ZWx0YS5zZXRXaWR0aCgwKTsKKyAgICB9Cit9CisKK3N0YXRpYyBib29sIGlzU3JvbGxDaGFpbmlu
Z1N0b3BwZWRCeU92ZXJzY3JvbGxCZWhhdmlvcihXZWFrUHRyPFNjcm9sbGFibGVBcmVhPiBzY3Jv
bGxhYmxlQXJlYSwgRnJhbWUmIGZyYW1lLCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQs
IFNjcm9sbENoYWluaW5nQmxvY2tlciBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIsIGJvb2wmIGhhbmRs
ZWRFdmVudCkKK3sKKyNpZiBFTkFCTEUoV0hFRUxfRVZFTlRfTEFUQ0hJTkcpCisgICAgaWYgKCFz
Y3JvbGxhYmxlQXJlYSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgRmxvYXRTaXplIGZp
bHRlcmVkUGxhdGZvcm1EZWx0YSh3aGVlbEV2ZW50LmRlbHRhWCgpLCB3aGVlbEV2ZW50LmRlbHRh
WSgpKTsKKyAgICBpZiAoc2Nyb2xsYWJsZUFyZWEgIT0gZnJhbWUudmlldygpKSB7CisgICAgICAg
IC8vIFdoZWVsIGV2ZW50IGlzIGdvaW5nIHRvIGJlIGhhbmRsZWQgYnkgRnJhbWVWaWV3IGluIHBy
b2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKCksCisgICAgICAgIC8vIHNob3VsZCBsZXQgc2Ny
b2xsYWJsZUFyZWEncyBvdmVyc2Nyb2xsLWJlaGF2aW9yIGVmZmVjdCBTY3JvbGxDaGFpbmluZ0Js
b2NrZXIuCisgICAgICAgIEV2ZW50SGFuZGxlcjo6dXBkYXRlU2Nyb2xsQ2hhaW5pbmdCbG9ja2Vy
KHNjcm9sbGFibGVBcmVhLmdldCgpLCBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIpOworICAgIH0KKwor
ICAgIGF1dG8gYmlhc2VkRGVsdGEgPSBQbGF0Zm9ybVdoZWVsRXZlbnQ6OndoZWVsRGVsdGFCaWFz
aW5nVG93YXJkc1ZlcnRpY2FsKHdoZWVsRXZlbnQuZGVsdGEoKTsKKyAgICBpZiAoc2Nyb2xsQ2hh
aW5pbmdCbG9ja2VyLmJsb2NrWCAmJiAhYmlhc2VkRGVsdGEuaGVpZ2h0KCkpIHsKKyAgICAgICAg
Ly8gSWYgdGhlIGhvcml6b250YWwgc2Nyb2xsIGNoYWluaW5nIGlzIGJsb2NrZWQgYnkgb3ZlcnNj
cm9sbC1iZWhhdmlvciBpbiBhIHN1YmZyYW1lLgorICAgICAgICAvLyBJdCBwcm9wYWdhdGVzIGl0
cyBTY3JvbGxDaGFpbmluZ0Jsb2NrZXIgdG8gcGFyZW50IGZyYW1lcyBhbmQgZXZlbnR1YWxseSBs
ZXQgbWFpbmZyYW1lCisgICAgICAgIC8vIGRlY2lkZSB3aGV0aGVyIG5lZWQgdG8gdHJpZ2dlciBh
IHN3aXBlIGdlc3R1cmUgb3Igbm90LgorICAgICAgICBpZiAoZnJhbWUuaXNNYWluRnJhbWUoKSkg
eworICAgICAgICAgICAgaGFuZGxlZEV2ZW50ID0gdHJ1ZTsKKyAgICAgICAgICAgIC8vIEluIG1h
aW4gZnJhbWUsIGlmIHRoZSBzY3JvbGwgcG9zaXRpb24gcmVhY2hlcyBvdCBpdHMgZWRnZXMsIHRy
aWdnZXIgdGhlIHN3aXBlIGdlc3R1cmUsIG90aGVyd2lzZSBub3QuCisgICAgICAgICAgICBhdXRv
IHBvc2l0aW9uWCA9IHNjcm9sbGFibGVBcmVhLT5zY3JvbGxQb3NpdGlvbigpLngoKTsKKyAgICAg
ICAgICAgIGlmICgocG9zaXRpb25YIDw9IHNjcm9sbGFibGVBcmVhLT5taW5pbXVtU2Nyb2xsUG9z
aXRpb24oKS54KCkgJiYgZmlsdGVyZWRQbGF0Zm9ybURlbHRhLndpZHRoKCkgPiAwKQorICAgICAg
ICAgICAgICAgIHx8IChwb3NpdGlvblggPj0gc2Nyb2xsYWJsZUFyZWEtPm1heGltdW1TY3JvbGxQ
b3NpdGlvbigpLngoKSAmJiBmaWx0ZXJlZFBsYXRmb3JtRGVsdGEud2lkdGgoKSA8IDApKQorICAg
ICAgICAgICAgICAgIGhhbmRsZWRFdmVudCA9IGZhbHNlOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgdXBkYXRlUGFyZW50RnJhbWVTY3JvbGxDaGFpbmluZ0Jsb2NrZXIoc2Nyb2xsYWJs
ZUFyZWEuZ2V0KCksIGZyYW1lLCBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIpOworICAgICAgICAgICAg
aGFuZGxlZEV2ZW50ID0gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorCisgICAgaWYgKEV2ZW50SGFuZGxlcjo6c2hvdWxkQmxvY2tTY3JvbGxDaGFpbmluZyh3
aGVlbEV2ZW50LCBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIpKSB7CisgICAgICAgIGhhbmRsZWRFdmVu
dCA9IHRydWU7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGFkanVzdERlbHRh
cyhzY3JvbGxDaGFpbmluZ0Jsb2NrZXIsIGZpbHRlcmVkUGxhdGZvcm1EZWx0YSk7CisgICAgd2hl
ZWxFdmVudCA9IHdoZWVsRXZlbnQuY29weVdpdGhEZWx0YXNBbmRWZWxvY2l0eShmaWx0ZXJlZFBs
YXRmb3JtRGVsdGEud2lkdGgoKSwgZmlsdGVyZWRQbGF0Zm9ybURlbHRhLmhlaWdodCgpLCB3aGVl
bEV2ZW50LnNjcm9sbGluZ1ZlbG9jaXR5KCkpOworI2VuZGlmCisgICAgcmV0dXJuIGZhbHNlOwor
fQorCiBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudEludGVybmFsKGNvbnN0IFBs
YXRmb3JtV2hlZWxFdmVudCYgZXZlbnQsIE9wdGlvblNldDxXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0
ZXBzPiBwcm9jZXNzaW5nU3RlcHMsIE9wdGlvblNldDxFdmVudEhhbmRsaW5nPiYgaGFuZGxpbmcp
CiB7CiAgICAgYXV0byogZG9jdW1lbnQgPSBtX2ZyYW1lLmRvY3VtZW50KCk7CkBAIC0yOTE5LDEy
ICszMDEwLDI3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50SW50ZXJuYWwo
Y29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCwgT3B0CiAjaWYgRU5BQkxFKFdIRUVMX0VW
RU5UX0xBVENISU5HKQogICAgIGlmIChhbGxvd1Njcm9sbGluZykKICAgICAgICAgYWxsb3dTY3Jv
bGxpbmcgPSBtX2ZyYW1lLnBhZ2UoKS0+c2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyKCkubGF0Y2hp
bmdBbGxvd3NTY3JvbGxpbmdJbkZyYW1lKG1fZnJhbWUsIHNjcm9sbGFibGVBcmVhKTsKKyAgICBT
Y3JvbGxDaGFpbmluZ0Jsb2NrZXIgc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyID0gbV9mcmFtZS5wYWdl
KCktPnNjcm9sbExhdGNoaW5nQ29udHJvbGxlcigpLmdldFNjcm9sbENoYWluaW5nQmxvY2tlciht
X2ZyYW1lKTsKICNlbmRpZgogCiAgICAgaWYgKGFsbG93U2Nyb2xsaW5nKSB7Ci0gICAgICAgIC8v
IEZJWE1FOiBwcm9jZXNzV2hlZWxFdmVudEZvclNjcm9sbGluZygpIGlzIG9ubHkgY2FsbGVkIGZv
ciBGcmFtZVZpZXcgc2Nyb2xsaW5nLCBub3Qgb3ZlcmZsb3cgc2Nyb2xsaW5nLCB3aGljaCBpcyBj
b25mdXNpbmcuCi0gICAgICAgIGhhbmRsZWRFdmVudCA9IHByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Ny
b2xsaW5nKGV2ZW50LCBzY3JvbGxhYmxlQXJlYSwgaGFuZGxpbmcpOwotICAgICAgICBwcm9jZXNz
V2hlZWxFdmVudEZvclNjcm9sbFNuYXAoZXZlbnQsIHNjcm9sbGFibGVBcmVhKTsKKyAgICAgICAg
UGxhdGZvcm1XaGVlbEV2ZW50IGFkanVzdGVkV2hlZWxFdmVudCA9IFBsYXRmb3JtV2hlZWxFdmVu
dChldmVudCk7CisgICAgICAgIGlmICghaXNTcm9sbENoYWluaW5nU3RvcHBlZEJ5T3ZlcnNjcm9s
bEJlaGF2aW9yKHNjcm9sbGFibGVBcmVhLCBtX2ZyYW1lLCBhZGp1c3RlZFdoZWVsRXZlbnQsIHNj
cm9sbENoYWluaW5nQmxvY2tlciwgaGFuZGxlZEV2ZW50KSkgeworICAgICAgICAgICAgLy8gRklY
TUU6IHByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKCkgaXMgb25seSBjYWxsZWQgZm9yIEZy
YW1lVmlldyBzY3JvbGxpbmcsIG5vdCBvdmVyZmxvdyBzY3JvbGxpbmcsIHdoaWNoIGlzIGNvbmZ1
c2luZy4KKyAgICAgICAgICAgIGhhbmRsZWRFdmVudCA9IHByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Ny
b2xsaW5nKGFkanVzdGVkV2hlZWxFdmVudCwgc2Nyb2xsYWJsZUFyZWEsIGhhbmRsaW5nKTsKKyAg
ICAgICAgICAgIHByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsU25hcChhZGp1c3RlZFdoZWVsRXZl
bnQsIHNjcm9sbGFibGVBcmVhKTsKKyNpZiAhRU5BQkxFKFdIRUVMX0VWRU5UX0xBVENISU5HKQor
ICAgICAgICAgICAgaWYgKCFoYW5kbGVkRXZlbnQgJiYgbV9mcmFtZS52aWV3KCkpIHsKKyAgICAg
ICAgICAgICAgICBTY3JvbGxDaGFpbmluZ0Jsb2NrZXIgc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyID0g
eyBtX2ZyYW1lLnZpZXcoKS0+aG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpICE9IE92ZXJz
Y3JvbGxCZWhhdmlvcjo6QXV0bywgbV9mcmFtZS52aWV3KCktPnZlcnRpY2FsT3ZlcnNjcm9sbEJl
aGF2aW9yKCkgIT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpBdXRvIH07CisgICAgICAgICAgICAgICAg
aWYgKHNob3VsZEJsb2NrU2Nyb2xsQ2hhaW5pbmcoYWRqdXN0ZWRXaGVlbEV2ZW50LCBzY3JvbGxD
aGFpbmluZ0Jsb2NrZXIpKQorICAgICAgICAgICAgICAgICAgICBoYW5kbGVkRXZlbnQgPSB0cnVl
OworICAgICAgICAgICAgfQorI2VuZGlmCisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKCFtX2Zy
YW1lLmlzTWFpbkZyYW1lKCkpIHsKKyNpZiBFTkFCTEUoV0hFRUxfRVZFTlRfTEFUQ0hJTkcpCisg
ICAgICAgIHVwZGF0ZVBhcmVudEZyYW1lU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKHNjcm9sbGFibGVB
cmVhLmdldCgpLCBtX2ZyYW1lLCBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIpOworI2VuZGlmCiAgICAg
fQogCiAgICAgcmV0dXJuIGhhbmRsZWRFdmVudDsKQEAgLTI5NDEsMjAgKzMwNDcsMjIgQEAgc3Rh
dGljIHZvaWQgaGFuZGxlV2hlZWxFdmVudFBoYXNlSW5TY3JvbGxhYmxlQXJlYShTY3JvbGxhYmxl
QXJlYSYgc2Nyb2xsYWJsZUFyZWEKICNlbmRpZgogfQogCi1zdGF0aWMgYm9vbCBkaWRTY3JvbGxJ
blNjcm9sbGFibGVBcmVhKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSwgY29uc3QgV2hl
ZWxFdmVudCYgd2hlZWxFdmVudCkKK3N0YXRpYyBib29sIGRpZFNjcm9sbEluU2Nyb2xsYWJsZUFy
ZWEoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhLCBjb25zdCBXaGVlbEV2ZW50JiB3aGVl
bEV2ZW50LCBjb25zdCBTY3JvbGxDaGFpbmluZ0Jsb2NrZXImIHNjcm9sbENoYWluaW5nQmxvY2tl
cikKIHsKKyAgICBGbG9hdFNpemUgZmlsdGVyZWRQbGF0Zm9ybURlbHRhKHdoZWVsRXZlbnQuZGVs
dGFYKCksIHdoZWVsRXZlbnQuZGVsdGFZKCkpOworICAgIGFkanVzdERlbHRhcyhzY3JvbGxDaGFp
bmluZ0Jsb2NrZXIsIGZpbHRlcmVkUGxhdGZvcm1EZWx0YSk7CiAgICAgU2Nyb2xsR3JhbnVsYXJp
dHkgc2Nyb2xsR3JhbnVsYXJpdHkgPSB3aGVlbEdyYW51bGFyaXR5VG9TY3JvbGxHcmFudWxhcml0
eSh3aGVlbEV2ZW50LmRlbHRhTW9kZSgpKTsKICAgICBib29sIGRpZEhhbmRsZVdoZWVsRXZlbnQg
PSBmYWxzZTsKLSAgICBpZiAoZmxvYXQgYWJzb2x1dGVEZWx0YSA9IHN0ZDo6YWJzKHdoZWVsRXZl
bnQuZGVsdGFYKCkpKQotICAgICAgICBkaWRIYW5kbGVXaGVlbEV2ZW50IHw9IHNjcm9sbGFibGVB
cmVhLnNjcm9sbCh3aGVlbEV2ZW50LmRlbHRhWCgpID4gMCA/IFNjcm9sbFJpZ2h0IDogU2Nyb2xs
TGVmdCwgc2Nyb2xsR3JhbnVsYXJpdHksIGFic29sdXRlRGVsdGEpOworICAgIGlmIChmbG9hdCBh
YnNvbHV0ZURlbHRhID0gc3RkOjphYnMoZmlsdGVyZWRQbGF0Zm9ybURlbHRhLndpZHRoKCkpKQor
ICAgICAgICBkaWRIYW5kbGVXaGVlbEV2ZW50IHw9IHNjcm9sbGFibGVBcmVhLnNjcm9sbChmaWx0
ZXJlZFBsYXRmb3JtRGVsdGEud2lkdGgoKSA+IDAgPyBTY3JvbGxSaWdodCA6IFNjcm9sbExlZnQs
IHNjcm9sbEdyYW51bGFyaXR5LCBhYnNvbHV0ZURlbHRhKTsKIAotICAgIGlmIChmbG9hdCBhYnNv
bHV0ZURlbHRhID0gc3RkOjphYnMod2hlZWxFdmVudC5kZWx0YVkoKSkpCi0gICAgICAgIGRpZEhh
bmRsZVdoZWVsRXZlbnQgfD0gc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsKHdoZWVsRXZlbnQuZGVsdGFZ
KCkgPiAwID8gU2Nyb2xsRG93biA6IFNjcm9sbFVwLCBzY3JvbGxHcmFudWxhcml0eSwgYWJzb2x1
dGVEZWx0YSk7CisgICAgaWYgKGZsb2F0IGFic29sdXRlRGVsdGEgPSBzdGQ6OmFicyhmaWx0ZXJl
ZFBsYXRmb3JtRGVsdGEuaGVpZ2h0KCkpKQorICAgICAgICBkaWRIYW5kbGVXaGVlbEV2ZW50IHw9
IHNjcm9sbGFibGVBcmVhLnNjcm9sbChmaWx0ZXJlZFBsYXRmb3JtRGVsdGEuaGVpZ2h0KCkgPiAw
ID8gU2Nyb2xsRG93biA6IFNjcm9sbFVwLCBzY3JvbGxHcmFudWxhcml0eSwgYWJzb2x1dGVEZWx0
YSk7CiAKICAgICByZXR1cm4gZGlkSGFuZGxlV2hlZWxFdmVudDsKIH0KIAotYm9vbCBFdmVudEhh
bmRsZXI6OmhhbmRsZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94KE5vZGUqIHN0
YXJ0Tm9kZSwgY29uc3QgV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgY29uc3QgRmxvYXRTaXplJiBm
aWx0ZXJlZFBsYXRmb3JtRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyZWRWZWxvY2l0eSwg
T3B0aW9uU2V0PEV2ZW50SGFuZGxpbmc+IGV2ZW50SGFuZGxpbmcpCitib29sIEV2ZW50SGFuZGxl
cjo6aGFuZGxlV2hlZWxFdmVudEluQXBwcm9wcmlhdGVFbmNsb3NpbmdCb3goTm9kZSogc3RhcnRO
b2RlLCBjb25zdCBXaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBGbG9hdFNpemUmIGZpbHRlcmVkUGxh
dGZvcm1EZWx0YSwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJlZFZlbG9jaXR5LCBPcHRpb25TZXQ8
RXZlbnRIYW5kbGluZz4gZXZlbnRIYW5kbGluZykKIHsKICAgICBib29sIHNob3VsZEhhbmRsZUV2
ZW50ID0gd2hlZWxFdmVudC5kZWx0YVgoKSB8fCB3aGVlbEV2ZW50LmRlbHRhWSgpOwogI2lmIEVO
QUJMRShXSEVFTF9FVkVOVF9MQVRDSElORykKQEAgLTI5NzUsMjIgKzMwODMsMzMgQEAgYm9vbCBF
dmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94KE5v
ZGUqIHN0YXJ0Tm9kZSwgY28KICAgICBpZiAoIXNob3VsZEhhbmRsZUV2ZW50KQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKKyAgICBTY3JvbGxDaGFpbmluZ0Jsb2NrZXIgc2Nyb2xsQ2hhaW5pbmdC
bG9ja2VyID0geyBmYWxzZSwgZmFsc2UgfTsKICAgICBpZiAoaXM8UmVuZGVyTGlzdEJveD4oaW5p
dGlhbEVuY2xvc2luZ0JveCkpCi0gICAgICAgIHJldHVybiBkaWRTY3JvbGxJblNjcm9sbGFibGVB
cmVhKGRvd25jYXN0PFJlbmRlckxpc3RCb3g+KGluaXRpYWxFbmNsb3NpbmdCb3gpLCB3aGVlbEV2
ZW50KTsKKyAgICAgICAgcmV0dXJuIGRpZFNjcm9sbEluU2Nyb2xsYWJsZUFyZWEoZG93bmNhc3Q8
UmVuZGVyTGlzdEJveD4oaW5pdGlhbEVuY2xvc2luZ0JveCksIHdoZWVsRXZlbnQsIHNjcm9sbENo
YWluaW5nQmxvY2tlcik7CiAKKyAgICBhdXRvIGJpYXNlZERlbHRhID0gUGxhdGZvcm1XaGVlbEV2
ZW50Ojp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbChGbG9hdFNpemUod2hlZWxFdmVu
dC5kZWx0YVgoKSwgd2hlZWxFdmVudC5kZWx0YVkoKSkpOwogICAgIFJlbmRlckJveCogY3VycmVu
dEVuY2xvc2luZ0JveCA9ICZpbml0aWFsRW5jbG9zaW5nQm94OwogICAgIHdoaWxlIChjdXJyZW50
RW5jbG9zaW5nQm94KSB7CiAgICAgICAgIGlmIChSZW5kZXJMYXllciogYm94TGF5ZXIgPSBjdXJy
ZW50RW5jbG9zaW5nQm94LT5sYXllcigpKSB7CiAgICAgICAgICAgICBhdXRvIHBsYXRmb3JtRXZl
bnQgPSB3aGVlbEV2ZW50LnVuZGVybHlpbmdQbGF0Zm9ybUV2ZW50KCk7CiAgICAgICAgICAgICBi
b29sIHNjcm9sbGluZ1dhc0hhbmRsZWQ7CiAgICAgICAgICAgICBpZiAocGxhdGZvcm1FdmVudCkg
eworICAgICAgICAgICAgICAgIGFkanVzdERlbHRhcyhzY3JvbGxDaGFpbmluZ0Jsb2NrZXIsIGZp
bHRlcmVkUGxhdGZvcm1EZWx0YSk7CiAgICAgICAgICAgICAgICAgYXV0byBjb3BpZWRFdmVudCA9
IHBsYXRmb3JtRXZlbnQtPmNvcHlXaXRoRGVsdGFzQW5kVmVsb2NpdHkoZmlsdGVyZWRQbGF0Zm9y
bURlbHRhLndpZHRoKCksIGZpbHRlcmVkUGxhdGZvcm1EZWx0YS5oZWlnaHQoKSwgZmlsdGVyZWRW
ZWxvY2l0eSk7CiAgICAgICAgICAgICAgICAgc2Nyb2xsaW5nV2FzSGFuZGxlZCA9IGhhbmRsZVdo
ZWVsRXZlbnRJblNjcm9sbGFibGVBcmVhKGNvcGllZEV2ZW50LCAqYm94TGF5ZXIsIGV2ZW50SGFu
ZGxpbmcpOwogICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgc2Nyb2xsaW5nV2Fz
SGFuZGxlZCA9IGRpZFNjcm9sbEluU2Nyb2xsYWJsZUFyZWEoKmJveExheWVyLCB3aGVlbEV2ZW50
KTsKKyAgICAgICAgICAgICAgICBzY3JvbGxpbmdXYXNIYW5kbGVkID0gZGlkU2Nyb2xsSW5TY3Jv
bGxhYmxlQXJlYSgqYm94TGF5ZXIsIHdoZWVsRXZlbnQsIHNjcm9sbENoYWluaW5nQmxvY2tlcik7
CiAKICAgICAgICAgICAgIGlmIChzY3JvbGxpbmdXYXNIYW5kbGVkKQogICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOworCisgICAgICAgICAgICBpZiAoY3VycmVudEVuY2xvc2luZ0JveC0+ZWxl
bWVudCgpICE9IGN1cnJlbnRFbmNsb3NpbmdCb3gtPmRvY3VtZW50KCkuZG9jdW1lbnRFbGVtZW50
KCkpIHsKKyAgICAgICAgICAgICAgICB1cGRhdGVTY3JvbGxDaGFpbmluZ0Jsb2NrZXIoYm94TGF5
ZXIsIHNjcm9sbENoYWluaW5nQmxvY2tlcik7CisgICAgICAgICAgICAgICAgaWYgKChzY3JvbGxD
aGFpbmluZ0Jsb2NrZXIuYmxvY2tYICYmIHNjcm9sbENoYWluaW5nQmxvY2tlci5ibG9ja1kpCisg
ICAgICAgICAgICAgICAgICAgIHx8IChzY3JvbGxDaGFpbmluZ0Jsb2NrZXIuYmxvY2tZICYmICFi
aWFzZWREZWx0YS53aWR0aCgpKQorICAgICAgICAgICAgICAgICAgICB8fCAoc2Nyb2xsQ2hhaW5p
bmdCbG9ja2VyLmJsb2NrWCAmJiAhYmlhc2VkRGVsdGEuaGVpZ2h0KCkpKQorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAg
IGN1cnJlbnRFbmNsb3NpbmdCb3ggPSBjdXJyZW50RW5jbG9zaW5nQm94LT5jb250YWluaW5nQmxv
Y2soKTsKQEAgLTMwNzAsNiArMzE4OSw3IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpkZWZhdWx0V2hl
ZWxFdmVudEhhbmRsZXIoTm9kZSogc3RhcnROb2RlLCBXaGVlbEV2ZW50JiB3aGVlbEV2CiAgICAg
aWYgKCFtX2ZyYW1lLnBhZ2UoKS0+c2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyKCkubGF0Y2hpbmdB
bGxvd3NTY3JvbGxpbmdJbkZyYW1lKG1fZnJhbWUsIGxhdGNoZWRTY3JvbGxlcikpCiAgICAgICAg
IHJldHVybjsKIAorICAgIFNjcm9sbENoYWluaW5nQmxvY2tlciBzY3JvbGxDaGFpbmluZ0Jsb2Nr
ZXIgPSBtX2ZyYW1lLnBhZ2UoKS0+c2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyKCkuZ2V0U2Nyb2xs
Q2hhaW5pbmdCbG9ja2VyKG1fZnJhbWUpOwogICAgIGlmIChsYXRjaGVkU2Nyb2xsZXIpIHsKICAg
ICAgICAgaWYgKGxhdGNoZWRTY3JvbGxlciA9PSBtX2ZyYW1lLnZpZXcoKSkgewogICAgICAgICAg
ICAgLy8gRnJhbWVWaWV3IHNjcm9sbGluZyBpcyBoYW5kbGVkIHZpYSBwcm9jZXNzV2hlZWxFdmVu
dEZvclNjcm9sbGluZygpLgpAQCAtMzA3OCw2ICszMTk4LDcgQEAgdm9pZCBFdmVudEhhbmRsZXI6
OmRlZmF1bHRXaGVlbEV2ZW50SGFuZGxlcihOb2RlKiBzdGFydE5vZGUsIFdoZWVsRXZlbnQmIHdo
ZWVsRXYKIAogICAgICAgICBhdXRvIHBsYXRmb3JtRXZlbnQgPSB3aGVlbEV2ZW50LnVuZGVybHlp
bmdQbGF0Zm9ybUV2ZW50KCk7CiAgICAgICAgIGlmIChwbGF0Zm9ybUV2ZW50KSB7CisgICAgICAg
ICAgICBhZGp1c3REZWx0YXMoc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLCBmaWx0ZXJlZFBsYXRmb3Jt
RGVsdGEpOwogICAgICAgICAgICAgYXV0byBjb3BpZWRFdmVudCA9IHBsYXRmb3JtRXZlbnQtPmNv
cHlXaXRoRGVsdGFzQW5kVmVsb2NpdHkoZmlsdGVyZWRQbGF0Zm9ybURlbHRhLndpZHRoKCksIGZp
bHRlcmVkUGxhdGZvcm1EZWx0YS5oZWlnaHQoKSwgZmlsdGVyZWRWZWxvY2l0eSk7CiAgICAgICAg
ICAgICBpZiAoaGFuZGxlV2hlZWxFdmVudEluU2Nyb2xsYWJsZUFyZWEoY29waWVkRXZlbnQsICps
YXRjaGVkU2Nyb2xsZXIsIGV2ZW50SGFuZGxpbmcpKQogICAgICAgICAgICAgICAgIHdoZWVsRXZl
bnQuc2V0RGVmYXVsdEhhbmRsZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RXZlbnRIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCmluZGV4
IDFiMTc1ZGE3OTNjNmM1MTJkMTA0OTlmZTkxZjBmNThjMTlhNzc5ZWEuLjBjMjhmNTU5YTlkNDdk
Njg4NTJhNDFhODE2MTRjNDZiOTU2YjdkMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIu
aApAQCAtMzUzLDYgKzM1MywxMCBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkK
ICAgICBFbGVtZW50KiBkcmFnZ2luZ0VsZW1lbnQoKSBjb25zdDsKICNlbmRpZgorCisgICAgc3Rh
dGljIHZvaWQgdXBkYXRlU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKFNjcm9sbGFibGVBcmVhKiwgU2Ny
b2xsQ2hhaW5pbmdCbG9ja2VyJik7CisgICAgc3RhdGljIGJvb2wgc2hvdWxkQmxvY2tTY3JvbGxD
aGFpbmluZyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBjb25zdCBTY3JvbGxDaGFpbmluZ0Js
b2NrZXImKTsKKwogcHJpdmF0ZToKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogICAgIHN0YXRp
YyBEcmFnU3RhdGUmIGRyYWdTdGF0ZSgpOwpAQCAtNDY4LDcgKzQ3Miw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBwcm9jZXNzV2hlZWxFdmVudEZvclNjcm9sbFNuYXAoY29uc3QgUGxhdGZvcm1XaGVl
bEV2ZW50JiwgY29uc3QgV2Vha1B0cjxTY3JvbGxhYmxlQXJlYT4mKTsKICAgICBib29sIGNvbXBs
ZXRlV2lkZ2V0V2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBjb25zdCBXZWFr
UHRyPFdpZGdldD4mLCBjb25zdCBXZWFrUHRyPFNjcm9sbGFibGVBcmVhPiYpOwogCi0gICAgYm9v
bCBoYW5kbGVXaGVlbEV2ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2luZ0JveChOb2RlKiBzdGFydE5v
ZGUsIGNvbnN0IFdoZWVsRXZlbnQmLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlcmVkUGxhdGZvcm1E
ZWx0YSwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJlZFZlbG9jaXR5LCBPcHRpb25TZXQ8RXZlbnRI
YW5kbGluZz4pOworICAgIGJvb2wgaGFuZGxlV2hlZWxFdmVudEluQXBwcm9wcmlhdGVFbmNsb3Np
bmdCb3goTm9kZSogc3RhcnROb2RlLCBjb25zdCBXaGVlbEV2ZW50JiwgRmxvYXRTaXplJiBmaWx0
ZXJlZFBsYXRmb3JtRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyZWRWZWxvY2l0eSwgT3B0
aW9uU2V0PEV2ZW50SGFuZGxpbmc+KTsKIAogICAgIGJvb2wgaGFuZGxlV2hlZWxFdmVudEluU2Ny
b2xsYWJsZUFyZWEoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgU2Nyb2xsYWJsZUFyZWEmLCBP
cHRpb25TZXQ8RXZlbnRIYW5kbGluZz4pOwogICAgIE9wdGlvbmFsPFdoZWVsU2Nyb2xsR2VzdHVy
ZVN0YXRlPiB1cGRhdGVXaGVlbEdlc3R1cmVTdGF0ZShjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQm
LCBPcHRpb25TZXQ8RXZlbnRIYW5kbGluZz4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmlu
ZGV4IGVlZDQ1M2E2M2UyZmJhNGQ4YjVlMjk5YmU5NzIyODRlNTlkOTI3MDguLmNjN2Q5M2ZjMmQ5
ZDJhZTk4ODRjODZhMDlkOWIyNzI4MzZjYzRlYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5j
cHAKQEAgLTQxOCw2ICs0MTgsMjQgQEAgYm9vbCBGcmFtZVZpZXc6OmRpZEZpcnN0TGF5b3V0KCkg
Y29uc3QKICAgICByZXR1cm4gbGF5b3V0Q29udGV4dCgpLmRpZEZpcnN0TGF5b3V0KCk7CiB9CiAK
K092ZXJzY3JvbGxCZWhhdmlvciBGcmFtZVZpZXc6Omhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZp
b3IoKSBjb25zdAoreworICAgIGF1dG8qIGRvY3VtZW50ID0gZnJhbWUoKS5kb2N1bWVudCgpOwor
ICAgIGF1dG8gc2Nyb2xsaW5nT2JqZWN0ID0gZG9jdW1lbnQgJiYgZG9jdW1lbnQtPmRvY3VtZW50
RWxlbWVudCgpID8gZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpLT5yZW5kZXJlcigpIDogbnVs
bHB0cjsKKyAgICBpZiAoIXNjcm9sbGluZ09iamVjdCB8fCAhbWF4aW11bVNjcm9sbE9mZnNldCgp
LngoKSkKKyAgICAgICAgcmV0dXJuIFNjcm9sbGFibGVBcmVhOjpob3Jpem9udGFsT3ZlcnNjcm9s
bEJlaGF2aW9yKCk7CisgICAgcmV0dXJuIHNjcm9sbGluZ09iamVjdC0+c3R5bGUoKS5vdmVyc2Ny
b2xsQmVoYXZpb3JYKCk7Cit9CisKK092ZXJzY3JvbGxCZWhhdmlvciBGcmFtZVZpZXc6OnZlcnRp
Y2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgIGNvbnN0Cit7CisgICAgYXV0byogZG9jdW1lbnQgPSBm
cmFtZSgpLmRvY3VtZW50KCk7CisgICAgYXV0byBzY3JvbGxpbmdPYmplY3QgPSBkb2N1bWVudCAm
JiBkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCkgPyBkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50
KCktPnJlbmRlcmVyKCkgOiBudWxscHRyOworICAgIGlmICghc2Nyb2xsaW5nT2JqZWN0IHx8ICFt
YXhpbXVtU2Nyb2xsT2Zmc2V0KCkueSgpKQorICAgICAgICByZXR1cm4gU2Nyb2xsYWJsZUFyZWE6
OnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCk7CisgICAgcmV0dXJuIHNjcm9sbGluZ09iamVj
dC0+c3R5bGUoKS5vdmVyc2Nyb2xsQmVoYXZpb3JZKCk7Cit9CisKIHZvaWQgRnJhbWVWaWV3Ojpp
bnZhbGlkYXRlUmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIGlmICghcGFyZW50KCkp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCmluZGV4IDkxM2VmMjZlMjBhNTFiMmQ1NjRlYmQzNmVh
MmIwMzg1OTE5NjhmZTQuLjQ4NmNlYzk0NmI1OWVmZDIwNDk0ZTkwNTRkZTI2MTY4MDQ2OWExMGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaApAQCAtNzUwLDYgKzc1MCw5IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCB1bm9ic2N1cmVkQ29udGVudFNpemVDaGFuZ2VkKCkgZmluYWw7CiAKICAgICAvLyBT
Y3JvbGxhYmxlQXJlYSBpbnRlcmZhY2UKKyAgICBPdmVyc2Nyb2xsQmVoYXZpb3IgaG9yaXpvbnRh
bE92ZXJzY3JvbGxCZWhhdmlvcigpIGNvbnN0IGZpbmFsOworICAgIE92ZXJzY3JvbGxCZWhhdmlv
ciB2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpIGNvbnN0IGZpbmFsOworCiAgICAgdm9pZCBp
bnZhbGlkYXRlU2Nyb2xsYmFyUmVjdChTY3JvbGxiYXImLCBjb25zdCBJbnRSZWN0JikgZmluYWw7
CiAgICAgdm9pZCBzY3JvbGxUbyhjb25zdCBTY3JvbGxQb3NpdGlvbiYpIGZpbmFsOwogICAgIHZv
aWQgc2V0VmlzaWJsZVNjcm9sbGVyVGh1bWJSZWN0KGNvbnN0IEludFJlY3QmKSBmaW5hbDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbQppbmRleCA3MTQxNTM2NWJh
YmFmNWE5NDIzYTI5ZjYxYjc4MmZmZTMyYjQ5MzE3Li5iOGI4MjYwZjZlNmFmYzIxNmU1MGJjZDMy
MTJjYzg2ZTcwNTA4MjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVu
dEhhbmRsZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVy
TWFjLm1tCkBAIC03OTUsOSArNzk1LDkgQEAgc3RhdGljIFNjcm9sbGFibGVBcmVhKiBzY3JvbGxh
YmxlQXJlYUZvckJveChSZW5kZXJCb3gmIGJveCkKIH0KIAogLy8gRklYTUU6IFRoaXMgY291bGQg
YmUgd3JpdHRlbiBpbiB0ZXJtcyBvZiBTY3JvbGxhYmxlQXJlYTo6ZW5jbG9zaW5nU2Nyb2xsYWJs
ZUFyZWEoKS4KLXN0YXRpYyBDb250YWluZXJOb2RlKiBmaW5kRW5jbG9zaW5nU2Nyb2xsYWJsZUNv
bnRhaW5lcihDb250YWluZXJOb2RlKiBub2RlLCBjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdo
ZWVsRXZlbnQpCitzdGF0aWMgQ29udGFpbmVyTm9kZSogZmluZEVuY2xvc2luZ1Njcm9sbGFibGVD
b250YWluZXIoQ29udGFpbmVyTm9kZSogbm9kZSwgY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3
aGVlbEV2ZW50LCBTY3JvbGxDaGFpbmluZ0Jsb2NrZXImIHNjcm9sbENoYWluaW5nQmxvY2tlcikK
IHsKLSAgICBhdXRvIGJpYXNlZERlbHRhID0gU2Nyb2xsQ29udHJvbGxlcjo6d2hlZWxEZWx0YUJp
YXNpbmdUb3dhcmRzVmVydGljYWwod2hlZWxFdmVudCk7CisgICAgYXV0byBiaWFzZWREZWx0YSA9
IFBsYXRmb3JtV2hlZWxFdmVudDo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwod2hl
ZWxFdmVudC5kZWx0YSgpKTsKIAogICAgIC8vIEZpbmQgdGhlIGZpcnN0IG5vZGUgd2l0aCBhIHZh
bGlkIHNjcm9sbGFibGUgYXJlYSBzdGFydGluZyB3aXRoIHRoZSBjdXJyZW50CiAgICAgLy8gbm9k
ZSBhbmQgdHJhdmVyc2luZyBpdHMgcGFyZW50cyAob3Igc2hhZG93IGhvc3RzKS4KQEAgLTgwOSwy
MSArODA5LDI5IEBAIHN0YXRpYyBDb250YWluZXJOb2RlKiBmaW5kRW5jbG9zaW5nU2Nyb2xsYWJs
ZUNvbnRhaW5lcihDb250YWluZXJOb2RlKiBub2RlLCBjb25zCiAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgICAgICBSZW5kZXJCb3gqIGJveCA9IGNhbmRpZGF0ZS0+cmVuZGVyQm94
KCk7Ci0gICAgICAgIGlmICghYm94IHx8ICFib3gtPmNhbkJlU2Nyb2xsZWRBbmRIYXNTY3JvbGxh
YmxlQXJlYSgpKQorICAgICAgICBpZiAoIWJveCkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICAKKwogICAgICAgICBhdXRvKiBzY3JvbGxhYmxlQXJlYSA9IHNjcm9sbGFibGVBcmVhRm9y
Qm94KCpib3gpOwotICAgICAgICBpZiAoIXNjcm9sbGFibGVBcmVhKQotICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgIGlmIChzY3JvbGxhYmxlQXJlYSAmJiBib3gtPmNhbkJlU2Nyb2xsZWRB
bmRIYXNTY3JvbGxhYmxlQXJlYSgpKSB7CisgICAgICAgICAgICBpZiAod2hlZWxFdmVudC5waGFz
ZSgpID09IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlOjpNYXlCZWdpbiAgfHwgd2hlZWxFdmVudC5w
aGFzZSgpID09IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlOjpDYW5jZWxsZWQpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGNhbmRpZGF0ZTsKIAotICAgICAgICBpZiAod2hlZWxFdmVudC5waGFzZSgp
ID09IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlOjpNYXlCZWdpbiB8fCB3aGVlbEV2ZW50LnBoYXNl
KCkgPT0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2U6OkNhbmNlbGxlZCkKLSAgICAgICAgICAgIHJl
dHVybiBjYW5kaWRhdGU7CisgICAgICAgICAgICBpZiAoKGJpYXNlZERlbHRhLmhlaWdodCgpID4g
MCAmJiAhc2Nyb2xsYWJsZUFyZWEtPnNjcm9sbGVkVG9Ub3AoKSkgfHwgKGJpYXNlZERlbHRhLmhl
aWdodCgpIDwgMCAmJiAhc2Nyb2xsYWJsZUFyZWEtPnNjcm9sbGVkVG9Cb3R0b20oKSkKKyAgICAg
ICAgICAgICAgICB8fCAoYmlhc2VkRGVsdGEud2lkdGgoKSA+IDAgJiYgIXNjcm9sbGFibGVBcmVh
LT5zY3JvbGxlZFRvTGVmdCgpKSB8fCAoYmlhc2VkRGVsdGEud2lkdGgoKSA8IDAgJiYgIXNjcm9s
bGFibGVBcmVhLT5zY3JvbGxlZFRvUmlnaHQoKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGNh
bmRpZGF0ZTsKKyAgICAgICAgfQorICAgICAgICAvLyBMZXQgRnJhbWVWaWV3Ojpob3Jpem9udGFs
T3ZlcnNjcm9sbEJlaGF2aW9yIGRlY2lkZSB3aGljaCBub2RlJ3Mgb3ZlcnNjcm9sbC1iYWh2aW9y
IGlzIGVmZmVjdGl2ZSB0byBGcmFtZVZpZXcuCisgICAgICAgIGlmIChjYW5kaWRhdGUgPT0gY2Fu
ZGlkYXRlLT5kb2N1bWVudCgpLmJvZHkoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICBpZiAoY2FuZGlkYXRlID09IG5vZGUpCisgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAg
ICBpZiAoKGJpYXNlZERlbHRhLmhlaWdodCgpID4gMCAmJiAhc2Nyb2xsYWJsZUFyZWEtPnNjcm9s
bGVkVG9Ub3AoKSkgfHwgKGJpYXNlZERlbHRhLmhlaWdodCgpIDwgMCAmJiAhc2Nyb2xsYWJsZUFy
ZWEtPnNjcm9sbGVkVG9Cb3R0b20oKSkKLSAgICAgICAgICAgIHx8IChiaWFzZWREZWx0YS53aWR0
aCgpID4gMCAmJiAhc2Nyb2xsYWJsZUFyZWEtPnNjcm9sbGVkVG9MZWZ0KCkpIHx8IChiaWFzZWRE
ZWx0YS53aWR0aCgpIDwgMCAmJiAhc2Nyb2xsYWJsZUFyZWEtPnNjcm9sbGVkVG9SaWdodCgpKSkK
LSAgICAgICAgICAgIHJldHVybiBjYW5kaWRhdGU7CisgICAgICAgIEV2ZW50SGFuZGxlcjo6dXBk
YXRlU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKHNjcm9sbGFibGVBcmVhLCBzY3JvbGxDaGFpbmluZ0Js
b2NrZXIpOworICAgICAgICBpZiAoRXZlbnRIYW5kbGVyOjpzaG91bGRCbG9ja1Njcm9sbENoYWlu
aW5nKHdoZWVsRXZlbnQsIHNjcm9sbENoYWluaW5nQmxvY2tlcikpCisgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgCisKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAt
ODY4LDEwICs4NzYsMTEgQEAgdm9pZCBFdmVudEhhbmRsZXI6OmRldGVybWluZVdoZWVsRXZlbnRU
YXJnZXQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW4KICAgICBpZiAoIXZpZXcp
CiAgICAgICAgIHJldHVybjsKIAorICAgIFNjcm9sbENoYWluaW5nQmxvY2tlciBzY3JvbGxDaGFp
bmluZ0Jsb2NrZXI7CiAgICAgaWYgKGV2ZW50VGFyZ2V0SXNQbGF0Zm9ybVdpZGdldCh3aGVlbEV2
ZW50VGFyZ2V0LmdldCgpKSkKICAgICAgICAgc2Nyb2xsYWJsZUFyZWEgPSBzY3JvbGxhYmxlQXJl
YUZvckV2ZW50VGFyZ2V0KHdoZWVsRXZlbnRUYXJnZXQuZ2V0KCkpOwogICAgIGVsc2UgewotICAg
ICAgICBhdXRvKiBzY3JvbGxhYmxlQ29udGFpbmVyID0gZmluZEVuY2xvc2luZ1Njcm9sbGFibGVD
b250YWluZXIod2hlZWxFdmVudFRhcmdldC5nZXQoKSwgd2hlZWxFdmVudCk7CisgICAgICAgIGF1
dG8qIHNjcm9sbGFibGVDb250YWluZXIgPSBmaW5kRW5jbG9zaW5nU2Nyb2xsYWJsZUNvbnRhaW5l
cih3aGVlbEV2ZW50VGFyZ2V0LmdldCgpLCB3aGVlbEV2ZW50LCBzY3JvbGxDaGFpbmluZ0Jsb2Nr
ZXIpOwogICAgICAgICBpZiAoc2Nyb2xsYWJsZUNvbnRhaW5lcikKICAgICAgICAgICAgIHNjcm9s
bGFibGVBcmVhID0gc2Nyb2xsYWJsZUFyZWFGb3JDb250YWluZXJOb2RlKCpzY3JvbGxhYmxlQ29u
dGFpbmVyKTsKICAgICAgICAgZWxzZQpAQCAtODg5LDcgKzg5OCw3IEBAIHZvaWQgRXZlbnRIYW5k
bGVyOjpkZXRlcm1pbmVXaGVlbEV2ZW50VGFyZ2V0KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYg
d2hlZWxFdmVuCiAgICAgaWYgKG1fZnJhbWUuaXNNYWluRnJhbWUoKSAmJiB3aGVlbEV2ZW50Lmlz
R2VzdHVyZVN0YXJ0KCkpCiAgICAgICAgIHBhZ2UtPndoZWVsRXZlbnREZWx0YUZpbHRlcigpLT5i
ZWdpbkZpbHRlcmluZ0RlbHRhcygpOwogCi0gICAgcGFnZS0+c2Nyb2xsTGF0Y2hpbmdDb250cm9s
bGVyKCkudXBkYXRlQW5kRmV0Y2hMYXRjaGluZ1N0YXRlRm9yRnJhbWUobV9mcmFtZSwgd2hlZWxF
dmVudCwgd2hlZWxFdmVudFRhcmdldCwgc2Nyb2xsYWJsZUFyZWEsIGlzT3ZlcldpZGdldCk7Cisg
ICAgcGFnZS0+c2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyKCkudXBkYXRlQW5kRmV0Y2hMYXRjaGlu
Z1N0YXRlRm9yRnJhbWUobV9mcmFtZSwgd2hlZWxFdmVudCwgd2hlZWxFdmVudFRhcmdldCwgc2Ny
b2xsYWJsZUFyZWEsIHNjcm9sbENoYWluaW5nQmxvY2tlciwgaXNPdmVyV2lkZ2V0KTsKIH0KIAog
dm9pZCBFdmVudEhhbmRsZXI6OnJlY29yZFdoZWVsRXZlbnRGb3JEZWx0YUZpbHRlcihjb25zdCBQ
bGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpCkBAIC05MDgsNiArOTE3LDcgQEAgdm9pZCBF
dmVudEhhbmRsZXI6OnJlY29yZFdoZWVsRXZlbnRGb3JEZWx0YUZpbHRlcihjb25zdCBQbGF0Zm9y
bVdoZWVsRXZlbnQmIHdoZWUKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9CisK
ICAgICBwYWdlLT53aGVlbEV2ZW50RGVsdGFGaWx0ZXIoKS0+dXBkYXRlRnJvbURlbHRhKEZsb2F0
U2l6ZSh3aGVlbEV2ZW50LmRlbHRhWCgpLCB3aGVlbEV2ZW50LmRlbHRhWSgpKSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29v
cmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxp
bmdDb29yZGluYXRvci5jcHAKaW5kZXggNzBlYTAzNmY4M2M5ZWYyOTQ5OGQ5OGQwMWRhZWYzNGZj
MzkwYTc5My4uNWViMmMyNWMyMTJlNDRmNWVjZWVlY2MyMmFlNDkyMDljNzFjNjAxYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGlu
YXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxp
bmdDb29yZGluYXRvci5jcHAKQEAgLTY5Nyw2ICs2OTcsOCBAQCB2b2lkIEFzeW5jU2Nyb2xsaW5n
Q29vcmRpbmF0b3I6OnNldFNjcm9sbGluZ05vZGVTY3JvbGxhYmxlQXJlYUdlb21ldHJ5KFNjcm9s
bGluZwogICAgIHNjcm9sbGluZ05vZGUuc2V0U2Nyb2xsYWJsZUFyZWFTaXplKHNjcm9sbGFibGVB
cmVhLnZpc2libGVTaXplKCkpOwogCiAgICAgU2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzIHNjcm9s
bFBhcmFtZXRlcnM7CisgICAgc2Nyb2xsUGFyYW1ldGVycy5ob3Jpem9udGFsT3ZlcnNjcm9sbEJl
aGF2aW9yID0gc2Nyb2xsYWJsZUFyZWEuaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpOwor
ICAgIHNjcm9sbFBhcmFtZXRlcnMudmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IgPSBzY3JvbGxh
YmxlQXJlYS52ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpOwogICAgIHNjcm9sbFBhcmFtZXRl
cnMuaG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkgPSBzY3JvbGxhYmxlQXJlYS5ob3Jpem9udGFs
U2Nyb2xsRWxhc3RpY2l0eSgpOwogICAgIHNjcm9sbFBhcmFtZXRlcnMudmVydGljYWxTY3JvbGxF
bGFzdGljaXR5ID0gc2Nyb2xsYWJsZUFyZWEudmVydGljYWxTY3JvbGxFbGFzdGljaXR5KCk7CiAg
ICAgc2Nyb2xsUGFyYW1ldGVycy5hbGxvd3NIb3Jpem9udGFsU2Nyb2xsaW5nID0gc2Nyb2xsYWJs
ZUFyZWEuYWxsb3dzSG9yaXpvbnRhbFNjcm9sbGluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbExhdGNoaW5nQ29udHJvbGxlci5jcHAKaW5k
ZXggNGVkNGQ5NzVhN2VhNDUwMDk3ZmNiYjRkZTlhMmUwMzIxYzZhNjc3Yi4uYmEwMDExZDMxYjM3
ODU1MTJiNDU0MjkwMjk5YTVlYWMwMWZlYjBmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIuY3BwCkBAIC0x
MDgsNyArMTA4LDcgQEAgYm9vbCBTY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXI6OmxhdGNoaW5nQWxs
b3dzU2Nyb2xsaW5nSW5GcmFtZShjb25zdCBGcmFtZSYgZnJhbWUKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLXZvaWQgU2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyOjp1cGRhdGVBbmRGZXRjaExhdGNo
aW5nU3RhdGVGb3JGcmFtZShGcmFtZSYgZnJhbWUsIGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYg
d2hlZWxFdmVudCwgUmVmUHRyPEVsZW1lbnQ+JiBsYXRjaGVkRWxlbWVudCwgV2Vha1B0cjxTY3Jv
bGxhYmxlQXJlYT4mIHNjcm9sbGFibGVBcmVhLCBib29sJiBpc092ZXJXaWRnZXQpCit2b2lkIFNj
cm9sbExhdGNoaW5nQ29udHJvbGxlcjo6dXBkYXRlQW5kRmV0Y2hMYXRjaGluZ1N0YXRlRm9yRnJh
bWUoRnJhbWUmIGZyYW1lLCBjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIFJl
ZlB0cjxFbGVtZW50PiYgbGF0Y2hlZEVsZW1lbnQsIFdlYWtQdHI8U2Nyb2xsYWJsZUFyZWE+JiBz
Y3JvbGxhYmxlQXJlYSwgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyJiBzY3JvbGxDaGFpbmluZ0Jsb2Nr
ZXIsIGJvb2wmIGlzT3ZlcldpZGdldCkKIHsKICAgICBpZiAod2hlZWxFdmVudC5pc0dlc3R1cmVT
dGFydCgpKSB7CiAgICAgICAgIC8vIFdlIGNhbiBoYXZlIGV4aXN0aW5nIHN0YXRlIGhlcmUgYmVj
YXVzZSBzdGF0ZSBpcyBjbGVhcmVkIG9uIGEgdGltZXIuCkBAIC0xMTgsNiArMTE4LDcgQEAgdm9p
ZCBTY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXI6OnVwZGF0ZUFuZEZldGNoTGF0Y2hpbmdTdGF0ZUZv
ckZyYW1lKEZyYW1lJiBmcmFtZSwKICAgICAgICAgICAgIHN0YXRlLndoZWVsRXZlbnRFbGVtZW50
ID0gbWFrZVdlYWtQdHIobGF0Y2hlZEVsZW1lbnQuZ2V0KCkpOwogICAgICAgICAgICAgaWYgKHNo
b3VsZExhdGNoVG9TY3JvbGxhYmxlQXJlYShmcmFtZSwgc2Nyb2xsYWJsZUFyZWEuZ2V0KCksIG1f
Y3VtdWxhdGl2ZUV2ZW50RGVsdGEpKQogICAgICAgICAgICAgICAgIHN0YXRlLnNjcm9sbGFibGVB
cmVhID0gc2Nyb2xsYWJsZUFyZWE7CisgICAgICAgICAgICBzdGF0ZS5zY3JvbGxDaGFpbmluZ0Js
b2NrZXIgPSBzY3JvbGxDaGFpbmluZ0Jsb2NrZXI7CiAgICAgICAgICAgICBzdGF0ZS5pc092ZXJX
aWRnZXQgPSBpc092ZXJXaWRnZXQ7CiAKICAgICAgICAgICAgIExPR19XSVRIX1NUUkVBTShTY3Jv
bGxMYXRjaGluZywgc3RyZWFtIDw8ICJTY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXI6OnVwZGF0ZUFu
ZEZldGNoTGF0Y2hpbmdTdGF0ZUZvckZyYW1lKCkgLSBwdXNoaW5nIHN0YXRlIGZvciBGcmFtZSAi
IDw8ICZmcmFtZSA8PCAiIGVsZW1lbnQgIiA8PCBzdGF0ZS53aGVlbEV2ZW50RWxlbWVudC5nZXQo
KSA8PCAiIHNjcm9sbGFibGVBcmVhICIgPDwgc3RhdGUuc2Nyb2xsYWJsZUFyZWEpOwpAQCAtMTMy
LDggKzEzMywxMCBAQCB2b2lkIFNjcm9sbExhdGNoaW5nQ29udHJvbGxlcjo6dXBkYXRlQW5kRmV0
Y2hMYXRjaGluZ1N0YXRlRm9yRnJhbWUoRnJhbWUmIGZyYW1lLAogICAgICAgICAgICAgcmV0dXJu
OwogCiAgICAgICAgIC8vIFdlIG1heSBub3QgaGF2ZSBsYXRjaGVkIGF0IGdlc3R1cmUgc3RhcnQg
YmVjYXVzZSBvZiBzbWFsbCBkZWx0YXMuIFJlLWV2YWx1YXRlIGxhdGNoaW5nIGJhc2VkIG9uIGFj
Y3VtdWxhdGVkIGRlbHRhLgotICAgICAgICBpZiAoIXN0YXRlLT5zY3JvbGxhYmxlQXJlYSAmJiBz
aG91bGRMYXRjaFRvU2Nyb2xsYWJsZUFyZWEoZnJhbWUsIHNjcm9sbGFibGVBcmVhLmdldCgpLCBt
X2N1bXVsYXRpdmVFdmVudERlbHRhKSkKKyAgICAgICAgaWYgKCFzdGF0ZS0+c2Nyb2xsYWJsZUFy
ZWEgJiYgc2hvdWxkTGF0Y2hUb1Njcm9sbGFibGVBcmVhKGZyYW1lLCBzY3JvbGxhYmxlQXJlYS5n
ZXQoKSwgbV9jdW11bGF0aXZlRXZlbnREZWx0YSkpIHsKICAgICAgICAgICAgIHN0YXRlLT5zY3Jv
bGxhYmxlQXJlYSA9IHNjcm9sbGFibGVBcmVhOworICAgICAgICAgICAgc3RhdGUtPnNjcm9sbENo
YWluaW5nQmxvY2tlciA9IHNjcm9sbENoYWluaW5nQmxvY2tlcjsKKyAgICAgICAgfQogICAgIH0K
IAogICAgIGlmICghd2hlZWxFdmVudC51c2VMYXRjaGVkRXZlbnRFbGVtZW50KCkpCkBAIC0xNDQs
MTIgKzE0NywzNCBAQCB2b2lkIFNjcm9sbExhdGNoaW5nQ29udHJvbGxlcjo6dXBkYXRlQW5kRmV0
Y2hMYXRjaGluZ1N0YXRlRm9yRnJhbWUoRnJhbWUmIGZyYW1lLAogICAgICAgICAgICAgbGF0Y2hl
ZEVsZW1lbnQgPSBzdGF0ZS53aGVlbEV2ZW50RWxlbWVudC5nZXQoKTsKICAgICAgICAgICAgIHNj
cm9sbGFibGVBcmVhID0gc3RhdGUuc2Nyb2xsYWJsZUFyZWE7CiAgICAgICAgICAgICBpc092ZXJX
aWRnZXQgPSBzdGF0ZS5pc092ZXJXaWRnZXQ7CisgICAgICAgICAgICBzY3JvbGxDaGFpbmluZ0Js
b2NrZXIgPSBzdGF0ZS5zY3JvbGxDaGFpbmluZ0Jsb2NrZXI7CiAKICAgICAgICAgICAgIExPR19X
SVRIX1NUUkVBTShTY3JvbGxMYXRjaGluZywgc3RyZWFtIDw8ICJTY3JvbGxMYXRjaGluZ0NvbnRy
b2xsZXI6OnVwZGF0ZUFuZEZldGNoTGF0Y2hpbmdTdGF0ZUZvckZyYW1lKCkgLSB1c2luZyBzdGF0
ZSBmb3IgRnJhbWUgIiA8PCAmZnJhbWUgPDwgIiBlbGVtZW50ICIgPDwgbGF0Y2hlZEVsZW1lbnQu
Z2V0KCkgPDwgIiBzY3JvbGxhYmxlQXJlYSAiIDw8IHNjcm9sbGFibGVBcmVhKTsKICAgICAgICAg
fQogICAgIH0KIH0KIAorU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIFNjcm9sbExhdGNoaW5nQ29udHJv
bGxlcjo6Z2V0U2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKGNvbnN0IEZyYW1lJiBmcmFtZSkgY29uc3QK
K3sKKyAgICBpZiAoIW1fZnJhbWVTdGF0ZVN0YWNrLmlzRW1wdHkoKSkgeworICAgICAgICBhdXRv
KiBmcmFtZVN0YXRlID0gc3RhdGVGb3JGcmFtZShmcmFtZSk7CisgICAgICAgIGlmIChmcmFtZVN0
YXRlKQorICAgICAgICAgICAgcmV0dXJuIGZyYW1lU3RhdGUtPnNjcm9sbENoYWluaW5nQmxvY2tl
cjsKKyAgICB9CisKKyAgICByZXR1cm4geyBmYWxzZSwgZmFsc2UgfTsKK30KKwordm9pZCBTY3Jv
bGxMYXRjaGluZ0NvbnRyb2xsZXI6OnVwZGF0ZVNjcm9sbENoYWluaW5nQmxvY2tlcihjb25zdCBG
cmFtZSYgZnJhbWUsIGNvbnN0IFNjcm9sbENoYWluaW5nQmxvY2tlciYgc2Nyb2xsQ2hhaW5pbmdC
bG9ja2VyRnJvbVN1YmZyYW1lKQoreworICAgIGlmIChtX2ZyYW1lU3RhdGVTdGFjay5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoYXV0byogZnJhbWVTdGF0ZSA9IHN0YXRlRm9y
RnJhbWUoZnJhbWUpKSB7CisgICAgICAgIGZyYW1lU3RhdGUtPnNjcm9sbENoYWluaW5nQmxvY2tl
ci5ibG9ja1ggfD0gc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyRnJvbVN1YmZyYW1lLmJsb2NrWDsKKyAg
ICAgICAgZnJhbWVTdGF0ZS0+c2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLmJsb2NrWSB8PSBzY3JvbGxD
aGFpbmluZ0Jsb2NrZXJGcm9tU3ViZnJhbWUuYmxvY2tZOworICAgIH0KK30KKwogdm9pZCBTY3Jv
bGxMYXRjaGluZ0NvbnRyb2xsZXI6OnJlbW92ZUxhdGNoaW5nU3RhdGVGb3JUYXJnZXQoY29uc3Qg
RWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBpZiAobV9mcmFtZVN0YXRlU3RhY2suaXNFbXB0eSgp
KQpAQCAtMjUyLDYgKzI3Nyw4IEBAIHZvaWQgU2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyOjpkdW1w
KFdURjo6VGV4dFN0cmVhbSYgdHMpIGNvbnN0CiAgICAgICAgIG11bHRpbGluZVN0cmVhbS5kdW1w
UHJvcGVydHkoImZyYW1lIiwgVmFsdWVPck51bGwoc3RhdGUuZnJhbWUpKTsKICAgICAgICAgbXVs
dGlsaW5lU3RyZWFtLmR1bXBQcm9wZXJ0eSgiZWxlbWVudCIsIFZhbHVlT3JOdWxsKHN0YXRlLndo
ZWVsRXZlbnRFbGVtZW50LmdldCgpKSk7CiAgICAgICAgIG11bHRpbGluZVN0cmVhbS5kdW1wUHJv
cGVydHkoInNjcm9sbGFibGUgYXJlYSIsIFZhbHVlT3JOdWxsKHN0YXRlLnNjcm9sbGFibGVBcmVh
LmdldCgpKSk7CisgICAgICAgIG11bHRpbGluZVN0cmVhbS5kdW1wUHJvcGVydHkoInN0YXRlLnNj
cm9sbENoYWluaW5nQmxvY2tlci5ibG9ja1giLCBzdGF0ZS5zY3JvbGxDaGFpbmluZ0Jsb2NrZXIu
YmxvY2tYKTsKKyAgICAgICAgbXVsdGlsaW5lU3RyZWFtLmR1bXBQcm9wZXJ0eSgic3RhdGUuc2Ny
b2xsQ2hhaW5pbmdCbG9ja2VyLmJsb2NrWSIsIHN0YXRlLnNjcm9sbENoYWluaW5nQmxvY2tlci5i
bG9ja1kpOwogICAgICAgICBtdWx0aWxpbmVTdHJlYW0uZHVtcFByb3BlcnR5KCJpcyBvdmVyIHdp
ZGdldCIsIHN0YXRlLmlzT3ZlcldpZGdldCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbExhdGNoaW5nQ29udHJvbGxlci5oCmluZGV4
IDU2NDk2MTU5YzVlNjhkMmJjY2VmOGMyNjVlZTYxY2NiOWRmYjRiMjguLjhmZDhlMzBjNmExNjVk
OTk5OGQ0MTFkMjhiYmZmZDMyZWVmMjM2MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbExhdGNoaW5nQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbExhdGNoaW5nQ29udHJvbGxlci5oCkBAIC02MSw3ICs2
MSwxMCBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIG5vIGZyYW1lIGlzIGxhdGNo
ZWQsIG9yIGxhdGNoaW5nIGlzIGluIHRoZSBnaXZlbiBmcmFtZSAoaW4gd2hpY2ggY2FzZSBsYXRj
aGVkU2Nyb2xsZXIgd2lsbCBiZSBub24tbnVsbCkuCiAgICAgYm9vbCBsYXRjaGluZ0FsbG93c1Nj
cm9sbGluZ0luRnJhbWUoY29uc3QgRnJhbWUmLCBXZWFrUHRyPFNjcm9sbGFibGVBcmVhPiYgbGF0
Y2hlZFNjcm9sbGVyKSBjb25zdDsKIAotICAgIHZvaWQgdXBkYXRlQW5kRmV0Y2hMYXRjaGluZ1N0
YXRlRm9yRnJhbWUoRnJhbWUmLCBjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBSZWZQdHI8RWxl
bWVudD4mIGxhdGNoZWRFbGVtZW50LCBXZWFrUHRyPFNjcm9sbGFibGVBcmVhPiYsIGJvb2wmIGlz
T3ZlcldpZGdldCk7CisgICAgdm9pZCB1cGRhdGVBbmRGZXRjaExhdGNoaW5nU3RhdGVGb3JGcmFt
ZShGcmFtZSYsIGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIFJlZlB0cjxFbGVtZW50PiYgbGF0
Y2hlZEVsZW1lbnQsIFdlYWtQdHI8U2Nyb2xsYWJsZUFyZWE+JiwgU2Nyb2xsQ2hhaW5pbmdCbG9j
a2VyJiwgYm9vbCYgaXNPdmVyV2lkZ2V0KTsKKworICAgIFNjcm9sbENoYWluaW5nQmxvY2tlciBn
ZXRTY3JvbGxDaGFpbmluZ0Jsb2NrZXIoY29uc3QgRnJhbWUmKSBjb25zdDsKKyAgICB2b2lkIHVw
ZGF0ZVNjcm9sbENoYWluaW5nQmxvY2tlcihjb25zdCBGcmFtZSYsIGNvbnN0IFNjcm9sbENoYWlu
aW5nQmxvY2tlciYgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyRnJvbVN1YmZyYW1lKTsKIAogICAgIHZv
aWQgcmVtb3ZlTGF0Y2hpbmdTdGF0ZUZvclRhcmdldChjb25zdCBFbGVtZW50Jik7CiAgICAgdm9p
ZCByZW1vdmVMYXRjaGluZ1N0YXRlRm9yRnJhbWUoY29uc3QgRnJhbWUmKTsKQEAgLTczLDYgKzc2
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgV2Vha1B0cjxFbGVtZW50PiB3aGVlbEV2ZW50RWxlbWVu
dDsKICAgICAgICAgV2Vha1B0cjxTY3JvbGxhYmxlQXJlYT4gc2Nyb2xsYWJsZUFyZWE7CiAgICAg
ICAgIEZyYW1lKiBmcmFtZSB7IG51bGxwdHIgfTsKKyAgICAgICAgU2Nyb2xsQ2hhaW5pbmdCbG9j
a2VyIHNjcm9sbENoYWluaW5nQmxvY2tlcjsKICAgICAgICAgYm9vbCBpc092ZXJXaWRnZXQgeyBm
YWxzZSB9OwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yVHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yVHlwZXMuaAppbmRleCBlZWNhYjZmNTViNjVjNDYw
MTk5ZjgwZWYwNTA2NTUyYjcxZjMwODAzLi41Njc0ZGNhZTZjNDMyY2E0NmEwMjgzNWRkMDBhZDc0
MDEzY2U2YWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdDb29yZGluYXRvclR5cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3JUeXBlcy5oCkBAIC02OCw2ICs2OCw5IEBAIGVudW0gY2xh
c3MgU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbiB7CiB9OwogCiBzdHJ1Y3QgU2Nyb2xsYWJs
ZUFyZWFQYXJhbWV0ZXJzIHsKKyAgICBPdmVyc2Nyb2xsQmVoYXZpb3IgaG9yaXpvbnRhbE92ZXJz
Y3JvbGxCZWhhdmlvciB7IE92ZXJzY3JvbGxCZWhhdmlvcjo6IEF1dG8gfTsKKyAgICBPdmVyc2Ny
b2xsQmVoYXZpb3IgdmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IgeyBPdmVyc2Nyb2xsQmVoYXZp
b3I6OiBBdXRvIH07CisKICAgICBTY3JvbGxFbGFzdGljaXR5IGhvcml6b250YWxTY3JvbGxFbGFz
dGljaXR5IHsgU2Nyb2xsRWxhc3RpY2l0eU5vbmUgfTsKICAgICBTY3JvbGxFbGFzdGljaXR5IHZl
cnRpY2FsU2Nyb2xsRWxhc3RpY2l0eSB7IFNjcm9sbEVsYXN0aWNpdHlOb25lIH07CiAKQEAgLTg0
LDcgKzg3LDkgQEAgc3RydWN0IFNjcm9sbGFibGVBcmVhUGFyYW1ldGVycyB7CiAKICAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgU2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzJiBvdGhlcikgY29uc3QK
ICAgICB7Ci0gICAgICAgIHJldHVybiBob3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eSA9PSBvdGhl
ci5ob3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eQorICAgICAgICByZXR1cm4gaG9yaXpvbnRhbE92
ZXJzY3JvbGxCZWhhdmlvciA9PSBvdGhlci5ob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yCisg
ICAgICAgICAgICAmJiB2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvciA9PSBvdGhlci52ZXJ0aWNh
bE92ZXJzY3JvbGxCZWhhdmlvcgorICAgICAgICAgICAgJiYgaG9yaXpvbnRhbFNjcm9sbEVsYXN0
aWNpdHkgPT0gb3RoZXIuaG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkKICAgICAgICAgICAgICYm
IHZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eSA9PSBvdGhlci52ZXJ0aWNhbFNjcm9sbEVsYXN0aWNp
dHkKICAgICAgICAgICAgICYmIGhvcml6b250YWxTY3JvbGxiYXJNb2RlID09IG90aGVyLmhvcml6
b250YWxTY3JvbGxiYXJNb2RlCiAgICAgICAgICAgICAmJiB2ZXJ0aWNhbFNjcm9sbGJhck1vZGUg
PT0gb3RoZXIudmVydGljYWxTY3JvbGxiYXJNb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuY3BwCmluZGV4IDFjZWYzMWJiMzY2NTE2ZDNiNGE4Y2U4
MWZjMTlkZmFiNmU5MmEwZDUuLjYzYzQ4YTFlZjBjZTAyZDUzOWQyMzZjZDIzNDdiM2VjNGQ1ZWZj
ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1Ry
ZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUu
Y3BwCkBAIC0xNzYsMTkgKzE3Niw1NSBAQCBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQgU2Nyb2xs
aW5nVHJlZTo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbgogCiBXaGVl
bEV2ZW50SGFuZGxpbmdSZXN1bHQgU2Nyb2xsaW5nVHJlZTo6aGFuZGxlV2hlZWxFdmVudFdpdGhO
b2RlKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgT3B0aW9uU2V0PFdoZWVs
RXZlbnRQcm9jZXNzaW5nU3RlcHM+IHByb2Nlc3NpbmdTdGVwcywgU2Nyb2xsaW5nVHJlZU5vZGUq
IG5vZGUsIEV2ZW50VGFyZ2V0aW5nIGV2ZW50VGFyZ2V0aW5nKQogeworICAgIEZsb2F0U2l6ZSBm
aWx0ZXJlZFBsYXRmb3JtRGVsdGEod2hlZWxFdmVudC5kZWx0YVgoKSwgd2hlZWxFdmVudC5kZWx0
YVkoKSk7CisgICAgUGxhdGZvcm1XaGVlbEV2ZW50IGFkanVzdGVkV2hlZWxFdmVudCA9IFBsYXRm
b3JtV2hlZWxFdmVudCh3aGVlbEV2ZW50KTsKKyAgICBTY3JvbGxDaGFpbmluZ0Jsb2NrZXIgc2Ny
b2xsQ2hhaW5pbmdCbG9ja2VyID0geyBmYWxzZSwgZmFsc2UgfTsKKyAgICBhdXRvIGJpYXNlZERl
bHRhID0gUGxhdGZvcm1XaGVlbEV2ZW50Ojp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNh
bChmaWx0ZXJlZFBsYXRmb3JtRGVsdGEpOwogICAgIHdoaWxlIChub2RlKSB7CiAgICAgICAgIGlm
IChpczxTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZT4oKm5vZGUpKSB7CiAgICAgICAgICAgICBh
dXRvJiBzY3JvbGxpbmdOb2RlID0gZG93bmNhc3Q8U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU+
KCpub2RlKTsKLSAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gc2Nyb2xsaW5nTm9kZS5oYW5kbGVX
aGVlbEV2ZW50KHdoZWVsRXZlbnQsIGV2ZW50VGFyZ2V0aW5nKTsKKyAgICAgICAgICAgIGF1dG8g
cmVzdWx0ID0gc2Nyb2xsaW5nTm9kZS5oYW5kbGVXaGVlbEV2ZW50KGFkanVzdGVkV2hlZWxFdmVu
dCwgZXZlbnRUYXJnZXRpbmcpOwogCiAgICAgICAgICAgICBpZiAocmVzdWx0Lndhc0hhbmRsZWQp
IHsKLSAgICAgICAgICAgICAgICBtX2xhdGNoaW5nQ29udHJvbGxlci5ub2RlRGlkSGFuZGxlRXZl
bnQoc2Nyb2xsaW5nTm9kZS5zY3JvbGxpbmdOb2RlSUQoKSwgcHJvY2Vzc2luZ1N0ZXBzLCB3aGVl
bEV2ZW50LCBtX2FsbG93TGF0Y2hpbmcpOworICAgICAgICAgICAgICAgIC8vIElmIHRoZSBzY3Jv
bGwgY2hhaW5pbmcgaXMgYmxvY2tlZCBpbiBhIHNpbmdsZSBkaXJlY3Rpb24sIGl0IHNob3VsZCBz
dG9wIGxhdGNoaW5nIHRvIGEgbm9kZSwKKyAgICAgICAgICAgICAgICAvLyBmb3IgdGhlIHdoZWVs
IGV2ZW50IG1pZ2h0IGNoYW5nZSB0aGUgZGlyZWN0aW9uIGFuZCBvdmVyc2Nyb2xsLWJlaGF2aW9y
IG1pZ2h0IG5vdCBiZSBhYmxlIGJsb2NrCisgICAgICAgICAgICAgICAgLy8gdGhlIHNjcm9sbCBj
aGFpbmluZyBpZiBpdCBsYXRjaGVzIHRvIHRoZSBhbmNlc3RyeSBub2RlIG9mIG92ZXJzY3JvbGwt
YmVoYXZpb3IgdGFyZ2V0LgorICAgICAgICAgICAgICAgIGlmICgoc2Nyb2xsQ2hhaW5pbmdCbG9j
a2VyLmJsb2NrWCAmJiBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIuYmxvY2tZKSB8fCAoIXNjcm9sbENo
YWluaW5nQmxvY2tlci5ibG9ja1ggJiYgIXNjcm9sbENoYWluaW5nQmxvY2tlci5ibG9ja1kpKQor
ICAgICAgICAgICAgICAgICAgICBtX2xhdGNoaW5nQ29udHJvbGxlci5ub2RlRGlkSGFuZGxlRXZl
bnQoc2Nyb2xsaW5nTm9kZS5zY3JvbGxpbmdOb2RlSUQoKSwgcHJvY2Vzc2luZ1N0ZXBzLCB3aGVl
bEV2ZW50LCBtX2FsbG93TGF0Y2hpbmcpOwogICAgICAgICAgICAgICAgIG1fZ2VzdHVyZVN0YXRl
Lm5vZGVEaWRIYW5kbGVFdmVudChzY3JvbGxpbmdOb2RlLnNjcm9sbGluZ05vZGVJRCgpLCB3aGVl
bEV2ZW50KTsKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgfQog
CiAgICAgICAgICAgICBpZiAocmVzdWx0Lm5lZWRzTWFpblRocmVhZFByb2Nlc3NpbmcoKSB8fCBl
dmVudFRhcmdldGluZyAhPSBFdmVudFRhcmdldGluZzo6UHJvcGFnYXRlKQogICAgICAgICAgICAg
ICAgIHJldHVybiByZXN1bHQ7CisKKyAgICAgICAgICAgIHNjcm9sbENoYWluaW5nQmxvY2tlci5i
bG9ja1ggfD0gc2Nyb2xsaW5nTm9kZS5ob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgIT0g
T3ZlcnNjcm9sbEJlaGF2aW9yOjpBdXRvOworICAgICAgICAgICAgc2Nyb2xsQ2hhaW5pbmdCbG9j
a2VyLmJsb2NrWSB8PSBzY3JvbGxpbmdOb2RlLnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkg
IT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpBdXRvOworICAgICAgICAgICAgaWYgKHNjcm9sbENoYWlu
aW5nQmxvY2tlci5ibG9ja1gpIHsKKyAgICAgICAgICAgICAgICBmaWx0ZXJlZFBsYXRmb3JtRGVs
dGEuc2V0V2lkdGgoMCk7CisgICAgICAgICAgICAgICAgaWYgKCFiaWFzZWREZWx0YS5oZWlnaHQo
KSkKKyAgICAgICAgICAgICAgICAgICAgZmlsdGVyZWRQbGF0Zm9ybURlbHRhLnNldEhlaWdodCgw
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChzY3JvbGxDaGFpbmluZ0Jsb2NrZXIu
YmxvY2tZKSB7CisgICAgICAgICAgICAgICAgZmlsdGVyZWRQbGF0Zm9ybURlbHRhLnNldEhlaWdo
dCgwKTsKKyAgICAgICAgICAgICAgICBpZiAoIWJpYXNlZERlbHRhLndpZHRoKCkpCisgICAgICAg
ICAgICAgICAgICAgIGZpbHRlcmVkUGxhdGZvcm1EZWx0YS5zZXRXaWR0aCgwKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGFkanVzdGVkV2hlZWxFdmVudCA9IGFkanVzdGVkV2hlZWxFdmVu
dC5jb3B5V2l0aERlbHRhc0FuZFZlbG9jaXR5KGZpbHRlcmVkUGxhdGZvcm1EZWx0YS53aWR0aCgp
LCBmaWx0ZXJlZFBsYXRmb3JtRGVsdGEuaGVpZ2h0KCksIGFkanVzdGVkV2hlZWxFdmVudC5zY3Jv
bGxpbmdWZWxvY2l0eSgpKTsKKworICAgICAgICAgICAgaWYgKHNjcm9sbENoYWluaW5nQmxvY2tl
ci5ibG9ja1ggfHwgc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLmJsb2NrWSkgeworICAgICAgICAgICAg
ICAgIGlmIChzY3JvbGxDaGFpbmluZ0Jsb2NrZXIuYmxvY2tYICYmICFiaWFzZWREZWx0YS5oZWln
aHQoKSAmJiB3aWxsV2hlZWxFdmVudFN0YXJ0U3dpcGVHZXN0dXJlKHdoZWVsRXZlbnQpKQorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0Ojp1bmhhbmRs
ZWQoKTsKKworICAgICAgICAgICAgICAgIGlmICgoc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLmJsb2Nr
WCAmJiBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIuYmxvY2tZKQorICAgICAgICAgICAgICAgICAgICB8
fCAoc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLmJsb2NrWCAmJiAhYmlhc2VkRGVsdGEuaGVpZ2h0KCkp
CisgICAgICAgICAgICAgICAgICAgIHx8IChzY3JvbGxDaGFpbmluZ0Jsb2NrZXIuYmxvY2tZICYm
ICFiaWFzZWREZWx0YS53aWR0aCgpKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoc2Nyb2xs
Q2hhaW5pbmdCbG9ja2VyLmJsb2NrWCAmJiBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIuYmxvY2tZKQor
ICAgICAgICAgICAgICAgICAgICAgICAgbV9sYXRjaGluZ0NvbnRyb2xsZXIubm9kZURpZEhhbmRs
ZUV2ZW50KHNjcm9sbGluZ05vZGUuc2Nyb2xsaW5nTm9kZUlEKCksIHByb2Nlc3NpbmdTdGVwcywg
d2hlZWxFdmVudCwgbV9hbGxvd0xhdGNoaW5nKTsKKyAgICAgICAgICAgICAgICAgICAgbV9nZXN0
dXJlU3RhdGUubm9kZURpZEhhbmRsZUV2ZW50KHNjcm9sbGluZ05vZGUuc2Nyb2xsaW5nTm9kZUlE
KCksIHdoZWVsRXZlbnQpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gV2hlZWxFdmVudEhh
bmRsaW5nUmVzdWx0OjpoYW5kbGVkKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQogICAgICAgICB9CiAKICAgICAgICAgaWYgKGlzPFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9s
bFByb3h5Tm9kZT4oKm5vZGUpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAKaW5kZXggNjI1ZTIw
MThmYTc1ZmY3ZmRiZjVjYTU1MjJkODg5ZDZlYTQyMjQ4Zi4uMjdjOGRjMmQwYzdmN2Y1MDkxZWU5
NjE2M2I3ODgwYWY5ZDM4ZTQzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcApAQCAtMTM0LDYg
KzEzNCwxNiBAQCBib29sIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjppc0xhdGNoZWROb2Rl
KCkgY29uc3QKICAgICByZXR1cm4gc2Nyb2xsaW5nVHJlZSgpLmxhdGNoZWROb2RlSUQoKSA9PSBz
Y3JvbGxpbmdOb2RlSUQoKTsKIH0KIAorT3ZlcnNjcm9sbEJlaGF2aW9yIFNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlOjpob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMuaG9yaXpvbnRhbE92ZXJzY3JvbGxC
ZWhhdmlvcjsKK30KKworT3ZlcnNjcm9sbEJlaGF2aW9yIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlOjp2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
c2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzLnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yOworfQor
CiBib29sIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjpjYW5IYW5kbGVXaGVlbEV2ZW50KGNv
bnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgRXZlbnRUYXJnZXRpbmcgZXZlbnRU
YXJnZXRpbmcpIGNvbnN0CiB7CiAgICAgaWYgKCFjYW5IYXZlU2Nyb2xsYmFycygpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlLmgKaW5kZXggODYyYzFiM2RiZTBlMjNlMTY5ZmE1MmNhYTQ2MmZlZmRmMTRkZTgx
OC4uNWExNGNhMzRkYWNjOThjZWVkZjQ2MGEyMzcwY2VhMDY3YjhjNWJhYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZS5oCkBAIC0xNDUsNiArMTQ1LDggQEAgcHJvdGVjdGVkOgogICAgIGNvbnN0IEZsb2F0
U2l6ZSYgdG90YWxDb250ZW50c1NpemVGb3JSdWJiZXJCYW5kKCkgY29uc3QgeyByZXR1cm4gbV90
b3RhbENvbnRlbnRzU2l6ZUZvclJ1YmJlckJhbmQ7IH0KICAgICB2b2lkIHNldFRvdGFsQ29udGVu
dHNTaXplRm9yUnViYmVyQmFuZChjb25zdCBGbG9hdFNpemUmIHRvdGFsQ29udGVudHNTaXplRm9y
UnViYmVyQmFuZCkgeyBtX3RvdGFsQ29udGVudHNTaXplRm9yUnViYmVyQmFuZCA9IHRvdGFsQ29u
dGVudHNTaXplRm9yUnViYmVyQmFuZDsgfQogCisgICAgT3ZlcnNjcm9sbEJlaGF2aW9yIGhvcml6
b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdDsKKyAgICBPdmVyc2Nyb2xsQmVoYXZpb3Ig
dmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdDsKICAgICBTY3JvbGxFbGFzdGljaXR5
IGhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5KCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxhYmxl
QXJlYVBhcmFtZXRlcnMuaG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHk7IH0KICAgICBTY3JvbGxF
bGFzdGljaXR5IHZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eSgpIGNvbnN0IHsgcmV0dXJuIG1fc2Ny
b2xsYWJsZUFyZWFQYXJhbWV0ZXJzLnZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eTsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
bWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMuaAppbmRleCAzMmE4Mzhl
YjZmM2RhNDM5ODNiY2ZmNTViN2NjNDE4MTU1NzM0ZTlmLi4zOTgxNDgxZmU0ZDI5NmVlYmNlZTNh
YzcxZDgyNGQ3ZDIzY2E2YWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZURlbGVnYXRlTWFjLmgKQEAgLTEwMSw2ICsxMDEsOSBAQCBwcml2YXRlOgogICAgIEZsb2F0U2l6
ZSB2aWV3cG9ydFNpemUoKSBjb25zdCBvdmVycmlkZTsKICNlbmRpZgogCisgICAgYm9vbCBzaG91
bGRTdG9wSG9yaXpvbnRhbFN0cmVjaCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgc2hvdWxk
U3RvcFZlcnRpY2FsU3RyZWNoKCkgY29uc3Qgb3ZlcnJpZGU7CisKICAgICB2b2lkIHJlbGVhc2VS
ZWZlcmVuY2VzVG9TY3JvbGxlckltcHNPblRoZU1haW5UaHJlYWQoKTsKIAogICAgIFNjcm9sbENv
bnRyb2xsZXIgbV9zY3JvbGxDb250cm9sbGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGVEZWxlZ2F0ZU1hYy5tbQppbmRleCBiNzVjNzIyNTkwYWM2MTc4MzExYTA0MWI1NTNh
MDViMDZmYmE2NDZlLi5mNmM1YmM5MDY5ZmUxMTk3YTljODQxNGIzNjM1YTdlOTg5M2NjOWJkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5tbQpAQCAt
MjU2LDYgKzI1Niw5IEBAIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxDb250cm9sbGVyVGltZXI+IFNj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OmNyCiAKIGJvb2wgU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6YWxsb3dzSG9yaXpvbnRhbFN0cmV0Y2hpbmco
Y29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50KSBjb25zdAogeworICAgIGlmIChz
aG91bGRTdG9wSG9yaXpvbnRhbFN0cmVjaCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAg
ICBzd2l0Y2ggKGhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5KCkpIHsKICAgICBjYXNlIFNjcm9s
bEVsYXN0aWNpdHlBdXRvbWF0aWM6IHsKICAgICAgICAgYm9vbCBzY3JvbGxiYXJzQWxsb3dTdHJl
dGNoaW5nID0gYWxsb3dzSG9yaXpvbnRhbFNjcm9sbGluZygpIHx8ICFhbGxvd3NWZXJ0aWNhbFNj
cm9sbGluZygpOwpAQCAtMjc4LDYgKzI4MSw5IEBAIGJvb2wgU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZU1hYzo6YWxsb3dzSG9yaXpvbnRhbFN0cmV0Y2hpbmcoY29uc3QgUGxhCiAK
IGJvb2wgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6YWxsb3dzVmVydGlj
YWxTdHJldGNoaW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCkgY29uc3QK
IHsKKyAgICBpZiAoc2hvdWxkU3RvcFZlcnRpY2FsU3RyZWNoKCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKwogICAgIHN3aXRjaCAodmVydGljYWxTY3JvbGxFbGFzdGljaXR5KCkpIHsKICAgICBj
YXNlIFNjcm9sbEVsYXN0aWNpdHlBdXRvbWF0aWM6IHsKICAgICAgICAgYm9vbCBzY3JvbGxiYXJz
QWxsb3dTdHJldGNoaW5nID0gYWxsb3dzVmVydGljYWxTY3JvbGxpbmcoKSB8fCAhYWxsb3dzSG9y
aXpvbnRhbFNjcm9sbGluZygpOwpAQCAtNDMxLDYgKzQzNywxNiBAQCBGbG9hdFNpemUgU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6dmlld3BvcnRTaXplKCkgY29uc3QKIH0K
ICNlbmRpZgogCitib29sIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OnNo
b3VsZFN0b3BIb3Jpem9udGFsU3RyZWNoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc2Nyb2xsaW5n
Tm9kZSgpLmhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSA9PSBPdmVyc2Nyb2xsQmVoYXZp
b3I6Ok5vbmU7Cit9CisKK2Jvb2wgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1h
Yzo6c2hvdWxkU3RvcFZlcnRpY2FsU3RyZWNoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc2Nyb2xs
aW5nTm9kZSgpLnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgPT0gT3ZlcnNjcm9sbEJlaGF2
aW9yOjpOb25lOworfQorCiB2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVN
YWM6OmRlZmVyV2hlZWxFdmVudFRlc3RDb21wbGV0aW9uRm9yUmVhc29uKFdoZWVsRXZlbnRUZXN0
TW9uaXRvcjo6U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdoZWVsRXZlbnRU
ZXN0TW9uaXRvcjo6RGVmZXJSZWFzb24gcmVhc29uKSBjb25zdAogewogICAgIGlmICghc2Nyb2xs
aW5nVHJlZSgpLmlzTW9uaXRvcmluZ1doZWVsRXZlbnRzKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oCmluZGV4IGQ3MTY5MzQ2YTI0MDIzYzJhNDc4N2Fl
MzQ1NDBhMzc2MDdjMGEyZDUuLjY0MTc5N2E2ZjQxODc1MzM4Y2E3MWVhNzM5MTYwZDEwYjA2Zjg4
ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oCkBA
IC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIK
KyNpbmNsdWRlICJGbG9hdFNpemUuaCIKICNpbmNsdWRlICJJbnRQb2ludC5oIgogI2luY2x1ZGUg
IlBsYXRmb3JtRXZlbnQuaCIKICNpbmNsdWRlIDx3dGYvV2luZG93c0V4dHJhcy5oPgpAQCAtMTc0
LDYgKzE3NSw4IEBAIHB1YmxpYzoKICAgICBQbGF0Zm9ybVdoZWVsRXZlbnQoSFdORCwgV1BBUkFN
LCBMUEFSQU0sIGJvb2wgaXNNb3VzZUhXaGVlbCk7CiAjZW5kaWYKIAorICAgIHN0YXRpYyBGbG9h
dFNpemUgd2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoY29uc3QgRmxvYXRTaXplJik7
CisKIHByb3RlY3RlZDoKICAgICBQbGF0Zm9ybVdoZWVsRXZlbnRHcmFudWxhcml0eSBtX2dyYW51
bGFyaXR5IHsgU2Nyb2xsQnlQaXhlbFdoZWVsRXZlbnQgfTsKICAgICBib29sIG1fZGlyZWN0aW9u
SW52ZXJ0ZWRGcm9tRGV2aWNlIHsgZmFsc2UgfTsKQEAgLTI2NCw2ICsyNjcsMTkgQEAgaW5saW5l
IEZsb2F0UG9pbnQgUGxhdGZvcm1XaGVlbEV2ZW50Ojpzd2lwZVZlbG9jaXR5KCkgY29uc3QKIAog
I2VuZGlmIC8vIEVOQUJMRShLSU5FVElDX1NDUk9MTElORykKIAoraW5saW5lIEZsb2F0U2l6ZSBQ
bGF0Zm9ybVdoZWVsRXZlbnQ6OndoZWVsRGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRpY2FsKGNvbnN0
IEZsb2F0U2l6ZSYgZGVsdGEpCit7CisgICAgYXV0byBkZWx0YVggPSBkZWx0YS53aWR0aCgpOwor
ICAgIGF1dG8gZGVsdGFZID0gZGVsdGEuaGVpZ2h0KCk7CisKKyAgICBpZiAoZmFic2YoZGVsdGFZ
KSA+PSBmYWJzZihkZWx0YVgpKQorICAgICAgICBkZWx0YVggPSAwOworICAgIGVsc2UKKyAgICAg
ICAgZGVsdGFZID0gMDsKKworICAgIHJldHVybiB7IGRlbHRhWCwgZGVsdGFZIH07Cit9CisKIFdF
QkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0m
LCBjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKTsKIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0
ZXBzKTsKIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRl
eHRTdHJlYW0mLCBFdmVudEhhbmRsaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbFR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxUeXBl
cy5oCmluZGV4IGEwOTNjOWIzZTYwYWRiOWY5OTI2MjU3OGNhZjNkZmE0MGRmNjA0MWEuLjFjZGY5
ZTZkYjQ0ZjYyMzNjODZjZmI3YTM0NjAyY2MwYzU3NzE4NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFR5cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsVHlwZXMuaApAQCAtMjQ5LDYgKzI0OSwxMSBAQCBlbnVtIGNsYXNzIFNjcm9sbFBv
c2l0aW9uaW5nQmVoYXZpb3IgOiB1aW50OF90IHsKICAgICBTdGF0aW9uYXJ5CiB9OwogCitzdHJ1
Y3QgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIHsKKyAgICBib29sIGJsb2NrWCB7IGZhbHNlIH07Cisg
ICAgYm9vbCBibG9ja1kgeyBmYWxzZSB9OworfTsKKwogdXNpbmcgU2Nyb2xsYmFyQ29udHJvbFN0
YXRlID0gdW5zaWduZWQ7CiB1c2luZyBTY3JvbGxiYXJDb250cm9sUGFydE1hc2sgPSB1bnNpZ25l
ZDsKIHVzaW5nIFNjcm9sbGluZ05vZGVJRCA9IHVpbnQ2NF90OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbGFibGVBcmVhLmgKaW5kZXggOWZjZDU0OWFiYjZlZGEyMDZlMjIwYzBiZDhkZDkx
ZmVmMjcyZjMwZS4uMjdmY2FlZTEwNWQxNDljNDdjOWRmMjViYTM1ZWRiNzIzZTgyMTcxYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCkBAIC0xMjQsNiArMTI0LDkg
QEAgcHVibGljOgogICAgIGJvb2wgY29uc3RyYWluc1Njcm9sbGluZ1RvQ29udGVudEVkZ2UoKSBj
b25zdCB7IHJldHVybiBtX2NvbnN0cmFpbnNTY3JvbGxpbmdUb0NvbnRlbnRFZGdlOyB9CiAgICAg
dm9pZCBzZXRDb25zdHJhaW5zU2Nyb2xsaW5nVG9Db250ZW50RWRnZShib29sIGNvbnN0cmFpbnNT
Y3JvbGxpbmdUb0NvbnRlbnRFZGdlKSB7IG1fY29uc3RyYWluc1Njcm9sbGluZ1RvQ29udGVudEVk
Z2UgPSBjb25zdHJhaW5zU2Nyb2xsaW5nVG9Db250ZW50RWRnZTsgfQogCisgICAgdmlydHVhbCBP
dmVyc2Nyb2xsQmVoYXZpb3IgaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpIGNvbnN0IHsg
cmV0dXJuIE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0bzsgfQorICAgIHZpcnR1YWwgT3ZlcnNjcm9s
bEJlaGF2aW9yIHZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29uc3QgeyByZXR1cm4gT3Zl
cnNjcm9sbEJlaGF2aW9yOjpBdXRvOyB9CisKICAgICB2b2lkIHNldFZlcnRpY2FsU2Nyb2xsRWxh
c3RpY2l0eShTY3JvbGxFbGFzdGljaXR5IHNjcm9sbEVsYXN0aWNpdHkpIHsgbV92ZXJ0aWNhbFNj
cm9sbEVsYXN0aWNpdHkgPSBzY3JvbGxFbGFzdGljaXR5OyB9CiAgICAgU2Nyb2xsRWxhc3RpY2l0
eSB2ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxT
Y3JvbGxFbGFzdGljaXR5PihtX3ZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eSk7IH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5oCmluZGV4IGNm
MzkyMzQwNWVlMTMxNjk2ODE2YmU3ZmIwYTI1NDU0MWIyNDNmZmMuLjQ1YzU3N2FjYjVkZjRlYWRl
NDM5MDk4YTg3NjA0NjMxZmQ0ZTQyNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9TY3JvbGxDb250cm9sbGVyLmgKQEAgLTExOCw2ICsxMTgsMTEgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgTGF5b3V0U2l6ZSBzY3JvbGxFeHRlbnQoKSBjb25zdCA9IDA7CiAgICAgdmly
dHVhbCBGbG9hdFNpemUgdmlld3BvcnRTaXplKCkgY29uc3QgPSAwOwogI2VuZGlmCisKKyNpZiBQ
TEFURk9STShNQUMpCisgICAgdmlydHVhbCBib29sIHNob3VsZFN0b3BIb3Jpem9udGFsU3RyZWNo
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU3RvcFZl
cnRpY2FsU3RyZWNoKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyNlbmRpZgogfTsKIAogZW51
bSBjbGFzcyBXaGVlbEV2ZW50U3RhdHVzIHsKQEAgLTE3Myw4ICsxNzgsNiBAQCBwdWJsaWM6CiAj
ZW5kaWYKICNlbmRpZgogCi0gICAgc3RhdGljIEZsb2F0U2l6ZSB3aGVlbERlbHRhQmlhc2luZ1Rv
d2FyZHNWZXJ0aWNhbChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKTsKLQogICAgIGVudW0gY2xh
c3MgV2hlZWxBeGlzQmlhcyB7IE5vbmUsIFZlcnRpY2FsIH07CiAgICAgc3RhdGljIE9wdGlvbmFs
PFNjcm9sbERpcmVjdGlvbj4gZGlyZWN0aW9uRnJvbUV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxF
dmVudCYsIE9wdGlvbmFsPFNjcm9sbEV2ZW50QXhpcz4sIFdoZWVsQXhpc0JpYXMgPSBXaGVlbEF4
aXNCaWFzOjpOb25lKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvU2Nyb2xsQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Nj
cm9sbENvbnRyb2xsZXIubW0KaW5kZXggM2U0ZjA2OWNmMzJiNjMxODU2YThjNmEyZGVkMGExNmUz
ZWY1MWZmOC4uZDBhMWM1ZDM0ZjNlYTlhNTQxYmU3MmMyM2E5MWI2OWUxMzA4MmY5MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9sbGVyLm1tCkBA
IC0yNTIsNyArMjUyLDggQEAgYm9vbCBTY3JvbGxDb250cm9sbGVyOjpoYW5kbGVXaGVlbEV2ZW50
KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCkKICAgICAgICAgICAgICAgICAg
ICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICBtX292ZXJmbG93U2Nyb2xsRGVsdGEu
c2V0V2lkdGgobV9vdmVyZmxvd1Njcm9sbERlbHRhLndpZHRoKCkgKyBkZWx0YVgpOwogICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBzaG91bGRTdHJldGNoID0gdHJ1ZTsKKyAgICAg
ICAgICAgICAgICBpZiAoKCFkZWx0YVggfHwgIW1fY2xpZW50LnNob3VsZFN0b3BIb3Jpem9udGFs
U3RyZWNoKCkpICYmICghZGVsdGFZIHx8ICFtX2NsaWVudC5zaG91bGRTdG9wVmVydGljYWxTdHJl
Y2goKSkpCisgICAgICAgICAgICAgICAgICAgIHNob3VsZFN0cmV0Y2ggPSB0cnVlOwogICAgICAg
ICAgICAgfQogICAgICAgICB9CiAKQEAgLTMyOSwxOSArMzMwLDYgQEAgYm9vbCBTY3JvbGxDb250
cm9sbGVyOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxF
dmVudCkKIH0KICNlbmRpZiAvLyBQTEFURk9STShNQUMpCiAKLUZsb2F0U2l6ZSBTY3JvbGxDb250
cm9sbGVyOjp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbChjb25zdCBQbGF0Zm9ybVdo
ZWVsRXZlbnQmIHdoZWVsRXZlbnQpCi17Ci0gICAgYXV0byBkZWx0YVggPSB3aGVlbEV2ZW50LmRl
bHRhWCgpOwotICAgIGF1dG8gZGVsdGFZID0gd2hlZWxFdmVudC5kZWx0YVkoKTsKLQotICAgIGlm
IChmYWJzZihkZWx0YVkpID49IGZhYnNmKGRlbHRhWCkpCi0gICAgICAgIGRlbHRhWCA9IDA7Ci0g
ICAgZWxzZQotICAgICAgICBkZWx0YVkgPSAwOwotCi0gICAgcmV0dXJuIHsgZGVsdGFYLCBkZWx0
YVkgfTsKLX0KLQogT3B0aW9uYWw8U2Nyb2xsRGlyZWN0aW9uPiBTY3JvbGxDb250cm9sbGVyOjpk
aXJlY3Rpb25Gcm9tRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBP
cHRpb25hbDxTY3JvbGxFdmVudEF4aXM+IGF4aXMsIFdoZWVsQXhpc0JpYXMgYmlhcykKIHsKICAg
ICAvLyBGSVhNRTogSXQncyBpbXBvc3NpYmxlIHRvIGluZmVyIGRpcmVjdGlvbiBmcm9tIGEgc2lu
Z2xlIGV2ZW50LCBzaW5jZSB0aGUgc3RhcnQgb2YgYSBnZXN0dXJlIGlzIGVpdGhlciB6ZXJvIG9y
CkBAIC0zNDksNyArMzM3LDcgQEAgT3B0aW9uYWw8U2Nyb2xsRGlyZWN0aW9uPiBTY3JvbGxDb250
cm9sbGVyOjpkaXJlY3Rpb25Gcm9tRXZlbnQoY29uc3QgUGxhdGZvcm1XaGUKIAogICAgIGF1dG8g
d2hlZWxEZWx0YSA9IEZsb2F0U2l6ZSB7IHdoZWVsRXZlbnQuZGVsdGFYKCksIHdoZWVsRXZlbnQu
ZGVsdGFZKCkgfTsKICAgICBpZiAoYmlhcyA9PSBXaGVlbEF4aXNCaWFzOjpWZXJ0aWNhbCkKLSAg
ICAgICAgd2hlZWxEZWx0YSA9IHdoZWVsRGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRpY2FsKHdoZWVs
RXZlbnQpOworICAgICAgICB3aGVlbERlbHRhID0gUGxhdGZvcm1XaGVlbEV2ZW50Ojp3aGVlbERl
bHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbCh3aGVlbEV2ZW50LmRlbHRhKCkpOwogCiAgICAgaWYg
KGF4aXMpIHsKICAgICAgICAgc3dpdGNoIChheGlzLnZhbHVlKCkpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLmgKaW5kZXggNDlmMGI0YjFkNzlm
NzdhOTY4YTk1MmY4YWViOTc5NTRlMjk3MmUyOS4uYTZjYTBhZmVlZDU1NGNhZDkzMzczYTQ0YmY4
MTgzZGYxNzExYjg0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Nj
cm9sbEFuaW1hdG9yTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9s
bEFuaW1hdG9yTWFjLmgKQEAgLTE1Niw2ICsxNTYsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgYWRq
dXN0U2Nyb2xsUG9zaXRpb25Ub0JvdW5kc0lmTmVjZXNzYXJ5KCkgZmluYWw7CiAjZW5kaWYKIAor
ICAgIGJvb2wgc2hvdWxkU3RvcEhvcml6b250YWxTdHJlY2goKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBib29sIHNob3VsZFN0b3BWZXJ0aWNhbFN0cmVjaCgpIGNvbnN0IG92ZXJyaWRlOworCiAgICAg
Ym9vbCBtX2hhdmVTY3JvbGxlZFNpbmNlUGFnZUxvYWQ7CiAgICAgYm9vbCBtX25lZWRzU2Nyb2xs
ZXJTdHlsZVVwZGF0ZTsKICAgICBJbnRSZWN0IG1fdmlzaWJsZVNjcm9sbGVyVGh1bWJSZWN0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tCmlu
ZGV4IDYxNTFkZWZjMGVhZWMzYTA1NzE1MDIwYWU2NTAwMjNiYWNmMTRiM2MuLmU4ZTZhZmMyNDU2
NzI3MGFmNzA0ZDUwMDNlMzUxMzRmNjM4ZmYyNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0KQEAgLTE1MzYsNiArMTUzNiwxNiBAQCB2
b2lkIFNjcm9sbEFuaW1hdG9yTWFjOjpzZXRWaXNpYmxlU2Nyb2xsZXJUaHVtYlJlY3QoY29uc3Qg
SW50UmVjdCYgc2Nyb2xsZXJUaHVtYgogICAgIG1fdmlzaWJsZVNjcm9sbGVyVGh1bWJSZWN0ID0g
cmVjdEluVmlld0Nvb3JkaW5hdGVzOwogfQogCitib29sIFNjcm9sbEFuaW1hdG9yTWFjOjpzaG91
bGRTdG9wSG9yaXpvbnRhbFN0cmVjaCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2Nyb2xsYWJs
ZUFyZWEuaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpID09IE92ZXJzY3JvbGxCZWhhdmlv
cjo6Tm9uZTsKK30KKworYm9vbCBTY3JvbGxBbmltYXRvck1hYzo6c2hvdWxkU3RvcFZlcnRpY2Fs
U3RyZWNoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYS52ZXJ0aWNhbE92
ZXJzY3JvbGxCZWhhdmlvcigpID09IE92ZXJzY3JvbGxCZWhhdmlvcjo6Tm9uZTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNNT09USF9TQ1JPTExJTkcp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCAyNDkzZWY4NjRk
YTQzYTc4MDI4NjMxZTg3MmEzMzBkNTQwOGFmNzIzLi4xNzZiNWM5ZWE4NzhhYmM2MTQyNGIwMDRj
ZmMyZmNjNjE2YjhkYzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5j
cHAKQEAgLTM0NzYsNiArMzQ3NiwyMiBAQCB2b2lkIFJlbmRlckxheWVyOjppbnZhbGlkYXRlU2Ny
b2xsQ29ybmVyUmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQogICAgICAgICBtX3Jlc2l6ZXItPnJl
cGFpbnRSZWN0YW5nbGUocmVjdCk7CiB9CiAKK092ZXJzY3JvbGxCZWhhdmlvciBSZW5kZXJMYXll
cjo6aG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpIGNvbnN0Cit7CisgICAgYXV0byogYm94
ID0gcmVuZGVyQm94KCk7CisgICAgaWYgKGJveCAmJiAhYm94LT5zY3JvbGxzT3ZlcmZsb3dYKCkp
CisgICAgICAgIHJldHVybiBTY3JvbGxhYmxlQXJlYTo6aG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhh
dmlvcigpOworICAgIHJldHVybiByZW5kZXJlcigpLnN0eWxlKCkub3ZlcnNjcm9sbEJlaGF2aW9y
WCgpOworfQorCitPdmVyc2Nyb2xsQmVoYXZpb3IgUmVuZGVyTGF5ZXI6OnZlcnRpY2FsT3ZlcnNj
cm9sbEJlaGF2aW9yKCkgIGNvbnN0Cit7CisgICAgYXV0byogYm94ID0gcmVuZGVyQm94KCk7Cisg
ICAgaWYgKGJveCAmJiAhYm94LT5zY3JvbGxzT3ZlcmZsb3dZKCkpCisgICAgICAgIHJldHVybiBT
Y3JvbGxhYmxlQXJlYTo6dmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKTsKKyAgICByZXR1cm4g
cmVuZGVyZXIoKS5zdHlsZSgpLm92ZXJzY3JvbGxCZWhhdmlvclkoKTsKK30KKwogc3RhdGljIGJv
b2wgc2Nyb2xsYmFySGlkZGVuQnlTdHlsZShTY3JvbGxiYXIqIHNjcm9sbGJhcikKIHsKICAgICBy
ZXR1cm4gc2Nyb2xsYmFyICYmIHNjcm9sbGJhci0+aXNIaWRkZW5CeVN0eWxlKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCmluZGV4IGYyOGNiNDE0NzI3ZWZjNjgyOWE2NWE5
NGM1ZmViYTdhNDU2ZTFlOTkuLmI2NmJiOTMxYzFkODYzZGYxNjQ2Y2E1NzBjYjBkMjcwOTE5Mjdh
MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCkBAIC00ODMsNiArNDgz
LDkgQEAgcHVibGljOgogICAgIGJvb2wgaGFzSG9yaXpvbnRhbFNjcm9sbGJhcigpIGNvbnN0IHsg
cmV0dXJuIGhvcml6b250YWxTY3JvbGxiYXIoKTsgfQogICAgIGJvb2wgaGFzVmVydGljYWxTY3Jv
bGxiYXIoKSBjb25zdCB7IHJldHVybiB2ZXJ0aWNhbFNjcm9sbGJhcigpOyB9CiAKKyAgICBPdmVy
c2Nyb2xsQmVoYXZpb3IgaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpIGNvbnN0IGZpbmFs
OworICAgIE92ZXJzY3JvbGxCZWhhdmlvciB2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpIGNv
bnN0IGZpbmFsOworCiAgICAgYm9vbCBob3Jpem9udGFsU2Nyb2xsYmFySGlkZGVuQnlTdHlsZSgp
IGNvbnN0IGZpbmFsOwogICAgIGJvb2wgdmVydGljYWxTY3JvbGxiYXJIaWRkZW5CeVN0eWxlKCkg
Y29uc3QgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuY3BwCmluZGV4IGZhYWEyYWRjZjk5MWIxMzY1OTNjNTU5NjA2NDZmZjFmNDgwY2YxZDcu
LmRiNmM1MmMzNGUwN2E5OWVjMWU1MzA2ZDJkNjQ0MGU2M2UzNzVhZGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMjAxOSw2ICsyMDE5
LDkgQEAgYm9vbCBBcmd1bWVudENvZGVyPFVzZXJTdHlsZVNoZWV0Pjo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIsIFVzZXJTdHlsZVNoZWV0JiB1c2UKIAogdm9pZCBBcmd1bWVudENvZGVyPFNjcm9s
bGFibGVBcmVhUGFyYW1ldGVycz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTY3Jv
bGxhYmxlQXJlYVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7CisgICAgZW5jb2RlciA8PCBwYXJh
bWV0ZXJzLmhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3I7CisgICAgZW5jb2RlciA8PCBwYXJh
bWV0ZXJzLnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yOworCiAgICAgZW5jb2RlciA8PCBwYXJh
bWV0ZXJzLmhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5OwogICAgIGVuY29kZXIgPDwgcGFyYW1l
dGVycy52ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHk7CiAKQEAgLTIwMzYsNiArMjAzOSwxMSBAQCB2
b2lkIEFyZ3VtZW50Q29kZXI8U2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzPjo6ZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIsIGNvbnN0IFNjcgogCiBib29sIEFyZ3VtZW50Q29kZXI8U2Nyb2xsYWJsZUFy
ZWFQYXJhbWV0ZXJzPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFNjcm9sbGFibGVBcmVhUGFy
YW1ldGVycyYgcGFyYW1zKQogeworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1zLmhvcml6
b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShwYXJhbXMudmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtcy5ob3Jp
em9udGFsU2Nyb2xsRWxhc3RpY2l0eSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHBhcmFtcy52ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCBmYTk2Y2RhODRl
Y2I3ZDQ4OGFlNDI5MTMzYzBmNWI0NDM3MDQ4ZGIxLi4zOTUzNTY3ODNmZGE1NmZlMWMxYWIwZDky
MzcyODVmMzY2NDZmMDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuaApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVhbHRpbWVN
ZWRpYVNvdXJjZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyaW5nTW9kZS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9T
Y3JvbGxUeXBlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1
ZVZhbHVlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyVHlwZXMuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1N0b3JlZENyZWRlbnRpYWxzUG9saWN5Lmg+CkBAIC04OTYsNiArODk3LDE1
IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0w6OkFjdGl2ZUluZm8+IHsKIAogbmFtZXNwYWNlIFdURiB7CiAKK3RlbXBsYXRlPD4gc3Ry
dWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6T3ZlcnNjcm9sbEJlaGF2aW9yPiB7CisgICAgdXNpbmcg
dmFsdWVzID0gRW51bVZhbHVlczwKKyAgICBXZWJDb3JlOjpPdmVyc2Nyb2xsQmVoYXZpb3IsCisg
ICAgV2ViQ29yZTo6T3ZlcnNjcm9sbEJlaGF2aW9yOjpBdXRvLAorICAgIFdlYkNvcmU6Ok92ZXJz
Y3JvbGxCZWhhdmlvcjo6Q29udGFpbiwKKyAgICBXZWJDb3JlOjpPdmVyc2Nyb2xsQmVoYXZpb3I6
Ok5vbmUKKyAgICA+OworfTsKKwogdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3Jl
OjpDb2xvclNwYWNlPiB7CiAgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKICAgICBXZWJD
b3JlOjpDb2xvclNwYWNlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVt
b3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLm1tCmluZGV4IGRmYmY3YTRkYmNkM2UwNWE3N2Zk
NTFkMjIzMDBlNjYyMDM4ZWZiODcuLjQ0NTBmZjA0OGY4ODY0MmFhYzcwNDY4YjEyODk2NjU3ZjJk
Njc5M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJl
ZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlRGVsZWdhdGVJT1MubW0KQEAgLTIzNiwxMiArMjM2LDMxIEBAIHZvaWQgU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUzo6Y29tbWl0U3RhdGVBZnRlckNoaWxkcmVu
KGNvbnN0IFNjcm9sCiAgICAgU2V0Rm9yU2NvcGU8Ym9vbD4gdXBkYXRpbmdDaGFuZ2UobV91cGRh
dGluZ0Zyb21TdGF0ZU5vZGUsIHRydWUpOwogCiAgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5o
YXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6U2Nyb2xsQ29u
dGFpbmVyTGF5ZXIpCisgICAgICAgIHx8IHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJv
cGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxhYmxlQXJlYVBhcmFtcykK
ICAgICAgICAgfHwgc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxp
bmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpUb3RhbENvbnRlbnRzU2l6ZSkKICAgICAgICAgfHwgc2Ny
b2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlBy
b3BlcnR5OjpSZWFjaGFibGVDb250ZW50c1NpemUpCiAgICAgICAgIHx8IHNjcm9sbGluZ1N0YXRl
Tm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6U2Ny
b2xsUG9zaXRpb24pCiAgICAgICAgIHx8IHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJv
cGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6U2Nyb2xsT3JpZ2luKSkgewogICAg
ICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKICAgICAgICAgVUlTY3JvbGxWaWV3ICpz
Y3JvbGxWaWV3ID0gdGhpcy0+c2Nyb2xsVmlldygpOworCisgICAgICAgIC8vIEZJWE1FKHJkYXI6
Ly9wcm9ibGVtLzM0MzE1OTk3KTogVUlTY3JvbGxWaWV3IHNob3VsZCBoYXZlIHNvbWUga2luZCBv
ZiBzdXBwb3J0IGZvciBvdmVyc2Nyb2xsLWJlaGF2aW9yIHRvIGVuYWJsZS9kaXNhYmxlOgorICAg
ICAgICAvLyAtIG5vbi1sb2NhbCBib3VuZGFyeSBkZWZhdWx0IGFjdGlvbnMgKGUuZy4gc2Nyb2xs
IGNoYWluaW5nKS4KKyAgICAgICAgLy8gLSBsb2NhbCBib3VuZGFyeSBkZWZhdWx0IGFjdGlvbnMg
KGUuZy4gYm91bmNpbmcpLgorI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisgICAgICAgIC8v
IGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRl
U2Nyb2xsaW5nTm9kZTo6U2Nyb2xsYWJsZUFyZWFQYXJhbXMpKSB7CisgICAgICAgIC8vICAgICBz
Y3JvbGxWaWV3Lm92ZXJzY3JvbGxCZWhhdmlvckhvcml6b250YWwgPSBjb252ZXJ0T3ZlcnNjcm9s
bEJlaGF2aW9yRnJvbVdlYktpdFRvVUlLaXQoc2Nyb2xsaW5nU3RhdGVOb2RlLnNjcm9sbGFibGVB
cmVhUGFyYW1ldGVycygpLmhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IpOworICAgICAgICAv
LyAgICAgc2Nyb2xsVmlldy5vdmVyc2Nyb2xsQmVoYXZpb3JWZXJ0aWNhbCA9IGNvbnZlcnRPdmVy
c2Nyb2xsQmVoYXZpb3JGcm9tV2ViS2l0VG9VSUtpdChzY3JvbGxpbmdTdGF0ZU5vZGUuc2Nyb2xs
YWJsZUFyZWFQYXJhbWV0ZXJzKCkudmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IpOworICAgICAg
ICAvLyB9CisjZW5kaWYKKyAgICAgICAgLy8gRm9yIG5vdywgd2Ugb25seSBkaXNhYmxlIGJvdW5j
aW5nIHdoZW4gYm90aCBvdmVyZmxvdy14IGFuZCBvdmVyZmxvdy15IGFyZSBub25lLgorICAgICAg
ICAvLyBVSVNjcm9sbFZpZXc6OmFsd2F5c0JvdW5jZSogZnVuY3Rpb25zIGNhbm5vdCBoZWxwIGhl
cmUuCisgICAgICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNj
cm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsYWJsZUFyZWFQYXJhbXMpKSB7CisgICAg
ICAgICAgICBzY3JvbGxWaWV3LmJvdW5jZXMgPSBzY3JvbGxpbmdTdGF0ZU5vZGUuc2Nyb2xsYWJs
ZUFyZWFQYXJhbWV0ZXJzKCkuaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvciA9PSBPdmVyc2Ny
b2xsQmVoYXZpb3I6Ok5vbmUKKyAgICAgICAgICAgICYmIHNjcm9sbGluZ1N0YXRlTm9kZS5zY3Jv
bGxhYmxlQXJlYVBhcmFtZXRlcnMoKS52ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvciA9PSBPdmVy
c2Nyb2xsQmVoYXZpb3I6Ok5vbmUKKyAgICAgICAgICAgID8gTk8gOiBZRVM7CisgICAgICAgIH0K
KwogICAgICAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3Jv
bGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpTY3JvbGxDb250YWluZXJMYXllcikpIHsKICAgICAg
ICAgICAgIGlmICghbV9zY3JvbGxWaWV3RGVsZWdhdGUpCiAgICAgICAgICAgICAgICAgbV9zY3Jv
bGxWaWV3RGVsZWdhdGUgPSBhZG9wdE5TKFtbV0tTY3JvbGxpbmdOb2RlU2Nyb2xsVmlld0RlbGVn
YXRlIGFsbG9jXSBpbml0V2l0aFNjcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGU6dGhpc10pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KaW5kZXggOTYy
MGU4NmZiMGE3MjAxNDAxYzJjYWQ1NTFkZTJjZmI4ODg5YmVkYi4uYjhjZjJlN2ZlNzQ2YmU4NjIx
NDk1ZmMxNDMxMzgyYjA2NTM5OWRjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC00MDkzLDYgKzQwOTMsOCBAQCBzdGF0aWMgQk9PTCBj
dXJyZW50U2Nyb2xsSXNCbGl0KE5TVmlldyAqY2xpcFZpZXcpCiAgICAgYXV0byogZnJhbWUgPSBj
b3JlKFtzZWxmIF9mcmFtZV0pOwogICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5ldmVudEhhbmRs
ZXIoKS53aGVlbEV2ZW50KGV2ZW50KSkgewogI2lmIFBMQVRGT1JNKE1BQykKKyAgICAgICAgLy8g
RklYTUU6IE5lZWQgdG8gZmluZCBhIHdheSB0byBibG9jayB0aGUgY3Jvc3MtZnJhbWUgc2Nyb2xs
IGNoYWluaW5nIGluIFdLMS4KKyAgICAgICAgLy8gV2UgY2FuIG5vdCBqdXN0IHNraXAgdGhlIHNj
cm9sbCBoZXJlLCBpdCBub3Qgb25seSBibG9ja3Mgc2Nyb2xsIGNoYWluaW5nIGJ1dCBhbHNvIGJs
b2NrcyB0aGUgc2Nyb2xsIG9uIGN1cnJlbnQgdmlldy4KICAgICAgICAgW3N1cGVyIHNjcm9sbFdo
ZWVsOmV2ZW50XTsKICNlbmRpZgogICAgIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4NjI4YTc3NjkxN2FiMWRjY2UyMzQz
Y2M0NjE2NzJlYmQ2NDdhZjMyLi44ZThkNDFmOGQ0MDQ0ZWVjZDBkMmI1NzI5YTcyYzZlYTc2ZWQz
MDk4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjAtMTItMjQgIENhdGhpZSBDaGVuICA8Y2F0
aGllY2hlbkBpZ2FsaWEuY29tPgorCisgICAgICAgIEltcGxlbWVudCBDU1Mgb3ZlcnNjcm9sbC1i
ZWhhdmlvciBvbiBNYWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyMDEzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEJhc2VkIG9uIEZyw6lkw6lyaWMgV2FuZydzIHBhdGNoLgorCisgICAgICAgICogZmFz
dC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50LWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZp
b3ItaWZyYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcv
b3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9z
Y3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZp
b3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9zY3Jv
bGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci11
bnNjcm9sbGFibGUtaWZyYW1lLmh0bWw6IEFkZGVkLgorCiAyMDIwLTEyLTIzICBSeWFuIEhhZGRh
ZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT046IFsgTWFjIF0g
bWVkaWEvdmlkZW8tYnVmZmVyaW5nLWFsbG93ZWQuaHRtbCBpcyBmbGFreSB0aW1lb3V0CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLWVs
ZW1lbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9s
bC1iZWhhdmlvci1lbGVtZW50LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNzE1MGZmNjBiNWRi
ZGQwYjRhN2FjNmY4M2ZiNTZmNTdjZDJjZDgyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50LWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDIwIEBACisKK1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0
IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBhdXRvLgorUEFTUyBFbGVtZW50IHZlcnRp
Y2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBhdXRvLgorUEFT
UyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9y
OiBjb250YWluIGF1dG8uCitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBv
dmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGF1dG8uCitQQVNTIEVsZW1lbnQgaG9yaXpvbnRh
bCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgYXV0by4KK1BBU1Mg
RWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5v
bmUgYXV0by4KK1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNj
cm9sbC1iZWhhdmlvcjogYXV0byBjb250YWluLgorUEFTUyBFbGVtZW50IHZlcnRpY2FsIHNjcm9s
bCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBjb250YWluLgorUEFTUyBFbGVt
ZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250
YWluIGNvbnRhaW4uCitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVy
c2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGNvbnRhaW4uCitQQVNTIEVsZW1lbnQgaG9yaXpvbnRh
bCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgY29udGFpbi4KK1BB
U1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6
IG5vbmUgY29udGFpbi4KK1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGgg
b3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBub25lLgorUEFTUyBFbGVtZW50IHZlcnRpY2FsIHNj
cm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBub25lLgorUEFTUyBFbGVt
ZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250
YWluIG5vbmUuCitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Ny
b2xsLWJlaGF2aW9yOiBjb250YWluIG5vbmUuCitQQVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBzY3Jv
bGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgbm9uZS4KK1BBU1MgRWxlbWVu
dCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgbm9u
ZS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1i
ZWhhdmlvci1lbGVtZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9vdmVyc2Ny
b2xsLWJlaGF2aW9yLWVsZW1lbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYTMwMTRkYTkxMzczNmQxYTE3
M2NjOWRmNjk2ZWZjMDUzODQ1Y2NmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50Lmh0bWwKQEAgLTAsMCArMSwx
MDggQEAKKzwhZG9jdHlwZSBodG1sPgorCis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVz
dGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRw
czovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLW92ZXJzY3JvbGwtYmVoYXZpb3IiPgorPHN0eWxlPgor
ICAgIC5zY3JvbGxpbmcgeworICAgICAgICBvdmVyZmxvdzogc2Nyb2xsOworICAgIH0KKyAgICAu
c2Nyb2xsQ29udGVudCB7CisgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgaGVpZ2h0OiAz
MDBweDsKKyAgICB9CisgICAgI3Jvb3QgeworICAgICAgICB3aWR0aDogMjAwcHg7CisgICAgICAg
IGhlaWdodDogMjAwcHg7CisgICAgfQorICAgICNzY3JvbGxlciB7CisgICAgICAgIHdpZHRoOiAx
MDBweDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICB9Cis8L3N0eWxlPgorPGRpdiBpZD0n
cm9vdCcgY2xhc3M9InNjcm9sbGluZyI+CisgICAgPGRpdiBpZD0nc2Nyb2xsZXInIGNsYXNzPSJz
Y3JvbGxpbmciPgorICAgICAgICA8ZGl2IGNsYXNzPSJzY3JvbGxDb250ZW50Ij48L2Rpdj4KKyAg
ICA8L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJzY3JvbGxDb250ZW50Ij48L2Rpdj4KKzwvZGl2Pgor
Cis8c2NyaXB0PgorY29uc3Qgcm9vdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyb290Jyk7
Citjb25zdCBzY3JvbGxlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY3JvbGxlcicpOwor
dmFyIG92ZXJzY3JvbGxEYXRhcyA9IFtbImF1dG8iLCAiYXV0byIsIHRydWUsIHRydWVdLAorICAg
ICAgICAgICAgICAgICAgICAgICAgWyJjb250YWluIiwgImF1dG8iLCBmYWxzZSwgdHJ1ZV0sCisg
ICAgICAgICAgICAgICAgICAgICAgICBbIm5vbmUiLCAiYXV0byIsIGZhbHNlLCB0cnVlXSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIFsiYXV0byIsICJjb250YWluIiwgdHJ1ZSwgZmFsc2VdLAor
ICAgICAgICAgICAgICAgICAgICAgICAgWyJjb250YWluIiwgImNvbnRhaW4iLCBmYWxzZSwgZmFs
c2VdLAorICAgICAgICAgICAgICAgICAgICAgICAgWyJub25lIiwgImNvbnRhaW4iLCBmYWxzZSwg
ZmFsc2VdLAorICAgICAgICAgICAgICAgICAgICAgICAgWyJhdXRvIiwgIm5vbmUiLCB0cnVlLCBm
YWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAgICBbImNvbnRhaW4iLCAibm9uZSIsIGZhbHNl
LCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAgICBbIm5vbmUiLCAibm9uZSIsIGZhbHNl
LCBmYWxzZV1dOworYXN5bmMgZnVuY3Rpb24gcGVyZm9ybVdoZWVsU2Nyb2xsKHNjcm9sbGVyLCBk
aXJlY3Rpb24pIHsKKyAgICB2YXIgZGVsdGFYID0gMDsKKyAgICB2YXIgZGVsdGFZID0gMDsKKyAg
ICBpZiAoZGlyZWN0aW9uID09ICJkb3duIikKKyAgICAgICAgZGVsdGFZID0gLTU7CisgICAgZWxz
ZSBpZiAoZGlyZWN0aW9uID09ICJ1cCIpCisgICAgICAgIGRlbHRhWSA9IDU7CisgICAgZWxzZSBp
ZiAoZGlyZWN0aW9uID09ICJyaWdodCIpCisgICAgICAgIGRlbHRhWCA9IC01OworICAgIGVsc2Ug
aWYgKGRpcmVjdGlvbiA9PSAibGVmdCIpCisgICAgICAgIGRlbHRhWCA9IDU7CisKKyAgICB2YXIg
eCA9IHNjcm9sbGVyLmNsaWVudFdpZHRoIC8gMjsKKyAgICB2YXIgeSA9IHNjcm9sbGVyLmNsaWVu
dEhlaWdodCAvIDI7CisgICAgZXZlbnRTZW5kZXIuZHJhZ01vZGUgPSBmYWxzZTsKKyAgICBldmVu
dFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVU
byh4LCB5KTsKKyAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZGVsdGFYLCBkZWx0YVksICdiZWdhbicsICdub25lJyk7CisgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGRlbHRhWCAqIDIsIGRl
bHRhWSAqIDIsICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZGVsdGFYICogMywgZGVsdGFZICogMywgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkZWx0YVgsIGRlbHRhWSwg
J25vbmUnLCAnYmVnaW4nKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZGVsdGFYICogMiwgZGVsdGFZICogMiwgJ25vbmUnLCAnY29udGlu
dWUnKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZGVsdGFYICogMywgZGVsdGFZICogMywgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwg
J25vbmUnLCAnZW5kJyk7CisgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4geworICAg
ICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoKCkgPT4geworICAg
ICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKworZnVuY3Rpb24g
cmVzZXRUZXN0KCkgeworICAgIC8vIFRyeSB2YXJpb3VzIG1ldGhvZHMgdG8gZW5zdXJlIHRoZSBl
bGVtZW50IHBvc2l0aW9uIGlzIHJlc2V0IGltbWVkaWF0ZWx5LgorICAgIHNjcm9sbGVyLnNjcm9s
bExlZnQgPSAzMDA7CisgICAgc2Nyb2xsZXIuc2Nyb2xsVG9wID0gMzAwOworICAgIHNjcm9sbGVy
LnNjcm9sbFRvKDMwMCwgMzAwKTsKKworICAgIHJvb3Quc2Nyb2xsTGVmdCA9IDA7CisgICAgcm9v
dC5zY3JvbGxUb3AgPSAwOworICAgIHJvb3Quc2Nyb2xsVG8oMCwgMCk7Cit9CisKK2Z1bmN0aW9u
IHN0YXJ0VGVzdCgpIHsKKyAgICBvdmVyc2Nyb2xsRGF0YXMuZm9yRWFjaCgoW292ZXJzY3JvbGxY
LCBvdmVyc2Nyb2xsWSwgcHJvcGFnYXRlWCwgcHJvcGFnYXRlWV0pID0+IHsKKyAgICAgICAgcHJv
bWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAgIHJlc2V0VGVzdCgpOworICAgICAgICAgICAg
c2Nyb2xsZXIuc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWCA9IG92ZXJzY3JvbGxYOworICAgICAg
ICAgICAgc2Nyb2xsZXIuc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWSA9IG92ZXJzY3JvbGxZOwor
ICAgICAgICAgICAgcmV0dXJuIHBlcmZvcm1XaGVlbFNjcm9sbChzY3JvbGxlciwgInJpZ2h0Iiku
dGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbExl
ZnQgPiAwLCBwcm9wYWdhdGVYLCAnQ29udGludWUgdXAgdGhlIGhvcml6b250YWwgc2Nyb2xsIGNo
YWluaW5nJyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSwgJ0VsZW1lbnQgaG9yaXpvbnRh
bCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6ICcgKyBvdmVyc2Nyb2xsWCAr
ICcgJyArIG92ZXJzY3JvbGxZICsgJy4nKTsKKworICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4g
eworICAgICAgICAgICAgcmVzZXRUZXN0KCk7CisgICAgICAgICAgICBzY3JvbGxlci5zdHlsZS5v
dmVyc2Nyb2xsQmVoYXZpb3JYID0gb3ZlcnNjcm9sbFg7CisgICAgICAgICAgICBzY3JvbGxlci5z
dHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JZID0gb3ZlcnNjcm9sbFk7CisgICAgICAgICAgICByZXR1
cm4gcGVyZm9ybVdoZWVsU2Nyb2xsKHNjcm9sbGVyLCAiZG93biIpLnRoZW4oKCkgPT4geworICAg
ICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxUb3AgPiAwLCBwcm9wYWdhdGVZ
LCAnQ29udGludWUgdXAgdGhlIHZlcnRpY2FsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAgICAg
ICAgfSk7CisgICAgICAgIH0sICdFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3Zl
cnNjcm9sbC1iZWhhdmlvcjogJyArIG92ZXJzY3JvbGxYICsgJyAnICsgb3ZlcnNjcm9sbFkgKyAn
LicpOworICAgIH0pOworfQorCithZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgc3RhcnRUZXN0KTsK
Kzwvc2NyaXB0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItaWZy
YW1lLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MDBhMGI3ZDkwNWI4N2MxZGI3NjI2OTRmZDAw
NjM4ZjE5NzY5NTM3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxp
bmcvb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjEg
QEAKKworCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9s
bC1iZWhhdmlvcjogYXV0byBhdXRvLgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qg
d2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIGF1dG8uCitQQVNTIElmcmFtZSBob3Jpem9u
dGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBhdXRvLgor
UEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9y
OiBjb250YWluIGF1dG8uCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGgg
b3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBhdXRvLgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Ny
b2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIGF1dG8uCitQQVNTIElmcmFt
ZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBj
b250YWluLgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xs
LWJlaGF2aW9yOiBhdXRvIGNvbnRhaW4uCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0
ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBjb250YWluLgorUEFTUyBJZnJh
bWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWlu
IGNvbnRhaW4uCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNj
cm9sbC1iZWhhdmlvcjogbm9uZSBjb250YWluLgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xs
IHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIGNvbnRhaW4uCitQQVNTIElmcmFt
ZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBu
b25lLgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJl
aGF2aW9yOiBhdXRvIG5vbmUuCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdp
dGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBub25lLgorUEFTUyBJZnJhbWUgdmVydGlj
YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIG5vbmUuCitQ
QVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlv
cjogbm9uZSBub25lLgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVy
c2Nyb2xsLWJlaGF2aW9yOiBub25lIG5vbmUuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjA3ZDY5Mzc2MTNiODAzMjdkZTY2ZjdiMThlMzZiZDA4NjUzODE0ZDIKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLWlm
cmFtZS5odG1sCkBAIC0wLDAgKzEsMTEyIEBACis8IWRvY3R5cGUgaHRtbD4KKworPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxsaW5r
IHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1vdmVyc2Nyb2xs
LWJlaGF2aW9yIj4KKzxzdHlsZT4KKyAgICAuc2Nyb2xsaW5nIHsKKyAgICAgICAgb3ZlcmZsb3c6
IHNjcm9sbDsKKyAgICB9CisgICAgLnNjcm9sbENvbnRlbnQgeworICAgICAgICB3aWR0aDogMzAw
cHg7CisgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1n
cmFkaWVudCgxMzVkZWcsIHJlZCwgYmx1ZSk7CisgICAgfQorICAgICNyb290IHsKKyAgICAgICAg
d2lkdGg6IDIwMHB4OworICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAgIH0KKyAgICAjc2Nyb2xs
ZXIgeworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAg
ICAgIG92ZXJzY3JvbGwtYmVoYXZpb3IteTogYXV0bzsKKyAgICB9Cis8L3N0eWxlPgorPGRpdiBp
ZD0ncm9vdCcgY2xhc3M9InNjcm9sbGluZyI+CisgICAgPGlmcmFtZSBpZD0nc2Nyb2xsZXInIHNy
Y2RvYz0iPGh0bWw+PGRpdiBzdHlsZT0nd2lkdGg6IDMwMHB4OyBoZWlnaHQ6IDMwMHB4Oyc+PC9k
aXY+PC9odG1sPgorICAgICAgICAiPjwvaWZyYW1lPgorICAgIDxkaXYgY2xhc3M9InNjcm9sbENv
bnRlbnQiPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+CisgICAgY29uc3Qgcm9vdCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdyb290Jyk7CisgICAgY29uc3Qgc2Nyb2xsZXIgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnc2Nyb2xsZXInKTsKKyAgICB2YXIgb3ZlcnNjcm9sbERhdGFzID0g
W1siYXV0byIsICJhdXRvIiwgdHJ1ZSwgdHJ1ZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgWyJjb250YWluIiwgImF1dG8iLCBmYWxzZSwgdHJ1ZV0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgWyJub25lIiwgImF1dG8iLCBmYWxzZSwgdHJ1ZV0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgWyJhdXRvIiwgImNvbnRhaW4iLCB0cnVlLCBmYWxzZV0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgWyJjb250YWluIiwgImNvbnRhaW4iLCBmYWxzZSwgZmFsc2VdLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsibm9uZSIsICJjb250YWluIiwgZmFsc2UsIGZh
bHNlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImF1dG8iLCAibm9uZSIsIHRydWUs
IGZhbHNlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImNvbnRhaW4iLCAibm9uZSIs
IGZhbHNlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJub25lIiwgIm5v
bmUiLCBmYWxzZSwgZmFsc2VdXTsKKyAgICBhc3luYyBmdW5jdGlvbiBwZXJmb3JtV2hlZWxTY3Jv
bGwoc2Nyb2xsZXIsIGRpcmVjdGlvbikgeworICAgICAgICB2YXIgZGVsdGFYID0gMDsKKyAgICAg
ICAgdmFyIGRlbHRhWSA9IDA7CisgICAgICAgIGlmIChkaXJlY3Rpb24gPT0gImRvd24iKQorICAg
ICAgICAgICAgZGVsdGFZID0gLTU7CisgICAgICAgIGVsc2UgaWYgKGRpcmVjdGlvbiA9PSAidXAi
KQorICAgICAgICAgICAgZGVsdGFZID0gNTsKKyAgICAgICAgZWxzZSBpZiAoZGlyZWN0aW9uID09
ICJyaWdodCIpCisgICAgICAgICAgICBkZWx0YVggPSAtNTsKKyAgICAgICAgZWxzZSBpZiAoZGly
ZWN0aW9uID09ICJsZWZ0IikKKyAgICAgICAgICAgIGRlbHRhWCA9IDU7CisKKyAgICAgICAgdmFy
IHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAgICAgIHZhciB5ID0gc2Nyb2xsZXIu
Y2xpZW50SGVpZ2h0IC8gMjsKKyAgICAgICAgZXZlbnRTZW5kZXIuZHJhZ01vZGUgPSBmYWxzZTsK
KyAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZGVsdGFYLCBkZWx0YVksICdiZWdhbicsICdu
b25lJyk7CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkZWx0YVggKiAyLCBkZWx0YVkgKiAyLCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkZWx0YVggKiAzLCBkZWx0YVkgKiAzLCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAn
ZW5kZWQnLCAnbm9uZScpOworICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZGVsdGFYLCBkZWx0YVksICdub25lJywgJ2JlZ2luJyk7Cisg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkZWx0YVggKiAyLCBkZWx0YVkgKiAyLCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZGVsdGFY
ICogMywgZGVsdGFZICogMywgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywg
J2VuZCcpOworICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoKCkgPT4geworICAg
ICAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAg
ICB9CisKKyAgICBmdW5jdGlvbiByZXNldFRlc3QoKSB7CisgICAgICAgIC8vIFRyeSB2YXJpb3Vz
IG1ldGhvZHMgdG8gZW5zdXJlIHRoZSBlbGVtZW50IHBvc2l0aW9uIGlzIHJlc2V0IGltbWVkaWF0
ZWx5LgorICAgICAgICBzY3JvbGxlci5jb250ZW50V2luZG93LnNjcm9sbFggPSAzMDA7CisgICAg
ICAgIHNjcm9sbGVyLmNvbnRlbnRXaW5kb3cuc2Nyb2xsWSA9IDMwMDsKKyAgICAgICAgc2Nyb2xs
ZXIuY29udGVudFdpbmRvdy5zY3JvbGxUbygzMDAsIDMwMCk7CisKKyAgICAgICAgcm9vdC5zY3Jv
bGxMZWZ0ID0gMDsKKyAgICAgICAgcm9vdC5zY3JvbGxUb3AgPSAwOworICAgICAgICByb290LnNj
cm9sbFRvKDAsIDApOworICAgIH0KKworICAgIGZ1bmN0aW9uIG92ZXJzY3JvbGxCZWhhdmlvclRl
c3QoKSB7CisgICAgICAgIG92ZXJzY3JvbGxEYXRhcy5mb3JFYWNoKChbb3ZlcnNjcm9sbFgsIG92
ZXJzY3JvbGxZLCBwcm9wYWdhdGVYLCBwcm9wYWdhdGVZXSkgPT4geworICAgICAgICAgICAgcHJv
bWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAgICAgICByZXNldFRlc3QoKTsKKyAgICAgICAg
ICAgICAgICB2YXIgdGFyZ2V0ID0gc2Nyb2xsZXIuY29udGVudFdpbmRvdy5kb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgiaHRtbCIpWzBdOworICAgICAgICAgICAgICAgIHRhcmdldC5zdHls
ZS5vdmVyc2Nyb2xsQmVoYXZpb3JYID0gb3ZlcnNjcm9sbFg7CisgICAgICAgICAgICAgICAgdGFy
Z2V0LnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclkgPSBvdmVyc2Nyb2xsWTsKKworICAgICAgICAg
ICAgICAgIHJldHVybiBwZXJmb3JtV2hlZWxTY3JvbGwoc2Nyb2xsZXIsICJyaWdodCIpLnRoZW4o
KCkgPT4geworICAgICAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsTGVm
dCA+IDAsIHByb3BhZ2F0ZVgsICdDb250aW51ZSB1cCB0aGUgaG9yaXpvbnRhbCBzY3JvbGwgY2hh
aW5pbmcnKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0sICdJZnJhbWUgaG9y
aXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6ICcgKyBvdmVyc2Ny
b2xsWCArICcgJyArIG92ZXJzY3JvbGxZICsgJy4nKTsKKworICAgICAgICAgICAgcHJvbWlzZV90
ZXN0KCgpID0+IHsKKyAgICAgICAgICAgICAgICByZXNldFRlc3QoKTsKKyAgICAgICAgICAgICAg
ICB2YXIgdGFyZ2V0ID0gc2Nyb2xsZXIuY29udGVudFdpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgiaHRtbCIpWzBdOworICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5vdmVy
c2Nyb2xsQmVoYXZpb3JYID0gb3ZlcnNjcm9sbFg7CisgICAgICAgICAgICAgICAgdGFyZ2V0LnN0
eWxlLm92ZXJzY3JvbGxCZWhhdmlvclkgPSBvdmVyc2Nyb2xsWTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gcGVyZm9ybVdoZWVsU2Nyb2xsKHNjcm9sbGVyLCAiZG93biIpLnRoZW4oKCkgPT4gewor
ICAgICAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsVG9wID4gMCwgcHJv
cGFnYXRlWSwgJ0NvbnRpbnVlIHVwIHRoZSB2ZXJ0aWNhbCBzY3JvbGwgY2hhaW5pbmcnKTsKKyAg
ICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0sICdJZnJhbWUgdmVydGljYWwgc2Nyb2xs
IHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiAnICsgb3ZlcnNjcm9sbFggKyAnICcgKyBv
dmVyc2Nyb2xsWSArICcuJyk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIHNjcm9sbGVyLmFk
ZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBvdmVyc2Nyb2xsQmVoYXZpb3JUZXN0KTsKKzwvc2NyaXB0
PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlv
ci11bnNjcm9sbGFibGUtZWxlbWVudC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjM5NWI2NDg4
ZDA4NzBiOTU2MWMwMjg2NzlkN2UxNWE0N2ZjZTZlOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVs
ZW1lbnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorCitQQVNTIFVuc2Nyb2xsYWJsZSBl
bGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBu
b25lLgorUEFTUyBVbnNjcm9sbGFibGUgZWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRo
IG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3Jv
bGxhYmxlLWVsZW1lbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42N2FjYjhmOGY5MDFjYzk0OWIxZmZkZDg3
ZGFlOGExZmI5ZWViOTRiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3Jv
bGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC5odG1sCkBAIC0w
LDAgKzEsOTIgQEAKKzwhZG9jdHlwZSBodG1sPgorCis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJoZWxwIiBocmVm
PSJodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLW92ZXJzY3JvbGwtYmVoYXZpb3IiPgorPHN0
eWxlPgorICAgIC5zY3JvbGxpbmcgeworICAgICAgICBvdmVyZmxvdzogc2Nyb2xsOworICAgIH0K
KyAgICAuc2Nyb2xsQ29udGVudCB7CisgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgaGVp
Z2h0OiAzMDBweDsKKyAgICB9CisgICAgI3Jvb3QgeworICAgICAgICB3aWR0aDogMjAwcHg7Cisg
ICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgfQorICAgICNzY3JvbGxlciB7CisgICAgICAgIHdp
ZHRoOiAxMDBweDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgICAgb3ZlcnNjcm9sbC1i
ZWhhdmlvcjogbm9uZTsKKyAgICAgICAgb3ZlcmZsb3c6IHZpc2libGU7CisgICAgICAgIGJhY2tn
cm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJlZCwgYmx1ZSk7CisgICAgfQorPC9zdHls
ZT4KKzxkaXYgaWQ9InJvb3QiIGNsYXNzPSJzY3JvbGxpbmciPgorICAgIDxkaXYgaWQ9InNjcm9s
bGVyIj4KKyAgICAgICAgPGRpdiBjbGFzcz0ic2Nyb2xsQ29udGVudCI+PC9kaXY+CisgICAgPC9k
aXY+CisgICAgPGRpdiBjbGFzcz0ic2Nyb2xsQ29udGVudCI+PC9kaXY+Cis8L2Rpdj4KKworPHNj
cmlwdD4KK2NvbnN0IHJvb3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncm9vdCcpOworY29u
c3Qgc2Nyb2xsZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2Nyb2xsZXInKTsKK2FzeW5j
IGZ1bmN0aW9uIHBlcmZvcm1XaGVlbFNjcm9sbChzY3JvbGxlciwgZGlyZWN0aW9uKSB7CisgICAg
dmFyIGRlbHRhWCA9IDA7CisgICAgdmFyIGRlbHRhWSA9IDA7CisgICAgaWYgKGRpcmVjdGlvbiA9
PSAiZG93biIpCisgICAgICAgIGRlbHRhWSA9IC01OworICAgIGVsc2UgaWYgKGRpcmVjdGlvbiA9
PSAidXAiKQorICAgICAgICBkZWx0YVkgPSA1OworICAgIGVsc2UgaWYgKGRpcmVjdGlvbiA9PSAi
cmlnaHQiKQorICAgICAgICBkZWx0YVggPSAtNTsKKyAgICBlbHNlIGlmIChkaXJlY3Rpb24gPT0g
ImxlZnQiKQorICAgICAgICBkZWx0YVggPSA1OworCisgICAgdmFyIHggPSBzY3JvbGxlci5jbGll
bnRXaWR0aCAvIDI7CisgICAgdmFyIHkgPSBzY3JvbGxlci5jbGllbnRIZWlnaHQgLyAyOworICAg
IGV2ZW50U2VuZGVyLmRyYWdNb2RlID0gZmFsc2U7CisgICAgZXZlbnRTZW5kZXIubW9uaXRvcldo
ZWVsRXZlbnRzKCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGRlbHRhWCwg
ZGVsdGFZLCAnYmVnYW4nLCAnbm9uZScpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkZWx0YVggKiAyLCBkZWx0YVkgKiAyLCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGRlbHRhWCAqIDMsIGRlbHRhWSAqIDMsICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
MCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZGVsdGFYLCBkZWx0YVksICdub25lJywgJ2JlZ2luJyk7
CisgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGRlbHRhWCAqIDIsIGRlbHRhWSAqIDIsICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGRlbHRhWCAqIDMs
IGRlbHRhWSAqIDMsICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOwor
ICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICAgICAgZXZlbnRTZW5kZXIu
Y2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKCgpID0+IHsKKyAgICAgICAgICAgIHJlc29sdmUo
KTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKK2Z1bmN0aW9uIHJlc2V0VGVzdCgpIHsKKyAg
ICByb290LnNjcm9sbExlZnQgPSAwOworICAgIHJvb3Quc2Nyb2xsVG9wID0gMDsKKyAgICByb290
LnNjcm9sbFRvKDAsIDApOworfQorCitmdW5jdGlvbiBzdGFydFRlc3QoKSB7CisgICAgICAgIHBy
b21pc2VfdGVzdCgoKSA9PiB7CisgICAgICAgICAgICByZXNldFRlc3QoKTsKKyAgICAgICAgICAg
IHJldHVybiBwZXJmb3JtV2hlZWxTY3JvbGwoc2Nyb2xsZXIsICJyaWdodCIpLnRoZW4oKCkgPT4g
eworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxMZWZ0ID4gMCwgdHJ1
ZSwgJ0NvbnRpbnVlIHVwIHRoZSBob3Jpem9udGFsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAg
ICAgICAgfSk7CisgICAgICAgIH0sICdVbnNjcm9sbGFibGUgZWxlbWVudCBob3Jpem9udGFsIHNj
cm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4nKTsKKworICAgICAgICBw
cm9taXNlX3Rlc3QoKCkgPT4geworICAgICAgICAgICAgcmVzZXRUZXN0KCk7CisKKyAgICAgICAg
ICAgIHJldHVybiBwZXJmb3JtV2hlZWxTY3JvbGwoc2Nyb2xsZXIsICJkb3duIikudGhlbigoKSA9
PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbFRvcCA+IDAsIHRy
dWUsICdDb250aW51ZSB1cCB0aGUgdmVydGljYWwgc2Nyb2xsIGNoYWluaW5nJyk7CisgICAgICAg
ICAgICB9KTsKKyAgICAgICAgfSwgJ1Vuc2Nyb2xsYWJsZSBlbGVtZW50IHZlcnRpY2FsIHNjcm9s
bCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4nKTsKK30KKworYWRkRXZlbnRM
aXN0ZW5lcigibG9hZCIsIHN0YXJ0VGVzdCk7Cis8L3NjcmlwdD4KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9vdmVyc2Ny
b2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1l
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZmE1OWNjYmE3OWFlZmYzM2RhNzBlOTNkNDg4YTA3
ZWVjOWM1NjkxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcv
b3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDUgQEAKKworCitQQVNTIFVuc2Nyb2xsYWJsZSBpZnJhbWUgaG9yaXpvbnRhbCBzY3Jv
bGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuCitQQVNTIFVuc2Nyb2xsYWJs
ZSBpZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBu
b25lLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xs
LWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Ny
b2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjU4NjljZGVjMDE1N2MxODk4MTFkNmQ3NzY5OGQzMGY2YTE3N2JhNTkKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9y
LXVuc2Nyb2xsYWJsZS1pZnJhbWUuaHRtbApAQCAtMCwwICsxLDkyIEBACis8IWRvY3R5cGUgaHRt
bD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48
L3NjcmlwdD4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3Jn
L2Nzcy1vdmVyc2Nyb2xsLWJlaGF2aW9yIj4KKzxzdHlsZT4KKyAgICAuc2Nyb2xsaW5nIHsKKyAg
ICAgICAgb3ZlcmZsb3c6IHNjcm9sbDsKKyAgICB9CisgICAgLnNjcm9sbENvbnRlbnQgeworICAg
ICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgfQorICAgICNy
b290IHsKKyAgICAgICAgd2lkdGg6IDIwMHB4OworICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAg
IH0KKyAgICAjc2Nyb2xsZXIgeworICAgICAgICB3aWR0aDogMjAwcHg7CisgICAgICAgIGhlaWdo
dDogMjAwcHg7CisgICAgICAgIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmU7CisgICAgICAgIG92
ZXJmbG93OiB2aXNpYmxlOworICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1
ZGVnLCByZWQsIGJsdWUpOworICAgIH0KKzwvc3R5bGU+Cis8ZGl2IGlkPSdyb290JyBjbGFzcz0i
c2Nyb2xsaW5nIj4KKyAgICA8aWZyYW1lIGlkPSdzY3JvbGxlcicgc3JjZG9jPSI8aHRtbCBzdHls
ZT0nb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZTsnPjxkaXYgc3R5bGU9J3dpZHRoOiAxMDBweDsg
aGVpZ2h0OiAxMDBweDsnPjwvZGl2PjwvaHRtbD4KKyAgICAgICAgIj48L2lmcmFtZT4KKyAgICA8
ZGl2IGNsYXNzPSJzY3JvbGxDb250ZW50Ij48L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0PgorY29u
c3Qgcm9vdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyb290Jyk7Citjb25zdCBzY3JvbGxl
ciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY3JvbGxlcicpOworCithc3luYyBmdW5jdGlv
biBwZXJmb3JtV2hlZWxTY3JvbGwoc2Nyb2xsZXIsIGRpcmVjdGlvbikgeworICAgIHZhciBkZWx0
YVggPSAwOworICAgIHZhciBkZWx0YVkgPSAwOworICAgIGlmIChkaXJlY3Rpb24gPT0gImRvd24i
KQorICAgICAgICBkZWx0YVkgPSAtNTsKKyAgICBlbHNlIGlmIChkaXJlY3Rpb24gPT0gInVwIikK
KyAgICAgICAgZGVsdGFZID0gNTsKKyAgICBlbHNlIGlmIChkaXJlY3Rpb24gPT0gInJpZ2h0IikK
KyAgICAgICAgZGVsdGFYID0gLTU7CisgICAgZWxzZSBpZiAoZGlyZWN0aW9uID09ICJsZWZ0IikK
KyAgICAgICAgZGVsdGFYID0gNTsKKworICAgIHZhciB4ID0gc2Nyb2xsZXIuY2xpZW50V2lkdGgg
LyAyOworICAgIHZhciB5ID0gc2Nyb2xsZXIuY2xpZW50SGVpZ2h0IC8gMjsKKyAgICBldmVudFNl
bmRlci5kcmFnTW9kZSA9IGZhbHNlOworICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50
cygpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkZWx0YVgsIGRlbHRhWSwg
J2JlZ2FuJywgJ25vbmUnKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZGVsdGFYICogMiwgZGVsdGFZICogMiwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkZWx0YVggKiAzLCBkZWx0YVkgKiAzLCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdl
bmRlZCcsICdub25lJyk7CisgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGRlbHRhWCwgZGVsdGFZLCAnbm9uZScsICdiZWdpbicpOworICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkZWx0YVgg
KiAyLCBkZWx0YVkgKiAyLCAnbm9uZScsICdjb250aW51ZScpOworICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkZWx0YVggKiAzLCBkZWx0YVkg
KiAzLCAnbm9uZScsICdjb250aW51ZScpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICByZXR1
cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRl
clNjcm9sbGluZ0NvbXBsZXRlcygoKSA9PiB7CisgICAgICAgICAgICByZXNvbHZlKCk7CisgICAg
ICAgIH0pOworICAgIH0pOworfQorCitmdW5jdGlvbiByZXNldFRlc3QoKSB7CisgICAgcm9vdC5z
Y3JvbGxMZWZ0ID0gMDsKKyAgICByb290LnNjcm9sbFRvcCA9IDA7CisgICAgcm9vdC5zY3JvbGxU
bygwLCAwKTsKK30KKworZnVuY3Rpb24gc3RhcnRUZXN0KCkgeworICAgICAgICBwcm9taXNlX3Rl
c3QoKCkgPT4geworICAgICAgICAgICAgcmVzZXRUZXN0KCk7CisgICAgICAgICAgICByZXR1cm4g
cGVyZm9ybVdoZWVsU2Nyb2xsKHNjcm9sbGVyLCAicmlnaHQiKS50aGVuKCgpID0+IHsKKyAgICAg
ICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsTGVmdCA+IDAsIHRydWUsICdDb250
aW51ZSB1cCB0aGUgaG9yaXpvbnRhbCBzY3JvbGwgY2hhaW5pbmcnKTsKKyAgICAgICAgICAgIH0p
OworICAgICAgICB9LCAnVW5zY3JvbGxhYmxlIGlmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0
IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4nKTsKKworICAgICAgICBwcm9taXNlX3Rl
c3QoKCkgPT4geworICAgICAgICAgICAgcmVzZXRUZXN0KCk7CisKKyAgICAgICAgICAgIHJldHVy
biBwZXJmb3JtV2hlZWxTY3JvbGwoc2Nyb2xsZXIsICJkb3duIikudGhlbigoKSA9PiB7CisgICAg
ICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbFRvcCA+IDAsIHRydWUsICdDb250
aW51ZSB1cCB0aGUgdmVydGljYWwgc2Nyb2xsIGNoYWluaW5nJyk7CisgICAgICAgICAgICB9KTsK
KyAgICAgICAgfSwgJ1Vuc2Nyb2xsYWJsZSBpZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0
aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLicpOworfQorCithZGRFdmVudExpc3RlbmVyKCJs
b2FkIiwgc3RhcnRUZXN0KTsKKzwvc2NyaXB0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9u
cyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAx
NDhjZDdkNmQ3OGQ2MGMwMTZkMzgwMjhmNjkzOGYwZTAwZTA0OGQwLi43MTAxZGRmN2U2MGJiYzk3
Y2RjYTlkYTAzMzNjZmRjYjQwMGI3NDZlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
LXdrMS9UZXN0RXhwZWN0YXRpb25zCkBAIC00NDgsNiArNDQ4LDEwIEBAIGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY29va2llcy9zZWN1cmUvc2V0LWZyb20td3Muc3ViLmh0bWwgWyBG
YWlsdXJlIF0KICMgV2ViS2l0MSBmcmFtZXMgdXNlIG5hdGl2ZSBzY3JvbGxiYXJzIGNhdXNpbmcg
dGhpcyByZWZlcmVuY2UgdGVzdCB0byBmYWlsLgogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLXNjcm9sbC1zbmFwL3Njcm9sbC10YXJnZXQtcGFkZGluZy0wMDEuaHRtbCBb
IEltYWdlT25seUZhaWx1cmUgXQogCisjIE5lZWQgdG8gZmluZCBhIHdheSB0byBibG9jayB0aGUg
Y3Jvc3MtZnJhbWUgc2Nyb2xsIGNoYWluaW5nIGluIFdLMS4KK2Zhc3Qvc2Nyb2xsaW5nL292ZXJz
Y3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0bWwgWyBTa2lwIF0KK2Zhc3Qvc2Nyb2xsaW5nL292ZXJz
Y3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sIFsgU2tpcCBdCisKICMjIyBF
TkQgT0YgKDIpIEZhaWx1cmVzIHdpdGhvdXQgYnVnIHJlcG9ydHMKICMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416745</attachid>
            <date>2020-12-24 03:46:39 -0800</date>
            <delta_ts>2020-12-24 04:38:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220139-20201224194637.patch</filename>
            <type>text/plain</type>
            <size>87294</size>
            <attacher name="cathiechen">cathiechen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxMDgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmY1ZTU2NzljMTQ4MDA0
MmY2ZTJiODhhNWQyMGZjOTNhMmFjMzFhNi4uMzhjYWVlY2EzNzNiZTE4NzYzYzNiMGIyYWZjNzg2
MmM5M2ZkY2NmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNiBAQAorMjAyMC0xMi0yNCAgQ2F0
aGllIENoZW4gIDxjYXRoaWVjaGVuQGlnYWxpYS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IENT
UyBvdmVyc2Nyb2xsLWJlaGF2aW9yIG9uIE1hYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwMTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQmFzZWQgb24gRnLDqWTDqXJpYyBXYW5nJ3MgcGF0Y2guCisK
KyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIG92ZXJzY3JvbGwtYmVoYXZpb3Ig
b24gTWFjLgorICAgICAgICBBY2NvcmRpbmcgdG8gWzFdLCB0aGVyZSBhcmUgdHdvIGtpbmRzIG9m
IGFjdGlvbnM6IG5vbi1sb2NhbCBib3VuZGFyeSBkZWZhdWx0IGFjdGlvbnMgYW5kIGxvY2FsIGJv
dW5kYXJ5IGRlZmF1bHQgYWN0aW9ucy4KKyAgICAgICAgSW4gV2ViS2l0IG1hYywgdGhlIHJ1YmJl
ciBiYW5kaW5nIGVmZm9ydCBpcyBiZWxvbmdlZCB0byBsb2NhbCBib3VuZGFyeSBkZWZhdWx0IGFj
dGlvbnMuIFRoZSBzY3JvbGwgY2hhaW5pbmcgYW5kIHN3aXBlCisgICAgICAgIGdlc3R1cmVzICh0
cmlnZ2VyIGdvIGJhY2sgb3IgZ28gZm9yd2FyZCBhY3Rpb25zKSBhcmUgYmVsb25nZWQgdG8gbm9u
LWxvY2FsIGJvdW5kYXJ5IGRlZmF1bHQgYWN0aW9ucy4KKyAgICAgICAgMS4gVG8gaGFuZGxlIHRo
ZSBydWJiZXIgYmFuZGluZyBlZmZlY3QsIHNob3VsZFN0b3BIb3Jpem9udGFsU3RyZWNoKCkgYW5k
IHNob3VsZFN0b3BWZXJ0aWNhbFN0cmVjaCgpIGFyZSBhZGRlZCB0byBkZWNpZGUKKyAgICAgICAg
d2hldGhlciB0aGUgcnViYmVyIGJhbmRpbmcgZWZmb3J0IGlzIGFsbG93ZWQgb3Igbm90LgorICAg
ICAgICAyLiBUbyBibG9jayBzY3JvbGwgY2hhaW5pbmcgYWN0aW9ucyBpbiBkaWZmZXJlbnQgc2Ny
b2xsIG1vZGVzLgorICAgICAgICAgIC0gRm9yIGFzeW5jaHJvbm91cyBzY3JvbGxpbmcsIGl0J3Mg
aGFuZGxlZCBpbiBTY3JvbGxpbmdUcmVlOjpoYW5kbGVXaGVlbEV2ZW50V2l0aE5vZGUoKSwgYWNj
b3JkaW5nIHRvIHRoZSB2YWx1ZSBvZgorICAgICAgICAgIG92ZXJzY3JvbGwtYmVoYXZpb3IsIGl0
IGJsb2NrcyB0aGUgc2Nyb2xsIGNoYWluaW5nIGlmIG5lZWRlZCwgdGhlIHJlc3VsdCB3b3VsZCBi
ZSBhZGRlZCB0byBtX2xhdGNoaW5nQ29udHJvbGxlcgorICAgICAgICAgIGFuZCBtaWdodCBiZSBy
ZXVzZWQuCisgICAgICAgICAgLSBGb3Igc3luY2hyb25vdXMgc2Nyb2xsaW5nLCBpZiBXSEVFTF9F
VkVOVF9MQVRDSElORyBpcyBkaXNhYmxlZCwgaXQgaGFuZGxlcyBvdmVyc2Nyb2xsLWJlaGF2aW9y
IGluIGhhbmRsZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94KCkuCisgICAgICAg
ICAgSWYgV0hFRUxfRVZFTlRfTEFUQ0hJTkcgaXMgZW5hYmxlZC4gT3ZlcnNjcm9sbC1iZWhhdmlv
ciBpcyBoYW5kbGVkIGluIGZpbmRFbmNsb3NpbmdTY3JvbGxhYmxlQ29udGFpbmVyKCkuCisgICAg
ICAgICAgSXQgYWRkZWQgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIHRvIEZyYW1lU3RhdGUgdG8gaW5k
aWNhdGUgd2hldGhlciB0aGUgY3VycmVudCBsYXRjaGVkIG5vZGUgc2hvdWxkIGJsb2NrIHNjcm9s
bCBjaGFpbmluZy4KKyAgICAgICAgICBJZiB0aGUgY3VycmVudCBmcmFtZSBpcyBhIHN1YmZyYW1l
LCBpdCBwYXNzZXMgaXRzIFNjcm9sbENoYWluaW5nQmxvY2tlciB0byB0aGUgcGFyZW50ZnJhbWUs
IGFuZCBldmVudHVhbGx5CisgICAgICAgICAgbGV0IHRoZSBtYWluZnJhbWUgZGVjaWRlIHdoZXRo
ZXIgc2hvdWxkIHRyaWdnZXIgc3dpcGUgZ2VzdHVyZXMgb3Igbm90LgorICAgICAgICAzLiBUaGUg
c3dpcGUgZ2VzdHVyZXMuCisgICAgICAgICAgSWYgdGhlIG1haW5mcmFtZSByZWFjaGVzIGl0cyBz
Y3JvbGwgZWRnZXMsIHRoZXJlIHdpbGwgYmUgc3dpcGUgZ2VzdHVyZXMgZXZlbiBpZiBvdmVyc2Ny
b2xsLWJlaGF2aW9yJ3MgdmFsdWUgaXMgbm9uZS4KKyAgICAgICAgICBUaGlzIGJlaGF2aW9yIGlz
IG5vdCBzdXBvb3J0ZWQgaW4gV0sxIGFuZCBXSzIncyBzeW5jaHJvbm91cyBzY3JvbGwgd2l0aCBX
SEVFTF9FVkVOVF9MQVRDSElORyBvZmYuCisKKyAgICAgICAgWzFdIGh0dHBzOi8vZHJhZnRzLmNz
c3dnLm9yZy9jc3Mtb3ZlcnNjcm9sbC0xLyNvdmVyc2Nyb2xsLWJlaGF2aW9yLXByb3BlcnRpZXMK
KworICAgICAgICBUZXN0czogZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVt
ZW50Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZp
b3ItaWZyYW1lLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwt
YmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9z
Y3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLmh0bWwKKwor
ICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
SGFuZGxlcjo6dXBkYXRlU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKTogVXBkYXRlZCB0aGUgdmFsdWUg
b2YgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIGZyb20gU2Nyb2xsYWJsZUFyZWEncyBvdmVyc2Nyb2xs
LWJlaGF2aW9yLgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpzaG91bGRCbG9ja1Nj
cm9sbENoYWluaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZVBhcmVudEZyYW1lU2Nyb2xs
Q2hhaW5pbmdCbG9ja2VyKTogQXBwbGllZCB0aGUgY3VycmVudCBmcmFtZSdzIG92ZXJzY3JvbGwt
YmVoYXZpb3IgdmFsdWUgdG8gU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyCisgICAgICAgIGFuZCBwYXNz
IHRoaXMgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIHRvIHBhcmVudCBmcmFtZS4KKyAgICAgICAgKFdl
YkNvcmU6OmFkanVzdERlbHRhcyk6CisgICAgICAgIChXZWJDb3JlOjppc1Nyb2xsQ2hhaW5pbmdT
dG9wcGVkQnlPdmVyc2Nyb2xsQmVoYXZpb3IpOiAKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFu
ZGxlcjo6aGFuZGxlV2hlZWxFdmVudEludGVybmFsKTogU3RvcCBoYW5kbGluZyB3aGVlbEV2ZW50
IGZvciBGcmFtZVZpZXcgaWYgaXNTcm9sbENoYWluaW5nU3RvcHBlZEJ5T3ZlcnNjcm9sbEJlaGF2
aW9yLgorICAgICAgICAoV2ViQ29yZTo6ZGlkU2Nyb2xsSW5TY3JvbGxhYmxlQXJlYSk6IEFkanVz
dCB3aGVlbEV2ZW50J3MgZGVsdGFzIGFjY29yZGluZyB0byB0aGUgdmFsdWUgb2YgU2Nyb2xsQ2hh
aW5pbmdCbG9ja2VyLgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVl
bEV2ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2luZ0JveCk6IEFkanVzdCBmaWx0ZXJlZFBsYXRmb3Jt
RGVsdGEgYWNjb3JkaW5nIHRvIG92ZXJzY3JvbGwtYmVoYXZpb3IncyB2YWx1ZSwKKyAgICAgICAg
YW5kIHN0b3Agc2Nyb2xsLWNoYWluaW5nIGlmIG5lY2Vzc2FyeSBmb3IgdGhlIHNjZW5hcmlvIG9m
IHN5bmNocm9ub3VzIHNjcm9sbCB3aXRoIFdIRUVMX0VWRU5UX0xBVENISU5HIGlzIG9mZi4KKyAg
ICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZGVmYXVsdFdoZWVsRXZlbnRIYW5kbGVyKTog
QWRqdXN0IGZpbHRlcmVkUGxhdGZvcm1EZWx0YSBhY2NvcmRpbmcgdG8gb3ZlcnNjcm9sbC1iZWhh
dmlvcidzIHZhbHVlLAorICAgICAgICBhbmQgcGFzcyBTY3JvbGxDaGFpbmluZ0Jsb2NrZXIgdG8g
cGFyZW50IGZyYW1lIGlmIG5lZWRlZC4KKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5oOgor
ICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmll
dzo6aG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvciBjb25zdCk6IFJldHVybnMgZG9jdW1lbnRF
bGVtZW50J3MgdmFsdWUgb2Ygb3ZlcnNjcm9sbC1iZWhhdmlvci14LgorICAgICAgICBJZiBkb2N1
bWVudEVsZW1lbnQgaXMgbm90IGEgc2Nyb2xsIGNvbnRhaW5lciwgcmV0dXJucyBPdmVyc2Nyb2xs
QmVoYXZpb3I6OkF1dG8uCisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnZlcnRpY2FsT3Zl
cnNjcm9sbEJlaGF2aW9yIGNvbnN0KTogRGl0dG8uCisgICAgICAgICogcGFnZS9GcmFtZVZpZXcu
aDoKKyAgICAgICAgKiBwYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW06CisgICAgICAgIChXZWJD
b3JlOjpmaW5kRW5jbG9zaW5nU2Nyb2xsYWJsZUNvbnRhaW5lcik6IEFwcGx5IG92ZXJzY3JvbGwt
YmVoYXZpb3IgdG8gU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIGFuZCBzdG9wIHRoZSBzY3JvbGwgY2hh
aW5pbmcgaWYgbmVlZGVkCisgICAgICAgIGZvciB0aGUgc2NlbmFyaW8gb2Ygc3luY2hyb25vdXMg
c2Nyb2xsIHdpdGggV0hFRUxfRVZFTlRfTEFUQ0hJTkcgaXMgb24uCisgICAgICAgIChXZWJDb3Jl
OjpFdmVudEhhbmRsZXI6OmRldGVybWluZVdoZWVsRXZlbnRUYXJnZXQpOiBTdG9yZXMgU2Nyb2xs
Q2hhaW5pbmdCbG9ja2VyIGluIHNjcm9sbExhdGNoaW5nQ29udHJvbGxlcgorICAgICAgICAqIHBh
Z2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0U2Nyb2xsaW5nTm9kZVNjcm9sbGFi
bGVBcmVhR2VvbWV0cnkpOiBVcGRhdGUgb3ZlcnNjcm9sbC1iZWhhdmlvciB2YWx1ZXMgaW4gc2Ny
b2xsUGFyYW1ldGVycy4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxMYXRjaGluZ0Nv
bnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVy
Ojp1cGRhdGVBbmRGZXRjaExhdGNoaW5nU3RhdGVGb3JGcmFtZSk6IEFkZCBTY3JvbGxDaGFpbmlu
Z0Jsb2NrZXIgdG8gRnJhbWVTdGF0ZS4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbExhdGNoaW5n
Q29udHJvbGxlcjo6Z2V0U2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIGNvbnN0KTogUmV0dXJucyBTY3Jv
bGxDaGFpbmluZ0Jsb2NrZXIgb2YgZnJhbWUuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxMYXRj
aGluZ0NvbnRyb2xsZXI6OnVwZGF0ZVNjcm9sbENoYWluaW5nQmxvY2tlcik6IFVwZGF0ZXMgU2Ny
b2xsQ2hhaW5pbmdCbG9ja2VyIG9mIGZyYW1lLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsTGF0
Y2hpbmdDb250cm9sbGVyOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9T
Y3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdDb29yZGluYXRvclR5cGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJl
YVBhcmFtZXRlcnM6Om9wZXJhdG9yPT0gY29uc3QpOiBBZGRlZCBob3Jpem9udGFsT3ZlcnNjcm9s
bEJlaGF2aW9yIGFuZCB2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvci4KKyAgICAgICAgKiBwYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z1RyZWU6OmhhbmRsZVdoZWVsRXZlbnRXaXRoTm9kZSk6IFVwZGF0ZSBTY3JvbGxDaGFpbmluZ0Js
b2NrZXIgYWNjb3JkaW5nIHRvIHRoZSBvdmVyc2Nyb2xsLWJlaGF2aW9yIHZhbHVlcywKKyAgICAg
ICAgc3RvcCB0aGUgc2Nyb2xsIGNoYWluaW5nIGlmIG5lZWRlZCwgYW5kIGlmIGl0J3MgaG9yaXpv
bnRhbCBzY3JvbGwgYW5kIHdpbGxXaGVlbEV2ZW50U3RhcnRTd2lwZUdlc3R1cmUsIGxldCBpdCB0
cmlnZ2VyIHN3aXBlIGdlc3R1cmUuCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGU6Omhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IgY29uc3QpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjp2ZXJ0aWNhbE92
ZXJzY3JvbGxCZWhhdmlvciBjb25zdCk6IERpdHRvLgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmg6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcv
bWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMuaDoKKyAgICAgICAgKiBw
YWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVN
YWM6OmFsbG93c0hvcml6b250YWxTdHJldGNoaW5nIGNvbnN0KTogSWYgb3ZlcnNjcm9sbC1iZWhh
dmlvci14OiBub25lLCB0aGUgc2Nyb2xsIHN0cmV0Y2ggc2hvdWxkIGJlIGJsb2NrZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjphbGxv
d3NWZXJ0aWNhbFN0cmV0Y2hpbmcgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OnNob3VsZFN0b3BIb3Jpem9udGFs
U3RyZWNoIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZURlbGVnYXRlTWFjOjpzaG91bGRTdG9wVmVydGljYWxTdHJlY2ggY29uc3QpOiBE
aXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtV2hlZWxFdmVudDo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVy
dGljYWwpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFR5cGVzLmg6CisgICAgICAgICogcGxh
dGZvcm0vU2Nyb2xsYWJsZUFyZWEuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGFibGVBcmVh
Ojpob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGFibGVBcmVhOjp2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvciBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5oOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsQ29udHJvbGxlckNsaWVudDo6c2hvdWxkU3RvcEhvcml6b250YWxTdHJlY2ggY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQ29udHJvbGxlckNsaWVudDo6c2hvdWxkU3Rv
cFZlcnRpY2FsU3RyZWNoIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TY3JvbGxD
b250cm9sbGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQ29udHJvbGxlcjo6aGFuZGxl
V2hlZWxFdmVudCk6IFN0b3Agc2Nyb2xsIHN0cmVjaGluZyBpZiBuZWVkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxDb250cm9sbGVyOjpkaXJlY3Rpb25Gcm9tRXZlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsQ29udHJvbGxlcjo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGlj
YWwpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5o
OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTWFjOjpzaG91bGRTdG9wSG9yaXpvbnRhbFN0cmVjaCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck1hYzo6c2hvdWxkU3RvcFZl
cnRpY2FsU3RyZWNoIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6Omhvcml6b250YWxPdmVyc2Nyb2xsQmVo
YXZpb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnZlcnRpY2FsT3Zl
cnNjcm9sbEJlaGF2aW9yIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
aDoKKwogMjAyMC0xMi0yMyAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4K
IAogICAgICAgICBDbGVhbiB1cCBzb21lIGNvZGUgcmVsYXRlZCB0byBzY3JvbGwgcGlubmluZwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCA3ZDM1YzVhZTEzMTc0ZTMzMjBjMDRmY2FiYTYzNzdiNjJmZGU5NGFjLi44ZTdl
YjA4MDg1OTRhNmFhNTdiZmQ1MWJhYjI3Mzc1NDhlNDAxNGFlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE5IEBACisyMDIwLTEyLTI0ICBDYXRoaWUgQ2hlbiAgPGNhdGhpZWNoZW5AaWdhbGlhLmNvbT4K
KworICAgICAgICBJbXBsZW1lbnQgQ1NTIG92ZXJzY3JvbGwtYmVoYXZpb3Igb24gTWFjCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjAxMzkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCYXNlZCBvbiBGcsOp
ZMOpcmljIFdhbmcncyBwYXRjaC4KKworICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFNjcm9sbGFibGVBcmVhUGFy
YW1ldGVycz46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8U2Nyb2xsYWJs
ZUFyZWFQYXJhbWV0ZXJzPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmg6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUzo6Y29tbWl0U3RhdGVBZnRlckNo
aWxkcmVuKToKKwogMjAyMC0xMi0yMyAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNv
bT4KIAogICAgICAgICBbR1BVIFByb2Nlc3NdOiBEb24ndCBjYWxsIGZsdXNoRHJhd2luZ0NvbnRl
eHQoKSBpbiB0aGUgbWlkZGxlIG9mIHJlY29yZGluZyBkcmF3aW5nIGNvbW1hbmRzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggZTEwYjRkYjAzMTA2ZTY4ZjU0MTIzYmNlODY2YWU2YjQz
MDkzM2JlOC4uYWFmNDk1N2Y1YTA5ZTcyZTg2OTllY2Y5MDQ5NzE1YzVjYTAyM2IwYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIwLTEyLTI0ICBDYXRo
aWUgQ2hlbiAgPGNhdGhpZWNoZW5AaWdhbGlhLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgQ1NT
IG92ZXJzY3JvbGwtYmVoYXZpb3Igb24gTWFjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjAxMzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBCYXNlZCBvbiBGcsOpZMOpcmljIFdhbmcncyBwYXRjaC4KKwor
ICAgICAgICBOZWVkIHRvIGZpbmQgYSB3YXkgdG8gYmxvY2sgdGhlIGNyb3NzLWZyYW1lIHNjcm9s
bCBjaGFpbmluZyBpbiBXSzEuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgor
ICAgICAgICAoLVtXZWJIVE1MVmlldyBzY3JvbGxXaGVlbDpdKToKKwogMjAyMC0xMi0xOSAgUm9i
IEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIE1vdmUgRnJhbWVMb2FkZXI6OmFy
ZVBsdWdpbnNFbmFibGVkIHRvIEZyYW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAK
aW5kZXggYzgyZmY3YzVkM2Y2YmM4ODQ1ODI5NGJmZjFiNzAwYTMxZTBiZmExZS4uYjFhMmNmYjEy
NmU0NzhhYjg2MzA2MzAyMWIxMTdjNGE2NjEwMmE3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmNwcApAQCAtMjgyNyw2ICsyODI3LDk3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5k
bGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgT3B0aW9u
CiAgICAgcmV0dXJuIGhhbmRsZWQ7CiB9CiAKK3ZvaWQgRXZlbnRIYW5kbGVyOjp1cGRhdGVTY3Jv
bGxDaGFpbmluZ0Jsb2NrZXIoU2Nyb2xsYWJsZUFyZWEqIHNjcm9sbGFibGVBcmVhLCBTY3JvbGxD
aGFpbmluZ0Jsb2NrZXImIHNjcm9sbENoYWluaW5nQmxvY2tlcikKK3sKKyAgICBpZiAoIXNjcm9s
bGFibGVBcmVhKQorICAgICAgICByZXR1cm47CisgICAgc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLmJs
b2NrWCB8PSBzY3JvbGxhYmxlQXJlYS0+aG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpICE9
IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0bzsKKyAgICBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIuYmxv
Y2tZIHw9IHNjcm9sbGFibGVBcmVhLT52ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpICE9IE92
ZXJzY3JvbGxCZWhhdmlvcjo6QXV0bzsKK30KKworYm9vbCBFdmVudEhhbmRsZXI6OnNob3VsZEJs
b2NrU2Nyb2xsQ2hhaW5pbmcoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBj
b25zdCBTY3JvbGxDaGFpbmluZ0Jsb2NrZXImIHNjcm9sbENoYWluaW5nQmxvY2tlcikKK3sKKyAg
ICBhdXRvIGJpYXNlZERlbHRhID0gUGxhdGZvcm1XaGVlbEV2ZW50Ojp3aGVlbERlbHRhQmlhc2lu
Z1Rvd2FyZHNWZXJ0aWNhbCh3aGVlbEV2ZW50LmRlbHRhKCkpOworICAgIGlmICgoc2Nyb2xsQ2hh
aW5pbmdCbG9ja2VyLmJsb2NrWCAmJiBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIuYmxvY2tZKQorICAg
ICAgICB8fCAoc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLmJsb2NrWCAmJiAhYmlhc2VkRGVsdGEuaGVp
Z2h0KCkpCisgICAgICAgIHx8IChzY3JvbGxDaGFpbmluZ0Jsb2NrZXIuYmxvY2tZICYmICFiaWFz
ZWREZWx0YS53aWR0aCgpKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGZhbHNl
OworfQorCisjaWYgRU5BQkxFKFdIRUVMX0VWRU5UX0xBVENISU5HKQorc3RhdGljIHZvaWQgdXBk
YXRlUGFyZW50RnJhbWVTY3JvbGxDaGFpbmluZ0Jsb2NrZXIoU2Nyb2xsYWJsZUFyZWEqIHNjcm9s
bGFibGVBcmVhLCBGcmFtZSYgZnJhbWUsIFNjcm9sbENoYWluaW5nQmxvY2tlciYgc2Nyb2xsQ2hh
aW5pbmdCbG9ja2VyKQoreworICAgIGF1dG8qIHBhcmVudCA9IGZyYW1lLnRyZWUoKS5wYXJlbnQo
KTsKKyAgICBpZiAoIXNjcm9sbGFibGVBcmVhKQorICAgICAgICBzY3JvbGxhYmxlQXJlYSA9IGZy
YW1lLnZpZXcoKTsKKyAgICBpZiAoIWZyYW1lLnBhZ2UoKSB8fCAhcGFyZW50IHx8ICFzY3JvbGxh
YmxlQXJlYSkKKyAgICAgICAgcmV0dXJuOworICAgIEV2ZW50SGFuZGxlcjo6dXBkYXRlU2Nyb2xs
Q2hhaW5pbmdCbG9ja2VyKHNjcm9sbGFibGVBcmVhLCBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIpOwor
ICAgIGZyYW1lLnBhZ2UoKS0+c2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyKCkudXBkYXRlU2Nyb2xs
Q2hhaW5pbmdCbG9ja2VyKCpwYXJlbnQsIHNjcm9sbENoYWluaW5nQmxvY2tlcik7Cit9CisjZW5k
aWYKKworc3RhdGljIHZvaWQgYWRqdXN0RGVsdGFzKGNvbnN0IFNjcm9sbENoYWluaW5nQmxvY2tl
ciYgc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLCBGbG9hdFNpemUmIGZpbHRlcmVkUGxhdGZvcm1EZWx0
YSkKK3sKKyAgICAvLyBJZiB3aGVlbEV2ZW50IGlzIGJpYXMgdG8gaG9yaXpvbnRhbCwgZGVsdGFZ
IHNob3VsZCBiZSB6ZXJvIHRvbywgb3RoZXJ3aXNlIGl0IHdpbGwgcGVyZm9ybSB2ZXJ0aWNhbCBz
Y3JvbGwuCisgICAgLy8gVmljZSB2ZXJzYS4KKyAgICBhdXRvIGJpYXNlZERlbHRhID0gUGxhdGZv
cm1XaGVlbEV2ZW50Ojp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbChmaWx0ZXJlZFBs
YXRmb3JtRGVsdGEpOworICAgIGlmIChzY3JvbGxDaGFpbmluZ0Jsb2NrZXIuYmxvY2tYKSB7Cisg
ICAgICAgIGZpbHRlcmVkUGxhdGZvcm1EZWx0YS5zZXRXaWR0aCgwKTsKKyAgICAgICAgaWYgKCFi
aWFzZWREZWx0YS5oZWlnaHQoKSkKKyAgICAgICAgICAgIGZpbHRlcmVkUGxhdGZvcm1EZWx0YS5z
ZXRIZWlnaHQoMCk7CisgICAgfQorICAgIGlmIChzY3JvbGxDaGFpbmluZ0Jsb2NrZXIuYmxvY2tZ
KSB7CisgICAgICAgIGZpbHRlcmVkUGxhdGZvcm1EZWx0YS5zZXRIZWlnaHQoMCk7CisgICAgICAg
IGlmICghYmlhc2VkRGVsdGEud2lkdGgoKSkKKyAgICAgICAgICAgIGZpbHRlcmVkUGxhdGZvcm1E
ZWx0YS5zZXRXaWR0aCgwKTsKKyAgICB9Cit9CisKK3N0YXRpYyBib29sIGlzU3JvbGxDaGFpbmlu
Z1N0b3BwZWRCeU92ZXJzY3JvbGxCZWhhdmlvcihXZWFrUHRyPFNjcm9sbGFibGVBcmVhPiBzY3Jv
bGxhYmxlQXJlYSwgRnJhbWUmIGZyYW1lLCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQs
IFNjcm9sbENoYWluaW5nQmxvY2tlciBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIsIGJvb2wmIGhhbmRs
ZWRFdmVudCkKK3sKKyNpZiBFTkFCTEUoV0hFRUxfRVZFTlRfTEFUQ0hJTkcpCisgICAgaWYgKCFz
Y3JvbGxhYmxlQXJlYSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgRmxvYXRTaXplIGZp
bHRlcmVkUGxhdGZvcm1EZWx0YSh3aGVlbEV2ZW50LmRlbHRhWCgpLCB3aGVlbEV2ZW50LmRlbHRh
WSgpKTsKKyAgICBpZiAoc2Nyb2xsYWJsZUFyZWEgIT0gZnJhbWUudmlldygpKSB7CisgICAgICAg
IC8vIFdoZWVsIGV2ZW50IGlzIGdvaW5nIHRvIGJlIGhhbmRsZWQgYnkgRnJhbWVWaWV3IGluIHBy
b2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKCksCisgICAgICAgIC8vIHNob3VsZCBsZXQgc2Ny
b2xsYWJsZUFyZWEncyBvdmVyc2Nyb2xsLWJlaGF2aW9yIGVmZmVjdCBTY3JvbGxDaGFpbmluZ0Js
b2NrZXIuCisgICAgICAgIEV2ZW50SGFuZGxlcjo6dXBkYXRlU2Nyb2xsQ2hhaW5pbmdCbG9ja2Vy
KHNjcm9sbGFibGVBcmVhLmdldCgpLCBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIpOworICAgIH0KKwor
ICAgIGF1dG8gYmlhc2VkRGVsdGEgPSBQbGF0Zm9ybVdoZWVsRXZlbnQ6OndoZWVsRGVsdGFCaWFz
aW5nVG93YXJkc1ZlcnRpY2FsKHdoZWVsRXZlbnQuZGVsdGEoKSk7CisgICAgaWYgKHNjcm9sbENo
YWluaW5nQmxvY2tlci5ibG9ja1ggJiYgIWJpYXNlZERlbHRhLmhlaWdodCgpKSB7CisgICAgICAg
IC8vIElmIHRoZSBob3Jpem9udGFsIHNjcm9sbCBjaGFpbmluZyBpcyBibG9ja2VkIGJ5IG92ZXJz
Y3JvbGwtYmVoYXZpb3IgaW4gYSBzdWJmcmFtZS4KKyAgICAgICAgLy8gSXQgcHJvcGFnYXRlcyBp
dHMgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIHRvIHBhcmVudCBmcmFtZXMgYW5kIGV2ZW50dWFsbHkg
bGV0IG1haW5mcmFtZQorICAgICAgICAvLyBkZWNpZGUgd2hldGhlciBuZWVkIHRvIHRyaWdnZXIg
YSBzd2lwZSBnZXN0dXJlIG9yIG5vdC4KKyAgICAgICAgaWYgKGZyYW1lLmlzTWFpbkZyYW1lKCkp
IHsKKyAgICAgICAgICAgIGhhbmRsZWRFdmVudCA9IHRydWU7CisgICAgICAgICAgICAvLyBJbiBt
YWluIGZyYW1lLCBpZiB0aGUgc2Nyb2xsIHBvc2l0aW9uIHJlYWNoZXMgb3QgaXRzIGVkZ2VzLCB0
cmlnZ2VyIHRoZSBzd2lwZSBnZXN0dXJlLCBvdGhlcndpc2Ugbm90LgorICAgICAgICAgICAgYXV0
byBwb3NpdGlvblggPSBzY3JvbGxhYmxlQXJlYS0+c2Nyb2xsUG9zaXRpb24oKS54KCk7CisgICAg
ICAgICAgICBpZiAoKHBvc2l0aW9uWCA8PSBzY3JvbGxhYmxlQXJlYS0+bWluaW11bVNjcm9sbFBv
c2l0aW9uKCkueCgpICYmIGZpbHRlcmVkUGxhdGZvcm1EZWx0YS53aWR0aCgpID4gMCkKKyAgICAg
ICAgICAgICAgICB8fCAocG9zaXRpb25YID49IHNjcm9sbGFibGVBcmVhLT5tYXhpbXVtU2Nyb2xs
UG9zaXRpb24oKS54KCkgJiYgZmlsdGVyZWRQbGF0Zm9ybURlbHRhLndpZHRoKCkgPCAwKSkKKyAg
ICAgICAgICAgICAgICBoYW5kbGVkRXZlbnQgPSBmYWxzZTsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIHVwZGF0ZVBhcmVudEZyYW1lU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKHNjcm9sbGFi
bGVBcmVhLmdldCgpLCBmcmFtZSwgc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKTsKKyAgICAgICAgICAg
IGhhbmRsZWRFdmVudCA9IGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKworICAgIGlmIChFdmVudEhhbmRsZXI6OnNob3VsZEJsb2NrU2Nyb2xsQ2hhaW5pbmco
d2hlZWxFdmVudCwgc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKSkgeworICAgICAgICBoYW5kbGVkRXZl
bnQgPSB0cnVlOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBhZGp1c3REZWx0
YXMoc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLCBmaWx0ZXJlZFBsYXRmb3JtRGVsdGEpOworICAgIHdo
ZWVsRXZlbnQgPSB3aGVlbEV2ZW50LmNvcHlXaXRoRGVsdGFzQW5kVmVsb2NpdHkoZmlsdGVyZWRQ
bGF0Zm9ybURlbHRhLndpZHRoKCksIGZpbHRlcmVkUGxhdGZvcm1EZWx0YS5oZWlnaHQoKSwgd2hl
ZWxFdmVudC5zY3JvbGxpbmdWZWxvY2l0eSgpKTsKKyNlbmRpZgorICAgIHJldHVybiBmYWxzZTsK
K30KKwogYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnRJbnRlcm5hbChjb25zdCBQ
bGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50LCBPcHRpb25TZXQ8V2hlZWxFdmVudFByb2Nlc3NpbmdT
dGVwcz4gcHJvY2Vzc2luZ1N0ZXBzLCBPcHRpb25TZXQ8RXZlbnRIYW5kbGluZz4mIGhhbmRsaW5n
KQogewogICAgIGF1dG8qIGRvY3VtZW50ID0gbV9mcmFtZS5kb2N1bWVudCgpOwpAQCAtMjkxOSwx
MiArMzAxMCwyNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudEludGVybmFs
KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgZXZlbnQsIE9wdAogI2lmIEVOQUJMRShXSEVFTF9F
VkVOVF9MQVRDSElORykKICAgICBpZiAoYWxsb3dTY3JvbGxpbmcpCiAgICAgICAgIGFsbG93U2Ny
b2xsaW5nID0gbV9mcmFtZS5wYWdlKCktPnNjcm9sbExhdGNoaW5nQ29udHJvbGxlcigpLmxhdGNo
aW5nQWxsb3dzU2Nyb2xsaW5nSW5GcmFtZShtX2ZyYW1lLCBzY3JvbGxhYmxlQXJlYSk7CisgICAg
U2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIHNjcm9sbENoYWluaW5nQmxvY2tlciA9IG1fZnJhbWUucGFn
ZSgpLT5zY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIoKS5nZXRTY3JvbGxDaGFpbmluZ0Jsb2NrZXIo
bV9mcmFtZSk7CiAjZW5kaWYKIAogICAgIGlmIChhbGxvd1Njcm9sbGluZykgewotICAgICAgICAv
LyBGSVhNRTogcHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxpbmcoKSBpcyBvbmx5IGNhbGxlZCBm
b3IgRnJhbWVWaWV3IHNjcm9sbGluZywgbm90IG92ZXJmbG93IHNjcm9sbGluZywgd2hpY2ggaXMg
Y29uZnVzaW5nLgotICAgICAgICBoYW5kbGVkRXZlbnQgPSBwcm9jZXNzV2hlZWxFdmVudEZvclNj
cm9sbGluZyhldmVudCwgc2Nyb2xsYWJsZUFyZWEsIGhhbmRsaW5nKTsKLSAgICAgICAgcHJvY2Vz
c1doZWVsRXZlbnRGb3JTY3JvbGxTbmFwKGV2ZW50LCBzY3JvbGxhYmxlQXJlYSk7CisgICAgICAg
IFBsYXRmb3JtV2hlZWxFdmVudCBhZGp1c3RlZFdoZWVsRXZlbnQgPSBQbGF0Zm9ybVdoZWVsRXZl
bnQoZXZlbnQpOworICAgICAgICBpZiAoIWlzU3JvbGxDaGFpbmluZ1N0b3BwZWRCeU92ZXJzY3Jv
bGxCZWhhdmlvcihzY3JvbGxhYmxlQXJlYSwgbV9mcmFtZSwgYWRqdXN0ZWRXaGVlbEV2ZW50LCBz
Y3JvbGxDaGFpbmluZ0Jsb2NrZXIsIGhhbmRsZWRFdmVudCkpIHsKKyAgICAgICAgICAgIC8vIEZJ
WE1FOiBwcm9jZXNzV2hlZWxFdmVudEZvclNjcm9sbGluZygpIGlzIG9ubHkgY2FsbGVkIGZvciBG
cmFtZVZpZXcgc2Nyb2xsaW5nLCBub3Qgb3ZlcmZsb3cgc2Nyb2xsaW5nLCB3aGljaCBpcyBjb25m
dXNpbmcuCisgICAgICAgICAgICBoYW5kbGVkRXZlbnQgPSBwcm9jZXNzV2hlZWxFdmVudEZvclNj
cm9sbGluZyhhZGp1c3RlZFdoZWVsRXZlbnQsIHNjcm9sbGFibGVBcmVhLCBoYW5kbGluZyk7Cisg
ICAgICAgICAgICBwcm9jZXNzV2hlZWxFdmVudEZvclNjcm9sbFNuYXAoYWRqdXN0ZWRXaGVlbEV2
ZW50LCBzY3JvbGxhYmxlQXJlYSk7CisjaWYgIUVOQUJMRShXSEVFTF9FVkVOVF9MQVRDSElORykK
KyAgICAgICAgICAgIGlmICghaGFuZGxlZEV2ZW50ICYmIG1fZnJhbWUudmlldygpKSB7CisgICAg
ICAgICAgICAgICAgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIHNjcm9sbENoYWluaW5nQmxvY2tlciA9
IHsgbV9mcmFtZS52aWV3KCktPmhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSAhPSBPdmVy
c2Nyb2xsQmVoYXZpb3I6OkF1dG8sIG1fZnJhbWUudmlldygpLT52ZXJ0aWNhbE92ZXJzY3JvbGxC
ZWhhdmlvcigpICE9IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0byB9OworICAgICAgICAgICAgICAg
IGlmIChzaG91bGRCbG9ja1Njcm9sbENoYWluaW5nKGFkanVzdGVkV2hlZWxFdmVudCwgc2Nyb2xs
Q2hhaW5pbmdCbG9ja2VyKSkKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlZEV2ZW50ID0gdHJ1
ZTsKKyAgICAgICAgICAgIH0KKyNlbmRpZgorICAgICAgICB9CisgICAgfSBlbHNlIGlmICghbV9m
cmFtZS5pc01haW5GcmFtZSgpKSB7CisjaWYgRU5BQkxFKFdIRUVMX0VWRU5UX0xBVENISU5HKQor
ICAgICAgICB1cGRhdGVQYXJlbnRGcmFtZVNjcm9sbENoYWluaW5nQmxvY2tlcihzY3JvbGxhYmxl
QXJlYS5nZXQoKSwgbV9mcmFtZSwgc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKTsKKyNlbmRpZgogICAg
IH0KIAogICAgIHJldHVybiBoYW5kbGVkRXZlbnQ7CkBAIC0yOTQxLDIwICszMDQ3LDIyIEBAIHN0
YXRpYyB2b2lkIGhhbmRsZVdoZWVsRXZlbnRQaGFzZUluU2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJs
ZUFyZWEmIHNjcm9sbGFibGVBcmVhCiAjZW5kaWYKIH0KIAotc3RhdGljIGJvb2wgZGlkU2Nyb2xs
SW5TY3JvbGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEsIGNvbnN0IFdo
ZWVsRXZlbnQmIHdoZWVsRXZlbnQpCitzdGF0aWMgYm9vbCBkaWRTY3JvbGxJblNjcm9sbGFibGVB
cmVhKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSwgY29uc3QgV2hlZWxFdmVudCYgd2hl
ZWxFdmVudCwgY29uc3QgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyJiBzY3JvbGxDaGFpbmluZ0Jsb2Nr
ZXIpCiB7CisgICAgRmxvYXRTaXplIGZpbHRlcmVkUGxhdGZvcm1EZWx0YSh3aGVlbEV2ZW50LmRl
bHRhWCgpLCB3aGVlbEV2ZW50LmRlbHRhWSgpKTsKKyAgICBhZGp1c3REZWx0YXMoc2Nyb2xsQ2hh
aW5pbmdCbG9ja2VyLCBmaWx0ZXJlZFBsYXRmb3JtRGVsdGEpOwogICAgIFNjcm9sbEdyYW51bGFy
aXR5IHNjcm9sbEdyYW51bGFyaXR5ID0gd2hlZWxHcmFudWxhcml0eVRvU2Nyb2xsR3JhbnVsYXJp
dHkod2hlZWxFdmVudC5kZWx0YU1vZGUoKSk7CiAgICAgYm9vbCBkaWRIYW5kbGVXaGVlbEV2ZW50
ID0gZmFsc2U7Ci0gICAgaWYgKGZsb2F0IGFic29sdXRlRGVsdGEgPSBzdGQ6OmFicyh3aGVlbEV2
ZW50LmRlbHRhWCgpKSkKLSAgICAgICAgZGlkSGFuZGxlV2hlZWxFdmVudCB8PSBzY3JvbGxhYmxl
QXJlYS5zY3JvbGwod2hlZWxFdmVudC5kZWx0YVgoKSA+IDAgPyBTY3JvbGxSaWdodCA6IFNjcm9s
bExlZnQsIHNjcm9sbEdyYW51bGFyaXR5LCBhYnNvbHV0ZURlbHRhKTsKKyAgICBpZiAoZmxvYXQg
YWJzb2x1dGVEZWx0YSA9IHN0ZDo6YWJzKGZpbHRlcmVkUGxhdGZvcm1EZWx0YS53aWR0aCgpKSkK
KyAgICAgICAgZGlkSGFuZGxlV2hlZWxFdmVudCB8PSBzY3JvbGxhYmxlQXJlYS5zY3JvbGwoZmls
dGVyZWRQbGF0Zm9ybURlbHRhLndpZHRoKCkgPiAwID8gU2Nyb2xsUmlnaHQgOiBTY3JvbGxMZWZ0
LCBzY3JvbGxHcmFudWxhcml0eSwgYWJzb2x1dGVEZWx0YSk7CiAKLSAgICBpZiAoZmxvYXQgYWJz
b2x1dGVEZWx0YSA9IHN0ZDo6YWJzKHdoZWVsRXZlbnQuZGVsdGFZKCkpKQotICAgICAgICBkaWRI
YW5kbGVXaGVlbEV2ZW50IHw9IHNjcm9sbGFibGVBcmVhLnNjcm9sbCh3aGVlbEV2ZW50LmRlbHRh
WSgpID4gMCA/IFNjcm9sbERvd24gOiBTY3JvbGxVcCwgc2Nyb2xsR3JhbnVsYXJpdHksIGFic29s
dXRlRGVsdGEpOworICAgIGlmIChmbG9hdCBhYnNvbHV0ZURlbHRhID0gc3RkOjphYnMoZmlsdGVy
ZWRQbGF0Zm9ybURlbHRhLmhlaWdodCgpKSkKKyAgICAgICAgZGlkSGFuZGxlV2hlZWxFdmVudCB8
PSBzY3JvbGxhYmxlQXJlYS5zY3JvbGwoZmlsdGVyZWRQbGF0Zm9ybURlbHRhLmhlaWdodCgpID4g
MCA/IFNjcm9sbERvd24gOiBTY3JvbGxVcCwgc2Nyb2xsR3JhbnVsYXJpdHksIGFic29sdXRlRGVs
dGEpOwogCiAgICAgcmV0dXJuIGRpZEhhbmRsZVdoZWVsRXZlbnQ7CiB9CiAKLWJvb2wgRXZlbnRI
YW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2luZ0JveChOb2RlKiBz
dGFydE5vZGUsIGNvbnN0IFdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIGNvbnN0IEZsb2F0U2l6ZSYg
ZmlsdGVyZWRQbGF0Zm9ybURlbHRhLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlcmVkVmVsb2NpdHks
IE9wdGlvblNldDxFdmVudEhhbmRsaW5nPiBldmVudEhhbmRsaW5nKQorYm9vbCBFdmVudEhhbmRs
ZXI6OmhhbmRsZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94KE5vZGUqIHN0YXJ0
Tm9kZSwgY29uc3QgV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgRmxvYXRTaXplJiBmaWx0ZXJlZFBs
YXRmb3JtRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyZWRWZWxvY2l0eSwgT3B0aW9uU2V0
PEV2ZW50SGFuZGxpbmc+IGV2ZW50SGFuZGxpbmcpCiB7CiAgICAgYm9vbCBzaG91bGRIYW5kbGVF
dmVudCA9IHdoZWVsRXZlbnQuZGVsdGFYKCkgfHwgd2hlZWxFdmVudC5kZWx0YVkoKTsKICNpZiBF
TkFCTEUoV0hFRUxfRVZFTlRfTEFUQ0hJTkcpCkBAIC0yOTc1LDIyICszMDgzLDMzIEBAIGJvb2wg
RXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2luZ0JveChO
b2RlKiBzdGFydE5vZGUsIGNvCiAgICAgaWYgKCFzaG91bGRIYW5kbGVFdmVudCkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCisgICAgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIHNjcm9sbENoYWluaW5n
QmxvY2tlciA9IHsgZmFsc2UsIGZhbHNlIH07CiAgICAgaWYgKGlzPFJlbmRlckxpc3RCb3g+KGlu
aXRpYWxFbmNsb3NpbmdCb3gpKQotICAgICAgICByZXR1cm4gZGlkU2Nyb2xsSW5TY3JvbGxhYmxl
QXJlYShkb3duY2FzdDxSZW5kZXJMaXN0Qm94Pihpbml0aWFsRW5jbG9zaW5nQm94KSwgd2hlZWxF
dmVudCk7CisgICAgICAgIHJldHVybiBkaWRTY3JvbGxJblNjcm9sbGFibGVBcmVhKGRvd25jYXN0
PFJlbmRlckxpc3RCb3g+KGluaXRpYWxFbmNsb3NpbmdCb3gpLCB3aGVlbEV2ZW50LCBzY3JvbGxD
aGFpbmluZ0Jsb2NrZXIpOwogCisgICAgYXV0byBiaWFzZWREZWx0YSA9IFBsYXRmb3JtV2hlZWxF
dmVudDo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoRmxvYXRTaXplKHdoZWVsRXZl
bnQuZGVsdGFYKCksIHdoZWVsRXZlbnQuZGVsdGFZKCkpKTsKICAgICBSZW5kZXJCb3gqIGN1cnJl
bnRFbmNsb3NpbmdCb3ggPSAmaW5pdGlhbEVuY2xvc2luZ0JveDsKICAgICB3aGlsZSAoY3VycmVu
dEVuY2xvc2luZ0JveCkgewogICAgICAgICBpZiAoUmVuZGVyTGF5ZXIqIGJveExheWVyID0gY3Vy
cmVudEVuY2xvc2luZ0JveC0+bGF5ZXIoKSkgewogICAgICAgICAgICAgYXV0byBwbGF0Zm9ybUV2
ZW50ID0gd2hlZWxFdmVudC51bmRlcmx5aW5nUGxhdGZvcm1FdmVudCgpOwogICAgICAgICAgICAg
Ym9vbCBzY3JvbGxpbmdXYXNIYW5kbGVkOwogICAgICAgICAgICAgaWYgKHBsYXRmb3JtRXZlbnQp
IHsKKyAgICAgICAgICAgICAgICBhZGp1c3REZWx0YXMoc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLCBm
aWx0ZXJlZFBsYXRmb3JtRGVsdGEpOwogICAgICAgICAgICAgICAgIGF1dG8gY29waWVkRXZlbnQg
PSBwbGF0Zm9ybUV2ZW50LT5jb3B5V2l0aERlbHRhc0FuZFZlbG9jaXR5KGZpbHRlcmVkUGxhdGZv
cm1EZWx0YS53aWR0aCgpLCBmaWx0ZXJlZFBsYXRmb3JtRGVsdGEuaGVpZ2h0KCksIGZpbHRlcmVk
VmVsb2NpdHkpOwogICAgICAgICAgICAgICAgIHNjcm9sbGluZ1dhc0hhbmRsZWQgPSBoYW5kbGVX
aGVlbEV2ZW50SW5TY3JvbGxhYmxlQXJlYShjb3BpZWRFdmVudCwgKmJveExheWVyLCBldmVudEhh
bmRsaW5nKTsKICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHNjcm9sbGluZ1dh
c0hhbmRsZWQgPSBkaWRTY3JvbGxJblNjcm9sbGFibGVBcmVhKCpib3hMYXllciwgd2hlZWxFdmVu
dCk7CisgICAgICAgICAgICAgICAgc2Nyb2xsaW5nV2FzSGFuZGxlZCA9IGRpZFNjcm9sbEluU2Ny
b2xsYWJsZUFyZWEoKmJveExheWVyLCB3aGVlbEV2ZW50LCBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIp
OwogCiAgICAgICAgICAgICBpZiAoc2Nyb2xsaW5nV2FzSGFuZGxlZCkKICAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAgICAgaWYgKGN1cnJlbnRFbmNsb3NpbmdCb3gtPmVs
ZW1lbnQoKSAhPSBjdXJyZW50RW5jbG9zaW5nQm94LT5kb2N1bWVudCgpLmRvY3VtZW50RWxlbWVu
dCgpKSB7CisgICAgICAgICAgICAgICAgdXBkYXRlU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKGJveExh
eWVyLCBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIpOworICAgICAgICAgICAgICAgIGlmICgoc2Nyb2xs
Q2hhaW5pbmdCbG9ja2VyLmJsb2NrWCAmJiBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIuYmxvY2tZKQor
ICAgICAgICAgICAgICAgICAgICB8fCAoc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLmJsb2NrWSAmJiAh
Ymlhc2VkRGVsdGEud2lkdGgoKSkKKyAgICAgICAgICAgICAgICAgICAgfHwgKHNjcm9sbENoYWlu
aW5nQmxvY2tlci5ibG9ja1ggJiYgIWJpYXNlZERlbHRhLmhlaWdodCgpKSkKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAg
ICBjdXJyZW50RW5jbG9zaW5nQm94ID0gY3VycmVudEVuY2xvc2luZ0JveC0+Y29udGFpbmluZ0Js
b2NrKCk7CkBAIC0zMDcwLDYgKzMxODksNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6ZGVmYXVsdFdo
ZWVsRXZlbnRIYW5kbGVyKE5vZGUqIHN0YXJ0Tm9kZSwgV2hlZWxFdmVudCYgd2hlZWxFdgogICAg
IGlmICghbV9mcmFtZS5wYWdlKCktPnNjcm9sbExhdGNoaW5nQ29udHJvbGxlcigpLmxhdGNoaW5n
QWxsb3dzU2Nyb2xsaW5nSW5GcmFtZShtX2ZyYW1lLCBsYXRjaGVkU2Nyb2xsZXIpKQogICAgICAg
ICByZXR1cm47CiAKKyAgICBTY3JvbGxDaGFpbmluZ0Jsb2NrZXIgc2Nyb2xsQ2hhaW5pbmdCbG9j
a2VyID0gbV9mcmFtZS5wYWdlKCktPnNjcm9sbExhdGNoaW5nQ29udHJvbGxlcigpLmdldFNjcm9s
bENoYWluaW5nQmxvY2tlcihtX2ZyYW1lKTsKICAgICBpZiAobGF0Y2hlZFNjcm9sbGVyKSB7CiAg
ICAgICAgIGlmIChsYXRjaGVkU2Nyb2xsZXIgPT0gbV9mcmFtZS52aWV3KCkpIHsKICAgICAgICAg
ICAgIC8vIEZyYW1lVmlldyBzY3JvbGxpbmcgaXMgaGFuZGxlZCB2aWEgcHJvY2Vzc1doZWVsRXZl
bnRGb3JTY3JvbGxpbmcoKS4KQEAgLTMwNzgsNiArMzE5OCw3IEBAIHZvaWQgRXZlbnRIYW5kbGVy
OjpkZWZhdWx0V2hlZWxFdmVudEhhbmRsZXIoTm9kZSogc3RhcnROb2RlLCBXaGVlbEV2ZW50JiB3
aGVlbEV2CiAKICAgICAgICAgYXV0byBwbGF0Zm9ybUV2ZW50ID0gd2hlZWxFdmVudC51bmRlcmx5
aW5nUGxhdGZvcm1FdmVudCgpOwogICAgICAgICBpZiAocGxhdGZvcm1FdmVudCkgeworICAgICAg
ICAgICAgYWRqdXN0RGVsdGFzKHNjcm9sbENoYWluaW5nQmxvY2tlciwgZmlsdGVyZWRQbGF0Zm9y
bURlbHRhKTsKICAgICAgICAgICAgIGF1dG8gY29waWVkRXZlbnQgPSBwbGF0Zm9ybUV2ZW50LT5j
b3B5V2l0aERlbHRhc0FuZFZlbG9jaXR5KGZpbHRlcmVkUGxhdGZvcm1EZWx0YS53aWR0aCgpLCBm
aWx0ZXJlZFBsYXRmb3JtRGVsdGEuaGVpZ2h0KCksIGZpbHRlcmVkVmVsb2NpdHkpOwogICAgICAg
ICAgICAgaWYgKGhhbmRsZVdoZWVsRXZlbnRJblNjcm9sbGFibGVBcmVhKGNvcGllZEV2ZW50LCAq
bGF0Y2hlZFNjcm9sbGVyLCBldmVudEhhbmRsaW5nKSkKICAgICAgICAgICAgICAgICB3aGVlbEV2
ZW50LnNldERlZmF1bHRIYW5kbGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAppbmRl
eCAxYjE3NWRhNzkzYzZjNTEyZDEwNDk5ZmU5MWYwZjU4YzE5YTc3OWVhLi4wYzI4ZjU1OWE5ZDQ3
ZDY4ODUyYTQxYTgxNjE0YzQ2Yjk1NmI3ZDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50SGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVy
LmgKQEAgLTM1Myw2ICszNTMsMTAgQEAgcHVibGljOgogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQp
CiAgICAgRWxlbWVudCogZHJhZ2dpbmdFbGVtZW50KCkgY29uc3Q7CiAjZW5kaWYKKworICAgIHN0
YXRpYyB2b2lkIHVwZGF0ZVNjcm9sbENoYWluaW5nQmxvY2tlcihTY3JvbGxhYmxlQXJlYSosIFNj
cm9sbENoYWluaW5nQmxvY2tlciYpOworICAgIHN0YXRpYyBib29sIHNob3VsZEJsb2NrU2Nyb2xs
Q2hhaW5pbmcoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgY29uc3QgU2Nyb2xsQ2hhaW5pbmdC
bG9ja2VyJik7CisKIHByaXZhdGU6CiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKICAgICBzdGF0
aWMgRHJhZ1N0YXRlJiBkcmFnU3RhdGUoKTsKQEAgLTQ2OCw3ICs0NzIsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgcHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxTbmFwKGNvbnN0IFBsYXRmb3JtV2hl
ZWxFdmVudCYsIGNvbnN0IFdlYWtQdHI8U2Nyb2xsYWJsZUFyZWE+Jik7CiAgICAgYm9vbCBjb21w
bGV0ZVdpZGdldFdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgY29uc3QgV2Vh
a1B0cjxXaWRnZXQ+JiwgY29uc3QgV2Vha1B0cjxTY3JvbGxhYmxlQXJlYT4mKTsKIAotICAgIGJv
b2wgaGFuZGxlV2hlZWxFdmVudEluQXBwcm9wcmlhdGVFbmNsb3NpbmdCb3goTm9kZSogc3RhcnRO
b2RlLCBjb25zdCBXaGVlbEV2ZW50JiwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJlZFBsYXRmb3Jt
RGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyZWRWZWxvY2l0eSwgT3B0aW9uU2V0PEV2ZW50
SGFuZGxpbmc+KTsKKyAgICBib29sIGhhbmRsZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9z
aW5nQm94KE5vZGUqIHN0YXJ0Tm9kZSwgY29uc3QgV2hlZWxFdmVudCYsIEZsb2F0U2l6ZSYgZmls
dGVyZWRQbGF0Zm9ybURlbHRhLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlcmVkVmVsb2NpdHksIE9w
dGlvblNldDxFdmVudEhhbmRsaW5nPik7CiAKICAgICBib29sIGhhbmRsZVdoZWVsRXZlbnRJblNj
cm9sbGFibGVBcmVhKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIFNjcm9sbGFibGVBcmVhJiwg
T3B0aW9uU2V0PEV2ZW50SGFuZGxpbmc+KTsKICAgICBPcHRpb25hbDxXaGVlbFNjcm9sbEdlc3R1
cmVTdGF0ZT4gdXBkYXRlV2hlZWxHZXN0dXJlU3RhdGUoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50
JiwgT3B0aW9uU2V0PEV2ZW50SGFuZGxpbmc+KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApp
bmRleCBlZWQ0NTNhNjNlMmZiYTRkOGI1ZTI5OWJlOTcyMjg0ZTU5ZDkyNzA4Li5jYzdkOTNmYzJk
OWQyYWU5ODg0Yzg2YTA5ZDliMjcyODM2Y2M0ZWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
Y3BwCkBAIC00MTgsNiArNDE4LDI0IEBAIGJvb2wgRnJhbWVWaWV3OjpkaWRGaXJzdExheW91dCgp
IGNvbnN0CiAgICAgcmV0dXJuIGxheW91dENvbnRleHQoKS5kaWRGaXJzdExheW91dCgpOwogfQog
CitPdmVyc2Nyb2xsQmVoYXZpb3IgRnJhbWVWaWV3Ojpob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2
aW9yKCkgY29uc3QKK3sKKyAgICBhdXRvKiBkb2N1bWVudCA9IGZyYW1lKCkuZG9jdW1lbnQoKTsK
KyAgICBhdXRvIHNjcm9sbGluZ09iamVjdCA9IGRvY3VtZW50ICYmIGRvY3VtZW50LT5kb2N1bWVu
dEVsZW1lbnQoKSA/IGRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKS0+cmVuZGVyZXIoKSA6IG51
bGxwdHI7CisgICAgaWYgKCFzY3JvbGxpbmdPYmplY3QgfHwgIW1heGltdW1TY3JvbGxPZmZzZXQo
KS54KCkpCisgICAgICAgIHJldHVybiBTY3JvbGxhYmxlQXJlYTo6aG9yaXpvbnRhbE92ZXJzY3Jv
bGxCZWhhdmlvcigpOworICAgIHJldHVybiBzY3JvbGxpbmdPYmplY3QtPnN0eWxlKCkub3ZlcnNj
cm9sbEJlaGF2aW9yWCgpOworfQorCitPdmVyc2Nyb2xsQmVoYXZpb3IgRnJhbWVWaWV3Ojp2ZXJ0
aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpICBjb25zdAoreworICAgIGF1dG8qIGRvY3VtZW50ID0g
ZnJhbWUoKS5kb2N1bWVudCgpOworICAgIGF1dG8gc2Nyb2xsaW5nT2JqZWN0ID0gZG9jdW1lbnQg
JiYgZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpID8gZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVu
dCgpLT5yZW5kZXJlcigpIDogbnVsbHB0cjsKKyAgICBpZiAoIXNjcm9sbGluZ09iamVjdCB8fCAh
bWF4aW11bVNjcm9sbE9mZnNldCgpLnkoKSkKKyAgICAgICAgcmV0dXJuIFNjcm9sbGFibGVBcmVh
Ojp2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpOworICAgIHJldHVybiBzY3JvbGxpbmdPYmpl
Y3QtPnN0eWxlKCkub3ZlcnNjcm9sbEJlaGF2aW9yWSgpOworfQorCiB2b2lkIEZyYW1lVmlldzo6
aW52YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICBpZiAoIXBhcmVudCgp
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCA5MTNlZjI2ZTIwYTUxYjJkNTY0ZWJkMzZl
YTJiMDM4NTkxOTY4ZmU0Li40ODZjZWM5NDZiNTllZmQyMDQ5NGU5MDU0ZGUyNjE2ODA0NjlhMTBl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTc1MCw2ICs3NTAsOSBAQCBwcml2YXRlOgog
ICAgIHZvaWQgdW5vYnNjdXJlZENvbnRlbnRTaXplQ2hhbmdlZCgpIGZpbmFsOwogCiAgICAgLy8g
U2Nyb2xsYWJsZUFyZWEgaW50ZXJmYWNlCisgICAgT3ZlcnNjcm9sbEJlaGF2aW9yIGhvcml6b250
YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdCBmaW5hbDsKKyAgICBPdmVyc2Nyb2xsQmVoYXZp
b3IgdmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdCBmaW5hbDsKKwogICAgIHZvaWQg
aW52YWxpZGF0ZVNjcm9sbGJhclJlY3QoU2Nyb2xsYmFyJiwgY29uc3QgSW50UmVjdCYpIGZpbmFs
OwogICAgIHZvaWQgc2Nyb2xsVG8oY29uc3QgU2Nyb2xsUG9zaXRpb24mKSBmaW5hbDsKICAgICB2
b2lkIHNldFZpc2libGVTY3JvbGxlclRodW1iUmVjdChjb25zdCBJbnRSZWN0JikgZmluYWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0KaW5kZXggNzE0MTUzNjVi
YWJhZjVhOTQyM2EyOWY2MWI3ODJmZmUzMmI0OTMxNy4uYjhiODI2MGY2ZTZhZmMyMTZlNTBiY2Qz
MjEyY2M4NmU3MDUwODIwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZl
bnRIYW5kbGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxl
ck1hYy5tbQpAQCAtNzk1LDkgKzc5NSw5IEBAIHN0YXRpYyBTY3JvbGxhYmxlQXJlYSogc2Nyb2xs
YWJsZUFyZWFGb3JCb3goUmVuZGVyQm94JiBib3gpCiB9CiAKIC8vIEZJWE1FOiBUaGlzIGNvdWxk
IGJlIHdyaXR0ZW4gaW4gdGVybXMgb2YgU2Nyb2xsYWJsZUFyZWE6OmVuY2xvc2luZ1Njcm9sbGFi
bGVBcmVhKCkuCi1zdGF0aWMgQ29udGFpbmVyTm9kZSogZmluZEVuY2xvc2luZ1Njcm9sbGFibGVD
b250YWluZXIoQ29udGFpbmVyTm9kZSogbm9kZSwgY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3
aGVlbEV2ZW50KQorc3RhdGljIENvbnRhaW5lck5vZGUqIGZpbmRFbmNsb3NpbmdTY3JvbGxhYmxl
Q29udGFpbmVyKENvbnRhaW5lck5vZGUqIG5vZGUsIGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYg
d2hlZWxFdmVudCwgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyJiBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIp
CiB7Ci0gICAgYXV0byBiaWFzZWREZWx0YSA9IFNjcm9sbENvbnRyb2xsZXI6OndoZWVsRGVsdGFC
aWFzaW5nVG93YXJkc1ZlcnRpY2FsKHdoZWVsRXZlbnQpOworICAgIGF1dG8gYmlhc2VkRGVsdGEg
PSBQbGF0Zm9ybVdoZWVsRXZlbnQ6OndoZWVsRGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRpY2FsKHdo
ZWVsRXZlbnQuZGVsdGEoKSk7CiAKICAgICAvLyBGaW5kIHRoZSBmaXJzdCBub2RlIHdpdGggYSB2
YWxpZCBzY3JvbGxhYmxlIGFyZWEgc3RhcnRpbmcgd2l0aCB0aGUgY3VycmVudAogICAgIC8vIG5v
ZGUgYW5kIHRyYXZlcnNpbmcgaXRzIHBhcmVudHMgKG9yIHNoYWRvdyBob3N0cykuCkBAIC04MDks
MjEgKzgwOSwyOSBAQCBzdGF0aWMgQ29udGFpbmVyTm9kZSogZmluZEVuY2xvc2luZ1Njcm9sbGFi
bGVDb250YWluZXIoQ29udGFpbmVyTm9kZSogbm9kZSwgY29ucwogICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKICAgICAgICAgUmVuZGVyQm94KiBib3ggPSBjYW5kaWRhdGUtPnJlbmRlckJv
eCgpOwotICAgICAgICBpZiAoIWJveCB8fCAhYm94LT5jYW5CZVNjcm9sbGVkQW5kSGFzU2Nyb2xs
YWJsZUFyZWEoKSkKKyAgICAgICAgaWYgKCFib3gpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgCisKICAgICAgICAgYXV0byogc2Nyb2xsYWJsZUFyZWEgPSBzY3JvbGxhYmxlQXJlYUZv
ckJveCgqYm94KTsKLSAgICAgICAgaWYgKCFzY3JvbGxhYmxlQXJlYSkKLSAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICBpZiAoc2Nyb2xsYWJsZUFyZWEgJiYgYm94LT5jYW5CZVNjcm9sbGVk
QW5kSGFzU2Nyb2xsYWJsZUFyZWEoKSkgeworICAgICAgICAgICAgaWYgKHdoZWVsRXZlbnQucGhh
c2UoKSA9PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZTo6TWF5QmVnaW4gIHx8IHdoZWVsRXZlbnQu
cGhhc2UoKSA9PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZTo6Q2FuY2VsbGVkKQorICAgICAgICAg
ICAgICAgIHJldHVybiBjYW5kaWRhdGU7CiAKLSAgICAgICAgaWYgKHdoZWVsRXZlbnQucGhhc2Uo
KSA9PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZTo6TWF5QmVnaW4gfHwgd2hlZWxFdmVudC5waGFz
ZSgpID09IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlOjpDYW5jZWxsZWQpCi0gICAgICAgICAgICBy
ZXR1cm4gY2FuZGlkYXRlOworICAgICAgICAgICAgaWYgKChiaWFzZWREZWx0YS5oZWlnaHQoKSA+
IDAgJiYgIXNjcm9sbGFibGVBcmVhLT5zY3JvbGxlZFRvVG9wKCkpIHx8IChiaWFzZWREZWx0YS5o
ZWlnaHQoKSA8IDAgJiYgIXNjcm9sbGFibGVBcmVhLT5zY3JvbGxlZFRvQm90dG9tKCkpCisgICAg
ICAgICAgICAgICAgfHwgKGJpYXNlZERlbHRhLndpZHRoKCkgPiAwICYmICFzY3JvbGxhYmxlQXJl
YS0+c2Nyb2xsZWRUb0xlZnQoKSkgfHwgKGJpYXNlZERlbHRhLndpZHRoKCkgPCAwICYmICFzY3Jv
bGxhYmxlQXJlYS0+c2Nyb2xsZWRUb1JpZ2h0KCkpKQorICAgICAgICAgICAgICAgIHJldHVybiBj
YW5kaWRhdGU7CisgICAgICAgIH0KKyAgICAgICAgLy8gTGV0IEZyYW1lVmlldzo6aG9yaXpvbnRh
bE92ZXJzY3JvbGxCZWhhdmlvciBkZWNpZGUgd2hpY2ggbm9kZSdzIG92ZXJzY3JvbGwtYmFodmlv
ciBpcyBlZmZlY3RpdmUgdG8gRnJhbWVWaWV3LgorICAgICAgICBpZiAoY2FuZGlkYXRlID09IGNh
bmRpZGF0ZS0+ZG9jdW1lbnQoKS5ib2R5KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgaWYgKGNhbmRpZGF0ZSA9PSBub2RlKQorICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAg
ICAgaWYgKChiaWFzZWREZWx0YS5oZWlnaHQoKSA+IDAgJiYgIXNjcm9sbGFibGVBcmVhLT5zY3Jv
bGxlZFRvVG9wKCkpIHx8IChiaWFzZWREZWx0YS5oZWlnaHQoKSA8IDAgJiYgIXNjcm9sbGFibGVB
cmVhLT5zY3JvbGxlZFRvQm90dG9tKCkpCi0gICAgICAgICAgICB8fCAoYmlhc2VkRGVsdGEud2lk
dGgoKSA+IDAgJiYgIXNjcm9sbGFibGVBcmVhLT5zY3JvbGxlZFRvTGVmdCgpKSB8fCAoYmlhc2Vk
RGVsdGEud2lkdGgoKSA8IDAgJiYgIXNjcm9sbGFibGVBcmVhLT5zY3JvbGxlZFRvUmlnaHQoKSkp
Ci0gICAgICAgICAgICByZXR1cm4gY2FuZGlkYXRlOworICAgICAgICBFdmVudEhhbmRsZXI6OnVw
ZGF0ZVNjcm9sbENoYWluaW5nQmxvY2tlcihzY3JvbGxhYmxlQXJlYSwgc2Nyb2xsQ2hhaW5pbmdC
bG9ja2VyKTsKKyAgICAgICAgaWYgKEV2ZW50SGFuZGxlcjo6c2hvdWxkQmxvY2tTY3JvbGxDaGFp
bmluZyh3aGVlbEV2ZW50LCBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIpKQorICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKQEAg
LTg2OCwxMCArODc2LDExIEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpkZXRlcm1pbmVXaGVlbEV2ZW50
VGFyZ2V0KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVuCiAgICAgaWYgKCF2aWV3
KQogICAgICAgICByZXR1cm47CiAKKyAgICBTY3JvbGxDaGFpbmluZ0Jsb2NrZXIgc2Nyb2xsQ2hh
aW5pbmdCbG9ja2VyOwogICAgIGlmIChldmVudFRhcmdldElzUGxhdGZvcm1XaWRnZXQod2hlZWxF
dmVudFRhcmdldC5nZXQoKSkpCiAgICAgICAgIHNjcm9sbGFibGVBcmVhID0gc2Nyb2xsYWJsZUFy
ZWFGb3JFdmVudFRhcmdldCh3aGVlbEV2ZW50VGFyZ2V0LmdldCgpKTsKICAgICBlbHNlIHsKLSAg
ICAgICAgYXV0byogc2Nyb2xsYWJsZUNvbnRhaW5lciA9IGZpbmRFbmNsb3NpbmdTY3JvbGxhYmxl
Q29udGFpbmVyKHdoZWVsRXZlbnRUYXJnZXQuZ2V0KCksIHdoZWVsRXZlbnQpOworICAgICAgICBh
dXRvKiBzY3JvbGxhYmxlQ29udGFpbmVyID0gZmluZEVuY2xvc2luZ1Njcm9sbGFibGVDb250YWlu
ZXIod2hlZWxFdmVudFRhcmdldC5nZXQoKSwgd2hlZWxFdmVudCwgc2Nyb2xsQ2hhaW5pbmdCbG9j
a2VyKTsKICAgICAgICAgaWYgKHNjcm9sbGFibGVDb250YWluZXIpCiAgICAgICAgICAgICBzY3Jv
bGxhYmxlQXJlYSA9IHNjcm9sbGFibGVBcmVhRm9yQ29udGFpbmVyTm9kZSgqc2Nyb2xsYWJsZUNv
bnRhaW5lcik7CiAgICAgICAgIGVsc2UKQEAgLTg4OSw3ICs4OTgsNyBAQCB2b2lkIEV2ZW50SGFu
ZGxlcjo6ZGV0ZXJtaW5lV2hlZWxFdmVudFRhcmdldChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQm
IHdoZWVsRXZlbgogICAgIGlmIChtX2ZyYW1lLmlzTWFpbkZyYW1lKCkgJiYgd2hlZWxFdmVudC5p
c0dlc3R1cmVTdGFydCgpKQogICAgICAgICBwYWdlLT53aGVlbEV2ZW50RGVsdGFGaWx0ZXIoKS0+
YmVnaW5GaWx0ZXJpbmdEZWx0YXMoKTsKIAotICAgIHBhZ2UtPnNjcm9sbExhdGNoaW5nQ29udHJv
bGxlcigpLnVwZGF0ZUFuZEZldGNoTGF0Y2hpbmdTdGF0ZUZvckZyYW1lKG1fZnJhbWUsIHdoZWVs
RXZlbnQsIHdoZWVsRXZlbnRUYXJnZXQsIHNjcm9sbGFibGVBcmVhLCBpc092ZXJXaWRnZXQpOwor
ICAgIHBhZ2UtPnNjcm9sbExhdGNoaW5nQ29udHJvbGxlcigpLnVwZGF0ZUFuZEZldGNoTGF0Y2hp
bmdTdGF0ZUZvckZyYW1lKG1fZnJhbWUsIHdoZWVsRXZlbnQsIHdoZWVsRXZlbnRUYXJnZXQsIHNj
cm9sbGFibGVBcmVhLCBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIsIGlzT3ZlcldpZGdldCk7CiB9CiAK
IHZvaWQgRXZlbnRIYW5kbGVyOjpyZWNvcmRXaGVlbEV2ZW50Rm9yRGVsdGFGaWx0ZXIoY29uc3Qg
UGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50KQpAQCAtOTA4LDYgKzkxNyw3IEBAIHZvaWQg
RXZlbnRIYW5kbGVyOjpyZWNvcmRXaGVlbEV2ZW50Rm9yRGVsdGFGaWx0ZXIoY29uc3QgUGxhdGZv
cm1XaGVlbEV2ZW50JiB3aGVlCiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQor
CiAgICAgcGFnZS0+d2hlZWxFdmVudERlbHRhRmlsdGVyKCktPnVwZGF0ZUZyb21EZWx0YShGbG9h
dFNpemUod2hlZWxFdmVudC5kZWx0YVgoKSwgd2hlZWxFdmVudC5kZWx0YVkoKSkpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nv
b3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xs
aW5nQ29vcmRpbmF0b3IuY3BwCmluZGV4IDcwZWEwMzZmODNjOWVmMjk0OThkOThkMDFkYWVmMzRm
YzM5MGE3OTMuLjVlYjJjMjVjMjEyZTQ0ZjVlY2VlZWNjMjJhZTQ5MjA5YzcxYzYwMWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRp
bmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xs
aW5nQ29vcmRpbmF0b3IuY3BwCkBAIC02OTcsNiArNjk3LDggQEAgdm9pZCBBc3luY1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yOjpzZXRTY3JvbGxpbmdOb2RlU2Nyb2xsYWJsZUFyZWFHZW9tZXRyeShTY3Jv
bGxpbmcKICAgICBzY3JvbGxpbmdOb2RlLnNldFNjcm9sbGFibGVBcmVhU2l6ZShzY3JvbGxhYmxl
QXJlYS52aXNpYmxlU2l6ZSgpKTsKIAogICAgIFNjcm9sbGFibGVBcmVhUGFyYW1ldGVycyBzY3Jv
bGxQYXJhbWV0ZXJzOworICAgIHNjcm9sbFBhcmFtZXRlcnMuaG9yaXpvbnRhbE92ZXJzY3JvbGxC
ZWhhdmlvciA9IHNjcm9sbGFibGVBcmVhLmhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKTsK
KyAgICBzY3JvbGxQYXJhbWV0ZXJzLnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yID0gc2Nyb2xs
YWJsZUFyZWEudmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKTsKICAgICBzY3JvbGxQYXJhbWV0
ZXJzLmhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5ID0gc2Nyb2xsYWJsZUFyZWEuaG9yaXpvbnRh
bFNjcm9sbEVsYXN0aWNpdHkoKTsKICAgICBzY3JvbGxQYXJhbWV0ZXJzLnZlcnRpY2FsU2Nyb2xs
RWxhc3RpY2l0eSA9IHNjcm9sbGFibGVBcmVhLnZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eSgpOwog
ICAgIHNjcm9sbFBhcmFtZXRlcnMuYWxsb3dzSG9yaXpvbnRhbFNjcm9sbGluZyA9IHNjcm9sbGFi
bGVBcmVhLmFsbG93c0hvcml6b250YWxTY3JvbGxpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbExhdGNoaW5nQ29udHJvbGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIuY3BwCmlu
ZGV4IDRlZDRkOTc1YTdlYTQ1MDA5N2ZjYmI0ZGU5YTJlMDMyMWM2YTY3N2IuLmJhMDAxMWQzMWIz
Nzg1NTEyYjQ1NDI5MDI5OWE1ZWFjMDFmZWIwZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbExhdGNoaW5nQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyLmNwcApAQCAt
MTA4LDcgKzEwOCw3IEBAIGJvb2wgU2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyOjpsYXRjaGluZ0Fs
bG93c1Njcm9sbGluZ0luRnJhbWUoY29uc3QgRnJhbWUmIGZyYW1lCiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi12b2lkIFNjcm9sbExhdGNoaW5nQ29udHJvbGxlcjo6dXBkYXRlQW5kRmV0Y2hMYXRj
aGluZ1N0YXRlRm9yRnJhbWUoRnJhbWUmIGZyYW1lLCBjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQm
IHdoZWVsRXZlbnQsIFJlZlB0cjxFbGVtZW50PiYgbGF0Y2hlZEVsZW1lbnQsIFdlYWtQdHI8U2Ny
b2xsYWJsZUFyZWE+JiBzY3JvbGxhYmxlQXJlYSwgYm9vbCYgaXNPdmVyV2lkZ2V0KQordm9pZCBT
Y3JvbGxMYXRjaGluZ0NvbnRyb2xsZXI6OnVwZGF0ZUFuZEZldGNoTGF0Y2hpbmdTdGF0ZUZvckZy
YW1lKEZyYW1lJiBmcmFtZSwgY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBS
ZWZQdHI8RWxlbWVudD4mIGxhdGNoZWRFbGVtZW50LCBXZWFrUHRyPFNjcm9sbGFibGVBcmVhPiYg
c2Nyb2xsYWJsZUFyZWEsIFNjcm9sbENoYWluaW5nQmxvY2tlciYgc2Nyb2xsQ2hhaW5pbmdCbG9j
a2VyLCBib29sJiBpc092ZXJXaWRnZXQpCiB7CiAgICAgaWYgKHdoZWVsRXZlbnQuaXNHZXN0dXJl
U3RhcnQoKSkgewogICAgICAgICAvLyBXZSBjYW4gaGF2ZSBleGlzdGluZyBzdGF0ZSBoZXJlIGJl
Y2F1c2Ugc3RhdGUgaXMgY2xlYXJlZCBvbiBhIHRpbWVyLgpAQCAtMTE4LDYgKzExOCw3IEBAIHZv
aWQgU2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyOjp1cGRhdGVBbmRGZXRjaExhdGNoaW5nU3RhdGVG
b3JGcmFtZShGcmFtZSYgZnJhbWUsCiAgICAgICAgICAgICBzdGF0ZS53aGVlbEV2ZW50RWxlbWVu
dCA9IG1ha2VXZWFrUHRyKGxhdGNoZWRFbGVtZW50LmdldCgpKTsKICAgICAgICAgICAgIGlmIChz
aG91bGRMYXRjaFRvU2Nyb2xsYWJsZUFyZWEoZnJhbWUsIHNjcm9sbGFibGVBcmVhLmdldCgpLCBt
X2N1bXVsYXRpdmVFdmVudERlbHRhKSkKICAgICAgICAgICAgICAgICBzdGF0ZS5zY3JvbGxhYmxl
QXJlYSA9IHNjcm9sbGFibGVBcmVhOworICAgICAgICAgICAgc3RhdGUuc2Nyb2xsQ2hhaW5pbmdC
bG9ja2VyID0gc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyOwogICAgICAgICAgICAgc3RhdGUuaXNPdmVy
V2lkZ2V0ID0gaXNPdmVyV2lkZ2V0OwogCiAgICAgICAgICAgICBMT0dfV0lUSF9TVFJFQU0oU2Ny
b2xsTGF0Y2hpbmcsIHN0cmVhbSA8PCAiU2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyOjp1cGRhdGVB
bmRGZXRjaExhdGNoaW5nU3RhdGVGb3JGcmFtZSgpIC0gcHVzaGluZyBzdGF0ZSBmb3IgRnJhbWUg
IiA8PCAmZnJhbWUgPDwgIiBlbGVtZW50ICIgPDwgc3RhdGUud2hlZWxFdmVudEVsZW1lbnQuZ2V0
KCkgPDwgIiBzY3JvbGxhYmxlQXJlYSAiIDw8IHN0YXRlLnNjcm9sbGFibGVBcmVhKTsKQEAgLTEz
Miw4ICsxMzMsMTAgQEAgdm9pZCBTY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXI6OnVwZGF0ZUFuZEZl
dGNoTGF0Y2hpbmdTdGF0ZUZvckZyYW1lKEZyYW1lJiBmcmFtZSwKICAgICAgICAgICAgIHJldHVy
bjsKIAogICAgICAgICAvLyBXZSBtYXkgbm90IGhhdmUgbGF0Y2hlZCBhdCBnZXN0dXJlIHN0YXJ0
IGJlY2F1c2Ugb2Ygc21hbGwgZGVsdGFzLiBSZS1ldmFsdWF0ZSBsYXRjaGluZyBiYXNlZCBvbiBh
Y2N1bXVsYXRlZCBkZWx0YS4KLSAgICAgICAgaWYgKCFzdGF0ZS0+c2Nyb2xsYWJsZUFyZWEgJiYg
c2hvdWxkTGF0Y2hUb1Njcm9sbGFibGVBcmVhKGZyYW1lLCBzY3JvbGxhYmxlQXJlYS5nZXQoKSwg
bV9jdW11bGF0aXZlRXZlbnREZWx0YSkpCisgICAgICAgIGlmICghc3RhdGUtPnNjcm9sbGFibGVB
cmVhICYmIHNob3VsZExhdGNoVG9TY3JvbGxhYmxlQXJlYShmcmFtZSwgc2Nyb2xsYWJsZUFyZWEu
Z2V0KCksIG1fY3VtdWxhdGl2ZUV2ZW50RGVsdGEpKSB7CiAgICAgICAgICAgICBzdGF0ZS0+c2Ny
b2xsYWJsZUFyZWEgPSBzY3JvbGxhYmxlQXJlYTsKKyAgICAgICAgICAgIHN0YXRlLT5zY3JvbGxD
aGFpbmluZ0Jsb2NrZXIgPSBzY3JvbGxDaGFpbmluZ0Jsb2NrZXI7CisgICAgICAgIH0KICAgICB9
CiAKICAgICBpZiAoIXdoZWVsRXZlbnQudXNlTGF0Y2hlZEV2ZW50RWxlbWVudCgpKQpAQCAtMTQ0
LDEyICsxNDcsMzQgQEAgdm9pZCBTY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXI6OnVwZGF0ZUFuZEZl
dGNoTGF0Y2hpbmdTdGF0ZUZvckZyYW1lKEZyYW1lJiBmcmFtZSwKICAgICAgICAgICAgIGxhdGNo
ZWRFbGVtZW50ID0gc3RhdGUud2hlZWxFdmVudEVsZW1lbnQuZ2V0KCk7CiAgICAgICAgICAgICBz
Y3JvbGxhYmxlQXJlYSA9IHN0YXRlLnNjcm9sbGFibGVBcmVhOwogICAgICAgICAgICAgaXNPdmVy
V2lkZ2V0ID0gc3RhdGUuaXNPdmVyV2lkZ2V0OworICAgICAgICAgICAgc2Nyb2xsQ2hhaW5pbmdC
bG9ja2VyID0gc3RhdGUuc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyOwogCiAgICAgICAgICAgICBMT0df
V0lUSF9TVFJFQU0oU2Nyb2xsTGF0Y2hpbmcsIHN0cmVhbSA8PCAiU2Nyb2xsTGF0Y2hpbmdDb250
cm9sbGVyOjp1cGRhdGVBbmRGZXRjaExhdGNoaW5nU3RhdGVGb3JGcmFtZSgpIC0gdXNpbmcgc3Rh
dGUgZm9yIEZyYW1lICIgPDwgJmZyYW1lIDw8ICIgZWxlbWVudCAiIDw8IGxhdGNoZWRFbGVtZW50
LmdldCgpIDw8ICIgc2Nyb2xsYWJsZUFyZWEgIiA8PCBzY3JvbGxhYmxlQXJlYSk7CiAgICAgICAg
IH0KICAgICB9CiB9CiAKK1Njcm9sbENoYWluaW5nQmxvY2tlciBTY3JvbGxMYXRjaGluZ0NvbnRy
b2xsZXI6OmdldFNjcm9sbENoYWluaW5nQmxvY2tlcihjb25zdCBGcmFtZSYgZnJhbWUpIGNvbnN0
Cit7CisgICAgaWYgKCFtX2ZyYW1lU3RhdGVTdGFjay5pc0VtcHR5KCkpIHsKKyAgICAgICAgYXV0
byogZnJhbWVTdGF0ZSA9IHN0YXRlRm9yRnJhbWUoZnJhbWUpOworICAgICAgICBpZiAoZnJhbWVT
dGF0ZSkKKyAgICAgICAgICAgIHJldHVybiBmcmFtZVN0YXRlLT5zY3JvbGxDaGFpbmluZ0Jsb2Nr
ZXI7CisgICAgfQorCisgICAgcmV0dXJuIHsgZmFsc2UsIGZhbHNlIH07Cit9CisKK3ZvaWQgU2Ny
b2xsTGF0Y2hpbmdDb250cm9sbGVyOjp1cGRhdGVTY3JvbGxDaGFpbmluZ0Jsb2NrZXIoY29uc3Qg
RnJhbWUmIGZyYW1lLCBjb25zdCBTY3JvbGxDaGFpbmluZ0Jsb2NrZXImIHNjcm9sbENoYWluaW5n
QmxvY2tlckZyb21TdWJmcmFtZSkKK3sKKyAgICBpZiAobV9mcmFtZVN0YXRlU3RhY2suaXNFbXB0
eSgpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKGF1dG8qIGZyYW1lU3RhdGUgPSBzdGF0ZUZv
ckZyYW1lKGZyYW1lKSkgeworICAgICAgICBmcmFtZVN0YXRlLT5zY3JvbGxDaGFpbmluZ0Jsb2Nr
ZXIuYmxvY2tYIHw9IHNjcm9sbENoYWluaW5nQmxvY2tlckZyb21TdWJmcmFtZS5ibG9ja1g7Cisg
ICAgICAgIGZyYW1lU3RhdGUtPnNjcm9sbENoYWluaW5nQmxvY2tlci5ibG9ja1kgfD0gc2Nyb2xs
Q2hhaW5pbmdCbG9ja2VyRnJvbVN1YmZyYW1lLmJsb2NrWTsKKyAgICB9Cit9CisKIHZvaWQgU2Ny
b2xsTGF0Y2hpbmdDb250cm9sbGVyOjpyZW1vdmVMYXRjaGluZ1N0YXRlRm9yVGFyZ2V0KGNvbnN0
IEVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgaWYgKG1fZnJhbWVTdGF0ZVN0YWNrLmlzRW1wdHko
KSkKQEAgLTI1Miw2ICsyNzcsOCBAQCB2b2lkIFNjcm9sbExhdGNoaW5nQ29udHJvbGxlcjo6ZHVt
cChXVEY6OlRleHRTdHJlYW0mIHRzKSBjb25zdAogICAgICAgICBtdWx0aWxpbmVTdHJlYW0uZHVt
cFByb3BlcnR5KCJmcmFtZSIsIFZhbHVlT3JOdWxsKHN0YXRlLmZyYW1lKSk7CiAgICAgICAgIG11
bHRpbGluZVN0cmVhbS5kdW1wUHJvcGVydHkoImVsZW1lbnQiLCBWYWx1ZU9yTnVsbChzdGF0ZS53
aGVlbEV2ZW50RWxlbWVudC5nZXQoKSkpOwogICAgICAgICBtdWx0aWxpbmVTdHJlYW0uZHVtcFBy
b3BlcnR5KCJzY3JvbGxhYmxlIGFyZWEiLCBWYWx1ZU9yTnVsbChzdGF0ZS5zY3JvbGxhYmxlQXJl
YS5nZXQoKSkpOworICAgICAgICBtdWx0aWxpbmVTdHJlYW0uZHVtcFByb3BlcnR5KCJzdGF0ZS5z
Y3JvbGxDaGFpbmluZ0Jsb2NrZXIuYmxvY2tYIiwgc3RhdGUuc2Nyb2xsQ2hhaW5pbmdCbG9ja2Vy
LmJsb2NrWCk7CisgICAgICAgIG11bHRpbGluZVN0cmVhbS5kdW1wUHJvcGVydHkoInN0YXRlLnNj
cm9sbENoYWluaW5nQmxvY2tlci5ibG9ja1kiLCBzdGF0ZS5zY3JvbGxDaGFpbmluZ0Jsb2NrZXIu
YmxvY2tZKTsKICAgICAgICAgbXVsdGlsaW5lU3RyZWFtLmR1bXBQcm9wZXJ0eSgiaXMgb3ZlciB3
aWRnZXQiLCBzdGF0ZS5pc092ZXJXaWRnZXQpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIuaAppbmRl
eCA1NjQ5NjE1OWM1ZTY4ZDJiY2NlZjhjMjY1ZWU2MWNjYjlkZmI0YjI4Li44ZmQ4ZTMwYzZhMTY1
ZDk5OThkNDExZDI4YmJmZmQzMmVlZjIzNjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIuaApAQCAtNjEsNyAr
NjEsMTAgQEAgcHVibGljOgogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBubyBmcmFtZSBpcyBsYXRj
aGVkLCBvciBsYXRjaGluZyBpcyBpbiB0aGUgZ2l2ZW4gZnJhbWUgKGluIHdoaWNoIGNhc2UgbGF0
Y2hlZFNjcm9sbGVyIHdpbGwgYmUgbm9uLW51bGwpLgogICAgIGJvb2wgbGF0Y2hpbmdBbGxvd3NT
Y3JvbGxpbmdJbkZyYW1lKGNvbnN0IEZyYW1lJiwgV2Vha1B0cjxTY3JvbGxhYmxlQXJlYT4mIGxh
dGNoZWRTY3JvbGxlcikgY29uc3Q7CiAKLSAgICB2b2lkIHVwZGF0ZUFuZEZldGNoTGF0Y2hpbmdT
dGF0ZUZvckZyYW1lKEZyYW1lJiwgY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgUmVmUHRyPEVs
ZW1lbnQ+JiBsYXRjaGVkRWxlbWVudCwgV2Vha1B0cjxTY3JvbGxhYmxlQXJlYT4mLCBib29sJiBp
c092ZXJXaWRnZXQpOworICAgIHZvaWQgdXBkYXRlQW5kRmV0Y2hMYXRjaGluZ1N0YXRlRm9yRnJh
bWUoRnJhbWUmLCBjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBSZWZQdHI8RWxlbWVudD4mIGxh
dGNoZWRFbGVtZW50LCBXZWFrUHRyPFNjcm9sbGFibGVBcmVhPiYsIFNjcm9sbENoYWluaW5nQmxv
Y2tlciYsIGJvb2wmIGlzT3ZlcldpZGdldCk7CisKKyAgICBTY3JvbGxDaGFpbmluZ0Jsb2NrZXIg
Z2V0U2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKGNvbnN0IEZyYW1lJikgY29uc3Q7CisgICAgdm9pZCB1
cGRhdGVTY3JvbGxDaGFpbmluZ0Jsb2NrZXIoY29uc3QgRnJhbWUmLCBjb25zdCBTY3JvbGxDaGFp
bmluZ0Jsb2NrZXImIFNjcm9sbENoYWluaW5nQmxvY2tlckZyb21TdWJmcmFtZSk7CiAKICAgICB2
b2lkIHJlbW92ZUxhdGNoaW5nU3RhdGVGb3JUYXJnZXQoY29uc3QgRWxlbWVudCYpOwogICAgIHZv
aWQgcmVtb3ZlTGF0Y2hpbmdTdGF0ZUZvckZyYW1lKGNvbnN0IEZyYW1lJik7CkBAIC03Myw2ICs3
Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIFdlYWtQdHI8RWxlbWVudD4gd2hlZWxFdmVudEVsZW1l
bnQ7CiAgICAgICAgIFdlYWtQdHI8U2Nyb2xsYWJsZUFyZWE+IHNjcm9sbGFibGVBcmVhOwogICAg
ICAgICBGcmFtZSogZnJhbWUgeyBudWxscHRyIH07CisgICAgICAgIFNjcm9sbENoYWluaW5nQmxv
Y2tlciBzY3JvbGxDaGFpbmluZ0Jsb2NrZXI7CiAgICAgICAgIGJvb2wgaXNPdmVyV2lkZ2V0IHsg
ZmFsc2UgfTsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdDb29yZGluYXRvclR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvclR5cGVzLmgKaW5kZXggZWVjYWI2ZjU1YjY1YzQ2
MDE5OWY4MGVmMDUwNjU1MmI3MWYzMDgwMy4uNTY3NGRjYWU2YzQzMmNhNDZhMDI4MzVkZDAwYWQ3
NDAxM2NlNmFhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nQ29vcmRpbmF0b3JUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yVHlwZXMuaApAQCAtNjgsNiArNjgsOSBAQCBlbnVtIGNs
YXNzIFNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb24gewogfTsKIAogc3RydWN0IFNjcm9sbGFi
bGVBcmVhUGFyYW1ldGVycyB7CisgICAgT3ZlcnNjcm9sbEJlaGF2aW9yIGhvcml6b250YWxPdmVy
c2Nyb2xsQmVoYXZpb3IgeyBPdmVyc2Nyb2xsQmVoYXZpb3I6OiBBdXRvIH07CisgICAgT3ZlcnNj
cm9sbEJlaGF2aW9yIHZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yIHsgT3ZlcnNjcm9sbEJlaGF2
aW9yOjogQXV0byB9OworCiAgICAgU2Nyb2xsRWxhc3RpY2l0eSBob3Jpem9udGFsU2Nyb2xsRWxh
c3RpY2l0eSB7IFNjcm9sbEVsYXN0aWNpdHlOb25lIH07CiAgICAgU2Nyb2xsRWxhc3RpY2l0eSB2
ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkgeyBTY3JvbGxFbGFzdGljaXR5Tm9uZSB9OwogCkBAIC04
NCw3ICs4Nyw5IEBAIHN0cnVjdCBTY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMgewogCiAgICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IFNjcm9sbGFibGVBcmVhUGFyYW1ldGVycyYgb3RoZXIpIGNvbnN0
CiAgICAgewotICAgICAgICByZXR1cm4gaG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkgPT0gb3Ro
ZXIuaG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkKKyAgICAgICAgcmV0dXJuIGhvcml6b250YWxP
dmVyc2Nyb2xsQmVoYXZpb3IgPT0gb3RoZXIuaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcgor
ICAgICAgICAgICAgJiYgdmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IgPT0gb3RoZXIudmVydGlj
YWxPdmVyc2Nyb2xsQmVoYXZpb3IKKyAgICAgICAgICAgICYmIGhvcml6b250YWxTY3JvbGxFbGFz
dGljaXR5ID09IG90aGVyLmhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5CiAgICAgICAgICAgICAm
JiB2ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkgPT0gb3RoZXIudmVydGljYWxTY3JvbGxFbGFzdGlj
aXR5CiAgICAgICAgICAgICAmJiBob3Jpem9udGFsU2Nyb2xsYmFyTW9kZSA9PSBvdGhlci5ob3Jp
em9udGFsU2Nyb2xsYmFyTW9kZQogICAgICAgICAgICAgJiYgdmVydGljYWxTY3JvbGxiYXJNb2Rl
ID09IG90aGVyLnZlcnRpY2FsU2Nyb2xsYmFyTW9kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcAppbmRleCAxY2VmMzFiYjM2NjUxNmQzYjRhOGNl
ODFmYzE5ZGZhYjZlOTJhMGQ1Li42M2M0OGExZWYwY2UwMmQ1MzlkMjM2Y2QyMzQ3YjNlYzRkNWVm
Y2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdU
cmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVl
LmNwcApAQCAtMTc2LDE5ICsxNzYsNTUgQEAgV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0IFNjcm9s
bGluZ1RyZWU6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW4KIAogV2hl
ZWxFdmVudEhhbmRsaW5nUmVzdWx0IFNjcm9sbGluZ1RyZWU6OmhhbmRsZVdoZWVsRXZlbnRXaXRo
Tm9kZShjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIE9wdGlvblNldDxXaGVl
bEV2ZW50UHJvY2Vzc2luZ1N0ZXBzPiBwcm9jZXNzaW5nU3RlcHMsIFNjcm9sbGluZ1RyZWVOb2Rl
KiBub2RlLCBFdmVudFRhcmdldGluZyBldmVudFRhcmdldGluZykKIHsKKyAgICBGbG9hdFNpemUg
ZmlsdGVyZWRQbGF0Zm9ybURlbHRhKHdoZWVsRXZlbnQuZGVsdGFYKCksIHdoZWVsRXZlbnQuZGVs
dGFZKCkpOworICAgIFBsYXRmb3JtV2hlZWxFdmVudCBhZGp1c3RlZFdoZWVsRXZlbnQgPSBQbGF0
Zm9ybVdoZWVsRXZlbnQod2hlZWxFdmVudCk7CisgICAgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIHNj
cm9sbENoYWluaW5nQmxvY2tlciA9IHsgZmFsc2UsIGZhbHNlIH07CisgICAgYXV0byBiaWFzZWRE
ZWx0YSA9IFBsYXRmb3JtV2hlZWxFdmVudDo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGlj
YWwoZmlsdGVyZWRQbGF0Zm9ybURlbHRhKTsKICAgICB3aGlsZSAobm9kZSkgewogICAgICAgICBp
ZiAoaXM8U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU+KCpub2RlKSkgewogICAgICAgICAgICAg
YXV0byYgc2Nyb2xsaW5nTm9kZSA9IGRvd25jYXN0PFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
Pigqbm9kZSk7Ci0gICAgICAgICAgICBhdXRvIHJlc3VsdCA9IHNjcm9sbGluZ05vZGUuaGFuZGxl
V2hlZWxFdmVudCh3aGVlbEV2ZW50LCBldmVudFRhcmdldGluZyk7CisgICAgICAgICAgICBhdXRv
IHJlc3VsdCA9IHNjcm9sbGluZ05vZGUuaGFuZGxlV2hlZWxFdmVudChhZGp1c3RlZFdoZWVsRXZl
bnQsIGV2ZW50VGFyZ2V0aW5nKTsKIAogICAgICAgICAgICAgaWYgKHJlc3VsdC53YXNIYW5kbGVk
KSB7Ci0gICAgICAgICAgICAgICAgbV9sYXRjaGluZ0NvbnRyb2xsZXIubm9kZURpZEhhbmRsZUV2
ZW50KHNjcm9sbGluZ05vZGUuc2Nyb2xsaW5nTm9kZUlEKCksIHByb2Nlc3NpbmdTdGVwcywgd2hl
ZWxFdmVudCwgbV9hbGxvd0xhdGNoaW5nKTsKKyAgICAgICAgICAgICAgICAvLyBJZiB0aGUgc2Ny
b2xsIGNoYWluaW5nIGlzIGJsb2NrZWQgaW4gYSBzaW5nbGUgZGlyZWN0aW9uLCBpdCBzaG91bGQg
c3RvcCBsYXRjaGluZyB0byBhIG5vZGUsCisgICAgICAgICAgICAgICAgLy8gZm9yIHRoZSB3aGVl
bCBldmVudCBtaWdodCBjaGFuZ2UgdGhlIGRpcmVjdGlvbiBhbmQgb3ZlcnNjcm9sbC1iZWhhdmlv
ciBtaWdodCBub3QgYmUgYWJsZSBibG9jaworICAgICAgICAgICAgICAgIC8vIHRoZSBzY3JvbGwg
Y2hhaW5pbmcgaWYgaXQgbGF0Y2hlcyB0byB0aGUgYW5jZXN0cnkgbm9kZSBvZiBvdmVyc2Nyb2xs
LWJlaGF2aW9yIHRhcmdldC4KKyAgICAgICAgICAgICAgICBpZiAoKHNjcm9sbENoYWluaW5nQmxv
Y2tlci5ibG9ja1ggJiYgc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLmJsb2NrWSkgfHwgKCFzY3JvbGxD
aGFpbmluZ0Jsb2NrZXIuYmxvY2tYICYmICFzY3JvbGxDaGFpbmluZ0Jsb2NrZXIuYmxvY2tZKSkK
KyAgICAgICAgICAgICAgICAgICAgbV9sYXRjaGluZ0NvbnRyb2xsZXIubm9kZURpZEhhbmRsZUV2
ZW50KHNjcm9sbGluZ05vZGUuc2Nyb2xsaW5nTm9kZUlEKCksIHByb2Nlc3NpbmdTdGVwcywgd2hl
ZWxFdmVudCwgbV9hbGxvd0xhdGNoaW5nKTsKICAgICAgICAgICAgICAgICBtX2dlc3R1cmVTdGF0
ZS5ub2RlRGlkSGFuZGxlRXZlbnQoc2Nyb2xsaW5nTm9kZS5zY3JvbGxpbmdOb2RlSUQoKSwgd2hl
ZWxFdmVudCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgaWYgKHJlc3VsdC5uZWVkc01haW5UaHJlYWRQcm9jZXNzaW5nKCkgfHwg
ZXZlbnRUYXJnZXRpbmcgIT0gRXZlbnRUYXJnZXRpbmc6OlByb3BhZ2F0ZSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gcmVzdWx0OworCisgICAgICAgICAgICBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIu
YmxvY2tYIHw9IHNjcm9sbGluZ05vZGUuaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpICE9
IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0bzsKKyAgICAgICAgICAgIHNjcm9sbENoYWluaW5nQmxv
Y2tlci5ibG9ja1kgfD0gc2Nyb2xsaW5nTm9kZS52ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigp
ICE9IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0bzsKKyAgICAgICAgICAgIGlmIChzY3JvbGxDaGFp
bmluZ0Jsb2NrZXIuYmxvY2tYKSB7CisgICAgICAgICAgICAgICAgZmlsdGVyZWRQbGF0Zm9ybURl
bHRhLnNldFdpZHRoKDApOworICAgICAgICAgICAgICAgIGlmICghYmlhc2VkRGVsdGEuaGVpZ2h0
KCkpCisgICAgICAgICAgICAgICAgICAgIGZpbHRlcmVkUGxhdGZvcm1EZWx0YS5zZXRIZWlnaHQo
MCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoc2Nyb2xsQ2hhaW5pbmdCbG9ja2Vy
LmJsb2NrWSkgeworICAgICAgICAgICAgICAgIGZpbHRlcmVkUGxhdGZvcm1EZWx0YS5zZXRIZWln
aHQoMCk7CisgICAgICAgICAgICAgICAgaWYgKCFiaWFzZWREZWx0YS53aWR0aCgpKQorICAgICAg
ICAgICAgICAgICAgICBmaWx0ZXJlZFBsYXRmb3JtRGVsdGEuc2V0V2lkdGgoMCk7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBhZGp1c3RlZFdoZWVsRXZlbnQgPSBhZGp1c3RlZFdoZWVsRXZl
bnQuY29weVdpdGhEZWx0YXNBbmRWZWxvY2l0eShmaWx0ZXJlZFBsYXRmb3JtRGVsdGEud2lkdGgo
KSwgZmlsdGVyZWRQbGF0Zm9ybURlbHRhLmhlaWdodCgpLCBhZGp1c3RlZFdoZWVsRXZlbnQuc2Ny
b2xsaW5nVmVsb2NpdHkoKSk7CisKKyAgICAgICAgICAgIGlmIChzY3JvbGxDaGFpbmluZ0Jsb2Nr
ZXIuYmxvY2tYIHx8IHNjcm9sbENoYWluaW5nQmxvY2tlci5ibG9ja1kpIHsKKyAgICAgICAgICAg
ICAgICBpZiAoc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLmJsb2NrWCAmJiAhYmlhc2VkRGVsdGEuaGVp
Z2h0KCkgJiYgd2lsbFdoZWVsRXZlbnRTdGFydFN3aXBlR2VzdHVyZSh3aGVlbEV2ZW50KSkKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdDo6dW5oYW5k
bGVkKCk7CisKKyAgICAgICAgICAgICAgICBpZiAoKHNjcm9sbENoYWluaW5nQmxvY2tlci5ibG9j
a1ggJiYgc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLmJsb2NrWSkKKyAgICAgICAgICAgICAgICAgICAg
fHwgKHNjcm9sbENoYWluaW5nQmxvY2tlci5ibG9ja1ggJiYgIWJpYXNlZERlbHRhLmhlaWdodCgp
KQorICAgICAgICAgICAgICAgICAgICB8fCAoc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLmJsb2NrWSAm
JiAhYmlhc2VkRGVsdGEud2lkdGgoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHNjcm9s
bENoYWluaW5nQmxvY2tlci5ibG9ja1ggJiYgc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLmJsb2NrWSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIG1fbGF0Y2hpbmdDb250cm9sbGVyLm5vZGVEaWRIYW5k
bGVFdmVudChzY3JvbGxpbmdOb2RlLnNjcm9sbGluZ05vZGVJRCgpLCBwcm9jZXNzaW5nU3RlcHMs
IHdoZWVsRXZlbnQsIG1fYWxsb3dMYXRjaGluZyk7CisgICAgICAgICAgICAgICAgICAgIG1fZ2Vz
dHVyZVN0YXRlLm5vZGVEaWRIYW5kbGVFdmVudChzY3JvbGxpbmdOb2RlLnNjcm9sbGluZ05vZGVJ
RCgpLCB3aGVlbEV2ZW50KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFdoZWVsRXZlbnRI
YW5kbGluZ1Jlc3VsdDo6aGFuZGxlZCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KICAgICAgICAgfQogCiAgICAgICAgIGlmIChpczxTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3Jv
bGxQcm94eU5vZGU+KCpub2RlKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwCmluZGV4IDYyNWUy
MDE4ZmE3NWZmN2ZkYmY1Y2E1NTIyZDg4OWQ2ZWE0MjI0OGYuLjI3YzhkYzJkMGM3ZjdmNTA5MWVl
OTYxNjNiNzg4MGFmOWQzOGU0M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAKQEAgLTEzNCw2
ICsxMzQsMTYgQEAgYm9vbCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6aXNMYXRjaGVkTm9k
ZSgpIGNvbnN0CiAgICAgcmV0dXJuIHNjcm9sbGluZ1RyZWUoKS5sYXRjaGVkTm9kZUlEKCkgPT0g
c2Nyb2xsaW5nTm9kZUlEKCk7CiB9CiAKK092ZXJzY3JvbGxCZWhhdmlvciBTY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZTo6aG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzLmhvcml6b250YWxPdmVyc2Nyb2xs
QmVoYXZpb3I7Cit9CisKK092ZXJzY3JvbGxCZWhhdmlvciBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZTo6dmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdAoreworICAgIHJldHVybiBt
X3Njcm9sbGFibGVBcmVhUGFyYW1ldGVycy52ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcjsKK30K
KwogYm9vbCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6Y2FuSGFuZGxlV2hlZWxFdmVudChj
b25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIEV2ZW50VGFyZ2V0aW5nIGV2ZW50
VGFyZ2V0aW5nKSBjb25zdAogewogICAgIGlmICghY2FuSGF2ZVNjcm9sbGJhcnMoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZS5oCmluZGV4IDg2MmMxYjNkYmUwZTIzZTE2OWZhNTJjYWE0NjJmZWZkZjE0ZGU4
MTguLjVhMTRjYTM0ZGFjYzk4Y2VlZGY0NjBhMjM3MGNlYTA2N2I4YzViYWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGUuaApAQCAtMTQ1LDYgKzE0NSw4IEBAIHByb3RlY3RlZDoKICAgICBjb25zdCBGbG9h
dFNpemUmIHRvdGFsQ29udGVudHNTaXplRm9yUnViYmVyQmFuZCgpIGNvbnN0IHsgcmV0dXJuIG1f
dG90YWxDb250ZW50c1NpemVGb3JSdWJiZXJCYW5kOyB9CiAgICAgdm9pZCBzZXRUb3RhbENvbnRl
bnRzU2l6ZUZvclJ1YmJlckJhbmQoY29uc3QgRmxvYXRTaXplJiB0b3RhbENvbnRlbnRzU2l6ZUZv
clJ1YmJlckJhbmQpIHsgbV90b3RhbENvbnRlbnRzU2l6ZUZvclJ1YmJlckJhbmQgPSB0b3RhbENv
bnRlbnRzU2l6ZUZvclJ1YmJlckJhbmQ7IH0KIAorICAgIE92ZXJzY3JvbGxCZWhhdmlvciBob3Jp
em9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29uc3Q7CisgICAgT3ZlcnNjcm9sbEJlaGF2aW9y
IHZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29uc3Q7CiAgICAgU2Nyb2xsRWxhc3RpY2l0
eSBob3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eSgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsYWJs
ZUFyZWFQYXJhbWV0ZXJzLmhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5OyB9CiAgICAgU2Nyb2xs
RWxhc3RpY2l0eSB2ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkoKSBjb25zdCB7IHJldHVybiBtX3Nj
cm9sbGFibGVBcmVhUGFyYW1ldGVycy52ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHk7IH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLmgKaW5kZXggMzJhODM4
ZWI2ZjNkYTQzOTgzYmNmZjU1YjdjYzQxODE1NTczNGU5Zi4uMzk4MTQ4MWZlNGQyOTZlZWJjZWUz
YWM3MWQ4MjRkN2QyM2NhNmFiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGVEZWxlZ2F0ZU1hYy5oCkBAIC0xMDEsNiArMTAxLDkgQEAgcHJpdmF0ZToKICAgICBGbG9hdFNp
emUgdmlld3BvcnRTaXplKCkgY29uc3Qgb3ZlcnJpZGU7CiAjZW5kaWYKIAorICAgIGJvb2wgc2hv
dWxkU3RvcEhvcml6b250YWxTdHJlY2goKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHNob3Vs
ZFN0b3BWZXJ0aWNhbFN0cmVjaCgpIGNvbnN0IG92ZXJyaWRlOworCiAgICAgdm9pZCByZWxlYXNl
UmVmZXJlbmNlc1RvU2Nyb2xsZXJJbXBzT25UaGVNYWluVGhyZWFkKCk7CiAKICAgICBTY3JvbGxD
b250cm9sbGVyIG1fc2Nyb2xsQ29udHJvbGxlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlRGVsZWdhdGVNYWMubW0KaW5kZXggYjc1YzcyMjU5MGFjNjE3ODMxMWEwNDFiNTUz
YTA1YjA2ZmJhNjQ2ZS4uZjZjNWJjOTA2OWZlMTE5N2E5Yzg0MTRiMzYzNWE3ZTk4OTNjYzliZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMubW0KQEAg
LTI1Niw2ICsyNTYsOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsQ29udHJvbGxlclRpbWVyPiBT
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjpjcgogCiBib29sIFNjcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OmFsbG93c0hvcml6b250YWxTdHJldGNoaW5n
KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCkgY29uc3QKIHsKKyAgICBpZiAo
c2hvdWxkU3RvcEhvcml6b250YWxTdHJlY2goKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAg
ICAgc3dpdGNoIChob3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eSgpKSB7CiAgICAgY2FzZSBTY3Jv
bGxFbGFzdGljaXR5QXV0b21hdGljOiB7CiAgICAgICAgIGJvb2wgc2Nyb2xsYmFyc0FsbG93U3Ry
ZXRjaGluZyA9IGFsbG93c0hvcml6b250YWxTY3JvbGxpbmcoKSB8fCAhYWxsb3dzVmVydGljYWxT
Y3JvbGxpbmcoKTsKQEAgLTI3OCw2ICsyODEsOSBAQCBib29sIFNjcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlRGVsZWdhdGVNYWM6OmFsbG93c0hvcml6b250YWxTdHJldGNoaW5nKGNvbnN0IFBsYQog
CiBib29sIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OmFsbG93c1ZlcnRp
Y2FsU3RyZXRjaGluZyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpIGNvbnN0
CiB7CisgICAgaWYgKHNob3VsZFN0b3BWZXJ0aWNhbFN0cmVjaCgpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKICAgICBzd2l0Y2ggKHZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eSgpKSB7CiAgICAg
Y2FzZSBTY3JvbGxFbGFzdGljaXR5QXV0b21hdGljOiB7CiAgICAgICAgIGJvb2wgc2Nyb2xsYmFy
c0FsbG93U3RyZXRjaGluZyA9IGFsbG93c1ZlcnRpY2FsU2Nyb2xsaW5nKCkgfHwgIWFsbG93c0hv
cml6b250YWxTY3JvbGxpbmcoKTsKQEAgLTQzMSw2ICs0MzcsMTYgQEAgRmxvYXRTaXplIFNjcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OnZpZXdwb3J0U2l6ZSgpIGNvbnN0CiB9
CiAjZW5kaWYKIAorYm9vbCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjpz
aG91bGRTdG9wSG9yaXpvbnRhbFN0cmVjaCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHNjcm9sbGlu
Z05vZGUoKS5ob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgPT0gT3ZlcnNjcm9sbEJlaGF2
aW9yOjpOb25lOworfQorCitib29sIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVN
YWM6OnNob3VsZFN0b3BWZXJ0aWNhbFN0cmVjaCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHNjcm9s
bGluZ05vZGUoKS52ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpID09IE92ZXJzY3JvbGxCZWhh
dmlvcjo6Tm9uZTsKK30KKwogdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRl
TWFjOjpkZWZlcldoZWVsRXZlbnRUZXN0Q29tcGxldGlvbkZvclJlYXNvbihXaGVlbEV2ZW50VGVz
dE1vbml0b3I6OlNjcm9sbGFibGVBcmVhSWRlbnRpZmllciBpZGVudGlmaWVyLCBXaGVlbEV2ZW50
VGVzdE1vbml0b3I6OkRlZmVyUmVhc29uIHJlYXNvbikgY29uc3QKIHsKICAgICBpZiAoIXNjcm9s
bGluZ1RyZWUoKS5pc01vbml0b3JpbmdXaGVlbEV2ZW50cygpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaAppbmRleCBkNzE2OTM0NmEyNDAyM2MyYTQ3ODdh
ZTM0NTQwYTM3NjA3YzBhMmQ1Li42NDE3OTdhNmY0MTg3NTMzOGNhNzFlYTczOTE2MGQxMGIwNmY4
OGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZl
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaApA
QCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJGbG9hdFBvaW50Lmgi
CisjaW5jbHVkZSAiRmxvYXRTaXplLmgiCiAjaW5jbHVkZSAiSW50UG9pbnQuaCIKICNpbmNsdWRl
ICJQbGF0Zm9ybUV2ZW50LmgiCiAjaW5jbHVkZSA8d3RmL1dpbmRvd3NFeHRyYXMuaD4KQEAgLTE3
NCw2ICsxNzUsOCBAQCBwdWJsaWM6CiAgICAgUGxhdGZvcm1XaGVlbEV2ZW50KEhXTkQsIFdQQVJB
TSwgTFBBUkFNLCBib29sIGlzTW91c2VIV2hlZWwpOwogI2VuZGlmCiAKKyAgICBzdGF0aWMgRmxv
YXRTaXplIHdoZWVsRGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRpY2FsKGNvbnN0IEZsb2F0U2l6ZSYp
OworCiBwcm90ZWN0ZWQ6CiAgICAgUGxhdGZvcm1XaGVlbEV2ZW50R3JhbnVsYXJpdHkgbV9ncmFu
dWxhcml0eSB7IFNjcm9sbEJ5UGl4ZWxXaGVlbEV2ZW50IH07CiAgICAgYm9vbCBtX2RpcmVjdGlv
bkludmVydGVkRnJvbURldmljZSB7IGZhbHNlIH07CkBAIC0yNjQsNiArMjY3LDE5IEBAIGlubGlu
ZSBGbG9hdFBvaW50IFBsYXRmb3JtV2hlZWxFdmVudDo6c3dpcGVWZWxvY2l0eSgpIGNvbnN0CiAK
ICNlbmRpZiAvLyBFTkFCTEUoS0lORVRJQ19TQ1JPTExJTkcpCiAKK2lubGluZSBGbG9hdFNpemUg
UGxhdGZvcm1XaGVlbEV2ZW50Ojp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbChjb25z
dCBGbG9hdFNpemUmIGRlbHRhKQoreworICAgIGF1dG8gZGVsdGFYID0gZGVsdGEud2lkdGgoKTsK
KyAgICBhdXRvIGRlbHRhWSA9IGRlbHRhLmhlaWdodCgpOworCisgICAgaWYgKGZhYnNmKGRlbHRh
WSkgPj0gZmFic2YoZGVsdGFYKSkKKyAgICAgICAgZGVsdGFYID0gMDsKKyAgICBlbHNlCisgICAg
ICAgIGRlbHRhWSA9IDA7CisKKyAgICByZXR1cm4geyBkZWx0YVgsIGRlbHRhWSB9OworfQorCiBX
RUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFt
JiwgY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jik7CiBXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgV2hlZWxFdmVudFByb2Nlc3NpbmdT
dGVwcyk7CiBXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpU
ZXh0U3RyZWFtJiwgRXZlbnRIYW5kbGluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVHlw
ZXMuaAppbmRleCBhMDkzYzliM2U2MGFkYjlmOTkyNjI1NzhjYWYzZGZhNDBkZjYwNDFhLi4xY2Rm
OWU2ZGI0NGY2MjMzYzg2Y2ZiN2EzNDYwMmNjMGM1NzcxODY4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbFR5cGVzLmgKQEAgLTI0OSw2ICsyNDksMTEgQEAgZW51bSBjbGFzcyBTY3JvbGxQ
b3NpdGlvbmluZ0JlaGF2aW9yIDogdWludDhfdCB7CiAgICAgU3RhdGlvbmFyeQogfTsKIAorc3Ry
dWN0IFNjcm9sbENoYWluaW5nQmxvY2tlciB7CisgICAgYm9vbCBibG9ja1ggeyBmYWxzZSB9Owor
ICAgIGJvb2wgYmxvY2tZIHsgZmFsc2UgfTsKK307CisKIHVzaW5nIFNjcm9sbGJhckNvbnRyb2xT
dGF0ZSA9IHVuc2lnbmVkOwogdXNpbmcgU2Nyb2xsYmFyQ29udHJvbFBhcnRNYXNrID0gdW5zaWdu
ZWQ7CiB1c2luZyBTY3JvbGxpbmdOb2RlSUQgPSB1aW50NjRfdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCmluZGV4IDlmY2Q1NDlhYmI2ZWRhMjA2ZTIyMGMwYmQ4ZGQ5
MWZlZjI3MmYzMGUuLjI3ZmNhZWUxMDVkMTQ5YzQ3YzlkZjI1YmEzNWVkYjcyM2U4MjE3MWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaApAQCAtMTI0LDYgKzEyNCw5
IEBAIHB1YmxpYzoKICAgICBib29sIGNvbnN0cmFpbnNTY3JvbGxpbmdUb0NvbnRlbnRFZGdlKCkg
Y29uc3QgeyByZXR1cm4gbV9jb25zdHJhaW5zU2Nyb2xsaW5nVG9Db250ZW50RWRnZTsgfQogICAg
IHZvaWQgc2V0Q29uc3RyYWluc1Njcm9sbGluZ1RvQ29udGVudEVkZ2UoYm9vbCBjb25zdHJhaW5z
U2Nyb2xsaW5nVG9Db250ZW50RWRnZSkgeyBtX2NvbnN0cmFpbnNTY3JvbGxpbmdUb0NvbnRlbnRF
ZGdlID0gY29uc3RyYWluc1Njcm9sbGluZ1RvQ29udGVudEVkZ2U7IH0KIAorICAgIHZpcnR1YWwg
T3ZlcnNjcm9sbEJlaGF2aW9yIGhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdCB7
IHJldHVybiBPdmVyc2Nyb2xsQmVoYXZpb3I6OkF1dG87IH0KKyAgICB2aXJ0dWFsIE92ZXJzY3Jv
bGxCZWhhdmlvciB2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpIGNvbnN0IHsgcmV0dXJuIE92
ZXJzY3JvbGxCZWhhdmlvcjo6QXV0bzsgfQorCiAgICAgdm9pZCBzZXRWZXJ0aWNhbFNjcm9sbEVs
YXN0aWNpdHkoU2Nyb2xsRWxhc3RpY2l0eSBzY3JvbGxFbGFzdGljaXR5KSB7IG1fdmVydGljYWxT
Y3JvbGxFbGFzdGljaXR5ID0gc2Nyb2xsRWxhc3RpY2l0eTsgfQogICAgIFNjcm9sbEVsYXN0aWNp
dHkgdmVydGljYWxTY3JvbGxFbGFzdGljaXR5KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
U2Nyb2xsRWxhc3RpY2l0eT4obV92ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkpOyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIuaAppbmRleCBj
ZjM5MjM0MDVlZTEzMTY5NjgxNmJlN2ZiMGEyNTQ1NDFiMjQzZmZjLi40NWM1NzdhY2I1ZGY0ZWFk
ZTQzOTA5OGE4NzYwNDYzMWZkNGU0MjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5oCkBAIC0xMTgsNiArMTE4LDExIEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIExheW91dFNpemUgc2Nyb2xsRXh0ZW50KCkgY29uc3QgPSAwOwogICAgIHZp
cnR1YWwgRmxvYXRTaXplIHZpZXdwb3J0U2l6ZSgpIGNvbnN0ID0gMDsKICNlbmRpZgorCisjaWYg
UExBVEZPUk0oTUFDKQorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTdG9wSG9yaXpvbnRhbFN0cmVj
aCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIHNob3VsZFN0b3BW
ZXJ0aWNhbFN0cmVjaCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisjZW5kaWYKIH07CiAKIGVu
dW0gY2xhc3MgV2hlZWxFdmVudFN0YXR1cyB7CkBAIC0xNzMsOCArMTc4LDYgQEAgcHVibGljOgog
I2VuZGlmCiAjZW5kaWYKIAotICAgIHN0YXRpYyBGbG9hdFNpemUgd2hlZWxEZWx0YUJpYXNpbmdU
b3dhcmRzVmVydGljYWwoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jik7Ci0KICAgICBlbnVtIGNs
YXNzIFdoZWVsQXhpc0JpYXMgeyBOb25lLCBWZXJ0aWNhbCB9OwogICAgIHN0YXRpYyBPcHRpb25h
bDxTY3JvbGxEaXJlY3Rpb24+IGRpcmVjdGlvbkZyb21FdmVudChjb25zdCBQbGF0Zm9ybVdoZWVs
RXZlbnQmLCBPcHRpb25hbDxTY3JvbGxFdmVudEF4aXM+LCBXaGVlbEF4aXNCaWFzID0gV2hlZWxB
eGlzQmlhczo6Tm9uZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL1Njcm9sbENvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9T
Y3JvbGxDb250cm9sbGVyLm1tCmluZGV4IDNlNGYwNjljZjMyYjYzMTg1NmE4YzZhMmRlZDBhMTZl
M2VmNTFmZjguLmQwYTFjNWQzNGYzZWE5YTU0MWJlNzJjMjNhOTFiNjllMTMwODJmOTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5tbQpA
QCAtMjUyLDcgKzI1Miw4IEBAIGJvb2wgU2Nyb2xsQ29udHJvbGxlcjo6aGFuZGxlV2hlZWxFdmVu
dChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpCiAgICAgICAgICAgICAgICAg
ICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgbV9vdmVyZmxvd1Njcm9sbERlbHRh
LnNldFdpZHRoKG1fb3ZlcmZsb3dTY3JvbGxEZWx0YS53aWR0aCgpICsgZGVsdGFYKTsKICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgc2hvdWxkU3RyZXRjaCA9IHRydWU7CisgICAg
ICAgICAgICAgICAgaWYgKCghZGVsdGFYIHx8ICFtX2NsaWVudC5zaG91bGRTdG9wSG9yaXpvbnRh
bFN0cmVjaCgpKSAmJiAoIWRlbHRhWSB8fCAhbV9jbGllbnQuc2hvdWxkU3RvcFZlcnRpY2FsU3Ry
ZWNoKCkpKQorICAgICAgICAgICAgICAgICAgICBzaG91bGRTdHJldGNoID0gdHJ1ZTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogCkBAIC0zMjksMTkgKzMzMCw2IEBAIGJvb2wgU2Nyb2xsQ29u
dHJvbGxlcjo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVs
RXZlbnQpCiB9CiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCi1GbG9hdFNpemUgU2Nyb2xsQ29u
dHJvbGxlcjo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoY29uc3QgUGxhdGZvcm1X
aGVlbEV2ZW50JiB3aGVlbEV2ZW50KQotewotICAgIGF1dG8gZGVsdGFYID0gd2hlZWxFdmVudC5k
ZWx0YVgoKTsKLSAgICBhdXRvIGRlbHRhWSA9IHdoZWVsRXZlbnQuZGVsdGFZKCk7Ci0KLSAgICBp
ZiAoZmFic2YoZGVsdGFZKSA+PSBmYWJzZihkZWx0YVgpKQotICAgICAgICBkZWx0YVggPSAwOwot
ICAgIGVsc2UKLSAgICAgICAgZGVsdGFZID0gMDsKLQotICAgIHJldHVybiB7IGRlbHRhWCwgZGVs
dGFZIH07Ci19Ci0KIE9wdGlvbmFsPFNjcm9sbERpcmVjdGlvbj4gU2Nyb2xsQ29udHJvbGxlcjo6
ZGlyZWN0aW9uRnJvbUV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwg
T3B0aW9uYWw8U2Nyb2xsRXZlbnRBeGlzPiBheGlzLCBXaGVlbEF4aXNCaWFzIGJpYXMpCiB7CiAg
ICAgLy8gRklYTUU6IEl0J3MgaW1wb3NzaWJsZSB0byBpbmZlciBkaXJlY3Rpb24gZnJvbSBhIHNp
bmdsZSBldmVudCwgc2luY2UgdGhlIHN0YXJ0IG9mIGEgZ2VzdHVyZSBpcyBlaXRoZXIgemVybyBv
cgpAQCAtMzQ5LDcgKzMzNyw3IEBAIE9wdGlvbmFsPFNjcm9sbERpcmVjdGlvbj4gU2Nyb2xsQ29u
dHJvbGxlcjo6ZGlyZWN0aW9uRnJvbUV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlCiAKICAgICBhdXRv
IHdoZWVsRGVsdGEgPSBGbG9hdFNpemUgeyB3aGVlbEV2ZW50LmRlbHRhWCgpLCB3aGVlbEV2ZW50
LmRlbHRhWSgpIH07CiAgICAgaWYgKGJpYXMgPT0gV2hlZWxBeGlzQmlhczo6VmVydGljYWwpCi0g
ICAgICAgIHdoZWVsRGVsdGEgPSB3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbCh3aGVl
bEV2ZW50KTsKKyAgICAgICAgd2hlZWxEZWx0YSA9IFBsYXRmb3JtV2hlZWxFdmVudDo6d2hlZWxE
ZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwod2hlZWxFdmVudC5kZWx0YSgpKTsKIAogICAgIGlm
IChheGlzKSB7CiAgICAgICAgIHN3aXRjaCAoYXhpcy52YWx1ZSgpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5oCmluZGV4IDQ5ZjBiNGIxZDc5
Zjc3YTk2OGE5NTJmOGFlYjk3OTU0ZTI5NzJlMjkuLmE2Y2EwYWZlZWQ1NTRjYWQ5MzM3M2E0NGJm
ODE4M2RmMTcxMWI4NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9T
Y3JvbGxBbmltYXRvck1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3Jv
bGxBbmltYXRvck1hYy5oCkBAIC0xNTYsNiArMTU2LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFk
anVzdFNjcm9sbFBvc2l0aW9uVG9Cb3VuZHNJZk5lY2Vzc2FyeSgpIGZpbmFsOwogI2VuZGlmCiAK
KyAgICBib29sIHNob3VsZFN0b3BIb3Jpem9udGFsU3RyZWNoKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgYm9vbCBzaG91bGRTdG9wVmVydGljYWxTdHJlY2goKSBjb25zdCBvdmVycmlkZTsKKwogICAg
IGJvb2wgbV9oYXZlU2Nyb2xsZWRTaW5jZVBhZ2VMb2FkOwogICAgIGJvb2wgbV9uZWVkc1Njcm9s
bGVyU3R5bGVVcGRhdGU7CiAgICAgSW50UmVjdCBtX3Zpc2libGVTY3JvbGxlclRodW1iUmVjdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1h
Yy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQpp
bmRleCA2MTUxZGVmYzBlYWVjM2EwNTcxNTAyMGFlNjUwMDIzYmFjZjE0YjNjLi5lOGU2YWZjMjQ1
NjcyNzBhZjcwNGQ1MDAzZTM1MTM0ZjYzOGZmMjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tCkBAIC0xNTM2LDYgKzE1MzYsMTYgQEAg
dm9pZCBTY3JvbGxBbmltYXRvck1hYzo6c2V0VmlzaWJsZVNjcm9sbGVyVGh1bWJSZWN0KGNvbnN0
IEludFJlY3QmIHNjcm9sbGVyVGh1bWIKICAgICBtX3Zpc2libGVTY3JvbGxlclRodW1iUmVjdCA9
IHJlY3RJblZpZXdDb29yZGluYXRlczsKIH0KIAorYm9vbCBTY3JvbGxBbmltYXRvck1hYzo6c2hv
dWxkU3RvcEhvcml6b250YWxTdHJlY2goKSBjb25zdAoreworICAgIHJldHVybiBtX3Njcm9sbGFi
bGVBcmVhLmhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSA9PSBPdmVyc2Nyb2xsQmVoYXZp
b3I6Ok5vbmU7Cit9CisKK2Jvb2wgU2Nyb2xsQW5pbWF0b3JNYWM6OnNob3VsZFN0b3BWZXJ0aWNh
bFN0cmVjaCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWEudmVydGljYWxP
dmVyc2Nyb2xsQmVoYXZpb3IoKSA9PSBPdmVyc2Nyb2xsQmVoYXZpb3I6Ok5vbmU7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTTU9PVEhfU0NST0xMSU5H
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggMjQ5M2VmODY0
ZGE0M2E3ODAyODYzMWU4NzJhMzMwZDU0MDhhZjcyMy4uMTc2YjVjOWVhODc4YWJjNjE0MjRiMDA0
Y2ZjMmZjYzYxNmI4ZGMwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
Y3BwCkBAIC0zNDc2LDYgKzM0NzYsMjIgQEAgdm9pZCBSZW5kZXJMYXllcjo6aW52YWxpZGF0ZVNj
cm9sbENvcm5lclJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKICAgICAgICAgbV9yZXNpemVyLT5y
ZXBhaW50UmVjdGFuZ2xlKHJlY3QpOwogfQogCitPdmVyc2Nyb2xsQmVoYXZpb3IgUmVuZGVyTGF5
ZXI6Omhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdAoreworICAgIGF1dG8qIGJv
eCA9IHJlbmRlckJveCgpOworICAgIGlmIChib3ggJiYgIWJveC0+c2Nyb2xsc092ZXJmbG93WCgp
KQorICAgICAgICByZXR1cm4gU2Nyb2xsYWJsZUFyZWE6Omhvcml6b250YWxPdmVyc2Nyb2xsQmVo
YXZpb3IoKTsKKyAgICByZXR1cm4gcmVuZGVyZXIoKS5zdHlsZSgpLm92ZXJzY3JvbGxCZWhhdmlv
clgoKTsKK30KKworT3ZlcnNjcm9sbEJlaGF2aW9yIFJlbmRlckxheWVyOjp2ZXJ0aWNhbE92ZXJz
Y3JvbGxCZWhhdmlvcigpICBjb25zdAoreworICAgIGF1dG8qIGJveCA9IHJlbmRlckJveCgpOwor
ICAgIGlmIChib3ggJiYgIWJveC0+c2Nyb2xsc092ZXJmbG93WSgpKQorICAgICAgICByZXR1cm4g
U2Nyb2xsYWJsZUFyZWE6OnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCk7CisgICAgcmV0dXJu
IHJlbmRlcmVyKCkuc3R5bGUoKS5vdmVyc2Nyb2xsQmVoYXZpb3JZKCk7Cit9CisKIHN0YXRpYyBi
b29sIHNjcm9sbGJhckhpZGRlbkJ5U3R5bGUoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCiB7CiAgICAg
cmV0dXJuIHNjcm9sbGJhciAmJiBzY3JvbGxiYXItPmlzSGlkZGVuQnlTdHlsZSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAppbmRleCBmMjhjYjQxNDcyN2VmYzY4MjlhNjVh
OTRjNWZlYmE3YTQ1NmUxZTk5Li5iNjZiYjkzMWMxZDg2M2RmMTY0NmNhNTcwY2IwZDI3MDkxOTI3
YTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaApAQCAtNDgzLDYgKzQ4
Myw5IEBAIHB1YmxpYzoKICAgICBib29sIGhhc0hvcml6b250YWxTY3JvbGxiYXIoKSBjb25zdCB7
IHJldHVybiBob3Jpem9udGFsU2Nyb2xsYmFyKCk7IH0KICAgICBib29sIGhhc1ZlcnRpY2FsU2Ny
b2xsYmFyKCkgY29uc3QgeyByZXR1cm4gdmVydGljYWxTY3JvbGxiYXIoKTsgfQogCisgICAgT3Zl
cnNjcm9sbEJlaGF2aW9yIGhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdCBmaW5h
bDsKKyAgICBPdmVyc2Nyb2xsQmVoYXZpb3IgdmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBj
b25zdCBmaW5hbDsKKwogICAgIGJvb2wgaG9yaXpvbnRhbFNjcm9sbGJhckhpZGRlbkJ5U3R5bGUo
KSBjb25zdCBmaW5hbDsKICAgICBib29sIHZlcnRpY2FsU2Nyb2xsYmFySGlkZGVuQnlTdHlsZSgp
IGNvbnN0IGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmNwcAppbmRleCBmYWFhMmFkY2Y5OTFiMTM2NTkzYzU1OTYwNjQ2ZmYxZjQ4MGNmMWQ3
Li5kYjZjNTJjMzRlMDdhOTllYzFlNTMwNmQyZDY0NDBlNjNlMzc1YWRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTIwMTksNiArMjAx
OSw5IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxVc2VyU3R5bGVTaGVldD46OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyLCBVc2VyU3R5bGVTaGVldCYgdXNlCiAKIHZvaWQgQXJndW1lbnRDb2RlcjxTY3Jv
bGxhYmxlQXJlYVBhcmFtZXRlcnM+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU2Ny
b2xsYWJsZUFyZWFQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogeworICAgIGVuY29kZXIgPDwgcGFy
YW1ldGVycy5ob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yOworICAgIGVuY29kZXIgPDwgcGFy
YW1ldGVycy52ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcjsKKwogICAgIGVuY29kZXIgPDwgcGFy
YW1ldGVycy5ob3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eTsKICAgICBlbmNvZGVyIDw8IHBhcmFt
ZXRlcnMudmVydGljYWxTY3JvbGxFbGFzdGljaXR5OwogCkBAIC0yMDM2LDYgKzIwMzksMTEgQEAg
dm9pZCBBcmd1bWVudENvZGVyPFNjcm9sbGFibGVBcmVhUGFyYW1ldGVycz46OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyLCBjb25zdCBTY3IKIAogYm9vbCBBcmd1bWVudENvZGVyPFNjcm9sbGFibGVB
cmVhUGFyYW1ldGVycz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBTY3JvbGxhYmxlQXJlYVBh
cmFtZXRlcnMmIHBhcmFtcykKIHsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtcy5ob3Jp
em9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocGFyYW1zLnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbXMuaG9y
aXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShwYXJhbXMudmVydGljYWxTY3JvbGxFbGFzdGljaXR5KSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggZmE5NmNkYTg0
ZWNiN2Q0ODhhZTQyOTEzM2MwZjViNDQzNzA0OGRiMS4uMzk1MzU2NzgzZmRhNTZmZTFjMWFiMGQ5
MjM3Mjg1ZjM2NjQ2ZjA5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmgKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1JlYWx0aW1l
TWVkaWFTb3VyY2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlcmluZ01vZGUuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
U2Nyb2xsVHlwZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcmlhbGl6ZWRQbGF0Zm9ybURhdGFD
dWVWYWx1ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlclR5cGVzLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9TdG9yZWRDcmVkZW50aWFsc1BvbGljeS5oPgpAQCAtODk2LDYgKzg5Nywx
NSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMOjpBY3RpdmVJbmZvPiB7CiAKIG5hbWVzcGFjZSBXVEYgewogCit0ZW1wbGF0ZTw+IHN0
cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6Ok92ZXJzY3JvbGxCZWhhdmlvcj4geworICAgIHVzaW5n
IHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgV2ViQ29yZTo6T3ZlcnNjcm9sbEJlaGF2aW9yLAor
ICAgIFdlYkNvcmU6Ok92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0bywKKyAgICBXZWJDb3JlOjpPdmVy
c2Nyb2xsQmVoYXZpb3I6OkNvbnRhaW4sCisgICAgV2ViQ29yZTo6T3ZlcnNjcm9sbEJlaGF2aW9y
OjpOb25lCisgICAgPjsKK307CisKIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29y
ZTo6Q29sb3JTcGFjZT4gewogICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CiAgICAgV2Vi
Q29yZTo6Q29sb3JTcGFjZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jl
bW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5tbQppbmRleCBkZmJmN2E0ZGJjZDNlMDVhNzdm
ZDUxZDIyMzAwZTY2MjAzOGVmYjg3Li40NDUwZmYwNDhmODg2NDJhYWM3MDQ2OGIxMjg5NjY1N2Yy
ZDY3OTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRy
ZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZURlbGVnYXRlSU9TLm1tCkBAIC0yMzYsMTIgKzIzNiwzMSBAQCB2b2lkIFNjcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M6OmNvbW1pdFN0YXRlQWZ0ZXJDaGlsZHJl
bihjb25zdCBTY3JvbAogICAgIFNldEZvclNjb3BlPGJvb2w+IHVwZGF0aW5nQ2hhbmdlKG1fdXBk
YXRpbmdGcm9tU3RhdGVOb2RlLCB0cnVlKTsKIAogICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUu
aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlNjcm9sbENv
bnRhaW5lckxheWVyKQorICAgICAgICB8fCBzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFBy
b3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsYWJsZUFyZWFQYXJhbXMp
CiAgICAgICAgIHx8IHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xs
aW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6VG90YWxDb250ZW50c1NpemUpCiAgICAgICAgIHx8IHNj
cm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQ
cm9wZXJ0eTo6UmVhY2hhYmxlQ29udGVudHNTaXplKQogICAgICAgICB8fCBzY3JvbGxpbmdTdGF0
ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlNj
cm9sbFBvc2l0aW9uKQogICAgICAgICB8fCBzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFBy
b3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlNjcm9sbE9yaWdpbikpIHsKICAg
ICAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAgICAgICAgIFVJU2Nyb2xsVmlldyAq
c2Nyb2xsVmlldyA9IHRoaXMtPnNjcm9sbFZpZXcoKTsKKworICAgICAgICAvLyBGSVhNRShyZGFy
Oi8vcHJvYmxlbS8zNDMxNTk5Nyk6IFVJU2Nyb2xsVmlldyBzaG91bGQgaGF2ZSBzb21lIGtpbmQg
b2Ygc3VwcG9ydCBmb3Igb3ZlcnNjcm9sbC1iZWhhdmlvciB0byBlbmFibGUvZGlzYWJsZToKKyAg
ICAgICAgLy8gLSBub24tbG9jYWwgYm91bmRhcnkgZGVmYXVsdCBhY3Rpb25zIChlLmcuIHNjcm9s
bCBjaGFpbmluZykuCisgICAgICAgIC8vIC0gbG9jYWwgYm91bmRhcnkgZGVmYXVsdCBhY3Rpb25z
IChlLmcuIGJvdW5jaW5nKS4KKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorICAgICAgICAv
LyBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0
ZVNjcm9sbGluZ05vZGU6OlNjcm9sbGFibGVBcmVhUGFyYW1zKSkgeworICAgICAgICAvLyAgICAg
c2Nyb2xsVmlldy5vdmVyc2Nyb2xsQmVoYXZpb3JIb3Jpem9udGFsID0gY29udmVydE92ZXJzY3Jv
bGxCZWhhdmlvckZyb21XZWJLaXRUb1VJS2l0KHNjcm9sbGluZ1N0YXRlTm9kZS5zY3JvbGxhYmxl
QXJlYVBhcmFtZXRlcnMoKS5ob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKTsKKyAgICAgICAg
Ly8gICAgIHNjcm9sbFZpZXcub3ZlcnNjcm9sbEJlaGF2aW9yVmVydGljYWwgPSBjb252ZXJ0T3Zl
cnNjcm9sbEJlaGF2aW9yRnJvbVdlYktpdFRvVUlLaXQoc2Nyb2xsaW5nU3RhdGVOb2RlLnNjcm9s
bGFibGVBcmVhUGFyYW1ldGVycygpLnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKTsKKyAgICAg
ICAgLy8gfQorI2VuZGlmCisgICAgICAgIC8vIEZvciBub3csIHdlIG9ubHkgZGlzYWJsZSBib3Vu
Y2luZyB3aGVuIGJvdGggb3ZlcmZsb3cteCBhbmQgb3ZlcmZsb3cteSBhcmUgbm9uZS4KKyAgICAg
ICAgLy8gVUlTY3JvbGxWaWV3OjphbHdheXNCb3VuY2UqIGZ1bmN0aW9ucyBjYW5ub3QgaGVscCBo
ZXJlLgorICAgICAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShT
Y3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbGFibGVBcmVhUGFyYW1zKSkgeworICAg
ICAgICAgICAgc2Nyb2xsVmlldy5ib3VuY2VzID0gc2Nyb2xsaW5nU3RhdGVOb2RlLnNjcm9sbGFi
bGVBcmVhUGFyYW1ldGVycygpLmhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IgPT0gT3ZlcnNj
cm9sbEJlaGF2aW9yOjpOb25lCisgICAgICAgICAgICAmJiBzY3JvbGxpbmdTdGF0ZU5vZGUuc2Ny
b2xsYWJsZUFyZWFQYXJhbWV0ZXJzKCkudmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IgPT0gT3Zl
cnNjcm9sbEJlaGF2aW9yOjpOb25lCisgICAgICAgICAgICA/IE5PIDogWUVTOworICAgICAgICB9
CisKICAgICAgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Ny
b2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6U2Nyb2xsQ29udGFpbmVyTGF5ZXIpKSB7CiAgICAg
ICAgICAgICBpZiAoIW1fc2Nyb2xsVmlld0RlbGVnYXRlKQogICAgICAgICAgICAgICAgIG1fc2Ny
b2xsVmlld0RlbGVnYXRlID0gYWRvcHROUyhbW1dLU2Nyb2xsaW5nTm9kZVNjcm9sbFZpZXdEZWxl
Z2F0ZSBhbGxvY10gaW5pdFdpdGhTY3JvbGxpbmdUcmVlTm9kZURlbGVnYXRlOnRoaXNdKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IDk2
MjBlODZmYjBhNzIwMTQwMWMyY2FkNTUxZGUyY2ZiODg4OWJlZGIuLmI4Y2YyZTdmZTc0NmJlODYy
MTQ5NWZjMTQzMTM4MmIwNjUzOTlkYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJIVE1MVmlldy5tbQpAQCAtNDA5Myw2ICs0MDkzLDggQEAgc3RhdGljIEJPT0wg
Y3VycmVudFNjcm9sbElzQmxpdChOU1ZpZXcgKmNsaXBWaWV3KQogICAgIGF1dG8qIGZyYW1lID0g
Y29yZShbc2VsZiBfZnJhbWVdKTsKICAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+ZXZlbnRIYW5k
bGVyKCkud2hlZWxFdmVudChldmVudCkpIHsKICNpZiBQTEFURk9STShNQUMpCisgICAgICAgIC8v
IEZJWE1FOiBOZWVkIHRvIGZpbmQgYSB3YXkgdG8gYmxvY2sgdGhlIGNyb3NzLWZyYW1lIHNjcm9s
bCBjaGFpbmluZyBpbiBXSzEuCisgICAgICAgIC8vIFdlIGNhbiBub3QganVzdCBza2lwIHRoZSBz
Y3JvbGwgaGVyZSwgaXQgbm90IG9ubHkgYmxvY2tzIHNjcm9sbCBjaGFpbmluZyBidXQgYWxzbyBi
bG9ja3MgdGhlIHNjcm9sbCBvbiBjdXJyZW50IHZpZXcuCiAgICAgICAgIFtzdXBlciBzY3JvbGxX
aGVlbDpldmVudF07CiAjZW5kaWYKICAgICB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggODYyOGE3NzY5MTdhYjFkY2NlMjM0
M2NjNDYxNjcyZWJkNjQ3YWYzMi4uOGU4ZDQxZjhkNDA0NGVlY2QwZDJiNTcyOWE3MmM2ZWE3NmVk
MzA5OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIwLTEyLTI0ICBDYXRoaWUgQ2hlbiAgPGNh
dGhpZWNoZW5AaWdhbGlhLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgQ1NTIG92ZXJzY3JvbGwt
YmVoYXZpb3Igb24gTWFjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjAxMzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBCYXNlZCBvbiBGcsOpZMOpcmljIFdhbmcncyBwYXRjaC4KKworICAgICAgICAqIGZh
c3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVu
dC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2
aW9yLWlmcmFtZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5n
L292ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
c2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2
aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2Ny
b2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3It
dW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sOiBBZGRlZC4KKwogMjAyMC0xMi0yMyAgUnlhbiBIYWRk
YWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OOiBbIE1hYyBd
IG1lZGlhL3ZpZGVvLWJ1ZmZlcmluZy1hbGxvd2VkLmh0bWwgaXMgZmxha3kgdGltZW91dApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci1l
bGVtZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3Jv
bGwtYmVoYXZpb3ItZWxlbWVudC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjcxNTBmZjYwYjVk
YmRkMGI0YTdhYzZmODNmYjU2ZjU3Y2QyY2Q4MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwyMCBAQAorCitQQVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVz
dCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gYXV0by4KK1BBU1MgRWxlbWVudCB2ZXJ0
aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gYXV0by4KK1BB
U1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlv
cjogY29udGFpbiBhdXRvLgorUEFTUyBFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGgg
b3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBhdXRvLgorUEFTUyBFbGVtZW50IGhvcml6b250
YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIGF1dG8uCitQQVNT
IEVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBu
b25lIGF1dG8uCitQQVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJz
Y3JvbGwtYmVoYXZpb3I6IGF1dG8gY29udGFpbi4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3Jv
bGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gY29udGFpbi4KK1BBU1MgRWxl
bWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29u
dGFpbiBjb250YWluLgorUEFTUyBFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3Zl
cnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBjb250YWluLgorUEFTUyBFbGVtZW50IGhvcml6b250
YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIGNvbnRhaW4uCitQ
QVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9y
OiBub25lIGNvbnRhaW4uCitQQVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRo
IG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gbm9uZS4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBz
Y3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gbm9uZS4KK1BBU1MgRWxl
bWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29u
dGFpbiBub25lLgorUEFTUyBFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNj
cm9sbC1iZWhhdmlvcjogY29udGFpbiBub25lLgorUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Ny
b2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIG5vbmUuCitQQVNTIEVsZW1l
bnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIG5v
bmUuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwt
YmVoYXZpb3ItZWxlbWVudC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvb3ZlcnNj
cm9sbC1iZWhhdmlvci1lbGVtZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmEzMDE0ZGE5MTM3MzZkMWEx
NzNjYzlkZjY5NmVmYzA1Mzg0NWNjZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC5odG1sCkBAIC0wLDAgKzEs
MTA4IEBACis8IWRvY3R5cGUgaHRtbD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90
ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0
cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1vdmVyc2Nyb2xsLWJlaGF2aW9yIj4KKzxzdHlsZT4K
KyAgICAuc2Nyb2xsaW5nIHsKKyAgICAgICAgb3ZlcmZsb3c6IHNjcm9sbDsKKyAgICB9CisgICAg
LnNjcm9sbENvbnRlbnQgeworICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgIGhlaWdodDog
MzAwcHg7CisgICAgfQorICAgICNyb290IHsKKyAgICAgICAgd2lkdGg6IDIwMHB4OworICAgICAg
ICBoZWlnaHQ6IDIwMHB4OworICAgIH0KKyAgICAjc2Nyb2xsZXIgeworICAgICAgICB3aWR0aDog
MTAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgfQorPC9zdHlsZT4KKzxkaXYgaWQ9
J3Jvb3QnIGNsYXNzPSJzY3JvbGxpbmciPgorICAgIDxkaXYgaWQ9J3Njcm9sbGVyJyBjbGFzcz0i
c2Nyb2xsaW5nIj4KKyAgICAgICAgPGRpdiBjbGFzcz0ic2Nyb2xsQ29udGVudCI+PC9kaXY+Cisg
ICAgPC9kaXY+CisgICAgPGRpdiBjbGFzcz0ic2Nyb2xsQ29udGVudCI+PC9kaXY+Cis8L2Rpdj4K
KworPHNjcmlwdD4KK2NvbnN0IHJvb3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncm9vdCcp
OworY29uc3Qgc2Nyb2xsZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2Nyb2xsZXInKTsK
K3ZhciBvdmVyc2Nyb2xsRGF0YXMgPSBbWyJhdXRvIiwgImF1dG8iLCB0cnVlLCB0cnVlXSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIFsiY29udGFpbiIsICJhdXRvIiwgZmFsc2UsIHRydWVdLAor
ICAgICAgICAgICAgICAgICAgICAgICAgWyJub25lIiwgImF1dG8iLCBmYWxzZSwgdHJ1ZV0sCisg
ICAgICAgICAgICAgICAgICAgICAgICBbImF1dG8iLCAiY29udGFpbiIsIHRydWUsIGZhbHNlXSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIFsiY29udGFpbiIsICJjb250YWluIiwgZmFsc2UsIGZh
bHNlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFsibm9uZSIsICJjb250YWluIiwgZmFsc2Us
IGZhbHNlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFsiYXV0byIsICJub25lIiwgdHJ1ZSwg
ZmFsc2VdLAorICAgICAgICAgICAgICAgICAgICAgICAgWyJjb250YWluIiwgIm5vbmUiLCBmYWxz
ZSwgZmFsc2VdLAorICAgICAgICAgICAgICAgICAgICAgICAgWyJub25lIiwgIm5vbmUiLCBmYWxz
ZSwgZmFsc2VdXTsKK2FzeW5jIGZ1bmN0aW9uIHBlcmZvcm1XaGVlbFNjcm9sbChzY3JvbGxlciwg
ZGlyZWN0aW9uKSB7CisgICAgdmFyIGRlbHRhWCA9IDA7CisgICAgdmFyIGRlbHRhWSA9IDA7Cisg
ICAgaWYgKGRpcmVjdGlvbiA9PSAiZG93biIpCisgICAgICAgIGRlbHRhWSA9IC01OworICAgIGVs
c2UgaWYgKGRpcmVjdGlvbiA9PSAidXAiKQorICAgICAgICBkZWx0YVkgPSA1OworICAgIGVsc2Ug
aWYgKGRpcmVjdGlvbiA9PSAicmlnaHQiKQorICAgICAgICBkZWx0YVggPSAtNTsKKyAgICBlbHNl
IGlmIChkaXJlY3Rpb24gPT0gImxlZnQiKQorICAgICAgICBkZWx0YVggPSA1OworCisgICAgdmFy
IHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAgdmFyIHkgPSBzY3JvbGxlci5jbGll
bnRIZWlnaHQgLyAyOworICAgIGV2ZW50U2VuZGVyLmRyYWdNb2RlID0gZmFsc2U7CisgICAgZXZl
bnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3Zl
VG8oeCwgeSk7CisgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGRlbHRhWCwgZGVsdGFZLCAnYmVnYW4nLCAnbm9uZScpOworICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkZWx0YVggKiAyLCBk
ZWx0YVkgKiAyLCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGRlbHRhWCAqIDMsIGRlbHRhWSAqIDMsICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZGVsdGFYLCBkZWx0YVks
ICdub25lJywgJ2JlZ2luJyk7CisgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGRlbHRhWCAqIDIsIGRlbHRhWSAqIDIsICdub25lJywgJ2NvbnRp
bnVlJyk7CisgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGRlbHRhWCAqIDMsIGRlbHRhWSAqIDMsICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAs
ICdub25lJywgJ2VuZCcpOworICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAg
ICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKCgpID0+IHsKKyAg
ICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKK2Z1bmN0aW9u
IHJlc2V0VGVzdCgpIHsKKyAgICAvLyBUcnkgdmFyaW91cyBtZXRob2RzIHRvIGVuc3VyZSB0aGUg
ZWxlbWVudCBwb3NpdGlvbiBpcyByZXNldCBpbW1lZGlhdGVseS4KKyAgICBzY3JvbGxlci5zY3Jv
bGxMZWZ0ID0gMzAwOworICAgIHNjcm9sbGVyLnNjcm9sbFRvcCA9IDMwMDsKKyAgICBzY3JvbGxl
ci5zY3JvbGxUbygzMDAsIDMwMCk7CisKKyAgICByb290LnNjcm9sbExlZnQgPSAwOworICAgIHJv
b3Quc2Nyb2xsVG9wID0gMDsKKyAgICByb290LnNjcm9sbFRvKDAsIDApOworfQorCitmdW5jdGlv
biBzdGFydFRlc3QoKSB7CisgICAgb3ZlcnNjcm9sbERhdGFzLmZvckVhY2goKFtvdmVyc2Nyb2xs
WCwgb3ZlcnNjcm9sbFksIHByb3BhZ2F0ZVgsIHByb3BhZ2F0ZVldKSA9PiB7CisgICAgICAgIHBy
b21pc2VfdGVzdCgoKSA9PiB7CisgICAgICAgICAgICByZXNldFRlc3QoKTsKKyAgICAgICAgICAg
IHNjcm9sbGVyLnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclggPSBvdmVyc2Nyb2xsWDsKKyAgICAg
ICAgICAgIHNjcm9sbGVyLnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclkgPSBvdmVyc2Nyb2xsWTsK
KyAgICAgICAgICAgIHJldHVybiBwZXJmb3JtV2hlZWxTY3JvbGwoc2Nyb2xsZXIsICJyaWdodCIp
LnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxM
ZWZ0ID4gMCwgcHJvcGFnYXRlWCwgJ0NvbnRpbnVlIHVwIHRoZSBob3Jpem9udGFsIHNjcm9sbCBj
aGFpbmluZycpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0sICdFbGVtZW50IGhvcml6b250
YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiAnICsgb3ZlcnNjcm9sbFgg
KyAnICcgKyBvdmVyc2Nyb2xsWSArICcuJyk7CisKKyAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+
IHsKKyAgICAgICAgICAgIHJlc2V0VGVzdCgpOworICAgICAgICAgICAgc2Nyb2xsZXIuc3R5bGUu
b3ZlcnNjcm9sbEJlaGF2aW9yWCA9IG92ZXJzY3JvbGxYOworICAgICAgICAgICAgc2Nyb2xsZXIu
c3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWSA9IG92ZXJzY3JvbGxZOworICAgICAgICAgICAgcmV0
dXJuIHBlcmZvcm1XaGVlbFNjcm9sbChzY3JvbGxlciwgImRvd24iKS50aGVuKCgpID0+IHsKKyAg
ICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsVG9wID4gMCwgcHJvcGFnYXRl
WSwgJ0NvbnRpbnVlIHVwIHRoZSB2ZXJ0aWNhbCBzY3JvbGwgY2hhaW5pbmcnKTsKKyAgICAgICAg
ICAgIH0pOworICAgICAgICB9LCAnRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92
ZXJzY3JvbGwtYmVoYXZpb3I6ICcgKyBvdmVyc2Nyb2xsWCArICcgJyArIG92ZXJzY3JvbGxZICsg
Jy4nKTsKKyAgICB9KTsKK30KKworYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIHN0YXJ0VGVzdCk7
Cis8L3NjcmlwdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLWlm
cmFtZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTAwYTBiN2Q5MDViODdjMWRiNzYyNjk0ZmQw
MDYzOGYxOTc2OTUzNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xs
aW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIx
IEBACisKKworUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3Jv
bGwtYmVoYXZpb3I6IGF1dG8gYXV0by4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0
IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBhdXRvLgorUEFTUyBJZnJhbWUgaG9yaXpv
bnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gYXV0by4K
K1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlv
cjogY29udGFpbiBhdXRvLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRo
IG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgYXV0by4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNj
cm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBhdXRvLgorUEFTUyBJZnJh
bWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8g
Y29udGFpbi4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9s
bC1iZWhhdmlvcjogYXV0byBjb250YWluLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwg
dGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gY29udGFpbi4KK1BBU1MgSWZy
YW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFp
biBjb250YWluLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJz
Y3JvbGwtYmVoYXZpb3I6IG5vbmUgY29udGFpbi4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9s
bCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBjb250YWluLgorUEFTUyBJZnJh
bWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8g
bm9uZS4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1i
ZWhhdmlvcjogYXV0byBub25lLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3
aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gbm9uZS4KK1BBU1MgSWZyYW1lIHZlcnRp
Y2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBub25lLgor
UEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZp
b3I6IG5vbmUgbm9uZS4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3Zl
cnNjcm9sbC1iZWhhdmlvcjogbm9uZSBub25lLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4wN2Q2OTM3NjEzYjgwMzI3ZGU2NmY3YjE4ZTM2YmQwODY1MzgxNGQyCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci1p
ZnJhbWUuaHRtbApAQCAtMCwwICsxLDExMiBAQAorPCFkb2N0eXBlIGh0bWw+CisKKzxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8bGlu
ayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3Mtb3ZlcnNjcm9s
bC1iZWhhdmlvciI+Cis8c3R5bGU+CisgICAgLnNjcm9sbGluZyB7CisgICAgICAgIG92ZXJmbG93
OiBzY3JvbGw7CisgICAgfQorICAgIC5zY3JvbGxDb250ZW50IHsKKyAgICAgICAgd2lkdGg6IDMw
MHB4OworICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXIt
Z3JhZGllbnQoMTM1ZGVnLCByZWQsIGJsdWUpOworICAgIH0KKyAgICAjcm9vdCB7CisgICAgICAg
IHdpZHRoOiAyMDBweDsKKyAgICAgICAgaGVpZ2h0OiAyMDBweDsKKyAgICB9CisgICAgI3Njcm9s
bGVyIHsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAg
ICAgICBvdmVyc2Nyb2xsLWJlaGF2aW9yLXk6IGF1dG87CisgICAgfQorPC9zdHlsZT4KKzxkaXYg
aWQ9J3Jvb3QnIGNsYXNzPSJzY3JvbGxpbmciPgorICAgIDxpZnJhbWUgaWQ9J3Njcm9sbGVyJyBz
cmNkb2M9IjxodG1sPjxkaXYgc3R5bGU9J3dpZHRoOiAzMDBweDsgaGVpZ2h0OiAzMDBweDsnPjwv
ZGl2PjwvaHRtbD4KKyAgICAgICAgIj48L2lmcmFtZT4KKyAgICA8ZGl2IGNsYXNzPSJzY3JvbGxD
b250ZW50Ij48L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0PgorICAgIGNvbnN0IHJvb3QgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgncm9vdCcpOworICAgIGNvbnN0IHNjcm9sbGVyID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3Njcm9sbGVyJyk7CisgICAgdmFyIG92ZXJzY3JvbGxEYXRhcyA9
IFtbImF1dG8iLCAiYXV0byIsIHRydWUsIHRydWVdLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFsiY29udGFpbiIsICJhdXRvIiwgZmFsc2UsIHRydWVdLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFsibm9uZSIsICJhdXRvIiwgZmFsc2UsIHRydWVdLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFsiYXV0byIsICJjb250YWluIiwgdHJ1ZSwgZmFsc2VdLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFsiY29udGFpbiIsICJjb250YWluIiwgZmFsc2UsIGZhbHNlXSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIm5vbmUiLCAiY29udGFpbiIsIGZhbHNlLCBm
YWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJhdXRvIiwgIm5vbmUiLCB0cnVl
LCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJjb250YWluIiwgIm5vbmUi
LCBmYWxzZSwgZmFsc2VdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsibm9uZSIsICJu
b25lIiwgZmFsc2UsIGZhbHNlXV07CisgICAgYXN5bmMgZnVuY3Rpb24gcGVyZm9ybVdoZWVsU2Ny
b2xsKHNjcm9sbGVyLCBkaXJlY3Rpb24pIHsKKyAgICAgICAgdmFyIGRlbHRhWCA9IDA7CisgICAg
ICAgIHZhciBkZWx0YVkgPSAwOworICAgICAgICBpZiAoZGlyZWN0aW9uID09ICJkb3duIikKKyAg
ICAgICAgICAgIGRlbHRhWSA9IC01OworICAgICAgICBlbHNlIGlmIChkaXJlY3Rpb24gPT0gInVw
IikKKyAgICAgICAgICAgIGRlbHRhWSA9IDU7CisgICAgICAgIGVsc2UgaWYgKGRpcmVjdGlvbiA9
PSAicmlnaHQiKQorICAgICAgICAgICAgZGVsdGFYID0gLTU7CisgICAgICAgIGVsc2UgaWYgKGRp
cmVjdGlvbiA9PSAibGVmdCIpCisgICAgICAgICAgICBkZWx0YVggPSA1OworCisgICAgICAgIHZh
ciB4ID0gc2Nyb2xsZXIuY2xpZW50V2lkdGggLyAyOworICAgICAgICB2YXIgeSA9IHNjcm9sbGVy
LmNsaWVudEhlaWdodCAvIDI7CisgICAgICAgIGV2ZW50U2VuZGVyLmRyYWdNb2RlID0gZmFsc2U7
CisgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICBldmVu
dFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGRlbHRhWCwgZGVsdGFZLCAnYmVnYW4nLCAn
bm9uZScpOworICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZGVsdGFYICogMiwgZGVsdGFZICogMiwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZGVsdGFYICogMywgZGVsdGFZICogMywgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwg
J2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGRlbHRhWCwgZGVsdGFZLCAnbm9uZScsICdiZWdpbicpOwor
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZGVsdGFYICogMiwgZGVsdGFZICogMiwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGRlbHRh
WCAqIDMsIGRlbHRhWSAqIDMsICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScs
ICdlbmQnKTsKKyAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4geworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKCgpID0+IHsKKyAg
ICAgICAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7Cisg
ICAgfQorCisgICAgZnVuY3Rpb24gcmVzZXRUZXN0KCkgeworICAgICAgICAvLyBUcnkgdmFyaW91
cyBtZXRob2RzIHRvIGVuc3VyZSB0aGUgZWxlbWVudCBwb3NpdGlvbiBpcyByZXNldCBpbW1lZGlh
dGVseS4KKyAgICAgICAgc2Nyb2xsZXIuY29udGVudFdpbmRvdy5zY3JvbGxYID0gMzAwOworICAg
ICAgICBzY3JvbGxlci5jb250ZW50V2luZG93LnNjcm9sbFkgPSAzMDA7CisgICAgICAgIHNjcm9s
bGVyLmNvbnRlbnRXaW5kb3cuc2Nyb2xsVG8oMzAwLCAzMDApOworCisgICAgICAgIHJvb3Quc2Ny
b2xsTGVmdCA9IDA7CisgICAgICAgIHJvb3Quc2Nyb2xsVG9wID0gMDsKKyAgICAgICAgcm9vdC5z
Y3JvbGxUbygwLCAwKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBvdmVyc2Nyb2xsQmVoYXZpb3JU
ZXN0KCkgeworICAgICAgICBvdmVyc2Nyb2xsRGF0YXMuZm9yRWFjaCgoW292ZXJzY3JvbGxYLCBv
dmVyc2Nyb2xsWSwgcHJvcGFnYXRlWCwgcHJvcGFnYXRlWV0pID0+IHsKKyAgICAgICAgICAgIHBy
b21pc2VfdGVzdCgoKSA9PiB7CisgICAgICAgICAgICAgICAgcmVzZXRUZXN0KCk7CisgICAgICAg
ICAgICAgICAgdmFyIHRhcmdldCA9IHNjcm9sbGVyLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoImh0bWwiKVswXTsKKyAgICAgICAgICAgICAgICB0YXJnZXQuc3R5
bGUub3ZlcnNjcm9sbEJlaGF2aW9yWCA9IG92ZXJzY3JvbGxYOworICAgICAgICAgICAgICAgIHRh
cmdldC5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JZID0gb3ZlcnNjcm9sbFk7CisKKyAgICAgICAg
ICAgICAgICByZXR1cm4gcGVyZm9ybVdoZWVsU2Nyb2xsKHNjcm9sbGVyLCAicmlnaHQiKS50aGVu
KCgpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbExl
ZnQgPiAwLCBwcm9wYWdhdGVYLCAnQ29udGludWUgdXAgdGhlIGhvcml6b250YWwgc2Nyb2xsIGNo
YWluaW5nJyk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9LCAnSWZyYW1lIGhv
cml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiAnICsgb3ZlcnNj
cm9sbFggKyAnICcgKyBvdmVyc2Nyb2xsWSArICcuJyk7CisKKyAgICAgICAgICAgIHByb21pc2Vf
dGVzdCgoKSA9PiB7CisgICAgICAgICAgICAgICAgcmVzZXRUZXN0KCk7CisgICAgICAgICAgICAg
ICAgdmFyIHRhcmdldCA9IHNjcm9sbGVyLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoImh0bWwiKVswXTsKKyAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUub3Zl
cnNjcm9sbEJlaGF2aW9yWCA9IG92ZXJzY3JvbGxYOworICAgICAgICAgICAgICAgIHRhcmdldC5z
dHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JZID0gb3ZlcnNjcm9sbFk7CisgICAgICAgICAgICAgICAg
cmV0dXJuIHBlcmZvcm1XaGVlbFNjcm9sbChzY3JvbGxlciwgImRvd24iKS50aGVuKCgpID0+IHsK
KyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbFRvcCA+IDAsIHBy
b3BhZ2F0ZVksICdDb250aW51ZSB1cCB0aGUgdmVydGljYWwgc2Nyb2xsIGNoYWluaW5nJyk7Cisg
ICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9LCAnSWZyYW1lIHZlcnRpY2FsIHNjcm9s
bCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogJyArIG92ZXJzY3JvbGxYICsgJyAnICsg
b3ZlcnNjcm9sbFkgKyAnLicpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBzY3JvbGxlci5h
ZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgb3ZlcnNjcm9sbEJlaGF2aW9yVGVzdCk7Cis8L3Njcmlw
dD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZp
b3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYzOTViNjQ4
OGQwODcwYjk1NjFjMDI4Njc5ZDdlMTVhNDdmY2U2ZTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1l
bGVtZW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKKworUEFTUyBVbnNjcm9sbGFibGUg
ZWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjog
bm9uZS4KK1BBU1MgVW5zY3JvbGxhYmxlIGVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0
aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50Lmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Ny
b2xsYWJsZS1lbGVtZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjdhY2I4ZjhmOTAxY2M5NDliMWZmZGQ4
N2RhZThhMWZiOWVlYjk0YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Ny
b2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRtbApAQCAt
MCwwICsxLDkyIEBACis8IWRvY3R5cGUgaHRtbD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0iaGVscCIgaHJl
Zj0iaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1vdmVyc2Nyb2xsLWJlaGF2aW9yIj4KKzxz
dHlsZT4KKyAgICAuc2Nyb2xsaW5nIHsKKyAgICAgICAgb3ZlcmZsb3c6IHNjcm9sbDsKKyAgICB9
CisgICAgLnNjcm9sbENvbnRlbnQgeworICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgIGhl
aWdodDogMzAwcHg7CisgICAgfQorICAgICNyb290IHsKKyAgICAgICAgd2lkdGg6IDIwMHB4Owor
ICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAgIH0KKyAgICAjc2Nyb2xsZXIgeworICAgICAgICB3
aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICAgIG92ZXJzY3JvbGwt
YmVoYXZpb3I6IG5vbmU7CisgICAgICAgIG92ZXJmbG93OiB2aXNpYmxlOworICAgICAgICBiYWNr
Z3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZWQsIGJsdWUpOworICAgIH0KKzwvc3R5
bGU+Cis8ZGl2IGlkPSJyb290IiBjbGFzcz0ic2Nyb2xsaW5nIj4KKyAgICA8ZGl2IGlkPSJzY3Jv
bGxlciI+CisgICAgICAgIDxkaXYgY2xhc3M9InNjcm9sbENvbnRlbnQiPjwvZGl2PgorICAgIDwv
ZGl2PgorICAgIDxkaXYgY2xhc3M9InNjcm9sbENvbnRlbnQiPjwvZGl2PgorPC9kaXY+CisKKzxz
Y3JpcHQ+Citjb25zdCByb290ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jvb3QnKTsKK2Nv
bnN0IHNjcm9sbGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Njcm9sbGVyJyk7Cithc3lu
YyBmdW5jdGlvbiBwZXJmb3JtV2hlZWxTY3JvbGwoc2Nyb2xsZXIsIGRpcmVjdGlvbikgeworICAg
IHZhciBkZWx0YVggPSAwOworICAgIHZhciBkZWx0YVkgPSAwOworICAgIGlmIChkaXJlY3Rpb24g
PT0gImRvd24iKQorICAgICAgICBkZWx0YVkgPSAtNTsKKyAgICBlbHNlIGlmIChkaXJlY3Rpb24g
PT0gInVwIikKKyAgICAgICAgZGVsdGFZID0gNTsKKyAgICBlbHNlIGlmIChkaXJlY3Rpb24gPT0g
InJpZ2h0IikKKyAgICAgICAgZGVsdGFYID0gLTU7CisgICAgZWxzZSBpZiAoZGlyZWN0aW9uID09
ICJsZWZ0IikKKyAgICAgICAgZGVsdGFYID0gNTsKKworICAgIHZhciB4ID0gc2Nyb2xsZXIuY2xp
ZW50V2lkdGggLyAyOworICAgIHZhciB5ID0gc2Nyb2xsZXIuY2xpZW50SGVpZ2h0IC8gMjsKKyAg
ICBldmVudFNlbmRlci5kcmFnTW9kZSA9IGZhbHNlOworICAgIGV2ZW50U2VuZGVyLm1vbml0b3JX
aGVlbEV2ZW50cygpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkZWx0YVgs
IGRlbHRhWSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZGVsdGFYICogMiwgZGVsdGFZICogMiwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkZWx0YVggKiAzLCBkZWx0YVkgKiAzLCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGRlbHRhWCwgZGVsdGFZLCAnbm9uZScsICdiZWdpbicp
OworICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkZWx0YVggKiAyLCBkZWx0YVkgKiAyLCAnbm9uZScsICdjb250aW51ZScpOworICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkZWx0YVggKiAz
LCBkZWx0YVkgKiAzLCAnbm9uZScsICdjb250aW51ZScpOworICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsK
KyAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgICAgIGV2ZW50U2VuZGVy
LmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcygoKSA9PiB7CisgICAgICAgICAgICByZXNvbHZl
KCk7CisgICAgICAgIH0pOworICAgIH0pOworfQorCitmdW5jdGlvbiByZXNldFRlc3QoKSB7Cisg
ICAgcm9vdC5zY3JvbGxMZWZ0ID0gMDsKKyAgICByb290LnNjcm9sbFRvcCA9IDA7CisgICAgcm9v
dC5zY3JvbGxUbygwLCAwKTsKK30KKworZnVuY3Rpb24gc3RhcnRUZXN0KCkgeworICAgICAgICBw
cm9taXNlX3Rlc3QoKCkgPT4geworICAgICAgICAgICAgcmVzZXRUZXN0KCk7CisgICAgICAgICAg
ICByZXR1cm4gcGVyZm9ybVdoZWVsU2Nyb2xsKHNjcm9sbGVyLCAicmlnaHQiKS50aGVuKCgpID0+
IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsTGVmdCA+IDAsIHRy
dWUsICdDb250aW51ZSB1cCB0aGUgaG9yaXpvbnRhbCBzY3JvbGwgY2hhaW5pbmcnKTsKKyAgICAg
ICAgICAgIH0pOworICAgICAgICB9LCAnVW5zY3JvbGxhYmxlIGVsZW1lbnQgaG9yaXpvbnRhbCBz
Y3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuJyk7CisKKyAgICAgICAg
cHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAgIHJlc2V0VGVzdCgpOworCisgICAgICAg
ICAgICByZXR1cm4gcGVyZm9ybVdoZWVsU2Nyb2xsKHNjcm9sbGVyLCAiZG93biIpLnRoZW4oKCkg
PT4geworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxUb3AgPiAwLCB0
cnVlLCAnQ29udGludWUgdXAgdGhlIHZlcnRpY2FsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAg
ICAgICAgfSk7CisgICAgICAgIH0sICdVbnNjcm9sbGFibGUgZWxlbWVudCB2ZXJ0aWNhbCBzY3Jv
bGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuJyk7Cit9CisKK2FkZEV2ZW50
TGlzdGVuZXIoImxvYWQiLCBzdGFydFRlc3QpOworPC9zY3JpcHQ+ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvb3ZlcnNj
cm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFt
ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2ZhNTljY2JhNzlhZWZmMzNkYTcwZTkzZDQ4OGEw
N2VlYzljNTY5MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5n
L292ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSw1IEBACisKKworUEFTUyBVbnNjcm9sbGFibGUgaWZyYW1lIGhvcml6b250YWwgc2Ny
b2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLgorUEFTUyBVbnNjcm9sbGFi
bGUgaWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjog
bm9uZS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9s
bC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3Nj
cm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi41ODY5Y2RlYzAxNTdjMTg5ODExZDZkNzc2OThkMzBmNmExNzdiYTU5Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlv
ci11bnNjcm9sbGFibGUtaWZyYW1lLmh0bWwKQEAgLTAsMCArMSw5MiBAQAorPCFkb2N0eXBlIGh0
bWw+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+
PC9zY3JpcHQ+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vZHJhZnRzLmNzc3dnLm9y
Zy9jc3Mtb3ZlcnNjcm9sbC1iZWhhdmlvciI+Cis8c3R5bGU+CisgICAgLnNjcm9sbGluZyB7Cisg
ICAgICAgIG92ZXJmbG93OiBzY3JvbGw7CisgICAgfQorICAgIC5zY3JvbGxDb250ZW50IHsKKyAg
ICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgIH0KKyAgICAj
cm9vdCB7CisgICAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgICAgaGVpZ2h0OiAyMDBweDsKKyAg
ICB9CisgICAgI3Njcm9sbGVyIHsKKyAgICAgICAgd2lkdGg6IDIwMHB4OworICAgICAgICBoZWln
aHQ6IDIwMHB4OworICAgICAgICBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lOworICAgICAgICBv
dmVyZmxvdzogdmlzaWJsZTsKKyAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEz
NWRlZywgcmVkLCBibHVlKTsKKyAgICB9Cis8L3N0eWxlPgorPGRpdiBpZD0ncm9vdCcgY2xhc3M9
InNjcm9sbGluZyI+CisgICAgPGlmcmFtZSBpZD0nc2Nyb2xsZXInIHNyY2RvYz0iPGh0bWwgc3R5
bGU9J292ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmU7Jz48ZGl2IHN0eWxlPSd3aWR0aDogMTAwcHg7
IGhlaWdodDogMTAwcHg7Jz48L2Rpdj48L2h0bWw+CisgICAgICAgICI+PC9pZnJhbWU+CisgICAg
PGRpdiBjbGFzcz0ic2Nyb2xsQ29udGVudCI+PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4KK2Nv
bnN0IHJvb3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncm9vdCcpOworY29uc3Qgc2Nyb2xs
ZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2Nyb2xsZXInKTsKKworYXN5bmMgZnVuY3Rp
b24gcGVyZm9ybVdoZWVsU2Nyb2xsKHNjcm9sbGVyLCBkaXJlY3Rpb24pIHsKKyAgICB2YXIgZGVs
dGFYID0gMDsKKyAgICB2YXIgZGVsdGFZID0gMDsKKyAgICBpZiAoZGlyZWN0aW9uID09ICJkb3du
IikKKyAgICAgICAgZGVsdGFZID0gLTU7CisgICAgZWxzZSBpZiAoZGlyZWN0aW9uID09ICJ1cCIp
CisgICAgICAgIGRlbHRhWSA9IDU7CisgICAgZWxzZSBpZiAoZGlyZWN0aW9uID09ICJyaWdodCIp
CisgICAgICAgIGRlbHRhWCA9IC01OworICAgIGVsc2UgaWYgKGRpcmVjdGlvbiA9PSAibGVmdCIp
CisgICAgICAgIGRlbHRhWCA9IDU7CisKKyAgICB2YXIgeCA9IHNjcm9sbGVyLmNsaWVudFdpZHRo
IC8gMjsKKyAgICB2YXIgeSA9IHNjcm9sbGVyLmNsaWVudEhlaWdodCAvIDI7CisgICAgZXZlbnRT
ZW5kZXIuZHJhZ01vZGUgPSBmYWxzZTsKKyAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVu
dHMoKTsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZGVsdGFYLCBkZWx0YVks
ICdiZWdhbicsICdub25lJyk7CisgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGRlbHRhWCAqIDIsIGRlbHRhWSAqIDIsICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZGVsdGFYICogMywgZGVsdGFZICogMywgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAn
ZW5kZWQnLCAnbm9uZScpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkZWx0YVgsIGRlbHRhWSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZGVsdGFY
ICogMiwgZGVsdGFZICogMiwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZGVsdGFYICogMywgZGVsdGFZ
ICogMywgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgcmV0
dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4geworICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0
ZXJTY3JvbGxpbmdDb21wbGV0ZXMoKCkgPT4geworICAgICAgICAgICAgcmVzb2x2ZSgpOworICAg
ICAgICB9KTsKKyAgICB9KTsKK30KKworZnVuY3Rpb24gcmVzZXRUZXN0KCkgeworICAgIHJvb3Qu
c2Nyb2xsTGVmdCA9IDA7CisgICAgcm9vdC5zY3JvbGxUb3AgPSAwOworICAgIHJvb3Quc2Nyb2xs
VG8oMCwgMCk7Cit9CisKK2Z1bmN0aW9uIHN0YXJ0VGVzdCgpIHsKKyAgICAgICAgcHJvbWlzZV90
ZXN0KCgpID0+IHsKKyAgICAgICAgICAgIHJlc2V0VGVzdCgpOworICAgICAgICAgICAgcmV0dXJu
IHBlcmZvcm1XaGVlbFNjcm9sbChzY3JvbGxlciwgInJpZ2h0IikudGhlbigoKSA9PiB7CisgICAg
ICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbExlZnQgPiAwLCB0cnVlLCAnQ29u
dGludWUgdXAgdGhlIGhvcml6b250YWwgc2Nyb2xsIGNoYWluaW5nJyk7CisgICAgICAgICAgICB9
KTsKKyAgICAgICAgfSwgJ1Vuc2Nyb2xsYWJsZSBpZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVz
dCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuJyk7CisKKyAgICAgICAgcHJvbWlzZV90
ZXN0KCgpID0+IHsKKyAgICAgICAgICAgIHJlc2V0VGVzdCgpOworCisgICAgICAgICAgICByZXR1
cm4gcGVyZm9ybVdoZWVsU2Nyb2xsKHNjcm9sbGVyLCAiZG93biIpLnRoZW4oKCkgPT4geworICAg
ICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxUb3AgPiAwLCB0cnVlLCAnQ29u
dGludWUgdXAgdGhlIHZlcnRpY2FsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAgICAgICAgfSk7
CisgICAgICAgIH0sICdVbnNjcm9sbGFibGUgaWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdp
dGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4nKTsKK30KKworYWRkRXZlbnRMaXN0ZW5lcigi
bG9hZCIsIHN0YXJ0VGVzdCk7Cis8L3NjcmlwdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlv
bnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXgg
MTQ4Y2Q3ZDZkNzhkNjBjMDE2ZDM4MDI4ZjY5MzhmMGUwMGUwNDhkMC4uNzEwMWRkZjdlNjBiYmM5
N2NkY2E5ZGEwMzMzY2ZkY2I0MDBiNzQ2ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy13azEvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNDQ4LDYgKzQ0OCwxMCBAQCBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nvb2tpZXMvc2VjdXJlL3NldC1mcm9tLXdzLnN1Yi5odG1sIFsg
RmFpbHVyZSBdCiAjIFdlYktpdDEgZnJhbWVzIHVzZSBuYXRpdmUgc2Nyb2xsYmFycyBjYXVzaW5n
IHRoaXMgcmVmZXJlbmNlIHRlc3QgdG8gZmFpbC4KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL2Nzcy1zY3JvbGwtc25hcC9zY3JvbGwtdGFyZ2V0LXBhZGRpbmctMDAxLmh0bWwg
WyBJbWFnZU9ubHlGYWlsdXJlIF0KIAorIyBOZWVkIHRvIGZpbmQgYSB3YXkgdG8gYmxvY2sgdGhl
IGNyb3NzLWZyYW1lIHNjcm9sbCBjaGFpbmluZyBpbiBXSzEuCitmYXN0L3Njcm9sbGluZy9vdmVy
c2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS5odG1sIFsgU2tpcCBdCitmYXN0L3Njcm9sbGluZy9vdmVy
c2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUuaHRtbCBbIFNraXAgXQorCiAjIyMg
RU5EIE9GICgyKSBGYWlsdXJlcyB3aXRob3V0IGJ1ZyByZXBvcnRzCiAjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416747</attachid>
            <date>2020-12-24 04:38:16 -0800</date>
            <delta_ts>2020-12-24 08:28:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220139-20201224203815.patch</filename>
            <type>text/plain</type>
            <size>87314</size>
            <attacher name="cathiechen">cathiechen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxMDgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmY1ZTU2NzljMTQ4MDA0
MmY2ZTJiODhhNWQyMGZjOTNhMmFjMzFhNi4uMzhjYWVlY2EzNzNiZTE4NzYzYzNiMGIyYWZjNzg2
MmM5M2ZkY2NmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNiBAQAorMjAyMC0xMi0yNCAgQ2F0
aGllIENoZW4gIDxjYXRoaWVjaGVuQGlnYWxpYS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IENT
UyBvdmVyc2Nyb2xsLWJlaGF2aW9yIG9uIE1hYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwMTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQmFzZWQgb24gRnLDqWTDqXJpYyBXYW5nJ3MgcGF0Y2guCisK
KyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIG92ZXJzY3JvbGwtYmVoYXZpb3Ig
b24gTWFjLgorICAgICAgICBBY2NvcmRpbmcgdG8gWzFdLCB0aGVyZSBhcmUgdHdvIGtpbmRzIG9m
IGFjdGlvbnM6IG5vbi1sb2NhbCBib3VuZGFyeSBkZWZhdWx0IGFjdGlvbnMgYW5kIGxvY2FsIGJv
dW5kYXJ5IGRlZmF1bHQgYWN0aW9ucy4KKyAgICAgICAgSW4gV2ViS2l0IG1hYywgdGhlIHJ1YmJl
ciBiYW5kaW5nIGVmZm9ydCBpcyBiZWxvbmdlZCB0byBsb2NhbCBib3VuZGFyeSBkZWZhdWx0IGFj
dGlvbnMuIFRoZSBzY3JvbGwgY2hhaW5pbmcgYW5kIHN3aXBlCisgICAgICAgIGdlc3R1cmVzICh0
cmlnZ2VyIGdvIGJhY2sgb3IgZ28gZm9yd2FyZCBhY3Rpb25zKSBhcmUgYmVsb25nZWQgdG8gbm9u
LWxvY2FsIGJvdW5kYXJ5IGRlZmF1bHQgYWN0aW9ucy4KKyAgICAgICAgMS4gVG8gaGFuZGxlIHRo
ZSBydWJiZXIgYmFuZGluZyBlZmZlY3QsIHNob3VsZFN0b3BIb3Jpem9udGFsU3RyZWNoKCkgYW5k
IHNob3VsZFN0b3BWZXJ0aWNhbFN0cmVjaCgpIGFyZSBhZGRlZCB0byBkZWNpZGUKKyAgICAgICAg
d2hldGhlciB0aGUgcnViYmVyIGJhbmRpbmcgZWZmb3J0IGlzIGFsbG93ZWQgb3Igbm90LgorICAg
ICAgICAyLiBUbyBibG9jayBzY3JvbGwgY2hhaW5pbmcgYWN0aW9ucyBpbiBkaWZmZXJlbnQgc2Ny
b2xsIG1vZGVzLgorICAgICAgICAgIC0gRm9yIGFzeW5jaHJvbm91cyBzY3JvbGxpbmcsIGl0J3Mg
aGFuZGxlZCBpbiBTY3JvbGxpbmdUcmVlOjpoYW5kbGVXaGVlbEV2ZW50V2l0aE5vZGUoKSwgYWNj
b3JkaW5nIHRvIHRoZSB2YWx1ZSBvZgorICAgICAgICAgIG92ZXJzY3JvbGwtYmVoYXZpb3IsIGl0
IGJsb2NrcyB0aGUgc2Nyb2xsIGNoYWluaW5nIGlmIG5lZWRlZCwgdGhlIHJlc3VsdCB3b3VsZCBi
ZSBhZGRlZCB0byBtX2xhdGNoaW5nQ29udHJvbGxlcgorICAgICAgICAgIGFuZCBtaWdodCBiZSBy
ZXVzZWQuCisgICAgICAgICAgLSBGb3Igc3luY2hyb25vdXMgc2Nyb2xsaW5nLCBpZiBXSEVFTF9F
VkVOVF9MQVRDSElORyBpcyBkaXNhYmxlZCwgaXQgaGFuZGxlcyBvdmVyc2Nyb2xsLWJlaGF2aW9y
IGluIGhhbmRsZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94KCkuCisgICAgICAg
ICAgSWYgV0hFRUxfRVZFTlRfTEFUQ0hJTkcgaXMgZW5hYmxlZC4gT3ZlcnNjcm9sbC1iZWhhdmlv
ciBpcyBoYW5kbGVkIGluIGZpbmRFbmNsb3NpbmdTY3JvbGxhYmxlQ29udGFpbmVyKCkuCisgICAg
ICAgICAgSXQgYWRkZWQgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIHRvIEZyYW1lU3RhdGUgdG8gaW5k
aWNhdGUgd2hldGhlciB0aGUgY3VycmVudCBsYXRjaGVkIG5vZGUgc2hvdWxkIGJsb2NrIHNjcm9s
bCBjaGFpbmluZy4KKyAgICAgICAgICBJZiB0aGUgY3VycmVudCBmcmFtZSBpcyBhIHN1YmZyYW1l
LCBpdCBwYXNzZXMgaXRzIFNjcm9sbENoYWluaW5nQmxvY2tlciB0byB0aGUgcGFyZW50ZnJhbWUs
IGFuZCBldmVudHVhbGx5CisgICAgICAgICAgbGV0IHRoZSBtYWluZnJhbWUgZGVjaWRlIHdoZXRo
ZXIgc2hvdWxkIHRyaWdnZXIgc3dpcGUgZ2VzdHVyZXMgb3Igbm90LgorICAgICAgICAzLiBUaGUg
c3dpcGUgZ2VzdHVyZXMuCisgICAgICAgICAgSWYgdGhlIG1haW5mcmFtZSByZWFjaGVzIGl0cyBz
Y3JvbGwgZWRnZXMsIHRoZXJlIHdpbGwgYmUgc3dpcGUgZ2VzdHVyZXMgZXZlbiBpZiBvdmVyc2Ny
b2xsLWJlaGF2aW9yJ3MgdmFsdWUgaXMgbm9uZS4KKyAgICAgICAgICBUaGlzIGJlaGF2aW9yIGlz
IG5vdCBzdXBvb3J0ZWQgaW4gV0sxIGFuZCBXSzIncyBzeW5jaHJvbm91cyBzY3JvbGwgd2l0aCBX
SEVFTF9FVkVOVF9MQVRDSElORyBvZmYuCisKKyAgICAgICAgWzFdIGh0dHBzOi8vZHJhZnRzLmNz
c3dnLm9yZy9jc3Mtb3ZlcnNjcm9sbC0xLyNvdmVyc2Nyb2xsLWJlaGF2aW9yLXByb3BlcnRpZXMK
KworICAgICAgICBUZXN0czogZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVt
ZW50Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZp
b3ItaWZyYW1lLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwt
YmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9z
Y3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLmh0bWwKKwor
ICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
SGFuZGxlcjo6dXBkYXRlU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKTogVXBkYXRlZCB0aGUgdmFsdWUg
b2YgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIGZyb20gU2Nyb2xsYWJsZUFyZWEncyBvdmVyc2Nyb2xs
LWJlaGF2aW9yLgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpzaG91bGRCbG9ja1Nj
cm9sbENoYWluaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZVBhcmVudEZyYW1lU2Nyb2xs
Q2hhaW5pbmdCbG9ja2VyKTogQXBwbGllZCB0aGUgY3VycmVudCBmcmFtZSdzIG92ZXJzY3JvbGwt
YmVoYXZpb3IgdmFsdWUgdG8gU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyCisgICAgICAgIGFuZCBwYXNz
IHRoaXMgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIHRvIHBhcmVudCBmcmFtZS4KKyAgICAgICAgKFdl
YkNvcmU6OmFkanVzdERlbHRhcyk6CisgICAgICAgIChXZWJDb3JlOjppc1Nyb2xsQ2hhaW5pbmdT
dG9wcGVkQnlPdmVyc2Nyb2xsQmVoYXZpb3IpOiAKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFu
ZGxlcjo6aGFuZGxlV2hlZWxFdmVudEludGVybmFsKTogU3RvcCBoYW5kbGluZyB3aGVlbEV2ZW50
IGZvciBGcmFtZVZpZXcgaWYgaXNTcm9sbENoYWluaW5nU3RvcHBlZEJ5T3ZlcnNjcm9sbEJlaGF2
aW9yLgorICAgICAgICAoV2ViQ29yZTo6ZGlkU2Nyb2xsSW5TY3JvbGxhYmxlQXJlYSk6IEFkanVz
dCB3aGVlbEV2ZW50J3MgZGVsdGFzIGFjY29yZGluZyB0byB0aGUgdmFsdWUgb2YgU2Nyb2xsQ2hh
aW5pbmdCbG9ja2VyLgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVl
bEV2ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2luZ0JveCk6IEFkanVzdCBmaWx0ZXJlZFBsYXRmb3Jt
RGVsdGEgYWNjb3JkaW5nIHRvIG92ZXJzY3JvbGwtYmVoYXZpb3IncyB2YWx1ZSwKKyAgICAgICAg
YW5kIHN0b3Agc2Nyb2xsLWNoYWluaW5nIGlmIG5lY2Vzc2FyeSBmb3IgdGhlIHNjZW5hcmlvIG9m
IHN5bmNocm9ub3VzIHNjcm9sbCB3aXRoIFdIRUVMX0VWRU5UX0xBVENISU5HIGlzIG9mZi4KKyAg
ICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZGVmYXVsdFdoZWVsRXZlbnRIYW5kbGVyKTog
QWRqdXN0IGZpbHRlcmVkUGxhdGZvcm1EZWx0YSBhY2NvcmRpbmcgdG8gb3ZlcnNjcm9sbC1iZWhh
dmlvcidzIHZhbHVlLAorICAgICAgICBhbmQgcGFzcyBTY3JvbGxDaGFpbmluZ0Jsb2NrZXIgdG8g
cGFyZW50IGZyYW1lIGlmIG5lZWRlZC4KKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5oOgor
ICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmll
dzo6aG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvciBjb25zdCk6IFJldHVybnMgZG9jdW1lbnRF
bGVtZW50J3MgdmFsdWUgb2Ygb3ZlcnNjcm9sbC1iZWhhdmlvci14LgorICAgICAgICBJZiBkb2N1
bWVudEVsZW1lbnQgaXMgbm90IGEgc2Nyb2xsIGNvbnRhaW5lciwgcmV0dXJucyBPdmVyc2Nyb2xs
QmVoYXZpb3I6OkF1dG8uCisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnZlcnRpY2FsT3Zl
cnNjcm9sbEJlaGF2aW9yIGNvbnN0KTogRGl0dG8uCisgICAgICAgICogcGFnZS9GcmFtZVZpZXcu
aDoKKyAgICAgICAgKiBwYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW06CisgICAgICAgIChXZWJD
b3JlOjpmaW5kRW5jbG9zaW5nU2Nyb2xsYWJsZUNvbnRhaW5lcik6IEFwcGx5IG92ZXJzY3JvbGwt
YmVoYXZpb3IgdG8gU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIGFuZCBzdG9wIHRoZSBzY3JvbGwgY2hh
aW5pbmcgaWYgbmVlZGVkCisgICAgICAgIGZvciB0aGUgc2NlbmFyaW8gb2Ygc3luY2hyb25vdXMg
c2Nyb2xsIHdpdGggV0hFRUxfRVZFTlRfTEFUQ0hJTkcgaXMgb24uCisgICAgICAgIChXZWJDb3Jl
OjpFdmVudEhhbmRsZXI6OmRldGVybWluZVdoZWVsRXZlbnRUYXJnZXQpOiBTdG9yZXMgU2Nyb2xs
Q2hhaW5pbmdCbG9ja2VyIGluIHNjcm9sbExhdGNoaW5nQ29udHJvbGxlcgorICAgICAgICAqIHBh
Z2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0U2Nyb2xsaW5nTm9kZVNjcm9sbGFi
bGVBcmVhR2VvbWV0cnkpOiBVcGRhdGUgb3ZlcnNjcm9sbC1iZWhhdmlvciB2YWx1ZXMgaW4gc2Ny
b2xsUGFyYW1ldGVycy4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxMYXRjaGluZ0Nv
bnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVy
Ojp1cGRhdGVBbmRGZXRjaExhdGNoaW5nU3RhdGVGb3JGcmFtZSk6IEFkZCBTY3JvbGxDaGFpbmlu
Z0Jsb2NrZXIgdG8gRnJhbWVTdGF0ZS4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbExhdGNoaW5n
Q29udHJvbGxlcjo6Z2V0U2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIGNvbnN0KTogUmV0dXJucyBTY3Jv
bGxDaGFpbmluZ0Jsb2NrZXIgb2YgZnJhbWUuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxMYXRj
aGluZ0NvbnRyb2xsZXI6OnVwZGF0ZVNjcm9sbENoYWluaW5nQmxvY2tlcik6IFVwZGF0ZXMgU2Ny
b2xsQ2hhaW5pbmdCbG9ja2VyIG9mIGZyYW1lLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsTGF0
Y2hpbmdDb250cm9sbGVyOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9T
Y3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdDb29yZGluYXRvclR5cGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJl
YVBhcmFtZXRlcnM6Om9wZXJhdG9yPT0gY29uc3QpOiBBZGRlZCBob3Jpem9udGFsT3ZlcnNjcm9s
bEJlaGF2aW9yIGFuZCB2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvci4KKyAgICAgICAgKiBwYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z1RyZWU6OmhhbmRsZVdoZWVsRXZlbnRXaXRoTm9kZSk6IFVwZGF0ZSBTY3JvbGxDaGFpbmluZ0Js
b2NrZXIgYWNjb3JkaW5nIHRvIHRoZSBvdmVyc2Nyb2xsLWJlaGF2aW9yIHZhbHVlcywKKyAgICAg
ICAgc3RvcCB0aGUgc2Nyb2xsIGNoYWluaW5nIGlmIG5lZWRlZCwgYW5kIGlmIGl0J3MgaG9yaXpv
bnRhbCBzY3JvbGwgYW5kIHdpbGxXaGVlbEV2ZW50U3RhcnRTd2lwZUdlc3R1cmUsIGxldCBpdCB0
cmlnZ2VyIHN3aXBlIGdlc3R1cmUuCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGU6Omhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IgY29uc3QpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjp2ZXJ0aWNhbE92
ZXJzY3JvbGxCZWhhdmlvciBjb25zdCk6IERpdHRvLgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmg6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcv
bWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMuaDoKKyAgICAgICAgKiBw
YWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVN
YWM6OmFsbG93c0hvcml6b250YWxTdHJldGNoaW5nIGNvbnN0KTogSWYgb3ZlcnNjcm9sbC1iZWhh
dmlvci14OiBub25lLCB0aGUgc2Nyb2xsIHN0cmV0Y2ggc2hvdWxkIGJlIGJsb2NrZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjphbGxv
d3NWZXJ0aWNhbFN0cmV0Y2hpbmcgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OnNob3VsZFN0b3BIb3Jpem9udGFs
U3RyZWNoIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZURlbGVnYXRlTWFjOjpzaG91bGRTdG9wVmVydGljYWxTdHJlY2ggY29uc3QpOiBE
aXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtV2hlZWxFdmVudDo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVy
dGljYWwpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFR5cGVzLmg6CisgICAgICAgICogcGxh
dGZvcm0vU2Nyb2xsYWJsZUFyZWEuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGFibGVBcmVh
Ojpob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGFibGVBcmVhOjp2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvciBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5oOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsQ29udHJvbGxlckNsaWVudDo6c2hvdWxkU3RvcEhvcml6b250YWxTdHJlY2ggY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQ29udHJvbGxlckNsaWVudDo6c2hvdWxkU3Rv
cFZlcnRpY2FsU3RyZWNoIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TY3JvbGxD
b250cm9sbGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQ29udHJvbGxlcjo6aGFuZGxl
V2hlZWxFdmVudCk6IFN0b3Agc2Nyb2xsIHN0cmVjaGluZyBpZiBuZWVkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxDb250cm9sbGVyOjpkaXJlY3Rpb25Gcm9tRXZlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsQ29udHJvbGxlcjo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGlj
YWwpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5o
OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTWFjOjpzaG91bGRTdG9wSG9yaXpvbnRhbFN0cmVjaCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck1hYzo6c2hvdWxkU3RvcFZl
cnRpY2FsU3RyZWNoIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6Omhvcml6b250YWxPdmVyc2Nyb2xsQmVo
YXZpb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnZlcnRpY2FsT3Zl
cnNjcm9sbEJlaGF2aW9yIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
aDoKKwogMjAyMC0xMi0yMyAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4K
IAogICAgICAgICBDbGVhbiB1cCBzb21lIGNvZGUgcmVsYXRlZCB0byBzY3JvbGwgcGlubmluZwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCA3ZDM1YzVhZTEzMTc0ZTMzMjBjMDRmY2FiYTYzNzdiNjJmZGU5NGFjLi44ZTdl
YjA4MDg1OTRhNmFhNTdiZmQ1MWJhYjI3Mzc1NDhlNDAxNGFlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE5IEBACisyMDIwLTEyLTI0ICBDYXRoaWUgQ2hlbiAgPGNhdGhpZWNoZW5AaWdhbGlhLmNvbT4K
KworICAgICAgICBJbXBsZW1lbnQgQ1NTIG92ZXJzY3JvbGwtYmVoYXZpb3Igb24gTWFjCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjAxMzkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCYXNlZCBvbiBGcsOp
ZMOpcmljIFdhbmcncyBwYXRjaC4KKworICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFNjcm9sbGFibGVBcmVhUGFy
YW1ldGVycz46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8U2Nyb2xsYWJs
ZUFyZWFQYXJhbWV0ZXJzPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmg6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUzo6Y29tbWl0U3RhdGVBZnRlckNo
aWxkcmVuKToKKwogMjAyMC0xMi0yMyAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNv
bT4KIAogICAgICAgICBbR1BVIFByb2Nlc3NdOiBEb24ndCBjYWxsIGZsdXNoRHJhd2luZ0NvbnRl
eHQoKSBpbiB0aGUgbWlkZGxlIG9mIHJlY29yZGluZyBkcmF3aW5nIGNvbW1hbmRzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggZTEwYjRkYjAzMTA2ZTY4ZjU0MTIzYmNlODY2YWU2YjQz
MDkzM2JlOC4uYWFmNDk1N2Y1YTA5ZTcyZTg2OTllY2Y5MDQ5NzE1YzVjYTAyM2IwYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIwLTEyLTI0ICBDYXRo
aWUgQ2hlbiAgPGNhdGhpZWNoZW5AaWdhbGlhLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgQ1NT
IG92ZXJzY3JvbGwtYmVoYXZpb3Igb24gTWFjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjAxMzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBCYXNlZCBvbiBGcsOpZMOpcmljIFdhbmcncyBwYXRjaC4KKwor
ICAgICAgICBOZWVkIHRvIGZpbmQgYSB3YXkgdG8gYmxvY2sgdGhlIGNyb3NzLWZyYW1lIHNjcm9s
bCBjaGFpbmluZyBpbiBXSzEuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgor
ICAgICAgICAoLVtXZWJIVE1MVmlldyBzY3JvbGxXaGVlbDpdKToKKwogMjAyMC0xMi0xOSAgUm9i
IEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIE1vdmUgRnJhbWVMb2FkZXI6OmFy
ZVBsdWdpbnNFbmFibGVkIHRvIEZyYW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAK
aW5kZXggYzgyZmY3YzVkM2Y2YmM4ODQ1ODI5NGJmZjFiNzAwYTMxZTBiZmExZS4uYjFhMmNmYjEy
NmU0NzhhYjg2MzA2MzAyMWIxMTdjNGE2NjEwMmE3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmNwcApAQCAtMjgyNyw2ICsyODI3LDk3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5k
bGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgT3B0aW9u
CiAgICAgcmV0dXJuIGhhbmRsZWQ7CiB9CiAKK3ZvaWQgRXZlbnRIYW5kbGVyOjp1cGRhdGVTY3Jv
bGxDaGFpbmluZ0Jsb2NrZXIoU2Nyb2xsYWJsZUFyZWEqIHNjcm9sbGFibGVBcmVhLCBTY3JvbGxD
aGFpbmluZ0Jsb2NrZXImIHNjcm9sbENoYWluaW5nQmxvY2tlcikKK3sKKyAgICBpZiAoIXNjcm9s
bGFibGVBcmVhKQorICAgICAgICByZXR1cm47CisgICAgc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLmJs
b2NrWCB8PSBzY3JvbGxhYmxlQXJlYS0+aG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpICE9
IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0bzsKKyAgICBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIuYmxv
Y2tZIHw9IHNjcm9sbGFibGVBcmVhLT52ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpICE9IE92
ZXJzY3JvbGxCZWhhdmlvcjo6QXV0bzsKK30KKworYm9vbCBFdmVudEhhbmRsZXI6OnNob3VsZEJs
b2NrU2Nyb2xsQ2hhaW5pbmcoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBj
b25zdCBTY3JvbGxDaGFpbmluZ0Jsb2NrZXImIHNjcm9sbENoYWluaW5nQmxvY2tlcikKK3sKKyAg
ICBhdXRvIGJpYXNlZERlbHRhID0gUGxhdGZvcm1XaGVlbEV2ZW50Ojp3aGVlbERlbHRhQmlhc2lu
Z1Rvd2FyZHNWZXJ0aWNhbCh3aGVlbEV2ZW50LmRlbHRhKCkpOworICAgIGlmICgoc2Nyb2xsQ2hh
aW5pbmdCbG9ja2VyLmJsb2NrWCAmJiBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIuYmxvY2tZKQorICAg
ICAgICB8fCAoc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLmJsb2NrWCAmJiAhYmlhc2VkRGVsdGEuaGVp
Z2h0KCkpCisgICAgICAgIHx8IChzY3JvbGxDaGFpbmluZ0Jsb2NrZXIuYmxvY2tZICYmICFiaWFz
ZWREZWx0YS53aWR0aCgpKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGZhbHNl
OworfQorCisjaWYgRU5BQkxFKFdIRUVMX0VWRU5UX0xBVENISU5HKQorc3RhdGljIHZvaWQgdXBk
YXRlUGFyZW50RnJhbWVTY3JvbGxDaGFpbmluZ0Jsb2NrZXIoU2Nyb2xsYWJsZUFyZWEqIHNjcm9s
bGFibGVBcmVhLCBGcmFtZSYgZnJhbWUsIFNjcm9sbENoYWluaW5nQmxvY2tlciYgc2Nyb2xsQ2hh
aW5pbmdCbG9ja2VyKQoreworICAgIGF1dG8qIHBhcmVudCA9IGZyYW1lLnRyZWUoKS5wYXJlbnQo
KTsKKyAgICBpZiAoIXNjcm9sbGFibGVBcmVhKQorICAgICAgICBzY3JvbGxhYmxlQXJlYSA9IGZy
YW1lLnZpZXcoKTsKKyAgICBpZiAoIWZyYW1lLnBhZ2UoKSB8fCAhcGFyZW50IHx8ICFzY3JvbGxh
YmxlQXJlYSkKKyAgICAgICAgcmV0dXJuOworICAgIEV2ZW50SGFuZGxlcjo6dXBkYXRlU2Nyb2xs
Q2hhaW5pbmdCbG9ja2VyKHNjcm9sbGFibGVBcmVhLCBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIpOwor
ICAgIGZyYW1lLnBhZ2UoKS0+c2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyKCkudXBkYXRlU2Nyb2xs
Q2hhaW5pbmdCbG9ja2VyKCpwYXJlbnQsIHNjcm9sbENoYWluaW5nQmxvY2tlcik7Cit9CisjZW5k
aWYKKworc3RhdGljIHZvaWQgYWRqdXN0RGVsdGFzKGNvbnN0IFNjcm9sbENoYWluaW5nQmxvY2tl
ciYgc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLCBGbG9hdFNpemUmIGZpbHRlcmVkUGxhdGZvcm1EZWx0
YSkKK3sKKyAgICAvLyBJZiB3aGVlbEV2ZW50IGlzIGJpYXMgdG8gaG9yaXpvbnRhbCwgZGVsdGFZ
IHNob3VsZCBiZSB6ZXJvIHRvbywgb3RoZXJ3aXNlIGl0IHdpbGwgcGVyZm9ybSB2ZXJ0aWNhbCBz
Y3JvbGwuCisgICAgLy8gVmljZSB2ZXJzYS4KKyAgICBhdXRvIGJpYXNlZERlbHRhID0gUGxhdGZv
cm1XaGVlbEV2ZW50Ojp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbChmaWx0ZXJlZFBs
YXRmb3JtRGVsdGEpOworICAgIGlmIChzY3JvbGxDaGFpbmluZ0Jsb2NrZXIuYmxvY2tYKSB7Cisg
ICAgICAgIGZpbHRlcmVkUGxhdGZvcm1EZWx0YS5zZXRXaWR0aCgwKTsKKyAgICAgICAgaWYgKCFi
aWFzZWREZWx0YS5oZWlnaHQoKSkKKyAgICAgICAgICAgIGZpbHRlcmVkUGxhdGZvcm1EZWx0YS5z
ZXRIZWlnaHQoMCk7CisgICAgfQorICAgIGlmIChzY3JvbGxDaGFpbmluZ0Jsb2NrZXIuYmxvY2tZ
KSB7CisgICAgICAgIGZpbHRlcmVkUGxhdGZvcm1EZWx0YS5zZXRIZWlnaHQoMCk7CisgICAgICAg
IGlmICghYmlhc2VkRGVsdGEud2lkdGgoKSkKKyAgICAgICAgICAgIGZpbHRlcmVkUGxhdGZvcm1E
ZWx0YS5zZXRXaWR0aCgwKTsKKyAgICB9Cit9CisKK3N0YXRpYyBib29sIGlzU3JvbGxDaGFpbmlu
Z1N0b3BwZWRCeU92ZXJzY3JvbGxCZWhhdmlvcihXZWFrUHRyPFNjcm9sbGFibGVBcmVhPiBzY3Jv
bGxhYmxlQXJlYSwgRnJhbWUmIGZyYW1lLCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQs
IFNjcm9sbENoYWluaW5nQmxvY2tlciBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIsIGJvb2wmIGhhbmRs
ZWRFdmVudCkKK3sKKyNpZiBFTkFCTEUoV0hFRUxfRVZFTlRfTEFUQ0hJTkcpCisgICAgaWYgKCFz
Y3JvbGxhYmxlQXJlYSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgRmxvYXRTaXplIGZp
bHRlcmVkUGxhdGZvcm1EZWx0YSh3aGVlbEV2ZW50LmRlbHRhWCgpLCB3aGVlbEV2ZW50LmRlbHRh
WSgpKTsKKyAgICBpZiAoc2Nyb2xsYWJsZUFyZWEgIT0gZnJhbWUudmlldygpKSB7CisgICAgICAg
IC8vIFdoZWVsIGV2ZW50IGlzIGdvaW5nIHRvIGJlIGhhbmRsZWQgYnkgRnJhbWVWaWV3IGluIHBy
b2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKCksCisgICAgICAgIC8vIHNob3VsZCBsZXQgc2Ny
b2xsYWJsZUFyZWEncyBvdmVyc2Nyb2xsLWJlaGF2aW9yIGVmZmVjdCBTY3JvbGxDaGFpbmluZ0Js
b2NrZXIuCisgICAgICAgIEV2ZW50SGFuZGxlcjo6dXBkYXRlU2Nyb2xsQ2hhaW5pbmdCbG9ja2Vy
KHNjcm9sbGFibGVBcmVhLmdldCgpLCBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIpOworICAgIH0KKwor
ICAgIGF1dG8gYmlhc2VkRGVsdGEgPSBQbGF0Zm9ybVdoZWVsRXZlbnQ6OndoZWVsRGVsdGFCaWFz
aW5nVG93YXJkc1ZlcnRpY2FsKHdoZWVsRXZlbnQuZGVsdGEoKSk7CisgICAgaWYgKHNjcm9sbENo
YWluaW5nQmxvY2tlci5ibG9ja1ggJiYgIWJpYXNlZERlbHRhLmhlaWdodCgpKSB7CisgICAgICAg
IC8vIElmIHRoZSBob3Jpem9udGFsIHNjcm9sbCBjaGFpbmluZyBpcyBibG9ja2VkIGJ5IG92ZXJz
Y3JvbGwtYmVoYXZpb3IgaW4gYSBzdWJmcmFtZS4KKyAgICAgICAgLy8gSXQgcHJvcGFnYXRlcyBp
dHMgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIHRvIHBhcmVudCBmcmFtZXMgYW5kIGV2ZW50dWFsbHkg
bGV0IG1haW5mcmFtZQorICAgICAgICAvLyBkZWNpZGUgd2hldGhlciBuZWVkIHRvIHRyaWdnZXIg
YSBzd2lwZSBnZXN0dXJlIG9yIG5vdC4KKyAgICAgICAgaWYgKGZyYW1lLmlzTWFpbkZyYW1lKCkp
IHsKKyAgICAgICAgICAgIGhhbmRsZWRFdmVudCA9IHRydWU7CisgICAgICAgICAgICAvLyBJbiBt
YWluIGZyYW1lLCBpZiB0aGUgc2Nyb2xsIHBvc2l0aW9uIHJlYWNoZXMgb3QgaXRzIGVkZ2VzLCB0
cmlnZ2VyIHRoZSBzd2lwZSBnZXN0dXJlLCBvdGhlcndpc2Ugbm90LgorICAgICAgICAgICAgYXV0
byBwb3NpdGlvblggPSBzY3JvbGxhYmxlQXJlYS0+c2Nyb2xsUG9zaXRpb24oKS54KCk7CisgICAg
ICAgICAgICBpZiAoKHBvc2l0aW9uWCA8PSBzY3JvbGxhYmxlQXJlYS0+bWluaW11bVNjcm9sbFBv
c2l0aW9uKCkueCgpICYmIGZpbHRlcmVkUGxhdGZvcm1EZWx0YS53aWR0aCgpID4gMCkKKyAgICAg
ICAgICAgICAgICB8fCAocG9zaXRpb25YID49IHNjcm9sbGFibGVBcmVhLT5tYXhpbXVtU2Nyb2xs
UG9zaXRpb24oKS54KCkgJiYgZmlsdGVyZWRQbGF0Zm9ybURlbHRhLndpZHRoKCkgPCAwKSkKKyAg
ICAgICAgICAgICAgICBoYW5kbGVkRXZlbnQgPSBmYWxzZTsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIHVwZGF0ZVBhcmVudEZyYW1lU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKHNjcm9sbGFi
bGVBcmVhLmdldCgpLCBmcmFtZSwgc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKTsKKyAgICAgICAgICAg
IGhhbmRsZWRFdmVudCA9IGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKworICAgIGlmIChFdmVudEhhbmRsZXI6OnNob3VsZEJsb2NrU2Nyb2xsQ2hhaW5pbmco
d2hlZWxFdmVudCwgc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKSkgeworICAgICAgICBoYW5kbGVkRXZl
bnQgPSB0cnVlOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBhZGp1c3REZWx0
YXMoc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLCBmaWx0ZXJlZFBsYXRmb3JtRGVsdGEpOworICAgIHdo
ZWVsRXZlbnQgPSB3aGVlbEV2ZW50LmNvcHlXaXRoRGVsdGFzQW5kVmVsb2NpdHkoZmlsdGVyZWRQ
bGF0Zm9ybURlbHRhLndpZHRoKCksIGZpbHRlcmVkUGxhdGZvcm1EZWx0YS5oZWlnaHQoKSwgd2hl
ZWxFdmVudC5zY3JvbGxpbmdWZWxvY2l0eSgpKTsKKyNlbmRpZgorICAgIHJldHVybiBmYWxzZTsK
K30KKwogYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnRJbnRlcm5hbChjb25zdCBQ
bGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50LCBPcHRpb25TZXQ8V2hlZWxFdmVudFByb2Nlc3NpbmdT
dGVwcz4gcHJvY2Vzc2luZ1N0ZXBzLCBPcHRpb25TZXQ8RXZlbnRIYW5kbGluZz4mIGhhbmRsaW5n
KQogewogICAgIGF1dG8qIGRvY3VtZW50ID0gbV9mcmFtZS5kb2N1bWVudCgpOwpAQCAtMjkxOSwx
MiArMzAxMCwyNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudEludGVybmFs
KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgZXZlbnQsIE9wdAogI2lmIEVOQUJMRShXSEVFTF9F
VkVOVF9MQVRDSElORykKICAgICBpZiAoYWxsb3dTY3JvbGxpbmcpCiAgICAgICAgIGFsbG93U2Ny
b2xsaW5nID0gbV9mcmFtZS5wYWdlKCktPnNjcm9sbExhdGNoaW5nQ29udHJvbGxlcigpLmxhdGNo
aW5nQWxsb3dzU2Nyb2xsaW5nSW5GcmFtZShtX2ZyYW1lLCBzY3JvbGxhYmxlQXJlYSk7CisgICAg
U2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIHNjcm9sbENoYWluaW5nQmxvY2tlciA9IG1fZnJhbWUucGFn
ZSgpLT5zY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIoKS5nZXRTY3JvbGxDaGFpbmluZ0Jsb2NrZXIo
bV9mcmFtZSk7CiAjZW5kaWYKIAogICAgIGlmIChhbGxvd1Njcm9sbGluZykgewotICAgICAgICAv
LyBGSVhNRTogcHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxpbmcoKSBpcyBvbmx5IGNhbGxlZCBm
b3IgRnJhbWVWaWV3IHNjcm9sbGluZywgbm90IG92ZXJmbG93IHNjcm9sbGluZywgd2hpY2ggaXMg
Y29uZnVzaW5nLgotICAgICAgICBoYW5kbGVkRXZlbnQgPSBwcm9jZXNzV2hlZWxFdmVudEZvclNj
cm9sbGluZyhldmVudCwgc2Nyb2xsYWJsZUFyZWEsIGhhbmRsaW5nKTsKLSAgICAgICAgcHJvY2Vz
c1doZWVsRXZlbnRGb3JTY3JvbGxTbmFwKGV2ZW50LCBzY3JvbGxhYmxlQXJlYSk7CisgICAgICAg
IFBsYXRmb3JtV2hlZWxFdmVudCBhZGp1c3RlZFdoZWVsRXZlbnQgPSBQbGF0Zm9ybVdoZWVsRXZl
bnQoZXZlbnQpOworICAgICAgICBpZiAoIWlzU3JvbGxDaGFpbmluZ1N0b3BwZWRCeU92ZXJzY3Jv
bGxCZWhhdmlvcihzY3JvbGxhYmxlQXJlYSwgbV9mcmFtZSwgYWRqdXN0ZWRXaGVlbEV2ZW50LCBz
Y3JvbGxDaGFpbmluZ0Jsb2NrZXIsIGhhbmRsZWRFdmVudCkpIHsKKyAgICAgICAgICAgIC8vIEZJ
WE1FOiBwcm9jZXNzV2hlZWxFdmVudEZvclNjcm9sbGluZygpIGlzIG9ubHkgY2FsbGVkIGZvciBG
cmFtZVZpZXcgc2Nyb2xsaW5nLCBub3Qgb3ZlcmZsb3cgc2Nyb2xsaW5nLCB3aGljaCBpcyBjb25m
dXNpbmcuCisgICAgICAgICAgICBoYW5kbGVkRXZlbnQgPSBwcm9jZXNzV2hlZWxFdmVudEZvclNj
cm9sbGluZyhhZGp1c3RlZFdoZWVsRXZlbnQsIHNjcm9sbGFibGVBcmVhLCBoYW5kbGluZyk7Cisg
ICAgICAgICAgICBwcm9jZXNzV2hlZWxFdmVudEZvclNjcm9sbFNuYXAoYWRqdXN0ZWRXaGVlbEV2
ZW50LCBzY3JvbGxhYmxlQXJlYSk7CisjaWYgIUVOQUJMRShXSEVFTF9FVkVOVF9MQVRDSElORykK
KyAgICAgICAgICAgIGlmICghaGFuZGxlZEV2ZW50ICYmIG1fZnJhbWUudmlldygpKSB7CisgICAg
ICAgICAgICAgICAgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIHNjcm9sbENoYWluaW5nQmxvY2tlciA9
IHsgbV9mcmFtZS52aWV3KCktPmhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSAhPSBPdmVy
c2Nyb2xsQmVoYXZpb3I6OkF1dG8sIG1fZnJhbWUudmlldygpLT52ZXJ0aWNhbE92ZXJzY3JvbGxC
ZWhhdmlvcigpICE9IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0byB9OworICAgICAgICAgICAgICAg
IGlmIChzaG91bGRCbG9ja1Njcm9sbENoYWluaW5nKGFkanVzdGVkV2hlZWxFdmVudCwgc2Nyb2xs
Q2hhaW5pbmdCbG9ja2VyKSkKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlZEV2ZW50ID0gdHJ1
ZTsKKyAgICAgICAgICAgIH0KKyNlbmRpZgorICAgICAgICB9CisgICAgfSBlbHNlIGlmICghbV9m
cmFtZS5pc01haW5GcmFtZSgpKSB7CisjaWYgRU5BQkxFKFdIRUVMX0VWRU5UX0xBVENISU5HKQor
ICAgICAgICB1cGRhdGVQYXJlbnRGcmFtZVNjcm9sbENoYWluaW5nQmxvY2tlcihzY3JvbGxhYmxl
QXJlYS5nZXQoKSwgbV9mcmFtZSwgc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKTsKKyNlbmRpZgogICAg
IH0KIAogICAgIHJldHVybiBoYW5kbGVkRXZlbnQ7CkBAIC0yOTQxLDIwICszMDQ3LDIyIEBAIHN0
YXRpYyB2b2lkIGhhbmRsZVdoZWVsRXZlbnRQaGFzZUluU2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJs
ZUFyZWEmIHNjcm9sbGFibGVBcmVhCiAjZW5kaWYKIH0KIAotc3RhdGljIGJvb2wgZGlkU2Nyb2xs
SW5TY3JvbGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEsIGNvbnN0IFdo
ZWVsRXZlbnQmIHdoZWVsRXZlbnQpCitzdGF0aWMgYm9vbCBkaWRTY3JvbGxJblNjcm9sbGFibGVB
cmVhKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSwgY29uc3QgV2hlZWxFdmVudCYgd2hl
ZWxFdmVudCwgY29uc3QgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyJiBzY3JvbGxDaGFpbmluZ0Jsb2Nr
ZXIpCiB7CisgICAgRmxvYXRTaXplIGZpbHRlcmVkUGxhdGZvcm1EZWx0YSh3aGVlbEV2ZW50LmRl
bHRhWCgpLCB3aGVlbEV2ZW50LmRlbHRhWSgpKTsKKyAgICBhZGp1c3REZWx0YXMoc2Nyb2xsQ2hh
aW5pbmdCbG9ja2VyLCBmaWx0ZXJlZFBsYXRmb3JtRGVsdGEpOwogICAgIFNjcm9sbEdyYW51bGFy
aXR5IHNjcm9sbEdyYW51bGFyaXR5ID0gd2hlZWxHcmFudWxhcml0eVRvU2Nyb2xsR3JhbnVsYXJp
dHkod2hlZWxFdmVudC5kZWx0YU1vZGUoKSk7CiAgICAgYm9vbCBkaWRIYW5kbGVXaGVlbEV2ZW50
ID0gZmFsc2U7Ci0gICAgaWYgKGZsb2F0IGFic29sdXRlRGVsdGEgPSBzdGQ6OmFicyh3aGVlbEV2
ZW50LmRlbHRhWCgpKSkKLSAgICAgICAgZGlkSGFuZGxlV2hlZWxFdmVudCB8PSBzY3JvbGxhYmxl
QXJlYS5zY3JvbGwod2hlZWxFdmVudC5kZWx0YVgoKSA+IDAgPyBTY3JvbGxSaWdodCA6IFNjcm9s
bExlZnQsIHNjcm9sbEdyYW51bGFyaXR5LCBhYnNvbHV0ZURlbHRhKTsKKyAgICBpZiAoZmxvYXQg
YWJzb2x1dGVEZWx0YSA9IHN0ZDo6YWJzKGZpbHRlcmVkUGxhdGZvcm1EZWx0YS53aWR0aCgpKSkK
KyAgICAgICAgZGlkSGFuZGxlV2hlZWxFdmVudCB8PSBzY3JvbGxhYmxlQXJlYS5zY3JvbGwoZmls
dGVyZWRQbGF0Zm9ybURlbHRhLndpZHRoKCkgPiAwID8gU2Nyb2xsUmlnaHQgOiBTY3JvbGxMZWZ0
LCBzY3JvbGxHcmFudWxhcml0eSwgYWJzb2x1dGVEZWx0YSk7CiAKLSAgICBpZiAoZmxvYXQgYWJz
b2x1dGVEZWx0YSA9IHN0ZDo6YWJzKHdoZWVsRXZlbnQuZGVsdGFZKCkpKQotICAgICAgICBkaWRI
YW5kbGVXaGVlbEV2ZW50IHw9IHNjcm9sbGFibGVBcmVhLnNjcm9sbCh3aGVlbEV2ZW50LmRlbHRh
WSgpID4gMCA/IFNjcm9sbERvd24gOiBTY3JvbGxVcCwgc2Nyb2xsR3JhbnVsYXJpdHksIGFic29s
dXRlRGVsdGEpOworICAgIGlmIChmbG9hdCBhYnNvbHV0ZURlbHRhID0gc3RkOjphYnMoZmlsdGVy
ZWRQbGF0Zm9ybURlbHRhLmhlaWdodCgpKSkKKyAgICAgICAgZGlkSGFuZGxlV2hlZWxFdmVudCB8
PSBzY3JvbGxhYmxlQXJlYS5zY3JvbGwoZmlsdGVyZWRQbGF0Zm9ybURlbHRhLmhlaWdodCgpID4g
MCA/IFNjcm9sbERvd24gOiBTY3JvbGxVcCwgc2Nyb2xsR3JhbnVsYXJpdHksIGFic29sdXRlRGVs
dGEpOwogCiAgICAgcmV0dXJuIGRpZEhhbmRsZVdoZWVsRXZlbnQ7CiB9CiAKLWJvb2wgRXZlbnRI
YW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2luZ0JveChOb2RlKiBz
dGFydE5vZGUsIGNvbnN0IFdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIGNvbnN0IEZsb2F0U2l6ZSYg
ZmlsdGVyZWRQbGF0Zm9ybURlbHRhLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlcmVkVmVsb2NpdHks
IE9wdGlvblNldDxFdmVudEhhbmRsaW5nPiBldmVudEhhbmRsaW5nKQorYm9vbCBFdmVudEhhbmRs
ZXI6OmhhbmRsZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94KE5vZGUqIHN0YXJ0
Tm9kZSwgY29uc3QgV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgRmxvYXRTaXplJiBmaWx0ZXJlZFBs
YXRmb3JtRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyZWRWZWxvY2l0eSwgT3B0aW9uU2V0
PEV2ZW50SGFuZGxpbmc+IGV2ZW50SGFuZGxpbmcpCiB7CiAgICAgYm9vbCBzaG91bGRIYW5kbGVF
dmVudCA9IHdoZWVsRXZlbnQuZGVsdGFYKCkgfHwgd2hlZWxFdmVudC5kZWx0YVkoKTsKICNpZiBF
TkFCTEUoV0hFRUxfRVZFTlRfTEFUQ0hJTkcpCkBAIC0yOTc1LDIyICszMDgzLDMzIEBAIGJvb2wg
RXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2luZ0JveChO
b2RlKiBzdGFydE5vZGUsIGNvCiAgICAgaWYgKCFzaG91bGRIYW5kbGVFdmVudCkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCisgICAgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIHNjcm9sbENoYWluaW5n
QmxvY2tlciA9IHsgZmFsc2UsIGZhbHNlIH07CiAgICAgaWYgKGlzPFJlbmRlckxpc3RCb3g+KGlu
aXRpYWxFbmNsb3NpbmdCb3gpKQotICAgICAgICByZXR1cm4gZGlkU2Nyb2xsSW5TY3JvbGxhYmxl
QXJlYShkb3duY2FzdDxSZW5kZXJMaXN0Qm94Pihpbml0aWFsRW5jbG9zaW5nQm94KSwgd2hlZWxF
dmVudCk7CisgICAgICAgIHJldHVybiBkaWRTY3JvbGxJblNjcm9sbGFibGVBcmVhKGRvd25jYXN0
PFJlbmRlckxpc3RCb3g+KGluaXRpYWxFbmNsb3NpbmdCb3gpLCB3aGVlbEV2ZW50LCBzY3JvbGxD
aGFpbmluZ0Jsb2NrZXIpOwogCisgICAgYXV0byBiaWFzZWREZWx0YSA9IFBsYXRmb3JtV2hlZWxF
dmVudDo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoRmxvYXRTaXplKHdoZWVsRXZl
bnQuZGVsdGFYKCksIHdoZWVsRXZlbnQuZGVsdGFZKCkpKTsKICAgICBSZW5kZXJCb3gqIGN1cnJl
bnRFbmNsb3NpbmdCb3ggPSAmaW5pdGlhbEVuY2xvc2luZ0JveDsKICAgICB3aGlsZSAoY3VycmVu
dEVuY2xvc2luZ0JveCkgewogICAgICAgICBpZiAoUmVuZGVyTGF5ZXIqIGJveExheWVyID0gY3Vy
cmVudEVuY2xvc2luZ0JveC0+bGF5ZXIoKSkgewogICAgICAgICAgICAgYXV0byBwbGF0Zm9ybUV2
ZW50ID0gd2hlZWxFdmVudC51bmRlcmx5aW5nUGxhdGZvcm1FdmVudCgpOwogICAgICAgICAgICAg
Ym9vbCBzY3JvbGxpbmdXYXNIYW5kbGVkOwogICAgICAgICAgICAgaWYgKHBsYXRmb3JtRXZlbnQp
IHsKKyAgICAgICAgICAgICAgICBhZGp1c3REZWx0YXMoc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLCBm
aWx0ZXJlZFBsYXRmb3JtRGVsdGEpOwogICAgICAgICAgICAgICAgIGF1dG8gY29waWVkRXZlbnQg
PSBwbGF0Zm9ybUV2ZW50LT5jb3B5V2l0aERlbHRhc0FuZFZlbG9jaXR5KGZpbHRlcmVkUGxhdGZv
cm1EZWx0YS53aWR0aCgpLCBmaWx0ZXJlZFBsYXRmb3JtRGVsdGEuaGVpZ2h0KCksIGZpbHRlcmVk
VmVsb2NpdHkpOwogICAgICAgICAgICAgICAgIHNjcm9sbGluZ1dhc0hhbmRsZWQgPSBoYW5kbGVX
aGVlbEV2ZW50SW5TY3JvbGxhYmxlQXJlYShjb3BpZWRFdmVudCwgKmJveExheWVyLCBldmVudEhh
bmRsaW5nKTsKICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHNjcm9sbGluZ1dh
c0hhbmRsZWQgPSBkaWRTY3JvbGxJblNjcm9sbGFibGVBcmVhKCpib3hMYXllciwgd2hlZWxFdmVu
dCk7CisgICAgICAgICAgICAgICAgc2Nyb2xsaW5nV2FzSGFuZGxlZCA9IGRpZFNjcm9sbEluU2Ny
b2xsYWJsZUFyZWEoKmJveExheWVyLCB3aGVlbEV2ZW50LCBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIp
OwogCiAgICAgICAgICAgICBpZiAoc2Nyb2xsaW5nV2FzSGFuZGxlZCkKICAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAgICAgaWYgKGN1cnJlbnRFbmNsb3NpbmdCb3gtPmVs
ZW1lbnQoKSAhPSBjdXJyZW50RW5jbG9zaW5nQm94LT5kb2N1bWVudCgpLmRvY3VtZW50RWxlbWVu
dCgpKSB7CisgICAgICAgICAgICAgICAgdXBkYXRlU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKGJveExh
eWVyLCBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIpOworICAgICAgICAgICAgICAgIGlmICgoc2Nyb2xs
Q2hhaW5pbmdCbG9ja2VyLmJsb2NrWCAmJiBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIuYmxvY2tZKQor
ICAgICAgICAgICAgICAgICAgICB8fCAoc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLmJsb2NrWSAmJiAh
Ymlhc2VkRGVsdGEud2lkdGgoKSkKKyAgICAgICAgICAgICAgICAgICAgfHwgKHNjcm9sbENoYWlu
aW5nQmxvY2tlci5ibG9ja1ggJiYgIWJpYXNlZERlbHRhLmhlaWdodCgpKSkKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAg
ICBjdXJyZW50RW5jbG9zaW5nQm94ID0gY3VycmVudEVuY2xvc2luZ0JveC0+Y29udGFpbmluZ0Js
b2NrKCk7CkBAIC0zMDcwLDYgKzMxODksNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6ZGVmYXVsdFdo
ZWVsRXZlbnRIYW5kbGVyKE5vZGUqIHN0YXJ0Tm9kZSwgV2hlZWxFdmVudCYgd2hlZWxFdgogICAg
IGlmICghbV9mcmFtZS5wYWdlKCktPnNjcm9sbExhdGNoaW5nQ29udHJvbGxlcigpLmxhdGNoaW5n
QWxsb3dzU2Nyb2xsaW5nSW5GcmFtZShtX2ZyYW1lLCBsYXRjaGVkU2Nyb2xsZXIpKQogICAgICAg
ICByZXR1cm47CiAKKyAgICBTY3JvbGxDaGFpbmluZ0Jsb2NrZXIgc2Nyb2xsQ2hhaW5pbmdCbG9j
a2VyID0gbV9mcmFtZS5wYWdlKCktPnNjcm9sbExhdGNoaW5nQ29udHJvbGxlcigpLmdldFNjcm9s
bENoYWluaW5nQmxvY2tlcihtX2ZyYW1lKTsKICAgICBpZiAobGF0Y2hlZFNjcm9sbGVyKSB7CiAg
ICAgICAgIGlmIChsYXRjaGVkU2Nyb2xsZXIgPT0gbV9mcmFtZS52aWV3KCkpIHsKICAgICAgICAg
ICAgIC8vIEZyYW1lVmlldyBzY3JvbGxpbmcgaXMgaGFuZGxlZCB2aWEgcHJvY2Vzc1doZWVsRXZl
bnRGb3JTY3JvbGxpbmcoKS4KQEAgLTMwNzgsNiArMzE5OCw3IEBAIHZvaWQgRXZlbnRIYW5kbGVy
OjpkZWZhdWx0V2hlZWxFdmVudEhhbmRsZXIoTm9kZSogc3RhcnROb2RlLCBXaGVlbEV2ZW50JiB3
aGVlbEV2CiAKICAgICAgICAgYXV0byBwbGF0Zm9ybUV2ZW50ID0gd2hlZWxFdmVudC51bmRlcmx5
aW5nUGxhdGZvcm1FdmVudCgpOwogICAgICAgICBpZiAocGxhdGZvcm1FdmVudCkgeworICAgICAg
ICAgICAgYWRqdXN0RGVsdGFzKHNjcm9sbENoYWluaW5nQmxvY2tlciwgZmlsdGVyZWRQbGF0Zm9y
bURlbHRhKTsKICAgICAgICAgICAgIGF1dG8gY29waWVkRXZlbnQgPSBwbGF0Zm9ybUV2ZW50LT5j
b3B5V2l0aERlbHRhc0FuZFZlbG9jaXR5KGZpbHRlcmVkUGxhdGZvcm1EZWx0YS53aWR0aCgpLCBm
aWx0ZXJlZFBsYXRmb3JtRGVsdGEuaGVpZ2h0KCksIGZpbHRlcmVkVmVsb2NpdHkpOwogICAgICAg
ICAgICAgaWYgKGhhbmRsZVdoZWVsRXZlbnRJblNjcm9sbGFibGVBcmVhKGNvcGllZEV2ZW50LCAq
bGF0Y2hlZFNjcm9sbGVyLCBldmVudEhhbmRsaW5nKSkKICAgICAgICAgICAgICAgICB3aGVlbEV2
ZW50LnNldERlZmF1bHRIYW5kbGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAppbmRl
eCAxYjE3NWRhNzkzYzZjNTEyZDEwNDk5ZmU5MWYwZjU4YzE5YTc3OWVhLi4wYzI4ZjU1OWE5ZDQ3
ZDY4ODUyYTQxYTgxNjE0YzQ2Yjk1NmI3ZDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50SGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVy
LmgKQEAgLTM1Myw2ICszNTMsMTAgQEAgcHVibGljOgogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQp
CiAgICAgRWxlbWVudCogZHJhZ2dpbmdFbGVtZW50KCkgY29uc3Q7CiAjZW5kaWYKKworICAgIHN0
YXRpYyB2b2lkIHVwZGF0ZVNjcm9sbENoYWluaW5nQmxvY2tlcihTY3JvbGxhYmxlQXJlYSosIFNj
cm9sbENoYWluaW5nQmxvY2tlciYpOworICAgIHN0YXRpYyBib29sIHNob3VsZEJsb2NrU2Nyb2xs
Q2hhaW5pbmcoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgY29uc3QgU2Nyb2xsQ2hhaW5pbmdC
bG9ja2VyJik7CisKIHByaXZhdGU6CiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKICAgICBzdGF0
aWMgRHJhZ1N0YXRlJiBkcmFnU3RhdGUoKTsKQEAgLTQ2OCw3ICs0NzIsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgcHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxTbmFwKGNvbnN0IFBsYXRmb3JtV2hl
ZWxFdmVudCYsIGNvbnN0IFdlYWtQdHI8U2Nyb2xsYWJsZUFyZWE+Jik7CiAgICAgYm9vbCBjb21w
bGV0ZVdpZGdldFdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgY29uc3QgV2Vh
a1B0cjxXaWRnZXQ+JiwgY29uc3QgV2Vha1B0cjxTY3JvbGxhYmxlQXJlYT4mKTsKIAotICAgIGJv
b2wgaGFuZGxlV2hlZWxFdmVudEluQXBwcm9wcmlhdGVFbmNsb3NpbmdCb3goTm9kZSogc3RhcnRO
b2RlLCBjb25zdCBXaGVlbEV2ZW50JiwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJlZFBsYXRmb3Jt
RGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyZWRWZWxvY2l0eSwgT3B0aW9uU2V0PEV2ZW50
SGFuZGxpbmc+KTsKKyAgICBib29sIGhhbmRsZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9z
aW5nQm94KE5vZGUqIHN0YXJ0Tm9kZSwgY29uc3QgV2hlZWxFdmVudCYsIEZsb2F0U2l6ZSYgZmls
dGVyZWRQbGF0Zm9ybURlbHRhLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlcmVkVmVsb2NpdHksIE9w
dGlvblNldDxFdmVudEhhbmRsaW5nPik7CiAKICAgICBib29sIGhhbmRsZVdoZWVsRXZlbnRJblNj
cm9sbGFibGVBcmVhKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIFNjcm9sbGFibGVBcmVhJiwg
T3B0aW9uU2V0PEV2ZW50SGFuZGxpbmc+KTsKICAgICBPcHRpb25hbDxXaGVlbFNjcm9sbEdlc3R1
cmVTdGF0ZT4gdXBkYXRlV2hlZWxHZXN0dXJlU3RhdGUoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50
JiwgT3B0aW9uU2V0PEV2ZW50SGFuZGxpbmc+KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApp
bmRleCBlZWQ0NTNhNjNlMmZiYTRkOGI1ZTI5OWJlOTcyMjg0ZTU5ZDkyNzA4Li5kYjk3YmVhYmIy
MmRlYzY0Njc4MmI5Y2E1ZDUxYWI2NWQyZWUxNWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
Y3BwCkBAIC00MTgsNiArNDE4LDI0IEBAIGJvb2wgRnJhbWVWaWV3OjpkaWRGaXJzdExheW91dCgp
IGNvbnN0CiAgICAgcmV0dXJuIGxheW91dENvbnRleHQoKS5kaWRGaXJzdExheW91dCgpOwogfQog
CitPdmVyc2Nyb2xsQmVoYXZpb3IgRnJhbWVWaWV3Ojpob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2
aW9yKCkgY29uc3QKK3sKKyAgICBhdXRvKiBkb2N1bWVudCA9IGZyYW1lKCkuZG9jdW1lbnQoKTsK
KyAgICBhdXRvIHNjcm9sbGluZ09iamVjdCA9IGRvY3VtZW50ICYmIGRvY3VtZW50LT5kb2N1bWVu
dEVsZW1lbnQoKSA/IGRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKS0+cmVuZGVyZXIoKSA6IG51
bGxwdHI7CisgICAgaWYgKCFzY3JvbGxpbmdPYmplY3QpCisgICAgICAgIHJldHVybiBTY3JvbGxh
YmxlQXJlYTo6aG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpOworICAgIHJldHVybiBzY3Jv
bGxpbmdPYmplY3QtPnN0eWxlKCkub3ZlcnNjcm9sbEJlaGF2aW9yWCgpOworfQorCitPdmVyc2Ny
b2xsQmVoYXZpb3IgRnJhbWVWaWV3Ojp2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpICBjb25z
dAoreworICAgIGF1dG8qIGRvY3VtZW50ID0gZnJhbWUoKS5kb2N1bWVudCgpOworICAgIGF1dG8g
c2Nyb2xsaW5nT2JqZWN0ID0gZG9jdW1lbnQgJiYgZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgp
ID8gZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpLT5yZW5kZXJlcigpIDogbnVsbHB0cjsKKyAg
ICBpZiAoIXNjcm9sbGluZ09iamVjdCkKKyAgICAgICAgcmV0dXJuIFNjcm9sbGFibGVBcmVhOjp2
ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpOworICAgIHJldHVybiBzY3JvbGxpbmdPYmplY3Qt
PnN0eWxlKCkub3ZlcnNjcm9sbEJlaGF2aW9yWSgpOworfQorCiB2b2lkIEZyYW1lVmlldzo6aW52
YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICBpZiAoIXBhcmVudCgpKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCA5MTNlZjI2ZTIwYTUxYjJkNTY0ZWJkMzZlYTJi
MDM4NTkxOTY4ZmU0Li40ODZjZWM5NDZiNTllZmQyMDQ5NGU5MDU0ZGUyNjE2ODA0NjlhMTBlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTc1MCw2ICs3NTAsOSBAQCBwcml2YXRlOgogICAg
IHZvaWQgdW5vYnNjdXJlZENvbnRlbnRTaXplQ2hhbmdlZCgpIGZpbmFsOwogCiAgICAgLy8gU2Ny
b2xsYWJsZUFyZWEgaW50ZXJmYWNlCisgICAgT3ZlcnNjcm9sbEJlaGF2aW9yIGhvcml6b250YWxP
dmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdCBmaW5hbDsKKyAgICBPdmVyc2Nyb2xsQmVoYXZpb3Ig
dmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdCBmaW5hbDsKKwogICAgIHZvaWQgaW52
YWxpZGF0ZVNjcm9sbGJhclJlY3QoU2Nyb2xsYmFyJiwgY29uc3QgSW50UmVjdCYpIGZpbmFsOwog
ICAgIHZvaWQgc2Nyb2xsVG8oY29uc3QgU2Nyb2xsUG9zaXRpb24mKSBmaW5hbDsKICAgICB2b2lk
IHNldFZpc2libGVTY3JvbGxlclRodW1iUmVjdChjb25zdCBJbnRSZWN0JikgZmluYWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0KaW5kZXggNzE0MTUzNjViYWJh
ZjVhOTQyM2EyOWY2MWI3ODJmZmUzMmI0OTMxNy4uYjhiODI2MGY2ZTZhZmMyMTZlNTBiY2QzMjEy
Y2M4NmU3MDUwODIwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRI
YW5kbGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1h
Yy5tbQpAQCAtNzk1LDkgKzc5NSw5IEBAIHN0YXRpYyBTY3JvbGxhYmxlQXJlYSogc2Nyb2xsYWJs
ZUFyZWFGb3JCb3goUmVuZGVyQm94JiBib3gpCiB9CiAKIC8vIEZJWE1FOiBUaGlzIGNvdWxkIGJl
IHdyaXR0ZW4gaW4gdGVybXMgb2YgU2Nyb2xsYWJsZUFyZWE6OmVuY2xvc2luZ1Njcm9sbGFibGVB
cmVhKCkuCi1zdGF0aWMgQ29udGFpbmVyTm9kZSogZmluZEVuY2xvc2luZ1Njcm9sbGFibGVDb250
YWluZXIoQ29udGFpbmVyTm9kZSogbm9kZSwgY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVl
bEV2ZW50KQorc3RhdGljIENvbnRhaW5lck5vZGUqIGZpbmRFbmNsb3NpbmdTY3JvbGxhYmxlQ29u
dGFpbmVyKENvbnRhaW5lck5vZGUqIG5vZGUsIGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hl
ZWxFdmVudCwgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyJiBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIpCiB7
Ci0gICAgYXV0byBiaWFzZWREZWx0YSA9IFNjcm9sbENvbnRyb2xsZXI6OndoZWVsRGVsdGFCaWFz
aW5nVG93YXJkc1ZlcnRpY2FsKHdoZWVsRXZlbnQpOworICAgIGF1dG8gYmlhc2VkRGVsdGEgPSBQ
bGF0Zm9ybVdoZWVsRXZlbnQ6OndoZWVsRGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRpY2FsKHdoZWVs
RXZlbnQuZGVsdGEoKSk7CiAKICAgICAvLyBGaW5kIHRoZSBmaXJzdCBub2RlIHdpdGggYSB2YWxp
ZCBzY3JvbGxhYmxlIGFyZWEgc3RhcnRpbmcgd2l0aCB0aGUgY3VycmVudAogICAgIC8vIG5vZGUg
YW5kIHRyYXZlcnNpbmcgaXRzIHBhcmVudHMgKG9yIHNoYWRvdyBob3N0cykuCkBAIC04MDksMjEg
KzgwOSwyOSBAQCBzdGF0aWMgQ29udGFpbmVyTm9kZSogZmluZEVuY2xvc2luZ1Njcm9sbGFibGVD
b250YWluZXIoQ29udGFpbmVyTm9kZSogbm9kZSwgY29ucwogICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKICAgICAgICAgUmVuZGVyQm94KiBib3ggPSBjYW5kaWRhdGUtPnJlbmRlckJveCgp
OwotICAgICAgICBpZiAoIWJveCB8fCAhYm94LT5jYW5CZVNjcm9sbGVkQW5kSGFzU2Nyb2xsYWJs
ZUFyZWEoKSkKKyAgICAgICAgaWYgKCFib3gpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgCisKICAgICAgICAgYXV0byogc2Nyb2xsYWJsZUFyZWEgPSBzY3JvbGxhYmxlQXJlYUZvckJv
eCgqYm94KTsKLSAgICAgICAgaWYgKCFzY3JvbGxhYmxlQXJlYSkKLSAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICBpZiAoc2Nyb2xsYWJsZUFyZWEgJiYgYm94LT5jYW5CZVNjcm9sbGVkQW5k
SGFzU2Nyb2xsYWJsZUFyZWEoKSkgeworICAgICAgICAgICAgaWYgKHdoZWVsRXZlbnQucGhhc2Uo
KSA9PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZTo6TWF5QmVnaW4gIHx8IHdoZWVsRXZlbnQucGhh
c2UoKSA9PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZTo6Q2FuY2VsbGVkKQorICAgICAgICAgICAg
ICAgIHJldHVybiBjYW5kaWRhdGU7CiAKLSAgICAgICAgaWYgKHdoZWVsRXZlbnQucGhhc2UoKSA9
PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZTo6TWF5QmVnaW4gfHwgd2hlZWxFdmVudC5waGFzZSgp
ID09IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlOjpDYW5jZWxsZWQpCi0gICAgICAgICAgICByZXR1
cm4gY2FuZGlkYXRlOworICAgICAgICAgICAgaWYgKChiaWFzZWREZWx0YS5oZWlnaHQoKSA+IDAg
JiYgIXNjcm9sbGFibGVBcmVhLT5zY3JvbGxlZFRvVG9wKCkpIHx8IChiaWFzZWREZWx0YS5oZWln
aHQoKSA8IDAgJiYgIXNjcm9sbGFibGVBcmVhLT5zY3JvbGxlZFRvQm90dG9tKCkpCisgICAgICAg
ICAgICAgICAgfHwgKGJpYXNlZERlbHRhLndpZHRoKCkgPiAwICYmICFzY3JvbGxhYmxlQXJlYS0+
c2Nyb2xsZWRUb0xlZnQoKSkgfHwgKGJpYXNlZERlbHRhLndpZHRoKCkgPCAwICYmICFzY3JvbGxh
YmxlQXJlYS0+c2Nyb2xsZWRUb1JpZ2h0KCkpKQorICAgICAgICAgICAgICAgIHJldHVybiBjYW5k
aWRhdGU7CisgICAgICAgIH0KKyAgICAgICAgLy8gTGV0IEZyYW1lVmlldzo6aG9yaXpvbnRhbE92
ZXJzY3JvbGxCZWhhdmlvciBkZWNpZGUgd2hpY2ggbm9kZSdzIG92ZXJzY3JvbGwtYmFodmlvciBp
cyBlZmZlY3RpdmUgdG8gRnJhbWVWaWV3LgorICAgICAgICBpZiAoY2FuZGlkYXRlID09IGNhbmRp
ZGF0ZS0+ZG9jdW1lbnQoKS5ib2R5KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
aWYgKGNhbmRpZGF0ZSA9PSBub2RlKQorICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAg
aWYgKChiaWFzZWREZWx0YS5oZWlnaHQoKSA+IDAgJiYgIXNjcm9sbGFibGVBcmVhLT5zY3JvbGxl
ZFRvVG9wKCkpIHx8IChiaWFzZWREZWx0YS5oZWlnaHQoKSA8IDAgJiYgIXNjcm9sbGFibGVBcmVh
LT5zY3JvbGxlZFRvQm90dG9tKCkpCi0gICAgICAgICAgICB8fCAoYmlhc2VkRGVsdGEud2lkdGgo
KSA+IDAgJiYgIXNjcm9sbGFibGVBcmVhLT5zY3JvbGxlZFRvTGVmdCgpKSB8fCAoYmlhc2VkRGVs
dGEud2lkdGgoKSA8IDAgJiYgIXNjcm9sbGFibGVBcmVhLT5zY3JvbGxlZFRvUmlnaHQoKSkpCi0g
ICAgICAgICAgICByZXR1cm4gY2FuZGlkYXRlOworICAgICAgICBFdmVudEhhbmRsZXI6OnVwZGF0
ZVNjcm9sbENoYWluaW5nQmxvY2tlcihzY3JvbGxhYmxlQXJlYSwgc2Nyb2xsQ2hhaW5pbmdCbG9j
a2VyKTsKKyAgICAgICAgaWYgKEV2ZW50SGFuZGxlcjo6c2hvdWxkQmxvY2tTY3JvbGxDaGFpbmlu
Zyh3aGVlbEV2ZW50LCBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIpKQorICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKQEAgLTg2
OCwxMCArODc2LDExIEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpkZXRlcm1pbmVXaGVlbEV2ZW50VGFy
Z2V0KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVuCiAgICAgaWYgKCF2aWV3KQog
ICAgICAgICByZXR1cm47CiAKKyAgICBTY3JvbGxDaGFpbmluZ0Jsb2NrZXIgc2Nyb2xsQ2hhaW5p
bmdCbG9ja2VyOwogICAgIGlmIChldmVudFRhcmdldElzUGxhdGZvcm1XaWRnZXQod2hlZWxFdmVu
dFRhcmdldC5nZXQoKSkpCiAgICAgICAgIHNjcm9sbGFibGVBcmVhID0gc2Nyb2xsYWJsZUFyZWFG
b3JFdmVudFRhcmdldCh3aGVlbEV2ZW50VGFyZ2V0LmdldCgpKTsKICAgICBlbHNlIHsKLSAgICAg
ICAgYXV0byogc2Nyb2xsYWJsZUNvbnRhaW5lciA9IGZpbmRFbmNsb3NpbmdTY3JvbGxhYmxlQ29u
dGFpbmVyKHdoZWVsRXZlbnRUYXJnZXQuZ2V0KCksIHdoZWVsRXZlbnQpOworICAgICAgICBhdXRv
KiBzY3JvbGxhYmxlQ29udGFpbmVyID0gZmluZEVuY2xvc2luZ1Njcm9sbGFibGVDb250YWluZXIo
d2hlZWxFdmVudFRhcmdldC5nZXQoKSwgd2hlZWxFdmVudCwgc2Nyb2xsQ2hhaW5pbmdCbG9ja2Vy
KTsKICAgICAgICAgaWYgKHNjcm9sbGFibGVDb250YWluZXIpCiAgICAgICAgICAgICBzY3JvbGxh
YmxlQXJlYSA9IHNjcm9sbGFibGVBcmVhRm9yQ29udGFpbmVyTm9kZSgqc2Nyb2xsYWJsZUNvbnRh
aW5lcik7CiAgICAgICAgIGVsc2UKQEAgLTg4OSw3ICs4OTgsNyBAQCB2b2lkIEV2ZW50SGFuZGxl
cjo6ZGV0ZXJtaW5lV2hlZWxFdmVudFRhcmdldChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdo
ZWVsRXZlbgogICAgIGlmIChtX2ZyYW1lLmlzTWFpbkZyYW1lKCkgJiYgd2hlZWxFdmVudC5pc0dl
c3R1cmVTdGFydCgpKQogICAgICAgICBwYWdlLT53aGVlbEV2ZW50RGVsdGFGaWx0ZXIoKS0+YmVn
aW5GaWx0ZXJpbmdEZWx0YXMoKTsKIAotICAgIHBhZ2UtPnNjcm9sbExhdGNoaW5nQ29udHJvbGxl
cigpLnVwZGF0ZUFuZEZldGNoTGF0Y2hpbmdTdGF0ZUZvckZyYW1lKG1fZnJhbWUsIHdoZWVsRXZl
bnQsIHdoZWVsRXZlbnRUYXJnZXQsIHNjcm9sbGFibGVBcmVhLCBpc092ZXJXaWRnZXQpOworICAg
IHBhZ2UtPnNjcm9sbExhdGNoaW5nQ29udHJvbGxlcigpLnVwZGF0ZUFuZEZldGNoTGF0Y2hpbmdT
dGF0ZUZvckZyYW1lKG1fZnJhbWUsIHdoZWVsRXZlbnQsIHdoZWVsRXZlbnRUYXJnZXQsIHNjcm9s
bGFibGVBcmVhLCBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIsIGlzT3ZlcldpZGdldCk7CiB9CiAKIHZv
aWQgRXZlbnRIYW5kbGVyOjpyZWNvcmRXaGVlbEV2ZW50Rm9yRGVsdGFGaWx0ZXIoY29uc3QgUGxh
dGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50KQpAQCAtOTA4LDYgKzkxNyw3IEBAIHZvaWQgRXZl
bnRIYW5kbGVyOjpyZWNvcmRXaGVlbEV2ZW50Rm9yRGVsdGFGaWx0ZXIoY29uc3QgUGxhdGZvcm1X
aGVlbEV2ZW50JiB3aGVlCiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQorCiAg
ICAgcGFnZS0+d2hlZWxFdmVudERlbHRhRmlsdGVyKCktPnVwZGF0ZUZyb21EZWx0YShGbG9hdFNp
emUod2hlZWxFdmVudC5kZWx0YVgoKSwgd2hlZWxFdmVudC5kZWx0YVkoKSkpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5n
Q29vcmRpbmF0b3IuY3BwCmluZGV4IDcwZWEwMzZmODNjOWVmMjk0OThkOThkMDFkYWVmMzRmYzM5
MGE3OTMuLjVlYjJjMjVjMjEyZTQ0ZjVlY2VlZWNjMjJhZTQ5MjA5YzcxYzYwMWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5n
Q29vcmRpbmF0b3IuY3BwCkBAIC02OTcsNiArNjk3LDggQEAgdm9pZCBBc3luY1Njcm9sbGluZ0Nv
b3JkaW5hdG9yOjpzZXRTY3JvbGxpbmdOb2RlU2Nyb2xsYWJsZUFyZWFHZW9tZXRyeShTY3JvbGxp
bmcKICAgICBzY3JvbGxpbmdOb2RlLnNldFNjcm9sbGFibGVBcmVhU2l6ZShzY3JvbGxhYmxlQXJl
YS52aXNpYmxlU2l6ZSgpKTsKIAogICAgIFNjcm9sbGFibGVBcmVhUGFyYW1ldGVycyBzY3JvbGxQ
YXJhbWV0ZXJzOworICAgIHNjcm9sbFBhcmFtZXRlcnMuaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhh
dmlvciA9IHNjcm9sbGFibGVBcmVhLmhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKTsKKyAg
ICBzY3JvbGxQYXJhbWV0ZXJzLnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yID0gc2Nyb2xsYWJs
ZUFyZWEudmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKTsKICAgICBzY3JvbGxQYXJhbWV0ZXJz
Lmhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5ID0gc2Nyb2xsYWJsZUFyZWEuaG9yaXpvbnRhbFNj
cm9sbEVsYXN0aWNpdHkoKTsKICAgICBzY3JvbGxQYXJhbWV0ZXJzLnZlcnRpY2FsU2Nyb2xsRWxh
c3RpY2l0eSA9IHNjcm9sbGFibGVBcmVhLnZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eSgpOwogICAg
IHNjcm9sbFBhcmFtZXRlcnMuYWxsb3dzSG9yaXpvbnRhbFNjcm9sbGluZyA9IHNjcm9sbGFibGVB
cmVhLmFsbG93c0hvcml6b250YWxTY3JvbGxpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbExhdGNoaW5nQ29udHJvbGxlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIuY3BwCmluZGV4
IDRlZDRkOTc1YTdlYTQ1MDA5N2ZjYmI0ZGU5YTJlMDMyMWM2YTY3N2IuLmJhMDAxMWQzMWIzNzg1
NTEyYjQ1NDI5MDI5OWE1ZWFjMDFmZWIwZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbExhdGNoaW5nQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyLmNwcApAQCAtMTA4
LDcgKzEwOCw3IEBAIGJvb2wgU2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyOjpsYXRjaGluZ0FsbG93
c1Njcm9sbGluZ0luRnJhbWUoY29uc3QgRnJhbWUmIGZyYW1lCiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCi12b2lkIFNjcm9sbExhdGNoaW5nQ29udHJvbGxlcjo6dXBkYXRlQW5kRmV0Y2hMYXRjaGlu
Z1N0YXRlRm9yRnJhbWUoRnJhbWUmIGZyYW1lLCBjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdo
ZWVsRXZlbnQsIFJlZlB0cjxFbGVtZW50PiYgbGF0Y2hlZEVsZW1lbnQsIFdlYWtQdHI8U2Nyb2xs
YWJsZUFyZWE+JiBzY3JvbGxhYmxlQXJlYSwgYm9vbCYgaXNPdmVyV2lkZ2V0KQordm9pZCBTY3Jv
bGxMYXRjaGluZ0NvbnRyb2xsZXI6OnVwZGF0ZUFuZEZldGNoTGF0Y2hpbmdTdGF0ZUZvckZyYW1l
KEZyYW1lJiBmcmFtZSwgY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBSZWZQ
dHI8RWxlbWVudD4mIGxhdGNoZWRFbGVtZW50LCBXZWFrUHRyPFNjcm9sbGFibGVBcmVhPiYgc2Ny
b2xsYWJsZUFyZWEsIFNjcm9sbENoYWluaW5nQmxvY2tlciYgc2Nyb2xsQ2hhaW5pbmdCbG9ja2Vy
LCBib29sJiBpc092ZXJXaWRnZXQpCiB7CiAgICAgaWYgKHdoZWVsRXZlbnQuaXNHZXN0dXJlU3Rh
cnQoKSkgewogICAgICAgICAvLyBXZSBjYW4gaGF2ZSBleGlzdGluZyBzdGF0ZSBoZXJlIGJlY2F1
c2Ugc3RhdGUgaXMgY2xlYXJlZCBvbiBhIHRpbWVyLgpAQCAtMTE4LDYgKzExOCw3IEBAIHZvaWQg
U2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyOjp1cGRhdGVBbmRGZXRjaExhdGNoaW5nU3RhdGVGb3JG
cmFtZShGcmFtZSYgZnJhbWUsCiAgICAgICAgICAgICBzdGF0ZS53aGVlbEV2ZW50RWxlbWVudCA9
IG1ha2VXZWFrUHRyKGxhdGNoZWRFbGVtZW50LmdldCgpKTsKICAgICAgICAgICAgIGlmIChzaG91
bGRMYXRjaFRvU2Nyb2xsYWJsZUFyZWEoZnJhbWUsIHNjcm9sbGFibGVBcmVhLmdldCgpLCBtX2N1
bXVsYXRpdmVFdmVudERlbHRhKSkKICAgICAgICAgICAgICAgICBzdGF0ZS5zY3JvbGxhYmxlQXJl
YSA9IHNjcm9sbGFibGVBcmVhOworICAgICAgICAgICAgc3RhdGUuc2Nyb2xsQ2hhaW5pbmdCbG9j
a2VyID0gc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyOwogICAgICAgICAgICAgc3RhdGUuaXNPdmVyV2lk
Z2V0ID0gaXNPdmVyV2lkZ2V0OwogCiAgICAgICAgICAgICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xs
TGF0Y2hpbmcsIHN0cmVhbSA8PCAiU2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyOjp1cGRhdGVBbmRG
ZXRjaExhdGNoaW5nU3RhdGVGb3JGcmFtZSgpIC0gcHVzaGluZyBzdGF0ZSBmb3IgRnJhbWUgIiA8
PCAmZnJhbWUgPDwgIiBlbGVtZW50ICIgPDwgc3RhdGUud2hlZWxFdmVudEVsZW1lbnQuZ2V0KCkg
PDwgIiBzY3JvbGxhYmxlQXJlYSAiIDw8IHN0YXRlLnNjcm9sbGFibGVBcmVhKTsKQEAgLTEzMiw4
ICsxMzMsMTAgQEAgdm9pZCBTY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXI6OnVwZGF0ZUFuZEZldGNo
TGF0Y2hpbmdTdGF0ZUZvckZyYW1lKEZyYW1lJiBmcmFtZSwKICAgICAgICAgICAgIHJldHVybjsK
IAogICAgICAgICAvLyBXZSBtYXkgbm90IGhhdmUgbGF0Y2hlZCBhdCBnZXN0dXJlIHN0YXJ0IGJl
Y2F1c2Ugb2Ygc21hbGwgZGVsdGFzLiBSZS1ldmFsdWF0ZSBsYXRjaGluZyBiYXNlZCBvbiBhY2N1
bXVsYXRlZCBkZWx0YS4KLSAgICAgICAgaWYgKCFzdGF0ZS0+c2Nyb2xsYWJsZUFyZWEgJiYgc2hv
dWxkTGF0Y2hUb1Njcm9sbGFibGVBcmVhKGZyYW1lLCBzY3JvbGxhYmxlQXJlYS5nZXQoKSwgbV9j
dW11bGF0aXZlRXZlbnREZWx0YSkpCisgICAgICAgIGlmICghc3RhdGUtPnNjcm9sbGFibGVBcmVh
ICYmIHNob3VsZExhdGNoVG9TY3JvbGxhYmxlQXJlYShmcmFtZSwgc2Nyb2xsYWJsZUFyZWEuZ2V0
KCksIG1fY3VtdWxhdGl2ZUV2ZW50RGVsdGEpKSB7CiAgICAgICAgICAgICBzdGF0ZS0+c2Nyb2xs
YWJsZUFyZWEgPSBzY3JvbGxhYmxlQXJlYTsKKyAgICAgICAgICAgIHN0YXRlLT5zY3JvbGxDaGFp
bmluZ0Jsb2NrZXIgPSBzY3JvbGxDaGFpbmluZ0Jsb2NrZXI7CisgICAgICAgIH0KICAgICB9CiAK
ICAgICBpZiAoIXdoZWVsRXZlbnQudXNlTGF0Y2hlZEV2ZW50RWxlbWVudCgpKQpAQCAtMTQ0LDEy
ICsxNDcsMzQgQEAgdm9pZCBTY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXI6OnVwZGF0ZUFuZEZldGNo
TGF0Y2hpbmdTdGF0ZUZvckZyYW1lKEZyYW1lJiBmcmFtZSwKICAgICAgICAgICAgIGxhdGNoZWRF
bGVtZW50ID0gc3RhdGUud2hlZWxFdmVudEVsZW1lbnQuZ2V0KCk7CiAgICAgICAgICAgICBzY3Jv
bGxhYmxlQXJlYSA9IHN0YXRlLnNjcm9sbGFibGVBcmVhOwogICAgICAgICAgICAgaXNPdmVyV2lk
Z2V0ID0gc3RhdGUuaXNPdmVyV2lkZ2V0OworICAgICAgICAgICAgc2Nyb2xsQ2hhaW5pbmdCbG9j
a2VyID0gc3RhdGUuc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyOwogCiAgICAgICAgICAgICBMT0dfV0lU
SF9TVFJFQU0oU2Nyb2xsTGF0Y2hpbmcsIHN0cmVhbSA8PCAiU2Nyb2xsTGF0Y2hpbmdDb250cm9s
bGVyOjp1cGRhdGVBbmRGZXRjaExhdGNoaW5nU3RhdGVGb3JGcmFtZSgpIC0gdXNpbmcgc3RhdGUg
Zm9yIEZyYW1lICIgPDwgJmZyYW1lIDw8ICIgZWxlbWVudCAiIDw8IGxhdGNoZWRFbGVtZW50Lmdl
dCgpIDw8ICIgc2Nyb2xsYWJsZUFyZWEgIiA8PCBzY3JvbGxhYmxlQXJlYSk7CiAgICAgICAgIH0K
ICAgICB9CiB9CiAKK1Njcm9sbENoYWluaW5nQmxvY2tlciBTY3JvbGxMYXRjaGluZ0NvbnRyb2xs
ZXI6OmdldFNjcm9sbENoYWluaW5nQmxvY2tlcihjb25zdCBGcmFtZSYgZnJhbWUpIGNvbnN0Cit7
CisgICAgaWYgKCFtX2ZyYW1lU3RhdGVTdGFjay5pc0VtcHR5KCkpIHsKKyAgICAgICAgYXV0byog
ZnJhbWVTdGF0ZSA9IHN0YXRlRm9yRnJhbWUoZnJhbWUpOworICAgICAgICBpZiAoZnJhbWVTdGF0
ZSkKKyAgICAgICAgICAgIHJldHVybiBmcmFtZVN0YXRlLT5zY3JvbGxDaGFpbmluZ0Jsb2NrZXI7
CisgICAgfQorCisgICAgcmV0dXJuIHsgZmFsc2UsIGZhbHNlIH07Cit9CisKK3ZvaWQgU2Nyb2xs
TGF0Y2hpbmdDb250cm9sbGVyOjp1cGRhdGVTY3JvbGxDaGFpbmluZ0Jsb2NrZXIoY29uc3QgRnJh
bWUmIGZyYW1lLCBjb25zdCBTY3JvbGxDaGFpbmluZ0Jsb2NrZXImIHNjcm9sbENoYWluaW5nQmxv
Y2tlckZyb21TdWJmcmFtZSkKK3sKKyAgICBpZiAobV9mcmFtZVN0YXRlU3RhY2suaXNFbXB0eSgp
KQorICAgICAgICByZXR1cm47CisgICAgaWYgKGF1dG8qIGZyYW1lU3RhdGUgPSBzdGF0ZUZvckZy
YW1lKGZyYW1lKSkgeworICAgICAgICBmcmFtZVN0YXRlLT5zY3JvbGxDaGFpbmluZ0Jsb2NrZXIu
YmxvY2tYIHw9IHNjcm9sbENoYWluaW5nQmxvY2tlckZyb21TdWJmcmFtZS5ibG9ja1g7CisgICAg
ICAgIGZyYW1lU3RhdGUtPnNjcm9sbENoYWluaW5nQmxvY2tlci5ibG9ja1kgfD0gc2Nyb2xsQ2hh
aW5pbmdCbG9ja2VyRnJvbVN1YmZyYW1lLmJsb2NrWTsKKyAgICB9Cit9CisKIHZvaWQgU2Nyb2xs
TGF0Y2hpbmdDb250cm9sbGVyOjpyZW1vdmVMYXRjaGluZ1N0YXRlRm9yVGFyZ2V0KGNvbnN0IEVs
ZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgaWYgKG1fZnJhbWVTdGF0ZVN0YWNrLmlzRW1wdHkoKSkK
QEAgLTI1Miw2ICsyNzcsOCBAQCB2b2lkIFNjcm9sbExhdGNoaW5nQ29udHJvbGxlcjo6ZHVtcChX
VEY6OlRleHRTdHJlYW0mIHRzKSBjb25zdAogICAgICAgICBtdWx0aWxpbmVTdHJlYW0uZHVtcFBy
b3BlcnR5KCJmcmFtZSIsIFZhbHVlT3JOdWxsKHN0YXRlLmZyYW1lKSk7CiAgICAgICAgIG11bHRp
bGluZVN0cmVhbS5kdW1wUHJvcGVydHkoImVsZW1lbnQiLCBWYWx1ZU9yTnVsbChzdGF0ZS53aGVl
bEV2ZW50RWxlbWVudC5nZXQoKSkpOwogICAgICAgICBtdWx0aWxpbmVTdHJlYW0uZHVtcFByb3Bl
cnR5KCJzY3JvbGxhYmxlIGFyZWEiLCBWYWx1ZU9yTnVsbChzdGF0ZS5zY3JvbGxhYmxlQXJlYS5n
ZXQoKSkpOworICAgICAgICBtdWx0aWxpbmVTdHJlYW0uZHVtcFByb3BlcnR5KCJzdGF0ZS5zY3Jv
bGxDaGFpbmluZ0Jsb2NrZXIuYmxvY2tYIiwgc3RhdGUuc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLmJs
b2NrWCk7CisgICAgICAgIG11bHRpbGluZVN0cmVhbS5kdW1wUHJvcGVydHkoInN0YXRlLnNjcm9s
bENoYWluaW5nQmxvY2tlci5ibG9ja1kiLCBzdGF0ZS5zY3JvbGxDaGFpbmluZ0Jsb2NrZXIuYmxv
Y2tZKTsKICAgICAgICAgbXVsdGlsaW5lU3RyZWFtLmR1bXBQcm9wZXJ0eSgiaXMgb3ZlciB3aWRn
ZXQiLCBzdGF0ZS5pc092ZXJXaWRnZXQpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIuaAppbmRleCA1
NjQ5NjE1OWM1ZTY4ZDJiY2NlZjhjMjY1ZWU2MWNjYjlkZmI0YjI4Li44ZmQ4ZTMwYzZhMTY1ZDk5
OThkNDExZDI4YmJmZmQzMmVlZjIzNjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9TY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIuaApAQCAtNjEsNyArNjEs
MTAgQEAgcHVibGljOgogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBubyBmcmFtZSBpcyBsYXRjaGVk
LCBvciBsYXRjaGluZyBpcyBpbiB0aGUgZ2l2ZW4gZnJhbWUgKGluIHdoaWNoIGNhc2UgbGF0Y2hl
ZFNjcm9sbGVyIHdpbGwgYmUgbm9uLW51bGwpLgogICAgIGJvb2wgbGF0Y2hpbmdBbGxvd3NTY3Jv
bGxpbmdJbkZyYW1lKGNvbnN0IEZyYW1lJiwgV2Vha1B0cjxTY3JvbGxhYmxlQXJlYT4mIGxhdGNo
ZWRTY3JvbGxlcikgY29uc3Q7CiAKLSAgICB2b2lkIHVwZGF0ZUFuZEZldGNoTGF0Y2hpbmdTdGF0
ZUZvckZyYW1lKEZyYW1lJiwgY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgUmVmUHRyPEVsZW1l
bnQ+JiBsYXRjaGVkRWxlbWVudCwgV2Vha1B0cjxTY3JvbGxhYmxlQXJlYT4mLCBib29sJiBpc092
ZXJXaWRnZXQpOworICAgIHZvaWQgdXBkYXRlQW5kRmV0Y2hMYXRjaGluZ1N0YXRlRm9yRnJhbWUo
RnJhbWUmLCBjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBSZWZQdHI8RWxlbWVudD4mIGxhdGNo
ZWRFbGVtZW50LCBXZWFrUHRyPFNjcm9sbGFibGVBcmVhPiYsIFNjcm9sbENoYWluaW5nQmxvY2tl
ciYsIGJvb2wmIGlzT3ZlcldpZGdldCk7CisKKyAgICBTY3JvbGxDaGFpbmluZ0Jsb2NrZXIgZ2V0
U2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKGNvbnN0IEZyYW1lJikgY29uc3Q7CisgICAgdm9pZCB1cGRh
dGVTY3JvbGxDaGFpbmluZ0Jsb2NrZXIoY29uc3QgRnJhbWUmLCBjb25zdCBTY3JvbGxDaGFpbmlu
Z0Jsb2NrZXImIFNjcm9sbENoYWluaW5nQmxvY2tlckZyb21TdWJmcmFtZSk7CiAKICAgICB2b2lk
IHJlbW92ZUxhdGNoaW5nU3RhdGVGb3JUYXJnZXQoY29uc3QgRWxlbWVudCYpOwogICAgIHZvaWQg
cmVtb3ZlTGF0Y2hpbmdTdGF0ZUZvckZyYW1lKGNvbnN0IEZyYW1lJik7CkBAIC03Myw2ICs3Niw3
IEBAIHByaXZhdGU6CiAgICAgICAgIFdlYWtQdHI8RWxlbWVudD4gd2hlZWxFdmVudEVsZW1lbnQ7
CiAgICAgICAgIFdlYWtQdHI8U2Nyb2xsYWJsZUFyZWE+IHNjcm9sbGFibGVBcmVhOwogICAgICAg
ICBGcmFtZSogZnJhbWUgeyBudWxscHRyIH07CisgICAgICAgIFNjcm9sbENoYWluaW5nQmxvY2tl
ciBzY3JvbGxDaGFpbmluZ0Jsb2NrZXI7CiAgICAgICAgIGJvb2wgaXNPdmVyV2lkZ2V0IHsgZmFs
c2UgfTsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdDb29yZGluYXRvclR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdDb29yZGluYXRvclR5cGVzLmgKaW5kZXggZWVjYWI2ZjU1YjY1YzQ2MDE5
OWY4MGVmMDUwNjU1MmI3MWYzMDgwMy4uNTY3NGRjYWU2YzQzMmNhNDZhMDI4MzVkZDAwYWQ3NDAx
M2NlNmFhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nQ29vcmRpbmF0b3JUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ0Nvb3JkaW5hdG9yVHlwZXMuaApAQCAtNjgsNiArNjgsOSBAQCBlbnVtIGNsYXNz
IFNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb24gewogfTsKIAogc3RydWN0IFNjcm9sbGFibGVB
cmVhUGFyYW1ldGVycyB7CisgICAgT3ZlcnNjcm9sbEJlaGF2aW9yIGhvcml6b250YWxPdmVyc2Ny
b2xsQmVoYXZpb3IgeyBPdmVyc2Nyb2xsQmVoYXZpb3I6OiBBdXRvIH07CisgICAgT3ZlcnNjcm9s
bEJlaGF2aW9yIHZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yIHsgT3ZlcnNjcm9sbEJlaGF2aW9y
OjogQXV0byB9OworCiAgICAgU2Nyb2xsRWxhc3RpY2l0eSBob3Jpem9udGFsU2Nyb2xsRWxhc3Rp
Y2l0eSB7IFNjcm9sbEVsYXN0aWNpdHlOb25lIH07CiAgICAgU2Nyb2xsRWxhc3RpY2l0eSB2ZXJ0
aWNhbFNjcm9sbEVsYXN0aWNpdHkgeyBTY3JvbGxFbGFzdGljaXR5Tm9uZSB9OwogCkBAIC04NCw3
ICs4Nyw5IEBAIHN0cnVjdCBTY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMgewogCiAgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IFNjcm9sbGFibGVBcmVhUGFyYW1ldGVycyYgb3RoZXIpIGNvbnN0CiAg
ICAgewotICAgICAgICByZXR1cm4gaG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkgPT0gb3RoZXIu
aG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkKKyAgICAgICAgcmV0dXJuIGhvcml6b250YWxPdmVy
c2Nyb2xsQmVoYXZpb3IgPT0gb3RoZXIuaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcgorICAg
ICAgICAgICAgJiYgdmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IgPT0gb3RoZXIudmVydGljYWxP
dmVyc2Nyb2xsQmVoYXZpb3IKKyAgICAgICAgICAgICYmIGhvcml6b250YWxTY3JvbGxFbGFzdGlj
aXR5ID09IG90aGVyLmhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5CiAgICAgICAgICAgICAmJiB2
ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkgPT0gb3RoZXIudmVydGljYWxTY3JvbGxFbGFzdGljaXR5
CiAgICAgICAgICAgICAmJiBob3Jpem9udGFsU2Nyb2xsYmFyTW9kZSA9PSBvdGhlci5ob3Jpem9u
dGFsU2Nyb2xsYmFyTW9kZQogICAgICAgICAgICAgJiYgdmVydGljYWxTY3JvbGxiYXJNb2RlID09
IG90aGVyLnZlcnRpY2FsU2Nyb2xsYmFyTW9kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcAppbmRleCAxY2VmMzFiYjM2NjUxNmQzYjRhOGNlODFm
YzE5ZGZhYjZlOTJhMGQ1Li42M2M0OGExZWYwY2UwMmQ1MzlkMjM2Y2QyMzQ3YjNlYzRkNWVmY2Y2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNw
cApAQCAtMTc2LDE5ICsxNzYsNTUgQEAgV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0IFNjcm9sbGlu
Z1RyZWU6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW4KIAogV2hlZWxF
dmVudEhhbmRsaW5nUmVzdWx0IFNjcm9sbGluZ1RyZWU6OmhhbmRsZVdoZWVsRXZlbnRXaXRoTm9k
ZShjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIE9wdGlvblNldDxXaGVlbEV2
ZW50UHJvY2Vzc2luZ1N0ZXBzPiBwcm9jZXNzaW5nU3RlcHMsIFNjcm9sbGluZ1RyZWVOb2RlKiBu
b2RlLCBFdmVudFRhcmdldGluZyBldmVudFRhcmdldGluZykKIHsKKyAgICBGbG9hdFNpemUgZmls
dGVyZWRQbGF0Zm9ybURlbHRhKHdoZWVsRXZlbnQuZGVsdGFYKCksIHdoZWVsRXZlbnQuZGVsdGFZ
KCkpOworICAgIFBsYXRmb3JtV2hlZWxFdmVudCBhZGp1c3RlZFdoZWVsRXZlbnQgPSBQbGF0Zm9y
bVdoZWVsRXZlbnQod2hlZWxFdmVudCk7CisgICAgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIHNjcm9s
bENoYWluaW5nQmxvY2tlciA9IHsgZmFsc2UsIGZhbHNlIH07CisgICAgYXV0byBiaWFzZWREZWx0
YSA9IFBsYXRmb3JtV2hlZWxFdmVudDo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwo
ZmlsdGVyZWRQbGF0Zm9ybURlbHRhKTsKICAgICB3aGlsZSAobm9kZSkgewogICAgICAgICBpZiAo
aXM8U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU+KCpub2RlKSkgewogICAgICAgICAgICAgYXV0
byYgc2Nyb2xsaW5nTm9kZSA9IGRvd25jYXN0PFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlPigq
bm9kZSk7Ci0gICAgICAgICAgICBhdXRvIHJlc3VsdCA9IHNjcm9sbGluZ05vZGUuaGFuZGxlV2hl
ZWxFdmVudCh3aGVlbEV2ZW50LCBldmVudFRhcmdldGluZyk7CisgICAgICAgICAgICBhdXRvIHJl
c3VsdCA9IHNjcm9sbGluZ05vZGUuaGFuZGxlV2hlZWxFdmVudChhZGp1c3RlZFdoZWVsRXZlbnQs
IGV2ZW50VGFyZ2V0aW5nKTsKIAogICAgICAgICAgICAgaWYgKHJlc3VsdC53YXNIYW5kbGVkKSB7
Ci0gICAgICAgICAgICAgICAgbV9sYXRjaGluZ0NvbnRyb2xsZXIubm9kZURpZEhhbmRsZUV2ZW50
KHNjcm9sbGluZ05vZGUuc2Nyb2xsaW5nTm9kZUlEKCksIHByb2Nlc3NpbmdTdGVwcywgd2hlZWxF
dmVudCwgbV9hbGxvd0xhdGNoaW5nKTsKKyAgICAgICAgICAgICAgICAvLyBJZiB0aGUgc2Nyb2xs
IGNoYWluaW5nIGlzIGJsb2NrZWQgaW4gYSBzaW5nbGUgZGlyZWN0aW9uLCBpdCBzaG91bGQgc3Rv
cCBsYXRjaGluZyB0byBhIG5vZGUsCisgICAgICAgICAgICAgICAgLy8gZm9yIHRoZSB3aGVlbCBl
dmVudCBtaWdodCBjaGFuZ2UgdGhlIGRpcmVjdGlvbiBhbmQgb3ZlcnNjcm9sbC1iZWhhdmlvciBt
aWdodCBub3QgYmUgYWJsZSBibG9jaworICAgICAgICAgICAgICAgIC8vIHRoZSBzY3JvbGwgY2hh
aW5pbmcgaWYgaXQgbGF0Y2hlcyB0byB0aGUgYW5jZXN0cnkgbm9kZSBvZiBvdmVyc2Nyb2xsLWJl
aGF2aW9yIHRhcmdldC4KKyAgICAgICAgICAgICAgICBpZiAoKHNjcm9sbENoYWluaW5nQmxvY2tl
ci5ibG9ja1ggJiYgc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLmJsb2NrWSkgfHwgKCFzY3JvbGxDaGFp
bmluZ0Jsb2NrZXIuYmxvY2tYICYmICFzY3JvbGxDaGFpbmluZ0Jsb2NrZXIuYmxvY2tZKSkKKyAg
ICAgICAgICAgICAgICAgICAgbV9sYXRjaGluZ0NvbnRyb2xsZXIubm9kZURpZEhhbmRsZUV2ZW50
KHNjcm9sbGluZ05vZGUuc2Nyb2xsaW5nTm9kZUlEKCksIHByb2Nlc3NpbmdTdGVwcywgd2hlZWxF
dmVudCwgbV9hbGxvd0xhdGNoaW5nKTsKICAgICAgICAgICAgICAgICBtX2dlc3R1cmVTdGF0ZS5u
b2RlRGlkSGFuZGxlRXZlbnQoc2Nyb2xsaW5nTm9kZS5zY3JvbGxpbmdOb2RlSUQoKSwgd2hlZWxF
dmVudCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgaWYgKHJlc3VsdC5uZWVkc01haW5UaHJlYWRQcm9jZXNzaW5nKCkgfHwgZXZl
bnRUYXJnZXRpbmcgIT0gRXZlbnRUYXJnZXRpbmc6OlByb3BhZ2F0ZSkKICAgICAgICAgICAgICAg
ICByZXR1cm4gcmVzdWx0OworCisgICAgICAgICAgICBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIuYmxv
Y2tYIHw9IHNjcm9sbGluZ05vZGUuaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpICE9IE92
ZXJzY3JvbGxCZWhhdmlvcjo6QXV0bzsKKyAgICAgICAgICAgIHNjcm9sbENoYWluaW5nQmxvY2tl
ci5ibG9ja1kgfD0gc2Nyb2xsaW5nTm9kZS52ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpICE9
IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0bzsKKyAgICAgICAgICAgIGlmIChzY3JvbGxDaGFpbmlu
Z0Jsb2NrZXIuYmxvY2tYKSB7CisgICAgICAgICAgICAgICAgZmlsdGVyZWRQbGF0Zm9ybURlbHRh
LnNldFdpZHRoKDApOworICAgICAgICAgICAgICAgIGlmICghYmlhc2VkRGVsdGEuaGVpZ2h0KCkp
CisgICAgICAgICAgICAgICAgICAgIGZpbHRlcmVkUGxhdGZvcm1EZWx0YS5zZXRIZWlnaHQoMCk7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLmJs
b2NrWSkgeworICAgICAgICAgICAgICAgIGZpbHRlcmVkUGxhdGZvcm1EZWx0YS5zZXRIZWlnaHQo
MCk7CisgICAgICAgICAgICAgICAgaWYgKCFiaWFzZWREZWx0YS53aWR0aCgpKQorICAgICAgICAg
ICAgICAgICAgICBmaWx0ZXJlZFBsYXRmb3JtRGVsdGEuc2V0V2lkdGgoMCk7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBhZGp1c3RlZFdoZWVsRXZlbnQgPSBhZGp1c3RlZFdoZWVsRXZlbnQu
Y29weVdpdGhEZWx0YXNBbmRWZWxvY2l0eShmaWx0ZXJlZFBsYXRmb3JtRGVsdGEud2lkdGgoKSwg
ZmlsdGVyZWRQbGF0Zm9ybURlbHRhLmhlaWdodCgpLCBhZGp1c3RlZFdoZWVsRXZlbnQuc2Nyb2xs
aW5nVmVsb2NpdHkoKSk7CisKKyAgICAgICAgICAgIGlmIChzY3JvbGxDaGFpbmluZ0Jsb2NrZXIu
YmxvY2tYIHx8IHNjcm9sbENoYWluaW5nQmxvY2tlci5ibG9ja1kpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLmJsb2NrWCAmJiAhYmlhc2VkRGVsdGEuaGVpZ2h0
KCkgJiYgd2lsbFdoZWVsRXZlbnRTdGFydFN3aXBlR2VzdHVyZSh3aGVlbEV2ZW50KSkKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdDo6dW5oYW5kbGVk
KCk7CisKKyAgICAgICAgICAgICAgICBpZiAoKHNjcm9sbENoYWluaW5nQmxvY2tlci5ibG9ja1gg
JiYgc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLmJsb2NrWSkKKyAgICAgICAgICAgICAgICAgICAgfHwg
KHNjcm9sbENoYWluaW5nQmxvY2tlci5ibG9ja1ggJiYgIWJpYXNlZERlbHRhLmhlaWdodCgpKQor
ICAgICAgICAgICAgICAgICAgICB8fCAoc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLmJsb2NrWSAmJiAh
Ymlhc2VkRGVsdGEud2lkdGgoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHNjcm9sbENo
YWluaW5nQmxvY2tlci5ibG9ja1ggJiYgc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLmJsb2NrWSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG1fbGF0Y2hpbmdDb250cm9sbGVyLm5vZGVEaWRIYW5kbGVF
dmVudChzY3JvbGxpbmdOb2RlLnNjcm9sbGluZ05vZGVJRCgpLCBwcm9jZXNzaW5nU3RlcHMsIHdo
ZWVsRXZlbnQsIG1fYWxsb3dMYXRjaGluZyk7CisgICAgICAgICAgICAgICAgICAgIG1fZ2VzdHVy
ZVN0YXRlLm5vZGVEaWRIYW5kbGVFdmVudChzY3JvbGxpbmdOb2RlLnNjcm9sbGluZ05vZGVJRCgp
LCB3aGVlbEV2ZW50KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFdoZWVsRXZlbnRIYW5k
bGluZ1Jlc3VsdDo6aGFuZGxlZCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
ICAgICAgICAgfQogCiAgICAgICAgIGlmIChpczxTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxQ
cm94eU5vZGU+KCpub2RlKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwCmluZGV4IDYyNWUyMDE4
ZmE3NWZmN2ZkYmY1Y2E1NTIyZDg4OWQ2ZWE0MjI0OGYuLjI3YzhkYzJkMGM3ZjdmNTA5MWVlOTYx
NjNiNzg4MGFmOWQzOGU0M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAKQEAgLTEzNCw2ICsx
MzQsMTYgQEAgYm9vbCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6aXNMYXRjaGVkTm9kZSgp
IGNvbnN0CiAgICAgcmV0dXJuIHNjcm9sbGluZ1RyZWUoKS5sYXRjaGVkTm9kZUlEKCkgPT0gc2Ny
b2xsaW5nTm9kZUlEKCk7CiB9CiAKK092ZXJzY3JvbGxCZWhhdmlvciBTY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZTo6aG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzLmhvcml6b250YWxPdmVyc2Nyb2xsQmVo
YXZpb3I7Cit9CisKK092ZXJzY3JvbGxCZWhhdmlvciBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZTo6dmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdAoreworICAgIHJldHVybiBtX3Nj
cm9sbGFibGVBcmVhUGFyYW1ldGVycy52ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcjsKK30KKwog
Ym9vbCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6Y2FuSGFuZGxlV2hlZWxFdmVudChjb25z
dCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIEV2ZW50VGFyZ2V0aW5nIGV2ZW50VGFy
Z2V0aW5nKSBjb25zdAogewogICAgIGlmICghY2FuSGF2ZVNjcm9sbGJhcnMoKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZS5oCmluZGV4IDg2MmMxYjNkYmUwZTIzZTE2OWZhNTJjYWE0NjJmZWZkZjE0ZGU4MTgu
LjVhMTRjYTM0ZGFjYzk4Y2VlZGY0NjBhMjM3MGNlYTA2N2I4YzViYWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGUuaApAQCAtMTQ1LDYgKzE0NSw4IEBAIHByb3RlY3RlZDoKICAgICBjb25zdCBGbG9hdFNp
emUmIHRvdGFsQ29udGVudHNTaXplRm9yUnViYmVyQmFuZCgpIGNvbnN0IHsgcmV0dXJuIG1fdG90
YWxDb250ZW50c1NpemVGb3JSdWJiZXJCYW5kOyB9CiAgICAgdm9pZCBzZXRUb3RhbENvbnRlbnRz
U2l6ZUZvclJ1YmJlckJhbmQoY29uc3QgRmxvYXRTaXplJiB0b3RhbENvbnRlbnRzU2l6ZUZvclJ1
YmJlckJhbmQpIHsgbV90b3RhbENvbnRlbnRzU2l6ZUZvclJ1YmJlckJhbmQgPSB0b3RhbENvbnRl
bnRzU2l6ZUZvclJ1YmJlckJhbmQ7IH0KIAorICAgIE92ZXJzY3JvbGxCZWhhdmlvciBob3Jpem9u
dGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29uc3Q7CisgICAgT3ZlcnNjcm9sbEJlaGF2aW9yIHZl
cnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29uc3Q7CiAgICAgU2Nyb2xsRWxhc3RpY2l0eSBo
b3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eSgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsYWJsZUFy
ZWFQYXJhbWV0ZXJzLmhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5OyB9CiAgICAgU2Nyb2xsRWxh
c3RpY2l0eSB2ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkoKSBjb25zdCB7IHJldHVybiBtX3Njcm9s
bGFibGVBcmVhUGFyYW1ldGVycy52ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHk7IH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlRGVsZWdhdGVNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21h
Yy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLmgKaW5kZXggMzJhODM4ZWI2
ZjNkYTQzOTgzYmNmZjU1YjdjYzQxODE1NTczNGU5Zi4uMzk4MTQ4MWZlNGQyOTZlZWJjZWUzYWM3
MWQ4MjRkN2QyM2NhNmFiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVE
ZWxlZ2F0ZU1hYy5oCkBAIC0xMDEsNiArMTAxLDkgQEAgcHJpdmF0ZToKICAgICBGbG9hdFNpemUg
dmlld3BvcnRTaXplKCkgY29uc3Qgb3ZlcnJpZGU7CiAjZW5kaWYKIAorICAgIGJvb2wgc2hvdWxk
U3RvcEhvcml6b250YWxTdHJlY2goKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHNob3VsZFN0
b3BWZXJ0aWNhbFN0cmVjaCgpIGNvbnN0IG92ZXJyaWRlOworCiAgICAgdm9pZCByZWxlYXNlUmVm
ZXJlbmNlc1RvU2Nyb2xsZXJJbXBzT25UaGVNYWluVGhyZWFkKCk7CiAKICAgICBTY3JvbGxDb250
cm9sbGVyIG1fc2Nyb2xsQ29udHJvbGxlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1t
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlRGVsZWdhdGVNYWMubW0KaW5kZXggYjc1YzcyMjU5MGFjNjE3ODMxMWEwNDFiNTUzYTA1
YjA2ZmJhNjQ2ZS4uZjZjNWJjOTA2OWZlMTE5N2E5Yzg0MTRiMzYzNWE3ZTk4OTNjYzliZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMubW0KQEAgLTI1
Niw2ICsyNTYsOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsQ29udHJvbGxlclRpbWVyPiBTY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjpjcgogCiBib29sIFNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OmFsbG93c0hvcml6b250YWxTdHJldGNoaW5nKGNv
bnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCkgY29uc3QKIHsKKyAgICBpZiAoc2hv
dWxkU3RvcEhvcml6b250YWxTdHJlY2goKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAg
c3dpdGNoIChob3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eSgpKSB7CiAgICAgY2FzZSBTY3JvbGxF
bGFzdGljaXR5QXV0b21hdGljOiB7CiAgICAgICAgIGJvb2wgc2Nyb2xsYmFyc0FsbG93U3RyZXRj
aGluZyA9IGFsbG93c0hvcml6b250YWxTY3JvbGxpbmcoKSB8fCAhYWxsb3dzVmVydGljYWxTY3Jv
bGxpbmcoKTsKQEAgLTI3OCw2ICsyODEsOSBAQCBib29sIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlRGVsZWdhdGVNYWM6OmFsbG93c0hvcml6b250YWxTdHJldGNoaW5nKGNvbnN0IFBsYQogCiBi
b29sIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OmFsbG93c1ZlcnRpY2Fs
U3RyZXRjaGluZyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpIGNvbnN0CiB7
CisgICAgaWYgKHNob3VsZFN0b3BWZXJ0aWNhbFN0cmVjaCgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKICAgICBzd2l0Y2ggKHZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eSgpKSB7CiAgICAgY2Fz
ZSBTY3JvbGxFbGFzdGljaXR5QXV0b21hdGljOiB7CiAgICAgICAgIGJvb2wgc2Nyb2xsYmFyc0Fs
bG93U3RyZXRjaGluZyA9IGFsbG93c1ZlcnRpY2FsU2Nyb2xsaW5nKCkgfHwgIWFsbG93c0hvcml6
b250YWxTY3JvbGxpbmcoKTsKQEAgLTQzMSw2ICs0MzcsMTYgQEAgRmxvYXRTaXplIFNjcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OnZpZXdwb3J0U2l6ZSgpIGNvbnN0CiB9CiAj
ZW5kaWYKIAorYm9vbCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjpzaG91
bGRTdG9wSG9yaXpvbnRhbFN0cmVjaCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHNjcm9sbGluZ05v
ZGUoKS5ob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgPT0gT3ZlcnNjcm9sbEJlaGF2aW9y
OjpOb25lOworfQorCitib29sIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6
OnNob3VsZFN0b3BWZXJ0aWNhbFN0cmVjaCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHNjcm9sbGlu
Z05vZGUoKS52ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpID09IE92ZXJzY3JvbGxCZWhhdmlv
cjo6Tm9uZTsKK30KKwogdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFj
OjpkZWZlcldoZWVsRXZlbnRUZXN0Q29tcGxldGlvbkZvclJlYXNvbihXaGVlbEV2ZW50VGVzdE1v
bml0b3I6OlNjcm9sbGFibGVBcmVhSWRlbnRpZmllciBpZGVudGlmaWVyLCBXaGVlbEV2ZW50VGVz
dE1vbml0b3I6OkRlZmVyUmVhc29uIHJlYXNvbikgY29uc3QKIHsKICAgICBpZiAoIXNjcm9sbGlu
Z1RyZWUoKS5pc01vbml0b3JpbmdXaGVlbEV2ZW50cygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaAppbmRleCBkNzE2OTM0NmEyNDAyM2MyYTQ3ODdhZTM0
NTQwYTM3NjA3YzBhMmQ1Li42NDE3OTdhNmY0MTg3NTMzOGNhNzFlYTczOTE2MGQxMGIwNmY4OGU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaApAQCAt
MjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCisj
aW5jbHVkZSAiRmxvYXRTaXplLmgiCiAjaW5jbHVkZSAiSW50UG9pbnQuaCIKICNpbmNsdWRlICJQ
bGF0Zm9ybUV2ZW50LmgiCiAjaW5jbHVkZSA8d3RmL1dpbmRvd3NFeHRyYXMuaD4KQEAgLTE3NCw2
ICsxNzUsOCBAQCBwdWJsaWM6CiAgICAgUGxhdGZvcm1XaGVlbEV2ZW50KEhXTkQsIFdQQVJBTSwg
TFBBUkFNLCBib29sIGlzTW91c2VIV2hlZWwpOwogI2VuZGlmCiAKKyAgICBzdGF0aWMgRmxvYXRT
aXplIHdoZWVsRGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRpY2FsKGNvbnN0IEZsb2F0U2l6ZSYpOwor
CiBwcm90ZWN0ZWQ6CiAgICAgUGxhdGZvcm1XaGVlbEV2ZW50R3JhbnVsYXJpdHkgbV9ncmFudWxh
cml0eSB7IFNjcm9sbEJ5UGl4ZWxXaGVlbEV2ZW50IH07CiAgICAgYm9vbCBtX2RpcmVjdGlvbklu
dmVydGVkRnJvbURldmljZSB7IGZhbHNlIH07CkBAIC0yNjQsNiArMjY3LDE5IEBAIGlubGluZSBG
bG9hdFBvaW50IFBsYXRmb3JtV2hlZWxFdmVudDo6c3dpcGVWZWxvY2l0eSgpIGNvbnN0CiAKICNl
bmRpZiAvLyBFTkFCTEUoS0lORVRJQ19TQ1JPTExJTkcpCiAKK2lubGluZSBGbG9hdFNpemUgUGxh
dGZvcm1XaGVlbEV2ZW50Ojp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbChjb25zdCBG
bG9hdFNpemUmIGRlbHRhKQoreworICAgIGF1dG8gZGVsdGFYID0gZGVsdGEud2lkdGgoKTsKKyAg
ICBhdXRvIGRlbHRhWSA9IGRlbHRhLmhlaWdodCgpOworCisgICAgaWYgKGZhYnNmKGRlbHRhWSkg
Pj0gZmFic2YoZGVsdGFYKSkKKyAgICAgICAgZGVsdGFYID0gMDsKKyAgICBlbHNlCisgICAgICAg
IGRlbHRhWSA9IDA7CisKKyAgICByZXR1cm4geyBkZWx0YVgsIGRlbHRhWSB9OworfQorCiBXRUJD
T1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwg
Y29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jik7CiBXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgV2hlZWxFdmVudFByb2Nlc3NpbmdTdGVw
cyk7CiBXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0
U3RyZWFtJiwgRXZlbnRIYW5kbGluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVHlwZXMu
aAppbmRleCBhMDkzYzliM2U2MGFkYjlmOTkyNjI1NzhjYWYzZGZhNDBkZjYwNDFhLi4xY2RmOWU2
ZGI0NGY2MjMzYzg2Y2ZiN2EzNDYwMmNjMGM1NzcxODY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbFR5cGVzLmgKQEAgLTI0OSw2ICsyNDksMTEgQEAgZW51bSBjbGFzcyBTY3JvbGxQb3Np
dGlvbmluZ0JlaGF2aW9yIDogdWludDhfdCB7CiAgICAgU3RhdGlvbmFyeQogfTsKIAorc3RydWN0
IFNjcm9sbENoYWluaW5nQmxvY2tlciB7CisgICAgYm9vbCBibG9ja1ggeyBmYWxzZSB9OworICAg
IGJvb2wgYmxvY2tZIHsgZmFsc2UgfTsKK307CisKIHVzaW5nIFNjcm9sbGJhckNvbnRyb2xTdGF0
ZSA9IHVuc2lnbmVkOwogdXNpbmcgU2Nyb2xsYmFyQ29udHJvbFBhcnRNYXNrID0gdW5zaWduZWQ7
CiB1c2luZyBTY3JvbGxpbmdOb2RlSUQgPSB1aW50NjRfdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxhYmxlQXJlYS5oCmluZGV4IDlmY2Q1NDlhYmI2ZWRhMjA2ZTIyMGMwYmQ4ZGQ5MWZl
ZjI3MmYzMGUuLjI3ZmNhZWUxMDVkMTQ5YzQ3YzlkZjI1YmEzNWVkYjcyM2U4MjE3MWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaApAQCAtMTI0LDYgKzEyNCw5IEBA
IHB1YmxpYzoKICAgICBib29sIGNvbnN0cmFpbnNTY3JvbGxpbmdUb0NvbnRlbnRFZGdlKCkgY29u
c3QgeyByZXR1cm4gbV9jb25zdHJhaW5zU2Nyb2xsaW5nVG9Db250ZW50RWRnZTsgfQogICAgIHZv
aWQgc2V0Q29uc3RyYWluc1Njcm9sbGluZ1RvQ29udGVudEVkZ2UoYm9vbCBjb25zdHJhaW5zU2Ny
b2xsaW5nVG9Db250ZW50RWRnZSkgeyBtX2NvbnN0cmFpbnNTY3JvbGxpbmdUb0NvbnRlbnRFZGdl
ID0gY29uc3RyYWluc1Njcm9sbGluZ1RvQ29udGVudEVkZ2U7IH0KIAorICAgIHZpcnR1YWwgT3Zl
cnNjcm9sbEJlaGF2aW9yIGhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdCB7IHJl
dHVybiBPdmVyc2Nyb2xsQmVoYXZpb3I6OkF1dG87IH0KKyAgICB2aXJ0dWFsIE92ZXJzY3JvbGxC
ZWhhdmlvciB2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpIGNvbnN0IHsgcmV0dXJuIE92ZXJz
Y3JvbGxCZWhhdmlvcjo6QXV0bzsgfQorCiAgICAgdm9pZCBzZXRWZXJ0aWNhbFNjcm9sbEVsYXN0
aWNpdHkoU2Nyb2xsRWxhc3RpY2l0eSBzY3JvbGxFbGFzdGljaXR5KSB7IG1fdmVydGljYWxTY3Jv
bGxFbGFzdGljaXR5ID0gc2Nyb2xsRWxhc3RpY2l0eTsgfQogICAgIFNjcm9sbEVsYXN0aWNpdHkg
dmVydGljYWxTY3JvbGxFbGFzdGljaXR5KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U2Ny
b2xsRWxhc3RpY2l0eT4obV92ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkpOyB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIuaAppbmRleCBjZjM5
MjM0MDVlZTEzMTY5NjgxNmJlN2ZiMGEyNTQ1NDFiMjQzZmZjLi40NWM1NzdhY2I1ZGY0ZWFkZTQz
OTA5OGE4NzYwNDYzMWZkNGU0MjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9TY3JvbGxDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvU2Nyb2xsQ29udHJvbGxlci5oCkBAIC0xMTgsNiArMTE4LDExIEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIExheW91dFNpemUgc2Nyb2xsRXh0ZW50KCkgY29uc3QgPSAwOwogICAgIHZpcnR1
YWwgRmxvYXRTaXplIHZpZXdwb3J0U2l6ZSgpIGNvbnN0ID0gMDsKICNlbmRpZgorCisjaWYgUExB
VEZPUk0oTUFDKQorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTdG9wSG9yaXpvbnRhbFN0cmVjaCgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIHNob3VsZFN0b3BWZXJ0
aWNhbFN0cmVjaCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisjZW5kaWYKIH07CiAKIGVudW0g
Y2xhc3MgV2hlZWxFdmVudFN0YXR1cyB7CkBAIC0xNzMsOCArMTc4LDYgQEAgcHVibGljOgogI2Vu
ZGlmCiAjZW5kaWYKIAotICAgIHN0YXRpYyBGbG9hdFNpemUgd2hlZWxEZWx0YUJpYXNpbmdUb3dh
cmRzVmVydGljYWwoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jik7Ci0KICAgICBlbnVtIGNsYXNz
IFdoZWVsQXhpc0JpYXMgeyBOb25lLCBWZXJ0aWNhbCB9OwogICAgIHN0YXRpYyBPcHRpb25hbDxT
Y3JvbGxEaXJlY3Rpb24+IGRpcmVjdGlvbkZyb21FdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZl
bnQmLCBPcHRpb25hbDxTY3JvbGxFdmVudEF4aXM+LCBXaGVlbEF4aXNCaWFzID0gV2hlZWxBeGlz
Qmlhczo6Tm9uZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L1Njcm9sbENvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3Jv
bGxDb250cm9sbGVyLm1tCmluZGV4IDNlNGYwNjljZjMyYjYzMTg1NmE4YzZhMmRlZDBhMTZlM2Vm
NTFmZjguLmQwYTFjNWQzNGYzZWE5YTU0MWJlNzJjMjNhOTFiNjllMTMwODJmOTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5tbQpAQCAt
MjUyLDcgKzI1Miw4IEBAIGJvb2wgU2Nyb2xsQ29udHJvbGxlcjo6aGFuZGxlV2hlZWxFdmVudChj
b25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpCiAgICAgICAgICAgICAgICAgICAg
IH0gZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgbV9vdmVyZmxvd1Njcm9sbERlbHRhLnNl
dFdpZHRoKG1fb3ZlcmZsb3dTY3JvbGxEZWx0YS53aWR0aCgpICsgZGVsdGFYKTsKICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgc2hvdWxkU3RyZXRjaCA9IHRydWU7CisgICAgICAg
ICAgICAgICAgaWYgKCghZGVsdGFYIHx8ICFtX2NsaWVudC5zaG91bGRTdG9wSG9yaXpvbnRhbFN0
cmVjaCgpKSAmJiAoIWRlbHRhWSB8fCAhbV9jbGllbnQuc2hvdWxkU3RvcFZlcnRpY2FsU3RyZWNo
KCkpKQorICAgICAgICAgICAgICAgICAgICBzaG91bGRTdHJldGNoID0gdHJ1ZTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQogCkBAIC0zMjksMTkgKzMzMCw2IEBAIGJvb2wgU2Nyb2xsQ29udHJv
bGxlcjo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZl
bnQpCiB9CiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCi1GbG9hdFNpemUgU2Nyb2xsQ29udHJv
bGxlcjo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoY29uc3QgUGxhdGZvcm1XaGVl
bEV2ZW50JiB3aGVlbEV2ZW50KQotewotICAgIGF1dG8gZGVsdGFYID0gd2hlZWxFdmVudC5kZWx0
YVgoKTsKLSAgICBhdXRvIGRlbHRhWSA9IHdoZWVsRXZlbnQuZGVsdGFZKCk7Ci0KLSAgICBpZiAo
ZmFic2YoZGVsdGFZKSA+PSBmYWJzZihkZWx0YVgpKQotICAgICAgICBkZWx0YVggPSAwOwotICAg
IGVsc2UKLSAgICAgICAgZGVsdGFZID0gMDsKLQotICAgIHJldHVybiB7IGRlbHRhWCwgZGVsdGFZ
IH07Ci19Ci0KIE9wdGlvbmFsPFNjcm9sbERpcmVjdGlvbj4gU2Nyb2xsQ29udHJvbGxlcjo6ZGly
ZWN0aW9uRnJvbUV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgT3B0
aW9uYWw8U2Nyb2xsRXZlbnRBeGlzPiBheGlzLCBXaGVlbEF4aXNCaWFzIGJpYXMpCiB7CiAgICAg
Ly8gRklYTUU6IEl0J3MgaW1wb3NzaWJsZSB0byBpbmZlciBkaXJlY3Rpb24gZnJvbSBhIHNpbmds
ZSBldmVudCwgc2luY2UgdGhlIHN0YXJ0IG9mIGEgZ2VzdHVyZSBpcyBlaXRoZXIgemVybyBvcgpA
QCAtMzQ5LDcgKzMzNyw3IEBAIE9wdGlvbmFsPFNjcm9sbERpcmVjdGlvbj4gU2Nyb2xsQ29udHJv
bGxlcjo6ZGlyZWN0aW9uRnJvbUV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlCiAKICAgICBhdXRvIHdo
ZWVsRGVsdGEgPSBGbG9hdFNpemUgeyB3aGVlbEV2ZW50LmRlbHRhWCgpLCB3aGVlbEV2ZW50LmRl
bHRhWSgpIH07CiAgICAgaWYgKGJpYXMgPT0gV2hlZWxBeGlzQmlhczo6VmVydGljYWwpCi0gICAg
ICAgIHdoZWVsRGVsdGEgPSB3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbCh3aGVlbEV2
ZW50KTsKKyAgICAgICAgd2hlZWxEZWx0YSA9IFBsYXRmb3JtV2hlZWxFdmVudDo6d2hlZWxEZWx0
YUJpYXNpbmdUb3dhcmRzVmVydGljYWwod2hlZWxFdmVudC5kZWx0YSgpKTsKIAogICAgIGlmIChh
eGlzKSB7CiAgICAgICAgIHN3aXRjaCAoYXhpcy52YWx1ZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5oCmluZGV4IDQ5ZjBiNGIxZDc5Zjc3
YTk2OGE5NTJmOGFlYjk3OTU0ZTI5NzJlMjkuLmE2Y2EwYWZlZWQ1NTRjYWQ5MzM3M2E0NGJmODE4
M2RmMTcxMWI4NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3Jv
bGxBbmltYXRvck1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxB
bmltYXRvck1hYy5oCkBAIC0xNTYsNiArMTU2LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFkanVz
dFNjcm9sbFBvc2l0aW9uVG9Cb3VuZHNJZk5lY2Vzc2FyeSgpIGZpbmFsOwogI2VuZGlmCiAKKyAg
ICBib29sIHNob3VsZFN0b3BIb3Jpem9udGFsU3RyZWNoKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
Ym9vbCBzaG91bGRTdG9wVmVydGljYWxTdHJlY2goKSBjb25zdCBvdmVycmlkZTsKKwogICAgIGJv
b2wgbV9oYXZlU2Nyb2xsZWRTaW5jZVBhZ2VMb2FkOwogICAgIGJvb2wgbV9uZWVkc1Njcm9sbGVy
U3R5bGVVcGRhdGU7CiAgICAgSW50UmVjdCBtX3Zpc2libGVTY3JvbGxlclRodW1iUmVjdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQppbmRl
eCA2MTUxZGVmYzBlYWVjM2EwNTcxNTAyMGFlNjUwMDIzYmFjZjE0YjNjLi5lOGU2YWZjMjQ1Njcy
NzBhZjcwNGQ1MDAzZTM1MTM0ZjYzOGZmMjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tCkBAIC0xNTM2LDYgKzE1MzYsMTYgQEAgdm9p
ZCBTY3JvbGxBbmltYXRvck1hYzo6c2V0VmlzaWJsZVNjcm9sbGVyVGh1bWJSZWN0KGNvbnN0IElu
dFJlY3QmIHNjcm9sbGVyVGh1bWIKICAgICBtX3Zpc2libGVTY3JvbGxlclRodW1iUmVjdCA9IHJl
Y3RJblZpZXdDb29yZGluYXRlczsKIH0KIAorYm9vbCBTY3JvbGxBbmltYXRvck1hYzo6c2hvdWxk
U3RvcEhvcml6b250YWxTdHJlY2goKSBjb25zdAoreworICAgIHJldHVybiBtX3Njcm9sbGFibGVB
cmVhLmhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSA9PSBPdmVyc2Nyb2xsQmVoYXZpb3I6
Ok5vbmU7Cit9CisKK2Jvb2wgU2Nyb2xsQW5pbWF0b3JNYWM6OnNob3VsZFN0b3BWZXJ0aWNhbFN0
cmVjaCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWEudmVydGljYWxPdmVy
c2Nyb2xsQmVoYXZpb3IoKSA9PSBPdmVyc2Nyb2xsQmVoYXZpb3I6Ok5vbmU7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggMjQ5M2VmODY0ZGE0
M2E3ODAyODYzMWU4NzJhMzMwZDU0MDhhZjcyMy4uNjI4ZTJkNWQxMDdjNDU1YzZiNmU0OGE0ZWFh
Y2ViNDdhMDc2MjU4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3Bw
CkBAIC0zNDc2LDYgKzM0NzYsMjIgQEAgdm9pZCBSZW5kZXJMYXllcjo6aW52YWxpZGF0ZVNjcm9s
bENvcm5lclJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKICAgICAgICAgbV9yZXNpemVyLT5yZXBh
aW50UmVjdGFuZ2xlKHJlY3QpOwogfQogCitPdmVyc2Nyb2xsQmVoYXZpb3IgUmVuZGVyTGF5ZXI6
Omhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdAoreworICAgIGF1dG8gc3R5bGUg
PSByZW5kZXJlcigpLnN0eWxlKCk7CisgICAgaWYgKHN0eWxlLm92ZXJmbG93WCgpICE9IE92ZXJm
bG93OjpTY3JvbGwgJiYgc3R5bGUub3ZlcmZsb3dYKCkgIT0gT3ZlcmZsb3c6OkF1dG8pCisgICAg
ICAgIHJldHVybiBTY3JvbGxhYmxlQXJlYTo6aG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigp
OworICAgIHJldHVybiBzdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JYKCk7Cit9CisKK092ZXJzY3Jv
bGxCZWhhdmlvciBSZW5kZXJMYXllcjo6dmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSAgY29u
c3QKK3sKKyAgICBhdXRvIHN0eWxlID0gcmVuZGVyZXIoKS5zdHlsZSgpOworICAgIGlmIChzdHls
ZS5vdmVyZmxvd1koKSAhPSBPdmVyZmxvdzo6U2Nyb2xsICYmIHN0eWxlLm92ZXJmbG93WSgpICE9
IE92ZXJmbG93OjpBdXRvKQorICAgICAgICByZXR1cm4gU2Nyb2xsYWJsZUFyZWE6OnZlcnRpY2Fs
T3ZlcnNjcm9sbEJlaGF2aW9yKCk7CisgICAgcmV0dXJuIHN0eWxlLm92ZXJzY3JvbGxCZWhhdmlv
clkoKTsKK30KKwogc3RhdGljIGJvb2wgc2Nyb2xsYmFySGlkZGVuQnlTdHlsZShTY3JvbGxiYXIq
IHNjcm9sbGJhcikKIHsKICAgICByZXR1cm4gc2Nyb2xsYmFyICYmIHNjcm9sbGJhci0+aXNIaWRk
ZW5CeVN0eWxlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCmluZGV4IGYy
OGNiNDE0NzI3ZWZjNjgyOWE2NWE5NGM1ZmViYTdhNDU2ZTFlOTkuLmI2NmJiOTMxYzFkODYzZGYx
NjQ2Y2E1NzBjYjBkMjcwOTE5MjdhMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllci5oCkBAIC00ODMsNiArNDgzLDkgQEAgcHVibGljOgogICAgIGJvb2wgaGFzSG9yaXpvbnRh
bFNjcm9sbGJhcigpIGNvbnN0IHsgcmV0dXJuIGhvcml6b250YWxTY3JvbGxiYXIoKTsgfQogICAg
IGJvb2wgaGFzVmVydGljYWxTY3JvbGxiYXIoKSBjb25zdCB7IHJldHVybiB2ZXJ0aWNhbFNjcm9s
bGJhcigpOyB9CiAKKyAgICBPdmVyc2Nyb2xsQmVoYXZpb3IgaG9yaXpvbnRhbE92ZXJzY3JvbGxC
ZWhhdmlvcigpIGNvbnN0IGZpbmFsOworICAgIE92ZXJzY3JvbGxCZWhhdmlvciB2ZXJ0aWNhbE92
ZXJzY3JvbGxCZWhhdmlvcigpIGNvbnN0IGZpbmFsOworCiAgICAgYm9vbCBob3Jpem9udGFsU2Ny
b2xsYmFySGlkZGVuQnlTdHlsZSgpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgdmVydGljYWxTY3Jv
bGxiYXJIaWRkZW5CeVN0eWxlKCkgY29uc3QgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IGZhYWEyYWRjZjk5MWIxMzY1OTNj
NTU5NjA2NDZmZjFmNDgwY2YxZDcuLmRiNmM1MmMzNGUwN2E5OWVjMWU1MzA2ZDJkNjQ0MGU2M2Uz
NzVhZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmNwcApAQCAtMjAxOSw2ICsyMDE5LDkgQEAgYm9vbCBBcmd1bWVudENvZGVyPFVzZXJTdHlsZVNo
ZWV0Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFVzZXJTdHlsZVNoZWV0JiB1c2UKIAogdm9p
ZCBBcmd1bWVudENvZGVyPFNjcm9sbGFibGVBcmVhUGFyYW1ldGVycz46OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyLCBjb25zdCBTY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7
CisgICAgZW5jb2RlciA8PCBwYXJhbWV0ZXJzLmhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3I7
CisgICAgZW5jb2RlciA8PCBwYXJhbWV0ZXJzLnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yOwor
CiAgICAgZW5jb2RlciA8PCBwYXJhbWV0ZXJzLmhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5Owog
ICAgIGVuY29kZXIgPDwgcGFyYW1ldGVycy52ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHk7CiAKQEAg
LTIwMzYsNiArMjAzOSwxMSBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8U2Nyb2xsYWJsZUFyZWFQYXJh
bWV0ZXJzPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNjcgogCiBib29sIEFyZ3Vt
ZW50Q29kZXI8U2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzPjo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIsIFNjcm9sbGFibGVBcmVhUGFyYW1ldGVycyYgcGFyYW1zKQogeworICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocGFyYW1zLmhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbXMudmVydGljYWxPdmVy
c2Nyb2xsQmVoYXZpb3IpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHBhcmFtcy5ob3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eSkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtcy52ZXJ0aWNhbFNjcm9s
bEVsYXN0aWNpdHkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuaAppbmRleCBmYTk2Y2RhODRlY2I3ZDQ4OGFlNDI5MTMzYzBmNWI0NDM3MDQ4ZGIxLi4zOTUz
NTY3ODNmZGE1NmZlMWMxYWIwZDkyMzcyODVmMzY2NDZmMDk1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1
ZGUgPFdlYkNvcmUvUmVhbHRpbWVNZWRpYVNvdXJjZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVu
ZGVyaW5nTW9kZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxUeXBlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Vy
aWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNl
V29ya2VyVHlwZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1N0b3JlZENyZWRlbnRpYWxzUG9saWN5
Lmg+CkBAIC04OTYsNiArODk3LDE1IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8+IHsKIAogbmFtZXNwYWNlIFdU
RiB7CiAKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6T3ZlcnNjcm9sbEJl
aGF2aW9yPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICBXZWJDb3JlOjpP
dmVyc2Nyb2xsQmVoYXZpb3IsCisgICAgV2ViQ29yZTo6T3ZlcnNjcm9sbEJlaGF2aW9yOjpBdXRv
LAorICAgIFdlYkNvcmU6Ok92ZXJzY3JvbGxCZWhhdmlvcjo6Q29udGFpbiwKKyAgICBXZWJDb3Jl
OjpPdmVyc2Nyb2xsQmVoYXZpb3I6Ok5vbmUKKyAgICA+OworfTsKKwogdGVtcGxhdGU8PiBzdHJ1
Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpDb2xvclNwYWNlPiB7CiAgICAgdXNpbmcgdmFsdWVzID0g
RW51bVZhbHVlczwKICAgICBXZWJDb3JlOjpDb2xvclNwYWNlLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZURlbGVnYXRlSU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5
ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLm1tCmluZGV4
IGRmYmY3YTRkYmNkM2UwNWE3N2ZkNTFkMjIzMDBlNjYyMDM4ZWZiODcuLjQ0NTBmZjA0OGY4ODY0
MmFhYzcwNDY4YjEyODk2NjU3ZjJkNjc5M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxl
Z2F0ZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUv
aW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MubW0KQEAgLTIzNiwxMiAr
MjM2LDMxIEBAIHZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUzo6Y29t
bWl0U3RhdGVBZnRlckNoaWxkcmVuKGNvbnN0IFNjcm9sCiAgICAgU2V0Rm9yU2NvcGU8Ym9vbD4g
dXBkYXRpbmdDaGFuZ2UobV91cGRhdGluZ0Zyb21TdGF0ZU5vZGUsIHRydWUpOwogCiAgICAgaWYg
KHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2Rl
OjpQcm9wZXJ0eTo6U2Nyb2xsQ29udGFpbmVyTGF5ZXIpCisgICAgICAgIHx8IHNjcm9sbGluZ1N0
YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpT
Y3JvbGxhYmxlQXJlYVBhcmFtcykKICAgICAgICAgfHwgc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0No
YW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpUb3RhbENvbnRlbnRz
U2l6ZSkKICAgICAgICAgfHwgc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShT
Y3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpSZWFjaGFibGVDb250ZW50c1NpemUpCiAgICAg
ICAgIHx8IHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3Rh
dGVOb2RlOjpQcm9wZXJ0eTo6U2Nyb2xsUG9zaXRpb24pCiAgICAgICAgIHx8IHNjcm9sbGluZ1N0
YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6
U2Nyb2xsT3JpZ2luKSkgewogICAgICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKICAg
ICAgICAgVUlTY3JvbGxWaWV3ICpzY3JvbGxWaWV3ID0gdGhpcy0+c2Nyb2xsVmlldygpOworCisg
ICAgICAgIC8vIEZJWE1FKHJkYXI6Ly9wcm9ibGVtLzM0MzE1OTk3KTogVUlTY3JvbGxWaWV3IHNo
b3VsZCBoYXZlIHNvbWUga2luZCBvZiBzdXBwb3J0IGZvciBvdmVyc2Nyb2xsLWJlaGF2aW9yIHRv
IGVuYWJsZS9kaXNhYmxlOgorICAgICAgICAvLyAtIG5vbi1sb2NhbCBib3VuZGFyeSBkZWZhdWx0
IGFjdGlvbnMgKGUuZy4gc2Nyb2xsIGNoYWluaW5nKS4KKyAgICAgICAgLy8gLSBsb2NhbCBib3Vu
ZGFyeSBkZWZhdWx0IGFjdGlvbnMgKGUuZy4gYm91bmNpbmcpLgorI2lmIFVTRShBUFBMRV9JTlRF
Uk5BTF9TREspCisgICAgICAgIC8vIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFBy
b3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsYWJsZUFyZWFQYXJhbXMp
KSB7CisgICAgICAgIC8vICAgICBzY3JvbGxWaWV3Lm92ZXJzY3JvbGxCZWhhdmlvckhvcml6b250
YWwgPSBjb252ZXJ0T3ZlcnNjcm9sbEJlaGF2aW9yRnJvbVdlYktpdFRvVUlLaXQoc2Nyb2xsaW5n
U3RhdGVOb2RlLnNjcm9sbGFibGVBcmVhUGFyYW1ldGVycygpLmhvcml6b250YWxPdmVyc2Nyb2xs
QmVoYXZpb3IpOworICAgICAgICAvLyAgICAgc2Nyb2xsVmlldy5vdmVyc2Nyb2xsQmVoYXZpb3JW
ZXJ0aWNhbCA9IGNvbnZlcnRPdmVyc2Nyb2xsQmVoYXZpb3JGcm9tV2ViS2l0VG9VSUtpdChzY3Jv
bGxpbmdTdGF0ZU5vZGUuc2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzKCkudmVydGljYWxPdmVyc2Ny
b2xsQmVoYXZpb3IpOworICAgICAgICAvLyB9CisjZW5kaWYKKyAgICAgICAgLy8gRm9yIG5vdywg
d2Ugb25seSBkaXNhYmxlIGJvdW5jaW5nIHdoZW4gYm90aCBvdmVyZmxvdy14IGFuZCBvdmVyZmxv
dy15IGFyZSBub25lLgorICAgICAgICAvLyBVSVNjcm9sbFZpZXc6OmFsd2F5c0JvdW5jZSogZnVu
Y3Rpb25zIGNhbm5vdCBoZWxwIGhlcmUuCisgICAgICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUu
aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsYWJs
ZUFyZWFQYXJhbXMpKSB7CisgICAgICAgICAgICBzY3JvbGxWaWV3LmJvdW5jZXMgPSBzY3JvbGxp
bmdTdGF0ZU5vZGUuc2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzKCkuaG9yaXpvbnRhbE92ZXJzY3Jv
bGxCZWhhdmlvciA9PSBPdmVyc2Nyb2xsQmVoYXZpb3I6Ok5vbmUKKyAgICAgICAgICAgICYmIHNj
cm9sbGluZ1N0YXRlTm9kZS5zY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMoKS52ZXJ0aWNhbE92ZXJz
Y3JvbGxCZWhhdmlvciA9PSBPdmVyc2Nyb2xsQmVoYXZpb3I6Ok5vbmUKKyAgICAgICAgICAgID8g
Tk8gOiBZRVM7CisgICAgICAgIH0KKwogICAgICAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhh
c0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpTY3JvbGxDb250
YWluZXJMYXllcikpIHsKICAgICAgICAgICAgIGlmICghbV9zY3JvbGxWaWV3RGVsZWdhdGUpCiAg
ICAgICAgICAgICAgICAgbV9zY3JvbGxWaWV3RGVsZWdhdGUgPSBhZG9wdE5TKFtbV0tTY3JvbGxp
bmdOb2RlU2Nyb2xsVmlld0RlbGVnYXRlIGFsbG9jXSBpbml0V2l0aFNjcm9sbGluZ1RyZWVOb2Rl
RGVsZWdhdGU6dGhpc10pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJIVE1MVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
SFRNTFZpZXcubW0KaW5kZXggOTYyMGU4NmZiMGE3MjAxNDAxYzJjYWQ1NTFkZTJjZmI4ODg5YmVk
Yi4uYjhjZjJlN2ZlNzQ2YmU4NjIxNDk1ZmMxNDMxMzgyYjA2NTM5OWRjMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC00MDkzLDYgKzQw
OTMsOCBAQCBzdGF0aWMgQk9PTCBjdXJyZW50U2Nyb2xsSXNCbGl0KE5TVmlldyAqY2xpcFZpZXcp
CiAgICAgYXV0byogZnJhbWUgPSBjb3JlKFtzZWxmIF9mcmFtZV0pOwogICAgIGlmICghZnJhbWUg
fHwgIWZyYW1lLT5ldmVudEhhbmRsZXIoKS53aGVlbEV2ZW50KGV2ZW50KSkgewogI2lmIFBMQVRG
T1JNKE1BQykKKyAgICAgICAgLy8gRklYTUU6IE5lZWQgdG8gZmluZCBhIHdheSB0byBibG9jayB0
aGUgY3Jvc3MtZnJhbWUgc2Nyb2xsIGNoYWluaW5nIGluIFdLMS4KKyAgICAgICAgLy8gV2UgY2Fu
IG5vdCBqdXN0IHNraXAgdGhlIHNjcm9sbCBoZXJlLCBpdCBub3Qgb25seSBibG9ja3Mgc2Nyb2xs
IGNoYWluaW5nIGJ1dCBhbHNvIGJsb2NrcyB0aGUgc2Nyb2xsIG9uIGN1cnJlbnQgdmlldy4KICAg
ICAgICAgW3N1cGVyIHNjcm9sbFdoZWVsOmV2ZW50XTsKICNlbmRpZgogICAgIH0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4
NjI4YTc3NjkxN2FiMWRjY2UyMzQzY2M0NjE2NzJlYmQ2NDdhZjMyLi44ZThkNDFmOGQ0MDQ0ZWVj
ZDBkMmI1NzI5YTcyYzZlYTc2ZWQzMDk4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjAtMTIt
MjQgIENhdGhpZSBDaGVuICA8Y2F0aGllY2hlbkBpZ2FsaWEuY29tPgorCisgICAgICAgIEltcGxl
bWVudCBDU1Mgb3ZlcnNjcm9sbC1iZWhhdmlvciBvbiBNYWMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDEzOQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJhc2VkIG9uIEZyw6lkw6lyaWMgV2FuZydzIHBh
dGNoLgorCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVt
ZW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvb3ZlcnNj
cm9sbC1iZWhhdmlvci1lbGVtZW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2Nyb2xs
aW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUuaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9s
bGFibGUtZWxlbWVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2Nyb2xs
aW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRtbDogQWRkZWQu
CisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFi
bGUtaWZyYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcv
b3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLmh0bWw6IEFkZGVkLgorCiAy
MDIwLTEyLTIzICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29tPgogCiAgICAgICAg
IFJFR1JFU1NJT046IFsgTWFjIF0gbWVkaWEvdmlkZW8tYnVmZmVyaW5nLWFsbG93ZWQuaHRtbCBp
cyBmbGFreSB0aW1lb3V0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9v
dmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFz
dC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50LWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4yNzE1MGZmNjBiNWRiZGQwYjRhN2FjNmY4M2ZiNTZmNTdjZDJjZDgyCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlv
ci1lbGVtZW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIwIEBACisKK1BBU1MgRWxlbWVudCBo
b3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBhdXRv
LgorUEFTUyBFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhh
dmlvcjogYXV0byBhdXRvLgorUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0
aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGF1dG8uCitQQVNTIEVsZW1lbnQgdmVydGlj
YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGF1dG8uCitQ
QVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZp
b3I6IG5vbmUgYXV0by4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92
ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgYXV0by4KK1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNj
cm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBjb250YWluLgorUEFTUyBF
bGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0
byBjb250YWluLgorUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVy
c2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGNvbnRhaW4uCitQQVNTIEVsZW1lbnQgdmVydGljYWwg
c2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGNvbnRhaW4uCitQ
QVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZp
b3I6IG5vbmUgY29udGFpbi4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRo
IG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgY29udGFpbi4KK1BBU1MgRWxlbWVudCBob3Jpem9u
dGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBub25lLgorUEFT
UyBFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjog
YXV0byBub25lLgorUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVy
c2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIG5vbmUuCitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Ny
b2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIG5vbmUuCitQQVNTIEVs
ZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5v
bmUgbm9uZS4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3Jv
bGwtYmVoYXZpb3I6IG5vbmUgbm9uZS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9z
Y3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5mYTMwMTRkYTkxMzczNmQxYTE3M2NjOWRmNjk2ZWZjMDUzODQ1Y2NmCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVt
ZW50Lmh0bWwKQEAgLTAsMCArMSwxMDggQEAKKzwhZG9jdHlwZSBodG1sPgorCis8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPGxpbmsg
cmVsPSJoZWxwIiBocmVmPSJodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLW92ZXJzY3JvbGwt
YmVoYXZpb3IiPgorPHN0eWxlPgorICAgIC5zY3JvbGxpbmcgeworICAgICAgICBvdmVyZmxvdzog
c2Nyb2xsOworICAgIH0KKyAgICAuc2Nyb2xsQ29udGVudCB7CisgICAgICAgIHdpZHRoOiAzMDBw
eDsKKyAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICB9CisgICAgI3Jvb3QgeworICAgICAgICB3
aWR0aDogMjAwcHg7CisgICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgfQorICAgICNzY3JvbGxl
ciB7CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICB9
Cis8L3N0eWxlPgorPGRpdiBpZD0ncm9vdCcgY2xhc3M9InNjcm9sbGluZyI+CisgICAgPGRpdiBp
ZD0nc2Nyb2xsZXInIGNsYXNzPSJzY3JvbGxpbmciPgorICAgICAgICA8ZGl2IGNsYXNzPSJzY3Jv
bGxDb250ZW50Ij48L2Rpdj4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJzY3JvbGxDb250
ZW50Ij48L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0PgorY29uc3Qgcm9vdCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdyb290Jyk7Citjb25zdCBzY3JvbGxlciA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdzY3JvbGxlcicpOwordmFyIG92ZXJzY3JvbGxEYXRhcyA9IFtbImF1dG8iLCAiYXV0
byIsIHRydWUsIHRydWVdLAorICAgICAgICAgICAgICAgICAgICAgICAgWyJjb250YWluIiwgImF1
dG8iLCBmYWxzZSwgdHJ1ZV0sCisgICAgICAgICAgICAgICAgICAgICAgICBbIm5vbmUiLCAiYXV0
byIsIGZhbHNlLCB0cnVlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFsiYXV0byIsICJjb250
YWluIiwgdHJ1ZSwgZmFsc2VdLAorICAgICAgICAgICAgICAgICAgICAgICAgWyJjb250YWluIiwg
ImNvbnRhaW4iLCBmYWxzZSwgZmFsc2VdLAorICAgICAgICAgICAgICAgICAgICAgICAgWyJub25l
IiwgImNvbnRhaW4iLCBmYWxzZSwgZmFsc2VdLAorICAgICAgICAgICAgICAgICAgICAgICAgWyJh
dXRvIiwgIm5vbmUiLCB0cnVlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAgICBbImNv
bnRhaW4iLCAibm9uZSIsIGZhbHNlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAgICBb
Im5vbmUiLCAibm9uZSIsIGZhbHNlLCBmYWxzZV1dOworYXN5bmMgZnVuY3Rpb24gcGVyZm9ybVdo
ZWVsU2Nyb2xsKHNjcm9sbGVyLCBkaXJlY3Rpb24pIHsKKyAgICB2YXIgZGVsdGFYID0gMDsKKyAg
ICB2YXIgZGVsdGFZID0gMDsKKyAgICBpZiAoZGlyZWN0aW9uID09ICJkb3duIikKKyAgICAgICAg
ZGVsdGFZID0gLTU7CisgICAgZWxzZSBpZiAoZGlyZWN0aW9uID09ICJ1cCIpCisgICAgICAgIGRl
bHRhWSA9IDU7CisgICAgZWxzZSBpZiAoZGlyZWN0aW9uID09ICJyaWdodCIpCisgICAgICAgIGRl
bHRhWCA9IC01OworICAgIGVsc2UgaWYgKGRpcmVjdGlvbiA9PSAibGVmdCIpCisgICAgICAgIGRl
bHRhWCA9IDU7CisKKyAgICB2YXIgeCA9IHNjcm9sbGVyLmNsaWVudFdpZHRoIC8gMjsKKyAgICB2
YXIgeSA9IHNjcm9sbGVyLmNsaWVudEhlaWdodCAvIDI7CisgICAgZXZlbnRTZW5kZXIuZHJhZ01v
ZGUgPSBmYWxzZTsKKyAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICBl
dmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZGVsdGFYLCBkZWx0YVksICdiZWdhbicsICdu
b25lJyk7CisgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGRlbHRhWCAqIDIsIGRlbHRhWSAqIDIsICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZGVsdGFY
ICogMywgZGVsdGFZICogMywgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9u
ZScpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkZWx0YVgsIGRlbHRhWSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZGVsdGFYICogMiwgZGVsdGFZ
ICogMiwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZGVsdGFYICogMywgZGVsdGFZICogMywgJ25vbmUn
LCAnY29udGludWUnKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgcmV0dXJuIG5ldyBQcm9t
aXNlKHJlc29sdmUgPT4geworICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdD
b21wbGV0ZXMoKCkgPT4geworICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICB9KTsKKyAg
ICB9KTsKK30KKworZnVuY3Rpb24gcmVzZXRUZXN0KCkgeworICAgIC8vIFRyeSB2YXJpb3VzIG1l
dGhvZHMgdG8gZW5zdXJlIHRoZSBlbGVtZW50IHBvc2l0aW9uIGlzIHJlc2V0IGltbWVkaWF0ZWx5
LgorICAgIHNjcm9sbGVyLnNjcm9sbExlZnQgPSAzMDA7CisgICAgc2Nyb2xsZXIuc2Nyb2xsVG9w
ID0gMzAwOworICAgIHNjcm9sbGVyLnNjcm9sbFRvKDMwMCwgMzAwKTsKKworICAgIHJvb3Quc2Ny
b2xsTGVmdCA9IDA7CisgICAgcm9vdC5zY3JvbGxUb3AgPSAwOworICAgIHJvb3Quc2Nyb2xsVG8o
MCwgMCk7Cit9CisKK2Z1bmN0aW9uIHN0YXJ0VGVzdCgpIHsKKyAgICBvdmVyc2Nyb2xsRGF0YXMu
Zm9yRWFjaCgoW292ZXJzY3JvbGxYLCBvdmVyc2Nyb2xsWSwgcHJvcGFnYXRlWCwgcHJvcGFnYXRl
WV0pID0+IHsKKyAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAgIHJlc2V0
VGVzdCgpOworICAgICAgICAgICAgc2Nyb2xsZXIuc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWCA9
IG92ZXJzY3JvbGxYOworICAgICAgICAgICAgc2Nyb2xsZXIuc3R5bGUub3ZlcnNjcm9sbEJlaGF2
aW9yWSA9IG92ZXJzY3JvbGxZOworICAgICAgICAgICAgcmV0dXJuIHBlcmZvcm1XaGVlbFNjcm9s
bChzY3JvbGxlciwgInJpZ2h0IikudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0
X2VxdWFscyhyb290LnNjcm9sbExlZnQgPiAwLCBwcm9wYWdhdGVYLCAnQ29udGludWUgdXAgdGhl
IGhvcml6b250YWwgc2Nyb2xsIGNoYWluaW5nJyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAg
fSwgJ0VsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZp
b3I6ICcgKyBvdmVyc2Nyb2xsWCArICcgJyArIG92ZXJzY3JvbGxZICsgJy4nKTsKKworICAgICAg
ICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgICAgICAgICAgcmVzZXRUZXN0KCk7CisgICAgICAg
ICAgICBzY3JvbGxlci5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JYID0gb3ZlcnNjcm9sbFg7Cisg
ICAgICAgICAgICBzY3JvbGxlci5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JZID0gb3ZlcnNjcm9s
bFk7CisgICAgICAgICAgICByZXR1cm4gcGVyZm9ybVdoZWVsU2Nyb2xsKHNjcm9sbGVyLCAiZG93
biIpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3Jv
bGxUb3AgPiAwLCBwcm9wYWdhdGVZLCAnQ29udGludWUgdXAgdGhlIHZlcnRpY2FsIHNjcm9sbCBj
aGFpbmluZycpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0sICdFbGVtZW50IHZlcnRpY2Fs
IHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogJyArIG92ZXJzY3JvbGxYICsg
JyAnICsgb3ZlcnNjcm9sbFkgKyAnLicpOworICAgIH0pOworfQorCithZGRFdmVudExpc3RlbmVy
KCJsb2FkIiwgc3RhcnRUZXN0KTsKKzwvc2NyaXB0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVo
YXZpb3ItaWZyYW1lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL292
ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MDBhMGI3
ZDkwNWI4N2MxZGI3NjI2OTRmZDAwNjM4ZjE5NzY5NTM3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMjEgQEAKKworCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9s
bCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBhdXRvLgorUEFTUyBJZnJhbWUg
dmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIGF1dG8u
CitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhh
dmlvcjogY29udGFpbiBhdXRvLgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0
aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGF1dG8uCitQQVNTIElmcmFtZSBob3Jpem9u
dGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBhdXRvLgorUEFT
UyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBu
b25lIGF1dG8uCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNj
cm9sbC1iZWhhdmlvcjogYXV0byBjb250YWluLgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xs
IHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIGNvbnRhaW4uCitQQVNTIElmcmFt
ZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFp
biBjb250YWluLgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Ny
b2xsLWJlaGF2aW9yOiBjb250YWluIGNvbnRhaW4uCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNj
cm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBjb250YWluLgorUEFTUyBJ
ZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25l
IGNvbnRhaW4uCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNj
cm9sbC1iZWhhdmlvcjogYXV0byBub25lLgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRl
c3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIG5vbmUuCitQQVNTIElmcmFtZSBob3Jp
em9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBub25l
LgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2
aW9yOiBjb250YWluIG5vbmUuCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdp
dGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBub25lLgorUEFTUyBJZnJhbWUgdmVydGljYWwg
c2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIG5vbmUuCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItaWZy
YW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9y
LWlmcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA3ZDY5Mzc2MTNiODAzMjdkZTY2ZjdiMThlMzZiZDA4
NjUzODE0ZDIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9v
dmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS5odG1sCkBAIC0wLDAgKzEsMTEyIEBACis8IWRvY3R5
cGUgaHRtbD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0
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
ICAgICAgICAgWyJub25lIiwgIm5vbmUiLCBmYWxzZSwgZmFsc2VdXTsKKyAgICBhc3luYyBmdW5j
dGlvbiBwZXJmb3JtV2hlZWxTY3JvbGwoc2Nyb2xsZXIsIGRpcmVjdGlvbikgeworICAgICAgICB2
YXIgZGVsdGFYID0gMDsKKyAgICAgICAgdmFyIGRlbHRhWSA9IDA7CisgICAgICAgIGlmIChkaXJl
Y3Rpb24gPT0gImRvd24iKQorICAgICAgICAgICAgZGVsdGFZID0gLTU7CisgICAgICAgIGVsc2Ug
aWYgKGRpcmVjdGlvbiA9PSAidXAiKQorICAgICAgICAgICAgZGVsdGFZID0gNTsKKyAgICAgICAg
ZWxzZSBpZiAoZGlyZWN0aW9uID09ICJyaWdodCIpCisgICAgICAgICAgICBkZWx0YVggPSAtNTsK
KyAgICAgICAgZWxzZSBpZiAoZGlyZWN0aW9uID09ICJsZWZ0IikKKyAgICAgICAgICAgIGRlbHRh
WCA9IDU7CisKKyAgICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAg
ICAgIHZhciB5ID0gc2Nyb2xsZXIuY2xpZW50SGVpZ2h0IC8gMjsKKyAgICAgICAgZXZlbnRTZW5k
ZXIuZHJhZ01vZGUgPSBmYWxzZTsKKyAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZl
bnRzKCk7CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZGVsdGFY
LCBkZWx0YVksICdiZWdhbicsICdub25lJyk7CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkZWx0YVggKiAyLCBkZWx0YVkgKiAyLCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkZWx0YVggKiAzLCBkZWx0YVkgKiAzLCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZGVsdGFYLCBkZWx0YVks
ICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkZWx0YVggKiAyLCBkZWx0YVkgKiAyLCAnbm9uZScsICdj
b250aW51ZScpOworICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZGVsdGFYICogMywgZGVsdGFZICogMywgJ25vbmUnLCAnY29udGludWUn
KTsKKyAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICByZXR1cm4gbmV3IFByb21pc2Uo
cmVzb2x2ZSA9PiB7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdD
b21wbGV0ZXMoKCkgPT4geworICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgICAg
IH0pOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiByZXNldFRlc3QoKSB7Cisg
ICAgICAgIC8vIFRyeSB2YXJpb3VzIG1ldGhvZHMgdG8gZW5zdXJlIHRoZSBlbGVtZW50IHBvc2l0
aW9uIGlzIHJlc2V0IGltbWVkaWF0ZWx5LgorICAgICAgICBzY3JvbGxlci5jb250ZW50V2luZG93
LnNjcm9sbFggPSAzMDA7CisgICAgICAgIHNjcm9sbGVyLmNvbnRlbnRXaW5kb3cuc2Nyb2xsWSA9
IDMwMDsKKyAgICAgICAgc2Nyb2xsZXIuY29udGVudFdpbmRvdy5zY3JvbGxUbygzMDAsIDMwMCk7
CisKKyAgICAgICAgcm9vdC5zY3JvbGxMZWZ0ID0gMDsKKyAgICAgICAgcm9vdC5zY3JvbGxUb3Ag
PSAwOworICAgICAgICByb290LnNjcm9sbFRvKDAsIDApOworICAgIH0KKworICAgIGZ1bmN0aW9u
IG92ZXJzY3JvbGxCZWhhdmlvclRlc3QoKSB7CisgICAgICAgIG92ZXJzY3JvbGxEYXRhcy5mb3JF
YWNoKChbb3ZlcnNjcm9sbFgsIG92ZXJzY3JvbGxZLCBwcm9wYWdhdGVYLCBwcm9wYWdhdGVZXSkg
PT4geworICAgICAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAgICAgICBy
ZXNldFRlc3QoKTsKKyAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gc2Nyb2xsZXIuY29udGVu
dFdpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaHRtbCIpWzBdOworICAgICAg
ICAgICAgICAgIHRhcmdldC5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JYID0gb3ZlcnNjcm9sbFg7
CisgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclkgPSBvdmVy
c2Nyb2xsWTsKKworICAgICAgICAgICAgICAgIHJldHVybiBwZXJmb3JtV2hlZWxTY3JvbGwoc2Ny
b2xsZXIsICJyaWdodCIpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgICAgICBhc3NlcnRf
ZXF1YWxzKHJvb3Quc2Nyb2xsTGVmdCA+IDAsIHByb3BhZ2F0ZVgsICdDb250aW51ZSB1cCB0aGUg
aG9yaXpvbnRhbCBzY3JvbGwgY2hhaW5pbmcnKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgIH0sICdJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwt
YmVoYXZpb3I6ICcgKyBvdmVyc2Nyb2xsWCArICcgJyArIG92ZXJzY3JvbGxZICsgJy4nKTsKKwor
ICAgICAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAgICAgICByZXNldFRl
c3QoKTsKKyAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gc2Nyb2xsZXIuY29udGVudFdpbmRv
dy5kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaHRtbCIpWzBdOworICAgICAgICAgICAg
ICAgIHRhcmdldC5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JYID0gb3ZlcnNjcm9sbFg7CisgICAg
ICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclkgPSBvdmVyc2Nyb2xs
WTsKKyAgICAgICAgICAgICAgICByZXR1cm4gcGVyZm9ybVdoZWVsU2Nyb2xsKHNjcm9sbGVyLCAi
ZG93biIpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJv
b3Quc2Nyb2xsVG9wID4gMCwgcHJvcGFnYXRlWSwgJ0NvbnRpbnVlIHVwIHRoZSB2ZXJ0aWNhbCBz
Y3JvbGwgY2hhaW5pbmcnKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0sICdJ
ZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiAnICsg
b3ZlcnNjcm9sbFggKyAnICcgKyBvdmVyc2Nyb2xsWSArICcuJyk7CisgICAgICAgIH0pOworICAg
IH0KKworICAgIHNjcm9sbGVyLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBvdmVyc2Nyb2xsQmVo
YXZpb3JUZXN0KTsKKzwvc2NyaXB0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItdW5z
Y3JvbGxhYmxlLWVsZW1lbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxp
bmcvb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZjM5NWI2NDg4ZDA4NzBiOTU2MWMwMjg2NzlkN2UxNWE0N2ZjZTZlOQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVo
YXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAor
CitQQVNTIFVuc2Nyb2xsYWJsZSBlbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBv
dmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLgorUEFTUyBVbnNjcm9sbGFibGUgZWxlbWVudCB2ZXJ0
aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItdW5z
Y3JvbGxhYmxlLWVsZW1lbnQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL292ZXJz
Y3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42N2Fj
YjhmOGY5MDFjYzk0OWIxZmZkZDg3ZGFlOGExZmI5ZWViOTRiCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFi
bGUtZWxlbWVudC5odG1sCkBAIC0wLDAgKzEsOTIgQEAKKzwhZG9jdHlwZSBodG1sPgorCis8c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0Pgor
PGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLW92ZXJz
Y3JvbGwtYmVoYXZpb3IiPgorPHN0eWxlPgorICAgIC5zY3JvbGxpbmcgeworICAgICAgICBvdmVy
Zmxvdzogc2Nyb2xsOworICAgIH0KKyAgICAuc2Nyb2xsQ29udGVudCB7CisgICAgICAgIHdpZHRo
OiAzMDBweDsKKyAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICB9CisgICAgI3Jvb3QgeworICAg
ICAgICB3aWR0aDogMjAwcHg7CisgICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgfQorICAgICNz
Y3JvbGxlciB7CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsK
KyAgICAgICAgb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZTsKKyAgICAgICAgb3ZlcmZsb3c6IHZp
c2libGU7CisgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJlZCwg
Ymx1ZSk7CisgICAgfQorPC9zdHlsZT4KKzxkaXYgaWQ9InJvb3QiIGNsYXNzPSJzY3JvbGxpbmci
PgorICAgIDxkaXYgaWQ9InNjcm9sbGVyIj4KKyAgICAgICAgPGRpdiBjbGFzcz0ic2Nyb2xsQ29u
dGVudCI+PC9kaXY+CisgICAgPC9kaXY+CisgICAgPGRpdiBjbGFzcz0ic2Nyb2xsQ29udGVudCI+
PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4KK2NvbnN0IHJvb3QgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgncm9vdCcpOworY29uc3Qgc2Nyb2xsZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnc2Nyb2xsZXInKTsKK2FzeW5jIGZ1bmN0aW9uIHBlcmZvcm1XaGVlbFNjcm9sbChzY3JvbGxl
ciwgZGlyZWN0aW9uKSB7CisgICAgdmFyIGRlbHRhWCA9IDA7CisgICAgdmFyIGRlbHRhWSA9IDA7
CisgICAgaWYgKGRpcmVjdGlvbiA9PSAiZG93biIpCisgICAgICAgIGRlbHRhWSA9IC01OworICAg
IGVsc2UgaWYgKGRpcmVjdGlvbiA9PSAidXAiKQorICAgICAgICBkZWx0YVkgPSA1OworICAgIGVs
c2UgaWYgKGRpcmVjdGlvbiA9PSAicmlnaHQiKQorICAgICAgICBkZWx0YVggPSAtNTsKKyAgICBl
bHNlIGlmIChkaXJlY3Rpb24gPT0gImxlZnQiKQorICAgICAgICBkZWx0YVggPSA1OworCisgICAg
dmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAgdmFyIHkgPSBzY3JvbGxlci5j
bGllbnRIZWlnaHQgLyAyOworICAgIGV2ZW50U2VuZGVyLmRyYWdNb2RlID0gZmFsc2U7CisgICAg
ZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VN
b3ZlVG8oeCwgeSk7CisgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGRlbHRhWCwgZGVsdGFZLCAnYmVnYW4nLCAnbm9uZScpOworICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkZWx0YVggKiAy
LCBkZWx0YVkgKiAyLCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGRlbHRhWCAqIDMsIGRlbHRhWSAqIDMs
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZGVsdGFYLCBkZWx0
YVksICdub25lJywgJ2JlZ2luJyk7CisgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGRlbHRhWCAqIDIsIGRlbHRhWSAqIDIsICdub25lJywgJ2Nv
bnRpbnVlJyk7CisgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGRlbHRhWCAqIDMsIGRlbHRhWSAqIDMsICdub25lJywgJ2NvbnRpbnVlJyk7Cisg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAs
IDAsICdub25lJywgJ2VuZCcpOworICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsK
KyAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKCgpID0+IHsK
KyAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKK2Z1bmN0
aW9uIHJlc2V0VGVzdCgpIHsKKyAgICByb290LnNjcm9sbExlZnQgPSAwOworICAgIHJvb3Quc2Ny
b2xsVG9wID0gMDsKKyAgICByb290LnNjcm9sbFRvKDAsIDApOworfQorCitmdW5jdGlvbiBzdGFy
dFRlc3QoKSB7CisgICAgICAgIHByb21pc2VfdGVzdCgoKSA9PiB7CisgICAgICAgICAgICByZXNl
dFRlc3QoKTsKKyAgICAgICAgICAgIHJldHVybiBwZXJmb3JtV2hlZWxTY3JvbGwoc2Nyb2xsZXIs
ICJyaWdodCIpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9v
dC5zY3JvbGxMZWZ0ID4gMCwgdHJ1ZSwgJ0NvbnRpbnVlIHVwIHRoZSBob3Jpem9udGFsIHNjcm9s
bCBjaGFpbmluZycpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0sICdVbnNjcm9sbGFibGUg
ZWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjog
bm9uZS4nKTsKKworICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgICAgICAgICAgcmVz
ZXRUZXN0KCk7CisKKyAgICAgICAgICAgIHJldHVybiBwZXJmb3JtV2hlZWxTY3JvbGwoc2Nyb2xs
ZXIsICJkb3duIikudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhy
b290LnNjcm9sbFRvcCA+IDAsIHRydWUsICdDb250aW51ZSB1cCB0aGUgdmVydGljYWwgc2Nyb2xs
IGNoYWluaW5nJyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSwgJ1Vuc2Nyb2xsYWJsZSBl
bGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9u
ZS4nKTsKK30KKworYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIHN0YXJ0VGVzdCk7Cis8L3Njcmlw
dD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlv
ci11bnNjcm9sbGFibGUtaWZyYW1lLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZmE1OWNjYmE3
OWFlZmYzM2RhNzBlOTNkNDg4YTA3ZWVjOWM1NjkxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZy
YW1lLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKKworCitQQVNTIFVuc2Nyb2xsYWJsZSBp
ZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5v
bmUuCitQQVNTIFVuc2Nyb2xsYWJsZSBpZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBv
dmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxh
YmxlLWlmcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU4NjljZGVjMDE1N2MxODk4MTFkNmQ3NzY5OGQz
MGY2YTE3N2JhNTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGlu
Zy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUuaHRtbApAQCAtMCwwICsx
LDkyIEBACis8IWRvY3R5cGUgaHRtbD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90
ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0
cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1vdmVyc2Nyb2xsLWJlaGF2aW9yIj4KKzxzdHlsZT4K
KyAgICAuc2Nyb2xsaW5nIHsKKyAgICAgICAgb3ZlcmZsb3c6IHNjcm9sbDsKKyAgICB9CisgICAg
LnNjcm9sbENvbnRlbnQgeworICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgIGhlaWdodDog
MzAwcHg7CisgICAgfQorICAgICNyb290IHsKKyAgICAgICAgd2lkdGg6IDIwMHB4OworICAgICAg
ICBoZWlnaHQ6IDIwMHB4OworICAgIH0KKyAgICAjc2Nyb2xsZXIgeworICAgICAgICB3aWR0aDog
MjAwcHg7CisgICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgICAgIG92ZXJzY3JvbGwtYmVoYXZp
b3I6IG5vbmU7CisgICAgICAgIG92ZXJmbG93OiB2aXNpYmxlOworICAgICAgICBiYWNrZ3JvdW5k
OiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZWQsIGJsdWUpOworICAgIH0KKzwvc3R5bGU+Cis8
ZGl2IGlkPSdyb290JyBjbGFzcz0ic2Nyb2xsaW5nIj4KKyAgICA8aWZyYW1lIGlkPSdzY3JvbGxl
cicgc3JjZG9jPSI8aHRtbCBzdHlsZT0nb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZTsnPjxkaXYg
c3R5bGU9J3dpZHRoOiAxMDBweDsgaGVpZ2h0OiAxMDBweDsnPjwvZGl2PjwvaHRtbD4KKyAgICAg
ICAgIj48L2lmcmFtZT4KKyAgICA8ZGl2IGNsYXNzPSJzY3JvbGxDb250ZW50Ij48L2Rpdj4KKzwv
ZGl2PgorCis8c2NyaXB0PgorY29uc3Qgcm9vdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdy
b290Jyk7Citjb25zdCBzY3JvbGxlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY3JvbGxl
cicpOworCithc3luYyBmdW5jdGlvbiBwZXJmb3JtV2hlZWxTY3JvbGwoc2Nyb2xsZXIsIGRpcmVj
dGlvbikgeworICAgIHZhciBkZWx0YVggPSAwOworICAgIHZhciBkZWx0YVkgPSAwOworICAgIGlm
IChkaXJlY3Rpb24gPT0gImRvd24iKQorICAgICAgICBkZWx0YVkgPSAtNTsKKyAgICBlbHNlIGlm
IChkaXJlY3Rpb24gPT0gInVwIikKKyAgICAgICAgZGVsdGFZID0gNTsKKyAgICBlbHNlIGlmIChk
aXJlY3Rpb24gPT0gInJpZ2h0IikKKyAgICAgICAgZGVsdGFYID0gLTU7CisgICAgZWxzZSBpZiAo
ZGlyZWN0aW9uID09ICJsZWZ0IikKKyAgICAgICAgZGVsdGFYID0gNTsKKworICAgIHZhciB4ID0g
c2Nyb2xsZXIuY2xpZW50V2lkdGggLyAyOworICAgIHZhciB5ID0gc2Nyb2xsZXIuY2xpZW50SGVp
Z2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5kcmFnTW9kZSA9IGZhbHNlOworICAgIGV2ZW50U2Vu
ZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgs
IHkpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkZWx0YVgsIGRlbHRhWSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZGVsdGFYICogMiwgZGVsdGFZ
ICogMiwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkZWx0YVggKiAzLCBkZWx0YVkgKiAzLCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGRlbHRhWCwgZGVsdGFZLCAnbm9u
ZScsICdiZWdpbicpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkZWx0YVggKiAyLCBkZWx0YVkgKiAyLCAnbm9uZScsICdjb250aW51ZScp
OworICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkZWx0YVggKiAzLCBkZWx0YVkgKiAzLCAnbm9uZScsICdjb250aW51ZScpOworICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9u
ZScsICdlbmQnKTsKKyAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgICAg
IGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcygoKSA9PiB7CisgICAgICAg
ICAgICByZXNvbHZlKCk7CisgICAgICAgIH0pOworICAgIH0pOworfQorCitmdW5jdGlvbiByZXNl
dFRlc3QoKSB7CisgICAgcm9vdC5zY3JvbGxMZWZ0ID0gMDsKKyAgICByb290LnNjcm9sbFRvcCA9
IDA7CisgICAgcm9vdC5zY3JvbGxUbygwLCAwKTsKK30KKworZnVuY3Rpb24gc3RhcnRUZXN0KCkg
eworICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgICAgICAgICAgcmVzZXRUZXN0KCk7
CisgICAgICAgICAgICByZXR1cm4gcGVyZm9ybVdoZWVsU2Nyb2xsKHNjcm9sbGVyLCAicmlnaHQi
KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xs
TGVmdCA+IDAsIHRydWUsICdDb250aW51ZSB1cCB0aGUgaG9yaXpvbnRhbCBzY3JvbGwgY2hhaW5p
bmcnKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9LCAnVW5zY3JvbGxhYmxlIGlmcmFtZSBo
b3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4nKTsK
KworICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgICAgICAgICAgcmVzZXRUZXN0KCk7
CisKKyAgICAgICAgICAgIHJldHVybiBwZXJmb3JtV2hlZWxTY3JvbGwoc2Nyb2xsZXIsICJkb3du
IikudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9s
bFRvcCA+IDAsIHRydWUsICdDb250aW51ZSB1cCB0aGUgdmVydGljYWwgc2Nyb2xsIGNoYWluaW5n
Jyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSwgJ1Vuc2Nyb2xsYWJsZSBpZnJhbWUgdmVy
dGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLicpOworfQor
CithZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgc3RhcnRUZXN0KTsKKzwvc2NyaXB0PgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy13azEvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVz
dEV4cGVjdGF0aW9ucwppbmRleCAxNDhjZDdkNmQ3OGQ2MGMwMTZkMzgwMjhmNjkzOGYwZTAwZTA0
OGQwLi43MTAxZGRmN2U2MGJiYzk3Y2RjYTlkYTAzMzNjZmRjYjQwMGI3NDZlIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCkBAIC00NDgsNiArNDQ4
LDEwIEBAIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29va2llcy9zZWN1cmUvc2V0
LWZyb20td3Muc3ViLmh0bWwgWyBGYWlsdXJlIF0KICMgV2ViS2l0MSBmcmFtZXMgdXNlIG5hdGl2
ZSBzY3JvbGxiYXJzIGNhdXNpbmcgdGhpcyByZWZlcmVuY2UgdGVzdCB0byBmYWlsLgogaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXNjcm9sbC1zbmFwL3Njcm9sbC10YXJn
ZXQtcGFkZGluZy0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogCisjIE5lZWQgdG8gZmlu
ZCBhIHdheSB0byBibG9jayB0aGUgY3Jvc3MtZnJhbWUgc2Nyb2xsIGNoYWluaW5nIGluIFdLMS4K
K2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0bWwgWyBTa2lwIF0K
K2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5o
dG1sIFsgU2tpcCBdCisKICMjIyBFTkQgT0YgKDIpIEZhaWx1cmVzIHdpdGhvdXQgYnVnIHJlcG9y
dHMKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416751</attachid>
            <date>2020-12-24 08:28:51 -0800</date>
            <delta_ts>2021-01-15 10:16:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220139-20201225002848.patch</filename>
            <type>text/plain</type>
            <size>87342</size>
            <attacher name="cathiechen">cathiechen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxMDgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmY1ZTU2NzljMTQ4MDA0
MmY2ZTJiODhhNWQyMGZjOTNhMmFjMzFhNi4uMzhjYWVlY2EzNzNiZTE4NzYzYzNiMGIyYWZjNzg2
MmM5M2ZkY2NmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNiBAQAorMjAyMC0xMi0yNCAgQ2F0
aGllIENoZW4gIDxjYXRoaWVjaGVuQGlnYWxpYS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IENT
UyBvdmVyc2Nyb2xsLWJlaGF2aW9yIG9uIE1hYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwMTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQmFzZWQgb24gRnLDqWTDqXJpYyBXYW5nJ3MgcGF0Y2guCisK
KyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIG92ZXJzY3JvbGwtYmVoYXZpb3Ig
b24gTWFjLgorICAgICAgICBBY2NvcmRpbmcgdG8gWzFdLCB0aGVyZSBhcmUgdHdvIGtpbmRzIG9m
IGFjdGlvbnM6IG5vbi1sb2NhbCBib3VuZGFyeSBkZWZhdWx0IGFjdGlvbnMgYW5kIGxvY2FsIGJv
dW5kYXJ5IGRlZmF1bHQgYWN0aW9ucy4KKyAgICAgICAgSW4gV2ViS2l0IG1hYywgdGhlIHJ1YmJl
ciBiYW5kaW5nIGVmZm9ydCBpcyBiZWxvbmdlZCB0byBsb2NhbCBib3VuZGFyeSBkZWZhdWx0IGFj
dGlvbnMuIFRoZSBzY3JvbGwgY2hhaW5pbmcgYW5kIHN3aXBlCisgICAgICAgIGdlc3R1cmVzICh0
cmlnZ2VyIGdvIGJhY2sgb3IgZ28gZm9yd2FyZCBhY3Rpb25zKSBhcmUgYmVsb25nZWQgdG8gbm9u
LWxvY2FsIGJvdW5kYXJ5IGRlZmF1bHQgYWN0aW9ucy4KKyAgICAgICAgMS4gVG8gaGFuZGxlIHRo
ZSBydWJiZXIgYmFuZGluZyBlZmZlY3QsIHNob3VsZFN0b3BIb3Jpem9udGFsU3RyZWNoKCkgYW5k
IHNob3VsZFN0b3BWZXJ0aWNhbFN0cmVjaCgpIGFyZSBhZGRlZCB0byBkZWNpZGUKKyAgICAgICAg
d2hldGhlciB0aGUgcnViYmVyIGJhbmRpbmcgZWZmb3J0IGlzIGFsbG93ZWQgb3Igbm90LgorICAg
ICAgICAyLiBUbyBibG9jayBzY3JvbGwgY2hhaW5pbmcgYWN0aW9ucyBpbiBkaWZmZXJlbnQgc2Ny
b2xsIG1vZGVzLgorICAgICAgICAgIC0gRm9yIGFzeW5jaHJvbm91cyBzY3JvbGxpbmcsIGl0J3Mg
aGFuZGxlZCBpbiBTY3JvbGxpbmdUcmVlOjpoYW5kbGVXaGVlbEV2ZW50V2l0aE5vZGUoKSwgYWNj
b3JkaW5nIHRvIHRoZSB2YWx1ZSBvZgorICAgICAgICAgIG92ZXJzY3JvbGwtYmVoYXZpb3IsIGl0
IGJsb2NrcyB0aGUgc2Nyb2xsIGNoYWluaW5nIGlmIG5lZWRlZCwgdGhlIHJlc3VsdCB3b3VsZCBi
ZSBhZGRlZCB0byBtX2xhdGNoaW5nQ29udHJvbGxlcgorICAgICAgICAgIGFuZCBtaWdodCBiZSBy
ZXVzZWQuCisgICAgICAgICAgLSBGb3Igc3luY2hyb25vdXMgc2Nyb2xsaW5nLCBpZiBXSEVFTF9F
VkVOVF9MQVRDSElORyBpcyBkaXNhYmxlZCwgaXQgaGFuZGxlcyBvdmVyc2Nyb2xsLWJlaGF2aW9y
IGluIGhhbmRsZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94KCkuCisgICAgICAg
ICAgSWYgV0hFRUxfRVZFTlRfTEFUQ0hJTkcgaXMgZW5hYmxlZC4gT3ZlcnNjcm9sbC1iZWhhdmlv
ciBpcyBoYW5kbGVkIGluIGZpbmRFbmNsb3NpbmdTY3JvbGxhYmxlQ29udGFpbmVyKCkuCisgICAg
ICAgICAgSXQgYWRkZWQgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIHRvIEZyYW1lU3RhdGUgdG8gaW5k
aWNhdGUgd2hldGhlciB0aGUgY3VycmVudCBsYXRjaGVkIG5vZGUgc2hvdWxkIGJsb2NrIHNjcm9s
bCBjaGFpbmluZy4KKyAgICAgICAgICBJZiB0aGUgY3VycmVudCBmcmFtZSBpcyBhIHN1YmZyYW1l
LCBpdCBwYXNzZXMgaXRzIFNjcm9sbENoYWluaW5nQmxvY2tlciB0byB0aGUgcGFyZW50ZnJhbWUs
IGFuZCBldmVudHVhbGx5CisgICAgICAgICAgbGV0IHRoZSBtYWluZnJhbWUgZGVjaWRlIHdoZXRo
ZXIgc2hvdWxkIHRyaWdnZXIgc3dpcGUgZ2VzdHVyZXMgb3Igbm90LgorICAgICAgICAzLiBUaGUg
c3dpcGUgZ2VzdHVyZXMuCisgICAgICAgICAgSWYgdGhlIG1haW5mcmFtZSByZWFjaGVzIGl0cyBz
Y3JvbGwgZWRnZXMsIHRoZXJlIHdpbGwgYmUgc3dpcGUgZ2VzdHVyZXMgZXZlbiBpZiBvdmVyc2Ny
b2xsLWJlaGF2aW9yJ3MgdmFsdWUgaXMgbm9uZS4KKyAgICAgICAgICBUaGlzIGJlaGF2aW9yIGlz
IG5vdCBzdXBvb3J0ZWQgaW4gV0sxIGFuZCBXSzIncyBzeW5jaHJvbm91cyBzY3JvbGwgd2l0aCBX
SEVFTF9FVkVOVF9MQVRDSElORyBvZmYuCisKKyAgICAgICAgWzFdIGh0dHBzOi8vZHJhZnRzLmNz
c3dnLm9yZy9jc3Mtb3ZlcnNjcm9sbC0xLyNvdmVyc2Nyb2xsLWJlaGF2aW9yLXByb3BlcnRpZXMK
KworICAgICAgICBUZXN0czogZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVt
ZW50Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZp
b3ItaWZyYW1lLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwt
YmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9z
Y3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLmh0bWwKKwor
ICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
SGFuZGxlcjo6dXBkYXRlU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKTogVXBkYXRlZCB0aGUgdmFsdWUg
b2YgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIGZyb20gU2Nyb2xsYWJsZUFyZWEncyBvdmVyc2Nyb2xs
LWJlaGF2aW9yLgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpzaG91bGRCbG9ja1Nj
cm9sbENoYWluaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZVBhcmVudEZyYW1lU2Nyb2xs
Q2hhaW5pbmdCbG9ja2VyKTogQXBwbGllZCB0aGUgY3VycmVudCBmcmFtZSdzIG92ZXJzY3JvbGwt
YmVoYXZpb3IgdmFsdWUgdG8gU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyCisgICAgICAgIGFuZCBwYXNz
IHRoaXMgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIHRvIHBhcmVudCBmcmFtZS4KKyAgICAgICAgKFdl
YkNvcmU6OmFkanVzdERlbHRhcyk6CisgICAgICAgIChXZWJDb3JlOjppc1Nyb2xsQ2hhaW5pbmdT
dG9wcGVkQnlPdmVyc2Nyb2xsQmVoYXZpb3IpOiAKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFu
ZGxlcjo6aGFuZGxlV2hlZWxFdmVudEludGVybmFsKTogU3RvcCBoYW5kbGluZyB3aGVlbEV2ZW50
IGZvciBGcmFtZVZpZXcgaWYgaXNTcm9sbENoYWluaW5nU3RvcHBlZEJ5T3ZlcnNjcm9sbEJlaGF2
aW9yLgorICAgICAgICAoV2ViQ29yZTo6ZGlkU2Nyb2xsSW5TY3JvbGxhYmxlQXJlYSk6IEFkanVz
dCB3aGVlbEV2ZW50J3MgZGVsdGFzIGFjY29yZGluZyB0byB0aGUgdmFsdWUgb2YgU2Nyb2xsQ2hh
aW5pbmdCbG9ja2VyLgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVl
bEV2ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2luZ0JveCk6IEFkanVzdCBmaWx0ZXJlZFBsYXRmb3Jt
RGVsdGEgYWNjb3JkaW5nIHRvIG92ZXJzY3JvbGwtYmVoYXZpb3IncyB2YWx1ZSwKKyAgICAgICAg
YW5kIHN0b3Agc2Nyb2xsLWNoYWluaW5nIGlmIG5lY2Vzc2FyeSBmb3IgdGhlIHNjZW5hcmlvIG9m
IHN5bmNocm9ub3VzIHNjcm9sbCB3aXRoIFdIRUVMX0VWRU5UX0xBVENISU5HIGlzIG9mZi4KKyAg
ICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZGVmYXVsdFdoZWVsRXZlbnRIYW5kbGVyKTog
QWRqdXN0IGZpbHRlcmVkUGxhdGZvcm1EZWx0YSBhY2NvcmRpbmcgdG8gb3ZlcnNjcm9sbC1iZWhh
dmlvcidzIHZhbHVlLAorICAgICAgICBhbmQgcGFzcyBTY3JvbGxDaGFpbmluZ0Jsb2NrZXIgdG8g
cGFyZW50IGZyYW1lIGlmIG5lZWRlZC4KKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5oOgor
ICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmll
dzo6aG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvciBjb25zdCk6IFJldHVybnMgZG9jdW1lbnRF
bGVtZW50J3MgdmFsdWUgb2Ygb3ZlcnNjcm9sbC1iZWhhdmlvci14LgorICAgICAgICBJZiBkb2N1
bWVudEVsZW1lbnQgaXMgbm90IGEgc2Nyb2xsIGNvbnRhaW5lciwgcmV0dXJucyBPdmVyc2Nyb2xs
QmVoYXZpb3I6OkF1dG8uCisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnZlcnRpY2FsT3Zl
cnNjcm9sbEJlaGF2aW9yIGNvbnN0KTogRGl0dG8uCisgICAgICAgICogcGFnZS9GcmFtZVZpZXcu
aDoKKyAgICAgICAgKiBwYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW06CisgICAgICAgIChXZWJD
b3JlOjpmaW5kRW5jbG9zaW5nU2Nyb2xsYWJsZUNvbnRhaW5lcik6IEFwcGx5IG92ZXJzY3JvbGwt
YmVoYXZpb3IgdG8gU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIGFuZCBzdG9wIHRoZSBzY3JvbGwgY2hh
aW5pbmcgaWYgbmVlZGVkCisgICAgICAgIGZvciB0aGUgc2NlbmFyaW8gb2Ygc3luY2hyb25vdXMg
c2Nyb2xsIHdpdGggV0hFRUxfRVZFTlRfTEFUQ0hJTkcgaXMgb24uCisgICAgICAgIChXZWJDb3Jl
OjpFdmVudEhhbmRsZXI6OmRldGVybWluZVdoZWVsRXZlbnRUYXJnZXQpOiBTdG9yZXMgU2Nyb2xs
Q2hhaW5pbmdCbG9ja2VyIGluIHNjcm9sbExhdGNoaW5nQ29udHJvbGxlcgorICAgICAgICAqIHBh
Z2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0U2Nyb2xsaW5nTm9kZVNjcm9sbGFi
bGVBcmVhR2VvbWV0cnkpOiBVcGRhdGUgb3ZlcnNjcm9sbC1iZWhhdmlvciB2YWx1ZXMgaW4gc2Ny
b2xsUGFyYW1ldGVycy4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxMYXRjaGluZ0Nv
bnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVy
Ojp1cGRhdGVBbmRGZXRjaExhdGNoaW5nU3RhdGVGb3JGcmFtZSk6IEFkZCBTY3JvbGxDaGFpbmlu
Z0Jsb2NrZXIgdG8gRnJhbWVTdGF0ZS4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbExhdGNoaW5n
Q29udHJvbGxlcjo6Z2V0U2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIGNvbnN0KTogUmV0dXJucyBTY3Jv
bGxDaGFpbmluZ0Jsb2NrZXIgb2YgZnJhbWUuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxMYXRj
aGluZ0NvbnRyb2xsZXI6OnVwZGF0ZVNjcm9sbENoYWluaW5nQmxvY2tlcik6IFVwZGF0ZXMgU2Ny
b2xsQ2hhaW5pbmdCbG9ja2VyIG9mIGZyYW1lLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsTGF0
Y2hpbmdDb250cm9sbGVyOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9T
Y3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdDb29yZGluYXRvclR5cGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJl
YVBhcmFtZXRlcnM6Om9wZXJhdG9yPT0gY29uc3QpOiBBZGRlZCBob3Jpem9udGFsT3ZlcnNjcm9s
bEJlaGF2aW9yIGFuZCB2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvci4KKyAgICAgICAgKiBwYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z1RyZWU6OmhhbmRsZVdoZWVsRXZlbnRXaXRoTm9kZSk6IFVwZGF0ZSBTY3JvbGxDaGFpbmluZ0Js
b2NrZXIgYWNjb3JkaW5nIHRvIHRoZSBvdmVyc2Nyb2xsLWJlaGF2aW9yIHZhbHVlcywKKyAgICAg
ICAgc3RvcCB0aGUgc2Nyb2xsIGNoYWluaW5nIGlmIG5lZWRlZCwgYW5kIGlmIGl0J3MgaG9yaXpv
bnRhbCBzY3JvbGwgYW5kIHdpbGxXaGVlbEV2ZW50U3RhcnRTd2lwZUdlc3R1cmUsIGxldCBpdCB0
cmlnZ2VyIHN3aXBlIGdlc3R1cmUuCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGU6Omhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IgY29uc3QpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjp2ZXJ0aWNhbE92
ZXJzY3JvbGxCZWhhdmlvciBjb25zdCk6IERpdHRvLgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmg6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcv
bWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMuaDoKKyAgICAgICAgKiBw
YWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVN
YWM6OmFsbG93c0hvcml6b250YWxTdHJldGNoaW5nIGNvbnN0KTogSWYgb3ZlcnNjcm9sbC1iZWhh
dmlvci14OiBub25lLCB0aGUgc2Nyb2xsIHN0cmV0Y2ggc2hvdWxkIGJlIGJsb2NrZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjphbGxv
d3NWZXJ0aWNhbFN0cmV0Y2hpbmcgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OnNob3VsZFN0b3BIb3Jpem9udGFs
U3RyZWNoIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZURlbGVnYXRlTWFjOjpzaG91bGRTdG9wVmVydGljYWxTdHJlY2ggY29uc3QpOiBE
aXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtV2hlZWxFdmVudDo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVy
dGljYWwpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFR5cGVzLmg6CisgICAgICAgICogcGxh
dGZvcm0vU2Nyb2xsYWJsZUFyZWEuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGFibGVBcmVh
Ojpob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGFibGVBcmVhOjp2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvciBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5oOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsQ29udHJvbGxlckNsaWVudDo6c2hvdWxkU3RvcEhvcml6b250YWxTdHJlY2ggY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQ29udHJvbGxlckNsaWVudDo6c2hvdWxkU3Rv
cFZlcnRpY2FsU3RyZWNoIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TY3JvbGxD
b250cm9sbGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQ29udHJvbGxlcjo6aGFuZGxl
V2hlZWxFdmVudCk6IFN0b3Agc2Nyb2xsIHN0cmVjaGluZyBpZiBuZWVkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxDb250cm9sbGVyOjpkaXJlY3Rpb25Gcm9tRXZlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsQ29udHJvbGxlcjo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGlj
YWwpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5o
OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTWFjOjpzaG91bGRTdG9wSG9yaXpvbnRhbFN0cmVjaCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck1hYzo6c2hvdWxkU3RvcFZl
cnRpY2FsU3RyZWNoIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6Omhvcml6b250YWxPdmVyc2Nyb2xsQmVo
YXZpb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnZlcnRpY2FsT3Zl
cnNjcm9sbEJlaGF2aW9yIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
aDoKKwogMjAyMC0xMi0yMyAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4K
IAogICAgICAgICBDbGVhbiB1cCBzb21lIGNvZGUgcmVsYXRlZCB0byBzY3JvbGwgcGlubmluZwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCA3ZDM1YzVhZTEzMTc0ZTMzMjBjMDRmY2FiYTYzNzdiNjJmZGU5NGFjLi44ZTdl
YjA4MDg1OTRhNmFhNTdiZmQ1MWJhYjI3Mzc1NDhlNDAxNGFlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE5IEBACisyMDIwLTEyLTI0ICBDYXRoaWUgQ2hlbiAgPGNhdGhpZWNoZW5AaWdhbGlhLmNvbT4K
KworICAgICAgICBJbXBsZW1lbnQgQ1NTIG92ZXJzY3JvbGwtYmVoYXZpb3Igb24gTWFjCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjAxMzkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCYXNlZCBvbiBGcsOp
ZMOpcmljIFdhbmcncyBwYXRjaC4KKworICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFNjcm9sbGFibGVBcmVhUGFy
YW1ldGVycz46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8U2Nyb2xsYWJs
ZUFyZWFQYXJhbWV0ZXJzPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmg6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUzo6Y29tbWl0U3RhdGVBZnRlckNo
aWxkcmVuKToKKwogMjAyMC0xMi0yMyAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNv
bT4KIAogICAgICAgICBbR1BVIFByb2Nlc3NdOiBEb24ndCBjYWxsIGZsdXNoRHJhd2luZ0NvbnRl
eHQoKSBpbiB0aGUgbWlkZGxlIG9mIHJlY29yZGluZyBkcmF3aW5nIGNvbW1hbmRzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggZTEwYjRkYjAzMTA2ZTY4ZjU0MTIzYmNlODY2YWU2YjQz
MDkzM2JlOC4uYWFmNDk1N2Y1YTA5ZTcyZTg2OTllY2Y5MDQ5NzE1YzVjYTAyM2IwYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIwLTEyLTI0ICBDYXRo
aWUgQ2hlbiAgPGNhdGhpZWNoZW5AaWdhbGlhLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgQ1NT
IG92ZXJzY3JvbGwtYmVoYXZpb3Igb24gTWFjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjAxMzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBCYXNlZCBvbiBGcsOpZMOpcmljIFdhbmcncyBwYXRjaC4KKwor
ICAgICAgICBOZWVkIHRvIGZpbmQgYSB3YXkgdG8gYmxvY2sgdGhlIGNyb3NzLWZyYW1lIHNjcm9s
bCBjaGFpbmluZyBpbiBXSzEuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgor
ICAgICAgICAoLVtXZWJIVE1MVmlldyBzY3JvbGxXaGVlbDpdKToKKwogMjAyMC0xMi0xOSAgUm9i
IEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIE1vdmUgRnJhbWVMb2FkZXI6OmFy
ZVBsdWdpbnNFbmFibGVkIHRvIEZyYW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAK
aW5kZXggYzgyZmY3YzVkM2Y2YmM4ODQ1ODI5NGJmZjFiNzAwYTMxZTBiZmExZS4uYjFhMmNmYjEy
NmU0NzhhYjg2MzA2MzAyMWIxMTdjNGE2NjEwMmE3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmNwcApAQCAtMjgyNyw2ICsyODI3LDk3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5k
bGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgT3B0aW9u
CiAgICAgcmV0dXJuIGhhbmRsZWQ7CiB9CiAKK3ZvaWQgRXZlbnRIYW5kbGVyOjp1cGRhdGVTY3Jv
bGxDaGFpbmluZ0Jsb2NrZXIoU2Nyb2xsYWJsZUFyZWEqIHNjcm9sbGFibGVBcmVhLCBTY3JvbGxD
aGFpbmluZ0Jsb2NrZXImIHNjcm9sbENoYWluaW5nQmxvY2tlcikKK3sKKyAgICBpZiAoIXNjcm9s
bGFibGVBcmVhKQorICAgICAgICByZXR1cm47CisgICAgc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLmJs
b2NrWCB8PSBzY3JvbGxhYmxlQXJlYS0+aG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpICE9
IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0bzsKKyAgICBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIuYmxv
Y2tZIHw9IHNjcm9sbGFibGVBcmVhLT52ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpICE9IE92
ZXJzY3JvbGxCZWhhdmlvcjo6QXV0bzsKK30KKworYm9vbCBFdmVudEhhbmRsZXI6OnNob3VsZEJs
b2NrU2Nyb2xsQ2hhaW5pbmcoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBj
b25zdCBTY3JvbGxDaGFpbmluZ0Jsb2NrZXImIHNjcm9sbENoYWluaW5nQmxvY2tlcikKK3sKKyAg
ICBhdXRvIGJpYXNlZERlbHRhID0gUGxhdGZvcm1XaGVlbEV2ZW50Ojp3aGVlbERlbHRhQmlhc2lu
Z1Rvd2FyZHNWZXJ0aWNhbCh3aGVlbEV2ZW50LmRlbHRhKCkpOworICAgIGlmICgoc2Nyb2xsQ2hh
aW5pbmdCbG9ja2VyLmJsb2NrWCAmJiBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIuYmxvY2tZKQorICAg
ICAgICB8fCAoc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLmJsb2NrWCAmJiAhYmlhc2VkRGVsdGEuaGVp
Z2h0KCkpCisgICAgICAgIHx8IChzY3JvbGxDaGFpbmluZ0Jsb2NrZXIuYmxvY2tZICYmICFiaWFz
ZWREZWx0YS53aWR0aCgpKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGZhbHNl
OworfQorCisjaWYgRU5BQkxFKFdIRUVMX0VWRU5UX0xBVENISU5HKQorc3RhdGljIHZvaWQgdXBk
YXRlUGFyZW50RnJhbWVTY3JvbGxDaGFpbmluZ0Jsb2NrZXIoU2Nyb2xsYWJsZUFyZWEqIHNjcm9s
bGFibGVBcmVhLCBGcmFtZSYgZnJhbWUsIFNjcm9sbENoYWluaW5nQmxvY2tlciYgc2Nyb2xsQ2hh
aW5pbmdCbG9ja2VyKQoreworICAgIGF1dG8qIHBhcmVudCA9IGZyYW1lLnRyZWUoKS5wYXJlbnQo
KTsKKyAgICBpZiAoIXNjcm9sbGFibGVBcmVhKQorICAgICAgICBzY3JvbGxhYmxlQXJlYSA9IGZy
YW1lLnZpZXcoKTsKKyAgICBpZiAoIWZyYW1lLnBhZ2UoKSB8fCAhcGFyZW50IHx8ICFzY3JvbGxh
YmxlQXJlYSkKKyAgICAgICAgcmV0dXJuOworICAgIEV2ZW50SGFuZGxlcjo6dXBkYXRlU2Nyb2xs
Q2hhaW5pbmdCbG9ja2VyKHNjcm9sbGFibGVBcmVhLCBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIpOwor
ICAgIGZyYW1lLnBhZ2UoKS0+c2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyKCkudXBkYXRlU2Nyb2xs
Q2hhaW5pbmdCbG9ja2VyKCpwYXJlbnQsIHNjcm9sbENoYWluaW5nQmxvY2tlcik7Cit9CisjZW5k
aWYKKworc3RhdGljIHZvaWQgYWRqdXN0RGVsdGFzKGNvbnN0IFNjcm9sbENoYWluaW5nQmxvY2tl
ciYgc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLCBGbG9hdFNpemUmIGZpbHRlcmVkUGxhdGZvcm1EZWx0
YSkKK3sKKyAgICAvLyBJZiB3aGVlbEV2ZW50IGlzIGJpYXMgdG8gaG9yaXpvbnRhbCwgZGVsdGFZ
IHNob3VsZCBiZSB6ZXJvIHRvbywgb3RoZXJ3aXNlIGl0IHdpbGwgcGVyZm9ybSB2ZXJ0aWNhbCBz
Y3JvbGwuCisgICAgLy8gVmljZSB2ZXJzYS4KKyAgICBhdXRvIGJpYXNlZERlbHRhID0gUGxhdGZv
cm1XaGVlbEV2ZW50Ojp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbChmaWx0ZXJlZFBs
YXRmb3JtRGVsdGEpOworICAgIGlmIChzY3JvbGxDaGFpbmluZ0Jsb2NrZXIuYmxvY2tYKSB7Cisg
ICAgICAgIGZpbHRlcmVkUGxhdGZvcm1EZWx0YS5zZXRXaWR0aCgwKTsKKyAgICAgICAgaWYgKCFi
aWFzZWREZWx0YS5oZWlnaHQoKSkKKyAgICAgICAgICAgIGZpbHRlcmVkUGxhdGZvcm1EZWx0YS5z
ZXRIZWlnaHQoMCk7CisgICAgfQorICAgIGlmIChzY3JvbGxDaGFpbmluZ0Jsb2NrZXIuYmxvY2tZ
KSB7CisgICAgICAgIGZpbHRlcmVkUGxhdGZvcm1EZWx0YS5zZXRIZWlnaHQoMCk7CisgICAgICAg
IGlmICghYmlhc2VkRGVsdGEud2lkdGgoKSkKKyAgICAgICAgICAgIGZpbHRlcmVkUGxhdGZvcm1E
ZWx0YS5zZXRXaWR0aCgwKTsKKyAgICB9Cit9CisKK3N0YXRpYyBib29sIGlzU3JvbGxDaGFpbmlu
Z1N0b3BwZWRCeU92ZXJzY3JvbGxCZWhhdmlvcihXZWFrUHRyPFNjcm9sbGFibGVBcmVhPiBzY3Jv
bGxhYmxlQXJlYSwgRnJhbWUmIGZyYW1lLCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQs
IFNjcm9sbENoYWluaW5nQmxvY2tlciBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIsIGJvb2wmIGhhbmRs
ZWRFdmVudCkKK3sKKyNpZiBFTkFCTEUoV0hFRUxfRVZFTlRfTEFUQ0hJTkcpCisgICAgaWYgKCFz
Y3JvbGxhYmxlQXJlYSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgRmxvYXRTaXplIGZp
bHRlcmVkUGxhdGZvcm1EZWx0YSh3aGVlbEV2ZW50LmRlbHRhWCgpLCB3aGVlbEV2ZW50LmRlbHRh
WSgpKTsKKyAgICBpZiAoc2Nyb2xsYWJsZUFyZWEgIT0gZnJhbWUudmlldygpKSB7CisgICAgICAg
IC8vIFdoZWVsIGV2ZW50IGlzIGdvaW5nIHRvIGJlIGhhbmRsZWQgYnkgRnJhbWVWaWV3IGluIHBy
b2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKCksCisgICAgICAgIC8vIHNob3VsZCBsZXQgc2Ny
b2xsYWJsZUFyZWEncyBvdmVyc2Nyb2xsLWJlaGF2aW9yIGVmZmVjdCBTY3JvbGxDaGFpbmluZ0Js
b2NrZXIuCisgICAgICAgIEV2ZW50SGFuZGxlcjo6dXBkYXRlU2Nyb2xsQ2hhaW5pbmdCbG9ja2Vy
KHNjcm9sbGFibGVBcmVhLmdldCgpLCBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIpOworICAgIH0KKwor
ICAgIGF1dG8gYmlhc2VkRGVsdGEgPSBQbGF0Zm9ybVdoZWVsRXZlbnQ6OndoZWVsRGVsdGFCaWFz
aW5nVG93YXJkc1ZlcnRpY2FsKHdoZWVsRXZlbnQuZGVsdGEoKSk7CisgICAgaWYgKHNjcm9sbENo
YWluaW5nQmxvY2tlci5ibG9ja1ggJiYgIWJpYXNlZERlbHRhLmhlaWdodCgpKSB7CisgICAgICAg
IC8vIElmIHRoZSBob3Jpem9udGFsIHNjcm9sbCBjaGFpbmluZyBpcyBibG9ja2VkIGJ5IG92ZXJz
Y3JvbGwtYmVoYXZpb3IgaW4gYSBzdWJmcmFtZS4KKyAgICAgICAgLy8gSXQgcHJvcGFnYXRlcyBp
dHMgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIHRvIHBhcmVudCBmcmFtZXMgYW5kIGV2ZW50dWFsbHkg
bGV0IG1haW5mcmFtZQorICAgICAgICAvLyBkZWNpZGUgd2hldGhlciBuZWVkIHRvIHRyaWdnZXIg
YSBzd2lwZSBnZXN0dXJlIG9yIG5vdC4KKyAgICAgICAgaWYgKGZyYW1lLmlzTWFpbkZyYW1lKCkp
IHsKKyAgICAgICAgICAgIGhhbmRsZWRFdmVudCA9IHRydWU7CisgICAgICAgICAgICAvLyBJbiBt
YWluIGZyYW1lLCBpZiB0aGUgc2Nyb2xsIHBvc2l0aW9uIHJlYWNoZXMgb3QgaXRzIGVkZ2VzLCB0
cmlnZ2VyIHRoZSBzd2lwZSBnZXN0dXJlLCBvdGhlcndpc2Ugbm90LgorICAgICAgICAgICAgYXV0
byBwb3NpdGlvblggPSBzY3JvbGxhYmxlQXJlYS0+c2Nyb2xsUG9zaXRpb24oKS54KCk7CisgICAg
ICAgICAgICBpZiAoKHBvc2l0aW9uWCA8PSBzY3JvbGxhYmxlQXJlYS0+bWluaW11bVNjcm9sbFBv
c2l0aW9uKCkueCgpICYmIGZpbHRlcmVkUGxhdGZvcm1EZWx0YS53aWR0aCgpID4gMCkKKyAgICAg
ICAgICAgICAgICB8fCAocG9zaXRpb25YID49IHNjcm9sbGFibGVBcmVhLT5tYXhpbXVtU2Nyb2xs
UG9zaXRpb24oKS54KCkgJiYgZmlsdGVyZWRQbGF0Zm9ybURlbHRhLndpZHRoKCkgPCAwKSkKKyAg
ICAgICAgICAgICAgICBoYW5kbGVkRXZlbnQgPSBmYWxzZTsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIHVwZGF0ZVBhcmVudEZyYW1lU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKHNjcm9sbGFi
bGVBcmVhLmdldCgpLCBmcmFtZSwgc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKTsKKyAgICAgICAgICAg
IGhhbmRsZWRFdmVudCA9IGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKworICAgIGlmIChFdmVudEhhbmRsZXI6OnNob3VsZEJsb2NrU2Nyb2xsQ2hhaW5pbmco
d2hlZWxFdmVudCwgc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKSkgeworICAgICAgICBoYW5kbGVkRXZl
bnQgPSB0cnVlOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBhZGp1c3REZWx0
YXMoc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLCBmaWx0ZXJlZFBsYXRmb3JtRGVsdGEpOworICAgIHdo
ZWVsRXZlbnQgPSB3aGVlbEV2ZW50LmNvcHlXaXRoRGVsdGFzQW5kVmVsb2NpdHkoZmlsdGVyZWRQ
bGF0Zm9ybURlbHRhLndpZHRoKCksIGZpbHRlcmVkUGxhdGZvcm1EZWx0YS5oZWlnaHQoKSwgd2hl
ZWxFdmVudC5zY3JvbGxpbmdWZWxvY2l0eSgpKTsKKyNlbmRpZgorICAgIHJldHVybiBmYWxzZTsK
K30KKwogYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnRJbnRlcm5hbChjb25zdCBQ
bGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50LCBPcHRpb25TZXQ8V2hlZWxFdmVudFByb2Nlc3NpbmdT
dGVwcz4gcHJvY2Vzc2luZ1N0ZXBzLCBPcHRpb25TZXQ8RXZlbnRIYW5kbGluZz4mIGhhbmRsaW5n
KQogewogICAgIGF1dG8qIGRvY3VtZW50ID0gbV9mcmFtZS5kb2N1bWVudCgpOwpAQCAtMjkxOSwx
MiArMzAxMCwyNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudEludGVybmFs
KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgZXZlbnQsIE9wdAogI2lmIEVOQUJMRShXSEVFTF9F
VkVOVF9MQVRDSElORykKICAgICBpZiAoYWxsb3dTY3JvbGxpbmcpCiAgICAgICAgIGFsbG93U2Ny
b2xsaW5nID0gbV9mcmFtZS5wYWdlKCktPnNjcm9sbExhdGNoaW5nQ29udHJvbGxlcigpLmxhdGNo
aW5nQWxsb3dzU2Nyb2xsaW5nSW5GcmFtZShtX2ZyYW1lLCBzY3JvbGxhYmxlQXJlYSk7CisgICAg
U2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIHNjcm9sbENoYWluaW5nQmxvY2tlciA9IG1fZnJhbWUucGFn
ZSgpLT5zY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIoKS5nZXRTY3JvbGxDaGFpbmluZ0Jsb2NrZXIo
bV9mcmFtZSk7CiAjZW5kaWYKIAogICAgIGlmIChhbGxvd1Njcm9sbGluZykgewotICAgICAgICAv
LyBGSVhNRTogcHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxpbmcoKSBpcyBvbmx5IGNhbGxlZCBm
b3IgRnJhbWVWaWV3IHNjcm9sbGluZywgbm90IG92ZXJmbG93IHNjcm9sbGluZywgd2hpY2ggaXMg
Y29uZnVzaW5nLgotICAgICAgICBoYW5kbGVkRXZlbnQgPSBwcm9jZXNzV2hlZWxFdmVudEZvclNj
cm9sbGluZyhldmVudCwgc2Nyb2xsYWJsZUFyZWEsIGhhbmRsaW5nKTsKLSAgICAgICAgcHJvY2Vz
c1doZWVsRXZlbnRGb3JTY3JvbGxTbmFwKGV2ZW50LCBzY3JvbGxhYmxlQXJlYSk7CisgICAgICAg
IFBsYXRmb3JtV2hlZWxFdmVudCBhZGp1c3RlZFdoZWVsRXZlbnQgPSBQbGF0Zm9ybVdoZWVsRXZl
bnQoZXZlbnQpOworICAgICAgICBpZiAoIWlzU3JvbGxDaGFpbmluZ1N0b3BwZWRCeU92ZXJzY3Jv
bGxCZWhhdmlvcihzY3JvbGxhYmxlQXJlYSwgbV9mcmFtZSwgYWRqdXN0ZWRXaGVlbEV2ZW50LCBz
Y3JvbGxDaGFpbmluZ0Jsb2NrZXIsIGhhbmRsZWRFdmVudCkpIHsKKyAgICAgICAgICAgIC8vIEZJ
WE1FOiBwcm9jZXNzV2hlZWxFdmVudEZvclNjcm9sbGluZygpIGlzIG9ubHkgY2FsbGVkIGZvciBG
cmFtZVZpZXcgc2Nyb2xsaW5nLCBub3Qgb3ZlcmZsb3cgc2Nyb2xsaW5nLCB3aGljaCBpcyBjb25m
dXNpbmcuCisgICAgICAgICAgICBoYW5kbGVkRXZlbnQgPSBwcm9jZXNzV2hlZWxFdmVudEZvclNj
cm9sbGluZyhhZGp1c3RlZFdoZWVsRXZlbnQsIHNjcm9sbGFibGVBcmVhLCBoYW5kbGluZyk7Cisg
ICAgICAgICAgICBwcm9jZXNzV2hlZWxFdmVudEZvclNjcm9sbFNuYXAoYWRqdXN0ZWRXaGVlbEV2
ZW50LCBzY3JvbGxhYmxlQXJlYSk7CisjaWYgIUVOQUJMRShXSEVFTF9FVkVOVF9MQVRDSElORykK
KyAgICAgICAgICAgIGlmICghaGFuZGxlZEV2ZW50ICYmIG1fZnJhbWUudmlldygpKSB7CisgICAg
ICAgICAgICAgICAgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIHNjcm9sbENoYWluaW5nQmxvY2tlciA9
IHsgbV9mcmFtZS52aWV3KCktPmhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSAhPSBPdmVy
c2Nyb2xsQmVoYXZpb3I6OkF1dG8sIG1fZnJhbWUudmlldygpLT52ZXJ0aWNhbE92ZXJzY3JvbGxC
ZWhhdmlvcigpICE9IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0byB9OworICAgICAgICAgICAgICAg
IGlmIChzaG91bGRCbG9ja1Njcm9sbENoYWluaW5nKGFkanVzdGVkV2hlZWxFdmVudCwgc2Nyb2xs
Q2hhaW5pbmdCbG9ja2VyKSkKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlZEV2ZW50ID0gdHJ1
ZTsKKyAgICAgICAgICAgIH0KKyNlbmRpZgorICAgICAgICB9CisgICAgfSBlbHNlIGlmICghbV9m
cmFtZS5pc01haW5GcmFtZSgpKSB7CisjaWYgRU5BQkxFKFdIRUVMX0VWRU5UX0xBVENISU5HKQor
ICAgICAgICB1cGRhdGVQYXJlbnRGcmFtZVNjcm9sbENoYWluaW5nQmxvY2tlcihzY3JvbGxhYmxl
QXJlYS5nZXQoKSwgbV9mcmFtZSwgc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKTsKKyNlbmRpZgogICAg
IH0KIAogICAgIHJldHVybiBoYW5kbGVkRXZlbnQ7CkBAIC0yOTQxLDIwICszMDQ3LDIyIEBAIHN0
YXRpYyB2b2lkIGhhbmRsZVdoZWVsRXZlbnRQaGFzZUluU2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJs
ZUFyZWEmIHNjcm9sbGFibGVBcmVhCiAjZW5kaWYKIH0KIAotc3RhdGljIGJvb2wgZGlkU2Nyb2xs
SW5TY3JvbGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEsIGNvbnN0IFdo
ZWVsRXZlbnQmIHdoZWVsRXZlbnQpCitzdGF0aWMgYm9vbCBkaWRTY3JvbGxJblNjcm9sbGFibGVB
cmVhKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSwgY29uc3QgV2hlZWxFdmVudCYgd2hl
ZWxFdmVudCwgY29uc3QgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyJiBzY3JvbGxDaGFpbmluZ0Jsb2Nr
ZXIpCiB7CisgICAgRmxvYXRTaXplIGZpbHRlcmVkUGxhdGZvcm1EZWx0YSh3aGVlbEV2ZW50LmRl
bHRhWCgpLCB3aGVlbEV2ZW50LmRlbHRhWSgpKTsKKyAgICBhZGp1c3REZWx0YXMoc2Nyb2xsQ2hh
aW5pbmdCbG9ja2VyLCBmaWx0ZXJlZFBsYXRmb3JtRGVsdGEpOwogICAgIFNjcm9sbEdyYW51bGFy
aXR5IHNjcm9sbEdyYW51bGFyaXR5ID0gd2hlZWxHcmFudWxhcml0eVRvU2Nyb2xsR3JhbnVsYXJp
dHkod2hlZWxFdmVudC5kZWx0YU1vZGUoKSk7CiAgICAgYm9vbCBkaWRIYW5kbGVXaGVlbEV2ZW50
ID0gZmFsc2U7Ci0gICAgaWYgKGZsb2F0IGFic29sdXRlRGVsdGEgPSBzdGQ6OmFicyh3aGVlbEV2
ZW50LmRlbHRhWCgpKSkKLSAgICAgICAgZGlkSGFuZGxlV2hlZWxFdmVudCB8PSBzY3JvbGxhYmxl
QXJlYS5zY3JvbGwod2hlZWxFdmVudC5kZWx0YVgoKSA+IDAgPyBTY3JvbGxSaWdodCA6IFNjcm9s
bExlZnQsIHNjcm9sbEdyYW51bGFyaXR5LCBhYnNvbHV0ZURlbHRhKTsKKyAgICBpZiAoZmxvYXQg
YWJzb2x1dGVEZWx0YSA9IHN0ZDo6YWJzKGZpbHRlcmVkUGxhdGZvcm1EZWx0YS53aWR0aCgpKSkK
KyAgICAgICAgZGlkSGFuZGxlV2hlZWxFdmVudCB8PSBzY3JvbGxhYmxlQXJlYS5zY3JvbGwoZmls
dGVyZWRQbGF0Zm9ybURlbHRhLndpZHRoKCkgPiAwID8gU2Nyb2xsUmlnaHQgOiBTY3JvbGxMZWZ0
LCBzY3JvbGxHcmFudWxhcml0eSwgYWJzb2x1dGVEZWx0YSk7CiAKLSAgICBpZiAoZmxvYXQgYWJz
b2x1dGVEZWx0YSA9IHN0ZDo6YWJzKHdoZWVsRXZlbnQuZGVsdGFZKCkpKQotICAgICAgICBkaWRI
YW5kbGVXaGVlbEV2ZW50IHw9IHNjcm9sbGFibGVBcmVhLnNjcm9sbCh3aGVlbEV2ZW50LmRlbHRh
WSgpID4gMCA/IFNjcm9sbERvd24gOiBTY3JvbGxVcCwgc2Nyb2xsR3JhbnVsYXJpdHksIGFic29s
dXRlRGVsdGEpOworICAgIGlmIChmbG9hdCBhYnNvbHV0ZURlbHRhID0gc3RkOjphYnMoZmlsdGVy
ZWRQbGF0Zm9ybURlbHRhLmhlaWdodCgpKSkKKyAgICAgICAgZGlkSGFuZGxlV2hlZWxFdmVudCB8
PSBzY3JvbGxhYmxlQXJlYS5zY3JvbGwoZmlsdGVyZWRQbGF0Zm9ybURlbHRhLmhlaWdodCgpID4g
MCA/IFNjcm9sbERvd24gOiBTY3JvbGxVcCwgc2Nyb2xsR3JhbnVsYXJpdHksIGFic29sdXRlRGVs
dGEpOwogCiAgICAgcmV0dXJuIGRpZEhhbmRsZVdoZWVsRXZlbnQ7CiB9CiAKLWJvb2wgRXZlbnRI
YW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2luZ0JveChOb2RlKiBz
dGFydE5vZGUsIGNvbnN0IFdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIGNvbnN0IEZsb2F0U2l6ZSYg
ZmlsdGVyZWRQbGF0Zm9ybURlbHRhLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlcmVkVmVsb2NpdHks
IE9wdGlvblNldDxFdmVudEhhbmRsaW5nPiBldmVudEhhbmRsaW5nKQorYm9vbCBFdmVudEhhbmRs
ZXI6OmhhbmRsZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94KE5vZGUqIHN0YXJ0
Tm9kZSwgY29uc3QgV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgRmxvYXRTaXplJiBmaWx0ZXJlZFBs
YXRmb3JtRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyZWRWZWxvY2l0eSwgT3B0aW9uU2V0
PEV2ZW50SGFuZGxpbmc+IGV2ZW50SGFuZGxpbmcpCiB7CiAgICAgYm9vbCBzaG91bGRIYW5kbGVF
dmVudCA9IHdoZWVsRXZlbnQuZGVsdGFYKCkgfHwgd2hlZWxFdmVudC5kZWx0YVkoKTsKICNpZiBF
TkFCTEUoV0hFRUxfRVZFTlRfTEFUQ0hJTkcpCkBAIC0yOTc1LDIyICszMDgzLDMzIEBAIGJvb2wg
RXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2luZ0JveChO
b2RlKiBzdGFydE5vZGUsIGNvCiAgICAgaWYgKCFzaG91bGRIYW5kbGVFdmVudCkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCisgICAgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIHNjcm9sbENoYWluaW5n
QmxvY2tlciA9IHsgZmFsc2UsIGZhbHNlIH07CiAgICAgaWYgKGlzPFJlbmRlckxpc3RCb3g+KGlu
aXRpYWxFbmNsb3NpbmdCb3gpKQotICAgICAgICByZXR1cm4gZGlkU2Nyb2xsSW5TY3JvbGxhYmxl
QXJlYShkb3duY2FzdDxSZW5kZXJMaXN0Qm94Pihpbml0aWFsRW5jbG9zaW5nQm94KSwgd2hlZWxF
dmVudCk7CisgICAgICAgIHJldHVybiBkaWRTY3JvbGxJblNjcm9sbGFibGVBcmVhKGRvd25jYXN0
PFJlbmRlckxpc3RCb3g+KGluaXRpYWxFbmNsb3NpbmdCb3gpLCB3aGVlbEV2ZW50LCBzY3JvbGxD
aGFpbmluZ0Jsb2NrZXIpOwogCisgICAgYXV0byBiaWFzZWREZWx0YSA9IFBsYXRmb3JtV2hlZWxF
dmVudDo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoRmxvYXRTaXplKHdoZWVsRXZl
bnQuZGVsdGFYKCksIHdoZWVsRXZlbnQuZGVsdGFZKCkpKTsKICAgICBSZW5kZXJCb3gqIGN1cnJl
bnRFbmNsb3NpbmdCb3ggPSAmaW5pdGlhbEVuY2xvc2luZ0JveDsKICAgICB3aGlsZSAoY3VycmVu
dEVuY2xvc2luZ0JveCkgewogICAgICAgICBpZiAoUmVuZGVyTGF5ZXIqIGJveExheWVyID0gY3Vy
cmVudEVuY2xvc2luZ0JveC0+bGF5ZXIoKSkgewogICAgICAgICAgICAgYXV0byBwbGF0Zm9ybUV2
ZW50ID0gd2hlZWxFdmVudC51bmRlcmx5aW5nUGxhdGZvcm1FdmVudCgpOwogICAgICAgICAgICAg
Ym9vbCBzY3JvbGxpbmdXYXNIYW5kbGVkOwogICAgICAgICAgICAgaWYgKHBsYXRmb3JtRXZlbnQp
IHsKKyAgICAgICAgICAgICAgICBhZGp1c3REZWx0YXMoc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLCBm
aWx0ZXJlZFBsYXRmb3JtRGVsdGEpOwogICAgICAgICAgICAgICAgIGF1dG8gY29waWVkRXZlbnQg
PSBwbGF0Zm9ybUV2ZW50LT5jb3B5V2l0aERlbHRhc0FuZFZlbG9jaXR5KGZpbHRlcmVkUGxhdGZv
cm1EZWx0YS53aWR0aCgpLCBmaWx0ZXJlZFBsYXRmb3JtRGVsdGEuaGVpZ2h0KCksIGZpbHRlcmVk
VmVsb2NpdHkpOwogICAgICAgICAgICAgICAgIHNjcm9sbGluZ1dhc0hhbmRsZWQgPSBoYW5kbGVX
aGVlbEV2ZW50SW5TY3JvbGxhYmxlQXJlYShjb3BpZWRFdmVudCwgKmJveExheWVyLCBldmVudEhh
bmRsaW5nKTsKICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHNjcm9sbGluZ1dh
c0hhbmRsZWQgPSBkaWRTY3JvbGxJblNjcm9sbGFibGVBcmVhKCpib3hMYXllciwgd2hlZWxFdmVu
dCk7CisgICAgICAgICAgICAgICAgc2Nyb2xsaW5nV2FzSGFuZGxlZCA9IGRpZFNjcm9sbEluU2Ny
b2xsYWJsZUFyZWEoKmJveExheWVyLCB3aGVlbEV2ZW50LCBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIp
OwogCiAgICAgICAgICAgICBpZiAoc2Nyb2xsaW5nV2FzSGFuZGxlZCkKICAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAgICAgaWYgKGN1cnJlbnRFbmNsb3NpbmdCb3gtPmVs
ZW1lbnQoKSAhPSBjdXJyZW50RW5jbG9zaW5nQm94LT5kb2N1bWVudCgpLmRvY3VtZW50RWxlbWVu
dCgpKSB7CisgICAgICAgICAgICAgICAgdXBkYXRlU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKGJveExh
eWVyLCBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIpOworICAgICAgICAgICAgICAgIGlmICgoc2Nyb2xs
Q2hhaW5pbmdCbG9ja2VyLmJsb2NrWCAmJiBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIuYmxvY2tZKQor
ICAgICAgICAgICAgICAgICAgICB8fCAoc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLmJsb2NrWSAmJiAh
Ymlhc2VkRGVsdGEud2lkdGgoKSkKKyAgICAgICAgICAgICAgICAgICAgfHwgKHNjcm9sbENoYWlu
aW5nQmxvY2tlci5ibG9ja1ggJiYgIWJpYXNlZERlbHRhLmhlaWdodCgpKSkKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAg
ICBjdXJyZW50RW5jbG9zaW5nQm94ID0gY3VycmVudEVuY2xvc2luZ0JveC0+Y29udGFpbmluZ0Js
b2NrKCk7CkBAIC0zMDcwLDYgKzMxODksNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6ZGVmYXVsdFdo
ZWVsRXZlbnRIYW5kbGVyKE5vZGUqIHN0YXJ0Tm9kZSwgV2hlZWxFdmVudCYgd2hlZWxFdgogICAg
IGlmICghbV9mcmFtZS5wYWdlKCktPnNjcm9sbExhdGNoaW5nQ29udHJvbGxlcigpLmxhdGNoaW5n
QWxsb3dzU2Nyb2xsaW5nSW5GcmFtZShtX2ZyYW1lLCBsYXRjaGVkU2Nyb2xsZXIpKQogICAgICAg
ICByZXR1cm47CiAKKyAgICBTY3JvbGxDaGFpbmluZ0Jsb2NrZXIgc2Nyb2xsQ2hhaW5pbmdCbG9j
a2VyID0gbV9mcmFtZS5wYWdlKCktPnNjcm9sbExhdGNoaW5nQ29udHJvbGxlcigpLmdldFNjcm9s
bENoYWluaW5nQmxvY2tlcihtX2ZyYW1lKTsKICAgICBpZiAobGF0Y2hlZFNjcm9sbGVyKSB7CiAg
ICAgICAgIGlmIChsYXRjaGVkU2Nyb2xsZXIgPT0gbV9mcmFtZS52aWV3KCkpIHsKICAgICAgICAg
ICAgIC8vIEZyYW1lVmlldyBzY3JvbGxpbmcgaXMgaGFuZGxlZCB2aWEgcHJvY2Vzc1doZWVsRXZl
bnRGb3JTY3JvbGxpbmcoKS4KQEAgLTMwNzgsNiArMzE5OCw3IEBAIHZvaWQgRXZlbnRIYW5kbGVy
OjpkZWZhdWx0V2hlZWxFdmVudEhhbmRsZXIoTm9kZSogc3RhcnROb2RlLCBXaGVlbEV2ZW50JiB3
aGVlbEV2CiAKICAgICAgICAgYXV0byBwbGF0Zm9ybUV2ZW50ID0gd2hlZWxFdmVudC51bmRlcmx5
aW5nUGxhdGZvcm1FdmVudCgpOwogICAgICAgICBpZiAocGxhdGZvcm1FdmVudCkgeworICAgICAg
ICAgICAgYWRqdXN0RGVsdGFzKHNjcm9sbENoYWluaW5nQmxvY2tlciwgZmlsdGVyZWRQbGF0Zm9y
bURlbHRhKTsKICAgICAgICAgICAgIGF1dG8gY29waWVkRXZlbnQgPSBwbGF0Zm9ybUV2ZW50LT5j
b3B5V2l0aERlbHRhc0FuZFZlbG9jaXR5KGZpbHRlcmVkUGxhdGZvcm1EZWx0YS53aWR0aCgpLCBm
aWx0ZXJlZFBsYXRmb3JtRGVsdGEuaGVpZ2h0KCksIGZpbHRlcmVkVmVsb2NpdHkpOwogICAgICAg
ICAgICAgaWYgKGhhbmRsZVdoZWVsRXZlbnRJblNjcm9sbGFibGVBcmVhKGNvcGllZEV2ZW50LCAq
bGF0Y2hlZFNjcm9sbGVyLCBldmVudEhhbmRsaW5nKSkKICAgICAgICAgICAgICAgICB3aGVlbEV2
ZW50LnNldERlZmF1bHRIYW5kbGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAppbmRl
eCAxYjE3NWRhNzkzYzZjNTEyZDEwNDk5ZmU5MWYwZjU4YzE5YTc3OWVhLi4wYzI4ZjU1OWE5ZDQ3
ZDY4ODUyYTQxYTgxNjE0YzQ2Yjk1NmI3ZDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50SGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVy
LmgKQEAgLTM1Myw2ICszNTMsMTAgQEAgcHVibGljOgogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQp
CiAgICAgRWxlbWVudCogZHJhZ2dpbmdFbGVtZW50KCkgY29uc3Q7CiAjZW5kaWYKKworICAgIHN0
YXRpYyB2b2lkIHVwZGF0ZVNjcm9sbENoYWluaW5nQmxvY2tlcihTY3JvbGxhYmxlQXJlYSosIFNj
cm9sbENoYWluaW5nQmxvY2tlciYpOworICAgIHN0YXRpYyBib29sIHNob3VsZEJsb2NrU2Nyb2xs
Q2hhaW5pbmcoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgY29uc3QgU2Nyb2xsQ2hhaW5pbmdC
bG9ja2VyJik7CisKIHByaXZhdGU6CiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKICAgICBzdGF0
aWMgRHJhZ1N0YXRlJiBkcmFnU3RhdGUoKTsKQEAgLTQ2OCw3ICs0NzIsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgcHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxTbmFwKGNvbnN0IFBsYXRmb3JtV2hl
ZWxFdmVudCYsIGNvbnN0IFdlYWtQdHI8U2Nyb2xsYWJsZUFyZWE+Jik7CiAgICAgYm9vbCBjb21w
bGV0ZVdpZGdldFdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgY29uc3QgV2Vh
a1B0cjxXaWRnZXQ+JiwgY29uc3QgV2Vha1B0cjxTY3JvbGxhYmxlQXJlYT4mKTsKIAotICAgIGJv
b2wgaGFuZGxlV2hlZWxFdmVudEluQXBwcm9wcmlhdGVFbmNsb3NpbmdCb3goTm9kZSogc3RhcnRO
b2RlLCBjb25zdCBXaGVlbEV2ZW50JiwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJlZFBsYXRmb3Jt
RGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyZWRWZWxvY2l0eSwgT3B0aW9uU2V0PEV2ZW50
SGFuZGxpbmc+KTsKKyAgICBib29sIGhhbmRsZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9z
aW5nQm94KE5vZGUqIHN0YXJ0Tm9kZSwgY29uc3QgV2hlZWxFdmVudCYsIEZsb2F0U2l6ZSYgZmls
dGVyZWRQbGF0Zm9ybURlbHRhLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlcmVkVmVsb2NpdHksIE9w
dGlvblNldDxFdmVudEhhbmRsaW5nPik7CiAKICAgICBib29sIGhhbmRsZVdoZWVsRXZlbnRJblNj
cm9sbGFibGVBcmVhKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIFNjcm9sbGFibGVBcmVhJiwg
T3B0aW9uU2V0PEV2ZW50SGFuZGxpbmc+KTsKICAgICBPcHRpb25hbDxXaGVlbFNjcm9sbEdlc3R1
cmVTdGF0ZT4gdXBkYXRlV2hlZWxHZXN0dXJlU3RhdGUoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50
JiwgT3B0aW9uU2V0PEV2ZW50SGFuZGxpbmc+KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApp
bmRleCBlZWQ0NTNhNjNlMmZiYTRkOGI1ZTI5OWJlOTcyMjg0ZTU5ZDkyNzA4Li5kYjk3YmVhYmIy
MmRlYzY0Njc4MmI5Y2E1ZDUxYWI2NWQyZWUxNWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
Y3BwCkBAIC00MTgsNiArNDE4LDI0IEBAIGJvb2wgRnJhbWVWaWV3OjpkaWRGaXJzdExheW91dCgp
IGNvbnN0CiAgICAgcmV0dXJuIGxheW91dENvbnRleHQoKS5kaWRGaXJzdExheW91dCgpOwogfQog
CitPdmVyc2Nyb2xsQmVoYXZpb3IgRnJhbWVWaWV3Ojpob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2
aW9yKCkgY29uc3QKK3sKKyAgICBhdXRvKiBkb2N1bWVudCA9IGZyYW1lKCkuZG9jdW1lbnQoKTsK
KyAgICBhdXRvIHNjcm9sbGluZ09iamVjdCA9IGRvY3VtZW50ICYmIGRvY3VtZW50LT5kb2N1bWVu
dEVsZW1lbnQoKSA/IGRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKS0+cmVuZGVyZXIoKSA6IG51
bGxwdHI7CisgICAgaWYgKCFzY3JvbGxpbmdPYmplY3QpCisgICAgICAgIHJldHVybiBTY3JvbGxh
YmxlQXJlYTo6aG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpOworICAgIHJldHVybiBzY3Jv
bGxpbmdPYmplY3QtPnN0eWxlKCkub3ZlcnNjcm9sbEJlaGF2aW9yWCgpOworfQorCitPdmVyc2Ny
b2xsQmVoYXZpb3IgRnJhbWVWaWV3Ojp2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpICBjb25z
dAoreworICAgIGF1dG8qIGRvY3VtZW50ID0gZnJhbWUoKS5kb2N1bWVudCgpOworICAgIGF1dG8g
c2Nyb2xsaW5nT2JqZWN0ID0gZG9jdW1lbnQgJiYgZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgp
ID8gZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpLT5yZW5kZXJlcigpIDogbnVsbHB0cjsKKyAg
ICBpZiAoIXNjcm9sbGluZ09iamVjdCkKKyAgICAgICAgcmV0dXJuIFNjcm9sbGFibGVBcmVhOjp2
ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpOworICAgIHJldHVybiBzY3JvbGxpbmdPYmplY3Qt
PnN0eWxlKCkub3ZlcnNjcm9sbEJlaGF2aW9yWSgpOworfQorCiB2b2lkIEZyYW1lVmlldzo6aW52
YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICBpZiAoIXBhcmVudCgpKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCA5MTNlZjI2ZTIwYTUxYjJkNTY0ZWJkMzZlYTJi
MDM4NTkxOTY4ZmU0Li40ODZjZWM5NDZiNTllZmQyMDQ5NGU5MDU0ZGUyNjE2ODA0NjlhMTBlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTc1MCw2ICs3NTAsOSBAQCBwcml2YXRlOgogICAg
IHZvaWQgdW5vYnNjdXJlZENvbnRlbnRTaXplQ2hhbmdlZCgpIGZpbmFsOwogCiAgICAgLy8gU2Ny
b2xsYWJsZUFyZWEgaW50ZXJmYWNlCisgICAgT3ZlcnNjcm9sbEJlaGF2aW9yIGhvcml6b250YWxP
dmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdCBmaW5hbDsKKyAgICBPdmVyc2Nyb2xsQmVoYXZpb3Ig
dmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdCBmaW5hbDsKKwogICAgIHZvaWQgaW52
YWxpZGF0ZVNjcm9sbGJhclJlY3QoU2Nyb2xsYmFyJiwgY29uc3QgSW50UmVjdCYpIGZpbmFsOwog
ICAgIHZvaWQgc2Nyb2xsVG8oY29uc3QgU2Nyb2xsUG9zaXRpb24mKSBmaW5hbDsKICAgICB2b2lk
IHNldFZpc2libGVTY3JvbGxlclRodW1iUmVjdChjb25zdCBJbnRSZWN0JikgZmluYWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0KaW5kZXggNzE0MTUzNjViYWJh
ZjVhOTQyM2EyOWY2MWI3ODJmZmUzMmI0OTMxNy4uYjhiODI2MGY2ZTZhZmMyMTZlNTBiY2QzMjEy
Y2M4NmU3MDUwODIwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRI
YW5kbGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1h
Yy5tbQpAQCAtNzk1LDkgKzc5NSw5IEBAIHN0YXRpYyBTY3JvbGxhYmxlQXJlYSogc2Nyb2xsYWJs
ZUFyZWFGb3JCb3goUmVuZGVyQm94JiBib3gpCiB9CiAKIC8vIEZJWE1FOiBUaGlzIGNvdWxkIGJl
IHdyaXR0ZW4gaW4gdGVybXMgb2YgU2Nyb2xsYWJsZUFyZWE6OmVuY2xvc2luZ1Njcm9sbGFibGVB
cmVhKCkuCi1zdGF0aWMgQ29udGFpbmVyTm9kZSogZmluZEVuY2xvc2luZ1Njcm9sbGFibGVDb250
YWluZXIoQ29udGFpbmVyTm9kZSogbm9kZSwgY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVl
bEV2ZW50KQorc3RhdGljIENvbnRhaW5lck5vZGUqIGZpbmRFbmNsb3NpbmdTY3JvbGxhYmxlQ29u
dGFpbmVyKENvbnRhaW5lck5vZGUqIG5vZGUsIGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hl
ZWxFdmVudCwgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyJiBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIpCiB7
Ci0gICAgYXV0byBiaWFzZWREZWx0YSA9IFNjcm9sbENvbnRyb2xsZXI6OndoZWVsRGVsdGFCaWFz
aW5nVG93YXJkc1ZlcnRpY2FsKHdoZWVsRXZlbnQpOworICAgIGF1dG8gYmlhc2VkRGVsdGEgPSBQ
bGF0Zm9ybVdoZWVsRXZlbnQ6OndoZWVsRGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRpY2FsKHdoZWVs
RXZlbnQuZGVsdGEoKSk7CiAKICAgICAvLyBGaW5kIHRoZSBmaXJzdCBub2RlIHdpdGggYSB2YWxp
ZCBzY3JvbGxhYmxlIGFyZWEgc3RhcnRpbmcgd2l0aCB0aGUgY3VycmVudAogICAgIC8vIG5vZGUg
YW5kIHRyYXZlcnNpbmcgaXRzIHBhcmVudHMgKG9yIHNoYWRvdyBob3N0cykuCkBAIC04MDksMjEg
KzgwOSwyOSBAQCBzdGF0aWMgQ29udGFpbmVyTm9kZSogZmluZEVuY2xvc2luZ1Njcm9sbGFibGVD
b250YWluZXIoQ29udGFpbmVyTm9kZSogbm9kZSwgY29ucwogICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKICAgICAgICAgUmVuZGVyQm94KiBib3ggPSBjYW5kaWRhdGUtPnJlbmRlckJveCgp
OwotICAgICAgICBpZiAoIWJveCB8fCAhYm94LT5jYW5CZVNjcm9sbGVkQW5kSGFzU2Nyb2xsYWJs
ZUFyZWEoKSkKKyAgICAgICAgaWYgKCFib3gpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgCisKICAgICAgICAgYXV0byogc2Nyb2xsYWJsZUFyZWEgPSBzY3JvbGxhYmxlQXJlYUZvckJv
eCgqYm94KTsKLSAgICAgICAgaWYgKCFzY3JvbGxhYmxlQXJlYSkKLSAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICBpZiAoc2Nyb2xsYWJsZUFyZWEgJiYgYm94LT5jYW5CZVNjcm9sbGVkQW5k
SGFzU2Nyb2xsYWJsZUFyZWEoKSkgeworICAgICAgICAgICAgaWYgKHdoZWVsRXZlbnQucGhhc2Uo
KSA9PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZTo6TWF5QmVnaW4gIHx8IHdoZWVsRXZlbnQucGhh
c2UoKSA9PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZTo6Q2FuY2VsbGVkKQorICAgICAgICAgICAg
ICAgIHJldHVybiBjYW5kaWRhdGU7CiAKLSAgICAgICAgaWYgKHdoZWVsRXZlbnQucGhhc2UoKSA9
PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZTo6TWF5QmVnaW4gfHwgd2hlZWxFdmVudC5waGFzZSgp
ID09IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlOjpDYW5jZWxsZWQpCi0gICAgICAgICAgICByZXR1
cm4gY2FuZGlkYXRlOworICAgICAgICAgICAgaWYgKChiaWFzZWREZWx0YS5oZWlnaHQoKSA+IDAg
JiYgIXNjcm9sbGFibGVBcmVhLT5zY3JvbGxlZFRvVG9wKCkpIHx8IChiaWFzZWREZWx0YS5oZWln
aHQoKSA8IDAgJiYgIXNjcm9sbGFibGVBcmVhLT5zY3JvbGxlZFRvQm90dG9tKCkpCisgICAgICAg
ICAgICAgICAgfHwgKGJpYXNlZERlbHRhLndpZHRoKCkgPiAwICYmICFzY3JvbGxhYmxlQXJlYS0+
c2Nyb2xsZWRUb0xlZnQoKSkgfHwgKGJpYXNlZERlbHRhLndpZHRoKCkgPCAwICYmICFzY3JvbGxh
YmxlQXJlYS0+c2Nyb2xsZWRUb1JpZ2h0KCkpKQorICAgICAgICAgICAgICAgIHJldHVybiBjYW5k
aWRhdGU7CisgICAgICAgIH0KKyAgICAgICAgLy8gTGV0IEZyYW1lVmlldzo6aG9yaXpvbnRhbE92
ZXJzY3JvbGxCZWhhdmlvciBkZWNpZGUgd2hpY2ggbm9kZSdzIG92ZXJzY3JvbGwtYmFodmlvciBp
cyBlZmZlY3RpdmUgdG8gRnJhbWVWaWV3LgorICAgICAgICBpZiAoY2FuZGlkYXRlID09IGNhbmRp
ZGF0ZS0+ZG9jdW1lbnQoKS5ib2R5KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
aWYgKGNhbmRpZGF0ZSA9PSBub2RlKQorICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAg
aWYgKChiaWFzZWREZWx0YS5oZWlnaHQoKSA+IDAgJiYgIXNjcm9sbGFibGVBcmVhLT5zY3JvbGxl
ZFRvVG9wKCkpIHx8IChiaWFzZWREZWx0YS5oZWlnaHQoKSA8IDAgJiYgIXNjcm9sbGFibGVBcmVh
LT5zY3JvbGxlZFRvQm90dG9tKCkpCi0gICAgICAgICAgICB8fCAoYmlhc2VkRGVsdGEud2lkdGgo
KSA+IDAgJiYgIXNjcm9sbGFibGVBcmVhLT5zY3JvbGxlZFRvTGVmdCgpKSB8fCAoYmlhc2VkRGVs
dGEud2lkdGgoKSA8IDAgJiYgIXNjcm9sbGFibGVBcmVhLT5zY3JvbGxlZFRvUmlnaHQoKSkpCi0g
ICAgICAgICAgICByZXR1cm4gY2FuZGlkYXRlOworICAgICAgICBFdmVudEhhbmRsZXI6OnVwZGF0
ZVNjcm9sbENoYWluaW5nQmxvY2tlcihzY3JvbGxhYmxlQXJlYSwgc2Nyb2xsQ2hhaW5pbmdCbG9j
a2VyKTsKKyAgICAgICAgaWYgKEV2ZW50SGFuZGxlcjo6c2hvdWxkQmxvY2tTY3JvbGxDaGFpbmlu
Zyh3aGVlbEV2ZW50LCBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIpKQorICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKQEAgLTg2
OCwxMCArODc2LDExIEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpkZXRlcm1pbmVXaGVlbEV2ZW50VGFy
Z2V0KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVuCiAgICAgaWYgKCF2aWV3KQog
ICAgICAgICByZXR1cm47CiAKKyAgICBTY3JvbGxDaGFpbmluZ0Jsb2NrZXIgc2Nyb2xsQ2hhaW5p
bmdCbG9ja2VyOwogICAgIGlmIChldmVudFRhcmdldElzUGxhdGZvcm1XaWRnZXQod2hlZWxFdmVu
dFRhcmdldC5nZXQoKSkpCiAgICAgICAgIHNjcm9sbGFibGVBcmVhID0gc2Nyb2xsYWJsZUFyZWFG
b3JFdmVudFRhcmdldCh3aGVlbEV2ZW50VGFyZ2V0LmdldCgpKTsKICAgICBlbHNlIHsKLSAgICAg
ICAgYXV0byogc2Nyb2xsYWJsZUNvbnRhaW5lciA9IGZpbmRFbmNsb3NpbmdTY3JvbGxhYmxlQ29u
dGFpbmVyKHdoZWVsRXZlbnRUYXJnZXQuZ2V0KCksIHdoZWVsRXZlbnQpOworICAgICAgICBhdXRv
KiBzY3JvbGxhYmxlQ29udGFpbmVyID0gZmluZEVuY2xvc2luZ1Njcm9sbGFibGVDb250YWluZXIo
d2hlZWxFdmVudFRhcmdldC5nZXQoKSwgd2hlZWxFdmVudCwgc2Nyb2xsQ2hhaW5pbmdCbG9ja2Vy
KTsKICAgICAgICAgaWYgKHNjcm9sbGFibGVDb250YWluZXIpCiAgICAgICAgICAgICBzY3JvbGxh
YmxlQXJlYSA9IHNjcm9sbGFibGVBcmVhRm9yQ29udGFpbmVyTm9kZSgqc2Nyb2xsYWJsZUNvbnRh
aW5lcik7CiAgICAgICAgIGVsc2UKQEAgLTg4OSw3ICs4OTgsNyBAQCB2b2lkIEV2ZW50SGFuZGxl
cjo6ZGV0ZXJtaW5lV2hlZWxFdmVudFRhcmdldChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdo
ZWVsRXZlbgogICAgIGlmIChtX2ZyYW1lLmlzTWFpbkZyYW1lKCkgJiYgd2hlZWxFdmVudC5pc0dl
c3R1cmVTdGFydCgpKQogICAgICAgICBwYWdlLT53aGVlbEV2ZW50RGVsdGFGaWx0ZXIoKS0+YmVn
aW5GaWx0ZXJpbmdEZWx0YXMoKTsKIAotICAgIHBhZ2UtPnNjcm9sbExhdGNoaW5nQ29udHJvbGxl
cigpLnVwZGF0ZUFuZEZldGNoTGF0Y2hpbmdTdGF0ZUZvckZyYW1lKG1fZnJhbWUsIHdoZWVsRXZl
bnQsIHdoZWVsRXZlbnRUYXJnZXQsIHNjcm9sbGFibGVBcmVhLCBpc092ZXJXaWRnZXQpOworICAg
IHBhZ2UtPnNjcm9sbExhdGNoaW5nQ29udHJvbGxlcigpLnVwZGF0ZUFuZEZldGNoTGF0Y2hpbmdT
dGF0ZUZvckZyYW1lKG1fZnJhbWUsIHdoZWVsRXZlbnQsIHdoZWVsRXZlbnRUYXJnZXQsIHNjcm9s
bGFibGVBcmVhLCBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIsIGlzT3ZlcldpZGdldCk7CiB9CiAKIHZv
aWQgRXZlbnRIYW5kbGVyOjpyZWNvcmRXaGVlbEV2ZW50Rm9yRGVsdGFGaWx0ZXIoY29uc3QgUGxh
dGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50KQpAQCAtOTA4LDYgKzkxNyw3IEBAIHZvaWQgRXZl
bnRIYW5kbGVyOjpyZWNvcmRXaGVlbEV2ZW50Rm9yRGVsdGFGaWx0ZXIoY29uc3QgUGxhdGZvcm1X
aGVlbEV2ZW50JiB3aGVlCiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQorCiAg
ICAgcGFnZS0+d2hlZWxFdmVudERlbHRhRmlsdGVyKCktPnVwZGF0ZUZyb21EZWx0YShGbG9hdFNp
emUod2hlZWxFdmVudC5kZWx0YVgoKSwgd2hlZWxFdmVudC5kZWx0YVkoKSkpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5n
Q29vcmRpbmF0b3IuY3BwCmluZGV4IDcwZWEwMzZmODNjOWVmMjk0OThkOThkMDFkYWVmMzRmYzM5
MGE3OTMuLjVlYjJjMjVjMjEyZTQ0ZjVlY2VlZWNjMjJhZTQ5MjA5YzcxYzYwMWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5n
Q29vcmRpbmF0b3IuY3BwCkBAIC02OTcsNiArNjk3LDggQEAgdm9pZCBBc3luY1Njcm9sbGluZ0Nv
b3JkaW5hdG9yOjpzZXRTY3JvbGxpbmdOb2RlU2Nyb2xsYWJsZUFyZWFHZW9tZXRyeShTY3JvbGxp
bmcKICAgICBzY3JvbGxpbmdOb2RlLnNldFNjcm9sbGFibGVBcmVhU2l6ZShzY3JvbGxhYmxlQXJl
YS52aXNpYmxlU2l6ZSgpKTsKIAogICAgIFNjcm9sbGFibGVBcmVhUGFyYW1ldGVycyBzY3JvbGxQ
YXJhbWV0ZXJzOworICAgIHNjcm9sbFBhcmFtZXRlcnMuaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhh
dmlvciA9IHNjcm9sbGFibGVBcmVhLmhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKTsKKyAg
ICBzY3JvbGxQYXJhbWV0ZXJzLnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yID0gc2Nyb2xsYWJs
ZUFyZWEudmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKTsKICAgICBzY3JvbGxQYXJhbWV0ZXJz
Lmhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5ID0gc2Nyb2xsYWJsZUFyZWEuaG9yaXpvbnRhbFNj
cm9sbEVsYXN0aWNpdHkoKTsKICAgICBzY3JvbGxQYXJhbWV0ZXJzLnZlcnRpY2FsU2Nyb2xsRWxh
c3RpY2l0eSA9IHNjcm9sbGFibGVBcmVhLnZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eSgpOwogICAg
IHNjcm9sbFBhcmFtZXRlcnMuYWxsb3dzSG9yaXpvbnRhbFNjcm9sbGluZyA9IHNjcm9sbGFibGVB
cmVhLmFsbG93c0hvcml6b250YWxTY3JvbGxpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbExhdGNoaW5nQ29udHJvbGxlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIuY3BwCmluZGV4
IDRlZDRkOTc1YTdlYTQ1MDA5N2ZjYmI0ZGU5YTJlMDMyMWM2YTY3N2IuLmJhMDAxMWQzMWIzNzg1
NTEyYjQ1NDI5MDI5OWE1ZWFjMDFmZWIwZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbExhdGNoaW5nQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyLmNwcApAQCAtMTA4
LDcgKzEwOCw3IEBAIGJvb2wgU2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyOjpsYXRjaGluZ0FsbG93
c1Njcm9sbGluZ0luRnJhbWUoY29uc3QgRnJhbWUmIGZyYW1lCiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCi12b2lkIFNjcm9sbExhdGNoaW5nQ29udHJvbGxlcjo6dXBkYXRlQW5kRmV0Y2hMYXRjaGlu
Z1N0YXRlRm9yRnJhbWUoRnJhbWUmIGZyYW1lLCBjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdo
ZWVsRXZlbnQsIFJlZlB0cjxFbGVtZW50PiYgbGF0Y2hlZEVsZW1lbnQsIFdlYWtQdHI8U2Nyb2xs
YWJsZUFyZWE+JiBzY3JvbGxhYmxlQXJlYSwgYm9vbCYgaXNPdmVyV2lkZ2V0KQordm9pZCBTY3Jv
bGxMYXRjaGluZ0NvbnRyb2xsZXI6OnVwZGF0ZUFuZEZldGNoTGF0Y2hpbmdTdGF0ZUZvckZyYW1l
KEZyYW1lJiBmcmFtZSwgY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBSZWZQ
dHI8RWxlbWVudD4mIGxhdGNoZWRFbGVtZW50LCBXZWFrUHRyPFNjcm9sbGFibGVBcmVhPiYgc2Ny
b2xsYWJsZUFyZWEsIFNjcm9sbENoYWluaW5nQmxvY2tlciYgc2Nyb2xsQ2hhaW5pbmdCbG9ja2Vy
LCBib29sJiBpc092ZXJXaWRnZXQpCiB7CiAgICAgaWYgKHdoZWVsRXZlbnQuaXNHZXN0dXJlU3Rh
cnQoKSkgewogICAgICAgICAvLyBXZSBjYW4gaGF2ZSBleGlzdGluZyBzdGF0ZSBoZXJlIGJlY2F1
c2Ugc3RhdGUgaXMgY2xlYXJlZCBvbiBhIHRpbWVyLgpAQCAtMTE4LDYgKzExOCw3IEBAIHZvaWQg
U2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyOjp1cGRhdGVBbmRGZXRjaExhdGNoaW5nU3RhdGVGb3JG
cmFtZShGcmFtZSYgZnJhbWUsCiAgICAgICAgICAgICBzdGF0ZS53aGVlbEV2ZW50RWxlbWVudCA9
IG1ha2VXZWFrUHRyKGxhdGNoZWRFbGVtZW50LmdldCgpKTsKICAgICAgICAgICAgIGlmIChzaG91
bGRMYXRjaFRvU2Nyb2xsYWJsZUFyZWEoZnJhbWUsIHNjcm9sbGFibGVBcmVhLmdldCgpLCBtX2N1
bXVsYXRpdmVFdmVudERlbHRhKSkKICAgICAgICAgICAgICAgICBzdGF0ZS5zY3JvbGxhYmxlQXJl
YSA9IHNjcm9sbGFibGVBcmVhOworICAgICAgICAgICAgc3RhdGUuc2Nyb2xsQ2hhaW5pbmdCbG9j
a2VyID0gc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyOwogICAgICAgICAgICAgc3RhdGUuaXNPdmVyV2lk
Z2V0ID0gaXNPdmVyV2lkZ2V0OwogCiAgICAgICAgICAgICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xs
TGF0Y2hpbmcsIHN0cmVhbSA8PCAiU2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyOjp1cGRhdGVBbmRG
ZXRjaExhdGNoaW5nU3RhdGVGb3JGcmFtZSgpIC0gcHVzaGluZyBzdGF0ZSBmb3IgRnJhbWUgIiA8
PCAmZnJhbWUgPDwgIiBlbGVtZW50ICIgPDwgc3RhdGUud2hlZWxFdmVudEVsZW1lbnQuZ2V0KCkg
PDwgIiBzY3JvbGxhYmxlQXJlYSAiIDw8IHN0YXRlLnNjcm9sbGFibGVBcmVhKTsKQEAgLTEzMiw4
ICsxMzMsMTAgQEAgdm9pZCBTY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXI6OnVwZGF0ZUFuZEZldGNo
TGF0Y2hpbmdTdGF0ZUZvckZyYW1lKEZyYW1lJiBmcmFtZSwKICAgICAgICAgICAgIHJldHVybjsK
IAogICAgICAgICAvLyBXZSBtYXkgbm90IGhhdmUgbGF0Y2hlZCBhdCBnZXN0dXJlIHN0YXJ0IGJl
Y2F1c2Ugb2Ygc21hbGwgZGVsdGFzLiBSZS1ldmFsdWF0ZSBsYXRjaGluZyBiYXNlZCBvbiBhY2N1
bXVsYXRlZCBkZWx0YS4KLSAgICAgICAgaWYgKCFzdGF0ZS0+c2Nyb2xsYWJsZUFyZWEgJiYgc2hv
dWxkTGF0Y2hUb1Njcm9sbGFibGVBcmVhKGZyYW1lLCBzY3JvbGxhYmxlQXJlYS5nZXQoKSwgbV9j
dW11bGF0aXZlRXZlbnREZWx0YSkpCisgICAgICAgIGlmICghc3RhdGUtPnNjcm9sbGFibGVBcmVh
ICYmIHNob3VsZExhdGNoVG9TY3JvbGxhYmxlQXJlYShmcmFtZSwgc2Nyb2xsYWJsZUFyZWEuZ2V0
KCksIG1fY3VtdWxhdGl2ZUV2ZW50RGVsdGEpKSB7CiAgICAgICAgICAgICBzdGF0ZS0+c2Nyb2xs
YWJsZUFyZWEgPSBzY3JvbGxhYmxlQXJlYTsKKyAgICAgICAgICAgIHN0YXRlLT5zY3JvbGxDaGFp
bmluZ0Jsb2NrZXIgPSBzY3JvbGxDaGFpbmluZ0Jsb2NrZXI7CisgICAgICAgIH0KICAgICB9CiAK
ICAgICBpZiAoIXdoZWVsRXZlbnQudXNlTGF0Y2hlZEV2ZW50RWxlbWVudCgpKQpAQCAtMTQ0LDEy
ICsxNDcsMzQgQEAgdm9pZCBTY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXI6OnVwZGF0ZUFuZEZldGNo
TGF0Y2hpbmdTdGF0ZUZvckZyYW1lKEZyYW1lJiBmcmFtZSwKICAgICAgICAgICAgIGxhdGNoZWRF
bGVtZW50ID0gc3RhdGUud2hlZWxFdmVudEVsZW1lbnQuZ2V0KCk7CiAgICAgICAgICAgICBzY3Jv
bGxhYmxlQXJlYSA9IHN0YXRlLnNjcm9sbGFibGVBcmVhOwogICAgICAgICAgICAgaXNPdmVyV2lk
Z2V0ID0gc3RhdGUuaXNPdmVyV2lkZ2V0OworICAgICAgICAgICAgc2Nyb2xsQ2hhaW5pbmdCbG9j
a2VyID0gc3RhdGUuc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyOwogCiAgICAgICAgICAgICBMT0dfV0lU
SF9TVFJFQU0oU2Nyb2xsTGF0Y2hpbmcsIHN0cmVhbSA8PCAiU2Nyb2xsTGF0Y2hpbmdDb250cm9s
bGVyOjp1cGRhdGVBbmRGZXRjaExhdGNoaW5nU3RhdGVGb3JGcmFtZSgpIC0gdXNpbmcgc3RhdGUg
Zm9yIEZyYW1lICIgPDwgJmZyYW1lIDw8ICIgZWxlbWVudCAiIDw8IGxhdGNoZWRFbGVtZW50Lmdl
dCgpIDw8ICIgc2Nyb2xsYWJsZUFyZWEgIiA8PCBzY3JvbGxhYmxlQXJlYSk7CiAgICAgICAgIH0K
ICAgICB9CiB9CiAKK1Njcm9sbENoYWluaW5nQmxvY2tlciBTY3JvbGxMYXRjaGluZ0NvbnRyb2xs
ZXI6OmdldFNjcm9sbENoYWluaW5nQmxvY2tlcihjb25zdCBGcmFtZSYgZnJhbWUpIGNvbnN0Cit7
CisgICAgaWYgKCFtX2ZyYW1lU3RhdGVTdGFjay5pc0VtcHR5KCkpIHsKKyAgICAgICAgYXV0byog
ZnJhbWVTdGF0ZSA9IHN0YXRlRm9yRnJhbWUoZnJhbWUpOworICAgICAgICBpZiAoZnJhbWVTdGF0
ZSkKKyAgICAgICAgICAgIHJldHVybiBmcmFtZVN0YXRlLT5zY3JvbGxDaGFpbmluZ0Jsb2NrZXI7
CisgICAgfQorCisgICAgcmV0dXJuIHsgZmFsc2UsIGZhbHNlIH07Cit9CisKK3ZvaWQgU2Nyb2xs
TGF0Y2hpbmdDb250cm9sbGVyOjp1cGRhdGVTY3JvbGxDaGFpbmluZ0Jsb2NrZXIoY29uc3QgRnJh
bWUmIGZyYW1lLCBjb25zdCBTY3JvbGxDaGFpbmluZ0Jsb2NrZXImIHNjcm9sbENoYWluaW5nQmxv
Y2tlckZyb21TdWJmcmFtZSkKK3sKKyAgICBpZiAobV9mcmFtZVN0YXRlU3RhY2suaXNFbXB0eSgp
KQorICAgICAgICByZXR1cm47CisgICAgaWYgKGF1dG8qIGZyYW1lU3RhdGUgPSBzdGF0ZUZvckZy
YW1lKGZyYW1lKSkgeworICAgICAgICBmcmFtZVN0YXRlLT5zY3JvbGxDaGFpbmluZ0Jsb2NrZXIu
YmxvY2tYIHw9IHNjcm9sbENoYWluaW5nQmxvY2tlckZyb21TdWJmcmFtZS5ibG9ja1g7CisgICAg
ICAgIGZyYW1lU3RhdGUtPnNjcm9sbENoYWluaW5nQmxvY2tlci5ibG9ja1kgfD0gc2Nyb2xsQ2hh
aW5pbmdCbG9ja2VyRnJvbVN1YmZyYW1lLmJsb2NrWTsKKyAgICB9Cit9CisKIHZvaWQgU2Nyb2xs
TGF0Y2hpbmdDb250cm9sbGVyOjpyZW1vdmVMYXRjaGluZ1N0YXRlRm9yVGFyZ2V0KGNvbnN0IEVs
ZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgaWYgKG1fZnJhbWVTdGF0ZVN0YWNrLmlzRW1wdHkoKSkK
QEAgLTI1Miw2ICsyNzcsOCBAQCB2b2lkIFNjcm9sbExhdGNoaW5nQ29udHJvbGxlcjo6ZHVtcChX
VEY6OlRleHRTdHJlYW0mIHRzKSBjb25zdAogICAgICAgICBtdWx0aWxpbmVTdHJlYW0uZHVtcFBy
b3BlcnR5KCJmcmFtZSIsIFZhbHVlT3JOdWxsKHN0YXRlLmZyYW1lKSk7CiAgICAgICAgIG11bHRp
bGluZVN0cmVhbS5kdW1wUHJvcGVydHkoImVsZW1lbnQiLCBWYWx1ZU9yTnVsbChzdGF0ZS53aGVl
bEV2ZW50RWxlbWVudC5nZXQoKSkpOwogICAgICAgICBtdWx0aWxpbmVTdHJlYW0uZHVtcFByb3Bl
cnR5KCJzY3JvbGxhYmxlIGFyZWEiLCBWYWx1ZU9yTnVsbChzdGF0ZS5zY3JvbGxhYmxlQXJlYS5n
ZXQoKSkpOworICAgICAgICBtdWx0aWxpbmVTdHJlYW0uZHVtcFByb3BlcnR5KCJzdGF0ZS5zY3Jv
bGxDaGFpbmluZ0Jsb2NrZXIuYmxvY2tYIiwgc3RhdGUuc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLmJs
b2NrWCk7CisgICAgICAgIG11bHRpbGluZVN0cmVhbS5kdW1wUHJvcGVydHkoInN0YXRlLnNjcm9s
bENoYWluaW5nQmxvY2tlci5ibG9ja1kiLCBzdGF0ZS5zY3JvbGxDaGFpbmluZ0Jsb2NrZXIuYmxv
Y2tZKTsKICAgICAgICAgbXVsdGlsaW5lU3RyZWFtLmR1bXBQcm9wZXJ0eSgiaXMgb3ZlciB3aWRn
ZXQiLCBzdGF0ZS5pc092ZXJXaWRnZXQpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIuaAppbmRleCA1
NjQ5NjE1OWM1ZTY4ZDJiY2NlZjhjMjY1ZWU2MWNjYjlkZmI0YjI4Li44ZmQ4ZTMwYzZhMTY1ZDk5
OThkNDExZDI4YmJmZmQzMmVlZjIzNjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9TY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIuaApAQCAtNjEsNyArNjEs
MTAgQEAgcHVibGljOgogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBubyBmcmFtZSBpcyBsYXRjaGVk
LCBvciBsYXRjaGluZyBpcyBpbiB0aGUgZ2l2ZW4gZnJhbWUgKGluIHdoaWNoIGNhc2UgbGF0Y2hl
ZFNjcm9sbGVyIHdpbGwgYmUgbm9uLW51bGwpLgogICAgIGJvb2wgbGF0Y2hpbmdBbGxvd3NTY3Jv
bGxpbmdJbkZyYW1lKGNvbnN0IEZyYW1lJiwgV2Vha1B0cjxTY3JvbGxhYmxlQXJlYT4mIGxhdGNo
ZWRTY3JvbGxlcikgY29uc3Q7CiAKLSAgICB2b2lkIHVwZGF0ZUFuZEZldGNoTGF0Y2hpbmdTdGF0
ZUZvckZyYW1lKEZyYW1lJiwgY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgUmVmUHRyPEVsZW1l
bnQ+JiBsYXRjaGVkRWxlbWVudCwgV2Vha1B0cjxTY3JvbGxhYmxlQXJlYT4mLCBib29sJiBpc092
ZXJXaWRnZXQpOworICAgIHZvaWQgdXBkYXRlQW5kRmV0Y2hMYXRjaGluZ1N0YXRlRm9yRnJhbWUo
RnJhbWUmLCBjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBSZWZQdHI8RWxlbWVudD4mIGxhdGNo
ZWRFbGVtZW50LCBXZWFrUHRyPFNjcm9sbGFibGVBcmVhPiYsIFNjcm9sbENoYWluaW5nQmxvY2tl
ciYsIGJvb2wmIGlzT3ZlcldpZGdldCk7CisKKyAgICBTY3JvbGxDaGFpbmluZ0Jsb2NrZXIgZ2V0
U2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKGNvbnN0IEZyYW1lJikgY29uc3Q7CisgICAgdm9pZCB1cGRh
dGVTY3JvbGxDaGFpbmluZ0Jsb2NrZXIoY29uc3QgRnJhbWUmLCBjb25zdCBTY3JvbGxDaGFpbmlu
Z0Jsb2NrZXImIFNjcm9sbENoYWluaW5nQmxvY2tlckZyb21TdWJmcmFtZSk7CiAKICAgICB2b2lk
IHJlbW92ZUxhdGNoaW5nU3RhdGVGb3JUYXJnZXQoY29uc3QgRWxlbWVudCYpOwogICAgIHZvaWQg
cmVtb3ZlTGF0Y2hpbmdTdGF0ZUZvckZyYW1lKGNvbnN0IEZyYW1lJik7CkBAIC03Myw2ICs3Niw3
IEBAIHByaXZhdGU6CiAgICAgICAgIFdlYWtQdHI8RWxlbWVudD4gd2hlZWxFdmVudEVsZW1lbnQ7
CiAgICAgICAgIFdlYWtQdHI8U2Nyb2xsYWJsZUFyZWE+IHNjcm9sbGFibGVBcmVhOwogICAgICAg
ICBGcmFtZSogZnJhbWUgeyBudWxscHRyIH07CisgICAgICAgIFNjcm9sbENoYWluaW5nQmxvY2tl
ciBzY3JvbGxDaGFpbmluZ0Jsb2NrZXI7CiAgICAgICAgIGJvb2wgaXNPdmVyV2lkZ2V0IHsgZmFs
c2UgfTsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdDb29yZGluYXRvclR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdDb29yZGluYXRvclR5cGVzLmgKaW5kZXggZWVjYWI2ZjU1YjY1YzQ2MDE5
OWY4MGVmMDUwNjU1MmI3MWYzMDgwMy4uNTY3NGRjYWU2YzQzMmNhNDZhMDI4MzVkZDAwYWQ3NDAx
M2NlNmFhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nQ29vcmRpbmF0b3JUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ0Nvb3JkaW5hdG9yVHlwZXMuaApAQCAtNjgsNiArNjgsOSBAQCBlbnVtIGNsYXNz
IFNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb24gewogfTsKIAogc3RydWN0IFNjcm9sbGFibGVB
cmVhUGFyYW1ldGVycyB7CisgICAgT3ZlcnNjcm9sbEJlaGF2aW9yIGhvcml6b250YWxPdmVyc2Ny
b2xsQmVoYXZpb3IgeyBPdmVyc2Nyb2xsQmVoYXZpb3I6OiBBdXRvIH07CisgICAgT3ZlcnNjcm9s
bEJlaGF2aW9yIHZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yIHsgT3ZlcnNjcm9sbEJlaGF2aW9y
OjogQXV0byB9OworCiAgICAgU2Nyb2xsRWxhc3RpY2l0eSBob3Jpem9udGFsU2Nyb2xsRWxhc3Rp
Y2l0eSB7IFNjcm9sbEVsYXN0aWNpdHlOb25lIH07CiAgICAgU2Nyb2xsRWxhc3RpY2l0eSB2ZXJ0
aWNhbFNjcm9sbEVsYXN0aWNpdHkgeyBTY3JvbGxFbGFzdGljaXR5Tm9uZSB9OwogCkBAIC04NCw3
ICs4Nyw5IEBAIHN0cnVjdCBTY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMgewogCiAgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IFNjcm9sbGFibGVBcmVhUGFyYW1ldGVycyYgb3RoZXIpIGNvbnN0CiAg
ICAgewotICAgICAgICByZXR1cm4gaG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkgPT0gb3RoZXIu
aG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkKKyAgICAgICAgcmV0dXJuIGhvcml6b250YWxPdmVy
c2Nyb2xsQmVoYXZpb3IgPT0gb3RoZXIuaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcgorICAg
ICAgICAgICAgJiYgdmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IgPT0gb3RoZXIudmVydGljYWxP
dmVyc2Nyb2xsQmVoYXZpb3IKKyAgICAgICAgICAgICYmIGhvcml6b250YWxTY3JvbGxFbGFzdGlj
aXR5ID09IG90aGVyLmhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5CiAgICAgICAgICAgICAmJiB2
ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkgPT0gb3RoZXIudmVydGljYWxTY3JvbGxFbGFzdGljaXR5
CiAgICAgICAgICAgICAmJiBob3Jpem9udGFsU2Nyb2xsYmFyTW9kZSA9PSBvdGhlci5ob3Jpem9u
dGFsU2Nyb2xsYmFyTW9kZQogICAgICAgICAgICAgJiYgdmVydGljYWxTY3JvbGxiYXJNb2RlID09
IG90aGVyLnZlcnRpY2FsU2Nyb2xsYmFyTW9kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcAppbmRleCAxY2VmMzFiYjM2NjUxNmQzYjRhOGNlODFm
YzE5ZGZhYjZlOTJhMGQ1Li42M2M0OGExZWYwY2UwMmQ1MzlkMjM2Y2QyMzQ3YjNlYzRkNWVmY2Y2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNw
cApAQCAtMTc2LDE5ICsxNzYsNTUgQEAgV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0IFNjcm9sbGlu
Z1RyZWU6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW4KIAogV2hlZWxF
dmVudEhhbmRsaW5nUmVzdWx0IFNjcm9sbGluZ1RyZWU6OmhhbmRsZVdoZWVsRXZlbnRXaXRoTm9k
ZShjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIE9wdGlvblNldDxXaGVlbEV2
ZW50UHJvY2Vzc2luZ1N0ZXBzPiBwcm9jZXNzaW5nU3RlcHMsIFNjcm9sbGluZ1RyZWVOb2RlKiBu
b2RlLCBFdmVudFRhcmdldGluZyBldmVudFRhcmdldGluZykKIHsKKyAgICBGbG9hdFNpemUgZmls
dGVyZWRQbGF0Zm9ybURlbHRhKHdoZWVsRXZlbnQuZGVsdGFYKCksIHdoZWVsRXZlbnQuZGVsdGFZ
KCkpOworICAgIFBsYXRmb3JtV2hlZWxFdmVudCBhZGp1c3RlZFdoZWVsRXZlbnQgPSBQbGF0Zm9y
bVdoZWVsRXZlbnQod2hlZWxFdmVudCk7CisgICAgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIHNjcm9s
bENoYWluaW5nQmxvY2tlciA9IHsgZmFsc2UsIGZhbHNlIH07CisgICAgYXV0byBiaWFzZWREZWx0
YSA9IFBsYXRmb3JtV2hlZWxFdmVudDo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwo
ZmlsdGVyZWRQbGF0Zm9ybURlbHRhKTsKICAgICB3aGlsZSAobm9kZSkgewogICAgICAgICBpZiAo
aXM8U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU+KCpub2RlKSkgewogICAgICAgICAgICAgYXV0
byYgc2Nyb2xsaW5nTm9kZSA9IGRvd25jYXN0PFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlPigq
bm9kZSk7Ci0gICAgICAgICAgICBhdXRvIHJlc3VsdCA9IHNjcm9sbGluZ05vZGUuaGFuZGxlV2hl
ZWxFdmVudCh3aGVlbEV2ZW50LCBldmVudFRhcmdldGluZyk7CisgICAgICAgICAgICBhdXRvIHJl
c3VsdCA9IHNjcm9sbGluZ05vZGUuaGFuZGxlV2hlZWxFdmVudChhZGp1c3RlZFdoZWVsRXZlbnQs
IGV2ZW50VGFyZ2V0aW5nKTsKIAogICAgICAgICAgICAgaWYgKHJlc3VsdC53YXNIYW5kbGVkKSB7
Ci0gICAgICAgICAgICAgICAgbV9sYXRjaGluZ0NvbnRyb2xsZXIubm9kZURpZEhhbmRsZUV2ZW50
KHNjcm9sbGluZ05vZGUuc2Nyb2xsaW5nTm9kZUlEKCksIHByb2Nlc3NpbmdTdGVwcywgd2hlZWxF
dmVudCwgbV9hbGxvd0xhdGNoaW5nKTsKKyAgICAgICAgICAgICAgICAvLyBJZiB0aGUgc2Nyb2xs
IGNoYWluaW5nIGlzIGJsb2NrZWQgaW4gYSBzaW5nbGUgZGlyZWN0aW9uLCBpdCBzaG91bGQgc3Rv
cCBsYXRjaGluZyB0byBhIG5vZGUsCisgICAgICAgICAgICAgICAgLy8gZm9yIHRoZSB3aGVlbCBl
dmVudCBtaWdodCBjaGFuZ2UgdGhlIGRpcmVjdGlvbiBhbmQgb3ZlcnNjcm9sbC1iZWhhdmlvciBt
aWdodCBub3QgYmUgYWJsZSBibG9jaworICAgICAgICAgICAgICAgIC8vIHRoZSBzY3JvbGwgY2hh
aW5pbmcgaWYgaXQgbGF0Y2hlcyB0byB0aGUgYW5jZXN0cnkgbm9kZSBvZiBvdmVyc2Nyb2xsLWJl
aGF2aW9yIHRhcmdldC4KKyAgICAgICAgICAgICAgICBpZiAoKHNjcm9sbENoYWluaW5nQmxvY2tl
ci5ibG9ja1ggJiYgc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLmJsb2NrWSkgfHwgKCFzY3JvbGxDaGFp
bmluZ0Jsb2NrZXIuYmxvY2tYICYmICFzY3JvbGxDaGFpbmluZ0Jsb2NrZXIuYmxvY2tZKSkKKyAg
ICAgICAgICAgICAgICAgICAgbV9sYXRjaGluZ0NvbnRyb2xsZXIubm9kZURpZEhhbmRsZUV2ZW50
KHNjcm9sbGluZ05vZGUuc2Nyb2xsaW5nTm9kZUlEKCksIHByb2Nlc3NpbmdTdGVwcywgd2hlZWxF
dmVudCwgbV9hbGxvd0xhdGNoaW5nKTsKICAgICAgICAgICAgICAgICBtX2dlc3R1cmVTdGF0ZS5u
b2RlRGlkSGFuZGxlRXZlbnQoc2Nyb2xsaW5nTm9kZS5zY3JvbGxpbmdOb2RlSUQoKSwgd2hlZWxF
dmVudCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgaWYgKHJlc3VsdC5uZWVkc01haW5UaHJlYWRQcm9jZXNzaW5nKCkgfHwgZXZl
bnRUYXJnZXRpbmcgIT0gRXZlbnRUYXJnZXRpbmc6OlByb3BhZ2F0ZSkKICAgICAgICAgICAgICAg
ICByZXR1cm4gcmVzdWx0OworCisgICAgICAgICAgICBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIuYmxv
Y2tYIHw9IHNjcm9sbGluZ05vZGUuaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpICE9IE92
ZXJzY3JvbGxCZWhhdmlvcjo6QXV0bzsKKyAgICAgICAgICAgIHNjcm9sbENoYWluaW5nQmxvY2tl
ci5ibG9ja1kgfD0gc2Nyb2xsaW5nTm9kZS52ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpICE9
IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0bzsKKyAgICAgICAgICAgIGlmIChzY3JvbGxDaGFpbmlu
Z0Jsb2NrZXIuYmxvY2tYKSB7CisgICAgICAgICAgICAgICAgZmlsdGVyZWRQbGF0Zm9ybURlbHRh
LnNldFdpZHRoKDApOworICAgICAgICAgICAgICAgIGlmICghYmlhc2VkRGVsdGEuaGVpZ2h0KCkp
CisgICAgICAgICAgICAgICAgICAgIGZpbHRlcmVkUGxhdGZvcm1EZWx0YS5zZXRIZWlnaHQoMCk7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLmJs
b2NrWSkgeworICAgICAgICAgICAgICAgIGZpbHRlcmVkUGxhdGZvcm1EZWx0YS5zZXRIZWlnaHQo
MCk7CisgICAgICAgICAgICAgICAgaWYgKCFiaWFzZWREZWx0YS53aWR0aCgpKQorICAgICAgICAg
ICAgICAgICAgICBmaWx0ZXJlZFBsYXRmb3JtRGVsdGEuc2V0V2lkdGgoMCk7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBhZGp1c3RlZFdoZWVsRXZlbnQgPSBhZGp1c3RlZFdoZWVsRXZlbnQu
Y29weVdpdGhEZWx0YXNBbmRWZWxvY2l0eShmaWx0ZXJlZFBsYXRmb3JtRGVsdGEud2lkdGgoKSwg
ZmlsdGVyZWRQbGF0Zm9ybURlbHRhLmhlaWdodCgpLCBhZGp1c3RlZFdoZWVsRXZlbnQuc2Nyb2xs
aW5nVmVsb2NpdHkoKSk7CisKKyAgICAgICAgICAgIGlmIChzY3JvbGxDaGFpbmluZ0Jsb2NrZXIu
YmxvY2tYIHx8IHNjcm9sbENoYWluaW5nQmxvY2tlci5ibG9ja1kpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLmJsb2NrWCAmJiAhYmlhc2VkRGVsdGEuaGVpZ2h0
KCkgJiYgd2lsbFdoZWVsRXZlbnRTdGFydFN3aXBlR2VzdHVyZSh3aGVlbEV2ZW50KSkKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdDo6dW5oYW5kbGVk
KCk7CisKKyAgICAgICAgICAgICAgICBpZiAoKHNjcm9sbENoYWluaW5nQmxvY2tlci5ibG9ja1gg
JiYgc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLmJsb2NrWSkKKyAgICAgICAgICAgICAgICAgICAgfHwg
KHNjcm9sbENoYWluaW5nQmxvY2tlci5ibG9ja1ggJiYgIWJpYXNlZERlbHRhLmhlaWdodCgpKQor
ICAgICAgICAgICAgICAgICAgICB8fCAoc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLmJsb2NrWSAmJiAh
Ymlhc2VkRGVsdGEud2lkdGgoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHNjcm9sbENo
YWluaW5nQmxvY2tlci5ibG9ja1ggJiYgc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLmJsb2NrWSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG1fbGF0Y2hpbmdDb250cm9sbGVyLm5vZGVEaWRIYW5kbGVF
dmVudChzY3JvbGxpbmdOb2RlLnNjcm9sbGluZ05vZGVJRCgpLCBwcm9jZXNzaW5nU3RlcHMsIHdo
ZWVsRXZlbnQsIG1fYWxsb3dMYXRjaGluZyk7CisgICAgICAgICAgICAgICAgICAgIG1fZ2VzdHVy
ZVN0YXRlLm5vZGVEaWRIYW5kbGVFdmVudChzY3JvbGxpbmdOb2RlLnNjcm9sbGluZ05vZGVJRCgp
LCB3aGVlbEV2ZW50KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFdoZWVsRXZlbnRIYW5k
bGluZ1Jlc3VsdDo6aGFuZGxlZCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
ICAgICAgICAgfQogCiAgICAgICAgIGlmIChpczxTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxQ
cm94eU5vZGU+KCpub2RlKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwCmluZGV4IDYyNWUyMDE4
ZmE3NWZmN2ZkYmY1Y2E1NTIyZDg4OWQ2ZWE0MjI0OGYuLjI3YzhkYzJkMGM3ZjdmNTA5MWVlOTYx
NjNiNzg4MGFmOWQzOGU0M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAKQEAgLTEzNCw2ICsx
MzQsMTYgQEAgYm9vbCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6aXNMYXRjaGVkTm9kZSgp
IGNvbnN0CiAgICAgcmV0dXJuIHNjcm9sbGluZ1RyZWUoKS5sYXRjaGVkTm9kZUlEKCkgPT0gc2Ny
b2xsaW5nTm9kZUlEKCk7CiB9CiAKK092ZXJzY3JvbGxCZWhhdmlvciBTY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZTo6aG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzLmhvcml6b250YWxPdmVyc2Nyb2xsQmVo
YXZpb3I7Cit9CisKK092ZXJzY3JvbGxCZWhhdmlvciBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZTo6dmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdAoreworICAgIHJldHVybiBtX3Nj
cm9sbGFibGVBcmVhUGFyYW1ldGVycy52ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcjsKK30KKwog
Ym9vbCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6Y2FuSGFuZGxlV2hlZWxFdmVudChjb25z
dCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIEV2ZW50VGFyZ2V0aW5nIGV2ZW50VGFy
Z2V0aW5nKSBjb25zdAogewogICAgIGlmICghY2FuSGF2ZVNjcm9sbGJhcnMoKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZS5oCmluZGV4IDg2MmMxYjNkYmUwZTIzZTE2OWZhNTJjYWE0NjJmZWZkZjE0ZGU4MTgu
LjVhMTRjYTM0ZGFjYzk4Y2VlZGY0NjBhMjM3MGNlYTA2N2I4YzViYWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGUuaApAQCAtMTQ1LDYgKzE0NSw4IEBAIHByb3RlY3RlZDoKICAgICBjb25zdCBGbG9hdFNp
emUmIHRvdGFsQ29udGVudHNTaXplRm9yUnViYmVyQmFuZCgpIGNvbnN0IHsgcmV0dXJuIG1fdG90
YWxDb250ZW50c1NpemVGb3JSdWJiZXJCYW5kOyB9CiAgICAgdm9pZCBzZXRUb3RhbENvbnRlbnRz
U2l6ZUZvclJ1YmJlckJhbmQoY29uc3QgRmxvYXRTaXplJiB0b3RhbENvbnRlbnRzU2l6ZUZvclJ1
YmJlckJhbmQpIHsgbV90b3RhbENvbnRlbnRzU2l6ZUZvclJ1YmJlckJhbmQgPSB0b3RhbENvbnRl
bnRzU2l6ZUZvclJ1YmJlckJhbmQ7IH0KIAorICAgIE92ZXJzY3JvbGxCZWhhdmlvciBob3Jpem9u
dGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29uc3Q7CisgICAgT3ZlcnNjcm9sbEJlaGF2aW9yIHZl
cnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29uc3Q7CiAgICAgU2Nyb2xsRWxhc3RpY2l0eSBo
b3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eSgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsYWJsZUFy
ZWFQYXJhbWV0ZXJzLmhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5OyB9CiAgICAgU2Nyb2xsRWxh
c3RpY2l0eSB2ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkoKSBjb25zdCB7IHJldHVybiBtX3Njcm9s
bGFibGVBcmVhUGFyYW1ldGVycy52ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHk7IH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlRGVsZWdhdGVNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21h
Yy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLmgKaW5kZXggMzJhODM4ZWI2
ZjNkYTQzOTgzYmNmZjU1YjdjYzQxODE1NTczNGU5Zi4uMzk4MTQ4MWZlNGQyOTZlZWJjZWUzYWM3
MWQ4MjRkN2QyM2NhNmFiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVE
ZWxlZ2F0ZU1hYy5oCkBAIC0xMDEsNiArMTAxLDkgQEAgcHJpdmF0ZToKICAgICBGbG9hdFNpemUg
dmlld3BvcnRTaXplKCkgY29uc3Qgb3ZlcnJpZGU7CiAjZW5kaWYKIAorICAgIGJvb2wgc2hvdWxk
U3RvcEhvcml6b250YWxTdHJlY2goKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHNob3VsZFN0
b3BWZXJ0aWNhbFN0cmVjaCgpIGNvbnN0IG92ZXJyaWRlOworCiAgICAgdm9pZCByZWxlYXNlUmVm
ZXJlbmNlc1RvU2Nyb2xsZXJJbXBzT25UaGVNYWluVGhyZWFkKCk7CiAKICAgICBTY3JvbGxDb250
cm9sbGVyIG1fc2Nyb2xsQ29udHJvbGxlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1t
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlRGVsZWdhdGVNYWMubW0KaW5kZXggYjc1YzcyMjU5MGFjNjE3ODMxMWEwNDFiNTUzYTA1
YjA2ZmJhNjQ2ZS4uZjZjNWJjOTA2OWZlMTE5N2E5Yzg0MTRiMzYzNWE3ZTk4OTNjYzliZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMubW0KQEAgLTI1
Niw2ICsyNTYsOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsQ29udHJvbGxlclRpbWVyPiBTY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjpjcgogCiBib29sIFNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OmFsbG93c0hvcml6b250YWxTdHJldGNoaW5nKGNv
bnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCkgY29uc3QKIHsKKyAgICBpZiAoc2hv
dWxkU3RvcEhvcml6b250YWxTdHJlY2goKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAg
c3dpdGNoIChob3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eSgpKSB7CiAgICAgY2FzZSBTY3JvbGxF
bGFzdGljaXR5QXV0b21hdGljOiB7CiAgICAgICAgIGJvb2wgc2Nyb2xsYmFyc0FsbG93U3RyZXRj
aGluZyA9IGFsbG93c0hvcml6b250YWxTY3JvbGxpbmcoKSB8fCAhYWxsb3dzVmVydGljYWxTY3Jv
bGxpbmcoKTsKQEAgLTI3OCw2ICsyODEsOSBAQCBib29sIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlRGVsZWdhdGVNYWM6OmFsbG93c0hvcml6b250YWxTdHJldGNoaW5nKGNvbnN0IFBsYQogCiBi
b29sIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OmFsbG93c1ZlcnRpY2Fs
U3RyZXRjaGluZyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpIGNvbnN0CiB7
CisgICAgaWYgKHNob3VsZFN0b3BWZXJ0aWNhbFN0cmVjaCgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKICAgICBzd2l0Y2ggKHZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eSgpKSB7CiAgICAgY2Fz
ZSBTY3JvbGxFbGFzdGljaXR5QXV0b21hdGljOiB7CiAgICAgICAgIGJvb2wgc2Nyb2xsYmFyc0Fs
bG93U3RyZXRjaGluZyA9IGFsbG93c1ZlcnRpY2FsU2Nyb2xsaW5nKCkgfHwgIWFsbG93c0hvcml6
b250YWxTY3JvbGxpbmcoKTsKQEAgLTQzMSw2ICs0MzcsMTYgQEAgRmxvYXRTaXplIFNjcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OnZpZXdwb3J0U2l6ZSgpIGNvbnN0CiB9CiAj
ZW5kaWYKIAorYm9vbCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjpzaG91
bGRTdG9wSG9yaXpvbnRhbFN0cmVjaCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHNjcm9sbGluZ05v
ZGUoKS5ob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgPT0gT3ZlcnNjcm9sbEJlaGF2aW9y
OjpOb25lOworfQorCitib29sIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6
OnNob3VsZFN0b3BWZXJ0aWNhbFN0cmVjaCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHNjcm9sbGlu
Z05vZGUoKS52ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpID09IE92ZXJzY3JvbGxCZWhhdmlv
cjo6Tm9uZTsKK30KKwogdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFj
OjpkZWZlcldoZWVsRXZlbnRUZXN0Q29tcGxldGlvbkZvclJlYXNvbihXaGVlbEV2ZW50VGVzdE1v
bml0b3I6OlNjcm9sbGFibGVBcmVhSWRlbnRpZmllciBpZGVudGlmaWVyLCBXaGVlbEV2ZW50VGVz
dE1vbml0b3I6OkRlZmVyUmVhc29uIHJlYXNvbikgY29uc3QKIHsKICAgICBpZiAoIXNjcm9sbGlu
Z1RyZWUoKS5pc01vbml0b3JpbmdXaGVlbEV2ZW50cygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaAppbmRleCBkNzE2OTM0NmEyNDAyM2MyYTQ3ODdhZTM0
NTQwYTM3NjA3YzBhMmQ1Li42NDE3OTdhNmY0MTg3NTMzOGNhNzFlYTczOTE2MGQxMGIwNmY4OGU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaApAQCAt
MjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCisj
aW5jbHVkZSAiRmxvYXRTaXplLmgiCiAjaW5jbHVkZSAiSW50UG9pbnQuaCIKICNpbmNsdWRlICJQ
bGF0Zm9ybUV2ZW50LmgiCiAjaW5jbHVkZSA8d3RmL1dpbmRvd3NFeHRyYXMuaD4KQEAgLTE3NCw2
ICsxNzUsOCBAQCBwdWJsaWM6CiAgICAgUGxhdGZvcm1XaGVlbEV2ZW50KEhXTkQsIFdQQVJBTSwg
TFBBUkFNLCBib29sIGlzTW91c2VIV2hlZWwpOwogI2VuZGlmCiAKKyAgICBzdGF0aWMgRmxvYXRT
aXplIHdoZWVsRGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRpY2FsKGNvbnN0IEZsb2F0U2l6ZSYpOwor
CiBwcm90ZWN0ZWQ6CiAgICAgUGxhdGZvcm1XaGVlbEV2ZW50R3JhbnVsYXJpdHkgbV9ncmFudWxh
cml0eSB7IFNjcm9sbEJ5UGl4ZWxXaGVlbEV2ZW50IH07CiAgICAgYm9vbCBtX2RpcmVjdGlvbklu
dmVydGVkRnJvbURldmljZSB7IGZhbHNlIH07CkBAIC0yNjQsNiArMjY3LDE5IEBAIGlubGluZSBG
bG9hdFBvaW50IFBsYXRmb3JtV2hlZWxFdmVudDo6c3dpcGVWZWxvY2l0eSgpIGNvbnN0CiAKICNl
bmRpZiAvLyBFTkFCTEUoS0lORVRJQ19TQ1JPTExJTkcpCiAKK2lubGluZSBGbG9hdFNpemUgUGxh
dGZvcm1XaGVlbEV2ZW50Ojp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbChjb25zdCBG
bG9hdFNpemUmIGRlbHRhKQoreworICAgIGF1dG8gZGVsdGFYID0gZGVsdGEud2lkdGgoKTsKKyAg
ICBhdXRvIGRlbHRhWSA9IGRlbHRhLmhlaWdodCgpOworCisgICAgaWYgKGZhYnNmKGRlbHRhWSkg
Pj0gZmFic2YoZGVsdGFYKSkKKyAgICAgICAgZGVsdGFYID0gMDsKKyAgICBlbHNlCisgICAgICAg
IGRlbHRhWSA9IDA7CisKKyAgICByZXR1cm4geyBkZWx0YVgsIGRlbHRhWSB9OworfQorCiBXRUJD
T1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwg
Y29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jik7CiBXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgV2hlZWxFdmVudFByb2Nlc3NpbmdTdGVw
cyk7CiBXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0
U3RyZWFtJiwgRXZlbnRIYW5kbGluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVHlwZXMu
aAppbmRleCBhMDkzYzliM2U2MGFkYjlmOTkyNjI1NzhjYWYzZGZhNDBkZjYwNDFhLi4xY2RmOWU2
ZGI0NGY2MjMzYzg2Y2ZiN2EzNDYwMmNjMGM1NzcxODY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbFR5cGVzLmgKQEAgLTI0OSw2ICsyNDksMTEgQEAgZW51bSBjbGFzcyBTY3JvbGxQb3Np
dGlvbmluZ0JlaGF2aW9yIDogdWludDhfdCB7CiAgICAgU3RhdGlvbmFyeQogfTsKIAorc3RydWN0
IFNjcm9sbENoYWluaW5nQmxvY2tlciB7CisgICAgYm9vbCBibG9ja1ggeyBmYWxzZSB9OworICAg
IGJvb2wgYmxvY2tZIHsgZmFsc2UgfTsKK307CisKIHVzaW5nIFNjcm9sbGJhckNvbnRyb2xTdGF0
ZSA9IHVuc2lnbmVkOwogdXNpbmcgU2Nyb2xsYmFyQ29udHJvbFBhcnRNYXNrID0gdW5zaWduZWQ7
CiB1c2luZyBTY3JvbGxpbmdOb2RlSUQgPSB1aW50NjRfdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxhYmxlQXJlYS5oCmluZGV4IDlmY2Q1NDlhYmI2ZWRhMjA2ZTIyMGMwYmQ4ZGQ5MWZl
ZjI3MmYzMGUuLjI3ZmNhZWUxMDVkMTQ5YzQ3YzlkZjI1YmEzNWVkYjcyM2U4MjE3MWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaApAQCAtMTI0LDYgKzEyNCw5IEBA
IHB1YmxpYzoKICAgICBib29sIGNvbnN0cmFpbnNTY3JvbGxpbmdUb0NvbnRlbnRFZGdlKCkgY29u
c3QgeyByZXR1cm4gbV9jb25zdHJhaW5zU2Nyb2xsaW5nVG9Db250ZW50RWRnZTsgfQogICAgIHZv
aWQgc2V0Q29uc3RyYWluc1Njcm9sbGluZ1RvQ29udGVudEVkZ2UoYm9vbCBjb25zdHJhaW5zU2Ny
b2xsaW5nVG9Db250ZW50RWRnZSkgeyBtX2NvbnN0cmFpbnNTY3JvbGxpbmdUb0NvbnRlbnRFZGdl
ID0gY29uc3RyYWluc1Njcm9sbGluZ1RvQ29udGVudEVkZ2U7IH0KIAorICAgIHZpcnR1YWwgT3Zl
cnNjcm9sbEJlaGF2aW9yIGhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdCB7IHJl
dHVybiBPdmVyc2Nyb2xsQmVoYXZpb3I6OkF1dG87IH0KKyAgICB2aXJ0dWFsIE92ZXJzY3JvbGxC
ZWhhdmlvciB2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpIGNvbnN0IHsgcmV0dXJuIE92ZXJz
Y3JvbGxCZWhhdmlvcjo6QXV0bzsgfQorCiAgICAgdm9pZCBzZXRWZXJ0aWNhbFNjcm9sbEVsYXN0
aWNpdHkoU2Nyb2xsRWxhc3RpY2l0eSBzY3JvbGxFbGFzdGljaXR5KSB7IG1fdmVydGljYWxTY3Jv
bGxFbGFzdGljaXR5ID0gc2Nyb2xsRWxhc3RpY2l0eTsgfQogICAgIFNjcm9sbEVsYXN0aWNpdHkg
dmVydGljYWxTY3JvbGxFbGFzdGljaXR5KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U2Ny
b2xsRWxhc3RpY2l0eT4obV92ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkpOyB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIuaAppbmRleCBjZjM5
MjM0MDVlZTEzMTY5NjgxNmJlN2ZiMGEyNTQ1NDFiMjQzZmZjLi40NWM1NzdhY2I1ZGY0ZWFkZTQz
OTA5OGE4NzYwNDYzMWZkNGU0MjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9TY3JvbGxDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvU2Nyb2xsQ29udHJvbGxlci5oCkBAIC0xMTgsNiArMTE4LDExIEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIExheW91dFNpemUgc2Nyb2xsRXh0ZW50KCkgY29uc3QgPSAwOwogICAgIHZpcnR1
YWwgRmxvYXRTaXplIHZpZXdwb3J0U2l6ZSgpIGNvbnN0ID0gMDsKICNlbmRpZgorCisjaWYgUExB
VEZPUk0oTUFDKQorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTdG9wSG9yaXpvbnRhbFN0cmVjaCgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIHNob3VsZFN0b3BWZXJ0
aWNhbFN0cmVjaCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisjZW5kaWYKIH07CiAKIGVudW0g
Y2xhc3MgV2hlZWxFdmVudFN0YXR1cyB7CkBAIC0xNzMsOCArMTc4LDYgQEAgcHVibGljOgogI2Vu
ZGlmCiAjZW5kaWYKIAotICAgIHN0YXRpYyBGbG9hdFNpemUgd2hlZWxEZWx0YUJpYXNpbmdUb3dh
cmRzVmVydGljYWwoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jik7Ci0KICAgICBlbnVtIGNsYXNz
IFdoZWVsQXhpc0JpYXMgeyBOb25lLCBWZXJ0aWNhbCB9OwogICAgIHN0YXRpYyBPcHRpb25hbDxT
Y3JvbGxEaXJlY3Rpb24+IGRpcmVjdGlvbkZyb21FdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZl
bnQmLCBPcHRpb25hbDxTY3JvbGxFdmVudEF4aXM+LCBXaGVlbEF4aXNCaWFzID0gV2hlZWxBeGlz
Qmlhczo6Tm9uZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L1Njcm9sbENvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3Jv
bGxDb250cm9sbGVyLm1tCmluZGV4IDNlNGYwNjljZjMyYjYzMTg1NmE4YzZhMmRlZDBhMTZlM2Vm
NTFmZjguLmQwYTFjNWQzNGYzZWE5YTU0MWJlNzJjMjNhOTFiNjllMTMwODJmOTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5tbQpAQCAt
MjUyLDcgKzI1Miw4IEBAIGJvb2wgU2Nyb2xsQ29udHJvbGxlcjo6aGFuZGxlV2hlZWxFdmVudChj
b25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpCiAgICAgICAgICAgICAgICAgICAg
IH0gZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgbV9vdmVyZmxvd1Njcm9sbERlbHRhLnNl
dFdpZHRoKG1fb3ZlcmZsb3dTY3JvbGxEZWx0YS53aWR0aCgpICsgZGVsdGFYKTsKICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgc2hvdWxkU3RyZXRjaCA9IHRydWU7CisgICAgICAg
ICAgICAgICAgaWYgKCghZGVsdGFYIHx8ICFtX2NsaWVudC5zaG91bGRTdG9wSG9yaXpvbnRhbFN0
cmVjaCgpKSAmJiAoIWRlbHRhWSB8fCAhbV9jbGllbnQuc2hvdWxkU3RvcFZlcnRpY2FsU3RyZWNo
KCkpKQorICAgICAgICAgICAgICAgICAgICBzaG91bGRTdHJldGNoID0gdHJ1ZTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQogCkBAIC0zMjksMTkgKzMzMCw2IEBAIGJvb2wgU2Nyb2xsQ29udHJv
bGxlcjo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZl
bnQpCiB9CiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCi1GbG9hdFNpemUgU2Nyb2xsQ29udHJv
bGxlcjo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoY29uc3QgUGxhdGZvcm1XaGVl
bEV2ZW50JiB3aGVlbEV2ZW50KQotewotICAgIGF1dG8gZGVsdGFYID0gd2hlZWxFdmVudC5kZWx0
YVgoKTsKLSAgICBhdXRvIGRlbHRhWSA9IHdoZWVsRXZlbnQuZGVsdGFZKCk7Ci0KLSAgICBpZiAo
ZmFic2YoZGVsdGFZKSA+PSBmYWJzZihkZWx0YVgpKQotICAgICAgICBkZWx0YVggPSAwOwotICAg
IGVsc2UKLSAgICAgICAgZGVsdGFZID0gMDsKLQotICAgIHJldHVybiB7IGRlbHRhWCwgZGVsdGFZ
IH07Ci19Ci0KIE9wdGlvbmFsPFNjcm9sbERpcmVjdGlvbj4gU2Nyb2xsQ29udHJvbGxlcjo6ZGly
ZWN0aW9uRnJvbUV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgT3B0
aW9uYWw8U2Nyb2xsRXZlbnRBeGlzPiBheGlzLCBXaGVlbEF4aXNCaWFzIGJpYXMpCiB7CiAgICAg
Ly8gRklYTUU6IEl0J3MgaW1wb3NzaWJsZSB0byBpbmZlciBkaXJlY3Rpb24gZnJvbSBhIHNpbmds
ZSBldmVudCwgc2luY2UgdGhlIHN0YXJ0IG9mIGEgZ2VzdHVyZSBpcyBlaXRoZXIgemVybyBvcgpA
QCAtMzQ5LDcgKzMzNyw3IEBAIE9wdGlvbmFsPFNjcm9sbERpcmVjdGlvbj4gU2Nyb2xsQ29udHJv
bGxlcjo6ZGlyZWN0aW9uRnJvbUV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlCiAKICAgICBhdXRvIHdo
ZWVsRGVsdGEgPSBGbG9hdFNpemUgeyB3aGVlbEV2ZW50LmRlbHRhWCgpLCB3aGVlbEV2ZW50LmRl
bHRhWSgpIH07CiAgICAgaWYgKGJpYXMgPT0gV2hlZWxBeGlzQmlhczo6VmVydGljYWwpCi0gICAg
ICAgIHdoZWVsRGVsdGEgPSB3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbCh3aGVlbEV2
ZW50KTsKKyAgICAgICAgd2hlZWxEZWx0YSA9IFBsYXRmb3JtV2hlZWxFdmVudDo6d2hlZWxEZWx0
YUJpYXNpbmdUb3dhcmRzVmVydGljYWwod2hlZWxFdmVudC5kZWx0YSgpKTsKIAogICAgIGlmIChh
eGlzKSB7CiAgICAgICAgIHN3aXRjaCAoYXhpcy52YWx1ZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5oCmluZGV4IDQ5ZjBiNGIxZDc5Zjc3
YTk2OGE5NTJmOGFlYjk3OTU0ZTI5NzJlMjkuLmE2Y2EwYWZlZWQ1NTRjYWQ5MzM3M2E0NGJmODE4
M2RmMTcxMWI4NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3Jv
bGxBbmltYXRvck1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxB
bmltYXRvck1hYy5oCkBAIC0xNTYsNiArMTU2LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFkanVz
dFNjcm9sbFBvc2l0aW9uVG9Cb3VuZHNJZk5lY2Vzc2FyeSgpIGZpbmFsOwogI2VuZGlmCiAKKyAg
ICBib29sIHNob3VsZFN0b3BIb3Jpem9udGFsU3RyZWNoKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
Ym9vbCBzaG91bGRTdG9wVmVydGljYWxTdHJlY2goKSBjb25zdCBvdmVycmlkZTsKKwogICAgIGJv
b2wgbV9oYXZlU2Nyb2xsZWRTaW5jZVBhZ2VMb2FkOwogICAgIGJvb2wgbV9uZWVkc1Njcm9sbGVy
U3R5bGVVcGRhdGU7CiAgICAgSW50UmVjdCBtX3Zpc2libGVTY3JvbGxlclRodW1iUmVjdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQppbmRl
eCA2MTUxZGVmYzBlYWVjM2EwNTcxNTAyMGFlNjUwMDIzYmFjZjE0YjNjLi5lOGU2YWZjMjQ1Njcy
NzBhZjcwNGQ1MDAzZTM1MTM0ZjYzOGZmMjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tCkBAIC0xNTM2LDYgKzE1MzYsMTYgQEAgdm9p
ZCBTY3JvbGxBbmltYXRvck1hYzo6c2V0VmlzaWJsZVNjcm9sbGVyVGh1bWJSZWN0KGNvbnN0IElu
dFJlY3QmIHNjcm9sbGVyVGh1bWIKICAgICBtX3Zpc2libGVTY3JvbGxlclRodW1iUmVjdCA9IHJl
Y3RJblZpZXdDb29yZGluYXRlczsKIH0KIAorYm9vbCBTY3JvbGxBbmltYXRvck1hYzo6c2hvdWxk
U3RvcEhvcml6b250YWxTdHJlY2goKSBjb25zdAoreworICAgIHJldHVybiBtX3Njcm9sbGFibGVB
cmVhLmhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSA9PSBPdmVyc2Nyb2xsQmVoYXZpb3I6
Ok5vbmU7Cit9CisKK2Jvb2wgU2Nyb2xsQW5pbWF0b3JNYWM6OnNob3VsZFN0b3BWZXJ0aWNhbFN0
cmVjaCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWEudmVydGljYWxPdmVy
c2Nyb2xsQmVoYXZpb3IoKSA9PSBPdmVyc2Nyb2xsQmVoYXZpb3I6Ok5vbmU7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggMjQ5M2VmODY0ZGE0
M2E3ODAyODYzMWU4NzJhMzMwZDU0MDhhZjcyMy4uNDEyZWM2MjI1MzE1MWUyNzRkNTBmODM3ZWZl
YzEyOGVhODZjZWQyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3Bw
CkBAIC0zNDc2LDYgKzM0NzYsMjIgQEAgdm9pZCBSZW5kZXJMYXllcjo6aW52YWxpZGF0ZVNjcm9s
bENvcm5lclJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKICAgICAgICAgbV9yZXNpemVyLT5yZXBh
aW50UmVjdGFuZ2xlKHJlY3QpOwogfQogCitPdmVyc2Nyb2xsQmVoYXZpb3IgUmVuZGVyTGF5ZXI6
Omhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdAoreworICAgIGNvbnN0IFJlbmRl
clN0eWxlJiBzdHlsZSA9IHJlbmRlcmVyKCkuc3R5bGUoKTsKKyAgICBpZiAoc3R5bGUub3ZlcmZs
b3dYKCkgIT0gT3ZlcmZsb3c6OlNjcm9sbCAmJiBzdHlsZS5vdmVyZmxvd1goKSAhPSBPdmVyZmxv
dzo6QXV0bykKKyAgICAgICAgcmV0dXJuIFNjcm9sbGFibGVBcmVhOjpob3Jpem9udGFsT3ZlcnNj
cm9sbEJlaGF2aW9yKCk7CisgICAgcmV0dXJuIHN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclgoKTsK
K30KKworT3ZlcnNjcm9sbEJlaGF2aW9yIFJlbmRlckxheWVyOjp2ZXJ0aWNhbE92ZXJzY3JvbGxC
ZWhhdmlvcigpICBjb25zdAoreworICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9IHJlbmRl
cmVyKCkuc3R5bGUoKTsKKyAgICBpZiAoc3R5bGUub3ZlcmZsb3dZKCkgIT0gT3ZlcmZsb3c6OlNj
cm9sbCAmJiBzdHlsZS5vdmVyZmxvd1koKSAhPSBPdmVyZmxvdzo6QXV0bykKKyAgICAgICAgcmV0
dXJuIFNjcm9sbGFibGVBcmVhOjp2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpOworICAgIHJl
dHVybiBzdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JZKCk7Cit9CisKIHN0YXRpYyBib29sIHNjcm9s
bGJhckhpZGRlbkJ5U3R5bGUoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCiB7CiAgICAgcmV0dXJuIHNj
cm9sbGJhciAmJiBzY3JvbGxiYXItPmlzSGlkZGVuQnlTdHlsZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuaAppbmRleCBmMjhjYjQxNDcyN2VmYzY4MjlhNjVhOTRjNWZlYmE3
YTQ1NmUxZTk5Li5iNjZiYjkzMWMxZDg2M2RmMTY0NmNhNTcwY2IwZDI3MDkxOTI3YTIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaApAQCAtNDgzLDYgKzQ4Myw5IEBAIHB1
YmxpYzoKICAgICBib29sIGhhc0hvcml6b250YWxTY3JvbGxiYXIoKSBjb25zdCB7IHJldHVybiBo
b3Jpem9udGFsU2Nyb2xsYmFyKCk7IH0KICAgICBib29sIGhhc1ZlcnRpY2FsU2Nyb2xsYmFyKCkg
Y29uc3QgeyByZXR1cm4gdmVydGljYWxTY3JvbGxiYXIoKTsgfQogCisgICAgT3ZlcnNjcm9sbEJl
aGF2aW9yIGhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdCBmaW5hbDsKKyAgICBP
dmVyc2Nyb2xsQmVoYXZpb3IgdmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdCBmaW5h
bDsKKwogICAgIGJvb2wgaG9yaXpvbnRhbFNjcm9sbGJhckhpZGRlbkJ5U3R5bGUoKSBjb25zdCBm
aW5hbDsKICAgICBib29sIHZlcnRpY2FsU2Nyb2xsYmFySGlkZGVuQnlTdHlsZSgpIGNvbnN0IGZp
bmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNw
cAppbmRleCBmYWFhMmFkY2Y5OTFiMTM2NTkzYzU1OTYwNjQ2ZmYxZjQ4MGNmMWQ3Li5kYjZjNTJj
MzRlMDdhOTllYzFlNTMwNmQyZDY0NDBlNjNlMzc1YWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTIwMTksNiArMjAxOSw5IEBAIGJv
b2wgQXJndW1lbnRDb2RlcjxVc2VyU3R5bGVTaGVldD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
LCBVc2VyU3R5bGVTaGVldCYgdXNlCiAKIHZvaWQgQXJndW1lbnRDb2RlcjxTY3JvbGxhYmxlQXJl
YVBhcmFtZXRlcnM+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU2Nyb2xsYWJsZUFy
ZWFQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogeworICAgIGVuY29kZXIgPDwgcGFyYW1ldGVycy5o
b3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yOworICAgIGVuY29kZXIgPDwgcGFyYW1ldGVycy52
ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcjsKKwogICAgIGVuY29kZXIgPDwgcGFyYW1ldGVycy5o
b3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eTsKICAgICBlbmNvZGVyIDw8IHBhcmFtZXRlcnMudmVy
dGljYWxTY3JvbGxFbGFzdGljaXR5OwogCkBAIC0yMDM2LDYgKzIwMzksMTEgQEAgdm9pZCBBcmd1
bWVudENvZGVyPFNjcm9sbGFibGVBcmVhUGFyYW1ldGVycz46OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBTY3IKIAogYm9vbCBBcmd1bWVudENvZGVyPFNjcm9sbGFibGVBcmVhUGFyYW1l
dGVycz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBTY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMm
IHBhcmFtcykKIHsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtcy5ob3Jpem9udGFsT3Zl
cnNjcm9sbEJlaGF2aW9yKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocGFyYW1zLnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbXMuaG9yaXpvbnRhbFNj
cm9sbEVsYXN0aWNpdHkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShwYXJhbXMudmVydGljYWxTY3JvbGxFbGFzdGljaXR5KSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggZmE5NmNkYTg0ZWNiN2Q0ODhh
ZTQyOTEzM2MwZjViNDQzNzA0OGRiMS4uMzk1MzU2NzgzZmRhNTZmZTFjMWFiMGQ5MjM3Mjg1ZjM2
NjQ2ZjA5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmgKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1JlYWx0aW1lTWVkaWFTb3Vy
Y2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlcmluZ01vZGUuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2Nyb2xsVHlw
ZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlclR5cGVzLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9TdG9yZWRDcmVkZW50aWFsc1BvbGljeS5oPgpAQCAtODk2LDYgKzg5NywxNSBAQCB0ZW1w
bGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpB
Y3RpdmVJbmZvPiB7CiAKIG5hbWVzcGFjZSBXVEYgewogCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVt
VHJhaXRzPFdlYkNvcmU6Ok92ZXJzY3JvbGxCZWhhdmlvcj4geworICAgIHVzaW5nIHZhbHVlcyA9
IEVudW1WYWx1ZXM8CisgICAgV2ViQ29yZTo6T3ZlcnNjcm9sbEJlaGF2aW9yLAorICAgIFdlYkNv
cmU6Ok92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0bywKKyAgICBXZWJDb3JlOjpPdmVyc2Nyb2xsQmVo
YXZpb3I6OkNvbnRhaW4sCisgICAgV2ViQ29yZTo6T3ZlcnNjcm9sbEJlaGF2aW9yOjpOb25lCisg
ICAgPjsKK307CisKIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6Q29sb3JT
cGFjZT4gewogICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CiAgICAgV2ViQ29yZTo6Q29s
b3JTcGFjZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVy
VHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGVEZWxlZ2F0ZUlPUy5tbQppbmRleCBkZmJmN2E0ZGJjZDNlMDVhNzdmZDUxZDIyMzAw
ZTY2MjAzOGVmYjg3Li40NDUwZmYwNDhmODg2NDJhYWM3MDQ2OGIxMjg5NjY1N2YyZDY3OTNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Nj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZURlbGVnYXRlSU9TLm1tCkBAIC0yMzYsMTIgKzIzNiwzMSBAQCB2b2lkIFNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M6OmNvbW1pdFN0YXRlQWZ0ZXJDaGlsZHJlbihjb25zdCBT
Y3JvbAogICAgIFNldEZvclNjb3BlPGJvb2w+IHVwZGF0aW5nQ2hhbmdlKG1fdXBkYXRpbmdGcm9t
U3RhdGVOb2RlLCB0cnVlKTsKIAogICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdl
ZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlNjcm9sbENvbnRhaW5lckxh
eWVyKQorICAgICAgICB8fCBzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNj
cm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsYWJsZUFyZWFQYXJhbXMpCiAgICAgICAg
IHx8IHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVO
b2RlOjpQcm9wZXJ0eTo6VG90YWxDb250ZW50c1NpemUpCiAgICAgICAgIHx8IHNjcm9sbGluZ1N0
YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6
UmVhY2hhYmxlQ29udGVudHNTaXplKQogICAgICAgICB8fCBzY3JvbGxpbmdTdGF0ZU5vZGUuaGFz
Q2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlNjcm9sbFBvc2l0
aW9uKQogICAgICAgICB8fCBzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNj
cm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlNjcm9sbE9yaWdpbikpIHsKICAgICAgICAgQkVH
SU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAgICAgICAgIFVJU2Nyb2xsVmlldyAqc2Nyb2xsVmll
dyA9IHRoaXMtPnNjcm9sbFZpZXcoKTsKKworICAgICAgICAvLyBGSVhNRShyZGFyOi8vcHJvYmxl
bS8zNDMxNTk5Nyk6IFVJU2Nyb2xsVmlldyBzaG91bGQgaGF2ZSBzb21lIGtpbmQgb2Ygc3VwcG9y
dCBmb3Igb3ZlcnNjcm9sbC1iZWhhdmlvciB0byBlbmFibGUvZGlzYWJsZToKKyAgICAgICAgLy8g
LSBub24tbG9jYWwgYm91bmRhcnkgZGVmYXVsdCBhY3Rpb25zIChlLmcuIHNjcm9sbCBjaGFpbmlu
ZykuCisgICAgICAgIC8vIC0gbG9jYWwgYm91bmRhcnkgZGVmYXVsdCBhY3Rpb25zIChlLmcuIGJv
dW5jaW5nKS4KKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorICAgICAgICAvLyBpZiAoc2Ny
b2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGlu
Z05vZGU6OlNjcm9sbGFibGVBcmVhUGFyYW1zKSkgeworICAgICAgICAvLyAgICAgc2Nyb2xsVmll
dy5vdmVyc2Nyb2xsQmVoYXZpb3JIb3Jpem9udGFsID0gY29udmVydE92ZXJzY3JvbGxCZWhhdmlv
ckZyb21XZWJLaXRUb1VJS2l0KHNjcm9sbGluZ1N0YXRlTm9kZS5zY3JvbGxhYmxlQXJlYVBhcmFt
ZXRlcnMoKS5ob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKTsKKyAgICAgICAgLy8gICAgIHNj
cm9sbFZpZXcub3ZlcnNjcm9sbEJlaGF2aW9yVmVydGljYWwgPSBjb252ZXJ0T3ZlcnNjcm9sbEJl
aGF2aW9yRnJvbVdlYktpdFRvVUlLaXQoc2Nyb2xsaW5nU3RhdGVOb2RlLnNjcm9sbGFibGVBcmVh
UGFyYW1ldGVycygpLnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKTsKKyAgICAgICAgLy8gfQor
I2VuZGlmCisgICAgICAgIC8vIEZvciBub3csIHdlIG9ubHkgZGlzYWJsZSBib3VuY2luZyB3aGVu
IGJvdGggb3ZlcmZsb3cteCBhbmQgb3ZlcmZsb3cteSBhcmUgbm9uZS4KKyAgICAgICAgLy8gVUlT
Y3JvbGxWaWV3OjphbHdheXNCb3VuY2UqIGZ1bmN0aW9ucyBjYW5ub3QgaGVscCBoZXJlLgorICAg
ICAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdT
dGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbGFibGVBcmVhUGFyYW1zKSkgeworICAgICAgICAgICAg
c2Nyb2xsVmlldy5ib3VuY2VzID0gc2Nyb2xsaW5nU3RhdGVOb2RlLnNjcm9sbGFibGVBcmVhUGFy
YW1ldGVycygpLmhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IgPT0gT3ZlcnNjcm9sbEJlaGF2
aW9yOjpOb25lCisgICAgICAgICAgICAmJiBzY3JvbGxpbmdTdGF0ZU5vZGUuc2Nyb2xsYWJsZUFy
ZWFQYXJhbWV0ZXJzKCkudmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IgPT0gT3ZlcnNjcm9sbEJl
aGF2aW9yOjpOb25lCisgICAgICAgICAgICA/IE5PIDogWUVTOworICAgICAgICB9CisKICAgICAg
ICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3Rh
dGVOb2RlOjpQcm9wZXJ0eTo6U2Nyb2xsQ29udGFpbmVyTGF5ZXIpKSB7CiAgICAgICAgICAgICBp
ZiAoIW1fc2Nyb2xsVmlld0RlbGVnYXRlKQogICAgICAgICAgICAgICAgIG1fc2Nyb2xsVmlld0Rl
bGVnYXRlID0gYWRvcHROUyhbW1dLU2Nyb2xsaW5nTm9kZVNjcm9sbFZpZXdEZWxlZ2F0ZSBhbGxv
Y10gaW5pdFdpdGhTY3JvbGxpbmdUcmVlTm9kZURlbGVnYXRlOnRoaXNdKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IDk2MjBlODZmYjBh
NzIwMTQwMWMyY2FkNTUxZGUyY2ZiODg4OWJlZGIuLmI4Y2YyZTdmZTc0NmJlODYyMTQ5NWZjMTQz
MTM4MmIwNjUzOTlkYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJIVE1MVmlldy5tbQpAQCAtNDA5Myw2ICs0MDkzLDggQEAgc3RhdGljIEJPT0wgY3VycmVudFNj
cm9sbElzQmxpdChOU1ZpZXcgKmNsaXBWaWV3KQogICAgIGF1dG8qIGZyYW1lID0gY29yZShbc2Vs
ZiBfZnJhbWVdKTsKICAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+ZXZlbnRIYW5kbGVyKCkud2hl
ZWxFdmVudChldmVudCkpIHsKICNpZiBQTEFURk9STShNQUMpCisgICAgICAgIC8vIEZJWE1FOiBO
ZWVkIHRvIGZpbmQgYSB3YXkgdG8gYmxvY2sgdGhlIGNyb3NzLWZyYW1lIHNjcm9sbCBjaGFpbmlu
ZyBpbiBXSzEuCisgICAgICAgIC8vIFdlIGNhbiBub3QganVzdCBza2lwIHRoZSBzY3JvbGwgaGVy
ZSwgaXQgbm90IG9ubHkgYmxvY2tzIHNjcm9sbCBjaGFpbmluZyBidXQgYWxzbyBibG9ja3MgdGhl
IHNjcm9sbCBvbiBjdXJyZW50IHZpZXcuCiAgICAgICAgIFtzdXBlciBzY3JvbGxXaGVlbDpldmVu
dF07CiAjZW5kaWYKICAgICB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggODYyOGE3NzY5MTdhYjFkY2NlMjM0M2NjNDYxNjcy
ZWJkNjQ3YWYzMi4uOGU4ZDQxZjhkNDA0NGVlY2QwZDJiNTcyOWE3MmM2ZWE3NmVkMzA5OCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDIxIEBACisyMDIwLTEyLTI0ICBDYXRoaWUgQ2hlbiAgPGNhdGhpZWNoZW5A
aWdhbGlhLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgQ1NTIG92ZXJzY3JvbGwtYmVoYXZpb3Ig
b24gTWFjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjAxMzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBC
YXNlZCBvbiBGcsOpZMOpcmljIFdhbmcncyBwYXRjaC4KKworICAgICAgICAqIGZhc3Qvc2Nyb2xs
aW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGZhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFt
ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL292ZXJzY3Jv
bGwtYmVoYXZpb3ItaWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5n
L292ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Ny
b2xsYWJsZS1lbGVtZW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL292
ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxh
YmxlLWlmcmFtZS5odG1sOiBBZGRlZC4KKwogMjAyMC0xMi0yMyAgUnlhbiBIYWRkYWQgIDxyeWFu
aGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OOiBbIE1hYyBdIG1lZGlhL3Zp
ZGVvLWJ1ZmZlcmluZy1hbGxvd2VkLmh0bWwgaXMgZmxha3kgdGltZW91dApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZp
b3ItZWxlbWVudC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjcxNTBmZjYwYjVkYmRkMGI0YTdh
YzZmODNmYjU2ZjU3Y2QyY2Q4MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
c2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwyMCBAQAorCitQQVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92
ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gYXV0by4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3Jv
bGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gYXV0by4KK1BBU1MgRWxlbWVu
dCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFp
biBhdXRvLgorUEFTUyBFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9s
bC1iZWhhdmlvcjogY29udGFpbiBhdXRvLgorUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xs
IHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIGF1dG8uCitQQVNTIEVsZW1lbnQg
dmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIGF1dG8u
CitQQVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVo
YXZpb3I6IGF1dG8gY29udGFpbi4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3
aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gY29udGFpbi4KK1BBU1MgRWxlbWVudCBob3Jp
em9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBjb250
YWluLgorUEFTUyBFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1i
ZWhhdmlvcjogY29udGFpbiBjb250YWluLgorUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xs
IHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIGNvbnRhaW4uCitQQVNTIEVsZW1l
bnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIGNv
bnRhaW4uCitQQVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3Jv
bGwtYmVoYXZpb3I6IGF1dG8gbm9uZS4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVz
dCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gbm9uZS4KK1BBU1MgRWxlbWVudCBob3Jp
em9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBub25l
LgorUEFTUyBFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhh
dmlvcjogY29udGFpbiBub25lLgorUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qg
d2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIG5vbmUuCitQQVNTIEVsZW1lbnQgdmVydGlj
YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIG5vbmUuCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3It
ZWxlbWVudC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhh
dmlvci1lbGVtZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmEzMDE0ZGE5MTM3MzZkMWExNzNjYzlkZjY5
NmVmYzA1Mzg0NWNjZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xs
aW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC5odG1sCkBAIC0wLDAgKzEsMTA4IEBACis8
IWRvY3R5cGUgaHRtbD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVz
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
cmVwb3J0LmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9kcmFm
dHMuY3Nzd2cub3JnL2Nzcy1vdmVyc2Nyb2xsLWJlaGF2aW9yIj4KKzxzdHlsZT4KKyAgICAuc2Ny
b2xsaW5nIHsKKyAgICAgICAgb3ZlcmZsb3c6IHNjcm9sbDsKKyAgICB9CisgICAgLnNjcm9sbENv
bnRlbnQgeworICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgIGhlaWdodDogMzAwcHg7Cisg
ICAgfQorICAgICNyb290IHsKKyAgICAgICAgd2lkdGg6IDIwMHB4OworICAgICAgICBoZWlnaHQ6
IDIwMHB4OworICAgIH0KKyAgICAjc2Nyb2xsZXIgeworICAgICAgICB3aWR0aDogMTAwcHg7Cisg
ICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgfQorPC9zdHlsZT4KKzxkaXYgaWQ9J3Jvb3QnIGNs
YXNzPSJzY3JvbGxpbmciPgorICAgIDxkaXYgaWQ9J3Njcm9sbGVyJyBjbGFzcz0ic2Nyb2xsaW5n
Ij4KKyAgICAgICAgPGRpdiBjbGFzcz0ic2Nyb2xsQ29udGVudCI+PC9kaXY+CisgICAgPC9kaXY+
CisgICAgPGRpdiBjbGFzcz0ic2Nyb2xsQ29udGVudCI+PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlw
dD4KK2NvbnN0IHJvb3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncm9vdCcpOworY29uc3Qg
c2Nyb2xsZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2Nyb2xsZXInKTsKK3ZhciBvdmVy
c2Nyb2xsRGF0YXMgPSBbWyJhdXRvIiwgImF1dG8iLCB0cnVlLCB0cnVlXSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIFsiY29udGFpbiIsICJhdXRvIiwgZmFsc2UsIHRydWVdLAorICAgICAgICAg
ICAgICAgICAgICAgICAgWyJub25lIiwgImF1dG8iLCBmYWxzZSwgdHJ1ZV0sCisgICAgICAgICAg
ICAgICAgICAgICAgICBbImF1dG8iLCAiY29udGFpbiIsIHRydWUsIGZhbHNlXSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIFsiY29udGFpbiIsICJjb250YWluIiwgZmFsc2UsIGZhbHNlXSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIFsibm9uZSIsICJjb250YWluIiwgZmFsc2UsIGZhbHNlXSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIFsiYXV0byIsICJub25lIiwgdHJ1ZSwgZmFsc2VdLAor
ICAgICAgICAgICAgICAgICAgICAgICAgWyJjb250YWluIiwgIm5vbmUiLCBmYWxzZSwgZmFsc2Vd
LAorICAgICAgICAgICAgICAgICAgICAgICAgWyJub25lIiwgIm5vbmUiLCBmYWxzZSwgZmFsc2Vd
XTsKK2FzeW5jIGZ1bmN0aW9uIHBlcmZvcm1XaGVlbFNjcm9sbChzY3JvbGxlciwgZGlyZWN0aW9u
KSB7CisgICAgdmFyIGRlbHRhWCA9IDA7CisgICAgdmFyIGRlbHRhWSA9IDA7CisgICAgaWYgKGRp
cmVjdGlvbiA9PSAiZG93biIpCisgICAgICAgIGRlbHRhWSA9IC01OworICAgIGVsc2UgaWYgKGRp
cmVjdGlvbiA9PSAidXAiKQorICAgICAgICBkZWx0YVkgPSA1OworICAgIGVsc2UgaWYgKGRpcmVj
dGlvbiA9PSAicmlnaHQiKQorICAgICAgICBkZWx0YVggPSAtNTsKKyAgICBlbHNlIGlmIChkaXJl
Y3Rpb24gPT0gImxlZnQiKQorICAgICAgICBkZWx0YVggPSA1OworCisgICAgdmFyIHggPSBzY3Jv
bGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAgdmFyIHkgPSBzY3JvbGxlci5jbGllbnRIZWlnaHQg
LyAyOworICAgIGV2ZW50U2VuZGVyLmRyYWdNb2RlID0gZmFsc2U7CisgICAgZXZlbnRTZW5kZXIu
bW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7
CisgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGRlbHRhWCwgZGVsdGFZLCAnYmVnYW4nLCAnbm9uZScpOworICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkZWx0YVggKiAyLCBkZWx0YVkgKiAy
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGRlbHRhWCAqIDMsIGRlbHRhWSAqIDMsICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZGVsdGFYLCBkZWx0YVksICdub25lJywg
J2JlZ2luJyk7CisgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGRlbHRhWCAqIDIsIGRlbHRhWSAqIDIsICdub25lJywgJ2NvbnRpbnVlJyk7Cisg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGRl
bHRhWCAqIDMsIGRlbHRhWSAqIDMsICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywg
J2VuZCcpOworICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICAgICAgZXZl
bnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKCgpID0+IHsKKyAgICAgICAgICAg
IHJlc29sdmUoKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKK2Z1bmN0aW9uIHJlc2V0VGVz
dCgpIHsKKyAgICAvLyBUcnkgdmFyaW91cyBtZXRob2RzIHRvIGVuc3VyZSB0aGUgZWxlbWVudCBw
b3NpdGlvbiBpcyByZXNldCBpbW1lZGlhdGVseS4KKyAgICBzY3JvbGxlci5zY3JvbGxMZWZ0ID0g
MzAwOworICAgIHNjcm9sbGVyLnNjcm9sbFRvcCA9IDMwMDsKKyAgICBzY3JvbGxlci5zY3JvbGxU
bygzMDAsIDMwMCk7CisKKyAgICByb290LnNjcm9sbExlZnQgPSAwOworICAgIHJvb3Quc2Nyb2xs
VG9wID0gMDsKKyAgICByb290LnNjcm9sbFRvKDAsIDApOworfQorCitmdW5jdGlvbiBzdGFydFRl
c3QoKSB7CisgICAgb3ZlcnNjcm9sbERhdGFzLmZvckVhY2goKFtvdmVyc2Nyb2xsWCwgb3ZlcnNj
cm9sbFksIHByb3BhZ2F0ZVgsIHByb3BhZ2F0ZVldKSA9PiB7CisgICAgICAgIHByb21pc2VfdGVz
dCgoKSA9PiB7CisgICAgICAgICAgICByZXNldFRlc3QoKTsKKyAgICAgICAgICAgIHNjcm9sbGVy
LnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclggPSBvdmVyc2Nyb2xsWDsKKyAgICAgICAgICAgIHNj
cm9sbGVyLnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclkgPSBvdmVyc2Nyb2xsWTsKKyAgICAgICAg
ICAgIHJldHVybiBwZXJmb3JtV2hlZWxTY3JvbGwoc2Nyb2xsZXIsICJyaWdodCIpLnRoZW4oKCkg
PT4geworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxMZWZ0ID4gMCwg
cHJvcGFnYXRlWCwgJ0NvbnRpbnVlIHVwIHRoZSBob3Jpem9udGFsIHNjcm9sbCBjaGFpbmluZycp
OworICAgICAgICAgICAgfSk7CisgICAgICAgIH0sICdFbGVtZW50IGhvcml6b250YWwgc2Nyb2xs
IHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiAnICsgb3ZlcnNjcm9sbFggKyAnICcgKyBv
dmVyc2Nyb2xsWSArICcuJyk7CisKKyAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAg
ICAgICAgIHJlc2V0VGVzdCgpOworICAgICAgICAgICAgc2Nyb2xsZXIuc3R5bGUub3ZlcnNjcm9s
bEJlaGF2aW9yWCA9IG92ZXJzY3JvbGxYOworICAgICAgICAgICAgc2Nyb2xsZXIuc3R5bGUub3Zl
cnNjcm9sbEJlaGF2aW9yWSA9IG92ZXJzY3JvbGxZOworICAgICAgICAgICAgcmV0dXJuIHBlcmZv
cm1XaGVlbFNjcm9sbChzY3JvbGxlciwgImRvd24iKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAg
ICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsVG9wID4gMCwgcHJvcGFnYXRlWSwgJ0NvbnRp
bnVlIHVwIHRoZSB2ZXJ0aWNhbCBzY3JvbGwgY2hhaW5pbmcnKTsKKyAgICAgICAgICAgIH0pOwor
ICAgICAgICB9LCAnRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwt
YmVoYXZpb3I6ICcgKyBvdmVyc2Nyb2xsWCArICcgJyArIG92ZXJzY3JvbGxZICsgJy4nKTsKKyAg
ICB9KTsKK30KKworYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIHN0YXJ0VGVzdCk7Cis8L3Njcmlw
dD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOTAwYTBiN2Q5MDViODdjMWRiNzYyNjk0ZmQwMDYzOGYxOTc2
OTUzNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL292ZXJz
Y3JvbGwtYmVoYXZpb3ItaWZyYW1lLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIxIEBACisKKwor
UEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZp
b3I6IGF1dG8gYXV0by4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3Zl
cnNjcm9sbC1iZWhhdmlvcjogYXV0byBhdXRvLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3Jv
bGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gYXV0by4KK1BBU1MgSWZy
YW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFp
biBhdXRvLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3Jv
bGwtYmVoYXZpb3I6IG5vbmUgYXV0by4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0
IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBhdXRvLgorUEFTUyBJZnJhbWUgaG9yaXpv
bnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gY29udGFpbi4K
K1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlv
cjogYXV0byBjb250YWluLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRo
IG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gY29udGFpbi4KK1BBU1MgSWZyYW1lIHZlcnRp
Y2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBjb250YWlu
LgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVo
YXZpb3I6IG5vbmUgY29udGFpbi4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdp
dGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBjb250YWluLgorUEFTUyBJZnJhbWUgaG9yaXpv
bnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gbm9uZS4KK1BB
U1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjog
YXV0byBub25lLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJz
Y3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gbm9uZS4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9s
bCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBub25lLgorUEFTUyBJZnJh
bWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUg
bm9uZS4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1i
ZWhhdmlvcjogbm9uZSBub25lLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9s
bGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9z
Y3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wN2Q2
OTM3NjEzYjgwMzI3ZGU2NmY3YjE4ZTM2YmQwODY1MzgxNGQyCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUuaHRt
bApAQCAtMCwwICsxLDExMiBAQAorPCFkb2N0eXBlIGh0bWw+CisKKzxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9Imhl
bHAiIGhyZWY9Imh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3Mtb3ZlcnNjcm9sbC1iZWhhdmlv
ciI+Cis8c3R5bGU+CisgICAgLnNjcm9sbGluZyB7CisgICAgICAgIG92ZXJmbG93OiBzY3JvbGw7
CisgICAgfQorICAgIC5zY3JvbGxDb250ZW50IHsKKyAgICAgICAgd2lkdGg6IDMwMHB4OworICAg
ICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQo
MTM1ZGVnLCByZWQsIGJsdWUpOworICAgIH0KKyAgICAjcm9vdCB7CisgICAgICAgIHdpZHRoOiAy
MDBweDsKKyAgICAgICAgaGVpZ2h0OiAyMDBweDsKKyAgICB9CisgICAgI3Njcm9sbGVyIHsKKyAg
ICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgICBvdmVy
c2Nyb2xsLWJlaGF2aW9yLXk6IGF1dG87CisgICAgfQorPC9zdHlsZT4KKzxkaXYgaWQ9J3Jvb3Qn
IGNsYXNzPSJzY3JvbGxpbmciPgorICAgIDxpZnJhbWUgaWQ9J3Njcm9sbGVyJyBzcmNkb2M9Ijxo
dG1sPjxkaXYgc3R5bGU9J3dpZHRoOiAzMDBweDsgaGVpZ2h0OiAzMDBweDsnPjwvZGl2PjwvaHRt
bD4KKyAgICAgICAgIj48L2lmcmFtZT4KKyAgICA8ZGl2IGNsYXNzPSJzY3JvbGxDb250ZW50Ij48
L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0PgorICAgIGNvbnN0IHJvb3QgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgncm9vdCcpOworICAgIGNvbnN0IHNjcm9sbGVyID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ3Njcm9sbGVyJyk7CisgICAgdmFyIG92ZXJzY3JvbGxEYXRhcyA9IFtbImF1dG8i
LCAiYXV0byIsIHRydWUsIHRydWVdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiY29u
dGFpbiIsICJhdXRvIiwgZmFsc2UsIHRydWVdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFsibm9uZSIsICJhdXRvIiwgZmFsc2UsIHRydWVdLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFsiYXV0byIsICJjb250YWluIiwgdHJ1ZSwgZmFsc2VdLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFsiY29udGFpbiIsICJjb250YWluIiwgZmFsc2UsIGZhbHNlXSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBbIm5vbmUiLCAiY29udGFpbiIsIGZhbHNlLCBmYWxzZV0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJhdXRvIiwgIm5vbmUiLCB0cnVlLCBmYWxzZV0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJjb250YWluIiwgIm5vbmUiLCBmYWxzZSwg
ZmFsc2VdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsibm9uZSIsICJub25lIiwgZmFs
c2UsIGZhbHNlXV07CisgICAgYXN5bmMgZnVuY3Rpb24gcGVyZm9ybVdoZWVsU2Nyb2xsKHNjcm9s
bGVyLCBkaXJlY3Rpb24pIHsKKyAgICAgICAgdmFyIGRlbHRhWCA9IDA7CisgICAgICAgIHZhciBk
ZWx0YVkgPSAwOworICAgICAgICBpZiAoZGlyZWN0aW9uID09ICJkb3duIikKKyAgICAgICAgICAg
IGRlbHRhWSA9IC01OworICAgICAgICBlbHNlIGlmIChkaXJlY3Rpb24gPT0gInVwIikKKyAgICAg
ICAgICAgIGRlbHRhWSA9IDU7CisgICAgICAgIGVsc2UgaWYgKGRpcmVjdGlvbiA9PSAicmlnaHQi
KQorICAgICAgICAgICAgZGVsdGFYID0gLTU7CisgICAgICAgIGVsc2UgaWYgKGRpcmVjdGlvbiA9
PSAibGVmdCIpCisgICAgICAgICAgICBkZWx0YVggPSA1OworCisgICAgICAgIHZhciB4ID0gc2Ny
b2xsZXIuY2xpZW50V2lkdGggLyAyOworICAgICAgICB2YXIgeSA9IHNjcm9sbGVyLmNsaWVudEhl
aWdodCAvIDI7CisgICAgICAgIGV2ZW50U2VuZGVyLmRyYWdNb2RlID0gZmFsc2U7CisgICAgICAg
IGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICBldmVudFNlbmRlci5t
b3VzZU1vdmVUbyh4LCB5KTsKKyAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGRlbHRhWCwgZGVsdGFZLCAnYmVnYW4nLCAnbm9uZScpOwor
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZGVsdGFYICogMiwgZGVsdGFZICogMiwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZGVsdGFY
ICogMywgZGVsdGFZICogMywgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywg
J25vbmUnKTsKKyAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGRlbHRhWCwgZGVsdGFZLCAnbm9uZScsICdiZWdpbicpOworICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZGVsdGFY
ICogMiwgZGVsdGFZICogMiwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGRlbHRhWCAqIDMsIGRl
bHRhWSAqIDMsICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsK
KyAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4geworICAgICAgICAgICAgZXZl
bnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKCgpID0+IHsKKyAgICAgICAgICAg
ICAgICByZXNvbHZlKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfQorCisg
ICAgZnVuY3Rpb24gcmVzZXRUZXN0KCkgeworICAgICAgICAvLyBUcnkgdmFyaW91cyBtZXRob2Rz
IHRvIGVuc3VyZSB0aGUgZWxlbWVudCBwb3NpdGlvbiBpcyByZXNldCBpbW1lZGlhdGVseS4KKyAg
ICAgICAgc2Nyb2xsZXIuY29udGVudFdpbmRvdy5zY3JvbGxYID0gMzAwOworICAgICAgICBzY3Jv
bGxlci5jb250ZW50V2luZG93LnNjcm9sbFkgPSAzMDA7CisgICAgICAgIHNjcm9sbGVyLmNvbnRl
bnRXaW5kb3cuc2Nyb2xsVG8oMzAwLCAzMDApOworCisgICAgICAgIHJvb3Quc2Nyb2xsTGVmdCA9
IDA7CisgICAgICAgIHJvb3Quc2Nyb2xsVG9wID0gMDsKKyAgICAgICAgcm9vdC5zY3JvbGxUbygw
LCAwKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBvdmVyc2Nyb2xsQmVoYXZpb3JUZXN0KCkgewor
ICAgICAgICBvdmVyc2Nyb2xsRGF0YXMuZm9yRWFjaCgoW292ZXJzY3JvbGxYLCBvdmVyc2Nyb2xs
WSwgcHJvcGFnYXRlWCwgcHJvcGFnYXRlWV0pID0+IHsKKyAgICAgICAgICAgIHByb21pc2VfdGVz
dCgoKSA9PiB7CisgICAgICAgICAgICAgICAgcmVzZXRUZXN0KCk7CisgICAgICAgICAgICAgICAg
dmFyIHRhcmdldCA9IHNjcm9sbGVyLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoImh0bWwiKVswXTsKKyAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUub3ZlcnNj
cm9sbEJlaGF2aW9yWCA9IG92ZXJzY3JvbGxYOworICAgICAgICAgICAgICAgIHRhcmdldC5zdHls
ZS5vdmVyc2Nyb2xsQmVoYXZpb3JZID0gb3ZlcnNjcm9sbFk7CisKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gcGVyZm9ybVdoZWVsU2Nyb2xsKHNjcm9sbGVyLCAicmlnaHQiKS50aGVuKCgpID0+IHsK
KyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbExlZnQgPiAwLCBw
cm9wYWdhdGVYLCAnQ29udGludWUgdXAgdGhlIGhvcml6b250YWwgc2Nyb2xsIGNoYWluaW5nJyk7
CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9LCAnSWZyYW1lIGhvcml6b250YWwg
c2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiAnICsgb3ZlcnNjcm9sbFggKyAn
ICcgKyBvdmVyc2Nyb2xsWSArICcuJyk7CisKKyAgICAgICAgICAgIHByb21pc2VfdGVzdCgoKSA9
PiB7CisgICAgICAgICAgICAgICAgcmVzZXRUZXN0KCk7CisgICAgICAgICAgICAgICAgdmFyIHRh
cmdldCA9IHNjcm9sbGVyLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoImh0bWwiKVswXTsKKyAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUub3ZlcnNjcm9sbEJl
aGF2aW9yWCA9IG92ZXJzY3JvbGxYOworICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5vdmVy
c2Nyb2xsQmVoYXZpb3JZID0gb3ZlcnNjcm9sbFk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHBl
cmZvcm1XaGVlbFNjcm9sbChzY3JvbGxlciwgImRvd24iKS50aGVuKCgpID0+IHsKKyAgICAgICAg
ICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbFRvcCA+IDAsIHByb3BhZ2F0ZVks
ICdDb250aW51ZSB1cCB0aGUgdmVydGljYWwgc2Nyb2xsIGNoYWluaW5nJyk7CisgICAgICAgICAg
ICAgICAgfSk7CisgICAgICAgICAgICB9LCAnSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdp
dGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogJyArIG92ZXJzY3JvbGxYICsgJyAnICsgb3ZlcnNjcm9s
bFkgKyAnLicpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBzY3JvbGxlci5hZGRFdmVudExp
c3RlbmVyKCJsb2FkIiwgb3ZlcnNjcm9sbEJlaGF2aW9yVGVzdCk7Cis8L3NjcmlwdD4KXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9s
bGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3Jv
bGxhYmxlLWVsZW1lbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYzOTViNjQ4OGQwODcwYjk1
NjFjMDI4Njc5ZDdlMTVhNDdmY2U2ZTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50LWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKKworUEFTUyBVbnNjcm9sbGFibGUgZWxlbWVudCBo
b3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4KK1BB
U1MgVW5zY3JvbGxhYmxlIGVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Ny
b2xsLWJlaGF2aW9yOiBub25lLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9s
bGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1l
bGVtZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjdhY2I4ZjhmOTAxY2M5NDliMWZmZGQ4N2RhZThhMWZi
OWVlYjk0YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL292
ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRtbApAQCAtMCwwICsxLDky
IEBACis8IWRvY3R5cGUgaHRtbD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0
aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6
Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1vdmVyc2Nyb2xsLWJlaGF2aW9yIj4KKzxzdHlsZT4KKyAg
ICAuc2Nyb2xsaW5nIHsKKyAgICAgICAgb3ZlcmZsb3c6IHNjcm9sbDsKKyAgICB9CisgICAgLnNj
cm9sbENvbnRlbnQgeworICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgIGhlaWdodDogMzAw
cHg7CisgICAgfQorICAgICNyb290IHsKKyAgICAgICAgd2lkdGg6IDIwMHB4OworICAgICAgICBo
ZWlnaHQ6IDIwMHB4OworICAgIH0KKyAgICAjc2Nyb2xsZXIgeworICAgICAgICB3aWR0aDogMTAw
cHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICAgIG92ZXJzY3JvbGwtYmVoYXZpb3I6
IG5vbmU7CisgICAgICAgIG92ZXJmbG93OiB2aXNpYmxlOworICAgICAgICBiYWNrZ3JvdW5kOiBs
aW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZWQsIGJsdWUpOworICAgIH0KKzwvc3R5bGU+Cis8ZGl2
IGlkPSJyb290IiBjbGFzcz0ic2Nyb2xsaW5nIj4KKyAgICA8ZGl2IGlkPSJzY3JvbGxlciI+Cisg
ICAgICAgIDxkaXYgY2xhc3M9InNjcm9sbENvbnRlbnQiPjwvZGl2PgorICAgIDwvZGl2PgorICAg
IDxkaXYgY2xhc3M9InNjcm9sbENvbnRlbnQiPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+Citj
b25zdCByb290ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jvb3QnKTsKK2NvbnN0IHNjcm9s
bGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Njcm9sbGVyJyk7Cithc3luYyBmdW5jdGlv
biBwZXJmb3JtV2hlZWxTY3JvbGwoc2Nyb2xsZXIsIGRpcmVjdGlvbikgeworICAgIHZhciBkZWx0
YVggPSAwOworICAgIHZhciBkZWx0YVkgPSAwOworICAgIGlmIChkaXJlY3Rpb24gPT0gImRvd24i
KQorICAgICAgICBkZWx0YVkgPSAtNTsKKyAgICBlbHNlIGlmIChkaXJlY3Rpb24gPT0gInVwIikK
KyAgICAgICAgZGVsdGFZID0gNTsKKyAgICBlbHNlIGlmIChkaXJlY3Rpb24gPT0gInJpZ2h0IikK
KyAgICAgICAgZGVsdGFYID0gLTU7CisgICAgZWxzZSBpZiAoZGlyZWN0aW9uID09ICJsZWZ0IikK
KyAgICAgICAgZGVsdGFYID0gNTsKKworICAgIHZhciB4ID0gc2Nyb2xsZXIuY2xpZW50V2lkdGgg
LyAyOworICAgIHZhciB5ID0gc2Nyb2xsZXIuY2xpZW50SGVpZ2h0IC8gMjsKKyAgICBldmVudFNl
bmRlci5kcmFnTW9kZSA9IGZhbHNlOworICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50
cygpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkZWx0YVgsIGRlbHRhWSwg
J2JlZ2FuJywgJ25vbmUnKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZGVsdGFYICogMiwgZGVsdGFZICogMiwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkZWx0YVggKiAzLCBkZWx0YVkgKiAzLCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdl
bmRlZCcsICdub25lJyk7CisgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGRlbHRhWCwgZGVsdGFZLCAnbm9uZScsICdiZWdpbicpOworICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkZWx0YVgg
KiAyLCBkZWx0YVkgKiAyLCAnbm9uZScsICdjb250aW51ZScpOworICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkZWx0YVggKiAzLCBkZWx0YVkg
KiAzLCAnbm9uZScsICdjb250aW51ZScpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICByZXR1
cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRl
clNjcm9sbGluZ0NvbXBsZXRlcygoKSA9PiB7CisgICAgICAgICAgICByZXNvbHZlKCk7CisgICAg
ICAgIH0pOworICAgIH0pOworfQorCitmdW5jdGlvbiByZXNldFRlc3QoKSB7CisgICAgcm9vdC5z
Y3JvbGxMZWZ0ID0gMDsKKyAgICByb290LnNjcm9sbFRvcCA9IDA7CisgICAgcm9vdC5zY3JvbGxU
bygwLCAwKTsKK30KKworZnVuY3Rpb24gc3RhcnRUZXN0KCkgeworICAgICAgICBwcm9taXNlX3Rl
c3QoKCkgPT4geworICAgICAgICAgICAgcmVzZXRUZXN0KCk7CisgICAgICAgICAgICByZXR1cm4g
cGVyZm9ybVdoZWVsU2Nyb2xsKHNjcm9sbGVyLCAicmlnaHQiKS50aGVuKCgpID0+IHsKKyAgICAg
ICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsTGVmdCA+IDAsIHRydWUsICdDb250
aW51ZSB1cCB0aGUgaG9yaXpvbnRhbCBzY3JvbGwgY2hhaW5pbmcnKTsKKyAgICAgICAgICAgIH0p
OworICAgICAgICB9LCAnVW5zY3JvbGxhYmxlIGVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVz
dCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuJyk7CisKKyAgICAgICAgcHJvbWlzZV90
ZXN0KCgpID0+IHsKKyAgICAgICAgICAgIHJlc2V0VGVzdCgpOworCisgICAgICAgICAgICByZXR1
cm4gcGVyZm9ybVdoZWVsU2Nyb2xsKHNjcm9sbGVyLCAiZG93biIpLnRoZW4oKCkgPT4geworICAg
ICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxUb3AgPiAwLCB0cnVlLCAnQ29u
dGludWUgdXAgdGhlIHZlcnRpY2FsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAgICAgICAgfSk7
CisgICAgICAgIH0sICdVbnNjcm9sbGFibGUgZWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3
aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuJyk7Cit9CisKK2FkZEV2ZW50TGlzdGVuZXIo
ImxvYWQiLCBzdGFydFRlc3QpOworPC9zY3JpcHQ+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhh
dmlvci11bnNjcm9sbGFibGUtaWZyYW1lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qv
c2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uN2ZhNTljY2JhNzlhZWZmMzNkYTcwZTkzZDQ4OGEwN2VlYzljNTY5
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3Jv
bGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1
IEBACisKKworUEFTUyBVbnNjcm9sbGFibGUgaWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qg
d2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLgorUEFTUyBVbnNjcm9sbGFibGUgaWZyYW1l
IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4KKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlv
ci11bnNjcm9sbGFibGUtaWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9v
dmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41
ODY5Y2RlYzAxNTdjMTg5ODExZDZkNzc2OThkMzBmNmExNzdiYTU5Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9s
bGFibGUtaWZyYW1lLmh0bWwKQEAgLTAsMCArMSw5MiBAQAorPCFkb2N0eXBlIGh0bWw+CisKKzxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+
Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3Mtb3Zl
cnNjcm9sbC1iZWhhdmlvciI+Cis8c3R5bGU+CisgICAgLnNjcm9sbGluZyB7CisgICAgICAgIG92
ZXJmbG93OiBzY3JvbGw7CisgICAgfQorICAgIC5zY3JvbGxDb250ZW50IHsKKyAgICAgICAgd2lk
dGg6IDMwMHB4OworICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgIH0KKyAgICAjcm9vdCB7Cisg
ICAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgICAgaGVpZ2h0OiAyMDBweDsKKyAgICB9CisgICAg
I3Njcm9sbGVyIHsKKyAgICAgICAgd2lkdGg6IDIwMHB4OworICAgICAgICBoZWlnaHQ6IDIwMHB4
OworICAgICAgICBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lOworICAgICAgICBvdmVyZmxvdzog
dmlzaWJsZTsKKyAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmVk
LCBibHVlKTsKKyAgICB9Cis8L3N0eWxlPgorPGRpdiBpZD0ncm9vdCcgY2xhc3M9InNjcm9sbGlu
ZyI+CisgICAgPGlmcmFtZSBpZD0nc2Nyb2xsZXInIHNyY2RvYz0iPGh0bWwgc3R5bGU9J292ZXJz
Y3JvbGwtYmVoYXZpb3I6IG5vbmU7Jz48ZGl2IHN0eWxlPSd3aWR0aDogMTAwcHg7IGhlaWdodDog
MTAwcHg7Jz48L2Rpdj48L2h0bWw+CisgICAgICAgICI+PC9pZnJhbWU+CisgICAgPGRpdiBjbGFz
cz0ic2Nyb2xsQ29udGVudCI+PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4KK2NvbnN0IHJvb3Qg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncm9vdCcpOworY29uc3Qgc2Nyb2xsZXIgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnc2Nyb2xsZXInKTsKKworYXN5bmMgZnVuY3Rpb24gcGVyZm9y
bVdoZWVsU2Nyb2xsKHNjcm9sbGVyLCBkaXJlY3Rpb24pIHsKKyAgICB2YXIgZGVsdGFYID0gMDsK
KyAgICB2YXIgZGVsdGFZID0gMDsKKyAgICBpZiAoZGlyZWN0aW9uID09ICJkb3duIikKKyAgICAg
ICAgZGVsdGFZID0gLTU7CisgICAgZWxzZSBpZiAoZGlyZWN0aW9uID09ICJ1cCIpCisgICAgICAg
IGRlbHRhWSA9IDU7CisgICAgZWxzZSBpZiAoZGlyZWN0aW9uID09ICJyaWdodCIpCisgICAgICAg
IGRlbHRhWCA9IC01OworICAgIGVsc2UgaWYgKGRpcmVjdGlvbiA9PSAibGVmdCIpCisgICAgICAg
IGRlbHRhWCA9IDU7CisKKyAgICB2YXIgeCA9IHNjcm9sbGVyLmNsaWVudFdpZHRoIC8gMjsKKyAg
ICB2YXIgeSA9IHNjcm9sbGVyLmNsaWVudEhlaWdodCAvIDI7CisgICAgZXZlbnRTZW5kZXIuZHJh
Z01vZGUgPSBmYWxzZTsKKyAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAg
ICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZGVsdGFYLCBkZWx0YVksICdiZWdhbics
ICdub25lJyk7CisgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGRlbHRhWCAqIDIsIGRlbHRhWSAqIDIsICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZGVs
dGFYICogMywgZGVsdGFZICogMywgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAn
bm9uZScpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkZWx0YVgsIGRlbHRhWSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZGVsdGFYICogMiwgZGVs
dGFZICogMiwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZGVsdGFYICogMywgZGVsdGFZICogMywgJ25v
bmUnLCAnY29udGludWUnKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgcmV0dXJuIG5ldyBQ
cm9taXNlKHJlc29sdmUgPT4geworICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxp
bmdDb21wbGV0ZXMoKCkgPT4geworICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICB9KTsK
KyAgICB9KTsKK30KKworZnVuY3Rpb24gcmVzZXRUZXN0KCkgeworICAgIHJvb3Quc2Nyb2xsTGVm
dCA9IDA7CisgICAgcm9vdC5zY3JvbGxUb3AgPSAwOworICAgIHJvb3Quc2Nyb2xsVG8oMCwgMCk7
Cit9CisKK2Z1bmN0aW9uIHN0YXJ0VGVzdCgpIHsKKyAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+
IHsKKyAgICAgICAgICAgIHJlc2V0VGVzdCgpOworICAgICAgICAgICAgcmV0dXJuIHBlcmZvcm1X
aGVlbFNjcm9sbChzY3JvbGxlciwgInJpZ2h0IikudGhlbigoKSA9PiB7CisgICAgICAgICAgICAg
ICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbExlZnQgPiAwLCB0cnVlLCAnQ29udGludWUgdXAg
dGhlIGhvcml6b250YWwgc2Nyb2xsIGNoYWluaW5nJyk7CisgICAgICAgICAgICB9KTsKKyAgICAg
ICAgfSwgJ1Vuc2Nyb2xsYWJsZSBpZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92
ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuJyk7CisKKyAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+
IHsKKyAgICAgICAgICAgIHJlc2V0VGVzdCgpOworCisgICAgICAgICAgICByZXR1cm4gcGVyZm9y
bVdoZWVsU2Nyb2xsKHNjcm9sbGVyLCAiZG93biIpLnRoZW4oKCkgPT4geworICAgICAgICAgICAg
ICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxUb3AgPiAwLCB0cnVlLCAnQ29udGludWUgdXAg
dGhlIHZlcnRpY2FsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAgICAgICAgfSk7CisgICAgICAg
IH0sICdVbnNjcm9sbGFibGUgaWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNj
cm9sbC1iZWhhdmlvcjogbm9uZS4nKTsKK30KKworYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIHN0
YXJ0VGVzdCk7Cis8L3NjcmlwdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggMTQ4Y2Q3ZDZk
NzhkNjBjMDE2ZDM4MDI4ZjY5MzhmMGUwMGUwNDhkMC4uNzEwMWRkZjdlNjBiYmM5N2NkY2E5ZGEw
MzMzY2ZkY2I0MDBiNzQ2ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdr
MS9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVz
dEV4cGVjdGF0aW9ucwpAQCAtNDQ4LDYgKzQ0OCwxMCBAQCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nvb2tpZXMvc2VjdXJlL3NldC1mcm9tLXdzLnN1Yi5odG1sIFsgRmFpbHVyZSBd
CiAjIFdlYktpdDEgZnJhbWVzIHVzZSBuYXRpdmUgc2Nyb2xsYmFycyBjYXVzaW5nIHRoaXMgcmVm
ZXJlbmNlIHRlc3QgdG8gZmFpbC4KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy1zY3JvbGwtc25hcC9zY3JvbGwtdGFyZ2V0LXBhZGRpbmctMDAxLmh0bWwgWyBJbWFnZU9u
bHlGYWlsdXJlIF0KIAorIyBOZWVkIHRvIGZpbmQgYSB3YXkgdG8gYmxvY2sgdGhlIGNyb3NzLWZy
YW1lIHNjcm9sbCBjaGFpbmluZyBpbiBXSzEuCitmYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJl
aGF2aW9yLWlmcmFtZS5odG1sIFsgU2tpcCBdCitmYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJl
aGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUuaHRtbCBbIFNraXAgXQorCiAjIyMgRU5EIE9GICgy
KSBGYWlsdXJlcyB3aXRob3V0IGJ1ZyByZXBvcnRzCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417713</attachid>
            <date>2021-01-15 10:16:52 -0800</date>
            <delta_ts>2021-01-18 00:06:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220139-20210116021650.patch</filename>
            <type>text/plain</type>
            <size>80957</size>
            <attacher name="cathiechen">cathiechen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxNTIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGEzM2ZlOWU0NzkzZDlj
YTg2ODI0OTU2YzQ5NWJkY2M3NDc3ZDQ1Zi4uYzA4MTg4NGRhYjZiMTdjMDE4Y2I0MjJhNjJhZWI4
ZWZlOWI0M2M0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMCBAQAorMjAyMS0wMS0xNSAgQ2F0
aGllIENoZW4gIDxjYXRoaWVjaGVuQGlnYWxpYS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IENT
UyBvdmVyc2Nyb2xsLWJlaGF2aW9yIG9uIE1hYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwMTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQmFzZWQgb24gRnLDqWTDqXJpYyBXYW5nJ3MgcGF0Y2guCisK
KyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIG92ZXJzY3JvbGwtYmVoYXZpb3Ig
b24gTWFjLgorICAgICAgICBBY2NvcmRpbmcgdG8gWzFdLCB0aGVyZSBhcmUgdHdvIGtpbmRzIG9m
IGFjdGlvbnM6IG5vbi1sb2NhbCBib3VuZGFyeSBkZWZhdWx0IGFjdGlvbnMgYW5kIGxvY2FsIGJv
dW5kYXJ5IGRlZmF1bHQgYWN0aW9ucy4KKyAgICAgICAgSW4gV2ViS2l0IG1hYywgdGhlIHJ1YmJl
ciBiYW5kaW5nIGVmZm9ydCBpcyBiZWxvbmdlZCB0byBsb2NhbCBib3VuZGFyeSBkZWZhdWx0IGFj
dGlvbnMuIFRoZSBzY3JvbGwgY2hhaW5pbmcgYW5kIHN3aXBlCisgICAgICAgIGdlc3R1cmVzICh0
cmlnZ2VyIGdvIGJhY2sgb3IgZ28gZm9yd2FyZCBhY3Rpb25zKSBhcmUgYmVsb25nZWQgdG8gbm9u
LWxvY2FsIGJvdW5kYXJ5IGRlZmF1bHQgYWN0aW9ucy4KKyAgICAgICAgMS4gVG8gaGFuZGxlIHRo
ZSBydWJiZXIgYmFuZGluZyBlZmZlY3QsIHNob3VsZFN0b3BIb3Jpem9udGFsU3RyZWNoKCkgYW5k
IHNob3VsZFN0b3BWZXJ0aWNhbFN0cmVjaCgpIGFyZSBhZGRlZCB0byBkZWNpZGUKKyAgICAgICAg
d2hldGhlciB0aGUgcnViYmVyIGJhbmRpbmcgZWZmb3J0IGlzIGFsbG93ZWQgb3Igbm90LgorICAg
ICAgICAyLiBUbyBibG9jayBzY3JvbGwgY2hhaW5pbmcgYWN0aW9ucyBpbiBkaWZmZXJlbnQgc2Ny
b2xsIG1vZGVzLgorICAgICAgICAgIC0gRm9yIGFzeW5jaHJvbm91cyBzY3JvbGxpbmcsIGl0J3Mg
aGFuZGxlZCBpbiBTY3JvbGxpbmdUcmVlOjpoYW5kbGVXaGVlbEV2ZW50V2l0aE5vZGUoKSwgYWNj
b3JkaW5nIHRvIHRoZSB2YWx1ZSBvZgorICAgICAgICAgIG92ZXJzY3JvbGwtYmVoYXZpb3IsIGl0
IGJsb2NrcyB0aGUgc2Nyb2xsIGNoYWluaW5nIGlmIG5lZWRlZCwgdGhlIHJlc3VsdCB3b3VsZCBi
ZSBhZGRlZCB0byBtX2xhdGNoaW5nQ29udHJvbGxlcgorICAgICAgICAgIGFuZCBtaWdodCBiZSBy
ZXVzZWQuCisgICAgICAgICAgLSBGb3Igc3luY2hyb25vdXMgc2Nyb2xsaW5nLCBpZiBXSEVFTF9F
VkVOVF9MQVRDSElORyBpcyBkaXNhYmxlZCwgaXQgaGFuZGxlcyBvdmVyc2Nyb2xsLWJlaGF2aW9y
IGluIGhhbmRsZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94KCkuCisgICAgICAg
ICAgSWYgV0hFRUxfRVZFTlRfTEFUQ0hJTkcgaXMgZW5hYmxlZC4gT3ZlcnNjcm9sbC1iZWhhdmlv
ciBpcyBoYW5kbGVkIGluIGZpbmRFbmNsb3NpbmdTY3JvbGxhYmxlQ29udGFpbmVyKCkuCisgICAg
ICAgICAgSXQgYWRkZWQgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIHRvIEZyYW1lU3RhdGUgdG8gaW5k
aWNhdGUgd2hldGhlciB0aGUgY3VycmVudCBsYXRjaGVkIG5vZGUgc2hvdWxkIGJsb2NrIHNjcm9s
bCBjaGFpbmluZy4KKyAgICAgICAgICBJZiB0aGUgY3VycmVudCBmcmFtZSBpcyBhIHN1YmZyYW1l
LCBpdCBwYXNzZXMgaXRzIFNjcm9sbENoYWluaW5nQmxvY2tlciB0byB0aGUgcGFyZW50ZnJhbWUs
IGFuZCBldmVudHVhbGx5CisgICAgICAgICAgbGV0IHRoZSBtYWluZnJhbWUgZGVjaWRlIHdoZXRo
ZXIgc2hvdWxkIHRyaWdnZXIgc3dpcGUgZ2VzdHVyZXMgb3Igbm90LgorICAgICAgICAzLiBUaGUg
c3dpcGUgZ2VzdHVyZXMuCisgICAgICAgICAgSWYgdGhlIG1haW5mcmFtZSByZWFjaGVzIGl0cyBz
Y3JvbGwgZWRnZXMsIHRoZXJlIHdpbGwgYmUgc3dpcGUgZ2VzdHVyZXMgZXZlbiBpZiBvdmVyc2Ny
b2xsLWJlaGF2aW9yJ3MgdmFsdWUgaXMgbm9uZS4KKyAgICAgICAgICBUaGlzIGJlaGF2aW9yIGlz
IG5vdCBzdXBvb3J0ZWQgaW4gV0sxIGFuZCBXSzIncyBzeW5jaHJvbm91cyBzY3JvbGwgd2l0aCBX
SEVFTF9FVkVOVF9MQVRDSElORyBvZmYuCisKKyAgICAgICAgWzFdIGh0dHBzOi8vZHJhZnRzLmNz
c3dnLm9yZy9jc3Mtb3ZlcnNjcm9sbC0xLyNvdmVyc2Nyb2xsLWJlaGF2aW9yLXByb3BlcnRpZXMK
KworICAgICAgICBUZXN0czogZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVt
ZW50Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZp
b3ItaWZyYW1lLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwt
YmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9z
Y3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLmh0bWwKKwor
ICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0
ZVBhcmVudEZyYW1lU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKTogQXBwbGllZCB0aGUgY3VycmVudCBm
cmFtZSdzIG92ZXJzY3JvbGwtYmVoYXZpb3IgdmFsdWUgdG8gU2Nyb2xsQ2hhaW5pbmdCbG9ja2Vy
CisgICAgICAgIGFuZCBwYXNzIHRoaXMgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIHRvIHBhcmVudCBm
cmFtZS4KKyAgICAgICAgKFdlYkNvcmU6Om92ZXJzY3JvbGxCZWhhdmlvclN0b3BzU2Nyb2xsQ2hh
aW5pbmcpOiBVcGRhdGVkIHNjcm9sbENoYWluaW5nQmxvY2tlciBhbmQgY2hlY2tlZCBpZiBpdCBz
aG91bGQgYmxvY2sgdGhlIHNjcm9sbCBjaGFpbmluZy4KKyAgICAgICAgVGhlIGNoYWluaW5nIG9m
IHZlcnRpY2FsIHNjcm9sbCB3aWxsIGJlIHN0b3BwZWQgZGlyZWN0bHkuIEZvciBob3Jpem9udGFs
IHNjcm9sbCwgaWYgbWFpbmZyYW1lIHJlYWNoZXMgdGhlIGVkZ2VzLCBpdCBkb2Vzbid0IHN0b3Ag
dHJpZ2dlcmluZworICAgICAgICBzd2lwZSBnZXN0dXJlLiBTdWJmcmFtZXMgd2lsbCBpbnN0ZWFk
IHVwZGF0ZSB0aGUgYmxvY2tlciBpbiBTY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIuIElmIHRoZSBz
Y3JvbGwgY2hhaW5pbmcgc2hvdWxkIGNvbnRpbnVlLCBmaWx0ZXIgd2hlZWxFdmVudCdzIGRlbHRh
IGluc3RlYWQuIAorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2
ZW50SW50ZXJuYWwpOiBXaGVuIFdIRUVMX0VWRU5UX0xBVENISU5HIGlzIGVuYWJsZWQsIGNoZWNr
IG92ZXJzY3JvbGxCZWhhdmlvclN0b3BzU2Nyb2xsQ2hhaW5pbmcuCisgICAgICAgIFVwZGF0ZSB0
aGUgc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIGluIFNjcm9sbExhdGNoaW5nQ29udHJvbGxlciBpZiBp
dCdzIG5vdCBtYWluZnJhbWUuIFN0b3AgdGhlIHNjcm9sbCBjaGFpbmluZyBpZiBuZWVkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpkaWRTY3JvbGxJblNjcm9sbGFibGVBcmVhKTogQWRkZWQgcGFyYW1l
dGVyIFNjcm9sbENoYWluaW5nQmxvY2tlciwgYW5kIGZpbHRlciB0aGUgZmlsdGVyZWREZWx0YSBi
eSBpdC4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudElu
QXBwcm9wcmlhdGVFbmNsb3NpbmdCb3gpOiBVcGRhdGUgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLCBh
bmQgc3RvcCB0aGUgc2Nyb2xsIGNoYWluaW5nIGlmIG5lZWRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkV2ZW50SGFuZGxlcjo6ZGVmYXVsdFdoZWVsRXZlbnRIYW5kbGVyKTogRmlsdGVyIHRoZSB3aGVl
bEV2ZW50J3MgZGVsdGEgYnkgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIHN0b3JlZCBpbiBzY3JvbGxM
YXRjaGluZ0NvbnRyb2xsZXIuCisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuaDoKKyAgICAg
ICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6Omhv
cml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IgY29uc3QpOiBPdmVyc2Nyb2xsLWJlaGF2aW9yIG9u
bHkgYWZmZWN0IHNjcm9sbGFibGUgRnJhbWVWaWV3LgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVW
aWV3Ojp2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvciBjb25zdCk6IERpdHRvLgorICAgICAgICAq
IHBhZ2UvRnJhbWVWaWV3Lmg6CisgICAgICAgICogcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1t
OgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkT3ZlcnNjcm9sbEJlaGF2aW9yQmxvY2tTY3JvbGxD
aGFpbmluZyk6IFVwZGF0ZSBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIgYW5kIGNoZWNrIGlmIHRoZSBz
Y3JvbGwgY2hhaW5pbmcgc2hvdWxkIGJlIHN0b3BwZWQuCisgICAgICAgIChXZWJDb3JlOjpmaW5k
RW5jbG9zaW5nU2Nyb2xsYWJsZUNvbnRhaW5lcik6IFN0b3AgdGhlIHNjcm9sbCBjaGFpbmluZyBp
ZiBuZWVkZWQuCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmRldGVybWluZVdoZWVs
RXZlbnRUYXJnZXQpOiBTdG9yZXMgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIGluIHNjcm9sbExhdGNo
aW5nQ29udHJvbGxlcgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29v
cmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNTY3JvbGxpbmdDb29yZGluYXRv
cjo6c2V0U2Nyb2xsaW5nTm9kZVNjcm9sbGFibGVBcmVhR2VvbWV0cnkpOiBVcGRhdGUgb3ZlcnNj
cm9sbC1iZWhhdmlvciB2YWx1ZXMgaW4gc2Nyb2xsUGFyYW1ldGVycy4KKyAgICAgICAgKiBwYWdl
L3Njcm9sbGluZy9TY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyOjp1cGRhdGVBbmRGZXRjaExhdGNoaW5nU3RhdGVG
b3JGcmFtZSk6IEFkZCBTY3JvbGxDaGFpbmluZ0Jsb2NrZXIgdG8gRnJhbWVTdGF0ZS4KKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbExhdGNoaW5nQ29udHJvbGxlcjo6Z2V0U2Nyb2xsQ2hhaW5pbmdC
bG9ja2VyIGNvbnN0KTogUmV0dXJucyBTY3JvbGxDaGFpbmluZ0Jsb2NrZXIgb2YgZnJhbWUuCisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXI6OnVwZGF0ZVNjcm9sbENo
YWluaW5nQmxvY2tlcik6IFVwZGF0ZXMgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIG9mIGZyYW1lLgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyOjpkdW1wIGNvbnN0KToK
KyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIuaDoKKyAg
ICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvclR5cGVzLmg6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnM6Om9wZXJhdG9yPT0gY29uc3Qp
OiBBZGRlZCBob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yIGFuZCB2ZXJ0aWNhbE92ZXJzY3Jv
bGxCZWhhdmlvci4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWU6OnNob3VsZEJsb2NrU2Nyb2xsQ2hhaW5p
bmdXaXRoTm9kZSk6IFVwZGF0ZSBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIgYW5kIGNoZWNrIGlmIHRo
ZSBzY3JvbGwgY2hhaW5pbmcgc2hvdWxkIGJlIHN0b3BwZWQuCisgICAgICAgIElmIG5vdCwgZmls
dGVyIHRoZSB3aGVlbEV2ZW50J3MgZGVsdGEuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdU
cmVlOjpoYW5kbGVXaGVlbEV2ZW50V2l0aE5vZGUpOiBTdG9wIHRoZSBzY3JvbGwgY2hhaW5pbmcg
aWYgbmVlZGVkLgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuaDoKKyAg
ICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6aG9yaXpvbnRhbE92
ZXJzY3JvbGxCZWhhdmlvciBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGU6OnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yIGNvbnN0KTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6dXBk
YXRlU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyU3RhdGUgY29uc3QpOgorICAgICAgICAqIHBhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmg6CisgICAgICAgICogcGFnZS9zY3Jv
bGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMuaDoKKyAgICAg
ICAgKiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVs
ZWdhdGVNYWM6OmFsbG93c0hvcml6b250YWxTdHJldGNoaW5nIGNvbnN0KTogSWYgb3ZlcnNjcm9s
bC1iZWhhdmlvci14OiBub25lLCB0aGUgc2Nyb2xsIHN0cmV0Y2ggc2hvdWxkIGJlIGJsb2NrZWQu
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFj
OjphbGxvd3NWZXJ0aWNhbFN0cmV0Y2hpbmcgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OnNob3VsZFN0b3BIb3Jp
em9udGFsU3RyZWNoIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjpzaG91bGRTdG9wVmVydGljYWxTdHJlY2ggY29u
c3QpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtV2hlZWxFdmVudDo6d2hlZWxEZWx0YUJpYXNpbmdUb3dh
cmRzVmVydGljYWwpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFR5cGVzLmg6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxDaGFpbmluZ0Jsb2NrZXI6OnNob3VsZEJsb2NrU2Nyb2xsQ2hhaW5p
bmcpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQ2hhaW5pbmdCbG9ja2VyOjpmaWx0ZXJEZWx0
YSk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYWJsZUFyZWE6OnVwZGF0ZVNjcm9sbENoYWluaW5nQmxvY2tlclN0YXRlIGNv
bnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYWJsZUFyZWE6Omhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWE6OnZlcnRpY2FsT3ZlcnNjcm9sbEJl
aGF2aW9yIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9sbGVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxDb250cm9sbGVyQ2xpZW50OjpzaG91bGRTdG9w
SG9yaXpvbnRhbFN0cmVjaCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxDb250cm9s
bGVyQ2xpZW50OjpzaG91bGRTdG9wVmVydGljYWxTdHJlY2ggY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIubW06CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxDb250cm9sbGVyOjpoYW5kbGVXaGVlbEV2ZW50KTogU3RvcCBzY3JvbGwgc3RyZWNoaW5nIGlm
IG5lZWRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbENvbnRyb2xsZXI6OmRpcmVjdGlvbkZy
b21FdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxDb250cm9sbGVyOjp3aGVlbERlbHRh
Qmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFj
L1Njcm9sbEFuaW1hdG9yTWFjLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1h
dG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JNYWM6OnNob3VsZFN0
b3BIb3Jpem9udGFsU3RyZWNoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1h
dG9yTWFjOjpzaG91bGRTdG9wVmVydGljYWxTdHJlY2ggY29uc3QpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6aG9y
aXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllcjo6dmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IgY29uc3QpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJMYXllci5oOgorCiAyMDIxLTAxLTE1ICBSb2IgQnVpcyAgPHJidWlzQGln
YWxpYS5jb20+CiAKICAgICAgICAgTWFyayBvbmx5IGNoaWxkIGZvciBsYXlvdXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5k
ZXggN2U2NmQ2ZWNjOTk5ODM0NGEyYWI0NjMyYWU0NDEwYThkMmU1ZjcyYy4uNjg2ZjRlN2Y2YWQ2
NjlhNGQ3OTE0Y2VmM2UyZmNiMmJhZDNhOWVhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAor
MjAyMS0wMS0xNSAgQ2F0aGllIENoZW4gIDxjYXRoaWVjaGVuQGlnYWxpYS5jb20+CisKKyAgICAg
ICAgSW1wbGVtZW50IENTUyBvdmVyc2Nyb2xsLWJlaGF2aW9yIG9uIE1hYworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwMTM5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmFzZWQgb24gRnLDqWTDqXJpYyBX
YW5nJ3MgcGF0Y2guCisKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNw
cDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxTY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnM+
OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFNjcm9sbGFibGVBcmVhUGFy
YW1ldGVycz46OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5oOgorCiAyMDIxLTAxLTE1ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNv
bT4KIAogICAgICAgICBbR1N0cmVhbWVyXSBVSTwtPldlYlBvY2VzcyBJUEMgbmVlZGVkIGZvciBl
bnVtZXJhdGVEZXZpY2VzIHN1cHBvcnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBl
YzQ2NTE4NmFiZmEzZjc0M2FlMmNlN2IzZDM2ZmI0MWE2NzkwN2M1Li41MTUxNGE2ZGU4OWY5YzUx
MWU4ZDJiYzJhZTg3ZDQ1MWQ2ZDUyOTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMjEtMDEtMTUgIENhdGhpZSBDaGVuICA8Y2F0aGllY2hlbkBpZ2Fs
aWEuY29tPgorCisgICAgICAgIEltcGxlbWVudCBDU1Mgb3ZlcnNjcm9sbC1iZWhhdmlvciBvbiBN
YWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDEz
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJhc2Vk
IG9uIEZyw6lkw6lyaWMgV2FuZydzIHBhdGNoLgorCisgICAgICAgIE5lZWQgdG8gZmluZCBhIHdh
eSB0byBibG9jayB0aGUgY3Jvc3MtZnJhbWUgc2Nyb2xsIGNoYWluaW5nIGluIFdLMS4KKworICAg
ICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06CisgICAgICAgICgtW1dlYkhUTUxWaWV3IHNj
cm9sbFdoZWVsOl0pOgorCiAyMDIxLTAxLTE0ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmVtb3ZlZCBtb3N0IHVzZXMgb2YgZGlzcGF0Y2hfYXN5bmMoZGlz
cGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgLi4uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIu
Y3BwCmluZGV4IGE5M2VjNTU1MDg5MzYwZDk2MjEwZjA0MmRkMmVjYzgzZTc4OWRmOTIuLjA5YzBl
OGY1MzUxM2I1NzlkM2M4N2VjYzA4OTM5NjczYTZiZjI3MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50SGFuZGxlci5jcHAKQEAgLTI4MzEsNiArMjgzMSw1NiBAQCBib29sIEV2ZW50SGFuZGxlcjo6
aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIE9w
dGlvbgogICAgIHJldHVybiBoYW5kbGVkOwogfQogCisjaWYgRU5BQkxFKFdIRUVMX0VWRU5UX0xB
VENISU5HKQorc3RhdGljIHZvaWQgdXBkYXRlUGFyZW50RnJhbWVTY3JvbGxDaGFpbmluZ0Jsb2Nr
ZXIoY29uc3QgU2Nyb2xsYWJsZUFyZWEqIHNjcm9sbGFibGVBcmVhLCBGcmFtZSYgZnJhbWUsIFNj
cm9sbENoYWluaW5nQmxvY2tlciYgYmxvY2tlcikKK3sKKyAgICBhdXRvKiBwYXJlbnQgPSBmcmFt
ZS50cmVlKCkucGFyZW50KCk7CisgICAgaWYgKCFzY3JvbGxhYmxlQXJlYSkKKyAgICAgICAgc2Ny
b2xsYWJsZUFyZWEgPSBmcmFtZS52aWV3KCk7CisgICAgaWYgKCFmcmFtZS5wYWdlKCkgfHwgIXBh
cmVudCB8fCAhc2Nyb2xsYWJsZUFyZWEpCisgICAgICAgIHJldHVybjsKKyAgICBzY3JvbGxhYmxl
QXJlYS0+dXBkYXRlU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyU3RhdGUoYmxvY2tlcik7CisgICAgZnJh
bWUucGFnZSgpLT5zY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIoKS51cGRhdGVTY3JvbGxDaGFpbmlu
Z0Jsb2NrZXIoKnBhcmVudCwgYmxvY2tlcik7Cit9CisKK3N0YXRpYyBib29sIG92ZXJzY3JvbGxC
ZWhhdmlvclN0b3BzU2Nyb2xsQ2hhaW5pbmcoY29uc3QgU2Nyb2xsYWJsZUFyZWEqIHNjcm9sbGFi
bGVBcmVhLCBGcmFtZSYgZnJhbWUsIFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgU2Ny
b2xsQ2hhaW5pbmdCbG9ja2VyIHNjcm9sbENoYWluaW5nQmxvY2tlciwgYm9vbCYgaGFuZGxlZEV2
ZW50KQoreworICAgIGlmICghc2Nyb2xsYWJsZUFyZWEpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGlmIChzY3JvbGxhYmxlQXJlYSAhPSBmcmFtZS52aWV3KCkpIHsKKyAgICAgICAgLy8g
V2hlZWwgZXZlbnQgaXMgZ29pbmcgdG8gYmUgaGFuZGxlZCBieSBGcmFtZVZpZXcgaW4gcHJvY2Vz
c1doZWVsRXZlbnRGb3JTY3JvbGxpbmcoKSwKKyAgICAgICAgLy8gc2hvdWxkIGxldCBzY3JvbGxh
YmxlQXJlYSdzIG92ZXJzY3JvbGwtYmVoYXZpb3IgZWZmZWN0IFNjcm9sbENoYWluaW5nQmxvY2tl
ci4KKyAgICAgICAgc2Nyb2xsYWJsZUFyZWEtPnVwZGF0ZVNjcm9sbENoYWluaW5nQmxvY2tlclN0
YXRlKHNjcm9sbENoYWluaW5nQmxvY2tlcik7CisgICAgfQorCisgICAgRmxvYXRTaXplIGZpbHRl
cmVkRGVsdGEod2hlZWxFdmVudC5kZWx0YVgoKSwgd2hlZWxFdmVudC5kZWx0YVkoKSk7CisgICAg
YXV0byBiaWFzZWREZWx0YSA9IFBsYXRmb3JtV2hlZWxFdmVudDo6d2hlZWxEZWx0YUJpYXNpbmdU
b3dhcmRzVmVydGljYWwoZmlsdGVyZWREZWx0YSk7CisgICAgaWYgKHNjcm9sbENoYWluaW5nQmxv
Y2tlci5ibG9ja1ggJiYgIWJpYXNlZERlbHRhLmhlaWdodCgpKSB7CisgICAgICAgIC8vIElmIHRo
ZSBob3Jpem9udGFsIHNjcm9sbCBjaGFpbmluZyBpcyBibG9ja2VkIGJ5IG92ZXJzY3JvbGwtYmVo
YXZpb3IgaW4gYSBzdWJmcmFtZS4KKyAgICAgICAgLy8gSXQgcHJvcGFnYXRlcyBpdHMgU2Nyb2xs
Q2hhaW5pbmdCbG9ja2VyIHRvIHBhcmVudCBmcmFtZXMgYW5kIGV2ZW50dWFsbHkgbGV0IG1haW5m
cmFtZQorICAgICAgICAvLyBkZWNpZGUgd2hldGhlciBuZWVkIHRvIHRyaWdnZXIgYSBzd2lwZSBn
ZXN0dXJlIG9yIG5vdC4KKyAgICAgICAgaWYgKGZyYW1lLmlzTWFpbkZyYW1lKCkpIHsKKyAgICAg
ICAgICAgIC8vIEluIG1haW4gZnJhbWUsIGlmIHRoZSBzY3JvbGwgcG9zaXRpb24gcmVhY2hlcyB0
byBpdHMgZWRnZXMsIHRyaWdnZXIgdGhlIHN3aXBlIGdlc3R1cmUsIG90aGVyd2lzZSBub3QuCisg
ICAgICAgICAgICBoYW5kbGVkRXZlbnQgPSAhKGJpYXNlZERlbHRhLndpZHRoKCkgJiYgc2Nyb2xs
YWJsZUFyZWEtPmlzUGlubmVkRm9yU2Nyb2xsRGVsdGFPbkF4aXMoLWJpYXNlZERlbHRhLndpZHRo
KCksIFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCkpOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgdXBkYXRlUGFyZW50RnJhbWVTY3JvbGxDaGFpbmluZ0Jsb2NrZXIoc2Nyb2xsYWJs
ZUFyZWEsIGZyYW1lLCBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIpOworICAgICAgICAgICAgaGFuZGxl
ZEV2ZW50ID0gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
CisgICAgaWYgKFNjcm9sbENoYWluaW5nQmxvY2tlcjo6c2hvdWxkQmxvY2tTY3JvbGxDaGFpbmlu
ZyhzY3JvbGxDaGFpbmluZ0Jsb2NrZXIsIGJpYXNlZERlbHRhKSkgeworICAgICAgICBoYW5kbGVk
RXZlbnQgPSB0cnVlOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBTY3JvbGxD
aGFpbmluZ0Jsb2NrZXI6OmZpbHRlckRlbHRhKHNjcm9sbENoYWluaW5nQmxvY2tlciwgYmlhc2Vk
RGVsdGEsIGZpbHRlcmVkRGVsdGEpOworICAgIHdoZWVsRXZlbnQgPSB3aGVlbEV2ZW50LmNvcHlX
aXRoRGVsdGFzQW5kVmVsb2NpdHkoZmlsdGVyZWREZWx0YS53aWR0aCgpLCBmaWx0ZXJlZERlbHRh
LmhlaWdodCgpLCB3aGVlbEV2ZW50LnNjcm9sbGluZ1ZlbG9jaXR5KCkpOworICAgIHJldHVybiBm
YWxzZTsKK30KKyNlbmRpZgorCiBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudElu
dGVybmFsKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgZXZlbnQsIE9wdGlvblNldDxXaGVlbEV2
ZW50UHJvY2Vzc2luZ1N0ZXBzPiBwcm9jZXNzaW5nU3RlcHMsIE9wdGlvblNldDxFdmVudEhhbmRs
aW5nPiYgaGFuZGxpbmcpCiB7CiAgICAgYXV0byogZG9jdW1lbnQgPSBtX2ZyYW1lLmRvY3VtZW50
KCk7CkBAIC0yOTIzLDEyICsyOTczLDMxIEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVl
bEV2ZW50SW50ZXJuYWwoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCwgT3B0CiAjaWYg
RU5BQkxFKFdIRUVMX0VWRU5UX0xBVENISU5HKQogICAgIGlmIChhbGxvd1Njcm9sbGluZykKICAg
ICAgICAgYWxsb3dTY3JvbGxpbmcgPSBtX2ZyYW1lLnBhZ2UoKS0+c2Nyb2xsTGF0Y2hpbmdDb250
cm9sbGVyKCkubGF0Y2hpbmdBbGxvd3NTY3JvbGxpbmdJbkZyYW1lKG1fZnJhbWUsIHNjcm9sbGFi
bGVBcmVhKTsKKyAgICBTY3JvbGxDaGFpbmluZ0Jsb2NrZXIgYmxvY2tlckZyb21MYXRjaGluZ0Nv
bnRyb2xsZXIgPSBtX2ZyYW1lLnBhZ2UoKS0+c2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyKCkuZ2V0
U2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKG1fZnJhbWUpOworICAgIGlmICghKGFsbG93U2Nyb2xsaW5n
IHx8IG1fZnJhbWUuaXNNYWluRnJhbWUoKSkpCisgICAgICAgIHVwZGF0ZVBhcmVudEZyYW1lU2Ny
b2xsQ2hhaW5pbmdCbG9ja2VyKHNjcm9sbGFibGVBcmVhLmdldCgpLCBtX2ZyYW1lLCBibG9ja2Vy
RnJvbUxhdGNoaW5nQ29udHJvbGxlcik7CiAjZW5kaWYKIAogICAgIGlmIChhbGxvd1Njcm9sbGlu
ZykgewotICAgICAgICAvLyBGSVhNRTogcHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxpbmcoKSBp
cyBvbmx5IGNhbGxlZCBmb3IgRnJhbWVWaWV3IHNjcm9sbGluZywgbm90IG92ZXJmbG93IHNjcm9s
bGluZywgd2hpY2ggaXMgY29uZnVzaW5nLgotICAgICAgICBoYW5kbGVkRXZlbnQgPSBwcm9jZXNz
V2hlZWxFdmVudEZvclNjcm9sbGluZyhldmVudCwgc2Nyb2xsYWJsZUFyZWEsIGhhbmRsaW5nKTsK
LSAgICAgICAgcHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxTbmFwKGV2ZW50LCBzY3JvbGxhYmxl
QXJlYSk7CisgICAgICAgIFBsYXRmb3JtV2hlZWxFdmVudCBhZGp1c3RlZFdoZWVsRXZlbnQgPSBQ
bGF0Zm9ybVdoZWVsRXZlbnQoZXZlbnQpOworICAgICAgICBib29sIHNjcm9sbENoYWluaW5nU3Rv
cHBlZCA9IGZhbHNlOworI2lmIEVOQUJMRShXSEVFTF9FVkVOVF9MQVRDSElORykKKyAgICAgICAg
c2Nyb2xsQ2hhaW5pbmdTdG9wcGVkID0gb3ZlcnNjcm9sbEJlaGF2aW9yU3RvcHNTY3JvbGxDaGFp
bmluZyhzY3JvbGxhYmxlQXJlYS5nZXQoKSwgbV9mcmFtZSwgYWRqdXN0ZWRXaGVlbEV2ZW50LCBi
bG9ja2VyRnJvbUxhdGNoaW5nQ29udHJvbGxlciwgaGFuZGxlZEV2ZW50KTsKKyNlbmRpZgorICAg
ICAgICBpZiAoIXNjcm9sbENoYWluaW5nU3RvcHBlZCkgeworICAgICAgICAgICAgLy8gRklYTUU6
IHByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKCkgaXMgb25seSBjYWxsZWQgZm9yIEZyYW1l
VmlldyBzY3JvbGxpbmcsIG5vdCBvdmVyZmxvdyBzY3JvbGxpbmcsIHdoaWNoIGlzIGNvbmZ1c2lu
Zy4KKyAgICAgICAgICAgIGhhbmRsZWRFdmVudCA9IHByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xs
aW5nKGFkanVzdGVkV2hlZWxFdmVudCwgc2Nyb2xsYWJsZUFyZWEsIGhhbmRsaW5nKTsKKyAgICAg
ICAgICAgIHByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsU25hcChhZGp1c3RlZFdoZWVsRXZlbnQs
IHNjcm9sbGFibGVBcmVhKTsKKyAgICAgICAgfQorI2lmICFFTkFCTEUoV0hFRUxfRVZFTlRfTEFU
Q0hJTkcpCisgICAgICAgIGlmIChhdXRvKiB2aWV3ID0gbV9mcmFtZS52aWV3KCkpIHsKKyAgICAg
ICAgICAgIFNjcm9sbENoYWluaW5nQmxvY2tlciBibG9ja2VyID0geyB2aWV3LT5ob3Jpem9udGFs
T3ZlcnNjcm9sbEJlaGF2aW9yKCkgIT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpBdXRvLCB2aWV3LT52
ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpICE9IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0byB9
OworICAgICAgICAgICAgaWYgKCFoYW5kbGVkRXZlbnQpIHsKKyAgICAgICAgICAgICAgICBhdXRv
IGJpYXNlZERlbHRhID0gUGxhdGZvcm1XaGVlbEV2ZW50Ojp3aGVlbERlbHRhQmlhc2luZ1Rvd2Fy
ZHNWZXJ0aWNhbChhZGp1c3RlZFdoZWVsRXZlbnQuZGVsdGEoKSk7CisgICAgICAgICAgICAgICAg
aGFuZGxlZEV2ZW50ID0gU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyOjpzaG91bGRCbG9ja1Njcm9sbENo
YWluaW5nKGJsb2NrZXIsIGJpYXNlZERlbHRhKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
I2VuZGlmCiAgICAgfQogCiAgICAgcmV0dXJuIGhhbmRsZWRFdmVudDsKQEAgLTI5NDUsMjAgKzMw
MTQsMjMgQEAgc3RhdGljIHZvaWQgaGFuZGxlV2hlZWxFdmVudFBoYXNlSW5TY3JvbGxhYmxlQXJl
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
ICNpZiBFTkFCTEUoV0hFRUxfRVZFTlRfTEFUQ0hJTkcpCkBAIC0yOTc5LDIyICszMDUxLDMxIEBA
IGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2lu
Z0JveChOb2RlKiBzdGFydE5vZGUsIGNvCiAgICAgaWYgKCFzaG91bGRIYW5kbGVFdmVudCkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIGJsb2NrZXIg
PSB7IGZhbHNlLCBmYWxzZSB9OwogICAgIGlmIChpczxSZW5kZXJMaXN0Qm94Pihpbml0aWFsRW5j
bG9zaW5nQm94KSkKLSAgICAgICAgcmV0dXJuIGRpZFNjcm9sbEluU2Nyb2xsYWJsZUFyZWEoZG93
bmNhc3Q8UmVuZGVyTGlzdEJveD4oaW5pdGlhbEVuY2xvc2luZ0JveCksIHdoZWVsRXZlbnQpOwor
ICAgICAgICByZXR1cm4gZGlkU2Nyb2xsSW5TY3JvbGxhYmxlQXJlYShkb3duY2FzdDxSZW5kZXJM
aXN0Qm94Pihpbml0aWFsRW5jbG9zaW5nQm94KSwgd2hlZWxFdmVudCwgYmxvY2tlcik7CiAKKyAg
ICBhdXRvIGJpYXNlZERlbHRhID0gUGxhdGZvcm1XaGVlbEV2ZW50Ojp3aGVlbERlbHRhQmlhc2lu
Z1Rvd2FyZHNWZXJ0aWNhbChGbG9hdFNpemUod2hlZWxFdmVudC5kZWx0YVgoKSwgd2hlZWxFdmVu
dC5kZWx0YVkoKSkpOwogICAgIFJlbmRlckJveCogY3VycmVudEVuY2xvc2luZ0JveCA9ICZpbml0
aWFsRW5jbG9zaW5nQm94OwogICAgIHdoaWxlIChjdXJyZW50RW5jbG9zaW5nQm94KSB7CiAgICAg
ICAgIGlmIChSZW5kZXJMYXllciogYm94TGF5ZXIgPSBjdXJyZW50RW5jbG9zaW5nQm94LT5sYXll
cigpKSB7CiAgICAgICAgICAgICBhdXRvIHBsYXRmb3JtRXZlbnQgPSB3aGVlbEV2ZW50LnVuZGVy
bHlpbmdQbGF0Zm9ybUV2ZW50KCk7CiAgICAgICAgICAgICBib29sIHNjcm9sbGluZ1dhc0hhbmRs
ZWQ7CiAgICAgICAgICAgICBpZiAocGxhdGZvcm1FdmVudCkgeworICAgICAgICAgICAgICAgIFNj
cm9sbENoYWluaW5nQmxvY2tlcjo6ZmlsdGVyRGVsdGEoYmxvY2tlciwgYmlhc2VkRGVsdGEsIGZp
bHRlcmVkUGxhdGZvcm1EZWx0YSk7CiAgICAgICAgICAgICAgICAgYXV0byBjb3BpZWRFdmVudCA9
IHBsYXRmb3JtRXZlbnQtPmNvcHlXaXRoRGVsdGFzQW5kVmVsb2NpdHkoZmlsdGVyZWRQbGF0Zm9y
bURlbHRhLndpZHRoKCksIGZpbHRlcmVkUGxhdGZvcm1EZWx0YS5oZWlnaHQoKSwgZmlsdGVyZWRW
ZWxvY2l0eSk7CiAgICAgICAgICAgICAgICAgc2Nyb2xsaW5nV2FzSGFuZGxlZCA9IGhhbmRsZVdo
ZWVsRXZlbnRJblNjcm9sbGFibGVBcmVhKGNvcGllZEV2ZW50LCAqYm94TGF5ZXIsIGV2ZW50SGFu
ZGxpbmcpOwogICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgc2Nyb2xsaW5nV2Fz
SGFuZGxlZCA9IGRpZFNjcm9sbEluU2Nyb2xsYWJsZUFyZWEoKmJveExheWVyLCB3aGVlbEV2ZW50
KTsKKyAgICAgICAgICAgICAgICBzY3JvbGxpbmdXYXNIYW5kbGVkID0gZGlkU2Nyb2xsSW5TY3Jv
bGxhYmxlQXJlYSgqYm94TGF5ZXIsIHdoZWVsRXZlbnQsIGJsb2NrZXIpOwogCiAgICAgICAgICAg
ICBpZiAoc2Nyb2xsaW5nV2FzSGFuZGxlZCkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KworICAgICAgICAgICAgaWYgKGN1cnJlbnRFbmNsb3NpbmdCb3gtPmVsZW1lbnQoKSAhPSBjdXJy
ZW50RW5jbG9zaW5nQm94LT5kb2N1bWVudCgpLmRvY3VtZW50RWxlbWVudCgpKSB7CisgICAgICAg
ICAgICAgICAgYm94TGF5ZXItPnVwZGF0ZVNjcm9sbENoYWluaW5nQmxvY2tlclN0YXRlKGJsb2Nr
ZXIpOworICAgICAgICAgICAgICAgIGlmIChTY3JvbGxDaGFpbmluZ0Jsb2NrZXI6OnNob3VsZEJs
b2NrU2Nyb2xsQ2hhaW5pbmcoYmxvY2tlciwgYmlhc2VkRGVsdGEpKQorICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIGN1
cnJlbnRFbmNsb3NpbmdCb3ggPSBjdXJyZW50RW5jbG9zaW5nQm94LT5jb250YWluaW5nQmxvY2so
KTsKQEAgLTMwNzQsNiArMzE1NSw3IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpkZWZhdWx0V2hlZWxF
dmVudEhhbmRsZXIoTm9kZSogc3RhcnROb2RlLCBXaGVlbEV2ZW50JiB3aGVlbEV2CiAgICAgaWYg
KCFtX2ZyYW1lLnBhZ2UoKS0+c2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyKCkubGF0Y2hpbmdBbGxv
d3NTY3JvbGxpbmdJbkZyYW1lKG1fZnJhbWUsIGxhdGNoZWRTY3JvbGxlcikpCiAgICAgICAgIHJl
dHVybjsKIAorICAgIFNjcm9sbENoYWluaW5nQmxvY2tlciBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIg
PSBtX2ZyYW1lLnBhZ2UoKS0+c2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyKCkuZ2V0U2Nyb2xsQ2hh
aW5pbmdCbG9ja2VyKG1fZnJhbWUpOwogICAgIGlmIChsYXRjaGVkU2Nyb2xsZXIpIHsKICAgICAg
ICAgaWYgKGxhdGNoZWRTY3JvbGxlciA9PSBtX2ZyYW1lLnZpZXcoKSkgewogICAgICAgICAgICAg
Ly8gRnJhbWVWaWV3IHNjcm9sbGluZyBpcyBoYW5kbGVkIHZpYSBwcm9jZXNzV2hlZWxFdmVudEZv
clNjcm9sbGluZygpLgpAQCAtMzA4Miw2ICszMTY0LDggQEAgdm9pZCBFdmVudEhhbmRsZXI6OmRl
ZmF1bHRXaGVlbEV2ZW50SGFuZGxlcihOb2RlKiBzdGFydE5vZGUsIFdoZWVsRXZlbnQmIHdoZWVs
RXYKIAogICAgICAgICBhdXRvIHBsYXRmb3JtRXZlbnQgPSB3aGVlbEV2ZW50LnVuZGVybHlpbmdQ
bGF0Zm9ybUV2ZW50KCk7CiAgICAgICAgIGlmIChwbGF0Zm9ybUV2ZW50KSB7CisgICAgICAgICAg
ICBhdXRvIGJpYXNlZERlbHRhID0gUGxhdGZvcm1XaGVlbEV2ZW50Ojp3aGVlbERlbHRhQmlhc2lu
Z1Rvd2FyZHNWZXJ0aWNhbChmaWx0ZXJlZFBsYXRmb3JtRGVsdGEpOworICAgICAgICAgICAgU2Ny
b2xsQ2hhaW5pbmdCbG9ja2VyOjpmaWx0ZXJEZWx0YShzY3JvbGxDaGFpbmluZ0Jsb2NrZXIsIGJp
YXNlZERlbHRhLCBmaWx0ZXJlZFBsYXRmb3JtRGVsdGEpOwogICAgICAgICAgICAgYXV0byBjb3Bp
ZWRFdmVudCA9IHBsYXRmb3JtRXZlbnQtPmNvcHlXaXRoRGVsdGFzQW5kVmVsb2NpdHkoZmlsdGVy
ZWRQbGF0Zm9ybURlbHRhLndpZHRoKCksIGZpbHRlcmVkUGxhdGZvcm1EZWx0YS5oZWlnaHQoKSwg
ZmlsdGVyZWRWZWxvY2l0eSk7CiAgICAgICAgICAgICBpZiAoaGFuZGxlV2hlZWxFdmVudEluU2Ny
b2xsYWJsZUFyZWEoY29waWVkRXZlbnQsICpsYXRjaGVkU2Nyb2xsZXIsIGV2ZW50SGFuZGxpbmcp
KQogICAgICAgICAgICAgICAgIHdoZWVsRXZlbnQuc2V0RGVmYXVsdEhhbmRsZWQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0V2ZW50SGFuZGxlci5oCmluZGV4IDFiMTc1ZGE3OTNjNmM1MTJkMTA0OTlmZTkxZjBm
NThjMTlhNzc5ZWEuLmRjMmZmYjZkNjhlZWNmNmZlZjk2YzMwZmQ3M2VjOGEwNTczNWYxZWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaApAQCAtNDY4LDcgKzQ2OCw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBwcm9jZXNzV2hlZWxFdmVudEZvclNjcm9sbFNuYXAoY29uc3QgUGxhdGZvcm1X
aGVlbEV2ZW50JiwgY29uc3QgV2Vha1B0cjxTY3JvbGxhYmxlQXJlYT4mKTsKICAgICBib29sIGNv
bXBsZXRlV2lkZ2V0V2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBjb25zdCBX
ZWFrUHRyPFdpZGdldD4mLCBjb25zdCBXZWFrUHRyPFNjcm9sbGFibGVBcmVhPiYpOwogCi0gICAg
Ym9vbCBoYW5kbGVXaGVlbEV2ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2luZ0JveChOb2RlKiBzdGFy
dE5vZGUsIGNvbnN0IFdoZWVsRXZlbnQmLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlcmVkUGxhdGZv
cm1EZWx0YSwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJlZFZlbG9jaXR5LCBPcHRpb25TZXQ8RXZl
bnRIYW5kbGluZz4pOworICAgIGJvb2wgaGFuZGxlV2hlZWxFdmVudEluQXBwcm9wcmlhdGVFbmNs
b3NpbmdCb3goTm9kZSogc3RhcnROb2RlLCBjb25zdCBXaGVlbEV2ZW50JiwgRmxvYXRTaXplJiBm
aWx0ZXJlZFBsYXRmb3JtRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyZWRWZWxvY2l0eSwg
T3B0aW9uU2V0PEV2ZW50SGFuZGxpbmc+KTsKIAogICAgIGJvb2wgaGFuZGxlV2hlZWxFdmVudElu
U2Nyb2xsYWJsZUFyZWEoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgU2Nyb2xsYWJsZUFyZWEm
LCBPcHRpb25TZXQ8RXZlbnRIYW5kbGluZz4pOwogICAgIE9wdGlvbmFsPFdoZWVsU2Nyb2xsR2Vz
dHVyZVN0YXRlPiB1cGRhdGVXaGVlbEdlc3R1cmVTdGF0ZShjb25zdCBQbGF0Zm9ybVdoZWVsRXZl
bnQmLCBPcHRpb25TZXQ8RXZlbnRIYW5kbGluZz4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3Bw
CmluZGV4IDQ3MGRkYzhmYTIyYzk5YmNkYTRjODdiOTc1OTU5YjFiODE5NGFlOTguLjQ5YWY4NDcy
Y2UxZjhmMzgxY2Y5MTcwMmIzZTZkMTExNDU0YWRkODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5jcHAKQEAgLTQxOCw2ICs0MTgsMjYgQEAgYm9vbCBGcmFtZVZpZXc6OmRpZEZpcnN0TGF5b3V0
KCkgY29uc3QKICAgICByZXR1cm4gbGF5b3V0Q29udGV4dCgpLmRpZEZpcnN0TGF5b3V0KCk7CiB9
CiAKK092ZXJzY3JvbGxCZWhhdmlvciBGcmFtZVZpZXc6Omhvcml6b250YWxPdmVyc2Nyb2xsQmVo
YXZpb3IoKSBjb25zdAoreworICAgIGF1dG8qIGRvY3VtZW50ID0gZnJhbWUoKS5kb2N1bWVudCgp
OworICAgIGF1dG8gc2Nyb2xsaW5nT2JqZWN0ID0gZG9jdW1lbnQgJiYgZG9jdW1lbnQtPmRvY3Vt
ZW50RWxlbWVudCgpID8gZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpLT5yZW5kZXJlcigpIDog
bnVsbHB0cjsKKyAgICAvLyBBbiBlbGVtZW50IHRoYXQgaXMgbm90IHNjcm9sbCBjb250YWluZXIg
bXVzdCBhY2NlcHQgYnV0IGlnbm9yZSB0aGUgdmFsdWVzIG9mIHRoaXMgcHJvcGVydHkuCisgICAg
aWYgKHNjcm9sbGluZ09iamVjdCAmJiByZW5kZXJWaWV3KCkgJiYgcmVuZGVyVmlldygpLT5jYW5C
ZVNjcm9sbGVkQW5kSGFzU2Nyb2xsYWJsZUFyZWEoKSkKKyAgICAgICAgcmV0dXJuIHNjcm9sbGlu
Z09iamVjdC0+c3R5bGUoKS5vdmVyc2Nyb2xsQmVoYXZpb3JYKCk7CisgICAgcmV0dXJuIFNjcm9s
bGFibGVBcmVhOjpob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCk7Cit9CisKK092ZXJzY3Jv
bGxCZWhhdmlvciBGcmFtZVZpZXc6OnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgIGNvbnN0
Cit7CisgICAgYXV0byogZG9jdW1lbnQgPSBmcmFtZSgpLmRvY3VtZW50KCk7CisgICAgYXV0byBz
Y3JvbGxpbmdPYmplY3QgPSBkb2N1bWVudCAmJiBkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCkg
PyBkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCktPnJlbmRlcmVyKCkgOiBudWxscHRyOworICAg
IC8vIEFuIGVsZW1lbnQgdGhhdCBpcyBub3Qgc2Nyb2xsIGNvbnRhaW5lciBtdXN0IGFjY2VwdCBi
dXQgaWdub3JlIHRoZSB2YWx1ZXMgb2YgdGhpcyBwcm9wZXJ0eS4KKyAgICBpZiAoc2Nyb2xsaW5n
T2JqZWN0ICYmIHJlbmRlclZpZXcoKSAmJiByZW5kZXJWaWV3KCktPmNhbkJlU2Nyb2xsZWRBbmRI
YXNTY3JvbGxhYmxlQXJlYSgpKQorICAgICAgICByZXR1cm4gc2Nyb2xsaW5nT2JqZWN0LT5zdHls
ZSgpLm92ZXJzY3JvbGxCZWhhdmlvclkoKTsKKyAgICByZXR1cm4gU2Nyb2xsYWJsZUFyZWE6OnZl
cnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCk7Cit9CisKIHZvaWQgRnJhbWVWaWV3OjppbnZhbGlk
YXRlUmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIGlmICghcGFyZW50KCkpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5oCmluZGV4IGJkZmUyNzg0OWYyOTYxYzZkZGU1ZTlmZjhkZGI1MTAy
MTVmMzE3MjcuLjQ2MDU2MDdkZTE4ZmZjY2QyYjMzNTY1ODZiMTBlMDZlMDAyNWVhODEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVZpZXcuaApAQCAtNjgwLDYgKzY4MCw5IEBAIHB1YmxpYzoKIAogICAgIFN0
cmluZyBkZWJ1Z0Rlc2NyaXB0aW9uKCkgY29uc3QgZmluYWw7CiAKKyAgICBPdmVyc2Nyb2xsQmVo
YXZpb3IgaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpIGNvbnN0IGZpbmFsOworICAgIE92
ZXJzY3JvbGxCZWhhdmlvciB2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpIGNvbnN0IGZpbmFs
OworCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEZyYW1lVmlldyhGcmFtZSYpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0KaW5kZXggZjY0OGQ2ZTIyYjE3NmIz
OTcyMjZiZjY5OTRjYzZiODRkMDIyZThmYy4uZGZkNzM1NjBjMGJlYTgxNTYxMzM3ZmViZWMyZTRl
NTM2YmM3NWM4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5k
bGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5t
bQpAQCAtNzk0LDEwICs3OTQsMTYgQEAgc3RhdGljIFNjcm9sbGFibGVBcmVhKiBzY3JvbGxhYmxl
QXJlYUZvckJveChSZW5kZXJCb3gmIGJveCkKICAgICByZXR1cm4gYm94LmxheWVyKCk7CiB9CiAK
K3N0YXRpYyBib29sIHNob3VsZE92ZXJzY3JvbGxCZWhhdmlvckJsb2NrU2Nyb2xsQ2hhaW5pbmco
Y29uc3QgU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhLCBjb25zdCBGbG9hdFNpemUmIGJp
YXNlZERlbHRhLCBTY3JvbGxDaGFpbmluZ0Jsb2NrZXImIGJsb2NrZXIpCit7CisgICAgc2Nyb2xs
YWJsZUFyZWEudXBkYXRlU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyU3RhdGUoYmxvY2tlcik7CisgICAg
cmV0dXJuIFNjcm9sbENoYWluaW5nQmxvY2tlcjo6c2hvdWxkQmxvY2tTY3JvbGxDaGFpbmluZyhi
bG9ja2VyLCBiaWFzZWREZWx0YSk7Cit9CisKIC8vIEZJWE1FOiBUaGlzIGNvdWxkIGJlIHdyaXR0
ZW4gaW4gdGVybXMgb2YgU2Nyb2xsYWJsZUFyZWE6OmVuY2xvc2luZ1Njcm9sbGFibGVBcmVhKCku
Ci1zdGF0aWMgQ29udGFpbmVyTm9kZSogZmluZEVuY2xvc2luZ1Njcm9sbGFibGVDb250YWluZXIo
Q29udGFpbmVyTm9kZSogbm9kZSwgY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50
KQorc3RhdGljIENvbnRhaW5lck5vZGUqIGZpbmRFbmNsb3NpbmdTY3JvbGxhYmxlQ29udGFpbmVy
KENvbnRhaW5lck5vZGUqIG5vZGUsIGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVu
dCwgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyJiBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIpCiB7Ci0gICAg
YXV0byBiaWFzZWREZWx0YSA9IFNjcm9sbENvbnRyb2xsZXI6OndoZWVsRGVsdGFCaWFzaW5nVG93
YXJkc1ZlcnRpY2FsKHdoZWVsRXZlbnQpOworICAgIGF1dG8gYmlhc2VkRGVsdGEgPSBQbGF0Zm9y
bVdoZWVsRXZlbnQ6OndoZWVsRGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRpY2FsKHdoZWVsRXZlbnQu
ZGVsdGEoKSk7CiAKICAgICAvLyBGaW5kIHRoZSBmaXJzdCBub2RlIHdpdGggYSB2YWxpZCBzY3Jv
bGxhYmxlIGFyZWEgc3RhcnRpbmcgd2l0aCB0aGUgY3VycmVudAogICAgIC8vIG5vZGUgYW5kIHRy
YXZlcnNpbmcgaXRzIHBhcmVudHMgKG9yIHNoYWRvdyBob3N0cykuCkBAIC04MTEsNyArODE3LDcg
QEAgc3RhdGljIENvbnRhaW5lck5vZGUqIGZpbmRFbmNsb3NpbmdTY3JvbGxhYmxlQ29udGFpbmVy
KENvbnRhaW5lck5vZGUqIG5vZGUsIGNvbnMKICAgICAgICAgUmVuZGVyQm94KiBib3ggPSBjYW5k
aWRhdGUtPnJlbmRlckJveCgpOwogICAgICAgICBpZiAoIWJveCB8fCAhYm94LT5jYW5CZVNjcm9s
bGVkQW5kSGFzU2Nyb2xsYWJsZUFyZWEoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICAKKwogICAgICAgICBhdXRvKiBzY3JvbGxhYmxlQXJlYSA9IHNjcm9sbGFibGVBcmVhRm9yQm94
KCpib3gpOwogICAgICAgICBpZiAoIXNjcm9sbGFibGVBcmVhKQogICAgICAgICAgICAgY29udGlu
dWU7CkBAIC04MjQsOCArODMwLDEyIEBAIHN0YXRpYyBDb250YWluZXJOb2RlKiBmaW5kRW5jbG9z
aW5nU2Nyb2xsYWJsZUNvbnRhaW5lcihDb250YWluZXJOb2RlKiBub2RlLCBjb25zCiAKICAgICAg
ICAgaWYgKGJpYXNlZERlbHRhLndpZHRoKCkgJiYgIXNjcm9sbGFibGVBcmVhLT5pc1Bpbm5lZEZv
clNjcm9sbERlbHRhT25BeGlzKC1iaWFzZWREZWx0YS53aWR0aCgpLCBTY3JvbGxFdmVudEF4aXM6
Okhvcml6b250YWwpKQogICAgICAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZTsKKworICAgICAgICAv
LyBMZXQgRnJhbWVWaWV3Ojpob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yIGRlY2lkZSB3aGlj
aCBub2RlJ3Mgb3ZlcnNjcm9sbC1iYWh2aW9yIGlzIGVmZmVjdGl2ZSB0byBGcmFtZVZpZXcuCisg
ICAgICAgIGlmIChjYW5kaWRhdGUgIT0gY2FuZGlkYXRlLT5kb2N1bWVudCgpLmJvZHkoKSAmJiBz
aG91bGRPdmVyc2Nyb2xsQmVoYXZpb3JCbG9ja1Njcm9sbENoYWluaW5nKCpzY3JvbGxhYmxlQXJl
YSwgYmlhc2VkRGVsdGEsIHNjcm9sbENoYWluaW5nQmxvY2tlcikpCisgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgCisKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAt
ODcwLDEwICs4ODAsMTEgQEAgdm9pZCBFdmVudEhhbmRsZXI6OmRldGVybWluZVdoZWVsRXZlbnRU
YXJnZXQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW4KICAgICBpZiAoIXZpZXcp
CiAgICAgICAgIHJldHVybjsKIAorICAgIFNjcm9sbENoYWluaW5nQmxvY2tlciBzY3JvbGxDaGFp
bmluZ0Jsb2NrZXI7CiAgICAgaWYgKGV2ZW50VGFyZ2V0SXNQbGF0Zm9ybVdpZGdldCh3aGVlbEV2
ZW50VGFyZ2V0LmdldCgpKSkKICAgICAgICAgc2Nyb2xsYWJsZUFyZWEgPSBzY3JvbGxhYmxlQXJl
YUZvckV2ZW50VGFyZ2V0KHdoZWVsRXZlbnRUYXJnZXQuZ2V0KCkpOwogICAgIGVsc2UgewotICAg
ICAgICBhdXRvKiBzY3JvbGxhYmxlQ29udGFpbmVyID0gZmluZEVuY2xvc2luZ1Njcm9sbGFibGVD
b250YWluZXIod2hlZWxFdmVudFRhcmdldC5nZXQoKSwgd2hlZWxFdmVudCk7CisgICAgICAgIGF1
dG8qIHNjcm9sbGFibGVDb250YWluZXIgPSBmaW5kRW5jbG9zaW5nU2Nyb2xsYWJsZUNvbnRhaW5l
cih3aGVlbEV2ZW50VGFyZ2V0LmdldCgpLCB3aGVlbEV2ZW50LCBzY3JvbGxDaGFpbmluZ0Jsb2Nr
ZXIpOwogICAgICAgICBpZiAoc2Nyb2xsYWJsZUNvbnRhaW5lcikKICAgICAgICAgICAgIHNjcm9s
bGFibGVBcmVhID0gc2Nyb2xsYWJsZUFyZWFGb3JDb250YWluZXJOb2RlKCpzY3JvbGxhYmxlQ29u
dGFpbmVyKTsKICAgICAgICAgZWxzZQpAQCAtODkxLDcgKzkwMiw3IEBAIHZvaWQgRXZlbnRIYW5k
bGVyOjpkZXRlcm1pbmVXaGVlbEV2ZW50VGFyZ2V0KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYg
d2hlZWxFdmVuCiAgICAgaWYgKG1fZnJhbWUuaXNNYWluRnJhbWUoKSAmJiB3aGVlbEV2ZW50Lmlz
R2VzdHVyZVN0YXJ0KCkpCiAgICAgICAgIHBhZ2UtPndoZWVsRXZlbnREZWx0YUZpbHRlcigpLT5i
ZWdpbkZpbHRlcmluZ0RlbHRhcygpOwogCi0gICAgcGFnZS0+c2Nyb2xsTGF0Y2hpbmdDb250cm9s
bGVyKCkudXBkYXRlQW5kRmV0Y2hMYXRjaGluZ1N0YXRlRm9yRnJhbWUobV9mcmFtZSwgd2hlZWxF
dmVudCwgd2hlZWxFdmVudFRhcmdldCwgc2Nyb2xsYWJsZUFyZWEsIGlzT3ZlcldpZGdldCk7Cisg
ICAgcGFnZS0+c2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyKCkudXBkYXRlQW5kRmV0Y2hMYXRjaGlu
Z1N0YXRlRm9yRnJhbWUobV9mcmFtZSwgd2hlZWxFdmVudCwgd2hlZWxFdmVudFRhcmdldCwgc2Ny
b2xsYWJsZUFyZWEsIHNjcm9sbENoYWluaW5nQmxvY2tlciwgaXNPdmVyV2lkZ2V0KTsKIH0KIAog
dm9pZCBFdmVudEhhbmRsZXI6OnJlY29yZFdoZWVsRXZlbnRGb3JEZWx0YUZpbHRlcihjb25zdCBQ
bGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCmluZGV4
IDcwZWEwMzZmODNjOWVmMjk0OThkOThkMDFkYWVmMzRmYzM5MGE3OTMuLjVlYjJjMjVjMjEyZTQ0
ZjVlY2VlZWNjMjJhZTQ5MjA5YzcxYzYwMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCkBAIC02
OTcsNiArNjk3LDggQEAgdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRTY3JvbGxp
bmdOb2RlU2Nyb2xsYWJsZUFyZWFHZW9tZXRyeShTY3JvbGxpbmcKICAgICBzY3JvbGxpbmdOb2Rl
LnNldFNjcm9sbGFibGVBcmVhU2l6ZShzY3JvbGxhYmxlQXJlYS52aXNpYmxlU2l6ZSgpKTsKIAog
ICAgIFNjcm9sbGFibGVBcmVhUGFyYW1ldGVycyBzY3JvbGxQYXJhbWV0ZXJzOworICAgIHNjcm9s
bFBhcmFtZXRlcnMuaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvciA9IHNjcm9sbGFibGVBcmVh
Lmhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKTsKKyAgICBzY3JvbGxQYXJhbWV0ZXJzLnZl
cnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yID0gc2Nyb2xsYWJsZUFyZWEudmVydGljYWxPdmVyc2Ny
b2xsQmVoYXZpb3IoKTsKICAgICBzY3JvbGxQYXJhbWV0ZXJzLmhvcml6b250YWxTY3JvbGxFbGFz
dGljaXR5ID0gc2Nyb2xsYWJsZUFyZWEuaG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkoKTsKICAg
ICBzY3JvbGxQYXJhbWV0ZXJzLnZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eSA9IHNjcm9sbGFibGVB
cmVhLnZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eSgpOwogICAgIHNjcm9sbFBhcmFtZXRlcnMuYWxs
b3dzSG9yaXpvbnRhbFNjcm9sbGluZyA9IHNjcm9sbGFibGVBcmVhLmFsbG93c0hvcml6b250YWxT
Y3JvbGxpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbExhdGNoaW5nQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9TY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIuY3BwCmluZGV4IDRlZDRkOTc1YTdlYTQ1MDA5N2Zj
YmI0ZGU5YTJlMDMyMWM2YTY3N2IuLmJhMDAxMWQzMWIzNzg1NTEyYjQ1NDI5MDI5OWE1ZWFjMDFm
ZWIwZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbExh
dGNoaW5nQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyLmNwcApAQCAtMTA4LDcgKzEwOCw3IEBAIGJvb2wgU2Ny
b2xsTGF0Y2hpbmdDb250cm9sbGVyOjpsYXRjaGluZ0FsbG93c1Njcm9sbGluZ0luRnJhbWUoY29u
c3QgRnJhbWUmIGZyYW1lCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFNjcm9sbExhdGNo
aW5nQ29udHJvbGxlcjo6dXBkYXRlQW5kRmV0Y2hMYXRjaGluZ1N0YXRlRm9yRnJhbWUoRnJhbWUm
IGZyYW1lLCBjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIFJlZlB0cjxFbGVt
ZW50PiYgbGF0Y2hlZEVsZW1lbnQsIFdlYWtQdHI8U2Nyb2xsYWJsZUFyZWE+JiBzY3JvbGxhYmxl
QXJlYSwgYm9vbCYgaXNPdmVyV2lkZ2V0KQordm9pZCBTY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXI6
OnVwZGF0ZUFuZEZldGNoTGF0Y2hpbmdTdGF0ZUZvckZyYW1lKEZyYW1lJiBmcmFtZSwgY29uc3Qg
UGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBSZWZQdHI8RWxlbWVudD4mIGxhdGNoZWRF
bGVtZW50LCBXZWFrUHRyPFNjcm9sbGFibGVBcmVhPiYgc2Nyb2xsYWJsZUFyZWEsIFNjcm9sbENo
YWluaW5nQmxvY2tlciYgc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLCBib29sJiBpc092ZXJXaWRnZXQp
CiB7CiAgICAgaWYgKHdoZWVsRXZlbnQuaXNHZXN0dXJlU3RhcnQoKSkgewogICAgICAgICAvLyBX
ZSBjYW4gaGF2ZSBleGlzdGluZyBzdGF0ZSBoZXJlIGJlY2F1c2Ugc3RhdGUgaXMgY2xlYXJlZCBv
biBhIHRpbWVyLgpAQCAtMTE4LDYgKzExOCw3IEBAIHZvaWQgU2Nyb2xsTGF0Y2hpbmdDb250cm9s
bGVyOjp1cGRhdGVBbmRGZXRjaExhdGNoaW5nU3RhdGVGb3JGcmFtZShGcmFtZSYgZnJhbWUsCiAg
ICAgICAgICAgICBzdGF0ZS53aGVlbEV2ZW50RWxlbWVudCA9IG1ha2VXZWFrUHRyKGxhdGNoZWRF
bGVtZW50LmdldCgpKTsKICAgICAgICAgICAgIGlmIChzaG91bGRMYXRjaFRvU2Nyb2xsYWJsZUFy
ZWEoZnJhbWUsIHNjcm9sbGFibGVBcmVhLmdldCgpLCBtX2N1bXVsYXRpdmVFdmVudERlbHRhKSkK
ICAgICAgICAgICAgICAgICBzdGF0ZS5zY3JvbGxhYmxlQXJlYSA9IHNjcm9sbGFibGVBcmVhOwor
ICAgICAgICAgICAgc3RhdGUuc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyID0gc2Nyb2xsQ2hhaW5pbmdC
bG9ja2VyOwogICAgICAgICAgICAgc3RhdGUuaXNPdmVyV2lkZ2V0ID0gaXNPdmVyV2lkZ2V0Owog
CiAgICAgICAgICAgICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xsTGF0Y2hpbmcsIHN0cmVhbSA8PCAi
U2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyOjp1cGRhdGVBbmRGZXRjaExhdGNoaW5nU3RhdGVGb3JG
cmFtZSgpIC0gcHVzaGluZyBzdGF0ZSBmb3IgRnJhbWUgIiA8PCAmZnJhbWUgPDwgIiBlbGVtZW50
ICIgPDwgc3RhdGUud2hlZWxFdmVudEVsZW1lbnQuZ2V0KCkgPDwgIiBzY3JvbGxhYmxlQXJlYSAi
IDw8IHN0YXRlLnNjcm9sbGFibGVBcmVhKTsKQEAgLTEzMiw4ICsxMzMsMTAgQEAgdm9pZCBTY3Jv
bGxMYXRjaGluZ0NvbnRyb2xsZXI6OnVwZGF0ZUFuZEZldGNoTGF0Y2hpbmdTdGF0ZUZvckZyYW1l
KEZyYW1lJiBmcmFtZSwKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAvLyBXZSBtYXkg
bm90IGhhdmUgbGF0Y2hlZCBhdCBnZXN0dXJlIHN0YXJ0IGJlY2F1c2Ugb2Ygc21hbGwgZGVsdGFz
LiBSZS1ldmFsdWF0ZSBsYXRjaGluZyBiYXNlZCBvbiBhY2N1bXVsYXRlZCBkZWx0YS4KLSAgICAg
ICAgaWYgKCFzdGF0ZS0+c2Nyb2xsYWJsZUFyZWEgJiYgc2hvdWxkTGF0Y2hUb1Njcm9sbGFibGVB
cmVhKGZyYW1lLCBzY3JvbGxhYmxlQXJlYS5nZXQoKSwgbV9jdW11bGF0aXZlRXZlbnREZWx0YSkp
CisgICAgICAgIGlmICghc3RhdGUtPnNjcm9sbGFibGVBcmVhICYmIHNob3VsZExhdGNoVG9TY3Jv
bGxhYmxlQXJlYShmcmFtZSwgc2Nyb2xsYWJsZUFyZWEuZ2V0KCksIG1fY3VtdWxhdGl2ZUV2ZW50
RGVsdGEpKSB7CiAgICAgICAgICAgICBzdGF0ZS0+c2Nyb2xsYWJsZUFyZWEgPSBzY3JvbGxhYmxl
QXJlYTsKKyAgICAgICAgICAgIHN0YXRlLT5zY3JvbGxDaGFpbmluZ0Jsb2NrZXIgPSBzY3JvbGxD
aGFpbmluZ0Jsb2NrZXI7CisgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoIXdoZWVsRXZlbnQu
dXNlTGF0Y2hlZEV2ZW50RWxlbWVudCgpKQpAQCAtMTQ0LDEyICsxNDcsMzQgQEAgdm9pZCBTY3Jv
bGxMYXRjaGluZ0NvbnRyb2xsZXI6OnVwZGF0ZUFuZEZldGNoTGF0Y2hpbmdTdGF0ZUZvckZyYW1l
KEZyYW1lJiBmcmFtZSwKICAgICAgICAgICAgIGxhdGNoZWRFbGVtZW50ID0gc3RhdGUud2hlZWxF
dmVudEVsZW1lbnQuZ2V0KCk7CiAgICAgICAgICAgICBzY3JvbGxhYmxlQXJlYSA9IHN0YXRlLnNj
cm9sbGFibGVBcmVhOwogICAgICAgICAgICAgaXNPdmVyV2lkZ2V0ID0gc3RhdGUuaXNPdmVyV2lk
Z2V0OworICAgICAgICAgICAgc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyID0gc3RhdGUuc2Nyb2xsQ2hh
aW5pbmdCbG9ja2VyOwogCiAgICAgICAgICAgICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xsTGF0Y2hp
bmcsIHN0cmVhbSA8PCAiU2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyOjp1cGRhdGVBbmRGZXRjaExh
dGNoaW5nU3RhdGVGb3JGcmFtZSgpIC0gdXNpbmcgc3RhdGUgZm9yIEZyYW1lICIgPDwgJmZyYW1l
IDw8ICIgZWxlbWVudCAiIDw8IGxhdGNoZWRFbGVtZW50LmdldCgpIDw8ICIgc2Nyb2xsYWJsZUFy
ZWEgIiA8PCBzY3JvbGxhYmxlQXJlYSk7CiAgICAgICAgIH0KICAgICB9CiB9CiAKK1Njcm9sbENo
YWluaW5nQmxvY2tlciBTY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXI6OmdldFNjcm9sbENoYWluaW5n
QmxvY2tlcihjb25zdCBGcmFtZSYgZnJhbWUpIGNvbnN0Cit7CisgICAgaWYgKCFtX2ZyYW1lU3Rh
dGVTdGFjay5pc0VtcHR5KCkpIHsKKyAgICAgICAgYXV0byogZnJhbWVTdGF0ZSA9IHN0YXRlRm9y
RnJhbWUoZnJhbWUpOworICAgICAgICBpZiAoZnJhbWVTdGF0ZSkKKyAgICAgICAgICAgIHJldHVy
biBmcmFtZVN0YXRlLT5zY3JvbGxDaGFpbmluZ0Jsb2NrZXI7CisgICAgfQorCisgICAgcmV0dXJu
IHsgZmFsc2UsIGZhbHNlIH07Cit9CisKK3ZvaWQgU2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyOjp1
cGRhdGVTY3JvbGxDaGFpbmluZ0Jsb2NrZXIoY29uc3QgRnJhbWUmIGZyYW1lLCBjb25zdCBTY3Jv
bGxDaGFpbmluZ0Jsb2NrZXImIHNjcm9sbENoYWluaW5nQmxvY2tlckZyb21TdWJmcmFtZSkKK3sK
KyAgICBpZiAobV9mcmFtZVN0YXRlU3RhY2suaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47Cisg
ICAgaWYgKGF1dG8qIGZyYW1lU3RhdGUgPSBzdGF0ZUZvckZyYW1lKGZyYW1lKSkgeworICAgICAg
ICBmcmFtZVN0YXRlLT5zY3JvbGxDaGFpbmluZ0Jsb2NrZXIuYmxvY2tYIHw9IHNjcm9sbENoYWlu
aW5nQmxvY2tlckZyb21TdWJmcmFtZS5ibG9ja1g7CisgICAgICAgIGZyYW1lU3RhdGUtPnNjcm9s
bENoYWluaW5nQmxvY2tlci5ibG9ja1kgfD0gc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyRnJvbVN1YmZy
YW1lLmJsb2NrWTsKKyAgICB9Cit9CisKIHZvaWQgU2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyOjpy
ZW1vdmVMYXRjaGluZ1N0YXRlRm9yVGFyZ2V0KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCiB7CiAg
ICAgaWYgKG1fZnJhbWVTdGF0ZVN0YWNrLmlzRW1wdHkoKSkKQEAgLTI1Miw2ICsyNzcsOCBAQCB2
b2lkIFNjcm9sbExhdGNoaW5nQ29udHJvbGxlcjo6ZHVtcChXVEY6OlRleHRTdHJlYW0mIHRzKSBj
b25zdAogICAgICAgICBtdWx0aWxpbmVTdHJlYW0uZHVtcFByb3BlcnR5KCJmcmFtZSIsIFZhbHVl
T3JOdWxsKHN0YXRlLmZyYW1lKSk7CiAgICAgICAgIG11bHRpbGluZVN0cmVhbS5kdW1wUHJvcGVy
dHkoImVsZW1lbnQiLCBWYWx1ZU9yTnVsbChzdGF0ZS53aGVlbEV2ZW50RWxlbWVudC5nZXQoKSkp
OwogICAgICAgICBtdWx0aWxpbmVTdHJlYW0uZHVtcFByb3BlcnR5KCJzY3JvbGxhYmxlIGFyZWEi
LCBWYWx1ZU9yTnVsbChzdGF0ZS5zY3JvbGxhYmxlQXJlYS5nZXQoKSkpOworICAgICAgICBtdWx0
aWxpbmVTdHJlYW0uZHVtcFByb3BlcnR5KCJzdGF0ZS5zY3JvbGxDaGFpbmluZ0Jsb2NrZXIuYmxv
Y2tYIiwgc3RhdGUuc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLmJsb2NrWCk7CisgICAgICAgIG11bHRp
bGluZVN0cmVhbS5kdW1wUHJvcGVydHkoInN0YXRlLnNjcm9sbENoYWluaW5nQmxvY2tlci5ibG9j
a1kiLCBzdGF0ZS5zY3JvbGxDaGFpbmluZ0Jsb2NrZXIuYmxvY2tZKTsKICAgICAgICAgbXVsdGls
aW5lU3RyZWFtLmR1bXBQcm9wZXJ0eSgiaXMgb3ZlciB3aWRnZXQiLCBzdGF0ZS5pc092ZXJXaWRn
ZXQpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9TY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIuaAppbmRleCA1NjQ5NjE1OWM1ZTY4ZDJiY2NlZjhj
MjY1ZWU2MWNjYjlkZmI0YjI4Li44ZmQ4ZTMwYzZhMTY1ZDk5OThkNDExZDI4YmJmZmQzMmVlZjIz
NjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxMYXRj
aGluZ0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxMYXRjaGluZ0NvbnRyb2xsZXIuaApAQCAtNjEsNyArNjEsMTAgQEAgcHVibGljOgogICAgIC8v
IFJldHVybnMgdHJ1ZSBpZiBubyBmcmFtZSBpcyBsYXRjaGVkLCBvciBsYXRjaGluZyBpcyBpbiB0
aGUgZ2l2ZW4gZnJhbWUgKGluIHdoaWNoIGNhc2UgbGF0Y2hlZFNjcm9sbGVyIHdpbGwgYmUgbm9u
LW51bGwpLgogICAgIGJvb2wgbGF0Y2hpbmdBbGxvd3NTY3JvbGxpbmdJbkZyYW1lKGNvbnN0IEZy
YW1lJiwgV2Vha1B0cjxTY3JvbGxhYmxlQXJlYT4mIGxhdGNoZWRTY3JvbGxlcikgY29uc3Q7CiAK
LSAgICB2b2lkIHVwZGF0ZUFuZEZldGNoTGF0Y2hpbmdTdGF0ZUZvckZyYW1lKEZyYW1lJiwgY29u
c3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgUmVmUHRyPEVsZW1lbnQ+JiBsYXRjaGVkRWxlbWVudCwg
V2Vha1B0cjxTY3JvbGxhYmxlQXJlYT4mLCBib29sJiBpc092ZXJXaWRnZXQpOworICAgIHZvaWQg
dXBkYXRlQW5kRmV0Y2hMYXRjaGluZ1N0YXRlRm9yRnJhbWUoRnJhbWUmLCBjb25zdCBQbGF0Zm9y
bVdoZWVsRXZlbnQmLCBSZWZQdHI8RWxlbWVudD4mIGxhdGNoZWRFbGVtZW50LCBXZWFrUHRyPFNj
cm9sbGFibGVBcmVhPiYsIFNjcm9sbENoYWluaW5nQmxvY2tlciYsIGJvb2wmIGlzT3ZlcldpZGdl
dCk7CisKKyAgICBTY3JvbGxDaGFpbmluZ0Jsb2NrZXIgZ2V0U2Nyb2xsQ2hhaW5pbmdCbG9ja2Vy
KGNvbnN0IEZyYW1lJikgY29uc3Q7CisgICAgdm9pZCB1cGRhdGVTY3JvbGxDaGFpbmluZ0Jsb2Nr
ZXIoY29uc3QgRnJhbWUmLCBjb25zdCBTY3JvbGxDaGFpbmluZ0Jsb2NrZXImIFNjcm9sbENoYWlu
aW5nQmxvY2tlckZyb21TdWJmcmFtZSk7CiAKICAgICB2b2lkIHJlbW92ZUxhdGNoaW5nU3RhdGVG
b3JUYXJnZXQoY29uc3QgRWxlbWVudCYpOwogICAgIHZvaWQgcmVtb3ZlTGF0Y2hpbmdTdGF0ZUZv
ckZyYW1lKGNvbnN0IEZyYW1lJik7CkBAIC03Myw2ICs3Niw3IEBAIHByaXZhdGU6CiAgICAgICAg
IFdlYWtQdHI8RWxlbWVudD4gd2hlZWxFdmVudEVsZW1lbnQ7CiAgICAgICAgIFdlYWtQdHI8U2Ny
b2xsYWJsZUFyZWE+IHNjcm9sbGFibGVBcmVhOwogICAgICAgICBGcmFtZSogZnJhbWUgeyBudWxs
cHRyIH07CisgICAgICAgIFNjcm9sbENoYWluaW5nQmxvY2tlciBzY3JvbGxDaGFpbmluZ0Jsb2Nr
ZXI7CiAgICAgICAgIGJvb2wgaXNPdmVyV2lkZ2V0IHsgZmFsc2UgfTsKICAgICB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRv
clR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGlu
YXRvclR5cGVzLmgKaW5kZXggZWVjYWI2ZjU1YjY1YzQ2MDE5OWY4MGVmMDUwNjU1MmI3MWYzMDgw
My4uNTY3NGRjYWU2YzQzMmNhNDZhMDI4MzVkZDAwYWQ3NDAxM2NlNmFhMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3JUeXBlcy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9y
VHlwZXMuaApAQCAtNjgsNiArNjgsOSBAQCBlbnVtIGNsYXNzIFNjcm9sbGluZ0xheWVyUG9zaXRp
b25BY3Rpb24gewogfTsKIAogc3RydWN0IFNjcm9sbGFibGVBcmVhUGFyYW1ldGVycyB7CisgICAg
T3ZlcnNjcm9sbEJlaGF2aW9yIGhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IgeyBPdmVyc2Ny
b2xsQmVoYXZpb3I6OiBBdXRvIH07CisgICAgT3ZlcnNjcm9sbEJlaGF2aW9yIHZlcnRpY2FsT3Zl
cnNjcm9sbEJlaGF2aW9yIHsgT3ZlcnNjcm9sbEJlaGF2aW9yOjogQXV0byB9OworCiAgICAgU2Ny
b2xsRWxhc3RpY2l0eSBob3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eSB7IFNjcm9sbEVsYXN0aWNp
dHlOb25lIH07CiAgICAgU2Nyb2xsRWxhc3RpY2l0eSB2ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkg
eyBTY3JvbGxFbGFzdGljaXR5Tm9uZSB9OwogCkBAIC04NCw3ICs4Nyw5IEBAIHN0cnVjdCBTY3Jv
bGxhYmxlQXJlYVBhcmFtZXRlcnMgewogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNjcm9s
bGFibGVBcmVhUGFyYW1ldGVycyYgb3RoZXIpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4g
aG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkgPT0gb3RoZXIuaG9yaXpvbnRhbFNjcm9sbEVsYXN0
aWNpdHkKKyAgICAgICAgcmV0dXJuIGhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IgPT0gb3Ro
ZXIuaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcgorICAgICAgICAgICAgJiYgdmVydGljYWxP
dmVyc2Nyb2xsQmVoYXZpb3IgPT0gb3RoZXIudmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IKKyAg
ICAgICAgICAgICYmIGhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5ID09IG90aGVyLmhvcml6b250
YWxTY3JvbGxFbGFzdGljaXR5CiAgICAgICAgICAgICAmJiB2ZXJ0aWNhbFNjcm9sbEVsYXN0aWNp
dHkgPT0gb3RoZXIudmVydGljYWxTY3JvbGxFbGFzdGljaXR5CiAgICAgICAgICAgICAmJiBob3Jp
em9udGFsU2Nyb2xsYmFyTW9kZSA9PSBvdGhlci5ob3Jpem9udGFsU2Nyb2xsYmFyTW9kZQogICAg
ICAgICAgICAgJiYgdmVydGljYWxTY3JvbGxiYXJNb2RlID09IG90aGVyLnZlcnRpY2FsU2Nyb2xs
YmFyTW9kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nVHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVl
LmNwcAppbmRleCAxY2VmMzFiYjM2NjUxNmQzYjRhOGNlODFmYzE5ZGZhYjZlOTJhMGQ1Li5mYmNl
M2RiYjM3NGVlOGRkZWJhNDZhYTk0YjE2MjdkZWUwNjM0ODQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcApAQCAtMTc0LDIxICsxNzQsNTkg
QEAgV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0IFNjcm9sbGluZ1RyZWU6OmhhbmRsZVdoZWVsRXZl
bnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW4KICAgICByZXR1cm4gcmVzdWx0OwogfQogCitib29s
IFNjcm9sbGluZ1RyZWU6OnNob3VsZEJsb2NrU2Nyb2xsQ2hhaW5pbmdXaXRoTm9kZShjb25zdCBT
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZSYgc2Nyb2xsaW5nTm9kZSwgUGxhdGZvcm1XaGVlbEV2
ZW50JiB3aGVlbEV2ZW50LCBTY3JvbGxDaGFpbmluZ0Jsb2NrZXImIGJsb2NrZXIsIGJvb2wmIGhh
bmRsZWQpCit7CisgICAgc2Nyb2xsaW5nTm9kZS51cGRhdGVTY3JvbGxDaGFpbmluZ0Jsb2NrZXJT
dGF0ZShibG9ja2VyKTsKKworICAgIEZsb2F0U2l6ZSBmaWx0ZXJlZERlbHRhKHdoZWVsRXZlbnQu
ZGVsdGFYKCksIHdoZWVsRXZlbnQuZGVsdGFZKCkpOworICAgIGF1dG8gYmlhc2VkRGVsdGEgPSBQ
bGF0Zm9ybVdoZWVsRXZlbnQ6OndoZWVsRGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRpY2FsKGZpbHRl
cmVkRGVsdGEpOworICAgIGlmIChibG9ja2VyLmJsb2NrWCB8fCBibG9ja2VyLmJsb2NrWSkgewor
ICAgICAgICBpZiAoYmxvY2tlci5ibG9ja1ggJiYgIWJpYXNlZERlbHRhLmhlaWdodCgpICYmIHdp
bGxXaGVlbEV2ZW50U3RhcnRTd2lwZUdlc3R1cmUod2hlZWxFdmVudCkpIHsKKyAgICAgICAgICAg
IGhhbmRsZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9Cisg
ICAgICAgIGlmIChTY3JvbGxDaGFpbmluZ0Jsb2NrZXI6OnNob3VsZEJsb2NrU2Nyb2xsQ2hhaW5p
bmcoYmxvY2tlciwgYmlhc2VkRGVsdGEpKSB7CisgICAgICAgICAgICBoYW5kbGVkID0gdHJ1ZTsK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIFNjcm9sbENoYWlu
aW5nQmxvY2tlcjo6ZmlsdGVyRGVsdGEoYmxvY2tlciwgYmlhc2VkRGVsdGEsIGZpbHRlcmVkRGVs
dGEpOworICAgICAgICB3aGVlbEV2ZW50ID0gd2hlZWxFdmVudC5jb3B5V2l0aERlbHRhc0FuZFZl
bG9jaXR5KGZpbHRlcmVkRGVsdGEud2lkdGgoKSwgZmlsdGVyZWREZWx0YS5oZWlnaHQoKSwgd2hl
ZWxFdmVudC5zY3JvbGxpbmdWZWxvY2l0eSgpKTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCiBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQgU2Nyb2xsaW5nVHJlZTo6aGFuZGxlV2hlZWxF
dmVudFdpdGhOb2RlKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgT3B0aW9u
U2V0PFdoZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHM+IHByb2Nlc3NpbmdTdGVwcywgU2Nyb2xsaW5n
VHJlZU5vZGUqIG5vZGUsIEV2ZW50VGFyZ2V0aW5nIGV2ZW50VGFyZ2V0aW5nKQogeworICAgIFBs
YXRmb3JtV2hlZWxFdmVudCBhZGp1c3RlZFdoZWVsRXZlbnQgPSBQbGF0Zm9ybVdoZWVsRXZlbnQo
d2hlZWxFdmVudCk7CisgICAgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIGJsb2NrZXIgPSB7IGZhbHNl
LCBmYWxzZSB9OwogICAgIHdoaWxlIChub2RlKSB7CiAgICAgICAgIGlmIChpczxTY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZT4oKm5vZGUpKSB7CiAgICAgICAgICAgICBhdXRvJiBzY3JvbGxpbmdO
b2RlID0gZG93bmNhc3Q8U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU+KCpub2RlKTsKLSAgICAg
ICAgICAgIGF1dG8gcmVzdWx0ID0gc2Nyb2xsaW5nTm9kZS5oYW5kbGVXaGVlbEV2ZW50KHdoZWVs
RXZlbnQsIGV2ZW50VGFyZ2V0aW5nKTsKKyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gc2Nyb2xs
aW5nTm9kZS5oYW5kbGVXaGVlbEV2ZW50KGFkanVzdGVkV2hlZWxFdmVudCwgZXZlbnRUYXJnZXRp
bmcpOwogCiAgICAgICAgICAgICBpZiAocmVzdWx0Lndhc0hhbmRsZWQpIHsKLSAgICAgICAgICAg
ICAgICBtX2xhdGNoaW5nQ29udHJvbGxlci5ub2RlRGlkSGFuZGxlRXZlbnQoc2Nyb2xsaW5nTm9k
ZS5zY3JvbGxpbmdOb2RlSUQoKSwgcHJvY2Vzc2luZ1N0ZXBzLCB3aGVlbEV2ZW50LCBtX2FsbG93
TGF0Y2hpbmcpOworICAgICAgICAgICAgICAgIC8vIElmIHRoZSBzY3JvbGwgY2hhaW5pbmcgaXMg
YmxvY2tlZCBpbiBhIHNpbmdsZSBkaXJlY3Rpb24sIGl0IHNob3VsZCBzdG9wIGxhdGNoaW5nIHRv
IGEgbm9kZSwKKyAgICAgICAgICAgICAgICAvLyBmb3IgdGhlIHdoZWVsIGV2ZW50IG1pZ2h0IGNo
YW5nZSB0aGUgZGlyZWN0aW9uIGFuZCBvdmVyc2Nyb2xsLWJlaGF2aW9yIG1pZ2h0IG5vdCBiZSBh
YmxlIGJsb2NrCisgICAgICAgICAgICAgICAgLy8gdGhlIHNjcm9sbCBjaGFpbmluZyBpZiBpdCBs
YXRjaGVzIHRvIHRoZSBhbmNlc3RyeSBub2RlIG9mIG92ZXJzY3JvbGwtYmVoYXZpb3IgdGFyZ2V0
LgorICAgICAgICAgICAgICAgIGlmICgoYmxvY2tlci5ibG9ja1ggJiYgYmxvY2tlci5ibG9ja1kp
IHx8ICghYmxvY2tlci5ibG9ja1ggJiYgIWJsb2NrZXIuYmxvY2tZKSkKKyAgICAgICAgICAgICAg
ICAgICAgbV9sYXRjaGluZ0NvbnRyb2xsZXIubm9kZURpZEhhbmRsZUV2ZW50KHNjcm9sbGluZ05v
ZGUuc2Nyb2xsaW5nTm9kZUlEKCksIHByb2Nlc3NpbmdTdGVwcywgd2hlZWxFdmVudCwgbV9hbGxv
d0xhdGNoaW5nKTsKICAgICAgICAgICAgICAgICBtX2dlc3R1cmVTdGF0ZS5ub2RlRGlkSGFuZGxl
RXZlbnQoc2Nyb2xsaW5nTm9kZS5zY3JvbGxpbmdOb2RlSUQoKSwgd2hlZWxFdmVudCk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAg
aWYgKHJlc3VsdC5uZWVkc01haW5UaHJlYWRQcm9jZXNzaW5nKCkgfHwgZXZlbnRUYXJnZXRpbmcg
IT0gRXZlbnRUYXJnZXRpbmc6OlByb3BhZ2F0ZSkKICAgICAgICAgICAgICAgICByZXR1cm4gcmVz
dWx0OworCisgICAgICAgICAgICBib29sIGhhbmRsZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIGlm
IChzaG91bGRCbG9ja1Njcm9sbENoYWluaW5nV2l0aE5vZGUoc2Nyb2xsaW5nTm9kZSwgYWRqdXN0
ZWRXaGVlbEV2ZW50LCBibG9ja2VyLCBoYW5kbGVkKSkgeworICAgICAgICAgICAgICAgIGlmICgh
aGFuZGxlZCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFdoZWVsRXZlbnRIYW5kbGluZ1Jl
c3VsdDo6dW5oYW5kbGVkKCk7CisKKyAgICAgICAgICAgICAgICBpZiAoKGJsb2NrZXIuYmxvY2tY
ICYmIGJsb2NrZXIuYmxvY2tZKSkKKyAgICAgICAgICAgICAgICAgICAgbV9sYXRjaGluZ0NvbnRy
b2xsZXIubm9kZURpZEhhbmRsZUV2ZW50KHNjcm9sbGluZ05vZGUuc2Nyb2xsaW5nTm9kZUlEKCks
IHByb2Nlc3NpbmdTdGVwcywgd2hlZWxFdmVudCwgbV9hbGxvd0xhdGNoaW5nKTsKKyAgICAgICAg
ICAgICAgICBtX2dlc3R1cmVTdGF0ZS5ub2RlRGlkSGFuZGxlRXZlbnQoc2Nyb2xsaW5nTm9kZS5z
Y3JvbGxpbmdOb2RlSUQoKSwgd2hlZWxFdmVudCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIFdo
ZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdDo6aGFuZGxlZCgpOworICAgICAgICAgICAgfQogICAgICAg
ICB9CiAKICAgICAgICAgaWYgKGlzPFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbFByb3h5Tm9k
ZT4oKm5vZGUpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdUcmVlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdU
cmVlLmgKaW5kZXggODMxZjU2NmQ1YjM5MTgwODM3YWE0ZmI2ODQ3MGY0N2UwMWU1YmYyNC4uZmYw
MWExYjhlMGYxOGNmMDdjOTRmMDU2MmU3YjY5YTZhMzRmYWRmNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuaApAQCAtMjczLDcgKzI3Myw4IEBAIHBy
aXZhdGU6CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCByZWNlaXZlZFdoZWVsRXZlbnQoY29u
c3QgUGxhdGZvcm1XaGVlbEV2ZW50JikgeyB9Ci0gICAgCisgICAgYm9vbCBzaG91bGRCbG9ja1Nj
cm9sbENoYWluaW5nV2l0aE5vZGUoY29uc3QgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUmLCBQ
bGF0Zm9ybVdoZWVsRXZlbnQmLCBTY3JvbGxDaGFpbmluZ0Jsb2NrZXImLCBib29sJiBoYW5kbGVk
KTsKKwogICAgIFJlZlB0cjxTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlPiBtX3Jvb3RO
b2RlOwogCiAgICAgdXNpbmcgU2Nyb2xsaW5nVHJlZU5vZGVNYXAgPSBIYXNoTWFwPFNjcm9sbGlu
Z05vZGVJRCwgUmVmUHRyPFNjcm9sbGluZ1RyZWVOb2RlPj47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5j
cHAKaW5kZXggOTBiNTBjMjIxMTMzZWE0MzZlODYxZmVlZThlODc1MTNjYjUyM2JiMy4uY2U5Yjcw
MjZiNmQ5YTE4ZDg1MTE3ZmIzMjU2MWM5YmEyNTdmNThkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
LmNwcApAQCAtMTM0LDYgKzEzNCwyMiBAQCBib29sIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
Ojppc0xhdGNoZWROb2RlKCkgY29uc3QKICAgICByZXR1cm4gc2Nyb2xsaW5nVHJlZSgpLmxhdGNo
ZWROb2RlSUQoKSA9PSBzY3JvbGxpbmdOb2RlSUQoKTsKIH0KIAorT3ZlcnNjcm9sbEJlaGF2aW9y
IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjpob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9y
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMuaG9yaXpv
bnRhbE92ZXJzY3JvbGxCZWhhdmlvcjsKK30KKworT3ZlcnNjcm9sbEJlaGF2aW9yIFNjcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlOjp2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzLnZlcnRpY2FsT3ZlcnNjcm9s
bEJlaGF2aW9yOworfQorCit2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjp1cGRhdGVT
Y3JvbGxDaGFpbmluZ0Jsb2NrZXJTdGF0ZShTY3JvbGxDaGFpbmluZ0Jsb2NrZXImIGJsb2NrZXIp
IGNvbnN0Cit7CisgICAgYmxvY2tlci5ibG9ja1ggfD0gaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhh
dmlvcigpICE9IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0bzsKKyAgICBibG9ja2VyLmJsb2NrWSB8
PSB2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpICE9IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0
bzsKK30KKwogYm9vbCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6Y2FuSGFuZGxlV2hlZWxF
dmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIEV2ZW50VGFyZ2V0aW5n
IGV2ZW50VGFyZ2V0aW5nKSBjb25zdAogewogICAgIGlmICghY2FuSGF2ZVNjcm9sbGJhcnMoKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZS5oCmluZGV4IDg2MmMxYjNkYmUwZTIzZTE2OWZhNTJjYWE0NjJmZWZk
ZjE0ZGU4MTguLmE2YmY0Yzk5N2NiNDIxZTU2ZmVhZjExYTFiZDlkNTU2NGRjY2RmNWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGUuaApAQCAtMTQ1LDYgKzE0NSw5IEBAIHByb3RlY3RlZDoKICAgICBjb25z
dCBGbG9hdFNpemUmIHRvdGFsQ29udGVudHNTaXplRm9yUnViYmVyQmFuZCgpIGNvbnN0IHsgcmV0
dXJuIG1fdG90YWxDb250ZW50c1NpemVGb3JSdWJiZXJCYW5kOyB9CiAgICAgdm9pZCBzZXRUb3Rh
bENvbnRlbnRzU2l6ZUZvclJ1YmJlckJhbmQoY29uc3QgRmxvYXRTaXplJiB0b3RhbENvbnRlbnRz
U2l6ZUZvclJ1YmJlckJhbmQpIHsgbV90b3RhbENvbnRlbnRzU2l6ZUZvclJ1YmJlckJhbmQgPSB0
b3RhbENvbnRlbnRzU2l6ZUZvclJ1YmJlckJhbmQ7IH0KIAorICAgIE92ZXJzY3JvbGxCZWhhdmlv
ciBob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29uc3Q7CisgICAgT3ZlcnNjcm9sbEJl
aGF2aW9yIHZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29uc3Q7CisgICAgdm9pZCB1cGRh
dGVTY3JvbGxDaGFpbmluZ0Jsb2NrZXJTdGF0ZShTY3JvbGxDaGFpbmluZ0Jsb2NrZXImKSBjb25z
dDsKICAgICBTY3JvbGxFbGFzdGljaXR5IGhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5KCkgY29u
c3QgeyByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMuaG9yaXpvbnRhbFNjcm9sbEVs
YXN0aWNpdHk7IH0KICAgICBTY3JvbGxFbGFzdGljaXR5IHZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0
eSgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzLnZlcnRpY2FsU2Ny
b2xsRWxhc3RpY2l0eTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5oIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVs
ZWdhdGVNYWMuaAppbmRleCAzMmE4MzhlYjZmM2RhNDM5ODNiY2ZmNTViN2NjNDE4MTU1NzM0ZTlm
Li4zOTgxNDgxZmU0ZDI5NmVlYmNlZTNhYzcxZDgyNGQ3ZDIzY2E2YWIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGVEZWxlZ2F0ZU1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9T
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLmgKQEAgLTEwMSw2ICsxMDEsOSBA
QCBwcml2YXRlOgogICAgIEZsb2F0U2l6ZSB2aWV3cG9ydFNpemUoKSBjb25zdCBvdmVycmlkZTsK
ICNlbmRpZgogCisgICAgYm9vbCBzaG91bGRTdG9wSG9yaXpvbnRhbFN0cmVjaCgpIGNvbnN0IG92
ZXJyaWRlOworICAgIGJvb2wgc2hvdWxkU3RvcFZlcnRpY2FsU3RyZWNoKCkgY29uc3Qgb3ZlcnJp
ZGU7CisKICAgICB2b2lkIHJlbGVhc2VSZWZlcmVuY2VzVG9TY3JvbGxlckltcHNPblRoZU1haW5U
aHJlYWQoKTsKIAogICAgIFNjcm9sbENvbnRyb2xsZXIgbV9zY3JvbGxDb250cm9sbGVyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5tbQppbmRleCA2YTI1
ODAyMTA1ODAxMmRjNWU1ZTE2NWM0N2Y3ZjllNjE0ZDYzZWE1Li45MzQ3NzQxNGMyMDg3OWZkN2Qw
OTdlNzhjMzk5NzFlYjQ0ZGI0NWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZU1hYy5tbQpAQCAtMjYyLDYgKzI2Miw5IEBAIHN0ZDo6dW5pcXVlX3B0cjxT
Y3JvbGxDb250cm9sbGVyVGltZXI+IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVN
YWM6OmNyCiAKIGJvb2wgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6YWxs
b3dzSG9yaXpvbnRhbFN0cmV0Y2hpbmcoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2
ZW50KSBjb25zdAogeworICAgIGlmIChzaG91bGRTdG9wSG9yaXpvbnRhbFN0cmVjaCgpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKICAgICBzd2l0Y2ggKGhvcml6b250YWxTY3JvbGxFbGFzdGlj
aXR5KCkpIHsKICAgICBjYXNlIFNjcm9sbEVsYXN0aWNpdHlBdXRvbWF0aWM6IHsKICAgICAgICAg
Ym9vbCBzY3JvbGxiYXJzQWxsb3dTdHJldGNoaW5nID0gYWxsb3dzSG9yaXpvbnRhbFNjcm9sbGlu
ZygpIHx8ICFhbGxvd3NWZXJ0aWNhbFNjcm9sbGluZygpOwpAQCAtMjg0LDYgKzI4Nyw5IEBAIGJv
b2wgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6YWxsb3dzSG9yaXpvbnRh
bFN0cmV0Y2hpbmcoY29uc3QgUGxhCiAKIGJvb2wgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVE
ZWxlZ2F0ZU1hYzo6YWxsb3dzVmVydGljYWxTdHJldGNoaW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxF
dmVudCYgd2hlZWxFdmVudCkgY29uc3QKIHsKKyAgICBpZiAoc2hvdWxkU3RvcFZlcnRpY2FsU3Ry
ZWNoKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIHN3aXRjaCAodmVydGljYWxTY3Jv
bGxFbGFzdGljaXR5KCkpIHsKICAgICBjYXNlIFNjcm9sbEVsYXN0aWNpdHlBdXRvbWF0aWM6IHsK
ICAgICAgICAgYm9vbCBzY3JvbGxiYXJzQWxsb3dTdHJldGNoaW5nID0gYWxsb3dzVmVydGljYWxT
Y3JvbGxpbmcoKSB8fCAhYWxsb3dzSG9yaXpvbnRhbFNjcm9sbGluZygpOwpAQCAtNDM3LDYgKzQ0
MywxNiBAQCBGbG9hdFNpemUgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6
dmlld3BvcnRTaXplKCkgY29uc3QKIH0KICNlbmRpZgogCitib29sIFNjcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlRGVsZWdhdGVNYWM6OnNob3VsZFN0b3BIb3Jpem9udGFsU3RyZWNoKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gc2Nyb2xsaW5nTm9kZSgpLmhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZp
b3IoKSA9PSBPdmVyc2Nyb2xsQmVoYXZpb3I6Ok5vbmU7Cit9CisKK2Jvb2wgU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6c2hvdWxkU3RvcFZlcnRpY2FsU3RyZWNoKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gc2Nyb2xsaW5nTm9kZSgpLnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2
aW9yKCkgPT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpOb25lOworfQorCiB2b2lkIFNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OmRlZmVyV2hlZWxFdmVudFRlc3RDb21wbGV0aW9u
Rm9yUmVhc29uKFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVy
IGlkZW50aWZpZXIsIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6RGVmZXJSZWFzb24gcmVhc29uKSBj
b25zdAogewogICAgIGlmICghc2Nyb2xsaW5nVHJlZSgpLmlzTW9uaXRvcmluZ1doZWVsRXZlbnRz
KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZl
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oCmluZGV4
IGQ3MTY5MzQ2YTI0MDIzYzJhNDc4N2FlMzQ1NDBhMzc2MDdjMGEyZDUuLjY0MTc5N2E2ZjQxODc1
MzM4Y2E3MWVhNzM5MTYwZDEwYjA2Zjg4ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1BsYXRmb3JtV2hlZWxFdmVudC5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAog
I2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKKyNpbmNsdWRlICJGbG9hdFNpemUuaCIKICNpbmNsdWRl
ICJJbnRQb2ludC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtRXZlbnQuaCIKICNpbmNsdWRlIDx3dGYv
V2luZG93c0V4dHJhcy5oPgpAQCAtMTc0LDYgKzE3NSw4IEBAIHB1YmxpYzoKICAgICBQbGF0Zm9y
bVdoZWVsRXZlbnQoSFdORCwgV1BBUkFNLCBMUEFSQU0sIGJvb2wgaXNNb3VzZUhXaGVlbCk7CiAj
ZW5kaWYKIAorICAgIHN0YXRpYyBGbG9hdFNpemUgd2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVy
dGljYWwoY29uc3QgRmxvYXRTaXplJik7CisKIHByb3RlY3RlZDoKICAgICBQbGF0Zm9ybVdoZWVs
RXZlbnRHcmFudWxhcml0eSBtX2dyYW51bGFyaXR5IHsgU2Nyb2xsQnlQaXhlbFdoZWVsRXZlbnQg
fTsKICAgICBib29sIG1fZGlyZWN0aW9uSW52ZXJ0ZWRGcm9tRGV2aWNlIHsgZmFsc2UgfTsKQEAg
LTI2NCw2ICsyNjcsMTkgQEAgaW5saW5lIEZsb2F0UG9pbnQgUGxhdGZvcm1XaGVlbEV2ZW50Ojpz
d2lwZVZlbG9jaXR5KCkgY29uc3QKIAogI2VuZGlmIC8vIEVOQUJMRShLSU5FVElDX1NDUk9MTElO
RykKIAoraW5saW5lIEZsb2F0U2l6ZSBQbGF0Zm9ybVdoZWVsRXZlbnQ6OndoZWVsRGVsdGFCaWFz
aW5nVG93YXJkc1ZlcnRpY2FsKGNvbnN0IEZsb2F0U2l6ZSYgZGVsdGEpCit7CisgICAgYXV0byBk
ZWx0YVggPSBkZWx0YS53aWR0aCgpOworICAgIGF1dG8gZGVsdGFZID0gZGVsdGEuaGVpZ2h0KCk7
CisKKyAgICBpZiAoZmFic2YoZGVsdGFZKSA+PSBmYWJzZihkZWx0YVgpKQorICAgICAgICBkZWx0
YVggPSAwOworICAgIGVsc2UKKyAgICAgICAgZGVsdGFZID0gMDsKKworICAgIHJldHVybiB7IGRl
bHRhWCwgZGVsdGFZIH07Cit9CisKIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKTsKIFdF
QkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0m
LCBXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBzKTsKIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBFdmVudEhhbmRsaW5nKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFR5cGVzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxUeXBlcy5oCmluZGV4IDBiMWM0MDU2M2U4Y2JiODIyYTlmZWJh
NGMwYzQ2NWY4YTU3NGE5M2IuLmY4ZjcxYzJlMWZmN2I5ZTRkMmU3NTY5ZTdiMTkyMWI4MjIxZjg0
ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFR5cGVzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVHlwZXMuaApAQCAtMjYsNiArMjYsNyBA
QAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCisjaW5jbHVkZSAiRmxv
YXRTaXplLmgiCiAjaW5jbHVkZSAiSW50UG9pbnQuaCIKICNpbmNsdWRlIDxjc3RkaW50PgogI2lu
Y2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CkBAIC0yNTksNiArMjYwLDM0IEBAIGVudW0gY2xhc3Mg
U2Nyb2xsU25hcFBvaW50U2VsZWN0aW9uTWV0aG9kIDogdWludDhfdCB7CiAgICAgQ2xvc2VzdCwK
IH07CiAKK3N0cnVjdCBTY3JvbGxDaGFpbmluZ0Jsb2NrZXIgeworICAgIGJvb2wgYmxvY2tYIHsg
ZmFsc2UgfTsKKyAgICBib29sIGJsb2NrWSB7IGZhbHNlIH07CisKKyAgICBzdGF0aWMgYm9vbCBz
aG91bGRCbG9ja1Njcm9sbENoYWluaW5nKGNvbnN0IFNjcm9sbENoYWluaW5nQmxvY2tlciYgYmxv
Y2tlciwgY29uc3QgRmxvYXRTaXplJiBiaWFzZWREZWx0YSkKKyAgICB7CisgICAgICAgIGlmICgo
YmxvY2tlci5ibG9ja1ggJiYgYmxvY2tlci5ibG9ja1kpCisgICAgICAgICAgICB8fCAoYmxvY2tl
ci5ibG9ja1ggJiYgIWJpYXNlZERlbHRhLmhlaWdodCgpKQorICAgICAgICAgICAgfHwgKGJsb2Nr
ZXIuYmxvY2tZICYmICFiaWFzZWREZWx0YS53aWR0aCgpKSkKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgZmls
dGVyRGVsdGEoY29uc3QgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyJiBibG9ja2VyLCBjb25zdCBGbG9h
dFNpemUmIGJpYXNlZERlbHRhLCBGbG9hdFNpemUmIGZpbHRlcmVkRGVsdGEpCisgICAgeworICAg
ICAgICBpZiAoYmxvY2tlci5ibG9ja1gpIHsKKyAgICAgICAgICAgIGZpbHRlcmVkRGVsdGEuc2V0
V2lkdGgoMCk7CisgICAgICAgICAgICBpZiAoIWJpYXNlZERlbHRhLmhlaWdodCgpKQorICAgICAg
ICAgICAgICAgIGZpbHRlcmVkRGVsdGEuc2V0SGVpZ2h0KDApOworICAgICAgICB9CisgICAgICAg
IGlmIChibG9ja2VyLmJsb2NrWSkgeworICAgICAgICAgICAgZmlsdGVyZWREZWx0YS5zZXRIZWln
aHQoMCk7CisgICAgICAgICAgICBpZiAoIWJpYXNlZERlbHRhLndpZHRoKCkpCisgICAgICAgICAg
ICAgICAgZmlsdGVyZWREZWx0YS5zZXRXaWR0aCgwKTsKKyAgICAgICAgfQorICAgIH0KK307CisK
IHVzaW5nIFNjcm9sbGJhckNvbnRyb2xTdGF0ZSA9IHVuc2lnbmVkOwogdXNpbmcgU2Nyb2xsYmFy
Q29udHJvbFBhcnRNYXNrID0gdW5zaWduZWQ7CiB1c2luZyBTY3JvbGxpbmdOb2RlSUQgPSB1aW50
NjRfdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVh
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcAppbmRleCA1
ZjBlMmU2ZjAyMzlmYjRmZTRhYjI5YmIzMTRiODNlYWE5OWNjZGUyLi5jZmVhMThiMTE2ZmFiZDM0
NmM5ODA0MzUzMTFmZGVlY2U0Y2UwNmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsYWJsZUFyZWEuY3BwCkBAIC04NDgsNiArODQ4LDEyIEBAIHZvaWQgU2Nyb2xsYWJsZUFyZWE6
OmNvbXB1dGVTY3JvbGxiYXJWYWx1ZUFuZE92ZXJoYW5nKGZsb2F0IGN1cnJlbnRQb3NpdGlvbiwg
ZmxvCiAgICAgfQogfQogCit2b2lkIFNjcm9sbGFibGVBcmVhOjp1cGRhdGVTY3JvbGxDaGFpbmlu
Z0Jsb2NrZXJTdGF0ZShTY3JvbGxDaGFpbmluZ0Jsb2NrZXImIGJsb2NrZXIpIGNvbnN0Cit7Cisg
ICAgYmxvY2tlci5ibG9ja1ggfD0gaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpICE9IE92
ZXJzY3JvbGxCZWhhdmlvcjo6QXV0bzsKKyAgICBibG9ja2VyLmJsb2NrWSB8PSB2ZXJ0aWNhbE92
ZXJzY3JvbGxCZWhhdmlvcigpICE9IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0bzsKK30KKwogVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgU2Nyb2xsYWJsZUFyZWEm
IHNjcm9sbGFibGVBcmVhKQogewogICAgIHRzIDw8IHNjcm9sbGFibGVBcmVhLmRlYnVnRGVzY3Jp
cHRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVB
cmVhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCmluZGV4IDlm
Y2Q1NDlhYmI2ZWRhMjA2ZTIyMGMwYmQ4ZGQ5MWZlZjI3MmYzMGUuLjgzNjRlZWY1OTE0ZWFiMDE5
NDMxMDBlZGIyZGIyZTI3ZTYwM2NhYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbGFibGVBcmVhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
YWJsZUFyZWEuaApAQCAtMTI0LDYgKzEyNCwxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBjb25zdHJh
aW5zU2Nyb2xsaW5nVG9Db250ZW50RWRnZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29uc3RyYWluc1Nj
cm9sbGluZ1RvQ29udGVudEVkZ2U7IH0KICAgICB2b2lkIHNldENvbnN0cmFpbnNTY3JvbGxpbmdU
b0NvbnRlbnRFZGdlKGJvb2wgY29uc3RyYWluc1Njcm9sbGluZ1RvQ29udGVudEVkZ2UpIHsgbV9j
b25zdHJhaW5zU2Nyb2xsaW5nVG9Db250ZW50RWRnZSA9IGNvbnN0cmFpbnNTY3JvbGxpbmdUb0Nv
bnRlbnRFZGdlOyB9CiAKKyAgICB2aXJ0dWFsIE92ZXJzY3JvbGxCZWhhdmlvciBob3Jpem9udGFs
T3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29uc3QgeyByZXR1cm4gT3ZlcnNjcm9sbEJlaGF2aW9yOjpB
dXRvOyB9CisgICAgdmlydHVhbCBPdmVyc2Nyb2xsQmVoYXZpb3IgdmVydGljYWxPdmVyc2Nyb2xs
QmVoYXZpb3IoKSBjb25zdCB7IHJldHVybiBPdmVyc2Nyb2xsQmVoYXZpb3I6OkF1dG87IH0KKyAg
ICB2b2lkIHVwZGF0ZVNjcm9sbENoYWluaW5nQmxvY2tlclN0YXRlKFNjcm9sbENoYWluaW5nQmxv
Y2tlciYpIGNvbnN0OworCiAgICAgdm9pZCBzZXRWZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkoU2Ny
b2xsRWxhc3RpY2l0eSBzY3JvbGxFbGFzdGljaXR5KSB7IG1fdmVydGljYWxTY3JvbGxFbGFzdGlj
aXR5ID0gc2Nyb2xsRWxhc3RpY2l0eTsgfQogICAgIFNjcm9sbEVsYXN0aWNpdHkgdmVydGljYWxT
Y3JvbGxFbGFzdGljaXR5KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U2Nyb2xsRWxhc3Rp
Y2l0eT4obV92ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIuaAppbmRleCA3MzAzMjQ0ZmM2MGZl
ZjM0MzkwYWQ2NGUyNTE5YWM1ZWIyMzIxNTA1Li4zOGRmNThmYmZkOTVlNGYyMzkwMjVlNmMwNDg5
YTNlODk1YjA5ODZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9T
Y3JvbGxDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Ny
b2xsQ29udHJvbGxlci5oCkBAIC0xMTgsNiArMTE4LDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IExheW91dFNpemUgc2Nyb2xsRXh0ZW50KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgRmxvYXRT
aXplIHZpZXdwb3J0U2l6ZSgpIGNvbnN0ID0gMDsKICNlbmRpZgorCisjaWYgUExBVEZPUk0oTUFD
KQorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTdG9wSG9yaXpvbnRhbFN0cmVjaCgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIHNob3VsZFN0b3BWZXJ0aWNhbFN0cmVj
aCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisjZW5kaWYKIH07CiAKIGVudW0gY2xhc3MgV2hl
ZWxFdmVudFN0YXR1cyB7CkBAIC0xNzMsOCArMTc4LDYgQEAgcHVibGljOgogI2VuZGlmCiAjZW5k
aWYKIAotICAgIHN0YXRpYyBGbG9hdFNpemUgd2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGlj
YWwoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jik7Ci0KICAgICBlbnVtIGNsYXNzIFdoZWVsQXhp
c0JpYXMgeyBOb25lLCBWZXJ0aWNhbCB9OwogICAgIHN0YXRpYyBPcHRpb25hbDxTY3JvbGxEaXJl
Y3Rpb24+IGRpcmVjdGlvbkZyb21FdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBPcHRp
b25hbDxTY3JvbGxFdmVudEF4aXM+LCBXaGVlbEF4aXNCaWFzID0gV2hlZWxBeGlzQmlhczo6Tm9u
ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbENv
bnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9s
bGVyLm1tCmluZGV4IGQwOTVlNmIxNzNiOWY5MjBhMGQ0ZDlhNTI1YjMxMTJkMzg1Y2RkYmIuLmI3
MTg1NmY4NGNiNDgxMGUxMjEyMGI1ZTNlODdlNzA4ZTg0NWFiOWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5tbQpAQCAtMjUyLDcgKzI1
Miw4IEBAIGJvb2wgU2Nyb2xsQ29udHJvbGxlcjo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0
Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpCiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZQog
ICAgICAgICAgICAgICAgICAgICAgICAgbV9vdmVyZmxvd1Njcm9sbERlbHRhLnNldFdpZHRoKG1f
b3ZlcmZsb3dTY3JvbGxEZWx0YS53aWR0aCgpICsgZGVsdGFYKTsKICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgc2hvdWxkU3RyZXRjaCA9IHRydWU7CisgICAgICAgICAgICAgICAg
aWYgKCghZGVsdGFYIHx8ICFtX2NsaWVudC5zaG91bGRTdG9wSG9yaXpvbnRhbFN0cmVjaCgpKSAm
JiAoIWRlbHRhWSB8fCAhbV9jbGllbnQuc2hvdWxkU3RvcFZlcnRpY2FsU3RyZWNoKCkpKQorICAg
ICAgICAgICAgICAgICAgICBzaG91bGRTdHJldGNoID0gdHJ1ZTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQogCkBAIC0zMjksMTkgKzMzMCw2IEBAIGJvb2wgU2Nyb2xsQ29udHJvbGxlcjo6aGFu
ZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpCiB9CiAj
ZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCi1GbG9hdFNpemUgU2Nyb2xsQ29udHJvbGxlcjo6d2hl
ZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3
aGVlbEV2ZW50KQotewotICAgIGF1dG8gZGVsdGFYID0gd2hlZWxFdmVudC5kZWx0YVgoKTsKLSAg
ICBhdXRvIGRlbHRhWSA9IHdoZWVsRXZlbnQuZGVsdGFZKCk7Ci0KLSAgICBpZiAoZmFic2YoZGVs
dGFZKSA+PSBmYWJzZihkZWx0YVgpKQotICAgICAgICBkZWx0YVggPSAwOwotICAgIGVsc2UKLSAg
ICAgICAgZGVsdGFZID0gMDsKLQotICAgIHJldHVybiB7IGRlbHRhWCwgZGVsdGFZIH07Ci19Ci0K
IE9wdGlvbmFsPFNjcm9sbERpcmVjdGlvbj4gU2Nyb2xsQ29udHJvbGxlcjo6ZGlyZWN0aW9uRnJv
bUV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgT3B0aW9uYWw8U2Ny
b2xsRXZlbnRBeGlzPiBheGlzLCBXaGVlbEF4aXNCaWFzIGJpYXMpCiB7CiAgICAgLy8gRklYTUU6
IEl0J3MgaW1wb3NzaWJsZSB0byBpbmZlciBkaXJlY3Rpb24gZnJvbSBhIHNpbmdsZSBldmVudCwg
c2luY2UgdGhlIHN0YXJ0IG9mIGEgZ2VzdHVyZSBpcyBlaXRoZXIgemVybyBvcgpAQCAtMzQ5LDcg
KzMzNyw3IEBAIE9wdGlvbmFsPFNjcm9sbERpcmVjdGlvbj4gU2Nyb2xsQ29udHJvbGxlcjo6ZGly
ZWN0aW9uRnJvbUV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlCiAKICAgICBhdXRvIHdoZWVsRGVsdGEg
PSBGbG9hdFNpemUgeyB3aGVlbEV2ZW50LmRlbHRhWCgpLCB3aGVlbEV2ZW50LmRlbHRhWSgpIH07
CiAgICAgaWYgKGJpYXMgPT0gV2hlZWxBeGlzQmlhczo6VmVydGljYWwpCi0gICAgICAgIHdoZWVs
RGVsdGEgPSB3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbCh3aGVlbEV2ZW50KTsKKyAg
ICAgICAgd2hlZWxEZWx0YSA9IFBsYXRmb3JtV2hlZWxFdmVudDo6d2hlZWxEZWx0YUJpYXNpbmdU
b3dhcmRzVmVydGljYWwod2hlZWxFdmVudC5kZWx0YSgpKTsKIAogICAgIGlmIChheGlzKSB7CiAg
ICAgICAgIHN3aXRjaCAoYXhpcy52YWx1ZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5oCmluZGV4IDQ5ZjBiNGIxZDc5Zjc3YTk2OGE5NTJm
OGFlYjk3OTU0ZTI5NzJlMjkuLmE2Y2EwYWZlZWQ1NTRjYWQ5MzM3M2E0NGJmODE4M2RmMTcxMWI4
NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRv
ck1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1h
Yy5oCkBAIC0xNTYsNiArMTU2LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFkanVzdFNjcm9sbFBv
c2l0aW9uVG9Cb3VuZHNJZk5lY2Vzc2FyeSgpIGZpbmFsOwogI2VuZGlmCiAKKyAgICBib29sIHNo
b3VsZFN0b3BIb3Jpem9udGFsU3RyZWNoKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBzaG91
bGRTdG9wVmVydGljYWxTdHJlY2goKSBjb25zdCBvdmVycmlkZTsKKwogICAgIGJvb2wgbV9oYXZl
U2Nyb2xsZWRTaW5jZVBhZ2VMb2FkOwogICAgIGJvb2wgbV9uZWVkc1Njcm9sbGVyU3R5bGVVcGRh
dGU7CiAgICAgSW50UmVjdCBtX3Zpc2libGVTY3JvbGxlclRodW1iUmVjdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQppbmRleCA2MTUxZGVm
YzBlYWVjM2EwNTcxNTAyMGFlNjUwMDIzYmFjZjE0YjNjLi5lOGU2YWZjMjQ1NjcyNzBhZjcwNGQ1
MDAzZTM1MTM0ZjYzOGZmMjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1Njcm9sbEFuaW1hdG9yTWFjLm1tCkBAIC0xNTM2LDYgKzE1MzYsMTYgQEAgdm9pZCBTY3JvbGxB
bmltYXRvck1hYzo6c2V0VmlzaWJsZVNjcm9sbGVyVGh1bWJSZWN0KGNvbnN0IEludFJlY3QmIHNj
cm9sbGVyVGh1bWIKICAgICBtX3Zpc2libGVTY3JvbGxlclRodW1iUmVjdCA9IHJlY3RJblZpZXdD
b29yZGluYXRlczsKIH0KIAorYm9vbCBTY3JvbGxBbmltYXRvck1hYzo6c2hvdWxkU3RvcEhvcml6
b250YWxTdHJlY2goKSBjb25zdAoreworICAgIHJldHVybiBtX3Njcm9sbGFibGVBcmVhLmhvcml6
b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSA9PSBPdmVyc2Nyb2xsQmVoYXZpb3I6Ok5vbmU7Cit9
CisKK2Jvb2wgU2Nyb2xsQW5pbWF0b3JNYWM6OnNob3VsZFN0b3BWZXJ0aWNhbFN0cmVjaCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWEudmVydGljYWxPdmVyc2Nyb2xsQmVo
YXZpb3IoKSA9PSBPdmVyc2Nyb2xsQmVoYXZpb3I6Ok5vbmU7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggMzNmOGU2YzlkMDVlYjUxNWY0Mjk1
NzFlY2NiMjkzZGExZGU3ZDhhYi4uNGI4Nzc0ZjM3Y2MyYjA1MGM1ZDE5NDA2MGNiNTZkYjdlMzRm
NDc1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC0zNDY0
LDYgKzM0NjQsMjQgQEAgdm9pZCBSZW5kZXJMYXllcjo6aW52YWxpZGF0ZVNjcm9sbENvcm5lclJl
Y3QoY29uc3QgSW50UmVjdCYgcmVjdCkKICAgICAgICAgbV9yZXNpemVyLT5yZXBhaW50UmVjdGFu
Z2xlKHJlY3QpOwogfQogCitPdmVyc2Nyb2xsQmVoYXZpb3IgUmVuZGVyTGF5ZXI6Omhvcml6b250
YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdAoreworICAgIGNvbnN0IFJlbmRlclN0eWxlJiBz
dHlsZSA9IHJlbmRlcmVyKCkuc3R5bGUoKTsKKyAgICAvLyBBbiBlbGVtZW50IHRoYXQgaXMgbm90
IHNjcm9sbCBjb250YWluZXIgbXVzdCBhY2NlcHQgYnV0IGlnbm9yZSB0aGUgdmFsdWVzIG9mIHRo
aXMgcHJvcGVydHkuCisgICAgaWYgKHJlbmRlckJveCgpICYmIHJlbmRlckJveCgpLT5jYW5CZVNj
cm9sbGVkQW5kSGFzU2Nyb2xsYWJsZUFyZWEoKSkKKyAgICAgICAgcmV0dXJuIHN0eWxlLm92ZXJz
Y3JvbGxCZWhhdmlvclgoKTsKKyAgICByZXR1cm4gU2Nyb2xsYWJsZUFyZWE6Omhvcml6b250YWxP
dmVyc2Nyb2xsQmVoYXZpb3IoKTsKK30KKworT3ZlcnNjcm9sbEJlaGF2aW9yIFJlbmRlckxheWVy
Ojp2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpICBjb25zdAoreworICAgIGNvbnN0IFJlbmRl
clN0eWxlJiBzdHlsZSA9IHJlbmRlcmVyKCkuc3R5bGUoKTsKKyAgICAvLyBBbiBlbGVtZW50IHRo
YXQgaXMgbm90IHNjcm9sbCBjb250YWluZXIgbXVzdCBhY2NlcHQgYnV0IGlnbm9yZSB0aGUgdmFs
dWVzIG9mIHRoaXMgcHJvcGVydHkuCisgICAgaWYgKHJlbmRlckJveCgpICYmIHJlbmRlckJveCgp
LT5jYW5CZVNjcm9sbGVkQW5kSGFzU2Nyb2xsYWJsZUFyZWEoKSkKKyAgICAgICAgcmV0dXJuIHN0
eWxlLm92ZXJzY3JvbGxCZWhhdmlvclkoKTsKKyAgICByZXR1cm4gU2Nyb2xsYWJsZUFyZWE6OnZl
cnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCk7Cit9CisKIHN0YXRpYyBib29sIHNjcm9sbGJhckhp
ZGRlbkJ5U3R5bGUoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCiB7CiAgICAgcmV0dXJuIHNjcm9sbGJh
ciAmJiBzY3JvbGxiYXItPmlzSGlkZGVuQnlTdHlsZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuaAppbmRleCAzNmEwNmE0YmZiMjM1OTUzODRkYWM4MWNlNjAzMzM2NjU1MDQ4
M2RhLi40NWZlNTk4ZDczMjcwYWFmN2ViYjUxOTBhMTk2MTlhYzc3ZTk4NDI2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaApAQCAtNDgyLDYgKzQ4Miw5IEBAIHB1YmxpYzoK
ICAgICBib29sIGhhc0hvcml6b250YWxTY3JvbGxiYXIoKSBjb25zdCB7IHJldHVybiBob3Jpem9u
dGFsU2Nyb2xsYmFyKCk7IH0KICAgICBib29sIGhhc1ZlcnRpY2FsU2Nyb2xsYmFyKCkgY29uc3Qg
eyByZXR1cm4gdmVydGljYWxTY3JvbGxiYXIoKTsgfQogCisgICAgT3ZlcnNjcm9sbEJlaGF2aW9y
IGhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdCBmaW5hbDsKKyAgICBPdmVyc2Ny
b2xsQmVoYXZpb3IgdmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdCBmaW5hbDsKKwog
ICAgIGJvb2wgaG9yaXpvbnRhbFNjcm9sbGJhckhpZGRlbkJ5U3R5bGUoKSBjb25zdCBmaW5hbDsK
ICAgICBib29sIHZlcnRpY2FsU2Nyb2xsYmFySGlkZGVuQnlTdHlsZSgpIGNvbnN0IGZpbmFsOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
Y3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRl
eCBmYWFhMmFkY2Y5OTFiMTM2NTkzYzU1OTYwNjQ2ZmYxZjQ4MGNmMWQ3Li5kYjZjNTJjMzRlMDdh
OTllYzFlNTMwNmQyZDY0NDBlNjNlMzc1YWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTIwMTksNiArMjAxOSw5IEBAIGJvb2wgQXJn
dW1lbnRDb2RlcjxVc2VyU3R5bGVTaGVldD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBVc2Vy
U3R5bGVTaGVldCYgdXNlCiAKIHZvaWQgQXJndW1lbnRDb2RlcjxTY3JvbGxhYmxlQXJlYVBhcmFt
ZXRlcnM+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU2Nyb2xsYWJsZUFyZWFQYXJh
bWV0ZXJzJiBwYXJhbWV0ZXJzKQogeworICAgIGVuY29kZXIgPDwgcGFyYW1ldGVycy5ob3Jpem9u
dGFsT3ZlcnNjcm9sbEJlaGF2aW9yOworICAgIGVuY29kZXIgPDwgcGFyYW1ldGVycy52ZXJ0aWNh
bE92ZXJzY3JvbGxCZWhhdmlvcjsKKwogICAgIGVuY29kZXIgPDwgcGFyYW1ldGVycy5ob3Jpem9u
dGFsU2Nyb2xsRWxhc3RpY2l0eTsKICAgICBlbmNvZGVyIDw8IHBhcmFtZXRlcnMudmVydGljYWxT
Y3JvbGxFbGFzdGljaXR5OwogCkBAIC0yMDM2LDYgKzIwMzksMTEgQEAgdm9pZCBBcmd1bWVudENv
ZGVyPFNjcm9sbGFibGVBcmVhUGFyYW1ldGVycz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBj
b25zdCBTY3IKIAogYm9vbCBBcmd1bWVudENvZGVyPFNjcm9sbGFibGVBcmVhUGFyYW1ldGVycz46
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBTY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMmIHBhcmFt
cykKIHsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtcy5ob3Jpem9udGFsT3ZlcnNjcm9s
bEJlaGF2aW9yKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUocGFyYW1zLnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbXMuaG9yaXpvbnRhbFNjcm9sbEVs
YXN0aWNpdHkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShwYXJhbXMudmVydGljYWxTY3JvbGxFbGFzdGljaXR5KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggZmE5NmNkYTg0ZWNiN2Q0ODhhZTQyOTEz
M2MwZjViNDQzNzA0OGRiMS4uMzk1MzU2NzgzZmRhNTZmZTFjMWFiMGQ5MjM3Mjg1ZjM2NjQ2ZjA5
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAg
LTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1JlYWx0aW1lTWVkaWFTb3VyY2UuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlcmluZ01vZGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Nj
cm9sbFNuYXBPZmZzZXRzSW5mby5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2Nyb2xsVHlwZXMuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1NlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlclR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9T
dG9yZWRDcmVkZW50aWFsc1BvbGljeS5oPgpAQCAtODk2LDYgKzg5NywxNSBAQCB0ZW1wbGF0ZTw+
IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJ
bmZvPiB7CiAKIG5hbWVzcGFjZSBXVEYgewogCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRz
PFdlYkNvcmU6Ok92ZXJzY3JvbGxCZWhhdmlvcj4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1W
YWx1ZXM8CisgICAgV2ViQ29yZTo6T3ZlcnNjcm9sbEJlaGF2aW9yLAorICAgIFdlYkNvcmU6Ok92
ZXJzY3JvbGxCZWhhdmlvcjo6QXV0bywKKyAgICBXZWJDb3JlOjpPdmVyc2Nyb2xsQmVoYXZpb3I6
OkNvbnRhaW4sCisgICAgV2ViQ29yZTo6T3ZlcnNjcm9sbEJlaGF2aW9yOjpOb25lCisgICAgPjsK
K307CisKIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6Q29sb3JTcGFjZT4g
ewogICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CiAgICAgV2ViQ29yZTo6Q29sb3JTcGFj
ZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZp
ZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmlu
ZGV4IDk2MjBlODZmYjBhNzIwMTQwMWMyY2FkNTUxZGUyY2ZiODg4OWJlZGIuLmI4Y2YyZTdmZTc0
NmJlODYyMTQ5NWZjMTQzMTM4MmIwNjUzOTlkYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQpAQCAtNDA5Myw2ICs0MDkzLDggQEAgc3RhdGlj
IEJPT0wgY3VycmVudFNjcm9sbElzQmxpdChOU1ZpZXcgKmNsaXBWaWV3KQogICAgIGF1dG8qIGZy
YW1lID0gY29yZShbc2VsZiBfZnJhbWVdKTsKICAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+ZXZl
bnRIYW5kbGVyKCkud2hlZWxFdmVudChldmVudCkpIHsKICNpZiBQTEFURk9STShNQUMpCisgICAg
ICAgIC8vIEZJWE1FOiBOZWVkIHRvIGZpbmQgYSB3YXkgdG8gYmxvY2sgdGhlIGNyb3NzLWZyYW1l
IHNjcm9sbCBjaGFpbmluZyBpbiBXSzEuCisgICAgICAgIC8vIFdlIGNhbiBub3QganVzdCBza2lw
IHRoZSBzY3JvbGwgaGVyZSwgaXQgbm90IG9ubHkgYmxvY2tzIHNjcm9sbCBjaGFpbmluZyBidXQg
YWxzbyBibG9ja3MgdGhlIHNjcm9sbCBvbiBjdXJyZW50IHZpZXcuCiAgICAgICAgIFtzdXBlciBz
Y3JvbGxXaGVlbDpldmVudF07CiAjZW5kaWYKICAgICB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYWJmZjJkZWQ2NWFiOGEx
MTFhYjk1MTg3ZTRkNDhhOWY1YTg0ZDg1Ny4uMDVjNWI1MTU3YjNmYzg0ODNmNDk1MjIzNjczOWQ3
ZTRiMzIwZDlmNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIxLTAxLTE1ICBDYXRoaWUgQ2hl
biAgPGNhdGhpZWNoZW5AaWdhbGlhLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgQ1NTIG92ZXJz
Y3JvbGwtYmVoYXZpb3Igb24gTWFjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjAxMzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBCYXNlZCBvbiBGcsOpZMOpcmljIFdhbmcncyBwYXRjaC4KKworICAgICAg
ICAqIGZhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3It
ZWxlbWVudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xs
LWJlaGF2aW9yLWlmcmFtZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2Ny
b2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGZhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xs
LWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZh
c3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVo
YXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Nj
cm9sbGluZy9yZXNvdXJjZXMvb3ZlcnNjcm9sbC1iZWhhdmlvci1zdXBwb3J0LmpzOiBBZGRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMjEtMDEt
MTUgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJbnRl
Z3JhdGlvbl0gUkVHUkVTU0lPTiAocjI3MDEyMykgZmFjZWJvb2suY29tIGJpcnRoZGF5IGRyb3Bk
b3duIGRvIG5vdCB3b3JrIHdoZW4gY3JlYXRpbmcgbmV3IGFjY291bnQKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9y
LWVsZW1lbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI3MTUwZmY2MGI1ZGJkZDBiNGE3YWM2
ZjgzZmI1NmY1N2NkMmNkODIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Nj
cm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMjAgQEAKKworUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVy
c2Nyb2xsLWJlaGF2aW9yOiBhdXRvIGF1dG8uCitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xs
IHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIGF1dG8uCitQQVNTIEVsZW1lbnQg
aG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4g
YXV0by4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwt
YmVoYXZpb3I6IGNvbnRhaW4gYXV0by4KK1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0
ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBhdXRvLgorUEFTUyBFbGVtZW50IHZl
cnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBhdXRvLgor
UEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2
aW9yOiBhdXRvIGNvbnRhaW4uCitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0
aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIGNvbnRhaW4uCitQQVNTIEVsZW1lbnQgaG9yaXpv
bnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gY29udGFp
bi4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVo
YXZpb3I6IGNvbnRhaW4gY29udGFpbi4KK1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0
ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBjb250YWluLgorUEFTUyBFbGVtZW50
IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBjb250
YWluLgorUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xs
LWJlaGF2aW9yOiBhdXRvIG5vbmUuCitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qg
d2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIG5vbmUuCitQQVNTIEVsZW1lbnQgaG9yaXpv
bnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gbm9uZS4K
K1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZp
b3I6IGNvbnRhaW4gbm9uZS4KK1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdp
dGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBub25lLgorUEFTUyBFbGVtZW50IHZlcnRpY2Fs
IHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBub25lLgorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLWVs
ZW1lbnQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZp
b3ItZWxlbWVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRiNGRhNTk3M2RiYzgxZTcxYzM5ZWIxZGYxYjZk
MDgzZGQ4Nzg3MGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGlu
Zy9vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQuaHRtbApAQCAtMCwwICsxLDc4IEBACis8IWRv
Y3R5cGUgaHRtbD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVw
b3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb3ZlcnNjcm9sbC1iZWhh
dmlvci1zdXBwb3J0LmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6
Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1vdmVyc2Nyb2xsLWJlaGF2aW9yIj4KKzxzdHlsZT4KKyAg
ICAuc2Nyb2xsaW5nIHsKKyAgICAgICAgb3ZlcmZsb3c6IHNjcm9sbDsKKyAgICB9CisgICAgLnNj
cm9sbENvbnRlbnQgeworICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgIGhlaWdodDogMzAw
cHg7CisgICAgfQorICAgICNyb290IHsKKyAgICAgICAgd2lkdGg6IDIwMHB4OworICAgICAgICBo
ZWlnaHQ6IDIwMHB4OworICAgIH0KKyAgICAjc2Nyb2xsZXIgeworICAgICAgICB3aWR0aDogMTAw
cHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgfQorPC9zdHlsZT4KKzxkaXYgaWQ9J3Jv
b3QnIGNsYXNzPSJzY3JvbGxpbmciPgorICAgIDxkaXYgaWQ9J3Njcm9sbGVyJyBjbGFzcz0ic2Ny
b2xsaW5nIj4KKyAgICAgICAgPGRpdiBjbGFzcz0ic2Nyb2xsQ29udGVudCI+PC9kaXY+CisgICAg
PC9kaXY+CisgICAgPGRpdiBjbGFzcz0ic2Nyb2xsQ29udGVudCI+PC9kaXY+Cis8L2Rpdj4KKwor
PHNjcmlwdD4KK2NvbnN0IHJvb3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncm9vdCcpOwor
Y29uc3Qgc2Nyb2xsZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2Nyb2xsZXInKTsKK3Zh
ciBvdmVyc2Nyb2xsRGF0YXMgPSBbWyJhdXRvIiwgImF1dG8iLCB0cnVlLCB0cnVlXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIFsiY29udGFpbiIsICJhdXRvIiwgZmFsc2UsIHRydWVdLAorICAg
ICAgICAgICAgICAgICAgICAgICAgWyJub25lIiwgImF1dG8iLCBmYWxzZSwgdHJ1ZV0sCisgICAg
ICAgICAgICAgICAgICAgICAgICBbImF1dG8iLCAiY29udGFpbiIsIHRydWUsIGZhbHNlXSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIFsiY29udGFpbiIsICJjb250YWluIiwgZmFsc2UsIGZhbHNl
XSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFsibm9uZSIsICJjb250YWluIiwgZmFsc2UsIGZh
bHNlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFsiYXV0byIsICJub25lIiwgdHJ1ZSwgZmFs
c2VdLAorICAgICAgICAgICAgICAgICAgICAgICAgWyJjb250YWluIiwgIm5vbmUiLCBmYWxzZSwg
ZmFsc2VdLAorICAgICAgICAgICAgICAgICAgICAgICAgWyJub25lIiwgIm5vbmUiLCBmYWxzZSwg
ZmFsc2VdXTsKKworZnVuY3Rpb24gcmVzZXRUZXN0KCkgeworICAgIC8vIFRyeSB2YXJpb3VzIG1l
dGhvZHMgdG8gZW5zdXJlIHRoZSBlbGVtZW50IHBvc2l0aW9uIGlzIHJlc2V0IGltbWVkaWF0ZWx5
LgorICAgIHNjcm9sbGVyLnNjcm9sbExlZnQgPSAzMDA7CisgICAgc2Nyb2xsZXIuc2Nyb2xsVG9w
ID0gMzAwOworICAgIHNjcm9sbGVyLnNjcm9sbFRvKDMwMCwgMzAwKTsKKworICAgIHJvb3Quc2Ny
b2xsTGVmdCA9IDA7CisgICAgcm9vdC5zY3JvbGxUb3AgPSAwOworICAgIHJvb3Quc2Nyb2xsVG8o
MCwgMCk7Cit9CisKK2Z1bmN0aW9uIHN0YXJ0VGVzdCgpIHsKKyAgICBvdmVyc2Nyb2xsRGF0YXMu
Zm9yRWFjaCgoW292ZXJzY3JvbGxYLCBvdmVyc2Nyb2xsWSwgcHJvcGFnYXRlWCwgcHJvcGFnYXRl
WV0pID0+IHsKKyAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAgIHJlc2V0
VGVzdCgpOworICAgICAgICAgICAgc2Nyb2xsZXIuc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWCA9
IG92ZXJzY3JvbGxYOworICAgICAgICAgICAgc2Nyb2xsZXIuc3R5bGUub3ZlcnNjcm9sbEJlaGF2
aW9yWSA9IG92ZXJzY3JvbGxZOworICAgICAgICAgICAgcmV0dXJuIHBlcmZvcm1XaGVlbFNjcm9s
bChzY3JvbGxlciwgInJpZ2h0IikudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0
X2VxdWFscyhyb290LnNjcm9sbExlZnQgPiAwLCBwcm9wYWdhdGVYLCAnQ29udGludWUgdXAgdGhl
IGhvcml6b250YWwgc2Nyb2xsIGNoYWluaW5nJyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAg
fSwgJ0VsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZp
b3I6ICcgKyBvdmVyc2Nyb2xsWCArICcgJyArIG92ZXJzY3JvbGxZICsgJy4nKTsKKworICAgICAg
ICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgICAgICAgICAgcmVzZXRUZXN0KCk7CisgICAgICAg
ICAgICBzY3JvbGxlci5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JYID0gb3ZlcnNjcm9sbFg7Cisg
ICAgICAgICAgICBzY3JvbGxlci5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JZID0gb3ZlcnNjcm9s
bFk7CisgICAgICAgICAgICByZXR1cm4gcGVyZm9ybVdoZWVsU2Nyb2xsKHNjcm9sbGVyLCAiZG93
biIpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3Jv
bGxUb3AgPiAwLCBwcm9wYWdhdGVZLCAnQ29udGludWUgdXAgdGhlIHZlcnRpY2FsIHNjcm9sbCBj
aGFpbmluZycpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0sICdFbGVtZW50IHZlcnRpY2Fs
IHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogJyArIG92ZXJzY3JvbGxYICsg
JyAnICsgb3ZlcnNjcm9sbFkgKyAnLicpOworICAgIH0pOworfQorCithZGRFdmVudExpc3RlbmVy
KCJsb2FkIiwgc3RhcnRUZXN0KTsKKzwvc2NyaXB0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVo
YXZpb3ItaWZyYW1lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL292
ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MDBhMGI3
ZDkwNWI4N2MxZGI3NjI2OTRmZDAwNjM4ZjE5NzY5NTM3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMjEgQEAKKworCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9s
bCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBhdXRvLgorUEFTUyBJZnJhbWUg
dmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIGF1dG8u
CitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhh
dmlvcjogY29udGFpbiBhdXRvLgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0
aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGF1dG8uCitQQVNTIElmcmFtZSBob3Jpem9u
dGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBhdXRvLgorUEFT
UyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBu
b25lIGF1dG8uCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNj
cm9sbC1iZWhhdmlvcjogYXV0byBjb250YWluLgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xs
IHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIGNvbnRhaW4uCitQQVNTIElmcmFt
ZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFp
biBjb250YWluLgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Ny
b2xsLWJlaGF2aW9yOiBjb250YWluIGNvbnRhaW4uCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNj
cm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBjb250YWluLgorUEFTUyBJ
ZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25l
IGNvbnRhaW4uCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNj
cm9sbC1iZWhhdmlvcjogYXV0byBub25lLgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRl
c3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIG5vbmUuCitQQVNTIElmcmFtZSBob3Jp
em9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBub25l
LgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2
aW9yOiBjb250YWluIG5vbmUuCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdp
dGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBub25lLgorUEFTUyBJZnJhbWUgdmVydGljYWwg
c2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIG5vbmUuCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItaWZy
YW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9y
LWlmcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjViOTAxZDM3MGE4NmYxYzY1MjEzOTEyNGMxZjk0NjIw
ODZjNDMwN2IKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9v
dmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS5odG1sCkBAIC0wLDAgKzEsODEgQEAKKzwhZG9jdHlw
ZSBodG1sPgorCis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2aW9y
LXN1cHBvcnQuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL2Ry
YWZ0cy5jc3N3Zy5vcmcvY3NzLW92ZXJzY3JvbGwtYmVoYXZpb3IiPgorPHN0eWxlPgorICAgIC5z
Y3JvbGxpbmcgeworICAgICAgICBvdmVyZmxvdzogc2Nyb2xsOworICAgIH0KKyAgICAuc2Nyb2xs
Q29udGVudCB7CisgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgaGVpZ2h0OiAzMDBweDsK
KyAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmVkLCBibHVlKTsK
KyAgICB9CisgICAgI3Jvb3QgeworICAgICAgICB3aWR0aDogMjAwcHg7CisgICAgICAgIGhlaWdo
dDogMjAwcHg7CisgICAgfQorICAgICNzY3JvbGxlciB7CisgICAgICAgIHdpZHRoOiAxMDBweDsK
KyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgICAgb3ZlcnNjcm9sbC1iZWhhdmlvci15OiBh
dXRvOworICAgIH0KKzwvc3R5bGU+Cis8ZGl2IGlkPSdyb290JyBjbGFzcz0ic2Nyb2xsaW5nIj4K
KyAgICA8aWZyYW1lIGlkPSdzY3JvbGxlcicgc3JjZG9jPSI8aHRtbD48ZGl2IHN0eWxlPSd3aWR0
aDogMzAwcHg7IGhlaWdodDogMzAwcHg7Jz48L2Rpdj48L2h0bWw+CisgICAgICAgICI+PC9pZnJh
bWU+CisgICAgPGRpdiBjbGFzcz0ic2Nyb2xsQ29udGVudCI+PC9kaXY+Cis8L2Rpdj4KKworPHNj
cmlwdD4KKyAgICBjb25zdCByb290ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jvb3QnKTsK
KyAgICBjb25zdCBzY3JvbGxlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY3JvbGxlcicp
OworICAgIHZhciBvdmVyc2Nyb2xsRGF0YXMgPSBbWyJhdXRvIiwgImF1dG8iLCB0cnVlLCB0cnVl
XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImNvbnRhaW4iLCAiYXV0byIsIGZhbHNl
LCB0cnVlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIm5vbmUiLCAiYXV0byIsIGZh
bHNlLCB0cnVlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImF1dG8iLCAiY29udGFp
biIsIHRydWUsIGZhbHNlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImNvbnRhaW4i
LCAiY29udGFpbiIsIGZhbHNlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
WyJub25lIiwgImNvbnRhaW4iLCBmYWxzZSwgZmFsc2VdLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFsiYXV0byIsICJub25lIiwgdHJ1ZSwgZmFsc2VdLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFsiY29udGFpbiIsICJub25lIiwgZmFsc2UsIGZhbHNlXSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBbIm5vbmUiLCAibm9uZSIsIGZhbHNlLCBmYWxzZV1dOworICAgIGZ1
bmN0aW9uIHJlc2V0VGVzdCgpIHsKKyAgICAgICAgLy8gVHJ5IHZhcmlvdXMgbWV0aG9kcyB0byBl
bnN1cmUgdGhlIGVsZW1lbnQgcG9zaXRpb24gaXMgcmVzZXQgaW1tZWRpYXRlbHkuCisgICAgICAg
IHNjcm9sbGVyLmNvbnRlbnRXaW5kb3cuc2Nyb2xsWCA9IDMwMDsKKyAgICAgICAgc2Nyb2xsZXIu
Y29udGVudFdpbmRvdy5zY3JvbGxZID0gMzAwOworICAgICAgICBzY3JvbGxlci5jb250ZW50V2lu
ZG93LnNjcm9sbFRvKDMwMCwgMzAwKTsKKworICAgICAgICByb290LnNjcm9sbExlZnQgPSAwOwor
ICAgICAgICByb290LnNjcm9sbFRvcCA9IDA7CisgICAgICAgIHJvb3Quc2Nyb2xsVG8oMCwgMCk7
CisgICAgfQorCisgICAgZnVuY3Rpb24gb3ZlcnNjcm9sbEJlaGF2aW9yVGVzdCgpIHsKKyAgICAg
ICAgb3ZlcnNjcm9sbERhdGFzLmZvckVhY2goKFtvdmVyc2Nyb2xsWCwgb3ZlcnNjcm9sbFksIHBy
b3BhZ2F0ZVgsIHByb3BhZ2F0ZVldKSA9PiB7CisgICAgICAgICAgICBwcm9taXNlX3Rlc3QoKCkg
PT4geworICAgICAgICAgICAgICAgIHJlc2V0VGVzdCgpOworICAgICAgICAgICAgICAgIHZhciB0
YXJnZXQgPSBzY3JvbGxlci5jb250ZW50V2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJodG1sIilbMF07CisgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLm92ZXJzY3JvbGxC
ZWhhdmlvclggPSBvdmVyc2Nyb2xsWDsKKyAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUub3Zl
cnNjcm9sbEJlaGF2aW9yWSA9IG92ZXJzY3JvbGxZOworCisgICAgICAgICAgICAgICAgcmV0dXJu
IHBlcmZvcm1XaGVlbFNjcm9sbChzY3JvbGxlciwgInJpZ2h0IikudGhlbigoKSA9PiB7CisgICAg
ICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxMZWZ0ID4gMCwgcHJvcGFn
YXRlWCwgJ0NvbnRpbnVlIHVwIHRoZSBob3Jpem9udGFsIHNjcm9sbCBjaGFpbmluZycpOworICAg
ICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSwgJ0lmcmFtZSBob3Jpem9udGFsIHNjcm9s
bCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogJyArIG92ZXJzY3JvbGxYICsgJyAnICsg
b3ZlcnNjcm9sbFkgKyAnLicpOworCisgICAgICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4gewor
ICAgICAgICAgICAgICAgIHJlc2V0VGVzdCgpOworICAgICAgICAgICAgICAgIHZhciB0YXJnZXQg
PSBzY3JvbGxlci5jb250ZW50V2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJo
dG1sIilbMF07CisgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlv
clggPSBvdmVyc2Nyb2xsWDsKKyAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUub3ZlcnNjcm9s
bEJlaGF2aW9yWSA9IG92ZXJzY3JvbGxZOworICAgICAgICAgICAgICAgIHJldHVybiBwZXJmb3Jt
V2hlZWxTY3JvbGwoc2Nyb2xsZXIsICJkb3duIikudGhlbigoKSA9PiB7CisgICAgICAgICAgICAg
ICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxUb3AgPiAwLCBwcm9wYWdhdGVZLCAnQ29u
dGludWUgdXAgdGhlIHZlcnRpY2FsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAgICAgICAgICAg
IH0pOworICAgICAgICAgICAgfSwgJ0lmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92
ZXJzY3JvbGwtYmVoYXZpb3I6ICcgKyBvdmVyc2Nyb2xsWCArICcgJyArIG92ZXJzY3JvbGxZICsg
Jy4nKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgc2Nyb2xsZXIuYWRkRXZlbnRMaXN0ZW5l
cigibG9hZCIsIG92ZXJzY3JvbGxCZWhhdmlvclRlc3QpOworPC9zY3JpcHQ+ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcv
b3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJs
ZS1lbGVtZW50LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMzk1YjY0ODhkMDg3MGI5NTYxYzAy
ODY3OWQ3ZTE1YTQ3ZmNlNmU5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9z
Y3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSw0IEBACisKK1BBU1MgVW5zY3JvbGxhYmxlIGVsZW1lbnQgaG9yaXpv
bnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuCitQQVNTIFVu
c2Nyb2xsYWJsZSBlbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1i
ZWhhdmlvcjogbm9uZS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcv
b3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVu
dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjM0NTFiNDNjZDEwMGI1ZTBlOGRmODNjNjk3OWRhNDZhOGQ2Y2Yz
MDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9vdmVyc2Ny
b2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWwKQEAgLTAsMCArMSw2MSBAQAor
PCFkb2N0eXBlIGh0bWw+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5l
c3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVz
c3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL292ZXJzY3JvbGwt
YmVoYXZpb3Itc3VwcG9ydC5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0
dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3Mtb3ZlcnNjcm9sbC1iZWhhdmlvciI+Cis8c3R5bGU+
CisgICAgLnNjcm9sbGluZyB7CisgICAgICAgIG92ZXJmbG93OiBzY3JvbGw7CisgICAgfQorICAg
IC5zY3JvbGxDb250ZW50IHsKKyAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICBoZWlnaHQ6
IDMwMHB4OworICAgIH0KKyAgICAjcm9vdCB7CisgICAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAg
ICAgaGVpZ2h0OiAyMDBweDsKKyAgICB9CisgICAgI3Njcm9sbGVyIHsKKyAgICAgICAgd2lkdGg6
IDEwMHB4OworICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgICBvdmVyc2Nyb2xsLWJlaGF2
aW9yOiBub25lOworICAgICAgICBvdmVyZmxvdzogdmlzaWJsZTsKKyAgICAgICAgYmFja2dyb3Vu
ZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmVkLCBibHVlKTsKKyAgICB9Cis8L3N0eWxlPgor
PGRpdiBpZD0icm9vdCIgY2xhc3M9InNjcm9sbGluZyI+CisgICAgPGRpdiBpZD0ic2Nyb2xsZXIi
PgorICAgICAgICA8ZGl2IGNsYXNzPSJzY3JvbGxDb250ZW50Ij48L2Rpdj4KKyAgICA8L2Rpdj4K
KyAgICA8ZGl2IGNsYXNzPSJzY3JvbGxDb250ZW50Ij48L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0
PgorY29uc3Qgcm9vdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyb290Jyk7Citjb25zdCBz
Y3JvbGxlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY3JvbGxlcicpOworZnVuY3Rpb24g
cmVzZXRUZXN0KCkgeworICAgIHJvb3Quc2Nyb2xsTGVmdCA9IDA7CisgICAgcm9vdC5zY3JvbGxU
b3AgPSAwOworICAgIHJvb3Quc2Nyb2xsVG8oMCwgMCk7Cit9CisKK2Z1bmN0aW9uIHN0YXJ0VGVz
dCgpIHsKKyAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAgIHJlc2V0VGVz
dCgpOworICAgICAgICAgICAgcmV0dXJuIHBlcmZvcm1XaGVlbFNjcm9sbChzY3JvbGxlciwgInJp
Z2h0IikudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyb290LnNj
cm9sbExlZnQgPiAwLCB0cnVlLCAnQ29udGludWUgdXAgdGhlIGhvcml6b250YWwgc2Nyb2xsIGNo
YWluaW5nJyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSwgJ1Vuc2Nyb2xsYWJsZSBlbGVt
ZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25l
LicpOworCisgICAgICAgIHByb21pc2VfdGVzdCgoKSA9PiB7CisgICAgICAgICAgICByZXNldFRl
c3QoKTsKKworICAgICAgICAgICAgcmV0dXJuIHBlcmZvcm1XaGVlbFNjcm9sbChzY3JvbGxlciwg
ImRvd24iKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJvb3Qu
c2Nyb2xsVG9wID4gMCwgdHJ1ZSwgJ0NvbnRpbnVlIHVwIHRoZSB2ZXJ0aWNhbCBzY3JvbGwgY2hh
aW5pbmcnKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9LCAnVW5zY3JvbGxhYmxlIGVsZW1l
bnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLicp
OworfQorCithZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgc3RhcnRUZXN0KTsKKzwvc2NyaXB0Pgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
c2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXVu
c2Nyb2xsYWJsZS1pZnJhbWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdmYTU5Y2NiYTc5YWVm
ZjMzZGE3MGU5M2Q0ODhhMDdlZWM5YzU2OTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorCisKK1BBU1MgVW5zY3JvbGxhYmxlIGlmcmFt
ZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4K
K1BBU1MgVW5zY3JvbGxhYmxlIGlmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJz
Y3JvbGwtYmVoYXZpb3I6IG5vbmUuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Ny
b2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUt
aWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTZjNjNmOGNiM2QxNGJlZjhlZGJhYTExZDVlYWYyNmVk
ZDNhMGJlMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL292
ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sCkBAIC0wLDAgKzEsNjEg
QEAKKzwhZG9jdHlwZSBodG1sPgorCis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhh
cm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9vdmVyc2Ny
b2xsLWJlaGF2aW9yLXN1cHBvcnQuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJoZWxwIiBocmVm
PSJodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLW92ZXJzY3JvbGwtYmVoYXZpb3IiPgorPHN0
eWxlPgorICAgIC5zY3JvbGxpbmcgeworICAgICAgICBvdmVyZmxvdzogc2Nyb2xsOworICAgIH0K
KyAgICAuc2Nyb2xsQ29udGVudCB7CisgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgaGVp
Z2h0OiAzMDBweDsKKyAgICB9CisgICAgI3Jvb3QgeworICAgICAgICB3aWR0aDogMjAwcHg7Cisg
ICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgfQorICAgICNzY3JvbGxlciB7CisgICAgICAgIHdp
ZHRoOiAyMDBweDsKKyAgICAgICAgaGVpZ2h0OiAyMDBweDsKKyAgICAgICAgb3ZlcnNjcm9sbC1i
ZWhhdmlvcjogbm9uZTsKKyAgICAgICAgb3ZlcmZsb3c6IHZpc2libGU7CisgICAgICAgIGJhY2tn
cm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJlZCwgYmx1ZSk7CisgICAgfQorPC9zdHls
ZT4KKzxkaXYgaWQ9J3Jvb3QnIGNsYXNzPSJzY3JvbGxpbmciPgorICAgIDxpZnJhbWUgaWQ9J3Nj
cm9sbGVyJyBzcmNkb2M9IjxodG1sIHN0eWxlPSdvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lOyc+
PGRpdiBzdHlsZT0nd2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDEwMHB4Oyc+PC9kaXY+PC9odG1sPgor
ICAgICAgICAiPjwvaWZyYW1lPgorICAgIDxkaXYgY2xhc3M9InNjcm9sbENvbnRlbnQiPjwvZGl2
PgorPC9kaXY+CisKKzxzY3JpcHQ+Citjb25zdCByb290ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3Jvb3QnKTsKK2NvbnN0IHNjcm9sbGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Nj
cm9sbGVyJyk7CisKK2Z1bmN0aW9uIHJlc2V0VGVzdCgpIHsKKyAgICByb290LnNjcm9sbExlZnQg
PSAwOworICAgIHJvb3Quc2Nyb2xsVG9wID0gMDsKKyAgICByb290LnNjcm9sbFRvKDAsIDApOwor
fQorCitmdW5jdGlvbiBzdGFydFRlc3QoKSB7CisgICAgICAgIHByb21pc2VfdGVzdCgoKSA9PiB7
CisgICAgICAgICAgICByZXNldFRlc3QoKTsKKyAgICAgICAgICAgIHJldHVybiBwZXJmb3JtV2hl
ZWxTY3JvbGwoc2Nyb2xsZXIsICJyaWdodCIpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAg
IGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxMZWZ0ID4gMCwgdHJ1ZSwgJ0NvbnRpbnVlIHVwIHRo
ZSBob3Jpem9udGFsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAgICAgICAgfSk7CisgICAgICAg
IH0sICdVbnNjcm9sbGFibGUgaWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVy
c2Nyb2xsLWJlaGF2aW9yOiBub25lLicpOworCisgICAgICAgIHByb21pc2VfdGVzdCgoKSA9PiB7
CisgICAgICAgICAgICByZXNldFRlc3QoKTsKKworICAgICAgICAgICAgcmV0dXJuIHBlcmZvcm1X
aGVlbFNjcm9sbChzY3JvbGxlciwgImRvd24iKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAg
ICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsVG9wID4gMCwgdHJ1ZSwgJ0NvbnRpbnVlIHVwIHRo
ZSB2ZXJ0aWNhbCBzY3JvbGwgY2hhaW5pbmcnKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9
LCAnVW5zY3JvbGxhYmxlIGlmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3Jv
bGwtYmVoYXZpb3I6IG5vbmUuJyk7Cit9CisKK2FkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBzdGFy
dFRlc3QpOworPC9zY3JpcHQ+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvcmVzb3VyY2VzL292ZXJzY3JvbGwtYmVoYXZp
b3Itc3VwcG9ydC5qcyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3Jlc291cmNlcy9vdmVy
c2Nyb2xsLWJlaGF2aW9yLXN1cHBvcnQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWU3ZTMyMzIyMTRlODhlZjdj
NjdlMDk5NzIwYjJiMjM3Y2FhNzBlMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3Qvc2Nyb2xsaW5nL3Jlc291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXN1cHBvcnQuanMKQEAg
LTAsMCArMSwzMSBAQAorYXN5bmMgZnVuY3Rpb24gcGVyZm9ybVdoZWVsU2Nyb2xsKHNjcm9sbGVy
LCBkaXJlY3Rpb24pIHsKKyAgICB2YXIgZGVsdGFYID0gMDsKKyAgICB2YXIgZGVsdGFZID0gMDsK
KyAgICBpZiAoZGlyZWN0aW9uID09ICJkb3duIikKKyAgICAgICAgZGVsdGFZID0gLTU7CisgICAg
ZWxzZSBpZiAoZGlyZWN0aW9uID09ICJ1cCIpCisgICAgICAgIGRlbHRhWSA9IDU7CisgICAgZWxz
ZSBpZiAoZGlyZWN0aW9uID09ICJyaWdodCIpCisgICAgICAgIGRlbHRhWCA9IC01OworICAgIGVs
c2UgaWYgKGRpcmVjdGlvbiA9PSAibGVmdCIpCisgICAgICAgIGRlbHRhWCA9IDU7CisKKyAgICB2
YXIgeCA9IHNjcm9sbGVyLmNsaWVudFdpZHRoIC8gMjsKKyAgICB2YXIgeSA9IHNjcm9sbGVyLmNs
aWVudEhlaWdodCAvIDI7CisgICAgZXZlbnRTZW5kZXIuZHJhZ01vZGUgPSBmYWxzZTsKKyAgICBl
dmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICBldmVudFNlbmRlci5tb3VzZU1v
dmVUbyh4LCB5KTsKKyAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZGVsdGFYLCBkZWx0YVksICdiZWdhbicsICdub25lJyk7CisgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGRlbHRhWCAqIDIs
IGRlbHRhWSAqIDIsICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZGVsdGFYICogMywgZGVsdGFZICogMywg
J2NoYW5nZWQnLCAnbm9uZScpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkZWx0YVgsIGRlbHRh
WSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZGVsdGFYICogMiwgZGVsdGFZICogMiwgJ25vbmUnLCAnY29u
dGludWUnKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZGVsdGFYICogMywgZGVsdGFZICogMywgJ25vbmUnLCAnY29udGludWUnKTsKKyAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwg
MCwgJ25vbmUnLCAnZW5kJyk7CisgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gewor
ICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoKCkgPT4gewor
ICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBiMjUyNGRkNzQ0
ZGE1NTk0OTQ0YTQ2Y2QxMjNjZWRjYjQzMTRhMTE3Li5mODY5MzY2MzY1MzQ3MzcyMjY3ZTJiMzY3
MWIyY2JiOTBlZDRhYTE5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sx
L1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0
RXhwZWN0YXRpb25zCkBAIC00NTEsNiArNDUxLDEwIEBAIGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY29va2llcy9zZWN1cmUvc2V0LWZyb20td3Muc3ViLmh0bWwgWyBGYWlsdXJlIF0K
ICMgV2ViS2l0MSBmcmFtZXMgdXNlIG5hdGl2ZSBzY3JvbGxiYXJzIGNhdXNpbmcgdGhpcyByZWZl
cmVuY2UgdGVzdCB0byBmYWlsLgogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLXNjcm9sbC1zbmFwL3Njcm9sbC10YXJnZXQtcGFkZGluZy0wMDEuaHRtbCBbIEltYWdlT25s
eUZhaWx1cmUgXQogCisjIE5lZWQgdG8gZmluZCBhIHdheSB0byBibG9jayB0aGUgY3Jvc3MtZnJh
bWUgc2Nyb2xsIGNoYWluaW5nIGluIFdLMS4KK2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVo
YXZpb3ItaWZyYW1lLmh0bWwgWyBTa2lwIF0KK2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVo
YXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sIFsgU2tpcCBdCisKICMjIyBFTkQgT0YgKDIp
IEZhaWx1cmVzIHdpdGhvdXQgYnVnIHJlcG9ydHMKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417806</attachid>
            <date>2021-01-18 00:06:50 -0800</date>
            <delta_ts>2021-01-18 00:41:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220139-20210118160648.patch</filename>
            <type>text/plain</type>
            <size>83282</size>
            <attacher name="cathiechen">cathiechen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxNTIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGEzM2ZlOWU0NzkzZDlj
YTg2ODI0OTU2YzQ5NWJkY2M3NDc3ZDQ1Zi4uYzA4MTg4NGRhYjZiMTdjMDE4Y2I0MjJhNjJhZWI4
ZWZlOWI0M2M0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMCBAQAorMjAyMS0wMS0xNSAgQ2F0
aGllIENoZW4gIDxjYXRoaWVjaGVuQGlnYWxpYS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IENT
UyBvdmVyc2Nyb2xsLWJlaGF2aW9yIG9uIE1hYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwMTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQmFzZWQgb24gRnLDqWTDqXJpYyBXYW5nJ3MgcGF0Y2guCisK
KyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIG92ZXJzY3JvbGwtYmVoYXZpb3Ig
b24gTWFjLgorICAgICAgICBBY2NvcmRpbmcgdG8gWzFdLCB0aGVyZSBhcmUgdHdvIGtpbmRzIG9m
IGFjdGlvbnM6IG5vbi1sb2NhbCBib3VuZGFyeSBkZWZhdWx0IGFjdGlvbnMgYW5kIGxvY2FsIGJv
dW5kYXJ5IGRlZmF1bHQgYWN0aW9ucy4KKyAgICAgICAgSW4gV2ViS2l0IG1hYywgdGhlIHJ1YmJl
ciBiYW5kaW5nIGVmZm9ydCBpcyBiZWxvbmdlZCB0byBsb2NhbCBib3VuZGFyeSBkZWZhdWx0IGFj
dGlvbnMuIFRoZSBzY3JvbGwgY2hhaW5pbmcgYW5kIHN3aXBlCisgICAgICAgIGdlc3R1cmVzICh0
cmlnZ2VyIGdvIGJhY2sgb3IgZ28gZm9yd2FyZCBhY3Rpb25zKSBhcmUgYmVsb25nZWQgdG8gbm9u
LWxvY2FsIGJvdW5kYXJ5IGRlZmF1bHQgYWN0aW9ucy4KKyAgICAgICAgMS4gVG8gaGFuZGxlIHRo
ZSBydWJiZXIgYmFuZGluZyBlZmZlY3QsIHNob3VsZFN0b3BIb3Jpem9udGFsU3RyZWNoKCkgYW5k
IHNob3VsZFN0b3BWZXJ0aWNhbFN0cmVjaCgpIGFyZSBhZGRlZCB0byBkZWNpZGUKKyAgICAgICAg
d2hldGhlciB0aGUgcnViYmVyIGJhbmRpbmcgZWZmb3J0IGlzIGFsbG93ZWQgb3Igbm90LgorICAg
ICAgICAyLiBUbyBibG9jayBzY3JvbGwgY2hhaW5pbmcgYWN0aW9ucyBpbiBkaWZmZXJlbnQgc2Ny
b2xsIG1vZGVzLgorICAgICAgICAgIC0gRm9yIGFzeW5jaHJvbm91cyBzY3JvbGxpbmcsIGl0J3Mg
aGFuZGxlZCBpbiBTY3JvbGxpbmdUcmVlOjpoYW5kbGVXaGVlbEV2ZW50V2l0aE5vZGUoKSwgYWNj
b3JkaW5nIHRvIHRoZSB2YWx1ZSBvZgorICAgICAgICAgIG92ZXJzY3JvbGwtYmVoYXZpb3IsIGl0
IGJsb2NrcyB0aGUgc2Nyb2xsIGNoYWluaW5nIGlmIG5lZWRlZCwgdGhlIHJlc3VsdCB3b3VsZCBi
ZSBhZGRlZCB0byBtX2xhdGNoaW5nQ29udHJvbGxlcgorICAgICAgICAgIGFuZCBtaWdodCBiZSBy
ZXVzZWQuCisgICAgICAgICAgLSBGb3Igc3luY2hyb25vdXMgc2Nyb2xsaW5nLCBpZiBXSEVFTF9F
VkVOVF9MQVRDSElORyBpcyBkaXNhYmxlZCwgaXQgaGFuZGxlcyBvdmVyc2Nyb2xsLWJlaGF2aW9y
IGluIGhhbmRsZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94KCkuCisgICAgICAg
ICAgSWYgV0hFRUxfRVZFTlRfTEFUQ0hJTkcgaXMgZW5hYmxlZC4gT3ZlcnNjcm9sbC1iZWhhdmlv
ciBpcyBoYW5kbGVkIGluIGZpbmRFbmNsb3NpbmdTY3JvbGxhYmxlQ29udGFpbmVyKCkuCisgICAg
ICAgICAgSXQgYWRkZWQgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIHRvIEZyYW1lU3RhdGUgdG8gaW5k
aWNhdGUgd2hldGhlciB0aGUgY3VycmVudCBsYXRjaGVkIG5vZGUgc2hvdWxkIGJsb2NrIHNjcm9s
bCBjaGFpbmluZy4KKyAgICAgICAgICBJZiB0aGUgY3VycmVudCBmcmFtZSBpcyBhIHN1YmZyYW1l
LCBpdCBwYXNzZXMgaXRzIFNjcm9sbENoYWluaW5nQmxvY2tlciB0byB0aGUgcGFyZW50ZnJhbWUs
IGFuZCBldmVudHVhbGx5CisgICAgICAgICAgbGV0IHRoZSBtYWluZnJhbWUgZGVjaWRlIHdoZXRo
ZXIgc2hvdWxkIHRyaWdnZXIgc3dpcGUgZ2VzdHVyZXMgb3Igbm90LgorICAgICAgICAzLiBUaGUg
c3dpcGUgZ2VzdHVyZXMuCisgICAgICAgICAgSWYgdGhlIG1haW5mcmFtZSByZWFjaGVzIGl0cyBz
Y3JvbGwgZWRnZXMsIHRoZXJlIHdpbGwgYmUgc3dpcGUgZ2VzdHVyZXMgZXZlbiBpZiBvdmVyc2Ny
b2xsLWJlaGF2aW9yJ3MgdmFsdWUgaXMgbm9uZS4KKyAgICAgICAgICBUaGlzIGJlaGF2aW9yIGlz
IG5vdCBzdXBvb3J0ZWQgaW4gV0sxIGFuZCBXSzIncyBzeW5jaHJvbm91cyBzY3JvbGwgd2l0aCBX
SEVFTF9FVkVOVF9MQVRDSElORyBvZmYuCisKKyAgICAgICAgWzFdIGh0dHBzOi8vZHJhZnRzLmNz
c3dnLm9yZy9jc3Mtb3ZlcnNjcm9sbC0xLyNvdmVyc2Nyb2xsLWJlaGF2aW9yLXByb3BlcnRpZXMK
KworICAgICAgICBUZXN0czogZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVt
ZW50Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZp
b3ItaWZyYW1lLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwt
YmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9z
Y3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLmh0bWwKKwor
ICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0
ZVBhcmVudEZyYW1lU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKTogQXBwbGllZCB0aGUgY3VycmVudCBm
cmFtZSdzIG92ZXJzY3JvbGwtYmVoYXZpb3IgdmFsdWUgdG8gU2Nyb2xsQ2hhaW5pbmdCbG9ja2Vy
CisgICAgICAgIGFuZCBwYXNzIHRoaXMgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIHRvIHBhcmVudCBm
cmFtZS4KKyAgICAgICAgKFdlYkNvcmU6Om92ZXJzY3JvbGxCZWhhdmlvclN0b3BzU2Nyb2xsQ2hh
aW5pbmcpOiBVcGRhdGVkIHNjcm9sbENoYWluaW5nQmxvY2tlciBhbmQgY2hlY2tlZCBpZiBpdCBz
aG91bGQgYmxvY2sgdGhlIHNjcm9sbCBjaGFpbmluZy4KKyAgICAgICAgVGhlIGNoYWluaW5nIG9m
IHZlcnRpY2FsIHNjcm9sbCB3aWxsIGJlIHN0b3BwZWQgZGlyZWN0bHkuIEZvciBob3Jpem9udGFs
IHNjcm9sbCwgaWYgbWFpbmZyYW1lIHJlYWNoZXMgdGhlIGVkZ2VzLCBpdCBkb2Vzbid0IHN0b3Ag
dHJpZ2dlcmluZworICAgICAgICBzd2lwZSBnZXN0dXJlLiBTdWJmcmFtZXMgd2lsbCBpbnN0ZWFk
IHVwZGF0ZSB0aGUgYmxvY2tlciBpbiBTY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIuIElmIHRoZSBz
Y3JvbGwgY2hhaW5pbmcgc2hvdWxkIGNvbnRpbnVlLCBmaWx0ZXIgd2hlZWxFdmVudCdzIGRlbHRh
IGluc3RlYWQuIAorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2
ZW50SW50ZXJuYWwpOiBXaGVuIFdIRUVMX0VWRU5UX0xBVENISU5HIGlzIGVuYWJsZWQsIGNoZWNr
IG92ZXJzY3JvbGxCZWhhdmlvclN0b3BzU2Nyb2xsQ2hhaW5pbmcuCisgICAgICAgIFVwZGF0ZSB0
aGUgc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIGluIFNjcm9sbExhdGNoaW5nQ29udHJvbGxlciBpZiBp
dCdzIG5vdCBtYWluZnJhbWUuIFN0b3AgdGhlIHNjcm9sbCBjaGFpbmluZyBpZiBuZWVkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpkaWRTY3JvbGxJblNjcm9sbGFibGVBcmVhKTogQWRkZWQgcGFyYW1l
dGVyIFNjcm9sbENoYWluaW5nQmxvY2tlciwgYW5kIGZpbHRlciB0aGUgZmlsdGVyZWREZWx0YSBi
eSBpdC4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudElu
QXBwcm9wcmlhdGVFbmNsb3NpbmdCb3gpOiBVcGRhdGUgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLCBh
bmQgc3RvcCB0aGUgc2Nyb2xsIGNoYWluaW5nIGlmIG5lZWRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkV2ZW50SGFuZGxlcjo6ZGVmYXVsdFdoZWVsRXZlbnRIYW5kbGVyKTogRmlsdGVyIHRoZSB3aGVl
bEV2ZW50J3MgZGVsdGEgYnkgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIHN0b3JlZCBpbiBzY3JvbGxM
YXRjaGluZ0NvbnRyb2xsZXIuCisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuaDoKKyAgICAg
ICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6Omhv
cml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IgY29uc3QpOiBPdmVyc2Nyb2xsLWJlaGF2aW9yIG9u
bHkgYWZmZWN0IHNjcm9sbGFibGUgRnJhbWVWaWV3LgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVW
aWV3Ojp2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvciBjb25zdCk6IERpdHRvLgorICAgICAgICAq
IHBhZ2UvRnJhbWVWaWV3Lmg6CisgICAgICAgICogcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1t
OgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkT3ZlcnNjcm9sbEJlaGF2aW9yQmxvY2tTY3JvbGxD
aGFpbmluZyk6IFVwZGF0ZSBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIgYW5kIGNoZWNrIGlmIHRoZSBz
Y3JvbGwgY2hhaW5pbmcgc2hvdWxkIGJlIHN0b3BwZWQuCisgICAgICAgIChXZWJDb3JlOjpmaW5k
RW5jbG9zaW5nU2Nyb2xsYWJsZUNvbnRhaW5lcik6IFN0b3AgdGhlIHNjcm9sbCBjaGFpbmluZyBp
ZiBuZWVkZWQuCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmRldGVybWluZVdoZWVs
RXZlbnRUYXJnZXQpOiBTdG9yZXMgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIGluIHNjcm9sbExhdGNo
aW5nQ29udHJvbGxlcgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29v
cmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNTY3JvbGxpbmdDb29yZGluYXRv
cjo6c2V0U2Nyb2xsaW5nTm9kZVNjcm9sbGFibGVBcmVhR2VvbWV0cnkpOiBVcGRhdGUgb3ZlcnNj
cm9sbC1iZWhhdmlvciB2YWx1ZXMgaW4gc2Nyb2xsUGFyYW1ldGVycy4KKyAgICAgICAgKiBwYWdl
L3Njcm9sbGluZy9TY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyOjp1cGRhdGVBbmRGZXRjaExhdGNoaW5nU3RhdGVG
b3JGcmFtZSk6IEFkZCBTY3JvbGxDaGFpbmluZ0Jsb2NrZXIgdG8gRnJhbWVTdGF0ZS4KKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbExhdGNoaW5nQ29udHJvbGxlcjo6Z2V0U2Nyb2xsQ2hhaW5pbmdC
bG9ja2VyIGNvbnN0KTogUmV0dXJucyBTY3JvbGxDaGFpbmluZ0Jsb2NrZXIgb2YgZnJhbWUuCisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXI6OnVwZGF0ZVNjcm9sbENo
YWluaW5nQmxvY2tlcik6IFVwZGF0ZXMgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIG9mIGZyYW1lLgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyOjpkdW1wIGNvbnN0KToK
KyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIuaDoKKyAg
ICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvclR5cGVzLmg6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnM6Om9wZXJhdG9yPT0gY29uc3Qp
OiBBZGRlZCBob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yIGFuZCB2ZXJ0aWNhbE92ZXJzY3Jv
bGxCZWhhdmlvci4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWU6OnNob3VsZEJsb2NrU2Nyb2xsQ2hhaW5p
bmdXaXRoTm9kZSk6IFVwZGF0ZSBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIgYW5kIGNoZWNrIGlmIHRo
ZSBzY3JvbGwgY2hhaW5pbmcgc2hvdWxkIGJlIHN0b3BwZWQuCisgICAgICAgIElmIG5vdCwgZmls
dGVyIHRoZSB3aGVlbEV2ZW50J3MgZGVsdGEuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdU
cmVlOjpoYW5kbGVXaGVlbEV2ZW50V2l0aE5vZGUpOiBTdG9wIHRoZSBzY3JvbGwgY2hhaW5pbmcg
aWYgbmVlZGVkLgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuaDoKKyAg
ICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6aG9yaXpvbnRhbE92
ZXJzY3JvbGxCZWhhdmlvciBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGU6OnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yIGNvbnN0KTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6dXBk
YXRlU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyU3RhdGUgY29uc3QpOgorICAgICAgICAqIHBhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmg6CisgICAgICAgICogcGFnZS9zY3Jv
bGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMuaDoKKyAgICAg
ICAgKiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVs
ZWdhdGVNYWM6OmFsbG93c0hvcml6b250YWxTdHJldGNoaW5nIGNvbnN0KTogSWYgb3ZlcnNjcm9s
bC1iZWhhdmlvci14OiBub25lLCB0aGUgc2Nyb2xsIHN0cmV0Y2ggc2hvdWxkIGJlIGJsb2NrZWQu
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFj
OjphbGxvd3NWZXJ0aWNhbFN0cmV0Y2hpbmcgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OnNob3VsZFN0b3BIb3Jp
em9udGFsU3RyZWNoIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjpzaG91bGRTdG9wVmVydGljYWxTdHJlY2ggY29u
c3QpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtV2hlZWxFdmVudDo6d2hlZWxEZWx0YUJpYXNpbmdUb3dh
cmRzVmVydGljYWwpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFR5cGVzLmg6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxDaGFpbmluZ0Jsb2NrZXI6OnNob3VsZEJsb2NrU2Nyb2xsQ2hhaW5p
bmcpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQ2hhaW5pbmdCbG9ja2VyOjpmaWx0ZXJEZWx0
YSk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYWJsZUFyZWE6OnVwZGF0ZVNjcm9sbENoYWluaW5nQmxvY2tlclN0YXRlIGNv
bnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYWJsZUFyZWE6Omhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWE6OnZlcnRpY2FsT3ZlcnNjcm9sbEJl
aGF2aW9yIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9sbGVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxDb250cm9sbGVyQ2xpZW50OjpzaG91bGRTdG9w
SG9yaXpvbnRhbFN0cmVjaCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxDb250cm9s
bGVyQ2xpZW50OjpzaG91bGRTdG9wVmVydGljYWxTdHJlY2ggY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIubW06CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxDb250cm9sbGVyOjpoYW5kbGVXaGVlbEV2ZW50KTogU3RvcCBzY3JvbGwgc3RyZWNoaW5nIGlm
IG5lZWRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbENvbnRyb2xsZXI6OmRpcmVjdGlvbkZy
b21FdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxDb250cm9sbGVyOjp3aGVlbERlbHRh
Qmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFj
L1Njcm9sbEFuaW1hdG9yTWFjLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1h
dG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JNYWM6OnNob3VsZFN0
b3BIb3Jpem9udGFsU3RyZWNoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1h
dG9yTWFjOjpzaG91bGRTdG9wVmVydGljYWxTdHJlY2ggY29uc3QpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6aG9y
aXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllcjo6dmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IgY29uc3QpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJMYXllci5oOgorCiAyMDIxLTAxLTE1ICBSb2IgQnVpcyAgPHJidWlzQGln
YWxpYS5jb20+CiAKICAgICAgICAgTWFyayBvbmx5IGNoaWxkIGZvciBsYXlvdXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5k
ZXggN2U2NmQ2ZWNjOTk5ODM0NGEyYWI0NjMyYWU0NDEwYThkMmU1ZjcyYy4uNjg2ZjRlN2Y2YWQ2
NjlhNGQ3OTE0Y2VmM2UyZmNiMmJhZDNhOWVhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAor
MjAyMS0wMS0xNSAgQ2F0aGllIENoZW4gIDxjYXRoaWVjaGVuQGlnYWxpYS5jb20+CisKKyAgICAg
ICAgSW1wbGVtZW50IENTUyBvdmVyc2Nyb2xsLWJlaGF2aW9yIG9uIE1hYworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwMTM5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmFzZWQgb24gRnLDqWTDqXJpYyBX
YW5nJ3MgcGF0Y2guCisKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNw
cDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxTY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnM+
OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFNjcm9sbGFibGVBcmVhUGFy
YW1ldGVycz46OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5oOgorCiAyMDIxLTAxLTE1ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNv
bT4KIAogICAgICAgICBbR1N0cmVhbWVyXSBVSTwtPldlYlBvY2VzcyBJUEMgbmVlZGVkIGZvciBl
bnVtZXJhdGVEZXZpY2VzIHN1cHBvcnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBl
YzQ2NTE4NmFiZmEzZjc0M2FlMmNlN2IzZDM2ZmI0MWE2NzkwN2M1Li41MTUxNGE2ZGU4OWY5YzUx
MWU4ZDJiYzJhZTg3ZDQ1MWQ2ZDUyOTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMjEtMDEtMTUgIENhdGhpZSBDaGVuICA8Y2F0aGllY2hlbkBpZ2Fs
aWEuY29tPgorCisgICAgICAgIEltcGxlbWVudCBDU1Mgb3ZlcnNjcm9sbC1iZWhhdmlvciBvbiBN
YWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDEz
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJhc2Vk
IG9uIEZyw6lkw6lyaWMgV2FuZydzIHBhdGNoLgorCisgICAgICAgIE5lZWQgdG8gZmluZCBhIHdh
eSB0byBibG9jayB0aGUgY3Jvc3MtZnJhbWUgc2Nyb2xsIGNoYWluaW5nIGluIFdLMS4KKworICAg
ICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06CisgICAgICAgICgtW1dlYkhUTUxWaWV3IHNj
cm9sbFdoZWVsOl0pOgorCiAyMDIxLTAxLTE0ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmVtb3ZlZCBtb3N0IHVzZXMgb2YgZGlzcGF0Y2hfYXN5bmMoZGlz
cGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgLi4uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIu
Y3BwCmluZGV4IGE5M2VjNTU1MDg5MzYwZDk2MjEwZjA0MmRkMmVjYzgzZTc4OWRmOTIuLjA5YzBl
OGY1MzUxM2I1NzlkM2M4N2VjYzA4OTM5NjczYTZiZjI3MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50SGFuZGxlci5jcHAKQEAgLTI4MzEsNiArMjgzMSw1NiBAQCBib29sIEV2ZW50SGFuZGxlcjo6
aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIE9w
dGlvbgogICAgIHJldHVybiBoYW5kbGVkOwogfQogCisjaWYgRU5BQkxFKFdIRUVMX0VWRU5UX0xB
VENISU5HKQorc3RhdGljIHZvaWQgdXBkYXRlUGFyZW50RnJhbWVTY3JvbGxDaGFpbmluZ0Jsb2Nr
ZXIoY29uc3QgU2Nyb2xsYWJsZUFyZWEqIHNjcm9sbGFibGVBcmVhLCBGcmFtZSYgZnJhbWUsIFNj
cm9sbENoYWluaW5nQmxvY2tlciYgYmxvY2tlcikKK3sKKyAgICBhdXRvKiBwYXJlbnQgPSBmcmFt
ZS50cmVlKCkucGFyZW50KCk7CisgICAgaWYgKCFzY3JvbGxhYmxlQXJlYSkKKyAgICAgICAgc2Ny
b2xsYWJsZUFyZWEgPSBmcmFtZS52aWV3KCk7CisgICAgaWYgKCFmcmFtZS5wYWdlKCkgfHwgIXBh
cmVudCB8fCAhc2Nyb2xsYWJsZUFyZWEpCisgICAgICAgIHJldHVybjsKKyAgICBzY3JvbGxhYmxl
QXJlYS0+dXBkYXRlU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyU3RhdGUoYmxvY2tlcik7CisgICAgZnJh
bWUucGFnZSgpLT5zY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIoKS51cGRhdGVTY3JvbGxDaGFpbmlu
Z0Jsb2NrZXIoKnBhcmVudCwgYmxvY2tlcik7Cit9CisKK3N0YXRpYyBib29sIG92ZXJzY3JvbGxC
ZWhhdmlvclN0b3BzU2Nyb2xsQ2hhaW5pbmcoY29uc3QgU2Nyb2xsYWJsZUFyZWEqIHNjcm9sbGFi
bGVBcmVhLCBGcmFtZSYgZnJhbWUsIFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgU2Ny
b2xsQ2hhaW5pbmdCbG9ja2VyIHNjcm9sbENoYWluaW5nQmxvY2tlciwgYm9vbCYgaGFuZGxlZEV2
ZW50KQoreworICAgIGlmICghc2Nyb2xsYWJsZUFyZWEpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGlmIChzY3JvbGxhYmxlQXJlYSAhPSBmcmFtZS52aWV3KCkpIHsKKyAgICAgICAgLy8g
V2hlZWwgZXZlbnQgaXMgZ29pbmcgdG8gYmUgaGFuZGxlZCBieSBGcmFtZVZpZXcgaW4gcHJvY2Vz
c1doZWVsRXZlbnRGb3JTY3JvbGxpbmcoKSwKKyAgICAgICAgLy8gc2hvdWxkIGxldCBzY3JvbGxh
YmxlQXJlYSdzIG92ZXJzY3JvbGwtYmVoYXZpb3IgZWZmZWN0IFNjcm9sbENoYWluaW5nQmxvY2tl
ci4KKyAgICAgICAgc2Nyb2xsYWJsZUFyZWEtPnVwZGF0ZVNjcm9sbENoYWluaW5nQmxvY2tlclN0
YXRlKHNjcm9sbENoYWluaW5nQmxvY2tlcik7CisgICAgfQorCisgICAgRmxvYXRTaXplIGZpbHRl
cmVkRGVsdGEod2hlZWxFdmVudC5kZWx0YVgoKSwgd2hlZWxFdmVudC5kZWx0YVkoKSk7CisgICAg
YXV0byBiaWFzZWREZWx0YSA9IFBsYXRmb3JtV2hlZWxFdmVudDo6d2hlZWxEZWx0YUJpYXNpbmdU
b3dhcmRzVmVydGljYWwoZmlsdGVyZWREZWx0YSk7CisgICAgaWYgKHNjcm9sbENoYWluaW5nQmxv
Y2tlci5ibG9ja1ggJiYgIWJpYXNlZERlbHRhLmhlaWdodCgpKSB7CisgICAgICAgIC8vIElmIHRo
ZSBob3Jpem9udGFsIHNjcm9sbCBjaGFpbmluZyBpcyBibG9ja2VkIGJ5IG92ZXJzY3JvbGwtYmVo
YXZpb3IgaW4gYSBzdWJmcmFtZS4KKyAgICAgICAgLy8gSXQgcHJvcGFnYXRlcyBpdHMgU2Nyb2xs
Q2hhaW5pbmdCbG9ja2VyIHRvIHBhcmVudCBmcmFtZXMgYW5kIGV2ZW50dWFsbHkgbGV0IG1haW5m
cmFtZQorICAgICAgICAvLyBkZWNpZGUgd2hldGhlciBuZWVkIHRvIHRyaWdnZXIgYSBzd2lwZSBn
ZXN0dXJlIG9yIG5vdC4KKyAgICAgICAgaWYgKGZyYW1lLmlzTWFpbkZyYW1lKCkpIHsKKyAgICAg
ICAgICAgIC8vIEluIG1haW4gZnJhbWUsIGlmIHRoZSBzY3JvbGwgcG9zaXRpb24gcmVhY2hlcyB0
byBpdHMgZWRnZXMsIHRyaWdnZXIgdGhlIHN3aXBlIGdlc3R1cmUsIG90aGVyd2lzZSBub3QuCisg
ICAgICAgICAgICBoYW5kbGVkRXZlbnQgPSAhKGJpYXNlZERlbHRhLndpZHRoKCkgJiYgc2Nyb2xs
YWJsZUFyZWEtPmlzUGlubmVkRm9yU2Nyb2xsRGVsdGFPbkF4aXMoLWJpYXNlZERlbHRhLndpZHRo
KCksIFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCkpOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgdXBkYXRlUGFyZW50RnJhbWVTY3JvbGxDaGFpbmluZ0Jsb2NrZXIoc2Nyb2xsYWJs
ZUFyZWEsIGZyYW1lLCBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIpOworICAgICAgICAgICAgaGFuZGxl
ZEV2ZW50ID0gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
CisgICAgaWYgKFNjcm9sbENoYWluaW5nQmxvY2tlcjo6c2hvdWxkQmxvY2tTY3JvbGxDaGFpbmlu
ZyhzY3JvbGxDaGFpbmluZ0Jsb2NrZXIsIGJpYXNlZERlbHRhKSkgeworICAgICAgICBoYW5kbGVk
RXZlbnQgPSB0cnVlOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBTY3JvbGxD
aGFpbmluZ0Jsb2NrZXI6OmZpbHRlckRlbHRhKHNjcm9sbENoYWluaW5nQmxvY2tlciwgYmlhc2Vk
RGVsdGEsIGZpbHRlcmVkRGVsdGEpOworICAgIHdoZWVsRXZlbnQgPSB3aGVlbEV2ZW50LmNvcHlX
aXRoRGVsdGFzQW5kVmVsb2NpdHkoZmlsdGVyZWREZWx0YS53aWR0aCgpLCBmaWx0ZXJlZERlbHRh
LmhlaWdodCgpLCB3aGVlbEV2ZW50LnNjcm9sbGluZ1ZlbG9jaXR5KCkpOworICAgIHJldHVybiBm
YWxzZTsKK30KKyNlbmRpZgorCiBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudElu
dGVybmFsKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgZXZlbnQsIE9wdGlvblNldDxXaGVlbEV2
ZW50UHJvY2Vzc2luZ1N0ZXBzPiBwcm9jZXNzaW5nU3RlcHMsIE9wdGlvblNldDxFdmVudEhhbmRs
aW5nPiYgaGFuZGxpbmcpCiB7CiAgICAgYXV0byogZG9jdW1lbnQgPSBtX2ZyYW1lLmRvY3VtZW50
KCk7CkBAIC0yOTIzLDEyICsyOTczLDMxIEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVl
bEV2ZW50SW50ZXJuYWwoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCwgT3B0CiAjaWYg
RU5BQkxFKFdIRUVMX0VWRU5UX0xBVENISU5HKQogICAgIGlmIChhbGxvd1Njcm9sbGluZykKICAg
ICAgICAgYWxsb3dTY3JvbGxpbmcgPSBtX2ZyYW1lLnBhZ2UoKS0+c2Nyb2xsTGF0Y2hpbmdDb250
cm9sbGVyKCkubGF0Y2hpbmdBbGxvd3NTY3JvbGxpbmdJbkZyYW1lKG1fZnJhbWUsIHNjcm9sbGFi
bGVBcmVhKTsKKyAgICBTY3JvbGxDaGFpbmluZ0Jsb2NrZXIgYmxvY2tlckZyb21MYXRjaGluZ0Nv
bnRyb2xsZXIgPSBtX2ZyYW1lLnBhZ2UoKS0+c2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyKCkuZ2V0
U2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKG1fZnJhbWUpOworICAgIGlmICghKGFsbG93U2Nyb2xsaW5n
IHx8IG1fZnJhbWUuaXNNYWluRnJhbWUoKSkpCisgICAgICAgIHVwZGF0ZVBhcmVudEZyYW1lU2Ny
b2xsQ2hhaW5pbmdCbG9ja2VyKHNjcm9sbGFibGVBcmVhLmdldCgpLCBtX2ZyYW1lLCBibG9ja2Vy
RnJvbUxhdGNoaW5nQ29udHJvbGxlcik7CiAjZW5kaWYKIAogICAgIGlmIChhbGxvd1Njcm9sbGlu
ZykgewotICAgICAgICAvLyBGSVhNRTogcHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxpbmcoKSBp
cyBvbmx5IGNhbGxlZCBmb3IgRnJhbWVWaWV3IHNjcm9sbGluZywgbm90IG92ZXJmbG93IHNjcm9s
bGluZywgd2hpY2ggaXMgY29uZnVzaW5nLgotICAgICAgICBoYW5kbGVkRXZlbnQgPSBwcm9jZXNz
V2hlZWxFdmVudEZvclNjcm9sbGluZyhldmVudCwgc2Nyb2xsYWJsZUFyZWEsIGhhbmRsaW5nKTsK
LSAgICAgICAgcHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxTbmFwKGV2ZW50LCBzY3JvbGxhYmxl
QXJlYSk7CisgICAgICAgIFBsYXRmb3JtV2hlZWxFdmVudCBhZGp1c3RlZFdoZWVsRXZlbnQgPSBQ
bGF0Zm9ybVdoZWVsRXZlbnQoZXZlbnQpOworICAgICAgICBib29sIHNjcm9sbENoYWluaW5nU3Rv
cHBlZCA9IGZhbHNlOworI2lmIEVOQUJMRShXSEVFTF9FVkVOVF9MQVRDSElORykKKyAgICAgICAg
c2Nyb2xsQ2hhaW5pbmdTdG9wcGVkID0gb3ZlcnNjcm9sbEJlaGF2aW9yU3RvcHNTY3JvbGxDaGFp
bmluZyhzY3JvbGxhYmxlQXJlYS5nZXQoKSwgbV9mcmFtZSwgYWRqdXN0ZWRXaGVlbEV2ZW50LCBi
bG9ja2VyRnJvbUxhdGNoaW5nQ29udHJvbGxlciwgaGFuZGxlZEV2ZW50KTsKKyNlbmRpZgorICAg
ICAgICBpZiAoIXNjcm9sbENoYWluaW5nU3RvcHBlZCkgeworICAgICAgICAgICAgLy8gRklYTUU6
IHByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKCkgaXMgb25seSBjYWxsZWQgZm9yIEZyYW1l
VmlldyBzY3JvbGxpbmcsIG5vdCBvdmVyZmxvdyBzY3JvbGxpbmcsIHdoaWNoIGlzIGNvbmZ1c2lu
Zy4KKyAgICAgICAgICAgIGhhbmRsZWRFdmVudCA9IHByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xs
aW5nKGFkanVzdGVkV2hlZWxFdmVudCwgc2Nyb2xsYWJsZUFyZWEsIGhhbmRsaW5nKTsKKyAgICAg
ICAgICAgIHByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsU25hcChhZGp1c3RlZFdoZWVsRXZlbnQs
IHNjcm9sbGFibGVBcmVhKTsKKyAgICAgICAgfQorI2lmICFFTkFCTEUoV0hFRUxfRVZFTlRfTEFU
Q0hJTkcpCisgICAgICAgIGlmIChhdXRvKiB2aWV3ID0gbV9mcmFtZS52aWV3KCkpIHsKKyAgICAg
ICAgICAgIFNjcm9sbENoYWluaW5nQmxvY2tlciBibG9ja2VyID0geyB2aWV3LT5ob3Jpem9udGFs
T3ZlcnNjcm9sbEJlaGF2aW9yKCkgIT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpBdXRvLCB2aWV3LT52
ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpICE9IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0byB9
OworICAgICAgICAgICAgaWYgKCFoYW5kbGVkRXZlbnQpIHsKKyAgICAgICAgICAgICAgICBhdXRv
IGJpYXNlZERlbHRhID0gUGxhdGZvcm1XaGVlbEV2ZW50Ojp3aGVlbERlbHRhQmlhc2luZ1Rvd2Fy
ZHNWZXJ0aWNhbChhZGp1c3RlZFdoZWVsRXZlbnQuZGVsdGEoKSk7CisgICAgICAgICAgICAgICAg
aGFuZGxlZEV2ZW50ID0gU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyOjpzaG91bGRCbG9ja1Njcm9sbENo
YWluaW5nKGJsb2NrZXIsIGJpYXNlZERlbHRhKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
I2VuZGlmCiAgICAgfQogCiAgICAgcmV0dXJuIGhhbmRsZWRFdmVudDsKQEAgLTI5NDUsMjAgKzMw
MTQsMjMgQEAgc3RhdGljIHZvaWQgaGFuZGxlV2hlZWxFdmVudFBoYXNlSW5TY3JvbGxhYmxlQXJl
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
ICNpZiBFTkFCTEUoV0hFRUxfRVZFTlRfTEFUQ0hJTkcpCkBAIC0yOTc5LDIyICszMDUxLDMxIEBA
IGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2lu
Z0JveChOb2RlKiBzdGFydE5vZGUsIGNvCiAgICAgaWYgKCFzaG91bGRIYW5kbGVFdmVudCkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIGJsb2NrZXIg
PSB7IGZhbHNlLCBmYWxzZSB9OwogICAgIGlmIChpczxSZW5kZXJMaXN0Qm94Pihpbml0aWFsRW5j
bG9zaW5nQm94KSkKLSAgICAgICAgcmV0dXJuIGRpZFNjcm9sbEluU2Nyb2xsYWJsZUFyZWEoZG93
bmNhc3Q8UmVuZGVyTGlzdEJveD4oaW5pdGlhbEVuY2xvc2luZ0JveCksIHdoZWVsRXZlbnQpOwor
ICAgICAgICByZXR1cm4gZGlkU2Nyb2xsSW5TY3JvbGxhYmxlQXJlYShkb3duY2FzdDxSZW5kZXJM
aXN0Qm94Pihpbml0aWFsRW5jbG9zaW5nQm94KSwgd2hlZWxFdmVudCwgYmxvY2tlcik7CiAKKyAg
ICBhdXRvIGJpYXNlZERlbHRhID0gUGxhdGZvcm1XaGVlbEV2ZW50Ojp3aGVlbERlbHRhQmlhc2lu
Z1Rvd2FyZHNWZXJ0aWNhbChGbG9hdFNpemUod2hlZWxFdmVudC5kZWx0YVgoKSwgd2hlZWxFdmVu
dC5kZWx0YVkoKSkpOwogICAgIFJlbmRlckJveCogY3VycmVudEVuY2xvc2luZ0JveCA9ICZpbml0
aWFsRW5jbG9zaW5nQm94OwogICAgIHdoaWxlIChjdXJyZW50RW5jbG9zaW5nQm94KSB7CiAgICAg
ICAgIGlmIChSZW5kZXJMYXllciogYm94TGF5ZXIgPSBjdXJyZW50RW5jbG9zaW5nQm94LT5sYXll
cigpKSB7CiAgICAgICAgICAgICBhdXRvIHBsYXRmb3JtRXZlbnQgPSB3aGVlbEV2ZW50LnVuZGVy
bHlpbmdQbGF0Zm9ybUV2ZW50KCk7CiAgICAgICAgICAgICBib29sIHNjcm9sbGluZ1dhc0hhbmRs
ZWQ7CiAgICAgICAgICAgICBpZiAocGxhdGZvcm1FdmVudCkgeworICAgICAgICAgICAgICAgIFNj
cm9sbENoYWluaW5nQmxvY2tlcjo6ZmlsdGVyRGVsdGEoYmxvY2tlciwgYmlhc2VkRGVsdGEsIGZp
bHRlcmVkUGxhdGZvcm1EZWx0YSk7CiAgICAgICAgICAgICAgICAgYXV0byBjb3BpZWRFdmVudCA9
IHBsYXRmb3JtRXZlbnQtPmNvcHlXaXRoRGVsdGFzQW5kVmVsb2NpdHkoZmlsdGVyZWRQbGF0Zm9y
bURlbHRhLndpZHRoKCksIGZpbHRlcmVkUGxhdGZvcm1EZWx0YS5oZWlnaHQoKSwgZmlsdGVyZWRW
ZWxvY2l0eSk7CiAgICAgICAgICAgICAgICAgc2Nyb2xsaW5nV2FzSGFuZGxlZCA9IGhhbmRsZVdo
ZWVsRXZlbnRJblNjcm9sbGFibGVBcmVhKGNvcGllZEV2ZW50LCAqYm94TGF5ZXIsIGV2ZW50SGFu
ZGxpbmcpOwogICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgc2Nyb2xsaW5nV2Fz
SGFuZGxlZCA9IGRpZFNjcm9sbEluU2Nyb2xsYWJsZUFyZWEoKmJveExheWVyLCB3aGVlbEV2ZW50
KTsKKyAgICAgICAgICAgICAgICBzY3JvbGxpbmdXYXNIYW5kbGVkID0gZGlkU2Nyb2xsSW5TY3Jv
bGxhYmxlQXJlYSgqYm94TGF5ZXIsIHdoZWVsRXZlbnQsIGJsb2NrZXIpOwogCiAgICAgICAgICAg
ICBpZiAoc2Nyb2xsaW5nV2FzSGFuZGxlZCkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KworICAgICAgICAgICAgaWYgKGN1cnJlbnRFbmNsb3NpbmdCb3gtPmVsZW1lbnQoKSAhPSBjdXJy
ZW50RW5jbG9zaW5nQm94LT5kb2N1bWVudCgpLmRvY3VtZW50RWxlbWVudCgpKSB7CisgICAgICAg
ICAgICAgICAgYm94TGF5ZXItPnVwZGF0ZVNjcm9sbENoYWluaW5nQmxvY2tlclN0YXRlKGJsb2Nr
ZXIpOworICAgICAgICAgICAgICAgIGlmIChTY3JvbGxDaGFpbmluZ0Jsb2NrZXI6OnNob3VsZEJs
b2NrU2Nyb2xsQ2hhaW5pbmcoYmxvY2tlciwgYmlhc2VkRGVsdGEpKQorICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIGN1
cnJlbnRFbmNsb3NpbmdCb3ggPSBjdXJyZW50RW5jbG9zaW5nQm94LT5jb250YWluaW5nQmxvY2so
KTsKQEAgLTMwNzQsNiArMzE1NSw3IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpkZWZhdWx0V2hlZWxF
dmVudEhhbmRsZXIoTm9kZSogc3RhcnROb2RlLCBXaGVlbEV2ZW50JiB3aGVlbEV2CiAgICAgaWYg
KCFtX2ZyYW1lLnBhZ2UoKS0+c2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyKCkubGF0Y2hpbmdBbGxv
d3NTY3JvbGxpbmdJbkZyYW1lKG1fZnJhbWUsIGxhdGNoZWRTY3JvbGxlcikpCiAgICAgICAgIHJl
dHVybjsKIAorICAgIFNjcm9sbENoYWluaW5nQmxvY2tlciBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIg
PSBtX2ZyYW1lLnBhZ2UoKS0+c2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyKCkuZ2V0U2Nyb2xsQ2hh
aW5pbmdCbG9ja2VyKG1fZnJhbWUpOwogICAgIGlmIChsYXRjaGVkU2Nyb2xsZXIpIHsKICAgICAg
ICAgaWYgKGxhdGNoZWRTY3JvbGxlciA9PSBtX2ZyYW1lLnZpZXcoKSkgewogICAgICAgICAgICAg
Ly8gRnJhbWVWaWV3IHNjcm9sbGluZyBpcyBoYW5kbGVkIHZpYSBwcm9jZXNzV2hlZWxFdmVudEZv
clNjcm9sbGluZygpLgpAQCAtMzA4Miw2ICszMTY0LDggQEAgdm9pZCBFdmVudEhhbmRsZXI6OmRl
ZmF1bHRXaGVlbEV2ZW50SGFuZGxlcihOb2RlKiBzdGFydE5vZGUsIFdoZWVsRXZlbnQmIHdoZWVs
RXYKIAogICAgICAgICBhdXRvIHBsYXRmb3JtRXZlbnQgPSB3aGVlbEV2ZW50LnVuZGVybHlpbmdQ
bGF0Zm9ybUV2ZW50KCk7CiAgICAgICAgIGlmIChwbGF0Zm9ybUV2ZW50KSB7CisgICAgICAgICAg
ICBhdXRvIGJpYXNlZERlbHRhID0gUGxhdGZvcm1XaGVlbEV2ZW50Ojp3aGVlbERlbHRhQmlhc2lu
Z1Rvd2FyZHNWZXJ0aWNhbChmaWx0ZXJlZFBsYXRmb3JtRGVsdGEpOworICAgICAgICAgICAgU2Ny
b2xsQ2hhaW5pbmdCbG9ja2VyOjpmaWx0ZXJEZWx0YShzY3JvbGxDaGFpbmluZ0Jsb2NrZXIsIGJp
YXNlZERlbHRhLCBmaWx0ZXJlZFBsYXRmb3JtRGVsdGEpOwogICAgICAgICAgICAgYXV0byBjb3Bp
ZWRFdmVudCA9IHBsYXRmb3JtRXZlbnQtPmNvcHlXaXRoRGVsdGFzQW5kVmVsb2NpdHkoZmlsdGVy
ZWRQbGF0Zm9ybURlbHRhLndpZHRoKCksIGZpbHRlcmVkUGxhdGZvcm1EZWx0YS5oZWlnaHQoKSwg
ZmlsdGVyZWRWZWxvY2l0eSk7CiAgICAgICAgICAgICBpZiAoaGFuZGxlV2hlZWxFdmVudEluU2Ny
b2xsYWJsZUFyZWEoY29waWVkRXZlbnQsICpsYXRjaGVkU2Nyb2xsZXIsIGV2ZW50SGFuZGxpbmcp
KQogICAgICAgICAgICAgICAgIHdoZWVsRXZlbnQuc2V0RGVmYXVsdEhhbmRsZWQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0V2ZW50SGFuZGxlci5oCmluZGV4IDFiMTc1ZGE3OTNjNmM1MTJkMTA0OTlmZTkxZjBm
NThjMTlhNzc5ZWEuLmRjMmZmYjZkNjhlZWNmNmZlZjk2YzMwZmQ3M2VjOGEwNTczNWYxZWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaApAQCAtNDY4LDcgKzQ2OCw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBwcm9jZXNzV2hlZWxFdmVudEZvclNjcm9sbFNuYXAoY29uc3QgUGxhdGZvcm1X
aGVlbEV2ZW50JiwgY29uc3QgV2Vha1B0cjxTY3JvbGxhYmxlQXJlYT4mKTsKICAgICBib29sIGNv
bXBsZXRlV2lkZ2V0V2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBjb25zdCBX
ZWFrUHRyPFdpZGdldD4mLCBjb25zdCBXZWFrUHRyPFNjcm9sbGFibGVBcmVhPiYpOwogCi0gICAg
Ym9vbCBoYW5kbGVXaGVlbEV2ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2luZ0JveChOb2RlKiBzdGFy
dE5vZGUsIGNvbnN0IFdoZWVsRXZlbnQmLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlcmVkUGxhdGZv
cm1EZWx0YSwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJlZFZlbG9jaXR5LCBPcHRpb25TZXQ8RXZl
bnRIYW5kbGluZz4pOworICAgIGJvb2wgaGFuZGxlV2hlZWxFdmVudEluQXBwcm9wcmlhdGVFbmNs
b3NpbmdCb3goTm9kZSogc3RhcnROb2RlLCBjb25zdCBXaGVlbEV2ZW50JiwgRmxvYXRTaXplJiBm
aWx0ZXJlZFBsYXRmb3JtRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyZWRWZWxvY2l0eSwg
T3B0aW9uU2V0PEV2ZW50SGFuZGxpbmc+KTsKIAogICAgIGJvb2wgaGFuZGxlV2hlZWxFdmVudElu
U2Nyb2xsYWJsZUFyZWEoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgU2Nyb2xsYWJsZUFyZWEm
LCBPcHRpb25TZXQ8RXZlbnRIYW5kbGluZz4pOwogICAgIE9wdGlvbmFsPFdoZWVsU2Nyb2xsR2Vz
dHVyZVN0YXRlPiB1cGRhdGVXaGVlbEdlc3R1cmVTdGF0ZShjb25zdCBQbGF0Zm9ybVdoZWVsRXZl
bnQmLCBPcHRpb25TZXQ8RXZlbnRIYW5kbGluZz4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3Bw
CmluZGV4IDQ3MGRkYzhmYTIyYzk5YmNkYTRjODdiOTc1OTU5YjFiODE5NGFlOTguLjQ5YWY4NDcy
Y2UxZjhmMzgxY2Y5MTcwMmIzZTZkMTExNDU0YWRkODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5jcHAKQEAgLTQxOCw2ICs0MTgsMjYgQEAgYm9vbCBGcmFtZVZpZXc6OmRpZEZpcnN0TGF5b3V0
KCkgY29uc3QKICAgICByZXR1cm4gbGF5b3V0Q29udGV4dCgpLmRpZEZpcnN0TGF5b3V0KCk7CiB9
CiAKK092ZXJzY3JvbGxCZWhhdmlvciBGcmFtZVZpZXc6Omhvcml6b250YWxPdmVyc2Nyb2xsQmVo
YXZpb3IoKSBjb25zdAoreworICAgIGF1dG8qIGRvY3VtZW50ID0gZnJhbWUoKS5kb2N1bWVudCgp
OworICAgIGF1dG8gc2Nyb2xsaW5nT2JqZWN0ID0gZG9jdW1lbnQgJiYgZG9jdW1lbnQtPmRvY3Vt
ZW50RWxlbWVudCgpID8gZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpLT5yZW5kZXJlcigpIDog
bnVsbHB0cjsKKyAgICAvLyBBbiBlbGVtZW50IHRoYXQgaXMgbm90IHNjcm9sbCBjb250YWluZXIg
bXVzdCBhY2NlcHQgYnV0IGlnbm9yZSB0aGUgdmFsdWVzIG9mIHRoaXMgcHJvcGVydHkuCisgICAg
aWYgKHNjcm9sbGluZ09iamVjdCAmJiByZW5kZXJWaWV3KCkgJiYgcmVuZGVyVmlldygpLT5jYW5C
ZVNjcm9sbGVkQW5kSGFzU2Nyb2xsYWJsZUFyZWEoKSkKKyAgICAgICAgcmV0dXJuIHNjcm9sbGlu
Z09iamVjdC0+c3R5bGUoKS5vdmVyc2Nyb2xsQmVoYXZpb3JYKCk7CisgICAgcmV0dXJuIFNjcm9s
bGFibGVBcmVhOjpob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCk7Cit9CisKK092ZXJzY3Jv
bGxCZWhhdmlvciBGcmFtZVZpZXc6OnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgIGNvbnN0
Cit7CisgICAgYXV0byogZG9jdW1lbnQgPSBmcmFtZSgpLmRvY3VtZW50KCk7CisgICAgYXV0byBz
Y3JvbGxpbmdPYmplY3QgPSBkb2N1bWVudCAmJiBkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCkg
PyBkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCktPnJlbmRlcmVyKCkgOiBudWxscHRyOworICAg
IC8vIEFuIGVsZW1lbnQgdGhhdCBpcyBub3Qgc2Nyb2xsIGNvbnRhaW5lciBtdXN0IGFjY2VwdCBi
dXQgaWdub3JlIHRoZSB2YWx1ZXMgb2YgdGhpcyBwcm9wZXJ0eS4KKyAgICBpZiAoc2Nyb2xsaW5n
T2JqZWN0ICYmIHJlbmRlclZpZXcoKSAmJiByZW5kZXJWaWV3KCktPmNhbkJlU2Nyb2xsZWRBbmRI
YXNTY3JvbGxhYmxlQXJlYSgpKQorICAgICAgICByZXR1cm4gc2Nyb2xsaW5nT2JqZWN0LT5zdHls
ZSgpLm92ZXJzY3JvbGxCZWhhdmlvclkoKTsKKyAgICByZXR1cm4gU2Nyb2xsYWJsZUFyZWE6OnZl
cnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCk7Cit9CisKIHZvaWQgRnJhbWVWaWV3OjppbnZhbGlk
YXRlUmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIGlmICghcGFyZW50KCkpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5oCmluZGV4IGJkZmUyNzg0OWYyOTYxYzZkZGU1ZTlmZjhkZGI1MTAy
MTVmMzE3MjcuLjQ2MDU2MDdkZTE4ZmZjY2QyYjMzNTY1ODZiMTBlMDZlMDAyNWVhODEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVZpZXcuaApAQCAtNjgwLDYgKzY4MCw5IEBAIHB1YmxpYzoKIAogICAgIFN0
cmluZyBkZWJ1Z0Rlc2NyaXB0aW9uKCkgY29uc3QgZmluYWw7CiAKKyAgICBPdmVyc2Nyb2xsQmVo
YXZpb3IgaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpIGNvbnN0IGZpbmFsOworICAgIE92
ZXJzY3JvbGxCZWhhdmlvciB2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpIGNvbnN0IGZpbmFs
OworCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEZyYW1lVmlldyhGcmFtZSYpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0KaW5kZXggZjY0OGQ2ZTIyYjE3NmIz
OTcyMjZiZjY5OTRjYzZiODRkMDIyZThmYy4uZGZkNzM1NjBjMGJlYTgxNTYxMzM3ZmViZWMyZTRl
NTM2YmM3NWM4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5k
bGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5t
bQpAQCAtNzk0LDEwICs3OTQsMTYgQEAgc3RhdGljIFNjcm9sbGFibGVBcmVhKiBzY3JvbGxhYmxl
QXJlYUZvckJveChSZW5kZXJCb3gmIGJveCkKICAgICByZXR1cm4gYm94LmxheWVyKCk7CiB9CiAK
K3N0YXRpYyBib29sIHNob3VsZE92ZXJzY3JvbGxCZWhhdmlvckJsb2NrU2Nyb2xsQ2hhaW5pbmco
Y29uc3QgU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhLCBjb25zdCBGbG9hdFNpemUmIGJp
YXNlZERlbHRhLCBTY3JvbGxDaGFpbmluZ0Jsb2NrZXImIGJsb2NrZXIpCit7CisgICAgc2Nyb2xs
YWJsZUFyZWEudXBkYXRlU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyU3RhdGUoYmxvY2tlcik7CisgICAg
cmV0dXJuIFNjcm9sbENoYWluaW5nQmxvY2tlcjo6c2hvdWxkQmxvY2tTY3JvbGxDaGFpbmluZyhi
bG9ja2VyLCBiaWFzZWREZWx0YSk7Cit9CisKIC8vIEZJWE1FOiBUaGlzIGNvdWxkIGJlIHdyaXR0
ZW4gaW4gdGVybXMgb2YgU2Nyb2xsYWJsZUFyZWE6OmVuY2xvc2luZ1Njcm9sbGFibGVBcmVhKCku
Ci1zdGF0aWMgQ29udGFpbmVyTm9kZSogZmluZEVuY2xvc2luZ1Njcm9sbGFibGVDb250YWluZXIo
Q29udGFpbmVyTm9kZSogbm9kZSwgY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50
KQorc3RhdGljIENvbnRhaW5lck5vZGUqIGZpbmRFbmNsb3NpbmdTY3JvbGxhYmxlQ29udGFpbmVy
KENvbnRhaW5lck5vZGUqIG5vZGUsIGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVu
dCwgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyJiBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIpCiB7Ci0gICAg
YXV0byBiaWFzZWREZWx0YSA9IFNjcm9sbENvbnRyb2xsZXI6OndoZWVsRGVsdGFCaWFzaW5nVG93
YXJkc1ZlcnRpY2FsKHdoZWVsRXZlbnQpOworICAgIGF1dG8gYmlhc2VkRGVsdGEgPSBQbGF0Zm9y
bVdoZWVsRXZlbnQ6OndoZWVsRGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRpY2FsKHdoZWVsRXZlbnQu
ZGVsdGEoKSk7CiAKICAgICAvLyBGaW5kIHRoZSBmaXJzdCBub2RlIHdpdGggYSB2YWxpZCBzY3Jv
bGxhYmxlIGFyZWEgc3RhcnRpbmcgd2l0aCB0aGUgY3VycmVudAogICAgIC8vIG5vZGUgYW5kIHRy
YXZlcnNpbmcgaXRzIHBhcmVudHMgKG9yIHNoYWRvdyBob3N0cykuCkBAIC04MTEsNyArODE3LDcg
QEAgc3RhdGljIENvbnRhaW5lck5vZGUqIGZpbmRFbmNsb3NpbmdTY3JvbGxhYmxlQ29udGFpbmVy
KENvbnRhaW5lck5vZGUqIG5vZGUsIGNvbnMKICAgICAgICAgUmVuZGVyQm94KiBib3ggPSBjYW5k
aWRhdGUtPnJlbmRlckJveCgpOwogICAgICAgICBpZiAoIWJveCB8fCAhYm94LT5jYW5CZVNjcm9s
bGVkQW5kSGFzU2Nyb2xsYWJsZUFyZWEoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICAKKwogICAgICAgICBhdXRvKiBzY3JvbGxhYmxlQXJlYSA9IHNjcm9sbGFibGVBcmVhRm9yQm94
KCpib3gpOwogICAgICAgICBpZiAoIXNjcm9sbGFibGVBcmVhKQogICAgICAgICAgICAgY29udGlu
dWU7CkBAIC04MjQsOCArODMwLDEyIEBAIHN0YXRpYyBDb250YWluZXJOb2RlKiBmaW5kRW5jbG9z
aW5nU2Nyb2xsYWJsZUNvbnRhaW5lcihDb250YWluZXJOb2RlKiBub2RlLCBjb25zCiAKICAgICAg
ICAgaWYgKGJpYXNlZERlbHRhLndpZHRoKCkgJiYgIXNjcm9sbGFibGVBcmVhLT5pc1Bpbm5lZEZv
clNjcm9sbERlbHRhT25BeGlzKC1iaWFzZWREZWx0YS53aWR0aCgpLCBTY3JvbGxFdmVudEF4aXM6
Okhvcml6b250YWwpKQogICAgICAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZTsKKworICAgICAgICAv
LyBMZXQgRnJhbWVWaWV3Ojpob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yIGRlY2lkZSB3aGlj
aCBub2RlJ3Mgb3ZlcnNjcm9sbC1iYWh2aW9yIGlzIGVmZmVjdGl2ZSB0byBGcmFtZVZpZXcuCisg
ICAgICAgIGlmIChjYW5kaWRhdGUgIT0gY2FuZGlkYXRlLT5kb2N1bWVudCgpLmJvZHkoKSAmJiBz
aG91bGRPdmVyc2Nyb2xsQmVoYXZpb3JCbG9ja1Njcm9sbENoYWluaW5nKCpzY3JvbGxhYmxlQXJl
YSwgYmlhc2VkRGVsdGEsIHNjcm9sbENoYWluaW5nQmxvY2tlcikpCisgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgCisKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAt
ODcwLDEwICs4ODAsMTEgQEAgdm9pZCBFdmVudEhhbmRsZXI6OmRldGVybWluZVdoZWVsRXZlbnRU
YXJnZXQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW4KICAgICBpZiAoIXZpZXcp
CiAgICAgICAgIHJldHVybjsKIAorICAgIFNjcm9sbENoYWluaW5nQmxvY2tlciBzY3JvbGxDaGFp
bmluZ0Jsb2NrZXI7CiAgICAgaWYgKGV2ZW50VGFyZ2V0SXNQbGF0Zm9ybVdpZGdldCh3aGVlbEV2
ZW50VGFyZ2V0LmdldCgpKSkKICAgICAgICAgc2Nyb2xsYWJsZUFyZWEgPSBzY3JvbGxhYmxlQXJl
YUZvckV2ZW50VGFyZ2V0KHdoZWVsRXZlbnRUYXJnZXQuZ2V0KCkpOwogICAgIGVsc2UgewotICAg
ICAgICBhdXRvKiBzY3JvbGxhYmxlQ29udGFpbmVyID0gZmluZEVuY2xvc2luZ1Njcm9sbGFibGVD
b250YWluZXIod2hlZWxFdmVudFRhcmdldC5nZXQoKSwgd2hlZWxFdmVudCk7CisgICAgICAgIGF1
dG8qIHNjcm9sbGFibGVDb250YWluZXIgPSBmaW5kRW5jbG9zaW5nU2Nyb2xsYWJsZUNvbnRhaW5l
cih3aGVlbEV2ZW50VGFyZ2V0LmdldCgpLCB3aGVlbEV2ZW50LCBzY3JvbGxDaGFpbmluZ0Jsb2Nr
ZXIpOwogICAgICAgICBpZiAoc2Nyb2xsYWJsZUNvbnRhaW5lcikKICAgICAgICAgICAgIHNjcm9s
bGFibGVBcmVhID0gc2Nyb2xsYWJsZUFyZWFGb3JDb250YWluZXJOb2RlKCpzY3JvbGxhYmxlQ29u
dGFpbmVyKTsKICAgICAgICAgZWxzZQpAQCAtODkxLDcgKzkwMiw3IEBAIHZvaWQgRXZlbnRIYW5k
bGVyOjpkZXRlcm1pbmVXaGVlbEV2ZW50VGFyZ2V0KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYg
d2hlZWxFdmVuCiAgICAgaWYgKG1fZnJhbWUuaXNNYWluRnJhbWUoKSAmJiB3aGVlbEV2ZW50Lmlz
R2VzdHVyZVN0YXJ0KCkpCiAgICAgICAgIHBhZ2UtPndoZWVsRXZlbnREZWx0YUZpbHRlcigpLT5i
ZWdpbkZpbHRlcmluZ0RlbHRhcygpOwogCi0gICAgcGFnZS0+c2Nyb2xsTGF0Y2hpbmdDb250cm9s
bGVyKCkudXBkYXRlQW5kRmV0Y2hMYXRjaGluZ1N0YXRlRm9yRnJhbWUobV9mcmFtZSwgd2hlZWxF
dmVudCwgd2hlZWxFdmVudFRhcmdldCwgc2Nyb2xsYWJsZUFyZWEsIGlzT3ZlcldpZGdldCk7Cisg
ICAgcGFnZS0+c2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyKCkudXBkYXRlQW5kRmV0Y2hMYXRjaGlu
Z1N0YXRlRm9yRnJhbWUobV9mcmFtZSwgd2hlZWxFdmVudCwgd2hlZWxFdmVudFRhcmdldCwgc2Ny
b2xsYWJsZUFyZWEsIHNjcm9sbENoYWluaW5nQmxvY2tlciwgaXNPdmVyV2lkZ2V0KTsKIH0KIAog
dm9pZCBFdmVudEhhbmRsZXI6OnJlY29yZFdoZWVsRXZlbnRGb3JEZWx0YUZpbHRlcihjb25zdCBQ
bGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCmluZGV4
IDcwZWEwMzZmODNjOWVmMjk0OThkOThkMDFkYWVmMzRmYzM5MGE3OTMuLjVlYjJjMjVjMjEyZTQ0
ZjVlY2VlZWNjMjJhZTQ5MjA5YzcxYzYwMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCkBAIC02
OTcsNiArNjk3LDggQEAgdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRTY3JvbGxp
bmdOb2RlU2Nyb2xsYWJsZUFyZWFHZW9tZXRyeShTY3JvbGxpbmcKICAgICBzY3JvbGxpbmdOb2Rl
LnNldFNjcm9sbGFibGVBcmVhU2l6ZShzY3JvbGxhYmxlQXJlYS52aXNpYmxlU2l6ZSgpKTsKIAog
ICAgIFNjcm9sbGFibGVBcmVhUGFyYW1ldGVycyBzY3JvbGxQYXJhbWV0ZXJzOworICAgIHNjcm9s
bFBhcmFtZXRlcnMuaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvciA9IHNjcm9sbGFibGVBcmVh
Lmhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKTsKKyAgICBzY3JvbGxQYXJhbWV0ZXJzLnZl
cnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yID0gc2Nyb2xsYWJsZUFyZWEudmVydGljYWxPdmVyc2Ny
b2xsQmVoYXZpb3IoKTsKICAgICBzY3JvbGxQYXJhbWV0ZXJzLmhvcml6b250YWxTY3JvbGxFbGFz
dGljaXR5ID0gc2Nyb2xsYWJsZUFyZWEuaG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkoKTsKICAg
ICBzY3JvbGxQYXJhbWV0ZXJzLnZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eSA9IHNjcm9sbGFibGVB
cmVhLnZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eSgpOwogICAgIHNjcm9sbFBhcmFtZXRlcnMuYWxs
b3dzSG9yaXpvbnRhbFNjcm9sbGluZyA9IHNjcm9sbGFibGVBcmVhLmFsbG93c0hvcml6b250YWxT
Y3JvbGxpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbExhdGNoaW5nQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9TY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIuY3BwCmluZGV4IDRlZDRkOTc1YTdlYTQ1MDA5N2Zj
YmI0ZGU5YTJlMDMyMWM2YTY3N2IuLmJhMDAxMWQzMWIzNzg1NTEyYjQ1NDI5MDI5OWE1ZWFjMDFm
ZWIwZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbExh
dGNoaW5nQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyLmNwcApAQCAtMTA4LDcgKzEwOCw3IEBAIGJvb2wgU2Ny
b2xsTGF0Y2hpbmdDb250cm9sbGVyOjpsYXRjaGluZ0FsbG93c1Njcm9sbGluZ0luRnJhbWUoY29u
c3QgRnJhbWUmIGZyYW1lCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFNjcm9sbExhdGNo
aW5nQ29udHJvbGxlcjo6dXBkYXRlQW5kRmV0Y2hMYXRjaGluZ1N0YXRlRm9yRnJhbWUoRnJhbWUm
IGZyYW1lLCBjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIFJlZlB0cjxFbGVt
ZW50PiYgbGF0Y2hlZEVsZW1lbnQsIFdlYWtQdHI8U2Nyb2xsYWJsZUFyZWE+JiBzY3JvbGxhYmxl
QXJlYSwgYm9vbCYgaXNPdmVyV2lkZ2V0KQordm9pZCBTY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXI6
OnVwZGF0ZUFuZEZldGNoTGF0Y2hpbmdTdGF0ZUZvckZyYW1lKEZyYW1lJiBmcmFtZSwgY29uc3Qg
UGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBSZWZQdHI8RWxlbWVudD4mIGxhdGNoZWRF
bGVtZW50LCBXZWFrUHRyPFNjcm9sbGFibGVBcmVhPiYgc2Nyb2xsYWJsZUFyZWEsIFNjcm9sbENo
YWluaW5nQmxvY2tlciYgc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLCBib29sJiBpc092ZXJXaWRnZXQp
CiB7CiAgICAgaWYgKHdoZWVsRXZlbnQuaXNHZXN0dXJlU3RhcnQoKSkgewogICAgICAgICAvLyBX
ZSBjYW4gaGF2ZSBleGlzdGluZyBzdGF0ZSBoZXJlIGJlY2F1c2Ugc3RhdGUgaXMgY2xlYXJlZCBv
biBhIHRpbWVyLgpAQCAtMTE4LDYgKzExOCw3IEBAIHZvaWQgU2Nyb2xsTGF0Y2hpbmdDb250cm9s
bGVyOjp1cGRhdGVBbmRGZXRjaExhdGNoaW5nU3RhdGVGb3JGcmFtZShGcmFtZSYgZnJhbWUsCiAg
ICAgICAgICAgICBzdGF0ZS53aGVlbEV2ZW50RWxlbWVudCA9IG1ha2VXZWFrUHRyKGxhdGNoZWRF
bGVtZW50LmdldCgpKTsKICAgICAgICAgICAgIGlmIChzaG91bGRMYXRjaFRvU2Nyb2xsYWJsZUFy
ZWEoZnJhbWUsIHNjcm9sbGFibGVBcmVhLmdldCgpLCBtX2N1bXVsYXRpdmVFdmVudERlbHRhKSkK
ICAgICAgICAgICAgICAgICBzdGF0ZS5zY3JvbGxhYmxlQXJlYSA9IHNjcm9sbGFibGVBcmVhOwor
ICAgICAgICAgICAgc3RhdGUuc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyID0gc2Nyb2xsQ2hhaW5pbmdC
bG9ja2VyOwogICAgICAgICAgICAgc3RhdGUuaXNPdmVyV2lkZ2V0ID0gaXNPdmVyV2lkZ2V0Owog
CiAgICAgICAgICAgICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xsTGF0Y2hpbmcsIHN0cmVhbSA8PCAi
U2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyOjp1cGRhdGVBbmRGZXRjaExhdGNoaW5nU3RhdGVGb3JG
cmFtZSgpIC0gcHVzaGluZyBzdGF0ZSBmb3IgRnJhbWUgIiA8PCAmZnJhbWUgPDwgIiBlbGVtZW50
ICIgPDwgc3RhdGUud2hlZWxFdmVudEVsZW1lbnQuZ2V0KCkgPDwgIiBzY3JvbGxhYmxlQXJlYSAi
IDw8IHN0YXRlLnNjcm9sbGFibGVBcmVhKTsKQEAgLTEzMiw4ICsxMzMsMTAgQEAgdm9pZCBTY3Jv
bGxMYXRjaGluZ0NvbnRyb2xsZXI6OnVwZGF0ZUFuZEZldGNoTGF0Y2hpbmdTdGF0ZUZvckZyYW1l
KEZyYW1lJiBmcmFtZSwKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAvLyBXZSBtYXkg
bm90IGhhdmUgbGF0Y2hlZCBhdCBnZXN0dXJlIHN0YXJ0IGJlY2F1c2Ugb2Ygc21hbGwgZGVsdGFz
LiBSZS1ldmFsdWF0ZSBsYXRjaGluZyBiYXNlZCBvbiBhY2N1bXVsYXRlZCBkZWx0YS4KLSAgICAg
ICAgaWYgKCFzdGF0ZS0+c2Nyb2xsYWJsZUFyZWEgJiYgc2hvdWxkTGF0Y2hUb1Njcm9sbGFibGVB
cmVhKGZyYW1lLCBzY3JvbGxhYmxlQXJlYS5nZXQoKSwgbV9jdW11bGF0aXZlRXZlbnREZWx0YSkp
CisgICAgICAgIGlmICghc3RhdGUtPnNjcm9sbGFibGVBcmVhICYmIHNob3VsZExhdGNoVG9TY3Jv
bGxhYmxlQXJlYShmcmFtZSwgc2Nyb2xsYWJsZUFyZWEuZ2V0KCksIG1fY3VtdWxhdGl2ZUV2ZW50
RGVsdGEpKSB7CiAgICAgICAgICAgICBzdGF0ZS0+c2Nyb2xsYWJsZUFyZWEgPSBzY3JvbGxhYmxl
QXJlYTsKKyAgICAgICAgICAgIHN0YXRlLT5zY3JvbGxDaGFpbmluZ0Jsb2NrZXIgPSBzY3JvbGxD
aGFpbmluZ0Jsb2NrZXI7CisgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoIXdoZWVsRXZlbnQu
dXNlTGF0Y2hlZEV2ZW50RWxlbWVudCgpKQpAQCAtMTQ0LDEyICsxNDcsMzQgQEAgdm9pZCBTY3Jv
bGxMYXRjaGluZ0NvbnRyb2xsZXI6OnVwZGF0ZUFuZEZldGNoTGF0Y2hpbmdTdGF0ZUZvckZyYW1l
KEZyYW1lJiBmcmFtZSwKICAgICAgICAgICAgIGxhdGNoZWRFbGVtZW50ID0gc3RhdGUud2hlZWxF
dmVudEVsZW1lbnQuZ2V0KCk7CiAgICAgICAgICAgICBzY3JvbGxhYmxlQXJlYSA9IHN0YXRlLnNj
cm9sbGFibGVBcmVhOwogICAgICAgICAgICAgaXNPdmVyV2lkZ2V0ID0gc3RhdGUuaXNPdmVyV2lk
Z2V0OworICAgICAgICAgICAgc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyID0gc3RhdGUuc2Nyb2xsQ2hh
aW5pbmdCbG9ja2VyOwogCiAgICAgICAgICAgICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xsTGF0Y2hp
bmcsIHN0cmVhbSA8PCAiU2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyOjp1cGRhdGVBbmRGZXRjaExh
dGNoaW5nU3RhdGVGb3JGcmFtZSgpIC0gdXNpbmcgc3RhdGUgZm9yIEZyYW1lICIgPDwgJmZyYW1l
IDw8ICIgZWxlbWVudCAiIDw8IGxhdGNoZWRFbGVtZW50LmdldCgpIDw8ICIgc2Nyb2xsYWJsZUFy
ZWEgIiA8PCBzY3JvbGxhYmxlQXJlYSk7CiAgICAgICAgIH0KICAgICB9CiB9CiAKK1Njcm9sbENo
YWluaW5nQmxvY2tlciBTY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXI6OmdldFNjcm9sbENoYWluaW5n
QmxvY2tlcihjb25zdCBGcmFtZSYgZnJhbWUpIGNvbnN0Cit7CisgICAgaWYgKCFtX2ZyYW1lU3Rh
dGVTdGFjay5pc0VtcHR5KCkpIHsKKyAgICAgICAgYXV0byogZnJhbWVTdGF0ZSA9IHN0YXRlRm9y
RnJhbWUoZnJhbWUpOworICAgICAgICBpZiAoZnJhbWVTdGF0ZSkKKyAgICAgICAgICAgIHJldHVy
biBmcmFtZVN0YXRlLT5zY3JvbGxDaGFpbmluZ0Jsb2NrZXI7CisgICAgfQorCisgICAgcmV0dXJu
IHsgZmFsc2UsIGZhbHNlIH07Cit9CisKK3ZvaWQgU2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyOjp1
cGRhdGVTY3JvbGxDaGFpbmluZ0Jsb2NrZXIoY29uc3QgRnJhbWUmIGZyYW1lLCBjb25zdCBTY3Jv
bGxDaGFpbmluZ0Jsb2NrZXImIHNjcm9sbENoYWluaW5nQmxvY2tlckZyb21TdWJmcmFtZSkKK3sK
KyAgICBpZiAobV9mcmFtZVN0YXRlU3RhY2suaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47Cisg
ICAgaWYgKGF1dG8qIGZyYW1lU3RhdGUgPSBzdGF0ZUZvckZyYW1lKGZyYW1lKSkgeworICAgICAg
ICBmcmFtZVN0YXRlLT5zY3JvbGxDaGFpbmluZ0Jsb2NrZXIuYmxvY2tYIHw9IHNjcm9sbENoYWlu
aW5nQmxvY2tlckZyb21TdWJmcmFtZS5ibG9ja1g7CisgICAgICAgIGZyYW1lU3RhdGUtPnNjcm9s
bENoYWluaW5nQmxvY2tlci5ibG9ja1kgfD0gc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyRnJvbVN1YmZy
YW1lLmJsb2NrWTsKKyAgICB9Cit9CisKIHZvaWQgU2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyOjpy
ZW1vdmVMYXRjaGluZ1N0YXRlRm9yVGFyZ2V0KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCiB7CiAg
ICAgaWYgKG1fZnJhbWVTdGF0ZVN0YWNrLmlzRW1wdHkoKSkKQEAgLTI1Miw2ICsyNzcsOCBAQCB2
b2lkIFNjcm9sbExhdGNoaW5nQ29udHJvbGxlcjo6ZHVtcChXVEY6OlRleHRTdHJlYW0mIHRzKSBj
b25zdAogICAgICAgICBtdWx0aWxpbmVTdHJlYW0uZHVtcFByb3BlcnR5KCJmcmFtZSIsIFZhbHVl
T3JOdWxsKHN0YXRlLmZyYW1lKSk7CiAgICAgICAgIG11bHRpbGluZVN0cmVhbS5kdW1wUHJvcGVy
dHkoImVsZW1lbnQiLCBWYWx1ZU9yTnVsbChzdGF0ZS53aGVlbEV2ZW50RWxlbWVudC5nZXQoKSkp
OwogICAgICAgICBtdWx0aWxpbmVTdHJlYW0uZHVtcFByb3BlcnR5KCJzY3JvbGxhYmxlIGFyZWEi
LCBWYWx1ZU9yTnVsbChzdGF0ZS5zY3JvbGxhYmxlQXJlYS5nZXQoKSkpOworICAgICAgICBtdWx0
aWxpbmVTdHJlYW0uZHVtcFByb3BlcnR5KCJzdGF0ZS5zY3JvbGxDaGFpbmluZ0Jsb2NrZXIuYmxv
Y2tYIiwgc3RhdGUuc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLmJsb2NrWCk7CisgICAgICAgIG11bHRp
bGluZVN0cmVhbS5kdW1wUHJvcGVydHkoInN0YXRlLnNjcm9sbENoYWluaW5nQmxvY2tlci5ibG9j
a1kiLCBzdGF0ZS5zY3JvbGxDaGFpbmluZ0Jsb2NrZXIuYmxvY2tZKTsKICAgICAgICAgbXVsdGls
aW5lU3RyZWFtLmR1bXBQcm9wZXJ0eSgiaXMgb3ZlciB3aWRnZXQiLCBzdGF0ZS5pc092ZXJXaWRn
ZXQpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9TY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIuaAppbmRleCA1NjQ5NjE1OWM1ZTY4ZDJiY2NlZjhj
MjY1ZWU2MWNjYjlkZmI0YjI4Li44ZmQ4ZTMwYzZhMTY1ZDk5OThkNDExZDI4YmJmZmQzMmVlZjIz
NjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxMYXRj
aGluZ0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxMYXRjaGluZ0NvbnRyb2xsZXIuaApAQCAtNjEsNyArNjEsMTAgQEAgcHVibGljOgogICAgIC8v
IFJldHVybnMgdHJ1ZSBpZiBubyBmcmFtZSBpcyBsYXRjaGVkLCBvciBsYXRjaGluZyBpcyBpbiB0
aGUgZ2l2ZW4gZnJhbWUgKGluIHdoaWNoIGNhc2UgbGF0Y2hlZFNjcm9sbGVyIHdpbGwgYmUgbm9u
LW51bGwpLgogICAgIGJvb2wgbGF0Y2hpbmdBbGxvd3NTY3JvbGxpbmdJbkZyYW1lKGNvbnN0IEZy
YW1lJiwgV2Vha1B0cjxTY3JvbGxhYmxlQXJlYT4mIGxhdGNoZWRTY3JvbGxlcikgY29uc3Q7CiAK
LSAgICB2b2lkIHVwZGF0ZUFuZEZldGNoTGF0Y2hpbmdTdGF0ZUZvckZyYW1lKEZyYW1lJiwgY29u
c3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgUmVmUHRyPEVsZW1lbnQ+JiBsYXRjaGVkRWxlbWVudCwg
V2Vha1B0cjxTY3JvbGxhYmxlQXJlYT4mLCBib29sJiBpc092ZXJXaWRnZXQpOworICAgIHZvaWQg
dXBkYXRlQW5kRmV0Y2hMYXRjaGluZ1N0YXRlRm9yRnJhbWUoRnJhbWUmLCBjb25zdCBQbGF0Zm9y
bVdoZWVsRXZlbnQmLCBSZWZQdHI8RWxlbWVudD4mIGxhdGNoZWRFbGVtZW50LCBXZWFrUHRyPFNj
cm9sbGFibGVBcmVhPiYsIFNjcm9sbENoYWluaW5nQmxvY2tlciYsIGJvb2wmIGlzT3ZlcldpZGdl
dCk7CisKKyAgICBTY3JvbGxDaGFpbmluZ0Jsb2NrZXIgZ2V0U2Nyb2xsQ2hhaW5pbmdCbG9ja2Vy
KGNvbnN0IEZyYW1lJikgY29uc3Q7CisgICAgdm9pZCB1cGRhdGVTY3JvbGxDaGFpbmluZ0Jsb2Nr
ZXIoY29uc3QgRnJhbWUmLCBjb25zdCBTY3JvbGxDaGFpbmluZ0Jsb2NrZXImIFNjcm9sbENoYWlu
aW5nQmxvY2tlckZyb21TdWJmcmFtZSk7CiAKICAgICB2b2lkIHJlbW92ZUxhdGNoaW5nU3RhdGVG
b3JUYXJnZXQoY29uc3QgRWxlbWVudCYpOwogICAgIHZvaWQgcmVtb3ZlTGF0Y2hpbmdTdGF0ZUZv
ckZyYW1lKGNvbnN0IEZyYW1lJik7CkBAIC03Myw2ICs3Niw3IEBAIHByaXZhdGU6CiAgICAgICAg
IFdlYWtQdHI8RWxlbWVudD4gd2hlZWxFdmVudEVsZW1lbnQ7CiAgICAgICAgIFdlYWtQdHI8U2Ny
b2xsYWJsZUFyZWE+IHNjcm9sbGFibGVBcmVhOwogICAgICAgICBGcmFtZSogZnJhbWUgeyBudWxs
cHRyIH07CisgICAgICAgIFNjcm9sbENoYWluaW5nQmxvY2tlciBzY3JvbGxDaGFpbmluZ0Jsb2Nr
ZXI7CiAgICAgICAgIGJvb2wgaXNPdmVyV2lkZ2V0IHsgZmFsc2UgfTsKICAgICB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRv
clR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGlu
YXRvclR5cGVzLmgKaW5kZXggZWVjYWI2ZjU1YjY1YzQ2MDE5OWY4MGVmMDUwNjU1MmI3MWYzMDgw
My4uNTY3NGRjYWU2YzQzMmNhNDZhMDI4MzVkZDAwYWQ3NDAxM2NlNmFhMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3JUeXBlcy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9y
VHlwZXMuaApAQCAtNjgsNiArNjgsOSBAQCBlbnVtIGNsYXNzIFNjcm9sbGluZ0xheWVyUG9zaXRp
b25BY3Rpb24gewogfTsKIAogc3RydWN0IFNjcm9sbGFibGVBcmVhUGFyYW1ldGVycyB7CisgICAg
T3ZlcnNjcm9sbEJlaGF2aW9yIGhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IgeyBPdmVyc2Ny
b2xsQmVoYXZpb3I6OiBBdXRvIH07CisgICAgT3ZlcnNjcm9sbEJlaGF2aW9yIHZlcnRpY2FsT3Zl
cnNjcm9sbEJlaGF2aW9yIHsgT3ZlcnNjcm9sbEJlaGF2aW9yOjogQXV0byB9OworCiAgICAgU2Ny
b2xsRWxhc3RpY2l0eSBob3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eSB7IFNjcm9sbEVsYXN0aWNp
dHlOb25lIH07CiAgICAgU2Nyb2xsRWxhc3RpY2l0eSB2ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkg
eyBTY3JvbGxFbGFzdGljaXR5Tm9uZSB9OwogCkBAIC04NCw3ICs4Nyw5IEBAIHN0cnVjdCBTY3Jv
bGxhYmxlQXJlYVBhcmFtZXRlcnMgewogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNjcm9s
bGFibGVBcmVhUGFyYW1ldGVycyYgb3RoZXIpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4g
aG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkgPT0gb3RoZXIuaG9yaXpvbnRhbFNjcm9sbEVsYXN0
aWNpdHkKKyAgICAgICAgcmV0dXJuIGhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IgPT0gb3Ro
ZXIuaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcgorICAgICAgICAgICAgJiYgdmVydGljYWxP
dmVyc2Nyb2xsQmVoYXZpb3IgPT0gb3RoZXIudmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IKKyAg
ICAgICAgICAgICYmIGhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5ID09IG90aGVyLmhvcml6b250
YWxTY3JvbGxFbGFzdGljaXR5CiAgICAgICAgICAgICAmJiB2ZXJ0aWNhbFNjcm9sbEVsYXN0aWNp
dHkgPT0gb3RoZXIudmVydGljYWxTY3JvbGxFbGFzdGljaXR5CiAgICAgICAgICAgICAmJiBob3Jp
em9udGFsU2Nyb2xsYmFyTW9kZSA9PSBvdGhlci5ob3Jpem9udGFsU2Nyb2xsYmFyTW9kZQogICAg
ICAgICAgICAgJiYgdmVydGljYWxTY3JvbGxiYXJNb2RlID09IG90aGVyLnZlcnRpY2FsU2Nyb2xs
YmFyTW9kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nVHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVl
LmNwcAppbmRleCAxY2VmMzFiYjM2NjUxNmQzYjRhOGNlODFmYzE5ZGZhYjZlOTJhMGQ1Li5mYmNl
M2RiYjM3NGVlOGRkZWJhNDZhYTk0YjE2MjdkZWUwNjM0ODQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcApAQCAtMTc0LDIxICsxNzQsNTkg
QEAgV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0IFNjcm9sbGluZ1RyZWU6OmhhbmRsZVdoZWVsRXZl
bnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW4KICAgICByZXR1cm4gcmVzdWx0OwogfQogCitib29s
IFNjcm9sbGluZ1RyZWU6OnNob3VsZEJsb2NrU2Nyb2xsQ2hhaW5pbmdXaXRoTm9kZShjb25zdCBT
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZSYgc2Nyb2xsaW5nTm9kZSwgUGxhdGZvcm1XaGVlbEV2
ZW50JiB3aGVlbEV2ZW50LCBTY3JvbGxDaGFpbmluZ0Jsb2NrZXImIGJsb2NrZXIsIGJvb2wmIGhh
bmRsZWQpCit7CisgICAgc2Nyb2xsaW5nTm9kZS51cGRhdGVTY3JvbGxDaGFpbmluZ0Jsb2NrZXJT
dGF0ZShibG9ja2VyKTsKKworICAgIEZsb2F0U2l6ZSBmaWx0ZXJlZERlbHRhKHdoZWVsRXZlbnQu
ZGVsdGFYKCksIHdoZWVsRXZlbnQuZGVsdGFZKCkpOworICAgIGF1dG8gYmlhc2VkRGVsdGEgPSBQ
bGF0Zm9ybVdoZWVsRXZlbnQ6OndoZWVsRGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRpY2FsKGZpbHRl
cmVkRGVsdGEpOworICAgIGlmIChibG9ja2VyLmJsb2NrWCB8fCBibG9ja2VyLmJsb2NrWSkgewor
ICAgICAgICBpZiAoYmxvY2tlci5ibG9ja1ggJiYgIWJpYXNlZERlbHRhLmhlaWdodCgpICYmIHdp
bGxXaGVlbEV2ZW50U3RhcnRTd2lwZUdlc3R1cmUod2hlZWxFdmVudCkpIHsKKyAgICAgICAgICAg
IGhhbmRsZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9Cisg
ICAgICAgIGlmIChTY3JvbGxDaGFpbmluZ0Jsb2NrZXI6OnNob3VsZEJsb2NrU2Nyb2xsQ2hhaW5p
bmcoYmxvY2tlciwgYmlhc2VkRGVsdGEpKSB7CisgICAgICAgICAgICBoYW5kbGVkID0gdHJ1ZTsK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIFNjcm9sbENoYWlu
aW5nQmxvY2tlcjo6ZmlsdGVyRGVsdGEoYmxvY2tlciwgYmlhc2VkRGVsdGEsIGZpbHRlcmVkRGVs
dGEpOworICAgICAgICB3aGVlbEV2ZW50ID0gd2hlZWxFdmVudC5jb3B5V2l0aERlbHRhc0FuZFZl
bG9jaXR5KGZpbHRlcmVkRGVsdGEud2lkdGgoKSwgZmlsdGVyZWREZWx0YS5oZWlnaHQoKSwgd2hl
ZWxFdmVudC5zY3JvbGxpbmdWZWxvY2l0eSgpKTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCiBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQgU2Nyb2xsaW5nVHJlZTo6aGFuZGxlV2hlZWxF
dmVudFdpdGhOb2RlKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgT3B0aW9u
U2V0PFdoZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHM+IHByb2Nlc3NpbmdTdGVwcywgU2Nyb2xsaW5n
VHJlZU5vZGUqIG5vZGUsIEV2ZW50VGFyZ2V0aW5nIGV2ZW50VGFyZ2V0aW5nKQogeworICAgIFBs
YXRmb3JtV2hlZWxFdmVudCBhZGp1c3RlZFdoZWVsRXZlbnQgPSBQbGF0Zm9ybVdoZWVsRXZlbnQo
d2hlZWxFdmVudCk7CisgICAgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIGJsb2NrZXIgPSB7IGZhbHNl
LCBmYWxzZSB9OwogICAgIHdoaWxlIChub2RlKSB7CiAgICAgICAgIGlmIChpczxTY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZT4oKm5vZGUpKSB7CiAgICAgICAgICAgICBhdXRvJiBzY3JvbGxpbmdO
b2RlID0gZG93bmNhc3Q8U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU+KCpub2RlKTsKLSAgICAg
ICAgICAgIGF1dG8gcmVzdWx0ID0gc2Nyb2xsaW5nTm9kZS5oYW5kbGVXaGVlbEV2ZW50KHdoZWVs
RXZlbnQsIGV2ZW50VGFyZ2V0aW5nKTsKKyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gc2Nyb2xs
aW5nTm9kZS5oYW5kbGVXaGVlbEV2ZW50KGFkanVzdGVkV2hlZWxFdmVudCwgZXZlbnRUYXJnZXRp
bmcpOwogCiAgICAgICAgICAgICBpZiAocmVzdWx0Lndhc0hhbmRsZWQpIHsKLSAgICAgICAgICAg
ICAgICBtX2xhdGNoaW5nQ29udHJvbGxlci5ub2RlRGlkSGFuZGxlRXZlbnQoc2Nyb2xsaW5nTm9k
ZS5zY3JvbGxpbmdOb2RlSUQoKSwgcHJvY2Vzc2luZ1N0ZXBzLCB3aGVlbEV2ZW50LCBtX2FsbG93
TGF0Y2hpbmcpOworICAgICAgICAgICAgICAgIC8vIElmIHRoZSBzY3JvbGwgY2hhaW5pbmcgaXMg
YmxvY2tlZCBpbiBhIHNpbmdsZSBkaXJlY3Rpb24sIGl0IHNob3VsZCBzdG9wIGxhdGNoaW5nIHRv
IGEgbm9kZSwKKyAgICAgICAgICAgICAgICAvLyBmb3IgdGhlIHdoZWVsIGV2ZW50IG1pZ2h0IGNo
YW5nZSB0aGUgZGlyZWN0aW9uIGFuZCBvdmVyc2Nyb2xsLWJlaGF2aW9yIG1pZ2h0IG5vdCBiZSBh
YmxlIGJsb2NrCisgICAgICAgICAgICAgICAgLy8gdGhlIHNjcm9sbCBjaGFpbmluZyBpZiBpdCBs
YXRjaGVzIHRvIHRoZSBhbmNlc3RyeSBub2RlIG9mIG92ZXJzY3JvbGwtYmVoYXZpb3IgdGFyZ2V0
LgorICAgICAgICAgICAgICAgIGlmICgoYmxvY2tlci5ibG9ja1ggJiYgYmxvY2tlci5ibG9ja1kp
IHx8ICghYmxvY2tlci5ibG9ja1ggJiYgIWJsb2NrZXIuYmxvY2tZKSkKKyAgICAgICAgICAgICAg
ICAgICAgbV9sYXRjaGluZ0NvbnRyb2xsZXIubm9kZURpZEhhbmRsZUV2ZW50KHNjcm9sbGluZ05v
ZGUuc2Nyb2xsaW5nTm9kZUlEKCksIHByb2Nlc3NpbmdTdGVwcywgd2hlZWxFdmVudCwgbV9hbGxv
d0xhdGNoaW5nKTsKICAgICAgICAgICAgICAgICBtX2dlc3R1cmVTdGF0ZS5ub2RlRGlkSGFuZGxl
RXZlbnQoc2Nyb2xsaW5nTm9kZS5zY3JvbGxpbmdOb2RlSUQoKSwgd2hlZWxFdmVudCk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAg
aWYgKHJlc3VsdC5uZWVkc01haW5UaHJlYWRQcm9jZXNzaW5nKCkgfHwgZXZlbnRUYXJnZXRpbmcg
IT0gRXZlbnRUYXJnZXRpbmc6OlByb3BhZ2F0ZSkKICAgICAgICAgICAgICAgICByZXR1cm4gcmVz
dWx0OworCisgICAgICAgICAgICBib29sIGhhbmRsZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIGlm
IChzaG91bGRCbG9ja1Njcm9sbENoYWluaW5nV2l0aE5vZGUoc2Nyb2xsaW5nTm9kZSwgYWRqdXN0
ZWRXaGVlbEV2ZW50LCBibG9ja2VyLCBoYW5kbGVkKSkgeworICAgICAgICAgICAgICAgIGlmICgh
aGFuZGxlZCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFdoZWVsRXZlbnRIYW5kbGluZ1Jl
c3VsdDo6dW5oYW5kbGVkKCk7CisKKyAgICAgICAgICAgICAgICBpZiAoKGJsb2NrZXIuYmxvY2tY
ICYmIGJsb2NrZXIuYmxvY2tZKSkKKyAgICAgICAgICAgICAgICAgICAgbV9sYXRjaGluZ0NvbnRy
b2xsZXIubm9kZURpZEhhbmRsZUV2ZW50KHNjcm9sbGluZ05vZGUuc2Nyb2xsaW5nTm9kZUlEKCks
IHByb2Nlc3NpbmdTdGVwcywgd2hlZWxFdmVudCwgbV9hbGxvd0xhdGNoaW5nKTsKKyAgICAgICAg
ICAgICAgICBtX2dlc3R1cmVTdGF0ZS5ub2RlRGlkSGFuZGxlRXZlbnQoc2Nyb2xsaW5nTm9kZS5z
Y3JvbGxpbmdOb2RlSUQoKSwgd2hlZWxFdmVudCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIFdo
ZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdDo6aGFuZGxlZCgpOworICAgICAgICAgICAgfQogICAgICAg
ICB9CiAKICAgICAgICAgaWYgKGlzPFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbFByb3h5Tm9k
ZT4oKm5vZGUpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdUcmVlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdU
cmVlLmgKaW5kZXggODMxZjU2NmQ1YjM5MTgwODM3YWE0ZmI2ODQ3MGY0N2UwMWU1YmYyNC4uZmYw
MWExYjhlMGYxOGNmMDdjOTRmMDU2MmU3YjY5YTZhMzRmYWRmNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuaApAQCAtMjczLDcgKzI3Myw4IEBAIHBy
aXZhdGU6CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCByZWNlaXZlZFdoZWVsRXZlbnQoY29u
c3QgUGxhdGZvcm1XaGVlbEV2ZW50JikgeyB9Ci0gICAgCisgICAgYm9vbCBzaG91bGRCbG9ja1Nj
cm9sbENoYWluaW5nV2l0aE5vZGUoY29uc3QgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUmLCBQ
bGF0Zm9ybVdoZWVsRXZlbnQmLCBTY3JvbGxDaGFpbmluZ0Jsb2NrZXImLCBib29sJiBoYW5kbGVk
KTsKKwogICAgIFJlZlB0cjxTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlPiBtX3Jvb3RO
b2RlOwogCiAgICAgdXNpbmcgU2Nyb2xsaW5nVHJlZU5vZGVNYXAgPSBIYXNoTWFwPFNjcm9sbGlu
Z05vZGVJRCwgUmVmUHRyPFNjcm9sbGluZ1RyZWVOb2RlPj47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5j
cHAKaW5kZXggOTBiNTBjMjIxMTMzZWE0MzZlODYxZmVlZThlODc1MTNjYjUyM2JiMy4uY2U5Yjcw
MjZiNmQ5YTE4ZDg1MTE3ZmIzMjU2MWM5YmEyNTdmNThkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
LmNwcApAQCAtMTM0LDYgKzEzNCwyMiBAQCBib29sIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
Ojppc0xhdGNoZWROb2RlKCkgY29uc3QKICAgICByZXR1cm4gc2Nyb2xsaW5nVHJlZSgpLmxhdGNo
ZWROb2RlSUQoKSA9PSBzY3JvbGxpbmdOb2RlSUQoKTsKIH0KIAorT3ZlcnNjcm9sbEJlaGF2aW9y
IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjpob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9y
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMuaG9yaXpv
bnRhbE92ZXJzY3JvbGxCZWhhdmlvcjsKK30KKworT3ZlcnNjcm9sbEJlaGF2aW9yIFNjcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlOjp2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzLnZlcnRpY2FsT3ZlcnNjcm9s
bEJlaGF2aW9yOworfQorCit2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjp1cGRhdGVT
Y3JvbGxDaGFpbmluZ0Jsb2NrZXJTdGF0ZShTY3JvbGxDaGFpbmluZ0Jsb2NrZXImIGJsb2NrZXIp
IGNvbnN0Cit7CisgICAgYmxvY2tlci5ibG9ja1ggfD0gaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhh
dmlvcigpICE9IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0bzsKKyAgICBibG9ja2VyLmJsb2NrWSB8
PSB2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpICE9IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0
bzsKK30KKwogYm9vbCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6Y2FuSGFuZGxlV2hlZWxF
dmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIEV2ZW50VGFyZ2V0aW5n
IGV2ZW50VGFyZ2V0aW5nKSBjb25zdAogewogICAgIGlmICghY2FuSGF2ZVNjcm9sbGJhcnMoKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZS5oCmluZGV4IDg2MmMxYjNkYmUwZTIzZTE2OWZhNTJjYWE0NjJmZWZk
ZjE0ZGU4MTguLmE2YmY0Yzk5N2NiNDIxZTU2ZmVhZjExYTFiZDlkNTU2NGRjY2RmNWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGUuaApAQCAtMTQ1LDYgKzE0NSw5IEBAIHByb3RlY3RlZDoKICAgICBjb25z
dCBGbG9hdFNpemUmIHRvdGFsQ29udGVudHNTaXplRm9yUnViYmVyQmFuZCgpIGNvbnN0IHsgcmV0
dXJuIG1fdG90YWxDb250ZW50c1NpemVGb3JSdWJiZXJCYW5kOyB9CiAgICAgdm9pZCBzZXRUb3Rh
bENvbnRlbnRzU2l6ZUZvclJ1YmJlckJhbmQoY29uc3QgRmxvYXRTaXplJiB0b3RhbENvbnRlbnRz
U2l6ZUZvclJ1YmJlckJhbmQpIHsgbV90b3RhbENvbnRlbnRzU2l6ZUZvclJ1YmJlckJhbmQgPSB0
b3RhbENvbnRlbnRzU2l6ZUZvclJ1YmJlckJhbmQ7IH0KIAorICAgIE92ZXJzY3JvbGxCZWhhdmlv
ciBob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29uc3Q7CisgICAgT3ZlcnNjcm9sbEJl
aGF2aW9yIHZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29uc3Q7CisgICAgdm9pZCB1cGRh
dGVTY3JvbGxDaGFpbmluZ0Jsb2NrZXJTdGF0ZShTY3JvbGxDaGFpbmluZ0Jsb2NrZXImKSBjb25z
dDsKICAgICBTY3JvbGxFbGFzdGljaXR5IGhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5KCkgY29u
c3QgeyByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMuaG9yaXpvbnRhbFNjcm9sbEVs
YXN0aWNpdHk7IH0KICAgICBTY3JvbGxFbGFzdGljaXR5IHZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0
eSgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzLnZlcnRpY2FsU2Ny
b2xsRWxhc3RpY2l0eTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5oIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVs
ZWdhdGVNYWMuaAppbmRleCAzMmE4MzhlYjZmM2RhNDM5ODNiY2ZmNTViN2NjNDE4MTU1NzM0ZTlm
Li4zOTgxNDgxZmU0ZDI5NmVlYmNlZTNhYzcxZDgyNGQ3ZDIzY2E2YWIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGVEZWxlZ2F0ZU1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9T
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLmgKQEAgLTEwMSw2ICsxMDEsOSBA
QCBwcml2YXRlOgogICAgIEZsb2F0U2l6ZSB2aWV3cG9ydFNpemUoKSBjb25zdCBvdmVycmlkZTsK
ICNlbmRpZgogCisgICAgYm9vbCBzaG91bGRTdG9wSG9yaXpvbnRhbFN0cmVjaCgpIGNvbnN0IG92
ZXJyaWRlOworICAgIGJvb2wgc2hvdWxkU3RvcFZlcnRpY2FsU3RyZWNoKCkgY29uc3Qgb3ZlcnJp
ZGU7CisKICAgICB2b2lkIHJlbGVhc2VSZWZlcmVuY2VzVG9TY3JvbGxlckltcHNPblRoZU1haW5U
aHJlYWQoKTsKIAogICAgIFNjcm9sbENvbnRyb2xsZXIgbV9zY3JvbGxDb250cm9sbGVyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5tbQppbmRleCA2YTI1
ODAyMTA1ODAxMmRjNWU1ZTE2NWM0N2Y3ZjllNjE0ZDYzZWE1Li45MzQ3NzQxNGMyMDg3OWZkN2Qw
OTdlNzhjMzk5NzFlYjQ0ZGI0NWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZU1hYy5tbQpAQCAtMjYyLDYgKzI2Miw5IEBAIHN0ZDo6dW5pcXVlX3B0cjxT
Y3JvbGxDb250cm9sbGVyVGltZXI+IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVN
YWM6OmNyCiAKIGJvb2wgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6YWxs
b3dzSG9yaXpvbnRhbFN0cmV0Y2hpbmcoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2
ZW50KSBjb25zdAogeworICAgIGlmIChzaG91bGRTdG9wSG9yaXpvbnRhbFN0cmVjaCgpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKICAgICBzd2l0Y2ggKGhvcml6b250YWxTY3JvbGxFbGFzdGlj
aXR5KCkpIHsKICAgICBjYXNlIFNjcm9sbEVsYXN0aWNpdHlBdXRvbWF0aWM6IHsKICAgICAgICAg
Ym9vbCBzY3JvbGxiYXJzQWxsb3dTdHJldGNoaW5nID0gYWxsb3dzSG9yaXpvbnRhbFNjcm9sbGlu
ZygpIHx8ICFhbGxvd3NWZXJ0aWNhbFNjcm9sbGluZygpOwpAQCAtMjg0LDYgKzI4Nyw5IEBAIGJv
b2wgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6YWxsb3dzSG9yaXpvbnRh
bFN0cmV0Y2hpbmcoY29uc3QgUGxhCiAKIGJvb2wgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVE
ZWxlZ2F0ZU1hYzo6YWxsb3dzVmVydGljYWxTdHJldGNoaW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxF
dmVudCYgd2hlZWxFdmVudCkgY29uc3QKIHsKKyAgICBpZiAoc2hvdWxkU3RvcFZlcnRpY2FsU3Ry
ZWNoKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIHN3aXRjaCAodmVydGljYWxTY3Jv
bGxFbGFzdGljaXR5KCkpIHsKICAgICBjYXNlIFNjcm9sbEVsYXN0aWNpdHlBdXRvbWF0aWM6IHsK
ICAgICAgICAgYm9vbCBzY3JvbGxiYXJzQWxsb3dTdHJldGNoaW5nID0gYWxsb3dzVmVydGljYWxT
Y3JvbGxpbmcoKSB8fCAhYWxsb3dzSG9yaXpvbnRhbFNjcm9sbGluZygpOwpAQCAtNDM3LDYgKzQ0
MywxNiBAQCBGbG9hdFNpemUgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6
dmlld3BvcnRTaXplKCkgY29uc3QKIH0KICNlbmRpZgogCitib29sIFNjcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlRGVsZWdhdGVNYWM6OnNob3VsZFN0b3BIb3Jpem9udGFsU3RyZWNoKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gc2Nyb2xsaW5nTm9kZSgpLmhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZp
b3IoKSA9PSBPdmVyc2Nyb2xsQmVoYXZpb3I6Ok5vbmU7Cit9CisKK2Jvb2wgU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6c2hvdWxkU3RvcFZlcnRpY2FsU3RyZWNoKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gc2Nyb2xsaW5nTm9kZSgpLnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2
aW9yKCkgPT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpOb25lOworfQorCiB2b2lkIFNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OmRlZmVyV2hlZWxFdmVudFRlc3RDb21wbGV0aW9u
Rm9yUmVhc29uKFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVy
IGlkZW50aWZpZXIsIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6RGVmZXJSZWFzb24gcmVhc29uKSBj
b25zdAogewogICAgIGlmICghc2Nyb2xsaW5nVHJlZSgpLmlzTW9uaXRvcmluZ1doZWVsRXZlbnRz
KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZl
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oCmluZGV4
IGQ3MTY5MzQ2YTI0MDIzYzJhNDc4N2FlMzQ1NDBhMzc2MDdjMGEyZDUuLjY0MTc5N2E2ZjQxODc1
MzM4Y2E3MWVhNzM5MTYwZDEwYjA2Zjg4ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1BsYXRmb3JtV2hlZWxFdmVudC5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAog
I2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKKyNpbmNsdWRlICJGbG9hdFNpemUuaCIKICNpbmNsdWRl
ICJJbnRQb2ludC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtRXZlbnQuaCIKICNpbmNsdWRlIDx3dGYv
V2luZG93c0V4dHJhcy5oPgpAQCAtMTc0LDYgKzE3NSw4IEBAIHB1YmxpYzoKICAgICBQbGF0Zm9y
bVdoZWVsRXZlbnQoSFdORCwgV1BBUkFNLCBMUEFSQU0sIGJvb2wgaXNNb3VzZUhXaGVlbCk7CiAj
ZW5kaWYKIAorICAgIHN0YXRpYyBGbG9hdFNpemUgd2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVy
dGljYWwoY29uc3QgRmxvYXRTaXplJik7CisKIHByb3RlY3RlZDoKICAgICBQbGF0Zm9ybVdoZWVs
RXZlbnRHcmFudWxhcml0eSBtX2dyYW51bGFyaXR5IHsgU2Nyb2xsQnlQaXhlbFdoZWVsRXZlbnQg
fTsKICAgICBib29sIG1fZGlyZWN0aW9uSW52ZXJ0ZWRGcm9tRGV2aWNlIHsgZmFsc2UgfTsKQEAg
LTI2NCw2ICsyNjcsMTkgQEAgaW5saW5lIEZsb2F0UG9pbnQgUGxhdGZvcm1XaGVlbEV2ZW50Ojpz
d2lwZVZlbG9jaXR5KCkgY29uc3QKIAogI2VuZGlmIC8vIEVOQUJMRShLSU5FVElDX1NDUk9MTElO
RykKIAoraW5saW5lIEZsb2F0U2l6ZSBQbGF0Zm9ybVdoZWVsRXZlbnQ6OndoZWVsRGVsdGFCaWFz
aW5nVG93YXJkc1ZlcnRpY2FsKGNvbnN0IEZsb2F0U2l6ZSYgZGVsdGEpCit7CisgICAgYXV0byBk
ZWx0YVggPSBkZWx0YS53aWR0aCgpOworICAgIGF1dG8gZGVsdGFZID0gZGVsdGEuaGVpZ2h0KCk7
CisKKyAgICBpZiAoZmFic2YoZGVsdGFZKSA+PSBmYWJzZihkZWx0YVgpKQorICAgICAgICBkZWx0
YVggPSAwOworICAgIGVsc2UKKyAgICAgICAgZGVsdGFZID0gMDsKKworICAgIHJldHVybiB7IGRl
bHRhWCwgZGVsdGFZIH07Cit9CisKIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKTsKIFdF
QkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0m
LCBXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBzKTsKIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBFdmVudEhhbmRsaW5nKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFR5cGVzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxUeXBlcy5oCmluZGV4IDBiMWM0MDU2M2U4Y2JiODIyYTlmZWJh
NGMwYzQ2NWY4YTU3NGE5M2IuLmY4ZjcxYzJlMWZmN2I5ZTRkMmU3NTY5ZTdiMTkyMWI4MjIxZjg0
ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFR5cGVzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVHlwZXMuaApAQCAtMjYsNiArMjYsNyBA
QAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCisjaW5jbHVkZSAiRmxv
YXRTaXplLmgiCiAjaW5jbHVkZSAiSW50UG9pbnQuaCIKICNpbmNsdWRlIDxjc3RkaW50PgogI2lu
Y2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CkBAIC0yNTksNiArMjYwLDM0IEBAIGVudW0gY2xhc3Mg
U2Nyb2xsU25hcFBvaW50U2VsZWN0aW9uTWV0aG9kIDogdWludDhfdCB7CiAgICAgQ2xvc2VzdCwK
IH07CiAKK3N0cnVjdCBTY3JvbGxDaGFpbmluZ0Jsb2NrZXIgeworICAgIGJvb2wgYmxvY2tYIHsg
ZmFsc2UgfTsKKyAgICBib29sIGJsb2NrWSB7IGZhbHNlIH07CisKKyAgICBzdGF0aWMgYm9vbCBz
aG91bGRCbG9ja1Njcm9sbENoYWluaW5nKGNvbnN0IFNjcm9sbENoYWluaW5nQmxvY2tlciYgYmxv
Y2tlciwgY29uc3QgRmxvYXRTaXplJiBiaWFzZWREZWx0YSkKKyAgICB7CisgICAgICAgIGlmICgo
YmxvY2tlci5ibG9ja1ggJiYgYmxvY2tlci5ibG9ja1kpCisgICAgICAgICAgICB8fCAoYmxvY2tl
ci5ibG9ja1ggJiYgIWJpYXNlZERlbHRhLmhlaWdodCgpKQorICAgICAgICAgICAgfHwgKGJsb2Nr
ZXIuYmxvY2tZICYmICFiaWFzZWREZWx0YS53aWR0aCgpKSkKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgZmls
dGVyRGVsdGEoY29uc3QgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyJiBibG9ja2VyLCBjb25zdCBGbG9h
dFNpemUmIGJpYXNlZERlbHRhLCBGbG9hdFNpemUmIGZpbHRlcmVkRGVsdGEpCisgICAgeworICAg
ICAgICBpZiAoYmxvY2tlci5ibG9ja1gpIHsKKyAgICAgICAgICAgIGZpbHRlcmVkRGVsdGEuc2V0
V2lkdGgoMCk7CisgICAgICAgICAgICBpZiAoIWJpYXNlZERlbHRhLmhlaWdodCgpKQorICAgICAg
ICAgICAgICAgIGZpbHRlcmVkRGVsdGEuc2V0SGVpZ2h0KDApOworICAgICAgICB9CisgICAgICAg
IGlmIChibG9ja2VyLmJsb2NrWSkgeworICAgICAgICAgICAgZmlsdGVyZWREZWx0YS5zZXRIZWln
aHQoMCk7CisgICAgICAgICAgICBpZiAoIWJpYXNlZERlbHRhLndpZHRoKCkpCisgICAgICAgICAg
ICAgICAgZmlsdGVyZWREZWx0YS5zZXRXaWR0aCgwKTsKKyAgICAgICAgfQorICAgIH0KK307CisK
IHVzaW5nIFNjcm9sbGJhckNvbnRyb2xTdGF0ZSA9IHVuc2lnbmVkOwogdXNpbmcgU2Nyb2xsYmFy
Q29udHJvbFBhcnRNYXNrID0gdW5zaWduZWQ7CiB1c2luZyBTY3JvbGxpbmdOb2RlSUQgPSB1aW50
NjRfdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVh
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcAppbmRleCA1
ZjBlMmU2ZjAyMzlmYjRmZTRhYjI5YmIzMTRiODNlYWE5OWNjZGUyLi5jZmVhMThiMTE2ZmFiZDM0
NmM5ODA0MzUzMTFmZGVlY2U0Y2UwNmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsYWJsZUFyZWEuY3BwCkBAIC04NDgsNiArODQ4LDEyIEBAIHZvaWQgU2Nyb2xsYWJsZUFyZWE6
OmNvbXB1dGVTY3JvbGxiYXJWYWx1ZUFuZE92ZXJoYW5nKGZsb2F0IGN1cnJlbnRQb3NpdGlvbiwg
ZmxvCiAgICAgfQogfQogCit2b2lkIFNjcm9sbGFibGVBcmVhOjp1cGRhdGVTY3JvbGxDaGFpbmlu
Z0Jsb2NrZXJTdGF0ZShTY3JvbGxDaGFpbmluZ0Jsb2NrZXImIGJsb2NrZXIpIGNvbnN0Cit7Cisg
ICAgYmxvY2tlci5ibG9ja1ggfD0gaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpICE9IE92
ZXJzY3JvbGxCZWhhdmlvcjo6QXV0bzsKKyAgICBibG9ja2VyLmJsb2NrWSB8PSB2ZXJ0aWNhbE92
ZXJzY3JvbGxCZWhhdmlvcigpICE9IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0bzsKK30KKwogVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgU2Nyb2xsYWJsZUFyZWEm
IHNjcm9sbGFibGVBcmVhKQogewogICAgIHRzIDw8IHNjcm9sbGFibGVBcmVhLmRlYnVnRGVzY3Jp
cHRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVB
cmVhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCmluZGV4IDlm
Y2Q1NDlhYmI2ZWRhMjA2ZTIyMGMwYmQ4ZGQ5MWZlZjI3MmYzMGUuLjgzNjRlZWY1OTE0ZWFiMDE5
NDMxMDBlZGIyZGIyZTI3ZTYwM2NhYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbGFibGVBcmVhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
YWJsZUFyZWEuaApAQCAtMTI0LDYgKzEyNCwxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBjb25zdHJh
aW5zU2Nyb2xsaW5nVG9Db250ZW50RWRnZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29uc3RyYWluc1Nj
cm9sbGluZ1RvQ29udGVudEVkZ2U7IH0KICAgICB2b2lkIHNldENvbnN0cmFpbnNTY3JvbGxpbmdU
b0NvbnRlbnRFZGdlKGJvb2wgY29uc3RyYWluc1Njcm9sbGluZ1RvQ29udGVudEVkZ2UpIHsgbV9j
b25zdHJhaW5zU2Nyb2xsaW5nVG9Db250ZW50RWRnZSA9IGNvbnN0cmFpbnNTY3JvbGxpbmdUb0Nv
bnRlbnRFZGdlOyB9CiAKKyAgICB2aXJ0dWFsIE92ZXJzY3JvbGxCZWhhdmlvciBob3Jpem9udGFs
T3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29uc3QgeyByZXR1cm4gT3ZlcnNjcm9sbEJlaGF2aW9yOjpB
dXRvOyB9CisgICAgdmlydHVhbCBPdmVyc2Nyb2xsQmVoYXZpb3IgdmVydGljYWxPdmVyc2Nyb2xs
QmVoYXZpb3IoKSBjb25zdCB7IHJldHVybiBPdmVyc2Nyb2xsQmVoYXZpb3I6OkF1dG87IH0KKyAg
ICB2b2lkIHVwZGF0ZVNjcm9sbENoYWluaW5nQmxvY2tlclN0YXRlKFNjcm9sbENoYWluaW5nQmxv
Y2tlciYpIGNvbnN0OworCiAgICAgdm9pZCBzZXRWZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkoU2Ny
b2xsRWxhc3RpY2l0eSBzY3JvbGxFbGFzdGljaXR5KSB7IG1fdmVydGljYWxTY3JvbGxFbGFzdGlj
aXR5ID0gc2Nyb2xsRWxhc3RpY2l0eTsgfQogICAgIFNjcm9sbEVsYXN0aWNpdHkgdmVydGljYWxT
Y3JvbGxFbGFzdGljaXR5KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U2Nyb2xsRWxhc3Rp
Y2l0eT4obV92ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIuaAppbmRleCA3MzAzMjQ0ZmM2MGZl
ZjM0MzkwYWQ2NGUyNTE5YWM1ZWIyMzIxNTA1Li4zOGRmNThmYmZkOTVlNGYyMzkwMjVlNmMwNDg5
YTNlODk1YjA5ODZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9T
Y3JvbGxDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Ny
b2xsQ29udHJvbGxlci5oCkBAIC0xMTgsNiArMTE4LDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IExheW91dFNpemUgc2Nyb2xsRXh0ZW50KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgRmxvYXRT
aXplIHZpZXdwb3J0U2l6ZSgpIGNvbnN0ID0gMDsKICNlbmRpZgorCisjaWYgUExBVEZPUk0oTUFD
KQorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTdG9wSG9yaXpvbnRhbFN0cmVjaCgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIHNob3VsZFN0b3BWZXJ0aWNhbFN0cmVj
aCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisjZW5kaWYKIH07CiAKIGVudW0gY2xhc3MgV2hl
ZWxFdmVudFN0YXR1cyB7CkBAIC0xNzMsOCArMTc4LDYgQEAgcHVibGljOgogI2VuZGlmCiAjZW5k
aWYKIAotICAgIHN0YXRpYyBGbG9hdFNpemUgd2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGlj
YWwoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jik7Ci0KICAgICBlbnVtIGNsYXNzIFdoZWVsQXhp
c0JpYXMgeyBOb25lLCBWZXJ0aWNhbCB9OwogICAgIHN0YXRpYyBPcHRpb25hbDxTY3JvbGxEaXJl
Y3Rpb24+IGRpcmVjdGlvbkZyb21FdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBPcHRp
b25hbDxTY3JvbGxFdmVudEF4aXM+LCBXaGVlbEF4aXNCaWFzID0gV2hlZWxBeGlzQmlhczo6Tm9u
ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbENv
bnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9s
bGVyLm1tCmluZGV4IGQwOTVlNmIxNzNiOWY5MjBhMGQ0ZDlhNTI1YjMxMTJkMzg1Y2RkYmIuLmI3
MTg1NmY4NGNiNDgxMGUxMjEyMGI1ZTNlODdlNzA4ZTg0NWFiOWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5tbQpAQCAtMjUyLDcgKzI1
Miw4IEBAIGJvb2wgU2Nyb2xsQ29udHJvbGxlcjo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0
Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpCiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZQog
ICAgICAgICAgICAgICAgICAgICAgICAgbV9vdmVyZmxvd1Njcm9sbERlbHRhLnNldFdpZHRoKG1f
b3ZlcmZsb3dTY3JvbGxEZWx0YS53aWR0aCgpICsgZGVsdGFYKTsKICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgc2hvdWxkU3RyZXRjaCA9IHRydWU7CisgICAgICAgICAgICAgICAg
aWYgKCghZGVsdGFYIHx8ICFtX2NsaWVudC5zaG91bGRTdG9wSG9yaXpvbnRhbFN0cmVjaCgpKSAm
JiAoIWRlbHRhWSB8fCAhbV9jbGllbnQuc2hvdWxkU3RvcFZlcnRpY2FsU3RyZWNoKCkpKQorICAg
ICAgICAgICAgICAgICAgICBzaG91bGRTdHJldGNoID0gdHJ1ZTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQogCkBAIC0zMjksMTkgKzMzMCw2IEBAIGJvb2wgU2Nyb2xsQ29udHJvbGxlcjo6aGFu
ZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpCiB9CiAj
ZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCi1GbG9hdFNpemUgU2Nyb2xsQ29udHJvbGxlcjo6d2hl
ZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3
aGVlbEV2ZW50KQotewotICAgIGF1dG8gZGVsdGFYID0gd2hlZWxFdmVudC5kZWx0YVgoKTsKLSAg
ICBhdXRvIGRlbHRhWSA9IHdoZWVsRXZlbnQuZGVsdGFZKCk7Ci0KLSAgICBpZiAoZmFic2YoZGVs
dGFZKSA+PSBmYWJzZihkZWx0YVgpKQotICAgICAgICBkZWx0YVggPSAwOwotICAgIGVsc2UKLSAg
ICAgICAgZGVsdGFZID0gMDsKLQotICAgIHJldHVybiB7IGRlbHRhWCwgZGVsdGFZIH07Ci19Ci0K
IE9wdGlvbmFsPFNjcm9sbERpcmVjdGlvbj4gU2Nyb2xsQ29udHJvbGxlcjo6ZGlyZWN0aW9uRnJv
bUV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgT3B0aW9uYWw8U2Ny
b2xsRXZlbnRBeGlzPiBheGlzLCBXaGVlbEF4aXNCaWFzIGJpYXMpCiB7CiAgICAgLy8gRklYTUU6
IEl0J3MgaW1wb3NzaWJsZSB0byBpbmZlciBkaXJlY3Rpb24gZnJvbSBhIHNpbmdsZSBldmVudCwg
c2luY2UgdGhlIHN0YXJ0IG9mIGEgZ2VzdHVyZSBpcyBlaXRoZXIgemVybyBvcgpAQCAtMzQ5LDcg
KzMzNyw3IEBAIE9wdGlvbmFsPFNjcm9sbERpcmVjdGlvbj4gU2Nyb2xsQ29udHJvbGxlcjo6ZGly
ZWN0aW9uRnJvbUV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlCiAKICAgICBhdXRvIHdoZWVsRGVsdGEg
PSBGbG9hdFNpemUgeyB3aGVlbEV2ZW50LmRlbHRhWCgpLCB3aGVlbEV2ZW50LmRlbHRhWSgpIH07
CiAgICAgaWYgKGJpYXMgPT0gV2hlZWxBeGlzQmlhczo6VmVydGljYWwpCi0gICAgICAgIHdoZWVs
RGVsdGEgPSB3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbCh3aGVlbEV2ZW50KTsKKyAg
ICAgICAgd2hlZWxEZWx0YSA9IFBsYXRmb3JtV2hlZWxFdmVudDo6d2hlZWxEZWx0YUJpYXNpbmdU
b3dhcmRzVmVydGljYWwod2hlZWxFdmVudC5kZWx0YSgpKTsKIAogICAgIGlmIChheGlzKSB7CiAg
ICAgICAgIHN3aXRjaCAoYXhpcy52YWx1ZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5oCmluZGV4IDQ5ZjBiNGIxZDc5Zjc3YTk2OGE5NTJm
OGFlYjk3OTU0ZTI5NzJlMjkuLmE2Y2EwYWZlZWQ1NTRjYWQ5MzM3M2E0NGJmODE4M2RmMTcxMWI4
NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRv
ck1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1h
Yy5oCkBAIC0xNTYsNiArMTU2LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFkanVzdFNjcm9sbFBv
c2l0aW9uVG9Cb3VuZHNJZk5lY2Vzc2FyeSgpIGZpbmFsOwogI2VuZGlmCiAKKyAgICBib29sIHNo
b3VsZFN0b3BIb3Jpem9udGFsU3RyZWNoKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBzaG91
bGRTdG9wVmVydGljYWxTdHJlY2goKSBjb25zdCBvdmVycmlkZTsKKwogICAgIGJvb2wgbV9oYXZl
U2Nyb2xsZWRTaW5jZVBhZ2VMb2FkOwogICAgIGJvb2wgbV9uZWVkc1Njcm9sbGVyU3R5bGVVcGRh
dGU7CiAgICAgSW50UmVjdCBtX3Zpc2libGVTY3JvbGxlclRodW1iUmVjdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQppbmRleCA2MTUxZGVm
YzBlYWVjM2EwNTcxNTAyMGFlNjUwMDIzYmFjZjE0YjNjLi5lOGU2YWZjMjQ1NjcyNzBhZjcwNGQ1
MDAzZTM1MTM0ZjYzOGZmMjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1Njcm9sbEFuaW1hdG9yTWFjLm1tCkBAIC0xNTM2LDYgKzE1MzYsMTYgQEAgdm9pZCBTY3JvbGxB
bmltYXRvck1hYzo6c2V0VmlzaWJsZVNjcm9sbGVyVGh1bWJSZWN0KGNvbnN0IEludFJlY3QmIHNj
cm9sbGVyVGh1bWIKICAgICBtX3Zpc2libGVTY3JvbGxlclRodW1iUmVjdCA9IHJlY3RJblZpZXdD
b29yZGluYXRlczsKIH0KIAorYm9vbCBTY3JvbGxBbmltYXRvck1hYzo6c2hvdWxkU3RvcEhvcml6
b250YWxTdHJlY2goKSBjb25zdAoreworICAgIHJldHVybiBtX3Njcm9sbGFibGVBcmVhLmhvcml6
b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSA9PSBPdmVyc2Nyb2xsQmVoYXZpb3I6Ok5vbmU7Cit9
CisKK2Jvb2wgU2Nyb2xsQW5pbWF0b3JNYWM6OnNob3VsZFN0b3BWZXJ0aWNhbFN0cmVjaCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWEudmVydGljYWxPdmVyc2Nyb2xsQmVo
YXZpb3IoKSA9PSBPdmVyc2Nyb2xsQmVoYXZpb3I6Ok5vbmU7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggMzNmOGU2YzlkMDVlYjUxNWY0Mjk1
NzFlY2NiMjkzZGExZGU3ZDhhYi4uNGI4Nzc0ZjM3Y2MyYjA1MGM1ZDE5NDA2MGNiNTZkYjdlMzRm
NDc1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC0zNDY0
LDYgKzM0NjQsMjQgQEAgdm9pZCBSZW5kZXJMYXllcjo6aW52YWxpZGF0ZVNjcm9sbENvcm5lclJl
Y3QoY29uc3QgSW50UmVjdCYgcmVjdCkKICAgICAgICAgbV9yZXNpemVyLT5yZXBhaW50UmVjdGFu
Z2xlKHJlY3QpOwogfQogCitPdmVyc2Nyb2xsQmVoYXZpb3IgUmVuZGVyTGF5ZXI6Omhvcml6b250
YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdAoreworICAgIGNvbnN0IFJlbmRlclN0eWxlJiBz
dHlsZSA9IHJlbmRlcmVyKCkuc3R5bGUoKTsKKyAgICAvLyBBbiBlbGVtZW50IHRoYXQgaXMgbm90
IHNjcm9sbCBjb250YWluZXIgbXVzdCBhY2NlcHQgYnV0IGlnbm9yZSB0aGUgdmFsdWVzIG9mIHRo
aXMgcHJvcGVydHkuCisgICAgaWYgKHJlbmRlckJveCgpICYmIHJlbmRlckJveCgpLT5jYW5CZVNj
cm9sbGVkQW5kSGFzU2Nyb2xsYWJsZUFyZWEoKSkKKyAgICAgICAgcmV0dXJuIHN0eWxlLm92ZXJz
Y3JvbGxCZWhhdmlvclgoKTsKKyAgICByZXR1cm4gU2Nyb2xsYWJsZUFyZWE6Omhvcml6b250YWxP
dmVyc2Nyb2xsQmVoYXZpb3IoKTsKK30KKworT3ZlcnNjcm9sbEJlaGF2aW9yIFJlbmRlckxheWVy
Ojp2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpICBjb25zdAoreworICAgIGNvbnN0IFJlbmRl
clN0eWxlJiBzdHlsZSA9IHJlbmRlcmVyKCkuc3R5bGUoKTsKKyAgICAvLyBBbiBlbGVtZW50IHRo
YXQgaXMgbm90IHNjcm9sbCBjb250YWluZXIgbXVzdCBhY2NlcHQgYnV0IGlnbm9yZSB0aGUgdmFs
dWVzIG9mIHRoaXMgcHJvcGVydHkuCisgICAgaWYgKHJlbmRlckJveCgpICYmIHJlbmRlckJveCgp
LT5jYW5CZVNjcm9sbGVkQW5kSGFzU2Nyb2xsYWJsZUFyZWEoKSkKKyAgICAgICAgcmV0dXJuIHN0
eWxlLm92ZXJzY3JvbGxCZWhhdmlvclkoKTsKKyAgICByZXR1cm4gU2Nyb2xsYWJsZUFyZWE6OnZl
cnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCk7Cit9CisKIHN0YXRpYyBib29sIHNjcm9sbGJhckhp
ZGRlbkJ5U3R5bGUoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCiB7CiAgICAgcmV0dXJuIHNjcm9sbGJh
ciAmJiBzY3JvbGxiYXItPmlzSGlkZGVuQnlTdHlsZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuaAppbmRleCAzNmEwNmE0YmZiMjM1OTUzODRkYWM4MWNlNjAzMzM2NjU1MDQ4
M2RhLi40NWZlNTk4ZDczMjcwYWFmN2ViYjUxOTBhMTk2MTlhYzc3ZTk4NDI2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaApAQCAtNDgyLDYgKzQ4Miw5IEBAIHB1YmxpYzoK
ICAgICBib29sIGhhc0hvcml6b250YWxTY3JvbGxiYXIoKSBjb25zdCB7IHJldHVybiBob3Jpem9u
dGFsU2Nyb2xsYmFyKCk7IH0KICAgICBib29sIGhhc1ZlcnRpY2FsU2Nyb2xsYmFyKCkgY29uc3Qg
eyByZXR1cm4gdmVydGljYWxTY3JvbGxiYXIoKTsgfQogCisgICAgT3ZlcnNjcm9sbEJlaGF2aW9y
IGhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdCBmaW5hbDsKKyAgICBPdmVyc2Ny
b2xsQmVoYXZpb3IgdmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdCBmaW5hbDsKKwog
ICAgIGJvb2wgaG9yaXpvbnRhbFNjcm9sbGJhckhpZGRlbkJ5U3R5bGUoKSBjb25zdCBmaW5hbDsK
ICAgICBib29sIHZlcnRpY2FsU2Nyb2xsYmFySGlkZGVuQnlTdHlsZSgpIGNvbnN0IGZpbmFsOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
Y3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRl
eCBmYWFhMmFkY2Y5OTFiMTM2NTkzYzU1OTYwNjQ2ZmYxZjQ4MGNmMWQ3Li5kYjZjNTJjMzRlMDdh
OTllYzFlNTMwNmQyZDY0NDBlNjNlMzc1YWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTIwMTksNiArMjAxOSw5IEBAIGJvb2wgQXJn
dW1lbnRDb2RlcjxVc2VyU3R5bGVTaGVldD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBVc2Vy
U3R5bGVTaGVldCYgdXNlCiAKIHZvaWQgQXJndW1lbnRDb2RlcjxTY3JvbGxhYmxlQXJlYVBhcmFt
ZXRlcnM+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU2Nyb2xsYWJsZUFyZWFQYXJh
bWV0ZXJzJiBwYXJhbWV0ZXJzKQogeworICAgIGVuY29kZXIgPDwgcGFyYW1ldGVycy5ob3Jpem9u
dGFsT3ZlcnNjcm9sbEJlaGF2aW9yOworICAgIGVuY29kZXIgPDwgcGFyYW1ldGVycy52ZXJ0aWNh
bE92ZXJzY3JvbGxCZWhhdmlvcjsKKwogICAgIGVuY29kZXIgPDwgcGFyYW1ldGVycy5ob3Jpem9u
dGFsU2Nyb2xsRWxhc3RpY2l0eTsKICAgICBlbmNvZGVyIDw8IHBhcmFtZXRlcnMudmVydGljYWxT
Y3JvbGxFbGFzdGljaXR5OwogCkBAIC0yMDM2LDYgKzIwMzksMTEgQEAgdm9pZCBBcmd1bWVudENv
ZGVyPFNjcm9sbGFibGVBcmVhUGFyYW1ldGVycz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBj
b25zdCBTY3IKIAogYm9vbCBBcmd1bWVudENvZGVyPFNjcm9sbGFibGVBcmVhUGFyYW1ldGVycz46
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBTY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMmIHBhcmFt
cykKIHsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtcy5ob3Jpem9udGFsT3ZlcnNjcm9s
bEJlaGF2aW9yKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUocGFyYW1zLnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbXMuaG9yaXpvbnRhbFNjcm9sbEVs
YXN0aWNpdHkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShwYXJhbXMudmVydGljYWxTY3JvbGxFbGFzdGljaXR5KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggZmE5NmNkYTg0ZWNiN2Q0ODhhZTQyOTEz
M2MwZjViNDQzNzA0OGRiMS4uMzk1MzU2NzgzZmRhNTZmZTFjMWFiMGQ5MjM3Mjg1ZjM2NjQ2ZjA5
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAg
LTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1JlYWx0aW1lTWVkaWFTb3VyY2UuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlcmluZ01vZGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Nj
cm9sbFNuYXBPZmZzZXRzSW5mby5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2Nyb2xsVHlwZXMuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1NlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlclR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9T
dG9yZWRDcmVkZW50aWFsc1BvbGljeS5oPgpAQCAtODk2LDYgKzg5NywxNSBAQCB0ZW1wbGF0ZTw+
IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJ
bmZvPiB7CiAKIG5hbWVzcGFjZSBXVEYgewogCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRz
PFdlYkNvcmU6Ok92ZXJzY3JvbGxCZWhhdmlvcj4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1W
YWx1ZXM8CisgICAgV2ViQ29yZTo6T3ZlcnNjcm9sbEJlaGF2aW9yLAorICAgIFdlYkNvcmU6Ok92
ZXJzY3JvbGxCZWhhdmlvcjo6QXV0bywKKyAgICBXZWJDb3JlOjpPdmVyc2Nyb2xsQmVoYXZpb3I6
OkNvbnRhaW4sCisgICAgV2ViQ29yZTo6T3ZlcnNjcm9sbEJlaGF2aW9yOjpOb25lCisgICAgPjsK
K307CisKIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6Q29sb3JTcGFjZT4g
ewogICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CiAgICAgV2ViQ29yZTo6Q29sb3JTcGFj
ZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZp
ZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmlu
ZGV4IDk2MjBlODZmYjBhNzIwMTQwMWMyY2FkNTUxZGUyY2ZiODg4OWJlZGIuLmI4Y2YyZTdmZTc0
NmJlODYyMTQ5NWZjMTQzMTM4MmIwNjUzOTlkYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQpAQCAtNDA5Myw2ICs0MDkzLDggQEAgc3RhdGlj
IEJPT0wgY3VycmVudFNjcm9sbElzQmxpdChOU1ZpZXcgKmNsaXBWaWV3KQogICAgIGF1dG8qIGZy
YW1lID0gY29yZShbc2VsZiBfZnJhbWVdKTsKICAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+ZXZl
bnRIYW5kbGVyKCkud2hlZWxFdmVudChldmVudCkpIHsKICNpZiBQTEFURk9STShNQUMpCisgICAg
ICAgIC8vIEZJWE1FOiBOZWVkIHRvIGZpbmQgYSB3YXkgdG8gYmxvY2sgdGhlIGNyb3NzLWZyYW1l
IHNjcm9sbCBjaGFpbmluZyBpbiBXSzEuCisgICAgICAgIC8vIFdlIGNhbiBub3QganVzdCBza2lw
IHRoZSBzY3JvbGwgaGVyZSwgaXQgbm90IG9ubHkgYmxvY2tzIHNjcm9sbCBjaGFpbmluZyBidXQg
YWxzbyBibG9ja3MgdGhlIHNjcm9sbCBvbiBjdXJyZW50IHZpZXcuCiAgICAgICAgIFtzdXBlciBz
Y3JvbGxXaGVlbDpldmVudF07CiAjZW5kaWYKICAgICB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYWJmZjJkZWQ2NWFiOGEx
MTFhYjk1MTg3ZTRkNDhhOWY1YTg0ZDg1Ny4uNGQ0YTUwZTljZDE4ZDA0M2MxNDgwM2Q3MjFmNmVh
ZmY3N2U0ZDAzMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIxLTAxLTE1ICBDYXRoaWUgQ2hl
biAgPGNhdGhpZWNoZW5AaWdhbGlhLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgQ1NTIG92ZXJz
Y3JvbGwtYmVoYXZpb3Igb24gTWFjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjAxMzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBCYXNlZCBvbiBGcsOpZMOpcmljIFdhbmcncyBwYXRjaC4KKworICAgICAg
ICAqIFRlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9s
bC1iZWhhdmlvci1lbGVtZW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9z
Y3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50Lmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGZhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci1p
ZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1i
ZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGZhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1l
bnQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhh
dmlvci11bnNjcm9sbGFibGUtaWZyYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL3Jlc291cmNlcy9vdmVyc2Nyb2xs
LWJlaGF2aW9yLXN1cHBvcnQuanM6IEFkZGVkLgorICAgICAgICAoYXN5bmMgcGVyZm9ybVdoZWVs
U2Nyb2xsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnM6Cisg
ICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDIxLTAxLTE1
ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSW50ZWdy
YXRpb25dIFJFR1JFU1NJT04gKHIyNzAxMjMpIGZhY2Vib29rLmNvbSBiaXJ0aGRheSBkcm9wZG93
biBkbyBub3Qgd29yayB3aGVuIGNyZWF0aW5nIG5ldyBhY2NvdW50CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpp
bmRleCBhZTAwYjM4NThkMDM0ZWYwZTdlZjdhZmViNDVmZDRmYmQwYTVjOTc3Li5iN2E4OTMxNWYy
OWI3ODg2YWU1NzdkOTFhZGJiNDJlMTFjOTkxYzQyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9U
ZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTEw
MjQsNiArMTAyNCwxMiBAQCB3ZWJraXQub3JnL2IvMjAzMTQ2IGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvb2Zmc2NyZWVuIFsgU2tpcAogIyBUZXN0cyBhIHNldHRp
bmcgYmVoaW5kIHRoZSBFTkFCTEVfRlVMTFNDUkVFTl9BUEkgZmxhZywgd2hpY2ggaXMgV0syLW9u
bHkKIG1lZGlhL3ZpZGVvLXN1cHBvcnRzLWZ1bGxzY3JlZW4uaHRtbCBbIFNraXAgXQogCisjIFRl
c3RzIG92ZXJzY3JvbGwtYmVoYXZpb3IsIHdoaWNoIG9ubHkgc3VwcG9ydGVkIG9uIE1hYworZmFz
dC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50Lmh0bWwgWyBTa2lwIF0KK2Zh
c3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0bWwgWyBTa2lwIF0KK2Zh
c3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRt
bCBbIFNraXAgXQorZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFi
bGUtaWZyYW1lLmh0bWwgWyBTa2lwIF0KKwogIy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLwogIyBFbmQgcGxhdGZvcm0tc3BlY2lmaWMgdGVzdHMuCiAjLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9v
dmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFz
dC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50LWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4yNzE1MGZmNjBiNWRiZGQwYjRhN2FjNmY4M2ZiNTZmNTdjZDJjZDgyCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlv
ci1lbGVtZW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIwIEBACisKK1BBU1MgRWxlbWVudCBo
b3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBhdXRv
LgorUEFTUyBFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhh
dmlvcjogYXV0byBhdXRvLgorUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0
aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGF1dG8uCitQQVNTIEVsZW1lbnQgdmVydGlj
YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGF1dG8uCitQ
QVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZp
b3I6IG5vbmUgYXV0by4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92
ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgYXV0by4KK1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNj
cm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBjb250YWluLgorUEFTUyBF
bGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0
byBjb250YWluLgorUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVy
c2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGNvbnRhaW4uCitQQVNTIEVsZW1lbnQgdmVydGljYWwg
c2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGNvbnRhaW4uCitQ
QVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZp
b3I6IG5vbmUgY29udGFpbi4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRo
IG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgY29udGFpbi4KK1BBU1MgRWxlbWVudCBob3Jpem9u
dGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBub25lLgorUEFT
UyBFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjog
YXV0byBub25lLgorUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVy
c2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIG5vbmUuCitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Ny
b2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIG5vbmUuCitQQVNTIEVs
ZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5v
bmUgbm9uZS4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3Jv
bGwtYmVoYXZpb3I6IG5vbmUgbm9uZS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9z
Y3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40YjRkYTU5NzNkYmM4MWU3MWMzOWViMWRmMWI2ZDA4M2RkODc4NzBhCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVt
ZW50Lmh0bWwKQEAgLTAsMCArMSw3OCBAQAorPCFkb2N0eXBlIGh0bWw+CisKKzxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL292ZXJzY3JvbGwtYmVoYXZpb3Itc3VwcG9ydC5qcyI+PC9zY3JpcHQ+
Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3Mtb3Zl
cnNjcm9sbC1iZWhhdmlvciI+Cis8c3R5bGU+CisgICAgLnNjcm9sbGluZyB7CisgICAgICAgIG92
ZXJmbG93OiBzY3JvbGw7CisgICAgfQorICAgIC5zY3JvbGxDb250ZW50IHsKKyAgICAgICAgd2lk
dGg6IDMwMHB4OworICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgIH0KKyAgICAjcm9vdCB7Cisg
ICAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgICAgaGVpZ2h0OiAyMDBweDsKKyAgICB9CisgICAg
I3Njcm9sbGVyIHsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBoZWlnaHQ6IDEwMHB4
OworICAgIH0KKzwvc3R5bGU+Cis8ZGl2IGlkPSdyb290JyBjbGFzcz0ic2Nyb2xsaW5nIj4KKyAg
ICA8ZGl2IGlkPSdzY3JvbGxlcicgY2xhc3M9InNjcm9sbGluZyI+CisgICAgICAgIDxkaXYgY2xh
c3M9InNjcm9sbENvbnRlbnQiPjwvZGl2PgorICAgIDwvZGl2PgorICAgIDxkaXYgY2xhc3M9InNj
cm9sbENvbnRlbnQiPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+Citjb25zdCByb290ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jvb3QnKTsKK2NvbnN0IHNjcm9sbGVyID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ3Njcm9sbGVyJyk7Cit2YXIgb3ZlcnNjcm9sbERhdGFzID0gW1siYXV0
byIsICJhdXRvIiwgdHJ1ZSwgdHJ1ZV0sCisgICAgICAgICAgICAgICAgICAgICAgICBbImNvbnRh
aW4iLCAiYXV0byIsIGZhbHNlLCB0cnVlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFsibm9u
ZSIsICJhdXRvIiwgZmFsc2UsIHRydWVdLAorICAgICAgICAgICAgICAgICAgICAgICAgWyJhdXRv
IiwgImNvbnRhaW4iLCB0cnVlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAgICBbImNv
bnRhaW4iLCAiY29udGFpbiIsIGZhbHNlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAg
ICBbIm5vbmUiLCAiY29udGFpbiIsIGZhbHNlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAg
ICAgICBbImF1dG8iLCAibm9uZSIsIHRydWUsIGZhbHNlXSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIFsiY29udGFpbiIsICJub25lIiwgZmFsc2UsIGZhbHNlXSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIFsibm9uZSIsICJub25lIiwgZmFsc2UsIGZhbHNlXV07CisKK2Z1bmN0aW9uIHJlc2V0
VGVzdCgpIHsKKyAgICAvLyBUcnkgdmFyaW91cyBtZXRob2RzIHRvIGVuc3VyZSB0aGUgZWxlbWVu
dCBwb3NpdGlvbiBpcyByZXNldCBpbW1lZGlhdGVseS4KKyAgICBzY3JvbGxlci5zY3JvbGxMZWZ0
ID0gMzAwOworICAgIHNjcm9sbGVyLnNjcm9sbFRvcCA9IDMwMDsKKyAgICBzY3JvbGxlci5zY3Jv
bGxUbygzMDAsIDMwMCk7CisKKyAgICByb290LnNjcm9sbExlZnQgPSAwOworICAgIHJvb3Quc2Ny
b2xsVG9wID0gMDsKKyAgICByb290LnNjcm9sbFRvKDAsIDApOworfQorCitmdW5jdGlvbiBzdGFy
dFRlc3QoKSB7CisgICAgb3ZlcnNjcm9sbERhdGFzLmZvckVhY2goKFtvdmVyc2Nyb2xsWCwgb3Zl
cnNjcm9sbFksIHByb3BhZ2F0ZVgsIHByb3BhZ2F0ZVldKSA9PiB7CisgICAgICAgIHByb21pc2Vf
dGVzdCgoKSA9PiB7CisgICAgICAgICAgICByZXNldFRlc3QoKTsKKyAgICAgICAgICAgIHNjcm9s
bGVyLnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclggPSBvdmVyc2Nyb2xsWDsKKyAgICAgICAgICAg
IHNjcm9sbGVyLnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclkgPSBvdmVyc2Nyb2xsWTsKKyAgICAg
ICAgICAgIHJldHVybiBwZXJmb3JtV2hlZWxTY3JvbGwoc2Nyb2xsZXIsICJyaWdodCIpLnRoZW4o
KCkgPT4geworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxMZWZ0ID4g
MCwgcHJvcGFnYXRlWCwgJ0NvbnRpbnVlIHVwIHRoZSBob3Jpem9udGFsIHNjcm9sbCBjaGFpbmlu
ZycpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0sICdFbGVtZW50IGhvcml6b250YWwgc2Ny
b2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiAnICsgb3ZlcnNjcm9sbFggKyAnICcg
KyBvdmVyc2Nyb2xsWSArICcuJyk7CisKKyAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAg
ICAgICAgICAgIHJlc2V0VGVzdCgpOworICAgICAgICAgICAgc2Nyb2xsZXIuc3R5bGUub3ZlcnNj
cm9sbEJlaGF2aW9yWCA9IG92ZXJzY3JvbGxYOworICAgICAgICAgICAgc2Nyb2xsZXIuc3R5bGUu
b3ZlcnNjcm9sbEJlaGF2aW9yWSA9IG92ZXJzY3JvbGxZOworICAgICAgICAgICAgcmV0dXJuIHBl
cmZvcm1XaGVlbFNjcm9sbChzY3JvbGxlciwgImRvd24iKS50aGVuKCgpID0+IHsKKyAgICAgICAg
ICAgICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsVG9wID4gMCwgcHJvcGFnYXRlWSwgJ0Nv
bnRpbnVlIHVwIHRoZSB2ZXJ0aWNhbCBzY3JvbGwgY2hhaW5pbmcnKTsKKyAgICAgICAgICAgIH0p
OworICAgICAgICB9LCAnRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3Jv
bGwtYmVoYXZpb3I6ICcgKyBvdmVyc2Nyb2xsWCArICcgJyArIG92ZXJzY3JvbGxZICsgJy4nKTsK
KyAgICB9KTsKK30KKworYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIHN0YXJ0VGVzdCk7Cis8L3Nj
cmlwdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTAwYTBiN2Q5MDViODdjMWRiNzYyNjk0ZmQwMDYzOGYx
OTc2OTUzNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL292
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
cm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41
YjkwMWQzNzBhODZmMWM2NTIxMzkxMjRjMWY5NDYyMDg2YzQzMDdiCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUu
aHRtbApAQCAtMCwwICsxLDgxIEBACis8IWRvY3R5cGUgaHRtbD4KKworPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvb3ZlcnNjcm9sbC1iZWhhdmlvci1zdXBwb3J0LmpzIj48L3NjcmlwdD4KKzxs
aW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1vdmVyc2Ny
b2xsLWJlaGF2aW9yIj4KKzxzdHlsZT4KKyAgICAuc2Nyb2xsaW5nIHsKKyAgICAgICAgb3ZlcmZs
b3c6IHNjcm9sbDsKKyAgICB9CisgICAgLnNjcm9sbENvbnRlbnQgeworICAgICAgICB3aWR0aDog
MzAwcHg7CisgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgIGJhY2tncm91bmQ6IGxpbmVh
ci1ncmFkaWVudCgxMzVkZWcsIHJlZCwgYmx1ZSk7CisgICAgfQorICAgICNyb290IHsKKyAgICAg
ICAgd2lkdGg6IDIwMHB4OworICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAgIH0KKyAgICAjc2Ny
b2xsZXIgeworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7Cisg
ICAgICAgIG92ZXJzY3JvbGwtYmVoYXZpb3IteTogYXV0bzsKKyAgICB9Cis8L3N0eWxlPgorPGRp
diBpZD0ncm9vdCcgY2xhc3M9InNjcm9sbGluZyI+CisgICAgPGlmcmFtZSBpZD0nc2Nyb2xsZXIn
IHNyY2RvYz0iPGh0bWw+PGRpdiBzdHlsZT0nd2lkdGg6IDMwMHB4OyBoZWlnaHQ6IDMwMHB4Oyc+
PC9kaXY+PC9odG1sPgorICAgICAgICAiPjwvaWZyYW1lPgorICAgIDxkaXYgY2xhc3M9InNjcm9s
bENvbnRlbnQiPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+CisgICAgY29uc3Qgcm9vdCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdyb290Jyk7CisgICAgY29uc3Qgc2Nyb2xsZXIgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnc2Nyb2xsZXInKTsKKyAgICB2YXIgb3ZlcnNjcm9sbERhdGFz
ID0gW1siYXV0byIsICJhdXRvIiwgdHJ1ZSwgdHJ1ZV0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgWyJjb250YWluIiwgImF1dG8iLCBmYWxzZSwgdHJ1ZV0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgWyJub25lIiwgImF1dG8iLCBmYWxzZSwgdHJ1ZV0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgWyJhdXRvIiwgImNvbnRhaW4iLCB0cnVlLCBmYWxzZV0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgWyJjb250YWluIiwgImNvbnRhaW4iLCBmYWxzZSwgZmFsc2Vd
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsibm9uZSIsICJjb250YWluIiwgZmFsc2Us
IGZhbHNlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImF1dG8iLCAibm9uZSIsIHRy
dWUsIGZhbHNlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImNvbnRhaW4iLCAibm9u
ZSIsIGZhbHNlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJub25lIiwg
Im5vbmUiLCBmYWxzZSwgZmFsc2VdXTsKKyAgICBmdW5jdGlvbiByZXNldFRlc3QoKSB7CisgICAg
ICAgIC8vIFRyeSB2YXJpb3VzIG1ldGhvZHMgdG8gZW5zdXJlIHRoZSBlbGVtZW50IHBvc2l0aW9u
IGlzIHJlc2V0IGltbWVkaWF0ZWx5LgorICAgICAgICBzY3JvbGxlci5jb250ZW50V2luZG93LnNj
cm9sbFggPSAzMDA7CisgICAgICAgIHNjcm9sbGVyLmNvbnRlbnRXaW5kb3cuc2Nyb2xsWSA9IDMw
MDsKKyAgICAgICAgc2Nyb2xsZXIuY29udGVudFdpbmRvdy5zY3JvbGxUbygzMDAsIDMwMCk7CisK
KyAgICAgICAgcm9vdC5zY3JvbGxMZWZ0ID0gMDsKKyAgICAgICAgcm9vdC5zY3JvbGxUb3AgPSAw
OworICAgICAgICByb290LnNjcm9sbFRvKDAsIDApOworICAgIH0KKworICAgIGZ1bmN0aW9uIG92
ZXJzY3JvbGxCZWhhdmlvclRlc3QoKSB7CisgICAgICAgIG92ZXJzY3JvbGxEYXRhcy5mb3JFYWNo
KChbb3ZlcnNjcm9sbFgsIG92ZXJzY3JvbGxZLCBwcm9wYWdhdGVYLCBwcm9wYWdhdGVZXSkgPT4g
eworICAgICAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAgICAgICByZXNl
dFRlc3QoKTsKKyAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gc2Nyb2xsZXIuY29udGVudFdp
bmRvdy5kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaHRtbCIpWzBdOworICAgICAgICAg
ICAgICAgIHRhcmdldC5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JYID0gb3ZlcnNjcm9sbFg7Cisg
ICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclkgPSBvdmVyc2Ny
b2xsWTsKKworICAgICAgICAgICAgICAgIHJldHVybiBwZXJmb3JtV2hlZWxTY3JvbGwoc2Nyb2xs
ZXIsICJyaWdodCIpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgICAgICBhc3NlcnRfZXF1
YWxzKHJvb3Quc2Nyb2xsTGVmdCA+IDAsIHByb3BhZ2F0ZVgsICdDb250aW51ZSB1cCB0aGUgaG9y
aXpvbnRhbCBzY3JvbGwgY2hhaW5pbmcnKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAg
ICAgIH0sICdJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVo
YXZpb3I6ICcgKyBvdmVyc2Nyb2xsWCArICcgJyArIG92ZXJzY3JvbGxZICsgJy4nKTsKKworICAg
ICAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAgICAgICByZXNldFRlc3Qo
KTsKKyAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gc2Nyb2xsZXIuY29udGVudFdpbmRvdy5k
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaHRtbCIpWzBdOworICAgICAgICAgICAgICAg
IHRhcmdldC5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JYID0gb3ZlcnNjcm9sbFg7CisgICAgICAg
ICAgICAgICAgdGFyZ2V0LnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclkgPSBvdmVyc2Nyb2xsWTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gcGVyZm9ybVdoZWVsU2Nyb2xsKHNjcm9sbGVyLCAiZG93
biIpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJvb3Qu
c2Nyb2xsVG9wID4gMCwgcHJvcGFnYXRlWSwgJ0NvbnRpbnVlIHVwIHRoZSB2ZXJ0aWNhbCBzY3Jv
bGwgY2hhaW5pbmcnKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0sICdJZnJh
bWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiAnICsgb3Zl
cnNjcm9sbFggKyAnICcgKyBvdmVyc2Nyb2xsWSArICcuJyk7CisgICAgICAgIH0pOworICAgIH0K
KworICAgIHNjcm9sbGVyLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBvdmVyc2Nyb2xsQmVoYXZp
b3JUZXN0KTsKKzwvc2NyaXB0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3Jv
bGxhYmxlLWVsZW1lbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcv
b3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZjM5NWI2NDg4ZDA4NzBiOTU2MWMwMjg2NzlkN2UxNWE0N2ZjZTZlOQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZp
b3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorCitQ
QVNTIFVuc2Nyb2xsYWJsZSBlbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVy
c2Nyb2xsLWJlaGF2aW9yOiBub25lLgorUEFTUyBVbnNjcm9sbGFibGUgZWxlbWVudCB2ZXJ0aWNh
bCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3Jv
bGxhYmxlLWVsZW1lbnQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3Jv
bGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNDUxYjQz
Y2QxMDBiNWUwZThkZjgzYzY5NzlkYTQ2YThkNmNmMzAxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUt
ZWxlbWVudC5odG1sCkBAIC0wLDAgKzEsNjEgQEAKKzwhZG9jdHlwZSBodG1sPgorCis8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9InJlc291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXN1cHBvcnQuanMiPjwvc2Ny
aXB0PgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3Nz
LW92ZXJzY3JvbGwtYmVoYXZpb3IiPgorPHN0eWxlPgorICAgIC5zY3JvbGxpbmcgeworICAgICAg
ICBvdmVyZmxvdzogc2Nyb2xsOworICAgIH0KKyAgICAuc2Nyb2xsQ29udGVudCB7CisgICAgICAg
IHdpZHRoOiAzMDBweDsKKyAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICB9CisgICAgI3Jvb3Qg
eworICAgICAgICB3aWR0aDogMjAwcHg7CisgICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgfQor
ICAgICNzY3JvbGxlciB7CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgaGVpZ2h0OiAx
MDBweDsKKyAgICAgICAgb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZTsKKyAgICAgICAgb3ZlcmZs
b3c6IHZpc2libGU7CisgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcs
IHJlZCwgYmx1ZSk7CisgICAgfQorPC9zdHlsZT4KKzxkaXYgaWQ9InJvb3QiIGNsYXNzPSJzY3Jv
bGxpbmciPgorICAgIDxkaXYgaWQ9InNjcm9sbGVyIj4KKyAgICAgICAgPGRpdiBjbGFzcz0ic2Ny
b2xsQ29udGVudCI+PC9kaXY+CisgICAgPC9kaXY+CisgICAgPGRpdiBjbGFzcz0ic2Nyb2xsQ29u
dGVudCI+PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4KK2NvbnN0IHJvb3QgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgncm9vdCcpOworY29uc3Qgc2Nyb2xsZXIgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnc2Nyb2xsZXInKTsKK2Z1bmN0aW9uIHJlc2V0VGVzdCgpIHsKKyAgICByb290LnNj
cm9sbExlZnQgPSAwOworICAgIHJvb3Quc2Nyb2xsVG9wID0gMDsKKyAgICByb290LnNjcm9sbFRv
KDAsIDApOworfQorCitmdW5jdGlvbiBzdGFydFRlc3QoKSB7CisgICAgICAgIHByb21pc2VfdGVz
dCgoKSA9PiB7CisgICAgICAgICAgICByZXNldFRlc3QoKTsKKyAgICAgICAgICAgIHJldHVybiBw
ZXJmb3JtV2hlZWxTY3JvbGwoc2Nyb2xsZXIsICJyaWdodCIpLnRoZW4oKCkgPT4geworICAgICAg
ICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxMZWZ0ID4gMCwgdHJ1ZSwgJ0NvbnRp
bnVlIHVwIHRoZSBob3Jpem9udGFsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAgICAgICAgfSk7
CisgICAgICAgIH0sICdVbnNjcm9sbGFibGUgZWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0
IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4nKTsKKworICAgICAgICBwcm9taXNlX3Rl
c3QoKCkgPT4geworICAgICAgICAgICAgcmVzZXRUZXN0KCk7CisKKyAgICAgICAgICAgIHJldHVy
biBwZXJmb3JtV2hlZWxTY3JvbGwoc2Nyb2xsZXIsICJkb3duIikudGhlbigoKSA9PiB7CisgICAg
ICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbFRvcCA+IDAsIHRydWUsICdDb250
aW51ZSB1cCB0aGUgdmVydGljYWwgc2Nyb2xsIGNoYWluaW5nJyk7CisgICAgICAgICAgICB9KTsK
KyAgICAgICAgfSwgJ1Vuc2Nyb2xsYWJsZSBlbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdp
dGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4nKTsKK30KKworYWRkRXZlbnRMaXN0ZW5lcigi
bG9hZCIsIHN0YXJ0VGVzdCk7Cis8L3NjcmlwdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2
aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9z
Y3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi43ZmE1OWNjYmE3OWFlZmYzM2RhNzBlOTNkNDg4YTA3ZWVjOWM1Njkx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9s
bC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUg
QEAKKworCitQQVNTIFVuc2Nyb2xsYWJsZSBpZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3
aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuCitQQVNTIFVuc2Nyb2xsYWJsZSBpZnJhbWUg
dmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLgorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9y
LXVuc2Nyb2xsYWJsZS1pZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL292
ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU2
YzYzZjhjYjNkMTRiZWY4ZWRiYWExMWQ1ZWFmMjZlZGQzYTBiZTEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xs
YWJsZS1pZnJhbWUuaHRtbApAQCAtMCwwICsxLDYxIEBACis8IWRvY3R5cGUgaHRtbD4KKworPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb3ZlcnNjcm9sbC1iZWhhdmlvci1zdXBwb3J0LmpzIj48
L3NjcmlwdD4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3Jn
L2Nzcy1vdmVyc2Nyb2xsLWJlaGF2aW9yIj4KKzxzdHlsZT4KKyAgICAuc2Nyb2xsaW5nIHsKKyAg
ICAgICAgb3ZlcmZsb3c6IHNjcm9sbDsKKyAgICB9CisgICAgLnNjcm9sbENvbnRlbnQgeworICAg
ICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgfQorICAgICNy
b290IHsKKyAgICAgICAgd2lkdGg6IDIwMHB4OworICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAg
IH0KKyAgICAjc2Nyb2xsZXIgeworICAgICAgICB3aWR0aDogMjAwcHg7CisgICAgICAgIGhlaWdo
dDogMjAwcHg7CisgICAgICAgIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmU7CisgICAgICAgIG92
ZXJmbG93OiB2aXNpYmxlOworICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1
ZGVnLCByZWQsIGJsdWUpOworICAgIH0KKzwvc3R5bGU+Cis8ZGl2IGlkPSdyb290JyBjbGFzcz0i
c2Nyb2xsaW5nIj4KKyAgICA8aWZyYW1lIGlkPSdzY3JvbGxlcicgc3JjZG9jPSI8aHRtbCBzdHls
ZT0nb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZTsnPjxkaXYgc3R5bGU9J3dpZHRoOiAxMDBweDsg
aGVpZ2h0OiAxMDBweDsnPjwvZGl2PjwvaHRtbD4KKyAgICAgICAgIj48L2lmcmFtZT4KKyAgICA8
ZGl2IGNsYXNzPSJzY3JvbGxDb250ZW50Ij48L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0PgorY29u
c3Qgcm9vdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyb290Jyk7Citjb25zdCBzY3JvbGxl
ciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY3JvbGxlcicpOworCitmdW5jdGlvbiByZXNl
dFRlc3QoKSB7CisgICAgcm9vdC5zY3JvbGxMZWZ0ID0gMDsKKyAgICByb290LnNjcm9sbFRvcCA9
IDA7CisgICAgcm9vdC5zY3JvbGxUbygwLCAwKTsKK30KKworZnVuY3Rpb24gc3RhcnRUZXN0KCkg
eworICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgICAgICAgICAgcmVzZXRUZXN0KCk7
CisgICAgICAgICAgICByZXR1cm4gcGVyZm9ybVdoZWVsU2Nyb2xsKHNjcm9sbGVyLCAicmlnaHQi
KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xs
TGVmdCA+IDAsIHRydWUsICdDb250aW51ZSB1cCB0aGUgaG9yaXpvbnRhbCBzY3JvbGwgY2hhaW5p
bmcnKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9LCAnVW5zY3JvbGxhYmxlIGlmcmFtZSBo
b3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4nKTsK
KworICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgICAgICAgICAgcmVzZXRUZXN0KCk7
CisKKyAgICAgICAgICAgIHJldHVybiBwZXJmb3JtV2hlZWxTY3JvbGwoc2Nyb2xsZXIsICJkb3du
IikudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9s
bFRvcCA+IDAsIHRydWUsICdDb250aW51ZSB1cCB0aGUgdmVydGljYWwgc2Nyb2xsIGNoYWluaW5n
Jyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSwgJ1Vuc2Nyb2xsYWJsZSBpZnJhbWUgdmVy
dGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLicpOworfQor
CithZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgc3RhcnRUZXN0KTsKKzwvc2NyaXB0PgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xs
aW5nL3Jlc291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXN1cHBvcnQuanMgYi9MYXlvdXRUZXN0
cy9mYXN0L3Njcm9sbGluZy9yZXNvdXJjZXMvb3ZlcnNjcm9sbC1iZWhhdmlvci1zdXBwb3J0Lmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmVlN2UzMjMyMjE0ZTg4ZWY3YzY3ZTA5OTcyMGIyYjIzN2NhYTcwZTMKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9yZXNvdXJjZXMvb3Zl
cnNjcm9sbC1iZWhhdmlvci1zdXBwb3J0LmpzCkBAIC0wLDAgKzEsMzEgQEAKK2FzeW5jIGZ1bmN0
aW9uIHBlcmZvcm1XaGVlbFNjcm9sbChzY3JvbGxlciwgZGlyZWN0aW9uKSB7CisgICAgdmFyIGRl
bHRhWCA9IDA7CisgICAgdmFyIGRlbHRhWSA9IDA7CisgICAgaWYgKGRpcmVjdGlvbiA9PSAiZG93
biIpCisgICAgICAgIGRlbHRhWSA9IC01OworICAgIGVsc2UgaWYgKGRpcmVjdGlvbiA9PSAidXAi
KQorICAgICAgICBkZWx0YVkgPSA1OworICAgIGVsc2UgaWYgKGRpcmVjdGlvbiA9PSAicmlnaHQi
KQorICAgICAgICBkZWx0YVggPSAtNTsKKyAgICBlbHNlIGlmIChkaXJlY3Rpb24gPT0gImxlZnQi
KQorICAgICAgICBkZWx0YVggPSA1OworCisgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0
aCAvIDI7CisgICAgdmFyIHkgPSBzY3JvbGxlci5jbGllbnRIZWlnaHQgLyAyOworICAgIGV2ZW50
U2VuZGVyLmRyYWdNb2RlID0gZmFsc2U7CisgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZl
bnRzKCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGRlbHRhWCwgZGVsdGFZ
LCAnYmVnYW4nLCAnbm9uZScpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkZWx0YVggKiAyLCBkZWx0YVkgKiAyLCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGRlbHRhWCAqIDMsIGRlbHRhWSAqIDMsICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwg
J2VuZGVkJywgJ25vbmUnKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZGVsdGFYLCBkZWx0YVksICdub25lJywgJ2JlZ2luJyk7CisgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGRlbHRh
WCAqIDIsIGRlbHRhWSAqIDIsICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGRlbHRhWCAqIDMsIGRlbHRh
WSAqIDMsICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgIHJl
dHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFm
dGVyU2Nyb2xsaW5nQ29tcGxldGVzKCgpID0+IHsKKyAgICAgICAgICAgIHJlc29sdmUoKTsKKyAg
ICAgICAgfSk7CisgICAgfSk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rl
c3RFeHBlY3RhdGlvbnMKaW5kZXggYjI1MjRkZDc0NGRhNTU5NDk0NGE0NmNkMTIzY2VkY2I0MzE0
YTExNy4uYjExOWNiMWEzMzQxYWNiZWE4YzhiN2Q0ZDMyNjkwMDdhNzdmNjliMCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMzMsNiArMzMs
MTEgQEAgaHR0cC90ZXN0cy9zZWN1cml0eS94c3MtREVOSUVELXhzbC1leHRlcm5hbC1lbnRpdHkt
bm8tbG9nZ2luZy54bWwgWyBQYXNzIF0KICMgcmRhcjovL3Byb2JsZW0vNjE3OTM4ODQgOiBFbmFi
bGluZyB0aGlzIHRlc3QgZm9yIFdLMSBvbmx5LgogZmFzdC9zaGFwZXMvc2hhcGUtb3V0c2lkZS1m
bG9hdHMvc2hhcGUtb3V0c2lkZS1pbWFnZWRhdGEtb3ZlcmZsb3cuaHRtbCBbIFBhc3MgXQogCisj
IE92ZXJzY3JvbGwtYmVoYXZpb3IgaXMgc3VwcG9ydGVkIG9uIE1hYy4KKyMgRklYTUU6IE5lZWQg
dG8gZmluZCBhIHdheSB0byBibG9jayB0aGUgY3Jvc3MtZnJhbWUgc2Nyb2xsIGNoYWluaW5nIGlu
IFdLMS4KK2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC5odG1sIFsg
U2tpcCBdCitmYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1l
bGVtZW50Lmh0bWwgWyBTa2lwIF0KKwogIy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
LwogIyBFbmQgcGxhdGZvcm0tc3BlY2lmaWMgZGlyZWN0b3JpZXMuCiAjLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMt
d2syL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RF
eHBlY3RhdGlvbnMKaW5kZXggZTg1OThkN2NhOWQ1NTQwYmRhNjFlNjExMzYzZjRlZTExYzhiMGRi
OS4uMjQ4OWEwMDFmOTlkY2E1YmIxNTYzMjc2YjQyODllMzY4ZDRhM2Q3MiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTA0LDYgKzEwNCwx
MiBAQCBmYXN0L2FuaW1hdGlvbi9yZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZS1pbi10d28tcGFnZXMu
aHRtbCBbIFBhc3MgXQogZmFzdC9mb3Jtcy9maWxlL2VudHJpZXMtYXBpL2ltYWdlLXRyYW5zY29k
ZS1vcGVuLXBhbmVsLmh0bWwgWyBQYXNzIF0KIGZhc3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFwaS9p
bWFnZS1uby10cmFuc2NvZGUtb3Blbi1wYW5lbC5odG1sIFsgUGFzcyBdCiAKKyMgT3ZlcnNjcm9s
bC1iZWhhdmlvciBpcyBvbmx5IHN1cHBvcnRlZCBvbiBNYWMKK2Zhc3Qvc2Nyb2xsaW5nL292ZXJz
Y3JvbGwtYmVoYXZpb3ItZWxlbWVudC5odG1sIFsgUGFzcyBdCitmYXN0L3Njcm9sbGluZy9vdmVy
c2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS5odG1sIFsgUGFzcyBdCitmYXN0L3Njcm9sbGluZy9vdmVy
c2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWwgWyBQYXNzIF0KK2Zhc3Qv
c2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sIFsg
UGFzcyBdCisKICMvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICMgRW5kIHBsYXRm
b3JtLXNwZWNpZmljIGRpcmVjdG9yaWVzLgogIy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417809</attachid>
            <date>2021-01-18 00:41:50 -0800</date>
            <delta_ts>2021-01-18 00:53:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220139-20210118164148.patch</filename>
            <type>text/plain</type>
            <size>83530</size>
            <attacher name="cathiechen">cathiechen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxNTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2VjZjQwOGEyYjNhYWM3
MmE1NTM1NTNjNDQwMTFiOTU3MDgwYzJmNS4uMDQ2ZDRjMjlkOGUwNTkxZmM0MzNhOWYzZGU3NjJi
MjgyNWJjNTA5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMCBAQAorMjAyMS0wMS0xNSAgQ2F0
aGllIENoZW4gIDxjYXRoaWVjaGVuQGlnYWxpYS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IENT
UyBvdmVyc2Nyb2xsLWJlaGF2aW9yIG9uIE1hYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwMTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQmFzZWQgb24gRnLDqWTDqXJpYyBXYW5nJ3MgcGF0Y2guCisK
KyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIG92ZXJzY3JvbGwtYmVoYXZpb3Ig
b24gTWFjLgorICAgICAgICBBY2NvcmRpbmcgdG8gWzFdLCB0aGVyZSBhcmUgdHdvIGtpbmRzIG9m
IGFjdGlvbnM6IG5vbi1sb2NhbCBib3VuZGFyeSBkZWZhdWx0IGFjdGlvbnMgYW5kIGxvY2FsIGJv
dW5kYXJ5IGRlZmF1bHQgYWN0aW9ucy4KKyAgICAgICAgSW4gV2ViS2l0IG1hYywgdGhlIHJ1YmJl
ciBiYW5kaW5nIGVmZm9ydCBpcyBiZWxvbmdlZCB0byBsb2NhbCBib3VuZGFyeSBkZWZhdWx0IGFj
dGlvbnMuIFRoZSBzY3JvbGwgY2hhaW5pbmcgYW5kIHN3aXBlCisgICAgICAgIGdlc3R1cmVzICh0
cmlnZ2VyIGdvIGJhY2sgb3IgZ28gZm9yd2FyZCBhY3Rpb25zKSBhcmUgYmVsb25nZWQgdG8gbm9u
LWxvY2FsIGJvdW5kYXJ5IGRlZmF1bHQgYWN0aW9ucy4KKyAgICAgICAgMS4gVG8gaGFuZGxlIHRo
ZSBydWJiZXIgYmFuZGluZyBlZmZlY3QsIHNob3VsZFN0b3BIb3Jpem9udGFsU3RyZWNoKCkgYW5k
IHNob3VsZFN0b3BWZXJ0aWNhbFN0cmVjaCgpIGFyZSBhZGRlZCB0byBkZWNpZGUKKyAgICAgICAg
d2hldGhlciB0aGUgcnViYmVyIGJhbmRpbmcgZWZmb3J0IGlzIGFsbG93ZWQgb3Igbm90LgorICAg
ICAgICAyLiBUbyBibG9jayBzY3JvbGwgY2hhaW5pbmcgYWN0aW9ucyBpbiBkaWZmZXJlbnQgc2Ny
b2xsIG1vZGVzLgorICAgICAgICAgIC0gRm9yIGFzeW5jaHJvbm91cyBzY3JvbGxpbmcsIGl0J3Mg
aGFuZGxlZCBpbiBTY3JvbGxpbmdUcmVlOjpoYW5kbGVXaGVlbEV2ZW50V2l0aE5vZGUoKSwgYWNj
b3JkaW5nIHRvIHRoZSB2YWx1ZSBvZgorICAgICAgICAgIG92ZXJzY3JvbGwtYmVoYXZpb3IsIGl0
IGJsb2NrcyB0aGUgc2Nyb2xsIGNoYWluaW5nIGlmIG5lZWRlZCwgdGhlIHJlc3VsdCB3b3VsZCBi
ZSBhZGRlZCB0byBtX2xhdGNoaW5nQ29udHJvbGxlcgorICAgICAgICAgIGFuZCBtaWdodCBiZSBy
ZXVzZWQuCisgICAgICAgICAgLSBGb3Igc3luY2hyb25vdXMgc2Nyb2xsaW5nLCBpZiBXSEVFTF9F
VkVOVF9MQVRDSElORyBpcyBkaXNhYmxlZCwgaXQgaGFuZGxlcyBvdmVyc2Nyb2xsLWJlaGF2aW9y
IGluIGhhbmRsZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94KCkuCisgICAgICAg
ICAgSWYgV0hFRUxfRVZFTlRfTEFUQ0hJTkcgaXMgZW5hYmxlZC4gT3ZlcnNjcm9sbC1iZWhhdmlv
ciBpcyBoYW5kbGVkIGluIGZpbmRFbmNsb3NpbmdTY3JvbGxhYmxlQ29udGFpbmVyKCkuCisgICAg
ICAgICAgSXQgYWRkZWQgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIHRvIEZyYW1lU3RhdGUgdG8gaW5k
aWNhdGUgd2hldGhlciB0aGUgY3VycmVudCBsYXRjaGVkIG5vZGUgc2hvdWxkIGJsb2NrIHNjcm9s
bCBjaGFpbmluZy4KKyAgICAgICAgICBJZiB0aGUgY3VycmVudCBmcmFtZSBpcyBhIHN1YmZyYW1l
LCBpdCBwYXNzZXMgaXRzIFNjcm9sbENoYWluaW5nQmxvY2tlciB0byB0aGUgcGFyZW50ZnJhbWUs
IGFuZCBldmVudHVhbGx5CisgICAgICAgICAgbGV0IHRoZSBtYWluZnJhbWUgZGVjaWRlIHdoZXRo
ZXIgc2hvdWxkIHRyaWdnZXIgc3dpcGUgZ2VzdHVyZXMgb3Igbm90LgorICAgICAgICAzLiBUaGUg
c3dpcGUgZ2VzdHVyZXMuCisgICAgICAgICAgSWYgdGhlIG1haW5mcmFtZSByZWFjaGVzIGl0cyBz
Y3JvbGwgZWRnZXMsIHRoZXJlIHdpbGwgYmUgc3dpcGUgZ2VzdHVyZXMgZXZlbiBpZiBvdmVyc2Ny
b2xsLWJlaGF2aW9yJ3MgdmFsdWUgaXMgbm9uZS4KKyAgICAgICAgICBUaGlzIGJlaGF2aW9yIGlz
IG5vdCBzdXBvb3J0ZWQgaW4gV0sxIGFuZCBXSzIncyBzeW5jaHJvbm91cyBzY3JvbGwgd2l0aCBX
SEVFTF9FVkVOVF9MQVRDSElORyBvZmYuCisKKyAgICAgICAgWzFdIGh0dHBzOi8vZHJhZnRzLmNz
c3dnLm9yZy9jc3Mtb3ZlcnNjcm9sbC0xLyNvdmVyc2Nyb2xsLWJlaGF2aW9yLXByb3BlcnRpZXMK
KworICAgICAgICBUZXN0czogZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVt
ZW50Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZp
b3ItaWZyYW1lLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwt
YmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9z
Y3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLmh0bWwKKwor
ICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0
ZVBhcmVudEZyYW1lU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKTogQXBwbGllZCB0aGUgY3VycmVudCBm
cmFtZSdzIG92ZXJzY3JvbGwtYmVoYXZpb3IgdmFsdWUgdG8gU2Nyb2xsQ2hhaW5pbmdCbG9ja2Vy
CisgICAgICAgIGFuZCBwYXNzIHRoaXMgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIHRvIHBhcmVudCBm
cmFtZS4KKyAgICAgICAgKFdlYkNvcmU6Om92ZXJzY3JvbGxCZWhhdmlvclN0b3BzU2Nyb2xsQ2hh
aW5pbmcpOiBVcGRhdGVkIHNjcm9sbENoYWluaW5nQmxvY2tlciBhbmQgY2hlY2tlZCBpZiBpdCBz
aG91bGQgYmxvY2sgdGhlIHNjcm9sbCBjaGFpbmluZy4KKyAgICAgICAgVGhlIGNoYWluaW5nIG9m
IHZlcnRpY2FsIHNjcm9sbCB3aWxsIGJlIHN0b3BwZWQgZGlyZWN0bHkuIEZvciBob3Jpem9udGFs
IHNjcm9sbCwgaWYgbWFpbmZyYW1lIHJlYWNoZXMgdGhlIGVkZ2VzLCBpdCBkb2Vzbid0IHN0b3Ag
dHJpZ2dlcmluZworICAgICAgICBzd2lwZSBnZXN0dXJlLiBTdWJmcmFtZXMgd2lsbCBpbnN0ZWFk
IHVwZGF0ZSB0aGUgYmxvY2tlciBpbiBTY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIuIElmIHRoZSBz
Y3JvbGwgY2hhaW5pbmcgc2hvdWxkIGNvbnRpbnVlLCBmaWx0ZXIgd2hlZWxFdmVudCdzIGRlbHRh
IGluc3RlYWQuIAorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2
ZW50SW50ZXJuYWwpOiBXaGVuIFdIRUVMX0VWRU5UX0xBVENISU5HIGlzIGVuYWJsZWQsIGNoZWNr
IG92ZXJzY3JvbGxCZWhhdmlvclN0b3BzU2Nyb2xsQ2hhaW5pbmcuCisgICAgICAgIFVwZGF0ZSB0
aGUgc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIGluIFNjcm9sbExhdGNoaW5nQ29udHJvbGxlciBpZiBp
dCdzIG5vdCBtYWluZnJhbWUuIFN0b3AgdGhlIHNjcm9sbCBjaGFpbmluZyBpZiBuZWVkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpkaWRTY3JvbGxJblNjcm9sbGFibGVBcmVhKTogQWRkZWQgcGFyYW1l
dGVyIFNjcm9sbENoYWluaW5nQmxvY2tlciwgYW5kIGZpbHRlciB0aGUgZmlsdGVyZWREZWx0YSBi
eSBpdC4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudElu
QXBwcm9wcmlhdGVFbmNsb3NpbmdCb3gpOiBVcGRhdGUgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLCBh
bmQgc3RvcCB0aGUgc2Nyb2xsIGNoYWluaW5nIGlmIG5lZWRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkV2ZW50SGFuZGxlcjo6ZGVmYXVsdFdoZWVsRXZlbnRIYW5kbGVyKTogRmlsdGVyIHRoZSB3aGVl
bEV2ZW50J3MgZGVsdGEgYnkgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIHN0b3JlZCBpbiBzY3JvbGxM
YXRjaGluZ0NvbnRyb2xsZXIuCisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuaDoKKyAgICAg
ICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6Omhv
cml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IgY29uc3QpOiBPdmVyc2Nyb2xsLWJlaGF2aW9yIG9u
bHkgYWZmZWN0IHNjcm9sbGFibGUgRnJhbWVWaWV3LgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVW
aWV3Ojp2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvciBjb25zdCk6IERpdHRvLgorICAgICAgICAq
IHBhZ2UvRnJhbWVWaWV3Lmg6CisgICAgICAgICogcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1t
OgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkT3ZlcnNjcm9sbEJlaGF2aW9yQmxvY2tTY3JvbGxD
aGFpbmluZyk6IFVwZGF0ZSBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIgYW5kIGNoZWNrIGlmIHRoZSBz
Y3JvbGwgY2hhaW5pbmcgc2hvdWxkIGJlIHN0b3BwZWQuCisgICAgICAgIChXZWJDb3JlOjpmaW5k
RW5jbG9zaW5nU2Nyb2xsYWJsZUNvbnRhaW5lcik6IFN0b3AgdGhlIHNjcm9sbCBjaGFpbmluZyBp
ZiBuZWVkZWQuCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmRldGVybWluZVdoZWVs
RXZlbnRUYXJnZXQpOiBTdG9yZXMgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIGluIHNjcm9sbExhdGNo
aW5nQ29udHJvbGxlcgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29v
cmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNTY3JvbGxpbmdDb29yZGluYXRv
cjo6c2V0U2Nyb2xsaW5nTm9kZVNjcm9sbGFibGVBcmVhR2VvbWV0cnkpOiBVcGRhdGUgb3ZlcnNj
cm9sbC1iZWhhdmlvciB2YWx1ZXMgaW4gc2Nyb2xsUGFyYW1ldGVycy4KKyAgICAgICAgKiBwYWdl
L3Njcm9sbGluZy9TY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyOjp1cGRhdGVBbmRGZXRjaExhdGNoaW5nU3RhdGVG
b3JGcmFtZSk6IEFkZCBTY3JvbGxDaGFpbmluZ0Jsb2NrZXIgdG8gRnJhbWVTdGF0ZS4KKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbExhdGNoaW5nQ29udHJvbGxlcjo6Z2V0U2Nyb2xsQ2hhaW5pbmdC
bG9ja2VyIGNvbnN0KTogUmV0dXJucyBTY3JvbGxDaGFpbmluZ0Jsb2NrZXIgb2YgZnJhbWUuCisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXI6OnVwZGF0ZVNjcm9sbENo
YWluaW5nQmxvY2tlcik6IFVwZGF0ZXMgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIG9mIGZyYW1lLgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyOjpkdW1wIGNvbnN0KToK
KyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIuaDoKKyAg
ICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvclR5cGVzLmg6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnM6Om9wZXJhdG9yPT0gY29uc3Qp
OiBBZGRlZCBob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yIGFuZCB2ZXJ0aWNhbE92ZXJzY3Jv
bGxCZWhhdmlvci4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWU6OnNob3VsZEJsb2NrU2Nyb2xsQ2hhaW5p
bmdXaXRoTm9kZSk6IFVwZGF0ZSBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIgYW5kIGNoZWNrIGlmIHRo
ZSBzY3JvbGwgY2hhaW5pbmcgc2hvdWxkIGJlIHN0b3BwZWQuCisgICAgICAgIElmIG5vdCwgZmls
dGVyIHRoZSB3aGVlbEV2ZW50J3MgZGVsdGEuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdU
cmVlOjpoYW5kbGVXaGVlbEV2ZW50V2l0aE5vZGUpOiBTdG9wIHRoZSBzY3JvbGwgY2hhaW5pbmcg
aWYgbmVlZGVkLgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuaDoKKyAg
ICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6aG9yaXpvbnRhbE92
ZXJzY3JvbGxCZWhhdmlvciBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGU6OnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yIGNvbnN0KTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6dXBk
YXRlU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyU3RhdGUgY29uc3QpOgorICAgICAgICAqIHBhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmg6CisgICAgICAgICogcGFnZS9zY3Jv
bGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMuaDoKKyAgICAg
ICAgKiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVs
ZWdhdGVNYWM6OmFsbG93c0hvcml6b250YWxTdHJldGNoaW5nIGNvbnN0KTogSWYgb3ZlcnNjcm9s
bC1iZWhhdmlvci14OiBub25lLCB0aGUgc2Nyb2xsIHN0cmV0Y2ggc2hvdWxkIGJlIGJsb2NrZWQu
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFj
OjphbGxvd3NWZXJ0aWNhbFN0cmV0Y2hpbmcgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OnNob3VsZFN0b3BIb3Jp
em9udGFsU3RyZWNoIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjpzaG91bGRTdG9wVmVydGljYWxTdHJlY2ggY29u
c3QpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtV2hlZWxFdmVudDo6d2hlZWxEZWx0YUJpYXNpbmdUb3dh
cmRzVmVydGljYWwpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFR5cGVzLmg6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxDaGFpbmluZ0Jsb2NrZXI6OnNob3VsZEJsb2NrU2Nyb2xsQ2hhaW5p
bmcpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQ2hhaW5pbmdCbG9ja2VyOjpmaWx0ZXJEZWx0
YSk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYWJsZUFyZWE6OnVwZGF0ZVNjcm9sbENoYWluaW5nQmxvY2tlclN0YXRlIGNv
bnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYWJsZUFyZWE6Omhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWE6OnZlcnRpY2FsT3ZlcnNjcm9sbEJl
aGF2aW9yIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9sbGVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxDb250cm9sbGVyQ2xpZW50OjpzaG91bGRTdG9w
SG9yaXpvbnRhbFN0cmVjaCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxDb250cm9s
bGVyQ2xpZW50OjpzaG91bGRTdG9wVmVydGljYWxTdHJlY2ggY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIubW06CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxDb250cm9sbGVyOjpoYW5kbGVXaGVlbEV2ZW50KTogU3RvcCBzY3JvbGwgc3RyZWNoaW5nIGlm
IG5lZWRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbENvbnRyb2xsZXI6OmRpcmVjdGlvbkZy
b21FdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxDb250cm9sbGVyOjp3aGVlbERlbHRh
Qmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFj
L1Njcm9sbEFuaW1hdG9yTWFjLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1h
dG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JNYWM6OnNob3VsZFN0
b3BIb3Jpem9udGFsU3RyZWNoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1h
dG9yTWFjOjpzaG91bGRTdG9wVmVydGljYWxTdHJlY2ggY29uc3QpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6aG9y
aXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllcjo6dmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IgY29uc3QpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJMYXllci5oOgorCiAyMDIxLTAxLTE3ICBLaW1tbyBLaW5udW5lbiAgPGtr
aW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJl
c2hhcGVGQk9zKCkgQU5HTEUgdmFyaWFudCBjYWxscyBpbnRvIG1ha2VDb250ZXh0Q3VycmVudCgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IGNjNzcxYTU2MTZkYTRmNDBhOWNjZjE2MDZiNzc0NTBiNGNkY2ZiNGYuLjIy
MWZhOGM1ZWM2MTgwYmU2NTM2MmNmY2Q2ZjQ0YjIxYTg4MWFkNmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTcgQEAKKzIwMjEtMDEtMTUgIENhdGhpZSBDaGVuICA8Y2F0aGllY2hlbkBpZ2FsaWEuY29t
PgorCisgICAgICAgIEltcGxlbWVudCBDU1Mgb3ZlcnNjcm9sbC1iZWhhdmlvciBvbiBNYWMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDEzOQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJhc2VkIG9uIEZy
w6lkw6lyaWMgV2FuZydzIHBhdGNoLgorCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8U2Nyb2xsYWJsZUFyZWFQ
YXJhbWV0ZXJzPjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxTY3JvbGxh
YmxlQXJlYVBhcmFtZXRlcnM+OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuaDoKKwogMjAyMS0wMS0xNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBw
bGUuY29tPgogCiAgICAgICAgIEpJVE9wZXJhdGlvbiBkb2VzIG5vdCBleGlzdCBpbiBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBlYzQ2NTE4NmFiZmEzZjc0M2FlMmNlN2Iz
ZDM2ZmI0MWE2NzkwN2M1Li41MTUxNGE2ZGU4OWY5YzUxMWU4ZDJiYzJhZTg3ZDQ1MWQ2ZDUyOTFh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEtMDEt
MTUgIENhdGhpZSBDaGVuICA8Y2F0aGllY2hlbkBpZ2FsaWEuY29tPgorCisgICAgICAgIEltcGxl
bWVudCBDU1Mgb3ZlcnNjcm9sbC1iZWhhdmlvciBvbiBNYWMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDEzOQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJhc2VkIG9uIEZyw6lkw6lyaWMgV2FuZydzIHBh
dGNoLgorCisgICAgICAgIE5lZWQgdG8gZmluZCBhIHdheSB0byBibG9jayB0aGUgY3Jvc3MtZnJh
bWUgc2Nyb2xsIGNoYWluaW5nIGluIFdLMS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZp
ZXcubW06CisgICAgICAgICgtW1dlYkhUTUxWaWV3IHNjcm9sbFdoZWVsOl0pOgorCiAyMDIxLTAx
LTE0ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3Zl
ZCBtb3N0IHVzZXMgb2YgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwg
Li4uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IGQ2OWYyOTcwNDUzMWU3
ODcyNTg4ZDRhNWZmOGQzYTU0YmUzNmVhZTEuLmVmMDc5YjUyODk2YmZlYzUzYjM0N2IxNDhmYWE5
MjZlNmZjNmFmNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTI4MzIs
NiArMjgzMiw1NiBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQ
bGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIE9wdGlvbgogICAgIHJldHVybiBoYW5kbGVk
OwogfQogCisjaWYgRU5BQkxFKFdIRUVMX0VWRU5UX0xBVENISU5HKQorc3RhdGljIHZvaWQgdXBk
YXRlUGFyZW50RnJhbWVTY3JvbGxDaGFpbmluZ0Jsb2NrZXIoY29uc3QgU2Nyb2xsYWJsZUFyZWEq
IHNjcm9sbGFibGVBcmVhLCBGcmFtZSYgZnJhbWUsIFNjcm9sbENoYWluaW5nQmxvY2tlciYgYmxv
Y2tlcikKK3sKKyAgICBhdXRvKiBwYXJlbnQgPSBmcmFtZS50cmVlKCkucGFyZW50KCk7CisgICAg
aWYgKCFzY3JvbGxhYmxlQXJlYSkKKyAgICAgICAgc2Nyb2xsYWJsZUFyZWEgPSBmcmFtZS52aWV3
KCk7CisgICAgaWYgKCFmcmFtZS5wYWdlKCkgfHwgIXBhcmVudCB8fCAhc2Nyb2xsYWJsZUFyZWEp
CisgICAgICAgIHJldHVybjsKKyAgICBzY3JvbGxhYmxlQXJlYS0+dXBkYXRlU2Nyb2xsQ2hhaW5p
bmdCbG9ja2VyU3RhdGUoYmxvY2tlcik7CisgICAgZnJhbWUucGFnZSgpLT5zY3JvbGxMYXRjaGlu
Z0NvbnRyb2xsZXIoKS51cGRhdGVTY3JvbGxDaGFpbmluZ0Jsb2NrZXIoKnBhcmVudCwgYmxvY2tl
cik7Cit9CisKK3N0YXRpYyBib29sIG92ZXJzY3JvbGxCZWhhdmlvclN0b3BzU2Nyb2xsQ2hhaW5p
bmcoY29uc3QgU2Nyb2xsYWJsZUFyZWEqIHNjcm9sbGFibGVBcmVhLCBGcmFtZSYgZnJhbWUsIFBs
YXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIHNjcm9s
bENoYWluaW5nQmxvY2tlciwgYm9vbCYgaGFuZGxlZEV2ZW50KQoreworICAgIGlmICghc2Nyb2xs
YWJsZUFyZWEpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChzY3JvbGxhYmxlQXJl
YSAhPSBmcmFtZS52aWV3KCkpIHsKKyAgICAgICAgLy8gV2hlZWwgZXZlbnQgaXMgZ29pbmcgdG8g
YmUgaGFuZGxlZCBieSBGcmFtZVZpZXcgaW4gcHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxpbmco
KSwKKyAgICAgICAgLy8gc2hvdWxkIGxldCBzY3JvbGxhYmxlQXJlYSdzIG92ZXJzY3JvbGwtYmVo
YXZpb3IgZWZmZWN0IFNjcm9sbENoYWluaW5nQmxvY2tlci4KKyAgICAgICAgc2Nyb2xsYWJsZUFy
ZWEtPnVwZGF0ZVNjcm9sbENoYWluaW5nQmxvY2tlclN0YXRlKHNjcm9sbENoYWluaW5nQmxvY2tl
cik7CisgICAgfQorCisgICAgRmxvYXRTaXplIGZpbHRlcmVkRGVsdGEod2hlZWxFdmVudC5kZWx0
YVgoKSwgd2hlZWxFdmVudC5kZWx0YVkoKSk7CisgICAgYXV0byBiaWFzZWREZWx0YSA9IFBsYXRm
b3JtV2hlZWxFdmVudDo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoZmlsdGVyZWRE
ZWx0YSk7CisgICAgaWYgKHNjcm9sbENoYWluaW5nQmxvY2tlci5ibG9ja1ggJiYgIWJpYXNlZERl
bHRhLmhlaWdodCgpKSB7CisgICAgICAgIC8vIElmIHRoZSBob3Jpem9udGFsIHNjcm9sbCBjaGFp
bmluZyBpcyBibG9ja2VkIGJ5IG92ZXJzY3JvbGwtYmVoYXZpb3IgaW4gYSBzdWJmcmFtZS4KKyAg
ICAgICAgLy8gSXQgcHJvcGFnYXRlcyBpdHMgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIHRvIHBhcmVu
dCBmcmFtZXMgYW5kIGV2ZW50dWFsbHkgbGV0IG1haW5mcmFtZQorICAgICAgICAvLyBkZWNpZGUg
d2hldGhlciBuZWVkIHRvIHRyaWdnZXIgYSBzd2lwZSBnZXN0dXJlIG9yIG5vdC4KKyAgICAgICAg
aWYgKGZyYW1lLmlzTWFpbkZyYW1lKCkpIHsKKyAgICAgICAgICAgIC8vIEluIG1haW4gZnJhbWUs
IGlmIHRoZSBzY3JvbGwgcG9zaXRpb24gcmVhY2hlcyB0byBpdHMgZWRnZXMsIHRyaWdnZXIgdGhl
IHN3aXBlIGdlc3R1cmUsIG90aGVyd2lzZSBub3QuCisgICAgICAgICAgICBoYW5kbGVkRXZlbnQg
PSAhKGJpYXNlZERlbHRhLndpZHRoKCkgJiYgc2Nyb2xsYWJsZUFyZWEtPmlzUGlubmVkRm9yU2Ny
b2xsRGVsdGFPbkF4aXMoLWJpYXNlZERlbHRhLndpZHRoKCksIFNjcm9sbEV2ZW50QXhpczo6SG9y
aXpvbnRhbCkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdXBkYXRlUGFyZW50RnJh
bWVTY3JvbGxDaGFpbmluZ0Jsb2NrZXIoc2Nyb2xsYWJsZUFyZWEsIGZyYW1lLCBzY3JvbGxDaGFp
bmluZ0Jsb2NrZXIpOworICAgICAgICAgICAgaGFuZGxlZEV2ZW50ID0gZmFsc2U7CisgICAgICAg
IH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgaWYgKFNjcm9sbENoYWluaW5n
QmxvY2tlcjo6c2hvdWxkQmxvY2tTY3JvbGxDaGFpbmluZyhzY3JvbGxDaGFpbmluZ0Jsb2NrZXIs
IGJpYXNlZERlbHRhKSkgeworICAgICAgICBoYW5kbGVkRXZlbnQgPSB0cnVlOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBTY3JvbGxDaGFpbmluZ0Jsb2NrZXI6OmZpbHRlckRl
bHRhKHNjcm9sbENoYWluaW5nQmxvY2tlciwgYmlhc2VkRGVsdGEsIGZpbHRlcmVkRGVsdGEpOwor
ICAgIHdoZWVsRXZlbnQgPSB3aGVlbEV2ZW50LmNvcHlXaXRoRGVsdGFzQW5kVmVsb2NpdHkoZmls
dGVyZWREZWx0YS53aWR0aCgpLCBmaWx0ZXJlZERlbHRhLmhlaWdodCgpLCB3aGVlbEV2ZW50LnNj
cm9sbGluZ1ZlbG9jaXR5KCkpOworICAgIHJldHVybiBmYWxzZTsKK30KKyNlbmRpZgorCiBib29s
IEV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudEludGVybmFsKGNvbnN0IFBsYXRmb3JtV2hl
ZWxFdmVudCYgZXZlbnQsIE9wdGlvblNldDxXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBzPiBwcm9j
ZXNzaW5nU3RlcHMsIE9wdGlvblNldDxFdmVudEhhbmRsaW5nPiYgaGFuZGxpbmcpCiB7CiAgICAg
YXV0byogZG9jdW1lbnQgPSBtX2ZyYW1lLmRvY3VtZW50KCk7CkBAIC0yOTI0LDEyICsyOTc0LDMx
IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50SW50ZXJuYWwoY29uc3QgUGxh
dGZvcm1XaGVlbEV2ZW50JiBldmVudCwgT3B0CiAjaWYgRU5BQkxFKFdIRUVMX0VWRU5UX0xBVENI
SU5HKQogICAgIGlmIChhbGxvd1Njcm9sbGluZykKICAgICAgICAgYWxsb3dTY3JvbGxpbmcgPSBt
X2ZyYW1lLnBhZ2UoKS0+c2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyKCkubGF0Y2hpbmdBbGxvd3NT
Y3JvbGxpbmdJbkZyYW1lKG1fZnJhbWUsIHNjcm9sbGFibGVBcmVhKTsKKyAgICBTY3JvbGxDaGFp
bmluZ0Jsb2NrZXIgYmxvY2tlckZyb21MYXRjaGluZ0NvbnRyb2xsZXIgPSBtX2ZyYW1lLnBhZ2Uo
KS0+c2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyKCkuZ2V0U2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKG1f
ZnJhbWUpOworICAgIGlmICghKGFsbG93U2Nyb2xsaW5nIHx8IG1fZnJhbWUuaXNNYWluRnJhbWUo
KSkpCisgICAgICAgIHVwZGF0ZVBhcmVudEZyYW1lU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKHNjcm9s
bGFibGVBcmVhLmdldCgpLCBtX2ZyYW1lLCBibG9ja2VyRnJvbUxhdGNoaW5nQ29udHJvbGxlcik7
CiAjZW5kaWYKIAogICAgIGlmIChhbGxvd1Njcm9sbGluZykgewotICAgICAgICAvLyBGSVhNRTog
cHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxpbmcoKSBpcyBvbmx5IGNhbGxlZCBmb3IgRnJhbWVW
aWV3IHNjcm9sbGluZywgbm90IG92ZXJmbG93IHNjcm9sbGluZywgd2hpY2ggaXMgY29uZnVzaW5n
LgotICAgICAgICBoYW5kbGVkRXZlbnQgPSBwcm9jZXNzV2hlZWxFdmVudEZvclNjcm9sbGluZyhl
dmVudCwgc2Nyb2xsYWJsZUFyZWEsIGhhbmRsaW5nKTsKLSAgICAgICAgcHJvY2Vzc1doZWVsRXZl
bnRGb3JTY3JvbGxTbmFwKGV2ZW50LCBzY3JvbGxhYmxlQXJlYSk7CisgICAgICAgIFBsYXRmb3Jt
V2hlZWxFdmVudCBhZGp1c3RlZFdoZWVsRXZlbnQgPSBQbGF0Zm9ybVdoZWVsRXZlbnQoZXZlbnQp
OworICAgICAgICBib29sIHNjcm9sbENoYWluaW5nU3RvcHBlZCA9IGZhbHNlOworI2lmIEVOQUJM
RShXSEVFTF9FVkVOVF9MQVRDSElORykKKyAgICAgICAgc2Nyb2xsQ2hhaW5pbmdTdG9wcGVkID0g
b3ZlcnNjcm9sbEJlaGF2aW9yU3RvcHNTY3JvbGxDaGFpbmluZyhzY3JvbGxhYmxlQXJlYS5nZXQo
KSwgbV9mcmFtZSwgYWRqdXN0ZWRXaGVlbEV2ZW50LCBibG9ja2VyRnJvbUxhdGNoaW5nQ29udHJv
bGxlciwgaGFuZGxlZEV2ZW50KTsKKyNlbmRpZgorICAgICAgICBpZiAoIXNjcm9sbENoYWluaW5n
U3RvcHBlZCkgeworICAgICAgICAgICAgLy8gRklYTUU6IHByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Ny
b2xsaW5nKCkgaXMgb25seSBjYWxsZWQgZm9yIEZyYW1lVmlldyBzY3JvbGxpbmcsIG5vdCBvdmVy
ZmxvdyBzY3JvbGxpbmcsIHdoaWNoIGlzIGNvbmZ1c2luZy4KKyAgICAgICAgICAgIGhhbmRsZWRF
dmVudCA9IHByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKGFkanVzdGVkV2hlZWxFdmVudCwg
c2Nyb2xsYWJsZUFyZWEsIGhhbmRsaW5nKTsKKyAgICAgICAgICAgIHByb2Nlc3NXaGVlbEV2ZW50
Rm9yU2Nyb2xsU25hcChhZGp1c3RlZFdoZWVsRXZlbnQsIHNjcm9sbGFibGVBcmVhKTsKKyAgICAg
ICAgfQorI2lmICFFTkFCTEUoV0hFRUxfRVZFTlRfTEFUQ0hJTkcpCisgICAgICAgIGlmIChhdXRv
KiB2aWV3ID0gbV9mcmFtZS52aWV3KCkpIHsKKyAgICAgICAgICAgIFNjcm9sbENoYWluaW5nQmxv
Y2tlciBibG9ja2VyID0geyB2aWV3LT5ob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgIT0g
T3ZlcnNjcm9sbEJlaGF2aW9yOjpBdXRvLCB2aWV3LT52ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlv
cigpICE9IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0byB9OworICAgICAgICAgICAgaWYgKCFoYW5k
bGVkRXZlbnQpIHsKKyAgICAgICAgICAgICAgICBhdXRvIGJpYXNlZERlbHRhID0gUGxhdGZvcm1X
aGVlbEV2ZW50Ojp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbChhZGp1c3RlZFdoZWVs
RXZlbnQuZGVsdGEoKSk7CisgICAgICAgICAgICAgICAgaGFuZGxlZEV2ZW50ID0gU2Nyb2xsQ2hh
aW5pbmdCbG9ja2VyOjpzaG91bGRCbG9ja1Njcm9sbENoYWluaW5nKGJsb2NrZXIsIGJpYXNlZERl
bHRhKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorI2VuZGlmCiAgICAgfQogCiAgICAgcmV0
dXJuIGhhbmRsZWRFdmVudDsKQEAgLTI5NDYsMjAgKzMwMTUsMjMgQEAgc3RhdGljIHZvaWQgaGFu
ZGxlV2hlZWxFdmVudFBoYXNlSW5TY3JvbGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSYgc2Nyb2xs
YWJsZUFyZWEKICNlbmRpZgogfQogCi1zdGF0aWMgYm9vbCBkaWRTY3JvbGxJblNjcm9sbGFibGVB
cmVhKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSwgY29uc3QgV2hlZWxFdmVudCYgd2hl
ZWxFdmVudCkKK3N0YXRpYyBib29sIGRpZFNjcm9sbEluU2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJs
ZUFyZWEmIHNjcm9sbGFibGVBcmVhLCBjb25zdCBXaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBjb25z
dCBTY3JvbGxDaGFpbmluZ0Jsb2NrZXImIGJsb2NrZXIpCiB7CisgICAgRmxvYXRTaXplIGZpbHRl
cmVkRGVsdGEod2hlZWxFdmVudC5kZWx0YVgoKSwgd2hlZWxFdmVudC5kZWx0YVkoKSk7CisgICAg
YXV0byBiaWFzZWREZWx0YSA9IFBsYXRmb3JtV2hlZWxFdmVudDo6d2hlZWxEZWx0YUJpYXNpbmdU
b3dhcmRzVmVydGljYWwoZmlsdGVyZWREZWx0YSk7CisgICAgU2Nyb2xsQ2hhaW5pbmdCbG9ja2Vy
OjpmaWx0ZXJEZWx0YShibG9ja2VyLCBiaWFzZWREZWx0YSwgZmlsdGVyZWREZWx0YSk7CiAgICAg
U2Nyb2xsR3JhbnVsYXJpdHkgc2Nyb2xsR3JhbnVsYXJpdHkgPSB3aGVlbEdyYW51bGFyaXR5VG9T
Y3JvbGxHcmFudWxhcml0eSh3aGVlbEV2ZW50LmRlbHRhTW9kZSgpKTsKICAgICBib29sIGRpZEhh
bmRsZVdoZWVsRXZlbnQgPSBmYWxzZTsKLSAgICBpZiAoZmxvYXQgYWJzb2x1dGVEZWx0YSA9IHN0
ZDo6YWJzKHdoZWVsRXZlbnQuZGVsdGFYKCkpKQotICAgICAgICBkaWRIYW5kbGVXaGVlbEV2ZW50
IHw9IHNjcm9sbGFibGVBcmVhLnNjcm9sbCh3aGVlbEV2ZW50LmRlbHRhWCgpID4gMCA/IFNjcm9s
bFJpZ2h0IDogU2Nyb2xsTGVmdCwgc2Nyb2xsR3JhbnVsYXJpdHksIGFic29sdXRlRGVsdGEpOwor
ICAgIGlmIChmbG9hdCBhYnNvbHV0ZURlbHRhID0gc3RkOjphYnMoZmlsdGVyZWREZWx0YS53aWR0
aCgpKSkKKyAgICAgICAgZGlkSGFuZGxlV2hlZWxFdmVudCB8PSBzY3JvbGxhYmxlQXJlYS5zY3Jv
bGwoZmlsdGVyZWREZWx0YS53aWR0aCgpID4gMCA/IFNjcm9sbFJpZ2h0IDogU2Nyb2xsTGVmdCwg
c2Nyb2xsR3JhbnVsYXJpdHksIGFic29sdXRlRGVsdGEpOwogCi0gICAgaWYgKGZsb2F0IGFic29s
dXRlRGVsdGEgPSBzdGQ6OmFicyh3aGVlbEV2ZW50LmRlbHRhWSgpKSkKLSAgICAgICAgZGlkSGFu
ZGxlV2hlZWxFdmVudCB8PSBzY3JvbGxhYmxlQXJlYS5zY3JvbGwod2hlZWxFdmVudC5kZWx0YVko
KSA+IDAgPyBTY3JvbGxEb3duIDogU2Nyb2xsVXAsIHNjcm9sbEdyYW51bGFyaXR5LCBhYnNvbHV0
ZURlbHRhKTsKKyAgICBpZiAoZmxvYXQgYWJzb2x1dGVEZWx0YSA9IHN0ZDo6YWJzKGZpbHRlcmVk
RGVsdGEuaGVpZ2h0KCkpKQorICAgICAgICBkaWRIYW5kbGVXaGVlbEV2ZW50IHw9IHNjcm9sbGFi
bGVBcmVhLnNjcm9sbChmaWx0ZXJlZERlbHRhLmhlaWdodCgpID4gMCA/IFNjcm9sbERvd24gOiBT
Y3JvbGxVcCwgc2Nyb2xsR3JhbnVsYXJpdHksIGFic29sdXRlRGVsdGEpOwogCiAgICAgcmV0dXJu
IGRpZEhhbmRsZVdoZWVsRXZlbnQ7CiB9CiAKLWJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVl
bEV2ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2luZ0JveChOb2RlKiBzdGFydE5vZGUsIGNvbnN0IFdo
ZWVsRXZlbnQmIHdoZWVsRXZlbnQsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyZWRQbGF0Zm9ybURl
bHRhLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlcmVkVmVsb2NpdHksIE9wdGlvblNldDxFdmVudEhh
bmRsaW5nPiBldmVudEhhbmRsaW5nKQorYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZl
bnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94KE5vZGUqIHN0YXJ0Tm9kZSwgY29uc3QgV2hlZWxF
dmVudCYgd2hlZWxFdmVudCwgRmxvYXRTaXplJiBmaWx0ZXJlZFBsYXRmb3JtRGVsdGEsIGNvbnN0
IEZsb2F0U2l6ZSYgZmlsdGVyZWRWZWxvY2l0eSwgT3B0aW9uU2V0PEV2ZW50SGFuZGxpbmc+IGV2
ZW50SGFuZGxpbmcpCiB7CiAgICAgYm9vbCBzaG91bGRIYW5kbGVFdmVudCA9IHdoZWVsRXZlbnQu
ZGVsdGFYKCkgfHwgd2hlZWxFdmVudC5kZWx0YVkoKTsKICNpZiBFTkFCTEUoV0hFRUxfRVZFTlRf
TEFUQ0hJTkcpCkBAIC0yOTgwLDIyICszMDUyLDMxIEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5k
bGVXaGVlbEV2ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2luZ0JveChOb2RlKiBzdGFydE5vZGUsIGNv
CiAgICAgaWYgKCFzaG91bGRIYW5kbGVFdmVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisg
ICAgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIGJsb2NrZXIgPSB7IGZhbHNlLCBmYWxzZSB9OwogICAg
IGlmIChpczxSZW5kZXJMaXN0Qm94Pihpbml0aWFsRW5jbG9zaW5nQm94KSkKLSAgICAgICAgcmV0
dXJuIGRpZFNjcm9sbEluU2Nyb2xsYWJsZUFyZWEoZG93bmNhc3Q8UmVuZGVyTGlzdEJveD4oaW5p
dGlhbEVuY2xvc2luZ0JveCksIHdoZWVsRXZlbnQpOworICAgICAgICByZXR1cm4gZGlkU2Nyb2xs
SW5TY3JvbGxhYmxlQXJlYShkb3duY2FzdDxSZW5kZXJMaXN0Qm94Pihpbml0aWFsRW5jbG9zaW5n
Qm94KSwgd2hlZWxFdmVudCwgYmxvY2tlcik7CiAKKyAgICBhdXRvIGJpYXNlZERlbHRhID0gUGxh
dGZvcm1XaGVlbEV2ZW50Ojp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbChGbG9hdFNp
emUod2hlZWxFdmVudC5kZWx0YVgoKSwgd2hlZWxFdmVudC5kZWx0YVkoKSkpOwogICAgIFJlbmRl
ckJveCogY3VycmVudEVuY2xvc2luZ0JveCA9ICZpbml0aWFsRW5jbG9zaW5nQm94OwogICAgIHdo
aWxlIChjdXJyZW50RW5jbG9zaW5nQm94KSB7CiAgICAgICAgIGlmIChhdXRvKiBib3hMYXllciA9
IGN1cnJlbnRFbmNsb3NpbmdCb3gtPmxheWVyKCkgPyBjdXJyZW50RW5jbG9zaW5nQm94LT5sYXll
cigpLT5zY3JvbGxhYmxlQXJlYSgpIDogbnVsbHB0cikgewogICAgICAgICAgICAgYXV0byBwbGF0
Zm9ybUV2ZW50ID0gd2hlZWxFdmVudC51bmRlcmx5aW5nUGxhdGZvcm1FdmVudCgpOwogICAgICAg
ICAgICAgYm9vbCBzY3JvbGxpbmdXYXNIYW5kbGVkOwogICAgICAgICAgICAgaWYgKHBsYXRmb3Jt
RXZlbnQpIHsKKyAgICAgICAgICAgICAgICBTY3JvbGxDaGFpbmluZ0Jsb2NrZXI6OmZpbHRlckRl
bHRhKGJsb2NrZXIsIGJpYXNlZERlbHRhLCBmaWx0ZXJlZFBsYXRmb3JtRGVsdGEpOwogICAgICAg
ICAgICAgICAgIGF1dG8gY29waWVkRXZlbnQgPSBwbGF0Zm9ybUV2ZW50LT5jb3B5V2l0aERlbHRh
c0FuZFZlbG9jaXR5KGZpbHRlcmVkUGxhdGZvcm1EZWx0YS53aWR0aCgpLCBmaWx0ZXJlZFBsYXRm
b3JtRGVsdGEuaGVpZ2h0KCksIGZpbHRlcmVkVmVsb2NpdHkpOwogICAgICAgICAgICAgICAgIHNj
cm9sbGluZ1dhc0hhbmRsZWQgPSBoYW5kbGVXaGVlbEV2ZW50SW5TY3JvbGxhYmxlQXJlYShjb3Bp
ZWRFdmVudCwgKmJveExheWVyLCBldmVudEhhbmRsaW5nKTsKICAgICAgICAgICAgIH0gZWxzZQot
ICAgICAgICAgICAgICAgIHNjcm9sbGluZ1dhc0hhbmRsZWQgPSBkaWRTY3JvbGxJblNjcm9sbGFi
bGVBcmVhKCpib3hMYXllciwgd2hlZWxFdmVudCk7CisgICAgICAgICAgICAgICAgc2Nyb2xsaW5n
V2FzSGFuZGxlZCA9IGRpZFNjcm9sbEluU2Nyb2xsYWJsZUFyZWEoKmJveExheWVyLCB3aGVlbEV2
ZW50LCBibG9ja2VyKTsKIAogICAgICAgICAgICAgaWYgKHNjcm9sbGluZ1dhc0hhbmRsZWQpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgICAgIGlmIChjdXJyZW50RW5j
bG9zaW5nQm94LT5lbGVtZW50KCkgIT0gY3VycmVudEVuY2xvc2luZ0JveC0+ZG9jdW1lbnQoKS5k
b2N1bWVudEVsZW1lbnQoKSkgeworICAgICAgICAgICAgICAgIGJveExheWVyLT51cGRhdGVTY3Jv
bGxDaGFpbmluZ0Jsb2NrZXJTdGF0ZShibG9ja2VyKTsKKyAgICAgICAgICAgICAgICBpZiAoU2Ny
b2xsQ2hhaW5pbmdCbG9ja2VyOjpzaG91bGRCbG9ja1Njcm9sbENoYWluaW5nKGJsb2NrZXIsIGJp
YXNlZERlbHRhKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAg
ICB9CiAgICAgICAgIH0KIAogICAgICAgICBjdXJyZW50RW5jbG9zaW5nQm94ID0gY3VycmVudEVu
Y2xvc2luZ0JveC0+Y29udGFpbmluZ0Jsb2NrKCk7CkBAIC0zMDc1LDYgKzMxNTYsNyBAQCB2b2lk
IEV2ZW50SGFuZGxlcjo6ZGVmYXVsdFdoZWVsRXZlbnRIYW5kbGVyKE5vZGUqIHN0YXJ0Tm9kZSwg
V2hlZWxFdmVudCYgd2hlZWxFdgogICAgIGlmICghbV9mcmFtZS5wYWdlKCktPnNjcm9sbExhdGNo
aW5nQ29udHJvbGxlcigpLmxhdGNoaW5nQWxsb3dzU2Nyb2xsaW5nSW5GcmFtZShtX2ZyYW1lLCBs
YXRjaGVkU2Nyb2xsZXIpKQogICAgICAgICByZXR1cm47CiAKKyAgICBTY3JvbGxDaGFpbmluZ0Js
b2NrZXIgc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyID0gbV9mcmFtZS5wYWdlKCktPnNjcm9sbExhdGNo
aW5nQ29udHJvbGxlcigpLmdldFNjcm9sbENoYWluaW5nQmxvY2tlcihtX2ZyYW1lKTsKICAgICBp
ZiAobGF0Y2hlZFNjcm9sbGVyKSB7CiAgICAgICAgIGlmIChsYXRjaGVkU2Nyb2xsZXIgPT0gbV9m
cmFtZS52aWV3KCkpIHsKICAgICAgICAgICAgIC8vIEZyYW1lVmlldyBzY3JvbGxpbmcgaXMgaGFu
ZGxlZCB2aWEgcHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxpbmcoKS4KQEAgLTMwODMsNiArMzE2
NSw4IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpkZWZhdWx0V2hlZWxFdmVudEhhbmRsZXIoTm9kZSog
c3RhcnROb2RlLCBXaGVlbEV2ZW50JiB3aGVlbEV2CiAKICAgICAgICAgYXV0byBwbGF0Zm9ybUV2
ZW50ID0gd2hlZWxFdmVudC51bmRlcmx5aW5nUGxhdGZvcm1FdmVudCgpOwogICAgICAgICBpZiAo
cGxhdGZvcm1FdmVudCkgeworICAgICAgICAgICAgYXV0byBiaWFzZWREZWx0YSA9IFBsYXRmb3Jt
V2hlZWxFdmVudDo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoZmlsdGVyZWRQbGF0
Zm9ybURlbHRhKTsKKyAgICAgICAgICAgIFNjcm9sbENoYWluaW5nQmxvY2tlcjo6ZmlsdGVyRGVs
dGEoc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLCBiaWFzZWREZWx0YSwgZmlsdGVyZWRQbGF0Zm9ybURl
bHRhKTsKICAgICAgICAgICAgIGF1dG8gY29waWVkRXZlbnQgPSBwbGF0Zm9ybUV2ZW50LT5jb3B5
V2l0aERlbHRhc0FuZFZlbG9jaXR5KGZpbHRlcmVkUGxhdGZvcm1EZWx0YS53aWR0aCgpLCBmaWx0
ZXJlZFBsYXRmb3JtRGVsdGEuaGVpZ2h0KCksIGZpbHRlcmVkVmVsb2NpdHkpOwogICAgICAgICAg
ICAgaWYgKGhhbmRsZVdoZWVsRXZlbnRJblNjcm9sbGFibGVBcmVhKGNvcGllZEV2ZW50LCAqbGF0
Y2hlZFNjcm9sbGVyLCBldmVudEhhbmRsaW5nKSkKICAgICAgICAgICAgICAgICB3aGVlbEV2ZW50
LnNldERlZmF1bHRIYW5kbGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50SGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAppbmRleCAx
YjE3NWRhNzkzYzZjNTEyZDEwNDk5ZmU5MWYwZjU4YzE5YTc3OWVhLi5kYzJmZmI2ZDY4ZWVjZjZm
ZWY5NmMzMGZkNzNlYzhhMDU3MzVmMWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgK
QEAgLTQ2OCw3ICs0NjgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcHJvY2Vzc1doZWVsRXZlbnRG
b3JTY3JvbGxTbmFwKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIGNvbnN0IFdlYWtQdHI8U2Ny
b2xsYWJsZUFyZWE+Jik7CiAgICAgYm9vbCBjb21wbGV0ZVdpZGdldFdoZWVsRXZlbnQoY29uc3Qg
UGxhdGZvcm1XaGVlbEV2ZW50JiwgY29uc3QgV2Vha1B0cjxXaWRnZXQ+JiwgY29uc3QgV2Vha1B0
cjxTY3JvbGxhYmxlQXJlYT4mKTsKIAotICAgIGJvb2wgaGFuZGxlV2hlZWxFdmVudEluQXBwcm9w
cmlhdGVFbmNsb3NpbmdCb3goTm9kZSogc3RhcnROb2RlLCBjb25zdCBXaGVlbEV2ZW50JiwgY29u
c3QgRmxvYXRTaXplJiBmaWx0ZXJlZFBsYXRmb3JtRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgZmls
dGVyZWRWZWxvY2l0eSwgT3B0aW9uU2V0PEV2ZW50SGFuZGxpbmc+KTsKKyAgICBib29sIGhhbmRs
ZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94KE5vZGUqIHN0YXJ0Tm9kZSwgY29u
c3QgV2hlZWxFdmVudCYsIEZsb2F0U2l6ZSYgZmlsdGVyZWRQbGF0Zm9ybURlbHRhLCBjb25zdCBG
bG9hdFNpemUmIGZpbHRlcmVkVmVsb2NpdHksIE9wdGlvblNldDxFdmVudEhhbmRsaW5nPik7CiAK
ICAgICBib29sIGhhbmRsZVdoZWVsRXZlbnRJblNjcm9sbGFibGVBcmVhKGNvbnN0IFBsYXRmb3Jt
V2hlZWxFdmVudCYsIFNjcm9sbGFibGVBcmVhJiwgT3B0aW9uU2V0PEV2ZW50SGFuZGxpbmc+KTsK
ICAgICBPcHRpb25hbDxXaGVlbFNjcm9sbEdlc3R1cmVTdGF0ZT4gdXBkYXRlV2hlZWxHZXN0dXJl
U3RhdGUoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgT3B0aW9uU2V0PEV2ZW50SGFuZGxpbmc+
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCBmYzJiMzU3ODYzMzkxNmYzNDMyZTkz
NTJjMWVjY2IxNzcwNDQ2NWNhLi5mNzUwZDcwNDA0YTI3OGI2ZTk2NzAyNGM4YjBhYjYyMTExM2Nk
YWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC00MTksNiArNDE5LDI2IEBAIGJv
b2wgRnJhbWVWaWV3OjpkaWRGaXJzdExheW91dCgpIGNvbnN0CiAgICAgcmV0dXJuIGxheW91dENv
bnRleHQoKS5kaWRGaXJzdExheW91dCgpOwogfQogCitPdmVyc2Nyb2xsQmVoYXZpb3IgRnJhbWVW
aWV3Ojpob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29uc3QKK3sKKyAgICBhdXRvKiBk
b2N1bWVudCA9IGZyYW1lKCkuZG9jdW1lbnQoKTsKKyAgICBhdXRvIHNjcm9sbGluZ09iamVjdCA9
IGRvY3VtZW50ICYmIGRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKSA/IGRvY3VtZW50LT5kb2N1
bWVudEVsZW1lbnQoKS0+cmVuZGVyZXIoKSA6IG51bGxwdHI7CisgICAgLy8gQW4gZWxlbWVudCB0
aGF0IGlzIG5vdCBzY3JvbGwgY29udGFpbmVyIG11c3QgYWNjZXB0IGJ1dCBpZ25vcmUgdGhlIHZh
bHVlcyBvZiB0aGlzIHByb3BlcnR5LgorICAgIGlmIChzY3JvbGxpbmdPYmplY3QgJiYgcmVuZGVy
VmlldygpICYmIHJlbmRlclZpZXcoKS0+Y2FuQmVTY3JvbGxlZEFuZEhhc1Njcm9sbGFibGVBcmVh
KCkpCisgICAgICAgIHJldHVybiBzY3JvbGxpbmdPYmplY3QtPnN0eWxlKCkub3ZlcnNjcm9sbEJl
aGF2aW9yWCgpOworICAgIHJldHVybiBTY3JvbGxhYmxlQXJlYTo6aG9yaXpvbnRhbE92ZXJzY3Jv
bGxCZWhhdmlvcigpOworfQorCitPdmVyc2Nyb2xsQmVoYXZpb3IgRnJhbWVWaWV3Ojp2ZXJ0aWNh
bE92ZXJzY3JvbGxCZWhhdmlvcigpICBjb25zdAoreworICAgIGF1dG8qIGRvY3VtZW50ID0gZnJh
bWUoKS5kb2N1bWVudCgpOworICAgIGF1dG8gc2Nyb2xsaW5nT2JqZWN0ID0gZG9jdW1lbnQgJiYg
ZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpID8gZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgp
LT5yZW5kZXJlcigpIDogbnVsbHB0cjsKKyAgICAvLyBBbiBlbGVtZW50IHRoYXQgaXMgbm90IHNj
cm9sbCBjb250YWluZXIgbXVzdCBhY2NlcHQgYnV0IGlnbm9yZSB0aGUgdmFsdWVzIG9mIHRoaXMg
cHJvcGVydHkuCisgICAgaWYgKHNjcm9sbGluZ09iamVjdCAmJiByZW5kZXJWaWV3KCkgJiYgcmVu
ZGVyVmlldygpLT5jYW5CZVNjcm9sbGVkQW5kSGFzU2Nyb2xsYWJsZUFyZWEoKSkKKyAgICAgICAg
cmV0dXJuIHNjcm9sbGluZ09iamVjdC0+c3R5bGUoKS5vdmVyc2Nyb2xsQmVoYXZpb3JZKCk7Cisg
ICAgcmV0dXJuIFNjcm9sbGFibGVBcmVhOjp2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpOwor
fQorCiB2b2lkIEZyYW1lVmlldzo6aW52YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkK
IHsKICAgICBpZiAoIXBhcmVudCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCBiZGZl
Mjc4NDlmMjk2MWM2ZGRlNWU5ZmY4ZGRiNTEwMjE1ZjMxNzI3Li40NjA1NjA3ZGUxOGZmY2NkMmIz
MzU2NTg2YjEwZTA2ZTAwMjVlYTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTY4MCw2
ICs2ODAsOSBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgZGVidWdEZXNjcmlwdGlvbigpIGNvbnN0
IGZpbmFsOwogCisgICAgT3ZlcnNjcm9sbEJlaGF2aW9yIGhvcml6b250YWxPdmVyc2Nyb2xsQmVo
YXZpb3IoKSBjb25zdCBmaW5hbDsKKyAgICBPdmVyc2Nyb2xsQmVoYXZpb3IgdmVydGljYWxPdmVy
c2Nyb2xsQmVoYXZpb3IoKSBjb25zdCBmaW5hbDsKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBG
cmFtZVZpZXcoRnJhbWUmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMv
RXZlbnRIYW5kbGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVy
TWFjLm1tCmluZGV4IDFkNGM4NjExNzZmZWRlZjIwNjRlMjIwMjM2MzkwMTQ1NjM4NDFkNmEuLjky
Y2NjM2IxZmJkOTA1NDgzMzMzNDBlMjAzZDEwNGIzM2FjYTYxMGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0KQEAgLTgwMCwxMCArODAwLDE2IEBAIHN0YXRp
YyBTY3JvbGxhYmxlQXJlYSogc2Nyb2xsYWJsZUFyZWFGb3JCb3goUmVuZGVyQm94JiBib3gpCiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK3N0YXRpYyBib29sIHNob3VsZE92ZXJzY3JvbGxCZWhh
dmlvckJsb2NrU2Nyb2xsQ2hhaW5pbmcoY29uc3QgU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVB
cmVhLCBjb25zdCBGbG9hdFNpemUmIGJpYXNlZERlbHRhLCBTY3JvbGxDaGFpbmluZ0Jsb2NrZXIm
IGJsb2NrZXIpCit7CisgICAgc2Nyb2xsYWJsZUFyZWEudXBkYXRlU2Nyb2xsQ2hhaW5pbmdCbG9j
a2VyU3RhdGUoYmxvY2tlcik7CisgICAgcmV0dXJuIFNjcm9sbENoYWluaW5nQmxvY2tlcjo6c2hv
dWxkQmxvY2tTY3JvbGxDaGFpbmluZyhibG9ja2VyLCBiaWFzZWREZWx0YSk7Cit9CisKIC8vIEZJ
WE1FOiBUaGlzIGNvdWxkIGJlIHdyaXR0ZW4gaW4gdGVybXMgb2YgU2Nyb2xsYWJsZUFyZWE6OmVu
Y2xvc2luZ1Njcm9sbGFibGVBcmVhKCkuCi1zdGF0aWMgQ29udGFpbmVyTm9kZSogZmluZEVuY2xv
c2luZ1Njcm9sbGFibGVDb250YWluZXIoQ29udGFpbmVyTm9kZSogbm9kZSwgY29uc3QgUGxhdGZv
cm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50KQorc3RhdGljIENvbnRhaW5lck5vZGUqIGZpbmRFbmNs
b3NpbmdTY3JvbGxhYmxlQ29udGFpbmVyKENvbnRhaW5lck5vZGUqIG5vZGUsIGNvbnN0IFBsYXRm
b3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyJiBzY3JvbGxD
aGFpbmluZ0Jsb2NrZXIpCiB7Ci0gICAgYXV0byBiaWFzZWREZWx0YSA9IFNjcm9sbENvbnRyb2xs
ZXI6OndoZWVsRGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRpY2FsKHdoZWVsRXZlbnQpOworICAgIGF1
dG8gYmlhc2VkRGVsdGEgPSBQbGF0Zm9ybVdoZWVsRXZlbnQ6OndoZWVsRGVsdGFCaWFzaW5nVG93
YXJkc1ZlcnRpY2FsKHdoZWVsRXZlbnQuZGVsdGEoKSk7CiAKICAgICAvLyBGaW5kIHRoZSBmaXJz
dCBub2RlIHdpdGggYSB2YWxpZCBzY3JvbGxhYmxlIGFyZWEgc3RhcnRpbmcgd2l0aCB0aGUgY3Vy
cmVudAogICAgIC8vIG5vZGUgYW5kIHRyYXZlcnNpbmcgaXRzIHBhcmVudHMgKG9yIHNoYWRvdyBo
b3N0cykuCkBAIC04MTcsNyArODIzLDcgQEAgc3RhdGljIENvbnRhaW5lck5vZGUqIGZpbmRFbmNs
b3NpbmdTY3JvbGxhYmxlQ29udGFpbmVyKENvbnRhaW5lck5vZGUqIG5vZGUsIGNvbnMKICAgICAg
ICAgUmVuZGVyQm94KiBib3ggPSBjYW5kaWRhdGUtPnJlbmRlckJveCgpOwogICAgICAgICBpZiAo
IWJveCB8fCAhYm94LT5jYW5CZVNjcm9sbGVkQW5kSGFzU2Nyb2xsYWJsZUFyZWEoKSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICAKKwogICAgICAgICBhdXRvKiBzY3JvbGxhYmxlQXJl
YSA9IHNjcm9sbGFibGVBcmVhRm9yQm94KCpib3gpOwogICAgICAgICBpZiAoIXNjcm9sbGFibGVB
cmVhKQogICAgICAgICAgICAgY29udGludWU7CkBAIC04MzAsOCArODM2LDEyIEBAIHN0YXRpYyBD
b250YWluZXJOb2RlKiBmaW5kRW5jbG9zaW5nU2Nyb2xsYWJsZUNvbnRhaW5lcihDb250YWluZXJO
b2RlKiBub2RlLCBjb25zCiAKICAgICAgICAgaWYgKGJpYXNlZERlbHRhLndpZHRoKCkgJiYgIXNj
cm9sbGFibGVBcmVhLT5pc1Bpbm5lZEZvclNjcm9sbERlbHRhT25BeGlzKC1iaWFzZWREZWx0YS53
aWR0aCgpLCBTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwpKQogICAgICAgICAgICAgcmV0dXJu
IGNhbmRpZGF0ZTsKKworICAgICAgICAvLyBMZXQgRnJhbWVWaWV3Ojpob3Jpem9udGFsT3ZlcnNj
cm9sbEJlaGF2aW9yIGRlY2lkZSB3aGljaCBub2RlJ3Mgb3ZlcnNjcm9sbC1iYWh2aW9yIGlzIGVm
ZmVjdGl2ZSB0byBGcmFtZVZpZXcuCisgICAgICAgIGlmIChjYW5kaWRhdGUgIT0gY2FuZGlkYXRl
LT5kb2N1bWVudCgpLmJvZHkoKSAmJiBzaG91bGRPdmVyc2Nyb2xsQmVoYXZpb3JCbG9ja1Njcm9s
bENoYWluaW5nKCpzY3JvbGxhYmxlQXJlYSwgYmlhc2VkRGVsdGEsIHNjcm9sbENoYWluaW5nQmxv
Y2tlcikpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgCisKICAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAtODc2LDEwICs4ODYsMTEgQEAgdm9pZCBFdmVudEhhbmRs
ZXI6OmRldGVybWluZVdoZWVsRXZlbnRUYXJnZXQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3
aGVlbEV2ZW4KICAgICBpZiAoIXZpZXcpCiAgICAgICAgIHJldHVybjsKIAorICAgIFNjcm9sbENo
YWluaW5nQmxvY2tlciBzY3JvbGxDaGFpbmluZ0Jsb2NrZXI7CiAgICAgaWYgKGV2ZW50VGFyZ2V0
SXNQbGF0Zm9ybVdpZGdldCh3aGVlbEV2ZW50VGFyZ2V0LmdldCgpKSkKICAgICAgICAgc2Nyb2xs
YWJsZUFyZWEgPSBzY3JvbGxhYmxlQXJlYUZvckV2ZW50VGFyZ2V0KHdoZWVsRXZlbnRUYXJnZXQu
Z2V0KCkpOwogICAgIGVsc2UgewotICAgICAgICBhdXRvKiBzY3JvbGxhYmxlQ29udGFpbmVyID0g
ZmluZEVuY2xvc2luZ1Njcm9sbGFibGVDb250YWluZXIod2hlZWxFdmVudFRhcmdldC5nZXQoKSwg
d2hlZWxFdmVudCk7CisgICAgICAgIGF1dG8qIHNjcm9sbGFibGVDb250YWluZXIgPSBmaW5kRW5j
bG9zaW5nU2Nyb2xsYWJsZUNvbnRhaW5lcih3aGVlbEV2ZW50VGFyZ2V0LmdldCgpLCB3aGVlbEV2
ZW50LCBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIpOwogICAgICAgICBpZiAoc2Nyb2xsYWJsZUNvbnRh
aW5lcikKICAgICAgICAgICAgIHNjcm9sbGFibGVBcmVhID0gc2Nyb2xsYWJsZUFyZWFGb3JDb250
YWluZXJOb2RlKCpzY3JvbGxhYmxlQ29udGFpbmVyKTsKICAgICAgICAgZWxzZQpAQCAtODk3LDcg
KzkwOCw3IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpkZXRlcm1pbmVXaGVlbEV2ZW50VGFyZ2V0KGNv
bnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVuCiAgICAgaWYgKG1fZnJhbWUuaXNNYWlu
RnJhbWUoKSAmJiB3aGVlbEV2ZW50LmlzR2VzdHVyZVN0YXJ0KCkpCiAgICAgICAgIHBhZ2UtPndo
ZWVsRXZlbnREZWx0YUZpbHRlcigpLT5iZWdpbkZpbHRlcmluZ0RlbHRhcygpOwogCi0gICAgcGFn
ZS0+c2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyKCkudXBkYXRlQW5kRmV0Y2hMYXRjaGluZ1N0YXRl
Rm9yRnJhbWUobV9mcmFtZSwgd2hlZWxFdmVudCwgd2hlZWxFdmVudFRhcmdldCwgc2Nyb2xsYWJs
ZUFyZWEsIGlzT3ZlcldpZGdldCk7CisgICAgcGFnZS0+c2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVy
KCkudXBkYXRlQW5kRmV0Y2hMYXRjaGluZ1N0YXRlRm9yRnJhbWUobV9mcmFtZSwgd2hlZWxFdmVu
dCwgd2hlZWxFdmVudFRhcmdldCwgc2Nyb2xsYWJsZUFyZWEsIHNjcm9sbENoYWluaW5nQmxvY2tl
ciwgaXNPdmVyV2lkZ2V0KTsKIH0KIAogdm9pZCBFdmVudEhhbmRsZXI6OnJlY29yZFdoZWVsRXZl
bnRGb3JEZWx0YUZpbHRlcihjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nv
b3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xs
aW5nQ29vcmRpbmF0b3IuY3BwCmluZGV4IDZhOWViYjNlMmI2NGY4YzNlNjdmNjcyM2ZlZTQ1OTY5
YTk1NDY3Y2IuLjQyMjhjMjE3ZDI1Y2VkMTVhMjBkNzhjNTdiNDFiMjQyMTRkYWVjMzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRp
bmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xs
aW5nQ29vcmRpbmF0b3IuY3BwCkBAIC02OTgsNiArNjk4LDggQEAgdm9pZCBBc3luY1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yOjpzZXRTY3JvbGxpbmdOb2RlU2Nyb2xsYWJsZUFyZWFHZW9tZXRyeShTY3Jv
bGxpbmcKICAgICBzY3JvbGxpbmdOb2RlLnNldFNjcm9sbGFibGVBcmVhU2l6ZShzY3JvbGxhYmxl
QXJlYS52aXNpYmxlU2l6ZSgpKTsKIAogICAgIFNjcm9sbGFibGVBcmVhUGFyYW1ldGVycyBzY3Jv
bGxQYXJhbWV0ZXJzOworICAgIHNjcm9sbFBhcmFtZXRlcnMuaG9yaXpvbnRhbE92ZXJzY3JvbGxC
ZWhhdmlvciA9IHNjcm9sbGFibGVBcmVhLmhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKTsK
KyAgICBzY3JvbGxQYXJhbWV0ZXJzLnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yID0gc2Nyb2xs
YWJsZUFyZWEudmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKTsKICAgICBzY3JvbGxQYXJhbWV0
ZXJzLmhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5ID0gc2Nyb2xsYWJsZUFyZWEuaG9yaXpvbnRh
bFNjcm9sbEVsYXN0aWNpdHkoKTsKICAgICBzY3JvbGxQYXJhbWV0ZXJzLnZlcnRpY2FsU2Nyb2xs
RWxhc3RpY2l0eSA9IHNjcm9sbGFibGVBcmVhLnZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eSgpOwog
ICAgIHNjcm9sbFBhcmFtZXRlcnMuYWxsb3dzSG9yaXpvbnRhbFNjcm9sbGluZyA9IHNjcm9sbGFi
bGVBcmVhLmFsbG93c0hvcml6b250YWxTY3JvbGxpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbExhdGNoaW5nQ29udHJvbGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIuY3BwCmlu
ZGV4IDRlZDRkOTc1YTdlYTQ1MDA5N2ZjYmI0ZGU5YTJlMDMyMWM2YTY3N2IuLmJhMDAxMWQzMWIz
Nzg1NTEyYjQ1NDI5MDI5OWE1ZWFjMDFmZWIwZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbExhdGNoaW5nQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyLmNwcApAQCAt
MTA4LDcgKzEwOCw3IEBAIGJvb2wgU2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyOjpsYXRjaGluZ0Fs
bG93c1Njcm9sbGluZ0luRnJhbWUoY29uc3QgRnJhbWUmIGZyYW1lCiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi12b2lkIFNjcm9sbExhdGNoaW5nQ29udHJvbGxlcjo6dXBkYXRlQW5kRmV0Y2hMYXRj
aGluZ1N0YXRlRm9yRnJhbWUoRnJhbWUmIGZyYW1lLCBjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQm
IHdoZWVsRXZlbnQsIFJlZlB0cjxFbGVtZW50PiYgbGF0Y2hlZEVsZW1lbnQsIFdlYWtQdHI8U2Ny
b2xsYWJsZUFyZWE+JiBzY3JvbGxhYmxlQXJlYSwgYm9vbCYgaXNPdmVyV2lkZ2V0KQordm9pZCBT
Y3JvbGxMYXRjaGluZ0NvbnRyb2xsZXI6OnVwZGF0ZUFuZEZldGNoTGF0Y2hpbmdTdGF0ZUZvckZy
YW1lKEZyYW1lJiBmcmFtZSwgY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBS
ZWZQdHI8RWxlbWVudD4mIGxhdGNoZWRFbGVtZW50LCBXZWFrUHRyPFNjcm9sbGFibGVBcmVhPiYg
c2Nyb2xsYWJsZUFyZWEsIFNjcm9sbENoYWluaW5nQmxvY2tlciYgc2Nyb2xsQ2hhaW5pbmdCbG9j
a2VyLCBib29sJiBpc092ZXJXaWRnZXQpCiB7CiAgICAgaWYgKHdoZWVsRXZlbnQuaXNHZXN0dXJl
U3RhcnQoKSkgewogICAgICAgICAvLyBXZSBjYW4gaGF2ZSBleGlzdGluZyBzdGF0ZSBoZXJlIGJl
Y2F1c2Ugc3RhdGUgaXMgY2xlYXJlZCBvbiBhIHRpbWVyLgpAQCAtMTE4LDYgKzExOCw3IEBAIHZv
aWQgU2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyOjp1cGRhdGVBbmRGZXRjaExhdGNoaW5nU3RhdGVG
b3JGcmFtZShGcmFtZSYgZnJhbWUsCiAgICAgICAgICAgICBzdGF0ZS53aGVlbEV2ZW50RWxlbWVu
dCA9IG1ha2VXZWFrUHRyKGxhdGNoZWRFbGVtZW50LmdldCgpKTsKICAgICAgICAgICAgIGlmIChz
aG91bGRMYXRjaFRvU2Nyb2xsYWJsZUFyZWEoZnJhbWUsIHNjcm9sbGFibGVBcmVhLmdldCgpLCBt
X2N1bXVsYXRpdmVFdmVudERlbHRhKSkKICAgICAgICAgICAgICAgICBzdGF0ZS5zY3JvbGxhYmxl
QXJlYSA9IHNjcm9sbGFibGVBcmVhOworICAgICAgICAgICAgc3RhdGUuc2Nyb2xsQ2hhaW5pbmdC
bG9ja2VyID0gc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyOwogICAgICAgICAgICAgc3RhdGUuaXNPdmVy
V2lkZ2V0ID0gaXNPdmVyV2lkZ2V0OwogCiAgICAgICAgICAgICBMT0dfV0lUSF9TVFJFQU0oU2Ny
b2xsTGF0Y2hpbmcsIHN0cmVhbSA8PCAiU2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyOjp1cGRhdGVB
bmRGZXRjaExhdGNoaW5nU3RhdGVGb3JGcmFtZSgpIC0gcHVzaGluZyBzdGF0ZSBmb3IgRnJhbWUg
IiA8PCAmZnJhbWUgPDwgIiBlbGVtZW50ICIgPDwgc3RhdGUud2hlZWxFdmVudEVsZW1lbnQuZ2V0
KCkgPDwgIiBzY3JvbGxhYmxlQXJlYSAiIDw8IHN0YXRlLnNjcm9sbGFibGVBcmVhKTsKQEAgLTEz
Miw4ICsxMzMsMTAgQEAgdm9pZCBTY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXI6OnVwZGF0ZUFuZEZl
dGNoTGF0Y2hpbmdTdGF0ZUZvckZyYW1lKEZyYW1lJiBmcmFtZSwKICAgICAgICAgICAgIHJldHVy
bjsKIAogICAgICAgICAvLyBXZSBtYXkgbm90IGhhdmUgbGF0Y2hlZCBhdCBnZXN0dXJlIHN0YXJ0
IGJlY2F1c2Ugb2Ygc21hbGwgZGVsdGFzLiBSZS1ldmFsdWF0ZSBsYXRjaGluZyBiYXNlZCBvbiBh
Y2N1bXVsYXRlZCBkZWx0YS4KLSAgICAgICAgaWYgKCFzdGF0ZS0+c2Nyb2xsYWJsZUFyZWEgJiYg
c2hvdWxkTGF0Y2hUb1Njcm9sbGFibGVBcmVhKGZyYW1lLCBzY3JvbGxhYmxlQXJlYS5nZXQoKSwg
bV9jdW11bGF0aXZlRXZlbnREZWx0YSkpCisgICAgICAgIGlmICghc3RhdGUtPnNjcm9sbGFibGVB
cmVhICYmIHNob3VsZExhdGNoVG9TY3JvbGxhYmxlQXJlYShmcmFtZSwgc2Nyb2xsYWJsZUFyZWEu
Z2V0KCksIG1fY3VtdWxhdGl2ZUV2ZW50RGVsdGEpKSB7CiAgICAgICAgICAgICBzdGF0ZS0+c2Ny
b2xsYWJsZUFyZWEgPSBzY3JvbGxhYmxlQXJlYTsKKyAgICAgICAgICAgIHN0YXRlLT5zY3JvbGxD
aGFpbmluZ0Jsb2NrZXIgPSBzY3JvbGxDaGFpbmluZ0Jsb2NrZXI7CisgICAgICAgIH0KICAgICB9
CiAKICAgICBpZiAoIXdoZWVsRXZlbnQudXNlTGF0Y2hlZEV2ZW50RWxlbWVudCgpKQpAQCAtMTQ0
LDEyICsxNDcsMzQgQEAgdm9pZCBTY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXI6OnVwZGF0ZUFuZEZl
dGNoTGF0Y2hpbmdTdGF0ZUZvckZyYW1lKEZyYW1lJiBmcmFtZSwKICAgICAgICAgICAgIGxhdGNo
ZWRFbGVtZW50ID0gc3RhdGUud2hlZWxFdmVudEVsZW1lbnQuZ2V0KCk7CiAgICAgICAgICAgICBz
Y3JvbGxhYmxlQXJlYSA9IHN0YXRlLnNjcm9sbGFibGVBcmVhOwogICAgICAgICAgICAgaXNPdmVy
V2lkZ2V0ID0gc3RhdGUuaXNPdmVyV2lkZ2V0OworICAgICAgICAgICAgc2Nyb2xsQ2hhaW5pbmdC
bG9ja2VyID0gc3RhdGUuc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyOwogCiAgICAgICAgICAgICBMT0df
V0lUSF9TVFJFQU0oU2Nyb2xsTGF0Y2hpbmcsIHN0cmVhbSA8PCAiU2Nyb2xsTGF0Y2hpbmdDb250
cm9sbGVyOjp1cGRhdGVBbmRGZXRjaExhdGNoaW5nU3RhdGVGb3JGcmFtZSgpIC0gdXNpbmcgc3Rh
dGUgZm9yIEZyYW1lICIgPDwgJmZyYW1lIDw8ICIgZWxlbWVudCAiIDw8IGxhdGNoZWRFbGVtZW50
LmdldCgpIDw8ICIgc2Nyb2xsYWJsZUFyZWEgIiA8PCBzY3JvbGxhYmxlQXJlYSk7CiAgICAgICAg
IH0KICAgICB9CiB9CiAKK1Njcm9sbENoYWluaW5nQmxvY2tlciBTY3JvbGxMYXRjaGluZ0NvbnRy
b2xsZXI6OmdldFNjcm9sbENoYWluaW5nQmxvY2tlcihjb25zdCBGcmFtZSYgZnJhbWUpIGNvbnN0
Cit7CisgICAgaWYgKCFtX2ZyYW1lU3RhdGVTdGFjay5pc0VtcHR5KCkpIHsKKyAgICAgICAgYXV0
byogZnJhbWVTdGF0ZSA9IHN0YXRlRm9yRnJhbWUoZnJhbWUpOworICAgICAgICBpZiAoZnJhbWVT
dGF0ZSkKKyAgICAgICAgICAgIHJldHVybiBmcmFtZVN0YXRlLT5zY3JvbGxDaGFpbmluZ0Jsb2Nr
ZXI7CisgICAgfQorCisgICAgcmV0dXJuIHsgZmFsc2UsIGZhbHNlIH07Cit9CisKK3ZvaWQgU2Ny
b2xsTGF0Y2hpbmdDb250cm9sbGVyOjp1cGRhdGVTY3JvbGxDaGFpbmluZ0Jsb2NrZXIoY29uc3Qg
RnJhbWUmIGZyYW1lLCBjb25zdCBTY3JvbGxDaGFpbmluZ0Jsb2NrZXImIHNjcm9sbENoYWluaW5n
QmxvY2tlckZyb21TdWJmcmFtZSkKK3sKKyAgICBpZiAobV9mcmFtZVN0YXRlU3RhY2suaXNFbXB0
eSgpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKGF1dG8qIGZyYW1lU3RhdGUgPSBzdGF0ZUZv
ckZyYW1lKGZyYW1lKSkgeworICAgICAgICBmcmFtZVN0YXRlLT5zY3JvbGxDaGFpbmluZ0Jsb2Nr
ZXIuYmxvY2tYIHw9IHNjcm9sbENoYWluaW5nQmxvY2tlckZyb21TdWJmcmFtZS5ibG9ja1g7Cisg
ICAgICAgIGZyYW1lU3RhdGUtPnNjcm9sbENoYWluaW5nQmxvY2tlci5ibG9ja1kgfD0gc2Nyb2xs
Q2hhaW5pbmdCbG9ja2VyRnJvbVN1YmZyYW1lLmJsb2NrWTsKKyAgICB9Cit9CisKIHZvaWQgU2Ny
b2xsTGF0Y2hpbmdDb250cm9sbGVyOjpyZW1vdmVMYXRjaGluZ1N0YXRlRm9yVGFyZ2V0KGNvbnN0
IEVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgaWYgKG1fZnJhbWVTdGF0ZVN0YWNrLmlzRW1wdHko
KSkKQEAgLTI1Miw2ICsyNzcsOCBAQCB2b2lkIFNjcm9sbExhdGNoaW5nQ29udHJvbGxlcjo6ZHVt
cChXVEY6OlRleHRTdHJlYW0mIHRzKSBjb25zdAogICAgICAgICBtdWx0aWxpbmVTdHJlYW0uZHVt
cFByb3BlcnR5KCJmcmFtZSIsIFZhbHVlT3JOdWxsKHN0YXRlLmZyYW1lKSk7CiAgICAgICAgIG11
bHRpbGluZVN0cmVhbS5kdW1wUHJvcGVydHkoImVsZW1lbnQiLCBWYWx1ZU9yTnVsbChzdGF0ZS53
aGVlbEV2ZW50RWxlbWVudC5nZXQoKSkpOwogICAgICAgICBtdWx0aWxpbmVTdHJlYW0uZHVtcFBy
b3BlcnR5KCJzY3JvbGxhYmxlIGFyZWEiLCBWYWx1ZU9yTnVsbChzdGF0ZS5zY3JvbGxhYmxlQXJl
YS5nZXQoKSkpOworICAgICAgICBtdWx0aWxpbmVTdHJlYW0uZHVtcFByb3BlcnR5KCJzdGF0ZS5z
Y3JvbGxDaGFpbmluZ0Jsb2NrZXIuYmxvY2tYIiwgc3RhdGUuc2Nyb2xsQ2hhaW5pbmdCbG9ja2Vy
LmJsb2NrWCk7CisgICAgICAgIG11bHRpbGluZVN0cmVhbS5kdW1wUHJvcGVydHkoInN0YXRlLnNj
cm9sbENoYWluaW5nQmxvY2tlci5ibG9ja1kiLCBzdGF0ZS5zY3JvbGxDaGFpbmluZ0Jsb2NrZXIu
YmxvY2tZKTsKICAgICAgICAgbXVsdGlsaW5lU3RyZWFtLmR1bXBQcm9wZXJ0eSgiaXMgb3ZlciB3
aWRnZXQiLCBzdGF0ZS5pc092ZXJXaWRnZXQpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIuaAppbmRl
eCA1NjQ5NjE1OWM1ZTY4ZDJiY2NlZjhjMjY1ZWU2MWNjYjlkZmI0YjI4Li44ZmQ4ZTMwYzZhMTY1
ZDk5OThkNDExZDI4YmJmZmQzMmVlZjIzNjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIuaApAQCAtNjEsNyAr
NjEsMTAgQEAgcHVibGljOgogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBubyBmcmFtZSBpcyBsYXRj
aGVkLCBvciBsYXRjaGluZyBpcyBpbiB0aGUgZ2l2ZW4gZnJhbWUgKGluIHdoaWNoIGNhc2UgbGF0
Y2hlZFNjcm9sbGVyIHdpbGwgYmUgbm9uLW51bGwpLgogICAgIGJvb2wgbGF0Y2hpbmdBbGxvd3NT
Y3JvbGxpbmdJbkZyYW1lKGNvbnN0IEZyYW1lJiwgV2Vha1B0cjxTY3JvbGxhYmxlQXJlYT4mIGxh
dGNoZWRTY3JvbGxlcikgY29uc3Q7CiAKLSAgICB2b2lkIHVwZGF0ZUFuZEZldGNoTGF0Y2hpbmdT
dGF0ZUZvckZyYW1lKEZyYW1lJiwgY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgUmVmUHRyPEVs
ZW1lbnQ+JiBsYXRjaGVkRWxlbWVudCwgV2Vha1B0cjxTY3JvbGxhYmxlQXJlYT4mLCBib29sJiBp
c092ZXJXaWRnZXQpOworICAgIHZvaWQgdXBkYXRlQW5kRmV0Y2hMYXRjaGluZ1N0YXRlRm9yRnJh
bWUoRnJhbWUmLCBjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBSZWZQdHI8RWxlbWVudD4mIGxh
dGNoZWRFbGVtZW50LCBXZWFrUHRyPFNjcm9sbGFibGVBcmVhPiYsIFNjcm9sbENoYWluaW5nQmxv
Y2tlciYsIGJvb2wmIGlzT3ZlcldpZGdldCk7CisKKyAgICBTY3JvbGxDaGFpbmluZ0Jsb2NrZXIg
Z2V0U2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKGNvbnN0IEZyYW1lJikgY29uc3Q7CisgICAgdm9pZCB1
cGRhdGVTY3JvbGxDaGFpbmluZ0Jsb2NrZXIoY29uc3QgRnJhbWUmLCBjb25zdCBTY3JvbGxDaGFp
bmluZ0Jsb2NrZXImIFNjcm9sbENoYWluaW5nQmxvY2tlckZyb21TdWJmcmFtZSk7CiAKICAgICB2
b2lkIHJlbW92ZUxhdGNoaW5nU3RhdGVGb3JUYXJnZXQoY29uc3QgRWxlbWVudCYpOwogICAgIHZv
aWQgcmVtb3ZlTGF0Y2hpbmdTdGF0ZUZvckZyYW1lKGNvbnN0IEZyYW1lJik7CkBAIC03Myw2ICs3
Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIFdlYWtQdHI8RWxlbWVudD4gd2hlZWxFdmVudEVsZW1l
bnQ7CiAgICAgICAgIFdlYWtQdHI8U2Nyb2xsYWJsZUFyZWE+IHNjcm9sbGFibGVBcmVhOwogICAg
ICAgICBGcmFtZSogZnJhbWUgeyBudWxscHRyIH07CisgICAgICAgIFNjcm9sbENoYWluaW5nQmxv
Y2tlciBzY3JvbGxDaGFpbmluZ0Jsb2NrZXI7CiAgICAgICAgIGJvb2wgaXNPdmVyV2lkZ2V0IHsg
ZmFsc2UgfTsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdDb29yZGluYXRvclR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvclR5cGVzLmgKaW5kZXggZWVjYWI2ZjU1YjY1YzQ2
MDE5OWY4MGVmMDUwNjU1MmI3MWYzMDgwMy4uNTY3NGRjYWU2YzQzMmNhNDZhMDI4MzVkZDAwYWQ3
NDAxM2NlNmFhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nQ29vcmRpbmF0b3JUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yVHlwZXMuaApAQCAtNjgsNiArNjgsOSBAQCBlbnVtIGNs
YXNzIFNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb24gewogfTsKIAogc3RydWN0IFNjcm9sbGFi
bGVBcmVhUGFyYW1ldGVycyB7CisgICAgT3ZlcnNjcm9sbEJlaGF2aW9yIGhvcml6b250YWxPdmVy
c2Nyb2xsQmVoYXZpb3IgeyBPdmVyc2Nyb2xsQmVoYXZpb3I6OiBBdXRvIH07CisgICAgT3ZlcnNj
cm9sbEJlaGF2aW9yIHZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yIHsgT3ZlcnNjcm9sbEJlaGF2
aW9yOjogQXV0byB9OworCiAgICAgU2Nyb2xsRWxhc3RpY2l0eSBob3Jpem9udGFsU2Nyb2xsRWxh
c3RpY2l0eSB7IFNjcm9sbEVsYXN0aWNpdHlOb25lIH07CiAgICAgU2Nyb2xsRWxhc3RpY2l0eSB2
ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkgeyBTY3JvbGxFbGFzdGljaXR5Tm9uZSB9OwogCkBAIC04
NCw3ICs4Nyw5IEBAIHN0cnVjdCBTY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMgewogCiAgICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IFNjcm9sbGFibGVBcmVhUGFyYW1ldGVycyYgb3RoZXIpIGNvbnN0
CiAgICAgewotICAgICAgICByZXR1cm4gaG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkgPT0gb3Ro
ZXIuaG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkKKyAgICAgICAgcmV0dXJuIGhvcml6b250YWxP
dmVyc2Nyb2xsQmVoYXZpb3IgPT0gb3RoZXIuaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcgor
ICAgICAgICAgICAgJiYgdmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IgPT0gb3RoZXIudmVydGlj
YWxPdmVyc2Nyb2xsQmVoYXZpb3IKKyAgICAgICAgICAgICYmIGhvcml6b250YWxTY3JvbGxFbGFz
dGljaXR5ID09IG90aGVyLmhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5CiAgICAgICAgICAgICAm
JiB2ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkgPT0gb3RoZXIudmVydGljYWxTY3JvbGxFbGFzdGlj
aXR5CiAgICAgICAgICAgICAmJiBob3Jpem9udGFsU2Nyb2xsYmFyTW9kZSA9PSBvdGhlci5ob3Jp
em9udGFsU2Nyb2xsYmFyTW9kZQogICAgICAgICAgICAgJiYgdmVydGljYWxTY3JvbGxiYXJNb2Rl
ID09IG90aGVyLnZlcnRpY2FsU2Nyb2xsYmFyTW9kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcAppbmRleCAxY2VmMzFiYjM2NjUxNmQzYjRhOGNl
ODFmYzE5ZGZhYjZlOTJhMGQ1Li5mYmNlM2RiYjM3NGVlOGRkZWJhNDZhYTk0YjE2MjdkZWUwNjM0
ODQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdU
cmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVl
LmNwcApAQCAtMTc0LDIxICsxNzQsNTkgQEAgV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0IFNjcm9s
bGluZ1RyZWU6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW4KICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCitib29sIFNjcm9sbGluZ1RyZWU6OnNob3VsZEJsb2NrU2Nyb2xs
Q2hhaW5pbmdXaXRoTm9kZShjb25zdCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZSYgc2Nyb2xs
aW5nTm9kZSwgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBTY3JvbGxDaGFpbmluZ0Js
b2NrZXImIGJsb2NrZXIsIGJvb2wmIGhhbmRsZWQpCit7CisgICAgc2Nyb2xsaW5nTm9kZS51cGRh
dGVTY3JvbGxDaGFpbmluZ0Jsb2NrZXJTdGF0ZShibG9ja2VyKTsKKworICAgIEZsb2F0U2l6ZSBm
aWx0ZXJlZERlbHRhKHdoZWVsRXZlbnQuZGVsdGFYKCksIHdoZWVsRXZlbnQuZGVsdGFZKCkpOwor
ICAgIGF1dG8gYmlhc2VkRGVsdGEgPSBQbGF0Zm9ybVdoZWVsRXZlbnQ6OndoZWVsRGVsdGFCaWFz
aW5nVG93YXJkc1ZlcnRpY2FsKGZpbHRlcmVkRGVsdGEpOworICAgIGlmIChibG9ja2VyLmJsb2Nr
WCB8fCBibG9ja2VyLmJsb2NrWSkgeworICAgICAgICBpZiAoYmxvY2tlci5ibG9ja1ggJiYgIWJp
YXNlZERlbHRhLmhlaWdodCgpICYmIHdpbGxXaGVlbEV2ZW50U3RhcnRTd2lwZUdlc3R1cmUod2hl
ZWxFdmVudCkpIHsKKyAgICAgICAgICAgIGhhbmRsZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIGlmIChTY3JvbGxDaGFpbmluZ0Jsb2NrZXI6
OnNob3VsZEJsb2NrU2Nyb2xsQ2hhaW5pbmcoYmxvY2tlciwgYmlhc2VkRGVsdGEpKSB7CisgICAg
ICAgICAgICBoYW5kbGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICB9CisgICAgICAgIFNjcm9sbENoYWluaW5nQmxvY2tlcjo6ZmlsdGVyRGVsdGEoYmxvY2tlciwg
Ymlhc2VkRGVsdGEsIGZpbHRlcmVkRGVsdGEpOworICAgICAgICB3aGVlbEV2ZW50ID0gd2hlZWxF
dmVudC5jb3B5V2l0aERlbHRhc0FuZFZlbG9jaXR5KGZpbHRlcmVkRGVsdGEud2lkdGgoKSwgZmls
dGVyZWREZWx0YS5oZWlnaHQoKSwgd2hlZWxFdmVudC5zY3JvbGxpbmdWZWxvY2l0eSgpKTsKKyAg
ICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQgU2Ny
b2xsaW5nVHJlZTo6aGFuZGxlV2hlZWxFdmVudFdpdGhOb2RlKGNvbnN0IFBsYXRmb3JtV2hlZWxF
dmVudCYgd2hlZWxFdmVudCwgT3B0aW9uU2V0PFdoZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHM+IHBy
b2Nlc3NpbmdTdGVwcywgU2Nyb2xsaW5nVHJlZU5vZGUqIG5vZGUsIEV2ZW50VGFyZ2V0aW5nIGV2
ZW50VGFyZ2V0aW5nKQogeworICAgIFBsYXRmb3JtV2hlZWxFdmVudCBhZGp1c3RlZFdoZWVsRXZl
bnQgPSBQbGF0Zm9ybVdoZWVsRXZlbnQod2hlZWxFdmVudCk7CisgICAgU2Nyb2xsQ2hhaW5pbmdC
bG9ja2VyIGJsb2NrZXIgPSB7IGZhbHNlLCBmYWxzZSB9OwogICAgIHdoaWxlIChub2RlKSB7CiAg
ICAgICAgIGlmIChpczxTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZT4oKm5vZGUpKSB7CiAgICAg
ICAgICAgICBhdXRvJiBzY3JvbGxpbmdOb2RlID0gZG93bmNhc3Q8U2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGU+KCpub2RlKTsKLSAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gc2Nyb2xsaW5nTm9k
ZS5oYW5kbGVXaGVlbEV2ZW50KHdoZWVsRXZlbnQsIGV2ZW50VGFyZ2V0aW5nKTsKKyAgICAgICAg
ICAgIGF1dG8gcmVzdWx0ID0gc2Nyb2xsaW5nTm9kZS5oYW5kbGVXaGVlbEV2ZW50KGFkanVzdGVk
V2hlZWxFdmVudCwgZXZlbnRUYXJnZXRpbmcpOwogCiAgICAgICAgICAgICBpZiAocmVzdWx0Lndh
c0hhbmRsZWQpIHsKLSAgICAgICAgICAgICAgICBtX2xhdGNoaW5nQ29udHJvbGxlci5ub2RlRGlk
SGFuZGxlRXZlbnQoc2Nyb2xsaW5nTm9kZS5zY3JvbGxpbmdOb2RlSUQoKSwgcHJvY2Vzc2luZ1N0
ZXBzLCB3aGVlbEV2ZW50LCBtX2FsbG93TGF0Y2hpbmcpOworICAgICAgICAgICAgICAgIC8vIElm
IHRoZSBzY3JvbGwgY2hhaW5pbmcgaXMgYmxvY2tlZCBpbiBhIHNpbmdsZSBkaXJlY3Rpb24sIGl0
IHNob3VsZCBzdG9wIGxhdGNoaW5nIHRvIGEgbm9kZSwKKyAgICAgICAgICAgICAgICAvLyBmb3Ig
dGhlIHdoZWVsIGV2ZW50IG1pZ2h0IGNoYW5nZSB0aGUgZGlyZWN0aW9uIGFuZCBvdmVyc2Nyb2xs
LWJlaGF2aW9yIG1pZ2h0IG5vdCBiZSBhYmxlIGJsb2NrCisgICAgICAgICAgICAgICAgLy8gdGhl
IHNjcm9sbCBjaGFpbmluZyBpZiBpdCBsYXRjaGVzIHRvIHRoZSBhbmNlc3RyeSBub2RlIG9mIG92
ZXJzY3JvbGwtYmVoYXZpb3IgdGFyZ2V0LgorICAgICAgICAgICAgICAgIGlmICgoYmxvY2tlci5i
bG9ja1ggJiYgYmxvY2tlci5ibG9ja1kpIHx8ICghYmxvY2tlci5ibG9ja1ggJiYgIWJsb2NrZXIu
YmxvY2tZKSkKKyAgICAgICAgICAgICAgICAgICAgbV9sYXRjaGluZ0NvbnRyb2xsZXIubm9kZURp
ZEhhbmRsZUV2ZW50KHNjcm9sbGluZ05vZGUuc2Nyb2xsaW5nTm9kZUlEKCksIHByb2Nlc3NpbmdT
dGVwcywgd2hlZWxFdmVudCwgbV9hbGxvd0xhdGNoaW5nKTsKICAgICAgICAgICAgICAgICBtX2dl
c3R1cmVTdGF0ZS5ub2RlRGlkSGFuZGxlRXZlbnQoc2Nyb2xsaW5nTm9kZS5zY3JvbGxpbmdOb2Rl
SUQoKSwgd2hlZWxFdmVudCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAg
ICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKHJlc3VsdC5uZWVkc01haW5UaHJlYWRQcm9jZXNz
aW5nKCkgfHwgZXZlbnRUYXJnZXRpbmcgIT0gRXZlbnRUYXJnZXRpbmc6OlByb3BhZ2F0ZSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworCisgICAgICAgICAgICBib29sIGhhbmRsZWQg
PSBmYWxzZTsKKyAgICAgICAgICAgIGlmIChzaG91bGRCbG9ja1Njcm9sbENoYWluaW5nV2l0aE5v
ZGUoc2Nyb2xsaW5nTm9kZSwgYWRqdXN0ZWRXaGVlbEV2ZW50LCBibG9ja2VyLCBoYW5kbGVkKSkg
eworICAgICAgICAgICAgICAgIGlmICghaGFuZGxlZCkKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdDo6dW5oYW5kbGVkKCk7CisKKyAgICAgICAgICAg
ICAgICBpZiAoKGJsb2NrZXIuYmxvY2tYICYmIGJsb2NrZXIuYmxvY2tZKSkKKyAgICAgICAgICAg
ICAgICAgICAgbV9sYXRjaGluZ0NvbnRyb2xsZXIubm9kZURpZEhhbmRsZUV2ZW50KHNjcm9sbGlu
Z05vZGUuc2Nyb2xsaW5nTm9kZUlEKCksIHByb2Nlc3NpbmdTdGVwcywgd2hlZWxFdmVudCwgbV9h
bGxvd0xhdGNoaW5nKTsKKyAgICAgICAgICAgICAgICBtX2dlc3R1cmVTdGF0ZS5ub2RlRGlkSGFu
ZGxlRXZlbnQoc2Nyb2xsaW5nTm9kZS5zY3JvbGxpbmdOb2RlSUQoKSwgd2hlZWxFdmVudCk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdDo6aGFuZGxlZCgp
OworICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgaWYgKGlzPFNjcm9sbGluZ1Ry
ZWVPdmVyZmxvd1Njcm9sbFByb3h5Tm9kZT4oKm5vZGUpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmgKaW5kZXggODMxZjU2NmQ1YjM5MTgwODM3YWE0
ZmI2ODQ3MGY0N2UwMWU1YmYyNC4uZmYwMWExYjhlMGYxOGNmMDdjOTRmMDU2MmU3YjY5YTZhMzRm
YWRmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
VHJlZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUu
aApAQCAtMjczLDcgKzI3Myw4IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9p
ZCByZWNlaXZlZFdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JikgeyB9Ci0gICAg
CisgICAgYm9vbCBzaG91bGRCbG9ja1Njcm9sbENoYWluaW5nV2l0aE5vZGUoY29uc3QgU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGUmLCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBTY3JvbGxDaGFpbmlu
Z0Jsb2NrZXImLCBib29sJiBoYW5kbGVkKTsKKwogICAgIFJlZlB0cjxTY3JvbGxpbmdUcmVlRnJh
bWVTY3JvbGxpbmdOb2RlPiBtX3Jvb3ROb2RlOwogCiAgICAgdXNpbmcgU2Nyb2xsaW5nVHJlZU5v
ZGVNYXAgPSBIYXNoTWFwPFNjcm9sbGluZ05vZGVJRCwgUmVmUHRyPFNjcm9sbGluZ1RyZWVOb2Rl
Pj47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAKaW5kZXggOTBiNTBjMjIxMTMzZWE0MzZlODYxZmVl
ZThlODc1MTNjYjUyM2JiMy4uY2U5YjcwMjZiNmQ5YTE4ZDg1MTE3ZmIzMjU2MWM5YmEyNTdmNThk
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcApAQCAtMTM0LDYgKzEzNCwyMiBAQCBib29sIFNj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjppc0xhdGNoZWROb2RlKCkgY29uc3QKICAgICByZXR1
cm4gc2Nyb2xsaW5nVHJlZSgpLmxhdGNoZWROb2RlSUQoKSA9PSBzY3JvbGxpbmdOb2RlSUQoKTsK
IH0KIAorT3ZlcnNjcm9sbEJlaGF2aW9yIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjpob3Jp
em9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zY3JvbGxh
YmxlQXJlYVBhcmFtZXRlcnMuaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcjsKK30KKworT3Zl
cnNjcm9sbEJlaGF2aW9yIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjp2ZXJ0aWNhbE92ZXJz
Y3JvbGxCZWhhdmlvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWFQYXJh
bWV0ZXJzLnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yOworfQorCit2b2lkIFNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlOjp1cGRhdGVTY3JvbGxDaGFpbmluZ0Jsb2NrZXJTdGF0ZShTY3JvbGxD
aGFpbmluZ0Jsb2NrZXImIGJsb2NrZXIpIGNvbnN0Cit7CisgICAgYmxvY2tlci5ibG9ja1ggfD0g
aG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpICE9IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0
bzsKKyAgICBibG9ja2VyLmJsb2NrWSB8PSB2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpICE9
IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0bzsKK30KKwogYm9vbCBTY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZTo6Y2FuSGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdo
ZWVsRXZlbnQsIEV2ZW50VGFyZ2V0aW5nIGV2ZW50VGFyZ2V0aW5nKSBjb25zdAogewogICAgIGlm
ICghY2FuSGF2ZVNjcm9sbGJhcnMoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oCmluZGV4IDg2MmMxYjNk
YmUwZTIzZTE2OWZhNTJjYWE0NjJmZWZkZjE0ZGU4MTguLmE2YmY0Yzk5N2NiNDIxZTU2ZmVhZjEx
YTFiZDlkNTU2NGRjY2RmNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaApAQCAtMTQ1LDYgKzE0NSw5
IEBAIHByb3RlY3RlZDoKICAgICBjb25zdCBGbG9hdFNpemUmIHRvdGFsQ29udGVudHNTaXplRm9y
UnViYmVyQmFuZCgpIGNvbnN0IHsgcmV0dXJuIG1fdG90YWxDb250ZW50c1NpemVGb3JSdWJiZXJC
YW5kOyB9CiAgICAgdm9pZCBzZXRUb3RhbENvbnRlbnRzU2l6ZUZvclJ1YmJlckJhbmQoY29uc3Qg
RmxvYXRTaXplJiB0b3RhbENvbnRlbnRzU2l6ZUZvclJ1YmJlckJhbmQpIHsgbV90b3RhbENvbnRl
bnRzU2l6ZUZvclJ1YmJlckJhbmQgPSB0b3RhbENvbnRlbnRzU2l6ZUZvclJ1YmJlckJhbmQ7IH0K
IAorICAgIE92ZXJzY3JvbGxCZWhhdmlvciBob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkg
Y29uc3Q7CisgICAgT3ZlcnNjcm9sbEJlaGF2aW9yIHZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9y
KCkgY29uc3Q7CisgICAgdm9pZCB1cGRhdGVTY3JvbGxDaGFpbmluZ0Jsb2NrZXJTdGF0ZShTY3Jv
bGxDaGFpbmluZ0Jsb2NrZXImKSBjb25zdDsKICAgICBTY3JvbGxFbGFzdGljaXR5IGhvcml6b250
YWxTY3JvbGxFbGFzdGljaXR5KCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYVBhcmFt
ZXRlcnMuaG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHk7IH0KICAgICBTY3JvbGxFbGFzdGljaXR5
IHZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eSgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsYWJsZUFy
ZWFQYXJhbWV0ZXJzLnZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eTsgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGVEZWxlZ2F0ZU1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMuaAppbmRleCAzMmE4MzhlYjZmM2RhNDM5
ODNiY2ZmNTViN2NjNDE4MTU1NzM0ZTlmLi4zOTgxNDgxZmU0ZDI5NmVlYmNlZTNhYzcxZDgyNGQ3
ZDIzY2E2YWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMv
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRl
TWFjLmgKQEAgLTEwMSw2ICsxMDEsOSBAQCBwcml2YXRlOgogICAgIEZsb2F0U2l6ZSB2aWV3cG9y
dFNpemUoKSBjb25zdCBvdmVycmlkZTsKICNlbmRpZgogCisgICAgYm9vbCBzaG91bGRTdG9wSG9y
aXpvbnRhbFN0cmVjaCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgc2hvdWxkU3RvcFZlcnRp
Y2FsU3RyZWNoKCkgY29uc3Qgb3ZlcnJpZGU7CisKICAgICB2b2lkIHJlbGVhc2VSZWZlcmVuY2Vz
VG9TY3JvbGxlckltcHNPblRoZU1haW5UaHJlYWQoKTsKIAogICAgIFNjcm9sbENvbnRyb2xsZXIg
bV9zY3JvbGxDb250cm9sbGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVE
ZWxlZ2F0ZU1hYy5tbQppbmRleCA2YTI1ODAyMTA1ODAxMmRjNWU1ZTE2NWM0N2Y3ZjllNjE0ZDYz
ZWE1Li45MzQ3NzQxNGMyMDg3OWZkN2QwOTdlNzhjMzk5NzFlYjQ0ZGI0NWQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9t
YWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5tbQpAQCAtMjYyLDYgKzI2
Miw5IEBAIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxDb250cm9sbGVyVGltZXI+IFNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OmNyCiAKIGJvb2wgU2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGVEZWxlZ2F0ZU1hYzo6YWxsb3dzSG9yaXpvbnRhbFN0cmV0Y2hpbmcoY29uc3QgUGxh
dGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50KSBjb25zdAogeworICAgIGlmIChzaG91bGRTdG9w
SG9yaXpvbnRhbFN0cmVjaCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICBzd2l0Y2gg
KGhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5KCkpIHsKICAgICBjYXNlIFNjcm9sbEVsYXN0aWNp
dHlBdXRvbWF0aWM6IHsKICAgICAgICAgYm9vbCBzY3JvbGxiYXJzQWxsb3dTdHJldGNoaW5nID0g
YWxsb3dzSG9yaXpvbnRhbFNjcm9sbGluZygpIHx8ICFhbGxvd3NWZXJ0aWNhbFNjcm9sbGluZygp
OwpAQCAtMjg0LDYgKzI4Nyw5IEBAIGJvb2wgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxl
Z2F0ZU1hYzo6YWxsb3dzSG9yaXpvbnRhbFN0cmV0Y2hpbmcoY29uc3QgUGxhCiAKIGJvb2wgU2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6YWxsb3dzVmVydGljYWxTdHJldGNo
aW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCkgY29uc3QKIHsKKyAgICBp
ZiAoc2hvdWxkU3RvcFZlcnRpY2FsU3RyZWNoKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwog
ICAgIHN3aXRjaCAodmVydGljYWxTY3JvbGxFbGFzdGljaXR5KCkpIHsKICAgICBjYXNlIFNjcm9s
bEVsYXN0aWNpdHlBdXRvbWF0aWM6IHsKICAgICAgICAgYm9vbCBzY3JvbGxiYXJzQWxsb3dTdHJl
dGNoaW5nID0gYWxsb3dzVmVydGljYWxTY3JvbGxpbmcoKSB8fCAhYWxsb3dzSG9yaXpvbnRhbFNj
cm9sbGluZygpOwpAQCAtNDM3LDYgKzQ0MywxNiBAQCBGbG9hdFNpemUgU2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6dmlld3BvcnRTaXplKCkgY29uc3QKIH0KICNlbmRpZgog
Citib29sIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OnNob3VsZFN0b3BI
b3Jpem9udGFsU3RyZWNoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc2Nyb2xsaW5nTm9kZSgpLmhv
cml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSA9PSBPdmVyc2Nyb2xsQmVoYXZpb3I6Ok5vbmU7
Cit9CisKK2Jvb2wgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6c2hvdWxk
U3RvcFZlcnRpY2FsU3RyZWNoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc2Nyb2xsaW5nTm9kZSgp
LnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgPT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpOb25l
OworfQorCiB2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OmRlZmVy
V2hlZWxFdmVudFRlc3RDb21wbGV0aW9uRm9yUmVhc29uKFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6
U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdoZWVsRXZlbnRUZXN0TW9uaXRv
cjo6RGVmZXJSZWFzb24gcmVhc29uKSBjb25zdAogewogICAgIGlmICghc2Nyb2xsaW5nVHJlZSgp
LmlzTW9uaXRvcmluZ1doZWVsRXZlbnRzKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bs
YXRmb3JtV2hlZWxFdmVudC5oCmluZGV4IGQ3MTY5MzQ2YTI0MDIzYzJhNDc4N2FlMzQ1NDBhMzc2
MDdjMGEyZDUuLjY0MTc5N2E2ZjQxODc1MzM4Y2E3MWVhNzM5MTYwZDEwYjA2Zjg4ZTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oCkBAIC0yNiw2ICsy
Niw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKKyNpbmNsdWRl
ICJGbG9hdFNpemUuaCIKICNpbmNsdWRlICJJbnRQb2ludC5oIgogI2luY2x1ZGUgIlBsYXRmb3Jt
RXZlbnQuaCIKICNpbmNsdWRlIDx3dGYvV2luZG93c0V4dHJhcy5oPgpAQCAtMTc0LDYgKzE3NSw4
IEBAIHB1YmxpYzoKICAgICBQbGF0Zm9ybVdoZWVsRXZlbnQoSFdORCwgV1BBUkFNLCBMUEFSQU0s
IGJvb2wgaXNNb3VzZUhXaGVlbCk7CiAjZW5kaWYKIAorICAgIHN0YXRpYyBGbG9hdFNpemUgd2hl
ZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoY29uc3QgRmxvYXRTaXplJik7CisKIHByb3Rl
Y3RlZDoKICAgICBQbGF0Zm9ybVdoZWVsRXZlbnRHcmFudWxhcml0eSBtX2dyYW51bGFyaXR5IHsg
U2Nyb2xsQnlQaXhlbFdoZWVsRXZlbnQgfTsKICAgICBib29sIG1fZGlyZWN0aW9uSW52ZXJ0ZWRG
cm9tRGV2aWNlIHsgZmFsc2UgfTsKQEAgLTI2NCw2ICsyNjcsMTkgQEAgaW5saW5lIEZsb2F0UG9p
bnQgUGxhdGZvcm1XaGVlbEV2ZW50Ojpzd2lwZVZlbG9jaXR5KCkgY29uc3QKIAogI2VuZGlmIC8v
IEVOQUJMRShLSU5FVElDX1NDUk9MTElORykKIAoraW5saW5lIEZsb2F0U2l6ZSBQbGF0Zm9ybVdo
ZWVsRXZlbnQ6OndoZWVsRGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRpY2FsKGNvbnN0IEZsb2F0U2l6
ZSYgZGVsdGEpCit7CisgICAgYXV0byBkZWx0YVggPSBkZWx0YS53aWR0aCgpOworICAgIGF1dG8g
ZGVsdGFZID0gZGVsdGEuaGVpZ2h0KCk7CisKKyAgICBpZiAoZmFic2YoZGVsdGFZKSA+PSBmYWJz
ZihkZWx0YVgpKQorICAgICAgICBkZWx0YVggPSAwOworICAgIGVsc2UKKyAgICAgICAgZGVsdGFZ
ID0gMDsKKworICAgIHJldHVybiB7IGRlbHRhWCwgZGVsdGFZIH07Cit9CisKIFdFQkNPUkVfRVhQ
T1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBQ
bGF0Zm9ybVdoZWVsRXZlbnQmKTsKIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBzKTsKIFdF
QkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0m
LCBFdmVudEhhbmRsaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbFR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxUeXBlcy5oCmluZGV4
IDBiMWM0MDU2M2U4Y2JiODIyYTlmZWJhNGMwYzQ2NWY4YTU3NGE5M2IuLmY4ZjcxYzJlMWZmN2I5
ZTRkMmU3NTY5ZTdiMTkyMWI4MjIxZjg0ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbFR5cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
VHlwZXMuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJGbG9h
dFBvaW50LmgiCisjaW5jbHVkZSAiRmxvYXRTaXplLmgiCiAjaW5jbHVkZSAiSW50UG9pbnQuaCIK
ICNpbmNsdWRlIDxjc3RkaW50PgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CkBAIC0yNTks
NiArMjYwLDM0IEBAIGVudW0gY2xhc3MgU2Nyb2xsU25hcFBvaW50U2VsZWN0aW9uTWV0aG9kIDog
dWludDhfdCB7CiAgICAgQ2xvc2VzdCwKIH07CiAKK3N0cnVjdCBTY3JvbGxDaGFpbmluZ0Jsb2Nr
ZXIgeworICAgIGJvb2wgYmxvY2tYIHsgZmFsc2UgfTsKKyAgICBib29sIGJsb2NrWSB7IGZhbHNl
IH07CisKKyAgICBzdGF0aWMgYm9vbCBzaG91bGRCbG9ja1Njcm9sbENoYWluaW5nKGNvbnN0IFNj
cm9sbENoYWluaW5nQmxvY2tlciYgYmxvY2tlciwgY29uc3QgRmxvYXRTaXplJiBiaWFzZWREZWx0
YSkKKyAgICB7CisgICAgICAgIGlmICgoYmxvY2tlci5ibG9ja1ggJiYgYmxvY2tlci5ibG9ja1kp
CisgICAgICAgICAgICB8fCAoYmxvY2tlci5ibG9ja1ggJiYgIWJpYXNlZERlbHRhLmhlaWdodCgp
KQorICAgICAgICAgICAgfHwgKGJsb2NrZXIuYmxvY2tZICYmICFiaWFzZWREZWx0YS53aWR0aCgp
KSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorCisgICAgc3RhdGljIHZvaWQgZmlsdGVyRGVsdGEoY29uc3QgU2Nyb2xsQ2hhaW5pbmdCbG9j
a2VyJiBibG9ja2VyLCBjb25zdCBGbG9hdFNpemUmIGJpYXNlZERlbHRhLCBGbG9hdFNpemUmIGZp
bHRlcmVkRGVsdGEpCisgICAgeworICAgICAgICBpZiAoYmxvY2tlci5ibG9ja1gpIHsKKyAgICAg
ICAgICAgIGZpbHRlcmVkRGVsdGEuc2V0V2lkdGgoMCk7CisgICAgICAgICAgICBpZiAoIWJpYXNl
ZERlbHRhLmhlaWdodCgpKQorICAgICAgICAgICAgICAgIGZpbHRlcmVkRGVsdGEuc2V0SGVpZ2h0
KDApOworICAgICAgICB9CisgICAgICAgIGlmIChibG9ja2VyLmJsb2NrWSkgeworICAgICAgICAg
ICAgZmlsdGVyZWREZWx0YS5zZXRIZWlnaHQoMCk7CisgICAgICAgICAgICBpZiAoIWJpYXNlZERl
bHRhLndpZHRoKCkpCisgICAgICAgICAgICAgICAgZmlsdGVyZWREZWx0YS5zZXRXaWR0aCgwKTsK
KyAgICAgICAgfQorICAgIH0KK307CisKIHVzaW5nIFNjcm9sbGJhckNvbnRyb2xTdGF0ZSA9IHVu
c2lnbmVkOwogdXNpbmcgU2Nyb2xsYmFyQ29udHJvbFBhcnRNYXNrID0gdW5zaWduZWQ7CiB1c2lu
ZyBTY3JvbGxpbmdOb2RlSUQgPSB1aW50NjRfdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbGFibGVBcmVhLmNwcAppbmRleCA1ZjBlMmU2ZjAyMzlmYjRmZTRhYjI5YmIzMTRiODNlYWE5
OWNjZGUyLi5jZmVhMThiMTE2ZmFiZDM0NmM5ODA0MzUzMTFmZGVlY2U0Y2UwNmIzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwCkBAIC04NDgsNiArODQ4LDEy
IEBAIHZvaWQgU2Nyb2xsYWJsZUFyZWE6OmNvbXB1dGVTY3JvbGxiYXJWYWx1ZUFuZE92ZXJoYW5n
KGZsb2F0IGN1cnJlbnRQb3NpdGlvbiwgZmxvCiAgICAgfQogfQogCit2b2lkIFNjcm9sbGFibGVB
cmVhOjp1cGRhdGVTY3JvbGxDaGFpbmluZ0Jsb2NrZXJTdGF0ZShTY3JvbGxDaGFpbmluZ0Jsb2Nr
ZXImIGJsb2NrZXIpIGNvbnN0Cit7CisgICAgYmxvY2tlci5ibG9ja1ggfD0gaG9yaXpvbnRhbE92
ZXJzY3JvbGxCZWhhdmlvcigpICE9IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0bzsKKyAgICBibG9j
a2VyLmJsb2NrWSB8PSB2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpICE9IE92ZXJzY3JvbGxC
ZWhhdmlvcjo6QXV0bzsKK30KKwogVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0
cywgY29uc3QgU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhKQogewogICAgIHRzIDw8IHNj
cm9sbGFibGVBcmVhLmRlYnVnRGVzY3JpcHRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxhYmxlQXJlYS5oCmluZGV4IDlmY2Q1NDlhYmI2ZWRhMjA2ZTIyMGMwYmQ4ZGQ5MWZlZjI3
MmYzMGUuLjgzNjRlZWY1OTE0ZWFiMDE5NDMxMDBlZGIyZGIyZTI3ZTYwM2NhYzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaApAQCAtMTI0LDYgKzEyNCwxMCBAQCBw
dWJsaWM6CiAgICAgYm9vbCBjb25zdHJhaW5zU2Nyb2xsaW5nVG9Db250ZW50RWRnZSgpIGNvbnN0
IHsgcmV0dXJuIG1fY29uc3RyYWluc1Njcm9sbGluZ1RvQ29udGVudEVkZ2U7IH0KICAgICB2b2lk
IHNldENvbnN0cmFpbnNTY3JvbGxpbmdUb0NvbnRlbnRFZGdlKGJvb2wgY29uc3RyYWluc1Njcm9s
bGluZ1RvQ29udGVudEVkZ2UpIHsgbV9jb25zdHJhaW5zU2Nyb2xsaW5nVG9Db250ZW50RWRnZSA9
IGNvbnN0cmFpbnNTY3JvbGxpbmdUb0NvbnRlbnRFZGdlOyB9CiAKKyAgICB2aXJ0dWFsIE92ZXJz
Y3JvbGxCZWhhdmlvciBob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29uc3QgeyByZXR1
cm4gT3ZlcnNjcm9sbEJlaGF2aW9yOjpBdXRvOyB9CisgICAgdmlydHVhbCBPdmVyc2Nyb2xsQmVo
YXZpb3IgdmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdCB7IHJldHVybiBPdmVyc2Ny
b2xsQmVoYXZpb3I6OkF1dG87IH0KKyAgICB2b2lkIHVwZGF0ZVNjcm9sbENoYWluaW5nQmxvY2tl
clN0YXRlKFNjcm9sbENoYWluaW5nQmxvY2tlciYpIGNvbnN0OworCiAgICAgdm9pZCBzZXRWZXJ0
aWNhbFNjcm9sbEVsYXN0aWNpdHkoU2Nyb2xsRWxhc3RpY2l0eSBzY3JvbGxFbGFzdGljaXR5KSB7
IG1fdmVydGljYWxTY3JvbGxFbGFzdGljaXR5ID0gc2Nyb2xsRWxhc3RpY2l0eTsgfQogICAgIFNj
cm9sbEVsYXN0aWNpdHkgdmVydGljYWxTY3JvbGxFbGFzdGljaXR5KCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8U2Nyb2xsRWxhc3RpY2l0eT4obV92ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkp
OyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbENv
bnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xs
ZXIuaAppbmRleCA3MzAzMjQ0ZmM2MGZlZjM0MzkwYWQ2NGUyNTE5YWM1ZWIyMzIxNTA1Li4zOGRm
NThmYmZkOTVlNGYyMzkwMjVlNmMwNDg5YTNlODk1YjA5ODZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5oCkBAIC0xMTgsNiArMTE4LDEx
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIExheW91dFNpemUgc2Nyb2xsRXh0ZW50KCkgY29uc3Qg
PSAwOwogICAgIHZpcnR1YWwgRmxvYXRTaXplIHZpZXdwb3J0U2l6ZSgpIGNvbnN0ID0gMDsKICNl
bmRpZgorCisjaWYgUExBVEZPUk0oTUFDKQorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTdG9wSG9y
aXpvbnRhbFN0cmVjaCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29s
IHNob3VsZFN0b3BWZXJ0aWNhbFN0cmVjaCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisjZW5k
aWYKIH07CiAKIGVudW0gY2xhc3MgV2hlZWxFdmVudFN0YXR1cyB7CkBAIC0xNzMsOCArMTc4LDYg
QEAgcHVibGljOgogI2VuZGlmCiAjZW5kaWYKIAotICAgIHN0YXRpYyBGbG9hdFNpemUgd2hlZWxE
ZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jik7Ci0K
ICAgICBlbnVtIGNsYXNzIFdoZWVsQXhpc0JpYXMgeyBOb25lLCBWZXJ0aWNhbCB9OwogICAgIHN0
YXRpYyBPcHRpb25hbDxTY3JvbGxEaXJlY3Rpb24+IGRpcmVjdGlvbkZyb21FdmVudChjb25zdCBQ
bGF0Zm9ybVdoZWVsRXZlbnQmLCBPcHRpb25hbDxTY3JvbGxFdmVudEF4aXM+LCBXaGVlbEF4aXNC
aWFzID0gV2hlZWxBeGlzQmlhczo6Tm9uZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9sbGVyLm1tCmluZGV4IGQwOTVlNmIxNzNiOWY5MjBhMGQ0
ZDlhNTI1YjMxMTJkMzg1Y2RkYmIuLmI3MTg1NmY4NGNiNDgxMGUxMjEyMGI1ZTNlODdlNzA4ZTg0
NWFiOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbENv
bnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29u
dHJvbGxlci5tbQpAQCAtMjUyLDcgKzI1Miw4IEBAIGJvb2wgU2Nyb2xsQ29udHJvbGxlcjo6aGFu
ZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpCiAgICAg
ICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgbV9vdmVyZmxv
d1Njcm9sbERlbHRhLnNldFdpZHRoKG1fb3ZlcmZsb3dTY3JvbGxEZWx0YS53aWR0aCgpICsgZGVs
dGFYKTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgc2hvdWxkU3RyZXRjaCA9
IHRydWU7CisgICAgICAgICAgICAgICAgaWYgKCghZGVsdGFYIHx8ICFtX2NsaWVudC5zaG91bGRT
dG9wSG9yaXpvbnRhbFN0cmVjaCgpKSAmJiAoIWRlbHRhWSB8fCAhbV9jbGllbnQuc2hvdWxkU3Rv
cFZlcnRpY2FsU3RyZWNoKCkpKQorICAgICAgICAgICAgICAgICAgICBzaG91bGRTdHJldGNoID0g
dHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCkBAIC0zMjksMTkgKzMzMCw2IEBAIGJv
b2wgU2Nyb2xsQ29udHJvbGxlcjo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVs
RXZlbnQmIHdoZWVsRXZlbnQpCiB9CiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCi1GbG9hdFNp
emUgU2Nyb2xsQ29udHJvbGxlcjo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoY29u
c3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50KQotewotICAgIGF1dG8gZGVsdGFYID0g
d2hlZWxFdmVudC5kZWx0YVgoKTsKLSAgICBhdXRvIGRlbHRhWSA9IHdoZWVsRXZlbnQuZGVsdGFZ
KCk7Ci0KLSAgICBpZiAoZmFic2YoZGVsdGFZKSA+PSBmYWJzZihkZWx0YVgpKQotICAgICAgICBk
ZWx0YVggPSAwOwotICAgIGVsc2UKLSAgICAgICAgZGVsdGFZID0gMDsKLQotICAgIHJldHVybiB7
IGRlbHRhWCwgZGVsdGFZIH07Ci19Ci0KIE9wdGlvbmFsPFNjcm9sbERpcmVjdGlvbj4gU2Nyb2xs
Q29udHJvbGxlcjo6ZGlyZWN0aW9uRnJvbUV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYg
d2hlZWxFdmVudCwgT3B0aW9uYWw8U2Nyb2xsRXZlbnRBeGlzPiBheGlzLCBXaGVlbEF4aXNCaWFz
IGJpYXMpCiB7CiAgICAgLy8gRklYTUU6IEl0J3MgaW1wb3NzaWJsZSB0byBpbmZlciBkaXJlY3Rp
b24gZnJvbSBhIHNpbmdsZSBldmVudCwgc2luY2UgdGhlIHN0YXJ0IG9mIGEgZ2VzdHVyZSBpcyBl
aXRoZXIgemVybyBvcgpAQCAtMzQ5LDcgKzMzNyw3IEBAIE9wdGlvbmFsPFNjcm9sbERpcmVjdGlv
bj4gU2Nyb2xsQ29udHJvbGxlcjo6ZGlyZWN0aW9uRnJvbUV2ZW50KGNvbnN0IFBsYXRmb3JtV2hl
CiAKICAgICBhdXRvIHdoZWVsRGVsdGEgPSBGbG9hdFNpemUgeyB3aGVlbEV2ZW50LmRlbHRhWCgp
LCB3aGVlbEV2ZW50LmRlbHRhWSgpIH07CiAgICAgaWYgKGJpYXMgPT0gV2hlZWxBeGlzQmlhczo6
VmVydGljYWwpCi0gICAgICAgIHdoZWVsRGVsdGEgPSB3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNW
ZXJ0aWNhbCh3aGVlbEV2ZW50KTsKKyAgICAgICAgd2hlZWxEZWx0YSA9IFBsYXRmb3JtV2hlZWxF
dmVudDo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwod2hlZWxFdmVudC5kZWx0YSgp
KTsKIAogICAgIGlmIChheGlzKSB7CiAgICAgICAgIHN3aXRjaCAoYXhpcy52YWx1ZSgpKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5oCmluZGV4
IDQ5ZjBiNGIxZDc5Zjc3YTk2OGE5NTJmOGFlYjk3OTU0ZTI5NzJlMjkuLmE2Y2EwYWZlZWQ1NTRj
YWQ5MzM3M2E0NGJmODE4M2RmMTcxMWI4NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5oCkBAIC0xNTYsNiArMTU2LDkgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGFkanVzdFNjcm9sbFBvc2l0aW9uVG9Cb3VuZHNJZk5lY2Vzc2FyeSgpIGZpbmFs
OwogI2VuZGlmCiAKKyAgICBib29sIHNob3VsZFN0b3BIb3Jpem9udGFsU3RyZWNoKCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgYm9vbCBzaG91bGRTdG9wVmVydGljYWxTdHJlY2goKSBjb25zdCBvdmVy
cmlkZTsKKwogICAgIGJvb2wgbV9oYXZlU2Nyb2xsZWRTaW5jZVBhZ2VMb2FkOwogICAgIGJvb2wg
bV9uZWVkc1Njcm9sbGVyU3R5bGVVcGRhdGU7CiAgICAgSW50UmVjdCBtX3Zpc2libGVTY3JvbGxl
clRodW1iUmVjdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3Jv
bGxBbmltYXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmlt
YXRvck1hYy5tbQppbmRleCA2MTUxZGVmYzBlYWVjM2EwNTcxNTAyMGFlNjUwMDIzYmFjZjE0YjNj
Li5lOGU2YWZjMjQ1NjcyNzBhZjcwNGQ1MDAzZTM1MTM0ZjYzOGZmMjcyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tCkBAIC0xNTM2LDYg
KzE1MzYsMTYgQEAgdm9pZCBTY3JvbGxBbmltYXRvck1hYzo6c2V0VmlzaWJsZVNjcm9sbGVyVGh1
bWJSZWN0KGNvbnN0IEludFJlY3QmIHNjcm9sbGVyVGh1bWIKICAgICBtX3Zpc2libGVTY3JvbGxl
clRodW1iUmVjdCA9IHJlY3RJblZpZXdDb29yZGluYXRlczsKIH0KIAorYm9vbCBTY3JvbGxBbmlt
YXRvck1hYzo6c2hvdWxkU3RvcEhvcml6b250YWxTdHJlY2goKSBjb25zdAoreworICAgIHJldHVy
biBtX3Njcm9sbGFibGVBcmVhLmhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSA9PSBPdmVy
c2Nyb2xsQmVoYXZpb3I6Ok5vbmU7Cit9CisKK2Jvb2wgU2Nyb2xsQW5pbWF0b3JNYWM6OnNob3Vs
ZFN0b3BWZXJ0aWNhbFN0cmVjaCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2Nyb2xsYWJsZUFy
ZWEudmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSA9PSBPdmVyc2Nyb2xsQmVoYXZpb3I6Ok5v
bmU7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTTU9P
VEhfU0NST0xMSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5k
ZXggNzQ0MGEyMWIyMGI5MDg5NzQzMjQyZWFlNTM3NmNmNzY5Nzk2NTY3MC4uZDJiZjI1YjM1MjUx
MTU2NTAxNTFkZTI2OGJmYjVmYmVkOTQ2ZjczMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuY3BwCkBAIC02MTYsNiArNjE2LDI0IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnNl
dENvbnN0cmFpbnNTY3JvbGxpbmdUb0NvbnRlbnRFZGdlKGJvb2wgY29uc3RyYWluc1Njcm9sbGlu
Z1RvCiAgICAgaWYgKG1fc2Nyb2xsYWJsZUFyZWEpCiAgICAgICAgIG1fc2Nyb2xsYWJsZUFyZWEt
PnNldENvbnN0cmFpbnNTY3JvbGxpbmdUb0NvbnRlbnRFZGdlKGNvbnN0cmFpbnNTY3JvbGxpbmdU
b0NvbnRlbnRFZGdlKTsKIH0KKworT3ZlcnNjcm9sbEJlaGF2aW9yIFJlbmRlckxheWVyOjpob3Jp
em9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29uc3QKK3sKKyAgICBjb25zdCBSZW5kZXJTdHls
ZSYgc3R5bGUgPSByZW5kZXJlcigpLnN0eWxlKCk7CisgICAgLy8gQW4gZWxlbWVudCB0aGF0IGlz
IG5vdCBzY3JvbGwgY29udGFpbmVyIG11c3QgYWNjZXB0IGJ1dCBpZ25vcmUgdGhlIHZhbHVlcyBv
ZiB0aGlzIHByb3BlcnR5LgorICAgIGlmIChyZW5kZXJCb3goKSAmJiByZW5kZXJCb3goKS0+Y2Fu
QmVTY3JvbGxlZEFuZEhhc1Njcm9sbGFibGVBcmVhKCkpCisgICAgICAgIHJldHVybiBzdHlsZS5v
dmVyc2Nyb2xsQmVoYXZpb3JYKCk7CisgICAgcmV0dXJuIFNjcm9sbGFibGVBcmVhOjpob3Jpem9u
dGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCk7Cit9CisKK092ZXJzY3JvbGxCZWhhdmlvciBSZW5kZXJM
YXllcjo6dmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdAoreworICAgIGNvbnN0IFJl
bmRlclN0eWxlJiBzdHlsZSA9IHJlbmRlcmVyKCkuc3R5bGUoKTsKKyAgICAvLyBBbiBlbGVtZW50
IHRoYXQgaXMgbm90IHNjcm9sbCBjb250YWluZXIgbXVzdCBhY2NlcHQgYnV0IGlnbm9yZSB0aGUg
dmFsdWVzIG9mIHRoaXMgcHJvcGVydHkuCisgICAgaWYgKHJlbmRlckJveCgpICYmIHJlbmRlckJv
eCgpLT5jYW5CZVNjcm9sbGVkQW5kSGFzU2Nyb2xsYWJsZUFyZWEoKSkKKyAgICAgICAgcmV0dXJu
IHN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclkoKTsKKyAgICByZXR1cm4gU2Nyb2xsYWJsZUFyZWE6
OnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCk7Cit9CiAvLyBFbmQgb2YgdGVtcG9yYXJ5IGds
dWUgY29kZQogCiB2b2lkIFJlbmRlckxheWVyOjphZGRDaGlsZChSZW5kZXJMYXllciYgY2hpbGQs
IFJlbmRlckxheWVyKiBiZWZvcmVDaGlsZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmgKaW5kZXggNzYyNWY0MTcxMTZmMGRmMjk5NDljOWI1MzIxY2Y1OWRjMTE3MDI0Zi4uMDlk
N2NlZjFmMzk5OTBiNjU3MTE0ZjNkZmRmNDgxYWU2OTM0MzhmMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmgKQEAgLTIwNSw2ICsyMDUsOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzY3JvbGxUb1hPZmZzZXQoaW50IHgpIHsgc2Nyb2xsVG9PZmZzZXQoU2Nyb2xsT2Zmc2V0KHgs
IHNjcm9sbE9mZnNldCgpLnkoKSksIFNjcm9sbFBvc2l0aW9uQ2hhbmdlT3B0aW9uczo6Y3JlYXRl
UHJvZ3JhbW1hdGljVW5jbGFtcGVkKCkpOyB9CiAgICAgdm9pZCBzY3JvbGxUb1lPZmZzZXQoaW50
IHkpIHsgc2Nyb2xsVG9PZmZzZXQoU2Nyb2xsT2Zmc2V0KHNjcm9sbE9mZnNldCgpLngoKSwgeSks
IFNjcm9sbFBvc2l0aW9uQ2hhbmdlT3B0aW9uczo6Y3JlYXRlUHJvZ3JhbW1hdGljVW5jbGFtcGVk
KCkpOyB9CiAgICAgdm9pZCBzZXRDb25zdHJhaW5zU2Nyb2xsaW5nVG9Db250ZW50RWRnZShib29s
KTsKKyAgICBPdmVyc2Nyb2xsQmVoYXZpb3IgaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigp
IGNvbnN0IGZpbmFsOworICAgIE92ZXJzY3JvbGxCZWhhdmlvciB2ZXJ0aWNhbE92ZXJzY3JvbGxC
ZWhhdmlvcigpIGNvbnN0IGZpbmFsOwogICAgIC8vIEVuZCBvZiB0ZW1wb3JhcnkgZ2x1ZSBjb2Rl
CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggZmFhYTJhZGNmOTkxYjEzNjU5M2M1NTk2MDY0
NmZmMWY0ODBjZjFkNy4uZGI2YzUyYzM0ZTA3YTk5ZWMxZTUzMDZkMmQ2NDQwZTYzZTM3NWFkZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBA
IC0yMDE5LDYgKzIwMTksOSBAQCBib29sIEFyZ3VtZW50Q29kZXI8VXNlclN0eWxlU2hlZXQ+Ojpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgVXNlclN0eWxlU2hlZXQmIHVzZQogCiB2b2lkIEFyZ3Vt
ZW50Q29kZXI8U2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzPjo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIsIGNvbnN0IFNjcm9sbGFibGVBcmVhUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKKyAgICBl
bmNvZGVyIDw8IHBhcmFtZXRlcnMuaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcjsKKyAgICBl
bmNvZGVyIDw8IHBhcmFtZXRlcnMudmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3I7CisKICAgICBl
bmNvZGVyIDw8IHBhcmFtZXRlcnMuaG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHk7CiAgICAgZW5j
b2RlciA8PCBwYXJhbWV0ZXJzLnZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eTsKIApAQCAtMjAzNiw2
ICsyMDM5LDExIEBAIHZvaWQgQXJndW1lbnRDb2RlcjxTY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnM+
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU2NyCiAKIGJvb2wgQXJndW1lbnRDb2Rl
cjxTY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnM+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgU2Ny
b2xsYWJsZUFyZWFQYXJhbWV0ZXJzJiBwYXJhbXMpCiB7CisgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShwYXJhbXMuaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcikpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtcy52ZXJ0aWNhbE92ZXJzY3JvbGxC
ZWhhdmlvcikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUocGFyYW1zLmhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5KSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1zLnZlcnRpY2FsU2Nyb2xsRWxhc3Rp
Y2l0eSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmlu
ZGV4IGZhOTZjZGE4NGVjYjdkNDg4YWU0MjkxMzNjMGY1YjQ0MzcwNDhkYjEuLjM5NTM1Njc4M2Zk
YTU2ZmUxYzFhYjBkOTIzNzI4NWYzNjY0NmYwOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSA8V2Vi
Q29yZS9SZWFsdGltZU1lZGlhU291cmNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJpbmdN
b2RlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1Njcm9sbFR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJpYWxpemVk
UGxhdGZvcm1EYXRhQ3VlVmFsdWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJU
eXBlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kuaD4KQEAg
LTg5Niw2ICs4OTcsMTUgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbz4gewogCiBuYW1lc3BhY2UgV1RGIHsKIAor
dGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpPdmVyc2Nyb2xsQmVoYXZpb3I+
IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgIFdlYkNvcmU6Ok92ZXJzY3Jv
bGxCZWhhdmlvciwKKyAgICBXZWJDb3JlOjpPdmVyc2Nyb2xsQmVoYXZpb3I6OkF1dG8sCisgICAg
V2ViQ29yZTo6T3ZlcnNjcm9sbEJlaGF2aW9yOjpDb250YWluLAorICAgIFdlYkNvcmU6Ok92ZXJz
Y3JvbGxCZWhhdmlvcjo6Tm9uZQorICAgID47Cit9OworCiB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVt
VHJhaXRzPFdlYkNvcmU6OkNvbG9yU3BhY2U+IHsKICAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFs
dWVzPAogICAgIFdlYkNvcmU6OkNvbG9yU3BhY2UsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQppbmRleCA5NjIwZTg2ZmIwYTcyMDE0MDFjMmNhZDU1
MWRlMmNmYjg4ODliZWRiLi5iOGNmMmU3ZmU3NDZiZTg2MjE0OTVmYzE0MzEzODJiMDY1Mzk5ZGMz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0K
QEAgLTQwOTMsNiArNDA5Myw4IEBAIHN0YXRpYyBCT09MIGN1cnJlbnRTY3JvbGxJc0JsaXQoTlNW
aWV3ICpjbGlwVmlldykKICAgICBhdXRvKiBmcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSk7CiAg
ICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmV2ZW50SGFuZGxlcigpLndoZWVsRXZlbnQoZXZlbnQp
KSB7CiAjaWYgUExBVEZPUk0oTUFDKQorICAgICAgICAvLyBGSVhNRTogTmVlZCB0byBmaW5kIGEg
d2F5IHRvIGJsb2NrIHRoZSBjcm9zcy1mcmFtZSBzY3JvbGwgY2hhaW5pbmcgaW4gV0sxLgorICAg
ICAgICAvLyBXZSBjYW4gbm90IGp1c3Qgc2tpcCB0aGUgc2Nyb2xsIGhlcmUsIGl0IG5vdCBvbmx5
IGJsb2NrcyBzY3JvbGwgY2hhaW5pbmcgYnV0IGFsc28gYmxvY2tzIHRoZSBzY3JvbGwgb24gY3Vy
cmVudCB2aWV3LgogICAgICAgICBbc3VwZXIgc2Nyb2xsV2hlZWw6ZXZlbnRdOwogI2VuZGlmCiAg
ICAgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IDMwMDExNTQ4OTExYTU0ZGI4OWZjODhhOTMzNDNiMDRiNjE1N2Y1YTIuLjkx
ZGQ2MjI2YzIwMjZmNjNkZWU4Y2Y5YWQ3NTA0OWFlZWZjYTU1NTAgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
NiBAQAorMjAyMS0wMS0xNSAgQ2F0aGllIENoZW4gIDxjYXRoaWVjaGVuQGlnYWxpYS5jb20+CisK
KyAgICAgICAgSW1wbGVtZW50IENTUyBvdmVyc2Nyb2xsLWJlaGF2aW9yIG9uIE1hYworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwMTM5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmFzZWQgb24gRnLDqWTD
qXJpYyBXYW5nJ3MgcGF0Y2guCisKKyAgICAgICAgKiBUZXN0RXhwZWN0YXRpb25zOgorICAgICAg
ICAqIGZhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3It
ZWxlbWVudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xs
LWJlaGF2aW9yLWlmcmFtZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2Ny
b2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGZhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xs
LWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZh
c3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVo
YXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Nj
cm9sbGluZy9yZXNvdXJjZXMvb3ZlcnNjcm9sbC1iZWhhdmlvci1zdXBwb3J0LmpzOiBBZGRlZC4K
KyAgICAgICAgKGFzeW5jIHBlcmZvcm1XaGVlbFNjcm9sbCk6CisgICAgICAgICogcGxhdGZvcm0v
bWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL21hYy13azIvVGVz
dEV4cGVjdGF0aW9uczoKKwogMjAyMS0wMS0xNSAgUm9iIEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29t
PgogCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjAy
MjQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0
cy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDhjYmIyMjgxZDFkMzhhY2MwNTA5Yzc4ZTM3MDQ5MWYy
Y2UyZTgyNzQuLjM4MGJhZmM4YTQ3N2MwYzBjOGZmOGYyZDE1ODU4MzVmNWExMDliMzMgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvVGVz
dEV4cGVjdGF0aW9ucwpAQCAtMTAyNCw2ICsxMDI0LDEyIEBAIHdlYmtpdC5vcmcvYi8yMDMxNDYg
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9vZmZzY3JlZW4gWyBT
a2lwCiAjIFRlc3RzIGEgc2V0dGluZyBiZWhpbmQgdGhlIEVOQUJMRV9GVUxMU0NSRUVOX0FQSSBm
bGFnLCB3aGljaCBpcyBXSzItb25seQogbWVkaWEvdmlkZW8tc3VwcG9ydHMtZnVsbHNjcmVlbi5o
dG1sIFsgU2tpcCBdCiAKKyMgVGVzdHMgb3ZlcnNjcm9sbC1iZWhhdmlvciwgd2hpY2ggb25seSBz
dXBwb3J0ZWQgb24gTWFjCitmYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1l
bnQuaHRtbCBbIFNraXAgXQorZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJh
bWUuaHRtbCBbIFNraXAgXQorZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNj
cm9sbGFibGUtZWxlbWVudC5odG1sIFsgU2tpcCBdCitmYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xs
LWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUuaHRtbCBbIFNraXAgXQorCiAjLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAjIEVuZCBwbGF0Zm9ybS1zcGVjaWZpYyB0ZXN0cy4K
ICMvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1l
bnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI3MTUwZmY2MGI1ZGJkZDBiNGE3YWM2ZjgzZmI1
NmY1N2NkMmNkODIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGlu
Zy9vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjAg
QEAKKworUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xs
LWJlaGF2aW9yOiBhdXRvIGF1dG8uCitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qg
d2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIGF1dG8uCitQQVNTIEVsZW1lbnQgaG9yaXpv
bnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gYXV0by4K
K1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZp
b3I6IGNvbnRhaW4gYXV0by4KK1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdp
dGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBhdXRvLgorUEFTUyBFbGVtZW50IHZlcnRpY2Fs
IHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBhdXRvLgorUEFTUyBF
bGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBh
dXRvIGNvbnRhaW4uCitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVy
c2Nyb2xsLWJlaGF2aW9yOiBhdXRvIGNvbnRhaW4uCitQQVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBz
Y3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gY29udGFpbi4KK1BB
U1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6
IGNvbnRhaW4gY29udGFpbi4KK1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdp
dGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBjb250YWluLgorUEFTUyBFbGVtZW50IHZlcnRp
Y2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBjb250YWluLgor
UEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2
aW9yOiBhdXRvIG5vbmUuCitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBv
dmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIG5vbmUuCitQQVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBz
Y3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gbm9uZS4KK1BBU1Mg
RWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNv
bnRhaW4gbm9uZS4KK1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3Zl
cnNjcm9sbC1iZWhhdmlvcjogbm9uZSBub25lLgorUEFTUyBFbGVtZW50IHZlcnRpY2FsIHNjcm9s
bCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBub25lLgorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItZWxl
bWVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRiNGRhNTk3M2RiYzgxZTcxYzM5ZWIxZGYxYjZkMDgzZGQ4
Nzg3MGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9vdmVy
c2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQuaHRtbApAQCAtMCwwICsxLDc4IEBACis8IWRvY3R5cGUg
aHRtbD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+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
IG92ZXJzY3JvbGxZOworICAgICAgICAgICAgcmV0dXJuIHBlcmZvcm1XaGVlbFNjcm9sbChzY3Jv
bGxlciwgInJpZ2h0IikudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFs
cyhyb290LnNjcm9sbExlZnQgPiAwLCBwcm9wYWdhdGVYLCAnQ29udGludWUgdXAgdGhlIGhvcml6
b250YWwgc2Nyb2xsIGNoYWluaW5nJyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSwgJ0Vs
ZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6ICcg
KyBvdmVyc2Nyb2xsWCArICcgJyArIG92ZXJzY3JvbGxZICsgJy4nKTsKKworICAgICAgICBwcm9t
aXNlX3Rlc3QoKCkgPT4geworICAgICAgICAgICAgcmVzZXRUZXN0KCk7CisgICAgICAgICAgICBz
Y3JvbGxlci5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JYID0gb3ZlcnNjcm9sbFg7CisgICAgICAg
ICAgICBzY3JvbGxlci5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JZID0gb3ZlcnNjcm9sbFk7Cisg
ICAgICAgICAgICByZXR1cm4gcGVyZm9ybVdoZWVsU2Nyb2xsKHNjcm9sbGVyLCAiZG93biIpLnRo
ZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxUb3Ag
PiAwLCBwcm9wYWdhdGVZLCAnQ29udGludWUgdXAgdGhlIHZlcnRpY2FsIHNjcm9sbCBjaGFpbmlu
ZycpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0sICdFbGVtZW50IHZlcnRpY2FsIHNjcm9s
bCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogJyArIG92ZXJzY3JvbGxYICsgJyAnICsg
b3ZlcnNjcm9sbFkgKyAnLicpOworICAgIH0pOworfQorCithZGRFdmVudExpc3RlbmVyKCJsb2Fk
Iiwgc3RhcnRUZXN0KTsKKzwvc2NyaXB0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3It
aWZyYW1lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3Jv
bGwtYmVoYXZpb3ItaWZyYW1lLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MDBhMGI3ZDkwNWI4
N2MxZGI3NjI2OTRmZDAwNjM4ZjE5NzY5NTM3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMjEgQEAKKworCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0
IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBhdXRvLgorUEFTUyBJZnJhbWUgdmVydGlj
YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIGF1dG8uCitQQVNT
IElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjog
Y29udGFpbiBhdXRvLgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVy
c2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGF1dG8uCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNj
cm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBhdXRvLgorUEFTUyBJZnJh
bWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIGF1
dG8uCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1i
ZWhhdmlvcjogYXV0byBjb250YWluLgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qg
d2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIGNvbnRhaW4uCitQQVNTIElmcmFtZSBob3Jp
em9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBjb250
YWluLgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJl
aGF2aW9yOiBjb250YWluIGNvbnRhaW4uCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0
ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBjb250YWluLgorUEFTUyBJZnJhbWUg
dmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIGNvbnRh
aW4uCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1i
ZWhhdmlvcjogYXV0byBub25lLgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0
aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIG5vbmUuCitQQVNTIElmcmFtZSBob3Jpem9udGFs
IHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBub25lLgorUEFT
UyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBj
b250YWluIG5vbmUuCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3Zl
cnNjcm9sbC1iZWhhdmlvcjogbm9uZSBub25lLgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xs
IHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIG5vbmUuCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFt
ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjViOTAxZDM3MGE4NmYxYzY1MjEzOTEyNGMxZjk0NjIwODZjNDMw
N2IKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9vdmVyc2Ny
b2xsLWJlaGF2aW9yLWlmcmFtZS5odG1sCkBAIC0wLDAgKzEsODEgQEAKKzwhZG9jdHlwZSBodG1s
PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXN1cHBv
cnQuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL2RyYWZ0cy5j
c3N3Zy5vcmcvY3NzLW92ZXJzY3JvbGwtYmVoYXZpb3IiPgorPHN0eWxlPgorICAgIC5zY3JvbGxp
bmcgeworICAgICAgICBvdmVyZmxvdzogc2Nyb2xsOworICAgIH0KKyAgICAuc2Nyb2xsQ29udGVu
dCB7CisgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAg
ICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmVkLCBibHVlKTsKKyAgICB9
CisgICAgI3Jvb3QgeworICAgICAgICB3aWR0aDogMjAwcHg7CisgICAgICAgIGhlaWdodDogMjAw
cHg7CisgICAgfQorICAgICNzY3JvbGxlciB7CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAg
ICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgICAgb3ZlcnNjcm9sbC1iZWhhdmlvci15OiBhdXRvOwor
ICAgIH0KKzwvc3R5bGU+Cis8ZGl2IGlkPSdyb290JyBjbGFzcz0ic2Nyb2xsaW5nIj4KKyAgICA8
aWZyYW1lIGlkPSdzY3JvbGxlcicgc3JjZG9jPSI8aHRtbD48ZGl2IHN0eWxlPSd3aWR0aDogMzAw
cHg7IGhlaWdodDogMzAwcHg7Jz48L2Rpdj48L2h0bWw+CisgICAgICAgICI+PC9pZnJhbWU+Cisg
ICAgPGRpdiBjbGFzcz0ic2Nyb2xsQ29udGVudCI+PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4K
KyAgICBjb25zdCByb290ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jvb3QnKTsKKyAgICBj
b25zdCBzY3JvbGxlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY3JvbGxlcicpOworICAg
IHZhciBvdmVyc2Nyb2xsRGF0YXMgPSBbWyJhdXRvIiwgImF1dG8iLCB0cnVlLCB0cnVlXSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBbImNvbnRhaW4iLCAiYXV0byIsIGZhbHNlLCB0cnVl
XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIm5vbmUiLCAiYXV0byIsIGZhbHNlLCB0
cnVlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImF1dG8iLCAiY29udGFpbiIsIHRy
dWUsIGZhbHNlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImNvbnRhaW4iLCAiY29u
dGFpbiIsIGZhbHNlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJub25l
IiwgImNvbnRhaW4iLCBmYWxzZSwgZmFsc2VdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFsiYXV0byIsICJub25lIiwgdHJ1ZSwgZmFsc2VdLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFsiY29udGFpbiIsICJub25lIiwgZmFsc2UsIGZhbHNlXSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBbIm5vbmUiLCAibm9uZSIsIGZhbHNlLCBmYWxzZV1dOworICAgIGZ1bmN0aW9u
IHJlc2V0VGVzdCgpIHsKKyAgICAgICAgLy8gVHJ5IHZhcmlvdXMgbWV0aG9kcyB0byBlbnN1cmUg
dGhlIGVsZW1lbnQgcG9zaXRpb24gaXMgcmVzZXQgaW1tZWRpYXRlbHkuCisgICAgICAgIHNjcm9s
bGVyLmNvbnRlbnRXaW5kb3cuc2Nyb2xsWCA9IDMwMDsKKyAgICAgICAgc2Nyb2xsZXIuY29udGVu
dFdpbmRvdy5zY3JvbGxZID0gMzAwOworICAgICAgICBzY3JvbGxlci5jb250ZW50V2luZG93LnNj
cm9sbFRvKDMwMCwgMzAwKTsKKworICAgICAgICByb290LnNjcm9sbExlZnQgPSAwOworICAgICAg
ICByb290LnNjcm9sbFRvcCA9IDA7CisgICAgICAgIHJvb3Quc2Nyb2xsVG8oMCwgMCk7CisgICAg
fQorCisgICAgZnVuY3Rpb24gb3ZlcnNjcm9sbEJlaGF2aW9yVGVzdCgpIHsKKyAgICAgICAgb3Zl
cnNjcm9sbERhdGFzLmZvckVhY2goKFtvdmVyc2Nyb2xsWCwgb3ZlcnNjcm9sbFksIHByb3BhZ2F0
ZVgsIHByb3BhZ2F0ZVldKSA9PiB7CisgICAgICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4gewor
ICAgICAgICAgICAgICAgIHJlc2V0VGVzdCgpOworICAgICAgICAgICAgICAgIHZhciB0YXJnZXQg
PSBzY3JvbGxlci5jb250ZW50V2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJo
dG1sIilbMF07CisgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlv
clggPSBvdmVyc2Nyb2xsWDsKKyAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUub3ZlcnNjcm9s
bEJlaGF2aW9yWSA9IG92ZXJzY3JvbGxZOworCisgICAgICAgICAgICAgICAgcmV0dXJuIHBlcmZv
cm1XaGVlbFNjcm9sbChzY3JvbGxlciwgInJpZ2h0IikudGhlbigoKSA9PiB7CisgICAgICAgICAg
ICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxMZWZ0ID4gMCwgcHJvcGFnYXRlWCwg
J0NvbnRpbnVlIHVwIHRoZSBob3Jpem9udGFsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAgICAg
ICAgICAgIH0pOworICAgICAgICAgICAgfSwgJ0lmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0
IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogJyArIG92ZXJzY3JvbGxYICsgJyAnICsgb3ZlcnNj
cm9sbFkgKyAnLicpOworCisgICAgICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgICAg
ICAgICAgICAgIHJlc2V0VGVzdCgpOworICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSBzY3Jv
bGxlci5jb250ZW50V2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJodG1sIilb
MF07CisgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclggPSBv
dmVyc2Nyb2xsWDsKKyAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUub3ZlcnNjcm9sbEJlaGF2
aW9yWSA9IG92ZXJzY3JvbGxZOworICAgICAgICAgICAgICAgIHJldHVybiBwZXJmb3JtV2hlZWxT
Y3JvbGwoc2Nyb2xsZXIsICJkb3duIikudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgICAg
IGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxUb3AgPiAwLCBwcm9wYWdhdGVZLCAnQ29udGludWUg
dXAgdGhlIHZlcnRpY2FsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAgICAgICAgICAgIH0pOwor
ICAgICAgICAgICAgfSwgJ0lmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3Jv
bGwtYmVoYXZpb3I6ICcgKyBvdmVyc2Nyb2xsWCArICcgJyArIG92ZXJzY3JvbGxZICsgJy4nKTsK
KyAgICAgICAgfSk7CisgICAgfQorCisgICAgc2Nyb2xsZXIuYWRkRXZlbnRMaXN0ZW5lcigibG9h
ZCIsIG92ZXJzY3JvbGxCZWhhdmlvclRlc3QpOworPC9zY3JpcHQ+ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvb3ZlcnNj
cm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9mYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVt
ZW50LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMzk1YjY0ODhkMDg3MGI5NTYxYzAyODY3OWQ3
ZTE1YTQ3ZmNlNmU5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxp
bmcvb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSw0IEBACisKK1BBU1MgVW5zY3JvbGxhYmxlIGVsZW1lbnQgaG9yaXpvbnRhbCBz
Y3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuCitQQVNTIFVuc2Nyb2xs
YWJsZSBlbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlv
cjogbm9uZS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvb3ZlcnNj
cm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjM0NTFiNDNjZDEwMGI1ZTBlOGRmODNjNjk3OWRhNDZhOGQ2Y2YzMDEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJl
aGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWwKQEAgLTAsMCArMSw2MSBAQAorPCFkb2N0
eXBlIGh0bWw+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9y
dC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL292ZXJzY3JvbGwtYmVoYXZp
b3Itc3VwcG9ydC5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8v
ZHJhZnRzLmNzc3dnLm9yZy9jc3Mtb3ZlcnNjcm9sbC1iZWhhdmlvciI+Cis8c3R5bGU+CisgICAg
LnNjcm9sbGluZyB7CisgICAgICAgIG92ZXJmbG93OiBzY3JvbGw7CisgICAgfQorICAgIC5zY3Jv
bGxDb250ZW50IHsKKyAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICBoZWlnaHQ6IDMwMHB4
OworICAgIH0KKyAgICAjcm9vdCB7CisgICAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgICAgaGVp
Z2h0OiAyMDBweDsKKyAgICB9CisgICAgI3Njcm9sbGVyIHsKKyAgICAgICAgd2lkdGg6IDEwMHB4
OworICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgICBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBu
b25lOworICAgICAgICBvdmVyZmxvdzogdmlzaWJsZTsKKyAgICAgICAgYmFja2dyb3VuZDogbGlu
ZWFyLWdyYWRpZW50KDEzNWRlZywgcmVkLCBibHVlKTsKKyAgICB9Cis8L3N0eWxlPgorPGRpdiBp
ZD0icm9vdCIgY2xhc3M9InNjcm9sbGluZyI+CisgICAgPGRpdiBpZD0ic2Nyb2xsZXIiPgorICAg
ICAgICA8ZGl2IGNsYXNzPSJzY3JvbGxDb250ZW50Ij48L2Rpdj4KKyAgICA8L2Rpdj4KKyAgICA8
ZGl2IGNsYXNzPSJzY3JvbGxDb250ZW50Ij48L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0PgorY29u
c3Qgcm9vdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyb290Jyk7Citjb25zdCBzY3JvbGxl
ciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY3JvbGxlcicpOworZnVuY3Rpb24gcmVzZXRU
ZXN0KCkgeworICAgIHJvb3Quc2Nyb2xsTGVmdCA9IDA7CisgICAgcm9vdC5zY3JvbGxUb3AgPSAw
OworICAgIHJvb3Quc2Nyb2xsVG8oMCwgMCk7Cit9CisKK2Z1bmN0aW9uIHN0YXJ0VGVzdCgpIHsK
KyAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAgIHJlc2V0VGVzdCgpOwor
ICAgICAgICAgICAgcmV0dXJuIHBlcmZvcm1XaGVlbFNjcm9sbChzY3JvbGxlciwgInJpZ2h0Iiku
dGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbExl
ZnQgPiAwLCB0cnVlLCAnQ29udGludWUgdXAgdGhlIGhvcml6b250YWwgc2Nyb2xsIGNoYWluaW5n
Jyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSwgJ1Vuc2Nyb2xsYWJsZSBlbGVtZW50IGhv
cml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLicpOwor
CisgICAgICAgIHByb21pc2VfdGVzdCgoKSA9PiB7CisgICAgICAgICAgICByZXNldFRlc3QoKTsK
KworICAgICAgICAgICAgcmV0dXJuIHBlcmZvcm1XaGVlbFNjcm9sbChzY3JvbGxlciwgImRvd24i
KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xs
VG9wID4gMCwgdHJ1ZSwgJ0NvbnRpbnVlIHVwIHRoZSB2ZXJ0aWNhbCBzY3JvbGwgY2hhaW5pbmcn
KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9LCAnVW5zY3JvbGxhYmxlIGVsZW1lbnQgdmVy
dGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLicpOworfQor
CithZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgc3RhcnRUZXN0KTsKKzwvc2NyaXB0PgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xs
aW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xs
YWJsZS1pZnJhbWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdmYTU5Y2NiYTc5YWVmZjMzZGE3
MGU5M2Q0ODhhMDdlZWM5YzU2OTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorCisKK1BBU1MgVW5zY3JvbGxhYmxlIGlmcmFtZSBob3Jp
em9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4KK1BBU1Mg
VW5zY3JvbGxhYmxlIGlmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwt
YmVoYXZpb3I6IG5vbmUuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5n
L292ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1l
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZTZjNjNmOGNiM2QxNGJlZjhlZGJhYTExZDVlYWYyNmVkZDNhMGJl
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3Jv
bGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sCkBAIC0wLDAgKzEsNjEgQEAKKzwh
ZG9jdHlwZSBodG1sPgorCis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3Ny
ZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9vdmVyc2Nyb2xsLWJl
aGF2aW9yLXN1cHBvcnQuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRw
czovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLW92ZXJzY3JvbGwtYmVoYXZpb3IiPgorPHN0eWxlPgor
ICAgIC5zY3JvbGxpbmcgeworICAgICAgICBvdmVyZmxvdzogc2Nyb2xsOworICAgIH0KKyAgICAu
c2Nyb2xsQ29udGVudCB7CisgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgaGVpZ2h0OiAz
MDBweDsKKyAgICB9CisgICAgI3Jvb3QgeworICAgICAgICB3aWR0aDogMjAwcHg7CisgICAgICAg
IGhlaWdodDogMjAwcHg7CisgICAgfQorICAgICNzY3JvbGxlciB7CisgICAgICAgIHdpZHRoOiAy
MDBweDsKKyAgICAgICAgaGVpZ2h0OiAyMDBweDsKKyAgICAgICAgb3ZlcnNjcm9sbC1iZWhhdmlv
cjogbm9uZTsKKyAgICAgICAgb3ZlcmZsb3c6IHZpc2libGU7CisgICAgICAgIGJhY2tncm91bmQ6
IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJlZCwgYmx1ZSk7CisgICAgfQorPC9zdHlsZT4KKzxk
aXYgaWQ9J3Jvb3QnIGNsYXNzPSJzY3JvbGxpbmciPgorICAgIDxpZnJhbWUgaWQ9J3Njcm9sbGVy
JyBzcmNkb2M9IjxodG1sIHN0eWxlPSdvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lOyc+PGRpdiBz
dHlsZT0nd2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDEwMHB4Oyc+PC9kaXY+PC9odG1sPgorICAgICAg
ICAiPjwvaWZyYW1lPgorICAgIDxkaXYgY2xhc3M9InNjcm9sbENvbnRlbnQiPjwvZGl2PgorPC9k
aXY+CisKKzxzY3JpcHQ+Citjb25zdCByb290ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jv
b3QnKTsKK2NvbnN0IHNjcm9sbGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Njcm9sbGVy
Jyk7CisKK2Z1bmN0aW9uIHJlc2V0VGVzdCgpIHsKKyAgICByb290LnNjcm9sbExlZnQgPSAwOwor
ICAgIHJvb3Quc2Nyb2xsVG9wID0gMDsKKyAgICByb290LnNjcm9sbFRvKDAsIDApOworfQorCitm
dW5jdGlvbiBzdGFydFRlc3QoKSB7CisgICAgICAgIHByb21pc2VfdGVzdCgoKSA9PiB7CisgICAg
ICAgICAgICByZXNldFRlc3QoKTsKKyAgICAgICAgICAgIHJldHVybiBwZXJmb3JtV2hlZWxTY3Jv
bGwoc2Nyb2xsZXIsICJyaWdodCIpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGFzc2Vy
dF9lcXVhbHMocm9vdC5zY3JvbGxMZWZ0ID4gMCwgdHJ1ZSwgJ0NvbnRpbnVlIHVwIHRoZSBob3Jp
em9udGFsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0sICdV
bnNjcm9sbGFibGUgaWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xs
LWJlaGF2aW9yOiBub25lLicpOworCisgICAgICAgIHByb21pc2VfdGVzdCgoKSA9PiB7CisgICAg
ICAgICAgICByZXNldFRlc3QoKTsKKworICAgICAgICAgICAgcmV0dXJuIHBlcmZvcm1XaGVlbFNj
cm9sbChzY3JvbGxlciwgImRvd24iKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBhc3Nl
cnRfZXF1YWxzKHJvb3Quc2Nyb2xsVG9wID4gMCwgdHJ1ZSwgJ0NvbnRpbnVlIHVwIHRoZSB2ZXJ0
aWNhbCBzY3JvbGwgY2hhaW5pbmcnKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9LCAnVW5z
Y3JvbGxhYmxlIGlmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVo
YXZpb3I6IG5vbmUuJyk7Cit9CisKK2FkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBzdGFydFRlc3Qp
OworPC9zY3JpcHQ+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvcmVzb3VyY2VzL292ZXJzY3JvbGwtYmVoYXZpb3Itc3Vw
cG9ydC5qcyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3Jlc291cmNlcy9vdmVyc2Nyb2xs
LWJlaGF2aW9yLXN1cHBvcnQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWU3ZTMyMzIyMTRlODhlZjdjNjdlMDk5
NzIwYjJiMjM3Y2FhNzBlMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Ny
b2xsaW5nL3Jlc291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXN1cHBvcnQuanMKQEAgLTAsMCAr
MSwzMSBAQAorYXN5bmMgZnVuY3Rpb24gcGVyZm9ybVdoZWVsU2Nyb2xsKHNjcm9sbGVyLCBkaXJl
Y3Rpb24pIHsKKyAgICB2YXIgZGVsdGFYID0gMDsKKyAgICB2YXIgZGVsdGFZID0gMDsKKyAgICBp
ZiAoZGlyZWN0aW9uID09ICJkb3duIikKKyAgICAgICAgZGVsdGFZID0gLTU7CisgICAgZWxzZSBp
ZiAoZGlyZWN0aW9uID09ICJ1cCIpCisgICAgICAgIGRlbHRhWSA9IDU7CisgICAgZWxzZSBpZiAo
ZGlyZWN0aW9uID09ICJyaWdodCIpCisgICAgICAgIGRlbHRhWCA9IC01OworICAgIGVsc2UgaWYg
KGRpcmVjdGlvbiA9PSAibGVmdCIpCisgICAgICAgIGRlbHRhWCA9IDU7CisKKyAgICB2YXIgeCA9
IHNjcm9sbGVyLmNsaWVudFdpZHRoIC8gMjsKKyAgICB2YXIgeSA9IHNjcm9sbGVyLmNsaWVudEhl
aWdodCAvIDI7CisgICAgZXZlbnRTZW5kZXIuZHJhZ01vZGUgPSBmYWxzZTsKKyAgICBldmVudFNl
bmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4
LCB5KTsKKyAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZGVsdGFYLCBkZWx0YVksICdiZWdhbicsICdub25lJyk7CisgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGRlbHRhWCAqIDIsIGRlbHRh
WSAqIDIsICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZGVsdGFYICogMywgZGVsdGFZICogMywgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkZWx0YVgsIGRlbHRhWSwgJ25v
bmUnLCAnYmVnaW4nKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZGVsdGFYICogMiwgZGVsdGFZICogMiwgJ25vbmUnLCAnY29udGludWUn
KTsKKyAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZGVsdGFYICogMywgZGVsdGFZICogMywgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25v
bmUnLCAnZW5kJyk7CisgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4geworICAgICAg
ICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoKCkgPT4geworICAgICAg
ICAgICAgcmVzb2x2ZSgpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBiMjUyNGRkNzQ0ZGE1NTk0
OTQ0YTQ2Y2QxMjNjZWRjYjQzMTRhMTE3Li5iMTE5Y2IxYTMzNDFhY2JlYThjOGI3ZDRkMzI2OTAw
N2E3N2Y2OWIwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RF
eHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0
YXRpb25zCkBAIC0zMyw2ICszMywxMSBAQCBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzcy1ERU5JRUQt
eHNsLWV4dGVybmFsLWVudGl0eS1uby1sb2dnaW5nLnhtbCBbIFBhc3MgXQogIyByZGFyOi8vcHJv
YmxlbS82MTc5Mzg4NCA6IEVuYWJsaW5nIHRoaXMgdGVzdCBmb3IgV0sxIG9ubHkuCiBmYXN0L3No
YXBlcy9zaGFwZS1vdXRzaWRlLWZsb2F0cy9zaGFwZS1vdXRzaWRlLWltYWdlZGF0YS1vdmVyZmxv
dy5odG1sIFsgUGFzcyBdCiAKKyMgT3ZlcnNjcm9sbC1iZWhhdmlvciBpcyBzdXBwb3J0ZWQgb24g
TWFjLgorIyBGSVhNRTogTmVlZCB0byBmaW5kIGEgd2F5IHRvIGJsb2NrIHRoZSBjcm9zcy1mcmFt
ZSBzY3JvbGwgY2hhaW5pbmcgaW4gV0sxLgorZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhh
dmlvci1lbGVtZW50Lmh0bWwgWyBTa2lwIF0KK2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVo
YXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRtbCBbIFNraXAgXQorCiAjLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vCiAjIEVuZCBwbGF0Zm9ybS1zcGVjaWZpYyBkaXJlY3Rvcmll
cy4KICMvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBlODU5OGQ3Y2E5ZDU1NDBiZGE2
MWU2MTEzNjNmNGVlMTFjOGIwZGI5Li4yNDg5YTAwMWY5OWRjYTViYjE1NjMyNzZiNDI4OWUzNjhk
NGEzZDcyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBl
Y3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRp
b25zCkBAIC0xMDQsNiArMTA0LDEyIEBAIGZhc3QvYW5pbWF0aW9uL3JlcXVlc3QtYW5pbWF0aW9u
LWZyYW1lLWluLXR3by1wYWdlcy5odG1sIFsgUGFzcyBdCiBmYXN0L2Zvcm1zL2ZpbGUvZW50cmll
cy1hcGkvaW1hZ2UtdHJhbnNjb2RlLW9wZW4tcGFuZWwuaHRtbCBbIFBhc3MgXQogZmFzdC9mb3Jt
cy9maWxlL2VudHJpZXMtYXBpL2ltYWdlLW5vLXRyYW5zY29kZS1vcGVuLXBhbmVsLmh0bWwgWyBQ
YXNzIF0KIAorIyBPdmVyc2Nyb2xsLWJlaGF2aW9yIGlzIG9ubHkgc3VwcG9ydGVkIG9uIE1hYwor
ZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50Lmh0bWwgWyBQYXNzIF0K
K2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0bWwgWyBQYXNzIF0K
K2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQu
aHRtbCBbIFBhc3MgXQorZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9s
bGFibGUtaWZyYW1lLmh0bWwgWyBQYXNzIF0KKwogIy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLwogIyBFbmQgcGxhdGZvcm0tc3BlY2lmaWMgZGlyZWN0b3JpZXMuCiAjLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCg==
</data>
<flag name="commit-queue"
          id="435593"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417811</attachid>
            <date>2021-01-18 00:50:30 -0800</date>
            <delta_ts>2021-01-18 01:04:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220139-20210118165028.patch</filename>
            <type>text/plain</type>
            <size>83530</size>
            <attacher name="cathiechen">cathiechen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxNTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2VjZjQwOGEyYjNhYWM3
MmE1NTM1NTNjNDQwMTFiOTU3MDgwYzJmNS4uMDQ2ZDRjMjlkOGUwNTkxZmM0MzNhOWYzZGU3NjJi
MjgyNWJjNTA5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMCBAQAorMjAyMS0wMS0xNSAgQ2F0
aGllIENoZW4gIDxjYXRoaWVjaGVuQGlnYWxpYS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IENT
UyBvdmVyc2Nyb2xsLWJlaGF2aW9yIG9uIE1hYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwMTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQmFzZWQgb24gRnLDqWTDqXJpYyBXYW5nJ3MgcGF0Y2guCisK
KyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIG92ZXJzY3JvbGwtYmVoYXZpb3Ig
b24gTWFjLgorICAgICAgICBBY2NvcmRpbmcgdG8gWzFdLCB0aGVyZSBhcmUgdHdvIGtpbmRzIG9m
IGFjdGlvbnM6IG5vbi1sb2NhbCBib3VuZGFyeSBkZWZhdWx0IGFjdGlvbnMgYW5kIGxvY2FsIGJv
dW5kYXJ5IGRlZmF1bHQgYWN0aW9ucy4KKyAgICAgICAgSW4gV2ViS2l0IG1hYywgdGhlIHJ1YmJl
ciBiYW5kaW5nIGVmZm9ydCBpcyBiZWxvbmdlZCB0byBsb2NhbCBib3VuZGFyeSBkZWZhdWx0IGFj
dGlvbnMuIFRoZSBzY3JvbGwgY2hhaW5pbmcgYW5kIHN3aXBlCisgICAgICAgIGdlc3R1cmVzICh0
cmlnZ2VyIGdvIGJhY2sgb3IgZ28gZm9yd2FyZCBhY3Rpb25zKSBhcmUgYmVsb25nZWQgdG8gbm9u
LWxvY2FsIGJvdW5kYXJ5IGRlZmF1bHQgYWN0aW9ucy4KKyAgICAgICAgMS4gVG8gaGFuZGxlIHRo
ZSBydWJiZXIgYmFuZGluZyBlZmZlY3QsIHNob3VsZFN0b3BIb3Jpem9udGFsU3RyZWNoKCkgYW5k
IHNob3VsZFN0b3BWZXJ0aWNhbFN0cmVjaCgpIGFyZSBhZGRlZCB0byBkZWNpZGUKKyAgICAgICAg
d2hldGhlciB0aGUgcnViYmVyIGJhbmRpbmcgZWZmb3J0IGlzIGFsbG93ZWQgb3Igbm90LgorICAg
ICAgICAyLiBUbyBibG9jayBzY3JvbGwgY2hhaW5pbmcgYWN0aW9ucyBpbiBkaWZmZXJlbnQgc2Ny
b2xsIG1vZGVzLgorICAgICAgICAgIC0gRm9yIGFzeW5jaHJvbm91cyBzY3JvbGxpbmcsIGl0J3Mg
aGFuZGxlZCBpbiBTY3JvbGxpbmdUcmVlOjpoYW5kbGVXaGVlbEV2ZW50V2l0aE5vZGUoKSwgYWNj
b3JkaW5nIHRvIHRoZSB2YWx1ZSBvZgorICAgICAgICAgIG92ZXJzY3JvbGwtYmVoYXZpb3IsIGl0
IGJsb2NrcyB0aGUgc2Nyb2xsIGNoYWluaW5nIGlmIG5lZWRlZCwgdGhlIHJlc3VsdCB3b3VsZCBi
ZSBhZGRlZCB0byBtX2xhdGNoaW5nQ29udHJvbGxlcgorICAgICAgICAgIGFuZCBtaWdodCBiZSBy
ZXVzZWQuCisgICAgICAgICAgLSBGb3Igc3luY2hyb25vdXMgc2Nyb2xsaW5nLCBpZiBXSEVFTF9F
VkVOVF9MQVRDSElORyBpcyBkaXNhYmxlZCwgaXQgaGFuZGxlcyBvdmVyc2Nyb2xsLWJlaGF2aW9y
IGluIGhhbmRsZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94KCkuCisgICAgICAg
ICAgSWYgV0hFRUxfRVZFTlRfTEFUQ0hJTkcgaXMgZW5hYmxlZC4gT3ZlcnNjcm9sbC1iZWhhdmlv
ciBpcyBoYW5kbGVkIGluIGZpbmRFbmNsb3NpbmdTY3JvbGxhYmxlQ29udGFpbmVyKCkuCisgICAg
ICAgICAgSXQgYWRkZWQgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIHRvIEZyYW1lU3RhdGUgdG8gaW5k
aWNhdGUgd2hldGhlciB0aGUgY3VycmVudCBsYXRjaGVkIG5vZGUgc2hvdWxkIGJsb2NrIHNjcm9s
bCBjaGFpbmluZy4KKyAgICAgICAgICBJZiB0aGUgY3VycmVudCBmcmFtZSBpcyBhIHN1YmZyYW1l
LCBpdCBwYXNzZXMgaXRzIFNjcm9sbENoYWluaW5nQmxvY2tlciB0byB0aGUgcGFyZW50ZnJhbWUs
IGFuZCBldmVudHVhbGx5CisgICAgICAgICAgbGV0IHRoZSBtYWluZnJhbWUgZGVjaWRlIHdoZXRo
ZXIgc2hvdWxkIHRyaWdnZXIgc3dpcGUgZ2VzdHVyZXMgb3Igbm90LgorICAgICAgICAzLiBUaGUg
c3dpcGUgZ2VzdHVyZXMuCisgICAgICAgICAgSWYgdGhlIG1haW5mcmFtZSByZWFjaGVzIGl0cyBz
Y3JvbGwgZWRnZXMsIHRoZXJlIHdpbGwgYmUgc3dpcGUgZ2VzdHVyZXMgZXZlbiBpZiBvdmVyc2Ny
b2xsLWJlaGF2aW9yJ3MgdmFsdWUgaXMgbm9uZS4KKyAgICAgICAgICBUaGlzIGJlaGF2aW9yIGlz
IG5vdCBzdXBvb3J0ZWQgaW4gV0sxIGFuZCBXSzIncyBzeW5jaHJvbm91cyBzY3JvbGwgd2l0aCBX
SEVFTF9FVkVOVF9MQVRDSElORyBvZmYuCisKKyAgICAgICAgWzFdIGh0dHBzOi8vZHJhZnRzLmNz
c3dnLm9yZy9jc3Mtb3ZlcnNjcm9sbC0xLyNvdmVyc2Nyb2xsLWJlaGF2aW9yLXByb3BlcnRpZXMK
KworICAgICAgICBUZXN0czogZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVt
ZW50Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZp
b3ItaWZyYW1lLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwt
YmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9z
Y3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLmh0bWwKKwor
ICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0
ZVBhcmVudEZyYW1lU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKTogQXBwbGllZCB0aGUgY3VycmVudCBm
cmFtZSdzIG92ZXJzY3JvbGwtYmVoYXZpb3IgdmFsdWUgdG8gU2Nyb2xsQ2hhaW5pbmdCbG9ja2Vy
CisgICAgICAgIGFuZCBwYXNzIHRoaXMgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIHRvIHBhcmVudCBm
cmFtZS4KKyAgICAgICAgKFdlYkNvcmU6Om92ZXJzY3JvbGxCZWhhdmlvclN0b3BzU2Nyb2xsQ2hh
aW5pbmcpOiBVcGRhdGVkIHNjcm9sbENoYWluaW5nQmxvY2tlciBhbmQgY2hlY2tlZCBpZiBpdCBz
aG91bGQgYmxvY2sgdGhlIHNjcm9sbCBjaGFpbmluZy4KKyAgICAgICAgVGhlIGNoYWluaW5nIG9m
IHZlcnRpY2FsIHNjcm9sbCB3aWxsIGJlIHN0b3BwZWQgZGlyZWN0bHkuIEZvciBob3Jpem9udGFs
IHNjcm9sbCwgaWYgbWFpbmZyYW1lIHJlYWNoZXMgdGhlIGVkZ2VzLCBpdCBkb2Vzbid0IHN0b3Ag
dHJpZ2dlcmluZworICAgICAgICBzd2lwZSBnZXN0dXJlLiBTdWJmcmFtZXMgd2lsbCBpbnN0ZWFk
IHVwZGF0ZSB0aGUgYmxvY2tlciBpbiBTY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIuIElmIHRoZSBz
Y3JvbGwgY2hhaW5pbmcgc2hvdWxkIGNvbnRpbnVlLCBmaWx0ZXIgd2hlZWxFdmVudCdzIGRlbHRh
IGluc3RlYWQuIAorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2
ZW50SW50ZXJuYWwpOiBXaGVuIFdIRUVMX0VWRU5UX0xBVENISU5HIGlzIGVuYWJsZWQsIGNoZWNr
IG92ZXJzY3JvbGxCZWhhdmlvclN0b3BzU2Nyb2xsQ2hhaW5pbmcuCisgICAgICAgIFVwZGF0ZSB0
aGUgc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIGluIFNjcm9sbExhdGNoaW5nQ29udHJvbGxlciBpZiBp
dCdzIG5vdCBtYWluZnJhbWUuIFN0b3AgdGhlIHNjcm9sbCBjaGFpbmluZyBpZiBuZWVkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpkaWRTY3JvbGxJblNjcm9sbGFibGVBcmVhKTogQWRkZWQgcGFyYW1l
dGVyIFNjcm9sbENoYWluaW5nQmxvY2tlciwgYW5kIGZpbHRlciB0aGUgZmlsdGVyZWREZWx0YSBi
eSBpdC4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudElu
QXBwcm9wcmlhdGVFbmNsb3NpbmdCb3gpOiBVcGRhdGUgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLCBh
bmQgc3RvcCB0aGUgc2Nyb2xsIGNoYWluaW5nIGlmIG5lZWRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkV2ZW50SGFuZGxlcjo6ZGVmYXVsdFdoZWVsRXZlbnRIYW5kbGVyKTogRmlsdGVyIHRoZSB3aGVl
bEV2ZW50J3MgZGVsdGEgYnkgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIHN0b3JlZCBpbiBzY3JvbGxM
YXRjaGluZ0NvbnRyb2xsZXIuCisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuaDoKKyAgICAg
ICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6Omhv
cml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IgY29uc3QpOiBPdmVyc2Nyb2xsLWJlaGF2aW9yIG9u
bHkgYWZmZWN0IHNjcm9sbGFibGUgRnJhbWVWaWV3LgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVW
aWV3Ojp2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvciBjb25zdCk6IERpdHRvLgorICAgICAgICAq
IHBhZ2UvRnJhbWVWaWV3Lmg6CisgICAgICAgICogcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1t
OgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkT3ZlcnNjcm9sbEJlaGF2aW9yQmxvY2tTY3JvbGxD
aGFpbmluZyk6IFVwZGF0ZSBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIgYW5kIGNoZWNrIGlmIHRoZSBz
Y3JvbGwgY2hhaW5pbmcgc2hvdWxkIGJlIHN0b3BwZWQuCisgICAgICAgIChXZWJDb3JlOjpmaW5k
RW5jbG9zaW5nU2Nyb2xsYWJsZUNvbnRhaW5lcik6IFN0b3AgdGhlIHNjcm9sbCBjaGFpbmluZyBp
ZiBuZWVkZWQuCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmRldGVybWluZVdoZWVs
RXZlbnRUYXJnZXQpOiBTdG9yZXMgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIGluIHNjcm9sbExhdGNo
aW5nQ29udHJvbGxlcgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29v
cmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNTY3JvbGxpbmdDb29yZGluYXRv
cjo6c2V0U2Nyb2xsaW5nTm9kZVNjcm9sbGFibGVBcmVhR2VvbWV0cnkpOiBVcGRhdGUgb3ZlcnNj
cm9sbC1iZWhhdmlvciB2YWx1ZXMgaW4gc2Nyb2xsUGFyYW1ldGVycy4KKyAgICAgICAgKiBwYWdl
L3Njcm9sbGluZy9TY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyOjp1cGRhdGVBbmRGZXRjaExhdGNoaW5nU3RhdGVG
b3JGcmFtZSk6IEFkZCBTY3JvbGxDaGFpbmluZ0Jsb2NrZXIgdG8gRnJhbWVTdGF0ZS4KKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbExhdGNoaW5nQ29udHJvbGxlcjo6Z2V0U2Nyb2xsQ2hhaW5pbmdC
bG9ja2VyIGNvbnN0KTogUmV0dXJucyBTY3JvbGxDaGFpbmluZ0Jsb2NrZXIgb2YgZnJhbWUuCisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXI6OnVwZGF0ZVNjcm9sbENo
YWluaW5nQmxvY2tlcik6IFVwZGF0ZXMgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIG9mIGZyYW1lLgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyOjpkdW1wIGNvbnN0KToK
KyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIuaDoKKyAg
ICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvclR5cGVzLmg6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnM6Om9wZXJhdG9yPT0gY29uc3Qp
OiBBZGRlZCBob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yIGFuZCB2ZXJ0aWNhbE92ZXJzY3Jv
bGxCZWhhdmlvci4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWU6OnNob3VsZEJsb2NrU2Nyb2xsQ2hhaW5p
bmdXaXRoTm9kZSk6IFVwZGF0ZSBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIgYW5kIGNoZWNrIGlmIHRo
ZSBzY3JvbGwgY2hhaW5pbmcgc2hvdWxkIGJlIHN0b3BwZWQuCisgICAgICAgIElmIG5vdCwgZmls
dGVyIHRoZSB3aGVlbEV2ZW50J3MgZGVsdGEuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdU
cmVlOjpoYW5kbGVXaGVlbEV2ZW50V2l0aE5vZGUpOiBTdG9wIHRoZSBzY3JvbGwgY2hhaW5pbmcg
aWYgbmVlZGVkLgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuaDoKKyAg
ICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6aG9yaXpvbnRhbE92
ZXJzY3JvbGxCZWhhdmlvciBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGU6OnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yIGNvbnN0KTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6dXBk
YXRlU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyU3RhdGUgY29uc3QpOgorICAgICAgICAqIHBhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmg6CisgICAgICAgICogcGFnZS9zY3Jv
bGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMuaDoKKyAgICAg
ICAgKiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVs
ZWdhdGVNYWM6OmFsbG93c0hvcml6b250YWxTdHJldGNoaW5nIGNvbnN0KTogSWYgb3ZlcnNjcm9s
bC1iZWhhdmlvci14OiBub25lLCB0aGUgc2Nyb2xsIHN0cmV0Y2ggc2hvdWxkIGJlIGJsb2NrZWQu
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFj
OjphbGxvd3NWZXJ0aWNhbFN0cmV0Y2hpbmcgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OnNob3VsZFN0b3BIb3Jp
em9udGFsU3RyZWNoIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjpzaG91bGRTdG9wVmVydGljYWxTdHJlY2ggY29u
c3QpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtV2hlZWxFdmVudDo6d2hlZWxEZWx0YUJpYXNpbmdUb3dh
cmRzVmVydGljYWwpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFR5cGVzLmg6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxDaGFpbmluZ0Jsb2NrZXI6OnNob3VsZEJsb2NrU2Nyb2xsQ2hhaW5p
bmcpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQ2hhaW5pbmdCbG9ja2VyOjpmaWx0ZXJEZWx0
YSk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYWJsZUFyZWE6OnVwZGF0ZVNjcm9sbENoYWluaW5nQmxvY2tlclN0YXRlIGNv
bnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYWJsZUFyZWE6Omhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWE6OnZlcnRpY2FsT3ZlcnNjcm9sbEJl
aGF2aW9yIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9sbGVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxDb250cm9sbGVyQ2xpZW50OjpzaG91bGRTdG9w
SG9yaXpvbnRhbFN0cmVjaCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxDb250cm9s
bGVyQ2xpZW50OjpzaG91bGRTdG9wVmVydGljYWxTdHJlY2ggY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIubW06CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxDb250cm9sbGVyOjpoYW5kbGVXaGVlbEV2ZW50KTogU3RvcCBzY3JvbGwgc3RyZWNoaW5nIGlm
IG5lZWRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbENvbnRyb2xsZXI6OmRpcmVjdGlvbkZy
b21FdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxDb250cm9sbGVyOjp3aGVlbERlbHRh
Qmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFj
L1Njcm9sbEFuaW1hdG9yTWFjLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1h
dG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JNYWM6OnNob3VsZFN0
b3BIb3Jpem9udGFsU3RyZWNoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1h
dG9yTWFjOjpzaG91bGRTdG9wVmVydGljYWxTdHJlY2ggY29uc3QpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6aG9y
aXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllcjo6dmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IgY29uc3QpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJMYXllci5oOgorCiAyMDIxLTAxLTE3ICBLaW1tbyBLaW5udW5lbiAgPGtr
aW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJl
c2hhcGVGQk9zKCkgQU5HTEUgdmFyaWFudCBjYWxscyBpbnRvIG1ha2VDb250ZXh0Q3VycmVudCgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IGNjNzcxYTU2MTZkYTRmNDBhOWNjZjE2MDZiNzc0NTBiNGNkY2ZiNGYuLjIy
MWZhOGM1ZWM2MTgwYmU2NTM2MmNmY2Q2ZjQ0YjIxYTg4MWFkNmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTcgQEAKKzIwMjEtMDEtMTUgIENhdGhpZSBDaGVuICA8Y2F0aGllY2hlbkBpZ2FsaWEuY29t
PgorCisgICAgICAgIEltcGxlbWVudCBDU1Mgb3ZlcnNjcm9sbC1iZWhhdmlvciBvbiBNYWMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDEzOQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJhc2VkIG9uIEZy
w6lkw6lyaWMgV2FuZydzIHBhdGNoLgorCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8U2Nyb2xsYWJsZUFyZWFQ
YXJhbWV0ZXJzPjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxTY3JvbGxh
YmxlQXJlYVBhcmFtZXRlcnM+OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuaDoKKwogMjAyMS0wMS0xNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBw
bGUuY29tPgogCiAgICAgICAgIEpJVE9wZXJhdGlvbiBkb2VzIG5vdCBleGlzdCBpbiBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBlYzQ2NTE4NmFiZmEzZjc0M2FlMmNlN2Iz
ZDM2ZmI0MWE2NzkwN2M1Li41MTUxNGE2ZGU4OWY5YzUxMWU4ZDJiYzJhZTg3ZDQ1MWQ2ZDUyOTFh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEtMDEt
MTUgIENhdGhpZSBDaGVuICA8Y2F0aGllY2hlbkBpZ2FsaWEuY29tPgorCisgICAgICAgIEltcGxl
bWVudCBDU1Mgb3ZlcnNjcm9sbC1iZWhhdmlvciBvbiBNYWMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDEzOQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJhc2VkIG9uIEZyw6lkw6lyaWMgV2FuZydzIHBh
dGNoLgorCisgICAgICAgIE5lZWQgdG8gZmluZCBhIHdheSB0byBibG9jayB0aGUgY3Jvc3MtZnJh
bWUgc2Nyb2xsIGNoYWluaW5nIGluIFdLMS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZp
ZXcubW06CisgICAgICAgICgtW1dlYkhUTUxWaWV3IHNjcm9sbFdoZWVsOl0pOgorCiAyMDIxLTAx
LTE0ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3Zl
ZCBtb3N0IHVzZXMgb2YgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwg
Li4uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IGQ2OWYyOTcwNDUzMWU3
ODcyNTg4ZDRhNWZmOGQzYTU0YmUzNmVhZTEuLmVmMDc5YjUyODk2YmZlYzUzYjM0N2IxNDhmYWE5
MjZlNmZjNmFmNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTI4MzIs
NiArMjgzMiw1NiBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQ
bGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIE9wdGlvbgogICAgIHJldHVybiBoYW5kbGVk
OwogfQogCisjaWYgRU5BQkxFKFdIRUVMX0VWRU5UX0xBVENISU5HKQorc3RhdGljIHZvaWQgdXBk
YXRlUGFyZW50RnJhbWVTY3JvbGxDaGFpbmluZ0Jsb2NrZXIoY29uc3QgU2Nyb2xsYWJsZUFyZWEq
IHNjcm9sbGFibGVBcmVhLCBGcmFtZSYgZnJhbWUsIFNjcm9sbENoYWluaW5nQmxvY2tlciYgYmxv
Y2tlcikKK3sKKyAgICBhdXRvKiBwYXJlbnQgPSBmcmFtZS50cmVlKCkucGFyZW50KCk7CisgICAg
aWYgKCFzY3JvbGxhYmxlQXJlYSkKKyAgICAgICAgc2Nyb2xsYWJsZUFyZWEgPSBmcmFtZS52aWV3
KCk7CisgICAgaWYgKCFmcmFtZS5wYWdlKCkgfHwgIXBhcmVudCB8fCAhc2Nyb2xsYWJsZUFyZWEp
CisgICAgICAgIHJldHVybjsKKyAgICBzY3JvbGxhYmxlQXJlYS0+dXBkYXRlU2Nyb2xsQ2hhaW5p
bmdCbG9ja2VyU3RhdGUoYmxvY2tlcik7CisgICAgZnJhbWUucGFnZSgpLT5zY3JvbGxMYXRjaGlu
Z0NvbnRyb2xsZXIoKS51cGRhdGVTY3JvbGxDaGFpbmluZ0Jsb2NrZXIoKnBhcmVudCwgYmxvY2tl
cik7Cit9CisKK3N0YXRpYyBib29sIG92ZXJzY3JvbGxCZWhhdmlvclN0b3BzU2Nyb2xsQ2hhaW5p
bmcoY29uc3QgU2Nyb2xsYWJsZUFyZWEqIHNjcm9sbGFibGVBcmVhLCBGcmFtZSYgZnJhbWUsIFBs
YXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIHNjcm9s
bENoYWluaW5nQmxvY2tlciwgYm9vbCYgaGFuZGxlZEV2ZW50KQoreworICAgIGlmICghc2Nyb2xs
YWJsZUFyZWEpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChzY3JvbGxhYmxlQXJl
YSAhPSBmcmFtZS52aWV3KCkpIHsKKyAgICAgICAgLy8gV2hlZWwgZXZlbnQgaXMgZ29pbmcgdG8g
YmUgaGFuZGxlZCBieSBGcmFtZVZpZXcgaW4gcHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxpbmco
KSwKKyAgICAgICAgLy8gc2hvdWxkIGxldCBzY3JvbGxhYmxlQXJlYSdzIG92ZXJzY3JvbGwtYmVo
YXZpb3IgZWZmZWN0IFNjcm9sbENoYWluaW5nQmxvY2tlci4KKyAgICAgICAgc2Nyb2xsYWJsZUFy
ZWEtPnVwZGF0ZVNjcm9sbENoYWluaW5nQmxvY2tlclN0YXRlKHNjcm9sbENoYWluaW5nQmxvY2tl
cik7CisgICAgfQorCisgICAgRmxvYXRTaXplIGZpbHRlcmVkRGVsdGEod2hlZWxFdmVudC5kZWx0
YVgoKSwgd2hlZWxFdmVudC5kZWx0YVkoKSk7CisgICAgYXV0byBiaWFzZWREZWx0YSA9IFBsYXRm
b3JtV2hlZWxFdmVudDo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoZmlsdGVyZWRE
ZWx0YSk7CisgICAgaWYgKHNjcm9sbENoYWluaW5nQmxvY2tlci5ibG9ja1ggJiYgIWJpYXNlZERl
bHRhLmhlaWdodCgpKSB7CisgICAgICAgIC8vIElmIHRoZSBob3Jpem9udGFsIHNjcm9sbCBjaGFp
bmluZyBpcyBibG9ja2VkIGJ5IG92ZXJzY3JvbGwtYmVoYXZpb3IgaW4gYSBzdWJmcmFtZS4KKyAg
ICAgICAgLy8gSXQgcHJvcGFnYXRlcyBpdHMgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIHRvIHBhcmVu
dCBmcmFtZXMgYW5kIGV2ZW50dWFsbHkgbGV0IG1haW5mcmFtZQorICAgICAgICAvLyBkZWNpZGUg
d2hldGhlciBuZWVkIHRvIHRyaWdnZXIgYSBzd2lwZSBnZXN0dXJlIG9yIG5vdC4KKyAgICAgICAg
aWYgKGZyYW1lLmlzTWFpbkZyYW1lKCkpIHsKKyAgICAgICAgICAgIC8vIEluIG1haW4gZnJhbWUs
IGlmIHRoZSBzY3JvbGwgcG9zaXRpb24gcmVhY2hlcyB0byBpdHMgZWRnZXMsIHRyaWdnZXIgdGhl
IHN3aXBlIGdlc3R1cmUsIG90aGVyd2lzZSBub3QuCisgICAgICAgICAgICBoYW5kbGVkRXZlbnQg
PSAhKGJpYXNlZERlbHRhLndpZHRoKCkgJiYgc2Nyb2xsYWJsZUFyZWEtPmlzUGlubmVkRm9yU2Ny
b2xsRGVsdGFPbkF4aXMoLWJpYXNlZERlbHRhLndpZHRoKCksIFNjcm9sbEV2ZW50QXhpczo6SG9y
aXpvbnRhbCkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdXBkYXRlUGFyZW50RnJh
bWVTY3JvbGxDaGFpbmluZ0Jsb2NrZXIoc2Nyb2xsYWJsZUFyZWEsIGZyYW1lLCBzY3JvbGxDaGFp
bmluZ0Jsb2NrZXIpOworICAgICAgICAgICAgaGFuZGxlZEV2ZW50ID0gZmFsc2U7CisgICAgICAg
IH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgaWYgKFNjcm9sbENoYWluaW5n
QmxvY2tlcjo6c2hvdWxkQmxvY2tTY3JvbGxDaGFpbmluZyhzY3JvbGxDaGFpbmluZ0Jsb2NrZXIs
IGJpYXNlZERlbHRhKSkgeworICAgICAgICBoYW5kbGVkRXZlbnQgPSB0cnVlOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBTY3JvbGxDaGFpbmluZ0Jsb2NrZXI6OmZpbHRlckRl
bHRhKHNjcm9sbENoYWluaW5nQmxvY2tlciwgYmlhc2VkRGVsdGEsIGZpbHRlcmVkRGVsdGEpOwor
ICAgIHdoZWVsRXZlbnQgPSB3aGVlbEV2ZW50LmNvcHlXaXRoRGVsdGFzQW5kVmVsb2NpdHkoZmls
dGVyZWREZWx0YS53aWR0aCgpLCBmaWx0ZXJlZERlbHRhLmhlaWdodCgpLCB3aGVlbEV2ZW50LnNj
cm9sbGluZ1ZlbG9jaXR5KCkpOworICAgIHJldHVybiBmYWxzZTsKK30KKyNlbmRpZgorCiBib29s
IEV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudEludGVybmFsKGNvbnN0IFBsYXRmb3JtV2hl
ZWxFdmVudCYgZXZlbnQsIE9wdGlvblNldDxXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBzPiBwcm9j
ZXNzaW5nU3RlcHMsIE9wdGlvblNldDxFdmVudEhhbmRsaW5nPiYgaGFuZGxpbmcpCiB7CiAgICAg
YXV0byogZG9jdW1lbnQgPSBtX2ZyYW1lLmRvY3VtZW50KCk7CkBAIC0yOTI0LDEyICsyOTc0LDMx
IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50SW50ZXJuYWwoY29uc3QgUGxh
dGZvcm1XaGVlbEV2ZW50JiBldmVudCwgT3B0CiAjaWYgRU5BQkxFKFdIRUVMX0VWRU5UX0xBVENI
SU5HKQogICAgIGlmIChhbGxvd1Njcm9sbGluZykKICAgICAgICAgYWxsb3dTY3JvbGxpbmcgPSBt
X2ZyYW1lLnBhZ2UoKS0+c2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyKCkubGF0Y2hpbmdBbGxvd3NT
Y3JvbGxpbmdJbkZyYW1lKG1fZnJhbWUsIHNjcm9sbGFibGVBcmVhKTsKKyAgICBTY3JvbGxDaGFp
bmluZ0Jsb2NrZXIgYmxvY2tlckZyb21MYXRjaGluZ0NvbnRyb2xsZXIgPSBtX2ZyYW1lLnBhZ2Uo
KS0+c2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyKCkuZ2V0U2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKG1f
ZnJhbWUpOworICAgIGlmICghKGFsbG93U2Nyb2xsaW5nIHx8IG1fZnJhbWUuaXNNYWluRnJhbWUo
KSkpCisgICAgICAgIHVwZGF0ZVBhcmVudEZyYW1lU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKHNjcm9s
bGFibGVBcmVhLmdldCgpLCBtX2ZyYW1lLCBibG9ja2VyRnJvbUxhdGNoaW5nQ29udHJvbGxlcik7
CiAjZW5kaWYKIAogICAgIGlmIChhbGxvd1Njcm9sbGluZykgewotICAgICAgICAvLyBGSVhNRTog
cHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxpbmcoKSBpcyBvbmx5IGNhbGxlZCBmb3IgRnJhbWVW
aWV3IHNjcm9sbGluZywgbm90IG92ZXJmbG93IHNjcm9sbGluZywgd2hpY2ggaXMgY29uZnVzaW5n
LgotICAgICAgICBoYW5kbGVkRXZlbnQgPSBwcm9jZXNzV2hlZWxFdmVudEZvclNjcm9sbGluZyhl
dmVudCwgc2Nyb2xsYWJsZUFyZWEsIGhhbmRsaW5nKTsKLSAgICAgICAgcHJvY2Vzc1doZWVsRXZl
bnRGb3JTY3JvbGxTbmFwKGV2ZW50LCBzY3JvbGxhYmxlQXJlYSk7CisgICAgICAgIFBsYXRmb3Jt
V2hlZWxFdmVudCBhZGp1c3RlZFdoZWVsRXZlbnQgPSBQbGF0Zm9ybVdoZWVsRXZlbnQoZXZlbnQp
OworICAgICAgICBib29sIHNjcm9sbENoYWluaW5nU3RvcHBlZCA9IGZhbHNlOworI2lmIEVOQUJM
RShXSEVFTF9FVkVOVF9MQVRDSElORykKKyAgICAgICAgc2Nyb2xsQ2hhaW5pbmdTdG9wcGVkID0g
b3ZlcnNjcm9sbEJlaGF2aW9yU3RvcHNTY3JvbGxDaGFpbmluZyhzY3JvbGxhYmxlQXJlYS5nZXQo
KSwgbV9mcmFtZSwgYWRqdXN0ZWRXaGVlbEV2ZW50LCBibG9ja2VyRnJvbUxhdGNoaW5nQ29udHJv
bGxlciwgaGFuZGxlZEV2ZW50KTsKKyNlbmRpZgorICAgICAgICBpZiAoIXNjcm9sbENoYWluaW5n
U3RvcHBlZCkgeworICAgICAgICAgICAgLy8gRklYTUU6IHByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Ny
b2xsaW5nKCkgaXMgb25seSBjYWxsZWQgZm9yIEZyYW1lVmlldyBzY3JvbGxpbmcsIG5vdCBvdmVy
ZmxvdyBzY3JvbGxpbmcsIHdoaWNoIGlzIGNvbmZ1c2luZy4KKyAgICAgICAgICAgIGhhbmRsZWRF
dmVudCA9IHByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKGFkanVzdGVkV2hlZWxFdmVudCwg
c2Nyb2xsYWJsZUFyZWEsIGhhbmRsaW5nKTsKKyAgICAgICAgICAgIHByb2Nlc3NXaGVlbEV2ZW50
Rm9yU2Nyb2xsU25hcChhZGp1c3RlZFdoZWVsRXZlbnQsIHNjcm9sbGFibGVBcmVhKTsKKyAgICAg
ICAgfQorI2lmICFFTkFCTEUoV0hFRUxfRVZFTlRfTEFUQ0hJTkcpCisgICAgICAgIGlmIChhdXRv
KiB2aWV3ID0gbV9mcmFtZS52aWV3KCkpIHsKKyAgICAgICAgICAgIFNjcm9sbENoYWluaW5nQmxv
Y2tlciBibG9ja2VyID0geyB2aWV3LT5ob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgIT0g
T3ZlcnNjcm9sbEJlaGF2aW9yOjpBdXRvLCB2aWV3LT52ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlv
cigpICE9IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0byB9OworICAgICAgICAgICAgaWYgKCFoYW5k
bGVkRXZlbnQpIHsKKyAgICAgICAgICAgICAgICBhdXRvIGJpYXNlZERlbHRhID0gUGxhdGZvcm1X
aGVlbEV2ZW50Ojp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbChhZGp1c3RlZFdoZWVs
RXZlbnQuZGVsdGEoKSk7CisgICAgICAgICAgICAgICAgaGFuZGxlZEV2ZW50ID0gU2Nyb2xsQ2hh
aW5pbmdCbG9ja2VyOjpzaG91bGRCbG9ja1Njcm9sbENoYWluaW5nKGJsb2NrZXIsIGJpYXNlZERl
bHRhKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorI2VuZGlmCiAgICAgfQogCiAgICAgcmV0
dXJuIGhhbmRsZWRFdmVudDsKQEAgLTI5NDYsMjAgKzMwMTUsMjMgQEAgc3RhdGljIHZvaWQgaGFu
ZGxlV2hlZWxFdmVudFBoYXNlSW5TY3JvbGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSYgc2Nyb2xs
YWJsZUFyZWEKICNlbmRpZgogfQogCi1zdGF0aWMgYm9vbCBkaWRTY3JvbGxJblNjcm9sbGFibGVB
cmVhKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSwgY29uc3QgV2hlZWxFdmVudCYgd2hl
ZWxFdmVudCkKK3N0YXRpYyBib29sIGRpZFNjcm9sbEluU2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJs
ZUFyZWEmIHNjcm9sbGFibGVBcmVhLCBjb25zdCBXaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBjb25z
dCBTY3JvbGxDaGFpbmluZ0Jsb2NrZXImIGJsb2NrZXIpCiB7CisgICAgRmxvYXRTaXplIGZpbHRl
cmVkRGVsdGEod2hlZWxFdmVudC5kZWx0YVgoKSwgd2hlZWxFdmVudC5kZWx0YVkoKSk7CisgICAg
YXV0byBiaWFzZWREZWx0YSA9IFBsYXRmb3JtV2hlZWxFdmVudDo6d2hlZWxEZWx0YUJpYXNpbmdU
b3dhcmRzVmVydGljYWwoZmlsdGVyZWREZWx0YSk7CisgICAgU2Nyb2xsQ2hhaW5pbmdCbG9ja2Vy
OjpmaWx0ZXJEZWx0YShibG9ja2VyLCBiaWFzZWREZWx0YSwgZmlsdGVyZWREZWx0YSk7CiAgICAg
U2Nyb2xsR3JhbnVsYXJpdHkgc2Nyb2xsR3JhbnVsYXJpdHkgPSB3aGVlbEdyYW51bGFyaXR5VG9T
Y3JvbGxHcmFudWxhcml0eSh3aGVlbEV2ZW50LmRlbHRhTW9kZSgpKTsKICAgICBib29sIGRpZEhh
bmRsZVdoZWVsRXZlbnQgPSBmYWxzZTsKLSAgICBpZiAoZmxvYXQgYWJzb2x1dGVEZWx0YSA9IHN0
ZDo6YWJzKHdoZWVsRXZlbnQuZGVsdGFYKCkpKQotICAgICAgICBkaWRIYW5kbGVXaGVlbEV2ZW50
IHw9IHNjcm9sbGFibGVBcmVhLnNjcm9sbCh3aGVlbEV2ZW50LmRlbHRhWCgpID4gMCA/IFNjcm9s
bFJpZ2h0IDogU2Nyb2xsTGVmdCwgc2Nyb2xsR3JhbnVsYXJpdHksIGFic29sdXRlRGVsdGEpOwor
ICAgIGlmIChmbG9hdCBhYnNvbHV0ZURlbHRhID0gc3RkOjphYnMoZmlsdGVyZWREZWx0YS53aWR0
aCgpKSkKKyAgICAgICAgZGlkSGFuZGxlV2hlZWxFdmVudCB8PSBzY3JvbGxhYmxlQXJlYS5zY3Jv
bGwoZmlsdGVyZWREZWx0YS53aWR0aCgpID4gMCA/IFNjcm9sbFJpZ2h0IDogU2Nyb2xsTGVmdCwg
c2Nyb2xsR3JhbnVsYXJpdHksIGFic29sdXRlRGVsdGEpOwogCi0gICAgaWYgKGZsb2F0IGFic29s
dXRlRGVsdGEgPSBzdGQ6OmFicyh3aGVlbEV2ZW50LmRlbHRhWSgpKSkKLSAgICAgICAgZGlkSGFu
ZGxlV2hlZWxFdmVudCB8PSBzY3JvbGxhYmxlQXJlYS5zY3JvbGwod2hlZWxFdmVudC5kZWx0YVko
KSA+IDAgPyBTY3JvbGxEb3duIDogU2Nyb2xsVXAsIHNjcm9sbEdyYW51bGFyaXR5LCBhYnNvbHV0
ZURlbHRhKTsKKyAgICBpZiAoZmxvYXQgYWJzb2x1dGVEZWx0YSA9IHN0ZDo6YWJzKGZpbHRlcmVk
RGVsdGEuaGVpZ2h0KCkpKQorICAgICAgICBkaWRIYW5kbGVXaGVlbEV2ZW50IHw9IHNjcm9sbGFi
bGVBcmVhLnNjcm9sbChmaWx0ZXJlZERlbHRhLmhlaWdodCgpID4gMCA/IFNjcm9sbERvd24gOiBT
Y3JvbGxVcCwgc2Nyb2xsR3JhbnVsYXJpdHksIGFic29sdXRlRGVsdGEpOwogCiAgICAgcmV0dXJu
IGRpZEhhbmRsZVdoZWVsRXZlbnQ7CiB9CiAKLWJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVl
bEV2ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2luZ0JveChOb2RlKiBzdGFydE5vZGUsIGNvbnN0IFdo
ZWVsRXZlbnQmIHdoZWVsRXZlbnQsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyZWRQbGF0Zm9ybURl
bHRhLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlcmVkVmVsb2NpdHksIE9wdGlvblNldDxFdmVudEhh
bmRsaW5nPiBldmVudEhhbmRsaW5nKQorYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZl
bnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94KE5vZGUqIHN0YXJ0Tm9kZSwgY29uc3QgV2hlZWxF
dmVudCYgd2hlZWxFdmVudCwgRmxvYXRTaXplJiBmaWx0ZXJlZFBsYXRmb3JtRGVsdGEsIGNvbnN0
IEZsb2F0U2l6ZSYgZmlsdGVyZWRWZWxvY2l0eSwgT3B0aW9uU2V0PEV2ZW50SGFuZGxpbmc+IGV2
ZW50SGFuZGxpbmcpCiB7CiAgICAgYm9vbCBzaG91bGRIYW5kbGVFdmVudCA9IHdoZWVsRXZlbnQu
ZGVsdGFYKCkgfHwgd2hlZWxFdmVudC5kZWx0YVkoKTsKICNpZiBFTkFCTEUoV0hFRUxfRVZFTlRf
TEFUQ0hJTkcpCkBAIC0yOTgwLDIyICszMDUyLDMxIEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5k
bGVXaGVlbEV2ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2luZ0JveChOb2RlKiBzdGFydE5vZGUsIGNv
CiAgICAgaWYgKCFzaG91bGRIYW5kbGVFdmVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisg
ICAgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIGJsb2NrZXIgPSB7IGZhbHNlLCBmYWxzZSB9OwogICAg
IGlmIChpczxSZW5kZXJMaXN0Qm94Pihpbml0aWFsRW5jbG9zaW5nQm94KSkKLSAgICAgICAgcmV0
dXJuIGRpZFNjcm9sbEluU2Nyb2xsYWJsZUFyZWEoZG93bmNhc3Q8UmVuZGVyTGlzdEJveD4oaW5p
dGlhbEVuY2xvc2luZ0JveCksIHdoZWVsRXZlbnQpOworICAgICAgICByZXR1cm4gZGlkU2Nyb2xs
SW5TY3JvbGxhYmxlQXJlYShkb3duY2FzdDxSZW5kZXJMaXN0Qm94Pihpbml0aWFsRW5jbG9zaW5n
Qm94KSwgd2hlZWxFdmVudCwgYmxvY2tlcik7CiAKKyAgICBhdXRvIGJpYXNlZERlbHRhID0gUGxh
dGZvcm1XaGVlbEV2ZW50Ojp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbChGbG9hdFNp
emUod2hlZWxFdmVudC5kZWx0YVgoKSwgd2hlZWxFdmVudC5kZWx0YVkoKSkpOwogICAgIFJlbmRl
ckJveCogY3VycmVudEVuY2xvc2luZ0JveCA9ICZpbml0aWFsRW5jbG9zaW5nQm94OwogICAgIHdo
aWxlIChjdXJyZW50RW5jbG9zaW5nQm94KSB7CiAgICAgICAgIGlmIChhdXRvKiBib3hMYXllciA9
IGN1cnJlbnRFbmNsb3NpbmdCb3gtPmxheWVyKCkgPyBjdXJyZW50RW5jbG9zaW5nQm94LT5sYXll
cigpLT5zY3JvbGxhYmxlQXJlYSgpIDogbnVsbHB0cikgewogICAgICAgICAgICAgYXV0byBwbGF0
Zm9ybUV2ZW50ID0gd2hlZWxFdmVudC51bmRlcmx5aW5nUGxhdGZvcm1FdmVudCgpOwogICAgICAg
ICAgICAgYm9vbCBzY3JvbGxpbmdXYXNIYW5kbGVkOwogICAgICAgICAgICAgaWYgKHBsYXRmb3Jt
RXZlbnQpIHsKKyAgICAgICAgICAgICAgICBTY3JvbGxDaGFpbmluZ0Jsb2NrZXI6OmZpbHRlckRl
bHRhKGJsb2NrZXIsIGJpYXNlZERlbHRhLCBmaWx0ZXJlZFBsYXRmb3JtRGVsdGEpOwogICAgICAg
ICAgICAgICAgIGF1dG8gY29waWVkRXZlbnQgPSBwbGF0Zm9ybUV2ZW50LT5jb3B5V2l0aERlbHRh
c0FuZFZlbG9jaXR5KGZpbHRlcmVkUGxhdGZvcm1EZWx0YS53aWR0aCgpLCBmaWx0ZXJlZFBsYXRm
b3JtRGVsdGEuaGVpZ2h0KCksIGZpbHRlcmVkVmVsb2NpdHkpOwogICAgICAgICAgICAgICAgIHNj
cm9sbGluZ1dhc0hhbmRsZWQgPSBoYW5kbGVXaGVlbEV2ZW50SW5TY3JvbGxhYmxlQXJlYShjb3Bp
ZWRFdmVudCwgKmJveExheWVyLCBldmVudEhhbmRsaW5nKTsKICAgICAgICAgICAgIH0gZWxzZQot
ICAgICAgICAgICAgICAgIHNjcm9sbGluZ1dhc0hhbmRsZWQgPSBkaWRTY3JvbGxJblNjcm9sbGFi
bGVBcmVhKCpib3hMYXllciwgd2hlZWxFdmVudCk7CisgICAgICAgICAgICAgICAgc2Nyb2xsaW5n
V2FzSGFuZGxlZCA9IGRpZFNjcm9sbEluU2Nyb2xsYWJsZUFyZWEoKmJveExheWVyLCB3aGVlbEV2
ZW50LCBibG9ja2VyKTsKIAogICAgICAgICAgICAgaWYgKHNjcm9sbGluZ1dhc0hhbmRsZWQpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgICAgIGlmIChjdXJyZW50RW5j
bG9zaW5nQm94LT5lbGVtZW50KCkgIT0gY3VycmVudEVuY2xvc2luZ0JveC0+ZG9jdW1lbnQoKS5k
b2N1bWVudEVsZW1lbnQoKSkgeworICAgICAgICAgICAgICAgIGJveExheWVyLT51cGRhdGVTY3Jv
bGxDaGFpbmluZ0Jsb2NrZXJTdGF0ZShibG9ja2VyKTsKKyAgICAgICAgICAgICAgICBpZiAoU2Ny
b2xsQ2hhaW5pbmdCbG9ja2VyOjpzaG91bGRCbG9ja1Njcm9sbENoYWluaW5nKGJsb2NrZXIsIGJp
YXNlZERlbHRhKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAg
ICB9CiAgICAgICAgIH0KIAogICAgICAgICBjdXJyZW50RW5jbG9zaW5nQm94ID0gY3VycmVudEVu
Y2xvc2luZ0JveC0+Y29udGFpbmluZ0Jsb2NrKCk7CkBAIC0zMDc1LDYgKzMxNTYsNyBAQCB2b2lk
IEV2ZW50SGFuZGxlcjo6ZGVmYXVsdFdoZWVsRXZlbnRIYW5kbGVyKE5vZGUqIHN0YXJ0Tm9kZSwg
V2hlZWxFdmVudCYgd2hlZWxFdgogICAgIGlmICghbV9mcmFtZS5wYWdlKCktPnNjcm9sbExhdGNo
aW5nQ29udHJvbGxlcigpLmxhdGNoaW5nQWxsb3dzU2Nyb2xsaW5nSW5GcmFtZShtX2ZyYW1lLCBs
YXRjaGVkU2Nyb2xsZXIpKQogICAgICAgICByZXR1cm47CiAKKyAgICBTY3JvbGxDaGFpbmluZ0Js
b2NrZXIgc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyID0gbV9mcmFtZS5wYWdlKCktPnNjcm9sbExhdGNo
aW5nQ29udHJvbGxlcigpLmdldFNjcm9sbENoYWluaW5nQmxvY2tlcihtX2ZyYW1lKTsKICAgICBp
ZiAobGF0Y2hlZFNjcm9sbGVyKSB7CiAgICAgICAgIGlmIChsYXRjaGVkU2Nyb2xsZXIgPT0gbV9m
cmFtZS52aWV3KCkpIHsKICAgICAgICAgICAgIC8vIEZyYW1lVmlldyBzY3JvbGxpbmcgaXMgaGFu
ZGxlZCB2aWEgcHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxpbmcoKS4KQEAgLTMwODMsNiArMzE2
NSw4IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpkZWZhdWx0V2hlZWxFdmVudEhhbmRsZXIoTm9kZSog
c3RhcnROb2RlLCBXaGVlbEV2ZW50JiB3aGVlbEV2CiAKICAgICAgICAgYXV0byBwbGF0Zm9ybUV2
ZW50ID0gd2hlZWxFdmVudC51bmRlcmx5aW5nUGxhdGZvcm1FdmVudCgpOwogICAgICAgICBpZiAo
cGxhdGZvcm1FdmVudCkgeworICAgICAgICAgICAgYXV0byBiaWFzZWREZWx0YSA9IFBsYXRmb3Jt
V2hlZWxFdmVudDo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoZmlsdGVyZWRQbGF0
Zm9ybURlbHRhKTsKKyAgICAgICAgICAgIFNjcm9sbENoYWluaW5nQmxvY2tlcjo6ZmlsdGVyRGVs
dGEoc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLCBiaWFzZWREZWx0YSwgZmlsdGVyZWRQbGF0Zm9ybURl
bHRhKTsKICAgICAgICAgICAgIGF1dG8gY29waWVkRXZlbnQgPSBwbGF0Zm9ybUV2ZW50LT5jb3B5
V2l0aERlbHRhc0FuZFZlbG9jaXR5KGZpbHRlcmVkUGxhdGZvcm1EZWx0YS53aWR0aCgpLCBmaWx0
ZXJlZFBsYXRmb3JtRGVsdGEuaGVpZ2h0KCksIGZpbHRlcmVkVmVsb2NpdHkpOwogICAgICAgICAg
ICAgaWYgKGhhbmRsZVdoZWVsRXZlbnRJblNjcm9sbGFibGVBcmVhKGNvcGllZEV2ZW50LCAqbGF0
Y2hlZFNjcm9sbGVyLCBldmVudEhhbmRsaW5nKSkKICAgICAgICAgICAgICAgICB3aGVlbEV2ZW50
LnNldERlZmF1bHRIYW5kbGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50SGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAppbmRleCAx
YjE3NWRhNzkzYzZjNTEyZDEwNDk5ZmU5MWYwZjU4YzE5YTc3OWVhLi5kYzJmZmI2ZDY4ZWVjZjZm
ZWY5NmMzMGZkNzNlYzhhMDU3MzVmMWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgK
QEAgLTQ2OCw3ICs0NjgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcHJvY2Vzc1doZWVsRXZlbnRG
b3JTY3JvbGxTbmFwKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIGNvbnN0IFdlYWtQdHI8U2Ny
b2xsYWJsZUFyZWE+Jik7CiAgICAgYm9vbCBjb21wbGV0ZVdpZGdldFdoZWVsRXZlbnQoY29uc3Qg
UGxhdGZvcm1XaGVlbEV2ZW50JiwgY29uc3QgV2Vha1B0cjxXaWRnZXQ+JiwgY29uc3QgV2Vha1B0
cjxTY3JvbGxhYmxlQXJlYT4mKTsKIAotICAgIGJvb2wgaGFuZGxlV2hlZWxFdmVudEluQXBwcm9w
cmlhdGVFbmNsb3NpbmdCb3goTm9kZSogc3RhcnROb2RlLCBjb25zdCBXaGVlbEV2ZW50JiwgY29u
c3QgRmxvYXRTaXplJiBmaWx0ZXJlZFBsYXRmb3JtRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgZmls
dGVyZWRWZWxvY2l0eSwgT3B0aW9uU2V0PEV2ZW50SGFuZGxpbmc+KTsKKyAgICBib29sIGhhbmRs
ZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94KE5vZGUqIHN0YXJ0Tm9kZSwgY29u
c3QgV2hlZWxFdmVudCYsIEZsb2F0U2l6ZSYgZmlsdGVyZWRQbGF0Zm9ybURlbHRhLCBjb25zdCBG
bG9hdFNpemUmIGZpbHRlcmVkVmVsb2NpdHksIE9wdGlvblNldDxFdmVudEhhbmRsaW5nPik7CiAK
ICAgICBib29sIGhhbmRsZVdoZWVsRXZlbnRJblNjcm9sbGFibGVBcmVhKGNvbnN0IFBsYXRmb3Jt
V2hlZWxFdmVudCYsIFNjcm9sbGFibGVBcmVhJiwgT3B0aW9uU2V0PEV2ZW50SGFuZGxpbmc+KTsK
ICAgICBPcHRpb25hbDxXaGVlbFNjcm9sbEdlc3R1cmVTdGF0ZT4gdXBkYXRlV2hlZWxHZXN0dXJl
U3RhdGUoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgT3B0aW9uU2V0PEV2ZW50SGFuZGxpbmc+
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCBmYzJiMzU3ODYzMzkxNmYzNDMyZTkz
NTJjMWVjY2IxNzcwNDQ2NWNhLi5mNzUwZDcwNDA0YTI3OGI2ZTk2NzAyNGM4YjBhYjYyMTExM2Nk
YWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC00MTksNiArNDE5LDI2IEBAIGJv
b2wgRnJhbWVWaWV3OjpkaWRGaXJzdExheW91dCgpIGNvbnN0CiAgICAgcmV0dXJuIGxheW91dENv
bnRleHQoKS5kaWRGaXJzdExheW91dCgpOwogfQogCitPdmVyc2Nyb2xsQmVoYXZpb3IgRnJhbWVW
aWV3Ojpob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29uc3QKK3sKKyAgICBhdXRvKiBk
b2N1bWVudCA9IGZyYW1lKCkuZG9jdW1lbnQoKTsKKyAgICBhdXRvIHNjcm9sbGluZ09iamVjdCA9
IGRvY3VtZW50ICYmIGRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKSA/IGRvY3VtZW50LT5kb2N1
bWVudEVsZW1lbnQoKS0+cmVuZGVyZXIoKSA6IG51bGxwdHI7CisgICAgLy8gQW4gZWxlbWVudCB0
aGF0IGlzIG5vdCBzY3JvbGwgY29udGFpbmVyIG11c3QgYWNjZXB0IGJ1dCBpZ25vcmUgdGhlIHZh
bHVlcyBvZiB0aGlzIHByb3BlcnR5LgorICAgIGlmIChzY3JvbGxpbmdPYmplY3QgJiYgcmVuZGVy
VmlldygpICYmIHJlbmRlclZpZXcoKS0+Y2FuQmVTY3JvbGxlZEFuZEhhc1Njcm9sbGFibGVBcmVh
KCkpCisgICAgICAgIHJldHVybiBzY3JvbGxpbmdPYmplY3QtPnN0eWxlKCkub3ZlcnNjcm9sbEJl
aGF2aW9yWCgpOworICAgIHJldHVybiBTY3JvbGxhYmxlQXJlYTo6aG9yaXpvbnRhbE92ZXJzY3Jv
bGxCZWhhdmlvcigpOworfQorCitPdmVyc2Nyb2xsQmVoYXZpb3IgRnJhbWVWaWV3Ojp2ZXJ0aWNh
bE92ZXJzY3JvbGxCZWhhdmlvcigpICBjb25zdAoreworICAgIGF1dG8qIGRvY3VtZW50ID0gZnJh
bWUoKS5kb2N1bWVudCgpOworICAgIGF1dG8gc2Nyb2xsaW5nT2JqZWN0ID0gZG9jdW1lbnQgJiYg
ZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpID8gZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgp
LT5yZW5kZXJlcigpIDogbnVsbHB0cjsKKyAgICAvLyBBbiBlbGVtZW50IHRoYXQgaXMgbm90IHNj
cm9sbCBjb250YWluZXIgbXVzdCBhY2NlcHQgYnV0IGlnbm9yZSB0aGUgdmFsdWVzIG9mIHRoaXMg
cHJvcGVydHkuCisgICAgaWYgKHNjcm9sbGluZ09iamVjdCAmJiByZW5kZXJWaWV3KCkgJiYgcmVu
ZGVyVmlldygpLT5jYW5CZVNjcm9sbGVkQW5kSGFzU2Nyb2xsYWJsZUFyZWEoKSkKKyAgICAgICAg
cmV0dXJuIHNjcm9sbGluZ09iamVjdC0+c3R5bGUoKS5vdmVyc2Nyb2xsQmVoYXZpb3JZKCk7Cisg
ICAgcmV0dXJuIFNjcm9sbGFibGVBcmVhOjp2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpOwor
fQorCiB2b2lkIEZyYW1lVmlldzo6aW52YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkK
IHsKICAgICBpZiAoIXBhcmVudCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCBiZGZl
Mjc4NDlmMjk2MWM2ZGRlNWU5ZmY4ZGRiNTEwMjE1ZjMxNzI3Li40NjA1NjA3ZGUxOGZmY2NkMmIz
MzU2NTg2YjEwZTA2ZTAwMjVlYTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTY4MCw2
ICs2ODAsOSBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgZGVidWdEZXNjcmlwdGlvbigpIGNvbnN0
IGZpbmFsOwogCisgICAgT3ZlcnNjcm9sbEJlaGF2aW9yIGhvcml6b250YWxPdmVyc2Nyb2xsQmVo
YXZpb3IoKSBjb25zdCBmaW5hbDsKKyAgICBPdmVyc2Nyb2xsQmVoYXZpb3IgdmVydGljYWxPdmVy
c2Nyb2xsQmVoYXZpb3IoKSBjb25zdCBmaW5hbDsKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBG
cmFtZVZpZXcoRnJhbWUmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMv
RXZlbnRIYW5kbGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVy
TWFjLm1tCmluZGV4IDFkNGM4NjExNzZmZWRlZjIwNjRlMjIwMjM2MzkwMTQ1NjM4NDFkNmEuLjky
Y2NjM2IxZmJkOTA1NDgzMzMzNDBlMjAzZDEwNGIzM2FjYTYxMGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0KQEAgLTgwMCwxMCArODAwLDE2IEBAIHN0YXRp
YyBTY3JvbGxhYmxlQXJlYSogc2Nyb2xsYWJsZUFyZWFGb3JCb3goUmVuZGVyQm94JiBib3gpCiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK3N0YXRpYyBib29sIHNob3VsZE92ZXJzY3JvbGxCZWhh
dmlvckJsb2NrU2Nyb2xsQ2hhaW5pbmcoY29uc3QgU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVB
cmVhLCBjb25zdCBGbG9hdFNpemUmIGJpYXNlZERlbHRhLCBTY3JvbGxDaGFpbmluZ0Jsb2NrZXIm
IGJsb2NrZXIpCit7CisgICAgc2Nyb2xsYWJsZUFyZWEudXBkYXRlU2Nyb2xsQ2hhaW5pbmdCbG9j
a2VyU3RhdGUoYmxvY2tlcik7CisgICAgcmV0dXJuIFNjcm9sbENoYWluaW5nQmxvY2tlcjo6c2hv
dWxkQmxvY2tTY3JvbGxDaGFpbmluZyhibG9ja2VyLCBiaWFzZWREZWx0YSk7Cit9CisKIC8vIEZJ
WE1FOiBUaGlzIGNvdWxkIGJlIHdyaXR0ZW4gaW4gdGVybXMgb2YgU2Nyb2xsYWJsZUFyZWE6OmVu
Y2xvc2luZ1Njcm9sbGFibGVBcmVhKCkuCi1zdGF0aWMgQ29udGFpbmVyTm9kZSogZmluZEVuY2xv
c2luZ1Njcm9sbGFibGVDb250YWluZXIoQ29udGFpbmVyTm9kZSogbm9kZSwgY29uc3QgUGxhdGZv
cm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50KQorc3RhdGljIENvbnRhaW5lck5vZGUqIGZpbmRFbmNs
b3NpbmdTY3JvbGxhYmxlQ29udGFpbmVyKENvbnRhaW5lck5vZGUqIG5vZGUsIGNvbnN0IFBsYXRm
b3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyJiBzY3JvbGxD
aGFpbmluZ0Jsb2NrZXIpCiB7Ci0gICAgYXV0byBiaWFzZWREZWx0YSA9IFNjcm9sbENvbnRyb2xs
ZXI6OndoZWVsRGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRpY2FsKHdoZWVsRXZlbnQpOworICAgIGF1
dG8gYmlhc2VkRGVsdGEgPSBQbGF0Zm9ybVdoZWVsRXZlbnQ6OndoZWVsRGVsdGFCaWFzaW5nVG93
YXJkc1ZlcnRpY2FsKHdoZWVsRXZlbnQuZGVsdGEoKSk7CiAKICAgICAvLyBGaW5kIHRoZSBmaXJz
dCBub2RlIHdpdGggYSB2YWxpZCBzY3JvbGxhYmxlIGFyZWEgc3RhcnRpbmcgd2l0aCB0aGUgY3Vy
cmVudAogICAgIC8vIG5vZGUgYW5kIHRyYXZlcnNpbmcgaXRzIHBhcmVudHMgKG9yIHNoYWRvdyBo
b3N0cykuCkBAIC04MTcsNyArODIzLDcgQEAgc3RhdGljIENvbnRhaW5lck5vZGUqIGZpbmRFbmNs
b3NpbmdTY3JvbGxhYmxlQ29udGFpbmVyKENvbnRhaW5lck5vZGUqIG5vZGUsIGNvbnMKICAgICAg
ICAgUmVuZGVyQm94KiBib3ggPSBjYW5kaWRhdGUtPnJlbmRlckJveCgpOwogICAgICAgICBpZiAo
IWJveCB8fCAhYm94LT5jYW5CZVNjcm9sbGVkQW5kSGFzU2Nyb2xsYWJsZUFyZWEoKSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICAKKwogICAgICAgICBhdXRvKiBzY3JvbGxhYmxlQXJl
YSA9IHNjcm9sbGFibGVBcmVhRm9yQm94KCpib3gpOwogICAgICAgICBpZiAoIXNjcm9sbGFibGVB
cmVhKQogICAgICAgICAgICAgY29udGludWU7CkBAIC04MzAsOCArODM2LDEyIEBAIHN0YXRpYyBD
b250YWluZXJOb2RlKiBmaW5kRW5jbG9zaW5nU2Nyb2xsYWJsZUNvbnRhaW5lcihDb250YWluZXJO
b2RlKiBub2RlLCBjb25zCiAKICAgICAgICAgaWYgKGJpYXNlZERlbHRhLndpZHRoKCkgJiYgIXNj
cm9sbGFibGVBcmVhLT5pc1Bpbm5lZEZvclNjcm9sbERlbHRhT25BeGlzKC1iaWFzZWREZWx0YS53
aWR0aCgpLCBTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwpKQogICAgICAgICAgICAgcmV0dXJu
IGNhbmRpZGF0ZTsKKworICAgICAgICAvLyBMZXQgRnJhbWVWaWV3Ojpob3Jpem9udGFsT3ZlcnNj
cm9sbEJlaGF2aW9yIGRlY2lkZSB3aGljaCBub2RlJ3Mgb3ZlcnNjcm9sbC1iYWh2aW9yIGlzIGVm
ZmVjdGl2ZSB0byBGcmFtZVZpZXcuCisgICAgICAgIGlmIChjYW5kaWRhdGUgIT0gY2FuZGlkYXRl
LT5kb2N1bWVudCgpLmJvZHkoKSAmJiBzaG91bGRPdmVyc2Nyb2xsQmVoYXZpb3JCbG9ja1Njcm9s
bENoYWluaW5nKCpzY3JvbGxhYmxlQXJlYSwgYmlhc2VkRGVsdGEsIHNjcm9sbENoYWluaW5nQmxv
Y2tlcikpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgCisKICAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAtODc2LDEwICs4ODYsMTEgQEAgdm9pZCBFdmVudEhhbmRs
ZXI6OmRldGVybWluZVdoZWVsRXZlbnRUYXJnZXQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3
aGVlbEV2ZW4KICAgICBpZiAoIXZpZXcpCiAgICAgICAgIHJldHVybjsKIAorICAgIFNjcm9sbENo
YWluaW5nQmxvY2tlciBzY3JvbGxDaGFpbmluZ0Jsb2NrZXI7CiAgICAgaWYgKGV2ZW50VGFyZ2V0
SXNQbGF0Zm9ybVdpZGdldCh3aGVlbEV2ZW50VGFyZ2V0LmdldCgpKSkKICAgICAgICAgc2Nyb2xs
YWJsZUFyZWEgPSBzY3JvbGxhYmxlQXJlYUZvckV2ZW50VGFyZ2V0KHdoZWVsRXZlbnRUYXJnZXQu
Z2V0KCkpOwogICAgIGVsc2UgewotICAgICAgICBhdXRvKiBzY3JvbGxhYmxlQ29udGFpbmVyID0g
ZmluZEVuY2xvc2luZ1Njcm9sbGFibGVDb250YWluZXIod2hlZWxFdmVudFRhcmdldC5nZXQoKSwg
d2hlZWxFdmVudCk7CisgICAgICAgIGF1dG8qIHNjcm9sbGFibGVDb250YWluZXIgPSBmaW5kRW5j
bG9zaW5nU2Nyb2xsYWJsZUNvbnRhaW5lcih3aGVlbEV2ZW50VGFyZ2V0LmdldCgpLCB3aGVlbEV2
ZW50LCBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIpOwogICAgICAgICBpZiAoc2Nyb2xsYWJsZUNvbnRh
aW5lcikKICAgICAgICAgICAgIHNjcm9sbGFibGVBcmVhID0gc2Nyb2xsYWJsZUFyZWFGb3JDb250
YWluZXJOb2RlKCpzY3JvbGxhYmxlQ29udGFpbmVyKTsKICAgICAgICAgZWxzZQpAQCAtODk3LDcg
KzkwOCw3IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpkZXRlcm1pbmVXaGVlbEV2ZW50VGFyZ2V0KGNv
bnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVuCiAgICAgaWYgKG1fZnJhbWUuaXNNYWlu
RnJhbWUoKSAmJiB3aGVlbEV2ZW50LmlzR2VzdHVyZVN0YXJ0KCkpCiAgICAgICAgIHBhZ2UtPndo
ZWVsRXZlbnREZWx0YUZpbHRlcigpLT5iZWdpbkZpbHRlcmluZ0RlbHRhcygpOwogCi0gICAgcGFn
ZS0+c2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyKCkudXBkYXRlQW5kRmV0Y2hMYXRjaGluZ1N0YXRl
Rm9yRnJhbWUobV9mcmFtZSwgd2hlZWxFdmVudCwgd2hlZWxFdmVudFRhcmdldCwgc2Nyb2xsYWJs
ZUFyZWEsIGlzT3ZlcldpZGdldCk7CisgICAgcGFnZS0+c2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVy
KCkudXBkYXRlQW5kRmV0Y2hMYXRjaGluZ1N0YXRlRm9yRnJhbWUobV9mcmFtZSwgd2hlZWxFdmVu
dCwgd2hlZWxFdmVudFRhcmdldCwgc2Nyb2xsYWJsZUFyZWEsIHNjcm9sbENoYWluaW5nQmxvY2tl
ciwgaXNPdmVyV2lkZ2V0KTsKIH0KIAogdm9pZCBFdmVudEhhbmRsZXI6OnJlY29yZFdoZWVsRXZl
bnRGb3JEZWx0YUZpbHRlcihjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nv
b3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xs
aW5nQ29vcmRpbmF0b3IuY3BwCmluZGV4IDZhOWViYjNlMmI2NGY4YzNlNjdmNjcyM2ZlZTQ1OTY5
YTk1NDY3Y2IuLjQyMjhjMjE3ZDI1Y2VkMTVhMjBkNzhjNTdiNDFiMjQyMTRkYWVjMzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRp
bmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xs
aW5nQ29vcmRpbmF0b3IuY3BwCkBAIC02OTgsNiArNjk4LDggQEAgdm9pZCBBc3luY1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yOjpzZXRTY3JvbGxpbmdOb2RlU2Nyb2xsYWJsZUFyZWFHZW9tZXRyeShTY3Jv
bGxpbmcKICAgICBzY3JvbGxpbmdOb2RlLnNldFNjcm9sbGFibGVBcmVhU2l6ZShzY3JvbGxhYmxl
QXJlYS52aXNpYmxlU2l6ZSgpKTsKIAogICAgIFNjcm9sbGFibGVBcmVhUGFyYW1ldGVycyBzY3Jv
bGxQYXJhbWV0ZXJzOworICAgIHNjcm9sbFBhcmFtZXRlcnMuaG9yaXpvbnRhbE92ZXJzY3JvbGxC
ZWhhdmlvciA9IHNjcm9sbGFibGVBcmVhLmhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKTsK
KyAgICBzY3JvbGxQYXJhbWV0ZXJzLnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yID0gc2Nyb2xs
YWJsZUFyZWEudmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKTsKICAgICBzY3JvbGxQYXJhbWV0
ZXJzLmhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5ID0gc2Nyb2xsYWJsZUFyZWEuaG9yaXpvbnRh
bFNjcm9sbEVsYXN0aWNpdHkoKTsKICAgICBzY3JvbGxQYXJhbWV0ZXJzLnZlcnRpY2FsU2Nyb2xs
RWxhc3RpY2l0eSA9IHNjcm9sbGFibGVBcmVhLnZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eSgpOwog
ICAgIHNjcm9sbFBhcmFtZXRlcnMuYWxsb3dzSG9yaXpvbnRhbFNjcm9sbGluZyA9IHNjcm9sbGFi
bGVBcmVhLmFsbG93c0hvcml6b250YWxTY3JvbGxpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbExhdGNoaW5nQ29udHJvbGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIuY3BwCmlu
ZGV4IDRlZDRkOTc1YTdlYTQ1MDA5N2ZjYmI0ZGU5YTJlMDMyMWM2YTY3N2IuLmJhMDAxMWQzMWIz
Nzg1NTEyYjQ1NDI5MDI5OWE1ZWFjMDFmZWIwZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbExhdGNoaW5nQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyLmNwcApAQCAt
MTA4LDcgKzEwOCw3IEBAIGJvb2wgU2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyOjpsYXRjaGluZ0Fs
bG93c1Njcm9sbGluZ0luRnJhbWUoY29uc3QgRnJhbWUmIGZyYW1lCiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi12b2lkIFNjcm9sbExhdGNoaW5nQ29udHJvbGxlcjo6dXBkYXRlQW5kRmV0Y2hMYXRj
aGluZ1N0YXRlRm9yRnJhbWUoRnJhbWUmIGZyYW1lLCBjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQm
IHdoZWVsRXZlbnQsIFJlZlB0cjxFbGVtZW50PiYgbGF0Y2hlZEVsZW1lbnQsIFdlYWtQdHI8U2Ny
b2xsYWJsZUFyZWE+JiBzY3JvbGxhYmxlQXJlYSwgYm9vbCYgaXNPdmVyV2lkZ2V0KQordm9pZCBT
Y3JvbGxMYXRjaGluZ0NvbnRyb2xsZXI6OnVwZGF0ZUFuZEZldGNoTGF0Y2hpbmdTdGF0ZUZvckZy
YW1lKEZyYW1lJiBmcmFtZSwgY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBS
ZWZQdHI8RWxlbWVudD4mIGxhdGNoZWRFbGVtZW50LCBXZWFrUHRyPFNjcm9sbGFibGVBcmVhPiYg
c2Nyb2xsYWJsZUFyZWEsIFNjcm9sbENoYWluaW5nQmxvY2tlciYgc2Nyb2xsQ2hhaW5pbmdCbG9j
a2VyLCBib29sJiBpc092ZXJXaWRnZXQpCiB7CiAgICAgaWYgKHdoZWVsRXZlbnQuaXNHZXN0dXJl
U3RhcnQoKSkgewogICAgICAgICAvLyBXZSBjYW4gaGF2ZSBleGlzdGluZyBzdGF0ZSBoZXJlIGJl
Y2F1c2Ugc3RhdGUgaXMgY2xlYXJlZCBvbiBhIHRpbWVyLgpAQCAtMTE4LDYgKzExOCw3IEBAIHZv
aWQgU2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyOjp1cGRhdGVBbmRGZXRjaExhdGNoaW5nU3RhdGVG
b3JGcmFtZShGcmFtZSYgZnJhbWUsCiAgICAgICAgICAgICBzdGF0ZS53aGVlbEV2ZW50RWxlbWVu
dCA9IG1ha2VXZWFrUHRyKGxhdGNoZWRFbGVtZW50LmdldCgpKTsKICAgICAgICAgICAgIGlmIChz
aG91bGRMYXRjaFRvU2Nyb2xsYWJsZUFyZWEoZnJhbWUsIHNjcm9sbGFibGVBcmVhLmdldCgpLCBt
X2N1bXVsYXRpdmVFdmVudERlbHRhKSkKICAgICAgICAgICAgICAgICBzdGF0ZS5zY3JvbGxhYmxl
QXJlYSA9IHNjcm9sbGFibGVBcmVhOworICAgICAgICAgICAgc3RhdGUuc2Nyb2xsQ2hhaW5pbmdC
bG9ja2VyID0gc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyOwogICAgICAgICAgICAgc3RhdGUuaXNPdmVy
V2lkZ2V0ID0gaXNPdmVyV2lkZ2V0OwogCiAgICAgICAgICAgICBMT0dfV0lUSF9TVFJFQU0oU2Ny
b2xsTGF0Y2hpbmcsIHN0cmVhbSA8PCAiU2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyOjp1cGRhdGVB
bmRGZXRjaExhdGNoaW5nU3RhdGVGb3JGcmFtZSgpIC0gcHVzaGluZyBzdGF0ZSBmb3IgRnJhbWUg
IiA8PCAmZnJhbWUgPDwgIiBlbGVtZW50ICIgPDwgc3RhdGUud2hlZWxFdmVudEVsZW1lbnQuZ2V0
KCkgPDwgIiBzY3JvbGxhYmxlQXJlYSAiIDw8IHN0YXRlLnNjcm9sbGFibGVBcmVhKTsKQEAgLTEz
Miw4ICsxMzMsMTAgQEAgdm9pZCBTY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXI6OnVwZGF0ZUFuZEZl
dGNoTGF0Y2hpbmdTdGF0ZUZvckZyYW1lKEZyYW1lJiBmcmFtZSwKICAgICAgICAgICAgIHJldHVy
bjsKIAogICAgICAgICAvLyBXZSBtYXkgbm90IGhhdmUgbGF0Y2hlZCBhdCBnZXN0dXJlIHN0YXJ0
IGJlY2F1c2Ugb2Ygc21hbGwgZGVsdGFzLiBSZS1ldmFsdWF0ZSBsYXRjaGluZyBiYXNlZCBvbiBh
Y2N1bXVsYXRlZCBkZWx0YS4KLSAgICAgICAgaWYgKCFzdGF0ZS0+c2Nyb2xsYWJsZUFyZWEgJiYg
c2hvdWxkTGF0Y2hUb1Njcm9sbGFibGVBcmVhKGZyYW1lLCBzY3JvbGxhYmxlQXJlYS5nZXQoKSwg
bV9jdW11bGF0aXZlRXZlbnREZWx0YSkpCisgICAgICAgIGlmICghc3RhdGUtPnNjcm9sbGFibGVB
cmVhICYmIHNob3VsZExhdGNoVG9TY3JvbGxhYmxlQXJlYShmcmFtZSwgc2Nyb2xsYWJsZUFyZWEu
Z2V0KCksIG1fY3VtdWxhdGl2ZUV2ZW50RGVsdGEpKSB7CiAgICAgICAgICAgICBzdGF0ZS0+c2Ny
b2xsYWJsZUFyZWEgPSBzY3JvbGxhYmxlQXJlYTsKKyAgICAgICAgICAgIHN0YXRlLT5zY3JvbGxD
aGFpbmluZ0Jsb2NrZXIgPSBzY3JvbGxDaGFpbmluZ0Jsb2NrZXI7CisgICAgICAgIH0KICAgICB9
CiAKICAgICBpZiAoIXdoZWVsRXZlbnQudXNlTGF0Y2hlZEV2ZW50RWxlbWVudCgpKQpAQCAtMTQ0
LDEyICsxNDcsMzQgQEAgdm9pZCBTY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXI6OnVwZGF0ZUFuZEZl
dGNoTGF0Y2hpbmdTdGF0ZUZvckZyYW1lKEZyYW1lJiBmcmFtZSwKICAgICAgICAgICAgIGxhdGNo
ZWRFbGVtZW50ID0gc3RhdGUud2hlZWxFdmVudEVsZW1lbnQuZ2V0KCk7CiAgICAgICAgICAgICBz
Y3JvbGxhYmxlQXJlYSA9IHN0YXRlLnNjcm9sbGFibGVBcmVhOwogICAgICAgICAgICAgaXNPdmVy
V2lkZ2V0ID0gc3RhdGUuaXNPdmVyV2lkZ2V0OworICAgICAgICAgICAgc2Nyb2xsQ2hhaW5pbmdC
bG9ja2VyID0gc3RhdGUuc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyOwogCiAgICAgICAgICAgICBMT0df
V0lUSF9TVFJFQU0oU2Nyb2xsTGF0Y2hpbmcsIHN0cmVhbSA8PCAiU2Nyb2xsTGF0Y2hpbmdDb250
cm9sbGVyOjp1cGRhdGVBbmRGZXRjaExhdGNoaW5nU3RhdGVGb3JGcmFtZSgpIC0gdXNpbmcgc3Rh
dGUgZm9yIEZyYW1lICIgPDwgJmZyYW1lIDw8ICIgZWxlbWVudCAiIDw8IGxhdGNoZWRFbGVtZW50
LmdldCgpIDw8ICIgc2Nyb2xsYWJsZUFyZWEgIiA8PCBzY3JvbGxhYmxlQXJlYSk7CiAgICAgICAg
IH0KICAgICB9CiB9CiAKK1Njcm9sbENoYWluaW5nQmxvY2tlciBTY3JvbGxMYXRjaGluZ0NvbnRy
b2xsZXI6OmdldFNjcm9sbENoYWluaW5nQmxvY2tlcihjb25zdCBGcmFtZSYgZnJhbWUpIGNvbnN0
Cit7CisgICAgaWYgKCFtX2ZyYW1lU3RhdGVTdGFjay5pc0VtcHR5KCkpIHsKKyAgICAgICAgYXV0
byogZnJhbWVTdGF0ZSA9IHN0YXRlRm9yRnJhbWUoZnJhbWUpOworICAgICAgICBpZiAoZnJhbWVT
dGF0ZSkKKyAgICAgICAgICAgIHJldHVybiBmcmFtZVN0YXRlLT5zY3JvbGxDaGFpbmluZ0Jsb2Nr
ZXI7CisgICAgfQorCisgICAgcmV0dXJuIHsgZmFsc2UsIGZhbHNlIH07Cit9CisKK3ZvaWQgU2Ny
b2xsTGF0Y2hpbmdDb250cm9sbGVyOjp1cGRhdGVTY3JvbGxDaGFpbmluZ0Jsb2NrZXIoY29uc3Qg
RnJhbWUmIGZyYW1lLCBjb25zdCBTY3JvbGxDaGFpbmluZ0Jsb2NrZXImIHNjcm9sbENoYWluaW5n
QmxvY2tlckZyb21TdWJmcmFtZSkKK3sKKyAgICBpZiAobV9mcmFtZVN0YXRlU3RhY2suaXNFbXB0
eSgpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKGF1dG8qIGZyYW1lU3RhdGUgPSBzdGF0ZUZv
ckZyYW1lKGZyYW1lKSkgeworICAgICAgICBmcmFtZVN0YXRlLT5zY3JvbGxDaGFpbmluZ0Jsb2Nr
ZXIuYmxvY2tYIHw9IHNjcm9sbENoYWluaW5nQmxvY2tlckZyb21TdWJmcmFtZS5ibG9ja1g7Cisg
ICAgICAgIGZyYW1lU3RhdGUtPnNjcm9sbENoYWluaW5nQmxvY2tlci5ibG9ja1kgfD0gc2Nyb2xs
Q2hhaW5pbmdCbG9ja2VyRnJvbVN1YmZyYW1lLmJsb2NrWTsKKyAgICB9Cit9CisKIHZvaWQgU2Ny
b2xsTGF0Y2hpbmdDb250cm9sbGVyOjpyZW1vdmVMYXRjaGluZ1N0YXRlRm9yVGFyZ2V0KGNvbnN0
IEVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgaWYgKG1fZnJhbWVTdGF0ZVN0YWNrLmlzRW1wdHko
KSkKQEAgLTI1Miw2ICsyNzcsOCBAQCB2b2lkIFNjcm9sbExhdGNoaW5nQ29udHJvbGxlcjo6ZHVt
cChXVEY6OlRleHRTdHJlYW0mIHRzKSBjb25zdAogICAgICAgICBtdWx0aWxpbmVTdHJlYW0uZHVt
cFByb3BlcnR5KCJmcmFtZSIsIFZhbHVlT3JOdWxsKHN0YXRlLmZyYW1lKSk7CiAgICAgICAgIG11
bHRpbGluZVN0cmVhbS5kdW1wUHJvcGVydHkoImVsZW1lbnQiLCBWYWx1ZU9yTnVsbChzdGF0ZS53
aGVlbEV2ZW50RWxlbWVudC5nZXQoKSkpOwogICAgICAgICBtdWx0aWxpbmVTdHJlYW0uZHVtcFBy
b3BlcnR5KCJzY3JvbGxhYmxlIGFyZWEiLCBWYWx1ZU9yTnVsbChzdGF0ZS5zY3JvbGxhYmxlQXJl
YS5nZXQoKSkpOworICAgICAgICBtdWx0aWxpbmVTdHJlYW0uZHVtcFByb3BlcnR5KCJzdGF0ZS5z
Y3JvbGxDaGFpbmluZ0Jsb2NrZXIuYmxvY2tYIiwgc3RhdGUuc2Nyb2xsQ2hhaW5pbmdCbG9ja2Vy
LmJsb2NrWCk7CisgICAgICAgIG11bHRpbGluZVN0cmVhbS5kdW1wUHJvcGVydHkoInN0YXRlLnNj
cm9sbENoYWluaW5nQmxvY2tlci5ibG9ja1kiLCBzdGF0ZS5zY3JvbGxDaGFpbmluZ0Jsb2NrZXIu
YmxvY2tZKTsKICAgICAgICAgbXVsdGlsaW5lU3RyZWFtLmR1bXBQcm9wZXJ0eSgiaXMgb3ZlciB3
aWRnZXQiLCBzdGF0ZS5pc092ZXJXaWRnZXQpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIuaAppbmRl
eCA1NjQ5NjE1OWM1ZTY4ZDJiY2NlZjhjMjY1ZWU2MWNjYjlkZmI0YjI4Li44ZmQ4ZTMwYzZhMTY1
ZDk5OThkNDExZDI4YmJmZmQzMmVlZjIzNjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIuaApAQCAtNjEsNyAr
NjEsMTAgQEAgcHVibGljOgogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBubyBmcmFtZSBpcyBsYXRj
aGVkLCBvciBsYXRjaGluZyBpcyBpbiB0aGUgZ2l2ZW4gZnJhbWUgKGluIHdoaWNoIGNhc2UgbGF0
Y2hlZFNjcm9sbGVyIHdpbGwgYmUgbm9uLW51bGwpLgogICAgIGJvb2wgbGF0Y2hpbmdBbGxvd3NT
Y3JvbGxpbmdJbkZyYW1lKGNvbnN0IEZyYW1lJiwgV2Vha1B0cjxTY3JvbGxhYmxlQXJlYT4mIGxh
dGNoZWRTY3JvbGxlcikgY29uc3Q7CiAKLSAgICB2b2lkIHVwZGF0ZUFuZEZldGNoTGF0Y2hpbmdT
dGF0ZUZvckZyYW1lKEZyYW1lJiwgY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgUmVmUHRyPEVs
ZW1lbnQ+JiBsYXRjaGVkRWxlbWVudCwgV2Vha1B0cjxTY3JvbGxhYmxlQXJlYT4mLCBib29sJiBp
c092ZXJXaWRnZXQpOworICAgIHZvaWQgdXBkYXRlQW5kRmV0Y2hMYXRjaGluZ1N0YXRlRm9yRnJh
bWUoRnJhbWUmLCBjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBSZWZQdHI8RWxlbWVudD4mIGxh
dGNoZWRFbGVtZW50LCBXZWFrUHRyPFNjcm9sbGFibGVBcmVhPiYsIFNjcm9sbENoYWluaW5nQmxv
Y2tlciYsIGJvb2wmIGlzT3ZlcldpZGdldCk7CisKKyAgICBTY3JvbGxDaGFpbmluZ0Jsb2NrZXIg
Z2V0U2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKGNvbnN0IEZyYW1lJikgY29uc3Q7CisgICAgdm9pZCB1
cGRhdGVTY3JvbGxDaGFpbmluZ0Jsb2NrZXIoY29uc3QgRnJhbWUmLCBjb25zdCBTY3JvbGxDaGFp
bmluZ0Jsb2NrZXImIFNjcm9sbENoYWluaW5nQmxvY2tlckZyb21TdWJmcmFtZSk7CiAKICAgICB2
b2lkIHJlbW92ZUxhdGNoaW5nU3RhdGVGb3JUYXJnZXQoY29uc3QgRWxlbWVudCYpOwogICAgIHZv
aWQgcmVtb3ZlTGF0Y2hpbmdTdGF0ZUZvckZyYW1lKGNvbnN0IEZyYW1lJik7CkBAIC03Myw2ICs3
Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIFdlYWtQdHI8RWxlbWVudD4gd2hlZWxFdmVudEVsZW1l
bnQ7CiAgICAgICAgIFdlYWtQdHI8U2Nyb2xsYWJsZUFyZWE+IHNjcm9sbGFibGVBcmVhOwogICAg
ICAgICBGcmFtZSogZnJhbWUgeyBudWxscHRyIH07CisgICAgICAgIFNjcm9sbENoYWluaW5nQmxv
Y2tlciBzY3JvbGxDaGFpbmluZ0Jsb2NrZXI7CiAgICAgICAgIGJvb2wgaXNPdmVyV2lkZ2V0IHsg
ZmFsc2UgfTsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdDb29yZGluYXRvclR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvclR5cGVzLmgKaW5kZXggZWVjYWI2ZjU1YjY1YzQ2
MDE5OWY4MGVmMDUwNjU1MmI3MWYzMDgwMy4uNTY3NGRjYWU2YzQzMmNhNDZhMDI4MzVkZDAwYWQ3
NDAxM2NlNmFhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nQ29vcmRpbmF0b3JUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yVHlwZXMuaApAQCAtNjgsNiArNjgsOSBAQCBlbnVtIGNs
YXNzIFNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb24gewogfTsKIAogc3RydWN0IFNjcm9sbGFi
bGVBcmVhUGFyYW1ldGVycyB7CisgICAgT3ZlcnNjcm9sbEJlaGF2aW9yIGhvcml6b250YWxPdmVy
c2Nyb2xsQmVoYXZpb3IgeyBPdmVyc2Nyb2xsQmVoYXZpb3I6OiBBdXRvIH07CisgICAgT3ZlcnNj
cm9sbEJlaGF2aW9yIHZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yIHsgT3ZlcnNjcm9sbEJlaGF2
aW9yOjogQXV0byB9OworCiAgICAgU2Nyb2xsRWxhc3RpY2l0eSBob3Jpem9udGFsU2Nyb2xsRWxh
c3RpY2l0eSB7IFNjcm9sbEVsYXN0aWNpdHlOb25lIH07CiAgICAgU2Nyb2xsRWxhc3RpY2l0eSB2
ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkgeyBTY3JvbGxFbGFzdGljaXR5Tm9uZSB9OwogCkBAIC04
NCw3ICs4Nyw5IEBAIHN0cnVjdCBTY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMgewogCiAgICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IFNjcm9sbGFibGVBcmVhUGFyYW1ldGVycyYgb3RoZXIpIGNvbnN0
CiAgICAgewotICAgICAgICByZXR1cm4gaG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkgPT0gb3Ro
ZXIuaG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkKKyAgICAgICAgcmV0dXJuIGhvcml6b250YWxP
dmVyc2Nyb2xsQmVoYXZpb3IgPT0gb3RoZXIuaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcgor
ICAgICAgICAgICAgJiYgdmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IgPT0gb3RoZXIudmVydGlj
YWxPdmVyc2Nyb2xsQmVoYXZpb3IKKyAgICAgICAgICAgICYmIGhvcml6b250YWxTY3JvbGxFbGFz
dGljaXR5ID09IG90aGVyLmhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5CiAgICAgICAgICAgICAm
JiB2ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkgPT0gb3RoZXIudmVydGljYWxTY3JvbGxFbGFzdGlj
aXR5CiAgICAgICAgICAgICAmJiBob3Jpem9udGFsU2Nyb2xsYmFyTW9kZSA9PSBvdGhlci5ob3Jp
em9udGFsU2Nyb2xsYmFyTW9kZQogICAgICAgICAgICAgJiYgdmVydGljYWxTY3JvbGxiYXJNb2Rl
ID09IG90aGVyLnZlcnRpY2FsU2Nyb2xsYmFyTW9kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcAppbmRleCAxY2VmMzFiYjM2NjUxNmQzYjRhOGNl
ODFmYzE5ZGZhYjZlOTJhMGQ1Li5mYmNlM2RiYjM3NGVlOGRkZWJhNDZhYTk0YjE2MjdkZWUwNjM0
ODQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdU
cmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVl
LmNwcApAQCAtMTc0LDIxICsxNzQsNTkgQEAgV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0IFNjcm9s
bGluZ1RyZWU6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW4KICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCitib29sIFNjcm9sbGluZ1RyZWU6OnNob3VsZEJsb2NrU2Nyb2xs
Q2hhaW5pbmdXaXRoTm9kZShjb25zdCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZSYgc2Nyb2xs
aW5nTm9kZSwgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBTY3JvbGxDaGFpbmluZ0Js
b2NrZXImIGJsb2NrZXIsIGJvb2wmIGhhbmRsZWQpCit7CisgICAgc2Nyb2xsaW5nTm9kZS51cGRh
dGVTY3JvbGxDaGFpbmluZ0Jsb2NrZXJTdGF0ZShibG9ja2VyKTsKKworICAgIEZsb2F0U2l6ZSBm
aWx0ZXJlZERlbHRhKHdoZWVsRXZlbnQuZGVsdGFYKCksIHdoZWVsRXZlbnQuZGVsdGFZKCkpOwor
ICAgIGF1dG8gYmlhc2VkRGVsdGEgPSBQbGF0Zm9ybVdoZWVsRXZlbnQ6OndoZWVsRGVsdGFCaWFz
aW5nVG93YXJkc1ZlcnRpY2FsKGZpbHRlcmVkRGVsdGEpOworICAgIGlmIChibG9ja2VyLmJsb2Nr
WCB8fCBibG9ja2VyLmJsb2NrWSkgeworICAgICAgICBpZiAoYmxvY2tlci5ibG9ja1ggJiYgIWJp
YXNlZERlbHRhLmhlaWdodCgpICYmIHdpbGxXaGVlbEV2ZW50U3RhcnRTd2lwZUdlc3R1cmUod2hl
ZWxFdmVudCkpIHsKKyAgICAgICAgICAgIGhhbmRsZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIGlmIChTY3JvbGxDaGFpbmluZ0Jsb2NrZXI6
OnNob3VsZEJsb2NrU2Nyb2xsQ2hhaW5pbmcoYmxvY2tlciwgYmlhc2VkRGVsdGEpKSB7CisgICAg
ICAgICAgICBoYW5kbGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICB9CisgICAgICAgIFNjcm9sbENoYWluaW5nQmxvY2tlcjo6ZmlsdGVyRGVsdGEoYmxvY2tlciwg
Ymlhc2VkRGVsdGEsIGZpbHRlcmVkRGVsdGEpOworICAgICAgICB3aGVlbEV2ZW50ID0gd2hlZWxF
dmVudC5jb3B5V2l0aERlbHRhc0FuZFZlbG9jaXR5KGZpbHRlcmVkRGVsdGEud2lkdGgoKSwgZmls
dGVyZWREZWx0YS5oZWlnaHQoKSwgd2hlZWxFdmVudC5zY3JvbGxpbmdWZWxvY2l0eSgpKTsKKyAg
ICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQgU2Ny
b2xsaW5nVHJlZTo6aGFuZGxlV2hlZWxFdmVudFdpdGhOb2RlKGNvbnN0IFBsYXRmb3JtV2hlZWxF
dmVudCYgd2hlZWxFdmVudCwgT3B0aW9uU2V0PFdoZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHM+IHBy
b2Nlc3NpbmdTdGVwcywgU2Nyb2xsaW5nVHJlZU5vZGUqIG5vZGUsIEV2ZW50VGFyZ2V0aW5nIGV2
ZW50VGFyZ2V0aW5nKQogeworICAgIFBsYXRmb3JtV2hlZWxFdmVudCBhZGp1c3RlZFdoZWVsRXZl
bnQgPSBQbGF0Zm9ybVdoZWVsRXZlbnQod2hlZWxFdmVudCk7CisgICAgU2Nyb2xsQ2hhaW5pbmdC
bG9ja2VyIGJsb2NrZXIgPSB7IGZhbHNlLCBmYWxzZSB9OwogICAgIHdoaWxlIChub2RlKSB7CiAg
ICAgICAgIGlmIChpczxTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZT4oKm5vZGUpKSB7CiAgICAg
ICAgICAgICBhdXRvJiBzY3JvbGxpbmdOb2RlID0gZG93bmNhc3Q8U2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGU+KCpub2RlKTsKLSAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gc2Nyb2xsaW5nTm9k
ZS5oYW5kbGVXaGVlbEV2ZW50KHdoZWVsRXZlbnQsIGV2ZW50VGFyZ2V0aW5nKTsKKyAgICAgICAg
ICAgIGF1dG8gcmVzdWx0ID0gc2Nyb2xsaW5nTm9kZS5oYW5kbGVXaGVlbEV2ZW50KGFkanVzdGVk
V2hlZWxFdmVudCwgZXZlbnRUYXJnZXRpbmcpOwogCiAgICAgICAgICAgICBpZiAocmVzdWx0Lndh
c0hhbmRsZWQpIHsKLSAgICAgICAgICAgICAgICBtX2xhdGNoaW5nQ29udHJvbGxlci5ub2RlRGlk
SGFuZGxlRXZlbnQoc2Nyb2xsaW5nTm9kZS5zY3JvbGxpbmdOb2RlSUQoKSwgcHJvY2Vzc2luZ1N0
ZXBzLCB3aGVlbEV2ZW50LCBtX2FsbG93TGF0Y2hpbmcpOworICAgICAgICAgICAgICAgIC8vIElm
IHRoZSBzY3JvbGwgY2hhaW5pbmcgaXMgYmxvY2tlZCBpbiBhIHNpbmdsZSBkaXJlY3Rpb24sIGl0
IHNob3VsZCBzdG9wIGxhdGNoaW5nIHRvIGEgbm9kZSwKKyAgICAgICAgICAgICAgICAvLyBmb3Ig
dGhlIHdoZWVsIGV2ZW50IG1pZ2h0IGNoYW5nZSB0aGUgZGlyZWN0aW9uIGFuZCBvdmVyc2Nyb2xs
LWJlaGF2aW9yIG1pZ2h0IG5vdCBiZSBhYmxlIGJsb2NrCisgICAgICAgICAgICAgICAgLy8gdGhl
IHNjcm9sbCBjaGFpbmluZyBpZiBpdCBsYXRjaGVzIHRvIHRoZSBhbmNlc3RyeSBub2RlIG9mIG92
ZXJzY3JvbGwtYmVoYXZpb3IgdGFyZ2V0LgorICAgICAgICAgICAgICAgIGlmICgoYmxvY2tlci5i
bG9ja1ggJiYgYmxvY2tlci5ibG9ja1kpIHx8ICghYmxvY2tlci5ibG9ja1ggJiYgIWJsb2NrZXIu
YmxvY2tZKSkKKyAgICAgICAgICAgICAgICAgICAgbV9sYXRjaGluZ0NvbnRyb2xsZXIubm9kZURp
ZEhhbmRsZUV2ZW50KHNjcm9sbGluZ05vZGUuc2Nyb2xsaW5nTm9kZUlEKCksIHByb2Nlc3NpbmdT
dGVwcywgd2hlZWxFdmVudCwgbV9hbGxvd0xhdGNoaW5nKTsKICAgICAgICAgICAgICAgICBtX2dl
c3R1cmVTdGF0ZS5ub2RlRGlkSGFuZGxlRXZlbnQoc2Nyb2xsaW5nTm9kZS5zY3JvbGxpbmdOb2Rl
SUQoKSwgd2hlZWxFdmVudCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAg
ICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKHJlc3VsdC5uZWVkc01haW5UaHJlYWRQcm9jZXNz
aW5nKCkgfHwgZXZlbnRUYXJnZXRpbmcgIT0gRXZlbnRUYXJnZXRpbmc6OlByb3BhZ2F0ZSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworCisgICAgICAgICAgICBib29sIGhhbmRsZWQg
PSBmYWxzZTsKKyAgICAgICAgICAgIGlmIChzaG91bGRCbG9ja1Njcm9sbENoYWluaW5nV2l0aE5v
ZGUoc2Nyb2xsaW5nTm9kZSwgYWRqdXN0ZWRXaGVlbEV2ZW50LCBibG9ja2VyLCBoYW5kbGVkKSkg
eworICAgICAgICAgICAgICAgIGlmICghaGFuZGxlZCkKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdDo6dW5oYW5kbGVkKCk7CisKKyAgICAgICAgICAg
ICAgICBpZiAoKGJsb2NrZXIuYmxvY2tYICYmIGJsb2NrZXIuYmxvY2tZKSkKKyAgICAgICAgICAg
ICAgICAgICAgbV9sYXRjaGluZ0NvbnRyb2xsZXIubm9kZURpZEhhbmRsZUV2ZW50KHNjcm9sbGlu
Z05vZGUuc2Nyb2xsaW5nTm9kZUlEKCksIHByb2Nlc3NpbmdTdGVwcywgd2hlZWxFdmVudCwgbV9h
bGxvd0xhdGNoaW5nKTsKKyAgICAgICAgICAgICAgICBtX2dlc3R1cmVTdGF0ZS5ub2RlRGlkSGFu
ZGxlRXZlbnQoc2Nyb2xsaW5nTm9kZS5zY3JvbGxpbmdOb2RlSUQoKSwgd2hlZWxFdmVudCk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdDo6aGFuZGxlZCgp
OworICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgaWYgKGlzPFNjcm9sbGluZ1Ry
ZWVPdmVyZmxvd1Njcm9sbFByb3h5Tm9kZT4oKm5vZGUpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmgKaW5kZXggODMxZjU2NmQ1YjM5MTgwODM3YWE0
ZmI2ODQ3MGY0N2UwMWU1YmYyNC4uZmYwMWExYjhlMGYxOGNmMDdjOTRmMDU2MmU3YjY5YTZhMzRm
YWRmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
VHJlZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUu
aApAQCAtMjczLDcgKzI3Myw4IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9p
ZCByZWNlaXZlZFdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JikgeyB9Ci0gICAg
CisgICAgYm9vbCBzaG91bGRCbG9ja1Njcm9sbENoYWluaW5nV2l0aE5vZGUoY29uc3QgU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGUmLCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBTY3JvbGxDaGFpbmlu
Z0Jsb2NrZXImLCBib29sJiBoYW5kbGVkKTsKKwogICAgIFJlZlB0cjxTY3JvbGxpbmdUcmVlRnJh
bWVTY3JvbGxpbmdOb2RlPiBtX3Jvb3ROb2RlOwogCiAgICAgdXNpbmcgU2Nyb2xsaW5nVHJlZU5v
ZGVNYXAgPSBIYXNoTWFwPFNjcm9sbGluZ05vZGVJRCwgUmVmUHRyPFNjcm9sbGluZ1RyZWVOb2Rl
Pj47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAKaW5kZXggOTBiNTBjMjIxMTMzZWE0MzZlODYxZmVl
ZThlODc1MTNjYjUyM2JiMy4uY2U5YjcwMjZiNmQ5YTE4ZDg1MTE3ZmIzMjU2MWM5YmEyNTdmNThk
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcApAQCAtMTM0LDYgKzEzNCwyMiBAQCBib29sIFNj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjppc0xhdGNoZWROb2RlKCkgY29uc3QKICAgICByZXR1
cm4gc2Nyb2xsaW5nVHJlZSgpLmxhdGNoZWROb2RlSUQoKSA9PSBzY3JvbGxpbmdOb2RlSUQoKTsK
IH0KIAorT3ZlcnNjcm9sbEJlaGF2aW9yIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjpob3Jp
em9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zY3JvbGxh
YmxlQXJlYVBhcmFtZXRlcnMuaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcjsKK30KKworT3Zl
cnNjcm9sbEJlaGF2aW9yIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjp2ZXJ0aWNhbE92ZXJz
Y3JvbGxCZWhhdmlvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWFQYXJh
bWV0ZXJzLnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yOworfQorCit2b2lkIFNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlOjp1cGRhdGVTY3JvbGxDaGFpbmluZ0Jsb2NrZXJTdGF0ZShTY3JvbGxD
aGFpbmluZ0Jsb2NrZXImIGJsb2NrZXIpIGNvbnN0Cit7CisgICAgYmxvY2tlci5ibG9ja1ggfD0g
aG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpICE9IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0
bzsKKyAgICBibG9ja2VyLmJsb2NrWSB8PSB2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpICE9
IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0bzsKK30KKwogYm9vbCBTY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZTo6Y2FuSGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdo
ZWVsRXZlbnQsIEV2ZW50VGFyZ2V0aW5nIGV2ZW50VGFyZ2V0aW5nKSBjb25zdAogewogICAgIGlm
ICghY2FuSGF2ZVNjcm9sbGJhcnMoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oCmluZGV4IDg2MmMxYjNk
YmUwZTIzZTE2OWZhNTJjYWE0NjJmZWZkZjE0ZGU4MTguLmE2YmY0Yzk5N2NiNDIxZTU2ZmVhZjEx
YTFiZDlkNTU2NGRjY2RmNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaApAQCAtMTQ1LDYgKzE0NSw5
IEBAIHByb3RlY3RlZDoKICAgICBjb25zdCBGbG9hdFNpemUmIHRvdGFsQ29udGVudHNTaXplRm9y
UnViYmVyQmFuZCgpIGNvbnN0IHsgcmV0dXJuIG1fdG90YWxDb250ZW50c1NpemVGb3JSdWJiZXJC
YW5kOyB9CiAgICAgdm9pZCBzZXRUb3RhbENvbnRlbnRzU2l6ZUZvclJ1YmJlckJhbmQoY29uc3Qg
RmxvYXRTaXplJiB0b3RhbENvbnRlbnRzU2l6ZUZvclJ1YmJlckJhbmQpIHsgbV90b3RhbENvbnRl
bnRzU2l6ZUZvclJ1YmJlckJhbmQgPSB0b3RhbENvbnRlbnRzU2l6ZUZvclJ1YmJlckJhbmQ7IH0K
IAorICAgIE92ZXJzY3JvbGxCZWhhdmlvciBob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkg
Y29uc3Q7CisgICAgT3ZlcnNjcm9sbEJlaGF2aW9yIHZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9y
KCkgY29uc3Q7CisgICAgdm9pZCB1cGRhdGVTY3JvbGxDaGFpbmluZ0Jsb2NrZXJTdGF0ZShTY3Jv
bGxDaGFpbmluZ0Jsb2NrZXImKSBjb25zdDsKICAgICBTY3JvbGxFbGFzdGljaXR5IGhvcml6b250
YWxTY3JvbGxFbGFzdGljaXR5KCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYVBhcmFt
ZXRlcnMuaG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHk7IH0KICAgICBTY3JvbGxFbGFzdGljaXR5
IHZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eSgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsYWJsZUFy
ZWFQYXJhbWV0ZXJzLnZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eTsgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGVEZWxlZ2F0ZU1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMuaAppbmRleCAzMmE4MzhlYjZmM2RhNDM5
ODNiY2ZmNTViN2NjNDE4MTU1NzM0ZTlmLi4zOTgxNDgxZmU0ZDI5NmVlYmNlZTNhYzcxZDgyNGQ3
ZDIzY2E2YWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMv
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRl
TWFjLmgKQEAgLTEwMSw2ICsxMDEsOSBAQCBwcml2YXRlOgogICAgIEZsb2F0U2l6ZSB2aWV3cG9y
dFNpemUoKSBjb25zdCBvdmVycmlkZTsKICNlbmRpZgogCisgICAgYm9vbCBzaG91bGRTdG9wSG9y
aXpvbnRhbFN0cmVjaCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgc2hvdWxkU3RvcFZlcnRp
Y2FsU3RyZWNoKCkgY29uc3Qgb3ZlcnJpZGU7CisKICAgICB2b2lkIHJlbGVhc2VSZWZlcmVuY2Vz
VG9TY3JvbGxlckltcHNPblRoZU1haW5UaHJlYWQoKTsKIAogICAgIFNjcm9sbENvbnRyb2xsZXIg
bV9zY3JvbGxDb250cm9sbGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVE
ZWxlZ2F0ZU1hYy5tbQppbmRleCA2YTI1ODAyMTA1ODAxMmRjNWU1ZTE2NWM0N2Y3ZjllNjE0ZDYz
ZWE1Li45MzQ3NzQxNGMyMDg3OWZkN2QwOTdlNzhjMzk5NzFlYjQ0ZGI0NWQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9t
YWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5tbQpAQCAtMjYyLDYgKzI2
Miw5IEBAIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxDb250cm9sbGVyVGltZXI+IFNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OmNyCiAKIGJvb2wgU2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGVEZWxlZ2F0ZU1hYzo6YWxsb3dzSG9yaXpvbnRhbFN0cmV0Y2hpbmcoY29uc3QgUGxh
dGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50KSBjb25zdAogeworICAgIGlmIChzaG91bGRTdG9w
SG9yaXpvbnRhbFN0cmVjaCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICBzd2l0Y2gg
KGhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5KCkpIHsKICAgICBjYXNlIFNjcm9sbEVsYXN0aWNp
dHlBdXRvbWF0aWM6IHsKICAgICAgICAgYm9vbCBzY3JvbGxiYXJzQWxsb3dTdHJldGNoaW5nID0g
YWxsb3dzSG9yaXpvbnRhbFNjcm9sbGluZygpIHx8ICFhbGxvd3NWZXJ0aWNhbFNjcm9sbGluZygp
OwpAQCAtMjg0LDYgKzI4Nyw5IEBAIGJvb2wgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxl
Z2F0ZU1hYzo6YWxsb3dzSG9yaXpvbnRhbFN0cmV0Y2hpbmcoY29uc3QgUGxhCiAKIGJvb2wgU2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6YWxsb3dzVmVydGljYWxTdHJldGNo
aW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCkgY29uc3QKIHsKKyAgICBp
ZiAoc2hvdWxkU3RvcFZlcnRpY2FsU3RyZWNoKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwog
ICAgIHN3aXRjaCAodmVydGljYWxTY3JvbGxFbGFzdGljaXR5KCkpIHsKICAgICBjYXNlIFNjcm9s
bEVsYXN0aWNpdHlBdXRvbWF0aWM6IHsKICAgICAgICAgYm9vbCBzY3JvbGxiYXJzQWxsb3dTdHJl
dGNoaW5nID0gYWxsb3dzVmVydGljYWxTY3JvbGxpbmcoKSB8fCAhYWxsb3dzSG9yaXpvbnRhbFNj
cm9sbGluZygpOwpAQCAtNDM3LDYgKzQ0MywxNiBAQCBGbG9hdFNpemUgU2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6dmlld3BvcnRTaXplKCkgY29uc3QKIH0KICNlbmRpZgog
Citib29sIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OnNob3VsZFN0b3BI
b3Jpem9udGFsU3RyZWNoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc2Nyb2xsaW5nTm9kZSgpLmhv
cml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSA9PSBPdmVyc2Nyb2xsQmVoYXZpb3I6Ok5vbmU7
Cit9CisKK2Jvb2wgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6c2hvdWxk
U3RvcFZlcnRpY2FsU3RyZWNoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc2Nyb2xsaW5nTm9kZSgp
LnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgPT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpOb25l
OworfQorCiB2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OmRlZmVy
V2hlZWxFdmVudFRlc3RDb21wbGV0aW9uRm9yUmVhc29uKFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6
U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdoZWVsRXZlbnRUZXN0TW9uaXRv
cjo6RGVmZXJSZWFzb24gcmVhc29uKSBjb25zdAogewogICAgIGlmICghc2Nyb2xsaW5nVHJlZSgp
LmlzTW9uaXRvcmluZ1doZWVsRXZlbnRzKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bs
YXRmb3JtV2hlZWxFdmVudC5oCmluZGV4IGQ3MTY5MzQ2YTI0MDIzYzJhNDc4N2FlMzQ1NDBhMzc2
MDdjMGEyZDUuLjY0MTc5N2E2ZjQxODc1MzM4Y2E3MWVhNzM5MTYwZDEwYjA2Zjg4ZTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oCkBAIC0yNiw2ICsy
Niw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKKyNpbmNsdWRl
ICJGbG9hdFNpemUuaCIKICNpbmNsdWRlICJJbnRQb2ludC5oIgogI2luY2x1ZGUgIlBsYXRmb3Jt
RXZlbnQuaCIKICNpbmNsdWRlIDx3dGYvV2luZG93c0V4dHJhcy5oPgpAQCAtMTc0LDYgKzE3NSw4
IEBAIHB1YmxpYzoKICAgICBQbGF0Zm9ybVdoZWVsRXZlbnQoSFdORCwgV1BBUkFNLCBMUEFSQU0s
IGJvb2wgaXNNb3VzZUhXaGVlbCk7CiAjZW5kaWYKIAorICAgIHN0YXRpYyBGbG9hdFNpemUgd2hl
ZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoY29uc3QgRmxvYXRTaXplJik7CisKIHByb3Rl
Y3RlZDoKICAgICBQbGF0Zm9ybVdoZWVsRXZlbnRHcmFudWxhcml0eSBtX2dyYW51bGFyaXR5IHsg
U2Nyb2xsQnlQaXhlbFdoZWVsRXZlbnQgfTsKICAgICBib29sIG1fZGlyZWN0aW9uSW52ZXJ0ZWRG
cm9tRGV2aWNlIHsgZmFsc2UgfTsKQEAgLTI2NCw2ICsyNjcsMTkgQEAgaW5saW5lIEZsb2F0UG9p
bnQgUGxhdGZvcm1XaGVlbEV2ZW50Ojpzd2lwZVZlbG9jaXR5KCkgY29uc3QKIAogI2VuZGlmIC8v
IEVOQUJMRShLSU5FVElDX1NDUk9MTElORykKIAoraW5saW5lIEZsb2F0U2l6ZSBQbGF0Zm9ybVdo
ZWVsRXZlbnQ6OndoZWVsRGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRpY2FsKGNvbnN0IEZsb2F0U2l6
ZSYgZGVsdGEpCit7CisgICAgYXV0byBkZWx0YVggPSBkZWx0YS53aWR0aCgpOworICAgIGF1dG8g
ZGVsdGFZID0gZGVsdGEuaGVpZ2h0KCk7CisKKyAgICBpZiAoZmFic2YoZGVsdGFZKSA+PSBmYWJz
ZihkZWx0YVgpKQorICAgICAgICBkZWx0YVggPSAwOworICAgIGVsc2UKKyAgICAgICAgZGVsdGFZ
ID0gMDsKKworICAgIHJldHVybiB7IGRlbHRhWCwgZGVsdGFZIH07Cit9CisKIFdFQkNPUkVfRVhQ
T1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBQ
bGF0Zm9ybVdoZWVsRXZlbnQmKTsKIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBzKTsKIFdF
QkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0m
LCBFdmVudEhhbmRsaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbFR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxUeXBlcy5oCmluZGV4
IDBiMWM0MDU2M2U4Y2JiODIyYTlmZWJhNGMwYzQ2NWY4YTU3NGE5M2IuLmY4ZjcxYzJlMWZmN2I5
ZTRkMmU3NTY5ZTdiMTkyMWI4MjIxZjg0ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbFR5cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
VHlwZXMuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJGbG9h
dFBvaW50LmgiCisjaW5jbHVkZSAiRmxvYXRTaXplLmgiCiAjaW5jbHVkZSAiSW50UG9pbnQuaCIK
ICNpbmNsdWRlIDxjc3RkaW50PgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CkBAIC0yNTks
NiArMjYwLDM0IEBAIGVudW0gY2xhc3MgU2Nyb2xsU25hcFBvaW50U2VsZWN0aW9uTWV0aG9kIDog
dWludDhfdCB7CiAgICAgQ2xvc2VzdCwKIH07CiAKK3N0cnVjdCBTY3JvbGxDaGFpbmluZ0Jsb2Nr
ZXIgeworICAgIGJvb2wgYmxvY2tYIHsgZmFsc2UgfTsKKyAgICBib29sIGJsb2NrWSB7IGZhbHNl
IH07CisKKyAgICBzdGF0aWMgYm9vbCBzaG91bGRCbG9ja1Njcm9sbENoYWluaW5nKGNvbnN0IFNj
cm9sbENoYWluaW5nQmxvY2tlciYgYmxvY2tlciwgY29uc3QgRmxvYXRTaXplJiBiaWFzZWREZWx0
YSkKKyAgICB7CisgICAgICAgIGlmICgoYmxvY2tlci5ibG9ja1ggJiYgYmxvY2tlci5ibG9ja1kp
CisgICAgICAgICAgICB8fCAoYmxvY2tlci5ibG9ja1ggJiYgIWJpYXNlZERlbHRhLmhlaWdodCgp
KQorICAgICAgICAgICAgfHwgKGJsb2NrZXIuYmxvY2tZICYmICFiaWFzZWREZWx0YS53aWR0aCgp
KSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorCisgICAgc3RhdGljIHZvaWQgZmlsdGVyRGVsdGEoY29uc3QgU2Nyb2xsQ2hhaW5pbmdCbG9j
a2VyJiBibG9ja2VyLCBjb25zdCBGbG9hdFNpemUmIGJpYXNlZERlbHRhLCBGbG9hdFNpemUmIGZp
bHRlcmVkRGVsdGEpCisgICAgeworICAgICAgICBpZiAoYmxvY2tlci5ibG9ja1gpIHsKKyAgICAg
ICAgICAgIGZpbHRlcmVkRGVsdGEuc2V0V2lkdGgoMCk7CisgICAgICAgICAgICBpZiAoIWJpYXNl
ZERlbHRhLmhlaWdodCgpKQorICAgICAgICAgICAgICAgIGZpbHRlcmVkRGVsdGEuc2V0SGVpZ2h0
KDApOworICAgICAgICB9CisgICAgICAgIGlmIChibG9ja2VyLmJsb2NrWSkgeworICAgICAgICAg
ICAgZmlsdGVyZWREZWx0YS5zZXRIZWlnaHQoMCk7CisgICAgICAgICAgICBpZiAoIWJpYXNlZERl
bHRhLndpZHRoKCkpCisgICAgICAgICAgICAgICAgZmlsdGVyZWREZWx0YS5zZXRXaWR0aCgwKTsK
KyAgICAgICAgfQorICAgIH0KK307CisKIHVzaW5nIFNjcm9sbGJhckNvbnRyb2xTdGF0ZSA9IHVu
c2lnbmVkOwogdXNpbmcgU2Nyb2xsYmFyQ29udHJvbFBhcnRNYXNrID0gdW5zaWduZWQ7CiB1c2lu
ZyBTY3JvbGxpbmdOb2RlSUQgPSB1aW50NjRfdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbGFibGVBcmVhLmNwcAppbmRleCA1ZjBlMmU2ZjAyMzlmYjRmZTRhYjI5YmIzMTRiODNlYWE5
OWNjZGUyLi5jZmVhMThiMTE2ZmFiZDM0NmM5ODA0MzUzMTFmZGVlY2U0Y2UwNmIzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwCkBAIC04NDgsNiArODQ4LDEy
IEBAIHZvaWQgU2Nyb2xsYWJsZUFyZWE6OmNvbXB1dGVTY3JvbGxiYXJWYWx1ZUFuZE92ZXJoYW5n
KGZsb2F0IGN1cnJlbnRQb3NpdGlvbiwgZmxvCiAgICAgfQogfQogCit2b2lkIFNjcm9sbGFibGVB
cmVhOjp1cGRhdGVTY3JvbGxDaGFpbmluZ0Jsb2NrZXJTdGF0ZShTY3JvbGxDaGFpbmluZ0Jsb2Nr
ZXImIGJsb2NrZXIpIGNvbnN0Cit7CisgICAgYmxvY2tlci5ibG9ja1ggfD0gaG9yaXpvbnRhbE92
ZXJzY3JvbGxCZWhhdmlvcigpICE9IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0bzsKKyAgICBibG9j
a2VyLmJsb2NrWSB8PSB2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpICE9IE92ZXJzY3JvbGxC
ZWhhdmlvcjo6QXV0bzsKK30KKwogVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0
cywgY29uc3QgU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhKQogewogICAgIHRzIDw8IHNj
cm9sbGFibGVBcmVhLmRlYnVnRGVzY3JpcHRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxhYmxlQXJlYS5oCmluZGV4IDlmY2Q1NDlhYmI2ZWRhMjA2ZTIyMGMwYmQ4ZGQ5MWZlZjI3
MmYzMGUuLjgzNjRlZWY1OTE0ZWFiMDE5NDMxMDBlZGIyZGIyZTI3ZTYwM2NhYzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaApAQCAtMTI0LDYgKzEyNCwxMCBAQCBw
dWJsaWM6CiAgICAgYm9vbCBjb25zdHJhaW5zU2Nyb2xsaW5nVG9Db250ZW50RWRnZSgpIGNvbnN0
IHsgcmV0dXJuIG1fY29uc3RyYWluc1Njcm9sbGluZ1RvQ29udGVudEVkZ2U7IH0KICAgICB2b2lk
IHNldENvbnN0cmFpbnNTY3JvbGxpbmdUb0NvbnRlbnRFZGdlKGJvb2wgY29uc3RyYWluc1Njcm9s
bGluZ1RvQ29udGVudEVkZ2UpIHsgbV9jb25zdHJhaW5zU2Nyb2xsaW5nVG9Db250ZW50RWRnZSA9
IGNvbnN0cmFpbnNTY3JvbGxpbmdUb0NvbnRlbnRFZGdlOyB9CiAKKyAgICB2aXJ0dWFsIE92ZXJz
Y3JvbGxCZWhhdmlvciBob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29uc3QgeyByZXR1
cm4gT3ZlcnNjcm9sbEJlaGF2aW9yOjpBdXRvOyB9CisgICAgdmlydHVhbCBPdmVyc2Nyb2xsQmVo
YXZpb3IgdmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdCB7IHJldHVybiBPdmVyc2Ny
b2xsQmVoYXZpb3I6OkF1dG87IH0KKyAgICB2b2lkIHVwZGF0ZVNjcm9sbENoYWluaW5nQmxvY2tl
clN0YXRlKFNjcm9sbENoYWluaW5nQmxvY2tlciYpIGNvbnN0OworCiAgICAgdm9pZCBzZXRWZXJ0
aWNhbFNjcm9sbEVsYXN0aWNpdHkoU2Nyb2xsRWxhc3RpY2l0eSBzY3JvbGxFbGFzdGljaXR5KSB7
IG1fdmVydGljYWxTY3JvbGxFbGFzdGljaXR5ID0gc2Nyb2xsRWxhc3RpY2l0eTsgfQogICAgIFNj
cm9sbEVsYXN0aWNpdHkgdmVydGljYWxTY3JvbGxFbGFzdGljaXR5KCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8U2Nyb2xsRWxhc3RpY2l0eT4obV92ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkp
OyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbENv
bnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xs
ZXIuaAppbmRleCA3MzAzMjQ0ZmM2MGZlZjM0MzkwYWQ2NGUyNTE5YWM1ZWIyMzIxNTA1Li4zOGRm
NThmYmZkOTVlNGYyMzkwMjVlNmMwNDg5YTNlODk1YjA5ODZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5oCkBAIC0xMTgsNiArMTE4LDEx
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIExheW91dFNpemUgc2Nyb2xsRXh0ZW50KCkgY29uc3Qg
PSAwOwogICAgIHZpcnR1YWwgRmxvYXRTaXplIHZpZXdwb3J0U2l6ZSgpIGNvbnN0ID0gMDsKICNl
bmRpZgorCisjaWYgUExBVEZPUk0oTUFDKQorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTdG9wSG9y
aXpvbnRhbFN0cmVjaCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29s
IHNob3VsZFN0b3BWZXJ0aWNhbFN0cmVjaCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisjZW5k
aWYKIH07CiAKIGVudW0gY2xhc3MgV2hlZWxFdmVudFN0YXR1cyB7CkBAIC0xNzMsOCArMTc4LDYg
QEAgcHVibGljOgogI2VuZGlmCiAjZW5kaWYKIAotICAgIHN0YXRpYyBGbG9hdFNpemUgd2hlZWxE
ZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jik7Ci0K
ICAgICBlbnVtIGNsYXNzIFdoZWVsQXhpc0JpYXMgeyBOb25lLCBWZXJ0aWNhbCB9OwogICAgIHN0
YXRpYyBPcHRpb25hbDxTY3JvbGxEaXJlY3Rpb24+IGRpcmVjdGlvbkZyb21FdmVudChjb25zdCBQ
bGF0Zm9ybVdoZWVsRXZlbnQmLCBPcHRpb25hbDxTY3JvbGxFdmVudEF4aXM+LCBXaGVlbEF4aXNC
aWFzID0gV2hlZWxBeGlzQmlhczo6Tm9uZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9sbGVyLm1tCmluZGV4IGQwOTVlNmIxNzNiOWY5MjBhMGQ0
ZDlhNTI1YjMxMTJkMzg1Y2RkYmIuLmI3MTg1NmY4NGNiNDgxMGUxMjEyMGI1ZTNlODdlNzA4ZTg0
NWFiOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbENv
bnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29u
dHJvbGxlci5tbQpAQCAtMjUyLDcgKzI1Miw4IEBAIGJvb2wgU2Nyb2xsQ29udHJvbGxlcjo6aGFu
ZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpCiAgICAg
ICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgbV9vdmVyZmxv
d1Njcm9sbERlbHRhLnNldFdpZHRoKG1fb3ZlcmZsb3dTY3JvbGxEZWx0YS53aWR0aCgpICsgZGVs
dGFYKTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgc2hvdWxkU3RyZXRjaCA9
IHRydWU7CisgICAgICAgICAgICAgICAgaWYgKCghZGVsdGFYIHx8ICFtX2NsaWVudC5zaG91bGRT
dG9wSG9yaXpvbnRhbFN0cmVjaCgpKSAmJiAoIWRlbHRhWSB8fCAhbV9jbGllbnQuc2hvdWxkU3Rv
cFZlcnRpY2FsU3RyZWNoKCkpKQorICAgICAgICAgICAgICAgICAgICBzaG91bGRTdHJldGNoID0g
dHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCkBAIC0zMjksMTkgKzMzMCw2IEBAIGJv
b2wgU2Nyb2xsQ29udHJvbGxlcjo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVs
RXZlbnQmIHdoZWVsRXZlbnQpCiB9CiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCi1GbG9hdFNp
emUgU2Nyb2xsQ29udHJvbGxlcjo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoY29u
c3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50KQotewotICAgIGF1dG8gZGVsdGFYID0g
d2hlZWxFdmVudC5kZWx0YVgoKTsKLSAgICBhdXRvIGRlbHRhWSA9IHdoZWVsRXZlbnQuZGVsdGFZ
KCk7Ci0KLSAgICBpZiAoZmFic2YoZGVsdGFZKSA+PSBmYWJzZihkZWx0YVgpKQotICAgICAgICBk
ZWx0YVggPSAwOwotICAgIGVsc2UKLSAgICAgICAgZGVsdGFZID0gMDsKLQotICAgIHJldHVybiB7
IGRlbHRhWCwgZGVsdGFZIH07Ci19Ci0KIE9wdGlvbmFsPFNjcm9sbERpcmVjdGlvbj4gU2Nyb2xs
Q29udHJvbGxlcjo6ZGlyZWN0aW9uRnJvbUV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYg
d2hlZWxFdmVudCwgT3B0aW9uYWw8U2Nyb2xsRXZlbnRBeGlzPiBheGlzLCBXaGVlbEF4aXNCaWFz
IGJpYXMpCiB7CiAgICAgLy8gRklYTUU6IEl0J3MgaW1wb3NzaWJsZSB0byBpbmZlciBkaXJlY3Rp
b24gZnJvbSBhIHNpbmdsZSBldmVudCwgc2luY2UgdGhlIHN0YXJ0IG9mIGEgZ2VzdHVyZSBpcyBl
aXRoZXIgemVybyBvcgpAQCAtMzQ5LDcgKzMzNyw3IEBAIE9wdGlvbmFsPFNjcm9sbERpcmVjdGlv
bj4gU2Nyb2xsQ29udHJvbGxlcjo6ZGlyZWN0aW9uRnJvbUV2ZW50KGNvbnN0IFBsYXRmb3JtV2hl
CiAKICAgICBhdXRvIHdoZWVsRGVsdGEgPSBGbG9hdFNpemUgeyB3aGVlbEV2ZW50LmRlbHRhWCgp
LCB3aGVlbEV2ZW50LmRlbHRhWSgpIH07CiAgICAgaWYgKGJpYXMgPT0gV2hlZWxBeGlzQmlhczo6
VmVydGljYWwpCi0gICAgICAgIHdoZWVsRGVsdGEgPSB3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNW
ZXJ0aWNhbCh3aGVlbEV2ZW50KTsKKyAgICAgICAgd2hlZWxEZWx0YSA9IFBsYXRmb3JtV2hlZWxF
dmVudDo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwod2hlZWxFdmVudC5kZWx0YSgp
KTsKIAogICAgIGlmIChheGlzKSB7CiAgICAgICAgIHN3aXRjaCAoYXhpcy52YWx1ZSgpKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5oCmluZGV4
IDQ5ZjBiNGIxZDc5Zjc3YTk2OGE5NTJmOGFlYjk3OTU0ZTI5NzJlMjkuLmE2Y2EwYWZlZWQ1NTRj
YWQ5MzM3M2E0NGJmODE4M2RmMTcxMWI4NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5oCkBAIC0xNTYsNiArMTU2LDkgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGFkanVzdFNjcm9sbFBvc2l0aW9uVG9Cb3VuZHNJZk5lY2Vzc2FyeSgpIGZpbmFs
OwogI2VuZGlmCiAKKyAgICBib29sIHNob3VsZFN0b3BIb3Jpem9udGFsU3RyZWNoKCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgYm9vbCBzaG91bGRTdG9wVmVydGljYWxTdHJlY2goKSBjb25zdCBvdmVy
cmlkZTsKKwogICAgIGJvb2wgbV9oYXZlU2Nyb2xsZWRTaW5jZVBhZ2VMb2FkOwogICAgIGJvb2wg
bV9uZWVkc1Njcm9sbGVyU3R5bGVVcGRhdGU7CiAgICAgSW50UmVjdCBtX3Zpc2libGVTY3JvbGxl
clRodW1iUmVjdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3Jv
bGxBbmltYXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmlt
YXRvck1hYy5tbQppbmRleCA2MTUxZGVmYzBlYWVjM2EwNTcxNTAyMGFlNjUwMDIzYmFjZjE0YjNj
Li5lOGU2YWZjMjQ1NjcyNzBhZjcwNGQ1MDAzZTM1MTM0ZjYzOGZmMjcyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tCkBAIC0xNTM2LDYg
KzE1MzYsMTYgQEAgdm9pZCBTY3JvbGxBbmltYXRvck1hYzo6c2V0VmlzaWJsZVNjcm9sbGVyVGh1
bWJSZWN0KGNvbnN0IEludFJlY3QmIHNjcm9sbGVyVGh1bWIKICAgICBtX3Zpc2libGVTY3JvbGxl
clRodW1iUmVjdCA9IHJlY3RJblZpZXdDb29yZGluYXRlczsKIH0KIAorYm9vbCBTY3JvbGxBbmlt
YXRvck1hYzo6c2hvdWxkU3RvcEhvcml6b250YWxTdHJlY2goKSBjb25zdAoreworICAgIHJldHVy
biBtX3Njcm9sbGFibGVBcmVhLmhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSA9PSBPdmVy
c2Nyb2xsQmVoYXZpb3I6Ok5vbmU7Cit9CisKK2Jvb2wgU2Nyb2xsQW5pbWF0b3JNYWM6OnNob3Vs
ZFN0b3BWZXJ0aWNhbFN0cmVjaCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2Nyb2xsYWJsZUFy
ZWEudmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSA9PSBPdmVyc2Nyb2xsQmVoYXZpb3I6Ok5v
bmU7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTTU9P
VEhfU0NST0xMSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5k
ZXggNzQ0MGEyMWIyMGI5MDg5NzQzMjQyZWFlNTM3NmNmNzY5Nzk2NTY3MC4uZDJiZjI1YjM1MjUx
MTU2NTAxNTFkZTI2OGJmYjVmYmVkOTQ2ZjczMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuY3BwCkBAIC02MTYsNiArNjE2LDI0IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnNl
dENvbnN0cmFpbnNTY3JvbGxpbmdUb0NvbnRlbnRFZGdlKGJvb2wgY29uc3RyYWluc1Njcm9sbGlu
Z1RvCiAgICAgaWYgKG1fc2Nyb2xsYWJsZUFyZWEpCiAgICAgICAgIG1fc2Nyb2xsYWJsZUFyZWEt
PnNldENvbnN0cmFpbnNTY3JvbGxpbmdUb0NvbnRlbnRFZGdlKGNvbnN0cmFpbnNTY3JvbGxpbmdU
b0NvbnRlbnRFZGdlKTsKIH0KKworT3ZlcnNjcm9sbEJlaGF2aW9yIFJlbmRlckxheWVyOjpob3Jp
em9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29uc3QKK3sKKyAgICBjb25zdCBSZW5kZXJTdHls
ZSYgc3R5bGUgPSByZW5kZXJlcigpLnN0eWxlKCk7CisgICAgLy8gQW4gZWxlbWVudCB0aGF0IGlz
IG5vdCBzY3JvbGwgY29udGFpbmVyIG11c3QgYWNjZXB0IGJ1dCBpZ25vcmUgdGhlIHZhbHVlcyBv
ZiB0aGlzIHByb3BlcnR5LgorICAgIGlmIChyZW5kZXJCb3goKSAmJiByZW5kZXJCb3goKS0+Y2Fu
QmVTY3JvbGxlZEFuZEhhc1Njcm9sbGFibGVBcmVhKCkpCisgICAgICAgIHJldHVybiBzdHlsZS5v
dmVyc2Nyb2xsQmVoYXZpb3JYKCk7CisgICAgcmV0dXJuIFNjcm9sbGFibGVBcmVhOjpob3Jpem9u
dGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCk7Cit9CisKK092ZXJzY3JvbGxCZWhhdmlvciBSZW5kZXJM
YXllcjo6dmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdAoreworICAgIGNvbnN0IFJl
bmRlclN0eWxlJiBzdHlsZSA9IHJlbmRlcmVyKCkuc3R5bGUoKTsKKyAgICAvLyBBbiBlbGVtZW50
IHRoYXQgaXMgbm90IHNjcm9sbCBjb250YWluZXIgbXVzdCBhY2NlcHQgYnV0IGlnbm9yZSB0aGUg
dmFsdWVzIG9mIHRoaXMgcHJvcGVydHkuCisgICAgaWYgKHJlbmRlckJveCgpICYmIHJlbmRlckJv
eCgpLT5jYW5CZVNjcm9sbGVkQW5kSGFzU2Nyb2xsYWJsZUFyZWEoKSkKKyAgICAgICAgcmV0dXJu
IHN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclkoKTsKKyAgICByZXR1cm4gU2Nyb2xsYWJsZUFyZWE6
OnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCk7Cit9CiAvLyBFbmQgb2YgdGVtcG9yYXJ5IGds
dWUgY29kZQogCiB2b2lkIFJlbmRlckxheWVyOjphZGRDaGlsZChSZW5kZXJMYXllciYgY2hpbGQs
IFJlbmRlckxheWVyKiBiZWZvcmVDaGlsZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmgKaW5kZXggNzYyNWY0MTcxMTZmMGRmMjk5NDljOWI1MzIxY2Y1OWRjMTE3MDI0Zi4uMDlk
N2NlZjFmMzk5OTBiNjU3MTE0ZjNkZmRmNDgxYWU2OTM0MzhmMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmgKQEAgLTIwNSw2ICsyMDUsOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzY3JvbGxUb1hPZmZzZXQoaW50IHgpIHsgc2Nyb2xsVG9PZmZzZXQoU2Nyb2xsT2Zmc2V0KHgs
IHNjcm9sbE9mZnNldCgpLnkoKSksIFNjcm9sbFBvc2l0aW9uQ2hhbmdlT3B0aW9uczo6Y3JlYXRl
UHJvZ3JhbW1hdGljVW5jbGFtcGVkKCkpOyB9CiAgICAgdm9pZCBzY3JvbGxUb1lPZmZzZXQoaW50
IHkpIHsgc2Nyb2xsVG9PZmZzZXQoU2Nyb2xsT2Zmc2V0KHNjcm9sbE9mZnNldCgpLngoKSwgeSks
IFNjcm9sbFBvc2l0aW9uQ2hhbmdlT3B0aW9uczo6Y3JlYXRlUHJvZ3JhbW1hdGljVW5jbGFtcGVk
KCkpOyB9CiAgICAgdm9pZCBzZXRDb25zdHJhaW5zU2Nyb2xsaW5nVG9Db250ZW50RWRnZShib29s
KTsKKyAgICBPdmVyc2Nyb2xsQmVoYXZpb3IgaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigp
IGNvbnN0IGZpbmFsOworICAgIE92ZXJzY3JvbGxCZWhhdmlvciB2ZXJ0aWNhbE92ZXJzY3JvbGxC
ZWhhdmlvcigpIGNvbnN0IGZpbmFsOwogICAgIC8vIEVuZCBvZiB0ZW1wb3JhcnkgZ2x1ZSBjb2Rl
CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggZmFhYTJhZGNmOTkxYjEzNjU5M2M1NTk2MDY0
NmZmMWY0ODBjZjFkNy4uZGI2YzUyYzM0ZTA3YTk5ZWMxZTUzMDZkMmQ2NDQwZTYzZTM3NWFkZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBA
IC0yMDE5LDYgKzIwMTksOSBAQCBib29sIEFyZ3VtZW50Q29kZXI8VXNlclN0eWxlU2hlZXQ+Ojpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgVXNlclN0eWxlU2hlZXQmIHVzZQogCiB2b2lkIEFyZ3Vt
ZW50Q29kZXI8U2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzPjo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIsIGNvbnN0IFNjcm9sbGFibGVBcmVhUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKKyAgICBl
bmNvZGVyIDw8IHBhcmFtZXRlcnMuaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcjsKKyAgICBl
bmNvZGVyIDw8IHBhcmFtZXRlcnMudmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3I7CisKICAgICBl
bmNvZGVyIDw8IHBhcmFtZXRlcnMuaG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHk7CiAgICAgZW5j
b2RlciA8PCBwYXJhbWV0ZXJzLnZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eTsKIApAQCAtMjAzNiw2
ICsyMDM5LDExIEBAIHZvaWQgQXJndW1lbnRDb2RlcjxTY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnM+
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU2NyCiAKIGJvb2wgQXJndW1lbnRDb2Rl
cjxTY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnM+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgU2Ny
b2xsYWJsZUFyZWFQYXJhbWV0ZXJzJiBwYXJhbXMpCiB7CisgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShwYXJhbXMuaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcikpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtcy52ZXJ0aWNhbE92ZXJzY3JvbGxC
ZWhhdmlvcikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUocGFyYW1zLmhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5KSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1zLnZlcnRpY2FsU2Nyb2xsRWxhc3Rp
Y2l0eSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmlu
ZGV4IGZhOTZjZGE4NGVjYjdkNDg4YWU0MjkxMzNjMGY1YjQ0MzcwNDhkYjEuLjM5NTM1Njc4M2Zk
YTU2ZmUxYzFhYjBkOTIzNzI4NWYzNjY0NmYwOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSA8V2Vi
Q29yZS9SZWFsdGltZU1lZGlhU291cmNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJpbmdN
b2RlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1Njcm9sbFR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJpYWxpemVk
UGxhdGZvcm1EYXRhQ3VlVmFsdWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJU
eXBlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kuaD4KQEAg
LTg5Niw2ICs4OTcsMTUgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbz4gewogCiBuYW1lc3BhY2UgV1RGIHsKIAor
dGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpPdmVyc2Nyb2xsQmVoYXZpb3I+
IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgIFdlYkNvcmU6Ok92ZXJzY3Jv
bGxCZWhhdmlvciwKKyAgICBXZWJDb3JlOjpPdmVyc2Nyb2xsQmVoYXZpb3I6OkF1dG8sCisgICAg
V2ViQ29yZTo6T3ZlcnNjcm9sbEJlaGF2aW9yOjpDb250YWluLAorICAgIFdlYkNvcmU6Ok92ZXJz
Y3JvbGxCZWhhdmlvcjo6Tm9uZQorICAgID47Cit9OworCiB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVt
VHJhaXRzPFdlYkNvcmU6OkNvbG9yU3BhY2U+IHsKICAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFs
dWVzPAogICAgIFdlYkNvcmU6OkNvbG9yU3BhY2UsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQppbmRleCA5NjIwZTg2ZmIwYTcyMDE0MDFjMmNhZDU1
MWRlMmNmYjg4ODliZWRiLi5iOGNmMmU3ZmU3NDZiZTg2MjE0OTVmYzE0MzEzODJiMDY1Mzk5ZGMz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0K
QEAgLTQwOTMsNiArNDA5Myw4IEBAIHN0YXRpYyBCT09MIGN1cnJlbnRTY3JvbGxJc0JsaXQoTlNW
aWV3ICpjbGlwVmlldykKICAgICBhdXRvKiBmcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSk7CiAg
ICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmV2ZW50SGFuZGxlcigpLndoZWVsRXZlbnQoZXZlbnQp
KSB7CiAjaWYgUExBVEZPUk0oTUFDKQorICAgICAgICAvLyBGSVhNRTogTmVlZCB0byBmaW5kIGEg
d2F5IHRvIGJsb2NrIHRoZSBjcm9zcy1mcmFtZSBzY3JvbGwgY2hhaW5pbmcgaW4gV0sxLgorICAg
ICAgICAvLyBXZSBjYW4gbm90IGp1c3Qgc2tpcCB0aGUgc2Nyb2xsIGhlcmUsIGl0IG5vdCBvbmx5
IGJsb2NrcyBzY3JvbGwgY2hhaW5pbmcgYnV0IGFsc28gYmxvY2tzIHRoZSBzY3JvbGwgb24gY3Vy
cmVudCB2aWV3LgogICAgICAgICBbc3VwZXIgc2Nyb2xsV2hlZWw6ZXZlbnRdOwogI2VuZGlmCiAg
ICAgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IDMwMDExNTQ4OTExYTU0ZGI4OWZjODhhOTMzNDNiMDRiNjE1N2Y1YTIuLjkx
ZGQ2MjI2YzIwMjZmNjNkZWU4Y2Y5YWQ3NTA0OWFlZWZjYTU1NTAgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
NiBAQAorMjAyMS0wMS0xNSAgQ2F0aGllIENoZW4gIDxjYXRoaWVjaGVuQGlnYWxpYS5jb20+CisK
KyAgICAgICAgSW1wbGVtZW50IENTUyBvdmVyc2Nyb2xsLWJlaGF2aW9yIG9uIE1hYworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwMTM5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmFzZWQgb24gRnLDqWTD
qXJpYyBXYW5nJ3MgcGF0Y2guCisKKyAgICAgICAgKiBUZXN0RXhwZWN0YXRpb25zOgorICAgICAg
ICAqIGZhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3It
ZWxlbWVudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xs
LWJlaGF2aW9yLWlmcmFtZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2Ny
b2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGZhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xs
LWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZh
c3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVo
YXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Nj
cm9sbGluZy9yZXNvdXJjZXMvb3ZlcnNjcm9sbC1iZWhhdmlvci1zdXBwb3J0LmpzOiBBZGRlZC4K
KyAgICAgICAgKGFzeW5jIHBlcmZvcm1XaGVlbFNjcm9sbCk6CisgICAgICAgICogcGxhdGZvcm0v
bWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL21hYy13azIvVGVz
dEV4cGVjdGF0aW9uczoKKwogMjAyMS0wMS0xNSAgUm9iIEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29t
PgogCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjAy
MjQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0
cy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDhjYmIyMjgxZDFkMzhhY2MwNTA5Yzc4ZTM3MDQ5MWYy
Y2UyZTgyNzQuLjM4MGJhZmM4YTQ3N2MwYzBjOGZmOGYyZDE1ODU4MzVmNWExMDliMzMgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvVGVz
dEV4cGVjdGF0aW9ucwpAQCAtMTAyNCw2ICsxMDI0LDEyIEBAIHdlYmtpdC5vcmcvYi8yMDMxNDYg
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9vZmZzY3JlZW4gWyBT
a2lwCiAjIFRlc3RzIGEgc2V0dGluZyBiZWhpbmQgdGhlIEVOQUJMRV9GVUxMU0NSRUVOX0FQSSBm
bGFnLCB3aGljaCBpcyBXSzItb25seQogbWVkaWEvdmlkZW8tc3VwcG9ydHMtZnVsbHNjcmVlbi5o
dG1sIFsgU2tpcCBdCiAKKyMgVGVzdHMgb3ZlcnNjcm9sbC1iZWhhdmlvciwgd2hpY2ggb25seSBz
dXBwb3J0ZWQgb24gTWFjCitmYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1l
bnQuaHRtbCBbIFNraXAgXQorZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJh
bWUuaHRtbCBbIFNraXAgXQorZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNj
cm9sbGFibGUtZWxlbWVudC5odG1sIFsgU2tpcCBdCitmYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xs
LWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUuaHRtbCBbIFNraXAgXQorCiAjLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAjIEVuZCBwbGF0Zm9ybS1zcGVjaWZpYyB0ZXN0cy4K
ICMvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1l
bnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI3MTUwZmY2MGI1ZGJkZDBiNGE3YWM2ZjgzZmI1
NmY1N2NkMmNkODIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGlu
Zy9vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjAg
QEAKKworUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xs
LWJlaGF2aW9yOiBhdXRvIGF1dG8uCitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qg
d2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIGF1dG8uCitQQVNTIEVsZW1lbnQgaG9yaXpv
bnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gYXV0by4K
K1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZp
b3I6IGNvbnRhaW4gYXV0by4KK1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdp
dGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBhdXRvLgorUEFTUyBFbGVtZW50IHZlcnRpY2Fs
IHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBhdXRvLgorUEFTUyBF
bGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBh
dXRvIGNvbnRhaW4uCitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVy
c2Nyb2xsLWJlaGF2aW9yOiBhdXRvIGNvbnRhaW4uCitQQVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBz
Y3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gY29udGFpbi4KK1BB
U1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6
IGNvbnRhaW4gY29udGFpbi4KK1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdp
dGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBjb250YWluLgorUEFTUyBFbGVtZW50IHZlcnRp
Y2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBjb250YWluLgor
UEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2
aW9yOiBhdXRvIG5vbmUuCitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBv
dmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIG5vbmUuCitQQVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBz
Y3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gbm9uZS4KK1BBU1Mg
RWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNv
bnRhaW4gbm9uZS4KK1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3Zl
cnNjcm9sbC1iZWhhdmlvcjogbm9uZSBub25lLgorUEFTUyBFbGVtZW50IHZlcnRpY2FsIHNjcm9s
bCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBub25lLgorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItZWxl
bWVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRiNGRhNTk3M2RiYzgxZTcxYzM5ZWIxZGYxYjZkMDgzZGQ4
Nzg3MGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9vdmVy
c2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQuaHRtbApAQCAtMCwwICsxLDc4IEBACis8IWRvY3R5cGUg
aHRtbD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+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
IG92ZXJzY3JvbGxZOworICAgICAgICAgICAgcmV0dXJuIHBlcmZvcm1XaGVlbFNjcm9sbChzY3Jv
bGxlciwgInJpZ2h0IikudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFs
cyhyb290LnNjcm9sbExlZnQgPiAwLCBwcm9wYWdhdGVYLCAnQ29udGludWUgdXAgdGhlIGhvcml6
b250YWwgc2Nyb2xsIGNoYWluaW5nJyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSwgJ0Vs
ZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6ICcg
KyBvdmVyc2Nyb2xsWCArICcgJyArIG92ZXJzY3JvbGxZICsgJy4nKTsKKworICAgICAgICBwcm9t
aXNlX3Rlc3QoKCkgPT4geworICAgICAgICAgICAgcmVzZXRUZXN0KCk7CisgICAgICAgICAgICBz
Y3JvbGxlci5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JYID0gb3ZlcnNjcm9sbFg7CisgICAgICAg
ICAgICBzY3JvbGxlci5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JZID0gb3ZlcnNjcm9sbFk7Cisg
ICAgICAgICAgICByZXR1cm4gcGVyZm9ybVdoZWVsU2Nyb2xsKHNjcm9sbGVyLCAiZG93biIpLnRo
ZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxUb3Ag
PiAwLCBwcm9wYWdhdGVZLCAnQ29udGludWUgdXAgdGhlIHZlcnRpY2FsIHNjcm9sbCBjaGFpbmlu
ZycpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0sICdFbGVtZW50IHZlcnRpY2FsIHNjcm9s
bCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogJyArIG92ZXJzY3JvbGxYICsgJyAnICsg
b3ZlcnNjcm9sbFkgKyAnLicpOworICAgIH0pOworfQorCithZGRFdmVudExpc3RlbmVyKCJsb2Fk
Iiwgc3RhcnRUZXN0KTsKKzwvc2NyaXB0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3It
aWZyYW1lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3Jv
bGwtYmVoYXZpb3ItaWZyYW1lLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MDBhMGI3ZDkwNWI4
N2MxZGI3NjI2OTRmZDAwNjM4ZjE5NzY5NTM3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMjEgQEAKKworCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0
IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBhdXRvLgorUEFTUyBJZnJhbWUgdmVydGlj
YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIGF1dG8uCitQQVNT
IElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjog
Y29udGFpbiBhdXRvLgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVy
c2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGF1dG8uCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNj
cm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBhdXRvLgorUEFTUyBJZnJh
bWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIGF1
dG8uCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1i
ZWhhdmlvcjogYXV0byBjb250YWluLgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qg
d2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIGNvbnRhaW4uCitQQVNTIElmcmFtZSBob3Jp
em9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBjb250
YWluLgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJl
aGF2aW9yOiBjb250YWluIGNvbnRhaW4uCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0
ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBjb250YWluLgorUEFTUyBJZnJhbWUg
dmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIGNvbnRh
aW4uCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1i
ZWhhdmlvcjogYXV0byBub25lLgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0
aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIG5vbmUuCitQQVNTIElmcmFtZSBob3Jpem9udGFs
IHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBub25lLgorUEFT
UyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBj
b250YWluIG5vbmUuCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3Zl
cnNjcm9sbC1iZWhhdmlvcjogbm9uZSBub25lLgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xs
IHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIG5vbmUuCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFt
ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjViOTAxZDM3MGE4NmYxYzY1MjEzOTEyNGMxZjk0NjIwODZjNDMw
N2IKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9vdmVyc2Ny
b2xsLWJlaGF2aW9yLWlmcmFtZS5odG1sCkBAIC0wLDAgKzEsODEgQEAKKzwhZG9jdHlwZSBodG1s
PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXN1cHBv
cnQuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL2RyYWZ0cy5j
c3N3Zy5vcmcvY3NzLW92ZXJzY3JvbGwtYmVoYXZpb3IiPgorPHN0eWxlPgorICAgIC5zY3JvbGxp
bmcgeworICAgICAgICBvdmVyZmxvdzogc2Nyb2xsOworICAgIH0KKyAgICAuc2Nyb2xsQ29udGVu
dCB7CisgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAg
ICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmVkLCBibHVlKTsKKyAgICB9
CisgICAgI3Jvb3QgeworICAgICAgICB3aWR0aDogMjAwcHg7CisgICAgICAgIGhlaWdodDogMjAw
cHg7CisgICAgfQorICAgICNzY3JvbGxlciB7CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAg
ICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgICAgb3ZlcnNjcm9sbC1iZWhhdmlvci15OiBhdXRvOwor
ICAgIH0KKzwvc3R5bGU+Cis8ZGl2IGlkPSdyb290JyBjbGFzcz0ic2Nyb2xsaW5nIj4KKyAgICA8
aWZyYW1lIGlkPSdzY3JvbGxlcicgc3JjZG9jPSI8aHRtbD48ZGl2IHN0eWxlPSd3aWR0aDogMzAw
cHg7IGhlaWdodDogMzAwcHg7Jz48L2Rpdj48L2h0bWw+CisgICAgICAgICI+PC9pZnJhbWU+Cisg
ICAgPGRpdiBjbGFzcz0ic2Nyb2xsQ29udGVudCI+PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4K
KyAgICBjb25zdCByb290ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jvb3QnKTsKKyAgICBj
b25zdCBzY3JvbGxlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY3JvbGxlcicpOworICAg
IHZhciBvdmVyc2Nyb2xsRGF0YXMgPSBbWyJhdXRvIiwgImF1dG8iLCB0cnVlLCB0cnVlXSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBbImNvbnRhaW4iLCAiYXV0byIsIGZhbHNlLCB0cnVl
XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIm5vbmUiLCAiYXV0byIsIGZhbHNlLCB0
cnVlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImF1dG8iLCAiY29udGFpbiIsIHRy
dWUsIGZhbHNlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImNvbnRhaW4iLCAiY29u
dGFpbiIsIGZhbHNlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJub25l
IiwgImNvbnRhaW4iLCBmYWxzZSwgZmFsc2VdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFsiYXV0byIsICJub25lIiwgdHJ1ZSwgZmFsc2VdLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFsiY29udGFpbiIsICJub25lIiwgZmFsc2UsIGZhbHNlXSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBbIm5vbmUiLCAibm9uZSIsIGZhbHNlLCBmYWxzZV1dOworICAgIGZ1bmN0aW9u
IHJlc2V0VGVzdCgpIHsKKyAgICAgICAgLy8gVHJ5IHZhcmlvdXMgbWV0aG9kcyB0byBlbnN1cmUg
dGhlIGVsZW1lbnQgcG9zaXRpb24gaXMgcmVzZXQgaW1tZWRpYXRlbHkuCisgICAgICAgIHNjcm9s
bGVyLmNvbnRlbnRXaW5kb3cuc2Nyb2xsWCA9IDMwMDsKKyAgICAgICAgc2Nyb2xsZXIuY29udGVu
dFdpbmRvdy5zY3JvbGxZID0gMzAwOworICAgICAgICBzY3JvbGxlci5jb250ZW50V2luZG93LnNj
cm9sbFRvKDMwMCwgMzAwKTsKKworICAgICAgICByb290LnNjcm9sbExlZnQgPSAwOworICAgICAg
ICByb290LnNjcm9sbFRvcCA9IDA7CisgICAgICAgIHJvb3Quc2Nyb2xsVG8oMCwgMCk7CisgICAg
fQorCisgICAgZnVuY3Rpb24gb3ZlcnNjcm9sbEJlaGF2aW9yVGVzdCgpIHsKKyAgICAgICAgb3Zl
cnNjcm9sbERhdGFzLmZvckVhY2goKFtvdmVyc2Nyb2xsWCwgb3ZlcnNjcm9sbFksIHByb3BhZ2F0
ZVgsIHByb3BhZ2F0ZVldKSA9PiB7CisgICAgICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4gewor
ICAgICAgICAgICAgICAgIHJlc2V0VGVzdCgpOworICAgICAgICAgICAgICAgIHZhciB0YXJnZXQg
PSBzY3JvbGxlci5jb250ZW50V2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJo
dG1sIilbMF07CisgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlv
clggPSBvdmVyc2Nyb2xsWDsKKyAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUub3ZlcnNjcm9s
bEJlaGF2aW9yWSA9IG92ZXJzY3JvbGxZOworCisgICAgICAgICAgICAgICAgcmV0dXJuIHBlcmZv
cm1XaGVlbFNjcm9sbChzY3JvbGxlciwgInJpZ2h0IikudGhlbigoKSA9PiB7CisgICAgICAgICAg
ICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxMZWZ0ID4gMCwgcHJvcGFnYXRlWCwg
J0NvbnRpbnVlIHVwIHRoZSBob3Jpem9udGFsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAgICAg
ICAgICAgIH0pOworICAgICAgICAgICAgfSwgJ0lmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0
IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogJyArIG92ZXJzY3JvbGxYICsgJyAnICsgb3ZlcnNj
cm9sbFkgKyAnLicpOworCisgICAgICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgICAg
ICAgICAgICAgIHJlc2V0VGVzdCgpOworICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSBzY3Jv
bGxlci5jb250ZW50V2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJodG1sIilb
MF07CisgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclggPSBv
dmVyc2Nyb2xsWDsKKyAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUub3ZlcnNjcm9sbEJlaGF2
aW9yWSA9IG92ZXJzY3JvbGxZOworICAgICAgICAgICAgICAgIHJldHVybiBwZXJmb3JtV2hlZWxT
Y3JvbGwoc2Nyb2xsZXIsICJkb3duIikudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgICAg
IGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxUb3AgPiAwLCBwcm9wYWdhdGVZLCAnQ29udGludWUg
dXAgdGhlIHZlcnRpY2FsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAgICAgICAgICAgIH0pOwor
ICAgICAgICAgICAgfSwgJ0lmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3Jv
bGwtYmVoYXZpb3I6ICcgKyBvdmVyc2Nyb2xsWCArICcgJyArIG92ZXJzY3JvbGxZICsgJy4nKTsK
KyAgICAgICAgfSk7CisgICAgfQorCisgICAgc2Nyb2xsZXIuYWRkRXZlbnRMaXN0ZW5lcigibG9h
ZCIsIG92ZXJzY3JvbGxCZWhhdmlvclRlc3QpOworPC9zY3JpcHQ+ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvb3ZlcnNj
cm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9mYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVt
ZW50LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMzk1YjY0ODhkMDg3MGI5NTYxYzAyODY3OWQ3
ZTE1YTQ3ZmNlNmU5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxp
bmcvb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSw0IEBACisKK1BBU1MgVW5zY3JvbGxhYmxlIGVsZW1lbnQgaG9yaXpvbnRhbCBz
Y3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuCitQQVNTIFVuc2Nyb2xs
YWJsZSBlbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlv
cjogbm9uZS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvb3ZlcnNj
cm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjM0NTFiNDNjZDEwMGI1ZTBlOGRmODNjNjk3OWRhNDZhOGQ2Y2YzMDEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJl
aGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWwKQEAgLTAsMCArMSw2MSBAQAorPCFkb2N0
eXBlIGh0bWw+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9y
dC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL292ZXJzY3JvbGwtYmVoYXZp
b3Itc3VwcG9ydC5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8v
ZHJhZnRzLmNzc3dnLm9yZy9jc3Mtb3ZlcnNjcm9sbC1iZWhhdmlvciI+Cis8c3R5bGU+CisgICAg
LnNjcm9sbGluZyB7CisgICAgICAgIG92ZXJmbG93OiBzY3JvbGw7CisgICAgfQorICAgIC5zY3Jv
bGxDb250ZW50IHsKKyAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICBoZWlnaHQ6IDMwMHB4
OworICAgIH0KKyAgICAjcm9vdCB7CisgICAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgICAgaGVp
Z2h0OiAyMDBweDsKKyAgICB9CisgICAgI3Njcm9sbGVyIHsKKyAgICAgICAgd2lkdGg6IDEwMHB4
OworICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgICBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBu
b25lOworICAgICAgICBvdmVyZmxvdzogdmlzaWJsZTsKKyAgICAgICAgYmFja2dyb3VuZDogbGlu
ZWFyLWdyYWRpZW50KDEzNWRlZywgcmVkLCBibHVlKTsKKyAgICB9Cis8L3N0eWxlPgorPGRpdiBp
ZD0icm9vdCIgY2xhc3M9InNjcm9sbGluZyI+CisgICAgPGRpdiBpZD0ic2Nyb2xsZXIiPgorICAg
ICAgICA8ZGl2IGNsYXNzPSJzY3JvbGxDb250ZW50Ij48L2Rpdj4KKyAgICA8L2Rpdj4KKyAgICA8
ZGl2IGNsYXNzPSJzY3JvbGxDb250ZW50Ij48L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0PgorY29u
c3Qgcm9vdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyb290Jyk7Citjb25zdCBzY3JvbGxl
ciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY3JvbGxlcicpOworZnVuY3Rpb24gcmVzZXRU
ZXN0KCkgeworICAgIHJvb3Quc2Nyb2xsTGVmdCA9IDA7CisgICAgcm9vdC5zY3JvbGxUb3AgPSAw
OworICAgIHJvb3Quc2Nyb2xsVG8oMCwgMCk7Cit9CisKK2Z1bmN0aW9uIHN0YXJ0VGVzdCgpIHsK
KyAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAgIHJlc2V0VGVzdCgpOwor
ICAgICAgICAgICAgcmV0dXJuIHBlcmZvcm1XaGVlbFNjcm9sbChzY3JvbGxlciwgInJpZ2h0Iiku
dGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbExl
ZnQgPiAwLCB0cnVlLCAnQ29udGludWUgdXAgdGhlIGhvcml6b250YWwgc2Nyb2xsIGNoYWluaW5n
Jyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSwgJ1Vuc2Nyb2xsYWJsZSBlbGVtZW50IGhv
cml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLicpOwor
CisgICAgICAgIHByb21pc2VfdGVzdCgoKSA9PiB7CisgICAgICAgICAgICByZXNldFRlc3QoKTsK
KworICAgICAgICAgICAgcmV0dXJuIHBlcmZvcm1XaGVlbFNjcm9sbChzY3JvbGxlciwgImRvd24i
KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xs
VG9wID4gMCwgdHJ1ZSwgJ0NvbnRpbnVlIHVwIHRoZSB2ZXJ0aWNhbCBzY3JvbGwgY2hhaW5pbmcn
KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9LCAnVW5zY3JvbGxhYmxlIGVsZW1lbnQgdmVy
dGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLicpOworfQor
CithZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgc3RhcnRUZXN0KTsKKzwvc2NyaXB0PgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xs
aW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xs
YWJsZS1pZnJhbWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdmYTU5Y2NiYTc5YWVmZjMzZGE3
MGU5M2Q0ODhhMDdlZWM5YzU2OTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorCisKK1BBU1MgVW5zY3JvbGxhYmxlIGlmcmFtZSBob3Jp
em9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4KK1BBU1Mg
VW5zY3JvbGxhYmxlIGlmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwt
YmVoYXZpb3I6IG5vbmUuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5n
L292ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1l
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZTZjNjNmOGNiM2QxNGJlZjhlZGJhYTExZDVlYWYyNmVkZDNhMGJl
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3Jv
bGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sCkBAIC0wLDAgKzEsNjEgQEAKKzwh
ZG9jdHlwZSBodG1sPgorCis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3Ny
ZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9vdmVyc2Nyb2xsLWJl
aGF2aW9yLXN1cHBvcnQuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRw
czovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLW92ZXJzY3JvbGwtYmVoYXZpb3IiPgorPHN0eWxlPgor
ICAgIC5zY3JvbGxpbmcgeworICAgICAgICBvdmVyZmxvdzogc2Nyb2xsOworICAgIH0KKyAgICAu
c2Nyb2xsQ29udGVudCB7CisgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgaGVpZ2h0OiAz
MDBweDsKKyAgICB9CisgICAgI3Jvb3QgeworICAgICAgICB3aWR0aDogMjAwcHg7CisgICAgICAg
IGhlaWdodDogMjAwcHg7CisgICAgfQorICAgICNzY3JvbGxlciB7CisgICAgICAgIHdpZHRoOiAy
MDBweDsKKyAgICAgICAgaGVpZ2h0OiAyMDBweDsKKyAgICAgICAgb3ZlcnNjcm9sbC1iZWhhdmlv
cjogbm9uZTsKKyAgICAgICAgb3ZlcmZsb3c6IHZpc2libGU7CisgICAgICAgIGJhY2tncm91bmQ6
IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJlZCwgYmx1ZSk7CisgICAgfQorPC9zdHlsZT4KKzxk
aXYgaWQ9J3Jvb3QnIGNsYXNzPSJzY3JvbGxpbmciPgorICAgIDxpZnJhbWUgaWQ9J3Njcm9sbGVy
JyBzcmNkb2M9IjxodG1sIHN0eWxlPSdvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lOyc+PGRpdiBz
dHlsZT0nd2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDEwMHB4Oyc+PC9kaXY+PC9odG1sPgorICAgICAg
ICAiPjwvaWZyYW1lPgorICAgIDxkaXYgY2xhc3M9InNjcm9sbENvbnRlbnQiPjwvZGl2PgorPC9k
aXY+CisKKzxzY3JpcHQ+Citjb25zdCByb290ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jv
b3QnKTsKK2NvbnN0IHNjcm9sbGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Njcm9sbGVy
Jyk7CisKK2Z1bmN0aW9uIHJlc2V0VGVzdCgpIHsKKyAgICByb290LnNjcm9sbExlZnQgPSAwOwor
ICAgIHJvb3Quc2Nyb2xsVG9wID0gMDsKKyAgICByb290LnNjcm9sbFRvKDAsIDApOworfQorCitm
dW5jdGlvbiBzdGFydFRlc3QoKSB7CisgICAgICAgIHByb21pc2VfdGVzdCgoKSA9PiB7CisgICAg
ICAgICAgICByZXNldFRlc3QoKTsKKyAgICAgICAgICAgIHJldHVybiBwZXJmb3JtV2hlZWxTY3Jv
bGwoc2Nyb2xsZXIsICJyaWdodCIpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGFzc2Vy
dF9lcXVhbHMocm9vdC5zY3JvbGxMZWZ0ID4gMCwgdHJ1ZSwgJ0NvbnRpbnVlIHVwIHRoZSBob3Jp
em9udGFsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0sICdV
bnNjcm9sbGFibGUgaWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xs
LWJlaGF2aW9yOiBub25lLicpOworCisgICAgICAgIHByb21pc2VfdGVzdCgoKSA9PiB7CisgICAg
ICAgICAgICByZXNldFRlc3QoKTsKKworICAgICAgICAgICAgcmV0dXJuIHBlcmZvcm1XaGVlbFNj
cm9sbChzY3JvbGxlciwgImRvd24iKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBhc3Nl
cnRfZXF1YWxzKHJvb3Quc2Nyb2xsVG9wID4gMCwgdHJ1ZSwgJ0NvbnRpbnVlIHVwIHRoZSB2ZXJ0
aWNhbCBzY3JvbGwgY2hhaW5pbmcnKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9LCAnVW5z
Y3JvbGxhYmxlIGlmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVo
YXZpb3I6IG5vbmUuJyk7Cit9CisKK2FkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBzdGFydFRlc3Qp
OworPC9zY3JpcHQ+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvcmVzb3VyY2VzL292ZXJzY3JvbGwtYmVoYXZpb3Itc3Vw
cG9ydC5qcyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3Jlc291cmNlcy9vdmVyc2Nyb2xs
LWJlaGF2aW9yLXN1cHBvcnQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWU3ZTMyMzIyMTRlODhlZjdjNjdlMDk5
NzIwYjJiMjM3Y2FhNzBlMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Ny
b2xsaW5nL3Jlc291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXN1cHBvcnQuanMKQEAgLTAsMCAr
MSwzMSBAQAorYXN5bmMgZnVuY3Rpb24gcGVyZm9ybVdoZWVsU2Nyb2xsKHNjcm9sbGVyLCBkaXJl
Y3Rpb24pIHsKKyAgICB2YXIgZGVsdGFYID0gMDsKKyAgICB2YXIgZGVsdGFZID0gMDsKKyAgICBp
ZiAoZGlyZWN0aW9uID09ICJkb3duIikKKyAgICAgICAgZGVsdGFZID0gLTU7CisgICAgZWxzZSBp
ZiAoZGlyZWN0aW9uID09ICJ1cCIpCisgICAgICAgIGRlbHRhWSA9IDU7CisgICAgZWxzZSBpZiAo
ZGlyZWN0aW9uID09ICJyaWdodCIpCisgICAgICAgIGRlbHRhWCA9IC01OworICAgIGVsc2UgaWYg
KGRpcmVjdGlvbiA9PSAibGVmdCIpCisgICAgICAgIGRlbHRhWCA9IDU7CisKKyAgICB2YXIgeCA9
IHNjcm9sbGVyLmNsaWVudFdpZHRoIC8gMjsKKyAgICB2YXIgeSA9IHNjcm9sbGVyLmNsaWVudEhl
aWdodCAvIDI7CisgICAgZXZlbnRTZW5kZXIuZHJhZ01vZGUgPSBmYWxzZTsKKyAgICBldmVudFNl
bmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4
LCB5KTsKKyAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZGVsdGFYLCBkZWx0YVksICdiZWdhbicsICdub25lJyk7CisgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGRlbHRhWCAqIDIsIGRlbHRh
WSAqIDIsICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZGVsdGFYICogMywgZGVsdGFZICogMywgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkZWx0YVgsIGRlbHRhWSwgJ25v
bmUnLCAnYmVnaW4nKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZGVsdGFYICogMiwgZGVsdGFZICogMiwgJ25vbmUnLCAnY29udGludWUn
KTsKKyAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZGVsdGFYICogMywgZGVsdGFZICogMywgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25v
bmUnLCAnZW5kJyk7CisgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4geworICAgICAg
ICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoKCkgPT4geworICAgICAg
ICAgICAgcmVzb2x2ZSgpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBiMjUyNGRkNzQ0ZGE1NTk0
OTQ0YTQ2Y2QxMjNjZWRjYjQzMTRhMTE3Li44NjcwNzExNmUzMGQ0ZjYxMGM0N2YzNjM5MGQ2Y2Ix
YzA4NmI0ODRlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RF
eHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0
YXRpb25zCkBAIC0zMyw2ICszMywxMSBAQCBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzcy1ERU5JRUQt
eHNsLWV4dGVybmFsLWVudGl0eS1uby1sb2dnaW5nLnhtbCBbIFBhc3MgXQogIyByZGFyOi8vcHJv
YmxlbS82MTc5Mzg4NCA6IEVuYWJsaW5nIHRoaXMgdGVzdCBmb3IgV0sxIG9ubHkuCiBmYXN0L3No
YXBlcy9zaGFwZS1vdXRzaWRlLWZsb2F0cy9zaGFwZS1vdXRzaWRlLWltYWdlZGF0YS1vdmVyZmxv
dy5odG1sIFsgUGFzcyBdCiAKKyMgT3ZlcnNjcm9sbC1iZWhhdmlvciBpcyBzdXBwb3J0ZWQgb24g
TWFjLgorIyBGSVhNRTogTmVlZCB0byBmaW5kIGEgd2F5IHRvIGJsb2NrIHRoZSBjcm9zcy1mcmFt
ZSBzY3JvbGwgY2hhaW5pbmcgaW4gV0sxLgorZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhh
dmlvci1lbGVtZW50Lmh0bWwgWyBQYXNzIF0KK2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVo
YXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRtbCBbIFBhc3MgXQorCiAjLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vCiAjIEVuZCBwbGF0Zm9ybS1zcGVjaWZpYyBkaXJlY3Rvcmll
cy4KICMvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBlODU5OGQ3Y2E5ZDU1NDBiZGE2
MWU2MTEzNjNmNGVlMTFjOGIwZGI5Li4yNDg5YTAwMWY5OWRjYTViYjE1NjMyNzZiNDI4OWUzNjhk
NGEzZDcyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBl
Y3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRp
b25zCkBAIC0xMDQsNiArMTA0LDEyIEBAIGZhc3QvYW5pbWF0aW9uL3JlcXVlc3QtYW5pbWF0aW9u
LWZyYW1lLWluLXR3by1wYWdlcy5odG1sIFsgUGFzcyBdCiBmYXN0L2Zvcm1zL2ZpbGUvZW50cmll
cy1hcGkvaW1hZ2UtdHJhbnNjb2RlLW9wZW4tcGFuZWwuaHRtbCBbIFBhc3MgXQogZmFzdC9mb3Jt
cy9maWxlL2VudHJpZXMtYXBpL2ltYWdlLW5vLXRyYW5zY29kZS1vcGVuLXBhbmVsLmh0bWwgWyBQ
YXNzIF0KIAorIyBPdmVyc2Nyb2xsLWJlaGF2aW9yIGlzIG9ubHkgc3VwcG9ydGVkIG9uIE1hYwor
ZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50Lmh0bWwgWyBQYXNzIF0K
K2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0bWwgWyBQYXNzIF0K
K2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQu
aHRtbCBbIFBhc3MgXQorZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9s
bGFibGUtaWZyYW1lLmh0bWwgWyBQYXNzIF0KKwogIy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLwogIyBFbmQgcGxhdGZvcm0tc3BlY2lmaWMgZGlyZWN0b3JpZXMuCiAjLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCg==
</data>
<flag name="commit-queue"
          id="435595"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417813</attachid>
            <date>2021-01-18 01:00:25 -0800</date>
            <delta_ts>2021-01-18 01:45:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220139-20210118170023.patch</filename>
            <type>text/plain</type>
            <size>83518</size>
            <attacher name="cathiechen">cathiechen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxNTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2VjZjQwOGEyYjNhYWM3
MmE1NTM1NTNjNDQwMTFiOTU3MDgwYzJmNS4uMDQ2ZDRjMjlkOGUwNTkxZmM0MzNhOWYzZGU3NjJi
MjgyNWJjNTA5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMCBAQAorMjAyMS0wMS0xNSAgQ2F0
aGllIENoZW4gIDxjYXRoaWVjaGVuQGlnYWxpYS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IENT
UyBvdmVyc2Nyb2xsLWJlaGF2aW9yIG9uIE1hYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwMTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQmFzZWQgb24gRnLDqWTDqXJpYyBXYW5nJ3MgcGF0Y2guCisK
KyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIG92ZXJzY3JvbGwtYmVoYXZpb3Ig
b24gTWFjLgorICAgICAgICBBY2NvcmRpbmcgdG8gWzFdLCB0aGVyZSBhcmUgdHdvIGtpbmRzIG9m
IGFjdGlvbnM6IG5vbi1sb2NhbCBib3VuZGFyeSBkZWZhdWx0IGFjdGlvbnMgYW5kIGxvY2FsIGJv
dW5kYXJ5IGRlZmF1bHQgYWN0aW9ucy4KKyAgICAgICAgSW4gV2ViS2l0IG1hYywgdGhlIHJ1YmJl
ciBiYW5kaW5nIGVmZm9ydCBpcyBiZWxvbmdlZCB0byBsb2NhbCBib3VuZGFyeSBkZWZhdWx0IGFj
dGlvbnMuIFRoZSBzY3JvbGwgY2hhaW5pbmcgYW5kIHN3aXBlCisgICAgICAgIGdlc3R1cmVzICh0
cmlnZ2VyIGdvIGJhY2sgb3IgZ28gZm9yd2FyZCBhY3Rpb25zKSBhcmUgYmVsb25nZWQgdG8gbm9u
LWxvY2FsIGJvdW5kYXJ5IGRlZmF1bHQgYWN0aW9ucy4KKyAgICAgICAgMS4gVG8gaGFuZGxlIHRo
ZSBydWJiZXIgYmFuZGluZyBlZmZlY3QsIHNob3VsZFN0b3BIb3Jpem9udGFsU3RyZWNoKCkgYW5k
IHNob3VsZFN0b3BWZXJ0aWNhbFN0cmVjaCgpIGFyZSBhZGRlZCB0byBkZWNpZGUKKyAgICAgICAg
d2hldGhlciB0aGUgcnViYmVyIGJhbmRpbmcgZWZmb3J0IGlzIGFsbG93ZWQgb3Igbm90LgorICAg
ICAgICAyLiBUbyBibG9jayBzY3JvbGwgY2hhaW5pbmcgYWN0aW9ucyBpbiBkaWZmZXJlbnQgc2Ny
b2xsIG1vZGVzLgorICAgICAgICAgIC0gRm9yIGFzeW5jaHJvbm91cyBzY3JvbGxpbmcsIGl0J3Mg
aGFuZGxlZCBpbiBTY3JvbGxpbmdUcmVlOjpoYW5kbGVXaGVlbEV2ZW50V2l0aE5vZGUoKSwgYWNj
b3JkaW5nIHRvIHRoZSB2YWx1ZSBvZgorICAgICAgICAgIG92ZXJzY3JvbGwtYmVoYXZpb3IsIGl0
IGJsb2NrcyB0aGUgc2Nyb2xsIGNoYWluaW5nIGlmIG5lZWRlZCwgdGhlIHJlc3VsdCB3b3VsZCBi
ZSBhZGRlZCB0byBtX2xhdGNoaW5nQ29udHJvbGxlcgorICAgICAgICAgIGFuZCBtaWdodCBiZSBy
ZXVzZWQuCisgICAgICAgICAgLSBGb3Igc3luY2hyb25vdXMgc2Nyb2xsaW5nLCBpZiBXSEVFTF9F
VkVOVF9MQVRDSElORyBpcyBkaXNhYmxlZCwgaXQgaGFuZGxlcyBvdmVyc2Nyb2xsLWJlaGF2aW9y
IGluIGhhbmRsZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94KCkuCisgICAgICAg
ICAgSWYgV0hFRUxfRVZFTlRfTEFUQ0hJTkcgaXMgZW5hYmxlZC4gT3ZlcnNjcm9sbC1iZWhhdmlv
ciBpcyBoYW5kbGVkIGluIGZpbmRFbmNsb3NpbmdTY3JvbGxhYmxlQ29udGFpbmVyKCkuCisgICAg
ICAgICAgSXQgYWRkZWQgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIHRvIEZyYW1lU3RhdGUgdG8gaW5k
aWNhdGUgd2hldGhlciB0aGUgY3VycmVudCBsYXRjaGVkIG5vZGUgc2hvdWxkIGJsb2NrIHNjcm9s
bCBjaGFpbmluZy4KKyAgICAgICAgICBJZiB0aGUgY3VycmVudCBmcmFtZSBpcyBhIHN1YmZyYW1l
LCBpdCBwYXNzZXMgaXRzIFNjcm9sbENoYWluaW5nQmxvY2tlciB0byB0aGUgcGFyZW50ZnJhbWUs
IGFuZCBldmVudHVhbGx5CisgICAgICAgICAgbGV0IHRoZSBtYWluZnJhbWUgZGVjaWRlIHdoZXRo
ZXIgc2hvdWxkIHRyaWdnZXIgc3dpcGUgZ2VzdHVyZXMgb3Igbm90LgorICAgICAgICAzLiBUaGUg
c3dpcGUgZ2VzdHVyZXMuCisgICAgICAgICAgSWYgdGhlIG1haW5mcmFtZSByZWFjaGVzIGl0cyBz
Y3JvbGwgZWRnZXMsIHRoZXJlIHdpbGwgYmUgc3dpcGUgZ2VzdHVyZXMgZXZlbiBpZiBvdmVyc2Ny
b2xsLWJlaGF2aW9yJ3MgdmFsdWUgaXMgbm9uZS4KKyAgICAgICAgICBUaGlzIGJlaGF2aW9yIGlz
IG5vdCBzdXBvb3J0ZWQgaW4gV0sxIGFuZCBXSzIncyBzeW5jaHJvbm91cyBzY3JvbGwgd2l0aCBX
SEVFTF9FVkVOVF9MQVRDSElORyBvZmYuCisKKyAgICAgICAgWzFdIGh0dHBzOi8vZHJhZnRzLmNz
c3dnLm9yZy9jc3Mtb3ZlcnNjcm9sbC0xLyNvdmVyc2Nyb2xsLWJlaGF2aW9yLXByb3BlcnRpZXMK
KworICAgICAgICBUZXN0czogZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVt
ZW50Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZp
b3ItaWZyYW1lLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwt
YmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9z
Y3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLmh0bWwKKwor
ICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0
ZVBhcmVudEZyYW1lU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKTogQXBwbGllZCB0aGUgY3VycmVudCBm
cmFtZSdzIG92ZXJzY3JvbGwtYmVoYXZpb3IgdmFsdWUgdG8gU2Nyb2xsQ2hhaW5pbmdCbG9ja2Vy
CisgICAgICAgIGFuZCBwYXNzIHRoaXMgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIHRvIHBhcmVudCBm
cmFtZS4KKyAgICAgICAgKFdlYkNvcmU6Om92ZXJzY3JvbGxCZWhhdmlvclN0b3BzU2Nyb2xsQ2hh
aW5pbmcpOiBVcGRhdGVkIHNjcm9sbENoYWluaW5nQmxvY2tlciBhbmQgY2hlY2tlZCBpZiBpdCBz
aG91bGQgYmxvY2sgdGhlIHNjcm9sbCBjaGFpbmluZy4KKyAgICAgICAgVGhlIGNoYWluaW5nIG9m
IHZlcnRpY2FsIHNjcm9sbCB3aWxsIGJlIHN0b3BwZWQgZGlyZWN0bHkuIEZvciBob3Jpem9udGFs
IHNjcm9sbCwgaWYgbWFpbmZyYW1lIHJlYWNoZXMgdGhlIGVkZ2VzLCBpdCBkb2Vzbid0IHN0b3Ag
dHJpZ2dlcmluZworICAgICAgICBzd2lwZSBnZXN0dXJlLiBTdWJmcmFtZXMgd2lsbCBpbnN0ZWFk
IHVwZGF0ZSB0aGUgYmxvY2tlciBpbiBTY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIuIElmIHRoZSBz
Y3JvbGwgY2hhaW5pbmcgc2hvdWxkIGNvbnRpbnVlLCBmaWx0ZXIgd2hlZWxFdmVudCdzIGRlbHRh
IGluc3RlYWQuIAorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2
ZW50SW50ZXJuYWwpOiBXaGVuIFdIRUVMX0VWRU5UX0xBVENISU5HIGlzIGVuYWJsZWQsIGNoZWNr
IG92ZXJzY3JvbGxCZWhhdmlvclN0b3BzU2Nyb2xsQ2hhaW5pbmcuCisgICAgICAgIFVwZGF0ZSB0
aGUgc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIGluIFNjcm9sbExhdGNoaW5nQ29udHJvbGxlciBpZiBp
dCdzIG5vdCBtYWluZnJhbWUuIFN0b3AgdGhlIHNjcm9sbCBjaGFpbmluZyBpZiBuZWVkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpkaWRTY3JvbGxJblNjcm9sbGFibGVBcmVhKTogQWRkZWQgcGFyYW1l
dGVyIFNjcm9sbENoYWluaW5nQmxvY2tlciwgYW5kIGZpbHRlciB0aGUgZmlsdGVyZWREZWx0YSBi
eSBpdC4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudElu
QXBwcm9wcmlhdGVFbmNsb3NpbmdCb3gpOiBVcGRhdGUgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLCBh
bmQgc3RvcCB0aGUgc2Nyb2xsIGNoYWluaW5nIGlmIG5lZWRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkV2ZW50SGFuZGxlcjo6ZGVmYXVsdFdoZWVsRXZlbnRIYW5kbGVyKTogRmlsdGVyIHRoZSB3aGVl
bEV2ZW50J3MgZGVsdGEgYnkgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIHN0b3JlZCBpbiBzY3JvbGxM
YXRjaGluZ0NvbnRyb2xsZXIuCisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuaDoKKyAgICAg
ICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6Omhv
cml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IgY29uc3QpOiBPdmVyc2Nyb2xsLWJlaGF2aW9yIG9u
bHkgYWZmZWN0IHNjcm9sbGFibGUgRnJhbWVWaWV3LgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVW
aWV3Ojp2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvciBjb25zdCk6IERpdHRvLgorICAgICAgICAq
IHBhZ2UvRnJhbWVWaWV3Lmg6CisgICAgICAgICogcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1t
OgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkT3ZlcnNjcm9sbEJlaGF2aW9yQmxvY2tTY3JvbGxD
aGFpbmluZyk6IFVwZGF0ZSBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIgYW5kIGNoZWNrIGlmIHRoZSBz
Y3JvbGwgY2hhaW5pbmcgc2hvdWxkIGJlIHN0b3BwZWQuCisgICAgICAgIChXZWJDb3JlOjpmaW5k
RW5jbG9zaW5nU2Nyb2xsYWJsZUNvbnRhaW5lcik6IFN0b3AgdGhlIHNjcm9sbCBjaGFpbmluZyBp
ZiBuZWVkZWQuCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmRldGVybWluZVdoZWVs
RXZlbnRUYXJnZXQpOiBTdG9yZXMgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIGluIHNjcm9sbExhdGNo
aW5nQ29udHJvbGxlcgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29v
cmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNTY3JvbGxpbmdDb29yZGluYXRv
cjo6c2V0U2Nyb2xsaW5nTm9kZVNjcm9sbGFibGVBcmVhR2VvbWV0cnkpOiBVcGRhdGUgb3ZlcnNj
cm9sbC1iZWhhdmlvciB2YWx1ZXMgaW4gc2Nyb2xsUGFyYW1ldGVycy4KKyAgICAgICAgKiBwYWdl
L3Njcm9sbGluZy9TY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyOjp1cGRhdGVBbmRGZXRjaExhdGNoaW5nU3RhdGVG
b3JGcmFtZSk6IEFkZCBTY3JvbGxDaGFpbmluZ0Jsb2NrZXIgdG8gRnJhbWVTdGF0ZS4KKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbExhdGNoaW5nQ29udHJvbGxlcjo6Z2V0U2Nyb2xsQ2hhaW5pbmdC
bG9ja2VyIGNvbnN0KTogUmV0dXJucyBTY3JvbGxDaGFpbmluZ0Jsb2NrZXIgb2YgZnJhbWUuCisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXI6OnVwZGF0ZVNjcm9sbENo
YWluaW5nQmxvY2tlcik6IFVwZGF0ZXMgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIG9mIGZyYW1lLgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyOjpkdW1wIGNvbnN0KToK
KyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIuaDoKKyAg
ICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvclR5cGVzLmg6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnM6Om9wZXJhdG9yPT0gY29uc3Qp
OiBBZGRlZCBob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yIGFuZCB2ZXJ0aWNhbE92ZXJzY3Jv
bGxCZWhhdmlvci4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWU6OnNob3VsZEJsb2NrU2Nyb2xsQ2hhaW5p
bmdXaXRoTm9kZSk6IFVwZGF0ZSBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIgYW5kIGNoZWNrIGlmIHRo
ZSBzY3JvbGwgY2hhaW5pbmcgc2hvdWxkIGJlIHN0b3BwZWQuCisgICAgICAgIElmIG5vdCwgZmls
dGVyIHRoZSB3aGVlbEV2ZW50J3MgZGVsdGEuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdU
cmVlOjpoYW5kbGVXaGVlbEV2ZW50V2l0aE5vZGUpOiBTdG9wIHRoZSBzY3JvbGwgY2hhaW5pbmcg
aWYgbmVlZGVkLgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuaDoKKyAg
ICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6aG9yaXpvbnRhbE92
ZXJzY3JvbGxCZWhhdmlvciBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGU6OnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yIGNvbnN0KTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6dXBk
YXRlU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyU3RhdGUgY29uc3QpOgorICAgICAgICAqIHBhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmg6CisgICAgICAgICogcGFnZS9zY3Jv
bGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMuaDoKKyAgICAg
ICAgKiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVs
ZWdhdGVNYWM6OmFsbG93c0hvcml6b250YWxTdHJldGNoaW5nIGNvbnN0KTogSWYgb3ZlcnNjcm9s
bC1iZWhhdmlvci14OiBub25lLCB0aGUgc2Nyb2xsIHN0cmV0Y2ggc2hvdWxkIGJlIGJsb2NrZWQu
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFj
OjphbGxvd3NWZXJ0aWNhbFN0cmV0Y2hpbmcgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OnNob3VsZFN0b3BIb3Jp
em9udGFsU3RyZWNoIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjpzaG91bGRTdG9wVmVydGljYWxTdHJlY2ggY29u
c3QpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtV2hlZWxFdmVudDo6d2hlZWxEZWx0YUJpYXNpbmdUb3dh
cmRzVmVydGljYWwpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFR5cGVzLmg6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxDaGFpbmluZ0Jsb2NrZXI6OnNob3VsZEJsb2NrU2Nyb2xsQ2hhaW5p
bmcpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQ2hhaW5pbmdCbG9ja2VyOjpmaWx0ZXJEZWx0
YSk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYWJsZUFyZWE6OnVwZGF0ZVNjcm9sbENoYWluaW5nQmxvY2tlclN0YXRlIGNv
bnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYWJsZUFyZWE6Omhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWE6OnZlcnRpY2FsT3ZlcnNjcm9sbEJl
aGF2aW9yIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9sbGVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxDb250cm9sbGVyQ2xpZW50OjpzaG91bGRTdG9w
SG9yaXpvbnRhbFN0cmVjaCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxDb250cm9s
bGVyQ2xpZW50OjpzaG91bGRTdG9wVmVydGljYWxTdHJlY2ggY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIubW06CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxDb250cm9sbGVyOjpoYW5kbGVXaGVlbEV2ZW50KTogU3RvcCBzY3JvbGwgc3RyZWNoaW5nIGlm
IG5lZWRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbENvbnRyb2xsZXI6OmRpcmVjdGlvbkZy
b21FdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxDb250cm9sbGVyOjp3aGVlbERlbHRh
Qmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFj
L1Njcm9sbEFuaW1hdG9yTWFjLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1h
dG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JNYWM6OnNob3VsZFN0
b3BIb3Jpem9udGFsU3RyZWNoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1h
dG9yTWFjOjpzaG91bGRTdG9wVmVydGljYWxTdHJlY2ggY29uc3QpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6aG9y
aXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllcjo6dmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IgY29uc3QpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJMYXllci5oOgorCiAyMDIxLTAxLTE3ICBLaW1tbyBLaW5udW5lbiAgPGtr
aW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJl
c2hhcGVGQk9zKCkgQU5HTEUgdmFyaWFudCBjYWxscyBpbnRvIG1ha2VDb250ZXh0Q3VycmVudCgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IGNjNzcxYTU2MTZkYTRmNDBhOWNjZjE2MDZiNzc0NTBiNGNkY2ZiNGYuLjIy
MWZhOGM1ZWM2MTgwYmU2NTM2MmNmY2Q2ZjQ0YjIxYTg4MWFkNmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTcgQEAKKzIwMjEtMDEtMTUgIENhdGhpZSBDaGVuICA8Y2F0aGllY2hlbkBpZ2FsaWEuY29t
PgorCisgICAgICAgIEltcGxlbWVudCBDU1Mgb3ZlcnNjcm9sbC1iZWhhdmlvciBvbiBNYWMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDEzOQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJhc2VkIG9uIEZy
w6lkw6lyaWMgV2FuZydzIHBhdGNoLgorCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8U2Nyb2xsYWJsZUFyZWFQ
YXJhbWV0ZXJzPjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxTY3JvbGxh
YmxlQXJlYVBhcmFtZXRlcnM+OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuaDoKKwogMjAyMS0wMS0xNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBw
bGUuY29tPgogCiAgICAgICAgIEpJVE9wZXJhdGlvbiBkb2VzIG5vdCBleGlzdCBpbiBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBlYzQ2NTE4NmFiZmEzZjc0M2FlMmNlN2Iz
ZDM2ZmI0MWE2NzkwN2M1Li41MTUxNGE2ZGU4OWY5YzUxMWU4ZDJiYzJhZTg3ZDQ1MWQ2ZDUyOTFh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEtMDEt
MTUgIENhdGhpZSBDaGVuICA8Y2F0aGllY2hlbkBpZ2FsaWEuY29tPgorCisgICAgICAgIEltcGxl
bWVudCBDU1Mgb3ZlcnNjcm9sbC1iZWhhdmlvciBvbiBNYWMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDEzOQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJhc2VkIG9uIEZyw6lkw6lyaWMgV2FuZydzIHBh
dGNoLgorCisgICAgICAgIE5lZWQgdG8gZmluZCBhIHdheSB0byBibG9jayB0aGUgY3Jvc3MtZnJh
bWUgc2Nyb2xsIGNoYWluaW5nIGluIFdLMS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZp
ZXcubW06CisgICAgICAgICgtW1dlYkhUTUxWaWV3IHNjcm9sbFdoZWVsOl0pOgorCiAyMDIxLTAx
LTE0ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3Zl
ZCBtb3N0IHVzZXMgb2YgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwg
Li4uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IGQ2OWYyOTcwNDUzMWU3
ODcyNTg4ZDRhNWZmOGQzYTU0YmUzNmVhZTEuLmVmMDc5YjUyODk2YmZlYzUzYjM0N2IxNDhmYWE5
MjZlNmZjNmFmNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTI4MzIs
NiArMjgzMiw1NiBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQ
bGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIE9wdGlvbgogICAgIHJldHVybiBoYW5kbGVk
OwogfQogCisjaWYgRU5BQkxFKFdIRUVMX0VWRU5UX0xBVENISU5HKQorc3RhdGljIHZvaWQgdXBk
YXRlUGFyZW50RnJhbWVTY3JvbGxDaGFpbmluZ0Jsb2NrZXIoY29uc3QgU2Nyb2xsYWJsZUFyZWEq
IHNjcm9sbGFibGVBcmVhLCBGcmFtZSYgZnJhbWUsIFNjcm9sbENoYWluaW5nQmxvY2tlciYgYmxv
Y2tlcikKK3sKKyAgICBhdXRvKiBwYXJlbnQgPSBmcmFtZS50cmVlKCkucGFyZW50KCk7CisgICAg
aWYgKCFzY3JvbGxhYmxlQXJlYSkKKyAgICAgICAgc2Nyb2xsYWJsZUFyZWEgPSBmcmFtZS52aWV3
KCk7CisgICAgaWYgKCFmcmFtZS5wYWdlKCkgfHwgIXBhcmVudCB8fCAhc2Nyb2xsYWJsZUFyZWEp
CisgICAgICAgIHJldHVybjsKKyAgICBzY3JvbGxhYmxlQXJlYS0+dXBkYXRlU2Nyb2xsQ2hhaW5p
bmdCbG9ja2VyU3RhdGUoYmxvY2tlcik7CisgICAgZnJhbWUucGFnZSgpLT5zY3JvbGxMYXRjaGlu
Z0NvbnRyb2xsZXIoKS51cGRhdGVTY3JvbGxDaGFpbmluZ0Jsb2NrZXIoKnBhcmVudCwgYmxvY2tl
cik7Cit9CisKK3N0YXRpYyBib29sIG92ZXJzY3JvbGxCZWhhdmlvclN0b3BzU2Nyb2xsQ2hhaW5p
bmcoY29uc3QgU2Nyb2xsYWJsZUFyZWEqIHNjcm9sbGFibGVBcmVhLCBGcmFtZSYgZnJhbWUsIFBs
YXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIHNjcm9s
bENoYWluaW5nQmxvY2tlciwgYm9vbCYgaGFuZGxlZEV2ZW50KQoreworICAgIGlmICghc2Nyb2xs
YWJsZUFyZWEpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChzY3JvbGxhYmxlQXJl
YSAhPSBmcmFtZS52aWV3KCkpIHsKKyAgICAgICAgLy8gV2hlZWwgZXZlbnQgaXMgZ29pbmcgdG8g
YmUgaGFuZGxlZCBieSBGcmFtZVZpZXcgaW4gcHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxpbmco
KSwKKyAgICAgICAgLy8gc2hvdWxkIGxldCBzY3JvbGxhYmxlQXJlYSdzIG92ZXJzY3JvbGwtYmVo
YXZpb3IgZWZmZWN0IFNjcm9sbENoYWluaW5nQmxvY2tlci4KKyAgICAgICAgc2Nyb2xsYWJsZUFy
ZWEtPnVwZGF0ZVNjcm9sbENoYWluaW5nQmxvY2tlclN0YXRlKHNjcm9sbENoYWluaW5nQmxvY2tl
cik7CisgICAgfQorCisgICAgRmxvYXRTaXplIGZpbHRlcmVkRGVsdGEod2hlZWxFdmVudC5kZWx0
YVgoKSwgd2hlZWxFdmVudC5kZWx0YVkoKSk7CisgICAgYXV0byBiaWFzZWREZWx0YSA9IFBsYXRm
b3JtV2hlZWxFdmVudDo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoZmlsdGVyZWRE
ZWx0YSk7CisgICAgaWYgKHNjcm9sbENoYWluaW5nQmxvY2tlci5ibG9ja1ggJiYgIWJpYXNlZERl
bHRhLmhlaWdodCgpKSB7CisgICAgICAgIC8vIElmIHRoZSBob3Jpem9udGFsIHNjcm9sbCBjaGFp
bmluZyBpcyBibG9ja2VkIGJ5IG92ZXJzY3JvbGwtYmVoYXZpb3IgaW4gYSBzdWJmcmFtZS4KKyAg
ICAgICAgLy8gSXQgcHJvcGFnYXRlcyBpdHMgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIHRvIHBhcmVu
dCBmcmFtZXMgYW5kIGV2ZW50dWFsbHkgbGV0IG1haW5mcmFtZQorICAgICAgICAvLyBkZWNpZGUg
d2hldGhlciBuZWVkIHRvIHRyaWdnZXIgYSBzd2lwZSBnZXN0dXJlIG9yIG5vdC4KKyAgICAgICAg
aWYgKGZyYW1lLmlzTWFpbkZyYW1lKCkpIHsKKyAgICAgICAgICAgIC8vIEluIG1haW4gZnJhbWUs
IGlmIHRoZSBzY3JvbGwgcG9zaXRpb24gcmVhY2hlcyB0byBpdHMgZWRnZXMsIHRyaWdnZXIgdGhl
IHN3aXBlIGdlc3R1cmUsIG90aGVyd2lzZSBub3QuCisgICAgICAgICAgICBoYW5kbGVkRXZlbnQg
PSAhKGJpYXNlZERlbHRhLndpZHRoKCkgJiYgc2Nyb2xsYWJsZUFyZWEtPmlzUGlubmVkRm9yU2Ny
b2xsRGVsdGFPbkF4aXMoLWJpYXNlZERlbHRhLndpZHRoKCksIFNjcm9sbEV2ZW50QXhpczo6SG9y
aXpvbnRhbCkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdXBkYXRlUGFyZW50RnJh
bWVTY3JvbGxDaGFpbmluZ0Jsb2NrZXIoc2Nyb2xsYWJsZUFyZWEsIGZyYW1lLCBzY3JvbGxDaGFp
bmluZ0Jsb2NrZXIpOworICAgICAgICAgICAgaGFuZGxlZEV2ZW50ID0gZmFsc2U7CisgICAgICAg
IH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgaWYgKFNjcm9sbENoYWluaW5n
QmxvY2tlcjo6c2hvdWxkQmxvY2tTY3JvbGxDaGFpbmluZyhzY3JvbGxDaGFpbmluZ0Jsb2NrZXIs
IGJpYXNlZERlbHRhKSkgeworICAgICAgICBoYW5kbGVkRXZlbnQgPSB0cnVlOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBTY3JvbGxDaGFpbmluZ0Jsb2NrZXI6OmZpbHRlckRl
bHRhKHNjcm9sbENoYWluaW5nQmxvY2tlciwgYmlhc2VkRGVsdGEsIGZpbHRlcmVkRGVsdGEpOwor
ICAgIHdoZWVsRXZlbnQgPSB3aGVlbEV2ZW50LmNvcHlXaXRoRGVsdGFzQW5kVmVsb2NpdHkoZmls
dGVyZWREZWx0YS53aWR0aCgpLCBmaWx0ZXJlZERlbHRhLmhlaWdodCgpLCB3aGVlbEV2ZW50LnNj
cm9sbGluZ1ZlbG9jaXR5KCkpOworICAgIHJldHVybiBmYWxzZTsKK30KKyNlbmRpZgorCiBib29s
IEV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudEludGVybmFsKGNvbnN0IFBsYXRmb3JtV2hl
ZWxFdmVudCYgZXZlbnQsIE9wdGlvblNldDxXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBzPiBwcm9j
ZXNzaW5nU3RlcHMsIE9wdGlvblNldDxFdmVudEhhbmRsaW5nPiYgaGFuZGxpbmcpCiB7CiAgICAg
YXV0byogZG9jdW1lbnQgPSBtX2ZyYW1lLmRvY3VtZW50KCk7CkBAIC0yOTI0LDEyICsyOTc0LDMx
IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50SW50ZXJuYWwoY29uc3QgUGxh
dGZvcm1XaGVlbEV2ZW50JiBldmVudCwgT3B0CiAjaWYgRU5BQkxFKFdIRUVMX0VWRU5UX0xBVENI
SU5HKQogICAgIGlmIChhbGxvd1Njcm9sbGluZykKICAgICAgICAgYWxsb3dTY3JvbGxpbmcgPSBt
X2ZyYW1lLnBhZ2UoKS0+c2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyKCkubGF0Y2hpbmdBbGxvd3NT
Y3JvbGxpbmdJbkZyYW1lKG1fZnJhbWUsIHNjcm9sbGFibGVBcmVhKTsKKyAgICBTY3JvbGxDaGFp
bmluZ0Jsb2NrZXIgYmxvY2tlckZyb21MYXRjaGluZ0NvbnRyb2xsZXIgPSBtX2ZyYW1lLnBhZ2Uo
KS0+c2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyKCkuZ2V0U2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKG1f
ZnJhbWUpOworICAgIGlmICghKGFsbG93U2Nyb2xsaW5nIHx8IG1fZnJhbWUuaXNNYWluRnJhbWUo
KSkpCisgICAgICAgIHVwZGF0ZVBhcmVudEZyYW1lU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKHNjcm9s
bGFibGVBcmVhLmdldCgpLCBtX2ZyYW1lLCBibG9ja2VyRnJvbUxhdGNoaW5nQ29udHJvbGxlcik7
CiAjZW5kaWYKIAogICAgIGlmIChhbGxvd1Njcm9sbGluZykgewotICAgICAgICAvLyBGSVhNRTog
cHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxpbmcoKSBpcyBvbmx5IGNhbGxlZCBmb3IgRnJhbWVW
aWV3IHNjcm9sbGluZywgbm90IG92ZXJmbG93IHNjcm9sbGluZywgd2hpY2ggaXMgY29uZnVzaW5n
LgotICAgICAgICBoYW5kbGVkRXZlbnQgPSBwcm9jZXNzV2hlZWxFdmVudEZvclNjcm9sbGluZyhl
dmVudCwgc2Nyb2xsYWJsZUFyZWEsIGhhbmRsaW5nKTsKLSAgICAgICAgcHJvY2Vzc1doZWVsRXZl
bnRGb3JTY3JvbGxTbmFwKGV2ZW50LCBzY3JvbGxhYmxlQXJlYSk7CisgICAgICAgIFBsYXRmb3Jt
V2hlZWxFdmVudCBhZGp1c3RlZFdoZWVsRXZlbnQgPSBQbGF0Zm9ybVdoZWVsRXZlbnQoZXZlbnQp
OworICAgICAgICBib29sIHNjcm9sbENoYWluaW5nU3RvcHBlZCA9IGZhbHNlOworI2lmIEVOQUJM
RShXSEVFTF9FVkVOVF9MQVRDSElORykKKyAgICAgICAgc2Nyb2xsQ2hhaW5pbmdTdG9wcGVkID0g
b3ZlcnNjcm9sbEJlaGF2aW9yU3RvcHNTY3JvbGxDaGFpbmluZyhzY3JvbGxhYmxlQXJlYS5nZXQo
KSwgbV9mcmFtZSwgYWRqdXN0ZWRXaGVlbEV2ZW50LCBibG9ja2VyRnJvbUxhdGNoaW5nQ29udHJv
bGxlciwgaGFuZGxlZEV2ZW50KTsKKyNlbmRpZgorICAgICAgICBpZiAoIXNjcm9sbENoYWluaW5n
U3RvcHBlZCkgeworICAgICAgICAgICAgLy8gRklYTUU6IHByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Ny
b2xsaW5nKCkgaXMgb25seSBjYWxsZWQgZm9yIEZyYW1lVmlldyBzY3JvbGxpbmcsIG5vdCBvdmVy
ZmxvdyBzY3JvbGxpbmcsIHdoaWNoIGlzIGNvbmZ1c2luZy4KKyAgICAgICAgICAgIGhhbmRsZWRF
dmVudCA9IHByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKGFkanVzdGVkV2hlZWxFdmVudCwg
c2Nyb2xsYWJsZUFyZWEsIGhhbmRsaW5nKTsKKyAgICAgICAgICAgIHByb2Nlc3NXaGVlbEV2ZW50
Rm9yU2Nyb2xsU25hcChhZGp1c3RlZFdoZWVsRXZlbnQsIHNjcm9sbGFibGVBcmVhKTsKKyAgICAg
ICAgfQorI2lmICFFTkFCTEUoV0hFRUxfRVZFTlRfTEFUQ0hJTkcpCisgICAgICAgIGlmIChhdXRv
KiB2aWV3ID0gbV9mcmFtZS52aWV3KCkpIHsKKyAgICAgICAgICAgIFNjcm9sbENoYWluaW5nQmxv
Y2tlciBibG9ja2VyID0geyB2aWV3LT5ob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgIT0g
T3ZlcnNjcm9sbEJlaGF2aW9yOjpBdXRvLCB2aWV3LT52ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlv
cigpICE9IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0byB9OworICAgICAgICAgICAgaWYgKCFoYW5k
bGVkRXZlbnQpIHsKKyAgICAgICAgICAgICAgICBhdXRvIGJpYXNlZERlbHRhID0gUGxhdGZvcm1X
aGVlbEV2ZW50Ojp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbChhZGp1c3RlZFdoZWVs
RXZlbnQuZGVsdGEoKSk7CisgICAgICAgICAgICAgICAgaGFuZGxlZEV2ZW50ID0gU2Nyb2xsQ2hh
aW5pbmdCbG9ja2VyOjpzaG91bGRCbG9ja1Njcm9sbENoYWluaW5nKGJsb2NrZXIsIGJpYXNlZERl
bHRhKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorI2VuZGlmCiAgICAgfQogCiAgICAgcmV0
dXJuIGhhbmRsZWRFdmVudDsKQEAgLTI5NDYsMjAgKzMwMTUsMjMgQEAgc3RhdGljIHZvaWQgaGFu
ZGxlV2hlZWxFdmVudFBoYXNlSW5TY3JvbGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSYgc2Nyb2xs
YWJsZUFyZWEKICNlbmRpZgogfQogCi1zdGF0aWMgYm9vbCBkaWRTY3JvbGxJblNjcm9sbGFibGVB
cmVhKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSwgY29uc3QgV2hlZWxFdmVudCYgd2hl
ZWxFdmVudCkKK3N0YXRpYyBib29sIGRpZFNjcm9sbEluU2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJs
ZUFyZWEmIHNjcm9sbGFibGVBcmVhLCBjb25zdCBXaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBjb25z
dCBTY3JvbGxDaGFpbmluZ0Jsb2NrZXImIGJsb2NrZXIpCiB7CisgICAgRmxvYXRTaXplIGZpbHRl
cmVkRGVsdGEod2hlZWxFdmVudC5kZWx0YVgoKSwgd2hlZWxFdmVudC5kZWx0YVkoKSk7CisgICAg
YXV0byBiaWFzZWREZWx0YSA9IFBsYXRmb3JtV2hlZWxFdmVudDo6d2hlZWxEZWx0YUJpYXNpbmdU
b3dhcmRzVmVydGljYWwoZmlsdGVyZWREZWx0YSk7CisgICAgU2Nyb2xsQ2hhaW5pbmdCbG9ja2Vy
OjpmaWx0ZXJEZWx0YShibG9ja2VyLCBiaWFzZWREZWx0YSwgZmlsdGVyZWREZWx0YSk7CiAgICAg
U2Nyb2xsR3JhbnVsYXJpdHkgc2Nyb2xsR3JhbnVsYXJpdHkgPSB3aGVlbEdyYW51bGFyaXR5VG9T
Y3JvbGxHcmFudWxhcml0eSh3aGVlbEV2ZW50LmRlbHRhTW9kZSgpKTsKICAgICBib29sIGRpZEhh
bmRsZVdoZWVsRXZlbnQgPSBmYWxzZTsKLSAgICBpZiAoZmxvYXQgYWJzb2x1dGVEZWx0YSA9IHN0
ZDo6YWJzKHdoZWVsRXZlbnQuZGVsdGFYKCkpKQotICAgICAgICBkaWRIYW5kbGVXaGVlbEV2ZW50
IHw9IHNjcm9sbGFibGVBcmVhLnNjcm9sbCh3aGVlbEV2ZW50LmRlbHRhWCgpID4gMCA/IFNjcm9s
bFJpZ2h0IDogU2Nyb2xsTGVmdCwgc2Nyb2xsR3JhbnVsYXJpdHksIGFic29sdXRlRGVsdGEpOwor
ICAgIGlmIChmbG9hdCBhYnNvbHV0ZURlbHRhID0gc3RkOjphYnMoZmlsdGVyZWREZWx0YS53aWR0
aCgpKSkKKyAgICAgICAgZGlkSGFuZGxlV2hlZWxFdmVudCB8PSBzY3JvbGxhYmxlQXJlYS5zY3Jv
bGwoZmlsdGVyZWREZWx0YS53aWR0aCgpID4gMCA/IFNjcm9sbFJpZ2h0IDogU2Nyb2xsTGVmdCwg
c2Nyb2xsR3JhbnVsYXJpdHksIGFic29sdXRlRGVsdGEpOwogCi0gICAgaWYgKGZsb2F0IGFic29s
dXRlRGVsdGEgPSBzdGQ6OmFicyh3aGVlbEV2ZW50LmRlbHRhWSgpKSkKLSAgICAgICAgZGlkSGFu
ZGxlV2hlZWxFdmVudCB8PSBzY3JvbGxhYmxlQXJlYS5zY3JvbGwod2hlZWxFdmVudC5kZWx0YVko
KSA+IDAgPyBTY3JvbGxEb3duIDogU2Nyb2xsVXAsIHNjcm9sbEdyYW51bGFyaXR5LCBhYnNvbHV0
ZURlbHRhKTsKKyAgICBpZiAoZmxvYXQgYWJzb2x1dGVEZWx0YSA9IHN0ZDo6YWJzKGZpbHRlcmVk
RGVsdGEuaGVpZ2h0KCkpKQorICAgICAgICBkaWRIYW5kbGVXaGVlbEV2ZW50IHw9IHNjcm9sbGFi
bGVBcmVhLnNjcm9sbChmaWx0ZXJlZERlbHRhLmhlaWdodCgpID4gMCA/IFNjcm9sbERvd24gOiBT
Y3JvbGxVcCwgc2Nyb2xsR3JhbnVsYXJpdHksIGFic29sdXRlRGVsdGEpOwogCiAgICAgcmV0dXJu
IGRpZEhhbmRsZVdoZWVsRXZlbnQ7CiB9CiAKLWJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVl
bEV2ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2luZ0JveChOb2RlKiBzdGFydE5vZGUsIGNvbnN0IFdo
ZWVsRXZlbnQmIHdoZWVsRXZlbnQsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyZWRQbGF0Zm9ybURl
bHRhLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlcmVkVmVsb2NpdHksIE9wdGlvblNldDxFdmVudEhh
bmRsaW5nPiBldmVudEhhbmRsaW5nKQorYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZl
bnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94KE5vZGUqIHN0YXJ0Tm9kZSwgY29uc3QgV2hlZWxF
dmVudCYgd2hlZWxFdmVudCwgRmxvYXRTaXplJiBmaWx0ZXJlZFBsYXRmb3JtRGVsdGEsIGNvbnN0
IEZsb2F0U2l6ZSYgZmlsdGVyZWRWZWxvY2l0eSwgT3B0aW9uU2V0PEV2ZW50SGFuZGxpbmc+IGV2
ZW50SGFuZGxpbmcpCiB7CiAgICAgYm9vbCBzaG91bGRIYW5kbGVFdmVudCA9IHdoZWVsRXZlbnQu
ZGVsdGFYKCkgfHwgd2hlZWxFdmVudC5kZWx0YVkoKTsKICNpZiBFTkFCTEUoV0hFRUxfRVZFTlRf
TEFUQ0hJTkcpCkBAIC0yOTgwLDIyICszMDUyLDMxIEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5k
bGVXaGVlbEV2ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2luZ0JveChOb2RlKiBzdGFydE5vZGUsIGNv
CiAgICAgaWYgKCFzaG91bGRIYW5kbGVFdmVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisg
ICAgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIGJsb2NrZXIgPSB7IGZhbHNlLCBmYWxzZSB9OwogICAg
IGlmIChpczxSZW5kZXJMaXN0Qm94Pihpbml0aWFsRW5jbG9zaW5nQm94KSkKLSAgICAgICAgcmV0
dXJuIGRpZFNjcm9sbEluU2Nyb2xsYWJsZUFyZWEoZG93bmNhc3Q8UmVuZGVyTGlzdEJveD4oaW5p
dGlhbEVuY2xvc2luZ0JveCksIHdoZWVsRXZlbnQpOworICAgICAgICByZXR1cm4gZGlkU2Nyb2xs
SW5TY3JvbGxhYmxlQXJlYShkb3duY2FzdDxSZW5kZXJMaXN0Qm94Pihpbml0aWFsRW5jbG9zaW5n
Qm94KSwgd2hlZWxFdmVudCwgYmxvY2tlcik7CiAKKyAgICBhdXRvIGJpYXNlZERlbHRhID0gUGxh
dGZvcm1XaGVlbEV2ZW50Ojp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbChGbG9hdFNp
emUod2hlZWxFdmVudC5kZWx0YVgoKSwgd2hlZWxFdmVudC5kZWx0YVkoKSkpOwogICAgIFJlbmRl
ckJveCogY3VycmVudEVuY2xvc2luZ0JveCA9ICZpbml0aWFsRW5jbG9zaW5nQm94OwogICAgIHdo
aWxlIChjdXJyZW50RW5jbG9zaW5nQm94KSB7CiAgICAgICAgIGlmIChhdXRvKiBib3hMYXllciA9
IGN1cnJlbnRFbmNsb3NpbmdCb3gtPmxheWVyKCkgPyBjdXJyZW50RW5jbG9zaW5nQm94LT5sYXll
cigpLT5zY3JvbGxhYmxlQXJlYSgpIDogbnVsbHB0cikgewogICAgICAgICAgICAgYXV0byBwbGF0
Zm9ybUV2ZW50ID0gd2hlZWxFdmVudC51bmRlcmx5aW5nUGxhdGZvcm1FdmVudCgpOwogICAgICAg
ICAgICAgYm9vbCBzY3JvbGxpbmdXYXNIYW5kbGVkOwogICAgICAgICAgICAgaWYgKHBsYXRmb3Jt
RXZlbnQpIHsKKyAgICAgICAgICAgICAgICBTY3JvbGxDaGFpbmluZ0Jsb2NrZXI6OmZpbHRlckRl
bHRhKGJsb2NrZXIsIGJpYXNlZERlbHRhLCBmaWx0ZXJlZFBsYXRmb3JtRGVsdGEpOwogICAgICAg
ICAgICAgICAgIGF1dG8gY29waWVkRXZlbnQgPSBwbGF0Zm9ybUV2ZW50LT5jb3B5V2l0aERlbHRh
c0FuZFZlbG9jaXR5KGZpbHRlcmVkUGxhdGZvcm1EZWx0YS53aWR0aCgpLCBmaWx0ZXJlZFBsYXRm
b3JtRGVsdGEuaGVpZ2h0KCksIGZpbHRlcmVkVmVsb2NpdHkpOwogICAgICAgICAgICAgICAgIHNj
cm9sbGluZ1dhc0hhbmRsZWQgPSBoYW5kbGVXaGVlbEV2ZW50SW5TY3JvbGxhYmxlQXJlYShjb3Bp
ZWRFdmVudCwgKmJveExheWVyLCBldmVudEhhbmRsaW5nKTsKICAgICAgICAgICAgIH0gZWxzZQot
ICAgICAgICAgICAgICAgIHNjcm9sbGluZ1dhc0hhbmRsZWQgPSBkaWRTY3JvbGxJblNjcm9sbGFi
bGVBcmVhKCpib3hMYXllciwgd2hlZWxFdmVudCk7CisgICAgICAgICAgICAgICAgc2Nyb2xsaW5n
V2FzSGFuZGxlZCA9IGRpZFNjcm9sbEluU2Nyb2xsYWJsZUFyZWEoKmJveExheWVyLCB3aGVlbEV2
ZW50LCBibG9ja2VyKTsKIAogICAgICAgICAgICAgaWYgKHNjcm9sbGluZ1dhc0hhbmRsZWQpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgICAgIGlmIChjdXJyZW50RW5j
bG9zaW5nQm94LT5lbGVtZW50KCkgIT0gY3VycmVudEVuY2xvc2luZ0JveC0+ZG9jdW1lbnQoKS5k
b2N1bWVudEVsZW1lbnQoKSkgeworICAgICAgICAgICAgICAgIGJveExheWVyLT51cGRhdGVTY3Jv
bGxDaGFpbmluZ0Jsb2NrZXJTdGF0ZShibG9ja2VyKTsKKyAgICAgICAgICAgICAgICBpZiAoU2Ny
b2xsQ2hhaW5pbmdCbG9ja2VyOjpzaG91bGRCbG9ja1Njcm9sbENoYWluaW5nKGJsb2NrZXIsIGJp
YXNlZERlbHRhKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAg
ICB9CiAgICAgICAgIH0KIAogICAgICAgICBjdXJyZW50RW5jbG9zaW5nQm94ID0gY3VycmVudEVu
Y2xvc2luZ0JveC0+Y29udGFpbmluZ0Jsb2NrKCk7CkBAIC0zMDc1LDYgKzMxNTYsNyBAQCB2b2lk
IEV2ZW50SGFuZGxlcjo6ZGVmYXVsdFdoZWVsRXZlbnRIYW5kbGVyKE5vZGUqIHN0YXJ0Tm9kZSwg
V2hlZWxFdmVudCYgd2hlZWxFdgogICAgIGlmICghbV9mcmFtZS5wYWdlKCktPnNjcm9sbExhdGNo
aW5nQ29udHJvbGxlcigpLmxhdGNoaW5nQWxsb3dzU2Nyb2xsaW5nSW5GcmFtZShtX2ZyYW1lLCBs
YXRjaGVkU2Nyb2xsZXIpKQogICAgICAgICByZXR1cm47CiAKKyAgICBTY3JvbGxDaGFpbmluZ0Js
b2NrZXIgc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyID0gbV9mcmFtZS5wYWdlKCktPnNjcm9sbExhdGNo
aW5nQ29udHJvbGxlcigpLmdldFNjcm9sbENoYWluaW5nQmxvY2tlcihtX2ZyYW1lKTsKICAgICBp
ZiAobGF0Y2hlZFNjcm9sbGVyKSB7CiAgICAgICAgIGlmIChsYXRjaGVkU2Nyb2xsZXIgPT0gbV9m
cmFtZS52aWV3KCkpIHsKICAgICAgICAgICAgIC8vIEZyYW1lVmlldyBzY3JvbGxpbmcgaXMgaGFu
ZGxlZCB2aWEgcHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxpbmcoKS4KQEAgLTMwODMsNiArMzE2
NSw4IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpkZWZhdWx0V2hlZWxFdmVudEhhbmRsZXIoTm9kZSog
c3RhcnROb2RlLCBXaGVlbEV2ZW50JiB3aGVlbEV2CiAKICAgICAgICAgYXV0byBwbGF0Zm9ybUV2
ZW50ID0gd2hlZWxFdmVudC51bmRlcmx5aW5nUGxhdGZvcm1FdmVudCgpOwogICAgICAgICBpZiAo
cGxhdGZvcm1FdmVudCkgeworICAgICAgICAgICAgYXV0byBiaWFzZWREZWx0YSA9IFBsYXRmb3Jt
V2hlZWxFdmVudDo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoZmlsdGVyZWRQbGF0
Zm9ybURlbHRhKTsKKyAgICAgICAgICAgIFNjcm9sbENoYWluaW5nQmxvY2tlcjo6ZmlsdGVyRGVs
dGEoc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLCBiaWFzZWREZWx0YSwgZmlsdGVyZWRQbGF0Zm9ybURl
bHRhKTsKICAgICAgICAgICAgIGF1dG8gY29waWVkRXZlbnQgPSBwbGF0Zm9ybUV2ZW50LT5jb3B5
V2l0aERlbHRhc0FuZFZlbG9jaXR5KGZpbHRlcmVkUGxhdGZvcm1EZWx0YS53aWR0aCgpLCBmaWx0
ZXJlZFBsYXRmb3JtRGVsdGEuaGVpZ2h0KCksIGZpbHRlcmVkVmVsb2NpdHkpOwogICAgICAgICAg
ICAgaWYgKGhhbmRsZVdoZWVsRXZlbnRJblNjcm9sbGFibGVBcmVhKGNvcGllZEV2ZW50LCAqbGF0
Y2hlZFNjcm9sbGVyLCBldmVudEhhbmRsaW5nKSkKICAgICAgICAgICAgICAgICB3aGVlbEV2ZW50
LnNldERlZmF1bHRIYW5kbGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50SGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAppbmRleCAx
YjE3NWRhNzkzYzZjNTEyZDEwNDk5ZmU5MWYwZjU4YzE5YTc3OWVhLi5kYzJmZmI2ZDY4ZWVjZjZm
ZWY5NmMzMGZkNzNlYzhhMDU3MzVmMWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgK
QEAgLTQ2OCw3ICs0NjgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcHJvY2Vzc1doZWVsRXZlbnRG
b3JTY3JvbGxTbmFwKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIGNvbnN0IFdlYWtQdHI8U2Ny
b2xsYWJsZUFyZWE+Jik7CiAgICAgYm9vbCBjb21wbGV0ZVdpZGdldFdoZWVsRXZlbnQoY29uc3Qg
UGxhdGZvcm1XaGVlbEV2ZW50JiwgY29uc3QgV2Vha1B0cjxXaWRnZXQ+JiwgY29uc3QgV2Vha1B0
cjxTY3JvbGxhYmxlQXJlYT4mKTsKIAotICAgIGJvb2wgaGFuZGxlV2hlZWxFdmVudEluQXBwcm9w
cmlhdGVFbmNsb3NpbmdCb3goTm9kZSogc3RhcnROb2RlLCBjb25zdCBXaGVlbEV2ZW50JiwgY29u
c3QgRmxvYXRTaXplJiBmaWx0ZXJlZFBsYXRmb3JtRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgZmls
dGVyZWRWZWxvY2l0eSwgT3B0aW9uU2V0PEV2ZW50SGFuZGxpbmc+KTsKKyAgICBib29sIGhhbmRs
ZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94KE5vZGUqIHN0YXJ0Tm9kZSwgY29u
c3QgV2hlZWxFdmVudCYsIEZsb2F0U2l6ZSYgZmlsdGVyZWRQbGF0Zm9ybURlbHRhLCBjb25zdCBG
bG9hdFNpemUmIGZpbHRlcmVkVmVsb2NpdHksIE9wdGlvblNldDxFdmVudEhhbmRsaW5nPik7CiAK
ICAgICBib29sIGhhbmRsZVdoZWVsRXZlbnRJblNjcm9sbGFibGVBcmVhKGNvbnN0IFBsYXRmb3Jt
V2hlZWxFdmVudCYsIFNjcm9sbGFibGVBcmVhJiwgT3B0aW9uU2V0PEV2ZW50SGFuZGxpbmc+KTsK
ICAgICBPcHRpb25hbDxXaGVlbFNjcm9sbEdlc3R1cmVTdGF0ZT4gdXBkYXRlV2hlZWxHZXN0dXJl
U3RhdGUoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgT3B0aW9uU2V0PEV2ZW50SGFuZGxpbmc+
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCBmYzJiMzU3ODYzMzkxNmYzNDMyZTkz
NTJjMWVjY2IxNzcwNDQ2NWNhLi5mNzUwZDcwNDA0YTI3OGI2ZTk2NzAyNGM4YjBhYjYyMTExM2Nk
YWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC00MTksNiArNDE5LDI2IEBAIGJv
b2wgRnJhbWVWaWV3OjpkaWRGaXJzdExheW91dCgpIGNvbnN0CiAgICAgcmV0dXJuIGxheW91dENv
bnRleHQoKS5kaWRGaXJzdExheW91dCgpOwogfQogCitPdmVyc2Nyb2xsQmVoYXZpb3IgRnJhbWVW
aWV3Ojpob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29uc3QKK3sKKyAgICBhdXRvKiBk
b2N1bWVudCA9IGZyYW1lKCkuZG9jdW1lbnQoKTsKKyAgICBhdXRvIHNjcm9sbGluZ09iamVjdCA9
IGRvY3VtZW50ICYmIGRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKSA/IGRvY3VtZW50LT5kb2N1
bWVudEVsZW1lbnQoKS0+cmVuZGVyZXIoKSA6IG51bGxwdHI7CisgICAgLy8gQW4gZWxlbWVudCB0
aGF0IGlzIG5vdCBzY3JvbGwgY29udGFpbmVyIG11c3QgYWNjZXB0IGJ1dCBpZ25vcmUgdGhlIHZh
bHVlcyBvZiB0aGlzIHByb3BlcnR5LgorICAgIGlmIChzY3JvbGxpbmdPYmplY3QgJiYgcmVuZGVy
VmlldygpICYmIHJlbmRlclZpZXcoKS0+Y2FuQmVTY3JvbGxlZEFuZEhhc1Njcm9sbGFibGVBcmVh
KCkpCisgICAgICAgIHJldHVybiBzY3JvbGxpbmdPYmplY3QtPnN0eWxlKCkub3ZlcnNjcm9sbEJl
aGF2aW9yWCgpOworICAgIHJldHVybiBTY3JvbGxhYmxlQXJlYTo6aG9yaXpvbnRhbE92ZXJzY3Jv
bGxCZWhhdmlvcigpOworfQorCitPdmVyc2Nyb2xsQmVoYXZpb3IgRnJhbWVWaWV3Ojp2ZXJ0aWNh
bE92ZXJzY3JvbGxCZWhhdmlvcigpICBjb25zdAoreworICAgIGF1dG8qIGRvY3VtZW50ID0gZnJh
bWUoKS5kb2N1bWVudCgpOworICAgIGF1dG8gc2Nyb2xsaW5nT2JqZWN0ID0gZG9jdW1lbnQgJiYg
ZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpID8gZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgp
LT5yZW5kZXJlcigpIDogbnVsbHB0cjsKKyAgICAvLyBBbiBlbGVtZW50IHRoYXQgaXMgbm90IHNj
cm9sbCBjb250YWluZXIgbXVzdCBhY2NlcHQgYnV0IGlnbm9yZSB0aGUgdmFsdWVzIG9mIHRoaXMg
cHJvcGVydHkuCisgICAgaWYgKHNjcm9sbGluZ09iamVjdCAmJiByZW5kZXJWaWV3KCkgJiYgcmVu
ZGVyVmlldygpLT5jYW5CZVNjcm9sbGVkQW5kSGFzU2Nyb2xsYWJsZUFyZWEoKSkKKyAgICAgICAg
cmV0dXJuIHNjcm9sbGluZ09iamVjdC0+c3R5bGUoKS5vdmVyc2Nyb2xsQmVoYXZpb3JZKCk7Cisg
ICAgcmV0dXJuIFNjcm9sbGFibGVBcmVhOjp2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpOwor
fQorCiB2b2lkIEZyYW1lVmlldzo6aW52YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkK
IHsKICAgICBpZiAoIXBhcmVudCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCBiZGZl
Mjc4NDlmMjk2MWM2ZGRlNWU5ZmY4ZGRiNTEwMjE1ZjMxNzI3Li40NjA1NjA3ZGUxOGZmY2NkMmIz
MzU2NTg2YjEwZTA2ZTAwMjVlYTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTY4MCw2
ICs2ODAsOSBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgZGVidWdEZXNjcmlwdGlvbigpIGNvbnN0
IGZpbmFsOwogCisgICAgT3ZlcnNjcm9sbEJlaGF2aW9yIGhvcml6b250YWxPdmVyc2Nyb2xsQmVo
YXZpb3IoKSBjb25zdCBmaW5hbDsKKyAgICBPdmVyc2Nyb2xsQmVoYXZpb3IgdmVydGljYWxPdmVy
c2Nyb2xsQmVoYXZpb3IoKSBjb25zdCBmaW5hbDsKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBG
cmFtZVZpZXcoRnJhbWUmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMv
RXZlbnRIYW5kbGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVy
TWFjLm1tCmluZGV4IDFkNGM4NjExNzZmZWRlZjIwNjRlMjIwMjM2MzkwMTQ1NjM4NDFkNmEuLjky
Y2NjM2IxZmJkOTA1NDgzMzMzNDBlMjAzZDEwNGIzM2FjYTYxMGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0KQEAgLTgwMCwxMCArODAwLDE2IEBAIHN0YXRp
YyBTY3JvbGxhYmxlQXJlYSogc2Nyb2xsYWJsZUFyZWFGb3JCb3goUmVuZGVyQm94JiBib3gpCiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK3N0YXRpYyBib29sIHNob3VsZE92ZXJzY3JvbGxCZWhh
dmlvckJsb2NrU2Nyb2xsQ2hhaW5pbmcoY29uc3QgU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVB
cmVhLCBjb25zdCBGbG9hdFNpemUmIGJpYXNlZERlbHRhLCBTY3JvbGxDaGFpbmluZ0Jsb2NrZXIm
IGJsb2NrZXIpCit7CisgICAgc2Nyb2xsYWJsZUFyZWEudXBkYXRlU2Nyb2xsQ2hhaW5pbmdCbG9j
a2VyU3RhdGUoYmxvY2tlcik7CisgICAgcmV0dXJuIFNjcm9sbENoYWluaW5nQmxvY2tlcjo6c2hv
dWxkQmxvY2tTY3JvbGxDaGFpbmluZyhibG9ja2VyLCBiaWFzZWREZWx0YSk7Cit9CisKIC8vIEZJ
WE1FOiBUaGlzIGNvdWxkIGJlIHdyaXR0ZW4gaW4gdGVybXMgb2YgU2Nyb2xsYWJsZUFyZWE6OmVu
Y2xvc2luZ1Njcm9sbGFibGVBcmVhKCkuCi1zdGF0aWMgQ29udGFpbmVyTm9kZSogZmluZEVuY2xv
c2luZ1Njcm9sbGFibGVDb250YWluZXIoQ29udGFpbmVyTm9kZSogbm9kZSwgY29uc3QgUGxhdGZv
cm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50KQorc3RhdGljIENvbnRhaW5lck5vZGUqIGZpbmRFbmNs
b3NpbmdTY3JvbGxhYmxlQ29udGFpbmVyKENvbnRhaW5lck5vZGUqIG5vZGUsIGNvbnN0IFBsYXRm
b3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyJiBzY3JvbGxD
aGFpbmluZ0Jsb2NrZXIpCiB7Ci0gICAgYXV0byBiaWFzZWREZWx0YSA9IFNjcm9sbENvbnRyb2xs
ZXI6OndoZWVsRGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRpY2FsKHdoZWVsRXZlbnQpOworICAgIGF1
dG8gYmlhc2VkRGVsdGEgPSBQbGF0Zm9ybVdoZWVsRXZlbnQ6OndoZWVsRGVsdGFCaWFzaW5nVG93
YXJkc1ZlcnRpY2FsKHdoZWVsRXZlbnQuZGVsdGEoKSk7CiAKICAgICAvLyBGaW5kIHRoZSBmaXJz
dCBub2RlIHdpdGggYSB2YWxpZCBzY3JvbGxhYmxlIGFyZWEgc3RhcnRpbmcgd2l0aCB0aGUgY3Vy
cmVudAogICAgIC8vIG5vZGUgYW5kIHRyYXZlcnNpbmcgaXRzIHBhcmVudHMgKG9yIHNoYWRvdyBo
b3N0cykuCkBAIC04MTcsNyArODIzLDcgQEAgc3RhdGljIENvbnRhaW5lck5vZGUqIGZpbmRFbmNs
b3NpbmdTY3JvbGxhYmxlQ29udGFpbmVyKENvbnRhaW5lck5vZGUqIG5vZGUsIGNvbnMKICAgICAg
ICAgUmVuZGVyQm94KiBib3ggPSBjYW5kaWRhdGUtPnJlbmRlckJveCgpOwogICAgICAgICBpZiAo
IWJveCB8fCAhYm94LT5jYW5CZVNjcm9sbGVkQW5kSGFzU2Nyb2xsYWJsZUFyZWEoKSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICAKKwogICAgICAgICBhdXRvKiBzY3JvbGxhYmxlQXJl
YSA9IHNjcm9sbGFibGVBcmVhRm9yQm94KCpib3gpOwogICAgICAgICBpZiAoIXNjcm9sbGFibGVB
cmVhKQogICAgICAgICAgICAgY29udGludWU7CkBAIC04MzAsOCArODM2LDEyIEBAIHN0YXRpYyBD
b250YWluZXJOb2RlKiBmaW5kRW5jbG9zaW5nU2Nyb2xsYWJsZUNvbnRhaW5lcihDb250YWluZXJO
b2RlKiBub2RlLCBjb25zCiAKICAgICAgICAgaWYgKGJpYXNlZERlbHRhLndpZHRoKCkgJiYgIXNj
cm9sbGFibGVBcmVhLT5pc1Bpbm5lZEZvclNjcm9sbERlbHRhT25BeGlzKC1iaWFzZWREZWx0YS53
aWR0aCgpLCBTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwpKQogICAgICAgICAgICAgcmV0dXJu
IGNhbmRpZGF0ZTsKKworICAgICAgICAvLyBMZXQgRnJhbWVWaWV3Ojpob3Jpem9udGFsT3ZlcnNj
cm9sbEJlaGF2aW9yIGRlY2lkZSB3aGljaCBub2RlJ3Mgb3ZlcnNjcm9sbC1iYWh2aW9yIGlzIGVm
ZmVjdGl2ZSB0byBGcmFtZVZpZXcuCisgICAgICAgIGlmIChjYW5kaWRhdGUgIT0gY2FuZGlkYXRl
LT5kb2N1bWVudCgpLmJvZHkoKSAmJiBzaG91bGRPdmVyc2Nyb2xsQmVoYXZpb3JCbG9ja1Njcm9s
bENoYWluaW5nKCpzY3JvbGxhYmxlQXJlYSwgYmlhc2VkRGVsdGEsIHNjcm9sbENoYWluaW5nQmxv
Y2tlcikpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgCisKICAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAtODc2LDEwICs4ODYsMTEgQEAgdm9pZCBFdmVudEhhbmRs
ZXI6OmRldGVybWluZVdoZWVsRXZlbnRUYXJnZXQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3
aGVlbEV2ZW4KICAgICBpZiAoIXZpZXcpCiAgICAgICAgIHJldHVybjsKIAorICAgIFNjcm9sbENo
YWluaW5nQmxvY2tlciBzY3JvbGxDaGFpbmluZ0Jsb2NrZXI7CiAgICAgaWYgKGV2ZW50VGFyZ2V0
SXNQbGF0Zm9ybVdpZGdldCh3aGVlbEV2ZW50VGFyZ2V0LmdldCgpKSkKICAgICAgICAgc2Nyb2xs
YWJsZUFyZWEgPSBzY3JvbGxhYmxlQXJlYUZvckV2ZW50VGFyZ2V0KHdoZWVsRXZlbnRUYXJnZXQu
Z2V0KCkpOwogICAgIGVsc2UgewotICAgICAgICBhdXRvKiBzY3JvbGxhYmxlQ29udGFpbmVyID0g
ZmluZEVuY2xvc2luZ1Njcm9sbGFibGVDb250YWluZXIod2hlZWxFdmVudFRhcmdldC5nZXQoKSwg
d2hlZWxFdmVudCk7CisgICAgICAgIGF1dG8qIHNjcm9sbGFibGVDb250YWluZXIgPSBmaW5kRW5j
bG9zaW5nU2Nyb2xsYWJsZUNvbnRhaW5lcih3aGVlbEV2ZW50VGFyZ2V0LmdldCgpLCB3aGVlbEV2
ZW50LCBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIpOwogICAgICAgICBpZiAoc2Nyb2xsYWJsZUNvbnRh
aW5lcikKICAgICAgICAgICAgIHNjcm9sbGFibGVBcmVhID0gc2Nyb2xsYWJsZUFyZWFGb3JDb250
YWluZXJOb2RlKCpzY3JvbGxhYmxlQ29udGFpbmVyKTsKICAgICAgICAgZWxzZQpAQCAtODk3LDcg
KzkwOCw3IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpkZXRlcm1pbmVXaGVlbEV2ZW50VGFyZ2V0KGNv
bnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVuCiAgICAgaWYgKG1fZnJhbWUuaXNNYWlu
RnJhbWUoKSAmJiB3aGVlbEV2ZW50LmlzR2VzdHVyZVN0YXJ0KCkpCiAgICAgICAgIHBhZ2UtPndo
ZWVsRXZlbnREZWx0YUZpbHRlcigpLT5iZWdpbkZpbHRlcmluZ0RlbHRhcygpOwogCi0gICAgcGFn
ZS0+c2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyKCkudXBkYXRlQW5kRmV0Y2hMYXRjaGluZ1N0YXRl
Rm9yRnJhbWUobV9mcmFtZSwgd2hlZWxFdmVudCwgd2hlZWxFdmVudFRhcmdldCwgc2Nyb2xsYWJs
ZUFyZWEsIGlzT3ZlcldpZGdldCk7CisgICAgcGFnZS0+c2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVy
KCkudXBkYXRlQW5kRmV0Y2hMYXRjaGluZ1N0YXRlRm9yRnJhbWUobV9mcmFtZSwgd2hlZWxFdmVu
dCwgd2hlZWxFdmVudFRhcmdldCwgc2Nyb2xsYWJsZUFyZWEsIHNjcm9sbENoYWluaW5nQmxvY2tl
ciwgaXNPdmVyV2lkZ2V0KTsKIH0KIAogdm9pZCBFdmVudEhhbmRsZXI6OnJlY29yZFdoZWVsRXZl
bnRGb3JEZWx0YUZpbHRlcihjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nv
b3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xs
aW5nQ29vcmRpbmF0b3IuY3BwCmluZGV4IDZhOWViYjNlMmI2NGY4YzNlNjdmNjcyM2ZlZTQ1OTY5
YTk1NDY3Y2IuLjQyMjhjMjE3ZDI1Y2VkMTVhMjBkNzhjNTdiNDFiMjQyMTRkYWVjMzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRp
bmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xs
aW5nQ29vcmRpbmF0b3IuY3BwCkBAIC02OTgsNiArNjk4LDggQEAgdm9pZCBBc3luY1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yOjpzZXRTY3JvbGxpbmdOb2RlU2Nyb2xsYWJsZUFyZWFHZW9tZXRyeShTY3Jv
bGxpbmcKICAgICBzY3JvbGxpbmdOb2RlLnNldFNjcm9sbGFibGVBcmVhU2l6ZShzY3JvbGxhYmxl
QXJlYS52aXNpYmxlU2l6ZSgpKTsKIAogICAgIFNjcm9sbGFibGVBcmVhUGFyYW1ldGVycyBzY3Jv
bGxQYXJhbWV0ZXJzOworICAgIHNjcm9sbFBhcmFtZXRlcnMuaG9yaXpvbnRhbE92ZXJzY3JvbGxC
ZWhhdmlvciA9IHNjcm9sbGFibGVBcmVhLmhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKTsK
KyAgICBzY3JvbGxQYXJhbWV0ZXJzLnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yID0gc2Nyb2xs
YWJsZUFyZWEudmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKTsKICAgICBzY3JvbGxQYXJhbWV0
ZXJzLmhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5ID0gc2Nyb2xsYWJsZUFyZWEuaG9yaXpvbnRh
bFNjcm9sbEVsYXN0aWNpdHkoKTsKICAgICBzY3JvbGxQYXJhbWV0ZXJzLnZlcnRpY2FsU2Nyb2xs
RWxhc3RpY2l0eSA9IHNjcm9sbGFibGVBcmVhLnZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eSgpOwog
ICAgIHNjcm9sbFBhcmFtZXRlcnMuYWxsb3dzSG9yaXpvbnRhbFNjcm9sbGluZyA9IHNjcm9sbGFi
bGVBcmVhLmFsbG93c0hvcml6b250YWxTY3JvbGxpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbExhdGNoaW5nQ29udHJvbGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIuY3BwCmlu
ZGV4IDRlZDRkOTc1YTdlYTQ1MDA5N2ZjYmI0ZGU5YTJlMDMyMWM2YTY3N2IuLmJhMDAxMWQzMWIz
Nzg1NTEyYjQ1NDI5MDI5OWE1ZWFjMDFmZWIwZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbExhdGNoaW5nQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyLmNwcApAQCAt
MTA4LDcgKzEwOCw3IEBAIGJvb2wgU2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyOjpsYXRjaGluZ0Fs
bG93c1Njcm9sbGluZ0luRnJhbWUoY29uc3QgRnJhbWUmIGZyYW1lCiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi12b2lkIFNjcm9sbExhdGNoaW5nQ29udHJvbGxlcjo6dXBkYXRlQW5kRmV0Y2hMYXRj
aGluZ1N0YXRlRm9yRnJhbWUoRnJhbWUmIGZyYW1lLCBjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQm
IHdoZWVsRXZlbnQsIFJlZlB0cjxFbGVtZW50PiYgbGF0Y2hlZEVsZW1lbnQsIFdlYWtQdHI8U2Ny
b2xsYWJsZUFyZWE+JiBzY3JvbGxhYmxlQXJlYSwgYm9vbCYgaXNPdmVyV2lkZ2V0KQordm9pZCBT
Y3JvbGxMYXRjaGluZ0NvbnRyb2xsZXI6OnVwZGF0ZUFuZEZldGNoTGF0Y2hpbmdTdGF0ZUZvckZy
YW1lKEZyYW1lJiBmcmFtZSwgY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBS
ZWZQdHI8RWxlbWVudD4mIGxhdGNoZWRFbGVtZW50LCBXZWFrUHRyPFNjcm9sbGFibGVBcmVhPiYg
c2Nyb2xsYWJsZUFyZWEsIFNjcm9sbENoYWluaW5nQmxvY2tlciYgc2Nyb2xsQ2hhaW5pbmdCbG9j
a2VyLCBib29sJiBpc092ZXJXaWRnZXQpCiB7CiAgICAgaWYgKHdoZWVsRXZlbnQuaXNHZXN0dXJl
U3RhcnQoKSkgewogICAgICAgICAvLyBXZSBjYW4gaGF2ZSBleGlzdGluZyBzdGF0ZSBoZXJlIGJl
Y2F1c2Ugc3RhdGUgaXMgY2xlYXJlZCBvbiBhIHRpbWVyLgpAQCAtMTE4LDYgKzExOCw3IEBAIHZv
aWQgU2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyOjp1cGRhdGVBbmRGZXRjaExhdGNoaW5nU3RhdGVG
b3JGcmFtZShGcmFtZSYgZnJhbWUsCiAgICAgICAgICAgICBzdGF0ZS53aGVlbEV2ZW50RWxlbWVu
dCA9IG1ha2VXZWFrUHRyKGxhdGNoZWRFbGVtZW50LmdldCgpKTsKICAgICAgICAgICAgIGlmIChz
aG91bGRMYXRjaFRvU2Nyb2xsYWJsZUFyZWEoZnJhbWUsIHNjcm9sbGFibGVBcmVhLmdldCgpLCBt
X2N1bXVsYXRpdmVFdmVudERlbHRhKSkKICAgICAgICAgICAgICAgICBzdGF0ZS5zY3JvbGxhYmxl
QXJlYSA9IHNjcm9sbGFibGVBcmVhOworICAgICAgICAgICAgc3RhdGUuc2Nyb2xsQ2hhaW5pbmdC
bG9ja2VyID0gc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyOwogICAgICAgICAgICAgc3RhdGUuaXNPdmVy
V2lkZ2V0ID0gaXNPdmVyV2lkZ2V0OwogCiAgICAgICAgICAgICBMT0dfV0lUSF9TVFJFQU0oU2Ny
b2xsTGF0Y2hpbmcsIHN0cmVhbSA8PCAiU2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyOjp1cGRhdGVB
bmRGZXRjaExhdGNoaW5nU3RhdGVGb3JGcmFtZSgpIC0gcHVzaGluZyBzdGF0ZSBmb3IgRnJhbWUg
IiA8PCAmZnJhbWUgPDwgIiBlbGVtZW50ICIgPDwgc3RhdGUud2hlZWxFdmVudEVsZW1lbnQuZ2V0
KCkgPDwgIiBzY3JvbGxhYmxlQXJlYSAiIDw8IHN0YXRlLnNjcm9sbGFibGVBcmVhKTsKQEAgLTEz
Miw4ICsxMzMsMTAgQEAgdm9pZCBTY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXI6OnVwZGF0ZUFuZEZl
dGNoTGF0Y2hpbmdTdGF0ZUZvckZyYW1lKEZyYW1lJiBmcmFtZSwKICAgICAgICAgICAgIHJldHVy
bjsKIAogICAgICAgICAvLyBXZSBtYXkgbm90IGhhdmUgbGF0Y2hlZCBhdCBnZXN0dXJlIHN0YXJ0
IGJlY2F1c2Ugb2Ygc21hbGwgZGVsdGFzLiBSZS1ldmFsdWF0ZSBsYXRjaGluZyBiYXNlZCBvbiBh
Y2N1bXVsYXRlZCBkZWx0YS4KLSAgICAgICAgaWYgKCFzdGF0ZS0+c2Nyb2xsYWJsZUFyZWEgJiYg
c2hvdWxkTGF0Y2hUb1Njcm9sbGFibGVBcmVhKGZyYW1lLCBzY3JvbGxhYmxlQXJlYS5nZXQoKSwg
bV9jdW11bGF0aXZlRXZlbnREZWx0YSkpCisgICAgICAgIGlmICghc3RhdGUtPnNjcm9sbGFibGVB
cmVhICYmIHNob3VsZExhdGNoVG9TY3JvbGxhYmxlQXJlYShmcmFtZSwgc2Nyb2xsYWJsZUFyZWEu
Z2V0KCksIG1fY3VtdWxhdGl2ZUV2ZW50RGVsdGEpKSB7CiAgICAgICAgICAgICBzdGF0ZS0+c2Ny
b2xsYWJsZUFyZWEgPSBzY3JvbGxhYmxlQXJlYTsKKyAgICAgICAgICAgIHN0YXRlLT5zY3JvbGxD
aGFpbmluZ0Jsb2NrZXIgPSBzY3JvbGxDaGFpbmluZ0Jsb2NrZXI7CisgICAgICAgIH0KICAgICB9
CiAKICAgICBpZiAoIXdoZWVsRXZlbnQudXNlTGF0Y2hlZEV2ZW50RWxlbWVudCgpKQpAQCAtMTQ0
LDEyICsxNDcsMzQgQEAgdm9pZCBTY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXI6OnVwZGF0ZUFuZEZl
dGNoTGF0Y2hpbmdTdGF0ZUZvckZyYW1lKEZyYW1lJiBmcmFtZSwKICAgICAgICAgICAgIGxhdGNo
ZWRFbGVtZW50ID0gc3RhdGUud2hlZWxFdmVudEVsZW1lbnQuZ2V0KCk7CiAgICAgICAgICAgICBz
Y3JvbGxhYmxlQXJlYSA9IHN0YXRlLnNjcm9sbGFibGVBcmVhOwogICAgICAgICAgICAgaXNPdmVy
V2lkZ2V0ID0gc3RhdGUuaXNPdmVyV2lkZ2V0OworICAgICAgICAgICAgc2Nyb2xsQ2hhaW5pbmdC
bG9ja2VyID0gc3RhdGUuc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyOwogCiAgICAgICAgICAgICBMT0df
V0lUSF9TVFJFQU0oU2Nyb2xsTGF0Y2hpbmcsIHN0cmVhbSA8PCAiU2Nyb2xsTGF0Y2hpbmdDb250
cm9sbGVyOjp1cGRhdGVBbmRGZXRjaExhdGNoaW5nU3RhdGVGb3JGcmFtZSgpIC0gdXNpbmcgc3Rh
dGUgZm9yIEZyYW1lICIgPDwgJmZyYW1lIDw8ICIgZWxlbWVudCAiIDw8IGxhdGNoZWRFbGVtZW50
LmdldCgpIDw8ICIgc2Nyb2xsYWJsZUFyZWEgIiA8PCBzY3JvbGxhYmxlQXJlYSk7CiAgICAgICAg
IH0KICAgICB9CiB9CiAKK1Njcm9sbENoYWluaW5nQmxvY2tlciBTY3JvbGxMYXRjaGluZ0NvbnRy
b2xsZXI6OmdldFNjcm9sbENoYWluaW5nQmxvY2tlcihjb25zdCBGcmFtZSYgZnJhbWUpIGNvbnN0
Cit7CisgICAgaWYgKCFtX2ZyYW1lU3RhdGVTdGFjay5pc0VtcHR5KCkpIHsKKyAgICAgICAgYXV0
byogZnJhbWVTdGF0ZSA9IHN0YXRlRm9yRnJhbWUoZnJhbWUpOworICAgICAgICBpZiAoZnJhbWVT
dGF0ZSkKKyAgICAgICAgICAgIHJldHVybiBmcmFtZVN0YXRlLT5zY3JvbGxDaGFpbmluZ0Jsb2Nr
ZXI7CisgICAgfQorCisgICAgcmV0dXJuIHsgZmFsc2UsIGZhbHNlIH07Cit9CisKK3ZvaWQgU2Ny
b2xsTGF0Y2hpbmdDb250cm9sbGVyOjp1cGRhdGVTY3JvbGxDaGFpbmluZ0Jsb2NrZXIoY29uc3Qg
RnJhbWUmIGZyYW1lLCBjb25zdCBTY3JvbGxDaGFpbmluZ0Jsb2NrZXImIHNjcm9sbENoYWluaW5n
QmxvY2tlckZyb21TdWJmcmFtZSkKK3sKKyAgICBpZiAobV9mcmFtZVN0YXRlU3RhY2suaXNFbXB0
eSgpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKGF1dG8qIGZyYW1lU3RhdGUgPSBzdGF0ZUZv
ckZyYW1lKGZyYW1lKSkgeworICAgICAgICBmcmFtZVN0YXRlLT5zY3JvbGxDaGFpbmluZ0Jsb2Nr
ZXIuYmxvY2tYIHw9IHNjcm9sbENoYWluaW5nQmxvY2tlckZyb21TdWJmcmFtZS5ibG9ja1g7Cisg
ICAgICAgIGZyYW1lU3RhdGUtPnNjcm9sbENoYWluaW5nQmxvY2tlci5ibG9ja1kgfD0gc2Nyb2xs
Q2hhaW5pbmdCbG9ja2VyRnJvbVN1YmZyYW1lLmJsb2NrWTsKKyAgICB9Cit9CisKIHZvaWQgU2Ny
b2xsTGF0Y2hpbmdDb250cm9sbGVyOjpyZW1vdmVMYXRjaGluZ1N0YXRlRm9yVGFyZ2V0KGNvbnN0
IEVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgaWYgKG1fZnJhbWVTdGF0ZVN0YWNrLmlzRW1wdHko
KSkKQEAgLTI1Miw2ICsyNzcsOCBAQCB2b2lkIFNjcm9sbExhdGNoaW5nQ29udHJvbGxlcjo6ZHVt
cChXVEY6OlRleHRTdHJlYW0mIHRzKSBjb25zdAogICAgICAgICBtdWx0aWxpbmVTdHJlYW0uZHVt
cFByb3BlcnR5KCJmcmFtZSIsIFZhbHVlT3JOdWxsKHN0YXRlLmZyYW1lKSk7CiAgICAgICAgIG11
bHRpbGluZVN0cmVhbS5kdW1wUHJvcGVydHkoImVsZW1lbnQiLCBWYWx1ZU9yTnVsbChzdGF0ZS53
aGVlbEV2ZW50RWxlbWVudC5nZXQoKSkpOwogICAgICAgICBtdWx0aWxpbmVTdHJlYW0uZHVtcFBy
b3BlcnR5KCJzY3JvbGxhYmxlIGFyZWEiLCBWYWx1ZU9yTnVsbChzdGF0ZS5zY3JvbGxhYmxlQXJl
YS5nZXQoKSkpOworICAgICAgICBtdWx0aWxpbmVTdHJlYW0uZHVtcFByb3BlcnR5KCJzdGF0ZS5z
Y3JvbGxDaGFpbmluZ0Jsb2NrZXIuYmxvY2tYIiwgc3RhdGUuc2Nyb2xsQ2hhaW5pbmdCbG9ja2Vy
LmJsb2NrWCk7CisgICAgICAgIG11bHRpbGluZVN0cmVhbS5kdW1wUHJvcGVydHkoInN0YXRlLnNj
cm9sbENoYWluaW5nQmxvY2tlci5ibG9ja1kiLCBzdGF0ZS5zY3JvbGxDaGFpbmluZ0Jsb2NrZXIu
YmxvY2tZKTsKICAgICAgICAgbXVsdGlsaW5lU3RyZWFtLmR1bXBQcm9wZXJ0eSgiaXMgb3ZlciB3
aWRnZXQiLCBzdGF0ZS5pc092ZXJXaWRnZXQpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIuaAppbmRl
eCA1NjQ5NjE1OWM1ZTY4ZDJiY2NlZjhjMjY1ZWU2MWNjYjlkZmI0YjI4Li44ZmQ4ZTMwYzZhMTY1
ZDk5OThkNDExZDI4YmJmZmQzMmVlZjIzNjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIuaApAQCAtNjEsNyAr
NjEsMTAgQEAgcHVibGljOgogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBubyBmcmFtZSBpcyBsYXRj
aGVkLCBvciBsYXRjaGluZyBpcyBpbiB0aGUgZ2l2ZW4gZnJhbWUgKGluIHdoaWNoIGNhc2UgbGF0
Y2hlZFNjcm9sbGVyIHdpbGwgYmUgbm9uLW51bGwpLgogICAgIGJvb2wgbGF0Y2hpbmdBbGxvd3NT
Y3JvbGxpbmdJbkZyYW1lKGNvbnN0IEZyYW1lJiwgV2Vha1B0cjxTY3JvbGxhYmxlQXJlYT4mIGxh
dGNoZWRTY3JvbGxlcikgY29uc3Q7CiAKLSAgICB2b2lkIHVwZGF0ZUFuZEZldGNoTGF0Y2hpbmdT
dGF0ZUZvckZyYW1lKEZyYW1lJiwgY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgUmVmUHRyPEVs
ZW1lbnQ+JiBsYXRjaGVkRWxlbWVudCwgV2Vha1B0cjxTY3JvbGxhYmxlQXJlYT4mLCBib29sJiBp
c092ZXJXaWRnZXQpOworICAgIHZvaWQgdXBkYXRlQW5kRmV0Y2hMYXRjaGluZ1N0YXRlRm9yRnJh
bWUoRnJhbWUmLCBjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBSZWZQdHI8RWxlbWVudD4mIGxh
dGNoZWRFbGVtZW50LCBXZWFrUHRyPFNjcm9sbGFibGVBcmVhPiYsIFNjcm9sbENoYWluaW5nQmxv
Y2tlciYsIGJvb2wmIGlzT3ZlcldpZGdldCk7CisKKyAgICBTY3JvbGxDaGFpbmluZ0Jsb2NrZXIg
Z2V0U2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKGNvbnN0IEZyYW1lJikgY29uc3Q7CisgICAgdm9pZCB1
cGRhdGVTY3JvbGxDaGFpbmluZ0Jsb2NrZXIoY29uc3QgRnJhbWUmLCBjb25zdCBTY3JvbGxDaGFp
bmluZ0Jsb2NrZXImIFNjcm9sbENoYWluaW5nQmxvY2tlckZyb21TdWJmcmFtZSk7CiAKICAgICB2
b2lkIHJlbW92ZUxhdGNoaW5nU3RhdGVGb3JUYXJnZXQoY29uc3QgRWxlbWVudCYpOwogICAgIHZv
aWQgcmVtb3ZlTGF0Y2hpbmdTdGF0ZUZvckZyYW1lKGNvbnN0IEZyYW1lJik7CkBAIC03Myw2ICs3
Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIFdlYWtQdHI8RWxlbWVudD4gd2hlZWxFdmVudEVsZW1l
bnQ7CiAgICAgICAgIFdlYWtQdHI8U2Nyb2xsYWJsZUFyZWE+IHNjcm9sbGFibGVBcmVhOwogICAg
ICAgICBGcmFtZSogZnJhbWUgeyBudWxscHRyIH07CisgICAgICAgIFNjcm9sbENoYWluaW5nQmxv
Y2tlciBzY3JvbGxDaGFpbmluZ0Jsb2NrZXI7CiAgICAgICAgIGJvb2wgaXNPdmVyV2lkZ2V0IHsg
ZmFsc2UgfTsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdDb29yZGluYXRvclR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvclR5cGVzLmgKaW5kZXggZWVjYWI2ZjU1YjY1YzQ2
MDE5OWY4MGVmMDUwNjU1MmI3MWYzMDgwMy4uNTY3NGRjYWU2YzQzMmNhNDZhMDI4MzVkZDAwYWQ3
NDAxM2NlNmFhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nQ29vcmRpbmF0b3JUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yVHlwZXMuaApAQCAtNjgsNiArNjgsOSBAQCBlbnVtIGNs
YXNzIFNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb24gewogfTsKIAogc3RydWN0IFNjcm9sbGFi
bGVBcmVhUGFyYW1ldGVycyB7CisgICAgT3ZlcnNjcm9sbEJlaGF2aW9yIGhvcml6b250YWxPdmVy
c2Nyb2xsQmVoYXZpb3IgeyBPdmVyc2Nyb2xsQmVoYXZpb3I6OiBBdXRvIH07CisgICAgT3ZlcnNj
cm9sbEJlaGF2aW9yIHZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yIHsgT3ZlcnNjcm9sbEJlaGF2
aW9yOjogQXV0byB9OworCiAgICAgU2Nyb2xsRWxhc3RpY2l0eSBob3Jpem9udGFsU2Nyb2xsRWxh
c3RpY2l0eSB7IFNjcm9sbEVsYXN0aWNpdHlOb25lIH07CiAgICAgU2Nyb2xsRWxhc3RpY2l0eSB2
ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkgeyBTY3JvbGxFbGFzdGljaXR5Tm9uZSB9OwogCkBAIC04
NCw3ICs4Nyw5IEBAIHN0cnVjdCBTY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMgewogCiAgICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IFNjcm9sbGFibGVBcmVhUGFyYW1ldGVycyYgb3RoZXIpIGNvbnN0
CiAgICAgewotICAgICAgICByZXR1cm4gaG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkgPT0gb3Ro
ZXIuaG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkKKyAgICAgICAgcmV0dXJuIGhvcml6b250YWxP
dmVyc2Nyb2xsQmVoYXZpb3IgPT0gb3RoZXIuaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcgor
ICAgICAgICAgICAgJiYgdmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IgPT0gb3RoZXIudmVydGlj
YWxPdmVyc2Nyb2xsQmVoYXZpb3IKKyAgICAgICAgICAgICYmIGhvcml6b250YWxTY3JvbGxFbGFz
dGljaXR5ID09IG90aGVyLmhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5CiAgICAgICAgICAgICAm
JiB2ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkgPT0gb3RoZXIudmVydGljYWxTY3JvbGxFbGFzdGlj
aXR5CiAgICAgICAgICAgICAmJiBob3Jpem9udGFsU2Nyb2xsYmFyTW9kZSA9PSBvdGhlci5ob3Jp
em9udGFsU2Nyb2xsYmFyTW9kZQogICAgICAgICAgICAgJiYgdmVydGljYWxTY3JvbGxiYXJNb2Rl
ID09IG90aGVyLnZlcnRpY2FsU2Nyb2xsYmFyTW9kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcAppbmRleCAxY2VmMzFiYjM2NjUxNmQzYjRhOGNl
ODFmYzE5ZGZhYjZlOTJhMGQ1Li5mYmNlM2RiYjM3NGVlOGRkZWJhNDZhYTk0YjE2MjdkZWUwNjM0
ODQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdU
cmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVl
LmNwcApAQCAtMTc0LDIxICsxNzQsNTkgQEAgV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0IFNjcm9s
bGluZ1RyZWU6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW4KICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCitib29sIFNjcm9sbGluZ1RyZWU6OnNob3VsZEJsb2NrU2Nyb2xs
Q2hhaW5pbmdXaXRoTm9kZShjb25zdCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZSYgc2Nyb2xs
aW5nTm9kZSwgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBTY3JvbGxDaGFpbmluZ0Js
b2NrZXImIGJsb2NrZXIsIGJvb2wmIGhhbmRsZWQpCit7CisgICAgc2Nyb2xsaW5nTm9kZS51cGRh
dGVTY3JvbGxDaGFpbmluZ0Jsb2NrZXJTdGF0ZShibG9ja2VyKTsKKworICAgIEZsb2F0U2l6ZSBm
aWx0ZXJlZERlbHRhKHdoZWVsRXZlbnQuZGVsdGFYKCksIHdoZWVsRXZlbnQuZGVsdGFZKCkpOwor
ICAgIGF1dG8gYmlhc2VkRGVsdGEgPSBQbGF0Zm9ybVdoZWVsRXZlbnQ6OndoZWVsRGVsdGFCaWFz
aW5nVG93YXJkc1ZlcnRpY2FsKGZpbHRlcmVkRGVsdGEpOworICAgIGlmIChibG9ja2VyLmJsb2Nr
WCB8fCBibG9ja2VyLmJsb2NrWSkgeworICAgICAgICBpZiAoYmxvY2tlci5ibG9ja1ggJiYgIWJp
YXNlZERlbHRhLmhlaWdodCgpICYmIHdpbGxXaGVlbEV2ZW50U3RhcnRTd2lwZUdlc3R1cmUod2hl
ZWxFdmVudCkpIHsKKyAgICAgICAgICAgIGhhbmRsZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIGlmIChTY3JvbGxDaGFpbmluZ0Jsb2NrZXI6
OnNob3VsZEJsb2NrU2Nyb2xsQ2hhaW5pbmcoYmxvY2tlciwgYmlhc2VkRGVsdGEpKSB7CisgICAg
ICAgICAgICBoYW5kbGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICB9CisgICAgICAgIFNjcm9sbENoYWluaW5nQmxvY2tlcjo6ZmlsdGVyRGVsdGEoYmxvY2tlciwg
Ymlhc2VkRGVsdGEsIGZpbHRlcmVkRGVsdGEpOworICAgICAgICB3aGVlbEV2ZW50ID0gd2hlZWxF
dmVudC5jb3B5V2l0aERlbHRhc0FuZFZlbG9jaXR5KGZpbHRlcmVkRGVsdGEud2lkdGgoKSwgZmls
dGVyZWREZWx0YS5oZWlnaHQoKSwgd2hlZWxFdmVudC5zY3JvbGxpbmdWZWxvY2l0eSgpKTsKKyAg
ICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQgU2Ny
b2xsaW5nVHJlZTo6aGFuZGxlV2hlZWxFdmVudFdpdGhOb2RlKGNvbnN0IFBsYXRmb3JtV2hlZWxF
dmVudCYgd2hlZWxFdmVudCwgT3B0aW9uU2V0PFdoZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHM+IHBy
b2Nlc3NpbmdTdGVwcywgU2Nyb2xsaW5nVHJlZU5vZGUqIG5vZGUsIEV2ZW50VGFyZ2V0aW5nIGV2
ZW50VGFyZ2V0aW5nKQogeworICAgIFBsYXRmb3JtV2hlZWxFdmVudCBhZGp1c3RlZFdoZWVsRXZl
bnQgPSBQbGF0Zm9ybVdoZWVsRXZlbnQod2hlZWxFdmVudCk7CisgICAgU2Nyb2xsQ2hhaW5pbmdC
bG9ja2VyIGJsb2NrZXIgPSB7IGZhbHNlLCBmYWxzZSB9OwogICAgIHdoaWxlIChub2RlKSB7CiAg
ICAgICAgIGlmIChpczxTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZT4oKm5vZGUpKSB7CiAgICAg
ICAgICAgICBhdXRvJiBzY3JvbGxpbmdOb2RlID0gZG93bmNhc3Q8U2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGU+KCpub2RlKTsKLSAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gc2Nyb2xsaW5nTm9k
ZS5oYW5kbGVXaGVlbEV2ZW50KHdoZWVsRXZlbnQsIGV2ZW50VGFyZ2V0aW5nKTsKKyAgICAgICAg
ICAgIGF1dG8gcmVzdWx0ID0gc2Nyb2xsaW5nTm9kZS5oYW5kbGVXaGVlbEV2ZW50KGFkanVzdGVk
V2hlZWxFdmVudCwgZXZlbnRUYXJnZXRpbmcpOwogCiAgICAgICAgICAgICBpZiAocmVzdWx0Lndh
c0hhbmRsZWQpIHsKLSAgICAgICAgICAgICAgICBtX2xhdGNoaW5nQ29udHJvbGxlci5ub2RlRGlk
SGFuZGxlRXZlbnQoc2Nyb2xsaW5nTm9kZS5zY3JvbGxpbmdOb2RlSUQoKSwgcHJvY2Vzc2luZ1N0
ZXBzLCB3aGVlbEV2ZW50LCBtX2FsbG93TGF0Y2hpbmcpOworICAgICAgICAgICAgICAgIC8vIElm
IHRoZSBzY3JvbGwgY2hhaW5pbmcgaXMgYmxvY2tlZCBpbiBhIHNpbmdsZSBkaXJlY3Rpb24sIGl0
IHNob3VsZCBzdG9wIGxhdGNoaW5nIHRvIGEgbm9kZSwKKyAgICAgICAgICAgICAgICAvLyBmb3Ig
dGhlIHdoZWVsIGV2ZW50IG1pZ2h0IGNoYW5nZSB0aGUgZGlyZWN0aW9uIGFuZCBvdmVyc2Nyb2xs
LWJlaGF2aW9yIG1pZ2h0IG5vdCBiZSBhYmxlIGJsb2NrCisgICAgICAgICAgICAgICAgLy8gdGhl
IHNjcm9sbCBjaGFpbmluZyBpZiBpdCBsYXRjaGVzIHRvIHRoZSBhbmNlc3RyeSBub2RlIG9mIG92
ZXJzY3JvbGwtYmVoYXZpb3IgdGFyZ2V0LgorICAgICAgICAgICAgICAgIGlmICgoYmxvY2tlci5i
bG9ja1ggJiYgYmxvY2tlci5ibG9ja1kpIHx8ICghYmxvY2tlci5ibG9ja1ggJiYgIWJsb2NrZXIu
YmxvY2tZKSkKKyAgICAgICAgICAgICAgICAgICAgbV9sYXRjaGluZ0NvbnRyb2xsZXIubm9kZURp
ZEhhbmRsZUV2ZW50KHNjcm9sbGluZ05vZGUuc2Nyb2xsaW5nTm9kZUlEKCksIHByb2Nlc3NpbmdT
dGVwcywgd2hlZWxFdmVudCwgbV9hbGxvd0xhdGNoaW5nKTsKICAgICAgICAgICAgICAgICBtX2dl
c3R1cmVTdGF0ZS5ub2RlRGlkSGFuZGxlRXZlbnQoc2Nyb2xsaW5nTm9kZS5zY3JvbGxpbmdOb2Rl
SUQoKSwgd2hlZWxFdmVudCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAg
ICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKHJlc3VsdC5uZWVkc01haW5UaHJlYWRQcm9jZXNz
aW5nKCkgfHwgZXZlbnRUYXJnZXRpbmcgIT0gRXZlbnRUYXJnZXRpbmc6OlByb3BhZ2F0ZSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworCisgICAgICAgICAgICBib29sIGhhbmRsZWQg
PSBmYWxzZTsKKyAgICAgICAgICAgIGlmIChzaG91bGRCbG9ja1Njcm9sbENoYWluaW5nV2l0aE5v
ZGUoc2Nyb2xsaW5nTm9kZSwgYWRqdXN0ZWRXaGVlbEV2ZW50LCBibG9ja2VyLCBoYW5kbGVkKSkg
eworICAgICAgICAgICAgICAgIGlmICghaGFuZGxlZCkKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdDo6dW5oYW5kbGVkKCk7CisKKyAgICAgICAgICAg
ICAgICBpZiAoKGJsb2NrZXIuYmxvY2tYICYmIGJsb2NrZXIuYmxvY2tZKSkKKyAgICAgICAgICAg
ICAgICAgICAgbV9sYXRjaGluZ0NvbnRyb2xsZXIubm9kZURpZEhhbmRsZUV2ZW50KHNjcm9sbGlu
Z05vZGUuc2Nyb2xsaW5nTm9kZUlEKCksIHByb2Nlc3NpbmdTdGVwcywgd2hlZWxFdmVudCwgbV9h
bGxvd0xhdGNoaW5nKTsKKyAgICAgICAgICAgICAgICBtX2dlc3R1cmVTdGF0ZS5ub2RlRGlkSGFu
ZGxlRXZlbnQoc2Nyb2xsaW5nTm9kZS5zY3JvbGxpbmdOb2RlSUQoKSwgd2hlZWxFdmVudCk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdDo6aGFuZGxlZCgp
OworICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgaWYgKGlzPFNjcm9sbGluZ1Ry
ZWVPdmVyZmxvd1Njcm9sbFByb3h5Tm9kZT4oKm5vZGUpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmgKaW5kZXggODMxZjU2NmQ1YjM5MTgwODM3YWE0
ZmI2ODQ3MGY0N2UwMWU1YmYyNC4uZmYwMWExYjhlMGYxOGNmMDdjOTRmMDU2MmU3YjY5YTZhMzRm
YWRmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
VHJlZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUu
aApAQCAtMjczLDcgKzI3Myw4IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9p
ZCByZWNlaXZlZFdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JikgeyB9Ci0gICAg
CisgICAgYm9vbCBzaG91bGRCbG9ja1Njcm9sbENoYWluaW5nV2l0aE5vZGUoY29uc3QgU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGUmLCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBTY3JvbGxDaGFpbmlu
Z0Jsb2NrZXImLCBib29sJiBoYW5kbGVkKTsKKwogICAgIFJlZlB0cjxTY3JvbGxpbmdUcmVlRnJh
bWVTY3JvbGxpbmdOb2RlPiBtX3Jvb3ROb2RlOwogCiAgICAgdXNpbmcgU2Nyb2xsaW5nVHJlZU5v
ZGVNYXAgPSBIYXNoTWFwPFNjcm9sbGluZ05vZGVJRCwgUmVmUHRyPFNjcm9sbGluZ1RyZWVOb2Rl
Pj47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAKaW5kZXggOTBiNTBjMjIxMTMzZWE0MzZlODYxZmVl
ZThlODc1MTNjYjUyM2JiMy4uY2U5YjcwMjZiNmQ5YTE4ZDg1MTE3ZmIzMjU2MWM5YmEyNTdmNThk
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcApAQCAtMTM0LDYgKzEzNCwyMiBAQCBib29sIFNj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjppc0xhdGNoZWROb2RlKCkgY29uc3QKICAgICByZXR1
cm4gc2Nyb2xsaW5nVHJlZSgpLmxhdGNoZWROb2RlSUQoKSA9PSBzY3JvbGxpbmdOb2RlSUQoKTsK
IH0KIAorT3ZlcnNjcm9sbEJlaGF2aW9yIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjpob3Jp
em9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zY3JvbGxh
YmxlQXJlYVBhcmFtZXRlcnMuaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcjsKK30KKworT3Zl
cnNjcm9sbEJlaGF2aW9yIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjp2ZXJ0aWNhbE92ZXJz
Y3JvbGxCZWhhdmlvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWFQYXJh
bWV0ZXJzLnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yOworfQorCit2b2lkIFNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlOjp1cGRhdGVTY3JvbGxDaGFpbmluZ0Jsb2NrZXJTdGF0ZShTY3JvbGxD
aGFpbmluZ0Jsb2NrZXImIGJsb2NrZXIpIGNvbnN0Cit7CisgICAgYmxvY2tlci5ibG9ja1ggfD0g
aG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpICE9IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0
bzsKKyAgICBibG9ja2VyLmJsb2NrWSB8PSB2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpICE9
IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0bzsKK30KKwogYm9vbCBTY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZTo6Y2FuSGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdo
ZWVsRXZlbnQsIEV2ZW50VGFyZ2V0aW5nIGV2ZW50VGFyZ2V0aW5nKSBjb25zdAogewogICAgIGlm
ICghY2FuSGF2ZVNjcm9sbGJhcnMoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oCmluZGV4IDg2MmMxYjNk
YmUwZTIzZTE2OWZhNTJjYWE0NjJmZWZkZjE0ZGU4MTguLmE2YmY0Yzk5N2NiNDIxZTU2ZmVhZjEx
YTFiZDlkNTU2NGRjY2RmNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaApAQCAtMTQ1LDYgKzE0NSw5
IEBAIHByb3RlY3RlZDoKICAgICBjb25zdCBGbG9hdFNpemUmIHRvdGFsQ29udGVudHNTaXplRm9y
UnViYmVyQmFuZCgpIGNvbnN0IHsgcmV0dXJuIG1fdG90YWxDb250ZW50c1NpemVGb3JSdWJiZXJC
YW5kOyB9CiAgICAgdm9pZCBzZXRUb3RhbENvbnRlbnRzU2l6ZUZvclJ1YmJlckJhbmQoY29uc3Qg
RmxvYXRTaXplJiB0b3RhbENvbnRlbnRzU2l6ZUZvclJ1YmJlckJhbmQpIHsgbV90b3RhbENvbnRl
bnRzU2l6ZUZvclJ1YmJlckJhbmQgPSB0b3RhbENvbnRlbnRzU2l6ZUZvclJ1YmJlckJhbmQ7IH0K
IAorICAgIE92ZXJzY3JvbGxCZWhhdmlvciBob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkg
Y29uc3Q7CisgICAgT3ZlcnNjcm9sbEJlaGF2aW9yIHZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9y
KCkgY29uc3Q7CisgICAgdm9pZCB1cGRhdGVTY3JvbGxDaGFpbmluZ0Jsb2NrZXJTdGF0ZShTY3Jv
bGxDaGFpbmluZ0Jsb2NrZXImKSBjb25zdDsKICAgICBTY3JvbGxFbGFzdGljaXR5IGhvcml6b250
YWxTY3JvbGxFbGFzdGljaXR5KCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYVBhcmFt
ZXRlcnMuaG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHk7IH0KICAgICBTY3JvbGxFbGFzdGljaXR5
IHZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eSgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsYWJsZUFy
ZWFQYXJhbWV0ZXJzLnZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eTsgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGVEZWxlZ2F0ZU1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMuaAppbmRleCAzMmE4MzhlYjZmM2RhNDM5
ODNiY2ZmNTViN2NjNDE4MTU1NzM0ZTlmLi4zOTgxNDgxZmU0ZDI5NmVlYmNlZTNhYzcxZDgyNGQ3
ZDIzY2E2YWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMv
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRl
TWFjLmgKQEAgLTEwMSw2ICsxMDEsOSBAQCBwcml2YXRlOgogICAgIEZsb2F0U2l6ZSB2aWV3cG9y
dFNpemUoKSBjb25zdCBvdmVycmlkZTsKICNlbmRpZgogCisgICAgYm9vbCBzaG91bGRTdG9wSG9y
aXpvbnRhbFN0cmVjaCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgc2hvdWxkU3RvcFZlcnRp
Y2FsU3RyZWNoKCkgY29uc3Qgb3ZlcnJpZGU7CisKICAgICB2b2lkIHJlbGVhc2VSZWZlcmVuY2Vz
VG9TY3JvbGxlckltcHNPblRoZU1haW5UaHJlYWQoKTsKIAogICAgIFNjcm9sbENvbnRyb2xsZXIg
bV9zY3JvbGxDb250cm9sbGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVE
ZWxlZ2F0ZU1hYy5tbQppbmRleCA2YTI1ODAyMTA1ODAxMmRjNWU1ZTE2NWM0N2Y3ZjllNjE0ZDYz
ZWE1Li45MzQ3NzQxNGMyMDg3OWZkN2QwOTdlNzhjMzk5NzFlYjQ0ZGI0NWQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9t
YWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5tbQpAQCAtMjYyLDYgKzI2
Miw5IEBAIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxDb250cm9sbGVyVGltZXI+IFNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OmNyCiAKIGJvb2wgU2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGVEZWxlZ2F0ZU1hYzo6YWxsb3dzSG9yaXpvbnRhbFN0cmV0Y2hpbmcoY29uc3QgUGxh
dGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50KSBjb25zdAogeworICAgIGlmIChzaG91bGRTdG9w
SG9yaXpvbnRhbFN0cmVjaCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICBzd2l0Y2gg
KGhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5KCkpIHsKICAgICBjYXNlIFNjcm9sbEVsYXN0aWNp
dHlBdXRvbWF0aWM6IHsKICAgICAgICAgYm9vbCBzY3JvbGxiYXJzQWxsb3dTdHJldGNoaW5nID0g
YWxsb3dzSG9yaXpvbnRhbFNjcm9sbGluZygpIHx8ICFhbGxvd3NWZXJ0aWNhbFNjcm9sbGluZygp
OwpAQCAtMjg0LDYgKzI4Nyw5IEBAIGJvb2wgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxl
Z2F0ZU1hYzo6YWxsb3dzSG9yaXpvbnRhbFN0cmV0Y2hpbmcoY29uc3QgUGxhCiAKIGJvb2wgU2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6YWxsb3dzVmVydGljYWxTdHJldGNo
aW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCkgY29uc3QKIHsKKyAgICBp
ZiAoc2hvdWxkU3RvcFZlcnRpY2FsU3RyZWNoKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwog
ICAgIHN3aXRjaCAodmVydGljYWxTY3JvbGxFbGFzdGljaXR5KCkpIHsKICAgICBjYXNlIFNjcm9s
bEVsYXN0aWNpdHlBdXRvbWF0aWM6IHsKICAgICAgICAgYm9vbCBzY3JvbGxiYXJzQWxsb3dTdHJl
dGNoaW5nID0gYWxsb3dzVmVydGljYWxTY3JvbGxpbmcoKSB8fCAhYWxsb3dzSG9yaXpvbnRhbFNj
cm9sbGluZygpOwpAQCAtNDM3LDYgKzQ0MywxNiBAQCBGbG9hdFNpemUgU2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6dmlld3BvcnRTaXplKCkgY29uc3QKIH0KICNlbmRpZgog
Citib29sIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OnNob3VsZFN0b3BI
b3Jpem9udGFsU3RyZWNoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc2Nyb2xsaW5nTm9kZSgpLmhv
cml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSA9PSBPdmVyc2Nyb2xsQmVoYXZpb3I6Ok5vbmU7
Cit9CisKK2Jvb2wgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6c2hvdWxk
U3RvcFZlcnRpY2FsU3RyZWNoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc2Nyb2xsaW5nTm9kZSgp
LnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgPT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpOb25l
OworfQorCiB2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OmRlZmVy
V2hlZWxFdmVudFRlc3RDb21wbGV0aW9uRm9yUmVhc29uKFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6
U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdoZWVsRXZlbnRUZXN0TW9uaXRv
cjo6RGVmZXJSZWFzb24gcmVhc29uKSBjb25zdAogewogICAgIGlmICghc2Nyb2xsaW5nVHJlZSgp
LmlzTW9uaXRvcmluZ1doZWVsRXZlbnRzKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bs
YXRmb3JtV2hlZWxFdmVudC5oCmluZGV4IGQ3MTY5MzQ2YTI0MDIzYzJhNDc4N2FlMzQ1NDBhMzc2
MDdjMGEyZDUuLjY0MTc5N2E2ZjQxODc1MzM4Y2E3MWVhNzM5MTYwZDEwYjA2Zjg4ZTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oCkBAIC0yNiw2ICsy
Niw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKKyNpbmNsdWRl
ICJGbG9hdFNpemUuaCIKICNpbmNsdWRlICJJbnRQb2ludC5oIgogI2luY2x1ZGUgIlBsYXRmb3Jt
RXZlbnQuaCIKICNpbmNsdWRlIDx3dGYvV2luZG93c0V4dHJhcy5oPgpAQCAtMTc0LDYgKzE3NSw4
IEBAIHB1YmxpYzoKICAgICBQbGF0Zm9ybVdoZWVsRXZlbnQoSFdORCwgV1BBUkFNLCBMUEFSQU0s
IGJvb2wgaXNNb3VzZUhXaGVlbCk7CiAjZW5kaWYKIAorICAgIHN0YXRpYyBGbG9hdFNpemUgd2hl
ZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoY29uc3QgRmxvYXRTaXplJik7CisKIHByb3Rl
Y3RlZDoKICAgICBQbGF0Zm9ybVdoZWVsRXZlbnRHcmFudWxhcml0eSBtX2dyYW51bGFyaXR5IHsg
U2Nyb2xsQnlQaXhlbFdoZWVsRXZlbnQgfTsKICAgICBib29sIG1fZGlyZWN0aW9uSW52ZXJ0ZWRG
cm9tRGV2aWNlIHsgZmFsc2UgfTsKQEAgLTI2NCw2ICsyNjcsMTkgQEAgaW5saW5lIEZsb2F0UG9p
bnQgUGxhdGZvcm1XaGVlbEV2ZW50Ojpzd2lwZVZlbG9jaXR5KCkgY29uc3QKIAogI2VuZGlmIC8v
IEVOQUJMRShLSU5FVElDX1NDUk9MTElORykKIAoraW5saW5lIEZsb2F0U2l6ZSBQbGF0Zm9ybVdo
ZWVsRXZlbnQ6OndoZWVsRGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRpY2FsKGNvbnN0IEZsb2F0U2l6
ZSYgZGVsdGEpCit7CisgICAgYXV0byBkZWx0YVggPSBkZWx0YS53aWR0aCgpOworICAgIGF1dG8g
ZGVsdGFZID0gZGVsdGEuaGVpZ2h0KCk7CisKKyAgICBpZiAoZmFic2YoZGVsdGFZKSA+PSBmYWJz
ZihkZWx0YVgpKQorICAgICAgICBkZWx0YVggPSAwOworICAgIGVsc2UKKyAgICAgICAgZGVsdGFZ
ID0gMDsKKworICAgIHJldHVybiB7IGRlbHRhWCwgZGVsdGFZIH07Cit9CisKIFdFQkNPUkVfRVhQ
T1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBQ
bGF0Zm9ybVdoZWVsRXZlbnQmKTsKIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBzKTsKIFdF
QkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0m
LCBFdmVudEhhbmRsaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbFR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxUeXBlcy5oCmluZGV4
IDBiMWM0MDU2M2U4Y2JiODIyYTlmZWJhNGMwYzQ2NWY4YTU3NGE5M2IuLmY4ZjcxYzJlMWZmN2I5
ZTRkMmU3NTY5ZTdiMTkyMWI4MjIxZjg0ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbFR5cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
VHlwZXMuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJGbG9h
dFBvaW50LmgiCisjaW5jbHVkZSAiRmxvYXRTaXplLmgiCiAjaW5jbHVkZSAiSW50UG9pbnQuaCIK
ICNpbmNsdWRlIDxjc3RkaW50PgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CkBAIC0yNTks
NiArMjYwLDM0IEBAIGVudW0gY2xhc3MgU2Nyb2xsU25hcFBvaW50U2VsZWN0aW9uTWV0aG9kIDog
dWludDhfdCB7CiAgICAgQ2xvc2VzdCwKIH07CiAKK3N0cnVjdCBTY3JvbGxDaGFpbmluZ0Jsb2Nr
ZXIgeworICAgIGJvb2wgYmxvY2tYIHsgZmFsc2UgfTsKKyAgICBib29sIGJsb2NrWSB7IGZhbHNl
IH07CisKKyAgICBzdGF0aWMgYm9vbCBzaG91bGRCbG9ja1Njcm9sbENoYWluaW5nKGNvbnN0IFNj
cm9sbENoYWluaW5nQmxvY2tlciYgYmxvY2tlciwgY29uc3QgRmxvYXRTaXplJiBiaWFzZWREZWx0
YSkKKyAgICB7CisgICAgICAgIGlmICgoYmxvY2tlci5ibG9ja1ggJiYgYmxvY2tlci5ibG9ja1kp
CisgICAgICAgICAgICB8fCAoYmxvY2tlci5ibG9ja1ggJiYgIWJpYXNlZERlbHRhLmhlaWdodCgp
KQorICAgICAgICAgICAgfHwgKGJsb2NrZXIuYmxvY2tZICYmICFiaWFzZWREZWx0YS53aWR0aCgp
KSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorCisgICAgc3RhdGljIHZvaWQgZmlsdGVyRGVsdGEoY29uc3QgU2Nyb2xsQ2hhaW5pbmdCbG9j
a2VyJiBibG9ja2VyLCBjb25zdCBGbG9hdFNpemUmIGJpYXNlZERlbHRhLCBGbG9hdFNpemUmIGZp
bHRlcmVkRGVsdGEpCisgICAgeworICAgICAgICBpZiAoYmxvY2tlci5ibG9ja1gpIHsKKyAgICAg
ICAgICAgIGZpbHRlcmVkRGVsdGEuc2V0V2lkdGgoMCk7CisgICAgICAgICAgICBpZiAoIWJpYXNl
ZERlbHRhLmhlaWdodCgpKQorICAgICAgICAgICAgICAgIGZpbHRlcmVkRGVsdGEuc2V0SGVpZ2h0
KDApOworICAgICAgICB9CisgICAgICAgIGlmIChibG9ja2VyLmJsb2NrWSkgeworICAgICAgICAg
ICAgZmlsdGVyZWREZWx0YS5zZXRIZWlnaHQoMCk7CisgICAgICAgICAgICBpZiAoIWJpYXNlZERl
bHRhLndpZHRoKCkpCisgICAgICAgICAgICAgICAgZmlsdGVyZWREZWx0YS5zZXRXaWR0aCgwKTsK
KyAgICAgICAgfQorICAgIH0KK307CisKIHVzaW5nIFNjcm9sbGJhckNvbnRyb2xTdGF0ZSA9IHVu
c2lnbmVkOwogdXNpbmcgU2Nyb2xsYmFyQ29udHJvbFBhcnRNYXNrID0gdW5zaWduZWQ7CiB1c2lu
ZyBTY3JvbGxpbmdOb2RlSUQgPSB1aW50NjRfdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbGFibGVBcmVhLmNwcAppbmRleCA1ZjBlMmU2ZjAyMzlmYjRmZTRhYjI5YmIzMTRiODNlYWE5
OWNjZGUyLi5jZmVhMThiMTE2ZmFiZDM0NmM5ODA0MzUzMTFmZGVlY2U0Y2UwNmIzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwCkBAIC04NDgsNiArODQ4LDEy
IEBAIHZvaWQgU2Nyb2xsYWJsZUFyZWE6OmNvbXB1dGVTY3JvbGxiYXJWYWx1ZUFuZE92ZXJoYW5n
KGZsb2F0IGN1cnJlbnRQb3NpdGlvbiwgZmxvCiAgICAgfQogfQogCit2b2lkIFNjcm9sbGFibGVB
cmVhOjp1cGRhdGVTY3JvbGxDaGFpbmluZ0Jsb2NrZXJTdGF0ZShTY3JvbGxDaGFpbmluZ0Jsb2Nr
ZXImIGJsb2NrZXIpIGNvbnN0Cit7CisgICAgYmxvY2tlci5ibG9ja1ggfD0gaG9yaXpvbnRhbE92
ZXJzY3JvbGxCZWhhdmlvcigpICE9IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0bzsKKyAgICBibG9j
a2VyLmJsb2NrWSB8PSB2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpICE9IE92ZXJzY3JvbGxC
ZWhhdmlvcjo6QXV0bzsKK30KKwogVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0
cywgY29uc3QgU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhKQogewogICAgIHRzIDw8IHNj
cm9sbGFibGVBcmVhLmRlYnVnRGVzY3JpcHRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxhYmxlQXJlYS5oCmluZGV4IDlmY2Q1NDlhYmI2ZWRhMjA2ZTIyMGMwYmQ4ZGQ5MWZlZjI3
MmYzMGUuLjgzNjRlZWY1OTE0ZWFiMDE5NDMxMDBlZGIyZGIyZTI3ZTYwM2NhYzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaApAQCAtMTI0LDYgKzEyNCwxMCBAQCBw
dWJsaWM6CiAgICAgYm9vbCBjb25zdHJhaW5zU2Nyb2xsaW5nVG9Db250ZW50RWRnZSgpIGNvbnN0
IHsgcmV0dXJuIG1fY29uc3RyYWluc1Njcm9sbGluZ1RvQ29udGVudEVkZ2U7IH0KICAgICB2b2lk
IHNldENvbnN0cmFpbnNTY3JvbGxpbmdUb0NvbnRlbnRFZGdlKGJvb2wgY29uc3RyYWluc1Njcm9s
bGluZ1RvQ29udGVudEVkZ2UpIHsgbV9jb25zdHJhaW5zU2Nyb2xsaW5nVG9Db250ZW50RWRnZSA9
IGNvbnN0cmFpbnNTY3JvbGxpbmdUb0NvbnRlbnRFZGdlOyB9CiAKKyAgICB2aXJ0dWFsIE92ZXJz
Y3JvbGxCZWhhdmlvciBob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29uc3QgeyByZXR1
cm4gT3ZlcnNjcm9sbEJlaGF2aW9yOjpBdXRvOyB9CisgICAgdmlydHVhbCBPdmVyc2Nyb2xsQmVo
YXZpb3IgdmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdCB7IHJldHVybiBPdmVyc2Ny
b2xsQmVoYXZpb3I6OkF1dG87IH0KKyAgICB2b2lkIHVwZGF0ZVNjcm9sbENoYWluaW5nQmxvY2tl
clN0YXRlKFNjcm9sbENoYWluaW5nQmxvY2tlciYpIGNvbnN0OworCiAgICAgdm9pZCBzZXRWZXJ0
aWNhbFNjcm9sbEVsYXN0aWNpdHkoU2Nyb2xsRWxhc3RpY2l0eSBzY3JvbGxFbGFzdGljaXR5KSB7
IG1fdmVydGljYWxTY3JvbGxFbGFzdGljaXR5ID0gc2Nyb2xsRWxhc3RpY2l0eTsgfQogICAgIFNj
cm9sbEVsYXN0aWNpdHkgdmVydGljYWxTY3JvbGxFbGFzdGljaXR5KCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8U2Nyb2xsRWxhc3RpY2l0eT4obV92ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkp
OyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbENv
bnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xs
ZXIuaAppbmRleCA3MzAzMjQ0ZmM2MGZlZjM0MzkwYWQ2NGUyNTE5YWM1ZWIyMzIxNTA1Li4zOGRm
NThmYmZkOTVlNGYyMzkwMjVlNmMwNDg5YTNlODk1YjA5ODZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5oCkBAIC0xMTgsNiArMTE4LDEx
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIExheW91dFNpemUgc2Nyb2xsRXh0ZW50KCkgY29uc3Qg
PSAwOwogICAgIHZpcnR1YWwgRmxvYXRTaXplIHZpZXdwb3J0U2l6ZSgpIGNvbnN0ID0gMDsKICNl
bmRpZgorCisjaWYgUExBVEZPUk0oTUFDKQorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTdG9wSG9y
aXpvbnRhbFN0cmVjaCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29s
IHNob3VsZFN0b3BWZXJ0aWNhbFN0cmVjaCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisjZW5k
aWYKIH07CiAKIGVudW0gY2xhc3MgV2hlZWxFdmVudFN0YXR1cyB7CkBAIC0xNzMsOCArMTc4LDYg
QEAgcHVibGljOgogI2VuZGlmCiAjZW5kaWYKIAotICAgIHN0YXRpYyBGbG9hdFNpemUgd2hlZWxE
ZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jik7Ci0K
ICAgICBlbnVtIGNsYXNzIFdoZWVsQXhpc0JpYXMgeyBOb25lLCBWZXJ0aWNhbCB9OwogICAgIHN0
YXRpYyBPcHRpb25hbDxTY3JvbGxEaXJlY3Rpb24+IGRpcmVjdGlvbkZyb21FdmVudChjb25zdCBQ
bGF0Zm9ybVdoZWVsRXZlbnQmLCBPcHRpb25hbDxTY3JvbGxFdmVudEF4aXM+LCBXaGVlbEF4aXNC
aWFzID0gV2hlZWxBeGlzQmlhczo6Tm9uZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9sbGVyLm1tCmluZGV4IGQwOTVlNmIxNzNiOWY5MjBhMGQ0
ZDlhNTI1YjMxMTJkMzg1Y2RkYmIuLmI3MTg1NmY4NGNiNDgxMGUxMjEyMGI1ZTNlODdlNzA4ZTg0
NWFiOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbENv
bnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29u
dHJvbGxlci5tbQpAQCAtMjUyLDcgKzI1Miw4IEBAIGJvb2wgU2Nyb2xsQ29udHJvbGxlcjo6aGFu
ZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpCiAgICAg
ICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgbV9vdmVyZmxv
d1Njcm9sbERlbHRhLnNldFdpZHRoKG1fb3ZlcmZsb3dTY3JvbGxEZWx0YS53aWR0aCgpICsgZGVs
dGFYKTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgc2hvdWxkU3RyZXRjaCA9
IHRydWU7CisgICAgICAgICAgICAgICAgaWYgKCghZGVsdGFYIHx8ICFtX2NsaWVudC5zaG91bGRT
dG9wSG9yaXpvbnRhbFN0cmVjaCgpKSAmJiAoIWRlbHRhWSB8fCAhbV9jbGllbnQuc2hvdWxkU3Rv
cFZlcnRpY2FsU3RyZWNoKCkpKQorICAgICAgICAgICAgICAgICAgICBzaG91bGRTdHJldGNoID0g
dHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCkBAIC0zMjksMTkgKzMzMCw2IEBAIGJv
b2wgU2Nyb2xsQ29udHJvbGxlcjo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVs
RXZlbnQmIHdoZWVsRXZlbnQpCiB9CiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCi1GbG9hdFNp
emUgU2Nyb2xsQ29udHJvbGxlcjo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoY29u
c3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50KQotewotICAgIGF1dG8gZGVsdGFYID0g
d2hlZWxFdmVudC5kZWx0YVgoKTsKLSAgICBhdXRvIGRlbHRhWSA9IHdoZWVsRXZlbnQuZGVsdGFZ
KCk7Ci0KLSAgICBpZiAoZmFic2YoZGVsdGFZKSA+PSBmYWJzZihkZWx0YVgpKQotICAgICAgICBk
ZWx0YVggPSAwOwotICAgIGVsc2UKLSAgICAgICAgZGVsdGFZID0gMDsKLQotICAgIHJldHVybiB7
IGRlbHRhWCwgZGVsdGFZIH07Ci19Ci0KIE9wdGlvbmFsPFNjcm9sbERpcmVjdGlvbj4gU2Nyb2xs
Q29udHJvbGxlcjo6ZGlyZWN0aW9uRnJvbUV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYg
d2hlZWxFdmVudCwgT3B0aW9uYWw8U2Nyb2xsRXZlbnRBeGlzPiBheGlzLCBXaGVlbEF4aXNCaWFz
IGJpYXMpCiB7CiAgICAgLy8gRklYTUU6IEl0J3MgaW1wb3NzaWJsZSB0byBpbmZlciBkaXJlY3Rp
b24gZnJvbSBhIHNpbmdsZSBldmVudCwgc2luY2UgdGhlIHN0YXJ0IG9mIGEgZ2VzdHVyZSBpcyBl
aXRoZXIgemVybyBvcgpAQCAtMzQ5LDcgKzMzNyw3IEBAIE9wdGlvbmFsPFNjcm9sbERpcmVjdGlv
bj4gU2Nyb2xsQ29udHJvbGxlcjo6ZGlyZWN0aW9uRnJvbUV2ZW50KGNvbnN0IFBsYXRmb3JtV2hl
CiAKICAgICBhdXRvIHdoZWVsRGVsdGEgPSBGbG9hdFNpemUgeyB3aGVlbEV2ZW50LmRlbHRhWCgp
LCB3aGVlbEV2ZW50LmRlbHRhWSgpIH07CiAgICAgaWYgKGJpYXMgPT0gV2hlZWxBeGlzQmlhczo6
VmVydGljYWwpCi0gICAgICAgIHdoZWVsRGVsdGEgPSB3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNW
ZXJ0aWNhbCh3aGVlbEV2ZW50KTsKKyAgICAgICAgd2hlZWxEZWx0YSA9IFBsYXRmb3JtV2hlZWxF
dmVudDo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwod2hlZWxFdmVudC5kZWx0YSgp
KTsKIAogICAgIGlmIChheGlzKSB7CiAgICAgICAgIHN3aXRjaCAoYXhpcy52YWx1ZSgpKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5oCmluZGV4
IDQ5ZjBiNGIxZDc5Zjc3YTk2OGE5NTJmOGFlYjk3OTU0ZTI5NzJlMjkuLmE2Y2EwYWZlZWQ1NTRj
YWQ5MzM3M2E0NGJmODE4M2RmMTcxMWI4NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5oCkBAIC0xNTYsNiArMTU2LDkgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGFkanVzdFNjcm9sbFBvc2l0aW9uVG9Cb3VuZHNJZk5lY2Vzc2FyeSgpIGZpbmFs
OwogI2VuZGlmCiAKKyAgICBib29sIHNob3VsZFN0b3BIb3Jpem9udGFsU3RyZWNoKCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgYm9vbCBzaG91bGRTdG9wVmVydGljYWxTdHJlY2goKSBjb25zdCBvdmVy
cmlkZTsKKwogICAgIGJvb2wgbV9oYXZlU2Nyb2xsZWRTaW5jZVBhZ2VMb2FkOwogICAgIGJvb2wg
bV9uZWVkc1Njcm9sbGVyU3R5bGVVcGRhdGU7CiAgICAgSW50UmVjdCBtX3Zpc2libGVTY3JvbGxl
clRodW1iUmVjdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3Jv
bGxBbmltYXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmlt
YXRvck1hYy5tbQppbmRleCA2MTUxZGVmYzBlYWVjM2EwNTcxNTAyMGFlNjUwMDIzYmFjZjE0YjNj
Li5lOGU2YWZjMjQ1NjcyNzBhZjcwNGQ1MDAzZTM1MTM0ZjYzOGZmMjcyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tCkBAIC0xNTM2LDYg
KzE1MzYsMTYgQEAgdm9pZCBTY3JvbGxBbmltYXRvck1hYzo6c2V0VmlzaWJsZVNjcm9sbGVyVGh1
bWJSZWN0KGNvbnN0IEludFJlY3QmIHNjcm9sbGVyVGh1bWIKICAgICBtX3Zpc2libGVTY3JvbGxl
clRodW1iUmVjdCA9IHJlY3RJblZpZXdDb29yZGluYXRlczsKIH0KIAorYm9vbCBTY3JvbGxBbmlt
YXRvck1hYzo6c2hvdWxkU3RvcEhvcml6b250YWxTdHJlY2goKSBjb25zdAoreworICAgIHJldHVy
biBtX3Njcm9sbGFibGVBcmVhLmhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSA9PSBPdmVy
c2Nyb2xsQmVoYXZpb3I6Ok5vbmU7Cit9CisKK2Jvb2wgU2Nyb2xsQW5pbWF0b3JNYWM6OnNob3Vs
ZFN0b3BWZXJ0aWNhbFN0cmVjaCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2Nyb2xsYWJsZUFy
ZWEudmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSA9PSBPdmVyc2Nyb2xsQmVoYXZpb3I6Ok5v
bmU7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTTU9P
VEhfU0NST0xMSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5k
ZXggNzQ0MGEyMWIyMGI5MDg5NzQzMjQyZWFlNTM3NmNmNzY5Nzk2NTY3MC4uZDJiZjI1YjM1MjUx
MTU2NTAxNTFkZTI2OGJmYjVmYmVkOTQ2ZjczMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuY3BwCkBAIC02MTYsNiArNjE2LDI0IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnNl
dENvbnN0cmFpbnNTY3JvbGxpbmdUb0NvbnRlbnRFZGdlKGJvb2wgY29uc3RyYWluc1Njcm9sbGlu
Z1RvCiAgICAgaWYgKG1fc2Nyb2xsYWJsZUFyZWEpCiAgICAgICAgIG1fc2Nyb2xsYWJsZUFyZWEt
PnNldENvbnN0cmFpbnNTY3JvbGxpbmdUb0NvbnRlbnRFZGdlKGNvbnN0cmFpbnNTY3JvbGxpbmdU
b0NvbnRlbnRFZGdlKTsKIH0KKworT3ZlcnNjcm9sbEJlaGF2aW9yIFJlbmRlckxheWVyOjpob3Jp
em9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29uc3QKK3sKKyAgICBjb25zdCBSZW5kZXJTdHls
ZSYgc3R5bGUgPSByZW5kZXJlcigpLnN0eWxlKCk7CisgICAgLy8gQW4gZWxlbWVudCB0aGF0IGlz
IG5vdCBzY3JvbGwgY29udGFpbmVyIG11c3QgYWNjZXB0IGJ1dCBpZ25vcmUgdGhlIHZhbHVlcyBv
ZiB0aGlzIHByb3BlcnR5LgorICAgIGlmIChyZW5kZXJCb3goKSAmJiByZW5kZXJCb3goKS0+Y2Fu
QmVTY3JvbGxlZEFuZEhhc1Njcm9sbGFibGVBcmVhKCkpCisgICAgICAgIHJldHVybiBzdHlsZS5v
dmVyc2Nyb2xsQmVoYXZpb3JYKCk7CisgICAgcmV0dXJuIFNjcm9sbGFibGVBcmVhOjpob3Jpem9u
dGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCk7Cit9CisKK092ZXJzY3JvbGxCZWhhdmlvciBSZW5kZXJM
YXllcjo6dmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdAoreworICAgIGNvbnN0IFJl
bmRlclN0eWxlJiBzdHlsZSA9IHJlbmRlcmVyKCkuc3R5bGUoKTsKKyAgICAvLyBBbiBlbGVtZW50
IHRoYXQgaXMgbm90IHNjcm9sbCBjb250YWluZXIgbXVzdCBhY2NlcHQgYnV0IGlnbm9yZSB0aGUg
dmFsdWVzIG9mIHRoaXMgcHJvcGVydHkuCisgICAgaWYgKHJlbmRlckJveCgpICYmIHJlbmRlckJv
eCgpLT5jYW5CZVNjcm9sbGVkQW5kSGFzU2Nyb2xsYWJsZUFyZWEoKSkKKyAgICAgICAgcmV0dXJu
IHN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclkoKTsKKyAgICByZXR1cm4gU2Nyb2xsYWJsZUFyZWE6
OnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCk7Cit9CiAvLyBFbmQgb2YgdGVtcG9yYXJ5IGds
dWUgY29kZQogCiB2b2lkIFJlbmRlckxheWVyOjphZGRDaGlsZChSZW5kZXJMYXllciYgY2hpbGQs
IFJlbmRlckxheWVyKiBiZWZvcmVDaGlsZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmgKaW5kZXggNzYyNWY0MTcxMTZmMGRmMjk5NDljOWI1MzIxY2Y1OWRjMTE3MDI0Zi4uYjNl
YzVmNGRlNDIwMDAyMTIxNzY1MTg4OGFmMDY1ZmNiMThkMGMyYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmgKQEAgLTIwNSw2ICsyMDUsOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzY3JvbGxUb1hPZmZzZXQoaW50IHgpIHsgc2Nyb2xsVG9PZmZzZXQoU2Nyb2xsT2Zmc2V0KHgs
IHNjcm9sbE9mZnNldCgpLnkoKSksIFNjcm9sbFBvc2l0aW9uQ2hhbmdlT3B0aW9uczo6Y3JlYXRl
UHJvZ3JhbW1hdGljVW5jbGFtcGVkKCkpOyB9CiAgICAgdm9pZCBzY3JvbGxUb1lPZmZzZXQoaW50
IHkpIHsgc2Nyb2xsVG9PZmZzZXQoU2Nyb2xsT2Zmc2V0KHNjcm9sbE9mZnNldCgpLngoKSwgeSks
IFNjcm9sbFBvc2l0aW9uQ2hhbmdlT3B0aW9uczo6Y3JlYXRlUHJvZ3JhbW1hdGljVW5jbGFtcGVk
KCkpOyB9CiAgICAgdm9pZCBzZXRDb25zdHJhaW5zU2Nyb2xsaW5nVG9Db250ZW50RWRnZShib29s
KTsKKyAgICBPdmVyc2Nyb2xsQmVoYXZpb3IgaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigp
IGNvbnN0OworICAgIE92ZXJzY3JvbGxCZWhhdmlvciB2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlv
cigpIGNvbnN0OwogICAgIC8vIEVuZCBvZiB0ZW1wb3JhcnkgZ2x1ZSBjb2RlCiAKICNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5jcHAKaW5kZXggZmFhYTJhZGNmOTkxYjEzNjU5M2M1NTk2MDY0NmZmMWY0ODBjZjFk
Ny4uZGI2YzUyYzM0ZTA3YTk5ZWMxZTUzMDZkMmQ2NDQwZTYzZTM3NWFkZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0yMDE5LDYgKzIw
MTksOSBAQCBib29sIEFyZ3VtZW50Q29kZXI8VXNlclN0eWxlU2hlZXQ+OjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlciwgVXNlclN0eWxlU2hlZXQmIHVzZQogCiB2b2lkIEFyZ3VtZW50Q29kZXI8U2Ny
b2xsYWJsZUFyZWFQYXJhbWV0ZXJzPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNj
cm9sbGFibGVBcmVhUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKKyAgICBlbmNvZGVyIDw8IHBh
cmFtZXRlcnMuaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcjsKKyAgICBlbmNvZGVyIDw8IHBh
cmFtZXRlcnMudmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3I7CisKICAgICBlbmNvZGVyIDw8IHBh
cmFtZXRlcnMuaG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHk7CiAgICAgZW5jb2RlciA8PCBwYXJh
bWV0ZXJzLnZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eTsKIApAQCAtMjAzNiw2ICsyMDM5LDExIEBA
IHZvaWQgQXJndW1lbnRDb2RlcjxTY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnM+OjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlciwgY29uc3QgU2NyCiAKIGJvb2wgQXJndW1lbnRDb2RlcjxTY3JvbGxhYmxl
QXJlYVBhcmFtZXRlcnM+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgU2Nyb2xsYWJsZUFyZWFQ
YXJhbWV0ZXJzJiBwYXJhbXMpCiB7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbXMuaG9y
aXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtcy52ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcikpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1zLmhv
cml6b250YWxTY3JvbGxFbGFzdGljaXR5KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocGFyYW1zLnZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eSkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IGZhOTZjZGE4
NGVjYjdkNDg4YWU0MjkxMzNjMGY1YjQ0MzcwNDhkYjEuLjM5NTM1Njc4M2ZkYTU2ZmUxYzFhYjBk
OTIzNzI4NWYzNjY0NmYwOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5oCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZWFsdGlt
ZU1lZGlhU291cmNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJpbmdNb2RlLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1Njcm9sbFR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJpYWxpemVkUGxhdGZvcm1EYXRh
Q3VlVmFsdWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJUeXBlcy5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kuaD4KQEAgLTg5Niw2ICs4OTcs
MTUgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTDo6QWN0aXZlSW5mbz4gewogCiBuYW1lc3BhY2UgV1RGIHsKIAordGVtcGxhdGU8PiBz
dHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpPdmVyc2Nyb2xsQmVoYXZpb3I+IHsKKyAgICB1c2lu
ZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgIFdlYkNvcmU6Ok92ZXJzY3JvbGxCZWhhdmlvciwK
KyAgICBXZWJDb3JlOjpPdmVyc2Nyb2xsQmVoYXZpb3I6OkF1dG8sCisgICAgV2ViQ29yZTo6T3Zl
cnNjcm9sbEJlaGF2aW9yOjpDb250YWluLAorICAgIFdlYkNvcmU6Ok92ZXJzY3JvbGxCZWhhdmlv
cjo6Tm9uZQorICAgID47Cit9OworCiB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNv
cmU6OkNvbG9yU3BhY2U+IHsKICAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAogICAgIFdl
YkNvcmU6OkNvbG9yU3BhY2UsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJIVE1MVmlldy5tbQppbmRleCA5NjIwZTg2ZmIwYTcyMDE0MDFjMmNhZDU1MWRlMmNmYjg4ODli
ZWRiLi5iOGNmMmU3ZmU3NDZiZTg2MjE0OTVmYzE0MzEzODJiMDY1Mzk5ZGMzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTQwOTMsNiAr
NDA5Myw4IEBAIHN0YXRpYyBCT09MIGN1cnJlbnRTY3JvbGxJc0JsaXQoTlNWaWV3ICpjbGlwVmll
dykKICAgICBhdXRvKiBmcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSk7CiAgICAgaWYgKCFmcmFt
ZSB8fCAhZnJhbWUtPmV2ZW50SGFuZGxlcigpLndoZWVsRXZlbnQoZXZlbnQpKSB7CiAjaWYgUExB
VEZPUk0oTUFDKQorICAgICAgICAvLyBGSVhNRTogTmVlZCB0byBmaW5kIGEgd2F5IHRvIGJsb2Nr
IHRoZSBjcm9zcy1mcmFtZSBzY3JvbGwgY2hhaW5pbmcgaW4gV0sxLgorICAgICAgICAvLyBXZSBj
YW4gbm90IGp1c3Qgc2tpcCB0aGUgc2Nyb2xsIGhlcmUsIGl0IG5vdCBvbmx5IGJsb2NrcyBzY3Jv
bGwgY2hhaW5pbmcgYnV0IGFsc28gYmxvY2tzIHRoZSBzY3JvbGwgb24gY3VycmVudCB2aWV3Lgog
ICAgICAgICBbc3VwZXIgc2Nyb2xsV2hlZWw6ZXZlbnRdOwogI2VuZGlmCiAgICAgfQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IDMwMDExNTQ4OTExYTU0ZGI4OWZjODhhOTMzNDNiMDRiNjE1N2Y1YTIuLjkxZGQ2MjI2YzIwMjZm
NjNkZWU4Y2Y5YWQ3NTA0OWFlZWZjYTU1NTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAyMS0w
MS0xNSAgQ2F0aGllIENoZW4gIDxjYXRoaWVjaGVuQGlnYWxpYS5jb20+CisKKyAgICAgICAgSW1w
bGVtZW50IENTUyBvdmVyc2Nyb2xsLWJlaGF2aW9yIG9uIE1hYworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwMTM5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmFzZWQgb24gRnLDqWTDqXJpYyBXYW5nJ3Mg
cGF0Y2guCisKKyAgICAgICAgKiBUZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIGZhc3Qvc2Ny
b2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLWlm
cmFtZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL292ZXJz
Y3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2Nyb2xs
aW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXVu
c2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5n
L292ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3Jv
bGxhYmxlLWlmcmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9yZXNv
dXJjZXMvb3ZlcnNjcm9sbC1iZWhhdmlvci1zdXBwb3J0LmpzOiBBZGRlZC4KKyAgICAgICAgKGFz
eW5jIHBlcmZvcm1XaGVlbFNjcm9sbCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMS9UZXN0
RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9u
czoKKwogMjAyMS0wMS0xNSAgUm9iIEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgogCiAgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjAyMjQKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0
YXRpb25zCmluZGV4IDhjYmIyMjgxZDFkMzhhY2MwNTA5Yzc4ZTM3MDQ5MWYyY2UyZTgyNzQuLjM4
MGJhZmM4YTQ3N2MwYzBjOGZmOGYyZDE1ODU4MzVmNWExMDliMzMgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9u
cwpAQCAtMTAyNCw2ICsxMDI0LDEyIEBAIHdlYmtpdC5vcmcvYi8yMDMxNDYgaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9vZmZzY3JlZW4gWyBTa2lwCiAjIFRlc3Rz
IGEgc2V0dGluZyBiZWhpbmQgdGhlIEVOQUJMRV9GVUxMU0NSRUVOX0FQSSBmbGFnLCB3aGljaCBp
cyBXSzItb25seQogbWVkaWEvdmlkZW8tc3VwcG9ydHMtZnVsbHNjcmVlbi5odG1sIFsgU2tpcCBd
CiAKKyMgVGVzdHMgb3ZlcnNjcm9sbC1iZWhhdmlvciwgd2hpY2ggb25seSBzdXBwb3J0ZWQgb24g
TWFjCitmYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQuaHRtbCBbIFNr
aXAgXQorZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUuaHRtbCBbIFNr
aXAgXQorZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxl
bWVudC5odG1sIFsgU2tpcCBdCitmYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXVu
c2Nyb2xsYWJsZS1pZnJhbWUuaHRtbCBbIFNraXAgXQorCiAjLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vCiAjIEVuZCBwbGF0Zm9ybS1zcGVjaWZpYyB0ZXN0cy4KICMvLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Ny
b2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9mYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjI3MTUwZmY2MGI1ZGJkZDBiNGE3YWM2ZjgzZmI1NmY1N2NkMmNkODIK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xs
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
cy9mYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRiNGRhNTk3M2RiYzgxZTcxYzM5ZWIxZGYxYjZkMDgzZGQ4Nzg3MGEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2
aW9yLWVsZW1lbnQuaHRtbApAQCAtMCwwICsxLDc4IEBACis8IWRvY3R5cGUgaHRtbD4KKworPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb3ZlcnNjcm9sbC1iZWhhdmlvci1zdXBwb3J0LmpzIj48
L3NjcmlwdD4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3Jn
L2Nzcy1vdmVyc2Nyb2xsLWJlaGF2aW9yIj4KKzxzdHlsZT4KKyAgICAuc2Nyb2xsaW5nIHsKKyAg
ICAgICAgb3ZlcmZsb3c6IHNjcm9sbDsKKyAgICB9CisgICAgLnNjcm9sbENvbnRlbnQgeworICAg
ICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgfQorICAgICNy
b290IHsKKyAgICAgICAgd2lkdGg6IDIwMHB4OworICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAg
IH0KKyAgICAjc2Nyb2xsZXIgeworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdo
dDogMTAwcHg7CisgICAgfQorPC9zdHlsZT4KKzxkaXYgaWQ9J3Jvb3QnIGNsYXNzPSJzY3JvbGxp
bmciPgorICAgIDxkaXYgaWQ9J3Njcm9sbGVyJyBjbGFzcz0ic2Nyb2xsaW5nIj4KKyAgICAgICAg
PGRpdiBjbGFzcz0ic2Nyb2xsQ29udGVudCI+PC9kaXY+CisgICAgPC9kaXY+CisgICAgPGRpdiBj
bGFzcz0ic2Nyb2xsQ29udGVudCI+PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4KK2NvbnN0IHJv
b3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncm9vdCcpOworY29uc3Qgc2Nyb2xsZXIgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2Nyb2xsZXInKTsKK3ZhciBvdmVyc2Nyb2xsRGF0YXMg
PSBbWyJhdXRvIiwgImF1dG8iLCB0cnVlLCB0cnVlXSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IFsiY29udGFpbiIsICJhdXRvIiwgZmFsc2UsIHRydWVdLAorICAgICAgICAgICAgICAgICAgICAg
ICAgWyJub25lIiwgImF1dG8iLCBmYWxzZSwgdHJ1ZV0sCisgICAgICAgICAgICAgICAgICAgICAg
ICBbImF1dG8iLCAiY29udGFpbiIsIHRydWUsIGZhbHNlXSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIFsiY29udGFpbiIsICJjb250YWluIiwgZmFsc2UsIGZhbHNlXSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIFsibm9uZSIsICJjb250YWluIiwgZmFsc2UsIGZhbHNlXSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIFsiYXV0byIsICJub25lIiwgdHJ1ZSwgZmFsc2VdLAorICAgICAgICAgICAg
ICAgICAgICAgICAgWyJjb250YWluIiwgIm5vbmUiLCBmYWxzZSwgZmFsc2VdLAorICAgICAgICAg
ICAgICAgICAgICAgICAgWyJub25lIiwgIm5vbmUiLCBmYWxzZSwgZmFsc2VdXTsKKworZnVuY3Rp
b24gcmVzZXRUZXN0KCkgeworICAgIC8vIFRyeSB2YXJpb3VzIG1ldGhvZHMgdG8gZW5zdXJlIHRo
ZSBlbGVtZW50IHBvc2l0aW9uIGlzIHJlc2V0IGltbWVkaWF0ZWx5LgorICAgIHNjcm9sbGVyLnNj
cm9sbExlZnQgPSAzMDA7CisgICAgc2Nyb2xsZXIuc2Nyb2xsVG9wID0gMzAwOworICAgIHNjcm9s
bGVyLnNjcm9sbFRvKDMwMCwgMzAwKTsKKworICAgIHJvb3Quc2Nyb2xsTGVmdCA9IDA7CisgICAg
cm9vdC5zY3JvbGxUb3AgPSAwOworICAgIHJvb3Quc2Nyb2xsVG8oMCwgMCk7Cit9CisKK2Z1bmN0
aW9uIHN0YXJ0VGVzdCgpIHsKKyAgICBvdmVyc2Nyb2xsRGF0YXMuZm9yRWFjaCgoW292ZXJzY3Jv
bGxYLCBvdmVyc2Nyb2xsWSwgcHJvcGFnYXRlWCwgcHJvcGFnYXRlWV0pID0+IHsKKyAgICAgICAg
cHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAgIHJlc2V0VGVzdCgpOworICAgICAgICAg
ICAgc2Nyb2xsZXIuc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWCA9IG92ZXJzY3JvbGxYOworICAg
ICAgICAgICAgc2Nyb2xsZXIuc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWSA9IG92ZXJzY3JvbGxZ
OworICAgICAgICAgICAgcmV0dXJuIHBlcmZvcm1XaGVlbFNjcm9sbChzY3JvbGxlciwgInJpZ2h0
IikudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9s
bExlZnQgPiAwLCBwcm9wYWdhdGVYLCAnQ29udGludWUgdXAgdGhlIGhvcml6b250YWwgc2Nyb2xs
IGNoYWluaW5nJyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSwgJ0VsZW1lbnQgaG9yaXpv
bnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6ICcgKyBvdmVyc2Nyb2xs
WCArICcgJyArIG92ZXJzY3JvbGxZICsgJy4nKTsKKworICAgICAgICBwcm9taXNlX3Rlc3QoKCkg
PT4geworICAgICAgICAgICAgcmVzZXRUZXN0KCk7CisgICAgICAgICAgICBzY3JvbGxlci5zdHls
ZS5vdmVyc2Nyb2xsQmVoYXZpb3JYID0gb3ZlcnNjcm9sbFg7CisgICAgICAgICAgICBzY3JvbGxl
ci5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JZID0gb3ZlcnNjcm9sbFk7CisgICAgICAgICAgICBy
ZXR1cm4gcGVyZm9ybVdoZWVsU2Nyb2xsKHNjcm9sbGVyLCAiZG93biIpLnRoZW4oKCkgPT4gewor
ICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxUb3AgPiAwLCBwcm9wYWdh
dGVZLCAnQ29udGludWUgdXAgdGhlIHZlcnRpY2FsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAg
ICAgICAgfSk7CisgICAgICAgIH0sICdFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGgg
b3ZlcnNjcm9sbC1iZWhhdmlvcjogJyArIG92ZXJzY3JvbGxYICsgJyAnICsgb3ZlcnNjcm9sbFkg
KyAnLicpOworICAgIH0pOworfQorCithZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgc3RhcnRUZXN0
KTsKKzwvc2NyaXB0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3It
aWZyYW1lLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MDBhMGI3ZDkwNWI4N2MxZGI3NjI2OTRm
ZDAwNjM4ZjE5NzY5NTM3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3Jv
bGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MjEgQEAKKworCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNj
cm9sbC1iZWhhdmlvcjogYXV0byBhdXRvLgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRl
c3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIGF1dG8uCitQQVNTIElmcmFtZSBob3Jp
em9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBhdXRv
LgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2
aW9yOiBjb250YWluIGF1dG8uCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdp
dGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBhdXRvLgorUEFTUyBJZnJhbWUgdmVydGljYWwg
c2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIGF1dG8uCitQQVNTIElm
cmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0
byBjb250YWluLgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Ny
b2xsLWJlaGF2aW9yOiBhdXRvIGNvbnRhaW4uCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9s
bCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBjb250YWluLgorUEFTUyBJ
ZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250
YWluIGNvbnRhaW4uCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3Zl
cnNjcm9sbC1iZWhhdmlvcjogbm9uZSBjb250YWluLgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Ny
b2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIGNvbnRhaW4uCitQQVNTIElm
cmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0
byBub25lLgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xs
LWJlaGF2aW9yOiBhdXRvIG5vbmUuCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0
IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBub25lLgorUEFTUyBJZnJhbWUgdmVy
dGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIG5vbmUu
CitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhh
dmlvcjogbm9uZSBub25lLgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBv
dmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIG5vbmUuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjViOTAxZDM3MGE4NmYxYzY1MjEzOTEyNGMxZjk0NjIwODZjNDMwN2IKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9y
LWlmcmFtZS5odG1sCkBAIC0wLDAgKzEsODEgQEAKKzwhZG9jdHlwZSBodG1sPgorCis8c2NyaXB0
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
MzAwKTsKKworICAgICAgICByb290LnNjcm9sbExlZnQgPSAwOworICAgICAgICByb290LnNjcm9s
bFRvcCA9IDA7CisgICAgICAgIHJvb3Quc2Nyb2xsVG8oMCwgMCk7CisgICAgfQorCisgICAgZnVu
Y3Rpb24gb3ZlcnNjcm9sbEJlaGF2aW9yVGVzdCgpIHsKKyAgICAgICAgb3ZlcnNjcm9sbERhdGFz
LmZvckVhY2goKFtvdmVyc2Nyb2xsWCwgb3ZlcnNjcm9sbFksIHByb3BhZ2F0ZVgsIHByb3BhZ2F0
ZVldKSA9PiB7CisgICAgICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgICAgICAgICAg
ICAgIHJlc2V0VGVzdCgpOworICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSBzY3JvbGxlci5j
b250ZW50V2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJodG1sIilbMF07Cisg
ICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclggPSBvdmVyc2Ny
b2xsWDsKKyAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWSA9
IG92ZXJzY3JvbGxZOworCisgICAgICAgICAgICAgICAgcmV0dXJuIHBlcmZvcm1XaGVlbFNjcm9s
bChzY3JvbGxlciwgInJpZ2h0IikudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgICAgIGFz
c2VydF9lcXVhbHMocm9vdC5zY3JvbGxMZWZ0ID4gMCwgcHJvcGFnYXRlWCwgJ0NvbnRpbnVlIHVw
IHRoZSBob3Jpem9udGFsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAgICAgICAgICAgIH0pOwor
ICAgICAgICAgICAgfSwgJ0lmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNj
cm9sbC1iZWhhdmlvcjogJyArIG92ZXJzY3JvbGxYICsgJyAnICsgb3ZlcnNjcm9sbFkgKyAnLicp
OworCisgICAgICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgICAgICAgICAgICAgIHJl
c2V0VGVzdCgpOworICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSBzY3JvbGxlci5jb250ZW50
V2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJodG1sIilbMF07CisgICAgICAg
ICAgICAgICAgdGFyZ2V0LnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclggPSBvdmVyc2Nyb2xsWDsK
KyAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWSA9IG92ZXJz
Y3JvbGxZOworICAgICAgICAgICAgICAgIHJldHVybiBwZXJmb3JtV2hlZWxTY3JvbGwoc2Nyb2xs
ZXIsICJkb3duIikudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydF9lcXVh
bHMocm9vdC5zY3JvbGxUb3AgPiAwLCBwcm9wYWdhdGVZLCAnQ29udGludWUgdXAgdGhlIHZlcnRp
Y2FsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAg
fSwgJ0lmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6
ICcgKyBvdmVyc2Nyb2xsWCArICcgJyArIG92ZXJzY3JvbGxZICsgJy4nKTsKKyAgICAgICAgfSk7
CisgICAgfQorCisgICAgc2Nyb2xsZXIuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIG92ZXJzY3Jv
bGxCZWhhdmlvclRlc3QpOworPC9zY3JpcHQ+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlv
ci11bnNjcm9sbGFibGUtZWxlbWVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3Nj
cm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50LWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mMzk1YjY0ODhkMDg3MGI5NTYxYzAyODY3OWQ3ZTE1YTQ3ZmNlNmU5
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9s
bC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0
IEBACisKK1BBU1MgVW5zY3JvbGxhYmxlIGVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3
aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuCitQQVNTIFVuc2Nyb2xsYWJsZSBlbGVtZW50
IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4KKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlv
ci11bnNjcm9sbGFibGUtZWxlbWVudC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcv
b3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjM0NTFiNDNjZDEwMGI1ZTBlOGRmODNjNjk3OWRhNDZhOGQ2Y2YzMDEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Ny
b2xsYWJsZS1lbGVtZW50Lmh0bWwKQEAgLTAsMCArMSw2MSBAQAorPCFkb2N0eXBlIGh0bWw+CisK
KzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL292ZXJzY3JvbGwtYmVoYXZpb3Itc3VwcG9ydC5q
cyI+PC9zY3JpcHQ+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vZHJhZnRzLmNzc3dn
Lm9yZy9jc3Mtb3ZlcnNjcm9sbC1iZWhhdmlvciI+Cis8c3R5bGU+CisgICAgLnNjcm9sbGluZyB7
CisgICAgICAgIG92ZXJmbG93OiBzY3JvbGw7CisgICAgfQorICAgIC5zY3JvbGxDb250ZW50IHsK
KyAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgIH0KKyAg
ICAjcm9vdCB7CisgICAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgICAgaGVpZ2h0OiAyMDBweDsK
KyAgICB9CisgICAgI3Njcm9sbGVyIHsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBo
ZWlnaHQ6IDEwMHB4OworICAgICAgICBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lOworICAgICAg
ICBvdmVyZmxvdzogdmlzaWJsZTsKKyAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50
KDEzNWRlZywgcmVkLCBibHVlKTsKKyAgICB9Cis8L3N0eWxlPgorPGRpdiBpZD0icm9vdCIgY2xh
c3M9InNjcm9sbGluZyI+CisgICAgPGRpdiBpZD0ic2Nyb2xsZXIiPgorICAgICAgICA8ZGl2IGNs
YXNzPSJzY3JvbGxDb250ZW50Ij48L2Rpdj4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJz
Y3JvbGxDb250ZW50Ij48L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0PgorY29uc3Qgcm9vdCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdyb290Jyk7Citjb25zdCBzY3JvbGxlciA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdzY3JvbGxlcicpOworZnVuY3Rpb24gcmVzZXRUZXN0KCkgeworICAg
IHJvb3Quc2Nyb2xsTGVmdCA9IDA7CisgICAgcm9vdC5zY3JvbGxUb3AgPSAwOworICAgIHJvb3Qu
c2Nyb2xsVG8oMCwgMCk7Cit9CisKK2Z1bmN0aW9uIHN0YXJ0VGVzdCgpIHsKKyAgICAgICAgcHJv
bWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAgIHJlc2V0VGVzdCgpOworICAgICAgICAgICAg
cmV0dXJuIHBlcmZvcm1XaGVlbFNjcm9sbChzY3JvbGxlciwgInJpZ2h0IikudGhlbigoKSA9PiB7
CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbExlZnQgPiAwLCB0cnVl
LCAnQ29udGludWUgdXAgdGhlIGhvcml6b250YWwgc2Nyb2xsIGNoYWluaW5nJyk7CisgICAgICAg
ICAgICB9KTsKKyAgICAgICAgfSwgJ1Vuc2Nyb2xsYWJsZSBlbGVtZW50IGhvcml6b250YWwgc2Ny
b2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLicpOworCisgICAgICAgIHBy
b21pc2VfdGVzdCgoKSA9PiB7CisgICAgICAgICAgICByZXNldFRlc3QoKTsKKworICAgICAgICAg
ICAgcmV0dXJuIHBlcmZvcm1XaGVlbFNjcm9sbChzY3JvbGxlciwgImRvd24iKS50aGVuKCgpID0+
IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsVG9wID4gMCwgdHJ1
ZSwgJ0NvbnRpbnVlIHVwIHRoZSB2ZXJ0aWNhbCBzY3JvbGwgY2hhaW5pbmcnKTsKKyAgICAgICAg
ICAgIH0pOworICAgICAgICB9LCAnVW5zY3JvbGxhYmxlIGVsZW1lbnQgdmVydGljYWwgc2Nyb2xs
IHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLicpOworfQorCithZGRFdmVudExp
c3RlbmVyKCJsb2FkIiwgc3RhcnRUZXN0KTsKKzwvc2NyaXB0PgpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3Jv
bGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9mYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdmYTU5Y2NiYTc5YWVmZjMzZGE3MGU5M2Q0ODhhMDdl
ZWM5YzU2OTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9v
dmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsNSBAQAorCisKK1BBU1MgVW5zY3JvbGxhYmxlIGlmcmFtZSBob3Jpem9udGFsIHNjcm9s
bCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4KK1BBU1MgVW5zY3JvbGxhYmxl
IGlmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5v
bmUuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwt
YmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3Jv
bGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZTZjNjNmOGNiM2QxNGJlZjhlZGJhYTExZDVlYWYyNmVkZDNhMGJlMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3It
dW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sCkBAIC0wLDAgKzEsNjEgQEAKKzwhZG9jdHlwZSBodG1s
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
dFRlc3QoKTsKKyAgICAgICAgICAgIHJldHVybiBwZXJmb3JtV2hlZWxTY3JvbGwoc2Nyb2xsZXIs
ICJyaWdodCIpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9v
dC5zY3JvbGxMZWZ0ID4gMCwgdHJ1ZSwgJ0NvbnRpbnVlIHVwIHRoZSBob3Jpem9udGFsIHNjcm9s
bCBjaGFpbmluZycpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0sICdVbnNjcm9sbGFibGUg
aWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBu
b25lLicpOworCisgICAgICAgIHByb21pc2VfdGVzdCgoKSA9PiB7CisgICAgICAgICAgICByZXNl
dFRlc3QoKTsKKworICAgICAgICAgICAgcmV0dXJuIHBlcmZvcm1XaGVlbFNjcm9sbChzY3JvbGxl
ciwgImRvd24iKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJv
b3Quc2Nyb2xsVG9wID4gMCwgdHJ1ZSwgJ0NvbnRpbnVlIHVwIHRoZSB2ZXJ0aWNhbCBzY3JvbGwg
Y2hhaW5pbmcnKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9LCAnVW5zY3JvbGxhYmxlIGlm
cmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUu
Jyk7Cit9CisKK2FkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBzdGFydFRlc3QpOworPC9zY3JpcHQ+
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9zY3JvbGxpbmcvcmVzb3VyY2VzL292ZXJzY3JvbGwtYmVoYXZpb3Itc3VwcG9ydC5qcyBiL0xh
eW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3Jlc291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXN1
cHBvcnQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZWU3ZTMyMzIyMTRlODhlZjdjNjdlMDk5NzIwYjJiMjM3Y2Fh
NzBlMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3Jlc291
cmNlcy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXN1cHBvcnQuanMKQEAgLTAsMCArMSwzMSBAQAorYXN5
bmMgZnVuY3Rpb24gcGVyZm9ybVdoZWVsU2Nyb2xsKHNjcm9sbGVyLCBkaXJlY3Rpb24pIHsKKyAg
ICB2YXIgZGVsdGFYID0gMDsKKyAgICB2YXIgZGVsdGFZID0gMDsKKyAgICBpZiAoZGlyZWN0aW9u
ID09ICJkb3duIikKKyAgICAgICAgZGVsdGFZID0gLTU7CisgICAgZWxzZSBpZiAoZGlyZWN0aW9u
ID09ICJ1cCIpCisgICAgICAgIGRlbHRhWSA9IDU7CisgICAgZWxzZSBpZiAoZGlyZWN0aW9uID09
ICJyaWdodCIpCisgICAgICAgIGRlbHRhWCA9IC01OworICAgIGVsc2UgaWYgKGRpcmVjdGlvbiA9
PSAibGVmdCIpCisgICAgICAgIGRlbHRhWCA9IDU7CisKKyAgICB2YXIgeCA9IHNjcm9sbGVyLmNs
aWVudFdpZHRoIC8gMjsKKyAgICB2YXIgeSA9IHNjcm9sbGVyLmNsaWVudEhlaWdodCAvIDI7Cisg
ICAgZXZlbnRTZW5kZXIuZHJhZ01vZGUgPSBmYWxzZTsKKyAgICBldmVudFNlbmRlci5tb25pdG9y
V2hlZWxFdmVudHMoKTsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZGVsdGFY
LCBkZWx0YVksICdiZWdhbicsICdub25lJyk7CisgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGRlbHRhWCAqIDIsIGRlbHRhWSAqIDIsICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZGVsdGFYICogMywgZGVsdGFZICogMywgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkZWx0YVgsIGRlbHRhWSwgJ25vbmUnLCAnYmVnaW4n
KTsKKyAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZGVsdGFYICogMiwgZGVsdGFZICogMiwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZGVsdGFYICog
MywgZGVsdGFZICogMywgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7
CisgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4geworICAgICAgICBldmVudFNlbmRl
ci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoKCkgPT4geworICAgICAgICAgICAgcmVzb2x2
ZSgpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy13azEvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBiMjUyNGRkNzQ0ZGE1NTk0OTQ0YTQ2Y2QxMjNj
ZWRjYjQzMTRhMTE3Li44NjcwNzExNmUzMGQ0ZjYxMGM0N2YzNjM5MGQ2Y2IxYzA4NmI0ODRlIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCkBAIC0z
Myw2ICszMywxMSBAQCBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzcy1ERU5JRUQteHNsLWV4dGVybmFs
LWVudGl0eS1uby1sb2dnaW5nLnhtbCBbIFBhc3MgXQogIyByZGFyOi8vcHJvYmxlbS82MTc5Mzg4
NCA6IEVuYWJsaW5nIHRoaXMgdGVzdCBmb3IgV0sxIG9ubHkuCiBmYXN0L3NoYXBlcy9zaGFwZS1v
dXRzaWRlLWZsb2F0cy9zaGFwZS1vdXRzaWRlLWltYWdlZGF0YS1vdmVyZmxvdy5odG1sIFsgUGFz
cyBdCiAKKyMgT3ZlcnNjcm9sbC1iZWhhdmlvciBpcyBzdXBwb3J0ZWQgb24gTWFjLgorIyBGSVhN
RTogTmVlZCB0byBmaW5kIGEgd2F5IHRvIGJsb2NrIHRoZSBjcm9zcy1mcmFtZSBzY3JvbGwgY2hh
aW5pbmcgaW4gV0sxLgorZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50
Lmh0bWwgWyBQYXNzIF0KK2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3Jv
bGxhYmxlLWVsZW1lbnQuaHRtbCBbIFBhc3MgXQorCiAjLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vCiAjIEVuZCBwbGF0Zm9ybS1zcGVjaWZpYyBkaXJlY3Rvcmllcy4KICMvLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13
azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBlODU5OGQ3Y2E5ZDU1NDBiZGE2MWU2MTEzNjNmNGVl
MTFjOGIwZGI5Li4yNDg5YTAwMWY5OWRjYTViYjE1NjMyNzZiNDI4OWUzNjhkNGEzZDcyIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKKysr
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCkBAIC0xMDQs
NiArMTA0LDEyIEBAIGZhc3QvYW5pbWF0aW9uL3JlcXVlc3QtYW5pbWF0aW9uLWZyYW1lLWluLXR3
by1wYWdlcy5odG1sIFsgUGFzcyBdCiBmYXN0L2Zvcm1zL2ZpbGUvZW50cmllcy1hcGkvaW1hZ2Ut
dHJhbnNjb2RlLW9wZW4tcGFuZWwuaHRtbCBbIFBhc3MgXQogZmFzdC9mb3Jtcy9maWxlL2VudHJp
ZXMtYXBpL2ltYWdlLW5vLXRyYW5zY29kZS1vcGVuLXBhbmVsLmh0bWwgWyBQYXNzIF0KIAorIyBP
dmVyc2Nyb2xsLWJlaGF2aW9yIGlzIG9ubHkgc3VwcG9ydGVkIG9uIE1hYworZmFzdC9zY3JvbGxp
bmcvb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50Lmh0bWwgWyBQYXNzIF0KK2Zhc3Qvc2Nyb2xs
aW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0bWwgWyBQYXNzIF0KK2Zhc3Qvc2Nyb2xs
aW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRtbCBbIFBhc3Mg
XQorZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1l
Lmh0bWwgWyBQYXNzIF0KKwogIy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogIyBF
bmQgcGxhdGZvcm0tc3BlY2lmaWMgZGlyZWN0b3JpZXMuCiAjLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vCg==
</data>
<flag name="commit-queue"
          id="435602"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417818</attachid>
            <date>2021-01-18 01:43:11 -0800</date>
            <delta_ts>2021-03-15 06:22:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220139-20210118174310.patch</filename>
            <type>text/plain</type>
            <size>83415</size>
            <attacher name="cathiechen">cathiechen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxNTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2VjZjQwOGEyYjNhYWM3
MmE1NTM1NTNjNDQwMTFiOTU3MDgwYzJmNS4uN2U5NTEzNGNjZTNiMTg3NWI1NTAwOTkwNzFiYmQ4
MDczODg0N2ZhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMSBAQAorMjAyMS0wMS0xOCAgQ2F0
aGllIENoZW4gIDxjYXRoaWVjaGVuQGlnYWxpYS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IENT
UyBvdmVyc2Nyb2xsLWJlaGF2aW9yIG9uIE1hYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwMTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQmFzZWQgb24gRnLDqWTDqXJpYyBXYW5nJ3MgcGF0Y2guCisK
KyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIG92ZXJzY3JvbGwtYmVoYXZpb3Ig
b24gTWFjLgorICAgICAgICBBY2NvcmRpbmcgdG8gWzFdLCB0aGVyZSBhcmUgdHdvIGtpbmRzIG9m
IGFjdGlvbnM6IG5vbi1sb2NhbCBib3VuZGFyeSBkZWZhdWx0IGFjdGlvbnMgYW5kIGxvY2FsIGJv
dW5kYXJ5IGRlZmF1bHQgYWN0aW9ucy4KKyAgICAgICAgSW4gV2ViS2l0IG1hYywgdGhlIHJ1YmJl
ciBiYW5kaW5nIGVmZm9ydCBpcyBiZWxvbmdlZCB0byBsb2NhbCBib3VuZGFyeSBkZWZhdWx0IGFj
dGlvbnMuIFRoZSBzY3JvbGwgY2hhaW5pbmcgYW5kIHN3aXBlCisgICAgICAgIGdlc3R1cmVzICh0
cmlnZ2VyIGdvIGJhY2sgb3IgZ28gZm9yd2FyZCBhY3Rpb25zKSBhcmUgYmVsb25nZWQgdG8gbm9u
LWxvY2FsIGJvdW5kYXJ5IGRlZmF1bHQgYWN0aW9ucy4KKyAgICAgICAgMS4gVG8gaGFuZGxlIHRo
ZSBydWJiZXIgYmFuZGluZyBlZmZlY3QsIHNob3VsZFN0b3BIb3Jpem9udGFsU3RyZWNoKCkgYW5k
IHNob3VsZFN0b3BWZXJ0aWNhbFN0cmVjaCgpIGFyZSBhZGRlZCB0byBkZWNpZGUKKyAgICAgICAg
d2hldGhlciB0aGUgcnViYmVyIGJhbmRpbmcgZWZmb3J0IGlzIGFsbG93ZWQgb3Igbm90LgorICAg
ICAgICAyLiBUbyBibG9jayBzY3JvbGwgY2hhaW5pbmcgYWN0aW9ucyBpbiBkaWZmZXJlbnQgc2Ny
b2xsIG1vZGVzLgorICAgICAgICAgIC0gRm9yIGFzeW5jaHJvbm91cyBzY3JvbGxpbmcsIGl0J3Mg
aGFuZGxlZCBpbiBTY3JvbGxpbmdUcmVlOjpoYW5kbGVXaGVlbEV2ZW50V2l0aE5vZGUoKSwgYWNj
b3JkaW5nIHRvIHRoZSB2YWx1ZSBvZgorICAgICAgICAgIG92ZXJzY3JvbGwtYmVoYXZpb3IsIGl0
IGJsb2NrcyB0aGUgc2Nyb2xsIGNoYWluaW5nIGlmIG5lZWRlZCwgdGhlIHJlc3VsdCB3b3VsZCBi
ZSBhZGRlZCB0byBtX2xhdGNoaW5nQ29udHJvbGxlcgorICAgICAgICAgIGFuZCBtaWdodCBiZSBy
ZXVzZWQuCisgICAgICAgICAgLSBGb3Igc3luY2hyb25vdXMgc2Nyb2xsaW5nLCBpZiBXSEVFTF9F
VkVOVF9MQVRDSElORyBpcyBkaXNhYmxlZCwgaXQgaGFuZGxlcyBvdmVyc2Nyb2xsLWJlaGF2aW9y
IGluIGhhbmRsZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94KCkuCisgICAgICAg
ICAgSWYgV0hFRUxfRVZFTlRfTEFUQ0hJTkcgaXMgZW5hYmxlZC4gT3ZlcnNjcm9sbC1iZWhhdmlv
ciBpcyBoYW5kbGVkIGluIGZpbmRFbmNsb3NpbmdTY3JvbGxhYmxlQ29udGFpbmVyKCkuCisgICAg
ICAgICAgSXQgYWRkZWQgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIHRvIEZyYW1lU3RhdGUgdG8gaW5k
aWNhdGUgd2hldGhlciB0aGUgY3VycmVudCBsYXRjaGVkIG5vZGUgc2hvdWxkIGJsb2NrIHNjcm9s
bCBjaGFpbmluZy4KKyAgICAgICAgICBJZiB0aGUgY3VycmVudCBmcmFtZSBpcyBhIHN1YmZyYW1l
LCBpdCBwYXNzZXMgaXRzIFNjcm9sbENoYWluaW5nQmxvY2tlciB0byB0aGUgcGFyZW50ZnJhbWUs
IGFuZCBldmVudHVhbGx5CisgICAgICAgICAgbGV0IHRoZSBtYWluZnJhbWUgZGVjaWRlIHdoZXRo
ZXIgc2hvdWxkIHRyaWdnZXIgc3dpcGUgZ2VzdHVyZXMgb3Igbm90LgorICAgICAgICAzLiBUaGUg
c3dpcGUgZ2VzdHVyZXMuCisgICAgICAgICAgSWYgdGhlIG1haW5mcmFtZSByZWFjaGVzIGl0cyBz
Y3JvbGwgZWRnZXMsIHRoZXJlIHdpbGwgYmUgc3dpcGUgZ2VzdHVyZXMgZXZlbiBpZiBvdmVyc2Ny
b2xsLWJlaGF2aW9yJ3MgdmFsdWUgaXMgbm9uZS4KKyAgICAgICAgICBUaGlzIGJlaGF2aW9yIGlz
IG5vdCBzdXBvb3J0ZWQgaW4gV0sxIGFuZCBXSzIncyBzeW5jaHJvbm91cyBzY3JvbGwgd2l0aCBX
SEVFTF9FVkVOVF9MQVRDSElORyBvZmYuCisKKyAgICAgICAgWzFdIGh0dHBzOi8vZHJhZnRzLmNz
c3dnLm9yZy9jc3Mtb3ZlcnNjcm9sbC0xLyNvdmVyc2Nyb2xsLWJlaGF2aW9yLXByb3BlcnRpZXMK
KworICAgICAgICBUZXN0czogZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVt
ZW50Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZp
b3ItaWZyYW1lLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwt
YmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9z
Y3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLmh0bWwKKwor
ICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0
ZVBhcmVudEZyYW1lU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKTogQXBwbGllZCB0aGUgY3VycmVudCBm
cmFtZSdzIG92ZXJzY3JvbGwtYmVoYXZpb3IgdmFsdWUgdG8gU2Nyb2xsQ2hhaW5pbmdCbG9ja2Vy
CisgICAgICAgIGFuZCBwYXNzIHRoaXMgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIHRvIHBhcmVudCBm
cmFtZS4KKyAgICAgICAgKFdlYkNvcmU6Om92ZXJzY3JvbGxCZWhhdmlvclN0b3BzU2Nyb2xsQ2hh
aW5pbmcpOiBVcGRhdGVkIHNjcm9sbENoYWluaW5nQmxvY2tlciBhbmQgY2hlY2tlZCBpZiBpdCBz
aG91bGQgYmxvY2sgdGhlIHNjcm9sbCBjaGFpbmluZy4KKyAgICAgICAgVGhlIGNoYWluaW5nIG9m
IHZlcnRpY2FsIHNjcm9sbCB3aWxsIGJlIHN0b3BwZWQgZGlyZWN0bHkuIEZvciBob3Jpem9udGFs
IHNjcm9sbCwgaWYgbWFpbmZyYW1lIHJlYWNoZXMgdGhlIGVkZ2VzLCBpdCBkb2Vzbid0IHN0b3Ag
dHJpZ2dlcmluZworICAgICAgICBzd2lwZSBnZXN0dXJlLiBTdWJmcmFtZXMgd2lsbCBpbnN0ZWFk
IHVwZGF0ZSB0aGUgYmxvY2tlciBpbiBTY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIuIElmIHRoZSBz
Y3JvbGwgY2hhaW5pbmcgc2hvdWxkIGNvbnRpbnVlLCBmaWx0ZXIgd2hlZWxFdmVudCdzIGRlbHRh
IGluc3RlYWQuIAorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2
ZW50SW50ZXJuYWwpOiBXaGVuIFdIRUVMX0VWRU5UX0xBVENISU5HIGlzIGVuYWJsZWQsIGNoZWNr
IG92ZXJzY3JvbGxCZWhhdmlvclN0b3BzU2Nyb2xsQ2hhaW5pbmcuCisgICAgICAgIFVwZGF0ZSB0
aGUgc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIGluIFNjcm9sbExhdGNoaW5nQ29udHJvbGxlciBpZiBp
dCdzIG5vdCBtYWluZnJhbWUuIFN0b3AgdGhlIHNjcm9sbCBjaGFpbmluZyBpZiBuZWVkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpkaWRTY3JvbGxJblNjcm9sbGFibGVBcmVhKTogQWRkZWQgcGFyYW1l
dGVyIFNjcm9sbENoYWluaW5nQmxvY2tlciwgYW5kIGZpbHRlciB0aGUgZmlsdGVyZWREZWx0YSBi
eSBpdC4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudElu
QXBwcm9wcmlhdGVFbmNsb3NpbmdCb3gpOiBVcGRhdGUgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLCBh
bmQgc3RvcCB0aGUgc2Nyb2xsIGNoYWluaW5nIGlmIG5lZWRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkV2ZW50SGFuZGxlcjo6ZGVmYXVsdFdoZWVsRXZlbnRIYW5kbGVyKTogRmlsdGVyIHRoZSB3aGVl
bEV2ZW50J3MgZGVsdGEgYnkgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIHN0b3JlZCBpbiBzY3JvbGxM
YXRjaGluZ0NvbnRyb2xsZXIuCisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuaDoKKyAgICAg
ICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6Omhv
cml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IgY29uc3QpOiBPdmVyc2Nyb2xsLWJlaGF2aW9yIG9u
bHkgYWZmZWN0IHNjcm9sbGFibGUgRnJhbWVWaWV3LgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVW
aWV3Ojp2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvciBjb25zdCk6IERpdHRvLgorICAgICAgICAq
IHBhZ2UvRnJhbWVWaWV3Lmg6CisgICAgICAgICogcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1t
OgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkT3ZlcnNjcm9sbEJlaGF2aW9yQmxvY2tTY3JvbGxD
aGFpbmluZyk6IFVwZGF0ZSBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIgYW5kIGNoZWNrIGlmIHRoZSBz
Y3JvbGwgY2hhaW5pbmcgc2hvdWxkIGJlIHN0b3BwZWQuCisgICAgICAgIChXZWJDb3JlOjpmaW5k
RW5jbG9zaW5nU2Nyb2xsYWJsZUNvbnRhaW5lcik6IFN0b3AgdGhlIHNjcm9sbCBjaGFpbmluZyBp
ZiBuZWVkZWQuCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmRldGVybWluZVdoZWVs
RXZlbnRUYXJnZXQpOiBTdG9yZXMgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIGluIHNjcm9sbExhdGNo
aW5nQ29udHJvbGxlcgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29v
cmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNTY3JvbGxpbmdDb29yZGluYXRv
cjo6c2V0U2Nyb2xsaW5nTm9kZVNjcm9sbGFibGVBcmVhR2VvbWV0cnkpOiBVcGRhdGUgb3ZlcnNj
cm9sbC1iZWhhdmlvciB2YWx1ZXMgaW4gc2Nyb2xsUGFyYW1ldGVycy4KKyAgICAgICAgKiBwYWdl
L3Njcm9sbGluZy9TY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyOjp1cGRhdGVBbmRGZXRjaExhdGNoaW5nU3RhdGVG
b3JGcmFtZSk6IEFkZCBTY3JvbGxDaGFpbmluZ0Jsb2NrZXIgdG8gRnJhbWVTdGF0ZS4KKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbExhdGNoaW5nQ29udHJvbGxlcjo6Z2V0U2Nyb2xsQ2hhaW5pbmdC
bG9ja2VyIGNvbnN0KTogUmV0dXJucyBTY3JvbGxDaGFpbmluZ0Jsb2NrZXIgb2YgZnJhbWUuCisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXI6OnVwZGF0ZVNjcm9sbENo
YWluaW5nQmxvY2tlcik6IFVwZGF0ZXMgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIG9mIGZyYW1lLgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyOjpkdW1wIGNvbnN0KToK
KyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIuaDoKKyAg
ICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvclR5cGVzLmg6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnM6Om9wZXJhdG9yPT0gY29uc3Qp
OiBBZGRlZCBob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yIGFuZCB2ZXJ0aWNhbE92ZXJzY3Jv
bGxCZWhhdmlvci4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWU6OnNob3VsZEJsb2NrU2Nyb2xsQ2hhaW5p
bmdXaXRoTm9kZSk6IFVwZGF0ZSBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIgYW5kIGNoZWNrIGlmIHRo
ZSBzY3JvbGwgY2hhaW5pbmcgc2hvdWxkIGJlIHN0b3BwZWQuCisgICAgICAgIElmIG5vdCwgZmls
dGVyIHRoZSB3aGVlbEV2ZW50J3MgZGVsdGEuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdU
cmVlOjpoYW5kbGVXaGVlbEV2ZW50V2l0aE5vZGUpOiBTdG9wIHRoZSBzY3JvbGwgY2hhaW5pbmcg
aWYgbmVlZGVkLgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuaDoKKyAg
ICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6aG9yaXpvbnRhbE92
ZXJzY3JvbGxCZWhhdmlvciBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGU6OnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yIGNvbnN0KTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6dXBk
YXRlU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyU3RhdGUgY29uc3QpOgorICAgICAgICAqIHBhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmg6CisgICAgICAgICogcGFnZS9zY3Jv
bGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMuaDoKKyAgICAg
ICAgKiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVs
ZWdhdGVNYWM6OmFsbG93c0hvcml6b250YWxTdHJldGNoaW5nIGNvbnN0KTogSWYgb3ZlcnNjcm9s
bC1iZWhhdmlvci14OiBub25lLCB0aGUgc2Nyb2xsIHN0cmV0Y2ggc2hvdWxkIGJlIGJsb2NrZWQu
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFj
OjphbGxvd3NWZXJ0aWNhbFN0cmV0Y2hpbmcgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OnNob3VsZFN0b3BIb3Jp
em9udGFsU3RyZWNoIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjpzaG91bGRTdG9wVmVydGljYWxTdHJlY2ggY29u
c3QpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtV2hlZWxFdmVudDo6d2hlZWxEZWx0YUJpYXNpbmdUb3dh
cmRzVmVydGljYWwpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFR5cGVzLmg6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxDaGFpbmluZ0Jsb2NrZXI6OnNob3VsZEJsb2NrU2Nyb2xsQ2hhaW5p
bmcpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQ2hhaW5pbmdCbG9ja2VyOjpmaWx0ZXJEZWx0
YSk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYWJsZUFyZWE6OnVwZGF0ZVNjcm9sbENoYWluaW5nQmxvY2tlclN0YXRlIGNv
bnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYWJsZUFyZWE6Omhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWE6OnZlcnRpY2FsT3ZlcnNjcm9sbEJl
aGF2aW9yIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9sbGVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxDb250cm9sbGVyQ2xpZW50OjpzaG91bGRTdG9w
SG9yaXpvbnRhbFN0cmVjaCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxDb250cm9s
bGVyQ2xpZW50OjpzaG91bGRTdG9wVmVydGljYWxTdHJlY2ggY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIubW06CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxDb250cm9sbGVyOjpoYW5kbGVXaGVlbEV2ZW50KTogU3RvcCBzY3JvbGwgc3RyZWNoaW5nIGlm
IG5lZWRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbENvbnRyb2xsZXI6OmRpcmVjdGlvbkZy
b21FdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxDb250cm9sbGVyOjp3aGVlbERlbHRh
Qmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFj
L1Njcm9sbEFuaW1hdG9yTWFjLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1h
dG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JNYWM6OnNob3VsZFN0
b3BIb3Jpem9udGFsU3RyZWNoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1h
dG9yTWFjOjpzaG91bGRTdG9wVmVydGljYWxTdHJlY2ggY29uc3QpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxheWVyU2Nyb2xsYWJsZUFyZWE6Omhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6dmVydGlj
YWxPdmVyc2Nyb2xsQmVoYXZpb3IgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJM
YXllclNjcm9sbGFibGVBcmVhLmg6CisKKwogMjAyMS0wMS0xNyAgS2ltbW8gS2lubnVuZW4gIDxr
a2lubnVuZW5AYXBwbGUuY29tPgogCiAgICAgICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpy
ZXNoYXBlRkJPcygpIEFOR0xFIHZhcmlhbnQgY2FsbHMgaW50byBtYWtlQ29udGV4dEN1cnJlbnQo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwppbmRleCBjYzc3MWE1NjE2ZGE0ZjQwYTljY2YxNjA2Yjc3NDUwYjRjZGNmYjRmLi45
ZjIwODg3NzIxM2U1MWE0YjEwMmE3ZDExNTg1NjU5ODUzZjkwNTM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE3IEBACisyMDIxLTAxLTE4ICBDYXRoaWUgQ2hlbiAgPGNhdGhpZWNoZW5AaWdhbGlhLmNv
bT4KKworICAgICAgICBJbXBsZW1lbnQgQ1NTIG92ZXJzY3JvbGwtYmVoYXZpb3Igb24gTWFjCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjAxMzkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCYXNlZCBvbiBG
csOpZMOpcmljIFdhbmcncyBwYXRjaC4KKworICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFNjcm9sbGFibGVBcmVh
UGFyYW1ldGVycz46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8U2Nyb2xs
YWJsZUFyZWFQYXJhbWV0ZXJzPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmg6CisKIDIwMjEtMDEtMTcgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFw
cGxlLmNvbT4KIAogICAgICAgICBKSVRPcGVyYXRpb24gZG9lcyBub3QgZXhpc3QgaW4gV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggZWM0NjUxODZhYmZhM2Y3NDNhZTJjZTdi
M2QzNmZiNDFhNjc5MDdjNS4uODAxY2NkMmQ2YjBiMjQ4ZmI2ZmM3YjQ2OTQ2YWRhOGYyMWY3ZmY3
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIxLTAx
LTE4ICBDYXRoaWUgQ2hlbiAgPGNhdGhpZWNoZW5AaWdhbGlhLmNvbT4KKworICAgICAgICBJbXBs
ZW1lbnQgQ1NTIG92ZXJzY3JvbGwtYmVoYXZpb3Igb24gTWFjCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjAxMzkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCYXNlZCBvbiBGcsOpZMOpcmljIFdhbmcncyBw
YXRjaC4KKworICAgICAgICBOZWVkIHRvIGZpbmQgYSB3YXkgdG8gYmxvY2sgdGhlIGNyb3NzLWZy
YW1lIHNjcm9sbCBjaGFpbmluZyBpbiBXSzEuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxW
aWV3Lm1tOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBzY3JvbGxXaGVlbDpdKToKKwogMjAyMS0w
MS0xNCAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92
ZWQgbW9zdCB1c2VzIG9mIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCks
IC4uLikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCBkNjlmMjk3MDQ1MzFl
Nzg3MjU4OGQ0YTVmZjhkM2E1NGJlMzZlYWUxLi5lZjA3OWI1Mjg5NmJmZWM1M2IzNDdiMTQ4ZmFh
OTI2ZTZmYzZhZjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0yODMy
LDYgKzI4MzIsNTYgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3Qg
UGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBPcHRpb24KICAgICByZXR1cm4gaGFuZGxl
ZDsKIH0KIAorI2lmIEVOQUJMRShXSEVFTF9FVkVOVF9MQVRDSElORykKK3N0YXRpYyB2b2lkIHVw
ZGF0ZVBhcmVudEZyYW1lU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKGNvbnN0IFNjcm9sbGFibGVBcmVh
KiBzY3JvbGxhYmxlQXJlYSwgRnJhbWUmIGZyYW1lLCBTY3JvbGxDaGFpbmluZ0Jsb2NrZXImIGJs
b2NrZXIpCit7CisgICAgYXV0byogcGFyZW50ID0gZnJhbWUudHJlZSgpLnBhcmVudCgpOworICAg
IGlmICghc2Nyb2xsYWJsZUFyZWEpCisgICAgICAgIHNjcm9sbGFibGVBcmVhID0gZnJhbWUudmll
dygpOworICAgIGlmICghZnJhbWUucGFnZSgpIHx8ICFwYXJlbnQgfHwgIXNjcm9sbGFibGVBcmVh
KQorICAgICAgICByZXR1cm47CisgICAgc2Nyb2xsYWJsZUFyZWEtPnVwZGF0ZVNjcm9sbENoYWlu
aW5nQmxvY2tlclN0YXRlKGJsb2NrZXIpOworICAgIGZyYW1lLnBhZ2UoKS0+c2Nyb2xsTGF0Y2hp
bmdDb250cm9sbGVyKCkudXBkYXRlU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKCpwYXJlbnQsIGJsb2Nr
ZXIpOworfQorCitzdGF0aWMgYm9vbCBvdmVyc2Nyb2xsQmVoYXZpb3JTdG9wc1Njcm9sbENoYWlu
aW5nKGNvbnN0IFNjcm9sbGFibGVBcmVhKiBzY3JvbGxhYmxlQXJlYSwgRnJhbWUmIGZyYW1lLCBQ
bGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIFNjcm9sbENoYWluaW5nQmxvY2tlciBzY3Jv
bGxDaGFpbmluZ0Jsb2NrZXIsIGJvb2wmIGhhbmRsZWRFdmVudCkKK3sKKyAgICBpZiAoIXNjcm9s
bGFibGVBcmVhKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoc2Nyb2xsYWJsZUFy
ZWEgIT0gZnJhbWUudmlldygpKSB7CisgICAgICAgIC8vIFdoZWVsIGV2ZW50IGlzIGdvaW5nIHRv
IGJlIGhhbmRsZWQgYnkgRnJhbWVWaWV3IGluIHByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5n
KCksCisgICAgICAgIC8vIHNob3VsZCBsZXQgc2Nyb2xsYWJsZUFyZWEncyBvdmVyc2Nyb2xsLWJl
aGF2aW9yIGVmZmVjdCBTY3JvbGxDaGFpbmluZ0Jsb2NrZXIuCisgICAgICAgIHNjcm9sbGFibGVB
cmVhLT51cGRhdGVTY3JvbGxDaGFpbmluZ0Jsb2NrZXJTdGF0ZShzY3JvbGxDaGFpbmluZ0Jsb2Nr
ZXIpOworICAgIH0KKworICAgIEZsb2F0U2l6ZSBmaWx0ZXJlZERlbHRhKHdoZWVsRXZlbnQuZGVs
dGFYKCksIHdoZWVsRXZlbnQuZGVsdGFZKCkpOworICAgIGF1dG8gYmlhc2VkRGVsdGEgPSBQbGF0
Zm9ybVdoZWVsRXZlbnQ6OndoZWVsRGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRpY2FsKGZpbHRlcmVk
RGVsdGEpOworICAgIGlmIChzY3JvbGxDaGFpbmluZ0Jsb2NrZXIuYmxvY2tYICYmICFiaWFzZWRE
ZWx0YS5oZWlnaHQoKSkgeworICAgICAgICAvLyBJZiB0aGUgaG9yaXpvbnRhbCBzY3JvbGwgY2hh
aW5pbmcgaXMgYmxvY2tlZCBieSBvdmVyc2Nyb2xsLWJlaGF2aW9yIGluIGEgc3ViZnJhbWUuCisg
ICAgICAgIC8vIEl0IHByb3BhZ2F0ZXMgaXRzIFNjcm9sbENoYWluaW5nQmxvY2tlciB0byBwYXJl
bnQgZnJhbWVzIGFuZCBldmVudHVhbGx5IGxldCBtYWluZnJhbWUKKyAgICAgICAgLy8gZGVjaWRl
IHdoZXRoZXIgbmVlZCB0byB0cmlnZ2VyIGEgc3dpcGUgZ2VzdHVyZSBvciBub3QuCisgICAgICAg
IGlmIChmcmFtZS5pc01haW5GcmFtZSgpKSB7CisgICAgICAgICAgICAvLyBJbiBtYWluIGZyYW1l
LCBpZiB0aGUgc2Nyb2xsIHBvc2l0aW9uIHJlYWNoZXMgdG8gaXRzIGVkZ2VzLCB0cmlnZ2VyIHRo
ZSBzd2lwZSBnZXN0dXJlLCBvdGhlcndpc2Ugbm90LgorICAgICAgICAgICAgaGFuZGxlZEV2ZW50
ID0gIShiaWFzZWREZWx0YS53aWR0aCgpICYmIHNjcm9sbGFibGVBcmVhLT5pc1Bpbm5lZEZvclNj
cm9sbERlbHRhT25BeGlzKC1iaWFzZWREZWx0YS53aWR0aCgpLCBTY3JvbGxFdmVudEF4aXM6Okhv
cml6b250YWwpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHVwZGF0ZVBhcmVudEZy
YW1lU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKHNjcm9sbGFibGVBcmVhLCBmcmFtZSwgc2Nyb2xsQ2hh
aW5pbmdCbG9ja2VyKTsKKyAgICAgICAgICAgIGhhbmRsZWRFdmVudCA9IGZhbHNlOworICAgICAg
ICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGlmIChTY3JvbGxDaGFpbmlu
Z0Jsb2NrZXI6OnNob3VsZEJsb2NrU2Nyb2xsQ2hhaW5pbmcoc2Nyb2xsQ2hhaW5pbmdCbG9ja2Vy
LCBiaWFzZWREZWx0YSkpIHsKKyAgICAgICAgaGFuZGxlZEV2ZW50ID0gdHJ1ZTsKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorCisgICAgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyOjpmaWx0ZXJE
ZWx0YShzY3JvbGxDaGFpbmluZ0Jsb2NrZXIsIGJpYXNlZERlbHRhLCBmaWx0ZXJlZERlbHRhKTsK
KyAgICB3aGVlbEV2ZW50ID0gd2hlZWxFdmVudC5jb3B5V2l0aERlbHRhc0FuZFZlbG9jaXR5KGZp
bHRlcmVkRGVsdGEud2lkdGgoKSwgZmlsdGVyZWREZWx0YS5oZWlnaHQoKSwgd2hlZWxFdmVudC5z
Y3JvbGxpbmdWZWxvY2l0eSgpKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisjZW5kaWYKKwogYm9v
bCBFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnRJbnRlcm5hbChjb25zdCBQbGF0Zm9ybVdo
ZWVsRXZlbnQmIGV2ZW50LCBPcHRpb25TZXQ8V2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwcz4gcHJv
Y2Vzc2luZ1N0ZXBzLCBPcHRpb25TZXQ8RXZlbnRIYW5kbGluZz4mIGhhbmRsaW5nKQogewogICAg
IGF1dG8qIGRvY3VtZW50ID0gbV9mcmFtZS5kb2N1bWVudCgpOwpAQCAtMjkyNCwxMiArMjk3NCwz
MSBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudEludGVybmFsKGNvbnN0IFBs
YXRmb3JtV2hlZWxFdmVudCYgZXZlbnQsIE9wdAogI2lmIEVOQUJMRShXSEVFTF9FVkVOVF9MQVRD
SElORykKICAgICBpZiAoYWxsb3dTY3JvbGxpbmcpCiAgICAgICAgIGFsbG93U2Nyb2xsaW5nID0g
bV9mcmFtZS5wYWdlKCktPnNjcm9sbExhdGNoaW5nQ29udHJvbGxlcigpLmxhdGNoaW5nQWxsb3dz
U2Nyb2xsaW5nSW5GcmFtZShtX2ZyYW1lLCBzY3JvbGxhYmxlQXJlYSk7CisgICAgU2Nyb2xsQ2hh
aW5pbmdCbG9ja2VyIGJsb2NrZXJGcm9tTGF0Y2hpbmdDb250cm9sbGVyID0gbV9mcmFtZS5wYWdl
KCktPnNjcm9sbExhdGNoaW5nQ29udHJvbGxlcigpLmdldFNjcm9sbENoYWluaW5nQmxvY2tlciht
X2ZyYW1lKTsKKyAgICBpZiAoIShhbGxvd1Njcm9sbGluZyB8fCBtX2ZyYW1lLmlzTWFpbkZyYW1l
KCkpKQorICAgICAgICB1cGRhdGVQYXJlbnRGcmFtZVNjcm9sbENoYWluaW5nQmxvY2tlcihzY3Jv
bGxhYmxlQXJlYS5nZXQoKSwgbV9mcmFtZSwgYmxvY2tlckZyb21MYXRjaGluZ0NvbnRyb2xsZXIp
OwogI2VuZGlmCiAKICAgICBpZiAoYWxsb3dTY3JvbGxpbmcpIHsKLSAgICAgICAgLy8gRklYTUU6
IHByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKCkgaXMgb25seSBjYWxsZWQgZm9yIEZyYW1l
VmlldyBzY3JvbGxpbmcsIG5vdCBvdmVyZmxvdyBzY3JvbGxpbmcsIHdoaWNoIGlzIGNvbmZ1c2lu
Zy4KLSAgICAgICAgaGFuZGxlZEV2ZW50ID0gcHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxpbmco
ZXZlbnQsIHNjcm9sbGFibGVBcmVhLCBoYW5kbGluZyk7Ci0gICAgICAgIHByb2Nlc3NXaGVlbEV2
ZW50Rm9yU2Nyb2xsU25hcChldmVudCwgc2Nyb2xsYWJsZUFyZWEpOworICAgICAgICBQbGF0Zm9y
bVdoZWVsRXZlbnQgYWRqdXN0ZWRXaGVlbEV2ZW50ID0gUGxhdGZvcm1XaGVlbEV2ZW50KGV2ZW50
KTsKKyAgICAgICAgYm9vbCBzY3JvbGxDaGFpbmluZ1N0b3BwZWQgPSBmYWxzZTsKKyNpZiBFTkFC
TEUoV0hFRUxfRVZFTlRfTEFUQ0hJTkcpCisgICAgICAgIHNjcm9sbENoYWluaW5nU3RvcHBlZCA9
IG92ZXJzY3JvbGxCZWhhdmlvclN0b3BzU2Nyb2xsQ2hhaW5pbmcoc2Nyb2xsYWJsZUFyZWEuZ2V0
KCksIG1fZnJhbWUsIGFkanVzdGVkV2hlZWxFdmVudCwgYmxvY2tlckZyb21MYXRjaGluZ0NvbnRy
b2xsZXIsIGhhbmRsZWRFdmVudCk7CisjZW5kaWYKKyAgICAgICAgaWYgKCFzY3JvbGxDaGFpbmlu
Z1N0b3BwZWQpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBwcm9jZXNzV2hlZWxFdmVudEZvclNj
cm9sbGluZygpIGlzIG9ubHkgY2FsbGVkIGZvciBGcmFtZVZpZXcgc2Nyb2xsaW5nLCBub3Qgb3Zl
cmZsb3cgc2Nyb2xsaW5nLCB3aGljaCBpcyBjb25mdXNpbmcuCisgICAgICAgICAgICBoYW5kbGVk
RXZlbnQgPSBwcm9jZXNzV2hlZWxFdmVudEZvclNjcm9sbGluZyhhZGp1c3RlZFdoZWVsRXZlbnQs
IHNjcm9sbGFibGVBcmVhLCBoYW5kbGluZyk7CisgICAgICAgICAgICBwcm9jZXNzV2hlZWxFdmVu
dEZvclNjcm9sbFNuYXAoYWRqdXN0ZWRXaGVlbEV2ZW50LCBzY3JvbGxhYmxlQXJlYSk7CisgICAg
ICAgIH0KKyNpZiAhRU5BQkxFKFdIRUVMX0VWRU5UX0xBVENISU5HKQorICAgICAgICBpZiAoYXV0
byogdmlldyA9IG1fZnJhbWUudmlldygpKSB7CisgICAgICAgICAgICBTY3JvbGxDaGFpbmluZ0Js
b2NrZXIgYmxvY2tlciA9IHsgdmlldy0+aG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpICE9
IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0bywgdmlldy0+dmVydGljYWxPdmVyc2Nyb2xsQmVoYXZp
b3IoKSAhPSBPdmVyc2Nyb2xsQmVoYXZpb3I6OkF1dG8gfTsKKyAgICAgICAgICAgIGlmICghaGFu
ZGxlZEV2ZW50KSB7CisgICAgICAgICAgICAgICAgYXV0byBiaWFzZWREZWx0YSA9IFBsYXRmb3Jt
V2hlZWxFdmVudDo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoYWRqdXN0ZWRXaGVl
bEV2ZW50LmRlbHRhKCkpOworICAgICAgICAgICAgICAgIGhhbmRsZWRFdmVudCA9IFNjcm9sbENo
YWluaW5nQmxvY2tlcjo6c2hvdWxkQmxvY2tTY3JvbGxDaGFpbmluZyhibG9ja2VyLCBiaWFzZWRE
ZWx0YSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyNlbmRpZgogICAgIH0KIAogICAgIHJl
dHVybiBoYW5kbGVkRXZlbnQ7CkBAIC0yOTQ2LDIwICszMDE1LDIzIEBAIHN0YXRpYyB2b2lkIGhh
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
X0xBVENISU5HKQpAQCAtMjk4MCwyMiArMzA1MiwzMSBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFu
ZGxlV2hlZWxFdmVudEluQXBwcm9wcmlhdGVFbmNsb3NpbmdCb3goTm9kZSogc3RhcnROb2RlLCBj
bwogICAgIGlmICghc2hvdWxkSGFuZGxlRXZlbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAor
ICAgIFNjcm9sbENoYWluaW5nQmxvY2tlciBibG9ja2VyID0geyBmYWxzZSwgZmFsc2UgfTsKICAg
ICBpZiAoaXM8UmVuZGVyTGlzdEJveD4oaW5pdGlhbEVuY2xvc2luZ0JveCkpCi0gICAgICAgIHJl
dHVybiBkaWRTY3JvbGxJblNjcm9sbGFibGVBcmVhKGRvd25jYXN0PFJlbmRlckxpc3RCb3g+KGlu
aXRpYWxFbmNsb3NpbmdCb3gpLCB3aGVlbEV2ZW50KTsKKyAgICAgICAgcmV0dXJuIGRpZFNjcm9s
bEluU2Nyb2xsYWJsZUFyZWEoZG93bmNhc3Q8UmVuZGVyTGlzdEJveD4oaW5pdGlhbEVuY2xvc2lu
Z0JveCksIHdoZWVsRXZlbnQsIGJsb2NrZXIpOwogCisgICAgYXV0byBiaWFzZWREZWx0YSA9IFBs
YXRmb3JtV2hlZWxFdmVudDo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoRmxvYXRT
aXplKHdoZWVsRXZlbnQuZGVsdGFYKCksIHdoZWVsRXZlbnQuZGVsdGFZKCkpKTsKICAgICBSZW5k
ZXJCb3gqIGN1cnJlbnRFbmNsb3NpbmdCb3ggPSAmaW5pdGlhbEVuY2xvc2luZ0JveDsKICAgICB3
aGlsZSAoY3VycmVudEVuY2xvc2luZ0JveCkgewogICAgICAgICBpZiAoYXV0byogYm94TGF5ZXIg
PSBjdXJyZW50RW5jbG9zaW5nQm94LT5sYXllcigpID8gY3VycmVudEVuY2xvc2luZ0JveC0+bGF5
ZXIoKS0+c2Nyb2xsYWJsZUFyZWEoKSA6IG51bGxwdHIpIHsKICAgICAgICAgICAgIGF1dG8gcGxh
dGZvcm1FdmVudCA9IHdoZWVsRXZlbnQudW5kZXJseWluZ1BsYXRmb3JtRXZlbnQoKTsKICAgICAg
ICAgICAgIGJvb2wgc2Nyb2xsaW5nV2FzSGFuZGxlZDsKICAgICAgICAgICAgIGlmIChwbGF0Zm9y
bUV2ZW50KSB7CisgICAgICAgICAgICAgICAgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyOjpmaWx0ZXJE
ZWx0YShibG9ja2VyLCBiaWFzZWREZWx0YSwgZmlsdGVyZWRQbGF0Zm9ybURlbHRhKTsKICAgICAg
ICAgICAgICAgICBhdXRvIGNvcGllZEV2ZW50ID0gcGxhdGZvcm1FdmVudC0+Y29weVdpdGhEZWx0
YXNBbmRWZWxvY2l0eShmaWx0ZXJlZFBsYXRmb3JtRGVsdGEud2lkdGgoKSwgZmlsdGVyZWRQbGF0
Zm9ybURlbHRhLmhlaWdodCgpLCBmaWx0ZXJlZFZlbG9jaXR5KTsKICAgICAgICAgICAgICAgICBz
Y3JvbGxpbmdXYXNIYW5kbGVkID0gaGFuZGxlV2hlZWxFdmVudEluU2Nyb2xsYWJsZUFyZWEoY29w
aWVkRXZlbnQsICpib3hMYXllciwgZXZlbnRIYW5kbGluZyk7CiAgICAgICAgICAgICB9IGVsc2UK
LSAgICAgICAgICAgICAgICBzY3JvbGxpbmdXYXNIYW5kbGVkID0gZGlkU2Nyb2xsSW5TY3JvbGxh
YmxlQXJlYSgqYm94TGF5ZXIsIHdoZWVsRXZlbnQpOworICAgICAgICAgICAgICAgIHNjcm9sbGlu
Z1dhc0hhbmRsZWQgPSBkaWRTY3JvbGxJblNjcm9sbGFibGVBcmVhKCpib3hMYXllciwgd2hlZWxF
dmVudCwgYmxvY2tlcik7CiAKICAgICAgICAgICAgIGlmIChzY3JvbGxpbmdXYXNIYW5kbGVkKQog
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgICAgICBpZiAoY3VycmVudEVu
Y2xvc2luZ0JveC0+ZWxlbWVudCgpICE9IGN1cnJlbnRFbmNsb3NpbmdCb3gtPmRvY3VtZW50KCku
ZG9jdW1lbnRFbGVtZW50KCkpIHsKKyAgICAgICAgICAgICAgICBib3hMYXllci0+dXBkYXRlU2Ny
b2xsQ2hhaW5pbmdCbG9ja2VyU3RhdGUoYmxvY2tlcik7CisgICAgICAgICAgICAgICAgaWYgKFNj
cm9sbENoYWluaW5nQmxvY2tlcjo6c2hvdWxkQmxvY2tTY3JvbGxDaGFpbmluZyhibG9ja2VyLCBi
aWFzZWREZWx0YSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAg
ICAgfQogICAgICAgICB9CiAKICAgICAgICAgY3VycmVudEVuY2xvc2luZ0JveCA9IGN1cnJlbnRF
bmNsb3NpbmdCb3gtPmNvbnRhaW5pbmdCbG9jaygpOwpAQCAtMzA3NSw2ICszMTU2LDcgQEAgdm9p
ZCBFdmVudEhhbmRsZXI6OmRlZmF1bHRXaGVlbEV2ZW50SGFuZGxlcihOb2RlKiBzdGFydE5vZGUs
IFdoZWVsRXZlbnQmIHdoZWVsRXYKICAgICBpZiAoIW1fZnJhbWUucGFnZSgpLT5zY3JvbGxMYXRj
aGluZ0NvbnRyb2xsZXIoKS5sYXRjaGluZ0FsbG93c1Njcm9sbGluZ0luRnJhbWUobV9mcmFtZSwg
bGF0Y2hlZFNjcm9sbGVyKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgU2Nyb2xsQ2hhaW5pbmdC
bG9ja2VyIHNjcm9sbENoYWluaW5nQmxvY2tlciA9IG1fZnJhbWUucGFnZSgpLT5zY3JvbGxMYXRj
aGluZ0NvbnRyb2xsZXIoKS5nZXRTY3JvbGxDaGFpbmluZ0Jsb2NrZXIobV9mcmFtZSk7CiAgICAg
aWYgKGxhdGNoZWRTY3JvbGxlcikgewogICAgICAgICBpZiAobGF0Y2hlZFNjcm9sbGVyID09IG1f
ZnJhbWUudmlldygpKSB7CiAgICAgICAgICAgICAvLyBGcmFtZVZpZXcgc2Nyb2xsaW5nIGlzIGhh
bmRsZWQgdmlhIHByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKCkuCkBAIC0zMDgzLDYgKzMx
NjUsOCBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6ZGVmYXVsdFdoZWVsRXZlbnRIYW5kbGVyKE5vZGUq
IHN0YXJ0Tm9kZSwgV2hlZWxFdmVudCYgd2hlZWxFdgogCiAgICAgICAgIGF1dG8gcGxhdGZvcm1F
dmVudCA9IHdoZWVsRXZlbnQudW5kZXJseWluZ1BsYXRmb3JtRXZlbnQoKTsKICAgICAgICAgaWYg
KHBsYXRmb3JtRXZlbnQpIHsKKyAgICAgICAgICAgIGF1dG8gYmlhc2VkRGVsdGEgPSBQbGF0Zm9y
bVdoZWVsRXZlbnQ6OndoZWVsRGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRpY2FsKGZpbHRlcmVkUGxh
dGZvcm1EZWx0YSk7CisgICAgICAgICAgICBTY3JvbGxDaGFpbmluZ0Jsb2NrZXI6OmZpbHRlckRl
bHRhKHNjcm9sbENoYWluaW5nQmxvY2tlciwgYmlhc2VkRGVsdGEsIGZpbHRlcmVkUGxhdGZvcm1E
ZWx0YSk7CiAgICAgICAgICAgICBhdXRvIGNvcGllZEV2ZW50ID0gcGxhdGZvcm1FdmVudC0+Y29w
eVdpdGhEZWx0YXNBbmRWZWxvY2l0eShmaWx0ZXJlZFBsYXRmb3JtRGVsdGEud2lkdGgoKSwgZmls
dGVyZWRQbGF0Zm9ybURlbHRhLmhlaWdodCgpLCBmaWx0ZXJlZFZlbG9jaXR5KTsKICAgICAgICAg
ICAgIGlmIChoYW5kbGVXaGVlbEV2ZW50SW5TY3JvbGxhYmxlQXJlYShjb3BpZWRFdmVudCwgKmxh
dGNoZWRTY3JvbGxlciwgZXZlbnRIYW5kbGluZykpCiAgICAgICAgICAgICAgICAgd2hlZWxFdmVu
dC5zZXREZWZhdWx0SGFuZGxlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9F
dmVudEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKaW5kZXgg
MWIxNzVkYTc5M2M2YzUxMmQxMDQ5OWZlOTFmMGY1OGMxOWE3NzllYS4uZGMyZmZiNmQ2OGVlY2Y2
ZmVmOTZjMzBmZDczZWM4YTA1NzM1ZjFlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5o
CkBAIC00NjgsNyArNDY4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHByb2Nlc3NXaGVlbEV2ZW50
Rm9yU2Nyb2xsU25hcChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBjb25zdCBXZWFrUHRyPFNj
cm9sbGFibGVBcmVhPiYpOwogICAgIGJvb2wgY29tcGxldGVXaWRnZXRXaGVlbEV2ZW50KGNvbnN0
IFBsYXRmb3JtV2hlZWxFdmVudCYsIGNvbnN0IFdlYWtQdHI8V2lkZ2V0PiYsIGNvbnN0IFdlYWtQ
dHI8U2Nyb2xsYWJsZUFyZWE+Jik7CiAKLSAgICBib29sIGhhbmRsZVdoZWVsRXZlbnRJbkFwcHJv
cHJpYXRlRW5jbG9zaW5nQm94KE5vZGUqIHN0YXJ0Tm9kZSwgY29uc3QgV2hlZWxFdmVudCYsIGNv
bnN0IEZsb2F0U2l6ZSYgZmlsdGVyZWRQbGF0Zm9ybURlbHRhLCBjb25zdCBGbG9hdFNpemUmIGZp
bHRlcmVkVmVsb2NpdHksIE9wdGlvblNldDxFdmVudEhhbmRsaW5nPik7CisgICAgYm9vbCBoYW5k
bGVXaGVlbEV2ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2luZ0JveChOb2RlKiBzdGFydE5vZGUsIGNv
bnN0IFdoZWVsRXZlbnQmLCBGbG9hdFNpemUmIGZpbHRlcmVkUGxhdGZvcm1EZWx0YSwgY29uc3Qg
RmxvYXRTaXplJiBmaWx0ZXJlZFZlbG9jaXR5LCBPcHRpb25TZXQ8RXZlbnRIYW5kbGluZz4pOwog
CiAgICAgYm9vbCBoYW5kbGVXaGVlbEV2ZW50SW5TY3JvbGxhYmxlQXJlYShjb25zdCBQbGF0Zm9y
bVdoZWVsRXZlbnQmLCBTY3JvbGxhYmxlQXJlYSYsIE9wdGlvblNldDxFdmVudEhhbmRsaW5nPik7
CiAgICAgT3B0aW9uYWw8V2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU+IHVwZGF0ZVdoZWVsR2VzdHVy
ZVN0YXRlKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIE9wdGlvblNldDxFdmVudEhhbmRsaW5n
Pik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggZmMyYjM1Nzg2MzM5MTZmMzQzMmU5
MzUyYzFlY2NiMTc3MDQ0NjVjYS4uZjc1MGQ3MDQwNGEyNzhiNmU5NjcwMjRjOGIwYWI2MjExMTNj
ZGFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtNDE5LDYgKzQxOSwyNiBAQCBi
b29sIEZyYW1lVmlldzo6ZGlkRmlyc3RMYXlvdXQoKSBjb25zdAogICAgIHJldHVybiBsYXlvdXRD
b250ZXh0KCkuZGlkRmlyc3RMYXlvdXQoKTsKIH0KIAorT3ZlcnNjcm9sbEJlaGF2aW9yIEZyYW1l
Vmlldzo6aG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpIGNvbnN0Cit7CisgICAgYXV0byog
ZG9jdW1lbnQgPSBmcmFtZSgpLmRvY3VtZW50KCk7CisgICAgYXV0byBzY3JvbGxpbmdPYmplY3Qg
PSBkb2N1bWVudCAmJiBkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCkgPyBkb2N1bWVudC0+ZG9j
dW1lbnRFbGVtZW50KCktPnJlbmRlcmVyKCkgOiBudWxscHRyOworICAgIC8vIEFuIGVsZW1lbnQg
dGhhdCBpcyBub3Qgc2Nyb2xsIGNvbnRhaW5lciBtdXN0IGFjY2VwdCBidXQgaWdub3JlIHRoZSB2
YWx1ZXMgb2YgdGhpcyBwcm9wZXJ0eS4KKyAgICBpZiAoc2Nyb2xsaW5nT2JqZWN0ICYmIHJlbmRl
clZpZXcoKSAmJiByZW5kZXJWaWV3KCktPmNhbkJlU2Nyb2xsZWRBbmRIYXNTY3JvbGxhYmxlQXJl
YSgpKQorICAgICAgICByZXR1cm4gc2Nyb2xsaW5nT2JqZWN0LT5zdHlsZSgpLm92ZXJzY3JvbGxC
ZWhhdmlvclgoKTsKKyAgICByZXR1cm4gU2Nyb2xsYWJsZUFyZWE6Omhvcml6b250YWxPdmVyc2Ny
b2xsQmVoYXZpb3IoKTsKK30KKworT3ZlcnNjcm9sbEJlaGF2aW9yIEZyYW1lVmlldzo6dmVydGlj
YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSAgY29uc3QKK3sKKyAgICBhdXRvKiBkb2N1bWVudCA9IGZy
YW1lKCkuZG9jdW1lbnQoKTsKKyAgICBhdXRvIHNjcm9sbGluZ09iamVjdCA9IGRvY3VtZW50ICYm
IGRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKSA/IGRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQo
KS0+cmVuZGVyZXIoKSA6IG51bGxwdHI7CisgICAgLy8gQW4gZWxlbWVudCB0aGF0IGlzIG5vdCBz
Y3JvbGwgY29udGFpbmVyIG11c3QgYWNjZXB0IGJ1dCBpZ25vcmUgdGhlIHZhbHVlcyBvZiB0aGlz
IHByb3BlcnR5LgorICAgIGlmIChzY3JvbGxpbmdPYmplY3QgJiYgcmVuZGVyVmlldygpICYmIHJl
bmRlclZpZXcoKS0+Y2FuQmVTY3JvbGxlZEFuZEhhc1Njcm9sbGFibGVBcmVhKCkpCisgICAgICAg
IHJldHVybiBzY3JvbGxpbmdPYmplY3QtPnN0eWxlKCkub3ZlcnNjcm9sbEJlaGF2aW9yWSgpOwor
ICAgIHJldHVybiBTY3JvbGxhYmxlQXJlYTo6dmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKTsK
K30KKwogdm9pZCBGcmFtZVZpZXc6OmludmFsaWRhdGVSZWN0KGNvbnN0IEludFJlY3QmIHJlY3Qp
CiB7CiAgICAgaWYgKCFwYXJlbnQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKaW5kZXggYmRm
ZTI3ODQ5ZjI5NjFjNmRkZTVlOWZmOGRkYjUxMDIxNWYzMTcyNy4uNDYwNTYwN2RlMThmZmNjZDJi
MzM1NjU4NmIxMGUwNmUwMDI1ZWE4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCkBAIC02ODAs
NiArNjgwLDkgQEAgcHVibGljOgogCiAgICAgU3RyaW5nIGRlYnVnRGVzY3JpcHRpb24oKSBjb25z
dCBmaW5hbDsKIAorICAgIE92ZXJzY3JvbGxCZWhhdmlvciBob3Jpem9udGFsT3ZlcnNjcm9sbEJl
aGF2aW9yKCkgY29uc3QgZmluYWw7CisgICAgT3ZlcnNjcm9sbEJlaGF2aW9yIHZlcnRpY2FsT3Zl
cnNjcm9sbEJlaGF2aW9yKCkgY29uc3QgZmluYWw7CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQg
RnJhbWVWaWV3KEZyYW1lJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFj
L0V2ZW50SGFuZGxlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxl
ck1hYy5tbQppbmRleCAxZDRjODYxMTc2ZmVkZWYyMDY0ZTIyMDIzNjM5MDE0NTYzODQxZDZhLi45
MmNjYzNiMWZiZDkwNTQ4MzMzMzQwZTIwM2QxMDRiMzNhY2E2MTBmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tCkBAIC04MDAsMTAgKzgwMCwxNiBAQCBzdGF0
aWMgU2Nyb2xsYWJsZUFyZWEqIHNjcm9sbGFibGVBcmVhRm9yQm94KFJlbmRlckJveCYgYm94KQog
ICAgIHJldHVybiBudWxscHRyOwogfQogCitzdGF0aWMgYm9vbCBzaG91bGRPdmVyc2Nyb2xsQmVo
YXZpb3JCbG9ja1Njcm9sbENoYWluaW5nKGNvbnN0IFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxl
QXJlYSwgY29uc3QgRmxvYXRTaXplJiBiaWFzZWREZWx0YSwgU2Nyb2xsQ2hhaW5pbmdCbG9ja2Vy
JiBibG9ja2VyKQoreworICAgIHNjcm9sbGFibGVBcmVhLnVwZGF0ZVNjcm9sbENoYWluaW5nQmxv
Y2tlclN0YXRlKGJsb2NrZXIpOworICAgIHJldHVybiBTY3JvbGxDaGFpbmluZ0Jsb2NrZXI6OnNo
b3VsZEJsb2NrU2Nyb2xsQ2hhaW5pbmcoYmxvY2tlciwgYmlhc2VkRGVsdGEpOworfQorCiAvLyBG
SVhNRTogVGhpcyBjb3VsZCBiZSB3cml0dGVuIGluIHRlcm1zIG9mIFNjcm9sbGFibGVBcmVhOjpl
bmNsb3NpbmdTY3JvbGxhYmxlQXJlYSgpLgotc3RhdGljIENvbnRhaW5lck5vZGUqIGZpbmRFbmNs
b3NpbmdTY3JvbGxhYmxlQ29udGFpbmVyKENvbnRhaW5lck5vZGUqIG5vZGUsIGNvbnN0IFBsYXRm
b3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCkKK3N0YXRpYyBDb250YWluZXJOb2RlKiBmaW5kRW5j
bG9zaW5nU2Nyb2xsYWJsZUNvbnRhaW5lcihDb250YWluZXJOb2RlKiBub2RlLCBjb25zdCBQbGF0
Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIFNjcm9sbENoYWluaW5nQmxvY2tlciYgc2Nyb2xs
Q2hhaW5pbmdCbG9ja2VyKQogewotICAgIGF1dG8gYmlhc2VkRGVsdGEgPSBTY3JvbGxDb250cm9s
bGVyOjp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbCh3aGVlbEV2ZW50KTsKKyAgICBh
dXRvIGJpYXNlZERlbHRhID0gUGxhdGZvcm1XaGVlbEV2ZW50Ojp3aGVlbERlbHRhQmlhc2luZ1Rv
d2FyZHNWZXJ0aWNhbCh3aGVlbEV2ZW50LmRlbHRhKCkpOwogCiAgICAgLy8gRmluZCB0aGUgZmly
c3Qgbm9kZSB3aXRoIGEgdmFsaWQgc2Nyb2xsYWJsZSBhcmVhIHN0YXJ0aW5nIHdpdGggdGhlIGN1
cnJlbnQKICAgICAvLyBub2RlIGFuZCB0cmF2ZXJzaW5nIGl0cyBwYXJlbnRzIChvciBzaGFkb3cg
aG9zdHMpLgpAQCAtODE3LDcgKzgyMyw3IEBAIHN0YXRpYyBDb250YWluZXJOb2RlKiBmaW5kRW5j
bG9zaW5nU2Nyb2xsYWJsZUNvbnRhaW5lcihDb250YWluZXJOb2RlKiBub2RlLCBjb25zCiAgICAg
ICAgIFJlbmRlckJveCogYm94ID0gY2FuZGlkYXRlLT5yZW5kZXJCb3goKTsKICAgICAgICAgaWYg
KCFib3ggfHwgIWJveC0+Y2FuQmVTY3JvbGxlZEFuZEhhc1Njcm9sbGFibGVBcmVhKCkpCiAgICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgCisKICAgICAgICAgYXV0byogc2Nyb2xsYWJsZUFy
ZWEgPSBzY3JvbGxhYmxlQXJlYUZvckJveCgqYm94KTsKICAgICAgICAgaWYgKCFzY3JvbGxhYmxl
QXJlYSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtODMwLDggKzgzNiwxMiBAQCBzdGF0aWMg
Q29udGFpbmVyTm9kZSogZmluZEVuY2xvc2luZ1Njcm9sbGFibGVDb250YWluZXIoQ29udGFpbmVy
Tm9kZSogbm9kZSwgY29ucwogCiAgICAgICAgIGlmIChiaWFzZWREZWx0YS53aWR0aCgpICYmICFz
Y3JvbGxhYmxlQXJlYS0+aXNQaW5uZWRGb3JTY3JvbGxEZWx0YU9uQXhpcygtYmlhc2VkRGVsdGEu
d2lkdGgoKSwgU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsKSkKICAgICAgICAgICAgIHJldHVy
biBjYW5kaWRhdGU7CisKKyAgICAgICAgLy8gTGV0IEZyYW1lVmlldzo6aG9yaXpvbnRhbE92ZXJz
Y3JvbGxCZWhhdmlvciBkZWNpZGUgd2hpY2ggbm9kZSdzIG92ZXJzY3JvbGwtYmFodmlvciBpcyBl
ZmZlY3RpdmUgdG8gRnJhbWVWaWV3LgorICAgICAgICBpZiAoY2FuZGlkYXRlICE9IGNhbmRpZGF0
ZS0+ZG9jdW1lbnQoKS5ib2R5KCkgJiYgc2hvdWxkT3ZlcnNjcm9sbEJlaGF2aW9yQmxvY2tTY3Jv
bGxDaGFpbmluZygqc2Nyb2xsYWJsZUFyZWEsIGJpYXNlZERlbHRhLCBzY3JvbGxDaGFpbmluZ0Js
b2NrZXIpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIAorCiAgICAg
cmV0dXJuIG51bGxwdHI7CiB9CiAKQEAgLTg3NiwxMCArODg2LDExIEBAIHZvaWQgRXZlbnRIYW5k
bGVyOjpkZXRlcm1pbmVXaGVlbEV2ZW50VGFyZ2V0KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYg
d2hlZWxFdmVuCiAgICAgaWYgKCF2aWV3KQogICAgICAgICByZXR1cm47CiAKKyAgICBTY3JvbGxD
aGFpbmluZ0Jsb2NrZXIgc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyOwogICAgIGlmIChldmVudFRhcmdl
dElzUGxhdGZvcm1XaWRnZXQod2hlZWxFdmVudFRhcmdldC5nZXQoKSkpCiAgICAgICAgIHNjcm9s
bGFibGVBcmVhID0gc2Nyb2xsYWJsZUFyZWFGb3JFdmVudFRhcmdldCh3aGVlbEV2ZW50VGFyZ2V0
LmdldCgpKTsKICAgICBlbHNlIHsKLSAgICAgICAgYXV0byogc2Nyb2xsYWJsZUNvbnRhaW5lciA9
IGZpbmRFbmNsb3NpbmdTY3JvbGxhYmxlQ29udGFpbmVyKHdoZWVsRXZlbnRUYXJnZXQuZ2V0KCks
IHdoZWVsRXZlbnQpOworICAgICAgICBhdXRvKiBzY3JvbGxhYmxlQ29udGFpbmVyID0gZmluZEVu
Y2xvc2luZ1Njcm9sbGFibGVDb250YWluZXIod2hlZWxFdmVudFRhcmdldC5nZXQoKSwgd2hlZWxF
dmVudCwgc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKTsKICAgICAgICAgaWYgKHNjcm9sbGFibGVDb250
YWluZXIpCiAgICAgICAgICAgICBzY3JvbGxhYmxlQXJlYSA9IHNjcm9sbGFibGVBcmVhRm9yQ29u
dGFpbmVyTm9kZSgqc2Nyb2xsYWJsZUNvbnRhaW5lcik7CiAgICAgICAgIGVsc2UKQEAgLTg5Nyw3
ICs5MDgsNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6ZGV0ZXJtaW5lV2hlZWxFdmVudFRhcmdldChj
b25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbgogICAgIGlmIChtX2ZyYW1lLmlzTWFp
bkZyYW1lKCkgJiYgd2hlZWxFdmVudC5pc0dlc3R1cmVTdGFydCgpKQogICAgICAgICBwYWdlLT53
aGVlbEV2ZW50RGVsdGFGaWx0ZXIoKS0+YmVnaW5GaWx0ZXJpbmdEZWx0YXMoKTsKIAotICAgIHBh
Z2UtPnNjcm9sbExhdGNoaW5nQ29udHJvbGxlcigpLnVwZGF0ZUFuZEZldGNoTGF0Y2hpbmdTdGF0
ZUZvckZyYW1lKG1fZnJhbWUsIHdoZWVsRXZlbnQsIHdoZWVsRXZlbnRUYXJnZXQsIHNjcm9sbGFi
bGVBcmVhLCBpc092ZXJXaWRnZXQpOworICAgIHBhZ2UtPnNjcm9sbExhdGNoaW5nQ29udHJvbGxl
cigpLnVwZGF0ZUFuZEZldGNoTGF0Y2hpbmdTdGF0ZUZvckZyYW1lKG1fZnJhbWUsIHdoZWVsRXZl
bnQsIHdoZWVsRXZlbnRUYXJnZXQsIHNjcm9sbGFibGVBcmVhLCBzY3JvbGxDaGFpbmluZ0Jsb2Nr
ZXIsIGlzT3ZlcldpZGdldCk7CiB9CiAKIHZvaWQgRXZlbnRIYW5kbGVyOjpyZWNvcmRXaGVlbEV2
ZW50Rm9yRGVsdGFGaWx0ZXIoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdD
b29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9s
bGluZ0Nvb3JkaW5hdG9yLmNwcAppbmRleCA2YTllYmIzZTJiNjRmOGMzZTY3ZjY3MjNmZWU0NTk2
OWE5NTQ2N2NiLi40MjI4YzIxN2QyNWNlZDE1YTIwZDc4YzU3YjQxYjI0MjE0ZGFlYzM3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9s
bGluZ0Nvb3JkaW5hdG9yLmNwcApAQCAtNjk4LDYgKzY5OCw4IEBAIHZvaWQgQXN5bmNTY3JvbGxp
bmdDb29yZGluYXRvcjo6c2V0U2Nyb2xsaW5nTm9kZVNjcm9sbGFibGVBcmVhR2VvbWV0cnkoU2Ny
b2xsaW5nCiAgICAgc2Nyb2xsaW5nTm9kZS5zZXRTY3JvbGxhYmxlQXJlYVNpemUoc2Nyb2xsYWJs
ZUFyZWEudmlzaWJsZVNpemUoKSk7CiAKICAgICBTY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMgc2Ny
b2xsUGFyYW1ldGVyczsKKyAgICBzY3JvbGxQYXJhbWV0ZXJzLmhvcml6b250YWxPdmVyc2Nyb2xs
QmVoYXZpb3IgPSBzY3JvbGxhYmxlQXJlYS5ob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCk7
CisgICAgc2Nyb2xsUGFyYW1ldGVycy52ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvciA9IHNjcm9s
bGFibGVBcmVhLnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCk7CiAgICAgc2Nyb2xsUGFyYW1l
dGVycy5ob3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eSA9IHNjcm9sbGFibGVBcmVhLmhvcml6b250
YWxTY3JvbGxFbGFzdGljaXR5KCk7CiAgICAgc2Nyb2xsUGFyYW1ldGVycy52ZXJ0aWNhbFNjcm9s
bEVsYXN0aWNpdHkgPSBzY3JvbGxhYmxlQXJlYS52ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkoKTsK
ICAgICBzY3JvbGxQYXJhbWV0ZXJzLmFsbG93c0hvcml6b250YWxTY3JvbGxpbmcgPSBzY3JvbGxh
YmxlQXJlYS5hbGxvd3NIb3Jpem9udGFsU2Nyb2xsaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyLmNwcApp
bmRleCA0ZWQ0ZDk3NWE3ZWE0NTAwOTdmY2JiNGRlOWEyZTAzMjFjNmE2NzdiLi5iYTAwMTFkMzFi
Mzc4NTUxMmI0NTQyOTAyOTlhNWVhYzAxZmViMGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbExhdGNoaW5nQ29udHJvbGxlci5jcHAKQEAg
LTEwOCw3ICsxMDgsNyBAQCBib29sIFNjcm9sbExhdGNoaW5nQ29udHJvbGxlcjo6bGF0Y2hpbmdB
bGxvd3NTY3JvbGxpbmdJbkZyYW1lKGNvbnN0IEZyYW1lJiBmcmFtZQogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotdm9pZCBTY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXI6OnVwZGF0ZUFuZEZldGNoTGF0
Y2hpbmdTdGF0ZUZvckZyYW1lKEZyYW1lJiBmcmFtZSwgY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50
JiB3aGVlbEV2ZW50LCBSZWZQdHI8RWxlbWVudD4mIGxhdGNoZWRFbGVtZW50LCBXZWFrUHRyPFNj
cm9sbGFibGVBcmVhPiYgc2Nyb2xsYWJsZUFyZWEsIGJvb2wmIGlzT3ZlcldpZGdldCkKK3ZvaWQg
U2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyOjp1cGRhdGVBbmRGZXRjaExhdGNoaW5nU3RhdGVGb3JG
cmFtZShGcmFtZSYgZnJhbWUsIGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwg
UmVmUHRyPEVsZW1lbnQ+JiBsYXRjaGVkRWxlbWVudCwgV2Vha1B0cjxTY3JvbGxhYmxlQXJlYT4m
IHNjcm9sbGFibGVBcmVhLCBTY3JvbGxDaGFpbmluZ0Jsb2NrZXImIHNjcm9sbENoYWluaW5nQmxv
Y2tlciwgYm9vbCYgaXNPdmVyV2lkZ2V0KQogewogICAgIGlmICh3aGVlbEV2ZW50LmlzR2VzdHVy
ZVN0YXJ0KCkpIHsKICAgICAgICAgLy8gV2UgY2FuIGhhdmUgZXhpc3Rpbmcgc3RhdGUgaGVyZSBi
ZWNhdXNlIHN0YXRlIGlzIGNsZWFyZWQgb24gYSB0aW1lci4KQEAgLTExOCw2ICsxMTgsNyBAQCB2
b2lkIFNjcm9sbExhdGNoaW5nQ29udHJvbGxlcjo6dXBkYXRlQW5kRmV0Y2hMYXRjaGluZ1N0YXRl
Rm9yRnJhbWUoRnJhbWUmIGZyYW1lLAogICAgICAgICAgICAgc3RhdGUud2hlZWxFdmVudEVsZW1l
bnQgPSBtYWtlV2Vha1B0cihsYXRjaGVkRWxlbWVudC5nZXQoKSk7CiAgICAgICAgICAgICBpZiAo
c2hvdWxkTGF0Y2hUb1Njcm9sbGFibGVBcmVhKGZyYW1lLCBzY3JvbGxhYmxlQXJlYS5nZXQoKSwg
bV9jdW11bGF0aXZlRXZlbnREZWx0YSkpCiAgICAgICAgICAgICAgICAgc3RhdGUuc2Nyb2xsYWJs
ZUFyZWEgPSBzY3JvbGxhYmxlQXJlYTsKKyAgICAgICAgICAgIHN0YXRlLnNjcm9sbENoYWluaW5n
QmxvY2tlciA9IHNjcm9sbENoYWluaW5nQmxvY2tlcjsKICAgICAgICAgICAgIHN0YXRlLmlzT3Zl
cldpZGdldCA9IGlzT3ZlcldpZGdldDsKIAogICAgICAgICAgICAgTE9HX1dJVEhfU1RSRUFNKFNj
cm9sbExhdGNoaW5nLCBzdHJlYW0gPDwgIlNjcm9sbExhdGNoaW5nQ29udHJvbGxlcjo6dXBkYXRl
QW5kRmV0Y2hMYXRjaGluZ1N0YXRlRm9yRnJhbWUoKSAtIHB1c2hpbmcgc3RhdGUgZm9yIEZyYW1l
ICIgPDwgJmZyYW1lIDw8ICIgZWxlbWVudCAiIDw8IHN0YXRlLndoZWVsRXZlbnRFbGVtZW50Lmdl
dCgpIDw8ICIgc2Nyb2xsYWJsZUFyZWEgIiA8PCBzdGF0ZS5zY3JvbGxhYmxlQXJlYSk7CkBAIC0x
MzIsOCArMTMzLDEwIEBAIHZvaWQgU2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyOjp1cGRhdGVBbmRG
ZXRjaExhdGNoaW5nU3RhdGVGb3JGcmFtZShGcmFtZSYgZnJhbWUsCiAgICAgICAgICAgICByZXR1
cm47CiAKICAgICAgICAgLy8gV2UgbWF5IG5vdCBoYXZlIGxhdGNoZWQgYXQgZ2VzdHVyZSBzdGFy
dCBiZWNhdXNlIG9mIHNtYWxsIGRlbHRhcy4gUmUtZXZhbHVhdGUgbGF0Y2hpbmcgYmFzZWQgb24g
YWNjdW11bGF0ZWQgZGVsdGEuCi0gICAgICAgIGlmICghc3RhdGUtPnNjcm9sbGFibGVBcmVhICYm
IHNob3VsZExhdGNoVG9TY3JvbGxhYmxlQXJlYShmcmFtZSwgc2Nyb2xsYWJsZUFyZWEuZ2V0KCks
IG1fY3VtdWxhdGl2ZUV2ZW50RGVsdGEpKQorICAgICAgICBpZiAoIXN0YXRlLT5zY3JvbGxhYmxl
QXJlYSAmJiBzaG91bGRMYXRjaFRvU2Nyb2xsYWJsZUFyZWEoZnJhbWUsIHNjcm9sbGFibGVBcmVh
LmdldCgpLCBtX2N1bXVsYXRpdmVFdmVudERlbHRhKSkgewogICAgICAgICAgICAgc3RhdGUtPnNj
cm9sbGFibGVBcmVhID0gc2Nyb2xsYWJsZUFyZWE7CisgICAgICAgICAgICBzdGF0ZS0+c2Nyb2xs
Q2hhaW5pbmdCbG9ja2VyID0gc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyOworICAgICAgICB9CiAgICAg
fQogCiAgICAgaWYgKCF3aGVlbEV2ZW50LnVzZUxhdGNoZWRFdmVudEVsZW1lbnQoKSkKQEAgLTE0
NCwxMiArMTQ3LDM0IEBAIHZvaWQgU2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyOjp1cGRhdGVBbmRG
ZXRjaExhdGNoaW5nU3RhdGVGb3JGcmFtZShGcmFtZSYgZnJhbWUsCiAgICAgICAgICAgICBsYXRj
aGVkRWxlbWVudCA9IHN0YXRlLndoZWVsRXZlbnRFbGVtZW50LmdldCgpOwogICAgICAgICAgICAg
c2Nyb2xsYWJsZUFyZWEgPSBzdGF0ZS5zY3JvbGxhYmxlQXJlYTsKICAgICAgICAgICAgIGlzT3Zl
cldpZGdldCA9IHN0YXRlLmlzT3ZlcldpZGdldDsKKyAgICAgICAgICAgIHNjcm9sbENoYWluaW5n
QmxvY2tlciA9IHN0YXRlLnNjcm9sbENoYWluaW5nQmxvY2tlcjsKIAogICAgICAgICAgICAgTE9H
X1dJVEhfU1RSRUFNKFNjcm9sbExhdGNoaW5nLCBzdHJlYW0gPDwgIlNjcm9sbExhdGNoaW5nQ29u
dHJvbGxlcjo6dXBkYXRlQW5kRmV0Y2hMYXRjaGluZ1N0YXRlRm9yRnJhbWUoKSAtIHVzaW5nIHN0
YXRlIGZvciBGcmFtZSAiIDw8ICZmcmFtZSA8PCAiIGVsZW1lbnQgIiA8PCBsYXRjaGVkRWxlbWVu
dC5nZXQoKSA8PCAiIHNjcm9sbGFibGVBcmVhICIgPDwgc2Nyb2xsYWJsZUFyZWEpOwogICAgICAg
ICB9CiAgICAgfQogfQogCitTY3JvbGxDaGFpbmluZ0Jsb2NrZXIgU2Nyb2xsTGF0Y2hpbmdDb250
cm9sbGVyOjpnZXRTY3JvbGxDaGFpbmluZ0Jsb2NrZXIoY29uc3QgRnJhbWUmIGZyYW1lKSBjb25z
dAoreworICAgIGlmICghbV9mcmFtZVN0YXRlU3RhY2suaXNFbXB0eSgpKSB7CisgICAgICAgIGF1
dG8qIGZyYW1lU3RhdGUgPSBzdGF0ZUZvckZyYW1lKGZyYW1lKTsKKyAgICAgICAgaWYgKGZyYW1l
U3RhdGUpCisgICAgICAgICAgICByZXR1cm4gZnJhbWVTdGF0ZS0+c2Nyb2xsQ2hhaW5pbmdCbG9j
a2VyOworICAgIH0KKworICAgIHJldHVybiB7IGZhbHNlLCBmYWxzZSB9OworfQorCit2b2lkIFNj
cm9sbExhdGNoaW5nQ29udHJvbGxlcjo6dXBkYXRlU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKGNvbnN0
IEZyYW1lJiBmcmFtZSwgY29uc3QgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyJiBzY3JvbGxDaGFpbmlu
Z0Jsb2NrZXJGcm9tU3ViZnJhbWUpCit7CisgICAgaWYgKG1fZnJhbWVTdGF0ZVN0YWNrLmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChhdXRvKiBmcmFtZVN0YXRlID0gc3RhdGVG
b3JGcmFtZShmcmFtZSkpIHsKKyAgICAgICAgZnJhbWVTdGF0ZS0+c2Nyb2xsQ2hhaW5pbmdCbG9j
a2VyLmJsb2NrWCB8PSBzY3JvbGxDaGFpbmluZ0Jsb2NrZXJGcm9tU3ViZnJhbWUuYmxvY2tYOwor
ICAgICAgICBmcmFtZVN0YXRlLT5zY3JvbGxDaGFpbmluZ0Jsb2NrZXIuYmxvY2tZIHw9IHNjcm9s
bENoYWluaW5nQmxvY2tlckZyb21TdWJmcmFtZS5ibG9ja1k7CisgICAgfQorfQorCiB2b2lkIFNj
cm9sbExhdGNoaW5nQ29udHJvbGxlcjo6cmVtb3ZlTGF0Y2hpbmdTdGF0ZUZvclRhcmdldChjb25z
dCBFbGVtZW50JiBlbGVtZW50KQogewogICAgIGlmIChtX2ZyYW1lU3RhdGVTdGFjay5pc0VtcHR5
KCkpCkBAIC0yNTIsNiArMjc3LDggQEAgdm9pZCBTY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXI6OmR1
bXAoV1RGOjpUZXh0U3RyZWFtJiB0cykgY29uc3QKICAgICAgICAgbXVsdGlsaW5lU3RyZWFtLmR1
bXBQcm9wZXJ0eSgiZnJhbWUiLCBWYWx1ZU9yTnVsbChzdGF0ZS5mcmFtZSkpOwogICAgICAgICBt
dWx0aWxpbmVTdHJlYW0uZHVtcFByb3BlcnR5KCJlbGVtZW50IiwgVmFsdWVPck51bGwoc3RhdGUu
d2hlZWxFdmVudEVsZW1lbnQuZ2V0KCkpKTsKICAgICAgICAgbXVsdGlsaW5lU3RyZWFtLmR1bXBQ
cm9wZXJ0eSgic2Nyb2xsYWJsZSBhcmVhIiwgVmFsdWVPck51bGwoc3RhdGUuc2Nyb2xsYWJsZUFy
ZWEuZ2V0KCkpKTsKKyAgICAgICAgbXVsdGlsaW5lU3RyZWFtLmR1bXBQcm9wZXJ0eSgic3RhdGUu
c2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLmJsb2NrWCIsIHN0YXRlLnNjcm9sbENoYWluaW5nQmxvY2tl
ci5ibG9ja1gpOworICAgICAgICBtdWx0aWxpbmVTdHJlYW0uZHVtcFByb3BlcnR5KCJzdGF0ZS5z
Y3JvbGxDaGFpbmluZ0Jsb2NrZXIuYmxvY2tZIiwgc3RhdGUuc2Nyb2xsQ2hhaW5pbmdCbG9ja2Vy
LmJsb2NrWSk7CiAgICAgICAgIG11bHRpbGluZVN0cmVhbS5kdW1wUHJvcGVydHkoImlzIG92ZXIg
d2lkZ2V0Iiwgc3RhdGUuaXNPdmVyV2lkZ2V0KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbExhdGNoaW5nQ29udHJvbGxlci5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyLmgKaW5k
ZXggNTY0OTYxNTljNWU2OGQyYmNjZWY4YzI2NWVlNjFjY2I5ZGZiNGIyOC4uOGZkOGUzMGM2YTE2
NWQ5OTk4ZDQxMWQyOGJiZmZkMzJlZWYyMzYxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyLmgKQEAgLTYxLDcg
KzYxLDEwIEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgbm8gZnJhbWUgaXMgbGF0
Y2hlZCwgb3IgbGF0Y2hpbmcgaXMgaW4gdGhlIGdpdmVuIGZyYW1lIChpbiB3aGljaCBjYXNlIGxh
dGNoZWRTY3JvbGxlciB3aWxsIGJlIG5vbi1udWxsKS4KICAgICBib29sIGxhdGNoaW5nQWxsb3dz
U2Nyb2xsaW5nSW5GcmFtZShjb25zdCBGcmFtZSYsIFdlYWtQdHI8U2Nyb2xsYWJsZUFyZWE+JiBs
YXRjaGVkU2Nyb2xsZXIpIGNvbnN0OwogCi0gICAgdm9pZCB1cGRhdGVBbmRGZXRjaExhdGNoaW5n
U3RhdGVGb3JGcmFtZShGcmFtZSYsIGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIFJlZlB0cjxF
bGVtZW50PiYgbGF0Y2hlZEVsZW1lbnQsIFdlYWtQdHI8U2Nyb2xsYWJsZUFyZWE+JiwgYm9vbCYg
aXNPdmVyV2lkZ2V0KTsKKyAgICB2b2lkIHVwZGF0ZUFuZEZldGNoTGF0Y2hpbmdTdGF0ZUZvckZy
YW1lKEZyYW1lJiwgY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgUmVmUHRyPEVsZW1lbnQ+JiBs
YXRjaGVkRWxlbWVudCwgV2Vha1B0cjxTY3JvbGxhYmxlQXJlYT4mLCBTY3JvbGxDaGFpbmluZ0Js
b2NrZXImLCBib29sJiBpc092ZXJXaWRnZXQpOworCisgICAgU2Nyb2xsQ2hhaW5pbmdCbG9ja2Vy
IGdldFNjcm9sbENoYWluaW5nQmxvY2tlcihjb25zdCBGcmFtZSYpIGNvbnN0OworICAgIHZvaWQg
dXBkYXRlU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKGNvbnN0IEZyYW1lJiwgY29uc3QgU2Nyb2xsQ2hh
aW5pbmdCbG9ja2VyJiBTY3JvbGxDaGFpbmluZ0Jsb2NrZXJGcm9tU3ViZnJhbWUpOwogCiAgICAg
dm9pZCByZW1vdmVMYXRjaGluZ1N0YXRlRm9yVGFyZ2V0KGNvbnN0IEVsZW1lbnQmKTsKICAgICB2
b2lkIHJlbW92ZUxhdGNoaW5nU3RhdGVGb3JGcmFtZShjb25zdCBGcmFtZSYpOwpAQCAtNzMsNiAr
NzYsNyBAQCBwcml2YXRlOgogICAgICAgICBXZWFrUHRyPEVsZW1lbnQ+IHdoZWVsRXZlbnRFbGVt
ZW50OwogICAgICAgICBXZWFrUHRyPFNjcm9sbGFibGVBcmVhPiBzY3JvbGxhYmxlQXJlYTsKICAg
ICAgICAgRnJhbWUqIGZyYW1lIHsgbnVsbHB0ciB9OworICAgICAgICBTY3JvbGxDaGFpbmluZ0Js
b2NrZXIgc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyOwogICAgICAgICBib29sIGlzT3ZlcldpZGdldCB7
IGZhbHNlIH07CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3JUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3JUeXBlcy5oCmluZGV4IGVlY2FiNmY1NWI2NWM0
NjAxOTlmODBlZjA1MDY1NTJiNzFmMzA4MDMuLjU2NzRkY2FlNmM0MzJjYTQ2YTAyODM1ZGQwMGFk
NzQwMTNjZTZhYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ0Nvb3JkaW5hdG9yVHlwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdDb29yZGluYXRvclR5cGVzLmgKQEAgLTY4LDYgKzY4LDkgQEAgZW51bSBj
bGFzcyBTY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uIHsKIH07CiAKIHN0cnVjdCBTY3JvbGxh
YmxlQXJlYVBhcmFtZXRlcnMgeworICAgIE92ZXJzY3JvbGxCZWhhdmlvciBob3Jpem9udGFsT3Zl
cnNjcm9sbEJlaGF2aW9yIHsgT3ZlcnNjcm9sbEJlaGF2aW9yOjogQXV0byB9OworICAgIE92ZXJz
Y3JvbGxCZWhhdmlvciB2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvciB7IE92ZXJzY3JvbGxCZWhh
dmlvcjo6IEF1dG8gfTsKKwogICAgIFNjcm9sbEVsYXN0aWNpdHkgaG9yaXpvbnRhbFNjcm9sbEVs
YXN0aWNpdHkgeyBTY3JvbGxFbGFzdGljaXR5Tm9uZSB9OwogICAgIFNjcm9sbEVsYXN0aWNpdHkg
dmVydGljYWxTY3JvbGxFbGFzdGljaXR5IHsgU2Nyb2xsRWxhc3RpY2l0eU5vbmUgfTsKIApAQCAt
ODQsNyArODcsOSBAQCBzdHJ1Y3QgU2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzIHsKIAogICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBTY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMmIG90aGVyKSBjb25z
dAogICAgIHsKLSAgICAgICAgcmV0dXJuIGhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5ID09IG90
aGVyLmhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5CisgICAgICAgIHJldHVybiBob3Jpem9udGFs
T3ZlcnNjcm9sbEJlaGF2aW9yID09IG90aGVyLmhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IK
KyAgICAgICAgICAgICYmIHZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yID09IG90aGVyLnZlcnRp
Y2FsT3ZlcnNjcm9sbEJlaGF2aW9yCisgICAgICAgICAgICAmJiBob3Jpem9udGFsU2Nyb2xsRWxh
c3RpY2l0eSA9PSBvdGhlci5ob3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eQogICAgICAgICAgICAg
JiYgdmVydGljYWxTY3JvbGxFbGFzdGljaXR5ID09IG90aGVyLnZlcnRpY2FsU2Nyb2xsRWxhc3Rp
Y2l0eQogICAgICAgICAgICAgJiYgaG9yaXpvbnRhbFNjcm9sbGJhck1vZGUgPT0gb3RoZXIuaG9y
aXpvbnRhbFNjcm9sbGJhck1vZGUKICAgICAgICAgICAgICYmIHZlcnRpY2FsU2Nyb2xsYmFyTW9k
ZSA9PSBvdGhlci52ZXJ0aWNhbFNjcm9sbGJhck1vZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5jcHAKaW5kZXggMWNlZjMxYmIzNjY1MTZkM2I0YThj
ZTgxZmMxOWRmYWI2ZTkyYTBkNS4uZmJjZTNkYmIzNzRlZThkZGViYTQ2YWE5NGIxNjI3ZGVlMDYz
NDg0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
VHJlZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJl
ZS5jcHAKQEAgLTE3NCwyMSArMTc0LDU5IEBAIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdCBTY3Jv
bGxpbmdUcmVlOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVuCiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIAorYm9vbCBTY3JvbGxpbmdUcmVlOjpzaG91bGRCbG9ja1Njcm9s
bENoYWluaW5nV2l0aE5vZGUoY29uc3QgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUmIHNjcm9s
bGluZ05vZGUsIFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgU2Nyb2xsQ2hhaW5pbmdC
bG9ja2VyJiBibG9ja2VyLCBib29sJiBoYW5kbGVkKQoreworICAgIHNjcm9sbGluZ05vZGUudXBk
YXRlU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyU3RhdGUoYmxvY2tlcik7CisKKyAgICBGbG9hdFNpemUg
ZmlsdGVyZWREZWx0YSh3aGVlbEV2ZW50LmRlbHRhWCgpLCB3aGVlbEV2ZW50LmRlbHRhWSgpKTsK
KyAgICBhdXRvIGJpYXNlZERlbHRhID0gUGxhdGZvcm1XaGVlbEV2ZW50Ojp3aGVlbERlbHRhQmlh
c2luZ1Rvd2FyZHNWZXJ0aWNhbChmaWx0ZXJlZERlbHRhKTsKKyAgICBpZiAoYmxvY2tlci5ibG9j
a1ggfHwgYmxvY2tlci5ibG9ja1kpIHsKKyAgICAgICAgaWYgKGJsb2NrZXIuYmxvY2tYICYmICFi
aWFzZWREZWx0YS5oZWlnaHQoKSAmJiB3aWxsV2hlZWxFdmVudFN0YXJ0U3dpcGVHZXN0dXJlKHdo
ZWVsRXZlbnQpKSB7CisgICAgICAgICAgICBoYW5kbGVkID0gZmFsc2U7CisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoU2Nyb2xsQ2hhaW5pbmdCbG9ja2Vy
OjpzaG91bGRCbG9ja1Njcm9sbENoYWluaW5nKGJsb2NrZXIsIGJpYXNlZERlbHRhKSkgeworICAg
ICAgICAgICAgaGFuZGxlZCA9IHRydWU7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgfQorICAgICAgICBTY3JvbGxDaGFpbmluZ0Jsb2NrZXI6OmZpbHRlckRlbHRhKGJsb2NrZXIs
IGJpYXNlZERlbHRhLCBmaWx0ZXJlZERlbHRhKTsKKyAgICAgICAgd2hlZWxFdmVudCA9IHdoZWVs
RXZlbnQuY29weVdpdGhEZWx0YXNBbmRWZWxvY2l0eShmaWx0ZXJlZERlbHRhLndpZHRoKCksIGZp
bHRlcmVkRGVsdGEuaGVpZ2h0KCksIHdoZWVsRXZlbnQuc2Nyb2xsaW5nVmVsb2NpdHkoKSk7Cisg
ICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwogV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0IFNj
cm9sbGluZ1RyZWU6OmhhbmRsZVdoZWVsRXZlbnRXaXRoTm9kZShjb25zdCBQbGF0Zm9ybVdoZWVs
RXZlbnQmIHdoZWVsRXZlbnQsIE9wdGlvblNldDxXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBzPiBw
cm9jZXNzaW5nU3RlcHMsIFNjcm9sbGluZ1RyZWVOb2RlKiBub2RlLCBFdmVudFRhcmdldGluZyBl
dmVudFRhcmdldGluZykKIHsKKyAgICBQbGF0Zm9ybVdoZWVsRXZlbnQgYWRqdXN0ZWRXaGVlbEV2
ZW50ID0gUGxhdGZvcm1XaGVlbEV2ZW50KHdoZWVsRXZlbnQpOworICAgIFNjcm9sbENoYWluaW5n
QmxvY2tlciBibG9ja2VyID0geyBmYWxzZSwgZmFsc2UgfTsKICAgICB3aGlsZSAobm9kZSkgewog
ICAgICAgICBpZiAoaXM8U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU+KCpub2RlKSkgewogICAg
ICAgICAgICAgYXV0byYgc2Nyb2xsaW5nTm9kZSA9IGRvd25jYXN0PFNjcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlPigqbm9kZSk7Ci0gICAgICAgICAgICBhdXRvIHJlc3VsdCA9IHNjcm9sbGluZ05v
ZGUuaGFuZGxlV2hlZWxFdmVudCh3aGVlbEV2ZW50LCBldmVudFRhcmdldGluZyk7CisgICAgICAg
ICAgICBhdXRvIHJlc3VsdCA9IHNjcm9sbGluZ05vZGUuaGFuZGxlV2hlZWxFdmVudChhZGp1c3Rl
ZFdoZWVsRXZlbnQsIGV2ZW50VGFyZ2V0aW5nKTsKIAogICAgICAgICAgICAgaWYgKHJlc3VsdC53
YXNIYW5kbGVkKSB7Ci0gICAgICAgICAgICAgICAgbV9sYXRjaGluZ0NvbnRyb2xsZXIubm9kZURp
ZEhhbmRsZUV2ZW50KHNjcm9sbGluZ05vZGUuc2Nyb2xsaW5nTm9kZUlEKCksIHByb2Nlc3NpbmdT
dGVwcywgd2hlZWxFdmVudCwgbV9hbGxvd0xhdGNoaW5nKTsKKyAgICAgICAgICAgICAgICAvLyBJ
ZiB0aGUgc2Nyb2xsIGNoYWluaW5nIGlzIGJsb2NrZWQgaW4gYSBzaW5nbGUgZGlyZWN0aW9uLCBp
dCBzaG91bGQgc3RvcCBsYXRjaGluZyB0byBhIG5vZGUsCisgICAgICAgICAgICAgICAgLy8gZm9y
IHRoZSB3aGVlbCBldmVudCBtaWdodCBjaGFuZ2UgdGhlIGRpcmVjdGlvbiBhbmQgb3ZlcnNjcm9s
bC1iZWhhdmlvciBtaWdodCBub3QgYmUgYWJsZSBibG9jaworICAgICAgICAgICAgICAgIC8vIHRo
ZSBzY3JvbGwgY2hhaW5pbmcgaWYgaXQgbGF0Y2hlcyB0byB0aGUgYW5jZXN0cnkgbm9kZSBvZiBv
dmVyc2Nyb2xsLWJlaGF2aW9yIHRhcmdldC4KKyAgICAgICAgICAgICAgICBpZiAoKGJsb2NrZXIu
YmxvY2tYICYmIGJsb2NrZXIuYmxvY2tZKSB8fCAoIWJsb2NrZXIuYmxvY2tYICYmICFibG9ja2Vy
LmJsb2NrWSkpCisgICAgICAgICAgICAgICAgICAgIG1fbGF0Y2hpbmdDb250cm9sbGVyLm5vZGVE
aWRIYW5kbGVFdmVudChzY3JvbGxpbmdOb2RlLnNjcm9sbGluZ05vZGVJRCgpLCBwcm9jZXNzaW5n
U3RlcHMsIHdoZWVsRXZlbnQsIG1fYWxsb3dMYXRjaGluZyk7CiAgICAgICAgICAgICAgICAgbV9n
ZXN0dXJlU3RhdGUubm9kZURpZEhhbmRsZUV2ZW50KHNjcm9sbGluZ05vZGUuc2Nyb2xsaW5nTm9k
ZUlEKCksIHdoZWVsRXZlbnQpOwogICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
ICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChyZXN1bHQubmVlZHNNYWluVGhyZWFkUHJvY2Vz
c2luZygpIHx8IGV2ZW50VGFyZ2V0aW5nICE9IEV2ZW50VGFyZ2V0aW5nOjpQcm9wYWdhdGUpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKworICAgICAgICAgICAgYm9vbCBoYW5kbGVk
ID0gZmFsc2U7CisgICAgICAgICAgICBpZiAoc2hvdWxkQmxvY2tTY3JvbGxDaGFpbmluZ1dpdGhO
b2RlKHNjcm9sbGluZ05vZGUsIGFkanVzdGVkV2hlZWxFdmVudCwgYmxvY2tlciwgaGFuZGxlZCkp
IHsKKyAgICAgICAgICAgICAgICBpZiAoIWhhbmRsZWQpCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQ6OnVuaGFuZGxlZCgpOworCisgICAgICAgICAg
ICAgICAgaWYgKChibG9ja2VyLmJsb2NrWCAmJiBibG9ja2VyLmJsb2NrWSkpCisgICAgICAgICAg
ICAgICAgICAgIG1fbGF0Y2hpbmdDb250cm9sbGVyLm5vZGVEaWRIYW5kbGVFdmVudChzY3JvbGxp
bmdOb2RlLnNjcm9sbGluZ05vZGVJRCgpLCBwcm9jZXNzaW5nU3RlcHMsIHdoZWVsRXZlbnQsIG1f
YWxsb3dMYXRjaGluZyk7CisgICAgICAgICAgICAgICAgbV9nZXN0dXJlU3RhdGUubm9kZURpZEhh
bmRsZUV2ZW50KHNjcm9sbGluZ05vZGUuc2Nyb2xsaW5nTm9kZUlEKCksIHdoZWVsRXZlbnQpOwor
ICAgICAgICAgICAgICAgIHJldHVybiBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQ6OmhhbmRsZWQo
KTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIGlmIChpczxTY3JvbGxpbmdU
cmVlT3ZlcmZsb3dTY3JvbGxQcm94eU5vZGU+KCpub2RlKSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5oCmluZGV4IDgzMWY1NjZkNWIzOTE4MDgzN2Fh
NGZiNjg0NzBmNDdlMDFlNWJmMjQuLmZmMDFhMWI4ZTBmMThjZjA3Yzk0ZjA1NjJlN2I2OWE2YTM0
ZmFkZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z1RyZWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVl
LmgKQEAgLTI3Myw3ICsyNzMsOCBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZv
aWQgcmVjZWl2ZWRXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpIHsgfQotICAg
IAorICAgIGJvb2wgc2hvdWxkQmxvY2tTY3JvbGxDaGFpbmluZ1dpdGhOb2RlKGNvbnN0IFNjcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlJiwgUGxhdGZvcm1XaGVlbEV2ZW50JiwgU2Nyb2xsQ2hhaW5p
bmdCbG9ja2VyJiwgYm9vbCYgaGFuZGxlZCk7CisKICAgICBSZWZQdHI8U2Nyb2xsaW5nVHJlZUZy
YW1lU2Nyb2xsaW5nTm9kZT4gbV9yb290Tm9kZTsKIAogICAgIHVzaW5nIFNjcm9sbGluZ1RyZWVO
b2RlTWFwID0gSGFzaE1hcDxTY3JvbGxpbmdOb2RlSUQsIFJlZlB0cjxTY3JvbGxpbmdUcmVlTm9k
ZT4+OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwCmluZGV4IDkwYjUwYzIyMTEzM2VhNDM2ZTg2MWZl
ZWU4ZTg3NTEzY2I1MjNiYjMuLmNlOWI3MDI2YjZkOWExOGQ4NTExN2ZiMzI1NjFjOWJhMjU3ZjU4
ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAKQEAgLTEzNCw2ICsxMzQsMjIgQEAgYm9vbCBT
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6aXNMYXRjaGVkTm9kZSgpIGNvbnN0CiAgICAgcmV0
dXJuIHNjcm9sbGluZ1RyZWUoKS5sYXRjaGVkTm9kZUlEKCkgPT0gc2Nyb2xsaW5nTm9kZUlEKCk7
CiB9CiAKK092ZXJzY3JvbGxCZWhhdmlvciBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6aG9y
aXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2Nyb2xs
YWJsZUFyZWFQYXJhbWV0ZXJzLmhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3I7Cit9CisKK092
ZXJzY3JvbGxCZWhhdmlvciBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6dmVydGljYWxPdmVy
c2Nyb2xsQmVoYXZpb3IoKSBjb25zdAoreworICAgIHJldHVybiBtX3Njcm9sbGFibGVBcmVhUGFy
YW1ldGVycy52ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcjsKK30KKwordm9pZCBTY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZTo6dXBkYXRlU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyU3RhdGUoU2Nyb2xs
Q2hhaW5pbmdCbG9ja2VyJiBibG9ja2VyKSBjb25zdAoreworICAgIGJsb2NrZXIuYmxvY2tYIHw9
IGhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSAhPSBPdmVyc2Nyb2xsQmVoYXZpb3I6OkF1
dG87CisgICAgYmxvY2tlci5ibG9ja1kgfD0gdmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSAh
PSBPdmVyc2Nyb2xsQmVoYXZpb3I6OkF1dG87Cit9CisKIGJvb2wgU2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGU6OmNhbkhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3
aGVlbEV2ZW50LCBFdmVudFRhcmdldGluZyBldmVudFRhcmdldGluZykgY29uc3QKIHsKICAgICBp
ZiAoIWNhbkhhdmVTY3JvbGxiYXJzKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaAppbmRleCA4NjJjMWIz
ZGJlMGUyM2UxNjlmYTUyY2FhNDYyZmVmZGYxNGRlODE4Li5hNmJmNGM5OTdjYjQyMWU1NmZlYWYx
MWExYmQ5ZDU1NjRkY2NkZjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmgKQEAgLTE0NSw2ICsxNDUs
OSBAQCBwcm90ZWN0ZWQ6CiAgICAgY29uc3QgRmxvYXRTaXplJiB0b3RhbENvbnRlbnRzU2l6ZUZv
clJ1YmJlckJhbmQoKSBjb25zdCB7IHJldHVybiBtX3RvdGFsQ29udGVudHNTaXplRm9yUnViYmVy
QmFuZDsgfQogICAgIHZvaWQgc2V0VG90YWxDb250ZW50c1NpemVGb3JSdWJiZXJCYW5kKGNvbnN0
IEZsb2F0U2l6ZSYgdG90YWxDb250ZW50c1NpemVGb3JSdWJiZXJCYW5kKSB7IG1fdG90YWxDb250
ZW50c1NpemVGb3JSdWJiZXJCYW5kID0gdG90YWxDb250ZW50c1NpemVGb3JSdWJiZXJCYW5kOyB9
CiAKKyAgICBPdmVyc2Nyb2xsQmVoYXZpb3IgaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigp
IGNvbnN0OworICAgIE92ZXJzY3JvbGxCZWhhdmlvciB2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlv
cigpIGNvbnN0OworICAgIHZvaWQgdXBkYXRlU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyU3RhdGUoU2Ny
b2xsQ2hhaW5pbmdCbG9ja2VyJikgY29uc3Q7CiAgICAgU2Nyb2xsRWxhc3RpY2l0eSBob3Jpem9u
dGFsU2Nyb2xsRWxhc3RpY2l0eSgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWFQYXJh
bWV0ZXJzLmhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5OyB9CiAgICAgU2Nyb2xsRWxhc3RpY2l0
eSB2ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGFibGVB
cmVhUGFyYW1ldGVycy52ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHk7IH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlRGVsZWdhdGVNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLmgKaW5kZXggMzJhODM4ZWI2ZjNkYTQz
OTgzYmNmZjU1YjdjYzQxODE1NTczNGU5Zi4uMzk4MTQ4MWZlNGQyOTZlZWJjZWUzYWM3MWQ4MjRk
N2QyM2NhNmFiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFj
L1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZU1hYy5oCkBAIC0xMDEsNiArMTAxLDkgQEAgcHJpdmF0ZToKICAgICBGbG9hdFNpemUgdmlld3Bv
cnRTaXplKCkgY29uc3Qgb3ZlcnJpZGU7CiAjZW5kaWYKIAorICAgIGJvb2wgc2hvdWxkU3RvcEhv
cml6b250YWxTdHJlY2goKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHNob3VsZFN0b3BWZXJ0
aWNhbFN0cmVjaCgpIGNvbnN0IG92ZXJyaWRlOworCiAgICAgdm9pZCByZWxlYXNlUmVmZXJlbmNl
c1RvU2Nyb2xsZXJJbXBzT25UaGVNYWluVGhyZWFkKCk7CiAKICAgICBTY3JvbGxDb250cm9sbGVy
IG1fc2Nyb2xsQ29udHJvbGxlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1tIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
RGVsZWdhdGVNYWMubW0KaW5kZXggNmEyNTgwMjEwNTgwMTJkYzVlNWUxNjVjNDdmN2Y5ZTYxNGQ2
M2VhNS4uOTM0Nzc0MTRjMjA4NzlmZDdkMDk3ZTc4YzM5OTcxZWI0NGRiNDVkOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlRGVsZWdhdGVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
bWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMubW0KQEAgLTI2Miw2ICsy
NjIsOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsQ29udHJvbGxlclRpbWVyPiBTY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjpjcgogCiBib29sIFNjcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlRGVsZWdhdGVNYWM6OmFsbG93c0hvcml6b250YWxTdHJldGNoaW5nKGNvbnN0IFBs
YXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCkgY29uc3QKIHsKKyAgICBpZiAoc2hvdWxkU3Rv
cEhvcml6b250YWxTdHJlY2goKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgc3dpdGNo
IChob3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eSgpKSB7CiAgICAgY2FzZSBTY3JvbGxFbGFzdGlj
aXR5QXV0b21hdGljOiB7CiAgICAgICAgIGJvb2wgc2Nyb2xsYmFyc0FsbG93U3RyZXRjaGluZyA9
IGFsbG93c0hvcml6b250YWxTY3JvbGxpbmcoKSB8fCAhYWxsb3dzVmVydGljYWxTY3JvbGxpbmco
KTsKQEAgLTI4NCw2ICsyODcsOSBAQCBib29sIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVs
ZWdhdGVNYWM6OmFsbG93c0hvcml6b250YWxTdHJldGNoaW5nKGNvbnN0IFBsYQogCiBib29sIFNj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OmFsbG93c1ZlcnRpY2FsU3RyZXRj
aGluZyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpIGNvbnN0CiB7CisgICAg
aWYgKHNob3VsZFN0b3BWZXJ0aWNhbFN0cmVjaCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
ICAgICBzd2l0Y2ggKHZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eSgpKSB7CiAgICAgY2FzZSBTY3Jv
bGxFbGFzdGljaXR5QXV0b21hdGljOiB7CiAgICAgICAgIGJvb2wgc2Nyb2xsYmFyc0FsbG93U3Ry
ZXRjaGluZyA9IGFsbG93c1ZlcnRpY2FsU2Nyb2xsaW5nKCkgfHwgIWFsbG93c0hvcml6b250YWxT
Y3JvbGxpbmcoKTsKQEAgLTQzNyw2ICs0NDMsMTYgQEAgRmxvYXRTaXplIFNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OnZpZXdwb3J0U2l6ZSgpIGNvbnN0CiB9CiAjZW5kaWYK
IAorYm9vbCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjpzaG91bGRTdG9w
SG9yaXpvbnRhbFN0cmVjaCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHNjcm9sbGluZ05vZGUoKS5o
b3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgPT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpOb25l
OworfQorCitib29sIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OnNob3Vs
ZFN0b3BWZXJ0aWNhbFN0cmVjaCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHNjcm9sbGluZ05vZGUo
KS52ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpID09IE92ZXJzY3JvbGxCZWhhdmlvcjo6Tm9u
ZTsKK30KKwogdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjpkZWZl
cldoZWVsRXZlbnRUZXN0Q29tcGxldGlvbkZvclJlYXNvbihXaGVlbEV2ZW50VGVzdE1vbml0b3I6
OlNjcm9sbGFibGVBcmVhSWRlbnRpZmllciBpZGVudGlmaWVyLCBXaGVlbEV2ZW50VGVzdE1vbml0
b3I6OkRlZmVyUmVhc29uIHJlYXNvbikgY29uc3QKIHsKICAgICBpZiAoIXNjcm9sbGluZ1RyZWUo
KS5pc01vbml0b3JpbmdXaGVlbEV2ZW50cygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
bGF0Zm9ybVdoZWVsRXZlbnQuaAppbmRleCBkNzE2OTM0NmEyNDAyM2MyYTQ3ODdhZTM0NTQwYTM3
NjA3YzBhMmQ1Li42NDE3OTdhNmY0MTg3NTMzOGNhNzFlYTczOTE2MGQxMGIwNmY4OGU3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaApAQCAtMjYsNiAr
MjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCisjaW5jbHVk
ZSAiRmxvYXRTaXplLmgiCiAjaW5jbHVkZSAiSW50UG9pbnQuaCIKICNpbmNsdWRlICJQbGF0Zm9y
bUV2ZW50LmgiCiAjaW5jbHVkZSA8d3RmL1dpbmRvd3NFeHRyYXMuaD4KQEAgLTE3NCw2ICsxNzUs
OCBAQCBwdWJsaWM6CiAgICAgUGxhdGZvcm1XaGVlbEV2ZW50KEhXTkQsIFdQQVJBTSwgTFBBUkFN
LCBib29sIGlzTW91c2VIV2hlZWwpOwogI2VuZGlmCiAKKyAgICBzdGF0aWMgRmxvYXRTaXplIHdo
ZWVsRGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRpY2FsKGNvbnN0IEZsb2F0U2l6ZSYpOworCiBwcm90
ZWN0ZWQ6CiAgICAgUGxhdGZvcm1XaGVlbEV2ZW50R3JhbnVsYXJpdHkgbV9ncmFudWxhcml0eSB7
IFNjcm9sbEJ5UGl4ZWxXaGVlbEV2ZW50IH07CiAgICAgYm9vbCBtX2RpcmVjdGlvbkludmVydGVk
RnJvbURldmljZSB7IGZhbHNlIH07CkBAIC0yNjQsNiArMjY3LDE5IEBAIGlubGluZSBGbG9hdFBv
aW50IFBsYXRmb3JtV2hlZWxFdmVudDo6c3dpcGVWZWxvY2l0eSgpIGNvbnN0CiAKICNlbmRpZiAv
LyBFTkFCTEUoS0lORVRJQ19TQ1JPTExJTkcpCiAKK2lubGluZSBGbG9hdFNpemUgUGxhdGZvcm1X
aGVlbEV2ZW50Ojp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbChjb25zdCBGbG9hdFNp
emUmIGRlbHRhKQoreworICAgIGF1dG8gZGVsdGFYID0gZGVsdGEud2lkdGgoKTsKKyAgICBhdXRv
IGRlbHRhWSA9IGRlbHRhLmhlaWdodCgpOworCisgICAgaWYgKGZhYnNmKGRlbHRhWSkgPj0gZmFi
c2YoZGVsdGFYKSkKKyAgICAgICAgZGVsdGFYID0gMDsKKyAgICBlbHNlCisgICAgICAgIGRlbHRh
WSA9IDA7CisKKyAgICByZXR1cm4geyBkZWx0YVgsIGRlbHRhWSB9OworfQorCiBXRUJDT1JFX0VY
UE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3Qg
UGxhdGZvcm1XaGVlbEV2ZW50Jik7CiBXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgV2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwcyk7CiBX
RUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFt
JiwgRXZlbnRIYW5kbGluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVHlwZXMuaAppbmRl
eCAwYjFjNDA1NjNlOGNiYjgyMmE5ZmViYTRjMGM0NjVmOGE1NzRhOTNiLi5mOGY3MWMyZTFmZjdi
OWU0ZDJlNzU2OWU3YjE5MjFiODIyMWY4NGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bFR5cGVzLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRmxv
YXRQb2ludC5oIgorI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgogI2luY2x1ZGUgIkludFBvaW50Lmgi
CiAjaW5jbHVkZSA8Y3N0ZGludD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgpAQCAtMjU5
LDYgKzI2MCwzNCBAQCBlbnVtIGNsYXNzIFNjcm9sbFNuYXBQb2ludFNlbGVjdGlvbk1ldGhvZCA6
IHVpbnQ4X3QgewogICAgIENsb3Nlc3QsCiB9OwogCitzdHJ1Y3QgU2Nyb2xsQ2hhaW5pbmdCbG9j
a2VyIHsKKyAgICBib29sIGJsb2NrWCB7IGZhbHNlIH07CisgICAgYm9vbCBibG9ja1kgeyBmYWxz
ZSB9OworCisgICAgc3RhdGljIGJvb2wgc2hvdWxkQmxvY2tTY3JvbGxDaGFpbmluZyhjb25zdCBT
Y3JvbGxDaGFpbmluZ0Jsb2NrZXImIGJsb2NrZXIsIGNvbnN0IEZsb2F0U2l6ZSYgYmlhc2VkRGVs
dGEpCisgICAgeworICAgICAgICBpZiAoKGJsb2NrZXIuYmxvY2tYICYmIGJsb2NrZXIuYmxvY2tZ
KQorICAgICAgICAgICAgfHwgKGJsb2NrZXIuYmxvY2tYICYmICFiaWFzZWREZWx0YS5oZWlnaHQo
KSkKKyAgICAgICAgICAgIHx8IChibG9ja2VyLmJsb2NrWSAmJiAhYmlhc2VkRGVsdGEud2lkdGgo
KSkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKworICAgIHN0YXRpYyB2b2lkIGZpbHRlckRlbHRhKGNvbnN0IFNjcm9sbENoYWluaW5nQmxv
Y2tlciYgYmxvY2tlciwgY29uc3QgRmxvYXRTaXplJiBiaWFzZWREZWx0YSwgRmxvYXRTaXplJiBm
aWx0ZXJlZERlbHRhKQorICAgIHsKKyAgICAgICAgaWYgKGJsb2NrZXIuYmxvY2tYKSB7CisgICAg
ICAgICAgICBmaWx0ZXJlZERlbHRhLnNldFdpZHRoKDApOworICAgICAgICAgICAgaWYgKCFiaWFz
ZWREZWx0YS5oZWlnaHQoKSkKKyAgICAgICAgICAgICAgICBmaWx0ZXJlZERlbHRhLnNldEhlaWdo
dCgwKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoYmxvY2tlci5ibG9ja1kpIHsKKyAgICAgICAg
ICAgIGZpbHRlcmVkRGVsdGEuc2V0SGVpZ2h0KDApOworICAgICAgICAgICAgaWYgKCFiaWFzZWRE
ZWx0YS53aWR0aCgpKQorICAgICAgICAgICAgICAgIGZpbHRlcmVkRGVsdGEuc2V0V2lkdGgoMCk7
CisgICAgICAgIH0KKyAgICB9Cit9OworCiB1c2luZyBTY3JvbGxiYXJDb250cm9sU3RhdGUgPSB1
bnNpZ25lZDsKIHVzaW5nIFNjcm9sbGJhckNvbnRyb2xQYXJ0TWFzayA9IHVuc2lnbmVkOwogdXNp
bmcgU2Nyb2xsaW5nTm9kZUlEID0gdWludDY0X3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxhYmxlQXJlYS5jcHAKaW5kZXggNWYwZTJlNmYwMjM5ZmI0ZmU0YWIyOWJiMzE0YjgzZWFh
OTljY2RlMi4uY2ZlYTE4YjExNmZhYmQzNDZjOTgwNDM1MzExZmRlZWNlNGNlMDZiMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcApAQCAtODQ4LDYgKzg0OCwx
MiBAQCB2b2lkIFNjcm9sbGFibGVBcmVhOjpjb21wdXRlU2Nyb2xsYmFyVmFsdWVBbmRPdmVyaGFu
ZyhmbG9hdCBjdXJyZW50UG9zaXRpb24sIGZsbwogICAgIH0KIH0KIAordm9pZCBTY3JvbGxhYmxl
QXJlYTo6dXBkYXRlU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyU3RhdGUoU2Nyb2xsQ2hhaW5pbmdCbG9j
a2VyJiBibG9ja2VyKSBjb25zdAoreworICAgIGJsb2NrZXIuYmxvY2tYIHw9IGhvcml6b250YWxP
dmVyc2Nyb2xsQmVoYXZpb3IoKSAhPSBPdmVyc2Nyb2xsQmVoYXZpb3I6OkF1dG87CisgICAgYmxv
Y2tlci5ibG9ja1kgfD0gdmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSAhPSBPdmVyc2Nyb2xs
QmVoYXZpb3I6OkF1dG87Cit9CisKIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYg
dHMsIGNvbnN0IFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSkKIHsKICAgICB0cyA8PCBz
Y3JvbGxhYmxlQXJlYS5kZWJ1Z0Rlc2NyaXB0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsYWJsZUFyZWEuaAppbmRleCA5ZmNkNTQ5YWJiNmVkYTIwNmUyMjBjMGJkOGRkOTFmZWYy
NzJmMzBlLi44MzY0ZWVmNTkxNGVhYjAxOTQzMTAwZWRiMmRiMmUyN2U2MDNjYWMxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgKQEAgLTEyNCw2ICsxMjQsMTAgQEAg
cHVibGljOgogICAgIGJvb2wgY29uc3RyYWluc1Njcm9sbGluZ1RvQ29udGVudEVkZ2UoKSBjb25z
dCB7IHJldHVybiBtX2NvbnN0cmFpbnNTY3JvbGxpbmdUb0NvbnRlbnRFZGdlOyB9CiAgICAgdm9p
ZCBzZXRDb25zdHJhaW5zU2Nyb2xsaW5nVG9Db250ZW50RWRnZShib29sIGNvbnN0cmFpbnNTY3Jv
bGxpbmdUb0NvbnRlbnRFZGdlKSB7IG1fY29uc3RyYWluc1Njcm9sbGluZ1RvQ29udGVudEVkZ2Ug
PSBjb25zdHJhaW5zU2Nyb2xsaW5nVG9Db250ZW50RWRnZTsgfQogCisgICAgdmlydHVhbCBPdmVy
c2Nyb2xsQmVoYXZpb3IgaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpIGNvbnN0IHsgcmV0
dXJuIE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0bzsgfQorICAgIHZpcnR1YWwgT3ZlcnNjcm9sbEJl
aGF2aW9yIHZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29uc3QgeyByZXR1cm4gT3ZlcnNj
cm9sbEJlaGF2aW9yOjpBdXRvOyB9CisgICAgdm9pZCB1cGRhdGVTY3JvbGxDaGFpbmluZ0Jsb2Nr
ZXJTdGF0ZShTY3JvbGxDaGFpbmluZ0Jsb2NrZXImKSBjb25zdDsKKwogICAgIHZvaWQgc2V0VmVy
dGljYWxTY3JvbGxFbGFzdGljaXR5KFNjcm9sbEVsYXN0aWNpdHkgc2Nyb2xsRWxhc3RpY2l0eSkg
eyBtX3ZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eSA9IHNjcm9sbEVsYXN0aWNpdHk7IH0KICAgICBT
Y3JvbGxFbGFzdGljaXR5IHZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eSgpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PFNjcm9sbEVsYXN0aWNpdHk+KG1fdmVydGljYWxTY3JvbGxFbGFzdGljaXR5
KTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxD
b250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9s
bGVyLmgKaW5kZXggNzMwMzI0NGZjNjBmZWYzNDM5MGFkNjRlMjUxOWFjNWViMjMyMTUwNS4uMzhk
ZjU4ZmJmZDk1ZTRmMjM5MDI1ZTZjMDQ4OWEzZTg5NWIwOTg2ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIuaApAQCAtMTE4LDYgKzExOCwx
MSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBMYXlvdXRTaXplIHNjcm9sbEV4dGVudCgpIGNvbnN0
ID0gMDsKICAgICB2aXJ0dWFsIEZsb2F0U2l6ZSB2aWV3cG9ydFNpemUoKSBjb25zdCA9IDA7CiAj
ZW5kaWYKKworI2lmIFBMQVRGT1JNKE1BQykKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU3RvcEhv
cml6b250YWxTdHJlY2goKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9v
bCBzaG91bGRTdG9wVmVydGljYWxTdHJlY2goKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorI2Vu
ZGlmCiB9OwogCiBlbnVtIGNsYXNzIFdoZWVsRXZlbnRTdGF0dXMgewpAQCAtMTczLDggKzE3OCw2
IEBAIHB1YmxpYzoKICNlbmRpZgogI2VuZGlmCiAKLSAgICBzdGF0aWMgRmxvYXRTaXplIHdoZWVs
RGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRpY2FsKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpOwot
CiAgICAgZW51bSBjbGFzcyBXaGVlbEF4aXNCaWFzIHsgTm9uZSwgVmVydGljYWwgfTsKICAgICBz
dGF0aWMgT3B0aW9uYWw8U2Nyb2xsRGlyZWN0aW9uPiBkaXJlY3Rpb25Gcm9tRXZlbnQoY29uc3Qg
UGxhdGZvcm1XaGVlbEV2ZW50JiwgT3B0aW9uYWw8U2Nyb2xsRXZlbnRBeGlzPiwgV2hlZWxBeGlz
QmlhcyA9IFdoZWVsQXhpc0JpYXM6Ok5vbmUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5tbQppbmRleCBkMDk1ZTZiMTczYjlmOTIwYTBk
NGQ5YTUyNWIzMTEyZDM4NWNkZGJiLi5iNzE4NTZmODRjYjQ4MTBlMTIxMjBiNWUzZTg3ZTcwOGU4
NDVhYjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxD
b250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbENv
bnRyb2xsZXIubW0KQEAgLTI1Miw3ICsyNTIsOCBAQCBib29sIFNjcm9sbENvbnRyb2xsZXI6Omhh
bmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50KQogICAg
ICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgIG1fb3ZlcmZs
b3dTY3JvbGxEZWx0YS5zZXRXaWR0aChtX292ZXJmbG93U2Nyb2xsRGVsdGEud2lkdGgoKSArIGRl
bHRhWCk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHNob3VsZFN0cmV0Y2gg
PSB0cnVlOworICAgICAgICAgICAgICAgIGlmICgoIWRlbHRhWCB8fCAhbV9jbGllbnQuc2hvdWxk
U3RvcEhvcml6b250YWxTdHJlY2goKSkgJiYgKCFkZWx0YVkgfHwgIW1fY2xpZW50LnNob3VsZFN0
b3BWZXJ0aWNhbFN0cmVjaCgpKSkKKyAgICAgICAgICAgICAgICAgICAgc2hvdWxkU3RyZXRjaCA9
IHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtMzI5LDE5ICszMzAsNiBAQCBi
b29sIFNjcm9sbENvbnRyb2xsZXI6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVl
bEV2ZW50JiB3aGVlbEV2ZW50KQogfQogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKIAotRmxvYXRT
aXplIFNjcm9sbENvbnRyb2xsZXI6OndoZWVsRGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRpY2FsKGNv
bnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCkKLXsKLSAgICBhdXRvIGRlbHRhWCA9
IHdoZWVsRXZlbnQuZGVsdGFYKCk7Ci0gICAgYXV0byBkZWx0YVkgPSB3aGVlbEV2ZW50LmRlbHRh
WSgpOwotCi0gICAgaWYgKGZhYnNmKGRlbHRhWSkgPj0gZmFic2YoZGVsdGFYKSkKLSAgICAgICAg
ZGVsdGFYID0gMDsKLSAgICBlbHNlCi0gICAgICAgIGRlbHRhWSA9IDA7Ci0KLSAgICByZXR1cm4g
eyBkZWx0YVgsIGRlbHRhWSB9OwotfQotCiBPcHRpb25hbDxTY3JvbGxEaXJlY3Rpb24+IFNjcm9s
bENvbnRyb2xsZXI6OmRpcmVjdGlvbkZyb21FdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQm
IHdoZWVsRXZlbnQsIE9wdGlvbmFsPFNjcm9sbEV2ZW50QXhpcz4gYXhpcywgV2hlZWxBeGlzQmlh
cyBiaWFzKQogewogICAgIC8vIEZJWE1FOiBJdCdzIGltcG9zc2libGUgdG8gaW5mZXIgZGlyZWN0
aW9uIGZyb20gYSBzaW5nbGUgZXZlbnQsIHNpbmNlIHRoZSBzdGFydCBvZiBhIGdlc3R1cmUgaXMg
ZWl0aGVyIHplcm8gb3IKQEAgLTM0OSw3ICszMzcsNyBAQCBPcHRpb25hbDxTY3JvbGxEaXJlY3Rp
b24+IFNjcm9sbENvbnRyb2xsZXI6OmRpcmVjdGlvbkZyb21FdmVudChjb25zdCBQbGF0Zm9ybVdo
ZQogCiAgICAgYXV0byB3aGVlbERlbHRhID0gRmxvYXRTaXplIHsgd2hlZWxFdmVudC5kZWx0YVgo
KSwgd2hlZWxFdmVudC5kZWx0YVkoKSB9OwogICAgIGlmIChiaWFzID09IFdoZWVsQXhpc0JpYXM6
OlZlcnRpY2FsKQotICAgICAgICB3aGVlbERlbHRhID0gd2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRz
VmVydGljYWwod2hlZWxFdmVudCk7CisgICAgICAgIHdoZWVsRGVsdGEgPSBQbGF0Zm9ybVdoZWVs
RXZlbnQ6OndoZWVsRGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRpY2FsKHdoZWVsRXZlbnQuZGVsdGEo
KSk7CiAKICAgICBpZiAoYXhpcykgewogICAgICAgICBzd2l0Y2ggKGF4aXMudmFsdWUoKSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFj
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMuaAppbmRl
eCA0OWYwYjRiMWQ3OWY3N2E5NjhhOTUyZjhhZWI5Nzk1NGUyOTcyZTI5Li5hNmNhMGFmZWVkNTU0
Y2FkOTMzNzNhNDRiZjgxODNkZjE3MTFiODQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMuaApAQCAtMTU2LDYgKzE1Niw5IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBhZGp1c3RTY3JvbGxQb3NpdGlvblRvQm91bmRzSWZOZWNlc3NhcnkoKSBmaW5h
bDsKICNlbmRpZgogCisgICAgYm9vbCBzaG91bGRTdG9wSG9yaXpvbnRhbFN0cmVjaCgpIGNvbnN0
IG92ZXJyaWRlOworICAgIGJvb2wgc2hvdWxkU3RvcFZlcnRpY2FsU3RyZWNoKCkgY29uc3Qgb3Zl
cnJpZGU7CisKICAgICBib29sIG1faGF2ZVNjcm9sbGVkU2luY2VQYWdlTG9hZDsKICAgICBib29s
IG1fbmVlZHNTY3JvbGxlclN0eWxlVXBkYXRlOwogICAgIEludFJlY3QgbV92aXNpYmxlU2Nyb2xs
ZXJUaHVtYlJlY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Ny
b2xsQW5pbWF0b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5p
bWF0b3JNYWMubW0KaW5kZXggNjE1MWRlZmMwZWFlYzNhMDU3MTUwMjBhZTY1MDAyM2JhY2YxNGIz
Yy4uZThlNmFmYzI0NTY3MjcwYWY3MDRkNTAwM2UzNTEzNGY2MzhmZjI3MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQpAQCAtMTUzNiw2
ICsxNTM2LDE2IEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3JNYWM6OnNldFZpc2libGVTY3JvbGxlclRo
dW1iUmVjdChjb25zdCBJbnRSZWN0JiBzY3JvbGxlclRodW1iCiAgICAgbV92aXNpYmxlU2Nyb2xs
ZXJUaHVtYlJlY3QgPSByZWN0SW5WaWV3Q29vcmRpbmF0ZXM7CiB9CiAKK2Jvb2wgU2Nyb2xsQW5p
bWF0b3JNYWM6OnNob3VsZFN0b3BIb3Jpem9udGFsU3RyZWNoKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9zY3JvbGxhYmxlQXJlYS5ob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgPT0gT3Zl
cnNjcm9sbEJlaGF2aW9yOjpOb25lOworfQorCitib29sIFNjcm9sbEFuaW1hdG9yTWFjOjpzaG91
bGRTdG9wVmVydGljYWxTdHJlY2goKSBjb25zdAoreworICAgIHJldHVybiBtX3Njcm9sbGFibGVB
cmVhLnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgPT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpO
b25lOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU01P
T1RIX1NDUk9MTElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllclNjcm9sbGFibGVBcmVhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllclNjcm9sbGFibGVBcmVhLmNwcAppbmRleCAzYzk5ODFjNWJjMmUzYzMxMzE0NTI2OTQy
OTg3YWY4YjVjMDBiOThhLi4yYzVkMTk3ZGIxMTc0YWYwODg3MjZiY2M1NDYzMGNjMDQ3YTc2N2Jh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxh
YmxlQXJlYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyU2Ny
b2xsYWJsZUFyZWEuY3BwCkBAIC0xNzc4LDQgKzE3NzgsMjIgQEAgU3RyaW5nIFJlbmRlckxheWVy
U2Nyb2xsYWJsZUFyZWE6OmRlYnVnRGVzY3JpcHRpb24oKSBjb25zdAogICAgIHJldHVybiBtX2xh
eWVyLmRlYnVnRGVzY3JpcHRpb24oKTsKIH0KIAorT3ZlcnNjcm9sbEJlaGF2aW9yIFJlbmRlckxh
eWVyU2Nyb2xsYWJsZUFyZWE6Omhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdAor
eworICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9IG1fbGF5ZXIucmVuZGVyZXIoKS5zdHls
ZSgpOworICAgIC8vIEFuIGVsZW1lbnQgdGhhdCBpcyBub3Qgc2Nyb2xsIGNvbnRhaW5lciBtdXN0
IGFjY2VwdCBidXQgaWdub3JlIHRoZSB2YWx1ZXMgb2YgdGhpcyBwcm9wZXJ0eS4KKyAgICBpZiAo
bV9sYXllci5yZW5kZXJCb3goKSAmJiBtX2xheWVyLnJlbmRlckJveCgpLT5jYW5CZVNjcm9sbGVk
QW5kSGFzU2Nyb2xsYWJsZUFyZWEoKSkKKyAgICAgICAgcmV0dXJuIHN0eWxlLm92ZXJzY3JvbGxC
ZWhhdmlvclgoKTsKKyAgICByZXR1cm4gU2Nyb2xsYWJsZUFyZWE6Omhvcml6b250YWxPdmVyc2Ny
b2xsQmVoYXZpb3IoKTsKK30KKworT3ZlcnNjcm9sbEJlaGF2aW9yIFJlbmRlckxheWVyU2Nyb2xs
YWJsZUFyZWE6OnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29uc3QKK3sKKyAgICBjb25z
dCBSZW5kZXJTdHlsZSYgc3R5bGUgPSBtX2xheWVyLnJlbmRlcmVyKCkuc3R5bGUoKTsKKyAgICAv
LyBBbiBlbGVtZW50IHRoYXQgaXMgbm90IHNjcm9sbCBjb250YWluZXIgbXVzdCBhY2NlcHQgYnV0
IGlnbm9yZSB0aGUgdmFsdWVzIG9mIHRoaXMgcHJvcGVydHkuCisgICAgaWYgKG1fbGF5ZXIucmVu
ZGVyQm94KCkgJiYgbV9sYXllci5yZW5kZXJCb3goKS0+Y2FuQmVTY3JvbGxlZEFuZEhhc1Njcm9s
bGFibGVBcmVhKCkpCisgICAgICAgIHJldHVybiBzdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JZKCk7
CisgICAgcmV0dXJuIFNjcm9sbGFibGVBcmVhOjp2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuaAppbmRleCA0NzMyYjI2NGM0Yjk1
NDg1MWEzZDdmNWI2OGYwOWYyMTY4ZjM3YmVkLi4zMmRiMDM2NTAzOWFjZGQyZGIzZTU3YzM4ZmMw
NGEwMzYyYTFjZGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJTY3JvbGxhYmxlQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllclNjcm9sbGFibGVBcmVhLmgKQEAgLTEyOCw2ICsxMjgsOSBAQCBwdWJsaWM6CiAKICAg
ICBib29sIHNjcm9sbChTY3JvbGxEaXJlY3Rpb24sIFNjcm9sbEdyYW51bGFyaXR5LCBmbG9hdCBt
dWx0aXBsaWVyID0gMSk7CiAKKyAgICBPdmVyc2Nyb2xsQmVoYXZpb3IgaG9yaXpvbnRhbE92ZXJz
Y3JvbGxCZWhhdmlvcigpIGNvbnN0IGZpbmFsOworICAgIE92ZXJzY3JvbGxCZWhhdmlvciB2ZXJ0
aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpIGNvbnN0IGZpbmFsOworCiBwdWJsaWM6CiAgICAgLy8g
QWxsIG1ldGhvZHMgaW4gdGhpcyBzZWN0aW9uIG92ZXJyaWRlIFNjcm9sbGFibGVhQXJlYSBtZXRo
b2RzIChmaW5hbCkuCiAgICAgdm9pZCBhdmFpbGFibGVDb250ZW50U2l6ZUNoYW5nZWQoQXZhaWxh
YmxlU2l6ZUNoYW5nZVJlYXNvbikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCBmYWFhMmFkY2Y5OTFiMTM2NTkzYzU1OTYwNjQ2
ZmYxZjQ4MGNmMWQ3Li5kYjZjNTJjMzRlMDdhOTllYzFlNTMwNmQyZDY0NDBlNjNlMzc1YWRkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAg
LTIwMTksNiArMjAxOSw5IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxVc2VyU3R5bGVTaGVldD46OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyLCBVc2VyU3R5bGVTaGVldCYgdXNlCiAKIHZvaWQgQXJndW1l
bnRDb2RlcjxTY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnM+OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rl
ciwgY29uc3QgU2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogeworICAgIGVu
Y29kZXIgPDwgcGFyYW1ldGVycy5ob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yOworICAgIGVu
Y29kZXIgPDwgcGFyYW1ldGVycy52ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcjsKKwogICAgIGVu
Y29kZXIgPDwgcGFyYW1ldGVycy5ob3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eTsKICAgICBlbmNv
ZGVyIDw8IHBhcmFtZXRlcnMudmVydGljYWxTY3JvbGxFbGFzdGljaXR5OwogCkBAIC0yMDM2LDYg
KzIwMzksMTEgQEAgdm9pZCBBcmd1bWVudENvZGVyPFNjcm9sbGFibGVBcmVhUGFyYW1ldGVycz46
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTY3IKIAogYm9vbCBBcmd1bWVudENvZGVy
PFNjcm9sbGFibGVBcmVhUGFyYW1ldGVycz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBTY3Jv
bGxhYmxlQXJlYVBhcmFtZXRlcnMmIHBhcmFtcykKIHsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHBhcmFtcy5ob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1zLnZlcnRpY2FsT3ZlcnNjcm9sbEJl
aGF2aW9yKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShwYXJhbXMuaG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbXMudmVydGljYWxTY3JvbGxFbGFzdGlj
aXR5KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5k
ZXggZmE5NmNkYTg0ZWNiN2Q0ODhhZTQyOTEzM2MwZjViNDQzNzA0OGRiMS4uMzk1MzU2NzgzZmRh
NTZmZTFjMWFiMGQ5MjM3Mjg1ZjM2NjQ2ZjA5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlIDxXZWJD
b3JlL1JlYWx0aW1lTWVkaWFTb3VyY2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlcmluZ01v
ZGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvU2Nyb2xsVHlwZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcmlhbGl6ZWRQ
bGF0Zm9ybURhdGFDdWVWYWx1ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlclR5
cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TdG9yZWRDcmVkZW50aWFsc1BvbGljeS5oPgpAQCAt
ODk2LDYgKzg5NywxNSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvPiB7CiAKIG5hbWVzcGFjZSBXVEYgewogCit0
ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6Ok92ZXJzY3JvbGxCZWhhdmlvcj4g
eworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgV2ViQ29yZTo6T3ZlcnNjcm9s
bEJlaGF2aW9yLAorICAgIFdlYkNvcmU6Ok92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0bywKKyAgICBX
ZWJDb3JlOjpPdmVyc2Nyb2xsQmVoYXZpb3I6OkNvbnRhaW4sCisgICAgV2ViQ29yZTo6T3ZlcnNj
cm9sbEJlaGF2aW9yOjpOb25lCisgICAgPjsKK307CisKIHRlbXBsYXRlPD4gc3RydWN0IEVudW1U
cmFpdHM8V2ViQ29yZTo6Q29sb3JTcGFjZT4gewogICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1
ZXM8CiAgICAgV2ViQ29yZTo6Q29sb3JTcGFjZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IDk2MjBlODZmYjBhNzIwMTQwMWMyY2FkNTUx
ZGUyY2ZiODg4OWJlZGIuLmI4Y2YyZTdmZTc0NmJlODYyMTQ5NWZjMTQzMTM4MmIwNjUzOTlkYzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQpA
QCAtNDA5Myw2ICs0MDkzLDggQEAgc3RhdGljIEJPT0wgY3VycmVudFNjcm9sbElzQmxpdChOU1Zp
ZXcgKmNsaXBWaWV3KQogICAgIGF1dG8qIGZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKTsKICAg
ICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+ZXZlbnRIYW5kbGVyKCkud2hlZWxFdmVudChldmVudCkp
IHsKICNpZiBQTEFURk9STShNQUMpCisgICAgICAgIC8vIEZJWE1FOiBOZWVkIHRvIGZpbmQgYSB3
YXkgdG8gYmxvY2sgdGhlIGNyb3NzLWZyYW1lIHNjcm9sbCBjaGFpbmluZyBpbiBXSzEuCisgICAg
ICAgIC8vIFdlIGNhbiBub3QganVzdCBza2lwIHRoZSBzY3JvbGwgaGVyZSwgaXQgbm90IG9ubHkg
YmxvY2tzIHNjcm9sbCBjaGFpbmluZyBidXQgYWxzbyBibG9ja3MgdGhlIHNjcm9sbCBvbiBjdXJy
ZW50IHZpZXcuCiAgICAgICAgIFtzdXBlciBzY3JvbGxXaGVlbDpldmVudF07CiAjZW5kaWYKICAg
ICB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggMzAwMTE1NDg5MTFhNTRkYjg5ZmM4OGE5MzM0M2IwNGI2MTU3ZjVhMi4uMjYw
MTIxOWIzNDZmY2RhYWIzZGQ4NTRjZmQ2ODI2NjE0OGRlN2RjYiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2
IEBACisyMDIxLTAxLTE4ICBDYXRoaWUgQ2hlbiAgPGNhdGhpZWNoZW5AaWdhbGlhLmNvbT4KKwor
ICAgICAgICBJbXBsZW1lbnQgQ1NTIG92ZXJzY3JvbGwtYmVoYXZpb3Igb24gTWFjCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjAxMzkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCYXNlZCBvbiBGcsOpZMOp
cmljIFdhbmcncyBwYXRjaC4KKworICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6CisgICAgICAg
ICogZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50LWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci1l
bGVtZW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwt
YmVoYXZpb3ItaWZyYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9zY3Jv
bGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwt
YmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhh
dmlvci11bnNjcm9sbGFibGUtaWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2Ny
b2xsaW5nL3Jlc291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXN1cHBvcnQuanM6IEFkZGVkLgor
ICAgICAgICAoYXN5bmMgcGVyZm9ybVdoZWVsU2Nyb2xsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9t
YWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9UZXN0
RXhwZWN0YXRpb25zOgorCiAyMDIxLTAxLTE1ICBSb2IgQnVpcyAgPHJidWlzQGlnYWxpYS5jb20+
CiAKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDIy
NApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3Rz
L1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggOGNiYjIyODFkMWQzOGFjYzA1MDljNzhlMzcwNDkxZjJj
ZTJlODI3NC4uMzgwYmFmYzhhNDc3YzBjMGM4ZmY4ZjJkMTU4NTgzNWY1YTEwOWIzMyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9UZXN0
RXhwZWN0YXRpb25zCkBAIC0xMDI0LDYgKzEwMjQsMTIgQEAgd2Via2l0Lm9yZy9iLzIwMzE0NiBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL29mZnNjcmVlbiBbIFNr
aXAKICMgVGVzdHMgYSBzZXR0aW5nIGJlaGluZCB0aGUgRU5BQkxFX0ZVTExTQ1JFRU5fQVBJIGZs
YWcsIHdoaWNoIGlzIFdLMi1vbmx5CiBtZWRpYS92aWRlby1zdXBwb3J0cy1mdWxsc2NyZWVuLmh0
bWwgWyBTa2lwIF0KIAorIyBUZXN0cyBvdmVyc2Nyb2xsLWJlaGF2aW9yLCB3aGljaCBvbmx5IHN1
cHBvcnRlZCBvbiBNYWMKK2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVu
dC5odG1sIFsgU2tpcCBdCitmYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFt
ZS5odG1sIFsgU2tpcCBdCitmYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Ny
b2xsYWJsZS1lbGVtZW50Lmh0bWwgWyBTa2lwIF0KK2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwt
YmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sIFsgU2tpcCBdCisKICMvLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICMgRW5kIHBsYXRmb3JtLXNwZWNpZmljIHRlc3RzLgog
Iy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVu
dC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjcxNTBmZjYwYjVkYmRkMGI0YTdhYzZmODNmYjU2
ZjU3Y2QyY2Q4MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5n
L292ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMCBA
QAorCitQQVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwt
YmVoYXZpb3I6IGF1dG8gYXV0by4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3
aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gYXV0by4KK1BBU1MgRWxlbWVudCBob3Jpem9u
dGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBhdXRvLgor
UEFTUyBFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlv
cjogY29udGFpbiBhdXRvLgorUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0
aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIGF1dG8uCitQQVNTIEVsZW1lbnQgdmVydGljYWwg
c2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIGF1dG8uCitQQVNTIEVs
ZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1
dG8gY29udGFpbi4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJz
Y3JvbGwtYmVoYXZpb3I6IGF1dG8gY29udGFpbi4KK1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNj
cm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBjb250YWluLgorUEFT
UyBFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjog
Y29udGFpbiBjb250YWluLgorUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0
aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIGNvbnRhaW4uCitQQVNTIEVsZW1lbnQgdmVydGlj
YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIGNvbnRhaW4uCitQ
QVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZp
b3I6IGF1dG8gbm9uZS4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92
ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gbm9uZS4KK1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNj
cm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBub25lLgorUEFTUyBF
bGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29u
dGFpbiBub25lLgorUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVy
c2Nyb2xsLWJlaGF2aW9yOiBub25lIG5vbmUuCitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xs
IHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIG5vbmUuCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVt
ZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGI0ZGE1OTczZGJjODFlNzFjMzllYjFkZjFiNmQwODNkZDg3
ODcwYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL292ZXJz
Y3JvbGwtYmVoYXZpb3ItZWxlbWVudC5odG1sCkBAIC0wLDAgKzEsNzggQEAKKzwhZG9jdHlwZSBo
dG1sPgorCis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXN1
cHBvcnQuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL2RyYWZ0
cy5jc3N3Zy5vcmcvY3NzLW92ZXJzY3JvbGwtYmVoYXZpb3IiPgorPHN0eWxlPgorICAgIC5zY3Jv
bGxpbmcgeworICAgICAgICBvdmVyZmxvdzogc2Nyb2xsOworICAgIH0KKyAgICAuc2Nyb2xsQ29u
dGVudCB7CisgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAg
ICB9CisgICAgI3Jvb3QgeworICAgICAgICB3aWR0aDogMjAwcHg7CisgICAgICAgIGhlaWdodDog
MjAwcHg7CisgICAgfQorICAgICNzY3JvbGxlciB7CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAg
ICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICB9Cis8L3N0eWxlPgorPGRpdiBpZD0ncm9vdCcgY2xh
c3M9InNjcm9sbGluZyI+CisgICAgPGRpdiBpZD0nc2Nyb2xsZXInIGNsYXNzPSJzY3JvbGxpbmci
PgorICAgICAgICA8ZGl2IGNsYXNzPSJzY3JvbGxDb250ZW50Ij48L2Rpdj4KKyAgICA8L2Rpdj4K
KyAgICA8ZGl2IGNsYXNzPSJzY3JvbGxDb250ZW50Ij48L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0
PgorY29uc3Qgcm9vdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyb290Jyk7Citjb25zdCBz
Y3JvbGxlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY3JvbGxlcicpOwordmFyIG92ZXJz
Y3JvbGxEYXRhcyA9IFtbImF1dG8iLCAiYXV0byIsIHRydWUsIHRydWVdLAorICAgICAgICAgICAg
ICAgICAgICAgICAgWyJjb250YWluIiwgImF1dG8iLCBmYWxzZSwgdHJ1ZV0sCisgICAgICAgICAg
ICAgICAgICAgICAgICBbIm5vbmUiLCAiYXV0byIsIGZhbHNlLCB0cnVlXSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIFsiYXV0byIsICJjb250YWluIiwgdHJ1ZSwgZmFsc2VdLAorICAgICAgICAg
ICAgICAgICAgICAgICAgWyJjb250YWluIiwgImNvbnRhaW4iLCBmYWxzZSwgZmFsc2VdLAorICAg
ICAgICAgICAgICAgICAgICAgICAgWyJub25lIiwgImNvbnRhaW4iLCBmYWxzZSwgZmFsc2VdLAor
ICAgICAgICAgICAgICAgICAgICAgICAgWyJhdXRvIiwgIm5vbmUiLCB0cnVlLCBmYWxzZV0sCisg
ICAgICAgICAgICAgICAgICAgICAgICBbImNvbnRhaW4iLCAibm9uZSIsIGZhbHNlLCBmYWxzZV0s
CisgICAgICAgICAgICAgICAgICAgICAgICBbIm5vbmUiLCAibm9uZSIsIGZhbHNlLCBmYWxzZV1d
OworCitmdW5jdGlvbiByZXNldFRlc3QoKSB7CisgICAgLy8gVHJ5IHZhcmlvdXMgbWV0aG9kcyB0
byBlbnN1cmUgdGhlIGVsZW1lbnQgcG9zaXRpb24gaXMgcmVzZXQgaW1tZWRpYXRlbHkuCisgICAg
c2Nyb2xsZXIuc2Nyb2xsTGVmdCA9IDMwMDsKKyAgICBzY3JvbGxlci5zY3JvbGxUb3AgPSAzMDA7
CisgICAgc2Nyb2xsZXIuc2Nyb2xsVG8oMzAwLCAzMDApOworCisgICAgcm9vdC5zY3JvbGxMZWZ0
ID0gMDsKKyAgICByb290LnNjcm9sbFRvcCA9IDA7CisgICAgcm9vdC5zY3JvbGxUbygwLCAwKTsK
K30KKworZnVuY3Rpb24gc3RhcnRUZXN0KCkgeworICAgIG92ZXJzY3JvbGxEYXRhcy5mb3JFYWNo
KChbb3ZlcnNjcm9sbFgsIG92ZXJzY3JvbGxZLCBwcm9wYWdhdGVYLCBwcm9wYWdhdGVZXSkgPT4g
eworICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgICAgICAgICAgcmVzZXRUZXN0KCk7
CisgICAgICAgICAgICBzY3JvbGxlci5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JYID0gb3ZlcnNj
cm9sbFg7CisgICAgICAgICAgICBzY3JvbGxlci5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JZID0g
b3ZlcnNjcm9sbFk7CisgICAgICAgICAgICByZXR1cm4gcGVyZm9ybVdoZWVsU2Nyb2xsKHNjcm9s
bGVyLCAicmlnaHQiKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxz
KHJvb3Quc2Nyb2xsTGVmdCA+IDAsIHByb3BhZ2F0ZVgsICdDb250aW51ZSB1cCB0aGUgaG9yaXpv
bnRhbCBzY3JvbGwgY2hhaW5pbmcnKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9LCAnRWxl
bWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogJyAr
IG92ZXJzY3JvbGxYICsgJyAnICsgb3ZlcnNjcm9sbFkgKyAnLicpOworCisgICAgICAgIHByb21p
c2VfdGVzdCgoKSA9PiB7CisgICAgICAgICAgICByZXNldFRlc3QoKTsKKyAgICAgICAgICAgIHNj
cm9sbGVyLnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclggPSBvdmVyc2Nyb2xsWDsKKyAgICAgICAg
ICAgIHNjcm9sbGVyLnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclkgPSBvdmVyc2Nyb2xsWTsKKyAg
ICAgICAgICAgIHJldHVybiBwZXJmb3JtV2hlZWxTY3JvbGwoc2Nyb2xsZXIsICJkb3duIikudGhl
bigoKSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbFRvcCA+
IDAsIHByb3BhZ2F0ZVksICdDb250aW51ZSB1cCB0aGUgdmVydGljYWwgc2Nyb2xsIGNoYWluaW5n
Jyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSwgJ0VsZW1lbnQgdmVydGljYWwgc2Nyb2xs
IHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiAnICsgb3ZlcnNjcm9sbFggKyAnICcgKyBv
dmVyc2Nyb2xsWSArICcuJyk7CisgICAgfSk7Cit9CisKK2FkZEV2ZW50TGlzdGVuZXIoImxvYWQi
LCBzdGFydFRlc3QpOworPC9zY3JpcHQ+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci1p
ZnJhbWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9s
bC1iZWhhdmlvci1pZnJhbWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkwMGEwYjdkOTA1Yjg3
YzFkYjc2MjY5NGZkMDA2MzhmMTk3Njk1MzcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwyMSBAQAorCisKK1BBU1MgSWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qg
d2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIGF1dG8uCitQQVNTIElmcmFtZSB2ZXJ0aWNh
bCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gYXV0by4KK1BBU1Mg
SWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBj
b250YWluIGF1dG8uCitQQVNTIElmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJz
Y3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gYXV0by4KK1BBU1MgSWZyYW1lIGhvcml6b250YWwgc2Ny
b2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIGF1dG8uCitQQVNTIElmcmFt
ZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgYXV0
by4KK1BBU1MgSWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJl
aGF2aW9yOiBhdXRvIGNvbnRhaW4uCitQQVNTIElmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3
aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gY29udGFpbi4KK1BBU1MgSWZyYW1lIGhvcml6
b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGNvbnRh
aW4uCitQQVNTIElmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVo
YXZpb3I6IGNvbnRhaW4gY29udGFpbi4KK1BBU1MgSWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRl
c3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIGNvbnRhaW4uCitQQVNTIElmcmFtZSB2
ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgY29udGFp
bi4KK1BBU1MgSWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJl
aGF2aW9yOiBhdXRvIG5vbmUuCitQQVNTIElmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRo
IG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gbm9uZS4KK1BBU1MgSWZyYW1lIGhvcml6b250YWwg
c2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIG5vbmUuCitQQVNT
IElmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNv
bnRhaW4gbm9uZS4KK1BBU1MgSWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVy
c2Nyb2xsLWJlaGF2aW9yOiBub25lIG5vbmUuCitQQVNTIElmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwg
dGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgbm9uZS4KKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1l
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNWI5MDFkMzcwYTg2ZjFjNjUyMTM5MTI0YzFmOTQ2MjA4NmM0MzA3
YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3Jv
bGwtYmVoYXZpb3ItaWZyYW1lLmh0bWwKQEAgLTAsMCArMSw4MSBAQAorPCFkb2N0eXBlIGh0bWw+
CisKKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL292ZXJzY3JvbGwtYmVoYXZpb3Itc3VwcG9y
dC5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vZHJhZnRzLmNz
c3dnLm9yZy9jc3Mtb3ZlcnNjcm9sbC1iZWhhdmlvciI+Cis8c3R5bGU+CisgICAgLnNjcm9sbGlu
ZyB7CisgICAgICAgIG92ZXJmbG93OiBzY3JvbGw7CisgICAgfQorICAgIC5zY3JvbGxDb250ZW50
IHsKKyAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAg
ICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZWQsIGJsdWUpOworICAgIH0K
KyAgICAjcm9vdCB7CisgICAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgICAgaGVpZ2h0OiAyMDBw
eDsKKyAgICB9CisgICAgI3Njcm9sbGVyIHsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAg
ICBoZWlnaHQ6IDEwMHB4OworICAgICAgICBvdmVyc2Nyb2xsLWJlaGF2aW9yLXk6IGF1dG87Cisg
ICAgfQorPC9zdHlsZT4KKzxkaXYgaWQ9J3Jvb3QnIGNsYXNzPSJzY3JvbGxpbmciPgorICAgIDxp
ZnJhbWUgaWQ9J3Njcm9sbGVyJyBzcmNkb2M9IjxodG1sPjxkaXYgc3R5bGU9J3dpZHRoOiAzMDBw
eDsgaGVpZ2h0OiAzMDBweDsnPjwvZGl2PjwvaHRtbD4KKyAgICAgICAgIj48L2lmcmFtZT4KKyAg
ICA8ZGl2IGNsYXNzPSJzY3JvbGxDb250ZW50Ij48L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0Pgor
ICAgIGNvbnN0IHJvb3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncm9vdCcpOworICAgIGNv
bnN0IHNjcm9sbGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Njcm9sbGVyJyk7CisgICAg
dmFyIG92ZXJzY3JvbGxEYXRhcyA9IFtbImF1dG8iLCAiYXV0byIsIHRydWUsIHRydWVdLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFsiY29udGFpbiIsICJhdXRvIiwgZmFsc2UsIHRydWVd
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsibm9uZSIsICJhdXRvIiwgZmFsc2UsIHRy
dWVdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiYXV0byIsICJjb250YWluIiwgdHJ1
ZSwgZmFsc2VdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiY29udGFpbiIsICJjb250
YWluIiwgZmFsc2UsIGZhbHNlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIm5vbmUi
LCAiY29udGFpbiIsIGZhbHNlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
WyJhdXRvIiwgIm5vbmUiLCB0cnVlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgWyJjb250YWluIiwgIm5vbmUiLCBmYWxzZSwgZmFsc2VdLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFsibm9uZSIsICJub25lIiwgZmFsc2UsIGZhbHNlXV07CisgICAgZnVuY3Rpb24g
cmVzZXRUZXN0KCkgeworICAgICAgICAvLyBUcnkgdmFyaW91cyBtZXRob2RzIHRvIGVuc3VyZSB0
aGUgZWxlbWVudCBwb3NpdGlvbiBpcyByZXNldCBpbW1lZGlhdGVseS4KKyAgICAgICAgc2Nyb2xs
ZXIuY29udGVudFdpbmRvdy5zY3JvbGxYID0gMzAwOworICAgICAgICBzY3JvbGxlci5jb250ZW50
V2luZG93LnNjcm9sbFkgPSAzMDA7CisgICAgICAgIHNjcm9sbGVyLmNvbnRlbnRXaW5kb3cuc2Ny
b2xsVG8oMzAwLCAzMDApOworCisgICAgICAgIHJvb3Quc2Nyb2xsTGVmdCA9IDA7CisgICAgICAg
IHJvb3Quc2Nyb2xsVG9wID0gMDsKKyAgICAgICAgcm9vdC5zY3JvbGxUbygwLCAwKTsKKyAgICB9
CisKKyAgICBmdW5jdGlvbiBvdmVyc2Nyb2xsQmVoYXZpb3JUZXN0KCkgeworICAgICAgICBvdmVy
c2Nyb2xsRGF0YXMuZm9yRWFjaCgoW292ZXJzY3JvbGxYLCBvdmVyc2Nyb2xsWSwgcHJvcGFnYXRl
WCwgcHJvcGFnYXRlWV0pID0+IHsKKyAgICAgICAgICAgIHByb21pc2VfdGVzdCgoKSA9PiB7Cisg
ICAgICAgICAgICAgICAgcmVzZXRUZXN0KCk7CisgICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9
IHNjcm9sbGVyLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImh0
bWwiKVswXTsKKyAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9y
WCA9IG92ZXJzY3JvbGxYOworICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5vdmVyc2Nyb2xs
QmVoYXZpb3JZID0gb3ZlcnNjcm9sbFk7CisKKyAgICAgICAgICAgICAgICByZXR1cm4gcGVyZm9y
bVdoZWVsU2Nyb2xsKHNjcm9sbGVyLCAicmlnaHQiKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAg
ICAgICAgICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbExlZnQgPiAwLCBwcm9wYWdhdGVYLCAn
Q29udGludWUgdXAgdGhlIGhvcml6b250YWwgc2Nyb2xsIGNoYWluaW5nJyk7CisgICAgICAgICAg
ICAgICAgfSk7CisgICAgICAgICAgICB9LCAnSWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qg
d2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiAnICsgb3ZlcnNjcm9sbFggKyAnICcgKyBvdmVyc2Ny
b2xsWSArICcuJyk7CisKKyAgICAgICAgICAgIHByb21pc2VfdGVzdCgoKSA9PiB7CisgICAgICAg
ICAgICAgICAgcmVzZXRUZXN0KCk7CisgICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IHNjcm9s
bGVyLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImh0bWwiKVsw
XTsKKyAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWCA9IG92
ZXJzY3JvbGxYOworICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZp
b3JZID0gb3ZlcnNjcm9sbFk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHBlcmZvcm1XaGVlbFNj
cm9sbChzY3JvbGxlciwgImRvd24iKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICAgICAg
YXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbFRvcCA+IDAsIHByb3BhZ2F0ZVksICdDb250aW51ZSB1
cCB0aGUgdmVydGljYWwgc2Nyb2xsIGNoYWluaW5nJyk7CisgICAgICAgICAgICAgICAgfSk7Cisg
ICAgICAgICAgICB9LCAnSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9s
bC1iZWhhdmlvcjogJyArIG92ZXJzY3JvbGxYICsgJyAnICsgb3ZlcnNjcm9sbFkgKyAnLicpOwor
ICAgICAgICB9KTsKKyAgICB9CisKKyAgICBzY3JvbGxlci5hZGRFdmVudExpc3RlbmVyKCJsb2Fk
Iiwgb3ZlcnNjcm9sbEJlaGF2aW9yVGVzdCk7Cis8L3NjcmlwdD4KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9vdmVyc2Ny
b2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1l
bnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYzOTViNjQ4OGQwODcwYjk1NjFjMDI4Njc5ZDdl
MTVhNDdmY2U2ZTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGlu
Zy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50LWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDQgQEAKKworUEFTUyBVbnNjcm9sbGFibGUgZWxlbWVudCBob3Jpem9udGFsIHNj
cm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4KK1BBU1MgVW5zY3JvbGxh
YmxlIGVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9y
OiBub25lLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9vdmVyc2Ny
b2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMzQ1MWI0M2NkMTAwYjVlMGU4ZGY4M2M2OTc5ZGE0NmE4ZDZjZjMwMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVo
YXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRtbApAQCAtMCwwICsxLDYxIEBACis8IWRvY3R5
cGUgaHRtbD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb3ZlcnNjcm9sbC1iZWhhdmlv
ci1zdXBwb3J0LmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9k
cmFmdHMuY3Nzd2cub3JnL2Nzcy1vdmVyc2Nyb2xsLWJlaGF2aW9yIj4KKzxzdHlsZT4KKyAgICAu
c2Nyb2xsaW5nIHsKKyAgICAgICAgb3ZlcmZsb3c6IHNjcm9sbDsKKyAgICB9CisgICAgLnNjcm9s
bENvbnRlbnQgeworICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgIGhlaWdodDogMzAwcHg7
CisgICAgfQorICAgICNyb290IHsKKyAgICAgICAgd2lkdGg6IDIwMHB4OworICAgICAgICBoZWln
aHQ6IDIwMHB4OworICAgIH0KKyAgICAjc2Nyb2xsZXIgeworICAgICAgICB3aWR0aDogMTAwcHg7
CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICAgIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5v
bmU7CisgICAgICAgIG92ZXJmbG93OiB2aXNpYmxlOworICAgICAgICBiYWNrZ3JvdW5kOiBsaW5l
YXItZ3JhZGllbnQoMTM1ZGVnLCByZWQsIGJsdWUpOworICAgIH0KKzwvc3R5bGU+Cis8ZGl2IGlk
PSJyb290IiBjbGFzcz0ic2Nyb2xsaW5nIj4KKyAgICA8ZGl2IGlkPSJzY3JvbGxlciI+CisgICAg
ICAgIDxkaXYgY2xhc3M9InNjcm9sbENvbnRlbnQiPjwvZGl2PgorICAgIDwvZGl2PgorICAgIDxk
aXYgY2xhc3M9InNjcm9sbENvbnRlbnQiPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+Citjb25z
dCByb290ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jvb3QnKTsKK2NvbnN0IHNjcm9sbGVy
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Njcm9sbGVyJyk7CitmdW5jdGlvbiByZXNldFRl
c3QoKSB7CisgICAgcm9vdC5zY3JvbGxMZWZ0ID0gMDsKKyAgICByb290LnNjcm9sbFRvcCA9IDA7
CisgICAgcm9vdC5zY3JvbGxUbygwLCAwKTsKK30KKworZnVuY3Rpb24gc3RhcnRUZXN0KCkgewor
ICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgICAgICAgICAgcmVzZXRUZXN0KCk7Cisg
ICAgICAgICAgICByZXR1cm4gcGVyZm9ybVdoZWVsU2Nyb2xsKHNjcm9sbGVyLCAicmlnaHQiKS50
aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsTGVm
dCA+IDAsIHRydWUsICdDb250aW51ZSB1cCB0aGUgaG9yaXpvbnRhbCBzY3JvbGwgY2hhaW5pbmcn
KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9LCAnVW5zY3JvbGxhYmxlIGVsZW1lbnQgaG9y
aXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuJyk7CisK
KyAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAgIHJlc2V0VGVzdCgpOwor
CisgICAgICAgICAgICByZXR1cm4gcGVyZm9ybVdoZWVsU2Nyb2xsKHNjcm9sbGVyLCAiZG93biIp
LnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxU
b3AgPiAwLCB0cnVlLCAnQ29udGludWUgdXAgdGhlIHZlcnRpY2FsIHNjcm9sbCBjaGFpbmluZycp
OworICAgICAgICAgICAgfSk7CisgICAgICAgIH0sICdVbnNjcm9sbGFibGUgZWxlbWVudCB2ZXJ0
aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuJyk7Cit9CisK
K2FkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBzdGFydFRlc3QpOworPC9zY3JpcHQ+ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxp
bmcvb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxh
YmxlLWlmcmFtZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2ZhNTljY2JhNzlhZWZmMzNkYTcw
ZTkzZDQ4OGEwN2VlYzljNTY5MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
c2Nyb2xsaW5nL292ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSw1IEBACisKKworUEFTUyBVbnNjcm9sbGFibGUgaWZyYW1lIGhvcml6
b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLgorUEFTUyBV
bnNjcm9sbGFibGUgaWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1i
ZWhhdmlvcjogbm9uZS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcv
b3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lNmM2M2Y4Y2IzZDE0YmVmOGVkYmFhMTFkNWVhZjI2ZWRkM2EwYmUx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9s
bC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLmh0bWwKQEAgLTAsMCArMSw2MSBAQAorPCFk
b2N0eXBlIGh0bWw+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3Mu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3Jl
cG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL292ZXJzY3JvbGwtYmVo
YXZpb3Itc3VwcG9ydC5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBz
Oi8vZHJhZnRzLmNzc3dnLm9yZy9jc3Mtb3ZlcnNjcm9sbC1iZWhhdmlvciI+Cis8c3R5bGU+Cisg
ICAgLnNjcm9sbGluZyB7CisgICAgICAgIG92ZXJmbG93OiBzY3JvbGw7CisgICAgfQorICAgIC5z
Y3JvbGxDb250ZW50IHsKKyAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICBoZWlnaHQ6IDMw
MHB4OworICAgIH0KKyAgICAjcm9vdCB7CisgICAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgICAg
aGVpZ2h0OiAyMDBweDsKKyAgICB9CisgICAgI3Njcm9sbGVyIHsKKyAgICAgICAgd2lkdGg6IDIw
MHB4OworICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAgICAgICBvdmVyc2Nyb2xsLWJlaGF2aW9y
OiBub25lOworICAgICAgICBvdmVyZmxvdzogdmlzaWJsZTsKKyAgICAgICAgYmFja2dyb3VuZDog
bGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmVkLCBibHVlKTsKKyAgICB9Cis8L3N0eWxlPgorPGRp
diBpZD0ncm9vdCcgY2xhc3M9InNjcm9sbGluZyI+CisgICAgPGlmcmFtZSBpZD0nc2Nyb2xsZXIn
IHNyY2RvYz0iPGh0bWwgc3R5bGU9J292ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmU7Jz48ZGl2IHN0
eWxlPSd3aWR0aDogMTAwcHg7IGhlaWdodDogMTAwcHg7Jz48L2Rpdj48L2h0bWw+CisgICAgICAg
ICI+PC9pZnJhbWU+CisgICAgPGRpdiBjbGFzcz0ic2Nyb2xsQ29udGVudCI+PC9kaXY+Cis8L2Rp
dj4KKworPHNjcmlwdD4KK2NvbnN0IHJvb3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncm9v
dCcpOworY29uc3Qgc2Nyb2xsZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2Nyb2xsZXIn
KTsKKworZnVuY3Rpb24gcmVzZXRUZXN0KCkgeworICAgIHJvb3Quc2Nyb2xsTGVmdCA9IDA7Cisg
ICAgcm9vdC5zY3JvbGxUb3AgPSAwOworICAgIHJvb3Quc2Nyb2xsVG8oMCwgMCk7Cit9CisKK2Z1
bmN0aW9uIHN0YXJ0VGVzdCgpIHsKKyAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAg
ICAgICAgIHJlc2V0VGVzdCgpOworICAgICAgICAgICAgcmV0dXJuIHBlcmZvcm1XaGVlbFNjcm9s
bChzY3JvbGxlciwgInJpZ2h0IikudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0
X2VxdWFscyhyb290LnNjcm9sbExlZnQgPiAwLCB0cnVlLCAnQ29udGludWUgdXAgdGhlIGhvcml6
b250YWwgc2Nyb2xsIGNoYWluaW5nJyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSwgJ1Vu
c2Nyb2xsYWJsZSBpZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwt
YmVoYXZpb3I6IG5vbmUuJyk7CisKKyAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAg
ICAgICAgIHJlc2V0VGVzdCgpOworCisgICAgICAgICAgICByZXR1cm4gcGVyZm9ybVdoZWVsU2Ny
b2xsKHNjcm9sbGVyLCAiZG93biIpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGFzc2Vy
dF9lcXVhbHMocm9vdC5zY3JvbGxUb3AgPiAwLCB0cnVlLCAnQ29udGludWUgdXAgdGhlIHZlcnRp
Y2FsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0sICdVbnNj
cm9sbGFibGUgaWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhh
dmlvcjogbm9uZS4nKTsKK30KKworYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIHN0YXJ0VGVzdCk7
Cis8L3NjcmlwdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L3Njcm9sbGluZy9yZXNvdXJjZXMvb3ZlcnNjcm9sbC1iZWhhdmlvci1zdXBw
b3J0LmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvcmVzb3VyY2VzL292ZXJzY3JvbGwt
YmVoYXZpb3Itc3VwcG9ydC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZTdlMzIzMjIxNGU4OGVmN2M2N2UwOTk3
MjBiMmIyMzdjYWE3MGUzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3Jv
bGxpbmcvcmVzb3VyY2VzL292ZXJzY3JvbGwtYmVoYXZpb3Itc3VwcG9ydC5qcwpAQCAtMCwwICsx
LDMxIEBACithc3luYyBmdW5jdGlvbiBwZXJmb3JtV2hlZWxTY3JvbGwoc2Nyb2xsZXIsIGRpcmVj
dGlvbikgeworICAgIHZhciBkZWx0YVggPSAwOworICAgIHZhciBkZWx0YVkgPSAwOworICAgIGlm
IChkaXJlY3Rpb24gPT0gImRvd24iKQorICAgICAgICBkZWx0YVkgPSAtNTsKKyAgICBlbHNlIGlm
IChkaXJlY3Rpb24gPT0gInVwIikKKyAgICAgICAgZGVsdGFZID0gNTsKKyAgICBlbHNlIGlmIChk
aXJlY3Rpb24gPT0gInJpZ2h0IikKKyAgICAgICAgZGVsdGFYID0gLTU7CisgICAgZWxzZSBpZiAo
ZGlyZWN0aW9uID09ICJsZWZ0IikKKyAgICAgICAgZGVsdGFYID0gNTsKKworICAgIHZhciB4ID0g
c2Nyb2xsZXIuY2xpZW50V2lkdGggLyAyOworICAgIHZhciB5ID0gc2Nyb2xsZXIuY2xpZW50SGVp
Z2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5kcmFnTW9kZSA9IGZhbHNlOworICAgIGV2ZW50U2Vu
ZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgs
IHkpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkZWx0YVgsIGRlbHRhWSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZGVsdGFYICogMiwgZGVsdGFZ
ICogMiwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkZWx0YVggKiAzLCBkZWx0YVkgKiAzLCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGRlbHRhWCwgZGVsdGFZLCAnbm9u
ZScsICdiZWdpbicpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkZWx0YVggKiAyLCBkZWx0YVkgKiAyLCAnbm9uZScsICdjb250aW51ZScp
OworICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkZWx0YVggKiAzLCBkZWx0YVkgKiAzLCAnbm9uZScsICdjb250aW51ZScpOworICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9u
ZScsICdlbmQnKTsKKyAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgICAg
IGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcygoKSA9PiB7CisgICAgICAg
ICAgICByZXNvbHZlKCk7CisgICAgICAgIH0pOworICAgIH0pOworfQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGIyNTI0ZGQ3NDRkYTU1OTQ5
NDRhNDZjZDEyM2NlZGNiNDMxNGExMTcuLjg2NzA3MTE2ZTMwZDRmNjEwYzQ3ZjM2MzkwZDZjYjFj
MDg2YjQ4NGUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4
cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3Rh
dGlvbnMKQEAgLTMzLDYgKzMzLDExIEBAIGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzLURFTklFRC14
c2wtZXh0ZXJuYWwtZW50aXR5LW5vLWxvZ2dpbmcueG1sIFsgUGFzcyBdCiAjIHJkYXI6Ly9wcm9i
bGVtLzYxNzkzODg0IDogRW5hYmxpbmcgdGhpcyB0ZXN0IGZvciBXSzEgb25seS4KIGZhc3Qvc2hh
cGVzL3NoYXBlLW91dHNpZGUtZmxvYXRzL3NoYXBlLW91dHNpZGUtaW1hZ2VkYXRhLW92ZXJmbG93
Lmh0bWwgWyBQYXNzIF0KIAorIyBPdmVyc2Nyb2xsLWJlaGF2aW9yIGlzIHN1cHBvcnRlZCBvbiBN
YWMuCisjIEZJWE1FOiBOZWVkIHRvIGZpbmQgYSB3YXkgdG8gYmxvY2sgdGhlIGNyb3NzLWZyYW1l
IHNjcm9sbCBjaGFpbmluZyBpbiBXSzEuCitmYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2
aW9yLWVsZW1lbnQuaHRtbCBbIFBhc3MgXQorZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhh
dmlvci11bnNjcm9sbGFibGUtZWxlbWVudC5odG1sIFsgUGFzcyBdCisKICMvLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8KICMgRW5kIHBsYXRmb3JtLXNwZWNpZmljIGRpcmVjdG9yaWVz
LgogIy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGU4NTk4ZDdjYTlkNTU0MGJkYTYx
ZTYxMTM2M2Y0ZWUxMWM4YjBkYjkuLjI0ODlhMDAxZjk5ZGNhNWJiMTU2MzI3NmI0Mjg5ZTM2OGQ0
YTNkNzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVj
dGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlv
bnMKQEAgLTEwNCw2ICsxMDQsMTIgQEAgZmFzdC9hbmltYXRpb24vcmVxdWVzdC1hbmltYXRpb24t
ZnJhbWUtaW4tdHdvLXBhZ2VzLmh0bWwgWyBQYXNzIF0KIGZhc3QvZm9ybXMvZmlsZS9lbnRyaWVz
LWFwaS9pbWFnZS10cmFuc2NvZGUtb3Blbi1wYW5lbC5odG1sIFsgUGFzcyBdCiBmYXN0L2Zvcm1z
L2ZpbGUvZW50cmllcy1hcGkvaW1hZ2Utbm8tdHJhbnNjb2RlLW9wZW4tcGFuZWwuaHRtbCBbIFBh
c3MgXQogCisjIE92ZXJzY3JvbGwtYmVoYXZpb3IgaXMgb25seSBzdXBwb3J0ZWQgb24gTWFjCitm
YXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQuaHRtbCBbIFBhc3MgXQor
ZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUuaHRtbCBbIFBhc3MgXQor
ZmFzdC9zY3JvbGxpbmcvb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC5o
dG1sIFsgUGFzcyBdCitmYXN0L3Njcm9sbGluZy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xs
YWJsZS1pZnJhbWUuaHRtbCBbIFBhc3MgXQorCiAjLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vCiAjIEVuZCBwbGF0Zm9ybS1zcGVjaWZpYyBkaXJlY3Rvcmllcy4KICMvLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423169</attachid>
            <date>2021-03-15 06:22:51 -0700</date>
            <delta_ts>2021-03-15 22:48:29 -0700</delta_ts>
            <desc>async-overscroll-behavior-for-ews</desc>
            <filename>overscroll-behavior-async-for-ews.diff</filename>
            <type>text/plain</type>
            <size>98074</size>
            <attacher name="cathiechen">cathiechen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzZTAzYmIxMDI3Li43NWJiMjIxODFkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjAgQEAKKzIw
MjEtMDMtMTUgIENhdGhpZSBDaGVuICA8Y2F0aGllY2hlbkBpZ2FsaWEuY29tPgorCisgICAgICAg
IEltcGxlbWVudCBDU1Mgb3ZlcnNjcm9sbC1iZWhhdmlvciBmb3IgYXN5bmNocm9ub3VzIHNjcm9s
bCBvbiBNYWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyMDEzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWVs
ZW1lbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9tYWMv
YXN5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZp
b3ItaWZyYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcv
bWFjL2FzeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVo
YXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5z
Y3JvbGxhYmxlLWVsZW1lbnQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcv
bWFjL2FzeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMt
c2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnM6CisKKzIwMjEt
MDMtMTUgIENhdGhpZSBDaGVuICA8Y2F0aGllY2hlbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFN1
cHBvcnQgQ1NTIG92ZXJzY3JvbGwtYmVoYXZpb3IgZm9yIHN5bmNocm9ub3VzIHNjcm9sbAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyOTY4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmFzZWQgb24gRnLD
qWTDqXJpYyBXYW5nJ3MgcGF0Y2guCisKKyAgICAgICAgVGVzdCBvdmVyc2Nyb2xsLWJlaGF2aW9y
IGZvciBvdmVyZmxvdyBlbGVtZW50cyBhbmQgaWZyYW1lcy4gVGhlIHRlc3RzIHRyaWdnZXIgd2hl
ZWwgc2Nyb2xsIGV2ZW50cworICAgICAgICBhbmQgd2FpdCAuNXMsIHRoZW4gY2hlY2sgd2hldGhl
ciBzY3JvbGwgb2NjdXJzIG9yIG5vdC4KKyAgICAgICAgVGhlIHRlc3RzIGFyZSBza2lwcGVkIG9u
IGlPUyBmb3Igb25seSBzeW5jaHJvbm91cyBzY3JvbGwgYXJlIHRlc3RlZC4KKyAgICAgICAgRm9y
IFdLMSwgdGhlIGlmcmFtZSB0ZXN0cyBmYWlsIGJlY2F1c2UgbGFjayBvZiBpbnRlcmZhY2VzIHRv
IGNvbnRyb2wgc2Nyb2xsIGNoYWluaW5nIGluIFdlYkhUTUxWaWV3LgorCisgICAgICAgICogVGVz
dEV4cGVjdGF0aW9uczogV2FpdGluZyAuNXMgZm9yIGVhY2ggY2FzZSBtYWtlcyB0aGUgdGVzdCBz
bG93LgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL3Jlc291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2
aW9yLXN1cHBvcnQuanM6IEFkZGVkLgorICAgICAgICAoZ2V0RGVsdGFzKToKKyAgICAgICAgKGFz
eW5jIG1vdXNlV2hlZWxTY3JvbGxBbmRXYWl0KToKKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9z
eW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2
aW9yLWVsZW1lbnQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvc3luYy1z
Y3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWlm
cmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1v
dmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50LWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhh
dmlvci11bnNjcm9sbGFibGUtZWxlbWVudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Nj
cm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJh
bWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9zeW5jLXNj
cm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUuaHRtbDogQWRkZWQu
CisgICAgICAgICogcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxh
dGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zOgorCisyMDIxLTAyLTA0ICBSb2IgQnVpcyAg
PHJidWlzQGlnYWxpYS5jb20+CisKKyAgICAgICAgTWFrZSBzaG91bGRDb21wdXRlTG9naWNhbFdp
ZHRoRnJvbUFzcGVjdFJhdGlvQW5kSW5zZXRzIHdyaXRpbmcgbW9kZSBhd2FyZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMzI4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTWFudWVsIFJlZ28gQ2FzYXNub3Zhcy4KKworICAgICAgICBFbmFibGUgc29t
ZSB0ZXN0cyB0aGF0IHBhc3Mgbm93LgorCisgICAgICAgICogVGVzdEV4cGVjdGF0aW9uczoKKwog
MjAyMS0wMy0xNSAgSW1hbm9sIEZlcm5hbmRleiAgPGlmZXJuYW5kZXpAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBTcGxpdCBXZWJYUiBmZWF0dXJlcyBpbnRvIGVuYWJsZWRGZWF0dXJlcywgc3VwcG9y
dGVkRmVhdHVyZXMgYW5kIHJlcXVlc3RlZEZlYXR1cmVzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAx
NDg1MTFkNWM1Li41NDAxNTAyMmUzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0
YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTQ2NDUsNiArNDY0
NSwxMiBAQCBmYXN0L3NoYWRvdy1kb20vaW9zLyBbIFNraXAgXQogIyBSZXF1aXJlcyBXSzIgVGVz
dFJ1bm5lcgogZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1lbnRlci13aGlsZS1leGl0aW5nLmh0bWwg
WyBTa2lwIF0KIAorIyBOZWVkIHRvIHdhaXQgYW5kIGNoZWNrIHdoZXRoZXIgc2Nyb2xsIG9jY3Vy
cworZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50
Lmh0bWwgWyBTbG93IF0KK2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVo
YXZpb3ItaWZyYW1lLmh0bWwgWyBTbG93IF0KK2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92
ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRtbCBbIFNsb3cgXQorZmFz
dC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUt
aWZyYW1lLmh0bWwgWyBTbG93IF0KKwogIyBBbmltYXRpb24gLyBMYXlvdXQgd29ya2V0cyBhcmUg
bm90IHN1cHBvcnRlZAogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrbGV0cy9h
bmltYXRpb24td29ya2xldC1zZXJ2aWNlLXdvcmtlci1pbnRlcmNlcHRpb24uaHR0cHMuaHRtbCBb
IFNraXAgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrbGV0cy9hbmltYXRp
b24td29ya2xldC1jc3AuaHR0cHMuaHRtbCBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWVs
ZW1lbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5j
LXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjI3MTUwZmY2MGIKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtc2Nyb2xsLW92ZXJzY3Jv
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
c3RzL2Zhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1l
bGVtZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtc2Nyb2xs
LW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAuLmRiNDJjMmVkNzkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxl
bWVudC5odG1sCkBAIC0wLDAgKzEsODcgQEAKKzwhZG9jdHlwZSBodG1sPiA8IS0tIHdlYmtpdC10
ZXN0LXJ1bm5lciBbIEFzeW5jT3ZlcmZsb3dTY3JvbGxpbmdFbmFibGVkPXRydWUgQXN5bmNGcmFt
ZVNjcm9sbGluZ0VuYWJsZWQ9dHJ1ZSBdIC0tPgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
L3Jlc291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXN1cHBvcnQuanMiPjwvc2NyaXB0PgorPGxp
bmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLW92ZXJzY3Jv
bGwtYmVoYXZpb3IiPgorPHN0eWxlPgorICAgIC5zY3JvbGxpbmcgeworICAgICAgICBvdmVyZmxv
dzogc2Nyb2xsOworICAgIH0KKyAgICAuc2Nyb2xsQ29udGVudCB7CisgICAgICAgIHdpZHRoOiAz
MDBweDsKKyAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICB9CisgICAgI3Jvb3QgeworICAgICAg
ICB3aWR0aDogMjAwcHg7CisgICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgfQorICAgICNzY3Jv
bGxlciB7CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAg
ICB9Cis8L3N0eWxlPgorPGRpdiBpZD0ncm9vdCcgY2xhc3M9InNjcm9sbGluZyI+CisgICAgPGRp
diBpZD0nc2Nyb2xsZXInIGNsYXNzPSJzY3JvbGxpbmciPgorICAgICAgICA8ZGl2IGNsYXNzPSJz
Y3JvbGxDb250ZW50Ij48L2Rpdj4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJzY3JvbGxD
b250ZW50Ij48L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0PgorY29uc3Qgcm9vdCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdyb290Jyk7Citjb25zdCBzY3JvbGxlciA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdzY3JvbGxlcicpOwordmFyIG92ZXJzY3JvbGxEYXRhcyA9IFtbImF1dG8iLCAi
YXV0byIsIHRydWUsIHRydWVdLAorICAgICAgICAgICAgICAgICAgICAgICAgWyJjb250YWluIiwg
ImF1dG8iLCBmYWxzZSwgdHJ1ZV0sCisgICAgICAgICAgICAgICAgICAgICAgICBbIm5vbmUiLCAi
YXV0byIsIGZhbHNlLCB0cnVlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFsiYXV0byIsICJj
b250YWluIiwgdHJ1ZSwgZmFsc2VdLAorICAgICAgICAgICAgICAgICAgICAgICAgWyJjb250YWlu
IiwgImNvbnRhaW4iLCBmYWxzZSwgZmFsc2VdLAorICAgICAgICAgICAgICAgICAgICAgICAgWyJu
b25lIiwgImNvbnRhaW4iLCBmYWxzZSwgZmFsc2VdLAorICAgICAgICAgICAgICAgICAgICAgICAg
WyJhdXRvIiwgIm5vbmUiLCB0cnVlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAgICBb
ImNvbnRhaW4iLCAibm9uZSIsIGZhbHNlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAg
ICBbIm5vbmUiLCAibm9uZSIsIGZhbHNlLCBmYWxzZV1dOworCitmdW5jdGlvbiByZXNldFRlc3Qo
KSB7CisgICAgLy8gVHJ5IHZhcmlvdXMgbWV0aG9kcyB0byBlbnN1cmUgdGhlIGVsZW1lbnQgcG9z
aXRpb24gaXMgcmVzZXQgaW1tZWRpYXRlbHkuCisgICAgc2Nyb2xsZXIuc2Nyb2xsTGVmdCA9IDMw
MDsKKyAgICBzY3JvbGxlci5zY3JvbGxUb3AgPSAzMDA7CisgICAgc2Nyb2xsZXIuc2Nyb2xsVG8o
MzAwLCAzMDApOworCisgICAgcm9vdC5zY3JvbGxMZWZ0ID0gMDsKKyAgICByb290LnNjcm9sbFRv
cCA9IDA7CisgICAgcm9vdC5zY3JvbGxUbygwLCAwKTsKK30KKworZnVuY3Rpb24gc3RhcnRUZXN0
KCkgeworICAgIG92ZXJzY3JvbGxEYXRhcy5mb3JFYWNoKChbb3ZlcnNjcm9sbFgsIG92ZXJzY3Jv
bGxZLCBwcm9wYWdhdGVYLCBwcm9wYWdhdGVZXSkgPT4geworICAgICAgICBwcm9taXNlX3Rlc3Qo
KCkgPT4geworICAgICAgICAgICAgcmVzZXRUZXN0KCk7CisgICAgICAgICAgICBzY3JvbGxlci5z
dHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JYID0gb3ZlcnNjcm9sbFg7CisgICAgICAgICAgICBzY3Jv
bGxlci5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JZID0gb3ZlcnNjcm9sbFk7CisgICAgICAgICAg
ICBkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoOworCisgICAgICAgICAgICB2YXIgeCA9IHNjcm9s
bGVyLmNsaWVudFdpZHRoIC8gMjsKKyAgICAgICAgICAgIHZhciB5ID0gc2Nyb2xsZXIuY2xpZW50
SGVpZ2h0IC8gMjsKKyAgICAgICAgICAgIHZhciBkZWx0YSA9IGdldERlbHRhcygicmlnaHQiKTsK
KyAgICAgICAgICAgIHJldHVybiBtb3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCh4LCB5LCBkZWx0YS5Y
LCBkZWx0YS5ZLCBkZWx0YS5YLCBkZWx0YS5ZKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAg
ICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsTGVmdCA+IDAsIHByb3BhZ2F0ZVgsICdDb250aW51
ZSB1cCB0aGUgaG9yaXpvbnRhbCBzY3JvbGwgY2hhaW5pbmcnKTsKKyAgICAgICAgICAgIH0pOwor
ICAgICAgICB9LCAnRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9s
bC1iZWhhdmlvcjogJyArIG92ZXJzY3JvbGxYICsgJyAnICsgb3ZlcnNjcm9sbFkgKyAnLicpOwor
CisgICAgICAgIHByb21pc2VfdGVzdCgoKSA9PiB7CisgICAgICAgICAgICByZXNldFRlc3QoKTsK
KyAgICAgICAgICAgIHNjcm9sbGVyLnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclggPSBvdmVyc2Ny
b2xsWDsKKyAgICAgICAgICAgIHNjcm9sbGVyLnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclkgPSBv
dmVyc2Nyb2xsWTsKKworICAgICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAv
IDI7CisgICAgICAgICAgICB2YXIgeSA9IHNjcm9sbGVyLmNsaWVudEhlaWdodCAvIDI7CisgICAg
ICAgICAgICB2YXIgZGVsdGEgPSBnZXREZWx0YXMoImRvd24iKTsKKyAgICAgICAgICAgIHJldHVy
biBtb3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCh4LCB5LCBkZWx0YS5YLCBkZWx0YS5ZLCBkZWx0YS5Y
LCBkZWx0YS5ZKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJv
b3Quc2Nyb2xsVG9wID4gMCwgcHJvcGFnYXRlWSwgJ0NvbnRpbnVlIHVwIHRoZSB2ZXJ0aWNhbCBz
Y3JvbGwgY2hhaW5pbmcnKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9LCAnRWxlbWVudCB2
ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6ICcgKyBvdmVyc2Ny
b2xsWCArICcgJyArIG92ZXJzY3JvbGxZICsgJy4nKTsKKyAgICB9KTsKK30KKworYWRkRXZlbnRM
aXN0ZW5lcigibG9hZCIsIHN0YXJ0VGVzdCk7Cis8L3NjcmlwdD4KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5
bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlv
ci1pZnJhbWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAuLjkwMGEwYjdkOTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9s
bGluZy9tYWMvYXN5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDIxIEBACisKKworUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwg
dGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gYXV0by4KK1BBU1MgSWZyYW1lIHZl
cnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBhdXRvLgor
UEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZp
b3I6IGNvbnRhaW4gYXV0by4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGgg
b3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBhdXRvLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRh
bCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgYXV0by4KK1BBU1Mg
SWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9u
ZSBhdXRvLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3Jv
bGwtYmVoYXZpb3I6IGF1dG8gY29udGFpbi4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0
ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBjb250YWluLgorUEFTUyBJZnJhbWUg
aG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4g
Y29udGFpbi4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9s
bC1iZWhhdmlvcjogY29udGFpbiBjb250YWluLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3Jv
bGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgY29udGFpbi4KK1BBU1MgSWZy
YW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBj
b250YWluLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3Jv
bGwtYmVoYXZpb3I6IGF1dG8gbm9uZS4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0
IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBub25lLgorUEFTUyBJZnJhbWUgaG9yaXpv
bnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gbm9uZS4K
K1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlv
cjogY29udGFpbiBub25lLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRo
IG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgbm9uZS4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNj
cm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBub25lLgorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtc2Nyb2xsLW92ZXJzY3Jv
bGwtYmVoYXZpb3ItaWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMv
YXN5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uYjM1ZjViNzEwNwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1i
ZWhhdmlvci1pZnJhbWUuaHRtbApAQCAtMCwwICsxLDg4IEBACis8IWRvY3R5cGUgaHRtbD4gPCEt
LSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBBc3luY092ZXJmbG93U2Nyb2xsaW5nRW5hYmxlZD10cnVl
IEFzeW5jRnJhbWVTY3JvbGxpbmdFbmFibGVkPXRydWUgXSAtLT4KKworPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi9yZXNvdXJjZXMvb3ZlcnNjcm9sbC1iZWhhdmlvci1zdXBwb3J0LmpzIj48L3Nj
cmlwdD4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nz
cy1vdmVyc2Nyb2xsLWJlaGF2aW9yIj4KKzxzdHlsZT4KKyAgICAuc2Nyb2xsaW5nIHsKKyAgICAg
ICAgb3ZlcmZsb3c6IHNjcm9sbDsKKyAgICB9CisgICAgLnNjcm9sbENvbnRlbnQgeworICAgICAg
ICB3aWR0aDogMzAwcHg7CisgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgIGJhY2tncm91
bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJlZCwgYmx1ZSk7CisgICAgfQorICAgICNyb290
IHsKKyAgICAgICAgd2lkdGg6IDIwMHB4OworICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAgIH0K
KyAgICAjc2Nyb2xsZXIgeworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDog
MTAwcHg7CisgICAgICAgIG92ZXJzY3JvbGwtYmVoYXZpb3IteTogYXV0bzsKKyAgICB9Cis8L3N0
eWxlPgorPGRpdiBpZD0ncm9vdCcgY2xhc3M9InNjcm9sbGluZyI+CisgICAgPGlmcmFtZSBpZD0n
c2Nyb2xsZXInIHNyY2RvYz0iPGh0bWw+PGRpdiBzdHlsZT0nd2lkdGg6IDMwMHB4OyBoZWlnaHQ6
IDMwMHB4Oyc+PC9kaXY+PC9odG1sPgorICAgICAgICAiPjwvaWZyYW1lPgorICAgIDxkaXYgY2xh
c3M9InNjcm9sbENvbnRlbnQiPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+CisgICAgY29uc3Qg
cm9vdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyb290Jyk7CisgICAgY29uc3Qgc2Nyb2xs
ZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2Nyb2xsZXInKTsKKyAgICB2YXIgb3ZlcnNj
cm9sbERhdGFzID0gW1siYXV0byIsICJhdXRvIiwgdHJ1ZSwgdHJ1ZV0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgWyJjb250YWluIiwgImF1dG8iLCBmYWxzZSwgdHJ1ZV0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgWyJub25lIiwgImF1dG8iLCBmYWxzZSwgdHJ1ZV0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgWyJhdXRvIiwgImNvbnRhaW4iLCB0cnVlLCBmYWxzZV0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJjb250YWluIiwgImNvbnRhaW4iLCBmYWxz
ZSwgZmFsc2VdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsibm9uZSIsICJjb250YWlu
IiwgZmFsc2UsIGZhbHNlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImF1dG8iLCAi
bm9uZSIsIHRydWUsIGZhbHNlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImNvbnRh
aW4iLCAibm9uZSIsIGZhbHNlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
WyJub25lIiwgIm5vbmUiLCBmYWxzZSwgZmFsc2VdXTsKKyAgICBmdW5jdGlvbiByZXNldFRlc3Qo
KSB7CisgICAgICAgIC8vIFRyeSB2YXJpb3VzIG1ldGhvZHMgdG8gZW5zdXJlIHRoZSBlbGVtZW50
IHBvc2l0aW9uIGlzIHJlc2V0IGltbWVkaWF0ZWx5LgorICAgICAgICBzY3JvbGxlci5jb250ZW50
V2luZG93LnNjcm9sbFggPSAzMDA7CisgICAgICAgIHNjcm9sbGVyLmNvbnRlbnRXaW5kb3cuc2Ny
b2xsWSA9IDMwMDsKKyAgICAgICAgc2Nyb2xsZXIuY29udGVudFdpbmRvdy5zY3JvbGxUbygzMDAs
IDMwMCk7CisKKyAgICAgICAgcm9vdC5zY3JvbGxMZWZ0ID0gMDsKKyAgICAgICAgcm9vdC5zY3Jv
bGxUb3AgPSAwOworICAgICAgICByb290LnNjcm9sbFRvKDAsIDApOworICAgIH0KKworICAgIGZ1
bmN0aW9uIG92ZXJzY3JvbGxCZWhhdmlvclRlc3QoKSB7CisgICAgICAgIG92ZXJzY3JvbGxEYXRh
cy5mb3JFYWNoKChbb3ZlcnNjcm9sbFgsIG92ZXJzY3JvbGxZLCBwcm9wYWdhdGVYLCBwcm9wYWdh
dGVZXSkgPT4geworICAgICAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAg
ICAgICByZXNldFRlc3QoKTsKKyAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gc2Nyb2xsZXIu
Y29udGVudFdpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaHRtbCIpWzBdOwor
ICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JYID0gb3ZlcnNj
cm9sbFg7CisgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclkg
PSBvdmVyc2Nyb2xsWTsKKworICAgICAgICAgICAgICAgIHZhciB4ID0gc2Nyb2xsZXIuY2xpZW50
V2lkdGggLyAyOworICAgICAgICAgICAgICAgIHZhciB5ID0gc2Nyb2xsZXIuY2xpZW50SGVpZ2h0
IC8gMjsKKyAgICAgICAgICAgICAgICB2YXIgZGVsdGEgPSBnZXREZWx0YXMoInJpZ2h0Iik7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIG1vdXNlV2hlZWxTY3JvbGxBbmRXYWl0KHgsIHksIGRlbHRh
LlgsIGRlbHRhLlksIGRlbHRhLlgsIGRlbHRhLlkpLnRoZW4oKCkgPT4geworICAgICAgICAgICAg
ICAgICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsTGVmdCA+IDAsIHByb3BhZ2F0ZVgsICdD
b250aW51ZSB1cCB0aGUgaG9yaXpvbnRhbCBzY3JvbGwgY2hhaW5pbmcnKTsKKyAgICAgICAgICAg
ICAgICB9KTsKKyAgICAgICAgICAgIH0sICdJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3
aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6ICcgKyBvdmVyc2Nyb2xsWCArICcgJyArIG92ZXJzY3Jv
bGxZICsgJy4nKTsKKworICAgICAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAg
ICAgICAgICByZXNldFRlc3QoKTsKKyAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gc2Nyb2xs
ZXIuY29udGVudFdpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaHRtbCIpWzBd
OworICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JYID0gb3Zl
cnNjcm9sbFg7CisgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlv
clkgPSBvdmVyc2Nyb2xsWTsKKworICAgICAgICAgICAgICAgIHZhciB4ID0gc2Nyb2xsZXIuY2xp
ZW50V2lkdGggLyAyOworICAgICAgICAgICAgICAgIHZhciB5ID0gc2Nyb2xsZXIuY2xpZW50SGVp
Z2h0IC8gMjsKKyAgICAgICAgICAgICAgICB2YXIgZGVsdGEgPSBnZXREZWx0YXMoImRvd24iKTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gbW91c2VXaGVlbFNjcm9sbEFuZFdhaXQoeCwgeSwgZGVs
dGEuWCwgZGVsdGEuWSwgZGVsdGEuWCwgZGVsdGEuWSkudGhlbigoKSA9PiB7CisgICAgICAgICAg
ICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxUb3AgPiAwLCBwcm9wYWdhdGVZLCAn
Q29udGludWUgdXAgdGhlIHZlcnRpY2FsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAgICAgICAg
ICAgIH0pOworICAgICAgICAgICAgfSwgJ0lmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRo
IG92ZXJzY3JvbGwtYmVoYXZpb3I6ICcgKyBvdmVyc2Nyb2xsWCArICcgJyArIG92ZXJzY3JvbGxZ
ICsgJy4nKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgc2Nyb2xsZXIuYWRkRXZlbnRMaXN0
ZW5lcigibG9hZCIsIG92ZXJzY3JvbGxCZWhhdmlvclRlc3QpOworPC9zY3JpcHQ+ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxp
bmcvbWFjL2FzeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVt
ZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1z
Y3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uZjM5NWI2NDg4ZAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1zY3Jv
bGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSw0IEBACisKK1BBU1MgVW5zY3JvbGxhYmxlIGVsZW1lbnQgaG9yaXpvbnRhbCBz
Y3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuCitQQVNTIFVuc2Nyb2xs
YWJsZSBlbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlv
cjogbm9uZS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2Fz
eW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtc2Nyb2xsLW92ZXJzY3JvbGwt
YmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwLi5mMTIwNWVhMWMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVu
c2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWwKQEAgLTAsMCArMSw2NiBAQAorPCFkb2N0eXBlIGh0bWw+
IDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgQXN5bmNPdmVyZmxvd1Njcm9sbGluZ0VuYWJsZWQ9
dHJ1ZSBBc3luY0ZyYW1lU2Nyb2xsaW5nRW5hYmxlZD10cnVlIF0gLS0+CisKKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL292ZXJzY3JvbGwtYmVoYXZpb3Itc3VwcG9ydC5qcyI+
PC9zY3JpcHQ+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vZHJhZnRzLmNzc3dnLm9y
Zy9jc3Mtb3ZlcnNjcm9sbC1iZWhhdmlvciI+Cis8c3R5bGU+CisgICAgLnNjcm9sbGluZyB7Cisg
ICAgICAgIG92ZXJmbG93OiBzY3JvbGw7CisgICAgfQorICAgIC5zY3JvbGxDb250ZW50IHsKKyAg
ICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgIH0KKyAgICAj
cm9vdCB7CisgICAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgICAgaGVpZ2h0OiAyMDBweDsKKyAg
ICB9CisgICAgI3Njcm9sbGVyIHsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBoZWln
aHQ6IDEwMHB4OworICAgICAgICBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lOworICAgICAgICBv
dmVyZmxvdzogdmlzaWJsZTsKKyAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEz
NWRlZywgcmVkLCBibHVlKTsKKyAgICB9Cis8L3N0eWxlPgorPGRpdiBpZD0icm9vdCIgY2xhc3M9
InNjcm9sbGluZyI+CisgICAgPGRpdiBpZD0ic2Nyb2xsZXIiPgorICAgICAgICA8ZGl2IGNsYXNz
PSJzY3JvbGxDb250ZW50Ij48L2Rpdj4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJzY3Jv
bGxDb250ZW50Ij48L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0PgorY29uc3Qgcm9vdCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdyb290Jyk7Citjb25zdCBzY3JvbGxlciA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdzY3JvbGxlcicpOworZnVuY3Rpb24gcmVzZXRUZXN0KCkgeworICAgIHJv
b3Quc2Nyb2xsTGVmdCA9IDA7CisgICAgcm9vdC5zY3JvbGxUb3AgPSAwOworICAgIHJvb3Quc2Ny
b2xsVG8oMCwgMCk7Cit9CisKK2Z1bmN0aW9uIHN0YXJ0VGVzdCgpIHsKKyAgICAgICAgcHJvbWlz
ZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAgIHJlc2V0VGVzdCgpOworICAgICAgICAgICAgdmFy
IHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAgICAgICAgICB2YXIgeSA9IHNjcm9s
bGVyLmNsaWVudEhlaWdodCAvIDI7CisgICAgICAgICAgICB2YXIgZGVsdGEgPSBnZXREZWx0YXMo
InJpZ2h0Iik7CisgICAgICAgICAgICByZXR1cm4gbW91c2VXaGVlbFNjcm9sbEFuZFdhaXQoeCwg
eSwgZGVsdGEuWCwgZGVsdGEuWSwgZGVsdGEuWCwgZGVsdGEuWSkudGhlbigoKSA9PiB7CisgICAg
ICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbExlZnQgPiAwLCB0cnVlLCAnQ29u
dGludWUgdXAgdGhlIGhvcml6b250YWwgc2Nyb2xsIGNoYWluaW5nJyk7CisgICAgICAgICAgICB9
KTsKKyAgICAgICAgfSwgJ1Vuc2Nyb2xsYWJsZSBlbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRl
c3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLicpOworCisgICAgICAgIHByb21pc2Vf
dGVzdCgoKSA9PiB7CisgICAgICAgICAgICByZXNldFRlc3QoKTsKKyAgICAgICAgICAgIHZhciB4
ID0gc2Nyb2xsZXIuY2xpZW50V2lkdGggLyAyOworICAgICAgICAgICAgdmFyIHkgPSBzY3JvbGxl
ci5jbGllbnRIZWlnaHQgLyAyOworICAgICAgICAgICAgdmFyIGRlbHRhID0gZ2V0RGVsdGFzKCJk
b3duIik7CisgICAgICAgICAgICByZXR1cm4gbW91c2VXaGVlbFNjcm9sbEFuZFdhaXQoeCwgeSwg
ZGVsdGEuWCwgZGVsdGEuWSwgZGVsdGEuWCwgZGVsdGEuWSkudGhlbigoKSA9PiB7CisgICAgICAg
ICAgICAgICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbFRvcCA+IDAsIHRydWUsICdDb250aW51
ZSB1cCB0aGUgdmVydGljYWwgc2Nyb2xsIGNoYWluaW5nJyk7CisgICAgICAgICAgICB9KTsKKyAg
ICAgICAgfSwgJ1Vuc2Nyb2xsYWJsZSBlbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGgg
b3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4nKTsKK30KKworYWRkRXZlbnRMaXN0ZW5lcigibG9h
ZCIsIHN0YXJ0VGVzdCk7Cis8L3NjcmlwdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtc2Nyb2xsLW92
ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZp
b3ItdW5zY3JvbGxhYmxlLWlmcmFtZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMC4uN2ZhNTljY2JhNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11
bnNjcm9sbGFibGUtaWZyYW1lLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKKworCitQQVNT
IFVuc2Nyb2xsYWJsZSBpZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3Jv
bGwtYmVoYXZpb3I6IG5vbmUuCitQQVNTIFVuc2Nyb2xsYWJsZSBpZnJhbWUgdmVydGljYWwgc2Ny
b2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLgorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVo
YXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxp
bmcvbWFjL2FzeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJh
bWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4zM2VjNWIyNjNj
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5j
LXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUuaHRtbApAQCAt
MCwwICsxLDY2IEBACis8IWRvY3R5cGUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBB
c3luY092ZXJmbG93U2Nyb2xsaW5nRW5hYmxlZD10cnVlIEFzeW5jRnJhbWVTY3JvbGxpbmdFbmFi
bGVkPXRydWUgXSAtLT4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFy
bmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvb3Zl
cnNjcm9sbC1iZWhhdmlvci1zdXBwb3J0LmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0iaGVscCIg
aHJlZj0iaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1vdmVyc2Nyb2xsLWJlaGF2aW9yIj4K
KzxzdHlsZT4KKyAgICAuc2Nyb2xsaW5nIHsKKyAgICAgICAgb3ZlcmZsb3c6IHNjcm9sbDsKKyAg
ICB9CisgICAgLnNjcm9sbENvbnRlbnQgeworICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAg
IGhlaWdodDogMzAwcHg7CisgICAgfQorICAgICNyb290IHsKKyAgICAgICAgd2lkdGg6IDIwMHB4
OworICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAgIH0KKyAgICAjc2Nyb2xsZXIgeworICAgICAg
ICB3aWR0aDogMjAwcHg7CisgICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgICAgIG92ZXJzY3Jv
bGwtYmVoYXZpb3I6IG5vbmU7CisgICAgICAgIG92ZXJmbG93OiB2aXNpYmxlOworICAgICAgICBi
YWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZWQsIGJsdWUpOworICAgIH0KKzwv
c3R5bGU+Cis8ZGl2IGlkPSdyb290JyBjbGFzcz0ic2Nyb2xsaW5nIj4KKyAgICA8aWZyYW1lIGlk
PSdzY3JvbGxlcicgc3JjZG9jPSI8aHRtbCBzdHlsZT0nb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9u
ZTsnPjxkaXYgc3R5bGU9J3dpZHRoOiAxMDBweDsgaGVpZ2h0OiAxMDBweDsnPjwvZGl2PjwvaHRt
bD4KKyAgICAgICAgIj48L2lmcmFtZT4KKyAgICA8ZGl2IGNsYXNzPSJzY3JvbGxDb250ZW50Ij48
L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0PgorY29uc3Qgcm9vdCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdyb290Jyk7Citjb25zdCBzY3JvbGxlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdzY3JvbGxlcicpOworCitmdW5jdGlvbiByZXNldFRlc3QoKSB7CisgICAgcm9vdC5zY3JvbGxM
ZWZ0ID0gMDsKKyAgICByb290LnNjcm9sbFRvcCA9IDA7CisgICAgcm9vdC5zY3JvbGxUbygwLCAw
KTsKK30KKworZnVuY3Rpb24gc3RhcnRUZXN0KCkgeworICAgICAgICBwcm9taXNlX3Rlc3QoKCkg
PT4geworICAgICAgICAgICAgcmVzZXRUZXN0KCk7CisgICAgICAgICAgICB2YXIgeCA9IHNjcm9s
bGVyLmNsaWVudFdpZHRoIC8gMjsKKyAgICAgICAgICAgIHZhciB5ID0gc2Nyb2xsZXIuY2xpZW50
SGVpZ2h0IC8gMjsKKyAgICAgICAgICAgIHZhciBkZWx0YSA9IGdldERlbHRhcygicmlnaHQiKTsK
KyAgICAgICAgICAgIHJldHVybiBtb3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCh4LCB5LCBkZWx0YS5Y
LCBkZWx0YS5ZLCBkZWx0YS5YLCBkZWx0YS5ZKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAg
ICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsTGVmdCA+IDAsIHRydWUsICdDb250aW51ZSB1cCB0
aGUgaG9yaXpvbnRhbCBzY3JvbGwgY2hhaW5pbmcnKTsKKyAgICAgICAgICAgIH0pOworICAgICAg
ICB9LCAnVW5zY3JvbGxhYmxlIGlmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3Zl
cnNjcm9sbC1iZWhhdmlvcjogbm9uZS4nKTsKKworICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4g
eworICAgICAgICAgICAgcmVzZXRUZXN0KCk7CisgICAgICAgICAgICB2YXIgeCA9IHNjcm9sbGVy
LmNsaWVudFdpZHRoIC8gMjsKKyAgICAgICAgICAgIHZhciB5ID0gc2Nyb2xsZXIuY2xpZW50SGVp
Z2h0IC8gMjsKKyAgICAgICAgICAgIHZhciBkZWx0YSA9IGdldERlbHRhcygiZG93biIpOworICAg
ICAgICAgICAgcmV0dXJuIG1vdXNlV2hlZWxTY3JvbGxBbmRXYWl0KHgsIHksIGRlbHRhLlgsIGRl
bHRhLlksIGRlbHRhLlgsIGRlbHRhLlkpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGFz
c2VydF9lcXVhbHMocm9vdC5zY3JvbGxUb3AgPiAwLCB0cnVlLCAnQ29udGludWUgdXAgdGhlIHZl
cnRpY2FsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0sICdV
bnNjcm9sbGFibGUgaWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1i
ZWhhdmlvcjogbm9uZS4nKTsKK30KKworYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIHN0YXJ0VGVz
dCk7Cis8L3NjcmlwdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9yZXNvdXJjZXMvb3ZlcnNjcm9sbC1iZWhhdmlvci1z
dXBwb3J0LmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvcmVzb3VyY2VzL292ZXJzY3Jv
bGwtYmVoYXZpb3Itc3VwcG9ydC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwLi5iMzNmMzZjMGUwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3Jv
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
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4yNzE1MGZmNjBi
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3Jv
bGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIw
IEBACisKK1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9s
bC1iZWhhdmlvcjogYXV0byBhdXRvLgorUEFTUyBFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0
IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBhdXRvLgorUEFTUyBFbGVtZW50IGhvcml6
b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGF1dG8u
CitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2
aW9yOiBjb250YWluIGF1dG8uCitQQVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3
aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgYXV0by4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNh
bCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgYXV0by4KK1BBU1Mg
RWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjog
YXV0byBjb250YWluLgorUEFTUyBFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3Zl
cnNjcm9sbC1iZWhhdmlvcjogYXV0byBjb250YWluLgorUEFTUyBFbGVtZW50IGhvcml6b250YWwg
c2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGNvbnRhaW4uCitQ
QVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9y
OiBjb250YWluIGNvbnRhaW4uCitQQVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3
aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgY29udGFpbi4KK1BBU1MgRWxlbWVudCB2ZXJ0
aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgY29udGFpbi4K
K1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhh
dmlvcjogYXV0byBub25lLgorUEFTUyBFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGgg
b3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBub25lLgorUEFTUyBFbGVtZW50IGhvcml6b250YWwg
c2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIG5vbmUuCitQQVNT
IEVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBj
b250YWluIG5vbmUuCitQQVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92
ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgbm9uZS4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3Jv
bGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgbm9uZS4KKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhh
dmlvci1lbGVtZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9s
bC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwLi45MTZjMzE0MWJhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50
Lmh0bWwKQEAgLTAsMCArMSw4NiBAQAorPCFkb2N0eXBlIGh0bWw+CisKKzxzY3JpcHQgc3JjPSIu
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
cm9sbGVyLnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclkgPSBvdmVyc2Nyb2xsWTsKKworICAgICAg
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
IDAwMDAwMDAwMDAuLjkwMGEwYjdkOTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwyMSBAQAorCisKK1BBU1MgSWZyYW1lIGhvcml6b250YWwgc2Ny
b2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIGF1dG8uCitQQVNTIElmcmFt
ZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gYXV0
by4KK1BBU1MgSWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJl
aGF2aW9yOiBjb250YWluIGF1dG8uCitQQVNTIElmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3
aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gYXV0by4KK1BBU1MgSWZyYW1lIGhvcml6
b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIGF1dG8uCitQ
QVNTIElmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6
IG5vbmUgYXV0by4KK1BBU1MgSWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVy
c2Nyb2xsLWJlaGF2aW9yOiBhdXRvIGNvbnRhaW4uCitQQVNTIElmcmFtZSB2ZXJ0aWNhbCBzY3Jv
bGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gY29udGFpbi4KK1BBU1MgSWZy
YW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250
YWluIGNvbnRhaW4uCitQQVNTIElmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJz
Y3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gY29udGFpbi4KK1BBU1MgSWZyYW1lIGhvcml6b250YWwg
c2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIGNvbnRhaW4uCitQQVNT
IElmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5v
bmUgY29udGFpbi4KK1BBU1MgSWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVy
c2Nyb2xsLWJlaGF2aW9yOiBhdXRvIG5vbmUuCitQQVNTIElmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwg
dGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gbm9uZS4KK1BBU1MgSWZyYW1lIGhv
cml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIG5v
bmUuCitQQVNTIElmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVo
YXZpb3I6IGNvbnRhaW4gbm9uZS4KK1BBU1MgSWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qg
d2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIG5vbmUuCitQQVNTIElmcmFtZSB2ZXJ0aWNh
bCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgbm9uZS4KKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9s
bC1iZWhhdmlvci1pZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMt
c2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMC4uZTI4ODQ1ZGI1MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZy
YW1lLmh0bWwKQEAgLTAsMCArMSw4OCBAQAorPCFkb2N0eXBlIGh0bWw+CisKKzxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL292ZXJzY3JvbGwtYmVoYXZpb3Itc3VwcG9ydC5qcyI+PC9zY3JpcHQ+
Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3Mtb3Zl
cnNjcm9sbC1iZWhhdmlvciI+Cis8c3R5bGU+CisgICAgLnNjcm9sbGluZyB7CisgICAgICAgIG92
ZXJmbG93OiBzY3JvbGw7CisgICAgfQorICAgIC5zY3JvbGxDb250ZW50IHsKKyAgICAgICAgd2lk
dGg6IDMwMHB4OworICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICBiYWNrZ3JvdW5kOiBs
aW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZWQsIGJsdWUpOworICAgIH0KKyAgICAjcm9vdCB7Cisg
ICAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgICAgaGVpZ2h0OiAyMDBweDsKKyAgICB9CisgICAg
I3Njcm9sbGVyIHsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBoZWlnaHQ6IDEwMHB4
OworICAgICAgICBvdmVyc2Nyb2xsLWJlaGF2aW9yLXk6IGF1dG87CisgICAgfQorPC9zdHlsZT4K
KzxkaXYgaWQ9J3Jvb3QnIGNsYXNzPSJzY3JvbGxpbmciPgorICAgIDxpZnJhbWUgaWQ9J3Njcm9s
bGVyJyBzcmNkb2M9IjxodG1sPjxkaXYgc3R5bGU9J3dpZHRoOiAzMDBweDsgaGVpZ2h0OiAzMDBw
eDsnPjwvZGl2PjwvaHRtbD4KKyAgICAgICAgIj48L2lmcmFtZT4KKyAgICA8ZGl2IGNsYXNzPSJz
Y3JvbGxDb250ZW50Ij48L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0PgorICAgIGNvbnN0IHJvb3Qg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncm9vdCcpOworICAgIGNvbnN0IHNjcm9sbGVyID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Njcm9sbGVyJyk7CisgICAgdmFyIG92ZXJzY3JvbGxE
YXRhcyA9IFtbImF1dG8iLCAiYXV0byIsIHRydWUsIHRydWVdLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFsiY29udGFpbiIsICJhdXRvIiwgZmFsc2UsIHRydWVdLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFsibm9uZSIsICJhdXRvIiwgZmFsc2UsIHRydWVdLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFsiYXV0byIsICJjb250YWluIiwgdHJ1ZSwgZmFsc2VdLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFsiY29udGFpbiIsICJjb250YWluIiwgZmFsc2UsIGZh
bHNlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIm5vbmUiLCAiY29udGFpbiIsIGZh
bHNlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJhdXRvIiwgIm5vbmUi
LCB0cnVlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJjb250YWluIiwg
Im5vbmUiLCBmYWxzZSwgZmFsc2VdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsibm9u
ZSIsICJub25lIiwgZmFsc2UsIGZhbHNlXV07CisgICAgZnVuY3Rpb24gcmVzZXRUZXN0KCkgewor
ICAgICAgICAvLyBUcnkgdmFyaW91cyBtZXRob2RzIHRvIGVuc3VyZSB0aGUgZWxlbWVudCBwb3Np
dGlvbiBpcyByZXNldCBpbW1lZGlhdGVseS4KKyAgICAgICAgc2Nyb2xsZXIuY29udGVudFdpbmRv
dy5zY3JvbGxYID0gMzAwOworICAgICAgICBzY3JvbGxlci5jb250ZW50V2luZG93LnNjcm9sbFkg
PSAzMDA7CisgICAgICAgIHNjcm9sbGVyLmNvbnRlbnRXaW5kb3cuc2Nyb2xsVG8oMzAwLCAzMDAp
OworCisgICAgICAgIHJvb3Quc2Nyb2xsTGVmdCA9IDA7CisgICAgICAgIHJvb3Quc2Nyb2xsVG9w
ID0gMDsKKyAgICAgICAgcm9vdC5zY3JvbGxUbygwLCAwKTsKKyAgICB9CisKKyAgICBmdW5jdGlv
biBvdmVyc2Nyb2xsQmVoYXZpb3JUZXN0KCkgeworICAgICAgICBvdmVyc2Nyb2xsRGF0YXMuZm9y
RWFjaCgoW292ZXJzY3JvbGxYLCBvdmVyc2Nyb2xsWSwgcHJvcGFnYXRlWCwgcHJvcGFnYXRlWV0p
ID0+IHsKKyAgICAgICAgICAgIHByb21pc2VfdGVzdCgoKSA9PiB7CisgICAgICAgICAgICAgICAg
cmVzZXRUZXN0KCk7CisgICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IHNjcm9sbGVyLmNvbnRl
bnRXaW5kb3cuZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImh0bWwiKVswXTsKKyAgICAg
ICAgICAgICAgICB0YXJnZXQuc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWCA9IG92ZXJzY3JvbGxY
OworICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JZID0gb3Zl
cnNjcm9sbFk7CisKKyAgICAgICAgICAgICAgICB2YXIgeCA9IHNjcm9sbGVyLmNsaWVudFdpZHRo
IC8gMjsKKyAgICAgICAgICAgICAgICB2YXIgeSA9IHNjcm9sbGVyLmNsaWVudEhlaWdodCAvIDI7
CisgICAgICAgICAgICAgICAgdmFyIGRlbHRhID0gZ2V0RGVsdGFzKCJyaWdodCIpOworICAgICAg
ICAgICAgICAgIHJldHVybiBtb3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCh4LCB5LCBkZWx0YS5YLCBk
ZWx0YS5ZLCBkZWx0YS5YLCBkZWx0YS5ZKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICAg
ICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbExlZnQgPiAwLCBwcm9wYWdhdGVYLCAnQ29udGlu
dWUgdXAgdGhlIGhvcml6b250YWwgc2Nyb2xsIGNoYWluaW5nJyk7CisgICAgICAgICAgICAgICAg
fSk7CisgICAgICAgICAgICB9LCAnSWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBv
dmVyc2Nyb2xsLWJlaGF2aW9yOiAnICsgb3ZlcnNjcm9sbFggKyAnICcgKyBvdmVyc2Nyb2xsWSAr
ICcuJyk7CisKKyAgICAgICAgICAgIHByb21pc2VfdGVzdCgoKSA9PiB7CisgICAgICAgICAgICAg
ICAgcmVzZXRUZXN0KCk7CisgICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IHNjcm9sbGVyLmNv
bnRlbnRXaW5kb3cuZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImh0bWwiKVswXTsKKyAg
ICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWCA9IG92ZXJzY3Jv
bGxYOworICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JZID0g
b3ZlcnNjcm9sbFk7CisKKyAgICAgICAgICAgICAgICB2YXIgeCA9IHNjcm9sbGVyLmNsaWVudFdp
ZHRoIC8gMjsKKyAgICAgICAgICAgICAgICB2YXIgeSA9IHNjcm9sbGVyLmNsaWVudEhlaWdodCAv
IDI7CisgICAgICAgICAgICAgICAgdmFyIGRlbHRhID0gZ2V0RGVsdGFzKCJkb3duIik7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIG1vdXNlV2hlZWxTY3JvbGxBbmRXYWl0KHgsIHksIGRlbHRhLlgs
IGRlbHRhLlksIGRlbHRhLlgsIGRlbHRhLlkpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAg
ICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsVG9wID4gMCwgcHJvcGFnYXRlWSwgJ0NvbnRp
bnVlIHVwIHRoZSB2ZXJ0aWNhbCBzY3JvbGwgY2hhaW5pbmcnKTsKKyAgICAgICAgICAgICAgICB9
KTsKKyAgICAgICAgICAgIH0sICdJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVy
c2Nyb2xsLWJlaGF2aW9yOiAnICsgb3ZlcnNjcm9sbFggKyAnICcgKyBvdmVyc2Nyb2xsWSArICcu
Jyk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIHNjcm9sbGVyLmFkZEV2ZW50TGlzdGVuZXIo
ImxvYWQiLCBvdmVyc2Nyb2xsQmVoYXZpb3JUZXN0KTsKKzwvc2NyaXB0PgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5
bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9s
bC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uZjM5NWI2NDg4ZAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZp
b3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorCitQ
QVNTIFVuc2Nyb2xsYWJsZSBlbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVy
c2Nyb2xsLWJlaGF2aW9yOiBub25lLgorUEFTUyBVbnNjcm9sbGFibGUgZWxlbWVudCB2ZXJ0aWNh
bCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVo
YXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xs
aW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi43Y2I3NzMzNjU5Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwt
b3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC5odG1sCkBAIC0wLDAgKzEs
NjYgQEAKKzwhZG9jdHlwZSBodG1sPgorCis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVz
dGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9vdmVy
c2Nyb2xsLWJlaGF2aW9yLXN1cHBvcnQuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJoZWxwIiBo
cmVmPSJodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLW92ZXJzY3JvbGwtYmVoYXZpb3IiPgor
PHN0eWxlPgorICAgIC5zY3JvbGxpbmcgeworICAgICAgICBvdmVyZmxvdzogc2Nyb2xsOworICAg
IH0KKyAgICAuc2Nyb2xsQ29udGVudCB7CisgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAg
aGVpZ2h0OiAzMDBweDsKKyAgICB9CisgICAgI3Jvb3QgeworICAgICAgICB3aWR0aDogMjAwcHg7
CisgICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgfQorICAgICNzY3JvbGxlciB7CisgICAgICAg
IHdpZHRoOiAxMDBweDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgICAgb3ZlcnNjcm9s
bC1iZWhhdmlvcjogbm9uZTsKKyAgICAgICAgb3ZlcmZsb3c6IHZpc2libGU7CisgICAgICAgIGJh
Y2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJlZCwgYmx1ZSk7CisgICAgfQorPC9z
dHlsZT4KKzxkaXYgaWQ9InJvb3QiIGNsYXNzPSJzY3JvbGxpbmciPgorICAgIDxkaXYgaWQ9InNj
cm9sbGVyIj4KKyAgICAgICAgPGRpdiBjbGFzcz0ic2Nyb2xsQ29udGVudCI+PC9kaXY+CisgICAg
PC9kaXY+CisgICAgPGRpdiBjbGFzcz0ic2Nyb2xsQ29udGVudCI+PC9kaXY+Cis8L2Rpdj4KKwor
PHNjcmlwdD4KK2NvbnN0IHJvb3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncm9vdCcpOwor
Y29uc3Qgc2Nyb2xsZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2Nyb2xsZXInKTsKK2Z1
bmN0aW9uIHJlc2V0VGVzdCgpIHsKKyAgICByb290LnNjcm9sbExlZnQgPSAwOworICAgIHJvb3Qu
c2Nyb2xsVG9wID0gMDsKKyAgICByb290LnNjcm9sbFRvKDAsIDApOworfQorCitmdW5jdGlvbiBz
dGFydFRlc3QoKSB7CisgICAgICAgIHByb21pc2VfdGVzdCgoKSA9PiB7CisgICAgICAgICAgICBy
ZXNldFRlc3QoKTsKKyAgICAgICAgICAgIHZhciB4ID0gc2Nyb2xsZXIuY2xpZW50V2lkdGggLyAy
OworICAgICAgICAgICAgdmFyIHkgPSBzY3JvbGxlci5jbGllbnRIZWlnaHQgLyAyOworICAgICAg
ICAgICAgdmFyIGRlbHRhID0gZ2V0RGVsdGFzKCJyaWdodCIpOworICAgICAgICAgICAgcmV0dXJu
IG1vdXNlV2hlZWxTY3JvbGxBbmRXYWl0KHgsIHksIGRlbHRhLlgsIGRlbHRhLlksIGRlbHRhLlgs
IGRlbHRhLlkpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9v
dC5zY3JvbGxMZWZ0ID4gMCwgdHJ1ZSwgJ0NvbnRpbnVlIHVwIHRoZSBob3Jpem9udGFsIHNjcm9s
bCBjaGFpbmluZycpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0sICdVbnNjcm9sbGFibGUg
ZWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjog
bm9uZS4nKTsKKworICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgICAgICAgICAgcmVz
ZXRUZXN0KCk7CisgICAgICAgICAgICB2YXIgeCA9IHNjcm9sbGVyLmNsaWVudFdpZHRoIC8gMjsK
KyAgICAgICAgICAgIHZhciB5ID0gc2Nyb2xsZXIuY2xpZW50SGVpZ2h0IC8gMjsKKyAgICAgICAg
ICAgIHZhciBkZWx0YSA9IGdldERlbHRhcygiZG93biIpOworICAgICAgICAgICAgcmV0dXJuIG1v
dXNlV2hlZWxTY3JvbGxBbmRXYWl0KHgsIHksIGRlbHRhLlgsIGRlbHRhLlksIGRlbHRhLlgsIGRl
bHRhLlkpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5z
Y3JvbGxUb3AgPiAwLCB0cnVlLCAnQ29udGludWUgdXAgdGhlIHZlcnRpY2FsIHNjcm9sbCBjaGFp
bmluZycpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0sICdVbnNjcm9sbGFibGUgZWxlbWVu
dCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuJyk7
Cit9CisKK2FkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBzdGFydFRlc3QpOworPC9zY3JpcHQ+Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9z
Y3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZy
YW1lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xs
LW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uN2ZhNTljY2JhNwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3Jv
bGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1
IEBACisKKworUEFTUyBVbnNjcm9sbGFibGUgaWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qg
d2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLgorUEFTUyBVbnNjcm9sbGFibGUgaWZyYW1l
IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4KKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNj
cm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1p
ZnJhbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5lMjQyNWFm
YzYzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1z
Y3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLmh0bWwKQEAgLTAs
MCArMSw2NiBAQAorPCFkb2N0eXBlIGh0bWw+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L292ZXJzY3JvbGwtYmVoYXZpb3Itc3VwcG9ydC5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9Imhl
bHAiIGhyZWY9Imh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3Mtb3ZlcnNjcm9sbC1iZWhhdmlv
ciI+Cis8c3R5bGU+CisgICAgLnNjcm9sbGluZyB7CisgICAgICAgIG92ZXJmbG93OiBzY3JvbGw7
CisgICAgfQorICAgIC5zY3JvbGxDb250ZW50IHsKKyAgICAgICAgd2lkdGg6IDMwMHB4OworICAg
ICAgICBoZWlnaHQ6IDMwMHB4OworICAgIH0KKyAgICAjcm9vdCB7CisgICAgICAgIHdpZHRoOiAy
MDBweDsKKyAgICAgICAgaGVpZ2h0OiAyMDBweDsKKyAgICB9CisgICAgI3Njcm9sbGVyIHsKKyAg
ICAgICAgd2lkdGg6IDIwMHB4OworICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAgICAgICBvdmVy
c2Nyb2xsLWJlaGF2aW9yOiBub25lOworICAgICAgICBvdmVyZmxvdzogdmlzaWJsZTsKKyAgICAg
ICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmVkLCBibHVlKTsKKyAgICB9
Cis8L3N0eWxlPgorPGRpdiBpZD0ncm9vdCcgY2xhc3M9InNjcm9sbGluZyI+CisgICAgPGlmcmFt
ZSBpZD0nc2Nyb2xsZXInIHNyY2RvYz0iPGh0bWwgc3R5bGU9J292ZXJzY3JvbGwtYmVoYXZpb3I6
IG5vbmU7Jz48ZGl2IHN0eWxlPSd3aWR0aDogMTAwcHg7IGhlaWdodDogMTAwcHg7Jz48L2Rpdj48
L2h0bWw+CisgICAgICAgICI+PC9pZnJhbWU+CisgICAgPGRpdiBjbGFzcz0ic2Nyb2xsQ29udGVu
dCI+PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4KK2NvbnN0IHJvb3QgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgncm9vdCcpOworY29uc3Qgc2Nyb2xsZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnc2Nyb2xsZXInKTsKKworZnVuY3Rpb24gcmVzZXRUZXN0KCkgeworICAgIHJvb3Quc2Ny
b2xsTGVmdCA9IDA7CisgICAgcm9vdC5zY3JvbGxUb3AgPSAwOworICAgIHJvb3Quc2Nyb2xsVG8o
MCwgMCk7Cit9CisKK2Z1bmN0aW9uIHN0YXJ0VGVzdCgpIHsKKyAgICAgICAgcHJvbWlzZV90ZXN0
KCgpID0+IHsKKyAgICAgICAgICAgIHJlc2V0VGVzdCgpOworICAgICAgICAgICAgdmFyIHggPSBz
Y3JvbGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAgICAgICAgICB2YXIgeSA9IHNjcm9sbGVyLmNs
aWVudEhlaWdodCAvIDI7CisgICAgICAgICAgICB2YXIgZGVsdGEgPSBnZXREZWx0YXMoInJpZ2h0
Iik7CisgICAgICAgICAgICByZXR1cm4gbW91c2VXaGVlbFNjcm9sbEFuZFdhaXQoeCwgeSwgZGVs
dGEuWCwgZGVsdGEuWSwgZGVsdGEuWCwgZGVsdGEuWSkudGhlbigoKSA9PiB7CisgICAgICAgICAg
ICAgICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbExlZnQgPiAwLCB0cnVlLCAnQ29udGludWUg
dXAgdGhlIGhvcml6b250YWwgc2Nyb2xsIGNoYWluaW5nJyk7CisgICAgICAgICAgICB9KTsKKyAg
ICAgICAgfSwgJ1Vuc2Nyb2xsYWJsZSBpZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRo
IG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuJyk7CisKKyAgICAgICAgcHJvbWlzZV90ZXN0KCgp
ID0+IHsKKyAgICAgICAgICAgIHJlc2V0VGVzdCgpOworICAgICAgICAgICAgdmFyIHggPSBzY3Jv
bGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAgICAgICAgICB2YXIgeSA9IHNjcm9sbGVyLmNsaWVu
dEhlaWdodCAvIDI7CisgICAgICAgICAgICB2YXIgZGVsdGEgPSBnZXREZWx0YXMoImRvd24iKTsK
KyAgICAgICAgICAgIHJldHVybiBtb3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCh4LCB5LCBkZWx0YS5Y
LCBkZWx0YS5ZLCBkZWx0YS5YLCBkZWx0YS5ZKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAg
ICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsVG9wID4gMCwgdHJ1ZSwgJ0NvbnRpbnVlIHVwIHRo
ZSB2ZXJ0aWNhbCBzY3JvbGwgY2hhaW5pbmcnKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9
LCAnVW5zY3JvbGxhYmxlIGlmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3Jv
bGwtYmVoYXZpb3I6IG5vbmUuJyk7Cit9CisKK2FkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBzdGFy
dFRlc3QpOworPC9zY3JpcHQ+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBlZjdmZGViM2M4Li41OTkxMjQ4
MTI0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9u
cworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNzk1
LDYgKzc5NSwxMiBAQCBzdmcvdGV4dC9zZWxlY3QtdGV4dC1zdmdmb250Lmh0bWwgWyBTa2lwIF0K
IHN2Zy90ZXh0L3NlbGVjdGlvbi1kb3VibGVjbGljay5zdmcgWyBTa2lwIF0KIHN2Zy90ZXh0L3Nl
bGVjdGlvbi10cmlwbGVjbGljay5zdmcgWyBTa2lwIF0KIAorIyBPdmVyc2Nyb2xsLWJlaGF2aW9y
IGlzIG5vdCBzdXBwb3J0ZWQgb24gaU9TCitmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVy
c2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQuaHRtbCBbIFNraXAgXQorZmFzdC9zY3JvbGxpbmcvc3lu
Yy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUuaHRtbCBbIFNraXAgXQorZmFzdC9z
Y3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxl
bWVudC5odG1sIFsgU2tpcCBdCitmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xs
LWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUuaHRtbCBbIFNraXAgXQorCiAjIElPUyBkb2Vz
IG5vdCBpbXBsZW1lbnQgc2V0QXV0b21hdGljTGlua0RldGVjdGlvbkVuYWJsZWQKIGVkaXRpbmcv
aW5zZXJ0aW5nL3R5cGluZy1zcGFjZS10by10cmlnZ2VyLXNtYXJ0LWxpbmsuaHRtbCBbIFNraXAg
XQogZWRpdGluZy9pbnNlcnRpbmcvc21hcnQtbGluay13aGVuLWNhcmV0LWlzLW1vdmVkLWJlZm9y
ZS1VUkwuaHRtbCBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
LXdrMS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0
RXhwZWN0YXRpb25zCmluZGV4IGUyMjcwYjZmOTkuLmYxMmMzZDkyYzQgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTQ1Myw2ICs0NTMsMTAg
QEAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXNjcm9sbC1zbmFwL3Nj
cm9sbC10YXJnZXQtcGFkZGluZy0wMDEuaHQKIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy1zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1zdG9wLWNoYW5nZS5odG1sIFsgRmFp
bHVyZSBdCiBjc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1wYWRkaW5nLW1haW5mcmFtZS1wYWdpbmcu
aHRtbCBbIEZhaWx1cmUgXQogCisjIExhY2sgb2Ygd2F5cyB0byBjb250cm9sIHRoZSBjcm9zcy1m
cmFtZSBzY3JvbGwgY2hhaW5pbmcgaW4gV0sxLgorZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwt
b3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUuaHRtbCBbIFNraXAgXQorZmFzdC9zY3JvbGxpbmcv
c3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLmh0bWwg
WyBTa2lwIF0KKwogIyMjIEVORCBPRiAoMikgRmFpbHVyZXMgd2l0aG91dCBidWcgcmVwb3J0cwog
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggMzNhOTQ0MDRkNy4uNGNm
MmNmMzU2NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhw
ZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0
aW9ucwpAQCAtMTAxLDYgKzEwMSwxMSBAQCBmYXN0L2FuaW1hdGlvbi9yZXF1ZXN0LWFuaW1hdGlv
bi1mcmFtZS1pbi10d28tcGFnZXMuaHRtbCBbIFBhc3MgXQogZmFzdC9mb3Jtcy9maWxlL2VudHJp
ZXMtYXBpL2ltYWdlLXRyYW5zY29kZS1vcGVuLXBhbmVsLmh0bWwgWyBQYXNzIF0KIGZhc3QvZm9y
bXMvZmlsZS9lbnRyaWVzLWFwaS9pbWFnZS1uby10cmFuc2NvZGUtb3Blbi1wYW5lbC5odG1sIFsg
UGFzcyBdCiAKK2Zhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhh
dmlvci1lbGVtZW50Lmh0bWwgWyBTbG93IF0KK2Zhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1zY3Jv
bGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUuaHRtbCBbIFNsb3cgXQorZmFzdC9zY3JvbGxp
bmcvbWFjL2FzeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJh
bWUuaHRtbCBbIFNsb3cgXQorZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLXNjcm9sbC1vdmVyc2Ny
b2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWwgWyBTbG93IF0KKwogIy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogIyBFbmQgcGxhdGZvcm0tc3BlY2lmaWMgZGly
ZWN0b3JpZXMuCiAjLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggYWJmNDc4OWYyMi4uYTI4MWJiNmQ4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNSBAQAor
MjAyMS0wMy0xNSAgQ2F0aGllIENoZW4gIDxjYXRoaWVjaGVuQGlnYWxpYS5jb20+CisKKyAgICAg
ICAgSW1wbGVtZW50IENTUyBvdmVyc2Nyb2xsLWJlaGF2aW9yIGZvciBhc3luY2hyb25vdXMgc2Ny
b2xsIG9uIE1hYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjIwMTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhpcyBwYXRjaCBzdXBwb3J0cyBvdmVyc2Nyb2xsLWJlaGF2aW9yIGZvciB0aGUgYXN5bmNo
cm9ub3VzIHNjcm9sbCBvbiBNYWMuIAorICAgICAgICBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZSBzdG9yZXMgdGhlIHZhbHVlcyBvZiBvdmVyc2Nyb2xsLWJlaGF2aW9yLiBJbiBvcmRlciB0byBt
YWtlIHN1cmUgdGhlIGNvbnNpc3RlbmN5LAorICAgICAgICBvdmVyc2Nyb2xsLWJlaGF2aW9yIHRy
aWdnZXJzIHJlY29tcG9zaXRlQ2hhbmdlUmVxdWlyZXNHZW9tZXRyeVVwZGF0ZSB3aGVuIHRoZSB2
YWx1ZXMgYXJlIGNoYW5nZWQuCisgICAgICAgIFRoZSBzY3JvbGwgY2hhaW5pbmcgYW5kIHN3aXBl
IGdlc3R1cmVzIGFyZSBoYW5kbGVkIGluIFNjcm9sbGluZ1RyZWU6OmhhbmRsZVdoZWVsRXZlbnRX
aXRoTm9kZS4KKyAgICAgICAgQWJvdXQgdGhlIHNjcm9sbCBzdHJldGNoIGluIFNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMgaXMgY2FuY2VsZWQgb3ZlcnNjcm9sbC1iZWhhdmlv
ciBpcyBub25lLgorCisgICAgICAgIFRlc3RzOiBmYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtc2Ny
b2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC5odG1sCisgICAgICAgICAgICAgICBmYXN0
L3Njcm9sbGluZy9tYWMvYXN5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0
bWwKKyAgICAgICAgICAgICAgIGZhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1zY3JvbGwtb3ZlcnNj
cm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC5odG1sCisgICAgICAgICAgICAgICBm
YXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3Jv
bGxhYmxlLWlmcmFtZS5odG1sCisKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9s
bGluZ0Nvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jU2Nyb2xsaW5nQ29v
cmRpbmF0b3I6OnNldFNjcm9sbGluZ05vZGVTY3JvbGxhYmxlQXJlYUdlb21ldHJ5KTogU2V0IG92
ZXJzY3JvbGxCZWhhdmlvciB2YWx1ZXMgdG8gU2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzLgorICAg
ICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yVHlwZXMuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGFibGVBcmVhUGFyYW1ldGVyczo6b3BlcmF0b3I9PSBjb25zdCk6
IEFkZCBob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yIGFuZCB2ZXJ0aWNhbE92ZXJzY3JvbGxC
ZWhhdmlvci4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWU6OnNob3VsZEJsb2NrU2Nyb2xsQ2hhaW5pbmdX
aXRoTm9kZSk6IEFjY29yZGluZyB0byB0aGUgdmFsdWUgb2YgU2Nyb2xsQ2hhaW5pbmdCbG9ja2Vy
IHRvIGRlY2lkZSBibG9jayB0aGUgc2Nyb2xsIGNoYWluaW5nIG9yIG5vdC4KKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGluZ1RyZWU6OmhhbmRsZVdoZWVsRXZlbnRXaXRoTm9kZSk6IElmIHRoZSBo
b3Jpem9udGFsIHNjcm9sbCBjaGFpbmluZyBpcyBibG9ja2VkLCByZXR1cm4gV2hlZWxFdmVudEhh
bmRsaW5nUmVzdWx0Ojp1bmhhbmRsZWQoKSwgYW5kIHRoZSBzd2lwZSBnZXN0dXJlIHdpbGwgYmUg
dHJpZ2dlcmVkLgorICAgICAgICBJZiB0aGUgdmVydGljYWwgc2Nyb2xsIGNoYWluaW5nIGlzIGJs
b2NrZWQsIHJldHVybiBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQ6OmhhbmRsZWQoKS4KKyAgICAg
ICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmg6CisgICAgICAgICogcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6Omhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3Ig
Y29uc3QpOiBSZXR1cm4gdGhlIHZhbHVlIG9mIG92ZXJzY3JvbGwtYmVoYXZpb3IteC4KKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjp2ZXJ0aWNhbE92ZXJzY3Jv
bGxCZWhhdmlvciBjb25zdCk6IFJldHVybiB0aGUgdmFsdWUgb2Ygb3ZlcnNjcm9sbC1iZWhhdmlv
ci1ZLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OnVwZGF0
ZVNjcm9sbENoYWluaW5nQmxvY2tlclN0YXRlIGNvbnN0KTogVXBkYXRlIFNjcm9sbENoYWluaW5n
QmxvY2tlciBhY2NvcmRpbmcgdG8gb3ZlcnNjcm9sbC1iZWhhdmlvciB2YWx1ZXMuCisgICAgICAg
ICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaDoKKyAgICAgICAg
KiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdh
dGVNYWM6OmFsbG93c0hvcml6b250YWxTdHJldGNoaW5nIGNvbnN0KTogRG9uJ3Qgc3RyZXRjaCB3
aGVuIG92ZXJzY29ybGwtYmVoYXZpb3IteCBpcyAibm9uZSIuCisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjphbGxvd3NWZXJ0aWNhbFN0cmV0
Y2hpbmcgY29uc3QpOiBEb24ndCBzdHJldGNoIHdoZW4gb3ZlcnNjb3JsbC1iZWhhdmlvci15IGlz
ICJub25lIi4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnJlY29tcG9zaXRlQ2hhbmdlUmVxdWlyZXNHZW9tZXRyeVVwZGF0
ZSk6IFJldHVybiB0cnVlIHdoZW4gb3ZlcnNjcm9sbEJlaGF2aW9yIGlzIGNoYW5nZWQuCisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJvb3RPckJvZHlTdHlsZUNoYW5n
ZWQpOiBUaGUgcm9vdCBsYXllciBuZWVkcyBzZXROZWVkc0NvbXBvc2l0aW5nR2VvbWV0cnlVcGRh
dGUgd2hlbiBodG1sIG9yIGJvZHkncyBvdmVyc2Nyb2xsQmVoYXZpb3IgaXMgY2hhbmdlZC4KKyAg
ICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU3R5bGU6OmNoYW5nZVJlcXVpcmVzUmVjb21wb3NpdGVMYXllciBjb25zdCk6IFJl
dHVybiB0cnVlIHdoZW4gb3ZlcnNjcm9sbEJlaGF2aW9yIGlzIGNoYW5nZWQuCisKKzIwMjEtMDMt
MTUgIENhdGhpZSBDaGVuICA8Y2F0aGllY2hlbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFN1cHBv
cnQgQ1NTIG92ZXJzY3JvbGwtYmVoYXZpb3IgZm9yIHN5bmNocm9ub3VzIHNjcm9sbAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyOTY4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmFzZWQgb24gRnLDqWTD
qXJpYyBXYW5nJ3MgcGF0Y2guCisKKyAgICAgICAgVGhpcyBwYXRjaCBicmluZ3MgaW5pdGlhbCBz
dXBwb3J0IG9mIENTUyBwcm9wZXJ0eSBvdmVyc2Nyb2xsLWJlaGF2aW9yLiBPdmVyc2Nyb2xsLWJl
aGF2aW9yIHNldHMgd2hhdAorICAgICAgICB0aGUgYnJvd3NlciBkb2VzIHdoZW4gcmVhY2hpbmcg
dGhlIGJvdW5kYXJ5IG9mIGEgc2Nyb2xsaW5nIGFyZWEuIEZpcmVmb3ggYW5kIENocm9taXVtLXZh
cmlhbnQgYnJvd3NlcnMKKyAgICAgICAgYWxyZWFkeSBzdXBwb3J0IGl0LiBJdHMgc3BlY2lmaWNh
dGlvbiBjYW4gYmUgZm91bmQgYXQgaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1vdmVyc2Ny
b2xsLTEvI292ZXJzY3JvbGwtYmVoYXZpb3ItcHJvcGVydGllcworICAgICAgICBUaGlzIHBhdGNo
IGFpbXMgdG8gc3VwcG9ydCBpdCBmb3IgdGhlIHN5bmNocm9ub3VzIHNjcm9sbC4gVGhlIGFzeW5j
aHJvbm91cyBzY3JvbGwgb24gTWFjIHdpbGwgYmUgY292ZXJlZCBsYXRlci4KKworICAgICAgICBB
Y2NvcmRpbmcgdG8gdGhlIHZhbHVlIG9mIG92ZXJzY3JvbGwtYmVoYXZpb3IsIHRoaXMgcGF0Y2gg
Y29udHJvbHMgdGhlIHNjcm9sbCBjaGFpbmluZywgdGhlIHNjcm9sbCBzdHJldGNoLAorICAgICAg
ICBhbmQgc3dpcGUgZ2VzdHVyZXMgZ2VuZXJhdGlvbiBvZiB0aGUgc3luY2hyb25vdXMgc2Nyb2xs
LiBUbyBjb250cm9sIHRoZSBzY3JvbGwgY2hhaW5pbmcsCisgICAgICAgIG1fc2Nyb2xsQ2hhaW5p
bmdCbG9ja2VyIGlzIGFkZGVkIHRvIEV2ZW50SGFubGRlciwgaXQgaXMgZ2VuZXJhdGVkIGFjY29y
ZGluZyB0byBvdmVyc2Nyb2xsLWJlaGF2aW9yIHZhbHVlcy4KKyAgICAgICAgSXQgaW5kaWNhdGVz
IHdoZXRoZXIgdGhlIHNjcm9sbCBjaGFpbmluZyBvZiB0aGlzIGZyYW1lIHNob3VsZCBiZSBzdG9w
cGVkIG9yIG5vdC4KKyAgICAgICAgVGhlIHNjcm9sbCBjaGFpbmluZyBpcyBoYW5kbGVkIGRpZmZl
cmVudGx5IGJ5IFdIRUVMX0VWRU5UX0xBVENISU5HIHNldHRpbmcuIElmIFdIRUVMX0VWRU5UX0xB
VENISU5HIGlzIG9mZiwKKyAgICAgICAgdGhlIHNjcm9sbCBjaGFpbmluZyBpcyBoYW5kbGVkIGRp
cmVjdGx5IGluIEV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudEluQXBwcm9wcmlhdGVFbmNs
b3NpbmdCb3goKS4KKyAgICAgICAgSWYgV0hFRUxfRVZFTlRfTEFUQ0hJTkcgaXMgb24sIHRoZSBs
YXRjaGVkIHNjcm9sbCB0YXJnZXQgaXMgYWx3YXlzIEZyYW1lVmlldyBpZiBpdCBuZWVkcyB0byBz
dG9wIHRoZSBzY3JvbGwgY2hhaW5pbmcuCisgICAgICAgIElmIGN1cnJlbnQgZnJhbWUgaXMgYSBz
dWJmcmFtZSwgdGhlIHZhbHVlIG9mIG1fc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIHdpbGwgYmUgcGFz
c2VkIHRvIGl0cyBwYXJlbnQgZnJhbWUuCisgICAgICAgIEFuZCBldmVudHVhbGx5LCBsZXQgdGhl
IG1haW5mcmFtZSBoYW5kbGUgbV9zY3JvbGxDaGFpbmluZ0Jsb2NrZXIuIFRoZSBtYWluZnJhbWUg
YmxvY2tzIHZlcnRpY2FsIHNjcm9sbCBjaGFpbmluZyBkaXJlY3RseSwKKyAgICAgICAgYW5kIGhv
cml6b250YWxseSBpdCB3aWxsIGxldCB0aGUgdmlld3MgZGVjaWRlIHdoZXRoZXIgaXQgc2hvdWxk
IGdlbmVyYXRlIHN3aXBlIGdlc3R1cmVzIG9yIG5vdC4KKyAgICAgICAgQWJvdXQgdGhlIHNjcm9s
bCBzdHJldGNoLCBpdCBpcyBjYW5jZWxlZCBpZiB0aGUgdmFsdWUgb2Ygb3ZlcnNjcm9sbC1iZWhh
dmlvciBpcyBub25lLgorCisgICAgICAgIFRlc3RzOiBmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9s
bC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9z
Y3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUuaHRtbAorICAg
ICAgICAgICAgICAgZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlv
ci11bnNjcm9sbGFibGUtZWxlbWVudC5odG1sCisgICAgICAgICAgICAgICBmYXN0L3Njcm9sbGlu
Zy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUuaHRt
bAorCisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
dXBkYXRlUGFyZW50RnJhbWVTY3JvbGxDaGFpbmluZ0Jsb2NrZXIpOiBVcGRhdGUgbV9zY3JvbGxD
aGFpbmluZ0Jsb2NrZXIgZm9yIHBhcmVudCBmcmFtZS4KKyAgICAgICAgKFdlYkNvcmU6OmNoZWNr
U2Nyb2xsQ2hhaW5pbmdCbG9ja2VyRm9yRnJhbWVWaWV3KTogQ2hlY2sgaWYgbV9zY3JvbGxDaGFp
bmluZ0Jsb2NrZXIgYmxvY2tzIHRoZSBzY3JvbGwgY2hhaW5pbmcgb24gRnJhbWVWaWV3LAorICAg
ICAgICBkZWFsIHdpdGggaG9yaXpvbnRhbCBhbmQgdmVydGljYWwgc2Nyb2xsIGNoYWluaW5nIGRp
ZmZlcmVudGx5LCBhbmQgdXBkYXRlIHRoZSBkZWx0YSBvZiBXaGVlbEV2ZW50IGlmIGl0IGRvZXNu
J3QgYmxvY2sgdGhlIHNjcm9sbCBjaGFpbmluZy4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFu
ZGxlcjo6aGFuZGxlV2hlZWxFdmVudEludGVybmFsKTogSWYgaXQncyBtYWluIGZyYW1lLCBibG9j
ayBzY3JvbGwgY2hhaW5pbmcgYnkgdGhlIHZhbHVlIG9mIG1fc2Nyb2xsQ2hhaW5pbmdCbG9ja2Vy
LgorICAgICAgICBJZiBpdCdzIHN1YmZyYW1lLCBwYXNzIG1fc2Nyb2xsQ2hhaW5pbmdCbG9ja2Vy
IHZhbHVlIHRvIHBhcmVudCBmcmFtZS4gCisgICAgICAgIChXZWJDb3JlOjpkaWRTY3JvbGxJblNj
cm9sbGFibGVBcmVhKTogRmlsdGVyIHRoZSBzY3JvbGwgZGVsdGEgYnkgdGhlIFNjcm9sbENoYWlu
aW5nQmxvY2tlciB2YWx1ZS4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxl
V2hlZWxFdmVudEluQXBwcm9wcmlhdGVFbmNsb3NpbmdCb3gpOiBCbG9jayBzY3JvbGwgY2hhaW5p
bmcgYWNjb3JkaW5nIHRvIHRoZSB2YWx1ZSBvZiBtX3Njcm9sbENoYWluaW5nQmxvY2tlci4KKyAg
ICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6dXBkYXRlU2Nyb2xsQ2hhaW5pbmdCbG9ja2Vy
KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6cmVzZXRTY3JvbGxDaGFpbmluZ0Js
b2NrZXIpOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmg6CisgICAgICAgICogcGFnZS9G
cmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojpob3Jpem9udGFsT3Zl
cnNjcm9sbEJlaGF2aW9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6dmVy
dGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IgY29uc3QpOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3
Lmg6CisgICAgICAgICogcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6ZmluZEVuY2xvc2luZ1Njcm9sbGFibGVDb250YWluZXIpOiBVcGRhdGUgdGhlIHZhbHVl
IG9mIFNjcm9sbENoYWluaW5nQmxvY2tlciBhbmQgcmV0dXJuIG51bGwgaWYgc2hvdWxkQmxvY2tT
Y3JvbGxDaGFpbmluZygpLgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpkZXRlcm1p
bmVXaGVlbEV2ZW50VGFyZ2V0KTogSWYgc2hvdWxkQmxvY2tTY3JvbGxDaGFpbmluZygpLCBGcmFt
ZVZpZXcgd2lsbCBiZSB0aGUgbGF0Y2hlZCBzY3JvbGwgdGFyZ2V0LgorICAgICAgICAqIHBsYXRm
b3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1XaGVl
bEV2ZW50Ojp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbCk6IE1vdmVkIGZyb20gU2Ny
b2xsQ29udHJvbGxlci5tbQorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFR5cGVzLmg6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxDaGFpbmluZ0Jsb2NrZXI6OnNob3VsZEJsb2NrU2Nyb2xsQ2hh
aW5pbmcpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQ2hhaW5pbmdCbG9ja2VyOjpmaWx0ZXJE
ZWx0YSk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWE6OnVwZGF0ZVNjcm9sbENoYWluaW5nQmxvY2tlclN0YXRl
IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWE6Omhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWE6OnZlcnRpY2FsT3ZlcnNjcm9s
bEJlaGF2aW9yIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JN
YWMubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck1hYzo6c2hvdWxkRm9yd2Fy
ZFdoZWVsRXZlbnRzVG9QYXJlbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5p
bWF0b3JNYWM6OmFsbG93c1ZlcnRpY2FsU3RyZXRjaGluZyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxBbmltYXRvck1hYzo6YWxsb3dzSG9yaXpvbnRhbFN0cmV0Y2hpbmcgY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxDb250cm9sbGVyLm1tOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsQ29udHJvbGxlcjo6ZGlyZWN0aW9uRnJvbUV2ZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbENvbnRyb2xsZXI6OndoZWVsRGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRp
Y2FsKTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxl
QXJlYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllclNjcm9sbGFibGVBcmVhOjpo
b3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxheWVyU2Nyb2xsYWJsZUFyZWE6OnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yIGNvbnN0
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5oOgorCiAy
MDIxLTAzLTE1ICBJbWFub2wgRmVybmFuZGV6ICA8aWZlcm5hbmRlekBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFNwbGl0IFdlYlhSIGZlYXR1cmVzIGludG8gZW5hYmxlZEZlYXR1cmVzLCBzdXBwb3J0
ZWRGZWF0dXJlcyBhbmQgcmVxdWVzdGVkRmVhdHVyZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5k
bGVyLmNwcAppbmRleCAyZjE4ZTFlZWU5Li5lYTQxMjA2NjQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9F
dmVudEhhbmRsZXIuY3BwCkBAIC0yODU3LDYgKzI4NTcsNTYgQEAgYm9vbCBFdmVudEhhbmRsZXI6
OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBP
cHRpb24KICAgICByZXR1cm4gaGFuZGxlZDsKIH0KIAorI2lmIEVOQUJMRShXSEVFTF9FVkVOVF9M
QVRDSElORykKK3N0YXRpYyB2b2lkIHVwZGF0ZVBhcmVudEZyYW1lU2Nyb2xsQ2hhaW5pbmdCbG9j
a2VyKGNvbnN0IFNjcm9sbGFibGVBcmVhKiBzY3JvbGxhYmxlQXJlYSwgRnJhbWUmIGZyYW1lLCBT
Y3JvbGxDaGFpbmluZ0Jsb2NrZXImIGJsb2NrZXIpCit7CisgICAgYXV0byogcGFyZW50ID0gZnJh
bWUudHJlZSgpLnBhcmVudCgpOworICAgIGlmICghc2Nyb2xsYWJsZUFyZWEpCisgICAgICAgIHNj
cm9sbGFibGVBcmVhID0gZnJhbWUudmlldygpOworICAgIGlmICghZnJhbWUucGFnZSgpIHx8ICFw
YXJlbnQgfHwgIXNjcm9sbGFibGVBcmVhKQorICAgICAgICByZXR1cm47CisgICAgc2Nyb2xsYWJs
ZUFyZWEtPnVwZGF0ZVNjcm9sbENoYWluaW5nQmxvY2tlclN0YXRlKGJsb2NrZXIpOworICAgIHBh
cmVudC0+ZXZlbnRIYW5kbGVyKCkudXBkYXRlU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKGJsb2NrZXIp
OworfQorCitzdGF0aWMgYm9vbCBjaGVja1Njcm9sbENoYWluaW5nQmxvY2tlckZvckZyYW1lVmll
dyhjb25zdCBTY3JvbGxhYmxlQXJlYSogc2Nyb2xsYWJsZUFyZWEsIEZyYW1lJiBmcmFtZSwgUGxh
dGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBTY3JvbGxDaGFpbmluZ0Jsb2NrZXIgc2Nyb2xs
Q2hhaW5pbmdCbG9ja2VyLCBib29sJiBoYW5kbGVkRXZlbnQpCit7CisgICAgaWYgKCFzY3JvbGxh
YmxlQXJlYSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKHNjcm9sbGFibGVBcmVh
ICE9IGZyYW1lLnZpZXcoKSkgeworICAgICAgICAvLyBXaGVlbCBldmVudCBpcyBnb2luZyB0byBi
ZSBoYW5kbGVkIGJ5IEZyYW1lVmlldyBpbiBwcm9jZXNzV2hlZWxFdmVudEZvclNjcm9sbGluZygp
LAorICAgICAgICAvLyBzaG91bGQgbGV0IHNjcm9sbGFibGVBcmVhJ3Mgb3ZlcnNjcm9sbC1iZWhh
dmlvciBlZmZlY3QgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLgorICAgICAgICBzY3JvbGxhYmxlQXJl
YS0+dXBkYXRlU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyU3RhdGUoc2Nyb2xsQ2hhaW5pbmdCbG9ja2Vy
KTsKKyAgICB9CisKKyAgICBGbG9hdFNpemUgZmlsdGVyZWREZWx0YSh3aGVlbEV2ZW50LmRlbHRh
WCgpLCB3aGVlbEV2ZW50LmRlbHRhWSgpKTsKKyAgICBhdXRvIGJpYXNlZERlbHRhID0gUGxhdGZv
cm1XaGVlbEV2ZW50Ojp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbChmaWx0ZXJlZERl
bHRhKTsKKyAgICBpZiAoc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLmJsb2NrWCAmJiAhYmlhc2VkRGVs
dGEuaGVpZ2h0KCkpIHsKKyAgICAgICAgLy8gSWYgdGhlIGhvcml6b250YWwgc2Nyb2xsIGNoYWlu
aW5nIGlzIGJsb2NrZWQgYnkgb3ZlcnNjcm9sbC1iZWhhdmlvciBpbiBhIHN1YmZyYW1lLgorICAg
ICAgICAvLyBJdCBwcm9wYWdhdGVzIGl0cyBTY3JvbGxDaGFpbmluZ0Jsb2NrZXIgdG8gcGFyZW50
IGZyYW1lcyBhbmQgZXZlbnR1YWxseSBsZXQgbWFpbmZyYW1lCisgICAgICAgIC8vIGRlY2lkZSB3
aGV0aGVyIG5lZWQgdG8gdHJpZ2dlciBhIHN3aXBlIGdlc3R1cmUgb3Igbm90LgorICAgICAgICBp
ZiAoZnJhbWUuaXNNYWluRnJhbWUoKSkgeworICAgICAgICAgICAgLy8gSW4gbWFpbiBmcmFtZSwg
dHJpZ2dlciB0aGUgc3dpcGUgZ2VzdHVyZSBpZiBuZWVkZWQuCisgICAgICAgICAgICBoYW5kbGVk
RXZlbnQgPSAhYmlhc2VkRGVsdGEud2lkdGgoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIHVwZGF0ZVBhcmVudEZyYW1lU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKHNjcm9sbGFibGVBcmVh
LCBmcmFtZSwgc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKTsKKyAgICAgICAgICAgIGhhbmRsZWRFdmVu
dCA9IGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAg
IGlmIChTY3JvbGxDaGFpbmluZ0Jsb2NrZXI6OnNob3VsZEJsb2NrU2Nyb2xsQ2hhaW5pbmcoc2Ny
b2xsQ2hhaW5pbmdCbG9ja2VyLCBiaWFzZWREZWx0YSkpIHsKKyAgICAgICAgaGFuZGxlZEV2ZW50
ID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgU2Nyb2xsQ2hhaW5p
bmdCbG9ja2VyOjpmaWx0ZXJEZWx0YShzY3JvbGxDaGFpbmluZ0Jsb2NrZXIsIGJpYXNlZERlbHRh
LCBmaWx0ZXJlZERlbHRhKTsKKyAgICB3aGVlbEV2ZW50ID0gd2hlZWxFdmVudC5jb3B5V2l0aERl
bHRhc0FuZFZlbG9jaXR5KGZpbHRlcmVkRGVsdGEud2lkdGgoKSwgZmlsdGVyZWREZWx0YS5oZWln
aHQoKSwgd2hlZWxFdmVudC5zY3JvbGxpbmdWZWxvY2l0eSgpKTsKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisjZW5kaWYKKwogYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnRJbnRlcm5h
bChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50LCBPcHRpb25TZXQ8V2hlZWxFdmVudFBy
b2Nlc3NpbmdTdGVwcz4gcHJvY2Vzc2luZ1N0ZXBzLCBPcHRpb25TZXQ8RXZlbnRIYW5kbGluZz4m
IGhhbmRsaW5nKQogewogICAgIGF1dG8qIGRvY3VtZW50ID0gbV9mcmFtZS5kb2N1bWVudCgpOwpA
QCAtMjg4OSw2ICsyOTM5LDggQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnRJ
bnRlcm5hbChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50LCBPcHQKICAgICBhdXRvIGRl
ZmVycmVyID0gV2hlZWxFdmVudFRlc3RNb25pdG9yQ29tcGxldGlvbkRlZmVycmVyIHsgbW9uaXRv
ci5nZXQoKSwgdGhpcywgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpEZWZlclJlYXNvbjo6SGFuZGxp
bmdXaGVlbEV2ZW50T25NYWluVGhyZWFkIH07CiAjZW5kaWYKIAorICAgIHJlc2V0U2Nyb2xsQ2hh
aW5pbmdCbG9ja2VyKCk7CisKICAgICBtX2lzSGFuZGxpbmdXaGVlbEV2ZW50ID0gdHJ1ZTsKICAg
ICBhdXRvIGFsbG93c1Njcm9sbGluZ1N0YXRlID0gU2V0Rm9yU2NvcGUobV9jdXJyZW50V2hlZWxF
dmVudEFsbG93c1Njcm9sbGluZywgcHJvY2Vzc2luZ1N0ZXBzLmNvbnRhaW5zKFdoZWVsRXZlbnRQ
cm9jZXNzaW5nU3RlcHM6Ok1haW5UaHJlYWRGb3JTY3JvbGxpbmcpKTsKICAgICAKQEAgLTI5MTMs
MTEgKzI5NjUsMTkgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnRJbnRlcm5h
bChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50LCBPcHQKICAgICAvLyBpdHNlbGYgZmlu
ZHMgYW5kIHRyaWVzIHRvIHNjcm9sbCBvdmVyZmxvdyBzY3JvbGxlcnMuCiAgICAgZGV0ZXJtaW5l
V2hlZWxFdmVudFRhcmdldChldmVudCwgZWxlbWVudCwgc2Nyb2xsYWJsZUFyZWEsIGlzT3Zlcldp
ZGdldCk7CiAKKyAgICBhdXRvIG9sZEJsb2NrZXIgPSBtX3Njcm9sbENoYWluaW5nQmxvY2tlcjsK
ICAgICBpZiAoZWxlbWVudCkgewogICAgICAgICBpZiAoaXNPdmVyV2lkZ2V0KSB7CiAgICAgICAg
ICAgICBpZiAoV2Vha1B0cjxXaWRnZXQ+IHdpZGdldCA9IHdpZGdldEZvckVsZW1lbnQoKmVsZW1l
bnQpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHBhc3NXaGVlbEV2ZW50VG9XaWRnZXQoZXZlbnQs
ICp3aWRnZXQuZ2V0KCksIHByb2Nlc3NpbmdTdGVwcykpCiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBjb21wbGV0ZVdpZGdldFdoZWVsRXZlbnQoZXZlbnQsIHdpZGdldCwgc2Nyb2xsYWJsZUFy
ZWEpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKG1fc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLmJs
b2NrWCAhPSBvbGRCbG9ja2VyLmJsb2NrWCB8fCBtX3Njcm9sbENoYWluaW5nQmxvY2tlci5ibG9j
a1kgIT0gb2xkQmxvY2tlci5ibG9ja1kpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gSWYgbV9z
Y3JvbGxDaGFpbmluZ0Jsb2NrZXIgaXMgY2hhbmdlZCBpbiBzdWJmcmFtZXMsIHRoZSBsYWNoZWQg
c3RhdGUgc2hvdWxkIGJlIGNhbGN1bGF0ZWQgYWdhaW4uCisgICAgICAgICAgICAgICAgICAgIGlm
IChldmVudC5pc0dlc3R1cmVTdGFydCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjbGVh
ckxhdGNoZWRTdGF0ZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgZGV0ZXJtaW5lV2hlZWxF
dmVudFRhcmdldChldmVudCwgZWxlbWVudCwgc2Nyb2xsYWJsZUFyZWEsIGlzT3ZlcldpZGdldCk7
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KIApAQCAtMjk0OSwxMiArMzAwOSwyOSBAQCBib29sIEV2ZW50SGFuZGxlcjo6
aGFuZGxlV2hlZWxFdmVudEludGVybmFsKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgZXZlbnQs
IE9wdAogI2lmIEVOQUJMRShXSEVFTF9FVkVOVF9MQVRDSElORykKICAgICBpZiAoYWxsb3dTY3Jv
bGxpbmcpCiAgICAgICAgIGFsbG93U2Nyb2xsaW5nID0gbV9mcmFtZS5wYWdlKCktPnNjcm9sbExh
dGNoaW5nQ29udHJvbGxlcigpLmxhdGNoaW5nQWxsb3dzU2Nyb2xsaW5nSW5GcmFtZShtX2ZyYW1l
LCBzY3JvbGxhYmxlQXJlYSk7CisgICAgaWYgKCEoYWxsb3dTY3JvbGxpbmcgfHwgbV9mcmFtZS5p
c01haW5GcmFtZSgpKSkKKyAgICAgICAgdXBkYXRlUGFyZW50RnJhbWVTY3JvbGxDaGFpbmluZ0Js
b2NrZXIoc2Nyb2xsYWJsZUFyZWEuZ2V0KCksIG1fZnJhbWUsIG1fc2Nyb2xsQ2hhaW5pbmdCbG9j
a2VyKTsKICNlbmRpZgogCiAgICAgaWYgKGFsbG93U2Nyb2xsaW5nKSB7Ci0gICAgICAgIC8vIEZJ
WE1FOiBwcm9jZXNzV2hlZWxFdmVudEZvclNjcm9sbGluZygpIGlzIG9ubHkgY2FsbGVkIGZvciBG
cmFtZVZpZXcgc2Nyb2xsaW5nLCBub3Qgb3ZlcmZsb3cgc2Nyb2xsaW5nLCB3aGljaCBpcyBjb25m
dXNpbmcuCi0gICAgICAgIGhhbmRsZWRFdmVudCA9IHByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xs
aW5nKGV2ZW50LCBzY3JvbGxhYmxlQXJlYSwgaGFuZGxpbmcpOwotICAgICAgICBwcm9jZXNzV2hl
ZWxFdmVudEZvclNjcm9sbFNuYXAoZXZlbnQsIHNjcm9sbGFibGVBcmVhKTsKKyAgICAgICAgUGxh
dGZvcm1XaGVlbEV2ZW50IGFkanVzdGVkV2hlZWxFdmVudCA9IFBsYXRmb3JtV2hlZWxFdmVudChl
dmVudCk7CisgICAgICAgIGJvb2wgc2Nyb2xsQ2hhaW5pbmdTdG9wcGVkID0gZmFsc2U7CisjaWYg
RU5BQkxFKFdIRUVMX0VWRU5UX0xBVENISU5HKQorICAgICAgICBzY3JvbGxDaGFpbmluZ1N0b3Bw
ZWQgPSBjaGVja1Njcm9sbENoYWluaW5nQmxvY2tlckZvckZyYW1lVmlldyhzY3JvbGxhYmxlQXJl
YS5nZXQoKSwgbV9mcmFtZSwgYWRqdXN0ZWRXaGVlbEV2ZW50LCBtX3Njcm9sbENoYWluaW5nQmxv
Y2tlciwgaGFuZGxlZEV2ZW50KTsKKyNlbmRpZgorICAgICAgICBpZiAoIXNjcm9sbENoYWluaW5n
U3RvcHBlZCkgeworICAgICAgICAgICAgLy8gRklYTUU6IHByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Ny
b2xsaW5nKCkgaXMgb25seSBjYWxsZWQgZm9yIEZyYW1lVmlldyBzY3JvbGxpbmcsIG5vdCBvdmVy
ZmxvdyBzY3JvbGxpbmcsIHdoaWNoIGlzIGNvbmZ1c2luZy4KKyAgICAgICAgICAgIGhhbmRsZWRF
dmVudCA9IHByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKGFkanVzdGVkV2hlZWxFdmVudCwg
c2Nyb2xsYWJsZUFyZWEsIGhhbmRsaW5nKTsKKyAgICAgICAgICAgIHByb2Nlc3NXaGVlbEV2ZW50
Rm9yU2Nyb2xsU25hcChhZGp1c3RlZFdoZWVsRXZlbnQsIHNjcm9sbGFibGVBcmVhKTsKKyAgICAg
ICAgfQorI2lmICFFTkFCTEUoV0hFRUxfRVZFTlRfTEFUQ0hJTkcpCisgICAgICAgIGlmIChhdXRv
KiB2aWV3ID0gbV9mcmFtZS52aWV3KCkpIHsKKyAgICAgICAgICAgIGlmICghaGFuZGxlZEV2ZW50
KSB7CisgICAgICAgICAgICAgICAgYXV0byBiaWFzZWREZWx0YSA9IFBsYXRmb3JtV2hlZWxFdmVu
dDo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoYWRqdXN0ZWRXaGVlbEV2ZW50LmRl
bHRhKCkpOworICAgICAgICAgICAgICAgIGhhbmRsZWRFdmVudCA9IFNjcm9sbENoYWluaW5nQmxv
Y2tlcjo6c2hvdWxkQmxvY2tTY3JvbGxDaGFpbmluZyhtX3Njcm9sbENoYWluaW5nQmxvY2tlciwg
Ymlhc2VkRGVsdGEpOworICAgICAgICAgICAgfQorICAgICAgICB9CisjZW5kaWYKICAgICB9CiAK
ICAgICByZXR1cm4gaGFuZGxlZEV2ZW50OwpAQCAtMjk3MSwyMCArMzA0OCwyMyBAQCBzdGF0aWMg
dm9pZCBoYW5kbGVXaGVlbEV2ZW50UGhhc2VJblNjcm9sbGFibGVBcmVhKFNjcm9sbGFibGVBcmVh
JiBzY3JvbGxhYmxlQXJlYQogI2VuZGlmCiB9CiAKLXN0YXRpYyBib29sIGRpZFNjcm9sbEluU2Ny
b2xsYWJsZUFyZWEoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhLCBjb25zdCBXaGVlbEV2
ZW50JiB3aGVlbEV2ZW50KQorc3RhdGljIGJvb2wgZGlkU2Nyb2xsSW5TY3JvbGxhYmxlQXJlYShT
Y3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEsIGNvbnN0IFdoZWVsRXZlbnQmIHdoZWVsRXZl
bnQsIGNvbnN0IFNjcm9sbENoYWluaW5nQmxvY2tlciYgYmxvY2tlcikKIHsKKyAgICBGbG9hdFNp
emUgZmlsdGVyZWREZWx0YSh3aGVlbEV2ZW50LmRlbHRhWCgpLCB3aGVlbEV2ZW50LmRlbHRhWSgp
KTsKKyAgICBhdXRvIGJpYXNlZERlbHRhID0gUGxhdGZvcm1XaGVlbEV2ZW50Ojp3aGVlbERlbHRh
Qmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbChmaWx0ZXJlZERlbHRhKTsKKyAgICBTY3JvbGxDaGFpbmlu
Z0Jsb2NrZXI6OmZpbHRlckRlbHRhKGJsb2NrZXIsIGJpYXNlZERlbHRhLCBmaWx0ZXJlZERlbHRh
KTsKICAgICBTY3JvbGxHcmFudWxhcml0eSBzY3JvbGxHcmFudWxhcml0eSA9IHdoZWVsR3JhbnVs
YXJpdHlUb1Njcm9sbEdyYW51bGFyaXR5KHdoZWVsRXZlbnQuZGVsdGFNb2RlKCkpOwogICAgIGJv
b2wgZGlkSGFuZGxlV2hlZWxFdmVudCA9IGZhbHNlOwotICAgIGlmIChmbG9hdCBhYnNvbHV0ZURl
bHRhID0gc3RkOjphYnMod2hlZWxFdmVudC5kZWx0YVgoKSkpCi0gICAgICAgIGRpZEhhbmRsZVdo
ZWVsRXZlbnQgfD0gc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsKHdoZWVsRXZlbnQuZGVsdGFYKCkgPiAw
ID8gU2Nyb2xsUmlnaHQgOiBTY3JvbGxMZWZ0LCBzY3JvbGxHcmFudWxhcml0eSwgYWJzb2x1dGVE
ZWx0YSk7CisgICAgaWYgKGZsb2F0IGFic29sdXRlRGVsdGEgPSBzdGQ6OmFicyhmaWx0ZXJlZERl
bHRhLndpZHRoKCkpKQorICAgICAgICBkaWRIYW5kbGVXaGVlbEV2ZW50IHw9IHNjcm9sbGFibGVB
cmVhLnNjcm9sbChmaWx0ZXJlZERlbHRhLndpZHRoKCkgPiAwID8gU2Nyb2xsUmlnaHQgOiBTY3Jv
bGxMZWZ0LCBzY3JvbGxHcmFudWxhcml0eSwgYWJzb2x1dGVEZWx0YSk7CiAKLSAgICBpZiAoZmxv
YXQgYWJzb2x1dGVEZWx0YSA9IHN0ZDo6YWJzKHdoZWVsRXZlbnQuZGVsdGFZKCkpKQotICAgICAg
ICBkaWRIYW5kbGVXaGVlbEV2ZW50IHw9IHNjcm9sbGFibGVBcmVhLnNjcm9sbCh3aGVlbEV2ZW50
LmRlbHRhWSgpID4gMCA/IFNjcm9sbERvd24gOiBTY3JvbGxVcCwgc2Nyb2xsR3JhbnVsYXJpdHks
IGFic29sdXRlRGVsdGEpOworICAgIGlmIChmbG9hdCBhYnNvbHV0ZURlbHRhID0gc3RkOjphYnMo
ZmlsdGVyZWREZWx0YS5oZWlnaHQoKSkpCisgICAgICAgIGRpZEhhbmRsZVdoZWVsRXZlbnQgfD0g
c2Nyb2xsYWJsZUFyZWEuc2Nyb2xsKGZpbHRlcmVkRGVsdGEuaGVpZ2h0KCkgPiAwID8gU2Nyb2xs
RG93biA6IFNjcm9sbFVwLCBzY3JvbGxHcmFudWxhcml0eSwgYWJzb2x1dGVEZWx0YSk7CiAKICAg
ICByZXR1cm4gZGlkSGFuZGxlV2hlZWxFdmVudDsKIH0KIAotYm9vbCBFdmVudEhhbmRsZXI6Omhh
bmRsZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94KE5vZGUqIHN0YXJ0Tm9kZSwg
Y29uc3QgV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJlZFBs
YXRmb3JtRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyZWRWZWxvY2l0eSwgT3B0aW9uU2V0
PEV2ZW50SGFuZGxpbmc+IGV2ZW50SGFuZGxpbmcpCitib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxl
V2hlZWxFdmVudEluQXBwcm9wcmlhdGVFbmNsb3NpbmdCb3goTm9kZSogc3RhcnROb2RlLCBjb25z
dCBXaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBGbG9hdFNpemUmIGZpbHRlcmVkUGxhdGZvcm1EZWx0
YSwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJlZFZlbG9jaXR5LCBPcHRpb25TZXQ8RXZlbnRIYW5k
bGluZz4gZXZlbnRIYW5kbGluZykKIHsKICAgICBib29sIHNob3VsZEhhbmRsZUV2ZW50ID0gd2hl
ZWxFdmVudC5kZWx0YVgoKSB8fCB3aGVlbEV2ZW50LmRlbHRhWSgpOwogI2lmIEVOQUJMRShXSEVF
TF9FVkVOVF9MQVRDSElORykKQEAgLTMwMDYsMjEgKzMwODYsMjkgQEAgYm9vbCBFdmVudEhhbmRs
ZXI6OmhhbmRsZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94KE5vZGUqIHN0YXJ0
Tm9kZSwgY28KICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGlzPFJlbmRlckxpc3RC
b3g+KGluaXRpYWxFbmNsb3NpbmdCb3gpKQotICAgICAgICByZXR1cm4gZGlkU2Nyb2xsSW5TY3Jv
bGxhYmxlQXJlYShkb3duY2FzdDxSZW5kZXJMaXN0Qm94Pihpbml0aWFsRW5jbG9zaW5nQm94KSwg
d2hlZWxFdmVudCk7CisgICAgICAgIHJldHVybiBkaWRTY3JvbGxJblNjcm9sbGFibGVBcmVhKGRv
d25jYXN0PFJlbmRlckxpc3RCb3g+KGluaXRpYWxFbmNsb3NpbmdCb3gpLCB3aGVlbEV2ZW50LCBt
X3Njcm9sbENoYWluaW5nQmxvY2tlcik7CiAKKyAgICBhdXRvIGJpYXNlZERlbHRhID0gUGxhdGZv
cm1XaGVlbEV2ZW50Ojp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbChGbG9hdFNpemUo
d2hlZWxFdmVudC5kZWx0YVgoKSwgd2hlZWxFdmVudC5kZWx0YVkoKSkpOwogICAgIFJlbmRlckJv
eCogY3VycmVudEVuY2xvc2luZ0JveCA9ICZpbml0aWFsRW5jbG9zaW5nQm94OwogICAgIHdoaWxl
IChjdXJyZW50RW5jbG9zaW5nQm94KSB7CiAgICAgICAgIGlmIChhdXRvKiBib3hMYXllciA9IGN1
cnJlbnRFbmNsb3NpbmdCb3gtPmxheWVyKCkgPyBjdXJyZW50RW5jbG9zaW5nQm94LT5sYXllcigp
LT5zY3JvbGxhYmxlQXJlYSgpIDogbnVsbHB0cikgewogICAgICAgICAgICAgYXV0byBwbGF0Zm9y
bUV2ZW50ID0gd2hlZWxFdmVudC51bmRlcmx5aW5nUGxhdGZvcm1FdmVudCgpOwogICAgICAgICAg
ICAgYm9vbCBzY3JvbGxpbmdXYXNIYW5kbGVkOwogICAgICAgICAgICAgaWYgKHBsYXRmb3JtRXZl
bnQpIHsKKyAgICAgICAgICAgICAgICBTY3JvbGxDaGFpbmluZ0Jsb2NrZXI6OmZpbHRlckRlbHRh
KG1fc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLCBiaWFzZWREZWx0YSwgZmlsdGVyZWRQbGF0Zm9ybURl
bHRhKTsKICAgICAgICAgICAgICAgICBhdXRvIGNvcGllZEV2ZW50ID0gcGxhdGZvcm1FdmVudC0+
Y29weVdpdGhEZWx0YXNBbmRWZWxvY2l0eShmaWx0ZXJlZFBsYXRmb3JtRGVsdGEud2lkdGgoKSwg
ZmlsdGVyZWRQbGF0Zm9ybURlbHRhLmhlaWdodCgpLCBmaWx0ZXJlZFZlbG9jaXR5KTsKICAgICAg
ICAgICAgICAgICBzY3JvbGxpbmdXYXNIYW5kbGVkID0gaGFuZGxlV2hlZWxFdmVudEluU2Nyb2xs
YWJsZUFyZWEoY29waWVkRXZlbnQsICpib3hMYXllciwgZXZlbnRIYW5kbGluZyk7CiAgICAgICAg
ICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBzY3JvbGxpbmdXYXNIYW5kbGVkID0gZGlkU2Ny
b2xsSW5TY3JvbGxhYmxlQXJlYSgqYm94TGF5ZXIsIHdoZWVsRXZlbnQpOworICAgICAgICAgICAg
ICAgIHNjcm9sbGluZ1dhc0hhbmRsZWQgPSBkaWRTY3JvbGxJblNjcm9sbGFibGVBcmVhKCpib3hM
YXllciwgd2hlZWxFdmVudCwgbV9zY3JvbGxDaGFpbmluZ0Jsb2NrZXIpOwogCiAgICAgICAgICAg
ICBpZiAoc2Nyb2xsaW5nV2FzSGFuZGxlZCkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KworICAgICAgICAgICAgaWYgKGN1cnJlbnRFbmNsb3NpbmdCb3gtPmVsZW1lbnQoKSAhPSBjdXJy
ZW50RW5jbG9zaW5nQm94LT5kb2N1bWVudCgpLmRvY3VtZW50RWxlbWVudCgpKSB7CisgICAgICAg
ICAgICAgICAgYm94TGF5ZXItPnVwZGF0ZVNjcm9sbENoYWluaW5nQmxvY2tlclN0YXRlKG1fc2Ny
b2xsQ2hhaW5pbmdCbG9ja2VyKTsKKyAgICAgICAgICAgICAgICBpZiAoU2Nyb2xsQ2hhaW5pbmdC
bG9ja2VyOjpzaG91bGRCbG9ja1Njcm9sbENoYWluaW5nKG1fc2Nyb2xsQ2hhaW5pbmdCbG9ja2Vy
LCBiaWFzZWREZWx0YSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgY3VycmVudEVuY2xvc2luZ0JveCA9IGN1cnJl
bnRFbmNsb3NpbmdCb3gtPmNvbnRhaW5pbmdCbG9jaygpOwpAQCAtNDYzNCw0ICs0NzIyLDE1IEBA
IGJvb2wgRXZlbnRIYW5kbGVyOjpwYXNzTW91c2VNb3ZlRXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZl
bnRXaXRoSGl0VGVzdFJlc3VsdHMmIG1vCiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKSAm
JiAhUExBVEZPUk0oV0lOKQogCit2b2lkIEV2ZW50SGFuZGxlcjo6dXBkYXRlU2Nyb2xsQ2hhaW5p
bmdCbG9ja2VyKGNvbnN0IFNjcm9sbENoYWluaW5nQmxvY2tlciYgYmxvY2tlcikKK3sKKyAgICBt
X3Njcm9sbENoYWluaW5nQmxvY2tlci5ibG9ja1ggfD0gYmxvY2tlci5ibG9ja1g7CisgICAgbV9z
Y3JvbGxDaGFpbmluZ0Jsb2NrZXIuYmxvY2tZIHw9IGJsb2NrZXIuYmxvY2tZOworfQorCit2b2lk
IEV2ZW50SGFuZGxlcjo6cmVzZXRTY3JvbGxDaGFpbmluZ0Jsb2NrZXIoKQoreworICAgIG1fc2Ny
b2xsQ2hhaW5pbmdCbG9ja2VyID0geyBmYWxzZSwgZmFsc2UgfTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKaW5kZXggNWQwNDIwMzhiZi4u
NGI0N2ZhNjQ4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCkBAIC0yMTQsNiArMjE0
LDkgQEAgcHVibGljOgogICAgIHZvaWQgZGVmYXVsdFdoZWVsRXZlbnRIYW5kbGVyKE5vZGUqLCBX
aGVlbEV2ZW50Jik7CiAgICAgdm9pZCB3aGVlbEV2ZW50V2FzUHJvY2Vzc2VkQnlNYWluVGhyZWFk
KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIE9wdGlvblNldDxFdmVudEhhbmRsaW5nPik7CiAK
KyAgICB2b2lkIHVwZGF0ZVNjcm9sbENoYWluaW5nQmxvY2tlcihjb25zdCBTY3JvbGxDaGFpbmlu
Z0Jsb2NrZXImKTsKKyAgICB2b2lkIHJlc2V0U2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKCk7CisKICAg
ICBib29sIGhhbmRsZVBhc3RlR2xvYmFsU2VsZWN0aW9uKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVu
dCYpOwogCiAjaWYgRU5BQkxFKElPU19UT1VDSF9FVkVOVFMpIHx8IEVOQUJMRShJT1NfR0VTVFVS
RV9FVkVOVFMpCkBAIC00NzAsNyArNDczLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHByb2Nlc3NX
aGVlbEV2ZW50Rm9yU2Nyb2xsU25hcChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBjb25zdCBX
ZWFrUHRyPFNjcm9sbGFibGVBcmVhPiYpOwogICAgIGJvb2wgY29tcGxldGVXaWRnZXRXaGVlbEV2
ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIGNvbnN0IFdlYWtQdHI8V2lkZ2V0PiYsIGNv
bnN0IFdlYWtQdHI8U2Nyb2xsYWJsZUFyZWE+Jik7CiAKLSAgICBib29sIGhhbmRsZVdoZWVsRXZl
bnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94KE5vZGUqIHN0YXJ0Tm9kZSwgY29uc3QgV2hlZWxF
dmVudCYsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyZWRQbGF0Zm9ybURlbHRhLCBjb25zdCBGbG9h
dFNpemUmIGZpbHRlcmVkVmVsb2NpdHksIE9wdGlvblNldDxFdmVudEhhbmRsaW5nPik7CisgICAg
Ym9vbCBoYW5kbGVXaGVlbEV2ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2luZ0JveChOb2RlKiBzdGFy
dE5vZGUsIGNvbnN0IFdoZWVsRXZlbnQmLCBGbG9hdFNpemUmIGZpbHRlcmVkUGxhdGZvcm1EZWx0
YSwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJlZFZlbG9jaXR5LCBPcHRpb25TZXQ8RXZlbnRIYW5k
bGluZz4pOwogCiAgICAgYm9vbCBoYW5kbGVXaGVlbEV2ZW50SW5TY3JvbGxhYmxlQXJlYShjb25z
dCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBTY3JvbGxhYmxlQXJlYSYsIE9wdGlvblNldDxFdmVudEhh
bmRsaW5nPik7CiAgICAgT3B0aW9uYWw8V2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU+IHVwZGF0ZVdo
ZWVsR2VzdHVyZVN0YXRlKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIE9wdGlvblNldDxFdmVu
dEhhbmRsaW5nPik7CkBAIC02NDYsNiArNjQ5LDggQEAgcHJpdmF0ZToKICAgICBJbnRQb2ludCBt
X3RhcmdldEF1dG9zY3JvbGxQb3NpdGlvbkluVW5zY3JvbGxlZFJvb3RWaWV3Q29vcmRpbmF0ZXM7
CiAgICAgT3B0aW9uYWw8SW50UG9pbnQ+IG1faW5pdGlhbFRhcmdldEF1dG9zY3JvbGxQb3NpdGlv
bkluVW5zY3JvbGxlZFJvb3RWaWV3Q29vcmRpbmF0ZXM7CiAjZW5kaWYKKworICAgIFNjcm9sbENo
YWluaW5nQmxvY2tlciBtX3Njcm9sbENoYWluaW5nQmxvY2tlciB7IGZhbHNlLCBmYWxzZSB9Owog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmlu
ZGV4IDY4M2UzNmVmNTUuLmE2ODlkYjNkYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAK
QEAgLTQxOSw2ICs0MTksMjYgQEAgYm9vbCBGcmFtZVZpZXc6OmRpZEZpcnN0TGF5b3V0KCkgY29u
c3QKICAgICByZXR1cm4gbGF5b3V0Q29udGV4dCgpLmRpZEZpcnN0TGF5b3V0KCk7CiB9CiAKK092
ZXJzY3JvbGxCZWhhdmlvciBGcmFtZVZpZXc6Omhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3Io
KSBjb25zdAoreworICAgIGF1dG8qIGRvY3VtZW50ID0gZnJhbWUoKS5kb2N1bWVudCgpOworICAg
IGF1dG8gc2Nyb2xsaW5nT2JqZWN0ID0gZG9jdW1lbnQgJiYgZG9jdW1lbnQtPmRvY3VtZW50RWxl
bWVudCgpID8gZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpLT5yZW5kZXJlcigpIDogbnVsbHB0
cjsKKyAgICAvLyBBbiBlbGVtZW50IHRoYXQgaXMgbm90IHNjcm9sbCBjb250YWluZXIgbXVzdCBh
Y2NlcHQgYnV0IGlnbm9yZSB0aGUgdmFsdWVzIG9mIHRoaXMgcHJvcGVydHkuCisgICAgaWYgKHNj
cm9sbGluZ09iamVjdCAmJiByZW5kZXJWaWV3KCkgJiYgcmVuZGVyVmlldygpLT5jYW5CZVNjcm9s
bGVkQW5kSGFzU2Nyb2xsYWJsZUFyZWEoKSkKKyAgICAgICAgcmV0dXJuIHNjcm9sbGluZ09iamVj
dC0+c3R5bGUoKS5vdmVyc2Nyb2xsQmVoYXZpb3JYKCk7CisgICAgcmV0dXJuIFNjcm9sbGFibGVB
cmVhOjpob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCk7Cit9CisKK092ZXJzY3JvbGxCZWhh
dmlvciBGcmFtZVZpZXc6OnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgIGNvbnN0Cit7Cisg
ICAgYXV0byogZG9jdW1lbnQgPSBmcmFtZSgpLmRvY3VtZW50KCk7CisgICAgYXV0byBzY3JvbGxp
bmdPYmplY3QgPSBkb2N1bWVudCAmJiBkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCkgPyBkb2N1
bWVudC0+ZG9jdW1lbnRFbGVtZW50KCktPnJlbmRlcmVyKCkgOiBudWxscHRyOworICAgIC8vIEFu
IGVsZW1lbnQgdGhhdCBpcyBub3Qgc2Nyb2xsIGNvbnRhaW5lciBtdXN0IGFjY2VwdCBidXQgaWdu
b3JlIHRoZSB2YWx1ZXMgb2YgdGhpcyBwcm9wZXJ0eS4KKyAgICBpZiAoc2Nyb2xsaW5nT2JqZWN0
ICYmIHJlbmRlclZpZXcoKSAmJiByZW5kZXJWaWV3KCktPmNhbkJlU2Nyb2xsZWRBbmRIYXNTY3Jv
bGxhYmxlQXJlYSgpKQorICAgICAgICByZXR1cm4gc2Nyb2xsaW5nT2JqZWN0LT5zdHlsZSgpLm92
ZXJzY3JvbGxCZWhhdmlvclkoKTsKKyAgICByZXR1cm4gU2Nyb2xsYWJsZUFyZWE6OnZlcnRpY2Fs
T3ZlcnNjcm9sbEJlaGF2aW9yKCk7Cit9CisKIHZvaWQgRnJhbWVWaWV3OjppbnZhbGlkYXRlUmVj
dChjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIGlmICghcGFyZW50KCkpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lVmlldy5oCmluZGV4IGNlN2U5YTE2N2MuLmIxM2M3YjJiZGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuaApAQCAtNjgxLDYgKzY4MSw5IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBkZWJ1
Z0Rlc2NyaXB0aW9uKCkgY29uc3QgZmluYWw7CiAKKyAgICBPdmVyc2Nyb2xsQmVoYXZpb3IgaG9y
aXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpIGNvbnN0IGZpbmFsOworICAgIE92ZXJzY3JvbGxC
ZWhhdmlvciB2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpIGNvbnN0IGZpbmFsOworCiAgICAg
Ly8gU2Nyb2xsVmlldwogICAgIHZvaWQgdXBkYXRlU2Nyb2xsYmFyU3RlcHMoKSBvdmVycmlkZTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1t
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tCmluZGV4IDg2NDY1
ZjgwNWUuLjljZTYzOGQ1NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2
ZW50SGFuZGxlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRs
ZXJNYWMubW0KQEAgLTc5NywxMyArNzk3LDE4IEBAIHN0YXRpYyBTY3JvbGxhYmxlQXJlYSogc2Ny
b2xsYWJsZUFyZWFGb3JCb3goUmVuZGVyQm94JiBib3gpCiB9CiAKIC8vIEZJWE1FOiBUaGlzIGNv
dWxkIGJlIHdyaXR0ZW4gaW4gdGVybXMgb2YgU2Nyb2xsYWJsZUFyZWE6OmVuY2xvc2luZ1Njcm9s
bGFibGVBcmVhKCkuCi1zdGF0aWMgQ29udGFpbmVyTm9kZSogZmluZEVuY2xvc2luZ1Njcm9sbGFi
bGVDb250YWluZXIoQ29udGFpbmVyTm9kZSogbm9kZSwgY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50
JiB3aGVlbEV2ZW50KQorLy8gRG8gbm90IHVwZGF0ZSBtX3Njcm9sbENoYWluaW5nQmxvY2tlciBo
ZXJlLCB1cGRhdGUgaXQgaW4gRXZlbnRIYW5kbGVyOjpkZWZhdWx0V2hlZWxFdmVudEhhbmRsZXIg
bGF0ZXIgd2hlbiBwYXNzIEV2ZW50UGF0aCwKKy8vIG90aGVyd2lzZSB0aGUgV2hlZWxFdmVudCBk
ZWx0YSBvZiBlbGVtZW50IHdpdGggIW92ZXJzY3JvbGwtYmVoYXZpb3I6YXV0byB3aWxsIGJlIGNo
YW5nZWQuCitzdGF0aWMgQ29udGFpbmVyTm9kZSogZmluZEVuY2xvc2luZ1Njcm9sbGFibGVDb250
YWluZXIoQ29udGFpbmVyTm9kZSogbm9kZSwgY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVl
bEV2ZW50LCBTY3JvbGxDaGFpbmluZ0Jsb2NrZXImIHNjcm9sbENoYWluaW5nQmxvY2tlcikKIHsK
LSAgICBhdXRvIGJpYXNlZERlbHRhID0gU2Nyb2xsQ29udHJvbGxlcjo6d2hlZWxEZWx0YUJpYXNp
bmdUb3dhcmRzVmVydGljYWwod2hlZWxFdmVudCk7CisgICAgYXV0byBiaWFzZWREZWx0YSA9IFBs
YXRmb3JtV2hlZWxFdmVudDo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwod2hlZWxF
dmVudC5kZWx0YSgpKTsKIAogICAgIC8vIEZpbmQgdGhlIGZpcnN0IG5vZGUgd2l0aCBhIHZhbGlk
IHNjcm9sbGFibGUgYXJlYSBzdGFydGluZyB3aXRoIHRoZSBjdXJyZW50CiAgICAgLy8gbm9kZSBh
bmQgdHJhdmVyc2luZyBpdHMgcGFyZW50cyAob3Igc2hhZG93IGhvc3RzKS4KICAgICBmb3IgKENv
bnRhaW5lck5vZGUqIGNhbmRpZGF0ZSA9IG5vZGU7IGNhbmRpZGF0ZTsgY2FuZGlkYXRlID0gY2Fu
ZGlkYXRlLT5wYXJlbnRPclNoYWRvd0hvc3ROb2RlKCkpIHsKKyAgICAgICAgaWYgKFNjcm9sbENo
YWluaW5nQmxvY2tlcjo6c2hvdWxkQmxvY2tTY3JvbGxDaGFpbmluZyhzY3JvbGxDaGFpbmluZ0Js
b2NrZXIsIGJpYXNlZERlbHRhKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCiAgICAg
ICAgIGlmIChpczxIVE1MSUZyYW1lRWxlbWVudD4oKmNhbmRpZGF0ZSkpCiAgICAgICAgICAgICBj
b250aW51ZTsKIApAQCAtODEzLDcgKzgxOCw3IEBAIHN0YXRpYyBDb250YWluZXJOb2RlKiBmaW5k
RW5jbG9zaW5nU2Nyb2xsYWJsZUNvbnRhaW5lcihDb250YWluZXJOb2RlKiBub2RlLCBjb25zCiAg
ICAgICAgIFJlbmRlckJveCogYm94ID0gY2FuZGlkYXRlLT5yZW5kZXJCb3goKTsKICAgICAgICAg
aWYgKCFib3ggfHwgIWJveC0+Y2FuQmVTY3JvbGxlZEFuZEhhc1Njcm9sbGFibGVBcmVhKCkpCiAg
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgCisKICAgICAgICAgYXV0byogc2Nyb2xsYWJs
ZUFyZWEgPSBzY3JvbGxhYmxlQXJlYUZvckJveCgqYm94KTsKICAgICAgICAgaWYgKCFzY3JvbGxh
YmxlQXJlYSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtODI2LDggKzgzMSwxMSBAQCBzdGF0
aWMgQ29udGFpbmVyTm9kZSogZmluZEVuY2xvc2luZ1Njcm9sbGFibGVDb250YWluZXIoQ29udGFp
bmVyTm9kZSogbm9kZSwgY29ucwogCiAgICAgICAgIGlmIChiaWFzZWREZWx0YS53aWR0aCgpICYm
ICFzY3JvbGxhYmxlQXJlYS0+aXNQaW5uZWRGb3JTY3JvbGxEZWx0YU9uQXhpcygtYmlhc2VkRGVs
dGEud2lkdGgoKSwgU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsKSkKICAgICAgICAgICAgIHJl
dHVybiBjYW5kaWRhdGU7CisKKyAgICAgICAgaWYgKGNhbmRpZGF0ZSAhPSBjYW5kaWRhdGUtPmRv
Y3VtZW50KCkuZG9jdW1lbnRFbGVtZW50KCkpCisgICAgICAgICAgICBzY3JvbGxhYmxlQXJlYS0+
dXBkYXRlU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyU3RhdGUoc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKTsK
ICAgICB9Ci0gICAgCisKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAtODcyLDEwICs4ODAs
MTEgQEAgdm9pZCBFdmVudEhhbmRsZXI6OmRldGVybWluZVdoZWVsRXZlbnRUYXJnZXQoY29uc3Qg
UGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW4KICAgICBpZiAoIXZpZXcpCiAgICAgICAgIHJl
dHVybjsKIAorICAgIFNjcm9sbENoYWluaW5nQmxvY2tlciBibG9ja2VyID0gbV9zY3JvbGxDaGFp
bmluZ0Jsb2NrZXI7CiAgICAgaWYgKGV2ZW50VGFyZ2V0SXNQbGF0Zm9ybVdpZGdldCh3aGVlbEV2
ZW50VGFyZ2V0LmdldCgpKSkKICAgICAgICAgc2Nyb2xsYWJsZUFyZWEgPSBzY3JvbGxhYmxlQXJl
YUZvckV2ZW50VGFyZ2V0KHdoZWVsRXZlbnRUYXJnZXQuZ2V0KCkpOwogICAgIGVsc2UgewotICAg
ICAgICBhdXRvKiBzY3JvbGxhYmxlQ29udGFpbmVyID0gZmluZEVuY2xvc2luZ1Njcm9sbGFibGVD
b250YWluZXIod2hlZWxFdmVudFRhcmdldC5nZXQoKSwgd2hlZWxFdmVudCk7CisgICAgICAgIGF1
dG8qIHNjcm9sbGFibGVDb250YWluZXIgPSBmaW5kRW5jbG9zaW5nU2Nyb2xsYWJsZUNvbnRhaW5l
cih3aGVlbEV2ZW50VGFyZ2V0LmdldCgpLCB3aGVlbEV2ZW50LCBibG9ja2VyKTsKICAgICAgICAg
aWYgKHNjcm9sbGFibGVDb250YWluZXIpCiAgICAgICAgICAgICBzY3JvbGxhYmxlQXJlYSA9IHNj
cm9sbGFibGVBcmVhRm9yQ29udGFpbmVyTm9kZSgqc2Nyb2xsYWJsZUNvbnRhaW5lcik7CiAgICAg
ICAgIGVsc2UKQEAgLTg5Myw2ICs5MDIsOSBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6ZGV0ZXJtaW5l
V2hlZWxFdmVudFRhcmdldChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbgogICAg
IGlmIChtX2ZyYW1lLmlzTWFpbkZyYW1lKCkgJiYgd2hlZWxFdmVudC5pc0dlc3R1cmVTdGFydCgp
KQogICAgICAgICBwYWdlLT53aGVlbEV2ZW50RGVsdGFGaWx0ZXIoKS0+YmVnaW5GaWx0ZXJpbmdE
ZWx0YXMoKTsKIAorICAgIC8vIFdoZW4gdGhlIGxhY2hlZCBub2RlIGlzIGRldGVybWluZWQsIHdl
IHNob3VsZCB1cGRhdGUgbV9zY3JvbGxDaGFpbmluZ0Jsb2NrZXIgaGVyZSwgZm9yIGl0IHdvbid0
IHBhc3MgdGhlIHRyZWUgaW4gRXZlbnRIYW5kbGVyOjpkZWZhdWx0V2hlZWxFdmVudEhhbmRsZXIu
CisgICAgLy8gT3RoZXJ3aXNlLCBtX3Njcm9sbENoYWluaW5nQmxvY2tlciBzaG91bGQgYmUgdXBk
YXRlIGluIEV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudEluQXBwcm9wcmlhdGVFbmNsb3Np
bmdCb3guCisgICAgdXBkYXRlU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKGJsb2NrZXIpOwogICAgIHBh
Z2UtPnNjcm9sbExhdGNoaW5nQ29udHJvbGxlcigpLnVwZGF0ZUFuZEZldGNoTGF0Y2hpbmdTdGF0
ZUZvckZyYW1lKG1fZnJhbWUsIHdoZWVsRXZlbnQsIHdoZWVsRXZlbnRUYXJnZXQsIHNjcm9sbGFi
bGVBcmVhLCBpc092ZXJXaWRnZXQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCmluZGV4IDU4
NDgwYTJkN2EuLjBhZTJkMjZiODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCkBAIC02ODQsNiAr
Njg0LDggQEAgdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRTY3JvbGxpbmdOb2Rl
U2Nyb2xsYWJsZUFyZWFHZW9tZXRyeShTY3JvbGxpbmcKICAgICBzY3JvbGxpbmdOb2RlLnNldFNj
cm9sbGFibGVBcmVhU2l6ZShzY3JvbGxhYmxlQXJlYS52aXNpYmxlU2l6ZSgpKTsKIAogICAgIFNj
cm9sbGFibGVBcmVhUGFyYW1ldGVycyBzY3JvbGxQYXJhbWV0ZXJzOworICAgIHNjcm9sbFBhcmFt
ZXRlcnMuaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvciA9IHNjcm9sbGFibGVBcmVhLmhvcml6
b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKTsKKyAgICBzY3JvbGxQYXJhbWV0ZXJzLnZlcnRpY2Fs
T3ZlcnNjcm9sbEJlaGF2aW9yID0gc2Nyb2xsYWJsZUFyZWEudmVydGljYWxPdmVyc2Nyb2xsQmVo
YXZpb3IoKTsKICAgICBzY3JvbGxQYXJhbWV0ZXJzLmhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5
ID0gc2Nyb2xsYWJsZUFyZWEuaG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkoKTsKICAgICBzY3Jv
bGxQYXJhbWV0ZXJzLnZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eSA9IHNjcm9sbGFibGVBcmVhLnZl
cnRpY2FsU2Nyb2xsRWxhc3RpY2l0eSgpOwogICAgIHNjcm9sbFBhcmFtZXRlcnMuYWxsb3dzSG9y
aXpvbnRhbFNjcm9sbGluZyA9IHNjcm9sbGFibGVBcmVhLmFsbG93c0hvcml6b250YWxTY3JvbGxp
bmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yVHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ0Nvb3JkaW5hdG9yVHlwZXMuaAppbmRleCBlZWNhYjZmNTViLi41Njc0ZGNhZTZjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRv
clR5cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29v
cmRpbmF0b3JUeXBlcy5oCkBAIC02OCw2ICs2OCw5IEBAIGVudW0gY2xhc3MgU2Nyb2xsaW5nTGF5
ZXJQb3NpdGlvbkFjdGlvbiB7CiB9OwogCiBzdHJ1Y3QgU2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJz
IHsKKyAgICBPdmVyc2Nyb2xsQmVoYXZpb3IgaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvciB7
IE92ZXJzY3JvbGxCZWhhdmlvcjo6IEF1dG8gfTsKKyAgICBPdmVyc2Nyb2xsQmVoYXZpb3IgdmVy
dGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IgeyBPdmVyc2Nyb2xsQmVoYXZpb3I6OiBBdXRvIH07CisK
ICAgICBTY3JvbGxFbGFzdGljaXR5IGhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5IHsgU2Nyb2xs
RWxhc3RpY2l0eU5vbmUgfTsKICAgICBTY3JvbGxFbGFzdGljaXR5IHZlcnRpY2FsU2Nyb2xsRWxh
c3RpY2l0eSB7IFNjcm9sbEVsYXN0aWNpdHlOb25lIH07CiAKQEAgLTg0LDcgKzg3LDkgQEAgc3Ry
dWN0IFNjcm9sbGFibGVBcmVhUGFyYW1ldGVycyB7CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgU2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzJiBvdGhlcikgY29uc3QKICAgICB7Ci0gICAgICAg
IHJldHVybiBob3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eSA9PSBvdGhlci5ob3Jpem9udGFsU2Ny
b2xsRWxhc3RpY2l0eQorICAgICAgICByZXR1cm4gaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlv
ciA9PSBvdGhlci5ob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yCisgICAgICAgICAgICAmJiB2
ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvciA9PSBvdGhlci52ZXJ0aWNhbE92ZXJzY3JvbGxCZWhh
dmlvcgorICAgICAgICAgICAgJiYgaG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkgPT0gb3RoZXIu
aG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkKICAgICAgICAgICAgICYmIHZlcnRpY2FsU2Nyb2xs
RWxhc3RpY2l0eSA9PSBvdGhlci52ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkKICAgICAgICAgICAg
ICYmIGhvcml6b250YWxTY3JvbGxiYXJNb2RlID09IG90aGVyLmhvcml6b250YWxTY3JvbGxiYXJN
b2RlCiAgICAgICAgICAgICAmJiB2ZXJ0aWNhbFNjcm9sbGJhck1vZGUgPT0gb3RoZXIudmVydGlj
YWxTY3JvbGxiYXJNb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdUcmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ1RyZWUuY3BwCmluZGV4IDFjZWYzMWJiMzYuLjA5NDY1MWE3M2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuY3BwCkBAIC0xNzQsMTIgKzE3
NCwzNSBAQCBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQgU2Nyb2xsaW5nVHJlZTo6aGFuZGxlV2hl
ZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
K2Jvb2wgU2Nyb2xsaW5nVHJlZTo6c2hvdWxkQmxvY2tTY3JvbGxDaGFpbmluZ1dpdGhOb2RlKGNv
bnN0IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlJiBzY3JvbGxpbmdOb2RlLCBQbGF0Zm9ybVdo
ZWVsRXZlbnQmIHdoZWVsRXZlbnQsIFNjcm9sbENoYWluaW5nQmxvY2tlciYgYmxvY2tlciwgYm9v
bCYgaGFuZGxlZCkKK3sKKyAgICBzY3JvbGxpbmdOb2RlLnVwZGF0ZVNjcm9sbENoYWluaW5nQmxv
Y2tlclN0YXRlKGJsb2NrZXIpOworCisgICAgRmxvYXRTaXplIGZpbHRlcmVkRGVsdGEod2hlZWxF
dmVudC5kZWx0YVgoKSwgd2hlZWxFdmVudC5kZWx0YVkoKSk7CisgICAgYXV0byBiaWFzZWREZWx0
YSA9IFBsYXRmb3JtV2hlZWxFdmVudDo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwo
ZmlsdGVyZWREZWx0YSk7CisgICAgaWYgKGJsb2NrZXIuYmxvY2tYIHx8IGJsb2NrZXIuYmxvY2tZ
KSB7CisgICAgICAgIGlmIChibG9ja2VyLmJsb2NrWCAmJiAhYmlhc2VkRGVsdGEuaGVpZ2h0KCkg
JiYgYmlhc2VkRGVsdGEud2lkdGgoKSkgeworICAgICAgICAgICAgaGFuZGxlZCA9IGZhbHNlOwor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKFNjcm9sbENo
YWluaW5nQmxvY2tlcjo6c2hvdWxkQmxvY2tTY3JvbGxDaGFpbmluZyhibG9ja2VyLCBiaWFzZWRE
ZWx0YSkpIHsKKyAgICAgICAgICAgIGhhbmRsZWQgPSB0cnVlOworICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyOjpmaWx0ZXJE
ZWx0YShibG9ja2VyLCBiaWFzZWREZWx0YSwgZmlsdGVyZWREZWx0YSk7CisgICAgICAgIHdoZWVs
RXZlbnQgPSB3aGVlbEV2ZW50LmNvcHlXaXRoRGVsdGFzQW5kVmVsb2NpdHkoZmlsdGVyZWREZWx0
YS53aWR0aCgpLCBmaWx0ZXJlZERlbHRhLmhlaWdodCgpLCB3aGVlbEV2ZW50LnNjcm9sbGluZ1Zl
bG9jaXR5KCkpOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIFdoZWVsRXZlbnRIYW5k
bGluZ1Jlc3VsdCBTY3JvbGxpbmdUcmVlOjpoYW5kbGVXaGVlbEV2ZW50V2l0aE5vZGUoY29uc3Qg
UGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBPcHRpb25TZXQ8V2hlZWxFdmVudFByb2Nl
c3NpbmdTdGVwcz4gcHJvY2Vzc2luZ1N0ZXBzLCBTY3JvbGxpbmdUcmVlTm9kZSogbm9kZSwgRXZl
bnRUYXJnZXRpbmcgZXZlbnRUYXJnZXRpbmcpCiB7CisgICAgUGxhdGZvcm1XaGVlbEV2ZW50IGFk
anVzdGVkV2hlZWxFdmVudCA9IFBsYXRmb3JtV2hlZWxFdmVudCh3aGVlbEV2ZW50KTsKKyAgICBT
Y3JvbGxDaGFpbmluZ0Jsb2NrZXIgYmxvY2tlciA9IHsgZmFsc2UsIGZhbHNlIH07CiAgICAgd2hp
bGUgKG5vZGUpIHsKICAgICAgICAgaWYgKGlzPFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlPigq
bm9kZSkpIHsKICAgICAgICAgICAgIGF1dG8mIHNjcm9sbGluZ05vZGUgPSBkb3duY2FzdDxTY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZT4oKm5vZGUpOwotICAgICAgICAgICAgYXV0byByZXN1bHQg
PSBzY3JvbGxpbmdOb2RlLmhhbmRsZVdoZWVsRXZlbnQod2hlZWxFdmVudCwgZXZlbnRUYXJnZXRp
bmcpOworICAgICAgICAgICAgYXV0byByZXN1bHQgPSBzY3JvbGxpbmdOb2RlLmhhbmRsZVdoZWVs
RXZlbnQoYWRqdXN0ZWRXaGVlbEV2ZW50LCBldmVudFRhcmdldGluZyk7CiAKICAgICAgICAgICAg
IGlmIChyZXN1bHQud2FzSGFuZGxlZCkgewogICAgICAgICAgICAgICAgIG1fbGF0Y2hpbmdDb250
cm9sbGVyLm5vZGVEaWRIYW5kbGVFdmVudChzY3JvbGxpbmdOb2RlLnNjcm9sbGluZ05vZGVJRCgp
LCBwcm9jZXNzaW5nU3RlcHMsIHdoZWVsRXZlbnQsIG1fYWxsb3dMYXRjaGluZyk7CkBAIC0xODks
NiArMjEyLDE2IEBAIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdCBTY3JvbGxpbmdUcmVlOjpoYW5k
bGVXaGVlbEV2ZW50V2l0aE5vZGUoY29uc3QgUGxhdGZvcm1XCiAKICAgICAgICAgICAgIGlmIChy
ZXN1bHQubmVlZHNNYWluVGhyZWFkUHJvY2Vzc2luZygpIHx8IGV2ZW50VGFyZ2V0aW5nICE9IEV2
ZW50VGFyZ2V0aW5nOjpQcm9wYWdhdGUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
KworICAgICAgICAgICAgYm9vbCBoYW5kbGVkID0gZmFsc2U7CisgICAgICAgICAgICBpZiAoc2hv
dWxkQmxvY2tTY3JvbGxDaGFpbmluZ1dpdGhOb2RlKHNjcm9sbGluZ05vZGUsIGFkanVzdGVkV2hl
ZWxFdmVudCwgYmxvY2tlciwgaGFuZGxlZCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoIWhhbmRs
ZWQpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQ6
OnVuaGFuZGxlZCgpOworCisgICAgICAgICAgICAgICAgbV9sYXRjaGluZ0NvbnRyb2xsZXIubm9k
ZURpZEhhbmRsZUV2ZW50KHNjcm9sbGluZ05vZGUuc2Nyb2xsaW5nTm9kZUlEKCksIHByb2Nlc3Np
bmdTdGVwcywgd2hlZWxFdmVudCwgbV9hbGxvd0xhdGNoaW5nKTsKKyAgICAgICAgICAgICAgICBt
X2dlc3R1cmVTdGF0ZS5ub2RlRGlkSGFuZGxlRXZlbnQoc2Nyb2xsaW5nTm9kZS5zY3JvbGxpbmdO
b2RlSUQoKSwgd2hlZWxFdmVudCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIFdoZWVsRXZlbnRI
YW5kbGluZ1Jlc3VsdDo6aGFuZGxlZCgpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAg
ICAgICAgaWYgKGlzPFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbFByb3h5Tm9kZT4oKm5vZGUp
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdU
cmVlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmgKaW5k
ZXggODMxZjU2NmQ1Yi4uZmYwMWExYjhlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ1RyZWUuaApAQCAtMjczLDcgKzI3Myw4IEBAIHByaXZhdGU6CiAjZW5k
aWYKIAogICAgIHZpcnR1YWwgdm9pZCByZWNlaXZlZFdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1X
aGVlbEV2ZW50JikgeyB9Ci0gICAgCisgICAgYm9vbCBzaG91bGRCbG9ja1Njcm9sbENoYWluaW5n
V2l0aE5vZGUoY29uc3QgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUmLCBQbGF0Zm9ybVdoZWVs
RXZlbnQmLCBTY3JvbGxDaGFpbmluZ0Jsb2NrZXImLCBib29sJiBoYW5kbGVkKTsKKwogICAgIFJl
ZlB0cjxTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlPiBtX3Jvb3ROb2RlOwogCiAgICAg
dXNpbmcgU2Nyb2xsaW5nVHJlZU5vZGVNYXAgPSBIYXNoTWFwPFNjcm9sbGluZ05vZGVJRCwgUmVm
UHRyPFNjcm9sbGluZ1RyZWVOb2RlPj47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAKaW5kZXggMTMw
ZTczZWRiYy4uY2Q4MDQyOGMxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcApAQCAtMTI1LDYg
KzEyNSwyMiBAQCBib29sIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjppc0xhdGNoZWROb2Rl
KCkgY29uc3QKICAgICByZXR1cm4gc2Nyb2xsaW5nVHJlZSgpLmxhdGNoZWROb2RlSUQoKSA9PSBz
Y3JvbGxpbmdOb2RlSUQoKTsKIH0KIAorT3ZlcnNjcm9sbEJlaGF2aW9yIFNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlOjpob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMuaG9yaXpvbnRhbE92ZXJzY3JvbGxC
ZWhhdmlvcjsKK30KKworT3ZlcnNjcm9sbEJlaGF2aW9yIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlOjp2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
c2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzLnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yOworfQor
Cit2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjp1cGRhdGVTY3JvbGxDaGFpbmluZ0Js
b2NrZXJTdGF0ZShTY3JvbGxDaGFpbmluZ0Jsb2NrZXImIGJsb2NrZXIpIGNvbnN0Cit7CisgICAg
YmxvY2tlci5ibG9ja1ggfD0gaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpICE9IE92ZXJz
Y3JvbGxCZWhhdmlvcjo6QXV0bzsKKyAgICBibG9ja2VyLmJsb2NrWSB8PSB2ZXJ0aWNhbE92ZXJz
Y3JvbGxCZWhhdmlvcigpICE9IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0bzsKK30KKwogYm9vbCBT
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6Y2FuSGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0
Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIEV2ZW50VGFyZ2V0aW5nIGV2ZW50VGFyZ2V0aW5n
KSBjb25zdAogewogICAgIGlmICghY2FuSGF2ZVNjcm9sbGJhcnMoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZS5oCmluZGV4IGJlNDlkMGIxMjUuLmJiNTFhYzgyMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaApA
QCAtMTQyLDYgKzE0MiwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgY29uc3QgRmxvYXRTaXplJiB0b3Rh
bENvbnRlbnRzU2l6ZUZvclJ1YmJlckJhbmQoKSBjb25zdCB7IHJldHVybiBtX3RvdGFsQ29udGVu
dHNTaXplRm9yUnViYmVyQmFuZDsgfQogICAgIHZvaWQgc2V0VG90YWxDb250ZW50c1NpemVGb3JS
dWJiZXJCYW5kKGNvbnN0IEZsb2F0U2l6ZSYgdG90YWxDb250ZW50c1NpemVGb3JSdWJiZXJCYW5k
KSB7IG1fdG90YWxDb250ZW50c1NpemVGb3JSdWJiZXJCYW5kID0gdG90YWxDb250ZW50c1NpemVG
b3JSdWJiZXJCYW5kOyB9CiAKKyAgICBPdmVyc2Nyb2xsQmVoYXZpb3IgaG9yaXpvbnRhbE92ZXJz
Y3JvbGxCZWhhdmlvcigpIGNvbnN0OworICAgIE92ZXJzY3JvbGxCZWhhdmlvciB2ZXJ0aWNhbE92
ZXJzY3JvbGxCZWhhdmlvcigpIGNvbnN0OworICAgIHZvaWQgdXBkYXRlU2Nyb2xsQ2hhaW5pbmdC
bG9ja2VyU3RhdGUoU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyJikgY29uc3Q7CisKICAgICBTY3JvbGxF
bGFzdGljaXR5IGhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5KCkgY29uc3QgeyByZXR1cm4gbV9z
Y3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMuaG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHk7IH0KICAg
ICBTY3JvbGxFbGFzdGljaXR5IHZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eSgpIGNvbnN0IHsgcmV0
dXJuIG1fc2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzLnZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eTsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1tCmlu
ZGV4IGE1YjQ4YzIwMzQuLjQ5NGI0Y2NlZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZURlbGVnYXRlTWFjLm1tCkBAIC0yMjcsNiArMjI3LDkgQEAgc3RkOjp1bmlxdWVf
cHRyPFNjcm9sbENvbnRyb2xsZXJUaW1lcj4gU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxl
Z2F0ZU1hYzo6Y3IKIAogYm9vbCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFj
OjphbGxvd3NIb3Jpem9udGFsU3RyZXRjaGluZyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdo
ZWVsRXZlbnQpIGNvbnN0CiB7CisgICAgaWYgKHNjcm9sbGluZ05vZGUoKS5ob3Jpem9udGFsT3Zl
cnNjcm9sbEJlaGF2aW9yKCkgPT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpOb25lKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKICAgICBzd2l0Y2ggKGhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5KCkp
IHsKICAgICBjYXNlIFNjcm9sbEVsYXN0aWNpdHlBdXRvbWF0aWM6IHsKICAgICAgICAgYm9vbCBz
Y3JvbGxiYXJzQWxsb3dTdHJldGNoaW5nID0gYWxsb3dzSG9yaXpvbnRhbFNjcm9sbGluZygpIHx8
ICFhbGxvd3NWZXJ0aWNhbFNjcm9sbGluZygpOwpAQCAtMjQ5LDYgKzI1Miw5IEBAIGJvb2wgU2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6YWxsb3dzSG9yaXpvbnRhbFN0cmV0
Y2hpbmcoY29uc3QgUGxhCiAKIGJvb2wgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZU1hYzo6YWxsb3dzVmVydGljYWxTdHJldGNoaW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYg
d2hlZWxFdmVudCkgY29uc3QKIHsKKyAgICBpZiAoc2Nyb2xsaW5nTm9kZSgpLnZlcnRpY2FsT3Zl
cnNjcm9sbEJlaGF2aW9yKCkgPT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpOb25lKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKICAgICBzd2l0Y2ggKHZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eSgpKSB7
CiAgICAgY2FzZSBTY3JvbGxFbGFzdGljaXR5QXV0b21hdGljOiB7CiAgICAgICAgIGJvb2wgc2Ny
b2xsYmFyc0FsbG93U3RyZXRjaGluZyA9IGFsbG93c1ZlcnRpY2FsU2Nyb2xsaW5nKCkgfHwgIWFs
bG93c0hvcml6b250YWxTY3JvbGxpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxh
dGZvcm1XaGVlbEV2ZW50LmgKaW5kZXggZDcxNjkzNDZhMi4uNjQxNzk3YTZmNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50LmgKQEAgLTI2LDYgKzI2LDcg
QEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgorI2luY2x1ZGUgIkZs
b2F0U2l6ZS5oIgogI2luY2x1ZGUgIkludFBvaW50LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1FdmVu
dC5oIgogI2luY2x1ZGUgPHd0Zi9XaW5kb3dzRXh0cmFzLmg+CkBAIC0xNzQsNiArMTc1LDggQEAg
cHVibGljOgogICAgIFBsYXRmb3JtV2hlZWxFdmVudChIV05ELCBXUEFSQU0sIExQQVJBTSwgYm9v
bCBpc01vdXNlSFdoZWVsKTsKICNlbmRpZgogCisgICAgc3RhdGljIEZsb2F0U2l6ZSB3aGVlbERl
bHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbChjb25zdCBGbG9hdFNpemUmKTsKKwogcHJvdGVjdGVk
OgogICAgIFBsYXRmb3JtV2hlZWxFdmVudEdyYW51bGFyaXR5IG1fZ3JhbnVsYXJpdHkgeyBTY3Jv
bGxCeVBpeGVsV2hlZWxFdmVudCB9OwogICAgIGJvb2wgbV9kaXJlY3Rpb25JbnZlcnRlZEZyb21E
ZXZpY2UgeyBmYWxzZSB9OwpAQCAtMjY0LDYgKzI2NywxOSBAQCBpbmxpbmUgRmxvYXRQb2ludCBQ
bGF0Zm9ybVdoZWVsRXZlbnQ6OnN3aXBlVmVsb2NpdHkoKSBjb25zdAogCiAjZW5kaWYgLy8gRU5B
QkxFKEtJTkVUSUNfU0NST0xMSU5HKQogCitpbmxpbmUgRmxvYXRTaXplIFBsYXRmb3JtV2hlZWxF
dmVudDo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoY29uc3QgRmxvYXRTaXplJiBk
ZWx0YSkKK3sKKyAgICBhdXRvIGRlbHRhWCA9IGRlbHRhLndpZHRoKCk7CisgICAgYXV0byBkZWx0
YVkgPSBkZWx0YS5oZWlnaHQoKTsKKworICAgIGlmIChmYWJzZihkZWx0YVkpID49IGZhYnNmKGRl
bHRhWCkpCisgICAgICAgIGRlbHRhWCA9IDA7CisgICAgZWxzZQorICAgICAgICBkZWx0YVkgPSAw
OworCisgICAgcmV0dXJuIHsgZGVsdGFYLCBkZWx0YVkgfTsKK30KKwogV0VCQ09SRV9FWFBPUlQg
V1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IFBsYXRm
b3JtV2hlZWxFdmVudCYpOwogV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFdURjo6VGV4dFN0cmVhbSYsIFdoZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHMpOwogV0VCQ09S
RV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIEV2
ZW50SGFuZGxpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
VHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFR5cGVzLmgKaW5kZXggMGIx
YzQwNTYzZS4uZjhmNzFjMmUxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsVHlwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxUeXBlcy5o
CkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkZsb2F0UG9pbnQu
aCIKKyNpbmNsdWRlICJGbG9hdFNpemUuaCIKICNpbmNsdWRlICJJbnRQb2ludC5oIgogI2luY2x1
ZGUgPGNzdGRpbnQ+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KQEAgLTI1OSw2ICsyNjAs
MzQgQEAgZW51bSBjbGFzcyBTY3JvbGxTbmFwUG9pbnRTZWxlY3Rpb25NZXRob2QgOiB1aW50OF90
IHsKICAgICBDbG9zZXN0LAogfTsKIAorc3RydWN0IFNjcm9sbENoYWluaW5nQmxvY2tlciB7Cisg
ICAgYm9vbCBibG9ja1ggeyBmYWxzZSB9OworICAgIGJvb2wgYmxvY2tZIHsgZmFsc2UgfTsKKwor
ICAgIHN0YXRpYyBib29sIHNob3VsZEJsb2NrU2Nyb2xsQ2hhaW5pbmcoY29uc3QgU2Nyb2xsQ2hh
aW5pbmdCbG9ja2VyJiBibG9ja2VyLCBjb25zdCBGbG9hdFNpemUmIGJpYXNlZERlbHRhKQorICAg
IHsKKyAgICAgICAgaWYgKChibG9ja2VyLmJsb2NrWCAmJiBibG9ja2VyLmJsb2NrWSkKKyAgICAg
ICAgICAgIHx8IChibG9ja2VyLmJsb2NrWCAmJiAhYmlhc2VkRGVsdGEuaGVpZ2h0KCkpCisgICAg
ICAgICAgICB8fCAoYmxvY2tlci5ibG9ja1kgJiYgIWJpYXNlZERlbHRhLndpZHRoKCkpKQorICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAg
ICBzdGF0aWMgdm9pZCBmaWx0ZXJEZWx0YShjb25zdCBTY3JvbGxDaGFpbmluZ0Jsb2NrZXImIGJs
b2NrZXIsIGNvbnN0IEZsb2F0U2l6ZSYgYmlhc2VkRGVsdGEsIEZsb2F0U2l6ZSYgZmlsdGVyZWRE
ZWx0YSkKKyAgICB7CisgICAgICAgIGlmIChibG9ja2VyLmJsb2NrWCkgeworICAgICAgICAgICAg
ZmlsdGVyZWREZWx0YS5zZXRXaWR0aCgwKTsKKyAgICAgICAgICAgIGlmICghYmlhc2VkRGVsdGEu
aGVpZ2h0KCkpCisgICAgICAgICAgICAgICAgZmlsdGVyZWREZWx0YS5zZXRIZWlnaHQoMCk7Cisg
ICAgICAgIH0KKyAgICAgICAgaWYgKGJsb2NrZXIuYmxvY2tZKSB7CisgICAgICAgICAgICBmaWx0
ZXJlZERlbHRhLnNldEhlaWdodCgwKTsKKyAgICAgICAgICAgIGlmICghYmlhc2VkRGVsdGEud2lk
dGgoKSkKKyAgICAgICAgICAgICAgICBmaWx0ZXJlZERlbHRhLnNldFdpZHRoKDApOworICAgICAg
ICB9CisgICAgfQorfTsKKwogdXNpbmcgU2Nyb2xsYmFyQ29udHJvbFN0YXRlID0gdW5zaWduZWQ7
CiB1c2luZyBTY3JvbGxiYXJDb250cm9sUGFydE1hc2sgPSB1bnNpZ25lZDsKIHVzaW5nIFNjcm9s
bGluZ05vZGVJRCA9IHVpbnQ2NF90OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsYWJsZUFyZWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJs
ZUFyZWEuY3BwCmluZGV4IDc5ZjllOTgwOTguLmMwNDNjMGFjM2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKQEAgLTgwMyw2ICs4MDMsMTIgQEAgdm9pZCBT
Y3JvbGxhYmxlQXJlYTo6Y29tcHV0ZVNjcm9sbGJhclZhbHVlQW5kT3ZlcmhhbmcoZmxvYXQgY3Vy
cmVudFBvc2l0aW9uLCBmbG8KICAgICB9CiB9CiAKK3ZvaWQgU2Nyb2xsYWJsZUFyZWE6OnVwZGF0
ZVNjcm9sbENoYWluaW5nQmxvY2tlclN0YXRlKFNjcm9sbENoYWluaW5nQmxvY2tlciYgYmxvY2tl
cikgY29uc3QKK3sKKyAgICBibG9ja2VyLmJsb2NrWCB8PSBob3Jpem9udGFsT3ZlcnNjcm9sbEJl
aGF2aW9yKCkgIT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpBdXRvOworICAgIGJsb2NrZXIuYmxvY2tZ
IHw9IHZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgIT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpB
dXRvOworfQorCiBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBT
Y3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEpCiB7CiAgICAgdHMgPDwgc2Nyb2xsYWJsZUFy
ZWEuZGVidWdEZXNjcmlwdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsYWJsZUFyZWEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVB
cmVhLmgKaW5kZXggN2ViN2I1NDAyOC4uOTg3N2NkNTEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCkBAIC0xMTksNiArMTE5LDEwIEBAIHB1YmxpYzoKICAgICBi
b29sIGNvbnN0cmFpbnNTY3JvbGxpbmdUb0NvbnRlbnRFZGdlKCkgY29uc3QgeyByZXR1cm4gbV9j
b25zdHJhaW5zU2Nyb2xsaW5nVG9Db250ZW50RWRnZTsgfQogICAgIHZvaWQgc2V0Q29uc3RyYWlu
c1Njcm9sbGluZ1RvQ29udGVudEVkZ2UoYm9vbCBjb25zdHJhaW5zU2Nyb2xsaW5nVG9Db250ZW50
RWRnZSkgeyBtX2NvbnN0cmFpbnNTY3JvbGxpbmdUb0NvbnRlbnRFZGdlID0gY29uc3RyYWluc1Nj
cm9sbGluZ1RvQ29udGVudEVkZ2U7IH0KIAorICAgIHZpcnR1YWwgT3ZlcnNjcm9sbEJlaGF2aW9y
IGhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdCB7IHJldHVybiBPdmVyc2Nyb2xs
QmVoYXZpb3I6OkF1dG87IH0KKyAgICB2aXJ0dWFsIE92ZXJzY3JvbGxCZWhhdmlvciB2ZXJ0aWNh
bE92ZXJzY3JvbGxCZWhhdmlvcigpIGNvbnN0IHsgcmV0dXJuIE92ZXJzY3JvbGxCZWhhdmlvcjo6
QXV0bzsgfQorICAgIHZvaWQgdXBkYXRlU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyU3RhdGUoU2Nyb2xs
Q2hhaW5pbmdCbG9ja2VyJikgY29uc3Q7CisKICAgICB2b2lkIHNldFZlcnRpY2FsU2Nyb2xsRWxh
c3RpY2l0eShTY3JvbGxFbGFzdGljaXR5IHNjcm9sbEVsYXN0aWNpdHkpIHsgbV92ZXJ0aWNhbFNj
cm9sbEVsYXN0aWNpdHkgPSBzY3JvbGxFbGFzdGljaXR5OyB9CiAgICAgU2Nyb2xsRWxhc3RpY2l0
eSB2ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxT
Y3JvbGxFbGFzdGljaXR5PihtX3ZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eSk7IH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tCmluZGV4IGMw
OTVjZDY2ZjUuLmIzZDFhZjM4NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0KQEAgLTEyMjgsOSArMTIyOCw5IEBAIHZvaWQgU2Nyb2xs
QW5pbWF0b3JNYWM6OmhhbmRsZVdoZWVsRXZlbnRQaGFzZShQbGF0Zm9ybVdoZWVsRXZlbnRQaGFz
ZSBwaGFzZSkKIGJvb2wgU2Nyb2xsQW5pbWF0b3JNYWM6OnNob3VsZEZvcndhcmRXaGVlbEV2ZW50
c1RvUGFyZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCkgY29uc3QKIHsK
ICAgICBpZiAoc3RkOjphYnMod2hlZWxFdmVudC5kZWx0YVkoKSkgPj0gc3RkOjphYnMod2hlZWxF
dmVudC5kZWx0YVgoKSkpCi0gICAgICAgIHJldHVybiAhYWxsb3dzVmVydGljYWxTdHJldGNoaW5n
KHdoZWVsRXZlbnQpOworICAgICAgICByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYS52ZXJ0aWNhbE92
ZXJzY3JvbGxCZWhhdmlvcigpID09IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0byAmJiAhYWxsb3dz
VmVydGljYWxTdHJldGNoaW5nKHdoZWVsRXZlbnQpOwogCi0gICAgcmV0dXJuICFhbGxvd3NIb3Jp
em9udGFsU3RyZXRjaGluZyh3aGVlbEV2ZW50KTsKKyAgICByZXR1cm4gbV9zY3JvbGxhYmxlQXJl
YS5ob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgPT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpB
dXRvICYmICFhbGxvd3NIb3Jpem9udGFsU3RyZXRjaGluZyh3aGVlbEV2ZW50KTsKIH0KICAgICAK
IGJvb2wgU2Nyb2xsQW5pbWF0b3JNYWM6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1X
aGVlbEV2ZW50JiB3aGVlbEV2ZW50KQpAQCAtMTI5NSw2ICsxMjk1LDkgQEAgc3RhdGljIGJvb2wg
Z2VzdHVyZVNob3VsZEJlZ2luU25hcChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZl
bnQsIFNjcm9sbEUKIAogYm9vbCBTY3JvbGxBbmltYXRvck1hYzo6YWxsb3dzVmVydGljYWxTdHJl
dGNoaW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCkgY29uc3QKIHsKKyAg
ICBpZiAobV9zY3JvbGxhYmxlQXJlYS52ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpID09IE92
ZXJzY3JvbGxCZWhhdmlvcjo6Tm9uZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgc3dp
dGNoIChtX3Njcm9sbGFibGVBcmVhLnZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eSgpKSB7CiAgICAg
Y2FzZSBTY3JvbGxFbGFzdGljaXR5QXV0b21hdGljOiB7CiAgICAgICAgIFNjcm9sbGJhciogaFNj
cm9sbGVyID0gbV9zY3JvbGxhYmxlQXJlYS5ob3Jpem9udGFsU2Nyb2xsYmFyKCk7CkBAIC0xMzE5
LDYgKzEzMjIsOSBAQCBib29sIFNjcm9sbEFuaW1hdG9yTWFjOjphbGxvd3NWZXJ0aWNhbFN0cmV0
Y2hpbmcoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbAogCiBib29sIFNjcm9sbEFuaW1h
dG9yTWFjOjphbGxvd3NIb3Jpem9udGFsU3RyZXRjaGluZyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZl
bnQmIHdoZWVsRXZlbnQpIGNvbnN0CiB7CisgICAgaWYgKG1fc2Nyb2xsYWJsZUFyZWEuaG9yaXpv
bnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpID09IE92ZXJzY3JvbGxCZWhhdmlvcjo6Tm9uZSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgc3dpdGNoIChtX3Njcm9sbGFibGVBcmVhLmhvcml6
b250YWxTY3JvbGxFbGFzdGljaXR5KCkpIHsKICAgICBjYXNlIFNjcm9sbEVsYXN0aWNpdHlBdXRv
bWF0aWM6IHsKICAgICAgICAgU2Nyb2xsYmFyKiBoU2Nyb2xsZXIgPSBtX3Njcm9sbGFibGVBcmVh
Lmhvcml6b250YWxTY3JvbGxiYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9TY3JvbGxDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1Njcm9sbENvbnRyb2xsZXIubW0KaW5kZXggMGRlODFlMDZmNi4uNjM0ZmI3OTBlMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbENvbnRyb2xsZXIubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbENvbnRyb2xsZXIubW0KQEAgLTMx
MywxOSArMzEzLDYgQEAgYm9vbCBTY3JvbGxDb250cm9sbGVyOjpoYW5kbGVXaGVlbEV2ZW50KGNv
bnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCkKICAgICByZXR1cm4gaGFuZGxlZDsK
IH0KIAotRmxvYXRTaXplIFNjcm9sbENvbnRyb2xsZXI6OndoZWVsRGVsdGFCaWFzaW5nVG93YXJk
c1ZlcnRpY2FsKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCkKLXsKLSAgICBh
dXRvIGRlbHRhWCA9IHdoZWVsRXZlbnQuZGVsdGFYKCk7Ci0gICAgYXV0byBkZWx0YVkgPSB3aGVl
bEV2ZW50LmRlbHRhWSgpOwotCi0gICAgaWYgKGZhYnNmKGRlbHRhWSkgPj0gZmFic2YoZGVsdGFY
KSkKLSAgICAgICAgZGVsdGFYID0gMDsKLSAgICBlbHNlCi0gICAgICAgIGRlbHRhWSA9IDA7Ci0K
LSAgICByZXR1cm4geyBkZWx0YVgsIGRlbHRhWSB9OwotfQotCiBPcHRpb25hbDxTY3JvbGxEaXJl
Y3Rpb24+IFNjcm9sbENvbnRyb2xsZXI6OmRpcmVjdGlvbkZyb21FdmVudChjb25zdCBQbGF0Zm9y
bVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIE9wdGlvbmFsPFNjcm9sbEV2ZW50QXhpcz4gYXhpcywg
V2hlZWxBeGlzQmlhcyBiaWFzKQogewogICAgIC8vIEZJWE1FOiBJdCdzIGltcG9zc2libGUgdG8g
aW5mZXIgZGlyZWN0aW9uIGZyb20gYSBzaW5nbGUgZXZlbnQsIHNpbmNlIHRoZSBzdGFydCBvZiBh
IGdlc3R1cmUgaXMgZWl0aGVyIHplcm8gb3IKQEAgLTMzMyw3ICszMjAsNyBAQCBPcHRpb25hbDxT
Y3JvbGxEaXJlY3Rpb24+IFNjcm9sbENvbnRyb2xsZXI6OmRpcmVjdGlvbkZyb21FdmVudChjb25z
dCBQbGF0Zm9ybVdoZQogCiAgICAgYXV0byB3aGVlbERlbHRhID0gRmxvYXRTaXplIHsgd2hlZWxF
dmVudC5kZWx0YVgoKSwgd2hlZWxFdmVudC5kZWx0YVkoKSB9OwogICAgIGlmIChiaWFzID09IFdo
ZWVsQXhpc0JpYXM6OlZlcnRpY2FsKQotICAgICAgICB3aGVlbERlbHRhID0gd2hlZWxEZWx0YUJp
YXNpbmdUb3dhcmRzVmVydGljYWwod2hlZWxFdmVudCk7CisgICAgICAgIHdoZWVsRGVsdGEgPSBQ
bGF0Zm9ybVdoZWVsRXZlbnQ6OndoZWVsRGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRpY2FsKHdoZWVs
RXZlbnQuZGVsdGEoKSk7CiAKICAgICBpZiAoYXhpcykgewogICAgICAgICBzd2l0Y2ggKGF4aXMu
dmFsdWUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJD
b21wb3NpdG9yLmNwcAppbmRleCAxYTE4MzVhNTU2Li4yY2IwZGFmMjljIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcApAQCAtMTYw
Nyw2ICsxNjA3LDggQEAgc3RhdGljIGJvb2wgcmVjb21wb3NpdGVDaGFuZ2VSZXF1aXJlc0dlb21l
dHJ5VXBkYXRlKGNvbnN0IFJlbmRlclN0eWxlJiBvbGRTdHlsZSwKICAgICAgICAgfHwgb2xkU3R5
bGUucGVyc3BlY3RpdmVPcmlnaW5YKCkgIT0gbmV3U3R5bGUucGVyc3BlY3RpdmVPcmlnaW5YKCkK
ICAgICAgICAgfHwgb2xkU3R5bGUucGVyc3BlY3RpdmVPcmlnaW5ZKCkgIT0gbmV3U3R5bGUucGVy
c3BlY3RpdmVPcmlnaW5ZKCkKICAgICAgICAgfHwgb2xkU3R5bGUuYmFja2ZhY2VWaXNpYmlsaXR5
KCkgIT0gbmV3U3R5bGUuYmFja2ZhY2VWaXNpYmlsaXR5KCkKKyAgICAgICAgfHwgb2xkU3R5bGUu
b3ZlcnNjcm9sbEJlaGF2aW9yWCgpICE9IG5ld1N0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclgoKQor
ICAgICAgICB8fCBvbGRTdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JZKCkgIT0gbmV3U3R5bGUub3Zl
cnNjcm9sbEJlaGF2aW9yWSgpCiAgICAgICAgIHx8ICFhcmVQb2ludGluZ1RvRXF1YWxEYXRhKG9s
ZFN0eWxlLmNsaXBQYXRoKCksIG5ld1N0eWxlLmNsaXBQYXRoKCkpOwogfQogCkBAIC0zOTQzLDYg
KzM5NDUsMTEgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJvb3RPckJvZHlTdHlsZUNo
YW5nZWQoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnMKICAgICBib29sIGhhZEZpeGVkQmFj
a2dyb3VuZCA9IG9sZFN0eWxlICYmIG9sZFN0eWxlLT5oYXNFbnRpcmVseUZpeGVkQmFja2dyb3Vu
ZCgpOwogICAgIGlmIChoYWRGaXhlZEJhY2tncm91bmQgIT0gcmVuZGVyZXIuc3R5bGUoKS5oYXNF
bnRpcmVseUZpeGVkQmFja2dyb3VuZCgpKQogICAgICAgICByb290TGF5ZXJDb25maWd1cmF0aW9u
Q2hhbmdlZCgpOworCisgICAgaWYgKG9sZFN0eWxlICYmIChvbGRTdHlsZS0+b3ZlcnNjcm9sbEJl
aGF2aW9yWCgpICE9IHJlbmRlcmVyLnN0eWxlKCkub3ZlcnNjcm9sbEJlaGF2aW9yWCgpIHx8IG9s
ZFN0eWxlLT5vdmVyc2Nyb2xsQmVoYXZpb3JZKCkgIT0gcmVuZGVyZXIuc3R5bGUoKS5vdmVyc2Ny
b2xsQmVoYXZpb3JZKCkpKSB7CisgICAgICAgIGlmIChhdXRvKiBsYXllciA9IG1fcmVuZGVyVmll
dy5sYXllcigpKQorICAgICAgICAgICAgbGF5ZXItPnNldE5lZWRzQ29tcG9zaXRpbmdHZW9tZXRy
eVVwZGF0ZSgpOworICAgIH0KIH0KIAogdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJvb3RC
YWNrZ3JvdW5kQ29sb3JPclRyYW5zcGFyZW5jeUNoYW5nZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuY3BwCmluZGV4IGI2
YjdhYjBhMjEuLmFiMTkwMzEyNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5jcHAKQEAgLTE4MTYsNCArMTgxNiwyMiBA
QCBTdHJpbmcgUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6ZGVidWdEZXNjcmlwdGlvbigpIGNv
bnN0CiAgICAgcmV0dXJuIG1fbGF5ZXIuZGVidWdEZXNjcmlwdGlvbigpOwogfQogCitPdmVyc2Ny
b2xsQmVoYXZpb3IgUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6aG9yaXpvbnRhbE92ZXJzY3Jv
bGxCZWhhdmlvcigpIGNvbnN0Cit7CisgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlID0gbV9s
YXllci5yZW5kZXJlcigpLnN0eWxlKCk7CisgICAgLy8gQW4gZWxlbWVudCB0aGF0IGlzIG5vdCBz
Y3JvbGwgY29udGFpbmVyIG11c3QgYWNjZXB0IGJ1dCBpZ25vcmUgdGhlIHZhbHVlcyBvZiB0aGlz
IHByb3BlcnR5LgorICAgIGlmIChtX2xheWVyLnJlbmRlckJveCgpICYmIG1fbGF5ZXIucmVuZGVy
Qm94KCktPmNhbkJlU2Nyb2xsZWRBbmRIYXNTY3JvbGxhYmxlQXJlYSgpKQorICAgICAgICByZXR1
cm4gc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWCgpOworICAgIHJldHVybiBTY3JvbGxhYmxlQXJl
YTo6aG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpOworfQorCitPdmVyc2Nyb2xsQmVoYXZp
b3IgUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6dmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3Io
KSBjb25zdAoreworICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9IG1fbGF5ZXIucmVuZGVy
ZXIoKS5zdHlsZSgpOworICAgIC8vIEFuIGVsZW1lbnQgdGhhdCBpcyBub3Qgc2Nyb2xsIGNvbnRh
aW5lciBtdXN0IGFjY2VwdCBidXQgaWdub3JlIHRoZSB2YWx1ZXMgb2YgdGhpcyBwcm9wZXJ0eS4K
KyAgICBpZiAobV9sYXllci5yZW5kZXJCb3goKSAmJiBtX2xheWVyLnJlbmRlckJveCgpLT5jYW5C
ZVNjcm9sbGVkQW5kSGFzU2Nyb2xsYWJsZUFyZWEoKSkKKyAgICAgICAgcmV0dXJuIHN0eWxlLm92
ZXJzY3JvbGxCZWhhdmlvclkoKTsKKyAgICByZXR1cm4gU2Nyb2xsYWJsZUFyZWE6OnZlcnRpY2Fs
T3ZlcnNjcm9sbEJlaGF2aW9yKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVh
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5o
CmluZGV4IGRlMjZiMzA0ODkuLjUzOGE3OTRjMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuaApAQCAtMTI5LDYgKzEyOSw5
IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgc2Nyb2xsKFNjcm9sbERpcmVjdGlvbiwgU2Nyb2xsR3Jh
bnVsYXJpdHksIGZsb2F0IG11bHRpcGxpZXIgPSAxKTsKIAorICAgIE92ZXJzY3JvbGxCZWhhdmlv
ciBob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29uc3QgZmluYWw7CisgICAgT3ZlcnNj
cm9sbEJlaGF2aW9yIHZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29uc3QgZmluYWw7CisK
IHB1YmxpYzoKICAgICAvLyBBbGwgbWV0aG9kcyBpbiB0aGlzIHNlY3Rpb24gb3ZlcnJpZGUgU2Ny
b2xsYWJsZWFBcmVhIG1ldGhvZHMgKGZpbmFsKS4KICAgICB2b2lkIGF2YWlsYWJsZUNvbnRlbnRT
aXplQ2hhbmdlZChBdmFpbGFibGVTaXplQ2hhbmdlUmVhc29uKSBmaW5hbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCmluZGV4IGRmZjYyNDMzOTUu
LjkxMzAyMzRjMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9S
ZW5kZXJTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmNwcApAQCAtMTE3NSw3ICsxMTc1LDkgQEAgYm9vbCBSZW5kZXJTdHlsZTo6Y2hhbmdl
UmVxdWlyZXNSZWNvbXBvc2l0ZUxheWVyKGNvbnN0IFJlbmRlclN0eWxlJiBvdGhlciwgT3B0aW8K
ICAgICAgICAgICAgIHx8IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmJhY2tmYWNlVmlzaWJpbGl0
eSAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5iYWNrZmFjZVZpc2liaWxpdHkKICAg
ICAgICAgICAgIHx8IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnBlcnNwZWN0aXZlICE9IG90aGVy
Lm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnBlcnNwZWN0aXZlCiAgICAgICAgICAgICB8fCBtX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLT5wZXJzcGVjdGl2ZU9yaWdpblggIT0gb3RoZXIubV9yYXJlTm9u
SW5oZXJpdGVkRGF0YS0+cGVyc3BlY3RpdmVPcmlnaW5YCi0gICAgICAgICAgICB8fCBtX3JhcmVO
b25Jbmhlcml0ZWREYXRhLT5wZXJzcGVjdGl2ZU9yaWdpblkgIT0gb3RoZXIubV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+cGVyc3BlY3RpdmVPcmlnaW5ZKQorICAgICAgICAgICAgfHwgbV9yYXJlTm9u
SW5oZXJpdGVkRGF0YS0+cGVyc3BlY3RpdmVPcmlnaW5ZICE9IG90aGVyLm1fcmFyZU5vbkluaGVy
aXRlZERhdGEtPnBlcnNwZWN0aXZlT3JpZ2luWQorICAgICAgICAgICAgfHwgbV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+b3ZlcnNjcm9sbEJlaGF2aW9yWCAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0
ZWREYXRhLT5vdmVyc2Nyb2xsQmVoYXZpb3JYCisgICAgICAgICAgICB8fCBtX3JhcmVOb25Jbmhl
cml0ZWREYXRhLT5vdmVyc2Nyb2xsQmVoYXZpb3JZICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRl
ZERhdGEtPm92ZXJzY3JvbGxCZWhhdmlvclkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggMWY1ZDk3MzNkNi4uZTI0NmIxZjYzOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAyMS0wMy0xNSAgQ2F0aGllIENoZW4gIDxjYXRoaWVjaGVuQGlnYWxpYS5j
b20+CisKKyAgICAgICAgSW1wbGVtZW50IENTUyBvdmVyc2Nyb2xsLWJlaGF2aW9yIGZvciBhc3lu
Y2hyb25vdXMgc2Nyb2xsIG9uIE1hYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIwMTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgRW5jb2RlIGFuZCBkZWNvZGUgb3ZlcnNjcm9sbEJlaGF2aW9yIHRoZSB2
YWx1ZXMgb2YgU2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzLgorCisgICAgICAgICogU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8U2Ny
b2xsYWJsZUFyZWFQYXJhbWV0ZXJzPjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRD
b2RlcjxTY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnM+OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKwogMjAyMS0wMy0xNSAgS2ltbW8gS2lubnVuZW4g
IDxra2lubnVuZW5AYXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgdmVydGV4IGFycmF5IGZ1bmN0
aW9uYWxpdHkgZnJvbSBFeHRlbnNpb25zR0wgdG8gR3JhcGhpY3NDb250ZXh0R0wKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDM4ZGQ5ZDMx
ZTYuLmMxNTA1MDZiZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmNwcApAQCAtMjAwMCw2ICsyMDAwLDkgQEAgYm9vbCBBcmd1bWVudENvZGVyPFVz
ZXJTdHlsZVNoZWV0Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFVzZXJTdHlsZVNoZWV0JiB1
c2UKIAogdm9pZCBBcmd1bWVudENvZGVyPFNjcm9sbGFibGVBcmVhUGFyYW1ldGVycz46OmVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMmIHBhcmFt
ZXRlcnMpCiB7CisgICAgZW5jb2RlciA8PCBwYXJhbWV0ZXJzLmhvcml6b250YWxPdmVyc2Nyb2xs
QmVoYXZpb3I7CisgICAgZW5jb2RlciA8PCBwYXJhbWV0ZXJzLnZlcnRpY2FsT3ZlcnNjcm9sbEJl
aGF2aW9yOworCiAgICAgZW5jb2RlciA8PCBwYXJhbWV0ZXJzLmhvcml6b250YWxTY3JvbGxFbGFz
dGljaXR5OwogICAgIGVuY29kZXIgPDwgcGFyYW1ldGVycy52ZXJ0aWNhbFNjcm9sbEVsYXN0aWNp
dHk7CiAKQEAgLTIwMTcsNiArMjAyMCwxMSBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8U2Nyb2xsYWJs
ZUFyZWFQYXJhbWV0ZXJzPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNjcgogCiBi
b29sIEFyZ3VtZW50Q29kZXI8U2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzPjo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIsIFNjcm9sbGFibGVBcmVhUGFyYW1ldGVycyYgcGFyYW1zKQogeworICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocGFyYW1zLmhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbXMudmVy
dGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtcy5ob3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eSkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtcy52ZXJ0
aWNhbFNjcm9sbEVsYXN0aWNpdHkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuaAppbmRleCA5MjhkYTc1NjBjLi5iYWNlZjE1M2E4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtNDAsNiArNDAsNyBAQAog
I2luY2x1ZGUgPFdlYkNvcmUvUmVhbHRpbWVNZWRpYVNvdXJjZS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUmVuZGVyaW5nTW9kZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Nyb2xsU25hcE9mZnNldHNJ
bmZvLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxUeXBlcy5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9T
ZXJ2aWNlV29ya2VyVHlwZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1N0b3JlZENyZWRlbnRpYWxz
UG9saWN5Lmg+CkBAIC04NDgsNiArODQ5LDE1IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50
Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8+IHsKIAogbmFtZXNw
YWNlIFdURiB7CiAKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6T3ZlcnNj
cm9sbEJlaGF2aW9yPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICBXZWJD
b3JlOjpPdmVyc2Nyb2xsQmVoYXZpb3IsCisgICAgV2ViQ29yZTo6T3ZlcnNjcm9sbEJlaGF2aW9y
OjpBdXRvLAorICAgIFdlYkNvcmU6Ok92ZXJzY3JvbGxCZWhhdmlvcjo6Q29udGFpbiwKKyAgICBX
ZWJDb3JlOjpPdmVyc2Nyb2xsQmVoYXZpb3I6Ok5vbmUKKyAgICA+OworfTsKKwogdGVtcGxhdGU8
PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpSZW5kZXJpbmdNb2RlPiB7CiAgICAgdXNpbmcg
dmFsdWVzID0gRW51bVZhbHVlczwKICAgICAgICAgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBjNzdjMGYyODYzLi5iNTdkYTQxZjIzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEtMDMtMTUgIENh
dGhpZSBDaGVuICA8Y2F0aGllY2hlbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFN1cHBvcnQgQ1NT
IG92ZXJzY3JvbGwtYmVoYXZpb3IgZm9yIHN5bmNocm9ub3VzIHNjcm9sbAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyOTY4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmFzZWQgb24gRnLDqWTDqXJpYyBX
YW5nJ3MgcGF0Y2guCisKKyAgICAgICAgTmVlZCB0byBmaW5kIGEgd2F5IHRvIGJsb2NrIHRoZSBj
cm9zcy1mcmFtZSBzY3JvbGwgY2hhaW5pbmcgaW4gV0sxLgorCisgICAgICAgICogV2ViVmlldy9X
ZWJIVE1MVmlldy5tbToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgc2Nyb2xsV2hlZWw6XSk6CisK
IDIwMjEtMDMtMTEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBJ
bnRyb2R1Y2UgV29ya1F1ZXVlOjptYWluKCkgdG8gZ2V0IHRoZSBtYWluIHRocmVhZCdzIHdvcmsg
cXVldWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRN
TFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1t
CmluZGV4IDJiOGEyODIwZjguLjkzMjQ4NzA5MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQpAQCAtNDA4Niw2ICs0MDg2LDggQEAgc3RhdGlj
IEJPT0wgY3VycmVudFNjcm9sbElzQmxpdChOU1ZpZXcgKmNsaXBWaWV3KQogICAgIGF1dG8qIGZy
YW1lID0gY29yZShbc2VsZiBfZnJhbWVdKTsKICAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+ZXZl
bnRIYW5kbGVyKCkud2hlZWxFdmVudChldmVudCkpIHsKICNpZiBQTEFURk9STShNQUMpCisgICAg
ICAgIC8vIEZJWE1FOiBOZWVkIHRvIGZpbmQgYSB3YXkgdG8gYmxvY2sgdGhlIGNyb3NzLWZyYW1l
IHNjcm9sbCBjaGFpbmluZyBpbiBXSzEuCisgICAgICAgIC8vIFdlIGNhbiBub3QganVzdCBza2lw
IHRoZSBzY3JvbGwgaGVyZSwgaXQgbm90IG9ubHkgYmxvY2tzIHNjcm9sbCBjaGFpbmluZyBidXQg
YWxzbyBibG9ja3MgdGhlIHNjcm9sbCBvbiBjdXJyZW50IHZpZXcuCiAgICAgICAgIFtzdXBlciBz
Y3JvbGxXaGVlbDpldmVudF07CiAjZW5kaWYKICAgICB9Cg==
</data>
<flag name="commit-queue"
          id="442500"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423170</attachid>
            <date>2021-03-15 06:23:26 -0700</date>
            <delta_ts>2021-11-17 16:26:31 -0800</delta_ts>
            <desc>async-overscroll-behavior-for-review</desc>
            <filename>overscroll-behavior-async-for-review.diff</filename>
            <type>text/plain</type>
            <size>39432</size>
            <attacher name="cathiechen">cathiechen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBjNTE4YzFjZjhiLi43NWJiMjIxODFkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIw
MjEtMDMtMTUgIENhdGhpZSBDaGVuICA8Y2F0aGllY2hlbkBpZ2FsaWEuY29tPgorCisgICAgICAg
IEltcGxlbWVudCBDU1Mgb3ZlcnNjcm9sbC1iZWhhdmlvciBmb3IgYXN5bmNocm9ub3VzIHNjcm9s
bCBvbiBNYWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyMDEzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWVs
ZW1lbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9tYWMv
YXN5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZp
b3ItaWZyYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcv
bWFjL2FzeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVo
YXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5z
Y3JvbGxhYmxlLWVsZW1lbnQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcv
bWFjL2FzeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMt
c2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMjEt
MDMtMTUgIENhdGhpZSBDaGVuICA8Y2F0aGllY2hlbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFN1
cHBvcnQgQ1NTIG92ZXJzY3JvbGwtYmVoYXZpb3IgZm9yIHN5bmNocm9ub3VzIHNjcm9sbApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLXNjcm9sbC1vdmVy
c2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9z
Y3JvbGxpbmcvbWFjL2FzeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjI3MTUwZmY2
MGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5
bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwyMCBAQAorCitQQVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92
ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gYXV0by4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3Jv
bGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gYXV0by4KK1BBU1MgRWxlbWVu
dCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFp
biBhdXRvLgorUEFTUyBFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9s
bC1iZWhhdmlvcjogY29udGFpbiBhdXRvLgorUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xs
IHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIGF1dG8uCitQQVNTIEVsZW1lbnQg
dmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIGF1dG8u
CitQQVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVo
YXZpb3I6IGF1dG8gY29udGFpbi4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3
aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gY29udGFpbi4KK1BBU1MgRWxlbWVudCBob3Jp
em9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBjb250
YWluLgorUEFTUyBFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1i
ZWhhdmlvcjogY29udGFpbiBjb250YWluLgorUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xs
IHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIGNvbnRhaW4uCitQQVNTIEVsZW1l
bnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIGNv
bnRhaW4uCitQQVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3Jv
bGwtYmVoYXZpb3I6IGF1dG8gbm9uZS4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVz
dCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gbm9uZS4KK1BBU1MgRWxlbWVudCBob3Jp
em9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBub25l
LgorUEFTUyBFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhh
dmlvcjogY29udGFpbiBub25lLgorUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qg
d2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIG5vbmUuCitQQVNTIEVsZW1lbnQgdmVydGlj
YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIG5vbmUuCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1zY3JvbGwtb3Zl
cnNjcm9sbC1iZWhhdmlvci1lbGVtZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGlu
Zy9tYWMvYXN5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmRiNDJjMmVkNzkKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtc2Nyb2xsLW92ZXJz
Y3JvbGwtYmVoYXZpb3ItZWxlbWVudC5odG1sCkBAIC0wLDAgKzEsODcgQEAKKzwhZG9jdHlwZSBo
dG1sPiA8IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIEFzeW5jT3ZlcmZsb3dTY3JvbGxpbmdFbmFi
bGVkPXRydWUgQXN5bmNGcmFtZVNjcm9sbGluZ0VuYWJsZWQ9dHJ1ZSBdIC0tPgorCis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXN1cHBvcnQu
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
b3BhZ2F0ZVgsICdDb250aW51ZSB1cCB0aGUgaG9yaXpvbnRhbCBzY3JvbGwgY2hhaW5pbmcnKTsK
KyAgICAgICAgICAgIH0pOworICAgICAgICB9LCAnRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0
ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogJyArIG92ZXJzY3JvbGxYICsgJyAnICsgb3Zl
cnNjcm9sbFkgKyAnLicpOworCisgICAgICAgIHByb21pc2VfdGVzdCgoKSA9PiB7CisgICAgICAg
ICAgICByZXNldFRlc3QoKTsKKyAgICAgICAgICAgIHNjcm9sbGVyLnN0eWxlLm92ZXJzY3JvbGxC
ZWhhdmlvclggPSBvdmVyc2Nyb2xsWDsKKyAgICAgICAgICAgIHNjcm9sbGVyLnN0eWxlLm92ZXJz
Y3JvbGxCZWhhdmlvclkgPSBvdmVyc2Nyb2xsWTsKKworICAgICAgICAgICAgdmFyIHggPSBzY3Jv
bGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAgICAgICAgICB2YXIgeSA9IHNjcm9sbGVyLmNsaWVu
dEhlaWdodCAvIDI7CisgICAgICAgICAgICB2YXIgZGVsdGEgPSBnZXREZWx0YXMoImRvd24iKTsK
KyAgICAgICAgICAgIHJldHVybiBtb3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCh4LCB5LCBkZWx0YS5Y
LCBkZWx0YS5ZLCBkZWx0YS5YLCBkZWx0YS5ZKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAg
ICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsVG9wID4gMCwgcHJvcGFnYXRlWSwgJ0NvbnRpbnVl
IHVwIHRoZSB2ZXJ0aWNhbCBzY3JvbGwgY2hhaW5pbmcnKTsKKyAgICAgICAgICAgIH0pOworICAg
ICAgICB9LCAnRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVo
YXZpb3I6ICcgKyBvdmVyc2Nyb2xsWCArICcgJyArIG92ZXJzY3JvbGxZICsgJy4nKTsKKyAgICB9
KTsKK30KKworYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIHN0YXJ0VGVzdCk7Cis8L3NjcmlwdD4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L3Njcm9sbGluZy9tYWMvYXN5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1zY3JvbGwt
b3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAuLjkwMGEwYjdkOTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZp
b3ItaWZyYW1lLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIxIEBACisKKworUEFTUyBJZnJhbWUg
aG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gYXV0
by4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhh
dmlvcjogYXV0byBhdXRvLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRo
IG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gYXV0by4KK1BBU1MgSWZyYW1lIHZlcnRpY2Fs
IHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBhdXRvLgorUEFT
UyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6
IG5vbmUgYXV0by4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNj
cm9sbC1iZWhhdmlvcjogbm9uZSBhdXRvLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwg
dGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gY29udGFpbi4KK1BBU1MgSWZyYW1l
IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBjb250
YWluLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwt
YmVoYXZpb3I6IGNvbnRhaW4gY29udGFpbi4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0
ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBjb250YWluLgorUEFTUyBJZnJh
bWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUg
Y29udGFpbi4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9s
bC1iZWhhdmlvcjogbm9uZSBjb250YWluLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwg
dGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gbm9uZS4KK1BBU1MgSWZyYW1lIHZl
cnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBub25lLgor
UEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZp
b3I6IGNvbnRhaW4gbm9uZS4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGgg
b3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBub25lLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRh
bCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgbm9uZS4KK1BBU1Mg
SWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9u
ZSBub25lLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5
bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1l
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uYjM1ZjViNzEwNwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1z
Y3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUuaHRtbApAQCAtMCwwICsxLDg4IEBACis8
IWRvY3R5cGUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBBc3luY092ZXJmbG93U2Ny
b2xsaW5nRW5hYmxlZD10cnVlIEFzeW5jRnJhbWVTY3JvbGxpbmdFbmFibGVkPXRydWUgXSAtLT4K
KworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0Lmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvb3ZlcnNjcm9sbC1iZWhhdmlv
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
bmRvdy5zY3JvbGxUbygzMDAsIDMwMCk7CisKKyAgICAgICAgcm9vdC5zY3JvbGxMZWZ0ID0gMDsK
KyAgICAgICAgcm9vdC5zY3JvbGxUb3AgPSAwOworICAgICAgICByb290LnNjcm9sbFRvKDAsIDAp
OworICAgIH0KKworICAgIGZ1bmN0aW9uIG92ZXJzY3JvbGxCZWhhdmlvclRlc3QoKSB7CisgICAg
ICAgIG92ZXJzY3JvbGxEYXRhcy5mb3JFYWNoKChbb3ZlcnNjcm9sbFgsIG92ZXJzY3JvbGxZLCBw
cm9wYWdhdGVYLCBwcm9wYWdhdGVZXSkgPT4geworICAgICAgICAgICAgcHJvbWlzZV90ZXN0KCgp
ID0+IHsKKyAgICAgICAgICAgICAgICByZXNldFRlc3QoKTsKKyAgICAgICAgICAgICAgICB2YXIg
dGFyZ2V0ID0gc2Nyb2xsZXIuY29udGVudFdpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgiaHRtbCIpWzBdOworICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5vdmVyc2Nyb2xs
QmVoYXZpb3JYID0gb3ZlcnNjcm9sbFg7CisgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLm92
ZXJzY3JvbGxCZWhhdmlvclkgPSBvdmVyc2Nyb2xsWTsKKworICAgICAgICAgICAgICAgIHZhciB4
ID0gc2Nyb2xsZXIuY2xpZW50V2lkdGggLyAyOworICAgICAgICAgICAgICAgIHZhciB5ID0gc2Ny
b2xsZXIuY2xpZW50SGVpZ2h0IC8gMjsKKyAgICAgICAgICAgICAgICB2YXIgZGVsdGEgPSBnZXRE
ZWx0YXMoInJpZ2h0Iik7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1vdXNlV2hlZWxTY3JvbGxB
bmRXYWl0KHgsIHksIGRlbHRhLlgsIGRlbHRhLlksIGRlbHRhLlgsIGRlbHRhLlkpLnRoZW4oKCkg
PT4geworICAgICAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsTGVmdCA+
IDAsIHByb3BhZ2F0ZVgsICdDb250aW51ZSB1cCB0aGUgaG9yaXpvbnRhbCBzY3JvbGwgY2hhaW5p
bmcnKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0sICdJZnJhbWUgaG9yaXpv
bnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6ICcgKyBvdmVyc2Nyb2xs
WCArICcgJyArIG92ZXJzY3JvbGxZICsgJy4nKTsKKworICAgICAgICAgICAgcHJvbWlzZV90ZXN0
KCgpID0+IHsKKyAgICAgICAgICAgICAgICByZXNldFRlc3QoKTsKKyAgICAgICAgICAgICAgICB2
YXIgdGFyZ2V0ID0gc2Nyb2xsZXIuY29udGVudFdpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgiaHRtbCIpWzBdOworICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5vdmVyc2Ny
b2xsQmVoYXZpb3JYID0gb3ZlcnNjcm9sbFg7CisgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxl
Lm92ZXJzY3JvbGxCZWhhdmlvclkgPSBvdmVyc2Nyb2xsWTsKKworICAgICAgICAgICAgICAgIHZh
ciB4ID0gc2Nyb2xsZXIuY2xpZW50V2lkdGggLyAyOworICAgICAgICAgICAgICAgIHZhciB5ID0g
c2Nyb2xsZXIuY2xpZW50SGVpZ2h0IC8gMjsKKyAgICAgICAgICAgICAgICB2YXIgZGVsdGEgPSBn
ZXREZWx0YXMoImRvd24iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbW91c2VXaGVlbFNjcm9s
bEFuZFdhaXQoeCwgeSwgZGVsdGEuWCwgZGVsdGEuWSwgZGVsdGEuWCwgZGVsdGEuWSkudGhlbigo
KSA9PiB7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxUb3Ag
PiAwLCBwcm9wYWdhdGVZLCAnQ29udGludWUgdXAgdGhlIHZlcnRpY2FsIHNjcm9sbCBjaGFpbmlu
ZycpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSwgJ0lmcmFtZSB2ZXJ0aWNh
bCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6ICcgKyBvdmVyc2Nyb2xsWCAr
ICcgJyArIG92ZXJzY3JvbGxZICsgJy4nKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgc2Ny
b2xsZXIuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIG92ZXJzY3JvbGxCZWhhdmlvclRlc3QpOwor
PC9zY3JpcHQ+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9y
LXVuc2Nyb2xsYWJsZS1lbGVtZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Ny
b2xsaW5nL21hYy9hc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUt
ZWxlbWVudC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MC4uZjM5NWI2NDg4ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xs
aW5nL21hYy9hc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxl
bWVudC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACisKK1BBU1MgVW5zY3JvbGxhYmxlIGVs
ZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5v
bmUuCitQQVNTIFVuc2Nyb2xsYWJsZSBlbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGgg
b3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9zY3JvbGxpbmcvbWFjL2FzeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xs
YWJsZS1lbGVtZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMt
c2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5mMTIwNWVhMWMzCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLXNjcm9sbC1vdmVy
c2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWwKQEAgLTAsMCArMSw2NiBA
QAorPCFkb2N0eXBlIGh0bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgQXN5bmNPdmVyZmxv
d1Njcm9sbGluZ0VuYWJsZWQ9dHJ1ZSBBc3luY0ZyYW1lU2Nyb2xsaW5nRW5hYmxlZD10cnVlIF0g
LS0+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9y
dC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL292ZXJzY3JvbGwtYmVo
YXZpb3Itc3VwcG9ydC5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBz
Oi8vZHJhZnRzLmNzc3dnLm9yZy9jc3Mtb3ZlcnNjcm9sbC1iZWhhdmlvciI+Cis8c3R5bGU+Cisg
ICAgLnNjcm9sbGluZyB7CisgICAgICAgIG92ZXJmbG93OiBzY3JvbGw7CisgICAgfQorICAgIC5z
Y3JvbGxDb250ZW50IHsKKyAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICBoZWlnaHQ6IDMw
MHB4OworICAgIH0KKyAgICAjcm9vdCB7CisgICAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgICAg
aGVpZ2h0OiAyMDBweDsKKyAgICB9CisgICAgI3Njcm9sbGVyIHsKKyAgICAgICAgd2lkdGg6IDEw
MHB4OworICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgICBvdmVyc2Nyb2xsLWJlaGF2aW9y
OiBub25lOworICAgICAgICBvdmVyZmxvdzogdmlzaWJsZTsKKyAgICAgICAgYmFja2dyb3VuZDog
bGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmVkLCBibHVlKTsKKyAgICB9Cis8L3N0eWxlPgorPGRp
diBpZD0icm9vdCIgY2xhc3M9InNjcm9sbGluZyI+CisgICAgPGRpdiBpZD0ic2Nyb2xsZXIiPgor
ICAgICAgICA8ZGl2IGNsYXNzPSJzY3JvbGxDb250ZW50Ij48L2Rpdj4KKyAgICA8L2Rpdj4KKyAg
ICA8ZGl2IGNsYXNzPSJzY3JvbGxDb250ZW50Ij48L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0Pgor
Y29uc3Qgcm9vdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyb290Jyk7Citjb25zdCBzY3Jv
bGxlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY3JvbGxlcicpOworZnVuY3Rpb24gcmVz
ZXRUZXN0KCkgeworICAgIHJvb3Quc2Nyb2xsTGVmdCA9IDA7CisgICAgcm9vdC5zY3JvbGxUb3Ag
PSAwOworICAgIHJvb3Quc2Nyb2xsVG8oMCwgMCk7Cit9CisKK2Z1bmN0aW9uIHN0YXJ0VGVzdCgp
IHsKKyAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAgIHJlc2V0VGVzdCgp
OworICAgICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAgICAg
ICAgICB2YXIgeSA9IHNjcm9sbGVyLmNsaWVudEhlaWdodCAvIDI7CisgICAgICAgICAgICB2YXIg
ZGVsdGEgPSBnZXREZWx0YXMoInJpZ2h0Iik7CisgICAgICAgICAgICByZXR1cm4gbW91c2VXaGVl
bFNjcm9sbEFuZFdhaXQoeCwgeSwgZGVsdGEuWCwgZGVsdGEuWSwgZGVsdGEuWCwgZGVsdGEuWSku
dGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbExl
ZnQgPiAwLCB0cnVlLCAnQ29udGludWUgdXAgdGhlIGhvcml6b250YWwgc2Nyb2xsIGNoYWluaW5n
Jyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSwgJ1Vuc2Nyb2xsYWJsZSBlbGVtZW50IGhv
cml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLicpOwor
CisgICAgICAgIHByb21pc2VfdGVzdCgoKSA9PiB7CisgICAgICAgICAgICByZXNldFRlc3QoKTsK
KyAgICAgICAgICAgIHZhciB4ID0gc2Nyb2xsZXIuY2xpZW50V2lkdGggLyAyOworICAgICAgICAg
ICAgdmFyIHkgPSBzY3JvbGxlci5jbGllbnRIZWlnaHQgLyAyOworICAgICAgICAgICAgdmFyIGRl
bHRhID0gZ2V0RGVsdGFzKCJkb3duIik7CisgICAgICAgICAgICByZXR1cm4gbW91c2VXaGVlbFNj
cm9sbEFuZFdhaXQoeCwgeSwgZGVsdGEuWCwgZGVsdGEuWSwgZGVsdGEuWCwgZGVsdGEuWSkudGhl
bigoKSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbFRvcCA+
IDAsIHRydWUsICdDb250aW51ZSB1cCB0aGUgdmVydGljYWwgc2Nyb2xsIGNoYWluaW5nJyk7Cisg
ICAgICAgICAgICB9KTsKKyAgICAgICAgfSwgJ1Vuc2Nyb2xsYWJsZSBlbGVtZW50IHZlcnRpY2Fs
IHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4nKTsKK30KKworYWRk
RXZlbnRMaXN0ZW5lcigibG9hZCIsIHN0YXJ0VGVzdCk7Cis8L3NjcmlwdD4KXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9t
YWMvYXN5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtc2Nyb2xs
LW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uN2ZhNTljY2JhNwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1zY3JvbGwtb3Zl
cnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDUgQEAKKworCitQQVNTIFVuc2Nyb2xsYWJsZSBpZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwg
dGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuCitQQVNTIFVuc2Nyb2xsYWJsZSBp
ZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25l
LgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtc2Ny
b2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9y
LXVuc2Nyb2xsYWJsZS1pZnJhbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwLi4zM2VjNWIyNjNjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9z
Y3JvbGxpbmcvbWFjL2FzeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJs
ZS1pZnJhbWUuaHRtbApAQCAtMCwwICsxLDY2IEBACis8IWRvY3R5cGUgaHRtbD4gPCEtLSB3ZWJr
aXQtdGVzdC1ydW5uZXIgWyBBc3luY092ZXJmbG93U2Nyb2xsaW5nRW5hYmxlZD10cnVlIEFzeW5j
RnJhbWVTY3JvbGxpbmdFbmFibGVkPXRydWUgXSAtLT4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvb3ZlcnNjcm9sbC1iZWhhdmlvci1zdXBwb3J0LmpzIj48L3NjcmlwdD4K
KzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1vdmVy
c2Nyb2xsLWJlaGF2aW9yIj4KKzxzdHlsZT4KKyAgICAuc2Nyb2xsaW5nIHsKKyAgICAgICAgb3Zl
cmZsb3c6IHNjcm9sbDsKKyAgICB9CisgICAgLnNjcm9sbENvbnRlbnQgeworICAgICAgICB3aWR0
aDogMzAwcHg7CisgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgfQorICAgICNyb290IHsKKyAg
ICAgICAgd2lkdGg6IDIwMHB4OworICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAgIH0KKyAgICAj
c2Nyb2xsZXIgeworICAgICAgICB3aWR0aDogMjAwcHg7CisgICAgICAgIGhlaWdodDogMjAwcHg7
CisgICAgICAgIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmU7CisgICAgICAgIG92ZXJmbG93OiB2
aXNpYmxlOworICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZWQs
IGJsdWUpOworICAgIH0KKzwvc3R5bGU+Cis8ZGl2IGlkPSdyb290JyBjbGFzcz0ic2Nyb2xsaW5n
Ij4KKyAgICA8aWZyYW1lIGlkPSdzY3JvbGxlcicgc3JjZG9jPSI8aHRtbCBzdHlsZT0nb3ZlcnNj
cm9sbC1iZWhhdmlvcjogbm9uZTsnPjxkaXYgc3R5bGU9J3dpZHRoOiAxMDBweDsgaGVpZ2h0OiAx
MDBweDsnPjwvZGl2PjwvaHRtbD4KKyAgICAgICAgIj48L2lmcmFtZT4KKyAgICA8ZGl2IGNsYXNz
PSJzY3JvbGxDb250ZW50Ij48L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0PgorY29uc3Qgcm9vdCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyb290Jyk7Citjb25zdCBzY3JvbGxlciA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdzY3JvbGxlcicpOworCitmdW5jdGlvbiByZXNldFRlc3QoKSB7
CisgICAgcm9vdC5zY3JvbGxMZWZ0ID0gMDsKKyAgICByb290LnNjcm9sbFRvcCA9IDA7CisgICAg
cm9vdC5zY3JvbGxUbygwLCAwKTsKK30KKworZnVuY3Rpb24gc3RhcnRUZXN0KCkgeworICAgICAg
ICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgICAgICAgICAgcmVzZXRUZXN0KCk7CisgICAgICAg
ICAgICB2YXIgeCA9IHNjcm9sbGVyLmNsaWVudFdpZHRoIC8gMjsKKyAgICAgICAgICAgIHZhciB5
ID0gc2Nyb2xsZXIuY2xpZW50SGVpZ2h0IC8gMjsKKyAgICAgICAgICAgIHZhciBkZWx0YSA9IGdl
dERlbHRhcygicmlnaHQiKTsKKyAgICAgICAgICAgIHJldHVybiBtb3VzZVdoZWVsU2Nyb2xsQW5k
V2FpdCh4LCB5LCBkZWx0YS5YLCBkZWx0YS5ZLCBkZWx0YS5YLCBkZWx0YS5ZKS50aGVuKCgpID0+
IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsTGVmdCA+IDAsIHRy
dWUsICdDb250aW51ZSB1cCB0aGUgaG9yaXpvbnRhbCBzY3JvbGwgY2hhaW5pbmcnKTsKKyAgICAg
ICAgICAgIH0pOworICAgICAgICB9LCAnVW5zY3JvbGxhYmxlIGlmcmFtZSBob3Jpem9udGFsIHNj
cm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4nKTsKKworICAgICAgICBw
cm9taXNlX3Rlc3QoKCkgPT4geworICAgICAgICAgICAgcmVzZXRUZXN0KCk7CisgICAgICAgICAg
ICB2YXIgeCA9IHNjcm9sbGVyLmNsaWVudFdpZHRoIC8gMjsKKyAgICAgICAgICAgIHZhciB5ID0g
c2Nyb2xsZXIuY2xpZW50SGVpZ2h0IC8gMjsKKyAgICAgICAgICAgIHZhciBkZWx0YSA9IGdldERl
bHRhcygiZG93biIpOworICAgICAgICAgICAgcmV0dXJuIG1vdXNlV2hlZWxTY3JvbGxBbmRXYWl0
KHgsIHksIGRlbHRhLlgsIGRlbHRhLlksIGRlbHRhLlgsIGRlbHRhLlkpLnRoZW4oKCkgPT4gewor
ICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxUb3AgPiAwLCB0cnVlLCAn
Q29udGludWUgdXAgdGhlIHZlcnRpY2FsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAgICAgICAg
fSk7CisgICAgICAgIH0sICdVbnNjcm9sbGFibGUgaWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0
IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4nKTsKK30KKworYWRkRXZlbnRMaXN0ZW5l
cigibG9hZCIsIHN0YXJ0VGVzdCk7Cis8L3NjcmlwdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3Rh
dGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5k
ZXggMzNhOTQ0MDRkNy4uNGNmMmNmMzU2NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy13azIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTAxLDYgKzEwMSwxMSBAQCBmYXN0L2FuaW1hdGlv
bi9yZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZS1pbi10d28tcGFnZXMuaHRtbCBbIFBhc3MgXQogZmFz
dC9mb3Jtcy9maWxlL2VudHJpZXMtYXBpL2ltYWdlLXRyYW5zY29kZS1vcGVuLXBhbmVsLmh0bWwg
WyBQYXNzIF0KIGZhc3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFwaS9pbWFnZS1uby10cmFuc2NvZGUt
b3Blbi1wYW5lbC5odG1sIFsgUGFzcyBdCiAKK2Zhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1zY3Jv
bGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50Lmh0bWwgWyBTbG93IF0KK2Zhc3Qvc2Nyb2xs
aW5nL21hYy9hc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUuaHRtbCBbIFNs
b3cgXQorZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9y
LXVuc2Nyb2xsYWJsZS1pZnJhbWUuaHRtbCBbIFNsb3cgXQorZmFzdC9zY3JvbGxpbmcvbWFjL2Fz
eW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWwg
WyBTbG93IF0KKwogIy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogIyBFbmQgcGxh
dGZvcm0tc3BlY2lmaWMgZGlyZWN0b3JpZXMuCiAjLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggNTQ2Njg4OTVkZi4uYTI4MWJiNmQ4MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDQ0IEBACisyMDIxLTAzLTE1ICBDYXRoaWUgQ2hlbiAgPGNhdGhpZWNoZW5AaWdh
bGlhLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgQ1NTIG92ZXJzY3JvbGwtYmVoYXZpb3IgZm9y
IGFzeW5jaHJvbm91cyBzY3JvbGwgb24gTWFjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjAxMzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIHN1cHBvcnRzIG92ZXJzY3JvbGwtYmVoYXZp
b3IgZm9yIHRoZSBhc3luY2hyb25vdXMgc2Nyb2xsIG9uIE1hYy4gCisgICAgICAgIFNjcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlIHN0b3JlcyB0aGUgdmFsdWVzIG9mIG92ZXJzY3JvbGwtYmVoYXZp
b3IuIEluIG9yZGVyIHRvIG1ha2Ugc3VyZSB0aGUgY29uc2lzdGVuY3ksCisgICAgICAgIG92ZXJz
Y3JvbGwtYmVoYXZpb3IgdHJpZ2dlcnMgcmVjb21wb3NpdGVDaGFuZ2VSZXF1aXJlc0dlb21ldHJ5
VXBkYXRlIHdoZW4gdGhlIHZhbHVlcyBhcmUgY2hhbmdlZC4KKyAgICAgICAgVGhlIHNjcm9sbCBj
aGFpbmluZyBhbmQgc3dpcGUgZ2VzdHVyZXMgYXJlIGhhbmRsZWQgaW4gU2Nyb2xsaW5nVHJlZTo6
aGFuZGxlV2hlZWxFdmVudFdpdGhOb2RlLgorICAgICAgICBBYm91dCB0aGUgc2Nyb2xsIHN0cmV0
Y2ggaW4gU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYyBpcyBjYW5jZWxlZCBv
dmVyc2Nyb2xsLWJlaGF2aW9yIGlzIG5vbmUuCisKKyAgICAgICAgVGVzdHM6IGZhc3Qvc2Nyb2xs
aW5nL21hYy9hc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50Lmh0bWwKKyAg
ICAgICAgICAgICAgIGZhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1i
ZWhhdmlvci1pZnJhbWUuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9zY3JvbGxpbmcvbWFjL2Fz
eW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWwK
KyAgICAgICAgICAgICAgIGZhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1zY3JvbGwtb3ZlcnNjcm9s
bC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLmh0bWwKKworICAgICAgICAqIHBhZ2Uvc2Ny
b2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0U2Nyb2xsaW5nTm9kZVNjcm9sbGFibGVBcmVh
R2VvbWV0cnkpOiBTZXQgb3ZlcnNjcm9sbEJlaGF2aW9yIHZhbHVlcyB0byBTY3JvbGxhYmxlQXJl
YVBhcmFtZXRlcnMuCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0
b3JUeXBlcy5oOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzOjpv
cGVyYXRvcj09IGNvbnN0KTogQWRkIGhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IgYW5kIHZl
cnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yLgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ1RyZWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZTo6c2hvdWxkQmxv
Y2tTY3JvbGxDaGFpbmluZ1dpdGhOb2RlKTogQWNjb3JkaW5nIHRvIHRoZSB2YWx1ZSBvZiBTY3Jv
bGxDaGFpbmluZ0Jsb2NrZXIgdG8gZGVjaWRlIGJsb2NrIHRoZSBzY3JvbGwgY2hhaW5pbmcgb3Ig
bm90LgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZTo6aGFuZGxlV2hlZWxFdmVudFdp
dGhOb2RlKTogSWYgdGhlIGhvcml6b250YWwgc2Nyb2xsIGNoYWluaW5nIGlzIGJsb2NrZWQsIHJl
dHVybiBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQ6OnVuaGFuZGxlZCgpLCBhbmQgdGhlIHN3aXBl
IGdlc3R1cmUgd2lsbCBiZSB0cmlnZ2VyZWQuCisgICAgICAgIElmIHRoZSB2ZXJ0aWNhbCBzY3Jv
bGwgY2hhaW5pbmcgaXMgYmxvY2tlZCwgcmV0dXJuIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdDo6
aGFuZGxlZCgpLgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuaDoKKyAg
ICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6aG9yaXpvbnRhbE92
ZXJzY3JvbGxCZWhhdmlvciBjb25zdCk6IFJldHVybiB0aGUgdmFsdWUgb2Ygb3ZlcnNjcm9sbC1i
ZWhhdmlvci14LgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6
OnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yIGNvbnN0KTogUmV0dXJuIHRoZSB2YWx1ZSBvZiBv
dmVyc2Nyb2xsLWJlaGF2aW9yLVkuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZTo6dXBkYXRlU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyU3RhdGUgY29uc3QpOiBVcGRh
dGUgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIGFjY29yZGluZyB0byBvdmVyc2Nyb2xsLWJlaGF2aW9y
IHZhbHVlcy4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZS5oOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZURlbGVnYXRlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6YWxsb3dzSG9yaXpvbnRhbFN0cmV0Y2hpbmcgY29uc3Qp
OiBEb24ndCBzdHJldGNoIHdoZW4gb3ZlcnNjb3JsbC1iZWhhdmlvci14IGlzICJub25lIi4KKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OmFs
bG93c1ZlcnRpY2FsU3RyZXRjaGluZyBjb25zdCk6IERvbid0IHN0cmV0Y2ggd2hlbiBvdmVyc2Nv
cmxsLWJlaGF2aW9yLXkgaXMgIm5vbmUiLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXll
ckNvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVjb21wb3NpdGVDaGFuZ2VSZXF1
aXJlc0dlb21ldHJ5VXBkYXRlKTogUmV0dXJuIHRydWUgd2hlbiBvdmVyc2Nyb2xsQmVoYXZpb3Ig
aXMgY2hhbmdlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6cm9v
dE9yQm9keVN0eWxlQ2hhbmdlZCk6IFRoZSByb290IGxheWVyIG5lZWRzIHNldE5lZWRzQ29tcG9z
aXRpbmdHZW9tZXRyeVVwZGF0ZSB3aGVuIGh0bWwgb3IgYm9keSdzIG92ZXJzY3JvbGxCZWhhdmlv
ciBpcyBjaGFuZ2VkLgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Y2hhbmdlUmVxdWlyZXNSZWNvbXBvc2l0
ZUxheWVyIGNvbnN0KTogUmV0dXJuIHRydWUgd2hlbiBvdmVyc2Nyb2xsQmVoYXZpb3IgaXMgY2hh
bmdlZC4KKwogMjAyMS0wMy0xNSAgQ2F0aGllIENoZW4gIDxjYXRoaWVjaGVuQGlnYWxpYS5jb20+
CiAKICAgICAgICAgU3VwcG9ydCBDU1Mgb3ZlcnNjcm9sbC1iZWhhdmlvciBmb3Igc3luY2hyb25v
dXMgc2Nyb2xsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3lu
Y1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCmluZGV4IDU4NDgwYTJkN2EuLjBhZTJkMjZi
ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xs
aW5nQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0Fz
eW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCkBAIC02ODQsNiArNjg0LDggQEAgdm9pZCBBc3lu
Y1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRTY3JvbGxpbmdOb2RlU2Nyb2xsYWJsZUFyZWFHZW9t
ZXRyeShTY3JvbGxpbmcKICAgICBzY3JvbGxpbmdOb2RlLnNldFNjcm9sbGFibGVBcmVhU2l6ZShz
Y3JvbGxhYmxlQXJlYS52aXNpYmxlU2l6ZSgpKTsKIAogICAgIFNjcm9sbGFibGVBcmVhUGFyYW1l
dGVycyBzY3JvbGxQYXJhbWV0ZXJzOworICAgIHNjcm9sbFBhcmFtZXRlcnMuaG9yaXpvbnRhbE92
ZXJzY3JvbGxCZWhhdmlvciA9IHNjcm9sbGFibGVBcmVhLmhvcml6b250YWxPdmVyc2Nyb2xsQmVo
YXZpb3IoKTsKKyAgICBzY3JvbGxQYXJhbWV0ZXJzLnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9y
ID0gc2Nyb2xsYWJsZUFyZWEudmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKTsKICAgICBzY3Jv
bGxQYXJhbWV0ZXJzLmhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5ID0gc2Nyb2xsYWJsZUFyZWEu
aG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkoKTsKICAgICBzY3JvbGxQYXJhbWV0ZXJzLnZlcnRp
Y2FsU2Nyb2xsRWxhc3RpY2l0eSA9IHNjcm9sbGFibGVBcmVhLnZlcnRpY2FsU2Nyb2xsRWxhc3Rp
Y2l0eSgpOwogICAgIHNjcm9sbFBhcmFtZXRlcnMuYWxsb3dzSG9yaXpvbnRhbFNjcm9sbGluZyA9
IHNjcm9sbGFibGVBcmVhLmFsbG93c0hvcml6b250YWxTY3JvbGxpbmcoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yVHlwZXMu
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yVHlw
ZXMuaAppbmRleCBlZWNhYjZmNTViLi41Njc0ZGNhZTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvclR5cGVzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3JUeXBlcy5oCkBA
IC02OCw2ICs2OCw5IEBAIGVudW0gY2xhc3MgU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbiB7
CiB9OwogCiBzdHJ1Y3QgU2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzIHsKKyAgICBPdmVyc2Nyb2xs
QmVoYXZpb3IgaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvciB7IE92ZXJzY3JvbGxCZWhhdmlv
cjo6IEF1dG8gfTsKKyAgICBPdmVyc2Nyb2xsQmVoYXZpb3IgdmVydGljYWxPdmVyc2Nyb2xsQmVo
YXZpb3IgeyBPdmVyc2Nyb2xsQmVoYXZpb3I6OiBBdXRvIH07CisKICAgICBTY3JvbGxFbGFzdGlj
aXR5IGhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5IHsgU2Nyb2xsRWxhc3RpY2l0eU5vbmUgfTsK
ICAgICBTY3JvbGxFbGFzdGljaXR5IHZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eSB7IFNjcm9sbEVs
YXN0aWNpdHlOb25lIH07CiAKQEAgLTg0LDcgKzg3LDkgQEAgc3RydWN0IFNjcm9sbGFibGVBcmVh
UGFyYW1ldGVycyB7CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU2Nyb2xsYWJsZUFyZWFQ
YXJhbWV0ZXJzJiBvdGhlcikgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBob3Jpem9udGFs
U2Nyb2xsRWxhc3RpY2l0eSA9PSBvdGhlci5ob3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eQorICAg
ICAgICByZXR1cm4gaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvciA9PSBvdGhlci5ob3Jpem9u
dGFsT3ZlcnNjcm9sbEJlaGF2aW9yCisgICAgICAgICAgICAmJiB2ZXJ0aWNhbE92ZXJzY3JvbGxC
ZWhhdmlvciA9PSBvdGhlci52ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcgorICAgICAgICAgICAg
JiYgaG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkgPT0gb3RoZXIuaG9yaXpvbnRhbFNjcm9sbEVs
YXN0aWNpdHkKICAgICAgICAgICAgICYmIHZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eSA9PSBvdGhl
ci52ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkKICAgICAgICAgICAgICYmIGhvcml6b250YWxTY3Jv
bGxiYXJNb2RlID09IG90aGVyLmhvcml6b250YWxTY3JvbGxiYXJNb2RlCiAgICAgICAgICAgICAm
JiB2ZXJ0aWNhbFNjcm9sbGJhck1vZGUgPT0gb3RoZXIudmVydGljYWxTY3JvbGxiYXJNb2RlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuY3BwCmluZGV4
IDFjZWYzMWJiMzYuLjA5NDY1MWE3M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ1RyZWUuY3BwCkBAIC0xNzQsMTIgKzE3NCwzNSBAQCBXaGVlbEV2ZW50
SGFuZGxpbmdSZXN1bHQgU2Nyb2xsaW5nVHJlZTo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0
Zm9ybVdoZWVsRXZlbgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK2Jvb2wgU2Nyb2xsaW5nVHJl
ZTo6c2hvdWxkQmxvY2tTY3JvbGxDaGFpbmluZ1dpdGhOb2RlKGNvbnN0IFNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlJiBzY3JvbGxpbmdOb2RlLCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZl
bnQsIFNjcm9sbENoYWluaW5nQmxvY2tlciYgYmxvY2tlciwgYm9vbCYgaGFuZGxlZCkKK3sKKyAg
ICBzY3JvbGxpbmdOb2RlLnVwZGF0ZVNjcm9sbENoYWluaW5nQmxvY2tlclN0YXRlKGJsb2NrZXIp
OworCisgICAgRmxvYXRTaXplIGZpbHRlcmVkRGVsdGEod2hlZWxFdmVudC5kZWx0YVgoKSwgd2hl
ZWxFdmVudC5kZWx0YVkoKSk7CisgICAgYXV0byBiaWFzZWREZWx0YSA9IFBsYXRmb3JtV2hlZWxF
dmVudDo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoZmlsdGVyZWREZWx0YSk7Cisg
ICAgaWYgKGJsb2NrZXIuYmxvY2tYIHx8IGJsb2NrZXIuYmxvY2tZKSB7CisgICAgICAgIGlmIChi
bG9ja2VyLmJsb2NrWCAmJiAhYmlhc2VkRGVsdGEuaGVpZ2h0KCkgJiYgYmlhc2VkRGVsdGEud2lk
dGgoKSkgeworICAgICAgICAgICAgaGFuZGxlZCA9IGZhbHNlOworICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKFNjcm9sbENoYWluaW5nQmxvY2tlcjo6c2hv
dWxkQmxvY2tTY3JvbGxDaGFpbmluZyhibG9ja2VyLCBiaWFzZWREZWx0YSkpIHsKKyAgICAgICAg
ICAgIGhhbmRsZWQgPSB0cnVlOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0K
KyAgICAgICAgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyOjpmaWx0ZXJEZWx0YShibG9ja2VyLCBiaWFz
ZWREZWx0YSwgZmlsdGVyZWREZWx0YSk7CisgICAgICAgIHdoZWVsRXZlbnQgPSB3aGVlbEV2ZW50
LmNvcHlXaXRoRGVsdGFzQW5kVmVsb2NpdHkoZmlsdGVyZWREZWx0YS53aWR0aCgpLCBmaWx0ZXJl
ZERlbHRhLmhlaWdodCgpLCB3aGVlbEV2ZW50LnNjcm9sbGluZ1ZlbG9jaXR5KCkpOworICAgIH0K
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdCBTY3JvbGxp
bmdUcmVlOjpoYW5kbGVXaGVlbEV2ZW50V2l0aE5vZGUoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50
JiB3aGVlbEV2ZW50LCBPcHRpb25TZXQ8V2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwcz4gcHJvY2Vz
c2luZ1N0ZXBzLCBTY3JvbGxpbmdUcmVlTm9kZSogbm9kZSwgRXZlbnRUYXJnZXRpbmcgZXZlbnRU
YXJnZXRpbmcpCiB7CisgICAgUGxhdGZvcm1XaGVlbEV2ZW50IGFkanVzdGVkV2hlZWxFdmVudCA9
IFBsYXRmb3JtV2hlZWxFdmVudCh3aGVlbEV2ZW50KTsKKyAgICBTY3JvbGxDaGFpbmluZ0Jsb2Nr
ZXIgYmxvY2tlciA9IHsgZmFsc2UsIGZhbHNlIH07CiAgICAgd2hpbGUgKG5vZGUpIHsKICAgICAg
ICAgaWYgKGlzPFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlPigqbm9kZSkpIHsKICAgICAgICAg
ICAgIGF1dG8mIHNjcm9sbGluZ05vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZT4oKm5vZGUpOwotICAgICAgICAgICAgYXV0byByZXN1bHQgPSBzY3JvbGxpbmdOb2RlLmhh
bmRsZVdoZWVsRXZlbnQod2hlZWxFdmVudCwgZXZlbnRUYXJnZXRpbmcpOworICAgICAgICAgICAg
YXV0byByZXN1bHQgPSBzY3JvbGxpbmdOb2RlLmhhbmRsZVdoZWVsRXZlbnQoYWRqdXN0ZWRXaGVl
bEV2ZW50LCBldmVudFRhcmdldGluZyk7CiAKICAgICAgICAgICAgIGlmIChyZXN1bHQud2FzSGFu
ZGxlZCkgewogICAgICAgICAgICAgICAgIG1fbGF0Y2hpbmdDb250cm9sbGVyLm5vZGVEaWRIYW5k
bGVFdmVudChzY3JvbGxpbmdOb2RlLnNjcm9sbGluZ05vZGVJRCgpLCBwcm9jZXNzaW5nU3RlcHMs
IHdoZWVsRXZlbnQsIG1fYWxsb3dMYXRjaGluZyk7CkBAIC0xODksNiArMjEyLDE2IEBAIFdoZWVs
RXZlbnRIYW5kbGluZ1Jlc3VsdCBTY3JvbGxpbmdUcmVlOjpoYW5kbGVXaGVlbEV2ZW50V2l0aE5v
ZGUoY29uc3QgUGxhdGZvcm1XCiAKICAgICAgICAgICAgIGlmIChyZXN1bHQubmVlZHNNYWluVGhy
ZWFkUHJvY2Vzc2luZygpIHx8IGV2ZW50VGFyZ2V0aW5nICE9IEV2ZW50VGFyZ2V0aW5nOjpQcm9w
YWdhdGUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKworICAgICAgICAgICAgYm9v
bCBoYW5kbGVkID0gZmFsc2U7CisgICAgICAgICAgICBpZiAoc2hvdWxkQmxvY2tTY3JvbGxDaGFp
bmluZ1dpdGhOb2RlKHNjcm9sbGluZ05vZGUsIGFkanVzdGVkV2hlZWxFdmVudCwgYmxvY2tlciwg
aGFuZGxlZCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoIWhhbmRsZWQpCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQ6OnVuaGFuZGxlZCgpOworCisg
ICAgICAgICAgICAgICAgbV9sYXRjaGluZ0NvbnRyb2xsZXIubm9kZURpZEhhbmRsZUV2ZW50KHNj
cm9sbGluZ05vZGUuc2Nyb2xsaW5nTm9kZUlEKCksIHByb2Nlc3NpbmdTdGVwcywgd2hlZWxFdmVu
dCwgbV9hbGxvd0xhdGNoaW5nKTsKKyAgICAgICAgICAgICAgICBtX2dlc3R1cmVTdGF0ZS5ub2Rl
RGlkSGFuZGxlRXZlbnQoc2Nyb2xsaW5nTm9kZS5zY3JvbGxpbmdOb2RlSUQoKSwgd2hlZWxFdmVu
dCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdDo6aGFu
ZGxlZCgpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgaWYgKGlzPFNjcm9s
bGluZ1RyZWVPdmVyZmxvd1Njcm9sbFByb3h5Tm9kZT4oKm5vZGUpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmgKaW5kZXggODMxZjU2NmQ1Yi4uZmYw
MWExYjhlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nVHJlZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1Ry
ZWUuaApAQCAtMjczLDcgKzI3Myw4IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIHZpcnR1YWwg
dm9pZCByZWNlaXZlZFdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JikgeyB9Ci0g
ICAgCisgICAgYm9vbCBzaG91bGRCbG9ja1Njcm9sbENoYWluaW5nV2l0aE5vZGUoY29uc3QgU2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGUmLCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBTY3JvbGxDaGFp
bmluZ0Jsb2NrZXImLCBib29sJiBoYW5kbGVkKTsKKwogICAgIFJlZlB0cjxTY3JvbGxpbmdUcmVl
RnJhbWVTY3JvbGxpbmdOb2RlPiBtX3Jvb3ROb2RlOwogCiAgICAgdXNpbmcgU2Nyb2xsaW5nVHJl
ZU5vZGVNYXAgPSBIYXNoTWFwPFNjcm9sbGluZ05vZGVJRCwgUmVmUHRyPFNjcm9sbGluZ1RyZWVO
b2RlPj47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAKaW5kZXggMTMwZTczZWRiYy4uY2Q4MDQyOGMx
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcApAQCAtMTI1LDYgKzEyNSwyMiBAQCBib29sIFNj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjppc0xhdGNoZWROb2RlKCkgY29uc3QKICAgICByZXR1
cm4gc2Nyb2xsaW5nVHJlZSgpLmxhdGNoZWROb2RlSUQoKSA9PSBzY3JvbGxpbmdOb2RlSUQoKTsK
IH0KIAorT3ZlcnNjcm9sbEJlaGF2aW9yIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjpob3Jp
em9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zY3JvbGxh
YmxlQXJlYVBhcmFtZXRlcnMuaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcjsKK30KKworT3Zl
cnNjcm9sbEJlaGF2aW9yIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjp2ZXJ0aWNhbE92ZXJz
Y3JvbGxCZWhhdmlvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWFQYXJh
bWV0ZXJzLnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yOworfQorCit2b2lkIFNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlOjp1cGRhdGVTY3JvbGxDaGFpbmluZ0Jsb2NrZXJTdGF0ZShTY3JvbGxD
aGFpbmluZ0Jsb2NrZXImIGJsb2NrZXIpIGNvbnN0Cit7CisgICAgYmxvY2tlci5ibG9ja1ggfD0g
aG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpICE9IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0
bzsKKyAgICBibG9ja2VyLmJsb2NrWSB8PSB2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpICE9
IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0bzsKK30KKwogYm9vbCBTY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZTo6Y2FuSGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdo
ZWVsRXZlbnQsIEV2ZW50VGFyZ2V0aW5nIGV2ZW50VGFyZ2V0aW5nKSBjb25zdAogewogICAgIGlm
ICghY2FuSGF2ZVNjcm9sbGJhcnMoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oCmluZGV4IGJlNDlkMGIx
MjUuLmJiNTFhYzgyMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaApAQCAtMTQyLDYgKzE0MiwxMCBA
QCBwcm90ZWN0ZWQ6CiAgICAgY29uc3QgRmxvYXRTaXplJiB0b3RhbENvbnRlbnRzU2l6ZUZvclJ1
YmJlckJhbmQoKSBjb25zdCB7IHJldHVybiBtX3RvdGFsQ29udGVudHNTaXplRm9yUnViYmVyQmFu
ZDsgfQogICAgIHZvaWQgc2V0VG90YWxDb250ZW50c1NpemVGb3JSdWJiZXJCYW5kKGNvbnN0IEZs
b2F0U2l6ZSYgdG90YWxDb250ZW50c1NpemVGb3JSdWJiZXJCYW5kKSB7IG1fdG90YWxDb250ZW50
c1NpemVGb3JSdWJiZXJCYW5kID0gdG90YWxDb250ZW50c1NpemVGb3JSdWJiZXJCYW5kOyB9CiAK
KyAgICBPdmVyc2Nyb2xsQmVoYXZpb3IgaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpIGNv
bnN0OworICAgIE92ZXJzY3JvbGxCZWhhdmlvciB2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigp
IGNvbnN0OworICAgIHZvaWQgdXBkYXRlU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyU3RhdGUoU2Nyb2xs
Q2hhaW5pbmdCbG9ja2VyJikgY29uc3Q7CisKICAgICBTY3JvbGxFbGFzdGljaXR5IGhvcml6b250
YWxTY3JvbGxFbGFzdGljaXR5KCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYVBhcmFt
ZXRlcnMuaG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHk7IH0KICAgICBTY3JvbGxFbGFzdGljaXR5
IHZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eSgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsYWJsZUFy
ZWFQYXJhbWV0ZXJzLnZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eTsgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGVEZWxlZ2F0ZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1tCmluZGV4IGE1YjQ4YzIwMzQuLjQ5
NGI0Y2NlZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9T
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRl
TWFjLm1tCkBAIC0yMjcsNiArMjI3LDkgQEAgc3RkOjp1bmlxdWVfcHRyPFNjcm9sbENvbnRyb2xs
ZXJUaW1lcj4gU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6Y3IKIAogYm9v
bCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjphbGxvd3NIb3Jpem9udGFs
U3RyZXRjaGluZyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpIGNvbnN0CiB7
CisgICAgaWYgKHNjcm9sbGluZ05vZGUoKS5ob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkg
PT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpOb25lKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAg
ICBzd2l0Y2ggKGhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5KCkpIHsKICAgICBjYXNlIFNjcm9s
bEVsYXN0aWNpdHlBdXRvbWF0aWM6IHsKICAgICAgICAgYm9vbCBzY3JvbGxiYXJzQWxsb3dTdHJl
dGNoaW5nID0gYWxsb3dzSG9yaXpvbnRhbFNjcm9sbGluZygpIHx8ICFhbGxvd3NWZXJ0aWNhbFNj
cm9sbGluZygpOwpAQCAtMjQ5LDYgKzI1Miw5IEBAIGJvb2wgU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZU1hYzo6YWxsb3dzSG9yaXpvbnRhbFN0cmV0Y2hpbmcoY29uc3QgUGxhCiAK
IGJvb2wgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6YWxsb3dzVmVydGlj
YWxTdHJldGNoaW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCkgY29uc3QK
IHsKKyAgICBpZiAoc2Nyb2xsaW5nTm9kZSgpLnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkg
PT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpOb25lKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAg
ICBzd2l0Y2ggKHZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eSgpKSB7CiAgICAgY2FzZSBTY3JvbGxF
bGFzdGljaXR5QXV0b21hdGljOiB7CiAgICAgICAgIGJvb2wgc2Nyb2xsYmFyc0FsbG93U3RyZXRj
aGluZyA9IGFsbG93c1ZlcnRpY2FsU2Nyb2xsaW5nKCkgfHwgIWFsbG93c0hvcml6b250YWxTY3Jv
bGxpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29t
cG9zaXRvci5jcHAKaW5kZXggMWExODM1YTU1Ni4uMmNiMGRhZjI5YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTE2MDcs
NiArMTYwNyw4IEBAIHN0YXRpYyBib29sIHJlY29tcG9zaXRlQ2hhbmdlUmVxdWlyZXNHZW9tZXRy
eVVwZGF0ZShjb25zdCBSZW5kZXJTdHlsZSYgb2xkU3R5bGUsCiAgICAgICAgIHx8IG9sZFN0eWxl
LnBlcnNwZWN0aXZlT3JpZ2luWCgpICE9IG5ld1N0eWxlLnBlcnNwZWN0aXZlT3JpZ2luWCgpCiAg
ICAgICAgIHx8IG9sZFN0eWxlLnBlcnNwZWN0aXZlT3JpZ2luWSgpICE9IG5ld1N0eWxlLnBlcnNw
ZWN0aXZlT3JpZ2luWSgpCiAgICAgICAgIHx8IG9sZFN0eWxlLmJhY2tmYWNlVmlzaWJpbGl0eSgp
ICE9IG5ld1N0eWxlLmJhY2tmYWNlVmlzaWJpbGl0eSgpCisgICAgICAgIHx8IG9sZFN0eWxlLm92
ZXJzY3JvbGxCZWhhdmlvclgoKSAhPSBuZXdTdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JYKCkKKyAg
ICAgICAgfHwgb2xkU3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWSgpICE9IG5ld1N0eWxlLm92ZXJz
Y3JvbGxCZWhhdmlvclkoKQogICAgICAgICB8fCAhYXJlUG9pbnRpbmdUb0VxdWFsRGF0YShvbGRT
dHlsZS5jbGlwUGF0aCgpLCBuZXdTdHlsZS5jbGlwUGF0aCgpKTsKIH0KIApAQCAtMzk0Myw2ICsz
OTQ1LDExIEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyb290T3JCb2R5U3R5bGVDaGFu
Z2VkKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zCiAgICAgYm9vbCBoYWRGaXhlZEJhY2tn
cm91bmQgPSBvbGRTdHlsZSAmJiBvbGRTdHlsZS0+aGFzRW50aXJlbHlGaXhlZEJhY2tncm91bmQo
KTsKICAgICBpZiAoaGFkRml4ZWRCYWNrZ3JvdW5kICE9IHJlbmRlcmVyLnN0eWxlKCkuaGFzRW50
aXJlbHlGaXhlZEJhY2tncm91bmQoKSkKICAgICAgICAgcm9vdExheWVyQ29uZmlndXJhdGlvbkNo
YW5nZWQoKTsKKworICAgIGlmIChvbGRTdHlsZSAmJiAob2xkU3R5bGUtPm92ZXJzY3JvbGxCZWhh
dmlvclgoKSAhPSByZW5kZXJlci5zdHlsZSgpLm92ZXJzY3JvbGxCZWhhdmlvclgoKSB8fCBvbGRT
dHlsZS0+b3ZlcnNjcm9sbEJlaGF2aW9yWSgpICE9IHJlbmRlcmVyLnN0eWxlKCkub3ZlcnNjcm9s
bEJlaGF2aW9yWSgpKSkgeworICAgICAgICBpZiAoYXV0byogbGF5ZXIgPSBtX3JlbmRlclZpZXcu
bGF5ZXIoKSkKKyAgICAgICAgICAgIGxheWVyLT5zZXROZWVkc0NvbXBvc2l0aW5nR2VvbWV0cnlV
cGRhdGUoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyb290QmFj
a2dyb3VuZENvbG9yT3JUcmFuc3BhcmVuY3lDaGFuZ2VkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCmluZGV4IGRmZjYyNDMzOTUuLjkxMzAyMzRj
MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHls
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNw
cApAQCAtMTE3NSw3ICsxMTc1LDkgQEAgYm9vbCBSZW5kZXJTdHlsZTo6Y2hhbmdlUmVxdWlyZXNS
ZWNvbXBvc2l0ZUxheWVyKGNvbnN0IFJlbmRlclN0eWxlJiBvdGhlciwgT3B0aW8KICAgICAgICAg
ICAgIHx8IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmJhY2tmYWNlVmlzaWJpbGl0eSAhPSBvdGhl
ci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5iYWNrZmFjZVZpc2liaWxpdHkKICAgICAgICAgICAg
IHx8IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnBlcnNwZWN0aXZlICE9IG90aGVyLm1fcmFyZU5v
bkluaGVyaXRlZERhdGEtPnBlcnNwZWN0aXZlCiAgICAgICAgICAgICB8fCBtX3JhcmVOb25Jbmhl
cml0ZWREYXRhLT5wZXJzcGVjdGl2ZU9yaWdpblggIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVk
RGF0YS0+cGVyc3BlY3RpdmVPcmlnaW5YCi0gICAgICAgICAgICB8fCBtX3JhcmVOb25Jbmhlcml0
ZWREYXRhLT5wZXJzcGVjdGl2ZU9yaWdpblkgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0
YS0+cGVyc3BlY3RpdmVPcmlnaW5ZKQorICAgICAgICAgICAgfHwgbV9yYXJlTm9uSW5oZXJpdGVk
RGF0YS0+cGVyc3BlY3RpdmVPcmlnaW5ZICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEt
PnBlcnNwZWN0aXZlT3JpZ2luWQorICAgICAgICAgICAgfHwgbV9yYXJlTm9uSW5oZXJpdGVkRGF0
YS0+b3ZlcnNjcm9sbEJlaGF2aW9yWCAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5v
dmVyc2Nyb2xsQmVoYXZpb3JYCisgICAgICAgICAgICB8fCBtX3JhcmVOb25Jbmhlcml0ZWREYXRh
LT5vdmVyc2Nyb2xsQmVoYXZpb3JZICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm92
ZXJzY3JvbGxCZWhhdmlvclkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKaW5kZXggMWY1ZDk3MzNkNi4uZTI0NmIxZjYzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBA
QAorMjAyMS0wMy0xNSAgQ2F0aGllIENoZW4gIDxjYXRoaWVjaGVuQGlnYWxpYS5jb20+CisKKyAg
ICAgICAgSW1wbGVtZW50IENTUyBvdmVyc2Nyb2xsLWJlaGF2aW9yIGZvciBhc3luY2hyb25vdXMg
c2Nyb2xsIG9uIE1hYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjIwMTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgRW5jb2RlIGFuZCBkZWNvZGUgb3ZlcnNjcm9sbEJlaGF2aW9yIHRoZSB2YWx1ZXMgb2Yg
U2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzLgorCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8U2Nyb2xsYWJsZUFy
ZWFQYXJhbWV0ZXJzPjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxTY3Jv
bGxhYmxlQXJlYVBhcmFtZXRlcnM+OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaDoKKwogMjAyMS0wMy0xNSAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVu
ZW5AYXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgdmVydGV4IGFycmF5IGZ1bmN0aW9uYWxpdHkg
ZnJvbSBFeHRlbnNpb25zR0wgdG8gR3JhcGhpY3NDb250ZXh0R0wKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDM4ZGQ5ZDMxZTYuLmMxNTA1
MDZiZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmNwcApAQCAtMjAwMCw2ICsyMDAwLDkgQEAgYm9vbCBBcmd1bWVudENvZGVyPFVzZXJTdHlsZVNo
ZWV0Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFVzZXJTdHlsZVNoZWV0JiB1c2UKIAogdm9p
ZCBBcmd1bWVudENvZGVyPFNjcm9sbGFibGVBcmVhUGFyYW1ldGVycz46OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyLCBjb25zdCBTY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7
CisgICAgZW5jb2RlciA8PCBwYXJhbWV0ZXJzLmhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3I7
CisgICAgZW5jb2RlciA8PCBwYXJhbWV0ZXJzLnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yOwor
CiAgICAgZW5jb2RlciA8PCBwYXJhbWV0ZXJzLmhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5Owog
ICAgIGVuY29kZXIgPDwgcGFyYW1ldGVycy52ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHk7CiAKQEAg
LTIwMTcsNiArMjAyMCwxMSBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8U2Nyb2xsYWJsZUFyZWFQYXJh
bWV0ZXJzPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNjcgogCiBib29sIEFyZ3Vt
ZW50Q29kZXI8U2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzPjo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIsIFNjcm9sbGFibGVBcmVhUGFyYW1ldGVycyYgcGFyYW1zKQogeworICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocGFyYW1zLmhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbXMudmVydGljYWxPdmVy
c2Nyb2xsQmVoYXZpb3IpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHBhcmFtcy5ob3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eSkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtcy52ZXJ0aWNhbFNjcm9s
bEVsYXN0aWNpdHkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuaAppbmRleCA5MjhkYTc1NjBjLi5iYWNlZjE1M2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUg
PFdlYkNvcmUvUmVhbHRpbWVNZWRpYVNvdXJjZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVy
aW5nTW9kZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxUeXBlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VyaWFs
aXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29y
a2VyVHlwZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1N0b3JlZENyZWRlbnRpYWxzUG9saWN5Lmg+
CkBAIC04NDgsNiArODQ5LDE1IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8+IHsKIAogbmFtZXNwYWNlIFdURiB7
CiAKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6T3ZlcnNjcm9sbEJlaGF2
aW9yPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICBXZWJDb3JlOjpPdmVy
c2Nyb2xsQmVoYXZpb3IsCisgICAgV2ViQ29yZTo6T3ZlcnNjcm9sbEJlaGF2aW9yOjpBdXRvLAor
ICAgIFdlYkNvcmU6Ok92ZXJzY3JvbGxCZWhhdmlvcjo6Q29udGFpbiwKKyAgICBXZWJDb3JlOjpP
dmVyc2Nyb2xsQmVoYXZpb3I6Ok5vbmUKKyAgICA+OworfTsKKwogdGVtcGxhdGU8PiBzdHJ1Y3Qg
RW51bVRyYWl0czxXZWJDb3JlOjpSZW5kZXJpbmdNb2RlPiB7CiAgICAgdXNpbmcgdmFsdWVzID0g
RW51bVZhbHVlczwKICAgICAgICAgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423301</attachid>
            <date>2021-03-15 22:48:29 -0700</date>
            <delta_ts>2021-03-22 08:47:58 -0700</delta_ts>
            <desc>async-overscroll-behavior-for-ews</desc>
            <filename>overscroll-behavior-async-for-ews.diff</filename>
            <type>text/plain</type>
            <size>99388</size>
            <attacher name="cathiechen">cathiechen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzZTAzYmIxMDI3Li43NWJiMjIxODFkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjAgQEAKKzIw
MjEtMDMtMTUgIENhdGhpZSBDaGVuICA8Y2F0aGllY2hlbkBpZ2FsaWEuY29tPgorCisgICAgICAg
IEltcGxlbWVudCBDU1Mgb3ZlcnNjcm9sbC1iZWhhdmlvciBmb3IgYXN5bmNocm9ub3VzIHNjcm9s
bCBvbiBNYWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyMDEzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWVs
ZW1lbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9tYWMv
YXN5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZp
b3ItaWZyYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcv
bWFjL2FzeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVo
YXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5z
Y3JvbGxhYmxlLWVsZW1lbnQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcv
bWFjL2FzeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMt
c2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnM6CisKKzIwMjEt
MDMtMTUgIENhdGhpZSBDaGVuICA8Y2F0aGllY2hlbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFN1
cHBvcnQgQ1NTIG92ZXJzY3JvbGwtYmVoYXZpb3IgZm9yIHN5bmNocm9ub3VzIHNjcm9sbAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyOTY4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmFzZWQgb24gRnLD
qWTDqXJpYyBXYW5nJ3MgcGF0Y2guCisKKyAgICAgICAgVGVzdCBvdmVyc2Nyb2xsLWJlaGF2aW9y
IGZvciBvdmVyZmxvdyBlbGVtZW50cyBhbmQgaWZyYW1lcy4gVGhlIHRlc3RzIHRyaWdnZXIgd2hl
ZWwgc2Nyb2xsIGV2ZW50cworICAgICAgICBhbmQgd2FpdCAuNXMsIHRoZW4gY2hlY2sgd2hldGhl
ciBzY3JvbGwgb2NjdXJzIG9yIG5vdC4KKyAgICAgICAgVGhlIHRlc3RzIGFyZSBza2lwcGVkIG9u
IGlPUyBmb3Igb25seSBzeW5jaHJvbm91cyBzY3JvbGwgYXJlIHRlc3RlZC4KKyAgICAgICAgRm9y
IFdLMSwgdGhlIGlmcmFtZSB0ZXN0cyBmYWlsIGJlY2F1c2UgbGFjayBvZiBpbnRlcmZhY2VzIHRv
IGNvbnRyb2wgc2Nyb2xsIGNoYWluaW5nIGluIFdlYkhUTUxWaWV3LgorCisgICAgICAgICogVGVz
dEV4cGVjdGF0aW9uczogV2FpdGluZyAuNXMgZm9yIGVhY2ggY2FzZSBtYWtlcyB0aGUgdGVzdCBz
bG93LgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL3Jlc291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2
aW9yLXN1cHBvcnQuanM6IEFkZGVkLgorICAgICAgICAoZ2V0RGVsdGFzKToKKyAgICAgICAgKGFz
eW5jIG1vdXNlV2hlZWxTY3JvbGxBbmRXYWl0KToKKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9z
eW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2
aW9yLWVsZW1lbnQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvc3luYy1z
Y3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWlm
cmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1v
dmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50LWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhh
dmlvci11bnNjcm9sbGFibGUtZWxlbWVudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Nj
cm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJh
bWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9zeW5jLXNj
cm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUuaHRtbDogQWRkZWQu
CisgICAgICAgICogcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxh
dGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zOgorCisyMDIxLTAyLTA0ICBSb2IgQnVpcyAg
PHJidWlzQGlnYWxpYS5jb20+CisKKyAgICAgICAgTWFrZSBzaG91bGRDb21wdXRlTG9naWNhbFdp
ZHRoRnJvbUFzcGVjdFJhdGlvQW5kSW5zZXRzIHdyaXRpbmcgbW9kZSBhd2FyZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMzI4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTWFudWVsIFJlZ28gQ2FzYXNub3Zhcy4KKworICAgICAgICBFbmFibGUgc29t
ZSB0ZXN0cyB0aGF0IHBhc3Mgbm93LgorCisgICAgICAgICogVGVzdEV4cGVjdGF0aW9uczoKKwog
MjAyMS0wMy0xNSAgSW1hbm9sIEZlcm5hbmRleiAgPGlmZXJuYW5kZXpAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBTcGxpdCBXZWJYUiBmZWF0dXJlcyBpbnRvIGVuYWJsZWRGZWF0dXJlcywgc3VwcG9y
dGVkRmVhdHVyZXMgYW5kIHJlcXVlc3RlZEZlYXR1cmVzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAx
NDg1MTFkNWM1Li41NDAxNTAyMmUzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0
YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTQ2NDUsNiArNDY0
NSwxMiBAQCBmYXN0L3NoYWRvdy1kb20vaW9zLyBbIFNraXAgXQogIyBSZXF1aXJlcyBXSzIgVGVz
dFJ1bm5lcgogZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1lbnRlci13aGlsZS1leGl0aW5nLmh0bWwg
WyBTa2lwIF0KIAorIyBOZWVkIHRvIHdhaXQgYW5kIGNoZWNrIHdoZXRoZXIgc2Nyb2xsIG9jY3Vy
cworZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50
Lmh0bWwgWyBTbG93IF0KK2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVo
YXZpb3ItaWZyYW1lLmh0bWwgWyBTbG93IF0KK2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92
ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRtbCBbIFNsb3cgXQorZmFz
dC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUt
aWZyYW1lLmh0bWwgWyBTbG93IF0KKwogIyBBbmltYXRpb24gLyBMYXlvdXQgd29ya2V0cyBhcmUg
bm90IHN1cHBvcnRlZAogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrbGV0cy9h
bmltYXRpb24td29ya2xldC1zZXJ2aWNlLXdvcmtlci1pbnRlcmNlcHRpb24uaHR0cHMuaHRtbCBb
IFNraXAgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrbGV0cy9hbmltYXRp
b24td29ya2xldC1jc3AuaHR0cHMuaHRtbCBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWVs
ZW1lbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5j
LXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjI3MTUwZmY2MGIKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtc2Nyb2xsLW92ZXJzY3Jv
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
c3RzL2Zhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1l
bGVtZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtc2Nyb2xs
LW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAuLmRiNDJjMmVkNzkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxl
bWVudC5odG1sCkBAIC0wLDAgKzEsODcgQEAKKzwhZG9jdHlwZSBodG1sPiA8IS0tIHdlYmtpdC10
ZXN0LXJ1bm5lciBbIEFzeW5jT3ZlcmZsb3dTY3JvbGxpbmdFbmFibGVkPXRydWUgQXN5bmNGcmFt
ZVNjcm9sbGluZ0VuYWJsZWQ9dHJ1ZSBdIC0tPgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
L3Jlc291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXN1cHBvcnQuanMiPjwvc2NyaXB0PgorPGxp
bmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLW92ZXJzY3Jv
bGwtYmVoYXZpb3IiPgorPHN0eWxlPgorICAgIC5zY3JvbGxpbmcgeworICAgICAgICBvdmVyZmxv
dzogc2Nyb2xsOworICAgIH0KKyAgICAuc2Nyb2xsQ29udGVudCB7CisgICAgICAgIHdpZHRoOiAz
MDBweDsKKyAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICB9CisgICAgI3Jvb3QgeworICAgICAg
ICB3aWR0aDogMjAwcHg7CisgICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgfQorICAgICNzY3Jv
bGxlciB7CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAg
ICB9Cis8L3N0eWxlPgorPGRpdiBpZD0ncm9vdCcgY2xhc3M9InNjcm9sbGluZyI+CisgICAgPGRp
diBpZD0nc2Nyb2xsZXInIGNsYXNzPSJzY3JvbGxpbmciPgorICAgICAgICA8ZGl2IGNsYXNzPSJz
Y3JvbGxDb250ZW50Ij48L2Rpdj4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJzY3JvbGxD
b250ZW50Ij48L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0PgorY29uc3Qgcm9vdCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdyb290Jyk7Citjb25zdCBzY3JvbGxlciA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdzY3JvbGxlcicpOwordmFyIG92ZXJzY3JvbGxEYXRhcyA9IFtbImF1dG8iLCAi
YXV0byIsIHRydWUsIHRydWVdLAorICAgICAgICAgICAgICAgICAgICAgICAgWyJjb250YWluIiwg
ImF1dG8iLCBmYWxzZSwgdHJ1ZV0sCisgICAgICAgICAgICAgICAgICAgICAgICBbIm5vbmUiLCAi
YXV0byIsIGZhbHNlLCB0cnVlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFsiYXV0byIsICJj
b250YWluIiwgdHJ1ZSwgZmFsc2VdLAorICAgICAgICAgICAgICAgICAgICAgICAgWyJjb250YWlu
IiwgImNvbnRhaW4iLCBmYWxzZSwgZmFsc2VdLAorICAgICAgICAgICAgICAgICAgICAgICAgWyJu
b25lIiwgImNvbnRhaW4iLCBmYWxzZSwgZmFsc2VdLAorICAgICAgICAgICAgICAgICAgICAgICAg
WyJhdXRvIiwgIm5vbmUiLCB0cnVlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAgICBb
ImNvbnRhaW4iLCAibm9uZSIsIGZhbHNlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAg
ICBbIm5vbmUiLCAibm9uZSIsIGZhbHNlLCBmYWxzZV1dOworCitmdW5jdGlvbiByZXNldFRlc3Qo
KSB7CisgICAgLy8gVHJ5IHZhcmlvdXMgbWV0aG9kcyB0byBlbnN1cmUgdGhlIGVsZW1lbnQgcG9z
aXRpb24gaXMgcmVzZXQgaW1tZWRpYXRlbHkuCisgICAgc2Nyb2xsZXIuc2Nyb2xsTGVmdCA9IDMw
MDsKKyAgICBzY3JvbGxlci5zY3JvbGxUb3AgPSAzMDA7CisgICAgc2Nyb2xsZXIuc2Nyb2xsVG8o
MzAwLCAzMDApOworCisgICAgcm9vdC5zY3JvbGxMZWZ0ID0gMDsKKyAgICByb290LnNjcm9sbFRv
cCA9IDA7CisgICAgcm9vdC5zY3JvbGxUbygwLCAwKTsKK30KKworZnVuY3Rpb24gc3RhcnRUZXN0
KCkgeworICAgIG92ZXJzY3JvbGxEYXRhcy5mb3JFYWNoKChbb3ZlcnNjcm9sbFgsIG92ZXJzY3Jv
bGxZLCBwcm9wYWdhdGVYLCBwcm9wYWdhdGVZXSkgPT4geworICAgICAgICBwcm9taXNlX3Rlc3Qo
KCkgPT4geworICAgICAgICAgICAgcmVzZXRUZXN0KCk7CisgICAgICAgICAgICBzY3JvbGxlci5z
dHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JYID0gb3ZlcnNjcm9sbFg7CisgICAgICAgICAgICBzY3Jv
bGxlci5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JZID0gb3ZlcnNjcm9sbFk7CisgICAgICAgICAg
ICBkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoOworCisgICAgICAgICAgICB2YXIgeCA9IHNjcm9s
bGVyLmNsaWVudFdpZHRoIC8gMjsKKyAgICAgICAgICAgIHZhciB5ID0gc2Nyb2xsZXIuY2xpZW50
SGVpZ2h0IC8gMjsKKyAgICAgICAgICAgIHZhciBkZWx0YSA9IGdldERlbHRhcygicmlnaHQiKTsK
KyAgICAgICAgICAgIHJldHVybiBtb3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCh4LCB5LCBkZWx0YS5Y
LCBkZWx0YS5ZLCBkZWx0YS5YLCBkZWx0YS5ZKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAg
ICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsTGVmdCA+IDAsIHByb3BhZ2F0ZVgsICdDb250aW51
ZSB1cCB0aGUgaG9yaXpvbnRhbCBzY3JvbGwgY2hhaW5pbmcnKTsKKyAgICAgICAgICAgIH0pOwor
ICAgICAgICB9LCAnRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9s
bC1iZWhhdmlvcjogJyArIG92ZXJzY3JvbGxYICsgJyAnICsgb3ZlcnNjcm9sbFkgKyAnLicpOwor
CisgICAgICAgIHByb21pc2VfdGVzdCgoKSA9PiB7CisgICAgICAgICAgICByZXNldFRlc3QoKTsK
KyAgICAgICAgICAgIHNjcm9sbGVyLnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclggPSBvdmVyc2Ny
b2xsWDsKKyAgICAgICAgICAgIHNjcm9sbGVyLnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclkgPSBv
dmVyc2Nyb2xsWTsKKworICAgICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAv
IDI7CisgICAgICAgICAgICB2YXIgeSA9IHNjcm9sbGVyLmNsaWVudEhlaWdodCAvIDI7CisgICAg
ICAgICAgICB2YXIgZGVsdGEgPSBnZXREZWx0YXMoImRvd24iKTsKKyAgICAgICAgICAgIHJldHVy
biBtb3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCh4LCB5LCBkZWx0YS5YLCBkZWx0YS5ZLCBkZWx0YS5Y
LCBkZWx0YS5ZKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJv
b3Quc2Nyb2xsVG9wID4gMCwgcHJvcGFnYXRlWSwgJ0NvbnRpbnVlIHVwIHRoZSB2ZXJ0aWNhbCBz
Y3JvbGwgY2hhaW5pbmcnKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9LCAnRWxlbWVudCB2
ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6ICcgKyBvdmVyc2Ny
b2xsWCArICcgJyArIG92ZXJzY3JvbGxZICsgJy4nKTsKKyAgICB9KTsKK30KKworYWRkRXZlbnRM
aXN0ZW5lcigibG9hZCIsIHN0YXJ0VGVzdCk7Cis8L3NjcmlwdD4KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5
bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlv
ci1pZnJhbWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAuLjkwMGEwYjdkOTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9s
bGluZy9tYWMvYXN5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDIxIEBACisKKworUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwg
dGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gYXV0by4KK1BBU1MgSWZyYW1lIHZl
cnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBhdXRvLgor
UEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZp
b3I6IGNvbnRhaW4gYXV0by4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGgg
b3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBhdXRvLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRh
bCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgYXV0by4KK1BBU1Mg
SWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9u
ZSBhdXRvLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3Jv
bGwtYmVoYXZpb3I6IGF1dG8gY29udGFpbi4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0
ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBjb250YWluLgorUEFTUyBJZnJhbWUg
aG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4g
Y29udGFpbi4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9s
bC1iZWhhdmlvcjogY29udGFpbiBjb250YWluLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3Jv
bGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgY29udGFpbi4KK1BBU1MgSWZy
YW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBj
b250YWluLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3Jv
bGwtYmVoYXZpb3I6IGF1dG8gbm9uZS4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0
IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBub25lLgorUEFTUyBJZnJhbWUgaG9yaXpv
bnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gbm9uZS4K
K1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlv
cjogY29udGFpbiBub25lLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRo
IG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgbm9uZS4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNj
cm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBub25lLgorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtc2Nyb2xsLW92ZXJzY3Jv
bGwtYmVoYXZpb3ItaWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMv
YXN5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uYjM1ZjViNzEwNwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1i
ZWhhdmlvci1pZnJhbWUuaHRtbApAQCAtMCwwICsxLDg4IEBACis8IWRvY3R5cGUgaHRtbD4gPCEt
LSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBBc3luY092ZXJmbG93U2Nyb2xsaW5nRW5hYmxlZD10cnVl
IEFzeW5jRnJhbWVTY3JvbGxpbmdFbmFibGVkPXRydWUgXSAtLT4KKworPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi9yZXNvdXJjZXMvb3ZlcnNjcm9sbC1iZWhhdmlvci1zdXBwb3J0LmpzIj48L3Nj
cmlwdD4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nz
cy1vdmVyc2Nyb2xsLWJlaGF2aW9yIj4KKzxzdHlsZT4KKyAgICAuc2Nyb2xsaW5nIHsKKyAgICAg
ICAgb3ZlcmZsb3c6IHNjcm9sbDsKKyAgICB9CisgICAgLnNjcm9sbENvbnRlbnQgeworICAgICAg
ICB3aWR0aDogMzAwcHg7CisgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgIGJhY2tncm91
bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJlZCwgYmx1ZSk7CisgICAgfQorICAgICNyb290
IHsKKyAgICAgICAgd2lkdGg6IDIwMHB4OworICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAgIH0K
KyAgICAjc2Nyb2xsZXIgeworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDog
MTAwcHg7CisgICAgICAgIG92ZXJzY3JvbGwtYmVoYXZpb3IteTogYXV0bzsKKyAgICB9Cis8L3N0
eWxlPgorPGRpdiBpZD0ncm9vdCcgY2xhc3M9InNjcm9sbGluZyI+CisgICAgPGlmcmFtZSBpZD0n
c2Nyb2xsZXInIHNyY2RvYz0iPGh0bWw+PGRpdiBzdHlsZT0nd2lkdGg6IDMwMHB4OyBoZWlnaHQ6
IDMwMHB4Oyc+PC9kaXY+PC9odG1sPgorICAgICAgICAiPjwvaWZyYW1lPgorICAgIDxkaXYgY2xh
c3M9InNjcm9sbENvbnRlbnQiPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+CisgICAgY29uc3Qg
cm9vdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyb290Jyk7CisgICAgY29uc3Qgc2Nyb2xs
ZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2Nyb2xsZXInKTsKKyAgICB2YXIgb3ZlcnNj
cm9sbERhdGFzID0gW1siYXV0byIsICJhdXRvIiwgdHJ1ZSwgdHJ1ZV0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgWyJjb250YWluIiwgImF1dG8iLCBmYWxzZSwgdHJ1ZV0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgWyJub25lIiwgImF1dG8iLCBmYWxzZSwgdHJ1ZV0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgWyJhdXRvIiwgImNvbnRhaW4iLCB0cnVlLCBmYWxzZV0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJjb250YWluIiwgImNvbnRhaW4iLCBmYWxz
ZSwgZmFsc2VdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsibm9uZSIsICJjb250YWlu
IiwgZmFsc2UsIGZhbHNlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImF1dG8iLCAi
bm9uZSIsIHRydWUsIGZhbHNlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImNvbnRh
aW4iLCAibm9uZSIsIGZhbHNlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
WyJub25lIiwgIm5vbmUiLCBmYWxzZSwgZmFsc2VdXTsKKyAgICBmdW5jdGlvbiByZXNldFRlc3Qo
KSB7CisgICAgICAgIC8vIFRyeSB2YXJpb3VzIG1ldGhvZHMgdG8gZW5zdXJlIHRoZSBlbGVtZW50
IHBvc2l0aW9uIGlzIHJlc2V0IGltbWVkaWF0ZWx5LgorICAgICAgICBzY3JvbGxlci5jb250ZW50
V2luZG93LnNjcm9sbFggPSAzMDA7CisgICAgICAgIHNjcm9sbGVyLmNvbnRlbnRXaW5kb3cuc2Ny
b2xsWSA9IDMwMDsKKyAgICAgICAgc2Nyb2xsZXIuY29udGVudFdpbmRvdy5zY3JvbGxUbygzMDAs
IDMwMCk7CisKKyAgICAgICAgcm9vdC5zY3JvbGxMZWZ0ID0gMDsKKyAgICAgICAgcm9vdC5zY3Jv
bGxUb3AgPSAwOworICAgICAgICByb290LnNjcm9sbFRvKDAsIDApOworICAgIH0KKworICAgIGZ1
bmN0aW9uIG92ZXJzY3JvbGxCZWhhdmlvclRlc3QoKSB7CisgICAgICAgIG92ZXJzY3JvbGxEYXRh
cy5mb3JFYWNoKChbb3ZlcnNjcm9sbFgsIG92ZXJzY3JvbGxZLCBwcm9wYWdhdGVYLCBwcm9wYWdh
dGVZXSkgPT4geworICAgICAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAg
ICAgICByZXNldFRlc3QoKTsKKyAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gc2Nyb2xsZXIu
Y29udGVudFdpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaHRtbCIpWzBdOwor
ICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JYID0gb3ZlcnNj
cm9sbFg7CisgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclkg
PSBvdmVyc2Nyb2xsWTsKKworICAgICAgICAgICAgICAgIHZhciB4ID0gc2Nyb2xsZXIuY2xpZW50
V2lkdGggLyAyOworICAgICAgICAgICAgICAgIHZhciB5ID0gc2Nyb2xsZXIuY2xpZW50SGVpZ2h0
IC8gMjsKKyAgICAgICAgICAgICAgICB2YXIgZGVsdGEgPSBnZXREZWx0YXMoInJpZ2h0Iik7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIG1vdXNlV2hlZWxTY3JvbGxBbmRXYWl0KHgsIHksIGRlbHRh
LlgsIGRlbHRhLlksIGRlbHRhLlgsIGRlbHRhLlkpLnRoZW4oKCkgPT4geworICAgICAgICAgICAg
ICAgICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsTGVmdCA+IDAsIHByb3BhZ2F0ZVgsICdD
b250aW51ZSB1cCB0aGUgaG9yaXpvbnRhbCBzY3JvbGwgY2hhaW5pbmcnKTsKKyAgICAgICAgICAg
ICAgICB9KTsKKyAgICAgICAgICAgIH0sICdJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3
aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6ICcgKyBvdmVyc2Nyb2xsWCArICcgJyArIG92ZXJzY3Jv
bGxZICsgJy4nKTsKKworICAgICAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAg
ICAgICAgICByZXNldFRlc3QoKTsKKyAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gc2Nyb2xs
ZXIuY29udGVudFdpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaHRtbCIpWzBd
OworICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JYID0gb3Zl
cnNjcm9sbFg7CisgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlv
clkgPSBvdmVyc2Nyb2xsWTsKKworICAgICAgICAgICAgICAgIHZhciB4ID0gc2Nyb2xsZXIuY2xp
ZW50V2lkdGggLyAyOworICAgICAgICAgICAgICAgIHZhciB5ID0gc2Nyb2xsZXIuY2xpZW50SGVp
Z2h0IC8gMjsKKyAgICAgICAgICAgICAgICB2YXIgZGVsdGEgPSBnZXREZWx0YXMoImRvd24iKTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gbW91c2VXaGVlbFNjcm9sbEFuZFdhaXQoeCwgeSwgZGVs
dGEuWCwgZGVsdGEuWSwgZGVsdGEuWCwgZGVsdGEuWSkudGhlbigoKSA9PiB7CisgICAgICAgICAg
ICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxUb3AgPiAwLCBwcm9wYWdhdGVZLCAn
Q29udGludWUgdXAgdGhlIHZlcnRpY2FsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAgICAgICAg
ICAgIH0pOworICAgICAgICAgICAgfSwgJ0lmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRo
IG92ZXJzY3JvbGwtYmVoYXZpb3I6ICcgKyBvdmVyc2Nyb2xsWCArICcgJyArIG92ZXJzY3JvbGxZ
ICsgJy4nKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgc2Nyb2xsZXIuYWRkRXZlbnRMaXN0
ZW5lcigibG9hZCIsIG92ZXJzY3JvbGxCZWhhdmlvclRlc3QpOworPC9zY3JpcHQ+ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxp
bmcvbWFjL2FzeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVt
ZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1z
Y3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uZjM5NWI2NDg4ZAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1zY3Jv
bGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSw0IEBACisKK1BBU1MgVW5zY3JvbGxhYmxlIGVsZW1lbnQgaG9yaXpvbnRhbCBz
Y3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuCitQQVNTIFVuc2Nyb2xs
YWJsZSBlbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlv
cjogbm9uZS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2Fz
eW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtc2Nyb2xsLW92ZXJzY3JvbGwt
YmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwLi5mMTIwNWVhMWMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVu
c2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWwKQEAgLTAsMCArMSw2NiBAQAorPCFkb2N0eXBlIGh0bWw+
IDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgQXN5bmNPdmVyZmxvd1Njcm9sbGluZ0VuYWJsZWQ9
dHJ1ZSBBc3luY0ZyYW1lU2Nyb2xsaW5nRW5hYmxlZD10cnVlIF0gLS0+CisKKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL292ZXJzY3JvbGwtYmVoYXZpb3Itc3VwcG9ydC5qcyI+
PC9zY3JpcHQ+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vZHJhZnRzLmNzc3dnLm9y
Zy9jc3Mtb3ZlcnNjcm9sbC1iZWhhdmlvciI+Cis8c3R5bGU+CisgICAgLnNjcm9sbGluZyB7Cisg
ICAgICAgIG92ZXJmbG93OiBzY3JvbGw7CisgICAgfQorICAgIC5zY3JvbGxDb250ZW50IHsKKyAg
ICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgIH0KKyAgICAj
cm9vdCB7CisgICAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgICAgaGVpZ2h0OiAyMDBweDsKKyAg
ICB9CisgICAgI3Njcm9sbGVyIHsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBoZWln
aHQ6IDEwMHB4OworICAgICAgICBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lOworICAgICAgICBv
dmVyZmxvdzogdmlzaWJsZTsKKyAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEz
NWRlZywgcmVkLCBibHVlKTsKKyAgICB9Cis8L3N0eWxlPgorPGRpdiBpZD0icm9vdCIgY2xhc3M9
InNjcm9sbGluZyI+CisgICAgPGRpdiBpZD0ic2Nyb2xsZXIiPgorICAgICAgICA8ZGl2IGNsYXNz
PSJzY3JvbGxDb250ZW50Ij48L2Rpdj4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJzY3Jv
bGxDb250ZW50Ij48L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0PgorY29uc3Qgcm9vdCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdyb290Jyk7Citjb25zdCBzY3JvbGxlciA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdzY3JvbGxlcicpOworZnVuY3Rpb24gcmVzZXRUZXN0KCkgeworICAgIHJv
b3Quc2Nyb2xsTGVmdCA9IDA7CisgICAgcm9vdC5zY3JvbGxUb3AgPSAwOworICAgIHJvb3Quc2Ny
b2xsVG8oMCwgMCk7Cit9CisKK2Z1bmN0aW9uIHN0YXJ0VGVzdCgpIHsKKyAgICAgICAgcHJvbWlz
ZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAgIHJlc2V0VGVzdCgpOworICAgICAgICAgICAgdmFy
IHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAgICAgICAgICB2YXIgeSA9IHNjcm9s
bGVyLmNsaWVudEhlaWdodCAvIDI7CisgICAgICAgICAgICB2YXIgZGVsdGEgPSBnZXREZWx0YXMo
InJpZ2h0Iik7CisgICAgICAgICAgICByZXR1cm4gbW91c2VXaGVlbFNjcm9sbEFuZFdhaXQoeCwg
eSwgZGVsdGEuWCwgZGVsdGEuWSwgZGVsdGEuWCwgZGVsdGEuWSkudGhlbigoKSA9PiB7CisgICAg
ICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbExlZnQgPiAwLCB0cnVlLCAnQ29u
dGludWUgdXAgdGhlIGhvcml6b250YWwgc2Nyb2xsIGNoYWluaW5nJyk7CisgICAgICAgICAgICB9
KTsKKyAgICAgICAgfSwgJ1Vuc2Nyb2xsYWJsZSBlbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRl
c3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLicpOworCisgICAgICAgIHByb21pc2Vf
dGVzdCgoKSA9PiB7CisgICAgICAgICAgICByZXNldFRlc3QoKTsKKyAgICAgICAgICAgIHZhciB4
ID0gc2Nyb2xsZXIuY2xpZW50V2lkdGggLyAyOworICAgICAgICAgICAgdmFyIHkgPSBzY3JvbGxl
ci5jbGllbnRIZWlnaHQgLyAyOworICAgICAgICAgICAgdmFyIGRlbHRhID0gZ2V0RGVsdGFzKCJk
b3duIik7CisgICAgICAgICAgICByZXR1cm4gbW91c2VXaGVlbFNjcm9sbEFuZFdhaXQoeCwgeSwg
ZGVsdGEuWCwgZGVsdGEuWSwgZGVsdGEuWCwgZGVsdGEuWSkudGhlbigoKSA9PiB7CisgICAgICAg
ICAgICAgICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbFRvcCA+IDAsIHRydWUsICdDb250aW51
ZSB1cCB0aGUgdmVydGljYWwgc2Nyb2xsIGNoYWluaW5nJyk7CisgICAgICAgICAgICB9KTsKKyAg
ICAgICAgfSwgJ1Vuc2Nyb2xsYWJsZSBlbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGgg
b3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4nKTsKK30KKworYWRkRXZlbnRMaXN0ZW5lcigibG9h
ZCIsIHN0YXJ0VGVzdCk7Cis8L3NjcmlwdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtc2Nyb2xsLW92
ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZp
b3ItdW5zY3JvbGxhYmxlLWlmcmFtZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMC4uN2ZhNTljY2JhNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11
bnNjcm9sbGFibGUtaWZyYW1lLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKKworCitQQVNT
IFVuc2Nyb2xsYWJsZSBpZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3Jv
bGwtYmVoYXZpb3I6IG5vbmUuCitQQVNTIFVuc2Nyb2xsYWJsZSBpZnJhbWUgdmVydGljYWwgc2Ny
b2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLgorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVo
YXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxp
bmcvbWFjL2FzeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJh
bWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4zM2VjNWIyNjNj
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5j
LXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUuaHRtbApAQCAt
MCwwICsxLDY2IEBACis8IWRvY3R5cGUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBB
c3luY092ZXJmbG93U2Nyb2xsaW5nRW5hYmxlZD10cnVlIEFzeW5jRnJhbWVTY3JvbGxpbmdFbmFi
bGVkPXRydWUgXSAtLT4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFy
bmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvb3Zl
cnNjcm9sbC1iZWhhdmlvci1zdXBwb3J0LmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0iaGVscCIg
aHJlZj0iaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1vdmVyc2Nyb2xsLWJlaGF2aW9yIj4K
KzxzdHlsZT4KKyAgICAuc2Nyb2xsaW5nIHsKKyAgICAgICAgb3ZlcmZsb3c6IHNjcm9sbDsKKyAg
ICB9CisgICAgLnNjcm9sbENvbnRlbnQgeworICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAg
IGhlaWdodDogMzAwcHg7CisgICAgfQorICAgICNyb290IHsKKyAgICAgICAgd2lkdGg6IDIwMHB4
OworICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAgIH0KKyAgICAjc2Nyb2xsZXIgeworICAgICAg
ICB3aWR0aDogMjAwcHg7CisgICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgICAgIG92ZXJzY3Jv
bGwtYmVoYXZpb3I6IG5vbmU7CisgICAgICAgIG92ZXJmbG93OiB2aXNpYmxlOworICAgICAgICBi
YWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZWQsIGJsdWUpOworICAgIH0KKzwv
c3R5bGU+Cis8ZGl2IGlkPSdyb290JyBjbGFzcz0ic2Nyb2xsaW5nIj4KKyAgICA8aWZyYW1lIGlk
PSdzY3JvbGxlcicgc3JjZG9jPSI8aHRtbCBzdHlsZT0nb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9u
ZTsnPjxkaXYgc3R5bGU9J3dpZHRoOiAxMDBweDsgaGVpZ2h0OiAxMDBweDsnPjwvZGl2PjwvaHRt
bD4KKyAgICAgICAgIj48L2lmcmFtZT4KKyAgICA8ZGl2IGNsYXNzPSJzY3JvbGxDb250ZW50Ij48
L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0PgorY29uc3Qgcm9vdCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdyb290Jyk7Citjb25zdCBzY3JvbGxlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdzY3JvbGxlcicpOworCitmdW5jdGlvbiByZXNldFRlc3QoKSB7CisgICAgcm9vdC5zY3JvbGxM
ZWZ0ID0gMDsKKyAgICByb290LnNjcm9sbFRvcCA9IDA7CisgICAgcm9vdC5zY3JvbGxUbygwLCAw
KTsKK30KKworZnVuY3Rpb24gc3RhcnRUZXN0KCkgeworICAgICAgICBwcm9taXNlX3Rlc3QoKCkg
PT4geworICAgICAgICAgICAgcmVzZXRUZXN0KCk7CisgICAgICAgICAgICB2YXIgeCA9IHNjcm9s
bGVyLmNsaWVudFdpZHRoIC8gMjsKKyAgICAgICAgICAgIHZhciB5ID0gc2Nyb2xsZXIuY2xpZW50
SGVpZ2h0IC8gMjsKKyAgICAgICAgICAgIHZhciBkZWx0YSA9IGdldERlbHRhcygicmlnaHQiKTsK
KyAgICAgICAgICAgIHJldHVybiBtb3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCh4LCB5LCBkZWx0YS5Y
LCBkZWx0YS5ZLCBkZWx0YS5YLCBkZWx0YS5ZKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAg
ICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsTGVmdCA+IDAsIHRydWUsICdDb250aW51ZSB1cCB0
aGUgaG9yaXpvbnRhbCBzY3JvbGwgY2hhaW5pbmcnKTsKKyAgICAgICAgICAgIH0pOworICAgICAg
ICB9LCAnVW5zY3JvbGxhYmxlIGlmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3Zl
cnNjcm9sbC1iZWhhdmlvcjogbm9uZS4nKTsKKworICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4g
eworICAgICAgICAgICAgcmVzZXRUZXN0KCk7CisgICAgICAgICAgICB2YXIgeCA9IHNjcm9sbGVy
LmNsaWVudFdpZHRoIC8gMjsKKyAgICAgICAgICAgIHZhciB5ID0gc2Nyb2xsZXIuY2xpZW50SGVp
Z2h0IC8gMjsKKyAgICAgICAgICAgIHZhciBkZWx0YSA9IGdldERlbHRhcygiZG93biIpOworICAg
ICAgICAgICAgcmV0dXJuIG1vdXNlV2hlZWxTY3JvbGxBbmRXYWl0KHgsIHksIGRlbHRhLlgsIGRl
bHRhLlksIGRlbHRhLlgsIGRlbHRhLlkpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGFz
c2VydF9lcXVhbHMocm9vdC5zY3JvbGxUb3AgPiAwLCB0cnVlLCAnQ29udGludWUgdXAgdGhlIHZl
cnRpY2FsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0sICdV
bnNjcm9sbGFibGUgaWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1i
ZWhhdmlvcjogbm9uZS4nKTsKK30KKworYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIHN0YXJ0VGVz
dCk7Cis8L3NjcmlwdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9yZXNvdXJjZXMvb3ZlcnNjcm9sbC1iZWhhdmlvci1z
dXBwb3J0LmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvcmVzb3VyY2VzL292ZXJzY3Jv
bGwtYmVoYXZpb3Itc3VwcG9ydC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwLi5iMzNmMzZjMGUwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3Jv
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
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4yNzE1MGZmNjBi
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3Jv
bGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIw
IEBACisKK1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9s
bC1iZWhhdmlvcjogYXV0byBhdXRvLgorUEFTUyBFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0
IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBhdXRvLgorUEFTUyBFbGVtZW50IGhvcml6
b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGF1dG8u
CitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2
aW9yOiBjb250YWluIGF1dG8uCitQQVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3
aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgYXV0by4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNh
bCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgYXV0by4KK1BBU1Mg
RWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjog
YXV0byBjb250YWluLgorUEFTUyBFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3Zl
cnNjcm9sbC1iZWhhdmlvcjogYXV0byBjb250YWluLgorUEFTUyBFbGVtZW50IGhvcml6b250YWwg
c2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGNvbnRhaW4uCitQ
QVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9y
OiBjb250YWluIGNvbnRhaW4uCitQQVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3
aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgY29udGFpbi4KK1BBU1MgRWxlbWVudCB2ZXJ0
aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgY29udGFpbi4K
K1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhh
dmlvcjogYXV0byBub25lLgorUEFTUyBFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGgg
b3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBub25lLgorUEFTUyBFbGVtZW50IGhvcml6b250YWwg
c2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIG5vbmUuCitQQVNT
IEVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBj
b250YWluIG5vbmUuCitQQVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92
ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgbm9uZS4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3Jv
bGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgbm9uZS4KKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhh
dmlvci1lbGVtZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9s
bC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwLi45MTZjMzE0MWJhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50
Lmh0bWwKQEAgLTAsMCArMSw4NiBAQAorPCFkb2N0eXBlIGh0bWw+CisKKzxzY3JpcHQgc3JjPSIu
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
cm9sbGVyLnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclkgPSBvdmVyc2Nyb2xsWTsKKworICAgICAg
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
IDAwMDAwMDAwMDAuLjkwMGEwYjdkOTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwyMSBAQAorCisKK1BBU1MgSWZyYW1lIGhvcml6b250YWwgc2Ny
b2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIGF1dG8uCitQQVNTIElmcmFt
ZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gYXV0
by4KK1BBU1MgSWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJl
aGF2aW9yOiBjb250YWluIGF1dG8uCitQQVNTIElmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3
aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gYXV0by4KK1BBU1MgSWZyYW1lIGhvcml6
b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIGF1dG8uCitQ
QVNTIElmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6
IG5vbmUgYXV0by4KK1BBU1MgSWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVy
c2Nyb2xsLWJlaGF2aW9yOiBhdXRvIGNvbnRhaW4uCitQQVNTIElmcmFtZSB2ZXJ0aWNhbCBzY3Jv
bGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gY29udGFpbi4KK1BBU1MgSWZy
YW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250
YWluIGNvbnRhaW4uCitQQVNTIElmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJz
Y3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gY29udGFpbi4KK1BBU1MgSWZyYW1lIGhvcml6b250YWwg
c2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIGNvbnRhaW4uCitQQVNT
IElmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5v
bmUgY29udGFpbi4KK1BBU1MgSWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVy
c2Nyb2xsLWJlaGF2aW9yOiBhdXRvIG5vbmUuCitQQVNTIElmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwg
dGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gbm9uZS4KK1BBU1MgSWZyYW1lIGhv
cml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIG5v
bmUuCitQQVNTIElmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVo
YXZpb3I6IGNvbnRhaW4gbm9uZS4KK1BBU1MgSWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qg
d2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIG5vbmUuCitQQVNTIElmcmFtZSB2ZXJ0aWNh
bCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgbm9uZS4KKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9s
bC1iZWhhdmlvci1pZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMt
c2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMC4uZTI4ODQ1ZGI1MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZy
YW1lLmh0bWwKQEAgLTAsMCArMSw4OCBAQAorPCFkb2N0eXBlIGh0bWw+CisKKzxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL292ZXJzY3JvbGwtYmVoYXZpb3Itc3VwcG9ydC5qcyI+PC9zY3JpcHQ+
Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3Mtb3Zl
cnNjcm9sbC1iZWhhdmlvciI+Cis8c3R5bGU+CisgICAgLnNjcm9sbGluZyB7CisgICAgICAgIG92
ZXJmbG93OiBzY3JvbGw7CisgICAgfQorICAgIC5zY3JvbGxDb250ZW50IHsKKyAgICAgICAgd2lk
dGg6IDMwMHB4OworICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICBiYWNrZ3JvdW5kOiBs
aW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZWQsIGJsdWUpOworICAgIH0KKyAgICAjcm9vdCB7Cisg
ICAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgICAgaGVpZ2h0OiAyMDBweDsKKyAgICB9CisgICAg
I3Njcm9sbGVyIHsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBoZWlnaHQ6IDEwMHB4
OworICAgICAgICBvdmVyc2Nyb2xsLWJlaGF2aW9yLXk6IGF1dG87CisgICAgfQorPC9zdHlsZT4K
KzxkaXYgaWQ9J3Jvb3QnIGNsYXNzPSJzY3JvbGxpbmciPgorICAgIDxpZnJhbWUgaWQ9J3Njcm9s
bGVyJyBzcmNkb2M9IjxodG1sPjxkaXYgc3R5bGU9J3dpZHRoOiAzMDBweDsgaGVpZ2h0OiAzMDBw
eDsnPjwvZGl2PjwvaHRtbD4KKyAgICAgICAgIj48L2lmcmFtZT4KKyAgICA8ZGl2IGNsYXNzPSJz
Y3JvbGxDb250ZW50Ij48L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0PgorICAgIGNvbnN0IHJvb3Qg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncm9vdCcpOworICAgIGNvbnN0IHNjcm9sbGVyID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Njcm9sbGVyJyk7CisgICAgdmFyIG92ZXJzY3JvbGxE
YXRhcyA9IFtbImF1dG8iLCAiYXV0byIsIHRydWUsIHRydWVdLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFsiY29udGFpbiIsICJhdXRvIiwgZmFsc2UsIHRydWVdLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFsibm9uZSIsICJhdXRvIiwgZmFsc2UsIHRydWVdLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFsiYXV0byIsICJjb250YWluIiwgdHJ1ZSwgZmFsc2VdLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFsiY29udGFpbiIsICJjb250YWluIiwgZmFsc2UsIGZh
bHNlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIm5vbmUiLCAiY29udGFpbiIsIGZh
bHNlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJhdXRvIiwgIm5vbmUi
LCB0cnVlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJjb250YWluIiwg
Im5vbmUiLCBmYWxzZSwgZmFsc2VdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsibm9u
ZSIsICJub25lIiwgZmFsc2UsIGZhbHNlXV07CisgICAgZnVuY3Rpb24gcmVzZXRUZXN0KCkgewor
ICAgICAgICAvLyBUcnkgdmFyaW91cyBtZXRob2RzIHRvIGVuc3VyZSB0aGUgZWxlbWVudCBwb3Np
dGlvbiBpcyByZXNldCBpbW1lZGlhdGVseS4KKyAgICAgICAgc2Nyb2xsZXIuY29udGVudFdpbmRv
dy5zY3JvbGxYID0gMzAwOworICAgICAgICBzY3JvbGxlci5jb250ZW50V2luZG93LnNjcm9sbFkg
PSAzMDA7CisgICAgICAgIHNjcm9sbGVyLmNvbnRlbnRXaW5kb3cuc2Nyb2xsVG8oMzAwLCAzMDAp
OworCisgICAgICAgIHJvb3Quc2Nyb2xsTGVmdCA9IDA7CisgICAgICAgIHJvb3Quc2Nyb2xsVG9w
ID0gMDsKKyAgICAgICAgcm9vdC5zY3JvbGxUbygwLCAwKTsKKyAgICB9CisKKyAgICBmdW5jdGlv
biBvdmVyc2Nyb2xsQmVoYXZpb3JUZXN0KCkgeworICAgICAgICBvdmVyc2Nyb2xsRGF0YXMuZm9y
RWFjaCgoW292ZXJzY3JvbGxYLCBvdmVyc2Nyb2xsWSwgcHJvcGFnYXRlWCwgcHJvcGFnYXRlWV0p
ID0+IHsKKyAgICAgICAgICAgIHByb21pc2VfdGVzdCgoKSA9PiB7CisgICAgICAgICAgICAgICAg
cmVzZXRUZXN0KCk7CisgICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IHNjcm9sbGVyLmNvbnRl
bnRXaW5kb3cuZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImh0bWwiKVswXTsKKyAgICAg
ICAgICAgICAgICB0YXJnZXQuc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWCA9IG92ZXJzY3JvbGxY
OworICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JZID0gb3Zl
cnNjcm9sbFk7CisKKyAgICAgICAgICAgICAgICB2YXIgeCA9IHNjcm9sbGVyLmNsaWVudFdpZHRo
IC8gMjsKKyAgICAgICAgICAgICAgICB2YXIgeSA9IHNjcm9sbGVyLmNsaWVudEhlaWdodCAvIDI7
CisgICAgICAgICAgICAgICAgdmFyIGRlbHRhID0gZ2V0RGVsdGFzKCJyaWdodCIpOworICAgICAg
ICAgICAgICAgIHJldHVybiBtb3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCh4LCB5LCBkZWx0YS5YLCBk
ZWx0YS5ZLCBkZWx0YS5YLCBkZWx0YS5ZKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICAg
ICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbExlZnQgPiAwLCBwcm9wYWdhdGVYLCAnQ29udGlu
dWUgdXAgdGhlIGhvcml6b250YWwgc2Nyb2xsIGNoYWluaW5nJyk7CisgICAgICAgICAgICAgICAg
fSk7CisgICAgICAgICAgICB9LCAnSWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBv
dmVyc2Nyb2xsLWJlaGF2aW9yOiAnICsgb3ZlcnNjcm9sbFggKyAnICcgKyBvdmVyc2Nyb2xsWSAr
ICcuJyk7CisKKyAgICAgICAgICAgIHByb21pc2VfdGVzdCgoKSA9PiB7CisgICAgICAgICAgICAg
ICAgcmVzZXRUZXN0KCk7CisgICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IHNjcm9sbGVyLmNv
bnRlbnRXaW5kb3cuZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImh0bWwiKVswXTsKKyAg
ICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWCA9IG92ZXJzY3Jv
bGxYOworICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JZID0g
b3ZlcnNjcm9sbFk7CisKKyAgICAgICAgICAgICAgICB2YXIgeCA9IHNjcm9sbGVyLmNsaWVudFdp
ZHRoIC8gMjsKKyAgICAgICAgICAgICAgICB2YXIgeSA9IHNjcm9sbGVyLmNsaWVudEhlaWdodCAv
IDI7CisgICAgICAgICAgICAgICAgdmFyIGRlbHRhID0gZ2V0RGVsdGFzKCJkb3duIik7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIG1vdXNlV2hlZWxTY3JvbGxBbmRXYWl0KHgsIHksIGRlbHRhLlgs
IGRlbHRhLlksIGRlbHRhLlgsIGRlbHRhLlkpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAg
ICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsVG9wID4gMCwgcHJvcGFnYXRlWSwgJ0NvbnRp
bnVlIHVwIHRoZSB2ZXJ0aWNhbCBzY3JvbGwgY2hhaW5pbmcnKTsKKyAgICAgICAgICAgICAgICB9
KTsKKyAgICAgICAgICAgIH0sICdJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVy
c2Nyb2xsLWJlaGF2aW9yOiAnICsgb3ZlcnNjcm9sbFggKyAnICcgKyBvdmVyc2Nyb2xsWSArICcu
Jyk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIHNjcm9sbGVyLmFkZEV2ZW50TGlzdGVuZXIo
ImxvYWQiLCBvdmVyc2Nyb2xsQmVoYXZpb3JUZXN0KTsKKzwvc2NyaXB0PgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5
bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9s
bC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uZjM5NWI2NDg4ZAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZp
b3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorCitQ
QVNTIFVuc2Nyb2xsYWJsZSBlbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVy
c2Nyb2xsLWJlaGF2aW9yOiBub25lLgorUEFTUyBVbnNjcm9sbGFibGUgZWxlbWVudCB2ZXJ0aWNh
bCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVo
YXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xs
aW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi43Y2I3NzMzNjU5Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwt
b3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC5odG1sCkBAIC0wLDAgKzEs
NjYgQEAKKzwhZG9jdHlwZSBodG1sPgorCis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVz
dGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9vdmVy
c2Nyb2xsLWJlaGF2aW9yLXN1cHBvcnQuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJoZWxwIiBo
cmVmPSJodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLW92ZXJzY3JvbGwtYmVoYXZpb3IiPgor
PHN0eWxlPgorICAgIC5zY3JvbGxpbmcgeworICAgICAgICBvdmVyZmxvdzogc2Nyb2xsOworICAg
IH0KKyAgICAuc2Nyb2xsQ29udGVudCB7CisgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAg
aGVpZ2h0OiAzMDBweDsKKyAgICB9CisgICAgI3Jvb3QgeworICAgICAgICB3aWR0aDogMjAwcHg7
CisgICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgfQorICAgICNzY3JvbGxlciB7CisgICAgICAg
IHdpZHRoOiAxMDBweDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgICAgb3ZlcnNjcm9s
bC1iZWhhdmlvcjogbm9uZTsKKyAgICAgICAgb3ZlcmZsb3c6IHZpc2libGU7CisgICAgICAgIGJh
Y2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJlZCwgYmx1ZSk7CisgICAgfQorPC9z
dHlsZT4KKzxkaXYgaWQ9InJvb3QiIGNsYXNzPSJzY3JvbGxpbmciPgorICAgIDxkaXYgaWQ9InNj
cm9sbGVyIj4KKyAgICAgICAgPGRpdiBjbGFzcz0ic2Nyb2xsQ29udGVudCI+PC9kaXY+CisgICAg
PC9kaXY+CisgICAgPGRpdiBjbGFzcz0ic2Nyb2xsQ29udGVudCI+PC9kaXY+Cis8L2Rpdj4KKwor
PHNjcmlwdD4KK2NvbnN0IHJvb3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncm9vdCcpOwor
Y29uc3Qgc2Nyb2xsZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2Nyb2xsZXInKTsKK2Z1
bmN0aW9uIHJlc2V0VGVzdCgpIHsKKyAgICByb290LnNjcm9sbExlZnQgPSAwOworICAgIHJvb3Qu
c2Nyb2xsVG9wID0gMDsKKyAgICByb290LnNjcm9sbFRvKDAsIDApOworfQorCitmdW5jdGlvbiBz
dGFydFRlc3QoKSB7CisgICAgICAgIHByb21pc2VfdGVzdCgoKSA9PiB7CisgICAgICAgICAgICBy
ZXNldFRlc3QoKTsKKyAgICAgICAgICAgIHZhciB4ID0gc2Nyb2xsZXIuY2xpZW50V2lkdGggLyAy
OworICAgICAgICAgICAgdmFyIHkgPSBzY3JvbGxlci5jbGllbnRIZWlnaHQgLyAyOworICAgICAg
ICAgICAgdmFyIGRlbHRhID0gZ2V0RGVsdGFzKCJyaWdodCIpOworICAgICAgICAgICAgcmV0dXJu
IG1vdXNlV2hlZWxTY3JvbGxBbmRXYWl0KHgsIHksIGRlbHRhLlgsIGRlbHRhLlksIGRlbHRhLlgs
IGRlbHRhLlkpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9v
dC5zY3JvbGxMZWZ0ID4gMCwgdHJ1ZSwgJ0NvbnRpbnVlIHVwIHRoZSBob3Jpem9udGFsIHNjcm9s
bCBjaGFpbmluZycpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0sICdVbnNjcm9sbGFibGUg
ZWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjog
bm9uZS4nKTsKKworICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgICAgICAgICAgcmVz
ZXRUZXN0KCk7CisgICAgICAgICAgICB2YXIgeCA9IHNjcm9sbGVyLmNsaWVudFdpZHRoIC8gMjsK
KyAgICAgICAgICAgIHZhciB5ID0gc2Nyb2xsZXIuY2xpZW50SGVpZ2h0IC8gMjsKKyAgICAgICAg
ICAgIHZhciBkZWx0YSA9IGdldERlbHRhcygiZG93biIpOworICAgICAgICAgICAgcmV0dXJuIG1v
dXNlV2hlZWxTY3JvbGxBbmRXYWl0KHgsIHksIGRlbHRhLlgsIGRlbHRhLlksIGRlbHRhLlgsIGRl
bHRhLlkpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5z
Y3JvbGxUb3AgPiAwLCB0cnVlLCAnQ29udGludWUgdXAgdGhlIHZlcnRpY2FsIHNjcm9sbCBjaGFp
bmluZycpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0sICdVbnNjcm9sbGFibGUgZWxlbWVu
dCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuJyk7
Cit9CisKK2FkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBzdGFydFRlc3QpOworPC9zY3JpcHQ+Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9z
Y3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZy
YW1lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xs
LW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uN2ZhNTljY2JhNwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3Jv
bGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1
IEBACisKKworUEFTUyBVbnNjcm9sbGFibGUgaWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qg
d2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLgorUEFTUyBVbnNjcm9sbGFibGUgaWZyYW1l
IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4KKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNj
cm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1p
ZnJhbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5lMjQyNWFm
YzYzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1z
Y3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLmh0bWwKQEAgLTAs
MCArMSw2NiBAQAorPCFkb2N0eXBlIGh0bWw+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L292ZXJzY3JvbGwtYmVoYXZpb3Itc3VwcG9ydC5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9Imhl
bHAiIGhyZWY9Imh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3Mtb3ZlcnNjcm9sbC1iZWhhdmlv
ciI+Cis8c3R5bGU+CisgICAgLnNjcm9sbGluZyB7CisgICAgICAgIG92ZXJmbG93OiBzY3JvbGw7
CisgICAgfQorICAgIC5zY3JvbGxDb250ZW50IHsKKyAgICAgICAgd2lkdGg6IDMwMHB4OworICAg
ICAgICBoZWlnaHQ6IDMwMHB4OworICAgIH0KKyAgICAjcm9vdCB7CisgICAgICAgIHdpZHRoOiAy
MDBweDsKKyAgICAgICAgaGVpZ2h0OiAyMDBweDsKKyAgICB9CisgICAgI3Njcm9sbGVyIHsKKyAg
ICAgICAgd2lkdGg6IDIwMHB4OworICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAgICAgICBvdmVy
c2Nyb2xsLWJlaGF2aW9yOiBub25lOworICAgICAgICBvdmVyZmxvdzogdmlzaWJsZTsKKyAgICAg
ICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmVkLCBibHVlKTsKKyAgICB9
Cis8L3N0eWxlPgorPGRpdiBpZD0ncm9vdCcgY2xhc3M9InNjcm9sbGluZyI+CisgICAgPGlmcmFt
ZSBpZD0nc2Nyb2xsZXInIHNyY2RvYz0iPGh0bWwgc3R5bGU9J292ZXJzY3JvbGwtYmVoYXZpb3I6
IG5vbmU7Jz48ZGl2IHN0eWxlPSd3aWR0aDogMTAwcHg7IGhlaWdodDogMTAwcHg7Jz48L2Rpdj48
L2h0bWw+CisgICAgICAgICI+PC9pZnJhbWU+CisgICAgPGRpdiBjbGFzcz0ic2Nyb2xsQ29udGVu
dCI+PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4KK2NvbnN0IHJvb3QgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgncm9vdCcpOworY29uc3Qgc2Nyb2xsZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnc2Nyb2xsZXInKTsKKworZnVuY3Rpb24gcmVzZXRUZXN0KCkgeworICAgIHJvb3Quc2Ny
b2xsTGVmdCA9IDA7CisgICAgcm9vdC5zY3JvbGxUb3AgPSAwOworICAgIHJvb3Quc2Nyb2xsVG8o
MCwgMCk7Cit9CisKK2Z1bmN0aW9uIHN0YXJ0VGVzdCgpIHsKKyAgICAgICAgcHJvbWlzZV90ZXN0
KCgpID0+IHsKKyAgICAgICAgICAgIHJlc2V0VGVzdCgpOworICAgICAgICAgICAgdmFyIHggPSBz
Y3JvbGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAgICAgICAgICB2YXIgeSA9IHNjcm9sbGVyLmNs
aWVudEhlaWdodCAvIDI7CisgICAgICAgICAgICB2YXIgZGVsdGEgPSBnZXREZWx0YXMoInJpZ2h0
Iik7CisgICAgICAgICAgICByZXR1cm4gbW91c2VXaGVlbFNjcm9sbEFuZFdhaXQoeCwgeSwgZGVs
dGEuWCwgZGVsdGEuWSwgZGVsdGEuWCwgZGVsdGEuWSkudGhlbigoKSA9PiB7CisgICAgICAgICAg
ICAgICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbExlZnQgPiAwLCB0cnVlLCAnQ29udGludWUg
dXAgdGhlIGhvcml6b250YWwgc2Nyb2xsIGNoYWluaW5nJyk7CisgICAgICAgICAgICB9KTsKKyAg
ICAgICAgfSwgJ1Vuc2Nyb2xsYWJsZSBpZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRo
IG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuJyk7CisKKyAgICAgICAgcHJvbWlzZV90ZXN0KCgp
ID0+IHsKKyAgICAgICAgICAgIHJlc2V0VGVzdCgpOworICAgICAgICAgICAgdmFyIHggPSBzY3Jv
bGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAgICAgICAgICB2YXIgeSA9IHNjcm9sbGVyLmNsaWVu
dEhlaWdodCAvIDI7CisgICAgICAgICAgICB2YXIgZGVsdGEgPSBnZXREZWx0YXMoImRvd24iKTsK
KyAgICAgICAgICAgIHJldHVybiBtb3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCh4LCB5LCBkZWx0YS5Y
LCBkZWx0YS5ZLCBkZWx0YS5YLCBkZWx0YS5ZKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAg
ICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsVG9wID4gMCwgdHJ1ZSwgJ0NvbnRpbnVlIHVwIHRo
ZSB2ZXJ0aWNhbCBzY3JvbGwgY2hhaW5pbmcnKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9
LCAnVW5zY3JvbGxhYmxlIGlmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3Jv
bGwtYmVoYXZpb3I6IG5vbmUuJyk7Cit9CisKK2FkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBzdGFy
dFRlc3QpOworPC9zY3JpcHQ+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBlZjdmZGViM2M4Li41OTkxMjQ4
MTI0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9u
cworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNzk1
LDYgKzc5NSwxMiBAQCBzdmcvdGV4dC9zZWxlY3QtdGV4dC1zdmdmb250Lmh0bWwgWyBTa2lwIF0K
IHN2Zy90ZXh0L3NlbGVjdGlvbi1kb3VibGVjbGljay5zdmcgWyBTa2lwIF0KIHN2Zy90ZXh0L3Nl
bGVjdGlvbi10cmlwbGVjbGljay5zdmcgWyBTa2lwIF0KIAorIyBPdmVyc2Nyb2xsLWJlaGF2aW9y
IGlzIG5vdCBzdXBwb3J0ZWQgb24gaU9TCitmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVy
c2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQuaHRtbCBbIFNraXAgXQorZmFzdC9zY3JvbGxpbmcvc3lu
Yy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUuaHRtbCBbIFNraXAgXQorZmFzdC9z
Y3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxl
bWVudC5odG1sIFsgU2tpcCBdCitmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xs
LWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUuaHRtbCBbIFNraXAgXQorCiAjIElPUyBkb2Vz
IG5vdCBpbXBsZW1lbnQgc2V0QXV0b21hdGljTGlua0RldGVjdGlvbkVuYWJsZWQKIGVkaXRpbmcv
aW5zZXJ0aW5nL3R5cGluZy1zcGFjZS10by10cmlnZ2VyLXNtYXJ0LWxpbmsuaHRtbCBbIFNraXAg
XQogZWRpdGluZy9pbnNlcnRpbmcvc21hcnQtbGluay13aGVuLWNhcmV0LWlzLW1vdmVkLWJlZm9y
ZS1VUkwuaHRtbCBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
LXdrMS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0
RXhwZWN0YXRpb25zCmluZGV4IGUyMjcwYjZmOTkuLmYxMmMzZDkyYzQgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTQ1Myw2ICs0NTMsMTAg
QEAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXNjcm9sbC1zbmFwL3Nj
cm9sbC10YXJnZXQtcGFkZGluZy0wMDEuaHQKIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy1zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1zdG9wLWNoYW5nZS5odG1sIFsgRmFp
bHVyZSBdCiBjc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1wYWRkaW5nLW1haW5mcmFtZS1wYWdpbmcu
aHRtbCBbIEZhaWx1cmUgXQogCisjIExhY2sgb2Ygd2F5cyB0byBjb250cm9sIHRoZSBjcm9zcy1m
cmFtZSBzY3JvbGwgY2hhaW5pbmcgaW4gV0sxLgorZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwt
b3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUuaHRtbCBbIFNraXAgXQorZmFzdC9zY3JvbGxpbmcv
c3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLmh0bWwg
WyBTa2lwIF0KKwogIyMjIEVORCBPRiAoMikgRmFpbHVyZXMgd2l0aG91dCBidWcgcmVwb3J0cwog
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggMzNhOTQ0MDRkNy4uNGNm
MmNmMzU2NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhw
ZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0
aW9ucwpAQCAtMTAxLDYgKzEwMSwxMSBAQCBmYXN0L2FuaW1hdGlvbi9yZXF1ZXN0LWFuaW1hdGlv
bi1mcmFtZS1pbi10d28tcGFnZXMuaHRtbCBbIFBhc3MgXQogZmFzdC9mb3Jtcy9maWxlL2VudHJp
ZXMtYXBpL2ltYWdlLXRyYW5zY29kZS1vcGVuLXBhbmVsLmh0bWwgWyBQYXNzIF0KIGZhc3QvZm9y
bXMvZmlsZS9lbnRyaWVzLWFwaS9pbWFnZS1uby10cmFuc2NvZGUtb3Blbi1wYW5lbC5odG1sIFsg
UGFzcyBdCiAKK2Zhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhh
dmlvci1lbGVtZW50Lmh0bWwgWyBTbG93IF0KK2Zhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1zY3Jv
bGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUuaHRtbCBbIFNsb3cgXQorZmFzdC9zY3JvbGxp
bmcvbWFjL2FzeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJh
bWUuaHRtbCBbIFNsb3cgXQorZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLXNjcm9sbC1vdmVyc2Ny
b2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWwgWyBTbG93IF0KKwogIy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogIyBFbmQgcGxhdGZvcm0tc3BlY2lmaWMgZGly
ZWN0b3JpZXMuCiAjLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggYWJmNDc4OWYyMi4uNDNhNTEwMTZiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNyBAQAor
MjAyMS0wMy0xNSAgQ2F0aGllIENoZW4gIDxjYXRoaWVjaGVuQGlnYWxpYS5jb20+CisKKyAgICAg
ICAgSW1wbGVtZW50IENTUyBvdmVyc2Nyb2xsLWJlaGF2aW9yIGZvciBhc3luY2hyb25vdXMgc2Ny
b2xsIG9uIE1hYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjIwMTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhpcyBwYXRjaCBzdXBwb3J0cyBvdmVyc2Nyb2xsLWJlaGF2aW9yIGZvciB0aGUgYXN5bmNo
cm9ub3VzIHNjcm9sbCBvbiBNYWMuIAorICAgICAgICBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZSBzdG9yZXMgdGhlIHZhbHVlcyBvZiBvdmVyc2Nyb2xsLWJlaGF2aW9yLiBJbiBvcmRlciB0byBt
YWtlIHN1cmUgdGhlIGNvbnNpc3RlbmN5LAorICAgICAgICBvdmVyc2Nyb2xsLWJlaGF2aW9yIHRy
aWdnZXJzIHJlY29tcG9zaXRlQ2hhbmdlUmVxdWlyZXNHZW9tZXRyeVVwZGF0ZSB3aGVuIHRoZSB2
YWx1ZXMgYXJlIGNoYW5nZWQuCisgICAgICAgIFRoZSBzY3JvbGwgY2hhaW5pbmcgYW5kIHN3aXBl
IGdlc3R1cmVzIGFyZSBoYW5kbGVkIGluIFNjcm9sbGluZ1RyZWU6OmhhbmRsZVdoZWVsRXZlbnRX
aXRoTm9kZS4KKyAgICAgICAgQWJvdXQgdGhlIHNjcm9sbCBzdHJldGNoIGluIFNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMgaXMgY2FuY2VsZWQgb3ZlcnNjcm9sbC1iZWhhdmlv
ciBpcyBub25lLgorCisgICAgICAgIFRlc3RzOiBmYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtc2Ny
b2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC5odG1sCisgICAgICAgICAgICAgICBmYXN0
L3Njcm9sbGluZy9tYWMvYXN5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0
bWwKKyAgICAgICAgICAgICAgIGZhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1zY3JvbGwtb3ZlcnNj
cm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC5odG1sCisgICAgICAgICAgICAgICBm
YXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3Jv
bGxhYmxlLWlmcmFtZS5odG1sCisKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9s
bGluZ0Nvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jU2Nyb2xsaW5nQ29v
cmRpbmF0b3I6OnNldFNjcm9sbGluZ05vZGVTY3JvbGxhYmxlQXJlYUdlb21ldHJ5KTogU2V0IG92
ZXJzY3JvbGxCZWhhdmlvciB2YWx1ZXMgdG8gU2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzLgorICAg
ICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yVHlwZXMuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGFibGVBcmVhUGFyYW1ldGVyczo6b3BlcmF0b3I9PSBjb25zdCk6
IEFkZCBob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yIGFuZCB2ZXJ0aWNhbE92ZXJzY3JvbGxC
ZWhhdmlvci4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWU6OnNob3VsZEJsb2NrU2Nyb2xsQ2hhaW5pbmdX
aXRoTm9kZSk6IEFjY29yZGluZyB0byB0aGUgdmFsdWUgb2YgU2Nyb2xsQ2hhaW5pbmdCbG9ja2Vy
IHRvIGRlY2lkZSBibG9jayB0aGUgc2Nyb2xsIGNoYWluaW5nIG9yIG5vdC4KKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGluZ1RyZWU6OmhhbmRsZVdoZWVsRXZlbnRXaXRoTm9kZSk6IElmIHRoZSBo
b3Jpem9udGFsIHNjcm9sbCBjaGFpbmluZyBpcyBibG9ja2VkLCByZXR1cm4gV2hlZWxFdmVudEhh
bmRsaW5nUmVzdWx0Ojp1bmhhbmRsZWQoKSwgYW5kIHRoZSBzd2lwZSBnZXN0dXJlIHdpbGwgYmUg
dHJpZ2dlcmVkLgorICAgICAgICBJZiB0aGUgdmVydGljYWwgc2Nyb2xsIGNoYWluaW5nIGlzIGJs
b2NrZWQsIHJldHVybiBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQ6OmhhbmRsZWQoKS4KKyAgICAg
ICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmg6CisgICAgICAgICogcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6Omhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3Ig
Y29uc3QpOiBSZXR1cm4gdGhlIHZhbHVlIG9mIG92ZXJzY3JvbGwtYmVoYXZpb3IteC4KKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjp2ZXJ0aWNhbE92ZXJzY3Jv
bGxCZWhhdmlvciBjb25zdCk6IFJldHVybiB0aGUgdmFsdWUgb2Ygb3ZlcnNjcm9sbC1iZWhhdmlv
ci1ZLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OnVwZGF0
ZVNjcm9sbENoYWluaW5nQmxvY2tlclN0YXRlIGNvbnN0KTogVXBkYXRlIFNjcm9sbENoYWluaW5n
QmxvY2tlciBhY2NvcmRpbmcgdG8gb3ZlcnNjcm9sbC1iZWhhdmlvciB2YWx1ZXMuCisgICAgICAg
ICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaDoKKyAgICAgICAg
KiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdh
dGVNYWM6OmFsbG93c0hvcml6b250YWxTdHJldGNoaW5nIGNvbnN0KTogRG9uJ3Qgc3RyZXRjaCB3
aGVuIG92ZXJzY29ybGwtYmVoYXZpb3IteCBpcyAibm9uZSIuCisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjphbGxvd3NWZXJ0aWNhbFN0cmV0
Y2hpbmcgY29uc3QpOiBEb24ndCBzdHJldGNoIHdoZW4gb3ZlcnNjb3JsbC1iZWhhdmlvci15IGlz
ICJub25lIi4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnJlY29tcG9zaXRlQ2hhbmdlUmVxdWlyZXNHZW9tZXRyeVVwZGF0
ZSk6IFJldHVybiB0cnVlIHdoZW4gb3ZlcnNjcm9sbEJlaGF2aW9yIGlzIGNoYW5nZWQuCisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJvb3RPckJvZHlTdHlsZUNoYW5n
ZWQpOiBUaGUgcm9vdCBsYXllciBuZWVkcyBzZXROZWVkc0NvbXBvc2l0aW5nR2VvbWV0cnlVcGRh
dGUgd2hlbiBodG1sIG9yIGJvZHkncyBvdmVyc2Nyb2xsQmVoYXZpb3IgaXMgY2hhbmdlZC4KKyAg
ICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU3R5bGU6OmNoYW5nZVJlcXVpcmVzUmVjb21wb3NpdGVMYXllciBjb25zdCk6IFJl
dHVybiB0cnVlIHdoZW4gb3ZlcnNjcm9sbEJlaGF2aW9yIGlzIGNoYW5nZWQuCisKKzIwMjEtMDMt
MTUgIENhdGhpZSBDaGVuICA8Y2F0aGllY2hlbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFN1cHBv
cnQgQ1NTIG92ZXJzY3JvbGwtYmVoYXZpb3IgZm9yIHN5bmNocm9ub3VzIHNjcm9sbAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyOTY4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmFzZWQgb24gRnLDqWTD
qXJpYyBXYW5nJ3MgcGF0Y2guCisKKyAgICAgICAgVGhpcyBwYXRjaCBicmluZ3MgaW5pdGlhbCBz
dXBwb3J0IG9mIENTUyBwcm9wZXJ0eSBvdmVyc2Nyb2xsLWJlaGF2aW9yLiBPdmVyc2Nyb2xsLWJl
aGF2aW9yIHNldHMgd2hhdAorICAgICAgICB0aGUgYnJvd3NlciBkb2VzIHdoZW4gcmVhY2hpbmcg
dGhlIGJvdW5kYXJ5IG9mIGEgc2Nyb2xsaW5nIGFyZWEuIEZpcmVmb3ggYW5kIENocm9taXVtLXZh
cmlhbnQgYnJvd3NlcnMKKyAgICAgICAgYWxyZWFkeSBzdXBwb3J0IGl0LiBJdHMgc3BlY2lmaWNh
dGlvbiBjYW4gYmUgZm91bmQgYXQgaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1vdmVyc2Ny
b2xsLTEvI292ZXJzY3JvbGwtYmVoYXZpb3ItcHJvcGVydGllcworICAgICAgICBUaGlzIHBhdGNo
IGFpbXMgdG8gc3VwcG9ydCBpdCBmb3IgdGhlIHN5bmNocm9ub3VzIHNjcm9sbC4gVGhlIGFzeW5j
aHJvbm91cyBzY3JvbGwgb24gTWFjIHdpbGwgYmUgY292ZXJlZCBsYXRlci4KKworICAgICAgICBB
Y2NvcmRpbmcgdG8gdGhlIHZhbHVlIG9mIG92ZXJzY3JvbGwtYmVoYXZpb3IsIHRoaXMgcGF0Y2gg
Y29udHJvbHMgdGhlIHNjcm9sbCBjaGFpbmluZywgdGhlIHNjcm9sbCBzdHJldGNoLAorICAgICAg
ICBhbmQgc3dpcGUgZ2VzdHVyZXMgZ2VuZXJhdGlvbiBvZiB0aGUgc3luY2hyb25vdXMgc2Nyb2xs
LiBUbyBjb250cm9sIHRoZSBzY3JvbGwgY2hhaW5pbmcsCisgICAgICAgIG1fc2Nyb2xsQ2hhaW5p
bmdCbG9ja2VyIGlzIGFkZGVkIHRvIEV2ZW50SGFubGRlciwgaXQgaXMgZ2VuZXJhdGVkIGFjY29y
ZGluZyB0byBvdmVyc2Nyb2xsLWJlaGF2aW9yIHZhbHVlcy4KKyAgICAgICAgSXQgaW5kaWNhdGVz
IHdoZXRoZXIgdGhlIHNjcm9sbCBjaGFpbmluZyBvZiB0aGlzIGZyYW1lIHNob3VsZCBiZSBzdG9w
cGVkIG9yIG5vdC4KKyAgICAgICAgVGhlIHNjcm9sbCBjaGFpbmluZyBpcyBoYW5kbGVkIGRpZmZl
cmVudGx5IGJ5IFdIRUVMX0VWRU5UX0xBVENISU5HIHNldHRpbmcuIElmIFdIRUVMX0VWRU5UX0xB
VENISU5HIGlzIG9mZiwKKyAgICAgICAgdGhlIHNjcm9sbCBjaGFpbmluZyBpcyBoYW5kbGVkIGRp
cmVjdGx5IGluIEV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudEluQXBwcm9wcmlhdGVFbmNs
b3NpbmdCb3goKS4KKyAgICAgICAgSWYgV0hFRUxfRVZFTlRfTEFUQ0hJTkcgaXMgb24sIHRoZSBs
YXRjaGVkIHNjcm9sbCB0YXJnZXQgaXMgYWx3YXlzIEZyYW1lVmlldyBpZiBpdCBuZWVkcyB0byBz
dG9wIHRoZSBzY3JvbGwgY2hhaW5pbmcuCisgICAgICAgIElmIGN1cnJlbnQgZnJhbWUgaXMgYSBz
dWJmcmFtZSwgdGhlIHZhbHVlIG9mIG1fc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIHdpbGwgYmUgcGFz
c2VkIHRvIGl0cyBwYXJlbnQgZnJhbWUuCisgICAgICAgIEFuZCBldmVudHVhbGx5LCBsZXQgdGhl
IG1haW5mcmFtZSBoYW5kbGUgbV9zY3JvbGxDaGFpbmluZ0Jsb2NrZXIuIFRoZSBtYWluZnJhbWUg
YmxvY2tzIHZlcnRpY2FsIHNjcm9sbCBjaGFpbmluZyBkaXJlY3RseSwKKyAgICAgICAgYW5kIGhv
cml6b250YWxseSBpdCB3aWxsIGxldCB0aGUgdmlld3MgZGVjaWRlIHdoZXRoZXIgaXQgc2hvdWxk
IGdlbmVyYXRlIHN3aXBlIGdlc3R1cmVzIG9yIG5vdC4KKyAgICAgICAgQWJvdXQgdGhlIHNjcm9s
bCBzdHJldGNoLCBpdCBpcyBjYW5jZWxlZCBpZiB0aGUgdmFsdWUgb2Ygb3ZlcnNjcm9sbC1iZWhh
dmlvciBpcyBub25lLgorCisgICAgICAgIFRlc3RzOiBmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9s
bC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9z
Y3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUuaHRtbAorICAg
ICAgICAgICAgICAgZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlv
ci11bnNjcm9sbGFibGUtZWxlbWVudC5odG1sCisgICAgICAgICAgICAgICBmYXN0L3Njcm9sbGlu
Zy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUuaHRt
bAorCisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRIYW5kbGVyOjpzY3JvbGxDaGFpbmluZ0Jsb2NrZXJDaGFuZ2VkQnlTdWJmcmFtZSk6IFVw
ZGF0ZSB0aGUgc3RhdGUgb2Ygc2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyIGlmIG1fc2Nyb2xsQ2hh
aW5pbmdCbG9ja2VyIGlzIGNoYW5nZWQgYnkgc3ViZnJhbWUuCisgICAgICAgIChXZWJDb3JlOjp1
cGRhdGVQYXJlbnRGcmFtZVNjcm9sbENoYWluaW5nQmxvY2tlcik6IFVwZGF0ZSBtX3Njcm9sbENo
YWluaW5nQmxvY2tlciBmb3IgcGFyZW50IGZyYW1lLgorICAgICAgICAoV2ViQ29yZTo6Y2hlY2tT
Y3JvbGxDaGFpbmluZ0Jsb2NrZXJGb3JGcmFtZVZpZXcpOiBDaGVjayBpZiBtX3Njcm9sbENoYWlu
aW5nQmxvY2tlciBibG9ja3MgdGhlIHNjcm9sbCBjaGFpbmluZyBvbiBGcmFtZVZpZXcsCisgICAg
ICAgIGRlYWwgd2l0aCBob3Jpem9udGFsIGFuZCB2ZXJ0aWNhbCBzY3JvbGwgY2hhaW5pbmcgZGlm
ZmVyZW50bHksIGFuZCB1cGRhdGUgdGhlIGRlbHRhIG9mIFdoZWVsRXZlbnQgaWYgaXQgZG9lc24n
dCBibG9jayB0aGUgc2Nyb2xsIGNoYWluaW5nLgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5k
bGVyOjpoYW5kbGVXaGVlbEV2ZW50SW50ZXJuYWwpOiBJZiBpdCdzIG1haW4gZnJhbWUsIGJsb2Nr
IHNjcm9sbCBjaGFpbmluZyBieSB0aGUgdmFsdWUgb2YgbV9zY3JvbGxDaGFpbmluZ0Jsb2NrZXIu
CisgICAgICAgIElmIGl0J3Mgc3ViZnJhbWUsIHBhc3MgbV9zY3JvbGxDaGFpbmluZ0Jsb2NrZXIg
dmFsdWUgdG8gcGFyZW50IGZyYW1lLiAKKyAgICAgICAgKFdlYkNvcmU6OmRpZFNjcm9sbEluU2Ny
b2xsYWJsZUFyZWEpOiBGaWx0ZXIgdGhlIHNjcm9sbCBkZWx0YSBieSB0aGUgU2Nyb2xsQ2hhaW5p
bmdCbG9ja2VyIHZhbHVlLgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVX
aGVlbEV2ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2luZ0JveCk6IEJsb2NrIHNjcm9sbCBjaGFpbmlu
ZyBhY2NvcmRpbmcgdG8gdGhlIHZhbHVlIG9mIG1fc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLgorICAg
ICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjp1cGRhdGVTY3JvbGxDaGFpbmluZ0Jsb2NrZXIp
OgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpyZXNldFNjcm9sbENoYWluaW5nQmxv
Y2tlcik6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuaDoKKyAgICAgICAgKiBwYWdlL0Zy
YW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6Omhvcml6b250YWxPdmVy
c2Nyb2xsQmVoYXZpb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojp2ZXJ0
aWNhbE92ZXJzY3JvbGxCZWhhdmlvciBjb25zdCk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcu
aDoKKyAgICAgICAgKiBwYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW06CisgICAgICAgIChXZWJD
b3JlOjpmaW5kRW5jbG9zaW5nU2Nyb2xsYWJsZUNvbnRhaW5lcik6IFVwZGF0ZSB0aGUgdmFsdWUg
b2YgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIGFuZCByZXR1cm4gbnVsbCBpZiBzaG91bGRCbG9ja1Nj
cm9sbENoYWluaW5nKCkuCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmRldGVybWlu
ZVdoZWVsRXZlbnRUYXJnZXQpOiBJZiBzaG91bGRCbG9ja1Njcm9sbENoYWluaW5nKCksIEZyYW1l
VmlldyB3aWxsIGJlIHRoZSBsYXRjaGVkIHNjcm9sbCB0YXJnZXQuCisgICAgICAgIChXZWJDb3Jl
OjpFdmVudEhhbmRsZXI6OnNjcm9sbENoYWluaW5nQmxvY2tlckNoYW5nZWRCeVN1YmZyYW1lKTog
RGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50Lmg6CisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybVdoZWVsRXZlbnQ6OndoZWVsRGVsdGFCaWFzaW5nVG93YXJkc1Zl
cnRpY2FsKTogTW92ZWQgZnJvbSBTY3JvbGxDb250cm9sbGVyLm1tCisgICAgICAgICogcGxhdGZv
cm0vU2Nyb2xsVHlwZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbENoYWluaW5nQmxvY2tl
cjo6c2hvdWxkQmxvY2tTY3JvbGxDaGFpbmluZyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxD
aGFpbmluZ0Jsb2NrZXI6OmZpbHRlckRlbHRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxh
YmxlQXJlYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6dXBkYXRlU2Ny
b2xsQ2hhaW5pbmdCbG9ja2VyU3RhdGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9s
bGFibGVBcmVhLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6aG9yaXpvbnRh
bE92ZXJzY3JvbGxCZWhhdmlvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxl
QXJlYTo6dmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IgY29uc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFu
aW1hdG9yTWFjOjpzaG91bGRGb3J3YXJkV2hlZWxFdmVudHNUb1BhcmVudCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck1hYzo6YWxsb3dzVmVydGljYWxTdHJldGNoaW5n
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTWFjOjphbGxvd3NIb3Jp
em9udGFsU3RyZXRjaGluZyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9sbENv
bnRyb2xsZXIubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxDb250cm9sbGVyOjpkaXJlY3Rp
b25Gcm9tRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQ29udHJvbGxlcjo6d2hlZWxE
ZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyU2Nyb2xsYWJsZUFyZWE6Omhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6dmVydGljYWxP
dmVyc2Nyb2xsQmVoYXZpb3IgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXll
clNjcm9sbGFibGVBcmVhLmg6CisKIDIwMjEtMDMtMTUgIEltYW5vbCBGZXJuYW5kZXogIDxpZmVy
bmFuZGV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgU3BsaXQgV2ViWFIgZmVhdHVyZXMgaW50byBl
bmFibGVkRmVhdHVyZXMsIHN1cHBvcnRlZEZlYXR1cmVzIGFuZCByZXF1ZXN0ZWRGZWF0dXJlcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDJmMThlMWVlZTkuLjVjYTkwNDM2
ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTI3MzksNiArMjczOSwx
MCBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6ZGV0ZXJtaW5lV2hlZWxFdmVudFRhcmdldChjb25zdCBQ
bGF0Zm9ybVdoZWVsRXZlbnQmLCBSZWZQdHI8RQogewogfQogCit2b2lkIEV2ZW50SGFuZGxlcjo6
c2Nyb2xsQ2hhaW5pbmdCbG9ja2VyQ2hhbmdlZEJ5U3ViZnJhbWUoY29uc3QgUGxhdGZvcm1XaGVl
bEV2ZW50JiwgUmVmUHRyPEVsZW1lbnQ+JiwgV2Vha1B0cjxTY3JvbGxhYmxlQXJlYT4mLCBib29s
JikKK3sKK30KKwogdm9pZCBFdmVudEhhbmRsZXI6OnJlY29yZFdoZWVsRXZlbnRGb3JEZWx0YUZp
bHRlcihjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50KQogewogICAgIGlmIChhdXRvKiBw
YWdlID0gbV9mcmFtZS5wYWdlKCkpCkBAIC0yODU3LDYgKzI4NjEsNTYgQEAgYm9vbCBFdmVudEhh
bmRsZXI6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2
ZW50LCBPcHRpb24KICAgICByZXR1cm4gaGFuZGxlZDsKIH0KIAorI2lmIEVOQUJMRShXSEVFTF9F
VkVOVF9MQVRDSElORykKK3N0YXRpYyB2b2lkIHVwZGF0ZVBhcmVudEZyYW1lU2Nyb2xsQ2hhaW5p
bmdCbG9ja2VyKGNvbnN0IFNjcm9sbGFibGVBcmVhKiBzY3JvbGxhYmxlQXJlYSwgRnJhbWUmIGZy
YW1lLCBTY3JvbGxDaGFpbmluZ0Jsb2NrZXImIGJsb2NrZXIpCit7CisgICAgYXV0byogcGFyZW50
ID0gZnJhbWUudHJlZSgpLnBhcmVudCgpOworICAgIGlmICghc2Nyb2xsYWJsZUFyZWEpCisgICAg
ICAgIHNjcm9sbGFibGVBcmVhID0gZnJhbWUudmlldygpOworICAgIGlmICghZnJhbWUucGFnZSgp
IHx8ICFwYXJlbnQgfHwgIXNjcm9sbGFibGVBcmVhKQorICAgICAgICByZXR1cm47CisgICAgc2Ny
b2xsYWJsZUFyZWEtPnVwZGF0ZVNjcm9sbENoYWluaW5nQmxvY2tlclN0YXRlKGJsb2NrZXIpOwor
ICAgIHBhcmVudC0+ZXZlbnRIYW5kbGVyKCkudXBkYXRlU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKGJs
b2NrZXIpOworfQorCitzdGF0aWMgYm9vbCBjaGVja1Njcm9sbENoYWluaW5nQmxvY2tlckZvckZy
YW1lVmlldyhjb25zdCBTY3JvbGxhYmxlQXJlYSogc2Nyb2xsYWJsZUFyZWEsIEZyYW1lJiBmcmFt
ZSwgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBTY3JvbGxDaGFpbmluZ0Jsb2NrZXIg
c2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLCBib29sJiBoYW5kbGVkRXZlbnQpCit7CisgICAgaWYgKCFz
Y3JvbGxhYmxlQXJlYSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKHNjcm9sbGFi
bGVBcmVhICE9IGZyYW1lLnZpZXcoKSkgeworICAgICAgICAvLyBXaGVlbCBldmVudCBpcyBnb2lu
ZyB0byBiZSBoYW5kbGVkIGJ5IEZyYW1lVmlldyBpbiBwcm9jZXNzV2hlZWxFdmVudEZvclNjcm9s
bGluZygpLAorICAgICAgICAvLyBzaG91bGQgbGV0IHNjcm9sbGFibGVBcmVhJ3Mgb3ZlcnNjcm9s
bC1iZWhhdmlvciBlZmZlY3QgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLgorICAgICAgICBzY3JvbGxh
YmxlQXJlYS0+dXBkYXRlU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyU3RhdGUoc2Nyb2xsQ2hhaW5pbmdC
bG9ja2VyKTsKKyAgICB9CisKKyAgICBGbG9hdFNpemUgZmlsdGVyZWREZWx0YSh3aGVlbEV2ZW50
LmRlbHRhWCgpLCB3aGVlbEV2ZW50LmRlbHRhWSgpKTsKKyAgICBhdXRvIGJpYXNlZERlbHRhID0g
UGxhdGZvcm1XaGVlbEV2ZW50Ojp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbChmaWx0
ZXJlZERlbHRhKTsKKyAgICBpZiAoc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLmJsb2NrWCAmJiAhYmlh
c2VkRGVsdGEuaGVpZ2h0KCkpIHsKKyAgICAgICAgLy8gSWYgdGhlIGhvcml6b250YWwgc2Nyb2xs
IGNoYWluaW5nIGlzIGJsb2NrZWQgYnkgb3ZlcnNjcm9sbC1iZWhhdmlvciBpbiBhIHN1YmZyYW1l
LgorICAgICAgICAvLyBJdCBwcm9wYWdhdGVzIGl0cyBTY3JvbGxDaGFpbmluZ0Jsb2NrZXIgdG8g
cGFyZW50IGZyYW1lcyBhbmQgZXZlbnR1YWxseSBsZXQgbWFpbmZyYW1lCisgICAgICAgIC8vIGRl
Y2lkZSB3aGV0aGVyIG5lZWQgdG8gdHJpZ2dlciBhIHN3aXBlIGdlc3R1cmUgb3Igbm90LgorICAg
ICAgICBpZiAoZnJhbWUuaXNNYWluRnJhbWUoKSkgeworICAgICAgICAgICAgLy8gSW4gbWFpbiBm
cmFtZSwgdHJpZ2dlciB0aGUgc3dpcGUgZ2VzdHVyZSBpZiBuZWVkZWQuCisgICAgICAgICAgICBo
YW5kbGVkRXZlbnQgPSAhYmlhc2VkRGVsdGEud2lkdGgoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIHVwZGF0ZVBhcmVudEZyYW1lU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKHNjcm9sbGFi
bGVBcmVhLCBmcmFtZSwgc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKTsKKyAgICAgICAgICAgIGhhbmRs
ZWRFdmVudCA9IGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
KworICAgIGlmIChTY3JvbGxDaGFpbmluZ0Jsb2NrZXI6OnNob3VsZEJsb2NrU2Nyb2xsQ2hhaW5p
bmcoc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLCBiaWFzZWREZWx0YSkpIHsKKyAgICAgICAgaGFuZGxl
ZEV2ZW50ID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgU2Nyb2xs
Q2hhaW5pbmdCbG9ja2VyOjpmaWx0ZXJEZWx0YShzY3JvbGxDaGFpbmluZ0Jsb2NrZXIsIGJpYXNl
ZERlbHRhLCBmaWx0ZXJlZERlbHRhKTsKKyAgICB3aGVlbEV2ZW50ID0gd2hlZWxFdmVudC5jb3B5
V2l0aERlbHRhc0FuZFZlbG9jaXR5KGZpbHRlcmVkRGVsdGEud2lkdGgoKSwgZmlsdGVyZWREZWx0
YS5oZWlnaHQoKSwgd2hlZWxFdmVudC5zY3JvbGxpbmdWZWxvY2l0eSgpKTsKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisjZW5kaWYKKwogYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnRJ
bnRlcm5hbChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50LCBPcHRpb25TZXQ8V2hlZWxF
dmVudFByb2Nlc3NpbmdTdGVwcz4gcHJvY2Vzc2luZ1N0ZXBzLCBPcHRpb25TZXQ8RXZlbnRIYW5k
bGluZz4mIGhhbmRsaW5nKQogewogICAgIGF1dG8qIGRvY3VtZW50ID0gbV9mcmFtZS5kb2N1bWVu
dCgpOwpAQCAtMjg4OSw2ICsyOTQzLDggQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVs
RXZlbnRJbnRlcm5hbChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50LCBPcHQKICAgICBh
dXRvIGRlZmVycmVyID0gV2hlZWxFdmVudFRlc3RNb25pdG9yQ29tcGxldGlvbkRlZmVycmVyIHsg
bW9uaXRvci5nZXQoKSwgdGhpcywgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpEZWZlclJlYXNvbjo6
SGFuZGxpbmdXaGVlbEV2ZW50T25NYWluVGhyZWFkIH07CiAjZW5kaWYKIAorICAgIHJlc2V0U2Ny
b2xsQ2hhaW5pbmdCbG9ja2VyKCk7CisKICAgICBtX2lzSGFuZGxpbmdXaGVlbEV2ZW50ID0gdHJ1
ZTsKICAgICBhdXRvIGFsbG93c1Njcm9sbGluZ1N0YXRlID0gU2V0Rm9yU2NvcGUobV9jdXJyZW50
V2hlZWxFdmVudEFsbG93c1Njcm9sbGluZywgcHJvY2Vzc2luZ1N0ZXBzLmNvbnRhaW5zKFdoZWVs
RXZlbnRQcm9jZXNzaW5nU3RlcHM6Ok1haW5UaHJlYWRGb3JTY3JvbGxpbmcpKTsKICAgICAKQEAg
LTI5MTMsMTEgKzI5NjksMTYgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnRJ
bnRlcm5hbChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50LCBPcHQKICAgICAvLyBpdHNl
bGYgZmluZHMgYW5kIHRyaWVzIHRvIHNjcm9sbCBvdmVyZmxvdyBzY3JvbGxlcnMuCiAgICAgZGV0
ZXJtaW5lV2hlZWxFdmVudFRhcmdldChldmVudCwgZWxlbWVudCwgc2Nyb2xsYWJsZUFyZWEsIGlz
T3ZlcldpZGdldCk7CiAKKyAgICBhdXRvIG9sZEJsb2NrZXIgPSBtX3Njcm9sbENoYWluaW5nQmxv
Y2tlcjsKICAgICBpZiAoZWxlbWVudCkgewogICAgICAgICBpZiAoaXNPdmVyV2lkZ2V0KSB7CiAg
ICAgICAgICAgICBpZiAoV2Vha1B0cjxXaWRnZXQ+IHdpZGdldCA9IHdpZGdldEZvckVsZW1lbnQo
KmVsZW1lbnQpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHBhc3NXaGVlbEV2ZW50VG9XaWRnZXQo
ZXZlbnQsICp3aWRnZXQuZ2V0KCksIHByb2Nlc3NpbmdTdGVwcykpCiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBjb21wbGV0ZVdpZGdldFdoZWVsRXZlbnQoZXZlbnQsIHdpZGdldCwgc2Nyb2xs
YWJsZUFyZWEpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKG1fc2Nyb2xsQ2hhaW5pbmdCbG9j
a2VyLmJsb2NrWCAhPSBvbGRCbG9ja2VyLmJsb2NrWCB8fCBtX3Njcm9sbENoYWluaW5nQmxvY2tl
ci5ibG9ja1kgIT0gb2xkQmxvY2tlci5ibG9ja1kpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8g
SWYgbV9zY3JvbGxDaGFpbmluZ0Jsb2NrZXIgaXMgY2hhbmdlZCBpbiBzdWJmcmFtZXMsIHRoZSBs
YWNoZWQgc3RhdGUgc2hvdWxkIGJlIGNhbGN1bGF0ZWQgYWdhaW4uCisgICAgICAgICAgICAgICAg
ICAgIHNjcm9sbENoYWluaW5nQmxvY2tlckNoYW5nZWRCeVN1YmZyYW1lKGV2ZW50LCBlbGVtZW50
LCBzY3JvbGxhYmxlQXJlYSwgaXNPdmVyV2lkZ2V0KTsKKyAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtMjk0OSwxMiArMzAxMCwyOSBAQCBib29sIEV2ZW50
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
ICAgICB9CiAKICAgICByZXR1cm4gaGFuZGxlZEV2ZW50OwpAQCAtMjk3MSwyMCArMzA0OSwyMyBA
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
QUJMRShXSEVFTF9FVkVOVF9MQVRDSElORykKQEAgLTMwMDYsMjEgKzMwODcsMjkgQEAgYm9vbCBF
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
eCA9IGN1cnJlbnRFbmNsb3NpbmdCb3gtPmNvbnRhaW5pbmdCbG9jaygpOwpAQCAtNDYzNCw0ICs0
NzIzLDE1IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpwYXNzTW91c2VNb3ZlRXZlbnRUb1N1YmZyYW1l
KE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIG1vCiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JN
KENPQ09BKSAmJiAhUExBVEZPUk0oV0lOKQogCit2b2lkIEV2ZW50SGFuZGxlcjo6dXBkYXRlU2Ny
b2xsQ2hhaW5pbmdCbG9ja2VyKGNvbnN0IFNjcm9sbENoYWluaW5nQmxvY2tlciYgYmxvY2tlcikK
K3sKKyAgICBtX3Njcm9sbENoYWluaW5nQmxvY2tlci5ibG9ja1ggfD0gYmxvY2tlci5ibG9ja1g7
CisgICAgbV9zY3JvbGxDaGFpbmluZ0Jsb2NrZXIuYmxvY2tZIHw9IGJsb2NrZXIuYmxvY2tZOwor
fQorCit2b2lkIEV2ZW50SGFuZGxlcjo6cmVzZXRTY3JvbGxDaGFpbmluZ0Jsb2NrZXIoKQorewor
ICAgIG1fc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyID0geyBmYWxzZSwgZmFsc2UgfTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKaW5kZXggNWQw
NDIwMzhiZi4uZjFlZGUxNjgzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCkBAIC0y
MTQsNiArMjE0LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGRlZmF1bHRXaGVlbEV2ZW50SGFuZGxl
cihOb2RlKiwgV2hlZWxFdmVudCYpOwogICAgIHZvaWQgd2hlZWxFdmVudFdhc1Byb2Nlc3NlZEJ5
TWFpblRocmVhZChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBPcHRpb25TZXQ8RXZlbnRIYW5k
bGluZz4pOwogCisgICAgdm9pZCB1cGRhdGVTY3JvbGxDaGFpbmluZ0Jsb2NrZXIoY29uc3QgU2Ny
b2xsQ2hhaW5pbmdCbG9ja2VyJik7CisgICAgdm9pZCByZXNldFNjcm9sbENoYWluaW5nQmxvY2tl
cigpOworICAgIHZvaWQgc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyQ2hhbmdlZEJ5U3ViZnJhbWUoY29u
c3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgUmVmUHRyPEVsZW1lbnQ+JiBldmVudFRhcmdldCwgV2Vh
a1B0cjxTY3JvbGxhYmxlQXJlYT4mLCBib29sJiBpc092ZXJXaWRnZXQpOworCiAgICAgYm9vbCBo
YW5kbGVQYXN0ZUdsb2JhbFNlbGVjdGlvbihjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKIAog
I2lmIEVOQUJMRShJT1NfVE9VQ0hfRVZFTlRTKSB8fCBFTkFCTEUoSU9TX0dFU1RVUkVfRVZFTlRT
KQpAQCAtNDcwLDcgKzQ3NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwcm9jZXNzV2hlZWxFdmVu
dEZvclNjcm9sbFNuYXAoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgY29uc3QgV2Vha1B0cjxT
Y3JvbGxhYmxlQXJlYT4mKTsKICAgICBib29sIGNvbXBsZXRlV2lkZ2V0V2hlZWxFdmVudChjb25z
dCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBjb25zdCBXZWFrUHRyPFdpZGdldD4mLCBjb25zdCBXZWFr
UHRyPFNjcm9sbGFibGVBcmVhPiYpOwogCi0gICAgYm9vbCBoYW5kbGVXaGVlbEV2ZW50SW5BcHBy
b3ByaWF0ZUVuY2xvc2luZ0JveChOb2RlKiBzdGFydE5vZGUsIGNvbnN0IFdoZWVsRXZlbnQmLCBj
b25zdCBGbG9hdFNpemUmIGZpbHRlcmVkUGxhdGZvcm1EZWx0YSwgY29uc3QgRmxvYXRTaXplJiBm
aWx0ZXJlZFZlbG9jaXR5LCBPcHRpb25TZXQ8RXZlbnRIYW5kbGluZz4pOworICAgIGJvb2wgaGFu
ZGxlV2hlZWxFdmVudEluQXBwcm9wcmlhdGVFbmNsb3NpbmdCb3goTm9kZSogc3RhcnROb2RlLCBj
b25zdCBXaGVlbEV2ZW50JiwgRmxvYXRTaXplJiBmaWx0ZXJlZFBsYXRmb3JtRGVsdGEsIGNvbnN0
IEZsb2F0U2l6ZSYgZmlsdGVyZWRWZWxvY2l0eSwgT3B0aW9uU2V0PEV2ZW50SGFuZGxpbmc+KTsK
IAogICAgIGJvb2wgaGFuZGxlV2hlZWxFdmVudEluU2Nyb2xsYWJsZUFyZWEoY29uc3QgUGxhdGZv
cm1XaGVlbEV2ZW50JiwgU2Nyb2xsYWJsZUFyZWEmLCBPcHRpb25TZXQ8RXZlbnRIYW5kbGluZz4p
OwogICAgIE9wdGlvbmFsPFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlPiB1cGRhdGVXaGVlbEdlc3R1
cmVTdGF0ZShjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBPcHRpb25TZXQ8RXZlbnRIYW5kbGlu
Zz4pOwpAQCAtNjQ2LDYgKzY1MCw4IEBAIHByaXZhdGU6CiAgICAgSW50UG9pbnQgbV90YXJnZXRB
dXRvc2Nyb2xsUG9zaXRpb25JblVuc2Nyb2xsZWRSb290Vmlld0Nvb3JkaW5hdGVzOwogICAgIE9w
dGlvbmFsPEludFBvaW50PiBtX2luaXRpYWxUYXJnZXRBdXRvc2Nyb2xsUG9zaXRpb25JblVuc2Ny
b2xsZWRSb290Vmlld0Nvb3JkaW5hdGVzOwogI2VuZGlmCisKKyAgICBTY3JvbGxDaGFpbmluZ0Js
b2NrZXIgbV9zY3JvbGxDaGFpbmluZ0Jsb2NrZXIgeyBmYWxzZSwgZmFsc2UgfTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCA2ODNl
MzZlZjU1Li5hNjg5ZGIzZGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
Vmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC00MTks
NiArNDE5LDI2IEBAIGJvb2wgRnJhbWVWaWV3OjpkaWRGaXJzdExheW91dCgpIGNvbnN0CiAgICAg
cmV0dXJuIGxheW91dENvbnRleHQoKS5kaWRGaXJzdExheW91dCgpOwogfQogCitPdmVyc2Nyb2xs
QmVoYXZpb3IgRnJhbWVWaWV3Ojpob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29uc3QK
K3sKKyAgICBhdXRvKiBkb2N1bWVudCA9IGZyYW1lKCkuZG9jdW1lbnQoKTsKKyAgICBhdXRvIHNj
cm9sbGluZ09iamVjdCA9IGRvY3VtZW50ICYmIGRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKSA/
IGRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKS0+cmVuZGVyZXIoKSA6IG51bGxwdHI7CisgICAg
Ly8gQW4gZWxlbWVudCB0aGF0IGlzIG5vdCBzY3JvbGwgY29udGFpbmVyIG11c3QgYWNjZXB0IGJ1
dCBpZ25vcmUgdGhlIHZhbHVlcyBvZiB0aGlzIHByb3BlcnR5LgorICAgIGlmIChzY3JvbGxpbmdP
YmplY3QgJiYgcmVuZGVyVmlldygpICYmIHJlbmRlclZpZXcoKS0+Y2FuQmVTY3JvbGxlZEFuZEhh
c1Njcm9sbGFibGVBcmVhKCkpCisgICAgICAgIHJldHVybiBzY3JvbGxpbmdPYmplY3QtPnN0eWxl
KCkub3ZlcnNjcm9sbEJlaGF2aW9yWCgpOworICAgIHJldHVybiBTY3JvbGxhYmxlQXJlYTo6aG9y
aXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpOworfQorCitPdmVyc2Nyb2xsQmVoYXZpb3IgRnJh
bWVWaWV3Ojp2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpICBjb25zdAoreworICAgIGF1dG8q
IGRvY3VtZW50ID0gZnJhbWUoKS5kb2N1bWVudCgpOworICAgIGF1dG8gc2Nyb2xsaW5nT2JqZWN0
ID0gZG9jdW1lbnQgJiYgZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpID8gZG9jdW1lbnQtPmRv
Y3VtZW50RWxlbWVudCgpLT5yZW5kZXJlcigpIDogbnVsbHB0cjsKKyAgICAvLyBBbiBlbGVtZW50
IHRoYXQgaXMgbm90IHNjcm9sbCBjb250YWluZXIgbXVzdCBhY2NlcHQgYnV0IGlnbm9yZSB0aGUg
dmFsdWVzIG9mIHRoaXMgcHJvcGVydHkuCisgICAgaWYgKHNjcm9sbGluZ09iamVjdCAmJiByZW5k
ZXJWaWV3KCkgJiYgcmVuZGVyVmlldygpLT5jYW5CZVNjcm9sbGVkQW5kSGFzU2Nyb2xsYWJsZUFy
ZWEoKSkKKyAgICAgICAgcmV0dXJuIHNjcm9sbGluZ09iamVjdC0+c3R5bGUoKS5vdmVyc2Nyb2xs
QmVoYXZpb3JZKCk7CisgICAgcmV0dXJuIFNjcm9sbGFibGVBcmVhOjp2ZXJ0aWNhbE92ZXJzY3Jv
bGxCZWhhdmlvcigpOworfQorCiB2b2lkIEZyYW1lVmlldzo6aW52YWxpZGF0ZVJlY3QoY29uc3Qg
SW50UmVjdCYgcmVjdCkKIHsKICAgICBpZiAoIXBhcmVudCgpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuaAppbmRleCBjZTdlOWExNjdjLi5iMTNjN2IyYmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
LmgKQEAgLTY4MSw2ICs2ODEsOSBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgZGVidWdEZXNjcmlw
dGlvbigpIGNvbnN0IGZpbmFsOwogCisgICAgT3ZlcnNjcm9sbEJlaGF2aW9yIGhvcml6b250YWxP
dmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdCBmaW5hbDsKKyAgICBPdmVyc2Nyb2xsQmVoYXZpb3Ig
dmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdCBmaW5hbDsKKwogICAgIC8vIFNjcm9s
bFZpZXcKICAgICB2b2lkIHVwZGF0ZVNjcm9sbGJhclN0ZXBzKCkgb3ZlcnJpZGU7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbQppbmRleCA4NjQ2NWY4MDVlLi5l
ODgxMjU3MDA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRs
ZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1t
CkBAIC03OTcsMTMgKzc5NywxOCBAQCBzdGF0aWMgU2Nyb2xsYWJsZUFyZWEqIHNjcm9sbGFibGVB
cmVhRm9yQm94KFJlbmRlckJveCYgYm94KQogfQogCiAvLyBGSVhNRTogVGhpcyBjb3VsZCBiZSB3
cml0dGVuIGluIHRlcm1zIG9mIFNjcm9sbGFibGVBcmVhOjplbmNsb3NpbmdTY3JvbGxhYmxlQXJl
YSgpLgotc3RhdGljIENvbnRhaW5lck5vZGUqIGZpbmRFbmNsb3NpbmdTY3JvbGxhYmxlQ29udGFp
bmVyKENvbnRhaW5lck5vZGUqIG5vZGUsIGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxF
dmVudCkKKy8vIERvIG5vdCB1cGRhdGUgbV9zY3JvbGxDaGFpbmluZ0Jsb2NrZXIgaGVyZSwgdXBk
YXRlIGl0IGluIEV2ZW50SGFuZGxlcjo6ZGVmYXVsdFdoZWVsRXZlbnRIYW5kbGVyIGxhdGVyIHdo
ZW4gcGFzcyBFdmVudFBhdGgsCisvLyBvdGhlcndpc2UgdGhlIFdoZWVsRXZlbnQgZGVsdGEgb2Yg
ZWxlbWVudCB3aXRoICFvdmVyc2Nyb2xsLWJlaGF2aW9yOmF1dG8gd2lsbCBiZSBjaGFuZ2VkLgor
c3RhdGljIENvbnRhaW5lck5vZGUqIGZpbmRFbmNsb3NpbmdTY3JvbGxhYmxlQ29udGFpbmVyKENv
bnRhaW5lck5vZGUqIG5vZGUsIGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwg
U2Nyb2xsQ2hhaW5pbmdCbG9ja2VyJiBzY3JvbGxDaGFpbmluZ0Jsb2NrZXIpCiB7Ci0gICAgYXV0
byBiaWFzZWREZWx0YSA9IFNjcm9sbENvbnRyb2xsZXI6OndoZWVsRGVsdGFCaWFzaW5nVG93YXJk
c1ZlcnRpY2FsKHdoZWVsRXZlbnQpOworICAgIGF1dG8gYmlhc2VkRGVsdGEgPSBQbGF0Zm9ybVdo
ZWVsRXZlbnQ6OndoZWVsRGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRpY2FsKHdoZWVsRXZlbnQuZGVs
dGEoKSk7CiAKICAgICAvLyBGaW5kIHRoZSBmaXJzdCBub2RlIHdpdGggYSB2YWxpZCBzY3JvbGxh
YmxlIGFyZWEgc3RhcnRpbmcgd2l0aCB0aGUgY3VycmVudAogICAgIC8vIG5vZGUgYW5kIHRyYXZl
cnNpbmcgaXRzIHBhcmVudHMgKG9yIHNoYWRvdyBob3N0cykuCiAgICAgZm9yIChDb250YWluZXJO
b2RlKiBjYW5kaWRhdGUgPSBub2RlOyBjYW5kaWRhdGU7IGNhbmRpZGF0ZSA9IGNhbmRpZGF0ZS0+
cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpKSB7CisgICAgICAgIGlmIChTY3JvbGxDaGFpbmluZ0Js
b2NrZXI6OnNob3VsZEJsb2NrU2Nyb2xsQ2hhaW5pbmcoc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLCBi
aWFzZWREZWx0YSkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwogICAgICAgICBpZiAo
aXM8SFRNTElGcmFtZUVsZW1lbnQ+KCpjYW5kaWRhdGUpKQogICAgICAgICAgICAgY29udGludWU7
CiAKQEAgLTgxMyw3ICs4MTgsNyBAQCBzdGF0aWMgQ29udGFpbmVyTm9kZSogZmluZEVuY2xvc2lu
Z1Njcm9sbGFibGVDb250YWluZXIoQ29udGFpbmVyTm9kZSogbm9kZSwgY29ucwogICAgICAgICBS
ZW5kZXJCb3gqIGJveCA9IGNhbmRpZGF0ZS0+cmVuZGVyQm94KCk7CiAgICAgICAgIGlmICghYm94
IHx8ICFib3gtPmNhbkJlU2Nyb2xsZWRBbmRIYXNTY3JvbGxhYmxlQXJlYSgpKQogICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgIAorCiAgICAgICAgIGF1dG8qIHNjcm9sbGFibGVBcmVhID0g
c2Nyb2xsYWJsZUFyZWFGb3JCb3goKmJveCk7CiAgICAgICAgIGlmICghc2Nyb2xsYWJsZUFyZWEp
CiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTgyNiw4ICs4MzEsMTEgQEAgc3RhdGljIENvbnRh
aW5lck5vZGUqIGZpbmRFbmNsb3NpbmdTY3JvbGxhYmxlQ29udGFpbmVyKENvbnRhaW5lck5vZGUq
IG5vZGUsIGNvbnMKIAogICAgICAgICBpZiAoYmlhc2VkRGVsdGEud2lkdGgoKSAmJiAhc2Nyb2xs
YWJsZUFyZWEtPmlzUGlubmVkRm9yU2Nyb2xsRGVsdGFPbkF4aXMoLWJpYXNlZERlbHRhLndpZHRo
KCksIFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCkpCiAgICAgICAgICAgICByZXR1cm4gY2Fu
ZGlkYXRlOworCisgICAgICAgIGlmIChjYW5kaWRhdGUgIT0gY2FuZGlkYXRlLT5kb2N1bWVudCgp
LmRvY3VtZW50RWxlbWVudCgpKQorICAgICAgICAgICAgc2Nyb2xsYWJsZUFyZWEtPnVwZGF0ZVNj
cm9sbENoYWluaW5nQmxvY2tlclN0YXRlKHNjcm9sbENoYWluaW5nQmxvY2tlcik7CiAgICAgfQot
ICAgIAorCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKQEAgLTg3MiwxMCArODgwLDExIEBAIHZv
aWQgRXZlbnRIYW5kbGVyOjpkZXRlcm1pbmVXaGVlbEV2ZW50VGFyZ2V0KGNvbnN0IFBsYXRmb3Jt
V2hlZWxFdmVudCYgd2hlZWxFdmVuCiAgICAgaWYgKCF2aWV3KQogICAgICAgICByZXR1cm47CiAK
KyAgICBTY3JvbGxDaGFpbmluZ0Jsb2NrZXIgYmxvY2tlciA9IG1fc2Nyb2xsQ2hhaW5pbmdCbG9j
a2VyOwogICAgIGlmIChldmVudFRhcmdldElzUGxhdGZvcm1XaWRnZXQod2hlZWxFdmVudFRhcmdl
dC5nZXQoKSkpCiAgICAgICAgIHNjcm9sbGFibGVBcmVhID0gc2Nyb2xsYWJsZUFyZWFGb3JFdmVu
dFRhcmdldCh3aGVlbEV2ZW50VGFyZ2V0LmdldCgpKTsKICAgICBlbHNlIHsKLSAgICAgICAgYXV0
byogc2Nyb2xsYWJsZUNvbnRhaW5lciA9IGZpbmRFbmNsb3NpbmdTY3JvbGxhYmxlQ29udGFpbmVy
KHdoZWVsRXZlbnRUYXJnZXQuZ2V0KCksIHdoZWVsRXZlbnQpOworICAgICAgICBhdXRvKiBzY3Jv
bGxhYmxlQ29udGFpbmVyID0gZmluZEVuY2xvc2luZ1Njcm9sbGFibGVDb250YWluZXIod2hlZWxF
dmVudFRhcmdldC5nZXQoKSwgd2hlZWxFdmVudCwgYmxvY2tlcik7CiAgICAgICAgIGlmIChzY3Jv
bGxhYmxlQ29udGFpbmVyKQogICAgICAgICAgICAgc2Nyb2xsYWJsZUFyZWEgPSBzY3JvbGxhYmxl
QXJlYUZvckNvbnRhaW5lck5vZGUoKnNjcm9sbGFibGVDb250YWluZXIpOwogICAgICAgICBlbHNl
CkBAIC04OTMsOSArOTAyLDIyIEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpkZXRlcm1pbmVXaGVlbEV2
ZW50VGFyZ2V0KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVuCiAgICAgaWYgKG1f
ZnJhbWUuaXNNYWluRnJhbWUoKSAmJiB3aGVlbEV2ZW50LmlzR2VzdHVyZVN0YXJ0KCkpCiAgICAg
ICAgIHBhZ2UtPndoZWVsRXZlbnREZWx0YUZpbHRlcigpLT5iZWdpbkZpbHRlcmluZ0RlbHRhcygp
OwogCisgICAgLy8gV2hlbiB0aGUgbGFjaGVkIG5vZGUgaXMgZGV0ZXJtaW5lZCwgd2Ugc2hvdWxk
IHVwZGF0ZSBtX3Njcm9sbENoYWluaW5nQmxvY2tlciBoZXJlLCBmb3IgaXQgd29uJ3QgcGFzcyB0
aGUgdHJlZSBpbiBFdmVudEhhbmRsZXI6OmRlZmF1bHRXaGVlbEV2ZW50SGFuZGxlci4KKyAgICAv
LyBPdGhlcndpc2UsIG1fc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIHNob3VsZCBiZSB1cGRhdGUgaW4g
RXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2luZ0JveC4K
KyAgICB1cGRhdGVTY3JvbGxDaGFpbmluZ0Jsb2NrZXIoYmxvY2tlcik7CiAgICAgcGFnZS0+c2Ny
b2xsTGF0Y2hpbmdDb250cm9sbGVyKCkudXBkYXRlQW5kRmV0Y2hMYXRjaGluZ1N0YXRlRm9yRnJh
bWUobV9mcmFtZSwgd2hlZWxFdmVudCwgd2hlZWxFdmVudFRhcmdldCwgc2Nyb2xsYWJsZUFyZWEs
IGlzT3ZlcldpZGdldCk7CiB9CiAKKy8vIFRoaXMgZnVuY3Rpb24gaGFuZGxlcyB0aGUgc2NlbmFy
aW8gdGhhdCBtX3Njcm9sbENoYWluaW5nQmxvY2tlciBpcyBjaGFuZ2VkIGJ5IHN1YmZyYW1lLgor
Ly8gVGhlIHN0YXRlIG9mIHNjcm9sbExhdGNoaW5nQ29udHJvbGxlciBpcyBvdXQgb2YgZGF0ZSwg
bmVlZCB0byB1cGRhdGUgaXQuCit2b2lkIEV2ZW50SGFuZGxlcjo6c2Nyb2xsQ2hhaW5pbmdCbG9j
a2VyQ2hhbmdlZEJ5U3ViZnJhbWUoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCwgUmVm
UHRyPEVsZW1lbnQ+JiBlbGVtZW50LCBXZWFrUHRyPFNjcm9sbGFibGVBcmVhPiYgc2Nyb2xsYWJs
ZUFyZWEsIGJvb2wmIGlzT3ZlcldpZGdldCkKK3sKKyAgICBpZiAoIWV2ZW50LmlzR2VzdHVyZVN0
YXJ0KCkpCisgICAgICAgIHJldHVybjsKKyAgICBjbGVhckxhdGNoZWRTdGF0ZSgpOworICAgIGRl
dGVybWluZVdoZWVsRXZlbnRUYXJnZXQoZXZlbnQsIGVsZW1lbnQsIHNjcm9sbGFibGVBcmVhLCBp
c092ZXJXaWRnZXQpOworfQorCiB2b2lkIEV2ZW50SGFuZGxlcjo6cmVjb3JkV2hlZWxFdmVudEZv
ckRlbHRhRmlsdGVyKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCkKIHsKICAg
ICBhdXRvKiBwYWdlID0gbV9mcmFtZS5wYWdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCmluZGV4
IDU4NDgwYTJkN2EuLjBhZTJkMjZiODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCkBAIC02ODQs
NiArNjg0LDggQEAgdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRTY3JvbGxpbmdO
b2RlU2Nyb2xsYWJsZUFyZWFHZW9tZXRyeShTY3JvbGxpbmcKICAgICBzY3JvbGxpbmdOb2RlLnNl
dFNjcm9sbGFibGVBcmVhU2l6ZShzY3JvbGxhYmxlQXJlYS52aXNpYmxlU2l6ZSgpKTsKIAogICAg
IFNjcm9sbGFibGVBcmVhUGFyYW1ldGVycyBzY3JvbGxQYXJhbWV0ZXJzOworICAgIHNjcm9sbFBh
cmFtZXRlcnMuaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvciA9IHNjcm9sbGFibGVBcmVhLmhv
cml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKTsKKyAgICBzY3JvbGxQYXJhbWV0ZXJzLnZlcnRp
Y2FsT3ZlcnNjcm9sbEJlaGF2aW9yID0gc2Nyb2xsYWJsZUFyZWEudmVydGljYWxPdmVyc2Nyb2xs
QmVoYXZpb3IoKTsKICAgICBzY3JvbGxQYXJhbWV0ZXJzLmhvcml6b250YWxTY3JvbGxFbGFzdGlj
aXR5ID0gc2Nyb2xsYWJsZUFyZWEuaG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkoKTsKICAgICBz
Y3JvbGxQYXJhbWV0ZXJzLnZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eSA9IHNjcm9sbGFibGVBcmVh
LnZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eSgpOwogICAgIHNjcm9sbFBhcmFtZXRlcnMuYWxsb3dz
SG9yaXpvbnRhbFNjcm9sbGluZyA9IHNjcm9sbGFibGVBcmVhLmFsbG93c0hvcml6b250YWxTY3Jv
bGxpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ0Nvb3JkaW5hdG9yVHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ0Nvb3JkaW5hdG9yVHlwZXMuaAppbmRleCBlZWNhYjZmNTViLi41Njc0ZGNhZTZjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGlu
YXRvclR5cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
Q29vcmRpbmF0b3JUeXBlcy5oCkBAIC02OCw2ICs2OCw5IEBAIGVudW0gY2xhc3MgU2Nyb2xsaW5n
TGF5ZXJQb3NpdGlvbkFjdGlvbiB7CiB9OwogCiBzdHJ1Y3QgU2Nyb2xsYWJsZUFyZWFQYXJhbWV0
ZXJzIHsKKyAgICBPdmVyc2Nyb2xsQmVoYXZpb3IgaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlv
ciB7IE92ZXJzY3JvbGxCZWhhdmlvcjo6IEF1dG8gfTsKKyAgICBPdmVyc2Nyb2xsQmVoYXZpb3Ig
dmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IgeyBPdmVyc2Nyb2xsQmVoYXZpb3I6OiBBdXRvIH07
CisKICAgICBTY3JvbGxFbGFzdGljaXR5IGhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5IHsgU2Ny
b2xsRWxhc3RpY2l0eU5vbmUgfTsKICAgICBTY3JvbGxFbGFzdGljaXR5IHZlcnRpY2FsU2Nyb2xs
RWxhc3RpY2l0eSB7IFNjcm9sbEVsYXN0aWNpdHlOb25lIH07CiAKQEAgLTg0LDcgKzg3LDkgQEAg
c3RydWN0IFNjcm9sbGFibGVBcmVhUGFyYW1ldGVycyB7CiAKICAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgU2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzJiBvdGhlcikgY29uc3QKICAgICB7Ci0gICAg
ICAgIHJldHVybiBob3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eSA9PSBvdGhlci5ob3Jpem9udGFs
U2Nyb2xsRWxhc3RpY2l0eQorICAgICAgICByZXR1cm4gaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhh
dmlvciA9PSBvdGhlci5ob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yCisgICAgICAgICAgICAm
JiB2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvciA9PSBvdGhlci52ZXJ0aWNhbE92ZXJzY3JvbGxC
ZWhhdmlvcgorICAgICAgICAgICAgJiYgaG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkgPT0gb3Ro
ZXIuaG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkKICAgICAgICAgICAgICYmIHZlcnRpY2FsU2Ny
b2xsRWxhc3RpY2l0eSA9PSBvdGhlci52ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkKICAgICAgICAg
ICAgICYmIGhvcml6b250YWxTY3JvbGxiYXJNb2RlID09IG90aGVyLmhvcml6b250YWxTY3JvbGxi
YXJNb2RlCiAgICAgICAgICAgICAmJiB2ZXJ0aWNhbFNjcm9sbGJhck1vZGUgPT0gb3RoZXIudmVy
dGljYWxTY3JvbGxiYXJNb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdUcmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1RyZWUuY3BwCmluZGV4IDFjZWYzMWJiMzYuLjA5NDY1MWE3M2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuY3BwCkBAIC0xNzQsMTIg
KzE3NCwzNSBAQCBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQgU2Nyb2xsaW5nVHJlZTo6aGFuZGxl
V2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbgogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKK2Jvb2wgU2Nyb2xsaW5nVHJlZTo6c2hvdWxkQmxvY2tTY3JvbGxDaGFpbmluZ1dpdGhOb2Rl
KGNvbnN0IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlJiBzY3JvbGxpbmdOb2RlLCBQbGF0Zm9y
bVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIFNjcm9sbENoYWluaW5nQmxvY2tlciYgYmxvY2tlciwg
Ym9vbCYgaGFuZGxlZCkKK3sKKyAgICBzY3JvbGxpbmdOb2RlLnVwZGF0ZVNjcm9sbENoYWluaW5n
QmxvY2tlclN0YXRlKGJsb2NrZXIpOworCisgICAgRmxvYXRTaXplIGZpbHRlcmVkRGVsdGEod2hl
ZWxFdmVudC5kZWx0YVgoKSwgd2hlZWxFdmVudC5kZWx0YVkoKSk7CisgICAgYXV0byBiaWFzZWRE
ZWx0YSA9IFBsYXRmb3JtV2hlZWxFdmVudDo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGlj
YWwoZmlsdGVyZWREZWx0YSk7CisgICAgaWYgKGJsb2NrZXIuYmxvY2tYIHx8IGJsb2NrZXIuYmxv
Y2tZKSB7CisgICAgICAgIGlmIChibG9ja2VyLmJsb2NrWCAmJiAhYmlhc2VkRGVsdGEuaGVpZ2h0
KCkgJiYgYmlhc2VkRGVsdGEud2lkdGgoKSkgeworICAgICAgICAgICAgaGFuZGxlZCA9IGZhbHNl
OworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKFNjcm9s
bENoYWluaW5nQmxvY2tlcjo6c2hvdWxkQmxvY2tTY3JvbGxDaGFpbmluZyhibG9ja2VyLCBiaWFz
ZWREZWx0YSkpIHsKKyAgICAgICAgICAgIGhhbmRsZWQgPSB0cnVlOworICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyOjpmaWx0
ZXJEZWx0YShibG9ja2VyLCBiaWFzZWREZWx0YSwgZmlsdGVyZWREZWx0YSk7CisgICAgICAgIHdo
ZWVsRXZlbnQgPSB3aGVlbEV2ZW50LmNvcHlXaXRoRGVsdGFzQW5kVmVsb2NpdHkoZmlsdGVyZWRE
ZWx0YS53aWR0aCgpLCBmaWx0ZXJlZERlbHRhLmhlaWdodCgpLCB3aGVlbEV2ZW50LnNjcm9sbGlu
Z1ZlbG9jaXR5KCkpOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIFdoZWVsRXZlbnRI
YW5kbGluZ1Jlc3VsdCBTY3JvbGxpbmdUcmVlOjpoYW5kbGVXaGVlbEV2ZW50V2l0aE5vZGUoY29u
c3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBPcHRpb25TZXQ8V2hlZWxFdmVudFBy
b2Nlc3NpbmdTdGVwcz4gcHJvY2Vzc2luZ1N0ZXBzLCBTY3JvbGxpbmdUcmVlTm9kZSogbm9kZSwg
RXZlbnRUYXJnZXRpbmcgZXZlbnRUYXJnZXRpbmcpCiB7CisgICAgUGxhdGZvcm1XaGVlbEV2ZW50
IGFkanVzdGVkV2hlZWxFdmVudCA9IFBsYXRmb3JtV2hlZWxFdmVudCh3aGVlbEV2ZW50KTsKKyAg
ICBTY3JvbGxDaGFpbmluZ0Jsb2NrZXIgYmxvY2tlciA9IHsgZmFsc2UsIGZhbHNlIH07CiAgICAg
d2hpbGUgKG5vZGUpIHsKICAgICAgICAgaWYgKGlzPFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
Pigqbm9kZSkpIHsKICAgICAgICAgICAgIGF1dG8mIHNjcm9sbGluZ05vZGUgPSBkb3duY2FzdDxT
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZT4oKm5vZGUpOwotICAgICAgICAgICAgYXV0byByZXN1
bHQgPSBzY3JvbGxpbmdOb2RlLmhhbmRsZVdoZWVsRXZlbnQod2hlZWxFdmVudCwgZXZlbnRUYXJn
ZXRpbmcpOworICAgICAgICAgICAgYXV0byByZXN1bHQgPSBzY3JvbGxpbmdOb2RlLmhhbmRsZVdo
ZWVsRXZlbnQoYWRqdXN0ZWRXaGVlbEV2ZW50LCBldmVudFRhcmdldGluZyk7CiAKICAgICAgICAg
ICAgIGlmIChyZXN1bHQud2FzSGFuZGxlZCkgewogICAgICAgICAgICAgICAgIG1fbGF0Y2hpbmdD
b250cm9sbGVyLm5vZGVEaWRIYW5kbGVFdmVudChzY3JvbGxpbmdOb2RlLnNjcm9sbGluZ05vZGVJ
RCgpLCBwcm9jZXNzaW5nU3RlcHMsIHdoZWVsRXZlbnQsIG1fYWxsb3dMYXRjaGluZyk7CkBAIC0x
ODksNiArMjEyLDE2IEBAIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdCBTY3JvbGxpbmdUcmVlOjpo
YW5kbGVXaGVlbEV2ZW50V2l0aE5vZGUoY29uc3QgUGxhdGZvcm1XCiAKICAgICAgICAgICAgIGlm
IChyZXN1bHQubmVlZHNNYWluVGhyZWFkUHJvY2Vzc2luZygpIHx8IGV2ZW50VGFyZ2V0aW5nICE9
IEV2ZW50VGFyZ2V0aW5nOjpQcm9wYWdhdGUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKKworICAgICAgICAgICAgYm9vbCBoYW5kbGVkID0gZmFsc2U7CisgICAgICAgICAgICBpZiAo
c2hvdWxkQmxvY2tTY3JvbGxDaGFpbmluZ1dpdGhOb2RlKHNjcm9sbGluZ05vZGUsIGFkanVzdGVk
V2hlZWxFdmVudCwgYmxvY2tlciwgaGFuZGxlZCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoIWhh
bmRsZWQpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1
bHQ6OnVuaGFuZGxlZCgpOworCisgICAgICAgICAgICAgICAgbV9sYXRjaGluZ0NvbnRyb2xsZXIu
bm9kZURpZEhhbmRsZUV2ZW50KHNjcm9sbGluZ05vZGUuc2Nyb2xsaW5nTm9kZUlEKCksIHByb2Nl
c3NpbmdTdGVwcywgd2hlZWxFdmVudCwgbV9hbGxvd0xhdGNoaW5nKTsKKyAgICAgICAgICAgICAg
ICBtX2dlc3R1cmVTdGF0ZS5ub2RlRGlkSGFuZGxlRXZlbnQoc2Nyb2xsaW5nTm9kZS5zY3JvbGxp
bmdOb2RlSUQoKSwgd2hlZWxFdmVudCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIFdoZWVsRXZl
bnRIYW5kbGluZ1Jlc3VsdDo6aGFuZGxlZCgpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAK
ICAgICAgICAgaWYgKGlzPFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbFByb3h5Tm9kZT4oKm5v
ZGUpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdUcmVlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmgK
aW5kZXggODMxZjU2NmQ1Yi4uZmYwMWExYjhlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuaApAQCAtMjczLDcgKzI3Myw4IEBAIHByaXZhdGU6CiAj
ZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCByZWNlaXZlZFdoZWVsRXZlbnQoY29uc3QgUGxhdGZv
cm1XaGVlbEV2ZW50JikgeyB9Ci0gICAgCisgICAgYm9vbCBzaG91bGRCbG9ja1Njcm9sbENoYWlu
aW5nV2l0aE5vZGUoY29uc3QgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUmLCBQbGF0Zm9ybVdo
ZWVsRXZlbnQmLCBTY3JvbGxDaGFpbmluZ0Jsb2NrZXImLCBib29sJiBoYW5kbGVkKTsKKwogICAg
IFJlZlB0cjxTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlPiBtX3Jvb3ROb2RlOwogCiAg
ICAgdXNpbmcgU2Nyb2xsaW5nVHJlZU5vZGVNYXAgPSBIYXNoTWFwPFNjcm9sbGluZ05vZGVJRCwg
UmVmUHRyPFNjcm9sbGluZ1RyZWVOb2RlPj47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAKaW5kZXgg
MTMwZTczZWRiYy4uY2Q4MDQyOGMxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcApAQCAtMTI1
LDYgKzEyNSwyMiBAQCBib29sIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjppc0xhdGNoZWRO
b2RlKCkgY29uc3QKICAgICByZXR1cm4gc2Nyb2xsaW5nVHJlZSgpLmxhdGNoZWROb2RlSUQoKSA9
PSBzY3JvbGxpbmdOb2RlSUQoKTsKIH0KIAorT3ZlcnNjcm9sbEJlaGF2aW9yIFNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlOjpob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMuaG9yaXpvbnRhbE92ZXJzY3Jv
bGxCZWhhdmlvcjsKK30KKworT3ZlcnNjcm9sbEJlaGF2aW9yIFNjcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlOjp2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fc2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzLnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yOwor
fQorCit2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjp1cGRhdGVTY3JvbGxDaGFpbmlu
Z0Jsb2NrZXJTdGF0ZShTY3JvbGxDaGFpbmluZ0Jsb2NrZXImIGJsb2NrZXIpIGNvbnN0Cit7Cisg
ICAgYmxvY2tlci5ibG9ja1ggfD0gaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpICE9IE92
ZXJzY3JvbGxCZWhhdmlvcjo6QXV0bzsKKyAgICBibG9ja2VyLmJsb2NrWSB8PSB2ZXJ0aWNhbE92
ZXJzY3JvbGxCZWhhdmlvcigpICE9IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0bzsKK30KKwogYm9v
bCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6Y2FuSGFuZGxlV2hlZWxFdmVudChjb25zdCBQ
bGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIEV2ZW50VGFyZ2V0aW5nIGV2ZW50VGFyZ2V0
aW5nKSBjb25zdAogewogICAgIGlmICghY2FuSGF2ZVNjcm9sbGJhcnMoKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZS5oCmluZGV4IGJlNDlkMGIxMjUuLmJiNTFhYzgyMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUu
aApAQCAtMTQyLDYgKzE0MiwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgY29uc3QgRmxvYXRTaXplJiB0
b3RhbENvbnRlbnRzU2l6ZUZvclJ1YmJlckJhbmQoKSBjb25zdCB7IHJldHVybiBtX3RvdGFsQ29u
dGVudHNTaXplRm9yUnViYmVyQmFuZDsgfQogICAgIHZvaWQgc2V0VG90YWxDb250ZW50c1NpemVG
b3JSdWJiZXJCYW5kKGNvbnN0IEZsb2F0U2l6ZSYgdG90YWxDb250ZW50c1NpemVGb3JSdWJiZXJC
YW5kKSB7IG1fdG90YWxDb250ZW50c1NpemVGb3JSdWJiZXJCYW5kID0gdG90YWxDb250ZW50c1Np
emVGb3JSdWJiZXJCYW5kOyB9CiAKKyAgICBPdmVyc2Nyb2xsQmVoYXZpb3IgaG9yaXpvbnRhbE92
ZXJzY3JvbGxCZWhhdmlvcigpIGNvbnN0OworICAgIE92ZXJzY3JvbGxCZWhhdmlvciB2ZXJ0aWNh
bE92ZXJzY3JvbGxCZWhhdmlvcigpIGNvbnN0OworICAgIHZvaWQgdXBkYXRlU2Nyb2xsQ2hhaW5p
bmdCbG9ja2VyU3RhdGUoU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyJikgY29uc3Q7CisKICAgICBTY3Jv
bGxFbGFzdGljaXR5IGhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5KCkgY29uc3QgeyByZXR1cm4g
bV9zY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMuaG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHk7IH0K
ICAgICBTY3JvbGxFbGFzdGljaXR5IHZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eSgpIGNvbnN0IHsg
cmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzLnZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0
eTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1t
CmluZGV4IGE1YjQ4YzIwMzQuLjQ5NGI0Y2NlZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1tCkBAIC0yMjcsNiArMjI3LDkgQEAgc3RkOjp1bmlx
dWVfcHRyPFNjcm9sbENvbnRyb2xsZXJUaW1lcj4gU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVE
ZWxlZ2F0ZU1hYzo6Y3IKIAogYm9vbCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRl
TWFjOjphbGxvd3NIb3Jpem9udGFsU3RyZXRjaGluZyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQm
IHdoZWVsRXZlbnQpIGNvbnN0CiB7CisgICAgaWYgKHNjcm9sbGluZ05vZGUoKS5ob3Jpem9udGFs
T3ZlcnNjcm9sbEJlaGF2aW9yKCkgPT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpOb25lKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKICAgICBzd2l0Y2ggKGhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5
KCkpIHsKICAgICBjYXNlIFNjcm9sbEVsYXN0aWNpdHlBdXRvbWF0aWM6IHsKICAgICAgICAgYm9v
bCBzY3JvbGxiYXJzQWxsb3dTdHJldGNoaW5nID0gYWxsb3dzSG9yaXpvbnRhbFNjcm9sbGluZygp
IHx8ICFhbGxvd3NWZXJ0aWNhbFNjcm9sbGluZygpOwpAQCAtMjQ5LDYgKzI1Miw5IEBAIGJvb2wg
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6YWxsb3dzSG9yaXpvbnRhbFN0
cmV0Y2hpbmcoY29uc3QgUGxhCiAKIGJvb2wgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxl
Z2F0ZU1hYzo6YWxsb3dzVmVydGljYWxTdHJldGNoaW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVu
dCYgd2hlZWxFdmVudCkgY29uc3QKIHsKKyAgICBpZiAoc2Nyb2xsaW5nTm9kZSgpLnZlcnRpY2Fs
T3ZlcnNjcm9sbEJlaGF2aW9yKCkgPT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpOb25lKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKICAgICBzd2l0Y2ggKHZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eSgp
KSB7CiAgICAgY2FzZSBTY3JvbGxFbGFzdGljaXR5QXV0b21hdGljOiB7CiAgICAgICAgIGJvb2wg
c2Nyb2xsYmFyc0FsbG93U3RyZXRjaGluZyA9IGFsbG93c1ZlcnRpY2FsU2Nyb2xsaW5nKCkgfHwg
IWFsbG93c0hvcml6b250YWxTY3JvbGxpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGxhdGZvcm1XaGVlbEV2ZW50LmgKaW5kZXggZDcxNjkzNDZhMi4uNjQxNzk3YTZmNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50LmgKQEAgLTI2LDYgKzI2
LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgorI2luY2x1ZGUg
IkZsb2F0U2l6ZS5oIgogI2luY2x1ZGUgIkludFBvaW50LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1F
dmVudC5oIgogI2luY2x1ZGUgPHd0Zi9XaW5kb3dzRXh0cmFzLmg+CkBAIC0xNzQsNiArMTc1LDgg
QEAgcHVibGljOgogICAgIFBsYXRmb3JtV2hlZWxFdmVudChIV05ELCBXUEFSQU0sIExQQVJBTSwg
Ym9vbCBpc01vdXNlSFdoZWVsKTsKICNlbmRpZgogCisgICAgc3RhdGljIEZsb2F0U2l6ZSB3aGVl
bERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbChjb25zdCBGbG9hdFNpemUmKTsKKwogcHJvdGVj
dGVkOgogICAgIFBsYXRmb3JtV2hlZWxFdmVudEdyYW51bGFyaXR5IG1fZ3JhbnVsYXJpdHkgeyBT
Y3JvbGxCeVBpeGVsV2hlZWxFdmVudCB9OwogICAgIGJvb2wgbV9kaXJlY3Rpb25JbnZlcnRlZEZy
b21EZXZpY2UgeyBmYWxzZSB9OwpAQCAtMjY0LDYgKzI2NywxOSBAQCBpbmxpbmUgRmxvYXRQb2lu
dCBQbGF0Zm9ybVdoZWVsRXZlbnQ6OnN3aXBlVmVsb2NpdHkoKSBjb25zdAogCiAjZW5kaWYgLy8g
RU5BQkxFKEtJTkVUSUNfU0NST0xMSU5HKQogCitpbmxpbmUgRmxvYXRTaXplIFBsYXRmb3JtV2hl
ZWxFdmVudDo6d2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoY29uc3QgRmxvYXRTaXpl
JiBkZWx0YSkKK3sKKyAgICBhdXRvIGRlbHRhWCA9IGRlbHRhLndpZHRoKCk7CisgICAgYXV0byBk
ZWx0YVkgPSBkZWx0YS5oZWlnaHQoKTsKKworICAgIGlmIChmYWJzZihkZWx0YVkpID49IGZhYnNm
KGRlbHRhWCkpCisgICAgICAgIGRlbHRhWCA9IDA7CisgICAgZWxzZQorICAgICAgICBkZWx0YVkg
PSAwOworCisgICAgcmV0dXJuIHsgZGVsdGFYLCBkZWx0YVkgfTsKK30KKwogV0VCQ09SRV9FWFBP
UlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IFBs
YXRmb3JtV2hlZWxFdmVudCYpOwogV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIFdoZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHMpOwogV0VC
Q09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYs
IEV2ZW50SGFuZGxpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsVHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFR5cGVzLmgKaW5kZXgg
MGIxYzQwNTYzZS4uZjhmNzFjMmUxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsVHlwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxUeXBl
cy5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkZsb2F0UG9p
bnQuaCIKKyNpbmNsdWRlICJGbG9hdFNpemUuaCIKICNpbmNsdWRlICJJbnRQb2ludC5oIgogI2lu
Y2x1ZGUgPGNzdGRpbnQ+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KQEAgLTI1OSw2ICsy
NjAsMzQgQEAgZW51bSBjbGFzcyBTY3JvbGxTbmFwUG9pbnRTZWxlY3Rpb25NZXRob2QgOiB1aW50
OF90IHsKICAgICBDbG9zZXN0LAogfTsKIAorc3RydWN0IFNjcm9sbENoYWluaW5nQmxvY2tlciB7
CisgICAgYm9vbCBibG9ja1ggeyBmYWxzZSB9OworICAgIGJvb2wgYmxvY2tZIHsgZmFsc2UgfTsK
KworICAgIHN0YXRpYyBib29sIHNob3VsZEJsb2NrU2Nyb2xsQ2hhaW5pbmcoY29uc3QgU2Nyb2xs
Q2hhaW5pbmdCbG9ja2VyJiBibG9ja2VyLCBjb25zdCBGbG9hdFNpemUmIGJpYXNlZERlbHRhKQor
ICAgIHsKKyAgICAgICAgaWYgKChibG9ja2VyLmJsb2NrWCAmJiBibG9ja2VyLmJsb2NrWSkKKyAg
ICAgICAgICAgIHx8IChibG9ja2VyLmJsb2NrWCAmJiAhYmlhc2VkRGVsdGEuaGVpZ2h0KCkpCisg
ICAgICAgICAgICB8fCAoYmxvY2tlci5ibG9ja1kgJiYgIWJpYXNlZERlbHRhLndpZHRoKCkpKQor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisK
KyAgICBzdGF0aWMgdm9pZCBmaWx0ZXJEZWx0YShjb25zdCBTY3JvbGxDaGFpbmluZ0Jsb2NrZXIm
IGJsb2NrZXIsIGNvbnN0IEZsb2F0U2l6ZSYgYmlhc2VkRGVsdGEsIEZsb2F0U2l6ZSYgZmlsdGVy
ZWREZWx0YSkKKyAgICB7CisgICAgICAgIGlmIChibG9ja2VyLmJsb2NrWCkgeworICAgICAgICAg
ICAgZmlsdGVyZWREZWx0YS5zZXRXaWR0aCgwKTsKKyAgICAgICAgICAgIGlmICghYmlhc2VkRGVs
dGEuaGVpZ2h0KCkpCisgICAgICAgICAgICAgICAgZmlsdGVyZWREZWx0YS5zZXRIZWlnaHQoMCk7
CisgICAgICAgIH0KKyAgICAgICAgaWYgKGJsb2NrZXIuYmxvY2tZKSB7CisgICAgICAgICAgICBm
aWx0ZXJlZERlbHRhLnNldEhlaWdodCgwKTsKKyAgICAgICAgICAgIGlmICghYmlhc2VkRGVsdGEu
d2lkdGgoKSkKKyAgICAgICAgICAgICAgICBmaWx0ZXJlZERlbHRhLnNldFdpZHRoKDApOworICAg
ICAgICB9CisgICAgfQorfTsKKwogdXNpbmcgU2Nyb2xsYmFyQ29udHJvbFN0YXRlID0gdW5zaWdu
ZWQ7CiB1c2luZyBTY3JvbGxiYXJDb250cm9sUGFydE1hc2sgPSB1bnNpZ25lZDsKIHVzaW5nIFNj
cm9sbGluZ05vZGVJRCA9IHVpbnQ2NF90OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
YWJsZUFyZWEuY3BwCmluZGV4IDc5ZjllOTgwOTguLmMwNDNjMGFjM2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKQEAgLTgwMyw2ICs4MDMsMTIgQEAgdm9p
ZCBTY3JvbGxhYmxlQXJlYTo6Y29tcHV0ZVNjcm9sbGJhclZhbHVlQW5kT3ZlcmhhbmcoZmxvYXQg
Y3VycmVudFBvc2l0aW9uLCBmbG8KICAgICB9CiB9CiAKK3ZvaWQgU2Nyb2xsYWJsZUFyZWE6OnVw
ZGF0ZVNjcm9sbENoYWluaW5nQmxvY2tlclN0YXRlKFNjcm9sbENoYWluaW5nQmxvY2tlciYgYmxv
Y2tlcikgY29uc3QKK3sKKyAgICBibG9ja2VyLmJsb2NrWCB8PSBob3Jpem9udGFsT3ZlcnNjcm9s
bEJlaGF2aW9yKCkgIT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpBdXRvOworICAgIGJsb2NrZXIuYmxv
Y2tZIHw9IHZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgIT0gT3ZlcnNjcm9sbEJlaGF2aW9y
OjpBdXRvOworfQorCiBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25z
dCBTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEpCiB7CiAgICAgdHMgPDwgc2Nyb2xsYWJs
ZUFyZWEuZGVidWdEZXNjcmlwdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsYWJsZUFyZWEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFi
bGVBcmVhLmgKaW5kZXggN2ViN2I1NDAyOC4uOTg3N2NkNTEyYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCkBAIC0xMTksNiArMTE5LDEwIEBAIHB1YmxpYzoKICAg
ICBib29sIGNvbnN0cmFpbnNTY3JvbGxpbmdUb0NvbnRlbnRFZGdlKCkgY29uc3QgeyByZXR1cm4g
bV9jb25zdHJhaW5zU2Nyb2xsaW5nVG9Db250ZW50RWRnZTsgfQogICAgIHZvaWQgc2V0Q29uc3Ry
YWluc1Njcm9sbGluZ1RvQ29udGVudEVkZ2UoYm9vbCBjb25zdHJhaW5zU2Nyb2xsaW5nVG9Db250
ZW50RWRnZSkgeyBtX2NvbnN0cmFpbnNTY3JvbGxpbmdUb0NvbnRlbnRFZGdlID0gY29uc3RyYWlu
c1Njcm9sbGluZ1RvQ29udGVudEVkZ2U7IH0KIAorICAgIHZpcnR1YWwgT3ZlcnNjcm9sbEJlaGF2
aW9yIGhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdCB7IHJldHVybiBPdmVyc2Ny
b2xsQmVoYXZpb3I6OkF1dG87IH0KKyAgICB2aXJ0dWFsIE92ZXJzY3JvbGxCZWhhdmlvciB2ZXJ0
aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpIGNvbnN0IHsgcmV0dXJuIE92ZXJzY3JvbGxCZWhhdmlv
cjo6QXV0bzsgfQorICAgIHZvaWQgdXBkYXRlU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyU3RhdGUoU2Ny
b2xsQ2hhaW5pbmdCbG9ja2VyJikgY29uc3Q7CisKICAgICB2b2lkIHNldFZlcnRpY2FsU2Nyb2xs
RWxhc3RpY2l0eShTY3JvbGxFbGFzdGljaXR5IHNjcm9sbEVsYXN0aWNpdHkpIHsgbV92ZXJ0aWNh
bFNjcm9sbEVsYXN0aWNpdHkgPSBzY3JvbGxFbGFzdGljaXR5OyB9CiAgICAgU2Nyb2xsRWxhc3Rp
Y2l0eSB2ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxTY3JvbGxFbGFzdGljaXR5PihtX3ZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eSk7IH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tCmluZGV4
IGMwOTVjZDY2ZjUuLmIzZDFhZjM4NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0KQEAgLTEyMjgsOSArMTIyOCw5IEBAIHZvaWQgU2Ny
b2xsQW5pbWF0b3JNYWM6OmhhbmRsZVdoZWVsRXZlbnRQaGFzZShQbGF0Zm9ybVdoZWVsRXZlbnRQ
aGFzZSBwaGFzZSkKIGJvb2wgU2Nyb2xsQW5pbWF0b3JNYWM6OnNob3VsZEZvcndhcmRXaGVlbEV2
ZW50c1RvUGFyZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCkgY29uc3QK
IHsKICAgICBpZiAoc3RkOjphYnMod2hlZWxFdmVudC5kZWx0YVkoKSkgPj0gc3RkOjphYnMod2hl
ZWxFdmVudC5kZWx0YVgoKSkpCi0gICAgICAgIHJldHVybiAhYWxsb3dzVmVydGljYWxTdHJldGNo
aW5nKHdoZWVsRXZlbnQpOworICAgICAgICByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYS52ZXJ0aWNh
bE92ZXJzY3JvbGxCZWhhdmlvcigpID09IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0byAmJiAhYWxs
b3dzVmVydGljYWxTdHJldGNoaW5nKHdoZWVsRXZlbnQpOwogCi0gICAgcmV0dXJuICFhbGxvd3NI
b3Jpem9udGFsU3RyZXRjaGluZyh3aGVlbEV2ZW50KTsKKyAgICByZXR1cm4gbV9zY3JvbGxhYmxl
QXJlYS5ob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgPT0gT3ZlcnNjcm9sbEJlaGF2aW9y
OjpBdXRvICYmICFhbGxvd3NIb3Jpem9udGFsU3RyZXRjaGluZyh3aGVlbEV2ZW50KTsKIH0KICAg
ICAKIGJvb2wgU2Nyb2xsQW5pbWF0b3JNYWM6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZv
cm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50KQpAQCAtMTI5NSw2ICsxMjk1LDkgQEAgc3RhdGljIGJv
b2wgZ2VzdHVyZVNob3VsZEJlZ2luU25hcChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVs
RXZlbnQsIFNjcm9sbEUKIAogYm9vbCBTY3JvbGxBbmltYXRvck1hYzo6YWxsb3dzVmVydGljYWxT
dHJldGNoaW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCkgY29uc3QKIHsK
KyAgICBpZiAobV9zY3JvbGxhYmxlQXJlYS52ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpID09
IE92ZXJzY3JvbGxCZWhhdmlvcjo6Tm9uZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAg
c3dpdGNoIChtX3Njcm9sbGFibGVBcmVhLnZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eSgpKSB7CiAg
ICAgY2FzZSBTY3JvbGxFbGFzdGljaXR5QXV0b21hdGljOiB7CiAgICAgICAgIFNjcm9sbGJhciog
aFNjcm9sbGVyID0gbV9zY3JvbGxhYmxlQXJlYS5ob3Jpem9udGFsU2Nyb2xsYmFyKCk7CkBAIC0x
MzE5LDYgKzEzMjIsOSBAQCBib29sIFNjcm9sbEFuaW1hdG9yTWFjOjphbGxvd3NWZXJ0aWNhbFN0
cmV0Y2hpbmcoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbAogCiBib29sIFNjcm9sbEFu
aW1hdG9yTWFjOjphbGxvd3NIb3Jpem9udGFsU3RyZXRjaGluZyhjb25zdCBQbGF0Zm9ybVdoZWVs
RXZlbnQmIHdoZWVsRXZlbnQpIGNvbnN0CiB7CisgICAgaWYgKG1fc2Nyb2xsYWJsZUFyZWEuaG9y
aXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpID09IE92ZXJzY3JvbGxCZWhhdmlvcjo6Tm9uZSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgc3dpdGNoIChtX3Njcm9sbGFibGVBcmVhLmhv
cml6b250YWxTY3JvbGxFbGFzdGljaXR5KCkpIHsKICAgICBjYXNlIFNjcm9sbEVsYXN0aWNpdHlB
dXRvbWF0aWM6IHsKICAgICAgICAgU2Nyb2xsYmFyKiBoU2Nyb2xsZXIgPSBtX3Njcm9sbGFibGVB
cmVhLmhvcml6b250YWxTY3JvbGxiYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9TY3JvbGxDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1Njcm9sbENvbnRyb2xsZXIubW0KaW5kZXggMGRlODFlMDZmNi4uNjM0ZmI3OTBlMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbENvbnRyb2xsZXIubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbENvbnRyb2xsZXIubW0KQEAg
LTMxMywxOSArMzEzLDYgQEAgYm9vbCBTY3JvbGxDb250cm9sbGVyOjpoYW5kbGVXaGVlbEV2ZW50
KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCkKICAgICByZXR1cm4gaGFuZGxl
ZDsKIH0KIAotRmxvYXRTaXplIFNjcm9sbENvbnRyb2xsZXI6OndoZWVsRGVsdGFCaWFzaW5nVG93
YXJkc1ZlcnRpY2FsKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCkKLXsKLSAg
ICBhdXRvIGRlbHRhWCA9IHdoZWVsRXZlbnQuZGVsdGFYKCk7Ci0gICAgYXV0byBkZWx0YVkgPSB3
aGVlbEV2ZW50LmRlbHRhWSgpOwotCi0gICAgaWYgKGZhYnNmKGRlbHRhWSkgPj0gZmFic2YoZGVs
dGFYKSkKLSAgICAgICAgZGVsdGFYID0gMDsKLSAgICBlbHNlCi0gICAgICAgIGRlbHRhWSA9IDA7
Ci0KLSAgICByZXR1cm4geyBkZWx0YVgsIGRlbHRhWSB9OwotfQotCiBPcHRpb25hbDxTY3JvbGxE
aXJlY3Rpb24+IFNjcm9sbENvbnRyb2xsZXI6OmRpcmVjdGlvbkZyb21FdmVudChjb25zdCBQbGF0
Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIE9wdGlvbmFsPFNjcm9sbEV2ZW50QXhpcz4gYXhp
cywgV2hlZWxBeGlzQmlhcyBiaWFzKQogewogICAgIC8vIEZJWE1FOiBJdCdzIGltcG9zc2libGUg
dG8gaW5mZXIgZGlyZWN0aW9uIGZyb20gYSBzaW5nbGUgZXZlbnQsIHNpbmNlIHRoZSBzdGFydCBv
ZiBhIGdlc3R1cmUgaXMgZWl0aGVyIHplcm8gb3IKQEAgLTMzMyw3ICszMjAsNyBAQCBPcHRpb25h
bDxTY3JvbGxEaXJlY3Rpb24+IFNjcm9sbENvbnRyb2xsZXI6OmRpcmVjdGlvbkZyb21FdmVudChj
b25zdCBQbGF0Zm9ybVdoZQogCiAgICAgYXV0byB3aGVlbERlbHRhID0gRmxvYXRTaXplIHsgd2hl
ZWxFdmVudC5kZWx0YVgoKSwgd2hlZWxFdmVudC5kZWx0YVkoKSB9OwogICAgIGlmIChiaWFzID09
IFdoZWVsQXhpc0JpYXM6OlZlcnRpY2FsKQotICAgICAgICB3aGVlbERlbHRhID0gd2hlZWxEZWx0
YUJpYXNpbmdUb3dhcmRzVmVydGljYWwod2hlZWxFdmVudCk7CisgICAgICAgIHdoZWVsRGVsdGEg
PSBQbGF0Zm9ybVdoZWVsRXZlbnQ6OndoZWVsRGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRpY2FsKHdo
ZWVsRXZlbnQuZGVsdGEoKSk7CiAKICAgICBpZiAoYXhpcykgewogICAgICAgICBzd2l0Y2ggKGF4
aXMudmFsdWUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJDb21wb3NpdG9yLmNwcAppbmRleCAxYTE4MzVhNTU2Li4yY2IwZGFmMjljIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcApAQCAt
MTYwNyw2ICsxNjA3LDggQEAgc3RhdGljIGJvb2wgcmVjb21wb3NpdGVDaGFuZ2VSZXF1aXJlc0dl
b21ldHJ5VXBkYXRlKGNvbnN0IFJlbmRlclN0eWxlJiBvbGRTdHlsZSwKICAgICAgICAgfHwgb2xk
U3R5bGUucGVyc3BlY3RpdmVPcmlnaW5YKCkgIT0gbmV3U3R5bGUucGVyc3BlY3RpdmVPcmlnaW5Y
KCkKICAgICAgICAgfHwgb2xkU3R5bGUucGVyc3BlY3RpdmVPcmlnaW5ZKCkgIT0gbmV3U3R5bGUu
cGVyc3BlY3RpdmVPcmlnaW5ZKCkKICAgICAgICAgfHwgb2xkU3R5bGUuYmFja2ZhY2VWaXNpYmls
aXR5KCkgIT0gbmV3U3R5bGUuYmFja2ZhY2VWaXNpYmlsaXR5KCkKKyAgICAgICAgfHwgb2xkU3R5
bGUub3ZlcnNjcm9sbEJlaGF2aW9yWCgpICE9IG5ld1N0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclgo
KQorICAgICAgICB8fCBvbGRTdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JZKCkgIT0gbmV3U3R5bGUu
b3ZlcnNjcm9sbEJlaGF2aW9yWSgpCiAgICAgICAgIHx8ICFhcmVQb2ludGluZ1RvRXF1YWxEYXRh
KG9sZFN0eWxlLmNsaXBQYXRoKCksIG5ld1N0eWxlLmNsaXBQYXRoKCkpOwogfQogCkBAIC0zOTQz
LDYgKzM5NDUsMTEgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJvb3RPckJvZHlTdHls
ZUNoYW5nZWQoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnMKICAgICBib29sIGhhZEZpeGVk
QmFja2dyb3VuZCA9IG9sZFN0eWxlICYmIG9sZFN0eWxlLT5oYXNFbnRpcmVseUZpeGVkQmFja2dy
b3VuZCgpOwogICAgIGlmIChoYWRGaXhlZEJhY2tncm91bmQgIT0gcmVuZGVyZXIuc3R5bGUoKS5o
YXNFbnRpcmVseUZpeGVkQmFja2dyb3VuZCgpKQogICAgICAgICByb290TGF5ZXJDb25maWd1cmF0
aW9uQ2hhbmdlZCgpOworCisgICAgaWYgKG9sZFN0eWxlICYmIChvbGRTdHlsZS0+b3ZlcnNjcm9s
bEJlaGF2aW9yWCgpICE9IHJlbmRlcmVyLnN0eWxlKCkub3ZlcnNjcm9sbEJlaGF2aW9yWCgpIHx8
IG9sZFN0eWxlLT5vdmVyc2Nyb2xsQmVoYXZpb3JZKCkgIT0gcmVuZGVyZXIuc3R5bGUoKS5vdmVy
c2Nyb2xsQmVoYXZpb3JZKCkpKSB7CisgICAgICAgIGlmIChhdXRvKiBsYXllciA9IG1fcmVuZGVy
Vmlldy5sYXllcigpKQorICAgICAgICAgICAgbGF5ZXItPnNldE5lZWRzQ29tcG9zaXRpbmdHZW9t
ZXRyeVVwZGF0ZSgpOworICAgIH0KIH0KIAogdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJv
b3RCYWNrZ3JvdW5kQ29sb3JPclRyYW5zcGFyZW5jeUNoYW5nZWQoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuY3BwCmluZGV4
IGI2YjdhYjBhMjEuLmFiMTkwMzEyNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5jcHAKQEAgLTE4MTYsNCArMTgxNiwy
MiBAQCBTdHJpbmcgUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6ZGVidWdEZXNjcmlwdGlvbigp
IGNvbnN0CiAgICAgcmV0dXJuIG1fbGF5ZXIuZGVidWdEZXNjcmlwdGlvbigpOwogfQogCitPdmVy
c2Nyb2xsQmVoYXZpb3IgUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6aG9yaXpvbnRhbE92ZXJz
Y3JvbGxCZWhhdmlvcigpIGNvbnN0Cit7CisgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlID0g
bV9sYXllci5yZW5kZXJlcigpLnN0eWxlKCk7CisgICAgLy8gQW4gZWxlbWVudCB0aGF0IGlzIG5v
dCBzY3JvbGwgY29udGFpbmVyIG11c3QgYWNjZXB0IGJ1dCBpZ25vcmUgdGhlIHZhbHVlcyBvZiB0
aGlzIHByb3BlcnR5LgorICAgIGlmIChtX2xheWVyLnJlbmRlckJveCgpICYmIG1fbGF5ZXIucmVu
ZGVyQm94KCktPmNhbkJlU2Nyb2xsZWRBbmRIYXNTY3JvbGxhYmxlQXJlYSgpKQorICAgICAgICBy
ZXR1cm4gc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWCgpOworICAgIHJldHVybiBTY3JvbGxhYmxl
QXJlYTo6aG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpOworfQorCitPdmVyc2Nyb2xsQmVo
YXZpb3IgUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6dmVydGljYWxPdmVyc2Nyb2xsQmVoYXZp
b3IoKSBjb25zdAoreworICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9IG1fbGF5ZXIucmVu
ZGVyZXIoKS5zdHlsZSgpOworICAgIC8vIEFuIGVsZW1lbnQgdGhhdCBpcyBub3Qgc2Nyb2xsIGNv
bnRhaW5lciBtdXN0IGFjY2VwdCBidXQgaWdub3JlIHRoZSB2YWx1ZXMgb2YgdGhpcyBwcm9wZXJ0
eS4KKyAgICBpZiAobV9sYXllci5yZW5kZXJCb3goKSAmJiBtX2xheWVyLnJlbmRlckJveCgpLT5j
YW5CZVNjcm9sbGVkQW5kSGFzU2Nyb2xsYWJsZUFyZWEoKSkKKyAgICAgICAgcmV0dXJuIHN0eWxl
Lm92ZXJzY3JvbGxCZWhhdmlvclkoKTsKKyAgICByZXR1cm4gU2Nyb2xsYWJsZUFyZWE6OnZlcnRp
Y2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVB
cmVhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJl
YS5oCmluZGV4IGRlMjZiMzA0ODkuLjUzOGE3OTRjMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuaApAQCAtMTI5LDYgKzEy
OSw5IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgc2Nyb2xsKFNjcm9sbERpcmVjdGlvbiwgU2Nyb2xs
R3JhbnVsYXJpdHksIGZsb2F0IG11bHRpcGxpZXIgPSAxKTsKIAorICAgIE92ZXJzY3JvbGxCZWhh
dmlvciBob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29uc3QgZmluYWw7CisgICAgT3Zl
cnNjcm9sbEJlaGF2aW9yIHZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29uc3QgZmluYWw7
CisKIHB1YmxpYzoKICAgICAvLyBBbGwgbWV0aG9kcyBpbiB0aGlzIHNlY3Rpb24gb3ZlcnJpZGUg
U2Nyb2xsYWJsZWFBcmVhIG1ldGhvZHMgKGZpbmFsKS4KICAgICB2b2lkIGF2YWlsYWJsZUNvbnRl
bnRTaXplQ2hhbmdlZChBdmFpbGFibGVTaXplQ2hhbmdlUmVhc29uKSBmaW5hbDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCmluZGV4IGRmZjYyNDMz
OTUuLjkxMzAyMzRjMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1Jl
bmRlclN0eWxlLmNwcApAQCAtMTE3NSw3ICsxMTc1LDkgQEAgYm9vbCBSZW5kZXJTdHlsZTo6Y2hh
bmdlUmVxdWlyZXNSZWNvbXBvc2l0ZUxheWVyKGNvbnN0IFJlbmRlclN0eWxlJiBvdGhlciwgT3B0
aW8KICAgICAgICAgICAgIHx8IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmJhY2tmYWNlVmlzaWJp
bGl0eSAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5iYWNrZmFjZVZpc2liaWxpdHkK
ICAgICAgICAgICAgIHx8IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnBlcnNwZWN0aXZlICE9IG90
aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnBlcnNwZWN0aXZlCiAgICAgICAgICAgICB8fCBt
X3JhcmVOb25Jbmhlcml0ZWREYXRhLT5wZXJzcGVjdGl2ZU9yaWdpblggIT0gb3RoZXIubV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+cGVyc3BlY3RpdmVPcmlnaW5YCi0gICAgICAgICAgICB8fCBtX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLT5wZXJzcGVjdGl2ZU9yaWdpblkgIT0gb3RoZXIubV9yYXJlTm9u
SW5oZXJpdGVkRGF0YS0+cGVyc3BlY3RpdmVPcmlnaW5ZKQorICAgICAgICAgICAgfHwgbV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+cGVyc3BlY3RpdmVPcmlnaW5ZICE9IG90aGVyLm1fcmFyZU5vbklu
aGVyaXRlZERhdGEtPnBlcnNwZWN0aXZlT3JpZ2luWQorICAgICAgICAgICAgfHwgbV9yYXJlTm9u
SW5oZXJpdGVkRGF0YS0+b3ZlcnNjcm9sbEJlaGF2aW9yWCAhPSBvdGhlci5tX3JhcmVOb25Jbmhl
cml0ZWREYXRhLT5vdmVyc2Nyb2xsQmVoYXZpb3JYCisgICAgICAgICAgICB8fCBtX3JhcmVOb25J
bmhlcml0ZWREYXRhLT5vdmVyc2Nyb2xsQmVoYXZpb3JZICE9IG90aGVyLm1fcmFyZU5vbkluaGVy
aXRlZERhdGEtPm92ZXJzY3JvbGxCZWhhdmlvclkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKaW5kZXggMWY1ZDk3MzNkNi4uZTI0NmIxZjYzOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNyBAQAorMjAyMS0wMy0xNSAgQ2F0aGllIENoZW4gIDxjYXRoaWVjaGVuQGlnYWxp
YS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IENTUyBvdmVyc2Nyb2xsLWJlaGF2aW9yIGZvciBh
c3luY2hyb25vdXMgc2Nyb2xsIG9uIE1hYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjIwMTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgRW5jb2RlIGFuZCBkZWNvZGUgb3ZlcnNjcm9sbEJlaGF2aW9yIHRo
ZSB2YWx1ZXMgb2YgU2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzLgorCisgICAgICAgICogU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8
U2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzPjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1l
bnRDb2RlcjxTY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnM+OjpkZWNvZGUpOgorICAgICAgICAqIFNo
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKwogMjAyMS0wMy0xNSAgS2ltbW8gS2lubnVu
ZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgdmVydGV4IGFycmF5IGZ1
bmN0aW9uYWxpdHkgZnJvbSBFeHRlbnNpb25zR0wgdG8gR3JhcGhpY3NDb250ZXh0R0wKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDM4ZGQ5
ZDMxZTYuLmMxNTA1MDZiZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmNwcApAQCAtMjAwMCw2ICsyMDAwLDkgQEAgYm9vbCBBcmd1bWVudENvZGVy
PFVzZXJTdHlsZVNoZWV0Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFVzZXJTdHlsZVNoZWV0
JiB1c2UKIAogdm9pZCBBcmd1bWVudENvZGVyPFNjcm9sbGFibGVBcmVhUGFyYW1ldGVycz46OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMmIHBh
cmFtZXRlcnMpCiB7CisgICAgZW5jb2RlciA8PCBwYXJhbWV0ZXJzLmhvcml6b250YWxPdmVyc2Ny
b2xsQmVoYXZpb3I7CisgICAgZW5jb2RlciA8PCBwYXJhbWV0ZXJzLnZlcnRpY2FsT3ZlcnNjcm9s
bEJlaGF2aW9yOworCiAgICAgZW5jb2RlciA8PCBwYXJhbWV0ZXJzLmhvcml6b250YWxTY3JvbGxF
bGFzdGljaXR5OwogICAgIGVuY29kZXIgPDwgcGFyYW1ldGVycy52ZXJ0aWNhbFNjcm9sbEVsYXN0
aWNpdHk7CiAKQEAgLTIwMTcsNiArMjAyMCwxMSBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8U2Nyb2xs
YWJsZUFyZWFQYXJhbWV0ZXJzPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNjcgog
CiBib29sIEFyZ3VtZW50Q29kZXI8U2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzPjo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIsIFNjcm9sbGFibGVBcmVhUGFyYW1ldGVycyYgcGFyYW1zKQogeworICAg
IGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1zLmhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3Ip
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbXMu
dmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtcy5ob3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eSkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtcy52
ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaAppbmRleCA5MjhkYTc1NjBjLi5iYWNlZjE1M2E4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtNDAsNiArNDAsNyBA
QAogI2luY2x1ZGUgPFdlYkNvcmUvUmVhbHRpbWVNZWRpYVNvdXJjZS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUmVuZGVyaW5nTW9kZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Nyb2xsU25hcE9mZnNl
dHNJbmZvLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxUeXBlcy5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9TZXJ2aWNlV29ya2VyVHlwZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1N0b3JlZENyZWRlbnRp
YWxzUG9saWN5Lmg+CkBAIC04NDgsNiArODQ5LDE1IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8+IHsKIAogbmFt
ZXNwYWNlIFdURiB7CiAKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6T3Zl
cnNjcm9sbEJlaGF2aW9yPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICBX
ZWJDb3JlOjpPdmVyc2Nyb2xsQmVoYXZpb3IsCisgICAgV2ViQ29yZTo6T3ZlcnNjcm9sbEJlaGF2
aW9yOjpBdXRvLAorICAgIFdlYkNvcmU6Ok92ZXJzY3JvbGxCZWhhdmlvcjo6Q29udGFpbiwKKyAg
ICBXZWJDb3JlOjpPdmVyc2Nyb2xsQmVoYXZpb3I6Ok5vbmUKKyAgICA+OworfTsKKwogdGVtcGxh
dGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpSZW5kZXJpbmdNb2RlPiB7CiAgICAgdXNp
bmcgdmFsdWVzID0gRW51bVZhbHVlczwKICAgICAgICAgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBjNzdjMGYyODYzLi5iNTdkYTQxZjIzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEtMDMtMTUg
IENhdGhpZSBDaGVuICA8Y2F0aGllY2hlbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFN1cHBvcnQg
Q1NTIG92ZXJzY3JvbGwtYmVoYXZpb3IgZm9yIHN5bmNocm9ub3VzIHNjcm9sbAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyOTY4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmFzZWQgb24gRnLDqWTDqXJp
YyBXYW5nJ3MgcGF0Y2guCisKKyAgICAgICAgTmVlZCB0byBmaW5kIGEgd2F5IHRvIGJsb2NrIHRo
ZSBjcm9zcy1mcmFtZSBzY3JvbGwgY2hhaW5pbmcgaW4gV0sxLgorCisgICAgICAgICogV2ViVmll
dy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgc2Nyb2xsV2hlZWw6XSk6
CisKIDIwMjEtMDMtMTEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBJbnRyb2R1Y2UgV29ya1F1ZXVlOjptYWluKCkgdG8gZ2V0IHRoZSBtYWluIHRocmVhZCdzIHdv
cmsgcXVldWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
SFRNTFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3
Lm1tCmluZGV4IDJiOGEyODIwZjguLjkzMjQ4NzA5MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQpAQCAtNDA4Niw2ICs0MDg2LDggQEAgc3Rh
dGljIEJPT0wgY3VycmVudFNjcm9sbElzQmxpdChOU1ZpZXcgKmNsaXBWaWV3KQogICAgIGF1dG8q
IGZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKTsKICAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+
ZXZlbnRIYW5kbGVyKCkud2hlZWxFdmVudChldmVudCkpIHsKICNpZiBQTEFURk9STShNQUMpCisg
ICAgICAgIC8vIEZJWE1FOiBOZWVkIHRvIGZpbmQgYSB3YXkgdG8gYmxvY2sgdGhlIGNyb3NzLWZy
YW1lIHNjcm9sbCBjaGFpbmluZyBpbiBXSzEuCisgICAgICAgIC8vIFdlIGNhbiBub3QganVzdCBz
a2lwIHRoZSBzY3JvbGwgaGVyZSwgaXQgbm90IG9ubHkgYmxvY2tzIHNjcm9sbCBjaGFpbmluZyBi
dXQgYWxzbyBibG9ja3MgdGhlIHNjcm9sbCBvbiBjdXJyZW50IHZpZXcuCiAgICAgICAgIFtzdXBl
ciBzY3JvbGxXaGVlbDpldmVudF07CiAjZW5kaWYKICAgICB9Cg==
</data>
<flag name="commit-queue"
          id="442759"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423891</attachid>
            <date>2021-03-22 08:47:58 -0700</date>
            <delta_ts>2021-11-17 16:26:34 -0800</delta_ts>
            <desc>async-overscroll-behavior-for-ews</desc>
            <filename>overscroll-behavior-async-for-ews-002.diff</filename>
            <type>text/plain</type>
            <size>98866</size>
            <attacher name="cathiechen">cathiechen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzZTAzYmIxMDI3Li5hOGNkYWJmZjJmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjEgQEAKKzIw
MjEtMDMtMTUgIENhdGhpZSBDaGVuICA8Y2F0aGllY2hlbkBpZ2FsaWEuY29tPgorCisgICAgICAg
IEltcGxlbWVudCBDU1Mgb3ZlcnNjcm9sbC1iZWhhdmlvciBmb3IgYXN5bmNocm9ub3VzIHNjcm9s
bCBvbiBNYWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyMDEzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWVs
ZW1lbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9tYWMv
YXN5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZp
b3ItaWZyYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcv
bWFjL2FzeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVo
YXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5z
Y3JvbGxhYmxlLWVsZW1lbnQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcv
bWFjL2FzeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMt
c2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnM6CisKKzIwMjEt
MDMtMTUgIENhdGhpZSBDaGVuICA8Y2F0aGllY2hlbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFN1
cHBvcnQgQ1NTIG92ZXJzY3JvbGwtYmVoYXZpb3IgZm9yIHN5bmNocm9ub3VzIHNjcm9sbAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyOTY4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmFzZWQgb24gRnLD
qWTDqXJpYyBXYW5nJ3MgcGF0Y2guCisKKyAgICAgICAgVGVzdCBvdmVyc2Nyb2xsLWJlaGF2aW9y
IGZvciBvdmVyZmxvdyBlbGVtZW50cyBhbmQgaWZyYW1lcy4gVGhlIHRlc3RzIHRyaWdnZXIgd2hl
ZWwgc2Nyb2xsIGV2ZW50cworICAgICAgICBhbmQgd2FpdCAuNXMsIHRoZW4gY2hlY2sgd2hldGhl
ciBzY3JvbGwgb2NjdXJzIG9yIG5vdC4KKyAgICAgICAgVGhlIHRlc3RzIGFyZSBza2lwcGVkIG9u
IGlPUyBmb3Igb25seSBzeW5jaHJvbm91cyBzY3JvbGwgYXJlIHRlc3RlZC4KKyAgICAgICAgRm9y
IFdLMSwgdGhlIGlmcmFtZSB0ZXN0cyBmYWlsIGJlY2F1c2UgbGFjayBvZiBpbnRlcmZhY2VzIHRv
IGNvbnRyb2wgc2Nyb2xsIGNoYWluaW5nIGluIFdlYkhUTUxWaWV3LgorCisgICAgICAgICogVGVz
dEV4cGVjdGF0aW9uczogV2FpdGluZyAuNXMgZm9yIGVhY2ggY2FzZSBtYWtlcyB0aGUgdGVzdCBz
bG93LgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL3Jlc291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2
aW9yLXN1cHBvcnQuanM6IEFkZGVkLgorICAgICAgICAoZ2V0RGVsdGFzKToKKyAgICAgICAgKGFz
eW5jIG1vdXNlV2hlZWxTY3JvbGxBbmRXYWl0KToKKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9z
eW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2
aW9yLWVsZW1lbnQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvc3luYy1z
Y3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWlm
cmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1v
dmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50LWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhh
dmlvci11bnNjcm9sbGFibGUtZWxlbWVudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Nj
cm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJh
bWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9zeW5jLXNj
cm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUuaHRtbDogQWRkZWQu
CisgICAgICAgICogcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxh
dGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9U
ZXN0RXhwZWN0YXRpb25zOgorCisyMDIxLTAyLTA0ICBSb2IgQnVpcyAgPHJidWlzQGlnYWxpYS5j
b20+CisKKyAgICAgICAgTWFrZSBzaG91bGRDb21wdXRlTG9naWNhbFdpZHRoRnJvbUFzcGVjdFJh
dGlvQW5kSW5zZXRzIHdyaXRpbmcgbW9kZSBhd2FyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMzI4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTWFu
dWVsIFJlZ28gQ2FzYXNub3Zhcy4KKworICAgICAgICBFbmFibGUgc29tZSB0ZXN0cyB0aGF0IHBh
c3Mgbm93LgorCisgICAgICAgICogVGVzdEV4cGVjdGF0aW9uczoKKwogMjAyMS0wMy0xNSAgSW1h
bm9sIEZlcm5hbmRleiAgPGlmZXJuYW5kZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBTcGxpdCBX
ZWJYUiBmZWF0dXJlcyBpbnRvIGVuYWJsZWRGZWF0dXJlcywgc3VwcG9ydGVkRmVhdHVyZXMgYW5k
IHJlcXVlc3RlZEZlYXR1cmVzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRp
b25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAxNDg1MTFkNWM1Li41NDAx
NTAyMmUzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xh
eW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTQ2NDUsNiArNDY0NSwxMiBAQCBmYXN0L3No
YWRvdy1kb20vaW9zLyBbIFNraXAgXQogIyBSZXF1aXJlcyBXSzIgVGVzdFJ1bm5lcgogZnVsbHNj
cmVlbi9mdWxsLXNjcmVlbi1lbnRlci13aGlsZS1leGl0aW5nLmh0bWwgWyBTa2lwIF0KIAorIyBO
ZWVkIHRvIHdhaXQgYW5kIGNoZWNrIHdoZXRoZXIgc2Nyb2xsIG9jY3VycworZmFzdC9zY3JvbGxp
bmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50Lmh0bWwgWyBTbG93IF0K
K2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0
bWwgWyBTbG93IF0KK2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZp
b3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRtbCBbIFNsb3cgXQorZmFzdC9zY3JvbGxpbmcvc3lu
Yy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLmh0bWwgWyBT
bG93IF0KKwogIyBBbmltYXRpb24gLyBMYXlvdXQgd29ya2V0cyBhcmUgbm90IHN1cHBvcnRlZAog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrbGV0cy9hbmltYXRpb24td29ya2xl
dC1zZXJ2aWNlLXdvcmtlci1pbnRlcmNlcHRpb24uaHR0cHMuaHRtbCBbIFNraXAgXQogaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrbGV0cy9hbmltYXRpb24td29ya2xldC1jc3Au
aHR0cHMuaHRtbCBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxp
bmcvbWFjL2FzeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLXNjcm9sbC1vdmVyc2Ny
b2xsLWJlaGF2aW9yLWVsZW1lbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAuLjI3MTUwZmY2MGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxl
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
aW5nL21hYy9hc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50Lmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVo
YXZpb3ItZWxlbWVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAu
LmRiNDJjMmVkNzkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGlu
Zy9tYWMvYXN5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC5odG1sCkBAIC0w
LDAgKzEsODcgQEAKKzwhZG9jdHlwZSBodG1sPiA8IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIEFz
eW5jT3ZlcmZsb3dTY3JvbGxpbmdFbmFibGVkPXRydWUgQXN5bmNGcmFtZVNjcm9sbGluZ0VuYWJs
ZWQ9dHJ1ZSBdIC0tPgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvdGVzdGhh
cm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9vdmVy
c2Nyb2xsLWJlaGF2aW9yLXN1cHBvcnQuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJoZWxwIiBo
cmVmPSJodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLW92ZXJzY3JvbGwtYmVoYXZpb3IiPgor
PHN0eWxlPgorICAgIC5zY3JvbGxpbmcgeworICAgICAgICBvdmVyZmxvdzogc2Nyb2xsOworICAg
IH0KKyAgICAuc2Nyb2xsQ29udGVudCB7CisgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAg
aGVpZ2h0OiAzMDBweDsKKyAgICB9CisgICAgI3Jvb3QgeworICAgICAgICB3aWR0aDogMjAwcHg7
CisgICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgfQorICAgICNzY3JvbGxlciB7CisgICAgICAg
IHdpZHRoOiAxMDBweDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICB9Cis8L3N0eWxlPgor
PGRpdiBpZD0ncm9vdCcgY2xhc3M9InNjcm9sbGluZyI+CisgICAgPGRpdiBpZD0nc2Nyb2xsZXIn
IGNsYXNzPSJzY3JvbGxpbmciPgorICAgICAgICA8ZGl2IGNsYXNzPSJzY3JvbGxDb250ZW50Ij48
L2Rpdj4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJzY3JvbGxDb250ZW50Ij48L2Rpdj4K
KzwvZGl2PgorCis8c2NyaXB0PgorY29uc3Qgcm9vdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdyb290Jyk7Citjb25zdCBzY3JvbGxlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY3Jv
bGxlcicpOwordmFyIG92ZXJzY3JvbGxEYXRhcyA9IFtbImF1dG8iLCAiYXV0byIsIHRydWUsIHRy
dWVdLAorICAgICAgICAgICAgICAgICAgICAgICAgWyJjb250YWluIiwgImF1dG8iLCBmYWxzZSwg
dHJ1ZV0sCisgICAgICAgICAgICAgICAgICAgICAgICBbIm5vbmUiLCAiYXV0byIsIGZhbHNlLCB0
cnVlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFsiYXV0byIsICJjb250YWluIiwgdHJ1ZSwg
ZmFsc2VdLAorICAgICAgICAgICAgICAgICAgICAgICAgWyJjb250YWluIiwgImNvbnRhaW4iLCBm
YWxzZSwgZmFsc2VdLAorICAgICAgICAgICAgICAgICAgICAgICAgWyJub25lIiwgImNvbnRhaW4i
LCBmYWxzZSwgZmFsc2VdLAorICAgICAgICAgICAgICAgICAgICAgICAgWyJhdXRvIiwgIm5vbmUi
LCB0cnVlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAgICBbImNvbnRhaW4iLCAibm9u
ZSIsIGZhbHNlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAgICBbIm5vbmUiLCAibm9u
ZSIsIGZhbHNlLCBmYWxzZV1dOworCitmdW5jdGlvbiByZXNldFRlc3QoKSB7CisgICAgLy8gVHJ5
IHZhcmlvdXMgbWV0aG9kcyB0byBlbnN1cmUgdGhlIGVsZW1lbnQgcG9zaXRpb24gaXMgcmVzZXQg
aW1tZWRpYXRlbHkuCisgICAgc2Nyb2xsZXIuc2Nyb2xsTGVmdCA9IDMwMDsKKyAgICBzY3JvbGxl
ci5zY3JvbGxUb3AgPSAzMDA7CisgICAgc2Nyb2xsZXIuc2Nyb2xsVG8oMzAwLCAzMDApOworCisg
ICAgcm9vdC5zY3JvbGxMZWZ0ID0gMDsKKyAgICByb290LnNjcm9sbFRvcCA9IDA7CisgICAgcm9v
dC5zY3JvbGxUbygwLCAwKTsKK30KKworZnVuY3Rpb24gc3RhcnRUZXN0KCkgeworICAgIG92ZXJz
Y3JvbGxEYXRhcy5mb3JFYWNoKChbb3ZlcnNjcm9sbFgsIG92ZXJzY3JvbGxZLCBwcm9wYWdhdGVY
LCBwcm9wYWdhdGVZXSkgPT4geworICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgICAg
ICAgICAgcmVzZXRUZXN0KCk7CisgICAgICAgICAgICBzY3JvbGxlci5zdHlsZS5vdmVyc2Nyb2xs
QmVoYXZpb3JYID0gb3ZlcnNjcm9sbFg7CisgICAgICAgICAgICBzY3JvbGxlci5zdHlsZS5vdmVy
c2Nyb2xsQmVoYXZpb3JZID0gb3ZlcnNjcm9sbFk7CisgICAgICAgICAgICBkb2N1bWVudC5ib2R5
LmNsaWVudFdpZHRoOworCisgICAgICAgICAgICB2YXIgeCA9IHNjcm9sbGVyLmNsaWVudFdpZHRo
IC8gMjsKKyAgICAgICAgICAgIHZhciB5ID0gc2Nyb2xsZXIuY2xpZW50SGVpZ2h0IC8gMjsKKyAg
ICAgICAgICAgIHZhciBkZWx0YSA9IGdldERlbHRhcygicmlnaHQiKTsKKyAgICAgICAgICAgIHJl
dHVybiBtb3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCh4LCB5LCBkZWx0YS5YLCBkZWx0YS5ZLCBkZWx0
YS5YLCBkZWx0YS5ZKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxz
KHJvb3Quc2Nyb2xsTGVmdCA+IDAsIHByb3BhZ2F0ZVgsICdDb250aW51ZSB1cCB0aGUgaG9yaXpv
bnRhbCBzY3JvbGwgY2hhaW5pbmcnKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9LCAnRWxl
bWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogJyAr
IG92ZXJzY3JvbGxYICsgJyAnICsgb3ZlcnNjcm9sbFkgKyAnLicpOworCisgICAgICAgIHByb21p
c2VfdGVzdCgoKSA9PiB7CisgICAgICAgICAgICByZXNldFRlc3QoKTsKKyAgICAgICAgICAgIHNj
cm9sbGVyLnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclggPSBvdmVyc2Nyb2xsWDsKKyAgICAgICAg
ICAgIHNjcm9sbGVyLnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclkgPSBvdmVyc2Nyb2xsWTsKKwor
ICAgICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAgICAgICAg
ICB2YXIgeSA9IHNjcm9sbGVyLmNsaWVudEhlaWdodCAvIDI7CisgICAgICAgICAgICB2YXIgZGVs
dGEgPSBnZXREZWx0YXMoImRvd24iKTsKKyAgICAgICAgICAgIHJldHVybiBtb3VzZVdoZWVsU2Ny
b2xsQW5kV2FpdCh4LCB5LCBkZWx0YS5YLCBkZWx0YS5ZLCBkZWx0YS5YLCBkZWx0YS5ZKS50aGVu
KCgpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsVG9wID4g
MCwgcHJvcGFnYXRlWSwgJ0NvbnRpbnVlIHVwIHRoZSB2ZXJ0aWNhbCBzY3JvbGwgY2hhaW5pbmcn
KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9LCAnRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwg
dGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6ICcgKyBvdmVyc2Nyb2xsWCArICcgJyArIG92
ZXJzY3JvbGxZICsgJy4nKTsKKyAgICB9KTsKK30KKworYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIs
IHN0YXJ0VGVzdCk7Cis8L3NjcmlwdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtc2Nyb2xsLW92ZXJz
Y3JvbGwtYmVoYXZpb3ItaWZyYW1lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Ny
b2xsaW5nL21hYy9hc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjkwMGEwYjdkOTAK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMt
c2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDIxIEBACisKKworUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJz
Y3JvbGwtYmVoYXZpb3I6IGF1dG8gYXV0by4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0
ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBhdXRvLgorUEFTUyBJZnJhbWUgaG9y
aXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gYXV0
by4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhh
dmlvcjogY29udGFpbiBhdXRvLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3
aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgYXV0by4KK1BBU1MgSWZyYW1lIHZlcnRpY2Fs
IHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBhdXRvLgorUEFTUyBJ
ZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1
dG8gY29udGFpbi4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNj
cm9sbC1iZWhhdmlvcjogYXV0byBjb250YWluLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3Jv
bGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gY29udGFpbi4KK1BBU1Mg
SWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29u
dGFpbiBjb250YWluLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92
ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgY29udGFpbi4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNj
cm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBjb250YWluLgorUEFTUyBJ
ZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1
dG8gbm9uZS4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9s
bC1iZWhhdmlvcjogYXV0byBub25lLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVz
dCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gbm9uZS4KK1BBU1MgSWZyYW1lIHZl
cnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBub25l
LgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVo
YXZpb3I6IG5vbmUgbm9uZS4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGgg
b3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBub25lLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZy
YW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtc2Nyb2xsLW92
ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMC4uYjM1ZjViNzEwNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUu
aHRtbApAQCAtMCwwICsxLDg4IEBACis8IWRvY3R5cGUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1y
dW5uZXIgWyBBc3luY092ZXJmbG93U2Nyb2xsaW5nRW5hYmxlZD10cnVlIEFzeW5jRnJhbWVTY3Jv
bGxpbmdFbmFibGVkPXRydWUgXSAtLT4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNl
cy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNv
dXJjZXMvb3ZlcnNjcm9sbC1iZWhhdmlvci1zdXBwb3J0LmpzIj48L3NjcmlwdD4KKzxsaW5rIHJl
bD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1vdmVyc2Nyb2xsLWJl
aGF2aW9yIj4KKzxzdHlsZT4KKyAgICAuc2Nyb2xsaW5nIHsKKyAgICAgICAgb3ZlcmZsb3c6IHNj
cm9sbDsKKyAgICB9CisgICAgLnNjcm9sbENvbnRlbnQgeworICAgICAgICB3aWR0aDogMzAwcHg7
CisgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFk
aWVudCgxMzVkZWcsIHJlZCwgYmx1ZSk7CisgICAgfQorICAgICNyb290IHsKKyAgICAgICAgd2lk
dGg6IDIwMHB4OworICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAgIH0KKyAgICAjc2Nyb2xsZXIg
eworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICAg
IG92ZXJzY3JvbGwtYmVoYXZpb3IteTogYXV0bzsKKyAgICB9Cis8L3N0eWxlPgorPGRpdiBpZD0n
cm9vdCcgY2xhc3M9InNjcm9sbGluZyI+CisgICAgPGlmcmFtZSBpZD0nc2Nyb2xsZXInIHNyY2Rv
Yz0iPGh0bWw+PGRpdiBzdHlsZT0nd2lkdGg6IDMwMHB4OyBoZWlnaHQ6IDMwMHB4Oyc+PC9kaXY+
PC9odG1sPgorICAgICAgICAiPjwvaWZyYW1lPgorICAgIDxkaXYgY2xhc3M9InNjcm9sbENvbnRl
bnQiPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+CisgICAgY29uc3Qgcm9vdCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdyb290Jyk7CisgICAgY29uc3Qgc2Nyb2xsZXIgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnc2Nyb2xsZXInKTsKKyAgICB2YXIgb3ZlcnNjcm9sbERhdGFzID0gW1si
YXV0byIsICJhdXRvIiwgdHJ1ZSwgdHJ1ZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
WyJjb250YWluIiwgImF1dG8iLCBmYWxzZSwgdHJ1ZV0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgWyJub25lIiwgImF1dG8iLCBmYWxzZSwgdHJ1ZV0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgWyJhdXRvIiwgImNvbnRhaW4iLCB0cnVlLCBmYWxzZV0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgWyJjb250YWluIiwgImNvbnRhaW4iLCBmYWxzZSwgZmFsc2VdLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFsibm9uZSIsICJjb250YWluIiwgZmFsc2UsIGZhbHNl
XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImF1dG8iLCAibm9uZSIsIHRydWUsIGZh
bHNlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImNvbnRhaW4iLCAibm9uZSIsIGZh
bHNlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJub25lIiwgIm5vbmUi
LCBmYWxzZSwgZmFsc2VdXTsKKyAgICBmdW5jdGlvbiByZXNldFRlc3QoKSB7CisgICAgICAgIC8v
IFRyeSB2YXJpb3VzIG1ldGhvZHMgdG8gZW5zdXJlIHRoZSBlbGVtZW50IHBvc2l0aW9uIGlzIHJl
c2V0IGltbWVkaWF0ZWx5LgorICAgICAgICBzY3JvbGxlci5jb250ZW50V2luZG93LnNjcm9sbFgg
PSAzMDA7CisgICAgICAgIHNjcm9sbGVyLmNvbnRlbnRXaW5kb3cuc2Nyb2xsWSA9IDMwMDsKKyAg
ICAgICAgc2Nyb2xsZXIuY29udGVudFdpbmRvdy5zY3JvbGxUbygzMDAsIDMwMCk7CisKKyAgICAg
ICAgcm9vdC5zY3JvbGxMZWZ0ID0gMDsKKyAgICAgICAgcm9vdC5zY3JvbGxUb3AgPSAwOworICAg
ICAgICByb290LnNjcm9sbFRvKDAsIDApOworICAgIH0KKworICAgIGZ1bmN0aW9uIG92ZXJzY3Jv
bGxCZWhhdmlvclRlc3QoKSB7CisgICAgICAgIG92ZXJzY3JvbGxEYXRhcy5mb3JFYWNoKChbb3Zl
cnNjcm9sbFgsIG92ZXJzY3JvbGxZLCBwcm9wYWdhdGVYLCBwcm9wYWdhdGVZXSkgPT4geworICAg
ICAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAgICAgICByZXNldFRlc3Qo
KTsKKyAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gc2Nyb2xsZXIuY29udGVudFdpbmRvdy5k
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaHRtbCIpWzBdOworICAgICAgICAgICAgICAg
IHRhcmdldC5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JYID0gb3ZlcnNjcm9sbFg7CisgICAgICAg
ICAgICAgICAgdGFyZ2V0LnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclkgPSBvdmVyc2Nyb2xsWTsK
KworICAgICAgICAgICAgICAgIHZhciB4ID0gc2Nyb2xsZXIuY2xpZW50V2lkdGggLyAyOworICAg
ICAgICAgICAgICAgIHZhciB5ID0gc2Nyb2xsZXIuY2xpZW50SGVpZ2h0IC8gMjsKKyAgICAgICAg
ICAgICAgICB2YXIgZGVsdGEgPSBnZXREZWx0YXMoInJpZ2h0Iik7CisgICAgICAgICAgICAgICAg
cmV0dXJuIG1vdXNlV2hlZWxTY3JvbGxBbmRXYWl0KHgsIHksIGRlbHRhLlgsIGRlbHRhLlksIGRl
bHRhLlgsIGRlbHRhLlkpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgICAgICBhc3NlcnRf
ZXF1YWxzKHJvb3Quc2Nyb2xsTGVmdCA+IDAsIHByb3BhZ2F0ZVgsICdDb250aW51ZSB1cCB0aGUg
aG9yaXpvbnRhbCBzY3JvbGwgY2hhaW5pbmcnKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgIH0sICdJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwt
YmVoYXZpb3I6ICcgKyBvdmVyc2Nyb2xsWCArICcgJyArIG92ZXJzY3JvbGxZICsgJy4nKTsKKwor
ICAgICAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAgICAgICByZXNldFRl
c3QoKTsKKyAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gc2Nyb2xsZXIuY29udGVudFdpbmRv
dy5kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaHRtbCIpWzBdOworICAgICAgICAgICAg
ICAgIHRhcmdldC5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JYID0gb3ZlcnNjcm9sbFg7CisgICAg
ICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclkgPSBvdmVyc2Nyb2xs
WTsKKworICAgICAgICAgICAgICAgIHZhciB4ID0gc2Nyb2xsZXIuY2xpZW50V2lkdGggLyAyOwor
ICAgICAgICAgICAgICAgIHZhciB5ID0gc2Nyb2xsZXIuY2xpZW50SGVpZ2h0IC8gMjsKKyAgICAg
ICAgICAgICAgICB2YXIgZGVsdGEgPSBnZXREZWx0YXMoImRvd24iKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gbW91c2VXaGVlbFNjcm9sbEFuZFdhaXQoeCwgeSwgZGVsdGEuWCwgZGVsdGEuWSwg
ZGVsdGEuWCwgZGVsdGEuWSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgICAgIGFzc2Vy
dF9lcXVhbHMocm9vdC5zY3JvbGxUb3AgPiAwLCBwcm9wYWdhdGVZLCAnQ29udGludWUgdXAgdGhl
IHZlcnRpY2FsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAgICAgICAgICAgIH0pOworICAgICAg
ICAgICAgfSwgJ0lmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVo
YXZpb3I6ICcgKyBvdmVyc2Nyb2xsWCArICcgJyArIG92ZXJzY3JvbGxZICsgJy4nKTsKKyAgICAg
ICAgfSk7CisgICAgfQorCisgICAgc2Nyb2xsZXIuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIG92
ZXJzY3JvbGxCZWhhdmlvclRlc3QpOworPC9zY3JpcHQ+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLXNj
cm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1zY3JvbGwtb3ZlcnNjcm9s
bC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uZjM5NWI2NDg4ZAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1i
ZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBA
CisKK1BBU1MgVW5zY3JvbGxhYmxlIGVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRo
IG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuCitQQVNTIFVuc2Nyb2xsYWJsZSBlbGVtZW50IHZl
cnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4KKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLXNjcm9sbC1vdmVy
c2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3Jv
bGxhYmxlLWVsZW1lbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
Li5mMTIwNWVhMWMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxp
bmcvbWFjL2FzeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVt
ZW50Lmh0bWwKQEAgLTAsMCArMSw2NiBAQAorPCFkb2N0eXBlIGh0bWw+IDwhLS0gd2Via2l0LXRl
c3QtcnVubmVyIFsgQXN5bmNPdmVyZmxvd1Njcm9sbGluZ0VuYWJsZWQ9dHJ1ZSBBc3luY0ZyYW1l
U2Nyb2xsaW5nRW5hYmxlZD10cnVlIF0gLS0+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNv
dXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jl
c291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL292ZXJzY3JvbGwtYmVoYXZpb3Itc3VwcG9ydC5qcyI+PC9zY3JpcHQ+Cis8bGlu
ayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3Mtb3ZlcnNjcm9s
bC1iZWhhdmlvciI+Cis8c3R5bGU+CisgICAgLnNjcm9sbGluZyB7CisgICAgICAgIG92ZXJmbG93
OiBzY3JvbGw7CisgICAgfQorICAgIC5zY3JvbGxDb250ZW50IHsKKyAgICAgICAgd2lkdGg6IDMw
MHB4OworICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgIH0KKyAgICAjcm9vdCB7CisgICAgICAg
IHdpZHRoOiAyMDBweDsKKyAgICAgICAgaGVpZ2h0OiAyMDBweDsKKyAgICB9CisgICAgI3Njcm9s
bGVyIHsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAg
ICAgICBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lOworICAgICAgICBvdmVyZmxvdzogdmlzaWJs
ZTsKKyAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmVkLCBibHVl
KTsKKyAgICB9Cis8L3N0eWxlPgorPGRpdiBpZD0icm9vdCIgY2xhc3M9InNjcm9sbGluZyI+Cisg
ICAgPGRpdiBpZD0ic2Nyb2xsZXIiPgorICAgICAgICA8ZGl2IGNsYXNzPSJzY3JvbGxDb250ZW50
Ij48L2Rpdj4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJzY3JvbGxDb250ZW50Ij48L2Rp
dj4KKzwvZGl2PgorCis8c2NyaXB0PgorY29uc3Qgcm9vdCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdyb290Jyk7Citjb25zdCBzY3JvbGxlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdz
Y3JvbGxlcicpOworZnVuY3Rpb24gcmVzZXRUZXN0KCkgeworICAgIHJvb3Quc2Nyb2xsTGVmdCA9
IDA7CisgICAgcm9vdC5zY3JvbGxUb3AgPSAwOworICAgIHJvb3Quc2Nyb2xsVG8oMCwgMCk7Cit9
CisKK2Z1bmN0aW9uIHN0YXJ0VGVzdCgpIHsKKyAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsK
KyAgICAgICAgICAgIHJlc2V0VGVzdCgpOworICAgICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5j
bGllbnRXaWR0aCAvIDI7CisgICAgICAgICAgICB2YXIgeSA9IHNjcm9sbGVyLmNsaWVudEhlaWdo
dCAvIDI7CisgICAgICAgICAgICB2YXIgZGVsdGEgPSBnZXREZWx0YXMoInJpZ2h0Iik7CisgICAg
ICAgICAgICByZXR1cm4gbW91c2VXaGVlbFNjcm9sbEFuZFdhaXQoeCwgeSwgZGVsdGEuWCwgZGVs
dGEuWSwgZGVsdGEuWCwgZGVsdGEuWSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgYXNz
ZXJ0X2VxdWFscyhyb290LnNjcm9sbExlZnQgPiAwLCB0cnVlLCAnQ29udGludWUgdXAgdGhlIGhv
cml6b250YWwgc2Nyb2xsIGNoYWluaW5nJyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSwg
J1Vuc2Nyb2xsYWJsZSBlbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Ny
b2xsLWJlaGF2aW9yOiBub25lLicpOworCisgICAgICAgIHByb21pc2VfdGVzdCgoKSA9PiB7Cisg
ICAgICAgICAgICByZXNldFRlc3QoKTsKKyAgICAgICAgICAgIHZhciB4ID0gc2Nyb2xsZXIuY2xp
ZW50V2lkdGggLyAyOworICAgICAgICAgICAgdmFyIHkgPSBzY3JvbGxlci5jbGllbnRIZWlnaHQg
LyAyOworICAgICAgICAgICAgdmFyIGRlbHRhID0gZ2V0RGVsdGFzKCJkb3duIik7CisgICAgICAg
ICAgICByZXR1cm4gbW91c2VXaGVlbFNjcm9sbEFuZFdhaXQoeCwgeSwgZGVsdGEuWCwgZGVsdGEu
WSwgZGVsdGEuWCwgZGVsdGEuWSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0
X2VxdWFscyhyb290LnNjcm9sbFRvcCA+IDAsIHRydWUsICdDb250aW51ZSB1cCB0aGUgdmVydGlj
YWwgc2Nyb2xsIGNoYWluaW5nJyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSwgJ1Vuc2Ny
b2xsYWJsZSBlbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhh
dmlvcjogbm9uZS4nKTsKK30KKworYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIHN0YXJ0VGVzdCk7
Cis8L3NjcmlwdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZp
b3ItdW5zY3JvbGxhYmxlLWlmcmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3Nj
cm9sbGluZy9tYWMvYXN5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxl
LWlmcmFtZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MC4uN2ZhNTljY2JhNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xs
aW5nL21hYy9hc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZy
YW1lLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKKworCitQQVNTIFVuc2Nyb2xsYWJsZSBp
ZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5v
bmUuCitQQVNTIFVuc2Nyb2xsYWJsZSBpZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBv
dmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L3Njcm9sbGluZy9tYWMvYXN5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxh
YmxlLWlmcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLXNj
cm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4zM2VjNWIyNjNjCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLXNjcm9sbC1vdmVyc2Ny
b2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUuaHRtbApAQCAtMCwwICsxLDY2IEBACis8
IWRvY3R5cGUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBBc3luY092ZXJmbG93U2Ny
b2xsaW5nRW5hYmxlZD10cnVlIEFzeW5jRnJhbWVTY3JvbGxpbmdFbmFibGVkPXRydWUgXSAtLT4K
KworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0Lmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvb3ZlcnNjcm9sbC1iZWhhdmlv
ci1zdXBwb3J0LmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9k
cmFmdHMuY3Nzd2cub3JnL2Nzcy1vdmVyc2Nyb2xsLWJlaGF2aW9yIj4KKzxzdHlsZT4KKyAgICAu
c2Nyb2xsaW5nIHsKKyAgICAgICAgb3ZlcmZsb3c6IHNjcm9sbDsKKyAgICB9CisgICAgLnNjcm9s
bENvbnRlbnQgeworICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgIGhlaWdodDogMzAwcHg7
CisgICAgfQorICAgICNyb290IHsKKyAgICAgICAgd2lkdGg6IDIwMHB4OworICAgICAgICBoZWln
aHQ6IDIwMHB4OworICAgIH0KKyAgICAjc2Nyb2xsZXIgeworICAgICAgICB3aWR0aDogMjAwcHg7
CisgICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgICAgIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5v
bmU7CisgICAgICAgIG92ZXJmbG93OiB2aXNpYmxlOworICAgICAgICBiYWNrZ3JvdW5kOiBsaW5l
YXItZ3JhZGllbnQoMTM1ZGVnLCByZWQsIGJsdWUpOworICAgIH0KKzwvc3R5bGU+Cis8ZGl2IGlk
PSdyb290JyBjbGFzcz0ic2Nyb2xsaW5nIj4KKyAgICA8aWZyYW1lIGlkPSdzY3JvbGxlcicgc3Jj
ZG9jPSI8aHRtbCBzdHlsZT0nb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZTsnPjxkaXYgc3R5bGU9
J3dpZHRoOiAxMDBweDsgaGVpZ2h0OiAxMDBweDsnPjwvZGl2PjwvaHRtbD4KKyAgICAgICAgIj48
L2lmcmFtZT4KKyAgICA8ZGl2IGNsYXNzPSJzY3JvbGxDb250ZW50Ij48L2Rpdj4KKzwvZGl2Pgor
Cis8c2NyaXB0PgorY29uc3Qgcm9vdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyb290Jyk7
Citjb25zdCBzY3JvbGxlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY3JvbGxlcicpOwor
CitmdW5jdGlvbiByZXNldFRlc3QoKSB7CisgICAgcm9vdC5zY3JvbGxMZWZ0ID0gMDsKKyAgICBy
b290LnNjcm9sbFRvcCA9IDA7CisgICAgcm9vdC5zY3JvbGxUbygwLCAwKTsKK30KKworZnVuY3Rp
b24gc3RhcnRUZXN0KCkgeworICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgICAgICAg
ICAgcmVzZXRUZXN0KCk7CisgICAgICAgICAgICB2YXIgeCA9IHNjcm9sbGVyLmNsaWVudFdpZHRo
IC8gMjsKKyAgICAgICAgICAgIHZhciB5ID0gc2Nyb2xsZXIuY2xpZW50SGVpZ2h0IC8gMjsKKyAg
ICAgICAgICAgIHZhciBkZWx0YSA9IGdldERlbHRhcygicmlnaHQiKTsKKyAgICAgICAgICAgIHJl
dHVybiBtb3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCh4LCB5LCBkZWx0YS5YLCBkZWx0YS5ZLCBkZWx0
YS5YLCBkZWx0YS5ZKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxz
KHJvb3Quc2Nyb2xsTGVmdCA+IDAsIHRydWUsICdDb250aW51ZSB1cCB0aGUgaG9yaXpvbnRhbCBz
Y3JvbGwgY2hhaW5pbmcnKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9LCAnVW5zY3JvbGxh
YmxlIGlmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlv
cjogbm9uZS4nKTsKKworICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgICAgICAgICAg
cmVzZXRUZXN0KCk7CisgICAgICAgICAgICB2YXIgeCA9IHNjcm9sbGVyLmNsaWVudFdpZHRoIC8g
MjsKKyAgICAgICAgICAgIHZhciB5ID0gc2Nyb2xsZXIuY2xpZW50SGVpZ2h0IC8gMjsKKyAgICAg
ICAgICAgIHZhciBkZWx0YSA9IGdldERlbHRhcygiZG93biIpOworICAgICAgICAgICAgcmV0dXJu
IG1vdXNlV2hlZWxTY3JvbGxBbmRXYWl0KHgsIHksIGRlbHRhLlgsIGRlbHRhLlksIGRlbHRhLlgs
IGRlbHRhLlkpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9v
dC5zY3JvbGxUb3AgPiAwLCB0cnVlLCAnQ29udGludWUgdXAgdGhlIHZlcnRpY2FsIHNjcm9sbCBj
aGFpbmluZycpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0sICdVbnNjcm9sbGFibGUgaWZy
YW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4n
KTsKK30KKworYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIHN0YXJ0VGVzdCk7Cis8L3NjcmlwdD4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L3Njcm9sbGluZy9yZXNvdXJjZXMvb3ZlcnNjcm9sbC1iZWhhdmlvci1zdXBwb3J0LmpzIGIvTGF5
b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvcmVzb3VyY2VzL292ZXJzY3JvbGwtYmVoYXZpb3Itc3Vw
cG9ydC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5iMzNmMzZjMGUw
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvcmVzb3VyY2Vz
L292ZXJzY3JvbGwtYmVoYXZpb3Itc3VwcG9ydC5qcwpAQCAtMCwwICsxLDQwIEBACitmdW5jdGlv
biBnZXREZWx0YXMoZGlyZWN0aW9uKSB7CisgICAgdmFyIGRlbHRhWCA9IDA7CisgICAgdmFyIGRl
bHRhWSA9IDA7CisgICAgaWYgKGRpcmVjdGlvbiA9PSAiZG93biIpCisgICAgICAgIGRlbHRhWSA9
IC01OworICAgIGVsc2UgaWYgKGRpcmVjdGlvbiA9PSAidXAiKQorICAgICAgICBkZWx0YVkgPSA1
OworICAgIGVsc2UgaWYgKGRpcmVjdGlvbiA9PSAicmlnaHQiKQorICAgICAgICBkZWx0YVggPSAt
NTsKKyAgICBlbHNlIGlmIChkaXJlY3Rpb24gPT0gImxlZnQiKQorICAgICAgICBkZWx0YVggPSA1
OworICAgIHJldHVybiB7CisgICAgICAgIFg6IGRlbHRhWCwKKyAgICAgICAgWTogZGVsdGFZCisg
ICAgfTsKK30KKworYXN5bmMgZnVuY3Rpb24gbW91c2VXaGVlbFNjcm9sbEFuZFdhaXQoeCwgeSwg
YmVnaW5YLCBiZWdpblksIGRlbHRhWCwgZGVsdGFZKQoreworICAgIGlmIChiZWdpblggPT09IHVu
ZGVmaW5lZCkKKyAgICAgICAgYmVnaW5YID0gMDsKKyAgICBpZiAoYmVnaW5ZID09PSB1bmRlZmlu
ZWQpCisgICAgICAgIGJlZ2luWSA9IC0xOworCisgICAgaWYgKGRlbHRhWCA9PT0gdW5kZWZpbmVk
KQorICAgICAgICBkZWx0YVggPSAwOworICAgIGlmIChkZWx0YVkgPT09IHVuZGVmaW5lZCkKKyAg
ICAgICAgZGVsdGFZID0gLTEwOworCisgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRz
KCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGJlZ2luWCwgYmVnaW5ZLCAi
YmVnYW4iLCAibm9uZSIpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkZWx0YVgsIGRlbHRhWSwgImNoYW5nZWQiLCAibm9uZSIpOworICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAw
LCAiZW5kZWQiLCAibm9uZSIpOworICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsK
KyAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9u
RnJhbWUocmVzb2x2ZSk7CisgICAgICAgIH0sIDUwMCk7CisgICAgfSk7Cit9CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2
aW9yLWVsZW1lbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3lu
Yy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50LWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4yNzE1MGZmNjBiCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1i
ZWhhdmlvci1lbGVtZW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIwIEBACisKK1BBU1MgRWxl
bWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0
byBhdXRvLgorUEFTUyBFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9s
bC1iZWhhdmlvcjogYXV0byBhdXRvLgorUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRl
c3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGF1dG8uCitQQVNTIEVsZW1lbnQg
dmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGF1
dG8uCitQQVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwt
YmVoYXZpb3I6IG5vbmUgYXV0by4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3
aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgYXV0by4KK1BBU1MgRWxlbWVudCBob3Jpem9u
dGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBjb250YWluLgor
UEFTUyBFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlv
cjogYXV0byBjb250YWluLgorUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0
aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGNvbnRhaW4uCitQQVNTIEVsZW1lbnQgdmVy
dGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGNvbnRh
aW4uCitQQVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwt
YmVoYXZpb3I6IG5vbmUgY29udGFpbi4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVz
dCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgY29udGFpbi4KK1BBU1MgRWxlbWVudCBo
b3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBub25l
LgorUEFTUyBFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhh
dmlvcjogYXV0byBub25lLgorUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0
aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIG5vbmUuCitQQVNTIEVsZW1lbnQgdmVydGlj
YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIG5vbmUuCitQ
QVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZp
b3I6IG5vbmUgbm9uZS4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92
ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgbm9uZS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50Lmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJl
aGF2aW9yLWVsZW1lbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
Li45MTZjMzE0MWJhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxp
bmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50Lmh0bWwKQEAgLTAsMCAr
MSw4NiBAQAorPCFkb2N0eXBlIGh0bWw+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
dGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90
ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL292
ZXJzY3JvbGwtYmVoYXZpb3Itc3VwcG9ydC5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9ImhlbHAi
IGhyZWY9Imh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3Mtb3ZlcnNjcm9sbC1iZWhhdmlvciI+
Cis8c3R5bGU+CisgICAgLnNjcm9sbGluZyB7CisgICAgICAgIG92ZXJmbG93OiBzY3JvbGw7Cisg
ICAgfQorICAgIC5zY3JvbGxDb250ZW50IHsKKyAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAg
ICBoZWlnaHQ6IDMwMHB4OworICAgIH0KKyAgICAjcm9vdCB7CisgICAgICAgIHdpZHRoOiAyMDBw
eDsKKyAgICAgICAgaGVpZ2h0OiAyMDBweDsKKyAgICB9CisgICAgI3Njcm9sbGVyIHsKKyAgICAg
ICAgd2lkdGg6IDEwMHB4OworICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgIH0KKzwvc3R5bGU+
Cis8ZGl2IGlkPSdyb290JyBjbGFzcz0ic2Nyb2xsaW5nIj4KKyAgICA8ZGl2IGlkPSdzY3JvbGxl
cicgY2xhc3M9InNjcm9sbGluZyI+CisgICAgICAgIDxkaXYgY2xhc3M9InNjcm9sbENvbnRlbnQi
PjwvZGl2PgorICAgIDwvZGl2PgorICAgIDxkaXYgY2xhc3M9InNjcm9sbENvbnRlbnQiPjwvZGl2
PgorPC9kaXY+CisKKzxzY3JpcHQ+Citjb25zdCByb290ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3Jvb3QnKTsKK2NvbnN0IHNjcm9sbGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Nj
cm9sbGVyJyk7Cit2YXIgb3ZlcnNjcm9sbERhdGFzID0gW1siYXV0byIsICJhdXRvIiwgdHJ1ZSwg
dHJ1ZV0sCisgICAgICAgICAgICAgICAgICAgICAgICBbImNvbnRhaW4iLCAiYXV0byIsIGZhbHNl
LCB0cnVlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFsibm9uZSIsICJhdXRvIiwgZmFsc2Us
IHRydWVdLAorICAgICAgICAgICAgICAgICAgICAgICAgWyJhdXRvIiwgImNvbnRhaW4iLCB0cnVl
LCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAgICBbImNvbnRhaW4iLCAiY29udGFpbiIs
IGZhbHNlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAgICBbIm5vbmUiLCAiY29udGFp
biIsIGZhbHNlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAgICBbImF1dG8iLCAibm9u
ZSIsIHRydWUsIGZhbHNlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFsiY29udGFpbiIsICJu
b25lIiwgZmFsc2UsIGZhbHNlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFsibm9uZSIsICJu
b25lIiwgZmFsc2UsIGZhbHNlXV07CisKK2Z1bmN0aW9uIHJlc2V0VGVzdCgpIHsKKyAgICAvLyBU
cnkgdmFyaW91cyBtZXRob2RzIHRvIGVuc3VyZSB0aGUgZWxlbWVudCBwb3NpdGlvbiBpcyByZXNl
dCBpbW1lZGlhdGVseS4KKyAgICBzY3JvbGxlci5zY3JvbGxMZWZ0ID0gMzAwOworICAgIHNjcm9s
bGVyLnNjcm9sbFRvcCA9IDMwMDsKKyAgICBzY3JvbGxlci5zY3JvbGxUbygzMDAsIDMwMCk7CisK
KyAgICByb290LnNjcm9sbExlZnQgPSAwOworICAgIHJvb3Quc2Nyb2xsVG9wID0gMDsKKyAgICBy
b290LnNjcm9sbFRvKDAsIDApOworfQorCitmdW5jdGlvbiBzdGFydFRlc3QoKSB7CisgICAgb3Zl
cnNjcm9sbERhdGFzLmZvckVhY2goKFtvdmVyc2Nyb2xsWCwgb3ZlcnNjcm9sbFksIHByb3BhZ2F0
ZVgsIHByb3BhZ2F0ZVldKSA9PiB7CisgICAgICAgIHByb21pc2VfdGVzdCgoKSA9PiB7CisgICAg
ICAgICAgICByZXNldFRlc3QoKTsKKyAgICAgICAgICAgIHNjcm9sbGVyLnN0eWxlLm92ZXJzY3Jv
bGxCZWhhdmlvclggPSBvdmVyc2Nyb2xsWDsKKyAgICAgICAgICAgIHNjcm9sbGVyLnN0eWxlLm92
ZXJzY3JvbGxCZWhhdmlvclkgPSBvdmVyc2Nyb2xsWTsKKworICAgICAgICAgICAgdmFyIHggPSBz
Y3JvbGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAgICAgICAgICB2YXIgeSA9IHNjcm9sbGVyLmNs
aWVudEhlaWdodCAvIDI7CisgICAgICAgICAgICB2YXIgZGVsdGEgPSBnZXREZWx0YXMoInJpZ2h0
Iik7CisgICAgICAgICAgICByZXR1cm4gbW91c2VXaGVlbFNjcm9sbEFuZFdhaXQoeCwgeSwgZGVs
dGEuWCwgZGVsdGEuWSwgZGVsdGEuWCwgZGVsdGEuWSkudGhlbigoKSA9PiB7CisgICAgICAgICAg
ICAgICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbExlZnQgPiAwLCBwcm9wYWdhdGVYLCAnQ29u
dGludWUgdXAgdGhlIGhvcml6b250YWwgc2Nyb2xsIGNoYWluaW5nJyk7CisgICAgICAgICAgICB9
KTsKKyAgICAgICAgfSwgJ0VsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJz
Y3JvbGwtYmVoYXZpb3I6ICcgKyBvdmVyc2Nyb2xsWCArICcgJyArIG92ZXJzY3JvbGxZICsgJy4n
KTsKKworICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgICAgICAgICAgcmVzZXRUZXN0
KCk7CisgICAgICAgICAgICBzY3JvbGxlci5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JYID0gb3Zl
cnNjcm9sbFg7CisgICAgICAgICAgICBzY3JvbGxlci5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JZ
ID0gb3ZlcnNjcm9sbFk7CisKKyAgICAgICAgICAgIHZhciB4ID0gc2Nyb2xsZXIuY2xpZW50V2lk
dGggLyAyOworICAgICAgICAgICAgdmFyIHkgPSBzY3JvbGxlci5jbGllbnRIZWlnaHQgLyAyOwor
ICAgICAgICAgICAgdmFyIGRlbHRhID0gZ2V0RGVsdGFzKCJkb3duIik7CisgICAgICAgICAgICBy
ZXR1cm4gbW91c2VXaGVlbFNjcm9sbEFuZFdhaXQoeCwgeSwgZGVsdGEuWCwgZGVsdGEuWSwgZGVs
dGEuWCwgZGVsdGEuWSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFs
cyhyb290LnNjcm9sbFRvcCA+IDAsIHByb3BhZ2F0ZVksICdDb250aW51ZSB1cCB0aGUgdmVydGlj
YWwgc2Nyb2xsIGNoYWluaW5nJyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSwgJ0VsZW1l
bnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiAnICsgb3Zl
cnNjcm9sbFggKyAnICcgKyBvdmVyc2Nyb2xsWSArICcuJyk7CisgICAgfSk7Cit9CisKK2FkZEV2
ZW50TGlzdGVuZXIoImxvYWQiLCBzdGFydFRlc3QpOworPC9zY3JpcHQ+ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3lu
Yy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJh
bWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjkw
MGEwYjdkOTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9z
eW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwyMSBAQAorCisKK1BBU1MgSWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBv
dmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIGF1dG8uCitQQVNTIElmcmFtZSB2ZXJ0aWNhbCBzY3Jv
bGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gYXV0by4KK1BBU1MgSWZyYW1l
IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWlu
IGF1dG8uCitQQVNTIElmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwt
YmVoYXZpb3I6IGNvbnRhaW4gYXV0by4KK1BBU1MgSWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRl
c3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIGF1dG8uCitQQVNTIElmcmFtZSB2ZXJ0
aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgYXV0by4KK1BB
U1MgSWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9y
OiBhdXRvIGNvbnRhaW4uCitQQVNTIElmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92
ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gY29udGFpbi4KK1BBU1MgSWZyYW1lIGhvcml6b250YWwg
c2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGNvbnRhaW4uCitQ
QVNTIElmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6
IGNvbnRhaW4gY29udGFpbi4KK1BBU1MgSWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0
aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIGNvbnRhaW4uCitQQVNTIElmcmFtZSB2ZXJ0aWNh
bCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgY29udGFpbi4KK1BB
U1MgSWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9y
OiBhdXRvIG5vbmUuCitQQVNTIElmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJz
Y3JvbGwtYmVoYXZpb3I6IGF1dG8gbm9uZS4KK1BBU1MgSWZyYW1lIGhvcml6b250YWwgc2Nyb2xs
IHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIG5vbmUuCitQQVNTIElmcmFt
ZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4g
bm9uZS4KK1BBU1MgSWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xs
LWJlaGF2aW9yOiBub25lIG5vbmUuCitQQVNTIElmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3
aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgbm9uZS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJh
bWUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3Jv
bGwtYmVoYXZpb3ItaWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMC4uZTI4ODQ1ZGI1MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Ny
b2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0bWwKQEAgLTAs
MCArMSw4OCBAQAorPCFkb2N0eXBlIGh0bWw+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L292ZXJzY3JvbGwtYmVoYXZpb3Itc3VwcG9ydC5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9Imhl
bHAiIGhyZWY9Imh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3Mtb3ZlcnNjcm9sbC1iZWhhdmlv
ciI+Cis8c3R5bGU+CisgICAgLnNjcm9sbGluZyB7CisgICAgICAgIG92ZXJmbG93OiBzY3JvbGw7
CisgICAgfQorICAgIC5zY3JvbGxDb250ZW50IHsKKyAgICAgICAgd2lkdGg6IDMwMHB4OworICAg
ICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQo
MTM1ZGVnLCByZWQsIGJsdWUpOworICAgIH0KKyAgICAjcm9vdCB7CisgICAgICAgIHdpZHRoOiAy
MDBweDsKKyAgICAgICAgaGVpZ2h0OiAyMDBweDsKKyAgICB9CisgICAgI3Njcm9sbGVyIHsKKyAg
ICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgICBvdmVy
c2Nyb2xsLWJlaGF2aW9yLXk6IGF1dG87CisgICAgfQorPC9zdHlsZT4KKzxkaXYgaWQ9J3Jvb3Qn
IGNsYXNzPSJzY3JvbGxpbmciPgorICAgIDxpZnJhbWUgaWQ9J3Njcm9sbGVyJyBzcmNkb2M9Ijxo
dG1sPjxkaXYgc3R5bGU9J3dpZHRoOiAzMDBweDsgaGVpZ2h0OiAzMDBweDsnPjwvZGl2PjwvaHRt
bD4KKyAgICAgICAgIj48L2lmcmFtZT4KKyAgICA8ZGl2IGNsYXNzPSJzY3JvbGxDb250ZW50Ij48
L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0PgorICAgIGNvbnN0IHJvb3QgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgncm9vdCcpOworICAgIGNvbnN0IHNjcm9sbGVyID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ3Njcm9sbGVyJyk7CisgICAgdmFyIG92ZXJzY3JvbGxEYXRhcyA9IFtbImF1dG8i
LCAiYXV0byIsIHRydWUsIHRydWVdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiY29u
dGFpbiIsICJhdXRvIiwgZmFsc2UsIHRydWVdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFsibm9uZSIsICJhdXRvIiwgZmFsc2UsIHRydWVdLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFsiYXV0byIsICJjb250YWluIiwgdHJ1ZSwgZmFsc2VdLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFsiY29udGFpbiIsICJjb250YWluIiwgZmFsc2UsIGZhbHNlXSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBbIm5vbmUiLCAiY29udGFpbiIsIGZhbHNlLCBmYWxzZV0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJhdXRvIiwgIm5vbmUiLCB0cnVlLCBmYWxzZV0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJjb250YWluIiwgIm5vbmUiLCBmYWxzZSwg
ZmFsc2VdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsibm9uZSIsICJub25lIiwgZmFs
c2UsIGZhbHNlXV07CisgICAgZnVuY3Rpb24gcmVzZXRUZXN0KCkgeworICAgICAgICAvLyBUcnkg
dmFyaW91cyBtZXRob2RzIHRvIGVuc3VyZSB0aGUgZWxlbWVudCBwb3NpdGlvbiBpcyByZXNldCBp
bW1lZGlhdGVseS4KKyAgICAgICAgc2Nyb2xsZXIuY29udGVudFdpbmRvdy5zY3JvbGxYID0gMzAw
OworICAgICAgICBzY3JvbGxlci5jb250ZW50V2luZG93LnNjcm9sbFkgPSAzMDA7CisgICAgICAg
IHNjcm9sbGVyLmNvbnRlbnRXaW5kb3cuc2Nyb2xsVG8oMzAwLCAzMDApOworCisgICAgICAgIHJv
b3Quc2Nyb2xsTGVmdCA9IDA7CisgICAgICAgIHJvb3Quc2Nyb2xsVG9wID0gMDsKKyAgICAgICAg
cm9vdC5zY3JvbGxUbygwLCAwKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBvdmVyc2Nyb2xsQmVo
YXZpb3JUZXN0KCkgeworICAgICAgICBvdmVyc2Nyb2xsRGF0YXMuZm9yRWFjaCgoW292ZXJzY3Jv
bGxYLCBvdmVyc2Nyb2xsWSwgcHJvcGFnYXRlWCwgcHJvcGFnYXRlWV0pID0+IHsKKyAgICAgICAg
ICAgIHByb21pc2VfdGVzdCgoKSA9PiB7CisgICAgICAgICAgICAgICAgcmVzZXRUZXN0KCk7Cisg
ICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IHNjcm9sbGVyLmNvbnRlbnRXaW5kb3cuZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImh0bWwiKVswXTsKKyAgICAgICAgICAgICAgICB0YXJn
ZXQuc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWCA9IG92ZXJzY3JvbGxYOworICAgICAgICAgICAg
ICAgIHRhcmdldC5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JZID0gb3ZlcnNjcm9sbFk7CisKKyAg
ICAgICAgICAgICAgICB2YXIgeCA9IHNjcm9sbGVyLmNsaWVudFdpZHRoIC8gMjsKKyAgICAgICAg
ICAgICAgICB2YXIgeSA9IHNjcm9sbGVyLmNsaWVudEhlaWdodCAvIDI7CisgICAgICAgICAgICAg
ICAgdmFyIGRlbHRhID0gZ2V0RGVsdGFzKCJyaWdodCIpOworICAgICAgICAgICAgICAgIHJldHVy
biBtb3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCh4LCB5LCBkZWx0YS5YLCBkZWx0YS5ZLCBkZWx0YS5Y
LCBkZWx0YS5ZKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFs
cyhyb290LnNjcm9sbExlZnQgPiAwLCBwcm9wYWdhdGVYLCAnQ29udGludWUgdXAgdGhlIGhvcml6
b250YWwgc2Nyb2xsIGNoYWluaW5nJyk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAg
ICB9LCAnSWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2
aW9yOiAnICsgb3ZlcnNjcm9sbFggKyAnICcgKyBvdmVyc2Nyb2xsWSArICcuJyk7CisKKyAgICAg
ICAgICAgIHByb21pc2VfdGVzdCgoKSA9PiB7CisgICAgICAgICAgICAgICAgcmVzZXRUZXN0KCk7
CisgICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IHNjcm9sbGVyLmNvbnRlbnRXaW5kb3cuZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImh0bWwiKVswXTsKKyAgICAgICAgICAgICAgICB0
YXJnZXQuc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWCA9IG92ZXJzY3JvbGxYOworICAgICAgICAg
ICAgICAgIHRhcmdldC5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JZID0gb3ZlcnNjcm9sbFk7CisK
KyAgICAgICAgICAgICAgICB2YXIgeCA9IHNjcm9sbGVyLmNsaWVudFdpZHRoIC8gMjsKKyAgICAg
ICAgICAgICAgICB2YXIgeSA9IHNjcm9sbGVyLmNsaWVudEhlaWdodCAvIDI7CisgICAgICAgICAg
ICAgICAgdmFyIGRlbHRhID0gZ2V0RGVsdGFzKCJkb3duIik7CisgICAgICAgICAgICAgICAgcmV0
dXJuIG1vdXNlV2hlZWxTY3JvbGxBbmRXYWl0KHgsIHksIGRlbHRhLlgsIGRlbHRhLlksIGRlbHRh
LlgsIGRlbHRhLlkpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgICAgICBhc3NlcnRfZXF1
YWxzKHJvb3Quc2Nyb2xsVG9wID4gMCwgcHJvcGFnYXRlWSwgJ0NvbnRpbnVlIHVwIHRoZSB2ZXJ0
aWNhbCBzY3JvbGwgY2hhaW5pbmcnKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAg
IH0sICdJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9y
OiAnICsgb3ZlcnNjcm9sbFggKyAnICcgKyBvdmVyc2Nyb2xsWSArICcuJyk7CisgICAgICAgIH0p
OworICAgIH0KKworICAgIHNjcm9sbGVyLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBvdmVyc2Ny
b2xsQmVoYXZpb3JUZXN0KTsKKzwvc2NyaXB0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJz
Y3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNj
cm9sbGFibGUtZWxlbWVudC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMC4uZjM5NWI2NDg4ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxl
LWVsZW1lbnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorCitQQVNTIFVuc2Nyb2xsYWJs
ZSBlbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9y
OiBub25lLgorUEFTUyBVbnNjcm9sbGFibGUgZWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3
aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxh
YmxlLWVsZW1lbnQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xs
LW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi43Y2I3NzMzNjU5Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhh
dmlvci11bnNjcm9sbGFibGUtZWxlbWVudC5odG1sCkBAIC0wLDAgKzEsNjYgQEAKKzwhZG9jdHlw
ZSBodG1sPgorCis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2aW9y
LXN1cHBvcnQuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL2Ry
YWZ0cy5jc3N3Zy5vcmcvY3NzLW92ZXJzY3JvbGwtYmVoYXZpb3IiPgorPHN0eWxlPgorICAgIC5z
Y3JvbGxpbmcgeworICAgICAgICBvdmVyZmxvdzogc2Nyb2xsOworICAgIH0KKyAgICAuc2Nyb2xs
Q29udGVudCB7CisgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgaGVpZ2h0OiAzMDBweDsK
KyAgICB9CisgICAgI3Jvb3QgeworICAgICAgICB3aWR0aDogMjAwcHg7CisgICAgICAgIGhlaWdo
dDogMjAwcHg7CisgICAgfQorICAgICNzY3JvbGxlciB7CisgICAgICAgIHdpZHRoOiAxMDBweDsK
KyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgICAgb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9u
ZTsKKyAgICAgICAgb3ZlcmZsb3c6IHZpc2libGU7CisgICAgICAgIGJhY2tncm91bmQ6IGxpbmVh
ci1ncmFkaWVudCgxMzVkZWcsIHJlZCwgYmx1ZSk7CisgICAgfQorPC9zdHlsZT4KKzxkaXYgaWQ9
InJvb3QiIGNsYXNzPSJzY3JvbGxpbmciPgorICAgIDxkaXYgaWQ9InNjcm9sbGVyIj4KKyAgICAg
ICAgPGRpdiBjbGFzcz0ic2Nyb2xsQ29udGVudCI+PC9kaXY+CisgICAgPC9kaXY+CisgICAgPGRp
diBjbGFzcz0ic2Nyb2xsQ29udGVudCI+PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4KK2NvbnN0
IHJvb3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncm9vdCcpOworY29uc3Qgc2Nyb2xsZXIg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2Nyb2xsZXInKTsKK2Z1bmN0aW9uIHJlc2V0VGVz
dCgpIHsKKyAgICByb290LnNjcm9sbExlZnQgPSAwOworICAgIHJvb3Quc2Nyb2xsVG9wID0gMDsK
KyAgICByb290LnNjcm9sbFRvKDAsIDApOworfQorCitmdW5jdGlvbiBzdGFydFRlc3QoKSB7Cisg
ICAgICAgIHByb21pc2VfdGVzdCgoKSA9PiB7CisgICAgICAgICAgICByZXNldFRlc3QoKTsKKyAg
ICAgICAgICAgIHZhciB4ID0gc2Nyb2xsZXIuY2xpZW50V2lkdGggLyAyOworICAgICAgICAgICAg
dmFyIHkgPSBzY3JvbGxlci5jbGllbnRIZWlnaHQgLyAyOworICAgICAgICAgICAgdmFyIGRlbHRh
ID0gZ2V0RGVsdGFzKCJyaWdodCIpOworICAgICAgICAgICAgcmV0dXJuIG1vdXNlV2hlZWxTY3Jv
bGxBbmRXYWl0KHgsIHksIGRlbHRhLlgsIGRlbHRhLlksIGRlbHRhLlgsIGRlbHRhLlkpLnRoZW4o
KCkgPT4geworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxMZWZ0ID4g
MCwgdHJ1ZSwgJ0NvbnRpbnVlIHVwIHRoZSBob3Jpem9udGFsIHNjcm9sbCBjaGFpbmluZycpOwor
ICAgICAgICAgICAgfSk7CisgICAgICAgIH0sICdVbnNjcm9sbGFibGUgZWxlbWVudCBob3Jpem9u
dGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4nKTsKKworICAg
ICAgICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgICAgICAgICAgcmVzZXRUZXN0KCk7CisgICAg
ICAgICAgICB2YXIgeCA9IHNjcm9sbGVyLmNsaWVudFdpZHRoIC8gMjsKKyAgICAgICAgICAgIHZh
ciB5ID0gc2Nyb2xsZXIuY2xpZW50SGVpZ2h0IC8gMjsKKyAgICAgICAgICAgIHZhciBkZWx0YSA9
IGdldERlbHRhcygiZG93biIpOworICAgICAgICAgICAgcmV0dXJuIG1vdXNlV2hlZWxTY3JvbGxB
bmRXYWl0KHgsIHksIGRlbHRhLlgsIGRlbHRhLlksIGRlbHRhLlgsIGRlbHRhLlkpLnRoZW4oKCkg
PT4geworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxUb3AgPiAwLCB0
cnVlLCAnQ29udGludWUgdXAgdGhlIHZlcnRpY2FsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAg
ICAgICAgfSk7CisgICAgICAgIH0sICdVbnNjcm9sbGFibGUgZWxlbWVudCB2ZXJ0aWNhbCBzY3Jv
bGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuJyk7Cit9CisKK2FkZEV2ZW50
TGlzdGVuZXIoImxvYWQiLCBzdGFydFRlc3QpOworPC9zY3JpcHQ+ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1z
Y3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVo
YXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMC4uN2ZhNTljY2JhNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5z
Y3JvbGxhYmxlLWlmcmFtZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBACisKKworUEFTUyBV
bnNjcm9sbGFibGUgaWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xs
LWJlaGF2aW9yOiBub25lLgorUEFTUyBVbnNjcm9sbGFibGUgaWZyYW1lIHZlcnRpY2FsIHNjcm9s
bCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4KKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11
bnNjcm9sbGFibGUtaWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zeW5j
LXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5lMjQyNWFmYzYzCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9s
bC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLmh0bWwKQEAgLTAsMCArMSw2NiBAQAorPCFk
b2N0eXBlIGh0bWw+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3Mu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3Jl
cG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL292ZXJzY3JvbGwtYmVo
YXZpb3Itc3VwcG9ydC5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBz
Oi8vZHJhZnRzLmNzc3dnLm9yZy9jc3Mtb3ZlcnNjcm9sbC1iZWhhdmlvciI+Cis8c3R5bGU+Cisg
ICAgLnNjcm9sbGluZyB7CisgICAgICAgIG92ZXJmbG93OiBzY3JvbGw7CisgICAgfQorICAgIC5z
Y3JvbGxDb250ZW50IHsKKyAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICBoZWlnaHQ6IDMw
MHB4OworICAgIH0KKyAgICAjcm9vdCB7CisgICAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgICAg
aGVpZ2h0OiAyMDBweDsKKyAgICB9CisgICAgI3Njcm9sbGVyIHsKKyAgICAgICAgd2lkdGg6IDIw
MHB4OworICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAgICAgICBvdmVyc2Nyb2xsLWJlaGF2aW9y
OiBub25lOworICAgICAgICBvdmVyZmxvdzogdmlzaWJsZTsKKyAgICAgICAgYmFja2dyb3VuZDog
bGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmVkLCBibHVlKTsKKyAgICB9Cis8L3N0eWxlPgorPGRp
diBpZD0ncm9vdCcgY2xhc3M9InNjcm9sbGluZyI+CisgICAgPGlmcmFtZSBpZD0nc2Nyb2xsZXIn
IHNyY2RvYz0iPGh0bWwgc3R5bGU9J292ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmU7Jz48ZGl2IHN0
eWxlPSd3aWR0aDogMTAwcHg7IGhlaWdodDogMTAwcHg7Jz48L2Rpdj48L2h0bWw+CisgICAgICAg
ICI+PC9pZnJhbWU+CisgICAgPGRpdiBjbGFzcz0ic2Nyb2xsQ29udGVudCI+PC9kaXY+Cis8L2Rp
dj4KKworPHNjcmlwdD4KK2NvbnN0IHJvb3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncm9v
dCcpOworY29uc3Qgc2Nyb2xsZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2Nyb2xsZXIn
KTsKKworZnVuY3Rpb24gcmVzZXRUZXN0KCkgeworICAgIHJvb3Quc2Nyb2xsTGVmdCA9IDA7Cisg
ICAgcm9vdC5zY3JvbGxUb3AgPSAwOworICAgIHJvb3Quc2Nyb2xsVG8oMCwgMCk7Cit9CisKK2Z1
bmN0aW9uIHN0YXJ0VGVzdCgpIHsKKyAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAg
ICAgICAgIHJlc2V0VGVzdCgpOworICAgICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRX
aWR0aCAvIDI7CisgICAgICAgICAgICB2YXIgeSA9IHNjcm9sbGVyLmNsaWVudEhlaWdodCAvIDI7
CisgICAgICAgICAgICB2YXIgZGVsdGEgPSBnZXREZWx0YXMoInJpZ2h0Iik7CisgICAgICAgICAg
ICByZXR1cm4gbW91c2VXaGVlbFNjcm9sbEFuZFdhaXQoeCwgeSwgZGVsdGEuWCwgZGVsdGEuWSwg
ZGVsdGEuWCwgZGVsdGEuWSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2Vx
dWFscyhyb290LnNjcm9sbExlZnQgPiAwLCB0cnVlLCAnQ29udGludWUgdXAgdGhlIGhvcml6b250
YWwgc2Nyb2xsIGNoYWluaW5nJyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSwgJ1Vuc2Ny
b2xsYWJsZSBpZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVo
YXZpb3I6IG5vbmUuJyk7CisKKyAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAg
ICAgIHJlc2V0VGVzdCgpOworICAgICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0
aCAvIDI7CisgICAgICAgICAgICB2YXIgeSA9IHNjcm9sbGVyLmNsaWVudEhlaWdodCAvIDI7Cisg
ICAgICAgICAgICB2YXIgZGVsdGEgPSBnZXREZWx0YXMoImRvd24iKTsKKyAgICAgICAgICAgIHJl
dHVybiBtb3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCh4LCB5LCBkZWx0YS5YLCBkZWx0YS5ZLCBkZWx0
YS5YLCBkZWx0YS5ZKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxz
KHJvb3Quc2Nyb2xsVG9wID4gMCwgdHJ1ZSwgJ0NvbnRpbnVlIHVwIHRoZSB2ZXJ0aWNhbCBzY3Jv
bGwgY2hhaW5pbmcnKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9LCAnVW5zY3JvbGxhYmxl
IGlmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5v
bmUuJyk7Cit9CisKK2FkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBzdGFydFRlc3QpOworPC9zY3Jp
cHQ+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mv
VGVzdEV4cGVjdGF0aW9ucwppbmRleCBlZjdmZGViM2M4Li41OTkxMjQ4MTI0IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNzk1LDYgKzc5NSwxMiBAQCBz
dmcvdGV4dC9zZWxlY3QtdGV4dC1zdmdmb250Lmh0bWwgWyBTa2lwIF0KIHN2Zy90ZXh0L3NlbGVj
dGlvbi1kb3VibGVjbGljay5zdmcgWyBTa2lwIF0KIHN2Zy90ZXh0L3NlbGVjdGlvbi10cmlwbGVj
bGljay5zdmcgWyBTa2lwIF0KIAorIyBPdmVyc2Nyb2xsLWJlaGF2aW9yIGlzIG5vdCBzdXBwb3J0
ZWQgb24gaU9TCitmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9y
LWVsZW1lbnQuaHRtbCBbIFNraXAgXQorZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNj
cm9sbC1iZWhhdmlvci1pZnJhbWUuaHRtbCBbIFNraXAgXQorZmFzdC9zY3JvbGxpbmcvc3luYy1z
Y3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC5odG1sIFsgU2tp
cCBdCitmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Ny
b2xsYWJsZS1pZnJhbWUuaHRtbCBbIFNraXAgXQorCiAjIElPUyBkb2VzIG5vdCBpbXBsZW1lbnQg
c2V0QXV0b21hdGljTGlua0RldGVjdGlvbkVuYWJsZWQKIGVkaXRpbmcvaW5zZXJ0aW5nL3R5cGlu
Zy1zcGFjZS10by10cmlnZ2VyLXNtYXJ0LWxpbmsuaHRtbCBbIFNraXAgXQogZWRpdGluZy9pbnNl
cnRpbmcvc21hcnQtbGluay13aGVuLWNhcmV0LWlzLW1vdmVkLWJlZm9yZS1VUkwuaHRtbCBbIFNr
aXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0
YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCmlu
ZGV4IGUyMjcwYjZmOTkuLmYxMmMzZDkyYzQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTQ1Myw2ICs0NTMsMTAgQEAgaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXNjcm9sbC1zbmFwL3Njcm9sbC10YXJnZXQtcGFk
ZGluZy0wMDEuaHQKIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1zdG9wLWNoYW5nZS5odG1sIFsgRmFpbHVyZSBdCiBjc3MzL3Nj
cm9sbC1zbmFwL3Njcm9sbC1wYWRkaW5nLW1haW5mcmFtZS1wYWdpbmcuaHRtbCBbIEZhaWx1cmUg
XQogCisjIExhY2sgb2Ygd2F5cyB0byBjb250cm9sIHRoZSBjcm9zcy1mcmFtZSBzY3JvbGwgY2hh
aW5pbmcgaW4gV0sxLgorZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhh
dmlvci1pZnJhbWUuaHRtbCBbIFNraXAgXQorZmFzdC9zY3JvbGxpbmcvc3luYy1zY3JvbGwtb3Zl
cnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLmh0bWwgWyBTa2lwIF0KKwogIyMj
IEVORCBPRiAoMikgRmFpbHVyZXMgd2l0aG91dCBidWcgcmVwb3J0cwogIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMt
d2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggMzNhOTQ0MDRkNy4uNGNmMmNmMzU2NyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTAxLDYg
KzEwMSwxMSBAQCBmYXN0L2FuaW1hdGlvbi9yZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZS1pbi10d28t
cGFnZXMuaHRtbCBbIFBhc3MgXQogZmFzdC9mb3Jtcy9maWxlL2VudHJpZXMtYXBpL2ltYWdlLXRy
YW5zY29kZS1vcGVuLXBhbmVsLmh0bWwgWyBQYXNzIF0KIGZhc3QvZm9ybXMvZmlsZS9lbnRyaWVz
LWFwaS9pbWFnZS1uby10cmFuc2NvZGUtb3Blbi1wYW5lbC5odG1sIFsgUGFzcyBdCiAKK2Zhc3Qv
c2Nyb2xsaW5nL21hYy9hc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50Lmh0
bWwgWyBTbG93IF0KK2Zhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1zY3JvbGwtb3ZlcnNjcm9sbC1i
ZWhhdmlvci1pZnJhbWUuaHRtbCBbIFNsb3cgXQorZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLXNj
cm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUuaHRtbCBbIFNsb3cg
XQorZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVu
c2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWwgWyBTbG93IF0KKwogIy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLwogIyBFbmQgcGxhdGZvcm0tc3BlY2lmaWMgZGlyZWN0b3JpZXMuCiAjLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9U
ZXN0RXhwZWN0YXRpb25zCmluZGV4IGQwMDczZWVlYjcuLjlhMmExNWE3NzMgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCkBAIC01OTgsNiArNTk4LDEyIEBAIGZh
c3QvZXZlbnRzL3doZWVsL3BsYXRmb3JtLXdoZWVsZXZlbnQtcGFnaW5nLXktaW4tbm9uLXNjcm9s
bGluZy1wYWdlLmh0bWwgWyBTa2lwCiBmYXN0L2V2ZW50cy93aGVlbC9wbGF0Zm9ybS13aGVlbGV2
ZW50LXBhZ2luZy15LWluLXNjcm9sbGluZy1kaXYuaHRtbCBbIFNraXAgXQogZmFzdC9ldmVudHMv
d2hlZWwvcGxhdGZvcm0td2hlZWxldmVudC1wYWdpbmcteS1pbi1zY3JvbGxpbmctcGFnZS5odG1s
IFsgU2tpcCBdCiAKKyMgT3ZlcnNjcm9sbC1iZWhhdmlvciBpcyBub3Qgc3VwcG9ydGVkIG9uIFdp
bmRvd3MKK2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxl
bWVudC5odG1sIFsgU2tpcCBdCitmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xs
LWJlaGF2aW9yLWlmcmFtZS5odG1sIFsgU2tpcCBdCitmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9s
bC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWwgWyBTa2lwIF0K
K2Zhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxh
YmxlLWlmcmFtZS5odG1sIFsgU2tpcCBdCisKICMgUG9pbnRlciBMb2NrIGlzIG5vdCBpbXBsZW1l
bnRlZC4KIHBvaW50ZXItbG9jay8gWyBTa2lwIF0KIGh0dHAvdGVzdHMvcG9pbnRlci1sb2NrLyBb
IFNraXAgXQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IGFiZjQ3ODlmMjIuLjc4NGYxOGE4NDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMTYgQEAKKzIwMjEtMDMtMTUgIENhdGhpZSBDaGVuICA8Y2F0aGllY2hlbkBp
Z2FsaWEuY29tPgorCisgICAgICAgIEltcGxlbWVudCBDU1Mgb3ZlcnNjcm9sbC1iZWhhdmlvciBm
b3IgYXN5bmNocm9ub3VzIHNjcm9sbCBvbiBNYWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDEzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggc3VwcG9ydHMgb3ZlcnNjcm9sbC1iZWhh
dmlvciBmb3IgdGhlIGFzeW5jaHJvbm91cyBzY3JvbGwgb24gTWFjLiAKKyAgICAgICAgU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGUgc3RvcmVzIHRoZSB2YWx1ZXMgb2Ygb3ZlcnNjcm9sbC1iZWhh
dmlvci4gSW4gb3JkZXIgdG8gbWFrZSBzdXJlIHRoZSBjb25zaXN0ZW5jeSwKKyAgICAgICAgb3Zl
cnNjcm9sbC1iZWhhdmlvciB0cmlnZ2VycyByZWNvbXBvc2l0ZUNoYW5nZVJlcXVpcmVzR2VvbWV0
cnlVcGRhdGUgd2hlbiB0aGUgdmFsdWVzIGFyZSBjaGFuZ2VkLgorICAgICAgICBUaGUgc2Nyb2xs
IGNoYWluaW5nIGFuZCBzd2lwZSBnZXN0dXJlcyBhcmUgaGFuZGxlZCBpbiBTY3JvbGxpbmdUcmVl
OjpoYW5kbGVXaGVlbEV2ZW50V2l0aE5vZGUuCisgICAgICAgIEFib3V0IHRoZSBzY3JvbGwgc3Ry
ZXRjaCBpbiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjIGlzIGNhbmNlbGVk
IG92ZXJzY3JvbGwtYmVoYXZpb3IgaXMgbm9uZS4KKworICAgICAgICBUZXN0czogZmFzdC9zY3Jv
bGxpbmcvbWFjL2FzeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQuaHRtbAor
ICAgICAgICAgICAgICAgZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLXNjcm9sbC1vdmVyc2Nyb2xs
LWJlaGF2aW9yLWlmcmFtZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L3Njcm9sbGluZy9tYWMv
YXN5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRt
bAorICAgICAgICAgICAgICAgZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLXNjcm9sbC1vdmVyc2Ny
b2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUuaHRtbAorCisgICAgICAgICogcGFnZS9z
Y3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRTY3JvbGxpbmdOb2RlU2Nyb2xsYWJsZUFy
ZWFHZW9tZXRyeSk6IFNldCBvdmVyc2Nyb2xsQmVoYXZpb3IgdmFsdWVzIHRvIFNjcm9sbGFibGVB
cmVhUGFyYW1ldGVycy4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGlu
YXRvclR5cGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnM6
Om9wZXJhdG9yPT0gY29uc3QpOiBBZGQgaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvciBhbmQg
dmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IuCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nVHJlZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlOjpzaG91bGRC
bG9ja1Njcm9sbENoYWluaW5nV2l0aE5vZGUpOiBBY2NvcmRpbmcgdG8gdGhlIHZhbHVlIG9mIFNj
cm9sbENoYWluaW5nQmxvY2tlciB0byBkZWNpZGUgYmxvY2sgdGhlIHNjcm9sbCBjaGFpbmluZyBv
ciBub3QuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlOjpoYW5kbGVXaGVlbEV2ZW50
V2l0aE5vZGUpOiBJZiB0aGUgaG9yaXpvbnRhbCBzY3JvbGwgY2hhaW5pbmcgaXMgYmxvY2tlZCwg
cmV0dXJuIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdDo6dW5oYW5kbGVkKCksIGFuZCB0aGUgc3dp
cGUgZ2VzdHVyZSB3aWxsIGJlIHRyaWdnZXJlZC4KKyAgICAgICAgSWYgdGhlIHZlcnRpY2FsIHNj
cm9sbCBjaGFpbmluZyBpcyBibG9ja2VkLCByZXR1cm4gV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0
OjpoYW5kbGVkKCkuCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5oOgor
ICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjpob3Jpem9udGFs
T3ZlcnNjcm9sbEJlaGF2aW9yIGNvbnN0KTogUmV0dXJuIHRoZSB2YWx1ZSBvZiBvdmVyc2Nyb2xs
LWJlaGF2aW9yLXguCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZTo6dmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IgY29uc3QpOiBSZXR1cm4gdGhlIHZhbHVlIG9m
IG92ZXJzY3JvbGwtYmVoYXZpb3ItWS4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlOjp1cGRhdGVTY3JvbGxDaGFpbmluZ0Jsb2NrZXJTdGF0ZSBjb25zdCk6IFVw
ZGF0ZSBTY3JvbGxDaGFpbmluZ0Jsb2NrZXIgYWNjb3JkaW5nIHRvIG92ZXJzY3JvbGwtYmVoYXZp
b3IgdmFsdWVzLgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlLmg6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlRGVsZWdhdGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjphbGxvd3NIb3Jpem9udGFsU3RyZXRjaGluZyBjb25z
dCk6IERvbid0IHN0cmV0Y2ggd2hlbiBvdmVyc2NvcmxsLWJlaGF2aW9yLXggaXMgIm5vbmUiLgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6
YWxsb3dzVmVydGljYWxTdHJldGNoaW5nIGNvbnN0KTogRG9uJ3Qgc3RyZXRjaCB3aGVuIG92ZXJz
Y29ybGwtYmVoYXZpb3IteSBpcyAibm9uZSIuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxh
eWVyQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWNvbXBvc2l0ZUNoYW5nZVJl
cXVpcmVzR2VvbWV0cnlVcGRhdGUpOiBSZXR1cm4gdHJ1ZSB3aGVuIG92ZXJzY3JvbGxCZWhhdmlv
ciBpcyBjaGFuZ2VkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpy
b290T3JCb2R5U3R5bGVDaGFuZ2VkKTogVGhlIHJvb3QgbGF5ZXIgbmVlZHMgc2V0TmVlZHNDb21w
b3NpdGluZ0dlb21ldHJ5VXBkYXRlIHdoZW4gaHRtbCBvciBib2R5J3Mgb3ZlcnNjcm9sbEJlaGF2
aW9yIGlzIGNoYW5nZWQuCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJlc1JlY29tcG9z
aXRlTGF5ZXIgY29uc3QpOiBSZXR1cm4gdHJ1ZSB3aGVuIG92ZXJzY3JvbGxCZWhhdmlvciBpcyBj
aGFuZ2VkLgorCisyMDIxLTAzLTE1ICBDYXRoaWUgQ2hlbiAgPGNhdGhpZWNoZW5AaWdhbGlhLmNv
bT4KKworICAgICAgICBTdXBwb3J0IENTUyBvdmVyc2Nyb2xsLWJlaGF2aW9yIGZvciBzeW5jaHJv
bm91cyBzY3JvbGwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyMjk2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEJhc2VkIG9uIEZyw6lkw6lyaWMgV2FuZydzIHBhdGNoLgorCisgICAgICAgIFRoaXMgcGF0
Y2ggYnJpbmdzIGluaXRpYWwgc3VwcG9ydCBvZiBDU1MgcHJvcGVydHkgb3ZlcnNjcm9sbC1iZWhh
dmlvci4gT3ZlcnNjcm9sbC1iZWhhdmlvciBzZXRzIHdoYXQKKyAgICAgICAgdGhlIGJyb3dzZXIg
ZG9lcyB3aGVuIHJlYWNoaW5nIHRoZSBib3VuZGFyeSBvZiBhIHNjcm9sbGluZyBhcmVhLiBGaXJl
Zm94IGFuZCBDaHJvbWl1bS12YXJpYW50IGJyb3dzZXJzCisgICAgICAgIGFscmVhZHkgc3VwcG9y
dCBpdC4gSXRzIHNwZWNpZmljYXRpb24gY2FuIGJlIGZvdW5kIGF0IGh0dHBzOi8vZHJhZnRzLmNz
c3dnLm9yZy9jc3Mtb3ZlcnNjcm9sbC0xLyNvdmVyc2Nyb2xsLWJlaGF2aW9yLXByb3BlcnRpZXMK
KyAgICAgICAgVGhpcyBwYXRjaCBhaW1zIHRvIHN1cHBvcnQgaXQgZm9yIHRoZSBzeW5jaHJvbm91
cyBzY3JvbGwuIFRoZSBhc3luY2hyb25vdXMgc2Nyb2xsIG9uIE1hYyB3aWxsIGJlIGNvdmVyZWQg
bGF0ZXIuCisKKyAgICAgICAgQWNjb3JkaW5nIHRvIHRoZSB2YWx1ZSBvZiBvdmVyc2Nyb2xsLWJl
aGF2aW9yLCB0aGlzIHBhdGNoIGNvbnRyb2xzIHRoZSBzY3JvbGwgY2hhaW5pbmcsIHRoZSBzY3Jv
bGwgc3RyZXRjaCwKKyAgICAgICAgYW5kIHN3aXBlIGdlc3R1cmVzIGdlbmVyYXRpb24gb2YgdGhl
IHN5bmNocm9ub3VzIHNjcm9sbC4gVG8gY29udHJvbCB0aGUgc2Nyb2xsIGNoYWluaW5nLAorICAg
ICAgICBtX3Njcm9sbENoYWluaW5nQmxvY2tlciBpcyBhZGRlZCB0byBFdmVudEhhbmxkZXIsIGl0
IGlzIGdlbmVyYXRlZCBhY2NvcmRpbmcgdG8gdGhlIG92ZXJzY3JvbGwtYmVoYXZpb3IgdmFsdWVz
LgorICAgICAgICBJdCBpbmRpY2F0ZXMgd2hldGhlciB0aGUgc2Nyb2xsIGNoYWluaW5nIG9mIHRo
aXMgZnJhbWUgc2hvdWxkIGJlIHN0b3BwZWQgb3Igbm90LgorICAgICAgICBUaGUgc2Nyb2xsIGNo
YWluaW5nIGlzIGhhbmRsZWQgZGlmZmVyZW50bHkgYnkgV0hFRUxfRVZFTlRfTEFUQ0hJTkcgc2V0
dGluZy4gSWYgV0hFRUxfRVZFTlRfTEFUQ0hJTkcgaXMgb2ZmLAorICAgICAgICB0aGUgc2Nyb2xs
IGNoYWluaW5nIGlzIGhhbmRsZWQgZGlyZWN0bHkgaW4gRXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVl
bEV2ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2luZ0JveCgpLgorICAgICAgICBJZiBXSEVFTF9FVkVO
VF9MQVRDSElORyBpcyBvbiwgdGhlIGxhdGNoZWQgc2Nyb2xsIHRhcmdldCBpcyBhbHdheXMgRnJh
bWVWaWV3IGlmIGl0IG5lZWRzIHRvIHN0b3AgdGhlIHNjcm9sbCBjaGFpbmluZy4KKyAgICAgICAg
SWYgY3VycmVudCBmcmFtZSBpcyBhIHN1YmZyYW1lLCB0aGUgdmFsdWUgb2YgbV9zY3JvbGxDaGFp
bmluZ0Jsb2NrZXIgd2lsbCBiZSBwYXNzZWQgdG8gaXRzIHBhcmVudCBmcmFtZS4KKyAgICAgICAg
QW5kIGV2ZW50dWFsbHksIGxldCB0aGUgbWFpbmZyYW1lIGhhbmRsZSBtX3Njcm9sbENoYWluaW5n
QmxvY2tlci4gVGhlIG1haW5mcmFtZSBibG9ja3MgdmVydGljYWwgc2Nyb2xsIGNoYWluaW5nIGRp
cmVjdGx5LAorICAgICAgICBhbmQgaG9yaXpvbnRhbGx5IGl0IHdpbGwgbGV0IHRoZSB2aWV3cyBk
ZWNpZGUgd2hldGhlciBpdCBzaG91bGQgZ2VuZXJhdGUgc3dpcGUgZ2VzdHVyZXMgb3Igbm90Lgor
ICAgICAgICBBYm91dCB0aGUgc2Nyb2xsIHN0cmV0Y2gsIGl0IGlzIGNhbmNlbGVkIGlmIHRoZSB2
YWx1ZSBvZiBvdmVyc2Nyb2xsLWJlaGF2aW9yIGlzIG5vbmUuCisKKyAgICAgICAgVGVzdHM6IGZh
c3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC5odG1s
CisgICAgICAgICAgICAgICBmYXN0L3Njcm9sbGluZy9zeW5jLXNjcm9sbC1vdmVyc2Nyb2xsLWJl
aGF2aW9yLWlmcmFtZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L3Njcm9sbGluZy9zeW5jLXNj
cm9sbC1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWwKKyAgICAg
ICAgICAgICAgIGZhc3Qvc2Nyb2xsaW5nL3N5bmMtc2Nyb2xsLW92ZXJzY3JvbGwtYmVoYXZpb3It
dW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sCisKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnNjcm9sbENoYWluaW5nQmxvY2tl
ckNoYW5nZWRCeVN1YmZyYW1lKTogVXBkYXRlIHRoZSBzdGF0ZSBvZiBzY3JvbGxMYXRjaGluZ0Nv
bnRyb2xsZXIgaWYgbV9zY3JvbGxDaGFpbmluZ0Jsb2NrZXIgaXMgY2hhbmdlZCBieSBzdWJmcmFt
ZS4KKyAgICAgICAgKFdlYkNvcmU6OnByb3BhZ2F0ZVNjcm9sbENoYWluaW5nQmxvY2tlclRvUGFy
ZW50RnJhbWUpOiBQcm9wYWdhdGUgbV9zY3JvbGxDaGFpbmluZ0Jsb2NrZXIgdG8gcGFyZW50IGZy
YW1lLgorICAgICAgICAoV2ViQ29yZTo6aGFuZGxlU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyQmVmb3Jl
U2Nyb2xsaW5nRnJhbWVWaWV3KTogQ2hlY2sgaWYgbV9zY3JvbGxDaGFpbmluZ0Jsb2NrZXIgYmxv
Y2tzIHRoZSBzY3JvbGwgY2hhaW5pbmcgb24gRnJhbWVWaWV3LAorICAgICAgICBkZWFsIHdpdGgg
aG9yaXpvbnRhbCBhbmQgdmVydGljYWwgc2Nyb2xsIGNoYWluaW5nIGRpZmZlcmVudGx5LCBhbmQg
dXBkYXRlIHRoZSBkZWx0YSBvZiBXaGVlbEV2ZW50IGlmIGl0IGRvZXNuJ3QgYmxvY2sgdGhlIHNj
cm9sbCBjaGFpbmluZy4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlV2hl
ZWxFdmVudEludGVybmFsKTogSGFuZGxlIG1fc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIGJlZm9yZSBz
Y3JvbGxpbmcgRnJhbWVWaWV3LCBhbmQgcGFzcyBtX3Njcm9sbENoYWluaW5nQmxvY2tlciB0byBw
YXJlbnQgZnJhbWUgYWZ0ZXIgc2Nyb2xsaW5nIEZyYW1lVmlldy4gCisgICAgICAgIChXZWJDb3Jl
OjpkaWRTY3JvbGxJblNjcm9sbGFibGVBcmVhKTogRmlsdGVyIHRoZSBzY3JvbGwgZGVsdGEgYnkg
dGhlIFNjcm9sbENoYWluaW5nQmxvY2tlciB2YWx1ZS4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudEluQXBwcm9wcmlhdGVFbmNsb3NpbmdCb3gpOiBCbG9j
ayBzY3JvbGwgY2hhaW5pbmcgYWNjb3JkaW5nIHRvIHRoZSB2YWx1ZSBvZiBtX3Njcm9sbENoYWlu
aW5nQmxvY2tlci4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6dXBkYXRlU2Nyb2xs
Q2hhaW5pbmdCbG9ja2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6cmVzZXRT
Y3JvbGxDaGFpbmluZ0Jsb2NrZXIpOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmg6Cisg
ICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3
Ojpob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lVmlldzo6dmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IgY29uc3QpOgorICAgICAgICAq
IHBhZ2UvRnJhbWVWaWV3Lmg6CisgICAgICAgICogcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1t
OgorICAgICAgICAoV2ViQ29yZTo6ZmluZEVuY2xvc2luZ1Njcm9sbGFibGVDb250YWluZXIpOiBV
cGRhdGUgdGhlIHZhbHVlIG9mIFNjcm9sbENoYWluaW5nQmxvY2tlciBhbmQgcmV0dXJuIG51bGwg
aWYgc2hvdWxkQmxvY2tTY3JvbGxDaGFpbmluZygpLgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRI
YW5kbGVyOjpkZXRlcm1pbmVXaGVlbEV2ZW50VGFyZ2V0KTogSWYgc2hvdWxkQmxvY2tTY3JvbGxD
aGFpbmluZygpLCBGcmFtZVZpZXcgd2lsbCBiZSB0aGUgbGF0Y2hlZCBzY3JvbGwgdGFyZ2V0Lgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpzY3JvbGxDaGFpbmluZ0Jsb2NrZXJDaGFu
Z2VkQnlTdWJmcmFtZSk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtV2hlZWxF
dmVudC5oOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2ZW50Ojp3aGVlbERlbHRh
Qmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbCk6IE1vdmVkIGZyb20gU2Nyb2xsQ29udHJvbGxlci5tbQor
ICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFR5cGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxDaGFpbmluZ0Jsb2NrZXI6OnNob3VsZEJsb2NrU2Nyb2xsQ2hhaW5pbmcpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsQ2hhaW5pbmdCbG9ja2VyOjpmaWx0ZXJEZWx0YSk6CisgICAgICAgICog
cGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYWJs
ZUFyZWE6OmdldFNjcm9sbENoYWluaW5nQmxvY2tlciBjb25zdCk6CisgICAgICAgICogcGxhdGZv
cm0vU2Nyb2xsYWJsZUFyZWEuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGFibGVBcmVhOjpo
b3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGFibGVBcmVhOjp2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvciBjb25zdCk6CisgICAgICAg
ICogcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsQW5pbWF0b3JNYWM6OnNob3VsZEZvcndhcmRXaGVlbEV2ZW50c1RvUGFyZW50IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTWFjOjphbGxvd3NWZXJ0aWNhbFN0
cmV0Y2hpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JNYWM6OmFs
bG93c0hvcml6b250YWxTdHJldGNoaW5nIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMv
U2Nyb2xsQ29udHJvbGxlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbENvbnRyb2xsZXI6
OmRpcmVjdGlvbkZyb21FdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxDb250cm9sbGVy
Ojp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbCk6IERlbGV0ZWQuCisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6aG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlv
ciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllclNjcm9sbGFibGVBcmVhOjp2
ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvciBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuaDoKKwogMjAyMS0wMy0xNSAgSW1hbm9sIEZlcm5hbmRl
eiAgPGlmZXJuYW5kZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBTcGxpdCBXZWJYUiBmZWF0dXJl
cyBpbnRvIGVuYWJsZWRGZWF0dXJlcywgc3VwcG9ydGVkRmVhdHVyZXMgYW5kIHJlcXVlc3RlZEZl
YXR1cmVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggMmYxOGUxZWVlOS4u
MWIwMDU3YWIwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtMjczOSw2
ICsyNzM5LDEwIEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpkZXRlcm1pbmVXaGVlbEV2ZW50VGFyZ2V0
KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIFJlZlB0cjxFCiB7CiB9CiAKK3ZvaWQgRXZlbnRI
YW5kbGVyOjpzY3JvbGxDaGFpbmluZ0Jsb2NrZXJDaGFuZ2VkQnlTdWJmcmFtZShjb25zdCBQbGF0
Zm9ybVdoZWVsRXZlbnQmLCBSZWZQdHI8RWxlbWVudD4mLCBXZWFrUHRyPFNjcm9sbGFibGVBcmVh
PiYsIGJvb2wmKQoreworfQorCiB2b2lkIEV2ZW50SGFuZGxlcjo6cmVjb3JkV2hlZWxFdmVudEZv
ckRlbHRhRmlsdGVyKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgZXZlbnQpCiB7CiAgICAgaWYg
KGF1dG8qIHBhZ2UgPSBtX2ZyYW1lLnBhZ2UoKSkKQEAgLTI4NTcsNiArMjg2MSwzMyBAQCBib29s
IEV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQm
IHdoZWVsRXZlbnQsIE9wdGlvbgogICAgIHJldHVybiBoYW5kbGVkOwogfQogCitzdGF0aWMgdm9p
ZCBwcm9wYWdhdGVTY3JvbGxDaGFpbmluZ0Jsb2NrZXJUb1BhcmVudEZyYW1lKEZyYW1lJiBmcmFt
ZSwgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyJiBibG9ja2VyKQoreworICAgIGlmICghZnJhbWUudmll
dygpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKGF1dG8qIHBhcmVudCA9IGZyYW1lLnRyZWUo
KS5wYXJlbnQoKSkgeworICAgICAgICBmcmFtZS52aWV3KCktPmdldFNjcm9sbENoYWluaW5nQmxv
Y2tlcihibG9ja2VyKTsKKyAgICAgICAgcGFyZW50LT5ldmVudEhhbmRsZXIoKS51cGRhdGVTY3Jv
bGxDaGFpbmluZ0Jsb2NrZXIoYmxvY2tlcik7CisgICAgfQorfQorCitzdGF0aWMgYm9vbCBoYW5k
bGVTY3JvbGxDaGFpbmluZ0Jsb2NrZXJCZWZvcmVTY3JvbGxpbmdGcmFtZVZpZXcoUGxhdGZvcm1X
aGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBTY3JvbGxDaGFpbmluZ0Jsb2NrZXIgc2Nyb2xsQ2hhaW5p
bmdCbG9ja2VyLCBib29sJiBoYW5kbGVkRXZlbnQpCit7CisgICAgRmxvYXRTaXplIGZpbHRlcmVk
RGVsdGEod2hlZWxFdmVudC5kZWx0YVgoKSwgd2hlZWxFdmVudC5kZWx0YVkoKSk7CisgICAgYXV0
byBiaWFzZWREZWx0YSA9IFBsYXRmb3JtV2hlZWxFdmVudDo6d2hlZWxEZWx0YUJpYXNpbmdUb3dh
cmRzVmVydGljYWwoZmlsdGVyZWREZWx0YSk7CisgICAgaWYgKFNjcm9sbENoYWluaW5nQmxvY2tl
cjo6c2hvdWxkQmxvY2tTY3JvbGxDaGFpbmluZyhzY3JvbGxDaGFpbmluZ0Jsb2NrZXIsIGJpYXNl
ZERlbHRhKSkgeworICAgICAgICBpZiAoU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyOjpzaG91bGRCbG9j
a0hvcml6b250YWxTY3JvbGxDaGFpbmluZyhzY3JvbGxDaGFpbmluZ0Jsb2NrZXIsIGJpYXNlZERl
bHRhKSkKKyAgICAgICAgICAgIGhhbmRsZWRFdmVudCA9IGZhbHNlOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBoYW5kbGVkRXZlbnQgPSB0cnVlOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisKKyAgICBTY3JvbGxDaGFpbmluZ0Jsb2NrZXI6OmZpbHRlckRlbHRhKHNjcm9sbENoYWlu
aW5nQmxvY2tlciwgYmlhc2VkRGVsdGEsIGZpbHRlcmVkRGVsdGEpOworICAgIHdoZWVsRXZlbnQg
PSB3aGVlbEV2ZW50LmNvcHlXaXRoRGVsdGFzQW5kVmVsb2NpdHkoZmlsdGVyZWREZWx0YS53aWR0
aCgpLCBmaWx0ZXJlZERlbHRhLmhlaWdodCgpLCB3aGVlbEV2ZW50LnNjcm9sbGluZ1ZlbG9jaXR5
KCkpOworICAgIHJldHVybiBmYWxzZTsKK30KKwogYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVdo
ZWVsRXZlbnRJbnRlcm5hbChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50LCBPcHRpb25T
ZXQ8V2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwcz4gcHJvY2Vzc2luZ1N0ZXBzLCBPcHRpb25TZXQ8
RXZlbnRIYW5kbGluZz4mIGhhbmRsaW5nKQogewogICAgIGF1dG8qIGRvY3VtZW50ID0gbV9mcmFt
ZS5kb2N1bWVudCgpOwpAQCAtMjg4OSw2ICsyOTIwLDggQEAgYm9vbCBFdmVudEhhbmRsZXI6Omhh
bmRsZVdoZWVsRXZlbnRJbnRlcm5hbChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50LCBP
cHQKICAgICBhdXRvIGRlZmVycmVyID0gV2hlZWxFdmVudFRlc3RNb25pdG9yQ29tcGxldGlvbkRl
ZmVycmVyIHsgbW9uaXRvci5nZXQoKSwgdGhpcywgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpEZWZl
clJlYXNvbjo6SGFuZGxpbmdXaGVlbEV2ZW50T25NYWluVGhyZWFkIH07CiAjZW5kaWYKIAorICAg
IHJlc2V0U2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKCk7CisKICAgICBtX2lzSGFuZGxpbmdXaGVlbEV2
ZW50ID0gdHJ1ZTsKICAgICBhdXRvIGFsbG93c1Njcm9sbGluZ1N0YXRlID0gU2V0Rm9yU2NvcGUo
bV9jdXJyZW50V2hlZWxFdmVudEFsbG93c1Njcm9sbGluZywgcHJvY2Vzc2luZ1N0ZXBzLmNvbnRh
aW5zKFdoZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHM6Ok1haW5UaHJlYWRGb3JTY3JvbGxpbmcpKTsK
ICAgICAKQEAgLTI5MTMsMTEgKzI5NDYsMTYgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVdo
ZWVsRXZlbnRJbnRlcm5hbChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50LCBPcHQKICAg
ICAvLyBpdHNlbGYgZmluZHMgYW5kIHRyaWVzIHRvIHNjcm9sbCBvdmVyZmxvdyBzY3JvbGxlcnMu
CiAgICAgZGV0ZXJtaW5lV2hlZWxFdmVudFRhcmdldChldmVudCwgZWxlbWVudCwgc2Nyb2xsYWJs
ZUFyZWEsIGlzT3ZlcldpZGdldCk7CiAKKyAgICBhdXRvIG9sZEJsb2NrZXIgPSBtX3Njcm9sbENo
YWluaW5nQmxvY2tlcjsKICAgICBpZiAoZWxlbWVudCkgewogICAgICAgICBpZiAoaXNPdmVyV2lk
Z2V0KSB7CiAgICAgICAgICAgICBpZiAoV2Vha1B0cjxXaWRnZXQ+IHdpZGdldCA9IHdpZGdldEZv
ckVsZW1lbnQoKmVsZW1lbnQpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHBhc3NXaGVlbEV2ZW50
VG9XaWRnZXQoZXZlbnQsICp3aWRnZXQuZ2V0KCksIHByb2Nlc3NpbmdTdGVwcykpCiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBjb21wbGV0ZVdpZGdldFdoZWVsRXZlbnQoZXZlbnQsIHdpZGdl
dCwgc2Nyb2xsYWJsZUFyZWEpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKG1fc2Nyb2xsQ2hh
aW5pbmdCbG9ja2VyLmJsb2NrWCAhPSBvbGRCbG9ja2VyLmJsb2NrWCB8fCBtX3Njcm9sbENoYWlu
aW5nQmxvY2tlci5ibG9ja1kgIT0gb2xkQmxvY2tlci5ibG9ja1kpIHsKKyAgICAgICAgICAgICAg
ICAgICAgLy8gSWYgbV9zY3JvbGxDaGFpbmluZ0Jsb2NrZXIgaXMgY2hhbmdlZCBpbiBzdWJmcmFt
ZXMsIHRoZSBsYWNoZWQgc3RhdGUgc2hvdWxkIGJlIGNhbGN1bGF0ZWQgYWdhaW4uCisgICAgICAg
ICAgICAgICAgICAgIHNjcm9sbENoYWluaW5nQmxvY2tlckNoYW5nZWRCeVN1YmZyYW1lKGV2ZW50
LCBlbGVtZW50LCBzY3JvbGxhYmxlQXJlYSwgaXNPdmVyV2lkZ2V0KTsKKyAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtMjk1MiwxMSArMjk5MCwxNyBAQCBi
b29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudEludGVybmFsKGNvbnN0IFBsYXRmb3Jt
V2hlZWxFdmVudCYgZXZlbnQsIE9wdAogI2VuZGlmCiAKICAgICBpZiAoYWxsb3dTY3JvbGxpbmcp
IHsKLSAgICAgICAgLy8gRklYTUU6IHByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKCkgaXMg
b25seSBjYWxsZWQgZm9yIEZyYW1lVmlldyBzY3JvbGxpbmcsIG5vdCBvdmVyZmxvdyBzY3JvbGxp
bmcsIHdoaWNoIGlzIGNvbmZ1c2luZy4KLSAgICAgICAgaGFuZGxlZEV2ZW50ID0gcHJvY2Vzc1do
ZWVsRXZlbnRGb3JTY3JvbGxpbmcoZXZlbnQsIHNjcm9sbGFibGVBcmVhLCBoYW5kbGluZyk7Ci0g
ICAgICAgIHByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsU25hcChldmVudCwgc2Nyb2xsYWJsZUFy
ZWEpOworICAgICAgICBQbGF0Zm9ybVdoZWVsRXZlbnQgYWRqdXN0ZWRXaGVlbEV2ZW50ID0gUGxh
dGZvcm1XaGVlbEV2ZW50KGV2ZW50KTsKKyAgICAgICAgaWYgKCFoYW5kbGVTY3JvbGxDaGFpbmlu
Z0Jsb2NrZXJCZWZvcmVTY3JvbGxpbmdGcmFtZVZpZXcoYWRqdXN0ZWRXaGVlbEV2ZW50LCBtX3Nj
cm9sbENoYWluaW5nQmxvY2tlciwgaGFuZGxlZEV2ZW50KSkgeworICAgICAgICAgICAgLy8gRklY
TUU6IHByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKCkgaXMgb25seSBjYWxsZWQgZm9yIEZy
YW1lVmlldyBzY3JvbGxpbmcsIG5vdCBvdmVyZmxvdyBzY3JvbGxpbmcsIHdoaWNoIGlzIGNvbmZ1
c2luZy4KKyAgICAgICAgICAgIGhhbmRsZWRFdmVudCA9IHByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Ny
b2xsaW5nKGFkanVzdGVkV2hlZWxFdmVudCwgc2Nyb2xsYWJsZUFyZWEsIGhhbmRsaW5nKTsKKyAg
ICAgICAgICAgIHByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsU25hcChhZGp1c3RlZFdoZWVsRXZl
bnQsIHNjcm9sbGFibGVBcmVhKTsKKyAgICAgICAgfQogICAgIH0KIAorICAgIC8vIFBhc3MgdGhl
IHZhbHVlIG9mIG1fc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIHRvIHRoZSBwYXJlbnQgZnJhbWUuCisg
ICAgaWYgKCFoYW5kbGVkRXZlbnQgJiYgIW1fZnJhbWUuaXNNYWluRnJhbWUoKSkKKyAgICAgICAg
cHJvcGFnYXRlU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyVG9QYXJlbnRGcmFtZShtX2ZyYW1lLCBtX3Nj
cm9sbENoYWluaW5nQmxvY2tlcik7CiAgICAgcmV0dXJuIGhhbmRsZWRFdmVudDsKIH0KIApAQCAt
Mjk3MSwyMCArMzAxNSwyMyBAQCBzdGF0aWMgdm9pZCBoYW5kbGVXaGVlbEV2ZW50UGhhc2VJblNj
cm9sbGFibGVBcmVhKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYQogI2VuZGlmCiB9CiAK
LXN0YXRpYyBib29sIGRpZFNjcm9sbEluU2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJsZUFyZWEmIHNj
cm9sbGFibGVBcmVhLCBjb25zdCBXaGVlbEV2ZW50JiB3aGVlbEV2ZW50KQorc3RhdGljIGJvb2wg
ZGlkU2Nyb2xsSW5TY3JvbGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEs
IGNvbnN0IFdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIGNvbnN0IFNjcm9sbENoYWluaW5nQmxvY2tl
ciYgYmxvY2tlcikKIHsKKyAgICBGbG9hdFNpemUgZmlsdGVyZWREZWx0YSh3aGVlbEV2ZW50LmRl
bHRhWCgpLCB3aGVlbEV2ZW50LmRlbHRhWSgpKTsKKyAgICBhdXRvIGJpYXNlZERlbHRhID0gUGxh
dGZvcm1XaGVlbEV2ZW50Ojp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbChmaWx0ZXJl
ZERlbHRhKTsKKyAgICBTY3JvbGxDaGFpbmluZ0Jsb2NrZXI6OmZpbHRlckRlbHRhKGJsb2NrZXIs
IGJpYXNlZERlbHRhLCBmaWx0ZXJlZERlbHRhKTsKICAgICBTY3JvbGxHcmFudWxhcml0eSBzY3Jv
bGxHcmFudWxhcml0eSA9IHdoZWVsR3JhbnVsYXJpdHlUb1Njcm9sbEdyYW51bGFyaXR5KHdoZWVs
RXZlbnQuZGVsdGFNb2RlKCkpOwogICAgIGJvb2wgZGlkSGFuZGxlV2hlZWxFdmVudCA9IGZhbHNl
OwotICAgIGlmIChmbG9hdCBhYnNvbHV0ZURlbHRhID0gc3RkOjphYnMod2hlZWxFdmVudC5kZWx0
YVgoKSkpCi0gICAgICAgIGRpZEhhbmRsZVdoZWVsRXZlbnQgfD0gc2Nyb2xsYWJsZUFyZWEuc2Ny
b2xsKHdoZWVsRXZlbnQuZGVsdGFYKCkgPiAwID8gU2Nyb2xsUmlnaHQgOiBTY3JvbGxMZWZ0LCBz
Y3JvbGxHcmFudWxhcml0eSwgYWJzb2x1dGVEZWx0YSk7CisgICAgaWYgKGZsb2F0IGFic29sdXRl
RGVsdGEgPSBzdGQ6OmFicyhmaWx0ZXJlZERlbHRhLndpZHRoKCkpKQorICAgICAgICBkaWRIYW5k
bGVXaGVlbEV2ZW50IHw9IHNjcm9sbGFibGVBcmVhLnNjcm9sbChmaWx0ZXJlZERlbHRhLndpZHRo
KCkgPiAwID8gU2Nyb2xsUmlnaHQgOiBTY3JvbGxMZWZ0LCBzY3JvbGxHcmFudWxhcml0eSwgYWJz
b2x1dGVEZWx0YSk7CiAKLSAgICBpZiAoZmxvYXQgYWJzb2x1dGVEZWx0YSA9IHN0ZDo6YWJzKHdo
ZWVsRXZlbnQuZGVsdGFZKCkpKQotICAgICAgICBkaWRIYW5kbGVXaGVlbEV2ZW50IHw9IHNjcm9s
bGFibGVBcmVhLnNjcm9sbCh3aGVlbEV2ZW50LmRlbHRhWSgpID4gMCA/IFNjcm9sbERvd24gOiBT
Y3JvbGxVcCwgc2Nyb2xsR3JhbnVsYXJpdHksIGFic29sdXRlRGVsdGEpOworICAgIGlmIChmbG9h
dCBhYnNvbHV0ZURlbHRhID0gc3RkOjphYnMoZmlsdGVyZWREZWx0YS5oZWlnaHQoKSkpCisgICAg
ICAgIGRpZEhhbmRsZVdoZWVsRXZlbnQgfD0gc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsKGZpbHRlcmVk
RGVsdGEuaGVpZ2h0KCkgPiAwID8gU2Nyb2xsRG93biA6IFNjcm9sbFVwLCBzY3JvbGxHcmFudWxh
cml0eSwgYWJzb2x1dGVEZWx0YSk7CiAKICAgICByZXR1cm4gZGlkSGFuZGxlV2hlZWxFdmVudDsK
IH0KIAotYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5j
bG9zaW5nQm94KE5vZGUqIHN0YXJ0Tm9kZSwgY29uc3QgV2hlZWxFdmVudCYgd2hlZWxFdmVudCwg
Y29uc3QgRmxvYXRTaXplJiBmaWx0ZXJlZFBsYXRmb3JtRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYg
ZmlsdGVyZWRWZWxvY2l0eSwgT3B0aW9uU2V0PEV2ZW50SGFuZGxpbmc+IGV2ZW50SGFuZGxpbmcp
Citib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudEluQXBwcm9wcmlhdGVFbmNsb3Np
bmdCb3goTm9kZSogc3RhcnROb2RlLCBjb25zdCBXaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBGbG9h
dFNpemUmIGZpbHRlcmVkUGxhdGZvcm1EZWx0YSwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJlZFZl
bG9jaXR5LCBPcHRpb25TZXQ8RXZlbnRIYW5kbGluZz4gZXZlbnRIYW5kbGluZykKIHsKICAgICBi
b29sIHNob3VsZEhhbmRsZUV2ZW50ID0gd2hlZWxFdmVudC5kZWx0YVgoKSB8fCB3aGVlbEV2ZW50
LmRlbHRhWSgpOwogI2lmIEVOQUJMRShXSEVFTF9FVkVOVF9MQVRDSElORykKQEAgLTMwMDYsMjEg
KzMwNTMsMzIgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnRJbkFwcHJvcHJp
YXRlRW5jbG9zaW5nQm94KE5vZGUqIHN0YXJ0Tm9kZSwgY28KICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgaWYgKGlzPFJlbmRlckxpc3RCb3g+KGluaXRpYWxFbmNsb3NpbmdCb3gpKQotICAg
ICAgICByZXR1cm4gZGlkU2Nyb2xsSW5TY3JvbGxhYmxlQXJlYShkb3duY2FzdDxSZW5kZXJMaXN0
Qm94Pihpbml0aWFsRW5jbG9zaW5nQm94KSwgd2hlZWxFdmVudCk7CisgICAgICAgIHJldHVybiBk
aWRTY3JvbGxJblNjcm9sbGFibGVBcmVhKGRvd25jYXN0PFJlbmRlckxpc3RCb3g+KGluaXRpYWxF
bmNsb3NpbmdCb3gpLCB3aGVlbEV2ZW50LCBtX3Njcm9sbENoYWluaW5nQmxvY2tlcik7CiAKKyAg
ICBhdXRvIGJpYXNlZERlbHRhID0gUGxhdGZvcm1XaGVlbEV2ZW50Ojp3aGVlbERlbHRhQmlhc2lu
Z1Rvd2FyZHNWZXJ0aWNhbChGbG9hdFNpemUod2hlZWxFdmVudC5kZWx0YVgoKSwgd2hlZWxFdmVu
dC5kZWx0YVkoKSkpOwogICAgIFJlbmRlckJveCogY3VycmVudEVuY2xvc2luZ0JveCA9ICZpbml0
aWFsRW5jbG9zaW5nQm94OwogICAgIHdoaWxlIChjdXJyZW50RW5jbG9zaW5nQm94KSB7CisgICAg
ICAgIGlmIChTY3JvbGxDaGFpbmluZ0Jsb2NrZXI6OnNob3VsZEJsb2NrU2Nyb2xsQ2hhaW5pbmco
bV9zY3JvbGxDaGFpbmluZ0Jsb2NrZXIsIGJpYXNlZERlbHRhKSkgeworICAgICAgICAgICAgaWYg
KFNjcm9sbENoYWluaW5nQmxvY2tlcjo6c2hvdWxkQmxvY2tIb3Jpem9udGFsU2Nyb2xsQ2hhaW5p
bmcobV9zY3JvbGxDaGFpbmluZ0Jsb2NrZXIsIGJpYXNlZERlbHRhKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCiAg
ICAgICAgIGlmIChhdXRvKiBib3hMYXllciA9IGN1cnJlbnRFbmNsb3NpbmdCb3gtPmxheWVyKCkg
PyBjdXJyZW50RW5jbG9zaW5nQm94LT5sYXllcigpLT5zY3JvbGxhYmxlQXJlYSgpIDogbnVsbHB0
cikgewogICAgICAgICAgICAgYXV0byBwbGF0Zm9ybUV2ZW50ID0gd2hlZWxFdmVudC51bmRlcmx5
aW5nUGxhdGZvcm1FdmVudCgpOwogICAgICAgICAgICAgYm9vbCBzY3JvbGxpbmdXYXNIYW5kbGVk
OwogICAgICAgICAgICAgaWYgKHBsYXRmb3JtRXZlbnQpIHsKKyAgICAgICAgICAgICAgICBTY3Jv
bGxDaGFpbmluZ0Jsb2NrZXI6OmZpbHRlckRlbHRhKG1fc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyLCBi
aWFzZWREZWx0YSwgZmlsdGVyZWRQbGF0Zm9ybURlbHRhKTsKICAgICAgICAgICAgICAgICBhdXRv
IGNvcGllZEV2ZW50ID0gcGxhdGZvcm1FdmVudC0+Y29weVdpdGhEZWx0YXNBbmRWZWxvY2l0eShm
aWx0ZXJlZFBsYXRmb3JtRGVsdGEud2lkdGgoKSwgZmlsdGVyZWRQbGF0Zm9ybURlbHRhLmhlaWdo
dCgpLCBmaWx0ZXJlZFZlbG9jaXR5KTsKICAgICAgICAgICAgICAgICBzY3JvbGxpbmdXYXNIYW5k
bGVkID0gaGFuZGxlV2hlZWxFdmVudEluU2Nyb2xsYWJsZUFyZWEoY29waWVkRXZlbnQsICpib3hM
YXllciwgZXZlbnRIYW5kbGluZyk7CiAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAg
ICBzY3JvbGxpbmdXYXNIYW5kbGVkID0gZGlkU2Nyb2xsSW5TY3JvbGxhYmxlQXJlYSgqYm94TGF5
ZXIsIHdoZWVsRXZlbnQpOworICAgICAgICAgICAgICAgIHNjcm9sbGluZ1dhc0hhbmRsZWQgPSBk
aWRTY3JvbGxJblNjcm9sbGFibGVBcmVhKCpib3hMYXllciwgd2hlZWxFdmVudCwgbV9zY3JvbGxD
aGFpbmluZ0Jsb2NrZXIpOwogCiAgICAgICAgICAgICBpZiAoc2Nyb2xsaW5nV2FzSGFuZGxlZCkK
ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAgICAgaWYgKGN1cnJlbnRF
bmNsb3NpbmdCb3gtPmVsZW1lbnQoKSAhPSBjdXJyZW50RW5jbG9zaW5nQm94LT5kb2N1bWVudCgp
LmRvY3VtZW50RWxlbWVudCgpKQorICAgICAgICAgICAgICAgIGJveExheWVyLT5nZXRTY3JvbGxD
aGFpbmluZ0Jsb2NrZXIobV9zY3JvbGxDaGFpbmluZ0Jsb2NrZXIpOwogICAgICAgICB9CiAKICAg
ICAgICAgY3VycmVudEVuY2xvc2luZ0JveCA9IGN1cnJlbnRFbmNsb3NpbmdCb3gtPmNvbnRhaW5p
bmdCbG9jaygpOwpAQCAtNDYzNCw0ICs0NjkyLDE1IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpwYXNz
TW91c2VNb3ZlRXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIG1v
CiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKSAmJiAhUExBVEZPUk0oV0lOKQogCit2b2lk
IEV2ZW50SGFuZGxlcjo6dXBkYXRlU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyKGNvbnN0IFNjcm9sbENo
YWluaW5nQmxvY2tlciYgYmxvY2tlcikKK3sKKyAgICBtX3Njcm9sbENoYWluaW5nQmxvY2tlci5i
bG9ja1ggfD0gYmxvY2tlci5ibG9ja1g7CisgICAgbV9zY3JvbGxDaGFpbmluZ0Jsb2NrZXIuYmxv
Y2tZIHw9IGJsb2NrZXIuYmxvY2tZOworfQorCit2b2lkIEV2ZW50SGFuZGxlcjo6cmVzZXRTY3Jv
bGxDaGFpbmluZ0Jsb2NrZXIoKQoreworICAgIG1fc2Nyb2xsQ2hhaW5pbmdCbG9ja2VyID0geyBm
YWxzZSwgZmFsc2UgfTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RXZlbnRIYW5kbGVyLmgKaW5kZXggNWQwNDIwMzhiZi4uZjFlZGUxNjgzMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50SGFuZGxlci5oCkBAIC0yMTQsNiArMjE0LDEwIEBAIHB1YmxpYzoKICAgICB2b2lk
IGRlZmF1bHRXaGVlbEV2ZW50SGFuZGxlcihOb2RlKiwgV2hlZWxFdmVudCYpOwogICAgIHZvaWQg
d2hlZWxFdmVudFdhc1Byb2Nlc3NlZEJ5TWFpblRocmVhZChjb25zdCBQbGF0Zm9ybVdoZWVsRXZl
bnQmLCBPcHRpb25TZXQ8RXZlbnRIYW5kbGluZz4pOwogCisgICAgdm9pZCB1cGRhdGVTY3JvbGxD
aGFpbmluZ0Jsb2NrZXIoY29uc3QgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyJik7CisgICAgdm9pZCBy
ZXNldFNjcm9sbENoYWluaW5nQmxvY2tlcigpOworICAgIHZvaWQgc2Nyb2xsQ2hhaW5pbmdCbG9j
a2VyQ2hhbmdlZEJ5U3ViZnJhbWUoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgUmVmUHRyPEVs
ZW1lbnQ+JiBldmVudFRhcmdldCwgV2Vha1B0cjxTY3JvbGxhYmxlQXJlYT4mLCBib29sJiBpc092
ZXJXaWRnZXQpOworCiAgICAgYm9vbCBoYW5kbGVQYXN0ZUdsb2JhbFNlbGVjdGlvbihjb25zdCBQ
bGF0Zm9ybU1vdXNlRXZlbnQmKTsKIAogI2lmIEVOQUJMRShJT1NfVE9VQ0hfRVZFTlRTKSB8fCBF
TkFCTEUoSU9TX0dFU1RVUkVfRVZFTlRTKQpAQCAtNDcwLDcgKzQ3NCw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBwcm9jZXNzV2hlZWxFdmVudEZvclNjcm9sbFNuYXAoY29uc3QgUGxhdGZvcm1XaGVl
bEV2ZW50JiwgY29uc3QgV2Vha1B0cjxTY3JvbGxhYmxlQXJlYT4mKTsKICAgICBib29sIGNvbXBs
ZXRlV2lkZ2V0V2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBjb25zdCBXZWFr
UHRyPFdpZGdldD4mLCBjb25zdCBXZWFrUHRyPFNjcm9sbGFibGVBcmVhPiYpOwogCi0gICAgYm9v
bCBoYW5kbGVXaGVlbEV2ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2luZ0JveChOb2RlKiBzdGFydE5v
ZGUsIGNvbnN0IFdoZWVsRXZlbnQmLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlcmVkUGxhdGZvcm1E
ZWx0YSwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJlZFZlbG9jaXR5LCBPcHRpb25TZXQ8RXZlbnRI
YW5kbGluZz4pOworICAgIGJvb2wgaGFuZGxlV2hlZWxFdmVudEluQXBwcm9wcmlhdGVFbmNsb3Np
bmdCb3goTm9kZSogc3RhcnROb2RlLCBjb25zdCBXaGVlbEV2ZW50JiwgRmxvYXRTaXplJiBmaWx0
ZXJlZFBsYXRmb3JtRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyZWRWZWxvY2l0eSwgT3B0
aW9uU2V0PEV2ZW50SGFuZGxpbmc+KTsKIAogICAgIGJvb2wgaGFuZGxlV2hlZWxFdmVudEluU2Ny
b2xsYWJsZUFyZWEoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgU2Nyb2xsYWJsZUFyZWEmLCBP
cHRpb25TZXQ8RXZlbnRIYW5kbGluZz4pOwogICAgIE9wdGlvbmFsPFdoZWVsU2Nyb2xsR2VzdHVy
ZVN0YXRlPiB1cGRhdGVXaGVlbEdlc3R1cmVTdGF0ZShjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQm
LCBPcHRpb25TZXQ8RXZlbnRIYW5kbGluZz4pOwpAQCAtNjQ2LDYgKzY1MCw4IEBAIHByaXZhdGU6
CiAgICAgSW50UG9pbnQgbV90YXJnZXRBdXRvc2Nyb2xsUG9zaXRpb25JblVuc2Nyb2xsZWRSb290
Vmlld0Nvb3JkaW5hdGVzOwogICAgIE9wdGlvbmFsPEludFBvaW50PiBtX2luaXRpYWxUYXJnZXRB
dXRvc2Nyb2xsUG9zaXRpb25JblVuc2Nyb2xsZWRSb290Vmlld0Nvb3JkaW5hdGVzOwogI2VuZGlm
CisKKyAgICBTY3JvbGxDaGFpbmluZ0Jsb2NrZXIgbV9zY3JvbGxDaGFpbmluZ0Jsb2NrZXIgeyBm
YWxzZSwgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmNwcAppbmRleCA2ODNlMzZlZjU1Li5hNjg5ZGIzZGEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZVZpZXcuY3BwCkBAIC00MTksNiArNDE5LDI2IEBAIGJvb2wgRnJhbWVWaWV3OjpkaWRG
aXJzdExheW91dCgpIGNvbnN0CiAgICAgcmV0dXJuIGxheW91dENvbnRleHQoKS5kaWRGaXJzdExh
eW91dCgpOwogfQogCitPdmVyc2Nyb2xsQmVoYXZpb3IgRnJhbWVWaWV3Ojpob3Jpem9udGFsT3Zl
cnNjcm9sbEJlaGF2aW9yKCkgY29uc3QKK3sKKyAgICBhdXRvKiBkb2N1bWVudCA9IGZyYW1lKCku
ZG9jdW1lbnQoKTsKKyAgICBhdXRvIHNjcm9sbGluZ09iamVjdCA9IGRvY3VtZW50ICYmIGRvY3Vt
ZW50LT5kb2N1bWVudEVsZW1lbnQoKSA/IGRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKS0+cmVu
ZGVyZXIoKSA6IG51bGxwdHI7CisgICAgLy8gQW4gZWxlbWVudCB0aGF0IGlzIG5vdCBzY3JvbGwg
Y29udGFpbmVyIG11c3QgYWNjZXB0IGJ1dCBpZ25vcmUgdGhlIHZhbHVlcyBvZiB0aGlzIHByb3Bl
cnR5LgorICAgIGlmIChzY3JvbGxpbmdPYmplY3QgJiYgcmVuZGVyVmlldygpICYmIHJlbmRlclZp
ZXcoKS0+Y2FuQmVTY3JvbGxlZEFuZEhhc1Njcm9sbGFibGVBcmVhKCkpCisgICAgICAgIHJldHVy
biBzY3JvbGxpbmdPYmplY3QtPnN0eWxlKCkub3ZlcnNjcm9sbEJlaGF2aW9yWCgpOworICAgIHJl
dHVybiBTY3JvbGxhYmxlQXJlYTo6aG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpOworfQor
CitPdmVyc2Nyb2xsQmVoYXZpb3IgRnJhbWVWaWV3Ojp2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlv
cigpICBjb25zdAoreworICAgIGF1dG8qIGRvY3VtZW50ID0gZnJhbWUoKS5kb2N1bWVudCgpOwor
ICAgIGF1dG8gc2Nyb2xsaW5nT2JqZWN0ID0gZG9jdW1lbnQgJiYgZG9jdW1lbnQtPmRvY3VtZW50
RWxlbWVudCgpID8gZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpLT5yZW5kZXJlcigpIDogbnVs
bHB0cjsKKyAgICAvLyBBbiBlbGVtZW50IHRoYXQgaXMgbm90IHNjcm9sbCBjb250YWluZXIgbXVz
dCBhY2NlcHQgYnV0IGlnbm9yZSB0aGUgdmFsdWVzIG9mIHRoaXMgcHJvcGVydHkuCisgICAgaWYg
KHNjcm9sbGluZ09iamVjdCAmJiByZW5kZXJWaWV3KCkgJiYgcmVuZGVyVmlldygpLT5jYW5CZVNj
cm9sbGVkQW5kSGFzU2Nyb2xsYWJsZUFyZWEoKSkKKyAgICAgICAgcmV0dXJuIHNjcm9sbGluZ09i
amVjdC0+c3R5bGUoKS5vdmVyc2Nyb2xsQmVoYXZpb3JZKCk7CisgICAgcmV0dXJuIFNjcm9sbGFi
bGVBcmVhOjp2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpOworfQorCiB2b2lkIEZyYW1lVmll
dzo6aW52YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICBpZiAoIXBhcmVu
dCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCBjZTdlOWExNjdjLi5iMTNjN2IyYmRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTY4MSw2ICs2ODEsOSBAQCBwdWJsaWM6CiAK
ICAgICBTdHJpbmcgZGVidWdEZXNjcmlwdGlvbigpIGNvbnN0IGZpbmFsOwogCisgICAgT3ZlcnNj
cm9sbEJlaGF2aW9yIGhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdCBmaW5hbDsK
KyAgICBPdmVyc2Nyb2xsQmVoYXZpb3IgdmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25z
dCBmaW5hbDsKKwogICAgIC8vIFNjcm9sbFZpZXcKICAgICB2b2lkIHVwZGF0ZVNjcm9sbGJhclN0
ZXBzKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2
ZW50SGFuZGxlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1h
Yy5tbQppbmRleCA4NjQ2NWY4MDVlLi41OTYyMGI1MTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
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
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yLmNwcAppbmRleCA1ODQ4MGEyZDdhLi4wYWUyZDI2Yjg0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5h
dG9yLmNwcApAQCAtNjg0LDYgKzY4NCw4IEBAIHZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRv
cjo6c2V0U2Nyb2xsaW5nTm9kZVNjcm9sbGFibGVBcmVhR2VvbWV0cnkoU2Nyb2xsaW5nCiAgICAg
c2Nyb2xsaW5nTm9kZS5zZXRTY3JvbGxhYmxlQXJlYVNpemUoc2Nyb2xsYWJsZUFyZWEudmlzaWJs
ZVNpemUoKSk7CiAKICAgICBTY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMgc2Nyb2xsUGFyYW1ldGVy
czsKKyAgICBzY3JvbGxQYXJhbWV0ZXJzLmhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IgPSBz
Y3JvbGxhYmxlQXJlYS5ob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCk7CisgICAgc2Nyb2xs
UGFyYW1ldGVycy52ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvciA9IHNjcm9sbGFibGVBcmVhLnZl
cnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCk7CiAgICAgc2Nyb2xsUGFyYW1ldGVycy5ob3Jpem9u
dGFsU2Nyb2xsRWxhc3RpY2l0eSA9IHNjcm9sbGFibGVBcmVhLmhvcml6b250YWxTY3JvbGxFbGFz
dGljaXR5KCk7CiAgICAgc2Nyb2xsUGFyYW1ldGVycy52ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkg
PSBzY3JvbGxhYmxlQXJlYS52ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkoKTsKICAgICBzY3JvbGxQ
YXJhbWV0ZXJzLmFsbG93c0hvcml6b250YWxTY3JvbGxpbmcgPSBzY3JvbGxhYmxlQXJlYS5hbGxv
d3NIb3Jpem9udGFsU2Nyb2xsaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvclR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvclR5cGVzLmgKaW5kZXggZWVjYWI2ZjU1
Yi4uNTY3NGRjYWU2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nQ29vcmRpbmF0b3JUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yVHlwZXMuaApAQCAtNjgsNiArNjgsOSBAQCBlbnVt
IGNsYXNzIFNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb24gewogfTsKIAogc3RydWN0IFNjcm9s
bGFibGVBcmVhUGFyYW1ldGVycyB7CisgICAgT3ZlcnNjcm9sbEJlaGF2aW9yIGhvcml6b250YWxP
dmVyc2Nyb2xsQmVoYXZpb3IgeyBPdmVyc2Nyb2xsQmVoYXZpb3I6OiBBdXRvIH07CisgICAgT3Zl
cnNjcm9sbEJlaGF2aW9yIHZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yIHsgT3ZlcnNjcm9sbEJl
aGF2aW9yOjogQXV0byB9OworCiAgICAgU2Nyb2xsRWxhc3RpY2l0eSBob3Jpem9udGFsU2Nyb2xs
RWxhc3RpY2l0eSB7IFNjcm9sbEVsYXN0aWNpdHlOb25lIH07CiAgICAgU2Nyb2xsRWxhc3RpY2l0
eSB2ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkgeyBTY3JvbGxFbGFzdGljaXR5Tm9uZSB9OwogCkBA
IC04NCw3ICs4Nyw5IEBAIHN0cnVjdCBTY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMgewogCiAgICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFNjcm9sbGFibGVBcmVhUGFyYW1ldGVycyYgb3RoZXIpIGNv
bnN0CiAgICAgewotICAgICAgICByZXR1cm4gaG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkgPT0g
b3RoZXIuaG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkKKyAgICAgICAgcmV0dXJuIGhvcml6b250
YWxPdmVyc2Nyb2xsQmVoYXZpb3IgPT0gb3RoZXIuaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlv
cgorICAgICAgICAgICAgJiYgdmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IgPT0gb3RoZXIudmVy
dGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IKKyAgICAgICAgICAgICYmIGhvcml6b250YWxTY3JvbGxF
bGFzdGljaXR5ID09IG90aGVyLmhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5CiAgICAgICAgICAg
ICAmJiB2ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkgPT0gb3RoZXIudmVydGljYWxTY3JvbGxFbGFz
dGljaXR5CiAgICAgICAgICAgICAmJiBob3Jpem9udGFsU2Nyb2xsYmFyTW9kZSA9PSBvdGhlci5o
b3Jpem9udGFsU2Nyb2xsYmFyTW9kZQogICAgICAgICAgICAgJiYgdmVydGljYWxTY3JvbGxiYXJN
b2RlID09IG90aGVyLnZlcnRpY2FsU2Nyb2xsYmFyTW9kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcAppbmRleCAxY2VmMzFiYjM2Li4wOTQ2NTFh
NzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdU
cmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVl
LmNwcApAQCAtMTc0LDEyICsxNzQsMzUgQEAgV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0IFNjcm9s
bGluZ1RyZWU6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW4KICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCitib29sIFNjcm9sbGluZ1RyZWU6OnNob3VsZEJsb2NrU2Nyb2xs
Q2hhaW5pbmdXaXRoTm9kZShjb25zdCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZSYgc2Nyb2xs
aW5nTm9kZSwgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBTY3JvbGxDaGFpbmluZ0Js
b2NrZXImIGJsb2NrZXIsIGJvb2wmIGhhbmRsZWQpCit7CisgICAgc2Nyb2xsaW5nTm9kZS51cGRh
dGVTY3JvbGxDaGFpbmluZ0Jsb2NrZXJTdGF0ZShibG9ja2VyKTsKKworICAgIEZsb2F0U2l6ZSBm
aWx0ZXJlZERlbHRhKHdoZWVsRXZlbnQuZGVsdGFYKCksIHdoZWVsRXZlbnQuZGVsdGFZKCkpOwor
ICAgIGF1dG8gYmlhc2VkRGVsdGEgPSBQbGF0Zm9ybVdoZWVsRXZlbnQ6OndoZWVsRGVsdGFCaWFz
aW5nVG93YXJkc1ZlcnRpY2FsKGZpbHRlcmVkRGVsdGEpOworICAgIGlmIChibG9ja2VyLmJsb2Nr
WCB8fCBibG9ja2VyLmJsb2NrWSkgeworICAgICAgICBpZiAoYmxvY2tlci5ibG9ja1ggJiYgIWJp
YXNlZERlbHRhLmhlaWdodCgpICYmIGJpYXNlZERlbHRhLndpZHRoKCkpIHsKKyAgICAgICAgICAg
IGhhbmRsZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9Cisg
ICAgICAgIGlmIChTY3JvbGxDaGFpbmluZ0Jsb2NrZXI6OnNob3VsZEJsb2NrU2Nyb2xsQ2hhaW5p
bmcoYmxvY2tlciwgYmlhc2VkRGVsdGEpKSB7CisgICAgICAgICAgICBoYW5kbGVkID0gdHJ1ZTsK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIFNjcm9sbENoYWlu
aW5nQmxvY2tlcjo6ZmlsdGVyRGVsdGEoYmxvY2tlciwgYmlhc2VkRGVsdGEsIGZpbHRlcmVkRGVs
dGEpOworICAgICAgICB3aGVlbEV2ZW50ID0gd2hlZWxFdmVudC5jb3B5V2l0aERlbHRhc0FuZFZl
bG9jaXR5KGZpbHRlcmVkRGVsdGEud2lkdGgoKSwgZmlsdGVyZWREZWx0YS5oZWlnaHQoKSwgd2hl
ZWxFdmVudC5zY3JvbGxpbmdWZWxvY2l0eSgpKTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCiBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQgU2Nyb2xsaW5nVHJlZTo6aGFuZGxlV2hlZWxF
dmVudFdpdGhOb2RlKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgT3B0aW9u
U2V0PFdoZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHM+IHByb2Nlc3NpbmdTdGVwcywgU2Nyb2xsaW5n
VHJlZU5vZGUqIG5vZGUsIEV2ZW50VGFyZ2V0aW5nIGV2ZW50VGFyZ2V0aW5nKQogeworICAgIFBs
YXRmb3JtV2hlZWxFdmVudCBhZGp1c3RlZFdoZWVsRXZlbnQgPSBQbGF0Zm9ybVdoZWVsRXZlbnQo
d2hlZWxFdmVudCk7CisgICAgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyIGJsb2NrZXIgPSB7IGZhbHNl
LCBmYWxzZSB9OwogICAgIHdoaWxlIChub2RlKSB7CiAgICAgICAgIGlmIChpczxTY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZT4oKm5vZGUpKSB7CiAgICAgICAgICAgICBhdXRvJiBzY3JvbGxpbmdO
b2RlID0gZG93bmNhc3Q8U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU+KCpub2RlKTsKLSAgICAg
ICAgICAgIGF1dG8gcmVzdWx0ID0gc2Nyb2xsaW5nTm9kZS5oYW5kbGVXaGVlbEV2ZW50KHdoZWVs
RXZlbnQsIGV2ZW50VGFyZ2V0aW5nKTsKKyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gc2Nyb2xs
aW5nTm9kZS5oYW5kbGVXaGVlbEV2ZW50KGFkanVzdGVkV2hlZWxFdmVudCwgZXZlbnRUYXJnZXRp
bmcpOwogCiAgICAgICAgICAgICBpZiAocmVzdWx0Lndhc0hhbmRsZWQpIHsKICAgICAgICAgICAg
ICAgICBtX2xhdGNoaW5nQ29udHJvbGxlci5ub2RlRGlkSGFuZGxlRXZlbnQoc2Nyb2xsaW5nTm9k
ZS5zY3JvbGxpbmdOb2RlSUQoKSwgcHJvY2Vzc2luZ1N0ZXBzLCB3aGVlbEV2ZW50LCBtX2FsbG93
TGF0Y2hpbmcpOwpAQCAtMTg5LDYgKzIxMiwxNiBAQCBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQg
U2Nyb2xsaW5nVHJlZTo6aGFuZGxlV2hlZWxFdmVudFdpdGhOb2RlKGNvbnN0IFBsYXRmb3JtVwog
CiAgICAgICAgICAgICBpZiAocmVzdWx0Lm5lZWRzTWFpblRocmVhZFByb2Nlc3NpbmcoKSB8fCBl
dmVudFRhcmdldGluZyAhPSBFdmVudFRhcmdldGluZzo6UHJvcGFnYXRlKQogICAgICAgICAgICAg
ICAgIHJldHVybiByZXN1bHQ7CisKKyAgICAgICAgICAgIGJvb2wgaGFuZGxlZCA9IGZhbHNlOwor
ICAgICAgICAgICAgaWYgKHNob3VsZEJsb2NrU2Nyb2xsQ2hhaW5pbmdXaXRoTm9kZShzY3JvbGxp
bmdOb2RlLCBhZGp1c3RlZFdoZWVsRXZlbnQsIGJsb2NrZXIsIGhhbmRsZWQpKSB7CisgICAgICAg
ICAgICAgICAgaWYgKCFoYW5kbGVkKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gV2hlZWxF
dmVudEhhbmRsaW5nUmVzdWx0Ojp1bmhhbmRsZWQoKTsKKworICAgICAgICAgICAgICAgIG1fbGF0
Y2hpbmdDb250cm9sbGVyLm5vZGVEaWRIYW5kbGVFdmVudChzY3JvbGxpbmdOb2RlLnNjcm9sbGlu
Z05vZGVJRCgpLCBwcm9jZXNzaW5nU3RlcHMsIHdoZWVsRXZlbnQsIG1fYWxsb3dMYXRjaGluZyk7
CisgICAgICAgICAgICAgICAgbV9nZXN0dXJlU3RhdGUubm9kZURpZEhhbmRsZUV2ZW50KHNjcm9s
bGluZ05vZGUuc2Nyb2xsaW5nTm9kZUlEKCksIHdoZWVsRXZlbnQpOworICAgICAgICAgICAgICAg
IHJldHVybiBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQ6OmhhbmRsZWQoKTsKKyAgICAgICAgICAg
IH0KICAgICAgICAgfQogCiAgICAgICAgIGlmIChpczxTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3Jv
bGxQcm94eU5vZGU+KCpub2RlKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nVHJlZS5oCmluZGV4IDgzMWY1NjZkNWIuLmZmMDFhMWI4ZTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmgKQEAgLTI3Myw3ICsyNzMs
OCBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgcmVjZWl2ZWRXaGVlbEV2
ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpIHsgfQotICAgIAorICAgIGJvb2wgc2hvdWxk
QmxvY2tTY3JvbGxDaGFpbmluZ1dpdGhOb2RlKGNvbnN0IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlJiwgUGxhdGZvcm1XaGVlbEV2ZW50JiwgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyJiwgYm9vbCYg
aGFuZGxlZCk7CisKICAgICBSZWZQdHI8U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZT4g
bV9yb290Tm9kZTsKIAogICAgIHVzaW5nIFNjcm9sbGluZ1RyZWVOb2RlTWFwID0gSGFzaE1hcDxT
Y3JvbGxpbmdOb2RlSUQsIFJlZlB0cjxTY3JvbGxpbmdUcmVlTm9kZT4+OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGUuY3BwCmluZGV4IDEzMGU3M2VkYmMuLmNkODA0MjhjMTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZS5jcHAKQEAgLTEyNSw2ICsxMjUsMjIgQEAgYm9vbCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZTo6aXNMYXRjaGVkTm9kZSgpIGNvbnN0CiAgICAgcmV0dXJuIHNjcm9sbGluZ1RyZWUoKS5s
YXRjaGVkTm9kZUlEKCkgPT0gc2Nyb2xsaW5nTm9kZUlEKCk7CiB9CiAKK092ZXJzY3JvbGxCZWhh
dmlvciBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6aG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhh
dmlvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzLmhv
cml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3I7Cit9CisKK092ZXJzY3JvbGxCZWhhdmlvciBTY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6dmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25z
dAoreworICAgIHJldHVybiBtX3Njcm9sbGFibGVBcmVhUGFyYW1ldGVycy52ZXJ0aWNhbE92ZXJz
Y3JvbGxCZWhhdmlvcjsKK30KKwordm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6dXBk
YXRlU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyU3RhdGUoU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyJiBibG9j
a2VyKSBjb25zdAoreworICAgIGJsb2NrZXIuYmxvY2tYIHw9IGhvcml6b250YWxPdmVyc2Nyb2xs
QmVoYXZpb3IoKSAhPSBPdmVyc2Nyb2xsQmVoYXZpb3I6OkF1dG87CisgICAgYmxvY2tlci5ibG9j
a1kgfD0gdmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSAhPSBPdmVyc2Nyb2xsQmVoYXZpb3I6
OkF1dG87Cit9CisKIGJvb2wgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OmNhbkhhbmRsZVdo
ZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBFdmVudFRhcmdl
dGluZyBldmVudFRhcmdldGluZykgY29uc3QKIHsKICAgICBpZiAoIWNhbkhhdmVTY3JvbGxiYXJz
KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGUuaAppbmRleCBiZTQ5ZDBiMTI1Li5iYjUxYWM4MjFjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlLmgKQEAgLTE0Miw2ICsxNDIsMTAgQEAgcHJvdGVjdGVkOgogICAgIGNv
bnN0IEZsb2F0U2l6ZSYgdG90YWxDb250ZW50c1NpemVGb3JSdWJiZXJCYW5kKCkgY29uc3QgeyBy
ZXR1cm4gbV90b3RhbENvbnRlbnRzU2l6ZUZvclJ1YmJlckJhbmQ7IH0KICAgICB2b2lkIHNldFRv
dGFsQ29udGVudHNTaXplRm9yUnViYmVyQmFuZChjb25zdCBGbG9hdFNpemUmIHRvdGFsQ29udGVu
dHNTaXplRm9yUnViYmVyQmFuZCkgeyBtX3RvdGFsQ29udGVudHNTaXplRm9yUnViYmVyQmFuZCA9
IHRvdGFsQ29udGVudHNTaXplRm9yUnViYmVyQmFuZDsgfQogCisgICAgT3ZlcnNjcm9sbEJlaGF2
aW9yIGhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdDsKKyAgICBPdmVyc2Nyb2xs
QmVoYXZpb3IgdmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdDsKKyAgICB2b2lkIHVw
ZGF0ZVNjcm9sbENoYWluaW5nQmxvY2tlclN0YXRlKFNjcm9sbENoYWluaW5nQmxvY2tlciYpIGNv
bnN0OworCiAgICAgU2Nyb2xsRWxhc3RpY2l0eSBob3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eSgp
IGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzLmhvcml6b250YWxTY3Jv
bGxFbGFzdGljaXR5OyB9CiAgICAgU2Nyb2xsRWxhc3RpY2l0eSB2ZXJ0aWNhbFNjcm9sbEVsYXN0
aWNpdHkoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGFibGVBcmVhUGFyYW1ldGVycy52ZXJ0aWNh
bFNjcm9sbEVsYXN0aWNpdHk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGVEZWxlZ2F0ZU1hYy5tbQppbmRleCBhNWI0OGMyMDM0Li40OTRiNGNjZWZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9t
YWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5tbQpAQCAtMjI3LDYgKzIy
Nyw5IEBAIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxDb250cm9sbGVyVGltZXI+IFNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OmNyCiAKIGJvb2wgU2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGVEZWxlZ2F0ZU1hYzo6YWxsb3dzSG9yaXpvbnRhbFN0cmV0Y2hpbmcoY29uc3QgUGxh
dGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50KSBjb25zdAogeworICAgIGlmIChzY3JvbGxpbmdO
b2RlKCkuaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpID09IE92ZXJzY3JvbGxCZWhhdmlv
cjo6Tm9uZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgc3dpdGNoIChob3Jpem9udGFs
U2Nyb2xsRWxhc3RpY2l0eSgpKSB7CiAgICAgY2FzZSBTY3JvbGxFbGFzdGljaXR5QXV0b21hdGlj
OiB7CiAgICAgICAgIGJvb2wgc2Nyb2xsYmFyc0FsbG93U3RyZXRjaGluZyA9IGFsbG93c0hvcml6
b250YWxTY3JvbGxpbmcoKSB8fCAhYWxsb3dzVmVydGljYWxTY3JvbGxpbmcoKTsKQEAgLTI0OSw2
ICsyNTIsOSBAQCBib29sIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OmFs
bG93c0hvcml6b250YWxTdHJldGNoaW5nKGNvbnN0IFBsYQogCiBib29sIFNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OmFsbG93c1ZlcnRpY2FsU3RyZXRjaGluZyhjb25zdCBQ
bGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpIGNvbnN0CiB7CisgICAgaWYgKHNjcm9sbGlu
Z05vZGUoKS52ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpID09IE92ZXJzY3JvbGxCZWhhdmlv
cjo6Tm9uZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgc3dpdGNoICh2ZXJ0aWNhbFNj
cm9sbEVsYXN0aWNpdHkoKSkgewogICAgIGNhc2UgU2Nyb2xsRWxhc3RpY2l0eUF1dG9tYXRpYzog
ewogICAgICAgICBib29sIHNjcm9sbGJhcnNBbGxvd1N0cmV0Y2hpbmcgPSBhbGxvd3NWZXJ0aWNh
bFNjcm9sbGluZygpIHx8ICFhbGxvd3NIb3Jpem9udGFsU2Nyb2xsaW5nKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oCmluZGV4IGQ3MTY5MzQ2YTIuLjY0
MTc5N2E2ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hl
ZWxFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVu
dC5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkZsb2F0UG9p
bnQuaCIKKyNpbmNsdWRlICJGbG9hdFNpemUuaCIKICNpbmNsdWRlICJJbnRQb2ludC5oIgogI2lu
Y2x1ZGUgIlBsYXRmb3JtRXZlbnQuaCIKICNpbmNsdWRlIDx3dGYvV2luZG93c0V4dHJhcy5oPgpA
QCAtMTc0LDYgKzE3NSw4IEBAIHB1YmxpYzoKICAgICBQbGF0Zm9ybVdoZWVsRXZlbnQoSFdORCwg
V1BBUkFNLCBMUEFSQU0sIGJvb2wgaXNNb3VzZUhXaGVlbCk7CiAjZW5kaWYKIAorICAgIHN0YXRp
YyBGbG9hdFNpemUgd2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoY29uc3QgRmxvYXRT
aXplJik7CisKIHByb3RlY3RlZDoKICAgICBQbGF0Zm9ybVdoZWVsRXZlbnRHcmFudWxhcml0eSBt
X2dyYW51bGFyaXR5IHsgU2Nyb2xsQnlQaXhlbFdoZWVsRXZlbnQgfTsKICAgICBib29sIG1fZGly
ZWN0aW9uSW52ZXJ0ZWRGcm9tRGV2aWNlIHsgZmFsc2UgfTsKQEAgLTI2NCw2ICsyNjcsMTkgQEAg
aW5saW5lIEZsb2F0UG9pbnQgUGxhdGZvcm1XaGVlbEV2ZW50Ojpzd2lwZVZlbG9jaXR5KCkgY29u
c3QKIAogI2VuZGlmIC8vIEVOQUJMRShLSU5FVElDX1NDUk9MTElORykKIAoraW5saW5lIEZsb2F0
U2l6ZSBQbGF0Zm9ybVdoZWVsRXZlbnQ6OndoZWVsRGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRpY2Fs
KGNvbnN0IEZsb2F0U2l6ZSYgZGVsdGEpCit7CisgICAgYXV0byBkZWx0YVggPSBkZWx0YS53aWR0
aCgpOworICAgIGF1dG8gZGVsdGFZID0gZGVsdGEuaGVpZ2h0KCk7CisKKyAgICBpZiAoZmFic2Yo
ZGVsdGFZKSA+PSBmYWJzZihkZWx0YVgpKQorICAgICAgICBkZWx0YVggPSAwOworICAgIGVsc2UK
KyAgICAgICAgZGVsdGFZID0gMDsKKworICAgIHJldHVybiB7IGRlbHRhWCwgZGVsdGFZIH07Cit9
CisKIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRT
dHJlYW0mLCBjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKTsKIFdFQkNPUkVfRVhQT1JUIFdURjo6
VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBXaGVlbEV2ZW50UHJvY2Vz
c2luZ1N0ZXBzKTsKIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChX
VEY6OlRleHRTdHJlYW0mLCBFdmVudEhhbmRsaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbFR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxUeXBlcy5oCmluZGV4IDBiMWM0MDU2M2UuLjJmMDc4ZDQxNDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFR5cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsVHlwZXMuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNp
bmNsdWRlICJGbG9hdFBvaW50LmgiCisjaW5jbHVkZSAiRmxvYXRTaXplLmgiCiAjaW5jbHVkZSAi
SW50UG9pbnQuaCIKICNpbmNsdWRlIDxjc3RkaW50PgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25z
Lmg+CkBAIC0yNTksNiArMjYwLDQxIEBAIGVudW0gY2xhc3MgU2Nyb2xsU25hcFBvaW50U2VsZWN0
aW9uTWV0aG9kIDogdWludDhfdCB7CiAgICAgQ2xvc2VzdCwKIH07CiAKK3N0cnVjdCBTY3JvbGxD
aGFpbmluZ0Jsb2NrZXIgeworICAgIGJvb2wgYmxvY2tYIHsgZmFsc2UgfTsKKyAgICBib29sIGJs
b2NrWSB7IGZhbHNlIH07CisKKyAgICBzdGF0aWMgYm9vbCBzaG91bGRCbG9ja0hvcml6b250YWxT
Y3JvbGxDaGFpbmluZyhjb25zdCBTY3JvbGxDaGFpbmluZ0Jsb2NrZXImIGJsb2NrZXIsIGNvbnN0
IEZsb2F0U2l6ZSYgYmlhc2VkRGVsdGEpCisgICAgeworICAgICAgICBpZiAoYmxvY2tlci5ibG9j
a1ggJiYgIWJpYXNlZERlbHRhLmhlaWdodCgpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBzaG91bGRCbG9j
a1Njcm9sbENoYWluaW5nKGNvbnN0IFNjcm9sbENoYWluaW5nQmxvY2tlciYgYmxvY2tlciwgY29u
c3QgRmxvYXRTaXplJiBiaWFzZWREZWx0YSkKKyAgICB7CisgICAgICAgIGlmICgoYmxvY2tlci5i
bG9ja1ggJiYgYmxvY2tlci5ibG9ja1kpCisgICAgICAgICAgICB8fCAoYmxvY2tlci5ibG9ja1gg
JiYgIWJpYXNlZERlbHRhLmhlaWdodCgpKQorICAgICAgICAgICAgfHwgKGJsb2NrZXIuYmxvY2tZ
ICYmICFiaWFzZWREZWx0YS53aWR0aCgpKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgZmlsdGVyRGVsdGEo
Y29uc3QgU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyJiBibG9ja2VyLCBjb25zdCBGbG9hdFNpemUmIGJp
YXNlZERlbHRhLCBGbG9hdFNpemUmIGZpbHRlcmVkRGVsdGEpCisgICAgeworICAgICAgICBpZiAo
YmxvY2tlci5ibG9ja1gpIHsKKyAgICAgICAgICAgIGZpbHRlcmVkRGVsdGEuc2V0V2lkdGgoMCk7
CisgICAgICAgICAgICBpZiAoIWJpYXNlZERlbHRhLmhlaWdodCgpKQorICAgICAgICAgICAgICAg
IGZpbHRlcmVkRGVsdGEuc2V0SGVpZ2h0KDApOworICAgICAgICB9CisgICAgICAgIGlmIChibG9j
a2VyLmJsb2NrWSkgeworICAgICAgICAgICAgZmlsdGVyZWREZWx0YS5zZXRIZWlnaHQoMCk7Cisg
ICAgICAgICAgICBpZiAoIWJpYXNlZERlbHRhLndpZHRoKCkpCisgICAgICAgICAgICAgICAgZmls
dGVyZWREZWx0YS5zZXRXaWR0aCgwKTsKKyAgICAgICAgfQorICAgIH0KK307CisKIHVzaW5nIFNj
cm9sbGJhckNvbnRyb2xTdGF0ZSA9IHVuc2lnbmVkOwogdXNpbmcgU2Nyb2xsYmFyQ29udHJvbFBh
cnRNYXNrID0gdW5zaWduZWQ7CiB1c2luZyBTY3JvbGxpbmdOb2RlSUQgPSB1aW50NjRfdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcAppbmRleCA3OWY5ZTk4MDk4
Li5mMDViY2Y1MWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxh
YmxlQXJlYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEu
Y3BwCkBAIC04MDMsNiArODAzLDEyIEBAIHZvaWQgU2Nyb2xsYWJsZUFyZWE6OmNvbXB1dGVTY3Jv
bGxiYXJWYWx1ZUFuZE92ZXJoYW5nKGZsb2F0IGN1cnJlbnRQb3NpdGlvbiwgZmxvCiAgICAgfQog
fQogCit2b2lkIFNjcm9sbGFibGVBcmVhOjpnZXRTY3JvbGxDaGFpbmluZ0Jsb2NrZXIoU2Nyb2xs
Q2hhaW5pbmdCbG9ja2VyJiBibG9ja2VyKSBjb25zdAoreworICAgIGJsb2NrZXIuYmxvY2tYIHw9
IGhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSAhPSBPdmVyc2Nyb2xsQmVoYXZpb3I6OkF1
dG87CisgICAgYmxvY2tlci5ibG9ja1kgfD0gdmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSAh
PSBPdmVyc2Nyb2xsQmVoYXZpb3I6OkF1dG87Cit9CisKIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwo
VGV4dFN0cmVhbSYgdHMsIGNvbnN0IFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSkKIHsK
ICAgICB0cyA8PCBzY3JvbGxhYmxlQXJlYS5kZWJ1Z0Rlc2NyaXB0aW9uKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaAppbmRleCA3ZWI3YjU0MDI4Li42YjgzNmY0ODQx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgKQEAgLTExOSw2ICsx
MTksMTAgQEAgcHVibGljOgogICAgIGJvb2wgY29uc3RyYWluc1Njcm9sbGluZ1RvQ29udGVudEVk
Z2UoKSBjb25zdCB7IHJldHVybiBtX2NvbnN0cmFpbnNTY3JvbGxpbmdUb0NvbnRlbnRFZGdlOyB9
CiAgICAgdm9pZCBzZXRDb25zdHJhaW5zU2Nyb2xsaW5nVG9Db250ZW50RWRnZShib29sIGNvbnN0
cmFpbnNTY3JvbGxpbmdUb0NvbnRlbnRFZGdlKSB7IG1fY29uc3RyYWluc1Njcm9sbGluZ1RvQ29u
dGVudEVkZ2UgPSBjb25zdHJhaW5zU2Nyb2xsaW5nVG9Db250ZW50RWRnZTsgfQogCisgICAgdmly
dHVhbCBPdmVyc2Nyb2xsQmVoYXZpb3IgaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpIGNv
bnN0IHsgcmV0dXJuIE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0bzsgfQorICAgIHZpcnR1YWwgT3Zl
cnNjcm9sbEJlaGF2aW9yIHZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29uc3QgeyByZXR1
cm4gT3ZlcnNjcm9sbEJlaGF2aW9yOjpBdXRvOyB9CisgICAgdm9pZCBnZXRTY3JvbGxDaGFpbmlu
Z0Jsb2NrZXIoU2Nyb2xsQ2hhaW5pbmdCbG9ja2VyJikgY29uc3Q7CisKICAgICB2b2lkIHNldFZl
cnRpY2FsU2Nyb2xsRWxhc3RpY2l0eShTY3JvbGxFbGFzdGljaXR5IHNjcm9sbEVsYXN0aWNpdHkp
IHsgbV92ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkgPSBzY3JvbGxFbGFzdGljaXR5OyB9CiAgICAg
U2Nyb2xsRWxhc3RpY2l0eSB2ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxTY3JvbGxFbGFzdGljaXR5PihtX3ZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0
eSk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFu
aW1hdG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9y
TWFjLm1tCmluZGV4IGMwOTVjZDY2ZjUuLmIzZDFhZjM4NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0KQEAgLTEyMjgsOSArMTIyOCw5
IEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3JNYWM6OmhhbmRsZVdoZWVsRXZlbnRQaGFzZShQbGF0Zm9y
bVdoZWVsRXZlbnRQaGFzZSBwaGFzZSkKIGJvb2wgU2Nyb2xsQW5pbWF0b3JNYWM6OnNob3VsZEZv
cndhcmRXaGVlbEV2ZW50c1RvUGFyZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxF
dmVudCkgY29uc3QKIHsKICAgICBpZiAoc3RkOjphYnMod2hlZWxFdmVudC5kZWx0YVkoKSkgPj0g
c3RkOjphYnMod2hlZWxFdmVudC5kZWx0YVgoKSkpCi0gICAgICAgIHJldHVybiAhYWxsb3dzVmVy
dGljYWxTdHJldGNoaW5nKHdoZWVsRXZlbnQpOworICAgICAgICByZXR1cm4gbV9zY3JvbGxhYmxl
QXJlYS52ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpID09IE92ZXJzY3JvbGxCZWhhdmlvcjo6
QXV0byAmJiAhYWxsb3dzVmVydGljYWxTdHJldGNoaW5nKHdoZWVsRXZlbnQpOwogCi0gICAgcmV0
dXJuICFhbGxvd3NIb3Jpem9udGFsU3RyZXRjaGluZyh3aGVlbEV2ZW50KTsKKyAgICByZXR1cm4g
bV9zY3JvbGxhYmxlQXJlYS5ob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgPT0gT3ZlcnNj
cm9sbEJlaGF2aW9yOjpBdXRvICYmICFhbGxvd3NIb3Jpem9udGFsU3RyZXRjaGluZyh3aGVlbEV2
ZW50KTsKIH0KICAgICAKIGJvb2wgU2Nyb2xsQW5pbWF0b3JNYWM6OmhhbmRsZVdoZWVsRXZlbnQo
Y29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50KQpAQCAtMTI5NSw2ICsxMjk1LDkg
QEAgc3RhdGljIGJvb2wgZ2VzdHVyZVNob3VsZEJlZ2luU25hcChjb25zdCBQbGF0Zm9ybVdoZWVs
RXZlbnQmIHdoZWVsRXZlbnQsIFNjcm9sbEUKIAogYm9vbCBTY3JvbGxBbmltYXRvck1hYzo6YWxs
b3dzVmVydGljYWxTdHJldGNoaW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVu
dCkgY29uc3QKIHsKKyAgICBpZiAobV9zY3JvbGxhYmxlQXJlYS52ZXJ0aWNhbE92ZXJzY3JvbGxC
ZWhhdmlvcigpID09IE92ZXJzY3JvbGxCZWhhdmlvcjo6Tm9uZSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCiAgICAgc3dpdGNoIChtX3Njcm9sbGFibGVBcmVhLnZlcnRpY2FsU2Nyb2xsRWxhc3Rp
Y2l0eSgpKSB7CiAgICAgY2FzZSBTY3JvbGxFbGFzdGljaXR5QXV0b21hdGljOiB7CiAgICAgICAg
IFNjcm9sbGJhciogaFNjcm9sbGVyID0gbV9zY3JvbGxhYmxlQXJlYS5ob3Jpem9udGFsU2Nyb2xs
YmFyKCk7CkBAIC0xMzE5LDYgKzEzMjIsOSBAQCBib29sIFNjcm9sbEFuaW1hdG9yTWFjOjphbGxv
d3NWZXJ0aWNhbFN0cmV0Y2hpbmcoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbAogCiBi
b29sIFNjcm9sbEFuaW1hdG9yTWFjOjphbGxvd3NIb3Jpem9udGFsU3RyZXRjaGluZyhjb25zdCBQ
bGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpIGNvbnN0CiB7CisgICAgaWYgKG1fc2Nyb2xs
YWJsZUFyZWEuaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpID09IE92ZXJzY3JvbGxCZWhh
dmlvcjo6Tm9uZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgc3dpdGNoIChtX3Njcm9s
bGFibGVBcmVhLmhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5KCkpIHsKICAgICBjYXNlIFNjcm9s
bEVsYXN0aWNpdHlBdXRvbWF0aWM6IHsKICAgICAgICAgU2Nyb2xsYmFyKiBoU2Nyb2xsZXIgPSBt
X3Njcm9sbGFibGVBcmVhLmhvcml6b250YWxTY3JvbGxiYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1Njcm9sbENvbnRyb2xsZXIubW0KaW5kZXggMGRlODFlMDZmNi4uNjM0
ZmI3OTBlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbENv
bnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbENvbnRy
b2xsZXIubW0KQEAgLTMxMywxOSArMzEzLDYgQEAgYm9vbCBTY3JvbGxDb250cm9sbGVyOjpoYW5k
bGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCkKICAgICBy
ZXR1cm4gaGFuZGxlZDsKIH0KIAotRmxvYXRTaXplIFNjcm9sbENvbnRyb2xsZXI6OndoZWVsRGVs
dGFCaWFzaW5nVG93YXJkc1ZlcnRpY2FsKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxF
dmVudCkKLXsKLSAgICBhdXRvIGRlbHRhWCA9IHdoZWVsRXZlbnQuZGVsdGFYKCk7Ci0gICAgYXV0
byBkZWx0YVkgPSB3aGVlbEV2ZW50LmRlbHRhWSgpOwotCi0gICAgaWYgKGZhYnNmKGRlbHRhWSkg
Pj0gZmFic2YoZGVsdGFYKSkKLSAgICAgICAgZGVsdGFYID0gMDsKLSAgICBlbHNlCi0gICAgICAg
IGRlbHRhWSA9IDA7Ci0KLSAgICByZXR1cm4geyBkZWx0YVgsIGRlbHRhWSB9OwotfQotCiBPcHRp
b25hbDxTY3JvbGxEaXJlY3Rpb24+IFNjcm9sbENvbnRyb2xsZXI6OmRpcmVjdGlvbkZyb21FdmVu
dChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIE9wdGlvbmFsPFNjcm9sbEV2
ZW50QXhpcz4gYXhpcywgV2hlZWxBeGlzQmlhcyBiaWFzKQogewogICAgIC8vIEZJWE1FOiBJdCdz
IGltcG9zc2libGUgdG8gaW5mZXIgZGlyZWN0aW9uIGZyb20gYSBzaW5nbGUgZXZlbnQsIHNpbmNl
IHRoZSBzdGFydCBvZiBhIGdlc3R1cmUgaXMgZWl0aGVyIHplcm8gb3IKQEAgLTMzMyw3ICszMjAs
NyBAQCBPcHRpb25hbDxTY3JvbGxEaXJlY3Rpb24+IFNjcm9sbENvbnRyb2xsZXI6OmRpcmVjdGlv
bkZyb21FdmVudChjb25zdCBQbGF0Zm9ybVdoZQogCiAgICAgYXV0byB3aGVlbERlbHRhID0gRmxv
YXRTaXplIHsgd2hlZWxFdmVudC5kZWx0YVgoKSwgd2hlZWxFdmVudC5kZWx0YVkoKSB9OwogICAg
IGlmIChiaWFzID09IFdoZWVsQXhpc0JpYXM6OlZlcnRpY2FsKQotICAgICAgICB3aGVlbERlbHRh
ID0gd2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwod2hlZWxFdmVudCk7CisgICAgICAg
IHdoZWVsRGVsdGEgPSBQbGF0Zm9ybVdoZWVsRXZlbnQ6OndoZWVsRGVsdGFCaWFzaW5nVG93YXJk
c1ZlcnRpY2FsKHdoZWVsRXZlbnQuZGVsdGEoKSk7CiAKICAgICBpZiAoYXhpcykgewogICAgICAg
ICBzd2l0Y2ggKGF4aXMudmFsdWUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAppbmRleCAxYTE4MzVhNTU2Li4yY2IwZGFmMjlj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3Np
dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3Np
dG9yLmNwcApAQCAtMTYwNyw2ICsxNjA3LDggQEAgc3RhdGljIGJvb2wgcmVjb21wb3NpdGVDaGFu
Z2VSZXF1aXJlc0dlb21ldHJ5VXBkYXRlKGNvbnN0IFJlbmRlclN0eWxlJiBvbGRTdHlsZSwKICAg
ICAgICAgfHwgb2xkU3R5bGUucGVyc3BlY3RpdmVPcmlnaW5YKCkgIT0gbmV3U3R5bGUucGVyc3Bl
Y3RpdmVPcmlnaW5YKCkKICAgICAgICAgfHwgb2xkU3R5bGUucGVyc3BlY3RpdmVPcmlnaW5ZKCkg
IT0gbmV3U3R5bGUucGVyc3BlY3RpdmVPcmlnaW5ZKCkKICAgICAgICAgfHwgb2xkU3R5bGUuYmFj
a2ZhY2VWaXNpYmlsaXR5KCkgIT0gbmV3U3R5bGUuYmFja2ZhY2VWaXNpYmlsaXR5KCkKKyAgICAg
ICAgfHwgb2xkU3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWCgpICE9IG5ld1N0eWxlLm92ZXJzY3Jv
bGxCZWhhdmlvclgoKQorICAgICAgICB8fCBvbGRTdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JZKCkg
IT0gbmV3U3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWSgpCiAgICAgICAgIHx8ICFhcmVQb2ludGlu
Z1RvRXF1YWxEYXRhKG9sZFN0eWxlLmNsaXBQYXRoKCksIG5ld1N0eWxlLmNsaXBQYXRoKCkpOwog
fQogCkBAIC0zOTQzLDYgKzM5NDUsMTEgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJv
b3RPckJvZHlTdHlsZUNoYW5nZWQoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnMKICAgICBi
b29sIGhhZEZpeGVkQmFja2dyb3VuZCA9IG9sZFN0eWxlICYmIG9sZFN0eWxlLT5oYXNFbnRpcmVs
eUZpeGVkQmFja2dyb3VuZCgpOwogICAgIGlmIChoYWRGaXhlZEJhY2tncm91bmQgIT0gcmVuZGVy
ZXIuc3R5bGUoKS5oYXNFbnRpcmVseUZpeGVkQmFja2dyb3VuZCgpKQogICAgICAgICByb290TGF5
ZXJDb25maWd1cmF0aW9uQ2hhbmdlZCgpOworCisgICAgaWYgKG9sZFN0eWxlICYmIChvbGRTdHls
ZS0+b3ZlcnNjcm9sbEJlaGF2aW9yWCgpICE9IHJlbmRlcmVyLnN0eWxlKCkub3ZlcnNjcm9sbEJl
aGF2aW9yWCgpIHx8IG9sZFN0eWxlLT5vdmVyc2Nyb2xsQmVoYXZpb3JZKCkgIT0gcmVuZGVyZXIu
c3R5bGUoKS5vdmVyc2Nyb2xsQmVoYXZpb3JZKCkpKSB7CisgICAgICAgIGlmIChhdXRvKiBsYXll
ciA9IG1fcmVuZGVyVmlldy5sYXllcigpKQorICAgICAgICAgICAgbGF5ZXItPnNldE5lZWRzQ29t
cG9zaXRpbmdHZW9tZXRyeVVwZGF0ZSgpOworICAgIH0KIH0KIAogdm9pZCBSZW5kZXJMYXllckNv
bXBvc2l0b3I6OnJvb3RCYWNrZ3JvdW5kQ29sb3JPclRyYW5zcGFyZW5jeUNoYW5nZWQoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFy
ZWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFy
ZWEuY3BwCmluZGV4IGI2YjdhYjBhMjEuLmYxZTkwNzVkNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5jcHAKQEAgLTE4
MTYsNCArMTgxNiwyMCBAQCBTdHJpbmcgUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6ZGVidWdE
ZXNjcmlwdGlvbigpIGNvbnN0CiAgICAgcmV0dXJuIG1fbGF5ZXIuZGVidWdEZXNjcmlwdGlvbigp
OwogfQogCitPdmVyc2Nyb2xsQmVoYXZpb3IgUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6aG9y
aXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpIGNvbnN0Cit7CisgICAgLy8gQW4gZWxlbWVudCB0
aGF0IGlzIG5vdCBzY3JvbGwgY29udGFpbmVyIG11c3QgYWNjZXB0IGJ1dCBpZ25vcmUgdGhlIHZh
bHVlcyBvZiB0aGlzIHByb3BlcnR5LgorICAgIGlmIChtX2xheWVyLnJlbmRlckJveCgpICYmIG1f
bGF5ZXIucmVuZGVyQm94KCktPmNhbkJlU2Nyb2xsZWRBbmRIYXNTY3JvbGxhYmxlQXJlYSgpKQor
ICAgICAgICByZXR1cm4gbV9sYXllci5yZW5kZXJlcigpLnN0eWxlKCkub3ZlcnNjcm9sbEJlaGF2
aW9yWCgpOworICAgIHJldHVybiBTY3JvbGxhYmxlQXJlYTo6aG9yaXpvbnRhbE92ZXJzY3JvbGxC
ZWhhdmlvcigpOworfQorCitPdmVyc2Nyb2xsQmVoYXZpb3IgUmVuZGVyTGF5ZXJTY3JvbGxhYmxl
QXJlYTo6dmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdAoreworICAgIC8vIEFuIGVs
ZW1lbnQgdGhhdCBpcyBub3Qgc2Nyb2xsIGNvbnRhaW5lciBtdXN0IGFjY2VwdCBidXQgaWdub3Jl
IHRoZSB2YWx1ZXMgb2YgdGhpcyBwcm9wZXJ0eS4KKyAgICBpZiAobV9sYXllci5yZW5kZXJCb3go
KSAmJiBtX2xheWVyLnJlbmRlckJveCgpLT5jYW5CZVNjcm9sbGVkQW5kSGFzU2Nyb2xsYWJsZUFy
ZWEoKSkKKyAgICAgICAgcmV0dXJuIG1fbGF5ZXIucmVuZGVyZXIoKS5zdHlsZSgpLm92ZXJzY3Jv
bGxCZWhhdmlvclkoKTsKKyAgICByZXR1cm4gU2Nyb2xsYWJsZUFyZWE6OnZlcnRpY2FsT3ZlcnNj
cm9sbEJlaGF2aW9yKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5oCmluZGV4
IGRlMjZiMzA0ODkuLjUzOGE3OTRjMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuaApAQCAtMTI5LDYgKzEyOSw5IEBAIHB1
YmxpYzoKIAogICAgIGJvb2wgc2Nyb2xsKFNjcm9sbERpcmVjdGlvbiwgU2Nyb2xsR3JhbnVsYXJp
dHksIGZsb2F0IG11bHRpcGxpZXIgPSAxKTsKIAorICAgIE92ZXJzY3JvbGxCZWhhdmlvciBob3Jp
em9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29uc3QgZmluYWw7CisgICAgT3ZlcnNjcm9sbEJl
aGF2aW9yIHZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29uc3QgZmluYWw7CisKIHB1Ymxp
YzoKICAgICAvLyBBbGwgbWV0aG9kcyBpbiB0aGlzIHNlY3Rpb24gb3ZlcnJpZGUgU2Nyb2xsYWJs
ZWFBcmVhIG1ldGhvZHMgKGZpbmFsKS4KICAgICB2b2lkIGF2YWlsYWJsZUNvbnRlbnRTaXplQ2hh
bmdlZChBdmFpbGFibGVTaXplQ2hhbmdlUmVhc29uKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCmluZGV4IGRmZjYyNDMzOTUuLjkxMzAy
MzRjMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
LmNwcApAQCAtMTE3NSw3ICsxMTc1LDkgQEAgYm9vbCBSZW5kZXJTdHlsZTo6Y2hhbmdlUmVxdWly
ZXNSZWNvbXBvc2l0ZUxheWVyKGNvbnN0IFJlbmRlclN0eWxlJiBvdGhlciwgT3B0aW8KICAgICAg
ICAgICAgIHx8IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmJhY2tmYWNlVmlzaWJpbGl0eSAhPSBv
dGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5iYWNrZmFjZVZpc2liaWxpdHkKICAgICAgICAg
ICAgIHx8IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnBlcnNwZWN0aXZlICE9IG90aGVyLm1fcmFy
ZU5vbkluaGVyaXRlZERhdGEtPnBlcnNwZWN0aXZlCiAgICAgICAgICAgICB8fCBtX3JhcmVOb25J
bmhlcml0ZWREYXRhLT5wZXJzcGVjdGl2ZU9yaWdpblggIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+cGVyc3BlY3RpdmVPcmlnaW5YCi0gICAgICAgICAgICB8fCBtX3JhcmVOb25Jbmhl
cml0ZWREYXRhLT5wZXJzcGVjdGl2ZU9yaWdpblkgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVk
RGF0YS0+cGVyc3BlY3RpdmVPcmlnaW5ZKQorICAgICAgICAgICAgfHwgbV9yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+cGVyc3BlY3RpdmVPcmlnaW5ZICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERh
dGEtPnBlcnNwZWN0aXZlT3JpZ2luWQorICAgICAgICAgICAgfHwgbV9yYXJlTm9uSW5oZXJpdGVk
RGF0YS0+b3ZlcnNjcm9sbEJlaGF2aW9yWCAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRh
LT5vdmVyc2Nyb2xsQmVoYXZpb3JYCisgICAgICAgICAgICB8fCBtX3JhcmVOb25Jbmhlcml0ZWRE
YXRhLT5vdmVyc2Nyb2xsQmVoYXZpb3JZICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEt
Pm92ZXJzY3JvbGxCZWhhdmlvclkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggMWY1ZDk3MzNkNi4uZTI0NmIxZjYzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NyBAQAorMjAyMS0wMy0xNSAgQ2F0aGllIENoZW4gIDxjYXRoaWVjaGVuQGlnYWxpYS5jb20+CisK
KyAgICAgICAgSW1wbGVtZW50IENTUyBvdmVyc2Nyb2xsLWJlaGF2aW9yIGZvciBhc3luY2hyb25v
dXMgc2Nyb2xsIG9uIE1hYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjIwMTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgRW5jb2RlIGFuZCBkZWNvZGUgb3ZlcnNjcm9sbEJlaGF2aW9yIHRoZSB2YWx1ZXMg
b2YgU2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzLgorCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8U2Nyb2xsYWJs
ZUFyZWFQYXJhbWV0ZXJzPjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxT
Y3JvbGxhYmxlQXJlYVBhcmFtZXRlcnM+OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuaDoKKwogMjAyMS0wMy0xNSAgS2ltbW8gS2lubnVuZW4gIDxra2lu
bnVuZW5AYXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgdmVydGV4IGFycmF5IGZ1bmN0aW9uYWxp
dHkgZnJvbSBFeHRlbnNpb25zR0wgdG8gR3JhcGhpY3NDb250ZXh0R0wKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDM4ZGQ5ZDMxZTYuLmMx
NTA1MDZiZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmNwcApAQCAtMjAwMCw2ICsyMDAwLDkgQEAgYm9vbCBBcmd1bWVudENvZGVyPFVzZXJTdHls
ZVNoZWV0Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFVzZXJTdHlsZVNoZWV0JiB1c2UKIAog
dm9pZCBBcmd1bWVudENvZGVyPFNjcm9sbGFibGVBcmVhUGFyYW1ldGVycz46OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyLCBjb25zdCBTY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMp
CiB7CisgICAgZW5jb2RlciA8PCBwYXJhbWV0ZXJzLmhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZp
b3I7CisgICAgZW5jb2RlciA8PCBwYXJhbWV0ZXJzLnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9y
OworCiAgICAgZW5jb2RlciA8PCBwYXJhbWV0ZXJzLmhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5
OwogICAgIGVuY29kZXIgPDwgcGFyYW1ldGVycy52ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHk7CiAK
QEAgLTIwMTcsNiArMjAyMCwxMSBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8U2Nyb2xsYWJsZUFyZWFQ
YXJhbWV0ZXJzPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNjcgogCiBib29sIEFy
Z3VtZW50Q29kZXI8U2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzPjo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIsIFNjcm9sbGFibGVBcmVhUGFyYW1ldGVycyYgcGFyYW1zKQogeworICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocGFyYW1zLmhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbXMudmVydGljYWxP
dmVyc2Nyb2xsQmVoYXZpb3IpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHBhcmFtcy5ob3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eSkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtcy52ZXJ0aWNhbFNj
cm9sbEVsYXN0aWNpdHkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuaAppbmRleCA5MjhkYTc1NjBjLi5iYWNlZjE1M2E4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1
ZGUgPFdlYkNvcmUvUmVhbHRpbWVNZWRpYVNvdXJjZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVu
ZGVyaW5nTW9kZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxUeXBlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Vy
aWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNl
V29ya2VyVHlwZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1N0b3JlZENyZWRlbnRpYWxzUG9saWN5
Lmg+CkBAIC04NDgsNiArODQ5LDE1IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8+IHsKIAogbmFtZXNwYWNlIFdU
RiB7CiAKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6T3ZlcnNjcm9sbEJl
aGF2aW9yPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICBXZWJDb3JlOjpP
dmVyc2Nyb2xsQmVoYXZpb3IsCisgICAgV2ViQ29yZTo6T3ZlcnNjcm9sbEJlaGF2aW9yOjpBdXRv
LAorICAgIFdlYkNvcmU6Ok92ZXJzY3JvbGxCZWhhdmlvcjo6Q29udGFpbiwKKyAgICBXZWJDb3Jl
OjpPdmVyc2Nyb2xsQmVoYXZpb3I6Ok5vbmUKKyAgICA+OworfTsKKwogdGVtcGxhdGU8PiBzdHJ1
Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpSZW5kZXJpbmdNb2RlPiB7CiAgICAgdXNpbmcgdmFsdWVz
ID0gRW51bVZhbHVlczwKICAgICAgICAgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZwppbmRleCBjNzdjMGYyODYzLi5iNTdkYTQxZjIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEtMDMtMTUgIENhdGhpZSBD
aGVuICA8Y2F0aGllY2hlbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFN1cHBvcnQgQ1NTIG92ZXJz
Y3JvbGwtYmVoYXZpb3IgZm9yIHN5bmNocm9ub3VzIHNjcm9sbAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyOTY4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmFzZWQgb24gRnLDqWTDqXJpYyBXYW5nJ3Mg
cGF0Y2guCisKKyAgICAgICAgTmVlZCB0byBmaW5kIGEgd2F5IHRvIGJsb2NrIHRoZSBjcm9zcy1m
cmFtZSBzY3JvbGwgY2hhaW5pbmcgaW4gV0sxLgorCisgICAgICAgICogV2ViVmlldy9XZWJIVE1M
Vmlldy5tbToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgc2Nyb2xsV2hlZWw6XSk6CisKIDIwMjEt
MDMtMTEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBJbnRyb2R1
Y2UgV29ya1F1ZXVlOjptYWluKCkgdG8gZ2V0IHRoZSBtYWluIHRocmVhZCdzIHdvcmsgcXVldWUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4
IDJiOGEyODIwZjguLjkzMjQ4NzA5MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJIVE1MVmlldy5tbQpAQCAtNDA4Niw2ICs0MDg2LDggQEAgc3RhdGljIEJPT0wg
Y3VycmVudFNjcm9sbElzQmxpdChOU1ZpZXcgKmNsaXBWaWV3KQogICAgIGF1dG8qIGZyYW1lID0g
Y29yZShbc2VsZiBfZnJhbWVdKTsKICAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+ZXZlbnRIYW5k
bGVyKCkud2hlZWxFdmVudChldmVudCkpIHsKICNpZiBQTEFURk9STShNQUMpCisgICAgICAgIC8v
IEZJWE1FOiBOZWVkIHRvIGZpbmQgYSB3YXkgdG8gYmxvY2sgdGhlIGNyb3NzLWZyYW1lIHNjcm9s
bCBjaGFpbmluZyBpbiBXSzEuCisgICAgICAgIC8vIFdlIGNhbiBub3QganVzdCBza2lwIHRoZSBz
Y3JvbGwgaGVyZSwgaXQgbm90IG9ubHkgYmxvY2tzIHNjcm9sbCBjaGFpbmluZyBidXQgYWxzbyBi
bG9ja3MgdGhlIHNjcm9sbCBvbiBjdXJyZW50IHZpZXcuCiAgICAgICAgIFtzdXBlciBzY3JvbGxX
aGVlbDpldmVudF07CiAjZW5kaWYKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444598</attachid>
            <date>2021-11-17 16:26:37 -0800</date>
            <delta_ts>2021-11-30 23:22:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220139-20211117162636.patch</filename>
            <type>text/plain</type>
            <size>18859</size>
            <attacher name="Nikos Mouchtaris">nmouchtaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1OTA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODUyNDdhYmQ5N2Y0MDY5
ZjE0NTg4NGY4MjA0NGQ1N2YxNTlmMTkxMC4uMTg0MjNmMTBjMjhmNmZiMjU2NTRkYzM2MmMwNjhh
NDQzNWRlOGZjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIxLTExLTE3ICBOaWtv
bGFvcyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxl
bWVudCBDU1Mgb3ZlcnNjcm9sbC1iZWhhdmlvciBmb3IgYXN5bmNocm9ub3VzIHNjcm9sbCBvbiBN
YWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDEz
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Rz
OiBmYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFi
bGUtZWxlbWVudC5odG1sCisgICAgICAgICAgICAgICBmYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMt
b3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLmh0bWwKKyAgICAgICAgICAg
ICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1vdmVyc2Nyb2xsLWJl
aGF2aW9yL292ZXJzY3JvbGwtYmVoYXZpb3IuaHRtbAorCisgICAgICAgICogcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nVHJlZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlOjpz
aG91bGRCbG9ja1Njcm9sbENoYWluaW5nV2l0aE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsaW5nVHJlZTo6aGFuZGxlV2hlZWxFdmVudFdpdGhOb2RlKToKKyAgICAgICAgKiBwYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdUcmVlLmg6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGUuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9tYWMvU2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OmFsbG93c0hvcml6b250YWxT
dHJldGNoaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlRGVsZWdhdGVNYWM6OmFsbG93c1ZlcnRpY2FsU3RyZXRjaGluZyBjb25zdCk6CisKIDIw
MjEtMTEtMTYgIE5pa29sYW9zIE1vdWNodGFyaXMgIDxubW91Y2h0YXJpc0BhcHBsZS5jb20+CiAK
ICAgICAgICAgUmVuYW1lIFRleHREZWNvcmF0aW9uIHRvIFRleHREZWNvcmF0aW9uTGluZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcAppbmRleCBj
YThmMWI0MWJkYjA2NmJlY2MyZWVhYTMyYWJlODJkNmQwY2IwYzgxLi5kODcxYzhmZDg5MjNhZjYy
MWFjODY3OWM4MWY4NDIxNjFiYjJiNzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkV2
ZW50TmFtZXMuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1XaGVl
bEV2ZW50LmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuaCIKICNpbmNs
dWRlICJTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZS5oIgogI2luY2x1ZGUgIlNjcm9s
bGluZ1N0YXRlVHJlZS5oIgogI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05v
ZGUuaCIKQEAgLTE4MCwxMiArMTgxLDMzIEBAIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdCBTY3Jv
bGxpbmdUcmVlOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVuCiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIAorYm9vbCBTY3JvbGxpbmdUcmVlOjpzaG91bGRCbG9ja1Njcm9s
bENoYWluaW5nV2l0aE5vZGUoY29uc3QgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUmIHNjcm9s
bGluZ05vZGUsIFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgYm9vbCYgaGFuZGxlZCkK
K3sKKyAgICBGbG9hdFNpemUgZmlsdGVyZWREZWx0YSh3aGVlbEV2ZW50LmRlbHRhWCgpLCB3aGVl
bEV2ZW50LmRlbHRhWSgpKTsKKyAgICBhdXRvIGJpYXNlZERlbHRhID0gU2Nyb2xsaW5nRWZmZWN0
c0NvbnRyb2xsZXI6OndoZWVsRGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRpY2FsKHdoZWVsRXZlbnQp
OworICAgIGlmIChzY3JvbGxpbmdOb2RlLmhhc0hvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3Io
KSB8fCBzY3JvbGxpbmdOb2RlLmhhc1ZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkpIHsKKyAg
ICAgICAgaWYgKHNjcm9sbGluZ05vZGUuaGFzSG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigp
ICYmICFiaWFzZWREZWx0YS5oZWlnaHQoKSAmJiBiaWFzZWREZWx0YS53aWR0aCgpKSB7CisgICAg
ICAgICAgICBoYW5kbGVkID0gZmFsc2U7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgfQorICAgICAgICBpZiAoKHNjcm9sbGluZ05vZGUuaGFzSG9yaXpvbnRhbE92ZXJzY3JvbGxC
ZWhhdmlvcigpICYmIHNjcm9sbGluZ05vZGUuaGFzVmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3Io
KSkgfHwgKHNjcm9sbGluZ05vZGUuaGFzSG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpICYm
ICFiaWFzZWREZWx0YS5oZWlnaHQoKSkgfHwgKHNjcm9sbGluZ05vZGUuaGFzVmVydGljYWxPdmVy
c2Nyb2xsQmVoYXZpb3IoKSAmJiAhYmlhc2VkRGVsdGEud2lkdGgoKSkpIHsKKyAgICAgICAgICAg
IGhhbmRsZWQgPSB0cnVlOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAg
ICAgICAgZmlsdGVyZWREZWx0YS5zZXRXaWR0aChzY3JvbGxpbmdOb2RlLmhhc0hvcml6b250YWxP
dmVyc2Nyb2xsQmVoYXZpb3IoKSA/IDAgOiBmaWx0ZXJlZERlbHRhLndpZHRoKCkpOworICAgICAg
ICBmaWx0ZXJlZERlbHRhLnNldEhlaWdodChzY3JvbGxpbmdOb2RlLmhhc1ZlcnRpY2FsT3ZlcnNj
cm9sbEJlaGF2aW9yKCkgPyAwIDogZmlsdGVyZWREZWx0YS5oZWlnaHQoKSk7CisgICAgICAgIHdo
ZWVsRXZlbnQgPSB3aGVlbEV2ZW50LmNvcHlXaXRoRGVsdGFBbmRWZWxvY2l0eShmaWx0ZXJlZERl
bHRhLCB3aGVlbEV2ZW50LnNjcm9sbGluZ1ZlbG9jaXR5KCkpOworICAgIH0KKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdCBTY3JvbGxpbmdUcmVlOjpoYW5k
bGVXaGVlbEV2ZW50V2l0aE5vZGUoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50
LCBPcHRpb25TZXQ8V2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwcz4gcHJvY2Vzc2luZ1N0ZXBzLCBT
Y3JvbGxpbmdUcmVlTm9kZSogbm9kZSwgRXZlbnRUYXJnZXRpbmcgZXZlbnRUYXJnZXRpbmcpCiB7
CisgICAgUGxhdGZvcm1XaGVlbEV2ZW50IGFkanVzdGVkV2hlZWxFdmVudCA9IFBsYXRmb3JtV2hl
ZWxFdmVudCh3aGVlbEV2ZW50KTsKICAgICB3aGlsZSAobm9kZSkgewogICAgICAgICBpZiAoaXM8
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU+KCpub2RlKSkgewogICAgICAgICAgICAgYXV0byYg
c2Nyb2xsaW5nTm9kZSA9IGRvd25jYXN0PFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlPigqbm9k
ZSk7Ci0gICAgICAgICAgICBhdXRvIHJlc3VsdCA9IHNjcm9sbGluZ05vZGUuaGFuZGxlV2hlZWxF
dmVudCh3aGVlbEV2ZW50LCBldmVudFRhcmdldGluZyk7CisgICAgICAgICAgICBhdXRvIHJlc3Vs
dCA9IHNjcm9sbGluZ05vZGUuaGFuZGxlV2hlZWxFdmVudChhZGp1c3RlZFdoZWVsRXZlbnQsIGV2
ZW50VGFyZ2V0aW5nKTsKIAogICAgICAgICAgICAgaWYgKHJlc3VsdC53YXNIYW5kbGVkKSB7CiAg
ICAgICAgICAgICAgICAgbV9sYXRjaGluZ0NvbnRyb2xsZXIubm9kZURpZEhhbmRsZUV2ZW50KHNj
cm9sbGluZ05vZGUuc2Nyb2xsaW5nTm9kZUlEKCksIHByb2Nlc3NpbmdTdGVwcywgd2hlZWxFdmVu
dCwgbV9hbGxvd0xhdGNoaW5nKTsKQEAgLTE5NSw2ICsyMTcsMTYgQEAgV2hlZWxFdmVudEhhbmRs
aW5nUmVzdWx0IFNjcm9sbGluZ1RyZWU6OmhhbmRsZVdoZWVsRXZlbnRXaXRoTm9kZShjb25zdCBQ
bGF0Zm9ybVcKIAogICAgICAgICAgICAgaWYgKHJlc3VsdC5uZWVkc01haW5UaHJlYWRQcm9jZXNz
aW5nKCkgfHwgZXZlbnRUYXJnZXRpbmcgIT0gRXZlbnRUYXJnZXRpbmc6OlByb3BhZ2F0ZSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgCisgICAgICAgICAgICBi
b29sIGhhbmRsZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIGlmIChzaG91bGRCbG9ja1Njcm9sbENo
YWluaW5nV2l0aE5vZGUoc2Nyb2xsaW5nTm9kZSwgYWRqdXN0ZWRXaGVlbEV2ZW50LCBoYW5kbGVk
KSkgeworICAgICAgICAgICAgICAgIGlmICghaGFuZGxlZCkKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdDo6dW5oYW5kbGVkKCk7CisKKyAgICAgICAg
ICAgICAgICBtX2xhdGNoaW5nQ29udHJvbGxlci5ub2RlRGlkSGFuZGxlRXZlbnQoc2Nyb2xsaW5n
Tm9kZS5zY3JvbGxpbmdOb2RlSUQoKSwgcHJvY2Vzc2luZ1N0ZXBzLCB3aGVlbEV2ZW50LCBtX2Fs
bG93TGF0Y2hpbmcpOworICAgICAgICAgICAgICAgIG1fZ2VzdHVyZVN0YXRlLm5vZGVEaWRIYW5k
bGVFdmVudChzY3JvbGxpbmdOb2RlLnNjcm9sbGluZ05vZGVJRCgpLCB3aGVlbEV2ZW50KTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0OjpoYW5kbGVkKCk7
CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoaXM8U2Nyb2xsaW5nVHJl
ZU92ZXJmbG93U2Nyb2xsUHJveHlOb2RlPigqbm9kZSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuaAppbmRleCA2YjJjNTQ0OTY1Mzg4MzQ0Mzk1ZTBi
ODhhN2I4NzVhMGZhNjdjMDdlLi45ZjIxNDg0M2IzMzc4ZTRkNjhkODE1NGQ5NDBmODVkNGQ4YjNm
MDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdU
cmVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5o
CkBAIC0yMzUsNiArMjM1LDggQEAgcHVibGljOgogICAgIHZvaWQgYWRkUGVuZGluZ1Njcm9sbFVw
ZGF0ZShTY3JvbGxVcGRhdGUmJik7CiAgICAgVmVjdG9yPFNjcm9sbFVwZGF0ZT4gdGFrZVBlbmRp
bmdTY3JvbGxVcGRhdGVzKCk7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZVBlbmRpbmdTY3JvbGxB
bmltYXRpb25Gb3JOb2RlKFNjcm9sbGluZ05vZGVJRCkgeyB9CisgICAgCisgICAgYm9vbCBzaG91
bGRCbG9ja1Njcm9sbENoYWluaW5nV2l0aE5vZGUoY29uc3QgU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGUmLCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBib29sJik7CiAKIHByb3RlY3RlZDoKICAgICBX
aGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQgaGFuZGxlV2hlZWxFdmVudFdpdGhOb2RlKGNvbnN0IFBs
YXRmb3JtV2hlZWxFdmVudCYsIE9wdGlvblNldDxXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBzPiwg
U2Nyb2xsaW5nVHJlZU5vZGUqLCBFdmVudFRhcmdldGluZyA9IEV2ZW50VGFyZ2V0aW5nOjpQcm9w
YWdhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmgKaW5kZXggZjhlOGM0MzcwNjY0MDBlNjFlMjg2NmI0
Y2Q0MjZmODRhYzM1MTg0Mi4uNjBhYmI0MGEzOWM1MDc3NGE1MmNlN2VkNjRhZTE4ZGRmYzlkMThi
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oCkBAIC0xNjEsNiArMTYxLDExIEBAIHByb3RlY3RlZDoK
IAogICAgIGJvb2wgYWxsb3dzSG9yaXpvbnRhbFNjcm9sbGluZygpIGNvbnN0IHsgcmV0dXJuIG1f
c2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzLmFsbG93c0hvcml6b250YWxTY3JvbGxpbmc7IH0KICAg
ICBib29sIGFsbG93c1ZlcnRpY2FsU2Nyb2xsaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxh
YmxlQXJlYVBhcmFtZXRlcnMuYWxsb3dzVmVydGljYWxTY3JvbGxpbmc7IH0KKyAgICAKKyAgICBP
dmVyc2Nyb2xsQmVoYXZpb3IgaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpIGNvbnN0IHsg
cmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzLmhvcml6b250YWxPdmVyc2Nyb2xsQmVo
YXZpb3I7IH0KKyAgICBPdmVyc2Nyb2xsQmVoYXZpb3IgdmVydGljYWxPdmVyc2Nyb2xsQmVoYXZp
b3IoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGFibGVBcmVhUGFyYW1ldGVycy52ZXJ0aWNhbE92
ZXJzY3JvbGxCZWhhdmlvcjsgfQorICAgIGJvb2wgaGFzSG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhh
dmlvcigpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzLmhvcml6b250
YWxPdmVyc2Nyb2xsQmVoYXZpb3IgIT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpBdXRvOyB9CisgICAg
Ym9vbCBoYXNWZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpIGNvbnN0IHsgcmV0dXJuIG1fc2Ny
b2xsYWJsZUFyZWFQYXJhbWV0ZXJzLnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yICE9IE92ZXJz
Y3JvbGxCZWhhdmlvcjo6QXV0bzsgfQogCiAgICAgdm9pZCBkdW1wUHJvcGVydGllcyhXVEY6OlRl
eHRTdHJlYW0mLCBPcHRpb25TZXQ8U2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0QmVoYXZpb3I+KSBj
b25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxl
Z2F0ZU1hYy5tbQppbmRleCA4MjlkNjNiMTM5NGE2MGUwMDliYTgxMmYzNTI2MTRkMDZlYTY4MjY0
Li5mMjViOTczODI3NzI2MWFkY2Q1ZWQzNmYyYTg1MzVkYjhmNjEwZjI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGVEZWxlZ2F0ZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMv
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5tbQpAQCAtMjA3LDYgKzIwNyw5
IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6c2VydmljZVNj
cm9sbEFuaW1hdGlvbigpCiAKIGJvb2wgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZU1hYzo6YWxsb3dzSG9yaXpvbnRhbFN0cmV0Y2hpbmcoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50
JiB3aGVlbEV2ZW50KSBjb25zdAogeworICAgIGlmIChzY3JvbGxpbmdOb2RlKCkuaG9yaXpvbnRh
bE92ZXJzY3JvbGxCZWhhdmlvcigpID09IE92ZXJzY3JvbGxCZWhhdmlvcjo6Tm9uZSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIAogICAgIHN3aXRjaCAoaG9yaXpvbnRhbFNjcm9sbEVsYXN0
aWNpdHkoKSkgewogICAgIGNhc2UgU2Nyb2xsRWxhc3RpY2l0eTo6QXV0b21hdGljOiB7CiAgICAg
ICAgIGJvb2wgc2Nyb2xsYmFyc0FsbG93U3RyZXRjaGluZyA9IGFsbG93c0hvcml6b250YWxTY3Jv
bGxpbmcoKSB8fCAhYWxsb3dzVmVydGljYWxTY3JvbGxpbmcoKTsKQEAgLTIzMCw2ICsyMzMsOSBA
QCBib29sIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OmFsbG93c0hvcml6
b250YWxTdHJldGNoaW5nKGNvbnN0IFBsYQogCiBib29sIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlRGVsZWdhdGVNYWM6OmFsbG93c1ZlcnRpY2FsU3RyZXRjaGluZyhjb25zdCBQbGF0Zm9ybVdo
ZWVsRXZlbnQmIHdoZWVsRXZlbnQpIGNvbnN0CiB7CisgICAgaWYgKHNjcm9sbGluZ05vZGUoKS52
ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpID09IE92ZXJzY3JvbGxCZWhhdmlvcjo6Tm9uZSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAogICAgIHN3aXRjaCAodmVydGljYWxTY3JvbGxF
bGFzdGljaXR5KCkpIHsKICAgICBjYXNlIFNjcm9sbEVsYXN0aWNpdHk6OkF1dG9tYXRpYzogewog
ICAgICAgICBib29sIHNjcm9sbGJhcnNBbGxvd1N0cmV0Y2hpbmcgPSBhbGxvd3NWZXJ0aWNhbFNj
cm9sbGluZygpIHx8ICFhbGxvd3NIb3Jpem9udGFsU2Nyb2xsaW5nKCk7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggODQ1N2Ez
MGViZWE2MDY2N2Q1OWQ4MWVjMTVlNTZkNmJhZWQzYTJhYi4uNTAzMWEwNTQwZjJmMDczMzMwZjU5
ZThlN2U1MjkwNmU4YzJmOGNmZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTExLTE3ICBO
aWtvbGFvcyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgorCisgICAgICAgIElt
cGxlbWVudCBDU1Mgb3ZlcnNjcm9sbC1iZWhhdmlvciBmb3IgYXN5bmNocm9ub3VzIHNjcm9sbCBv
biBNYWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
MDEzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
ZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxl
LWVsZW1lbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9t
YWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhh
dmlvci11bnNjcm9sbGFibGUtaWZyYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxl
LWlmcmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9yZXNvdXJjZXMv
b3ZlcnNjcm9sbC1iZWhhdmlvci1zdXBwb3J0LmpzOiBBZGRlZC4KKyAgICAgICAgKGdldERlbHRh
cyk6CisgICAgICAgIChhc3luYyBtb3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCk6CisKIDIwMjEtMTEt
MTYgIE5pa2l0YSBWYXNpbHlldiAgPG52YXNpbHlldkBhcHBsZS5jb20+CiAKICAgICAgICAgV2Vi
IEluc3BlY3RvcjogUmVtb3ZlIHVudXNlZCBgZG9udENyZWF0ZUlmTWlzc2luZ2AgYXJndW1lbnQg
ZnJvbSBDU1NTdHlsZURlY2xhcmF0aW9uLnByb3RvdHlwZS5wcm9wZXJ0eUZvck5hbWUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IGIzOWJhNDdmODI5ODA3Y2Q3NDIyMDFlZGZmZjhm
YzUzNThhMzM0NzEuLmM2YjVkMWFlMTNlMTMzMjRmMGU4MzVkZDIwODUyYzg4ZTI2N2RkOWMgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIxLTExLTE3
ICBOaWtvbGFvcyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgorCisgICAgICAg
IEltcGxlbWVudCBDU1Mgb3ZlcnNjcm9sbC1iZWhhdmlvciBmb3IgYXN5bmNocm9ub3VzIHNjcm9s
bCBvbiBNYWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyMDEzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mtb3ZlcnNjcm9sbC1iZWhhdmlvci9vdmVyc2Ny
b2xsLWJlaGF2aW9yLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3Mtb3ZlcnNjcm9sbC1iZWhhdmlvci9vdmVyc2Nyb2xsLWJlaGF2aW9yLmh0
bWw6IEFkZGVkLgorCiAyMDIxLTExLTE2ICBSb2IgQnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgW2Nzcy1jb250YWluXSBTdXBwb3J0IGNvbnRhaW46cGFpbnQKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9y
LXVuc2Nyb2xsYWJsZS1lbGVtZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Ny
b2xsaW5nL21hYy9hc3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMzk1YjY0ODhkMDg3MGI5NTYxYzAyODY3OWQ3ZTE1
YTQ3ZmNlNmU5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcv
bWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorCitQQVNTIFVuc2Nyb2xsYWJsZSBlbGVtZW50IGhvcml6
b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLgorUEFTUyBV
bnNjcm9sbGFibGUgZWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwt
YmVoYXZpb3I6IG5vbmUuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5n
L21hYy9hc3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlv
ci11bnNjcm9sbGFibGUtZWxlbWVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE0NDhmMmUwZWE1Y2MwNzhm
MWY5ZWE0YzJkN2Y3ODBlZTdiN2U1ODQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUt
ZWxlbWVudC5odG1sCkBAIC0wLDAgKzEsNjcgQEAKKzwhZG9jdHlwZSBodG1sPiA8IS0tIHdlYmtp
dC10ZXN0LXJ1bm5lciBbIEFzeW5jT3ZlcmZsb3dTY3JvbGxpbmdFbmFibGVkPXRydWUgQXN5bmNG
cmFtZVNjcm9sbGluZ0VuYWJsZWQ9dHJ1ZSBdIC0tPgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uL3Jlc291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXN1cHBvcnQuanMiPjwvc2NyaXB0Pgor
PGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLW92ZXJz
Y3JvbGwtYmVoYXZpb3IiPgorPHN0eWxlPgorICAgIC5zY3JvbGxpbmcgeworICAgICAgICBvdmVy
Zmxvdzogc2Nyb2xsOworICAgIH0KKyAgICAuc2Nyb2xsQ29udGVudCB7CisgICAgICAgIHdpZHRo
OiAzMDBweDsKKyAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICB9CisgICAgI3Jvb3QgeworICAg
ICAgICB3aWR0aDogMjAwcHg7CisgICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgfQorICAgICNz
Y3JvbGxlciB7CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsK
KyAgICAgICAgb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZTsKKyAgICAgICAgb3ZlcmZsb3c6IHZp
c2libGU7CisgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJlZCwg
Ymx1ZSk7CisgICAgfQorPC9zdHlsZT4KKzxkaXYgaWQ9InJvb3QiIGNsYXNzPSJzY3JvbGxpbmci
PgorICAgIDxkaXYgaWQ9InNjcm9sbGVyIj4KKyAgICAgICAgPGRpdiBjbGFzcz0ic2Nyb2xsQ29u
dGVudCI+PC9kaXY+CisgICAgPC9kaXY+CisgICAgPGRpdiBjbGFzcz0ic2Nyb2xsQ29udGVudCI+
PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4KK2NvbnN0IHJvb3QgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgncm9vdCcpOworY29uc3Qgc2Nyb2xsZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnc2Nyb2xsZXInKTsKKworZnVuY3Rpb24gcmVzZXRUZXN0KCkgeworICAgIHJvb3Quc2Nyb2xs
TGVmdCA9IDA7CisgICAgcm9vdC5zY3JvbGxUb3AgPSAwOworICAgIHJvb3Quc2Nyb2xsVG8oMCwg
MCk7Cit9CisKK2Z1bmN0aW9uIHN0YXJ0VGVzdCgpIHsKKyAgICAgICAgcHJvbWlzZV90ZXN0KCgp
ID0+IHsKKyAgICAgICAgICAgIHJlc2V0VGVzdCgpOworICAgICAgICAgICAgdmFyIHggPSBzY3Jv
bGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAgICAgICAgICB2YXIgeSA9IHNjcm9sbGVyLmNsaWVu
dEhlaWdodCAvIDI7CisgICAgICAgICAgICB2YXIgZGVsdGEgPSBnZXREZWx0YXMoInJpZ2h0Iik7
CisgICAgICAgICAgICByZXR1cm4gbW91c2VXaGVlbFNjcm9sbEFuZFdhaXQoeCwgeSwgZGVsdGEu
WCwgZGVsdGEuWSwgZGVsdGEuWCwgZGVsdGEuWSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAg
ICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbExlZnQgPiAwLCB0cnVlLCAnQ29udGludWUgdXAg
dGhlIGhvcml6b250YWwgc2Nyb2xsIGNoYWluaW5nJyk7CisgICAgICAgICAgICB9KTsKKyAgICAg
ICAgfSwgJ1Vuc2Nyb2xsYWJsZSBlbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBv
dmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLicpOworCisgICAgICAgIHByb21pc2VfdGVzdCgoKSA9
PiB7CisgICAgICAgICAgICByZXNldFRlc3QoKTsKKyAgICAgICAgICAgIHZhciB4ID0gc2Nyb2xs
ZXIuY2xpZW50V2lkdGggLyAyOworICAgICAgICAgICAgdmFyIHkgPSBzY3JvbGxlci5jbGllbnRI
ZWlnaHQgLyAyOworICAgICAgICAgICAgdmFyIGRlbHRhID0gZ2V0RGVsdGFzKCJkb3duIik7Cisg
ICAgICAgICAgICByZXR1cm4gbW91c2VXaGVlbFNjcm9sbEFuZFdhaXQoeCwgeSwgZGVsdGEuWCwg
ZGVsdGEuWSwgZGVsdGEuWCwgZGVsdGEuWSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAg
YXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbFRvcCA+IDAsIHRydWUsICdDb250aW51ZSB1cCB0aGUg
dmVydGljYWwgc2Nyb2xsIGNoYWluaW5nJyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSwg
J1Vuc2Nyb2xsYWJsZSBlbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9s
bC1iZWhhdmlvcjogbm9uZS4nKTsKK30KKworYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIHN0YXJ0
VGVzdCk7Cis8L3NjcmlwdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlv
ci11bnNjcm9sbGFibGUtaWZyYW1lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Ny
b2xsaW5nL21hYy9hc3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAwZTliYzhjYzk5MTQzNzU3MGMwNThiMmQwMDk4OGYz
YzExMTFiMjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9t
YWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDUgQEAKKworCitGQUlMIFVuc2Nyb2xsYWJsZSBpZnJhbWUgaG9yaXpv
bnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuIENhbid0IGZp
bmQgdmFyaWFibGU6IGdldERlbHRhcworRkFJTCBVbnNjcm9sbGFibGUgaWZyYW1lIHZlcnRpY2Fs
IHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4gQ2FuJ3QgZmluZCB2
YXJpYWJsZTogZ2V0RGVsdGFzCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xs
aW5nL21hYy9hc3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1vdmVyc2Nyb2xsLWJlaGF2
aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zM2VjNWIyNjNjMmI4M2Jl
MWE1Mjg3MTZjZTg2NTYzZDk3YWNkMWQ2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxl
LWlmcmFtZS5odG1sCkBAIC0wLDAgKzEsNjYgQEAKKzwhZG9jdHlwZSBodG1sPiA8IS0tIHdlYmtp
dC10ZXN0LXJ1bm5lciBbIEFzeW5jT3ZlcmZsb3dTY3JvbGxpbmdFbmFibGVkPXRydWUgQXN5bmNG
cmFtZVNjcm9sbGluZ0VuYWJsZWQ9dHJ1ZSBdIC0tPgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uL3Jlc291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXN1cHBvcnQuanMiPjwvc2NyaXB0Pgor
PGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLW92ZXJz
Y3JvbGwtYmVoYXZpb3IiPgorPHN0eWxlPgorICAgIC5zY3JvbGxpbmcgeworICAgICAgICBvdmVy
Zmxvdzogc2Nyb2xsOworICAgIH0KKyAgICAuc2Nyb2xsQ29udGVudCB7CisgICAgICAgIHdpZHRo
OiAzMDBweDsKKyAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICB9CisgICAgI3Jvb3QgeworICAg
ICAgICB3aWR0aDogMjAwcHg7CisgICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgfQorICAgICNz
Y3JvbGxlciB7CisgICAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgICAgaGVpZ2h0OiAyMDBweDsK
KyAgICAgICAgb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZTsKKyAgICAgICAgb3ZlcmZsb3c6IHZp
c2libGU7CisgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJlZCwg
Ymx1ZSk7CisgICAgfQorPC9zdHlsZT4KKzxkaXYgaWQ9J3Jvb3QnIGNsYXNzPSJzY3JvbGxpbmci
PgorICAgIDxpZnJhbWUgaWQ9J3Njcm9sbGVyJyBzcmNkb2M9IjxodG1sIHN0eWxlPSdvdmVyc2Ny
b2xsLWJlaGF2aW9yOiBub25lOyc+PGRpdiBzdHlsZT0nd2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDEw
MHB4Oyc+PC9kaXY+PC9odG1sPgorICAgICAgICAiPjwvaWZyYW1lPgorICAgIDxkaXYgY2xhc3M9
InNjcm9sbENvbnRlbnQiPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+Citjb25zdCByb290ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jvb3QnKTsKK2NvbnN0IHNjcm9sbGVyID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3Njcm9sbGVyJyk7CisKK2Z1bmN0aW9uIHJlc2V0VGVzdCgpIHsK
KyAgICByb290LnNjcm9sbExlZnQgPSAwOworICAgIHJvb3Quc2Nyb2xsVG9wID0gMDsKKyAgICBy
b290LnNjcm9sbFRvKDAsIDApOworfQorCitmdW5jdGlvbiBzdGFydFRlc3QoKSB7CisgICAgICAg
IHByb21pc2VfdGVzdCgoKSA9PiB7CisgICAgICAgICAgICByZXNldFRlc3QoKTsKKyAgICAgICAg
ICAgIHZhciB4ID0gc2Nyb2xsZXIuY2xpZW50V2lkdGggLyAyOworICAgICAgICAgICAgdmFyIHkg
PSBzY3JvbGxlci5jbGllbnRIZWlnaHQgLyAyOworICAgICAgICAgICAgdmFyIGRlbHRhID0gZ2V0
RGVsdGFzKCJyaWdodCIpOworICAgICAgICAgICAgcmV0dXJuIG1vdXNlV2hlZWxTY3JvbGxBbmRX
YWl0KHgsIHksIGRlbHRhLlgsIGRlbHRhLlksIGRlbHRhLlgsIGRlbHRhLlkpLnRoZW4oKCkgPT4g
eworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxMZWZ0ID4gMCwgdHJ1
ZSwgJ0NvbnRpbnVlIHVwIHRoZSBob3Jpem9udGFsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAg
ICAgICAgfSk7CisgICAgICAgIH0sICdVbnNjcm9sbGFibGUgaWZyYW1lIGhvcml6b250YWwgc2Ny
b2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLicpOworCisgICAgICAgIHBy
b21pc2VfdGVzdCgoKSA9PiB7CisgICAgICAgICAgICByZXNldFRlc3QoKTsKKyAgICAgICAgICAg
IHZhciB4ID0gc2Nyb2xsZXIuY2xpZW50V2lkdGggLyAyOworICAgICAgICAgICAgdmFyIHkgPSBz
Y3JvbGxlci5jbGllbnRIZWlnaHQgLyAyOworICAgICAgICAgICAgdmFyIGRlbHRhID0gZ2V0RGVs
dGFzKCJkb3duIik7CisgICAgICAgICAgICByZXR1cm4gbW91c2VXaGVlbFNjcm9sbEFuZFdhaXQo
eCwgeSwgZGVsdGEuWCwgZGVsdGEuWSwgZGVsdGEuWCwgZGVsdGEuWSkudGhlbigoKSA9PiB7Cisg
ICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbFRvcCA+IDAsIHRydWUsICdD
b250aW51ZSB1cCB0aGUgdmVydGljYWwgc2Nyb2xsIGNoYWluaW5nJyk7CisgICAgICAgICAgICB9
KTsKKyAgICAgICAgfSwgJ1Vuc2Nyb2xsYWJsZSBpZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qg
d2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLicpOworfQorCithZGRFdmVudExpc3RlbmVy
KCJsb2FkIiwgc3RhcnRUZXN0KTsKKzwvc2NyaXB0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3Jlc291cmNlcy9vdmVy
c2Nyb2xsLWJlaGF2aW9yLXN1cHBvcnQuanMgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9y
ZXNvdXJjZXMvb3ZlcnNjcm9sbC1iZWhhdmlvci1zdXBwb3J0LmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNiZDIy
MmU5MGI1MmExOTMwYjdmY2ZlNDQyM2U5NDU4M2MwNDYwMGUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9yZXNvdXJjZXMvb3ZlcnNjcm9sbC1iZWhhdmlvci1z
dXBwb3J0LmpzCkBAIC0wLDAgKzEsMzkgQEAKK2Z1bmN0aW9uIGdldERlbHRhcyhkaXJlY3Rpb24p
IHsKKyAgICB2YXIgZGVsdGFYID0gMDsKKyAgICB2YXIgZGVsdGFZID0gMDsKKyAgICBpZiAoZGly
ZWN0aW9uID09ICJkb3duIikKKyAgICAgICAgZGVsdGFZID0gLTUKKyAgICBlbHNlIGlmIChkaXJl
Y3Rpb24gPT0gInVwIikKKyAgICAgICAgZGVsdGFZID0gNTsKKyAgICBlbHNlIGlmIChkaXJlY3Rp
b24gPT0gInJpZ2h0IikKKyAgICAgICAgZGVsdGFYID0gLTU7CisgICAgZWxzZSBpZiAoZGlyZWN0
aW9uID09ICJsZWZ0IikKKyAgICAgICAgZGVsdGFYID0gNTsKKyAgICByZXR1cm4geworICAgICAg
ICBYOiBkZWx0YVgsCisgICAgICAgIFk6IGRlbHRhWQorICAgIH07Cit9CisKK2FzeW5jIGZ1bmN0
aW9uIG1vdXNlV2hlZWxTY3JvbGxBbmRXYWl0KHgsIHksIGJlZ2luWCwgYmVnaW5ZLCBkZWx0YVgs
IGRlbHRhWSkKK3sKKyAgICBpZiAoYmVnaW5YID09PSB1bmRlZmluZWQpCisgICAgICAgIGJlZ2lu
WCA9IDA7CisgICAgaWYgKGJlZ2luWSA9PT0gdW5kZWZpbmVkKQorICAgICAgICBiZWdpblkgPSAt
MTsKKyAgICBpZiAoZGVsdGFYID09PSB1bmRlZmluZWQpCisgICAgICAgIGRlbHRhWCA9IDA7Cisg
ICAgaWYgKGRlbHRhWSA9PT0gdW5kZWZpbmVkKQorICAgICAgICBkZWx0YVkgPSAtMTA7CisKKyAg
ICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICBldmVudFNlbmRlci5tb3Vz
ZU1vdmVUbyh4LCB5KTsKKyAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoYmVnaW5YLCBiZWdpblksICJiZWdhbiIsICJub25lIik7CisgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGRlbHRhWCwg
ZGVsdGFZLCAiY2hhbmdlZCIsICJub25lIik7CisgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICJlbmRlZCIsICJub25lIik7CisgICAg
cmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4geworICAgICAgICBzZXRUaW1lb3V0KCgpID0+
IHsKKyAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShyZXNvbHZlKTsKKyAgICAgICAg
fSwgNTAwKTsKKyAgICB9KTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445528</attachid>
            <date>2021-11-30 23:22:34 -0800</date>
            <delta_ts>2021-12-01 11:20:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220139-20211130232234.patch</filename>
            <type>text/plain</type>
            <size>32908</size>
            <attacher name="Nikos Mouchtaris">nmouchtaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1OTA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODUyNDdhYmQ5N2Y0MDY5
ZjE0NTg4NGY4MjA0NGQ1N2YxNTlmMTkxMC4uZDEyYTI0ZTkwZWUxMTdlNDc3M2FjNDk4ZjNmYTE5
YmE0NTRkNzFiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIxLTExLTE3ICBOaWtv
bGFvcyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxl
bWVudCBDU1Mgb3ZlcnNjcm9sbC1iZWhhdmlvciBmb3IgYXN5bmNocm9ub3VzIHNjcm9sbCBvbiBN
YWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDEz
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNwbGl0
IHVwIHBhdGNoIGJ5IENhdGhpZSBDaGVuIGFuZCBGcmVkZXJpYyBXYW5nLiBBZGQgZnVuY3Rpb24g
Zm9yIGJsb2NraW5nIHNjcm9sbCBjaGFpbmluZworICAgICAgICBhbmQgZmlsdGVyaW5nIHNjcm9s
bCBkZWx0YSBkZXBlbmRpbmcgb24gdGhlIHZhbHVlcyBvZiBvdmVyc2Nyb2xsIGJlaGF2aW9yIGZv
ciBhIHNjcm9sbGluZworICAgICAgICBub2RlLiBUaGlzIHBhdGNoIGlzIGZvciBhc3luY2hyb25v
dXMgc2Nyb2xsaW5nIG9ubHkuCisKKyAgICAgICAgVGVzdHM6IGZhc3Qvc2Nyb2xsaW5nL21hYy9h
c3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWwKKyAgICAg
ICAgICAgICAgIGZhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVu
c2Nyb2xsYWJsZS1pZnJhbWUuaHRtbAorICAgICAgICAgICAgICAgaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW92ZXJzY3JvbGwtYmVoYXZpb3Ivb3ZlcnNjcm9sbC1iZWhh
dmlvci5odG1sCisKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWU6OnNob3VsZEJsb2NrU2Nyb2xsQ2hhaW5p
bmdXaXRoTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlOjpoYW5kbGVXaGVl
bEV2ZW50V2l0aE5vZGUpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUu
aDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5o
OgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZURlbGVnYXRlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZU1hYzo6YWxsb3dzSG9yaXpvbnRhbFN0cmV0Y2hpbmcgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6YWxs
b3dzVmVydGljYWxTdHJldGNoaW5nIGNvbnN0KToKKwogMjAyMS0xMS0xNiAgTmlrb2xhb3MgTW91
Y2h0YXJpcyAgPG5tb3VjaHRhcmlzQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW5hbWUgVGV4dERl
Y29yYXRpb24gdG8gVGV4dERlY29yYXRpb25MaW5lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuY3BwCmluZGV4IGNhOGYxYjQxYmRiMDY2YmVjYzJlZWFh
MzJhYmU4MmQ2ZDBjYjBjODEuLjNlMDJhNGMyMjlmNTU0NWVjZjU3ZmU3OWIyNGQ5YTE3YjBkMjUx
MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1Ry
ZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUu
Y3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVdoZWVsRXZlbnQuaCIKKyNpbmNsdWRlICJT
Y3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNjcm9sbGluZ1N0YXRlRnJh
bWVTY3JvbGxpbmdOb2RlLmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5nU3RhdGVUcmVlLmgiCiAjaW5j
bHVkZSAiU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZS5oIgpAQCAtMTgwLDEyICsxODEs
MzcgQEAgV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0IFNjcm9sbGluZ1RyZWU6OmhhbmRsZVdoZWVs
RXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW4KICAgICByZXR1cm4gcmVzdWx0OwogfQogCiti
b29sIFNjcm9sbGluZ1RyZWU6OnNob3VsZEJsb2NrU2Nyb2xsQ2hhaW5pbmdXaXRoTm9kZShjb25z
dCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZSYgc2Nyb2xsaW5nTm9kZSwgUGxhdGZvcm1XaGVl
bEV2ZW50JiB3aGVlbEV2ZW50LCBib29sJiBoYW5kbGVkKQoreworICAgIEZsb2F0U2l6ZSBmaWx0
ZXJlZERlbHRhKHdoZWVsRXZlbnQuZGVsdGFYKCksIHdoZWVsRXZlbnQuZGVsdGFZKCkpOworI2lm
IFBMQVRGT1JNKE1BQykKKyAgICBhdXRvIGJpYXNlZERlbHRhID0gU2Nyb2xsaW5nRWZmZWN0c0Nv
bnRyb2xsZXI6OndoZWVsRGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRpY2FsKHdoZWVsRXZlbnQpOwor
I2Vsc2UKKyAgICBhdXRvIGJpYXNlZERlbHRhID0gd2hlZWxFdmVudC5kZWx0YSgpOworI2VuZGlm
CisgICAgaWYgKHNjcm9sbGluZ05vZGUuaGFzSG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigp
IHx8IHNjcm9sbGluZ05vZGUuaGFzVmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSkgeworICAg
ICAgICBpZiAoc2Nyb2xsaW5nTm9kZS5oYXNIb3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkg
JiYgIWJpYXNlZERlbHRhLmhlaWdodCgpICYmIGJpYXNlZERlbHRhLndpZHRoKCkpIHsKKyAgICAg
ICAgICAgIGhhbmRsZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICB9CisgICAgICAgIGlmICgoc2Nyb2xsaW5nTm9kZS5oYXNIb3Jpem9udGFsT3ZlcnNjcm9sbEJl
aGF2aW9yKCkgJiYgc2Nyb2xsaW5nTm9kZS5oYXNWZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigp
KSB8fCAoc2Nyb2xsaW5nTm9kZS5oYXNIb3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgJiYg
IWJpYXNlZERlbHRhLmhlaWdodCgpKSB8fCAoc2Nyb2xsaW5nTm9kZS5oYXNWZXJ0aWNhbE92ZXJz
Y3JvbGxCZWhhdmlvcigpICYmICFiaWFzZWREZWx0YS53aWR0aCgpKSkgeworICAgICAgICAgICAg
aGFuZGxlZCA9IHRydWU7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAg
ICAgICBmaWx0ZXJlZERlbHRhLnNldFdpZHRoKHNjcm9sbGluZ05vZGUuaGFzSG9yaXpvbnRhbE92
ZXJzY3JvbGxCZWhhdmlvcigpIHx8IChzY3JvbGxpbmdOb2RlLmhhc1ZlcnRpY2FsT3ZlcnNjcm9s
bEJlaGF2aW9yKCkgJiYgIWJpYXNlZERlbHRhLndpZHRoKCkpID8gMCA6IGZpbHRlcmVkRGVsdGEu
d2lkdGgoKSk7CisgICAgICAgIGZpbHRlcmVkRGVsdGEuc2V0SGVpZ2h0KHNjcm9sbGluZ05vZGUu
aGFzVmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSB8fCAoc2Nyb2xsaW5nTm9kZS5oYXNIb3Jp
em9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgJiYgIWJpYXNlZERlbHRhLmhlaWdodCgpKSA/IDAg
OiBmaWx0ZXJlZERlbHRhLmhlaWdodCgpKTsKKyAgICAgICAgd2hlZWxFdmVudCA9IHdoZWVsRXZl
bnQuY29weVdpdGhEZWx0YUFuZFZlbG9jaXR5KGZpbHRlcmVkRGVsdGEsIHdoZWVsRXZlbnQuc2Ny
b2xsaW5nVmVsb2NpdHkoKSk7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwogV2hlZWxF
dmVudEhhbmRsaW5nUmVzdWx0IFNjcm9sbGluZ1RyZWU6OmhhbmRsZVdoZWVsRXZlbnRXaXRoTm9k
ZShjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIE9wdGlvblNldDxXaGVlbEV2
ZW50UHJvY2Vzc2luZ1N0ZXBzPiBwcm9jZXNzaW5nU3RlcHMsIFNjcm9sbGluZ1RyZWVOb2RlKiBu
b2RlLCBFdmVudFRhcmdldGluZyBldmVudFRhcmdldGluZykKIHsKKyAgICBQbGF0Zm9ybVdoZWVs
RXZlbnQgYWRqdXN0ZWRXaGVlbEV2ZW50ID0gUGxhdGZvcm1XaGVlbEV2ZW50KHdoZWVsRXZlbnQp
OwogICAgIHdoaWxlIChub2RlKSB7CiAgICAgICAgIGlmIChpczxTY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZT4oKm5vZGUpKSB7CiAgICAgICAgICAgICBhdXRvJiBzY3JvbGxpbmdOb2RlID0gZG93
bmNhc3Q8U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU+KCpub2RlKTsKLSAgICAgICAgICAgIGF1
dG8gcmVzdWx0ID0gc2Nyb2xsaW5nTm9kZS5oYW5kbGVXaGVlbEV2ZW50KHdoZWVsRXZlbnQsIGV2
ZW50VGFyZ2V0aW5nKTsKKyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gc2Nyb2xsaW5nTm9kZS5o
YW5kbGVXaGVlbEV2ZW50KGFkanVzdGVkV2hlZWxFdmVudCwgZXZlbnRUYXJnZXRpbmcpOwogCiAg
ICAgICAgICAgICBpZiAocmVzdWx0Lndhc0hhbmRsZWQpIHsKICAgICAgICAgICAgICAgICBtX2xh
dGNoaW5nQ29udHJvbGxlci5ub2RlRGlkSGFuZGxlRXZlbnQoc2Nyb2xsaW5nTm9kZS5zY3JvbGxp
bmdOb2RlSUQoKSwgcHJvY2Vzc2luZ1N0ZXBzLCB3aGVlbEV2ZW50LCBtX2FsbG93TGF0Y2hpbmcp
OwpAQCAtMTk1LDYgKzIyMSwxNiBAQCBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQgU2Nyb2xsaW5n
VHJlZTo6aGFuZGxlV2hlZWxFdmVudFdpdGhOb2RlKGNvbnN0IFBsYXRmb3JtVwogCiAgICAgICAg
ICAgICBpZiAocmVzdWx0Lm5lZWRzTWFpblRocmVhZFByb2Nlc3NpbmcoKSB8fCBldmVudFRhcmdl
dGluZyAhPSBFdmVudFRhcmdldGluZzo6UHJvcGFnYXRlKQogICAgICAgICAgICAgICAgIHJldHVy
biByZXN1bHQ7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGJvb2wgaGFuZGxlZCA9IGZhbHNl
OworICAgICAgICAgICAgaWYgKHNob3VsZEJsb2NrU2Nyb2xsQ2hhaW5pbmdXaXRoTm9kZShzY3Jv
bGxpbmdOb2RlLCBhZGp1c3RlZFdoZWVsRXZlbnQsIGhhbmRsZWQpKSB7CisgICAgICAgICAgICAg
ICAgaWYgKCFoYW5kbGVkKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gV2hlZWxFdmVudEhh
bmRsaW5nUmVzdWx0Ojp1bmhhbmRsZWQoKTsKKworICAgICAgICAgICAgICAgIG1fbGF0Y2hpbmdD
b250cm9sbGVyLm5vZGVEaWRIYW5kbGVFdmVudChzY3JvbGxpbmdOb2RlLnNjcm9sbGluZ05vZGVJ
RCgpLCBwcm9jZXNzaW5nU3RlcHMsIHdoZWVsRXZlbnQsIG1fYWxsb3dMYXRjaGluZyk7CisgICAg
ICAgICAgICAgICAgbV9nZXN0dXJlU3RhdGUubm9kZURpZEhhbmRsZUV2ZW50KHNjcm9sbGluZ05v
ZGUuc2Nyb2xsaW5nTm9kZUlEKCksIHdoZWVsRXZlbnQpOworICAgICAgICAgICAgICAgIHJldHVy
biBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQ6OmhhbmRsZWQoKTsKKyAgICAgICAgICAgIH0KICAg
ICAgICAgfQogCiAgICAgICAgIGlmIChpczxTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxQcm94
eU5vZGU+KCpub2RlKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nVHJlZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nVHJlZS5oCmluZGV4IDZiMmM1NDQ5NjUzODgzNDQzOTVlMGI4OGE3Yjg3NWEwZmE2N2MwN2Uu
LjlmMjE0ODQzYjMzNzhlNGQ2OGQ4MTU0ZDk0MGY4NWQ0ZDhiM2YwMzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmgKQEAgLTIzNSw2ICsyMzUsOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBhZGRQZW5kaW5nU2Nyb2xsVXBkYXRlKFNjcm9sbFVwZGF0ZSYm
KTsKICAgICBWZWN0b3I8U2Nyb2xsVXBkYXRlPiB0YWtlUGVuZGluZ1Njcm9sbFVwZGF0ZXMoKTsK
ICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlUGVuZGluZ1Njcm9sbEFuaW1hdGlvbkZvck5vZGUoU2Ny
b2xsaW5nTm9kZUlEKSB7IH0KKyAgICAKKyAgICBib29sIHNob3VsZEJsb2NrU2Nyb2xsQ2hhaW5p
bmdXaXRoTm9kZShjb25zdCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZSYsIFBsYXRmb3JtV2hl
ZWxFdmVudCYsIGJvb2wmKTsKIAogcHJvdGVjdGVkOgogICAgIFdoZWVsRXZlbnRIYW5kbGluZ1Jl
c3VsdCBoYW5kbGVXaGVlbEV2ZW50V2l0aE5vZGUoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jiwg
T3B0aW9uU2V0PFdoZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHM+LCBTY3JvbGxpbmdUcmVlTm9kZSos
IEV2ZW50VGFyZ2V0aW5nID0gRXZlbnRUYXJnZXRpbmc6OlByb3BhZ2F0ZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGUuaAppbmRleCBmOGU4YzQzNzA2NjQwMGU2MWUyODY2YjRjZDQyNmY4NGFjMzUxODQyLi42
MGFiYjQwYTM5YzUwNzc0YTUyY2U3ZWQ2NGFlMThkZGZjOWQxOGI3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlLmgKQEAgLTE2MSw2ICsxNjEsMTEgQEAgcHJvdGVjdGVkOgogCiAgICAgYm9vbCBhbGxvd3NI
b3Jpem9udGFsU2Nyb2xsaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYVBhcmFt
ZXRlcnMuYWxsb3dzSG9yaXpvbnRhbFNjcm9sbGluZzsgfQogICAgIGJvb2wgYWxsb3dzVmVydGlj
YWxTY3JvbGxpbmcoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGFibGVBcmVhUGFyYW1ldGVycy5h
bGxvd3NWZXJ0aWNhbFNjcm9sbGluZzsgfQorICAgIAorICAgIE92ZXJzY3JvbGxCZWhhdmlvciBo
b3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxhYmxl
QXJlYVBhcmFtZXRlcnMuaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcjsgfQorICAgIE92ZXJz
Y3JvbGxCZWhhdmlvciB2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpIGNvbnN0IHsgcmV0dXJu
IG1fc2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzLnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yOyB9
CisgICAgYm9vbCBoYXNIb3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29uc3QgeyByZXR1
cm4gbV9zY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMuaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlv
ciAhPSBPdmVyc2Nyb2xsQmVoYXZpb3I6OkF1dG87IH0KKyAgICBib29sIGhhc1ZlcnRpY2FsT3Zl
cnNjcm9sbEJlaGF2aW9yKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYVBhcmFtZXRl
cnMudmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IgIT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpBdXRv
OyB9CiAKICAgICB2b2lkIGR1bXBQcm9wZXJ0aWVzKFdURjo6VGV4dFN0cmVhbSYsIE9wdGlvblNl
dDxTY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHRCZWhhdmlvcj4pIGNvbnN0IG92ZXJyaWRlOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1tCmluZGV4IDgy
OWQ2M2IxMzk0YTYwZTAwOWJhODEyZjM1MjYxNGQwNmVhNjgyNjQuLmYyNWI5NzM4Mjc3MjYxYWRj
ZDVlZDM2ZjJhODUzNWRiOGY2MTBmMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZURlbGVnYXRlTWFjLm1tCkBAIC0yMDcsNiArMjA3LDkgQEAgdm9pZCBTY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjpzZXJ2aWNlU2Nyb2xsQW5pbWF0aW9uKCkKIAog
Ym9vbCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjphbGxvd3NIb3Jpem9u
dGFsU3RyZXRjaGluZyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpIGNvbnN0
CiB7CisgICAgaWYgKHNjcm9sbGluZ05vZGUoKS5ob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9y
KCkgPT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpOb25lKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgCiAgICAgc3dpdGNoIChob3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eSgpKSB7CiAgICAgY2Fz
ZSBTY3JvbGxFbGFzdGljaXR5OjpBdXRvbWF0aWM6IHsKICAgICAgICAgYm9vbCBzY3JvbGxiYXJz
QWxsb3dTdHJldGNoaW5nID0gYWxsb3dzSG9yaXpvbnRhbFNjcm9sbGluZygpIHx8ICFhbGxvd3NW
ZXJ0aWNhbFNjcm9sbGluZygpOwpAQCAtMjMwLDYgKzIzMyw5IEBAIGJvb2wgU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6YWxsb3dzSG9yaXpvbnRhbFN0cmV0Y2hpbmcoY29u
c3QgUGxhCiAKIGJvb2wgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6YWxs
b3dzVmVydGljYWxTdHJldGNoaW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVu
dCkgY29uc3QKIHsKKyAgICBpZiAoc2Nyb2xsaW5nTm9kZSgpLnZlcnRpY2FsT3ZlcnNjcm9sbEJl
aGF2aW9yKCkgPT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpOb25lKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgCiAgICAgc3dpdGNoICh2ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkoKSkgewogICAg
IGNhc2UgU2Nyb2xsRWxhc3RpY2l0eTo6QXV0b21hdGljOiB7CiAgICAgICAgIGJvb2wgc2Nyb2xs
YmFyc0FsbG93U3RyZXRjaGluZyA9IGFsbG93c1ZlcnRpY2FsU2Nyb2xsaW5nKCkgfHwgIWFsbG93
c0hvcml6b250YWxTY3JvbGxpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKaW5kZXggMmU3MGJiZTdmOTZiOTMxOTQ0ODFjZWE5
NGNlNTQ0MWYzMDNiZDBlZi4uZjE2Zjk4NzE3ZmFjNGQ2NGFmYmMyNmY3OTAwMmYyMWZkZDdiYWNm
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9z
aXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9z
aXRvci5jcHAKQEAgLTE2NDcsNyArMTY0Nyw5IEBAIHN0YXRpYyBib29sIHJlY29tcG9zaXRlQ2hh
bmdlUmVxdWlyZXNHZW9tZXRyeVVwZGF0ZShjb25zdCBSZW5kZXJTdHlsZSYgb2xkU3R5bGUsCiAg
ICAgICAgIHx8IG9sZFN0eWxlLnBlcnNwZWN0aXZlT3JpZ2luWCgpICE9IG5ld1N0eWxlLnBlcnNw
ZWN0aXZlT3JpZ2luWCgpCiAgICAgICAgIHx8IG9sZFN0eWxlLnBlcnNwZWN0aXZlT3JpZ2luWSgp
ICE9IG5ld1N0eWxlLnBlcnNwZWN0aXZlT3JpZ2luWSgpCiAgICAgICAgIHx8IG9sZFN0eWxlLmJh
Y2tmYWNlVmlzaWJpbGl0eSgpICE9IG5ld1N0eWxlLmJhY2tmYWNlVmlzaWJpbGl0eSgpCi0gICAg
ICAgIHx8ICFhcmVQb2ludGluZ1RvRXF1YWxEYXRhKG9sZFN0eWxlLmNsaXBQYXRoKCksIG5ld1N0
eWxlLmNsaXBQYXRoKCkpOworICAgICAgICB8fCAhYXJlUG9pbnRpbmdUb0VxdWFsRGF0YShvbGRT
dHlsZS5jbGlwUGF0aCgpLCBuZXdTdHlsZS5jbGlwUGF0aCgpKQorICAgICAgICB8fCBvbGRTdHls
ZS5vdmVyc2Nyb2xsQmVoYXZpb3JYKCkgIT0gbmV3U3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWCgp
CisgICAgICAgIHx8IG9sZFN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclkoKSAhPSBuZXdTdHlsZS5v
dmVyc2Nyb2xsQmVoYXZpb3JZKCk7CiB9CiAKIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjps
YXllclN0eWxlQ2hhbmdlZChTdHlsZURpZmZlcmVuY2UgZGlmZiwgUmVuZGVyTGF5ZXImIGxheWVy
LCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpCkBAIC0zOTQwLDYgKzM5NDIsMTEgQEAgdm9p
ZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJvb3RPckJvZHlTdHlsZUNoYW5nZWQoUmVuZGVyRWxl
bWVudCYgcmVuZGVyZXIsIGNvbnMKICAgICBib29sIGhhZEZpeGVkQmFja2dyb3VuZCA9IG9sZFN0
eWxlICYmIG9sZFN0eWxlLT5oYXNFbnRpcmVseUZpeGVkQmFja2dyb3VuZCgpOwogICAgIGlmICho
YWRGaXhlZEJhY2tncm91bmQgIT0gcmVuZGVyZXIuc3R5bGUoKS5oYXNFbnRpcmVseUZpeGVkQmFj
a2dyb3VuZCgpKQogICAgICAgICByb290TGF5ZXJDb25maWd1cmF0aW9uQ2hhbmdlZCgpOworICAg
IAorICAgIGlmIChvbGRTdHlsZSAmJiAob2xkU3R5bGUtPm92ZXJzY3JvbGxCZWhhdmlvclgoKSAh
PSByZW5kZXJlci5zdHlsZSgpLm92ZXJzY3JvbGxCZWhhdmlvclgoKSB8fCBvbGRTdHlsZS0+b3Zl
cnNjcm9sbEJlaGF2aW9yWSgpICE9IHJlbmRlcmVyLnN0eWxlKCkub3ZlcnNjcm9sbEJlaGF2aW9y
WSgpKSkgeworICAgICAgICBpZiAoYXV0byogbGF5ZXIgPSBtX3JlbmRlclZpZXcubGF5ZXIoKSkK
KyAgICAgICAgICAgIGxheWVyLT5zZXROZWVkc0NvbXBvc2l0aW5nR2VvbWV0cnlVcGRhdGUoKTsK
KyAgICB9CiB9CiAKIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyb290QmFja2dyb3VuZENv
bG9yT3JUcmFuc3BhcmVuY3lDaGFuZ2VkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGUuY3BwCmluZGV4IDNhZjllMTUwZWUwYjBhMzVhZTU5ZWZkZTVlZDI3
ODAzYmVkZjY0NmUuLmY4MjU5OGU0MzQ2YWE2ZmY4MDZmOWFhNTMyZGVhZmZjYTlhNjhiNDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcApAQCAt
MTE4OCw3ICsxMTg4LDkgQEAgYm9vbCBSZW5kZXJTdHlsZTo6Y2hhbmdlUmVxdWlyZXNSZWNvbXBv
c2l0ZUxheWVyKGNvbnN0IFJlbmRlclN0eWxlJiBvdGhlciwgT3B0aW8KICAgICAgICAgICAgIHx8
IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmJhY2tmYWNlVmlzaWJpbGl0eSAhPSBvdGhlci5tX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLT5iYWNrZmFjZVZpc2liaWxpdHkKICAgICAgICAgICAgIHx8IG1f
cmFyZU5vbkluaGVyaXRlZERhdGEtPnBlcnNwZWN0aXZlICE9IG90aGVyLm1fcmFyZU5vbkluaGVy
aXRlZERhdGEtPnBlcnNwZWN0aXZlCiAgICAgICAgICAgICB8fCBtX3JhcmVOb25Jbmhlcml0ZWRE
YXRhLT5wZXJzcGVjdGl2ZU9yaWdpblggIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+
cGVyc3BlY3RpdmVPcmlnaW5YCi0gICAgICAgICAgICB8fCBtX3JhcmVOb25Jbmhlcml0ZWREYXRh
LT5wZXJzcGVjdGl2ZU9yaWdpblkgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+cGVy
c3BlY3RpdmVPcmlnaW5ZKQorICAgICAgICAgICAgfHwgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+
cGVyc3BlY3RpdmVPcmlnaW5ZICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnBlcnNw
ZWN0aXZlT3JpZ2luWQorICAgICAgICAgICAgfHwgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+b3Zl
cnNjcm9sbEJlaGF2aW9yWCAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5vdmVyc2Ny
b2xsQmVoYXZpb3JYCisgICAgICAgICAgICB8fCBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5vdmVy
c2Nyb2xsQmVoYXZpb3JZICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm92ZXJzY3Jv
bGxCZWhhdmlvclkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4
NDU3YTMwZWJlYTYwNjY3ZDU5ZDgxZWMxNWU1NmQ2YmFlZDNhMmFiLi41MDMxYTA1NDBmMmYwNzMz
MzBmNTllOGU3ZTUyOTA2ZThjMmY4Y2ZlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMTEt
MTcgIE5pa29sYW9zIE1vdWNodGFyaXMgIDxubW91Y2h0YXJpc0BhcHBsZS5jb20+CisKKyAgICAg
ICAgSW1wbGVtZW50IENTUyBvdmVyc2Nyb2xsLWJlaGF2aW9yIGZvciBhc3luY2hyb25vdXMgc2Ny
b2xsIG9uIE1hYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjIwMTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBmYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9s
bGFibGUtZWxlbWVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2Nyb2xs
aW5nL21hYy9hc3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50Lmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1vdmVyc2Nyb2xs
LWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9s
bGFibGUtaWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL3Jlc291
cmNlcy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXN1cHBvcnQuanM6IEFkZGVkLgorICAgICAgICAoZ2V0
RGVsdGFzKToKKyAgICAgICAgKGFzeW5jIG1vdXNlV2hlZWxTY3JvbGxBbmRXYWl0KToKKwogMjAy
MS0xMS0xNiAgTmlraXRhIFZhc2lseWV2ICA8bnZhc2lseWV2QGFwcGxlLmNvbT4KIAogICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBSZW1vdmUgdW51c2VkIGBkb250Q3JlYXRlSWZNaXNzaW5nYCBhcmd1
bWVudCBmcm9tIENTU1N0eWxlRGVjbGFyYXRpb24ucHJvdG90eXBlLnByb3BlcnR5Rm9yTmFtZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3Jv
bGwtYmVoYXZpb3ItZWxlbWVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9s
bGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50LWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yNzE1MGZmNjBiNWRiZGQwYjRhN2FjNmY4M2ZiNTZmNTdjZDJjZDgyCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJz
Y3JvbGwtYmVoYXZpb3ItZWxlbWVudC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMCBAQAorCitQ
QVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZp
b3I6IGF1dG8gYXV0by4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92
ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gYXV0by4KK1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNj
cm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBhdXRvLgorUEFTUyBF
bGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29u
dGFpbiBhdXRvLgorUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVy
c2Nyb2xsLWJlaGF2aW9yOiBub25lIGF1dG8uCitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xs
IHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIGF1dG8uCitQQVNTIEVsZW1lbnQg
aG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gY29u
dGFpbi4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwt
YmVoYXZpb3I6IGF1dG8gY29udGFpbi4KK1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0
ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBjb250YWluLgorUEFTUyBFbGVt
ZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFp
biBjb250YWluLgorUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVy
c2Nyb2xsLWJlaGF2aW9yOiBub25lIGNvbnRhaW4uCitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Ny
b2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIGNvbnRhaW4uCitQQVNTIEVs
ZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1
dG8gbm9uZS4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3Jv
bGwtYmVoYXZpb3I6IGF1dG8gbm9uZS4KK1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0
ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBub25lLgorUEFTUyBFbGVtZW50
IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBu
b25lLgorUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xs
LWJlaGF2aW9yOiBub25lIG5vbmUuCitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qg
d2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIG5vbmUuCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1l
bnQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1vdmVyc2Nyb2xs
LWJlaGF2aW9yLWVsZW1lbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODEzN2I5Y2I3NzlhOTE2N2RiMjI1
MWQzMDY3ZTQ2M2VhYzk0NjM3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9z
Y3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC5odG1sCkBAIC0w
LDAgKzEsODYgQEAKKzwhZG9jdHlwZSBodG1sPiA8IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIEFz
eW5jT3ZlcmZsb3dTY3JvbGxpbmdFbmFibGVkPXRydWUgQXN5bmNGcmFtZVNjcm9sbGluZ0VuYWJs
ZWQ9dHJ1ZSBdIC0tPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVz
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvb3ZlcnNj
cm9sbC1iZWhhdmlvci1zdXBwb3J0LmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0iaGVscCIgaHJl
Zj0iaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1vdmVyc2Nyb2xsLWJlaGF2aW9yIj4KKzxz
dHlsZT4KKyAgICAuc2Nyb2xsaW5nIHsKKyAgICAgICAgb3ZlcmZsb3c6IHNjcm9sbDsKKyAgICB9
CisgICAgLnNjcm9sbENvbnRlbnQgeworICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgIGhl
aWdodDogMzAwcHg7CisgICAgfQorICAgICNyb290IHsKKyAgICAgICAgd2lkdGg6IDIwMHB4Owor
ICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAgIH0KKyAgICAjc2Nyb2xsZXIgeworICAgICAgICB3
aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgfQorPC9zdHlsZT4KKzxk
aXYgaWQ9J3Jvb3QnIGNsYXNzPSJzY3JvbGxpbmciPgorICAgIDxkaXYgaWQ9J3Njcm9sbGVyJyBj
bGFzcz0ic2Nyb2xsaW5nIj4KKyAgICAgICAgPGRpdiBjbGFzcz0ic2Nyb2xsQ29udGVudCI+PC9k
aXY+CisgICAgPC9kaXY+CisgICAgPGRpdiBjbGFzcz0ic2Nyb2xsQ29udGVudCI+PC9kaXY+Cis8
L2Rpdj4KKworPHNjcmlwdD4KK2NvbnN0IHJvb3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
cm9vdCcpOworY29uc3Qgc2Nyb2xsZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2Nyb2xs
ZXInKTsKK3ZhciBvdmVyc2Nyb2xsRGF0YXMgPSBbWyJhdXRvIiwgImF1dG8iLCB0cnVlLCB0cnVl
XSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFsiY29udGFpbiIsICJhdXRvIiwgZmFsc2UsIHRy
dWVdLAorICAgICAgICAgICAgICAgICAgICAgICAgWyJub25lIiwgImF1dG8iLCBmYWxzZSwgdHJ1
ZV0sCisgICAgICAgICAgICAgICAgICAgICAgICBbImF1dG8iLCAiY29udGFpbiIsIHRydWUsIGZh
bHNlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFsiY29udGFpbiIsICJjb250YWluIiwgZmFs
c2UsIGZhbHNlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFsibm9uZSIsICJjb250YWluIiwg
ZmFsc2UsIGZhbHNlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFsiYXV0byIsICJub25lIiwg
dHJ1ZSwgZmFsc2VdLAorICAgICAgICAgICAgICAgICAgICAgICAgWyJjb250YWluIiwgIm5vbmUi
LCBmYWxzZSwgZmFsc2VdLAorICAgICAgICAgICAgICAgICAgICAgICAgWyJub25lIiwgIm5vbmUi
LCBmYWxzZSwgZmFsc2VdXTsKKworZnVuY3Rpb24gcmVzZXRUZXN0KCkgeworICAgIC8vIFRyeSB2
YXJpb3VzIG1ldGhvZHMgdG8gZW5zdXJlIHRoZSBlbGVtZW50IHBvc2l0aW9uIGlzIHJlc2V0IGlt
bWVkaWF0ZWx5LgorICAgIHNjcm9sbGVyLnNjcm9sbExlZnQgPSAzMDA7CisgICAgc2Nyb2xsZXIu
c2Nyb2xsVG9wID0gMzAwOworICAgIHNjcm9sbGVyLnNjcm9sbFRvKDMwMCwgMzAwKTsKKworICAg
IHJvb3Quc2Nyb2xsTGVmdCA9IDA7CisgICAgcm9vdC5zY3JvbGxUb3AgPSAwOworICAgIHJvb3Qu
c2Nyb2xsVG8oMCwgMCk7Cit9CisKK2Z1bmN0aW9uIHN0YXJ0VGVzdCgpIHsKKyAgICBvdmVyc2Ny
b2xsRGF0YXMuZm9yRWFjaCgoW292ZXJzY3JvbGxYLCBvdmVyc2Nyb2xsWSwgcHJvcGFnYXRlWCwg
cHJvcGFnYXRlWV0pID0+IHsKKyAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAg
ICAgIHJlc2V0VGVzdCgpOworICAgICAgICAgICAgc2Nyb2xsZXIuc3R5bGUub3ZlcnNjcm9sbEJl
aGF2aW9yWCA9IG92ZXJzY3JvbGxYOworICAgICAgICAgICAgc2Nyb2xsZXIuc3R5bGUub3ZlcnNj
cm9sbEJlaGF2aW9yWSA9IG92ZXJzY3JvbGxZOworICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5j
bGllbnRXaWR0aDsKKworICAgICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAv
IDI7CisgICAgICAgICAgICB2YXIgeSA9IHNjcm9sbGVyLmNsaWVudEhlaWdodCAvIDI7CisgICAg
ICAgICAgICB2YXIgZGVsdGEgPSBnZXREZWx0YXMoInJpZ2h0Iik7CisgICAgICAgICAgICByZXR1
cm4gbW91c2VXaGVlbFNjcm9sbEFuZFdhaXQoeCwgeSwgZGVsdGEuWCwgZGVsdGEuWSwgZGVsdGEu
WCwgZGVsdGEuWSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhy
b290LnNjcm9sbExlZnQgPiAwLCBwcm9wYWdhdGVYLCAnQ29udGludWUgdXAgdGhlIGhvcml6b250
YWwgc2Nyb2xsIGNoYWluaW5nJyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSwgJ0VsZW1l
bnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6ICcgKyBv
dmVyc2Nyb2xsWCArICcgJyArIG92ZXJzY3JvbGxZICsgJy4nKTsKKworICAgICAgICBwcm9taXNl
X3Rlc3QoKCkgPT4geworICAgICAgICAgICAgcmVzZXRUZXN0KCk7CisgICAgICAgICAgICBzY3Jv
bGxlci5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JYID0gb3ZlcnNjcm9sbFg7CisgICAgICAgICAg
ICBzY3JvbGxlci5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JZID0gb3ZlcnNjcm9sbFk7CisKKyAg
ICAgICAgICAgIHZhciB4ID0gc2Nyb2xsZXIuY2xpZW50V2lkdGggLyAyOworICAgICAgICAgICAg
dmFyIHkgPSBzY3JvbGxlci5jbGllbnRIZWlnaHQgLyAyOworICAgICAgICAgICAgdmFyIGRlbHRh
ID0gZ2V0RGVsdGFzKCJkb3duIik7CisgICAgICAgICAgICByZXR1cm4gbW91c2VXaGVlbFNjcm9s
bEFuZFdhaXQoeCwgeSwgZGVsdGEuWCwgZGVsdGEuWSwgZGVsdGEuWCwgZGVsdGEuWSkudGhlbigo
KSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbFRvcCA+IDAs
IHByb3BhZ2F0ZVksICdDb250aW51ZSB1cCB0aGUgdmVydGljYWwgc2Nyb2xsIGNoYWluaW5nJyk7
CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSwgJ0VsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRl
c3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiAnICsgb3ZlcnNjcm9sbFggKyAnICcgKyBvdmVy
c2Nyb2xsWSArICcuJyk7CisgICAgfSk7Cit9CisKK2FkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBz
dGFydFRlc3QpOworPC9zY3JpcHQ+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVo
YXZpb3ItaWZyYW1lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL21h
Yy9hc3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOTAwYTBiN2Q5MDViODdjMWRiNzYyNjk0ZmQwMDYzOGYxOTc2OTUzNwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1vdmVyc2Nyb2xsLWJl
aGF2aW9yLWlmcmFtZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMSBAQAorCisKK1BBU1MgSWZy
YW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRv
IGF1dG8uCitQQVNTIElmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwt
YmVoYXZpb3I6IGF1dG8gYXV0by4KK1BBU1MgSWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qg
d2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGF1dG8uCitQQVNTIElmcmFtZSB2ZXJ0
aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gYXV0by4K
K1BBU1MgSWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2
aW9yOiBub25lIGF1dG8uCitQQVNTIElmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92
ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgYXV0by4KK1BBU1MgSWZyYW1lIGhvcml6b250YWwgc2Ny
b2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIGNvbnRhaW4uCitQQVNTIElm
cmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8g
Y29udGFpbi4KK1BBU1MgSWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Ny
b2xsLWJlaGF2aW9yOiBjb250YWluIGNvbnRhaW4uCitQQVNTIElmcmFtZSB2ZXJ0aWNhbCBzY3Jv
bGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gY29udGFpbi4KK1BBU1Mg
SWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBu
b25lIGNvbnRhaW4uCitQQVNTIElmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJz
Y3JvbGwtYmVoYXZpb3I6IG5vbmUgY29udGFpbi4KK1BBU1MgSWZyYW1lIGhvcml6b250YWwgc2Ny
b2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIG5vbmUuCitQQVNTIElmcmFt
ZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gbm9u
ZS4KK1BBU1MgSWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJl
aGF2aW9yOiBjb250YWluIG5vbmUuCitQQVNTIElmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3
aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gbm9uZS4KK1BBU1MgSWZyYW1lIGhvcml6
b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIG5vbmUuCitQ
QVNTIElmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6
IG5vbmUgbm9uZS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFj
L2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4zZjg3MTM2NGY5NWJkNzdmNmU0Y2U5YmVhNDI4MzUxNDBiNDBjMWYwCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3Jv
bGwtYmVoYXZpb3ItaWZyYW1lLmh0bWwKQEAgLTAsMCArMSw4NiBAQAorPCFkb2N0eXBlIGh0bWw+
IDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgQXN5bmNPdmVyZmxvd1Njcm9sbGluZ0VuYWJsZWQ9
dHJ1ZSBBc3luY0ZyYW1lU2Nyb2xsaW5nRW5hYmxlZD10cnVlIF0gLS0+CisKKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL292ZXJzY3JvbGwtYmVoYXZpb3Itc3VwcG9ydC5qcyI+
PC9zY3JpcHQ+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vZHJhZnRzLmNzc3dnLm9y
Zy9jc3Mtb3ZlcnNjcm9sbC1iZWhhdmlvciI+Cis8c3R5bGU+CisgICAgLnNjcm9sbGluZyB7Cisg
ICAgICAgIG92ZXJmbG93OiBzY3JvbGw7CisgICAgfQorICAgIC5zY3JvbGxDb250ZW50IHsKKyAg
ICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICBiYWNr
Z3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZWQsIGJsdWUpOworICAgIH0KKyAgICAj
cm9vdCB7CisgICAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgICAgaGVpZ2h0OiAyMDBweDsKKyAg
ICB9CisgICAgI3Njcm9sbGVyIHsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBoZWln
aHQ6IDEwMHB4OworICAgICAgICBvdmVyc2Nyb2xsLWJlaGF2aW9yLXk6IGF1dG87CisgICAgfQor
PC9zdHlsZT4KKzxkaXYgaWQ9J3Jvb3QnIGNsYXNzPSJzY3JvbGxpbmciPgorICAgIDxpZnJhbWUg
aWQ9J3Njcm9sbGVyJyBzcmNkb2M9IjxodG1sPjxkaXYgc3R5bGU9J3dpZHRoOiAzMDBweDsgaGVp
Z2h0OiAzMDBweDsnPjwvZGl2PjwvaHRtbD4KKyAgICAgICAgIj48L2lmcmFtZT4KKyAgICA8ZGl2
IGNsYXNzPSJzY3JvbGxDb250ZW50Ij48L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0PgorICAgIGNv
bnN0IHJvb3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncm9vdCcpOworICAgIGNvbnN0IHNj
cm9sbGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Njcm9sbGVyJyk7CisgICAgdmFyIG92
ZXJzY3JvbGxEYXRhcyA9IFtbImF1dG8iLCAiYXV0byIsIHRydWUsIHRydWVdLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFsiY29udGFpbiIsICJhdXRvIiwgZmFsc2UsIHRydWVdLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFsibm9uZSIsICJhdXRvIiwgZmFsc2UsIHRydWVdLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiYXV0byIsICJjb250YWluIiwgdHJ1ZSwgZmFs
c2VdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiY29udGFpbiIsICJjb250YWluIiwg
ZmFsc2UsIGZhbHNlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIm5vbmUiLCAiY29u
dGFpbiIsIGZhbHNlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJhdXRv
IiwgIm5vbmUiLCB0cnVlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJj
b250YWluIiwgIm5vbmUiLCBmYWxzZSwgZmFsc2VdLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFsibm9uZSIsICJub25lIiwgZmFsc2UsIGZhbHNlXV07CisgICAgZnVuY3Rpb24gcmVzZXRU
ZXN0KCkgeworICAgICAgICAvLyBUcnkgdmFyaW91cyBtZXRob2RzIHRvIGVuc3VyZSB0aGUgZWxl
bWVudCBwb3NpdGlvbiBpcyByZXNldCBpbW1lZGlhdGVseS4KKyAgICAgICAgc2Nyb2xsZXIuY29u
dGVudFdpbmRvdy5zY3JvbGxYID0gMzAwOworICAgICAgICBzY3JvbGxlci5jb250ZW50V2luZG93
LnNjcm9sbFkgPSAzMDA7CisgICAgICAgIHNjcm9sbGVyLmNvbnRlbnRXaW5kb3cuc2Nyb2xsVG8o
MzAwLCAzMDApOworICAgICAgICByb290LnNjcm9sbExlZnQgPSAwOworICAgICAgICByb290LnNj
cm9sbFRvcCA9IDA7CisgICAgICAgIHJvb3Quc2Nyb2xsVG8oMCwgMCk7CisgICAgfQorCisgICAg
ZnVuY3Rpb24gb3ZlcnNjcm9sbEJlaGF2aW9yVGVzdCgpIHsKKyAgICAgICAgb3ZlcnNjcm9sbERh
dGFzLmZvckVhY2goKFtvdmVyc2Nyb2xsWCwgb3ZlcnNjcm9sbFksIHByb3BhZ2F0ZVgsIHByb3Bh
Z2F0ZVldKSA9PiB7CisgICAgICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgICAgICAg
ICAgICAgIHJlc2V0VGVzdCgpOworICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSBzY3JvbGxl
ci5jb250ZW50V2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJodG1sIilbMF07
CisgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclggPSBvdmVy
c2Nyb2xsWDsKKyAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9y
WSA9IG92ZXJzY3JvbGxZOworICAgICAgICAgICAgICAgIHZhciB4ID0gc2Nyb2xsZXIuY2xpZW50
V2lkdGggLyAyOworICAgICAgICAgICAgICAgIHZhciB5ID0gc2Nyb2xsZXIuY2xpZW50SGVpZ2h0
IC8gMjsKKyAgICAgICAgICAgICAgICB2YXIgZGVsdGEgPSBnZXREZWx0YXMoInJpZ2h0Iik7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIG1vdXNlV2hlZWxTY3JvbGxBbmRXYWl0KHgsIHksIGRlbHRh
LlgsIGRlbHRhLlksIGRlbHRhLlgsIGRlbHRhLlkpLnRoZW4oKCkgPT4geworICAgICAgICAgICAg
ICAgICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsTGVmdCA+IDAsIHByb3BhZ2F0ZVgsICdD
b250aW51ZSB1cCB0aGUgaG9yaXpvbnRhbCBzY3JvbGwgY2hhaW5pbmcnKTsKKyAgICAgICAgICAg
ICAgICB9KTsKKyAgICAgICAgICAgIH0sICdJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3
aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6ICcgKyBvdmVyc2Nyb2xsWCArICcgJyArIG92ZXJzY3Jv
bGxZICsgJy4nKTsKKworICAgICAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAg
ICAgICAgICByZXNldFRlc3QoKTsKKyAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gc2Nyb2xs
ZXIuY29udGVudFdpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaHRtbCIpWzBd
OworICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JYID0gb3Zl
cnNjcm9sbFg7CisgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlv
clkgPSBvdmVyc2Nyb2xsWTsKKworICAgICAgICAgICAgICAgIHZhciB4ID0gc2Nyb2xsZXIuY2xp
ZW50V2lkdGggLyAyOworICAgICAgICAgICAgICAgIHZhciB5ID0gc2Nyb2xsZXIuY2xpZW50SGVp
Z2h0IC8gMjsKKyAgICAgICAgICAgICAgICB2YXIgZGVsdGEgPSBnZXREZWx0YXMoImRvd24iKTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gbW91c2VXaGVlbFNjcm9sbEFuZFdhaXQoeCwgeSwgZGVs
dGEuWCwgZGVsdGEuWSwgZGVsdGEuWCwgZGVsdGEuWSkudGhlbigoKSA9PiB7CisgICAgICAgICAg
ICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxUb3AgPiAwLCBwcm9wYWdhdGVZLCAn
Q29udGludWUgdXAgdGhlIHZlcnRpY2FsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAgICAgICAg
ICAgIH0pOworICAgICAgICAgICAgfSwgJ0lmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRo
IG92ZXJzY3JvbGwtYmVoYXZpb3I6ICcgKyBvdmVyc2Nyb2xsWCArICcgJyArIG92ZXJzY3JvbGxZ
ICsgJy4nKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgc2Nyb2xsZXIuYWRkRXZlbnRMaXN0
ZW5lcigibG9hZCIsIG92ZXJzY3JvbGxCZWhhdmlvclRlc3QpOworPC9zY3JpcHQ+ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxp
bmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3Jv
bGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmYzOTViNjQ4OGQwODcwYjk1NjFjMDI4Njc5ZDdlMTVhNDdmY2U2ZTkKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhh
dmlvci11bnNjcm9sbGFibGUtZWxlbWVudC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACisK
K1BBU1MgVW5zY3JvbGxhYmxlIGVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92
ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuCitQQVNTIFVuc2Nyb2xsYWJsZSBlbGVtZW50IHZlcnRp
Y2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4KKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVo
YXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xs
aW5nL21hYy9hc3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50Lmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYTQ0OGYyZTBlYTVjYzA3OGYxZjllYTRjMmQ3Zjc4MGVlN2I3ZTU4NAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1v
dmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWwKQEAgLTAsMCArMSw2
NyBAQAorPCFkb2N0eXBlIGh0bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgQXN5bmNPdmVy
Zmxvd1Njcm9sbGluZ0VuYWJsZWQ9dHJ1ZSBBc3luY0ZyYW1lU2Nyb2xsaW5nRW5hYmxlZD10cnVl
IF0gLS0+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3Jl
cG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL292ZXJzY3JvbGwt
YmVoYXZpb3Itc3VwcG9ydC5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0
dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3Mtb3ZlcnNjcm9sbC1iZWhhdmlvciI+Cis8c3R5bGU+
CisgICAgLnNjcm9sbGluZyB7CisgICAgICAgIG92ZXJmbG93OiBzY3JvbGw7CisgICAgfQorICAg
IC5zY3JvbGxDb250ZW50IHsKKyAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICBoZWlnaHQ6
IDMwMHB4OworICAgIH0KKyAgICAjcm9vdCB7CisgICAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAg
ICAgaGVpZ2h0OiAyMDBweDsKKyAgICB9CisgICAgI3Njcm9sbGVyIHsKKyAgICAgICAgd2lkdGg6
IDEwMHB4OworICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgICBvdmVyc2Nyb2xsLWJlaGF2
aW9yOiBub25lOworICAgICAgICBvdmVyZmxvdzogdmlzaWJsZTsKKyAgICAgICAgYmFja2dyb3Vu
ZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmVkLCBibHVlKTsKKyAgICB9Cis8L3N0eWxlPgor
PGRpdiBpZD0icm9vdCIgY2xhc3M9InNjcm9sbGluZyI+CisgICAgPGRpdiBpZD0ic2Nyb2xsZXIi
PgorICAgICAgICA8ZGl2IGNsYXNzPSJzY3JvbGxDb250ZW50Ij48L2Rpdj4KKyAgICA8L2Rpdj4K
KyAgICA8ZGl2IGNsYXNzPSJzY3JvbGxDb250ZW50Ij48L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0
PgorY29uc3Qgcm9vdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyb290Jyk7Citjb25zdCBz
Y3JvbGxlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY3JvbGxlcicpOworCitmdW5jdGlv
biByZXNldFRlc3QoKSB7CisgICAgcm9vdC5zY3JvbGxMZWZ0ID0gMDsKKyAgICByb290LnNjcm9s
bFRvcCA9IDA7CisgICAgcm9vdC5zY3JvbGxUbygwLCAwKTsKK30KKworZnVuY3Rpb24gc3RhcnRU
ZXN0KCkgeworICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgICAgICAgICAgcmVzZXRU
ZXN0KCk7CisgICAgICAgICAgICB2YXIgeCA9IHNjcm9sbGVyLmNsaWVudFdpZHRoIC8gMjsKKyAg
ICAgICAgICAgIHZhciB5ID0gc2Nyb2xsZXIuY2xpZW50SGVpZ2h0IC8gMjsKKyAgICAgICAgICAg
IHZhciBkZWx0YSA9IGdldERlbHRhcygicmlnaHQiKTsKKyAgICAgICAgICAgIHJldHVybiBtb3Vz
ZVdoZWVsU2Nyb2xsQW5kV2FpdCh4LCB5LCBkZWx0YS5YLCBkZWx0YS5ZLCBkZWx0YS5YLCBkZWx0
YS5ZKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Ny
b2xsTGVmdCA+IDAsIHRydWUsICdDb250aW51ZSB1cCB0aGUgaG9yaXpvbnRhbCBzY3JvbGwgY2hh
aW5pbmcnKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9LCAnVW5zY3JvbGxhYmxlIGVsZW1l
bnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUu
Jyk7CisKKyAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAgIHJlc2V0VGVz
dCgpOworICAgICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAg
ICAgICAgICB2YXIgeSA9IHNjcm9sbGVyLmNsaWVudEhlaWdodCAvIDI7CisgICAgICAgICAgICB2
YXIgZGVsdGEgPSBnZXREZWx0YXMoImRvd24iKTsKKyAgICAgICAgICAgIHJldHVybiBtb3VzZVdo
ZWVsU2Nyb2xsQW5kV2FpdCh4LCB5LCBkZWx0YS5YLCBkZWx0YS5ZLCBkZWx0YS5YLCBkZWx0YS5Z
KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xs
VG9wID4gMCwgdHJ1ZSwgJ0NvbnRpbnVlIHVwIHRoZSB2ZXJ0aWNhbCBzY3JvbGwgY2hhaW5pbmcn
KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9LCAnVW5zY3JvbGxhYmxlIGVsZW1lbnQgdmVy
dGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLicpOworfQor
CithZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgc3RhcnRUZXN0KTsKKzwvc2NyaXB0PgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xs
aW5nL21hYy9hc3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3Jv
bGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
N2ZhNTljY2JhNzlhZWZmMzNkYTcwZTkzZDQ4OGEwN2VlYzljNTY5MQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1vdmVyc2Nyb2xsLWJlaGF2
aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorCisK
K1BBU1MgVW5zY3JvbGxhYmxlIGlmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3Zl
cnNjcm9sbC1iZWhhdmlvcjogbm9uZS4KK1BBU1MgVW5zY3JvbGxhYmxlIGlmcmFtZSB2ZXJ0aWNh
bCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1vdmVyc2Nyb2xsLWJlaGF2
aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5n
L21hYy9hc3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zM2VjNWIyNjNjMmI4M2JlMWE1Mjg3MTZjZTg2NTYzZDk3YWNkMWQ2Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJz
Y3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sCkBAIC0wLDAgKzEsNjYgQEAK
KzwhZG9jdHlwZSBodG1sPiA8IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIEFzeW5jT3ZlcmZsb3dT
Y3JvbGxpbmdFbmFibGVkPXRydWUgQXN5bmNGcmFtZVNjcm9sbGluZ0VuYWJsZWQ9dHJ1ZSBdIC0t
PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2
aW9yLXN1cHBvcnQuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczov
L2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLW92ZXJzY3JvbGwtYmVoYXZpb3IiPgorPHN0eWxlPgorICAg
IC5zY3JvbGxpbmcgeworICAgICAgICBvdmVyZmxvdzogc2Nyb2xsOworICAgIH0KKyAgICAuc2Ny
b2xsQ29udGVudCB7CisgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgaGVpZ2h0OiAzMDBw
eDsKKyAgICB9CisgICAgI3Jvb3QgeworICAgICAgICB3aWR0aDogMjAwcHg7CisgICAgICAgIGhl
aWdodDogMjAwcHg7CisgICAgfQorICAgICNzY3JvbGxlciB7CisgICAgICAgIHdpZHRoOiAyMDBw
eDsKKyAgICAgICAgaGVpZ2h0OiAyMDBweDsKKyAgICAgICAgb3ZlcnNjcm9sbC1iZWhhdmlvcjog
bm9uZTsKKyAgICAgICAgb3ZlcmZsb3c6IHZpc2libGU7CisgICAgICAgIGJhY2tncm91bmQ6IGxp
bmVhci1ncmFkaWVudCgxMzVkZWcsIHJlZCwgYmx1ZSk7CisgICAgfQorPC9zdHlsZT4KKzxkaXYg
aWQ9J3Jvb3QnIGNsYXNzPSJzY3JvbGxpbmciPgorICAgIDxpZnJhbWUgaWQ9J3Njcm9sbGVyJyBz
cmNkb2M9IjxodG1sIHN0eWxlPSdvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lOyc+PGRpdiBzdHls
ZT0nd2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDEwMHB4Oyc+PC9kaXY+PC9odG1sPgorICAgICAgICAi
PjwvaWZyYW1lPgorICAgIDxkaXYgY2xhc3M9InNjcm9sbENvbnRlbnQiPjwvZGl2PgorPC9kaXY+
CisKKzxzY3JpcHQ+Citjb25zdCByb290ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jvb3Qn
KTsKK2NvbnN0IHNjcm9sbGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Njcm9sbGVyJyk7
CisKK2Z1bmN0aW9uIHJlc2V0VGVzdCgpIHsKKyAgICByb290LnNjcm9sbExlZnQgPSAwOworICAg
IHJvb3Quc2Nyb2xsVG9wID0gMDsKKyAgICByb290LnNjcm9sbFRvKDAsIDApOworfQorCitmdW5j
dGlvbiBzdGFydFRlc3QoKSB7CisgICAgICAgIHByb21pc2VfdGVzdCgoKSA9PiB7CisgICAgICAg
ICAgICByZXNldFRlc3QoKTsKKyAgICAgICAgICAgIHZhciB4ID0gc2Nyb2xsZXIuY2xpZW50V2lk
dGggLyAyOworICAgICAgICAgICAgdmFyIHkgPSBzY3JvbGxlci5jbGllbnRIZWlnaHQgLyAyOwor
ICAgICAgICAgICAgdmFyIGRlbHRhID0gZ2V0RGVsdGFzKCJyaWdodCIpOworICAgICAgICAgICAg
cmV0dXJuIG1vdXNlV2hlZWxTY3JvbGxBbmRXYWl0KHgsIHksIGRlbHRhLlgsIGRlbHRhLlksIGRl
bHRhLlgsIGRlbHRhLlkpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVh
bHMocm9vdC5zY3JvbGxMZWZ0ID4gMCwgdHJ1ZSwgJ0NvbnRpbnVlIHVwIHRoZSBob3Jpem9udGFs
IHNjcm9sbCBjaGFpbmluZycpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0sICdVbnNjcm9s
bGFibGUgaWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2
aW9yOiBub25lLicpOworCisgICAgICAgIHByb21pc2VfdGVzdCgoKSA9PiB7CisgICAgICAgICAg
ICByZXNldFRlc3QoKTsKKyAgICAgICAgICAgIHZhciB4ID0gc2Nyb2xsZXIuY2xpZW50V2lkdGgg
LyAyOworICAgICAgICAgICAgdmFyIHkgPSBzY3JvbGxlci5jbGllbnRIZWlnaHQgLyAyOworICAg
ICAgICAgICAgdmFyIGRlbHRhID0gZ2V0RGVsdGFzKCJkb3duIik7CisgICAgICAgICAgICByZXR1
cm4gbW91c2VXaGVlbFNjcm9sbEFuZFdhaXQoeCwgeSwgZGVsdGEuWCwgZGVsdGEuWSwgZGVsdGEu
WCwgZGVsdGEuWSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhy
b290LnNjcm9sbFRvcCA+IDAsIHRydWUsICdDb250aW51ZSB1cCB0aGUgdmVydGljYWwgc2Nyb2xs
IGNoYWluaW5nJyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSwgJ1Vuc2Nyb2xsYWJsZSBp
ZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25l
LicpOworfQorCithZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgc3RhcnRUZXN0KTsKKzwvc2NyaXB0
PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3Qvc2Nyb2xsaW5nL3Jlc291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXN1cHBvcnQuanMgYi9M
YXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9yZXNvdXJjZXMvb3ZlcnNjcm9sbC1iZWhhdmlvci1z
dXBwb3J0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNiZDIyMmU5MGI1MmExOTMwYjdmY2ZlNDQyM2U5NDU4M2Mw
NDYwMGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9yZXNv
dXJjZXMvb3ZlcnNjcm9sbC1iZWhhdmlvci1zdXBwb3J0LmpzCkBAIC0wLDAgKzEsMzkgQEAKK2Z1
bmN0aW9uIGdldERlbHRhcyhkaXJlY3Rpb24pIHsKKyAgICB2YXIgZGVsdGFYID0gMDsKKyAgICB2
YXIgZGVsdGFZID0gMDsKKyAgICBpZiAoZGlyZWN0aW9uID09ICJkb3duIikKKyAgICAgICAgZGVs
dGFZID0gLTUKKyAgICBlbHNlIGlmIChkaXJlY3Rpb24gPT0gInVwIikKKyAgICAgICAgZGVsdGFZ
ID0gNTsKKyAgICBlbHNlIGlmIChkaXJlY3Rpb24gPT0gInJpZ2h0IikKKyAgICAgICAgZGVsdGFY
ID0gLTU7CisgICAgZWxzZSBpZiAoZGlyZWN0aW9uID09ICJsZWZ0IikKKyAgICAgICAgZGVsdGFY
ID0gNTsKKyAgICByZXR1cm4geworICAgICAgICBYOiBkZWx0YVgsCisgICAgICAgIFk6IGRlbHRh
WQorICAgIH07Cit9CisKK2FzeW5jIGZ1bmN0aW9uIG1vdXNlV2hlZWxTY3JvbGxBbmRXYWl0KHgs
IHksIGJlZ2luWCwgYmVnaW5ZLCBkZWx0YVgsIGRlbHRhWSkKK3sKKyAgICBpZiAoYmVnaW5YID09
PSB1bmRlZmluZWQpCisgICAgICAgIGJlZ2luWCA9IDA7CisgICAgaWYgKGJlZ2luWSA9PT0gdW5k
ZWZpbmVkKQorICAgICAgICBiZWdpblkgPSAtMTsKKyAgICBpZiAoZGVsdGFYID09PSB1bmRlZmlu
ZWQpCisgICAgICAgIGRlbHRhWCA9IDA7CisgICAgaWYgKGRlbHRhWSA9PT0gdW5kZWZpbmVkKQor
ICAgICAgICBkZWx0YVkgPSAtMTA7CisKKyAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVu
dHMoKTsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoYmVnaW5YLCBiZWdpblks
ICJiZWdhbiIsICJub25lIik7CisgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGRlbHRhWCwgZGVsdGFZLCAiY2hhbmdlZCIsICJub25lIik7Cisg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAs
IDAsICJlbmRlZCIsICJub25lIik7CisgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4g
eworICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgICAgICAgIHJlcXVlc3RBbmltYXRp
b25GcmFtZShyZXNvbHZlKTsKKyAgICAgICAgfSwgNTAwKTsKKyAgICB9KTsKK30KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445595</attachid>
            <date>2021-12-01 11:21:02 -0800</date>
            <delta_ts>2021-12-01 11:48:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220139-20211201112101.patch</filename>
            <type>text/plain</type>
            <size>33579</size>
            <attacher name="Nikos Mouchtaris">nmouchtaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MzUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGJiNmQyZjJmYmNkN2I3
ODU1MzIxY2U1YjgwMWQ1YzJmYWNiMzhmNC4uODBhYWE0YzRhYWIwNzIyNjM2NGFhM2M1ZTE0YzA2
YTQ4ZDNiNjNmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDIxLTEyLTAxICBOaWtv
bGFvcyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxl
bWVudCBDU1Mgb3ZlcnNjcm9sbC1iZWhhdmlvciBmb3IgYXN5bmNocm9ub3VzIHNjcm9sbCBvbiBN
YWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDEz
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNwbGl0
IHVwIHBhdGNoIGJ5IENhdGhpZSBDaGVuIGFuZCBGcmVkZXJpYyBXYW5nLiBBZGQgZnVuY3Rpb24g
Zm9yIGJsb2NraW5nIHNjcm9sbCBjaGFpbmluZworICAgICAgICBhbmQgZmlsdGVyaW5nIHNjcm9s
bCBkZWx0YSBkZXBlbmRpbmcgb24gdGhlIHZhbHVlcyBvZiBvdmVyc2Nyb2xsIGJlaGF2aW9yIGZv
ciBhIHNjcm9sbGluZworICAgICAgICBub2RlLiBUaGlzIHBhdGNoIGlzIGZvciBhc3luY2hyb25v
dXMgc2Nyb2xsaW5nIG9ubHkuCisKKyAgICAgICAgVGVzdHM6IGZhc3Qvc2Nyb2xsaW5nL21hYy9h
c3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQuaHRtbAorICAgICAgICAgICAgICAgZmFz
dC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0bWwKKyAg
ICAgICAgICAgICAgIGZhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9y
LXVuc2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvc2Nyb2xsaW5n
L21hYy9hc3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUuaHRtbAor
CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxpbmdUcmVlOjpzaG91bGRCbG9ja1Njcm9sbENoYWluaW5nV2l0aE5vZGUp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZTo6aGFuZGxlV2hlZWxFdmVudFdpdGhO
b2RlKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmg6CisgICAgICAg
ICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaDoKKyAgICAgICAg
KiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdh
dGVNYWM6OmFsbG93c0hvcml6b250YWxTdHJldGNoaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OmFsbG93c1ZlcnRpY2Fs
U3RyZXRjaGluZyBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9z
aXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWNvbXBvc2l0ZUNoYW5nZVJlcXVpcmVzR2Vv
bWV0cnlVcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpy
b290T3JCb2R5U3R5bGVDaGFuZ2VkKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmNoYW5nZVJlcXVpcmVz
UmVjb21wb3NpdGVMYXllciBjb25zdCk6CisKIDIwMjEtMTEtMzAgIFNpbW9uIEZyYXNlciAgPHNp
bW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUGFzcyB0aGUgdGltZXN0YW1wIGZvciBz
Y3JvbGxpbmcgdGhyZWFkIGFuaW1hdGlvbnMgdGhyb3VnaCBhbGwgdGhlIHNlcnZpY2VTY3JvbGxB
bmltYXRpb24oKSBjYWxscwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nVHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdUcmVlLmNwcAppbmRleCAyZGU2NWMyMmY5YjdmOTQwZTFlYmNmZmJjNDVlY2Q2MDZhNDk5
Yzg0Li5jZmVjYzJjOTcxNzNiZWFjZTMwNGQyODZiNWZhOTI3ZmM5MTdiYjlhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcApAQCAtMzEsNiAr
MzEsNyBAQAogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAj
aW5jbHVkZSAiUGxhdGZvcm1XaGVlbEV2ZW50LmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nRWZmZWN0
c0NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9k
ZS5oIgogI2luY2x1ZGUgIlNjcm9sbGluZ1N0YXRlVHJlZS5oIgogI2luY2x1ZGUgIlNjcm9sbGlu
Z1RyZWVGcmFtZVNjcm9sbGluZ05vZGUuaCIKQEAgLTE5OSwxMiArMjAwLDM3IEBAIFdoZWVsRXZl
bnRIYW5kbGluZ1Jlc3VsdCBTY3JvbGxpbmdUcmVlOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBs
YXRmb3JtV2hlZWxFdmVuCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorYm9vbCBTY3JvbGxpbmdU
cmVlOjpzaG91bGRCbG9ja1Njcm9sbENoYWluaW5nV2l0aE5vZGUoY29uc3QgU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGUmIHNjcm9sbGluZ05vZGUsIFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxF
dmVudCwgYm9vbCYgaGFuZGxlZCkKK3sKKyAgICBGbG9hdFNpemUgZmlsdGVyZWREZWx0YSh3aGVl
bEV2ZW50LmRlbHRhWCgpLCB3aGVlbEV2ZW50LmRlbHRhWSgpKTsKKyNpZiBQTEFURk9STShNQUMp
CisgICAgYXV0byBiaWFzZWREZWx0YSA9IFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjp3aGVl
bERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbCh3aGVlbEV2ZW50KTsKKyNlbHNlCisgICAgYXV0
byBiaWFzZWREZWx0YSA9IHdoZWVsRXZlbnQuZGVsdGEoKTsKKyNlbmRpZgorICAgIGlmIChzY3Jv
bGxpbmdOb2RlLmhhc0hvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSB8fCBzY3JvbGxpbmdO
b2RlLmhhc1ZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkpIHsKKyAgICAgICAgaWYgKHNjcm9s
bGluZ05vZGUuaGFzSG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpICYmICFiaWFzZWREZWx0
YS5oZWlnaHQoKSAmJiBiaWFzZWREZWx0YS53aWR0aCgpKSB7CisgICAgICAgICAgICBoYW5kbGVk
ID0gZmFsc2U7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBp
ZiAoKHNjcm9sbGluZ05vZGUuaGFzSG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpICYmIHNj
cm9sbGluZ05vZGUuaGFzVmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSkgfHwgKHNjcm9sbGlu
Z05vZGUuaGFzSG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpICYmICFiaWFzZWREZWx0YS5o
ZWlnaHQoKSkgfHwgKHNjcm9sbGluZ05vZGUuaGFzVmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3Io
KSAmJiAhYmlhc2VkRGVsdGEud2lkdGgoKSkpIHsKKyAgICAgICAgICAgIGhhbmRsZWQgPSB0cnVl
OworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgZmlsdGVyZWRE
ZWx0YS5zZXRXaWR0aChzY3JvbGxpbmdOb2RlLmhhc0hvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZp
b3IoKSB8fCAoc2Nyb2xsaW5nTm9kZS5oYXNWZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpICYm
ICFiaWFzZWREZWx0YS53aWR0aCgpKSA/IDAgOiBmaWx0ZXJlZERlbHRhLndpZHRoKCkpOworICAg
ICAgICBmaWx0ZXJlZERlbHRhLnNldEhlaWdodChzY3JvbGxpbmdOb2RlLmhhc1ZlcnRpY2FsT3Zl
cnNjcm9sbEJlaGF2aW9yKCkgfHwgKHNjcm9sbGluZ05vZGUuaGFzSG9yaXpvbnRhbE92ZXJzY3Jv
bGxCZWhhdmlvcigpICYmICFiaWFzZWREZWx0YS5oZWlnaHQoKSkgPyAwIDogZmlsdGVyZWREZWx0
YS5oZWlnaHQoKSk7CisgICAgICAgIHdoZWVsRXZlbnQgPSB3aGVlbEV2ZW50LmNvcHlXaXRoRGVs
dGFBbmRWZWxvY2l0eShmaWx0ZXJlZERlbHRhLCB3aGVlbEV2ZW50LnNjcm9sbGluZ1ZlbG9jaXR5
KCkpOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIFdoZWVsRXZlbnRIYW5kbGluZ1Jl
c3VsdCBTY3JvbGxpbmdUcmVlOjpoYW5kbGVXaGVlbEV2ZW50V2l0aE5vZGUoY29uc3QgUGxhdGZv
cm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBPcHRpb25TZXQ8V2hlZWxFdmVudFByb2Nlc3NpbmdT
dGVwcz4gcHJvY2Vzc2luZ1N0ZXBzLCBTY3JvbGxpbmdUcmVlTm9kZSogbm9kZSwgRXZlbnRUYXJn
ZXRpbmcgZXZlbnRUYXJnZXRpbmcpCiB7CisgICAgUGxhdGZvcm1XaGVlbEV2ZW50IGFkanVzdGVk
V2hlZWxFdmVudCA9IFBsYXRmb3JtV2hlZWxFdmVudCh3aGVlbEV2ZW50KTsKICAgICB3aGlsZSAo
bm9kZSkgewogICAgICAgICBpZiAoaXM8U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU+KCpub2Rl
KSkgewogICAgICAgICAgICAgYXV0byYgc2Nyb2xsaW5nTm9kZSA9IGRvd25jYXN0PFNjcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlPigqbm9kZSk7Ci0gICAgICAgICAgICBhdXRvIHJlc3VsdCA9IHNj
cm9sbGluZ05vZGUuaGFuZGxlV2hlZWxFdmVudCh3aGVlbEV2ZW50LCBldmVudFRhcmdldGluZyk7
CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IHNjcm9sbGluZ05vZGUuaGFuZGxlV2hlZWxFdmVu
dChhZGp1c3RlZFdoZWVsRXZlbnQsIGV2ZW50VGFyZ2V0aW5nKTsKIAogICAgICAgICAgICAgaWYg
KHJlc3VsdC53YXNIYW5kbGVkKSB7CiAgICAgICAgICAgICAgICAgbV9sYXRjaGluZ0NvbnRyb2xs
ZXIubm9kZURpZEhhbmRsZUV2ZW50KHNjcm9sbGluZ05vZGUuc2Nyb2xsaW5nTm9kZUlEKCksIHBy
b2Nlc3NpbmdTdGVwcywgd2hlZWxFdmVudCwgbV9hbGxvd0xhdGNoaW5nKTsKQEAgLTIxNCw2ICsy
NDAsMTYgQEAgV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0IFNjcm9sbGluZ1RyZWU6OmhhbmRsZVdo
ZWVsRXZlbnRXaXRoTm9kZShjb25zdCBQbGF0Zm9ybVcKIAogICAgICAgICAgICAgaWYgKHJlc3Vs
dC5uZWVkc01haW5UaHJlYWRQcm9jZXNzaW5nKCkgfHwgZXZlbnRUYXJnZXRpbmcgIT0gRXZlbnRU
YXJnZXRpbmc6OlByb3BhZ2F0ZSkKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAg
ICAgICAgICAgCisgICAgICAgICAgICBib29sIGhhbmRsZWQgPSBmYWxzZTsKKyAgICAgICAgICAg
IGlmIChzaG91bGRCbG9ja1Njcm9sbENoYWluaW5nV2l0aE5vZGUoc2Nyb2xsaW5nTm9kZSwgYWRq
dXN0ZWRXaGVlbEV2ZW50LCBoYW5kbGVkKSkgeworICAgICAgICAgICAgICAgIGlmICghaGFuZGxl
ZCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdDo6
dW5oYW5kbGVkKCk7CisKKyAgICAgICAgICAgICAgICBtX2xhdGNoaW5nQ29udHJvbGxlci5ub2Rl
RGlkSGFuZGxlRXZlbnQoc2Nyb2xsaW5nTm9kZS5zY3JvbGxpbmdOb2RlSUQoKSwgcHJvY2Vzc2lu
Z1N0ZXBzLCB3aGVlbEV2ZW50LCBtX2FsbG93TGF0Y2hpbmcpOworICAgICAgICAgICAgICAgIG1f
Z2VzdHVyZVN0YXRlLm5vZGVEaWRIYW5kbGVFdmVudChzY3JvbGxpbmdOb2RlLnNjcm9sbGluZ05v
ZGVJRCgpLCB3aGVlbEV2ZW50KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gV2hlZWxFdmVudEhh
bmRsaW5nUmVzdWx0OjpoYW5kbGVkKCk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAg
ICAgICBpZiAoaXM8U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsUHJveHlOb2RlPigqbm9kZSkp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1Ry
ZWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuaAppbmRl
eCBjY2QyMjcxM2I5ODIyOGFlNjAwMTgzZDMwOTQ0ZThhOTJiYjI0M2M1Li4wYjkyYzdmZTdjZWM1
NGZlM2JkZWZjYWIzM2EyOGYxNTZmYTViNzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5oCkBAIC0yMzMsNiArMjMzLDggQEAgcHVibGljOgogICAg
IHZvaWQgYWRkUGVuZGluZ1Njcm9sbFVwZGF0ZShTY3JvbGxVcGRhdGUmJik7CiAgICAgVmVjdG9y
PFNjcm9sbFVwZGF0ZT4gdGFrZVBlbmRpbmdTY3JvbGxVcGRhdGVzKCk7CiAgICAgdmlydHVhbCB2
b2lkIHJlbW92ZVBlbmRpbmdTY3JvbGxBbmltYXRpb25Gb3JOb2RlKFNjcm9sbGluZ05vZGVJRCkg
eyB9CisgICAgCisgICAgYm9vbCBzaG91bGRCbG9ja1Njcm9sbENoYWluaW5nV2l0aE5vZGUoY29u
c3QgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUmLCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBib29s
Jik7CiAKIHByb3RlY3RlZDoKICAgICBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQgaGFuZGxlV2hl
ZWxFdmVudFdpdGhOb2RlKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIE9wdGlvblNldDxXaGVl
bEV2ZW50UHJvY2Vzc2luZ1N0ZXBzPiwgU2Nyb2xsaW5nVHJlZU5vZGUqLCBFdmVudFRhcmdldGlu
ZyA9IEV2ZW50VGFyZ2V0aW5nOjpQcm9wYWdhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmgKaW5kZXgg
YjlmNTQzMDcwMTZlMjA4ZDRhNmM1ZjBiM2UxMzFkOTk3NWQ4ZTY1NS4uNGE0NzUxOGZkYTI5Nzky
MjAyOWY1ODczZGVhZTgxMGM3MmIxNGYyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oCkBAIC0xNTks
NiArMTU5LDExIEBAIHByb3RlY3RlZDoKIAogICAgIGJvb2wgYWxsb3dzSG9yaXpvbnRhbFNjcm9s
bGluZygpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzLmFsbG93c0hv
cml6b250YWxTY3JvbGxpbmc7IH0KICAgICBib29sIGFsbG93c1ZlcnRpY2FsU2Nyb2xsaW5nKCkg
Y29uc3QgeyByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMuYWxsb3dzVmVydGljYWxT
Y3JvbGxpbmc7IH0KKyAgICAKKyAgICBPdmVyc2Nyb2xsQmVoYXZpb3IgaG9yaXpvbnRhbE92ZXJz
Y3JvbGxCZWhhdmlvcigpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJz
Lmhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3I7IH0KKyAgICBPdmVyc2Nyb2xsQmVoYXZpb3Ig
dmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGFibGVB
cmVhUGFyYW1ldGVycy52ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcjsgfQorICAgIGJvb2wgaGFz
SG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsYWJs
ZUFyZWFQYXJhbWV0ZXJzLmhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IgIT0gT3ZlcnNjcm9s
bEJlaGF2aW9yOjpBdXRvOyB9CisgICAgYm9vbCBoYXNWZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlv
cigpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzLnZlcnRpY2FsT3Zl
cnNjcm9sbEJlaGF2aW9yICE9IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0bzsgfQogCiAgICAgdm9p
ZCBkdW1wUHJvcGVydGllcyhXVEY6OlRleHRTdHJlYW0mLCBPcHRpb25TZXQ8U2Nyb2xsaW5nU3Rh
dGVUcmVlQXNUZXh0QmVoYXZpb3I+KSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
RGVsZWdhdGVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5tbQppbmRleCBiZjAxMzJkMmQ2NDgxNmZm
YWUxMjMxNGY3YjgxMjIwNDFhMTljMzYwLi4xM2ZiMGVjNzRlYTRlMmVhYTlmOTliYTM4MjVhYTM5
MTc2ZTcwODkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMv
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZU1hYy5tbQpAQCAtMjEyLDYgKzIxMiw5IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGVEZWxlZ2F0ZU1hYzo6c2VydmljZVNjcm9sbEFuaW1hdGlvbihNb25vdG9uaWNUaW1lCiAKIGJv
b2wgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6YWxsb3dzSG9yaXpvbnRh
bFN0cmV0Y2hpbmcoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50KSBjb25zdAog
eworICAgIGlmIChzY3JvbGxpbmdOb2RlKCkuaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigp
ID09IE92ZXJzY3JvbGxCZWhhdmlvcjo6Tm9uZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IAogICAgIHN3aXRjaCAoaG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkoKSkgewogICAgIGNhc2Ug
U2Nyb2xsRWxhc3RpY2l0eTo6QXV0b21hdGljOiB7CiAgICAgICAgIGJvb2wgc2Nyb2xsYmFyc0Fs
bG93U3RyZXRjaGluZyA9IGFsbG93c0hvcml6b250YWxTY3JvbGxpbmcoKSB8fCAhYWxsb3dzVmVy
dGljYWxTY3JvbGxpbmcoKTsKQEAgLTIzNSw2ICsyMzgsOSBAQCBib29sIFNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OmFsbG93c0hvcml6b250YWxTdHJldGNoaW5nKGNvbnN0
IFBsYQogCiBib29sIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OmFsbG93
c1ZlcnRpY2FsU3RyZXRjaGluZyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQp
IGNvbnN0CiB7CisgICAgaWYgKHNjcm9sbGluZ05vZGUoKS52ZXJ0aWNhbE92ZXJzY3JvbGxCZWhh
dmlvcigpID09IE92ZXJzY3JvbGxCZWhhdmlvcjo6Tm9uZSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIAogICAgIHN3aXRjaCAodmVydGljYWxTY3JvbGxFbGFzdGljaXR5KCkpIHsKICAgICBj
YXNlIFNjcm9sbEVsYXN0aWNpdHk6OkF1dG9tYXRpYzogewogICAgICAgICBib29sIHNjcm9sbGJh
cnNBbGxvd1N0cmV0Y2hpbmcgPSBhbGxvd3NWZXJ0aWNhbFNjcm9sbGluZygpIHx8ICFhbGxvd3NI
b3Jpem9udGFsU2Nyb2xsaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCmluZGV4IGJmMGJmZGUwYzU5NjhmMWJhM2MwMTQyNmQ5
YjNkZDc3MzExMmRhNGMuLjBkMzg5MmNlZTVmY2UwNTg4YTJhNzllMjUwYjMwNjM2MjY2YTY1MWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0
b3IuY3BwCkBAIC0xNjUyLDcgKzE2NTIsOSBAQCBzdGF0aWMgYm9vbCByZWNvbXBvc2l0ZUNoYW5n
ZVJlcXVpcmVzR2VvbWV0cnlVcGRhdGUoY29uc3QgUmVuZGVyU3R5bGUmIG9sZFN0eWxlLAogICAg
ICAgICB8fCBvbGRTdHlsZS5vZmZzZXRQb3NpdGlvbigpICE9IG5ld1N0eWxlLm9mZnNldFBvc2l0
aW9uKCkKICAgICAgICAgfHwgb2xkU3R5bGUub2Zmc2V0RGlzdGFuY2UoKSAhPSBuZXdTdHlsZS5v
ZmZzZXREaXN0YW5jZSgpCiAgICAgICAgIHx8IG9sZFN0eWxlLm9mZnNldFJvdGF0ZSgpICE9IG5l
d1N0eWxlLm9mZnNldFJvdGF0ZSgpCi0gICAgICAgIHx8ICFhcmVQb2ludGluZ1RvRXF1YWxEYXRh
KG9sZFN0eWxlLmNsaXBQYXRoKCksIG5ld1N0eWxlLmNsaXBQYXRoKCkpOworICAgICAgICB8fCAh
YXJlUG9pbnRpbmdUb0VxdWFsRGF0YShvbGRTdHlsZS5jbGlwUGF0aCgpLCBuZXdTdHlsZS5jbGlw
UGF0aCgpCisgICAgICAgIHx8IG9sZFN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclgoKSAhPSBuZXdT
dHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JYKCkKKyAgICAgICAgfHwgb2xkU3R5bGUub3ZlcnNjcm9s
bEJlaGF2aW9yWSgpICE9IG5ld1N0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclkoKSk7CiB9CiAKIHZv
aWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpsYXllclN0eWxlQ2hhbmdlZChTdHlsZURpZmZlcmVu
Y2UgZGlmZiwgUmVuZGVyTGF5ZXImIGxheWVyLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUp
CkBAIC0zOTQ1LDYgKzM5NDcsMTEgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJvb3RP
ckJvZHlTdHlsZUNoYW5nZWQoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnMKICAgICBib29s
IGhhZEZpeGVkQmFja2dyb3VuZCA9IG9sZFN0eWxlICYmIG9sZFN0eWxlLT5oYXNFbnRpcmVseUZp
eGVkQmFja2dyb3VuZCgpOwogICAgIGlmIChoYWRGaXhlZEJhY2tncm91bmQgIT0gcmVuZGVyZXIu
c3R5bGUoKS5oYXNFbnRpcmVseUZpeGVkQmFja2dyb3VuZCgpKQogICAgICAgICByb290TGF5ZXJD
b25maWd1cmF0aW9uQ2hhbmdlZCgpOworICAgIAorICAgIGlmIChvbGRTdHlsZSAmJiAob2xkU3R5
bGUtPm92ZXJzY3JvbGxCZWhhdmlvclgoKSAhPSByZW5kZXJlci5zdHlsZSgpLm92ZXJzY3JvbGxC
ZWhhdmlvclgoKSB8fCBvbGRTdHlsZS0+b3ZlcnNjcm9sbEJlaGF2aW9yWSgpICE9IHJlbmRlcmVy
LnN0eWxlKCkub3ZlcnNjcm9sbEJlaGF2aW9yWSgpKSkgeworICAgICAgICBpZiAoYXV0byogbGF5
ZXIgPSBtX3JlbmRlclZpZXcubGF5ZXIoKSkKKyAgICAgICAgICAgIGxheWVyLT5zZXROZWVkc0Nv
bXBvc2l0aW5nR2VvbWV0cnlVcGRhdGUoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVuZGVyTGF5ZXJD
b21wb3NpdG9yOjpyb290QmFja2dyb3VuZENvbG9yT3JUcmFuc3BhcmVuY3lDaGFuZ2VkKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCmluZGV4IDZi
MzYzOGQxYThmMGUxZTY3NGEzNWZlOWNmMmUzY2I1ZWY2YjhkMGEuLjZlZDYyNzg4MjIxODY5ZmZh
Y2FmNjQ0MGM3YTQ0NGUyOTdkOTNhZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlLmNwcApAQCAtMTE5Niw3ICsxMTk2LDkgQEAgYm9vbCBSZW5kZXJT
dHlsZTo6Y2hhbmdlUmVxdWlyZXNSZWNvbXBvc2l0ZUxheWVyKGNvbnN0IFJlbmRlclN0eWxlJiBv
dGhlciwgT3B0aW8KICAgICAgICAgICAgIHx8IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmJhY2tm
YWNlVmlzaWJpbGl0eSAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5iYWNrZmFjZVZp
c2liaWxpdHkKICAgICAgICAgICAgIHx8IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnBlcnNwZWN0
aXZlICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnBlcnNwZWN0aXZlCiAgICAgICAg
ICAgICB8fCBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5wZXJzcGVjdGl2ZU9yaWdpblggIT0gb3Ro
ZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+cGVyc3BlY3RpdmVPcmlnaW5YCi0gICAgICAgICAg
ICB8fCBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5wZXJzcGVjdGl2ZU9yaWdpblkgIT0gb3RoZXIu
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+cGVyc3BlY3RpdmVPcmlnaW5ZKQorICAgICAgICAgICAg
fHwgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+cGVyc3BlY3RpdmVPcmlnaW5ZICE9IG90aGVyLm1f
cmFyZU5vbkluaGVyaXRlZERhdGEtPnBlcnNwZWN0aXZlT3JpZ2luWQorICAgICAgICAgICAgfHwg
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+b3ZlcnNjcm9sbEJlaGF2aW9yWCAhPSBvdGhlci5tX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLT5vdmVyc2Nyb2xsQmVoYXZpb3JYCisgICAgICAgICAgICB8fCBt
X3JhcmVOb25Jbmhlcml0ZWREYXRhLT5vdmVyc2Nyb2xsQmVoYXZpb3JZICE9IG90aGVyLm1fcmFy
ZU5vbkluaGVyaXRlZERhdGEtPm92ZXJzY3JvbGxCZWhhdmlvclkpCiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5YjA2M2Q0NjEwOGJlZWNiNzlhMjJkYzhlMWE4M2Qz
OWFjNzNlMjJiLi5lNTUyMWI3NjY0Y2I1MzFjNDAzMDRkNGYzYTc4OGIzNDE5ZTZhOGI4IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjIgQEAKKzIwMjEtMTItMDEgIE5pa29sYW9zIE1vdWNodGFyaXMgIDxubW91
Y2h0YXJpc0BhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IENTUyBvdmVyc2Nyb2xsLWJl
aGF2aW9yIGZvciBhc3luY2hyb25vdXMgc2Nyb2xsIG9uIE1hYworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwMTM5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMt
b3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9s
bC1iZWhhdmlvci1pZnJhbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Nj
cm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUuaHRtbDogQWRkZWQu
CisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3It
dW5zY3JvbGxhYmxlLWVsZW1lbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxl
bWVudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3Zl
cnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3It
dW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGlu
Zy9yZXNvdXJjZXMvb3ZlcnNjcm9sbC1iZWhhdmlvci1zdXBwb3J0LmpzOiBBZGRlZC4KKyAgICAg
ICAgKGdldERlbHRhcyk6CisgICAgICAgIChhc3luYyBtb3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCk6
CisKIDIwMjEtMTEtMzAgIFJvYmVydCBKZW5uZXIgIDxKZW5uZXJAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJFQkFTRUxJTkUgWyBNb250ZXJleSBdZmFzdC9jc3MvY29udGludWF0aW9uQ3Jhc2guaHRt
bCAobGF5b3V0LXRlc3QpIGlzIGEgY29uc3RhbnQgdGV4dCBmYWlsdXJlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci1l
bGVtZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL21hYy9hc3lu
Yy1vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI3
MTUwZmY2MGI1ZGJkZDBiNGE3YWM2ZjgzZmI1NmY1N2NkMmNkODIKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlv
ci1lbGVtZW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIwIEBACisKK1BBU1MgRWxlbWVudCBo
b3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBhdXRv
LgorUEFTUyBFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhh
dmlvcjogYXV0byBhdXRvLgorUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0
aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGF1dG8uCitQQVNTIEVsZW1lbnQgdmVydGlj
YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGF1dG8uCitQ
QVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZp
b3I6IG5vbmUgYXV0by4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92
ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgYXV0by4KK1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNj
cm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBjb250YWluLgorUEFTUyBF
bGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0
byBjb250YWluLgorUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVy
c2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGNvbnRhaW4uCitQQVNTIEVsZW1lbnQgdmVydGljYWwg
c2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGNvbnRhaW4uCitQ
QVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZp
b3I6IG5vbmUgY29udGFpbi4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRo
IG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgY29udGFpbi4KK1BBU1MgRWxlbWVudCBob3Jpem9u
dGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBub25lLgorUEFT
UyBFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjog
YXV0byBub25lLgorUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVy
c2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIG5vbmUuCitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Ny
b2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIG5vbmUuCitQQVNTIEVs
ZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5v
bmUgbm9uZS4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3Jv
bGwtYmVoYXZpb3I6IG5vbmUgbm9uZS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9z
Y3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxl
bWVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MTM3YjljYjc3OWE5MTY3ZGIyMjUxZDMwNjdlNDYzZWFj
OTQ2MzcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMv
YXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50Lmh0bWwKQEAgLTAsMCArMSw4NiBAQAor
PCFkb2N0eXBlIGh0bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgQXN5bmNPdmVyZmxvd1Nj
cm9sbGluZ0VuYWJsZWQ9dHJ1ZSBBc3luY0ZyYW1lU2Nyb2xsaW5nRW5hYmxlZD10cnVlIF0gLS0+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2aW9y
LXN1cHBvcnQuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL2Ry
YWZ0cy5jc3N3Zy5vcmcvY3NzLW92ZXJzY3JvbGwtYmVoYXZpb3IiPgorPHN0eWxlPgorICAgIC5z
Y3JvbGxpbmcgeworICAgICAgICBvdmVyZmxvdzogc2Nyb2xsOworICAgIH0KKyAgICAuc2Nyb2xs
Q29udGVudCB7CisgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgaGVpZ2h0OiAzMDBweDsK
KyAgICB9CisgICAgI3Jvb3QgeworICAgICAgICB3aWR0aDogMjAwcHg7CisgICAgICAgIGhlaWdo
dDogMjAwcHg7CisgICAgfQorICAgICNzY3JvbGxlciB7CisgICAgICAgIHdpZHRoOiAxMDBweDsK
KyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICB9Cis8L3N0eWxlPgorPGRpdiBpZD0ncm9vdCcg
Y2xhc3M9InNjcm9sbGluZyI+CisgICAgPGRpdiBpZD0nc2Nyb2xsZXInIGNsYXNzPSJzY3JvbGxp
bmciPgorICAgICAgICA8ZGl2IGNsYXNzPSJzY3JvbGxDb250ZW50Ij48L2Rpdj4KKyAgICA8L2Rp
dj4KKyAgICA8ZGl2IGNsYXNzPSJzY3JvbGxDb250ZW50Ij48L2Rpdj4KKzwvZGl2PgorCis8c2Ny
aXB0PgorY29uc3Qgcm9vdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyb290Jyk7Citjb25z
dCBzY3JvbGxlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY3JvbGxlcicpOwordmFyIG92
ZXJzY3JvbGxEYXRhcyA9IFtbImF1dG8iLCAiYXV0byIsIHRydWUsIHRydWVdLAorICAgICAgICAg
ICAgICAgICAgICAgICAgWyJjb250YWluIiwgImF1dG8iLCBmYWxzZSwgdHJ1ZV0sCisgICAgICAg
ICAgICAgICAgICAgICAgICBbIm5vbmUiLCAiYXV0byIsIGZhbHNlLCB0cnVlXSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIFsiYXV0byIsICJjb250YWluIiwgdHJ1ZSwgZmFsc2VdLAorICAgICAg
ICAgICAgICAgICAgICAgICAgWyJjb250YWluIiwgImNvbnRhaW4iLCBmYWxzZSwgZmFsc2VdLAor
ICAgICAgICAgICAgICAgICAgICAgICAgWyJub25lIiwgImNvbnRhaW4iLCBmYWxzZSwgZmFsc2Vd
LAorICAgICAgICAgICAgICAgICAgICAgICAgWyJhdXRvIiwgIm5vbmUiLCB0cnVlLCBmYWxzZV0s
CisgICAgICAgICAgICAgICAgICAgICAgICBbImNvbnRhaW4iLCAibm9uZSIsIGZhbHNlLCBmYWxz
ZV0sCisgICAgICAgICAgICAgICAgICAgICAgICBbIm5vbmUiLCAibm9uZSIsIGZhbHNlLCBmYWxz
ZV1dOworCitmdW5jdGlvbiByZXNldFRlc3QoKSB7CisgICAgLy8gVHJ5IHZhcmlvdXMgbWV0aG9k
cyB0byBlbnN1cmUgdGhlIGVsZW1lbnQgcG9zaXRpb24gaXMgcmVzZXQgaW1tZWRpYXRlbHkuCisg
ICAgc2Nyb2xsZXIuc2Nyb2xsTGVmdCA9IDMwMDsKKyAgICBzY3JvbGxlci5zY3JvbGxUb3AgPSAz
MDA7CisgICAgc2Nyb2xsZXIuc2Nyb2xsVG8oMzAwLCAzMDApOworCisgICAgcm9vdC5zY3JvbGxM
ZWZ0ID0gMDsKKyAgICByb290LnNjcm9sbFRvcCA9IDA7CisgICAgcm9vdC5zY3JvbGxUbygwLCAw
KTsKK30KKworZnVuY3Rpb24gc3RhcnRUZXN0KCkgeworICAgIG92ZXJzY3JvbGxEYXRhcy5mb3JF
YWNoKChbb3ZlcnNjcm9sbFgsIG92ZXJzY3JvbGxZLCBwcm9wYWdhdGVYLCBwcm9wYWdhdGVZXSkg
PT4geworICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgICAgICAgICAgcmVzZXRUZXN0
KCk7CisgICAgICAgICAgICBzY3JvbGxlci5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JYID0gb3Zl
cnNjcm9sbFg7CisgICAgICAgICAgICBzY3JvbGxlci5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JZ
ID0gb3ZlcnNjcm9sbFk7CisgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoOwor
CisgICAgICAgICAgICB2YXIgeCA9IHNjcm9sbGVyLmNsaWVudFdpZHRoIC8gMjsKKyAgICAgICAg
ICAgIHZhciB5ID0gc2Nyb2xsZXIuY2xpZW50SGVpZ2h0IC8gMjsKKyAgICAgICAgICAgIHZhciBk
ZWx0YSA9IGdldERlbHRhcygicmlnaHQiKTsKKyAgICAgICAgICAgIHJldHVybiBtb3VzZVdoZWVs
U2Nyb2xsQW5kV2FpdCh4LCB5LCBkZWx0YS5YLCBkZWx0YS5ZLCBkZWx0YS5YLCBkZWx0YS5ZKS50
aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsTGVm
dCA+IDAsIHByb3BhZ2F0ZVgsICdDb250aW51ZSB1cCB0aGUgaG9yaXpvbnRhbCBzY3JvbGwgY2hh
aW5pbmcnKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9LCAnRWxlbWVudCBob3Jpem9udGFs
IHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogJyArIG92ZXJzY3JvbGxYICsg
JyAnICsgb3ZlcnNjcm9sbFkgKyAnLicpOworCisgICAgICAgIHByb21pc2VfdGVzdCgoKSA9PiB7
CisgICAgICAgICAgICByZXNldFRlc3QoKTsKKyAgICAgICAgICAgIHNjcm9sbGVyLnN0eWxlLm92
ZXJzY3JvbGxCZWhhdmlvclggPSBvdmVyc2Nyb2xsWDsKKyAgICAgICAgICAgIHNjcm9sbGVyLnN0
eWxlLm92ZXJzY3JvbGxCZWhhdmlvclkgPSBvdmVyc2Nyb2xsWTsKKworICAgICAgICAgICAgdmFy
IHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAgICAgICAgICB2YXIgeSA9IHNjcm9s
bGVyLmNsaWVudEhlaWdodCAvIDI7CisgICAgICAgICAgICB2YXIgZGVsdGEgPSBnZXREZWx0YXMo
ImRvd24iKTsKKyAgICAgICAgICAgIHJldHVybiBtb3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCh4LCB5
LCBkZWx0YS5YLCBkZWx0YS5ZLCBkZWx0YS5YLCBkZWx0YS5ZKS50aGVuKCgpID0+IHsKKyAgICAg
ICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsVG9wID4gMCwgcHJvcGFnYXRlWSwg
J0NvbnRpbnVlIHVwIHRoZSB2ZXJ0aWNhbCBzY3JvbGwgY2hhaW5pbmcnKTsKKyAgICAgICAgICAg
IH0pOworICAgICAgICB9LCAnRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJz
Y3JvbGwtYmVoYXZpb3I6ICcgKyBvdmVyc2Nyb2xsWCArICcgJyArIG92ZXJzY3JvbGxZICsgJy4n
KTsKKyAgICB9KTsKK30KKworYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIHN0YXJ0VGVzdCk7Cis8
L3NjcmlwdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJz
Y3JvbGwtYmVoYXZpb3ItaWZyYW1lLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MDBhMGI3ZDkw
NWI4N2MxZGI3NjI2OTRmZDAwNjM4ZjE5NzY5NTM3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1l
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIxIEBACisKKworUEFTUyBJZnJhbWUgaG9yaXpvbnRh
bCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gYXV0by4KK1BBU1Mg
SWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0
byBhdXRvLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3Jv
bGwtYmVoYXZpb3I6IGNvbnRhaW4gYXV0by4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0
ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBhdXRvLgorUEFTUyBJZnJhbWUg
aG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgYXV0
by4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhh
dmlvcjogbm9uZSBhdXRvLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRo
IG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gY29udGFpbi4KK1BBU1MgSWZyYW1lIHZlcnRpY2Fs
IHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBjb250YWluLgorUEFT
UyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6
IGNvbnRhaW4gY29udGFpbi4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGgg
b3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBjb250YWluLgorUEFTUyBJZnJhbWUgaG9yaXpv
bnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgY29udGFpbi4K
K1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlv
cjogbm9uZSBjb250YWluLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRo
IG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gbm9uZS4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNj
cm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBub25lLgorUEFTUyBJZnJh
bWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRh
aW4gbm9uZS4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9s
bC1iZWhhdmlvcjogY29udGFpbiBub25lLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwg
dGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgbm9uZS4KK1BBU1MgSWZyYW1lIHZl
cnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBub25lLgor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNj
cm9sbC1iZWhhdmlvci1pZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL21h
Yy9hc3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNmODcx
MzY0Zjk1YmQ3N2Y2ZTRjZTliZWE0MjgzNTE0MGI0MGMxZjAKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci1p
ZnJhbWUuaHRtbApAQCAtMCwwICsxLDg2IEBACis8IWRvY3R5cGUgaHRtbD4gPCEtLSB3ZWJraXQt
dGVzdC1ydW5uZXIgWyBBc3luY092ZXJmbG93U2Nyb2xsaW5nRW5hYmxlZD10cnVlIEFzeW5jRnJh
bWVTY3JvbGxpbmdFbmFibGVkPXRydWUgXSAtLT4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jl
c291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li9yZXNvdXJjZXMvb3ZlcnNjcm9sbC1iZWhhdmlvci1zdXBwb3J0LmpzIj48L3NjcmlwdD4KKzxs
aW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1vdmVyc2Ny
b2xsLWJlaGF2aW9yIj4KKzxzdHlsZT4KKyAgICAuc2Nyb2xsaW5nIHsKKyAgICAgICAgb3ZlcmZs
b3c6IHNjcm9sbDsKKyAgICB9CisgICAgLnNjcm9sbENvbnRlbnQgeworICAgICAgICB3aWR0aDog
MzAwcHg7CisgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgIGJhY2tncm91bmQ6IGxpbmVh
ci1ncmFkaWVudCgxMzVkZWcsIHJlZCwgYmx1ZSk7CisgICAgfQorICAgICNyb290IHsKKyAgICAg
ICAgd2lkdGg6IDIwMHB4OworICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAgIH0KKyAgICAjc2Ny
b2xsZXIgeworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7Cisg
ICAgICAgIG92ZXJzY3JvbGwtYmVoYXZpb3IteTogYXV0bzsKKyAgICB9Cis8L3N0eWxlPgorPGRp
diBpZD0ncm9vdCcgY2xhc3M9InNjcm9sbGluZyI+CisgICAgPGlmcmFtZSBpZD0nc2Nyb2xsZXIn
IHNyY2RvYz0iPGh0bWw+PGRpdiBzdHlsZT0nd2lkdGg6IDMwMHB4OyBoZWlnaHQ6IDMwMHB4Oyc+
PC9kaXY+PC9odG1sPgorICAgICAgICAiPjwvaWZyYW1lPgorICAgIDxkaXYgY2xhc3M9InNjcm9s
bENvbnRlbnQiPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+CisgICAgY29uc3Qgcm9vdCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdyb290Jyk7CisgICAgY29uc3Qgc2Nyb2xsZXIgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnc2Nyb2xsZXInKTsKKyAgICB2YXIgb3ZlcnNjcm9sbERhdGFz
ID0gW1siYXV0byIsICJhdXRvIiwgdHJ1ZSwgdHJ1ZV0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgWyJjb250YWluIiwgImF1dG8iLCBmYWxzZSwgdHJ1ZV0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgWyJub25lIiwgImF1dG8iLCBmYWxzZSwgdHJ1ZV0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgWyJhdXRvIiwgImNvbnRhaW4iLCB0cnVlLCBmYWxzZV0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgWyJjb250YWluIiwgImNvbnRhaW4iLCBmYWxzZSwgZmFsc2Vd
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsibm9uZSIsICJjb250YWluIiwgZmFsc2Us
IGZhbHNlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImF1dG8iLCAibm9uZSIsIHRy
dWUsIGZhbHNlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImNvbnRhaW4iLCAibm9u
ZSIsIGZhbHNlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJub25lIiwg
Im5vbmUiLCBmYWxzZSwgZmFsc2VdXTsKKyAgICBmdW5jdGlvbiByZXNldFRlc3QoKSB7CisgICAg
ICAgIC8vIFRyeSB2YXJpb3VzIG1ldGhvZHMgdG8gZW5zdXJlIHRoZSBlbGVtZW50IHBvc2l0aW9u
IGlzIHJlc2V0IGltbWVkaWF0ZWx5LgorICAgICAgICBzY3JvbGxlci5jb250ZW50V2luZG93LnNj
cm9sbFggPSAzMDA7CisgICAgICAgIHNjcm9sbGVyLmNvbnRlbnRXaW5kb3cuc2Nyb2xsWSA9IDMw
MDsKKyAgICAgICAgc2Nyb2xsZXIuY29udGVudFdpbmRvdy5zY3JvbGxUbygzMDAsIDMwMCk7Cisg
ICAgICAgIHJvb3Quc2Nyb2xsTGVmdCA9IDA7CisgICAgICAgIHJvb3Quc2Nyb2xsVG9wID0gMDsK
KyAgICAgICAgcm9vdC5zY3JvbGxUbygwLCAwKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBvdmVy
c2Nyb2xsQmVoYXZpb3JUZXN0KCkgeworICAgICAgICBvdmVyc2Nyb2xsRGF0YXMuZm9yRWFjaCgo
W292ZXJzY3JvbGxYLCBvdmVyc2Nyb2xsWSwgcHJvcGFnYXRlWCwgcHJvcGFnYXRlWV0pID0+IHsK
KyAgICAgICAgICAgIHByb21pc2VfdGVzdCgoKSA9PiB7CisgICAgICAgICAgICAgICAgcmVzZXRU
ZXN0KCk7CisgICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IHNjcm9sbGVyLmNvbnRlbnRXaW5k
b3cuZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImh0bWwiKVswXTsKKyAgICAgICAgICAg
ICAgICB0YXJnZXQuc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWCA9IG92ZXJzY3JvbGxYOworICAg
ICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JZID0gb3ZlcnNjcm9s
bFk7CisgICAgICAgICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7Cisg
ICAgICAgICAgICAgICAgdmFyIHkgPSBzY3JvbGxlci5jbGllbnRIZWlnaHQgLyAyOworICAgICAg
ICAgICAgICAgIHZhciBkZWx0YSA9IGdldERlbHRhcygicmlnaHQiKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gbW91c2VXaGVlbFNjcm9sbEFuZFdhaXQoeCwgeSwgZGVsdGEuWCwgZGVsdGEuWSwg
ZGVsdGEuWCwgZGVsdGEuWSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgICAgIGFzc2Vy
dF9lcXVhbHMocm9vdC5zY3JvbGxMZWZ0ID4gMCwgcHJvcGFnYXRlWCwgJ0NvbnRpbnVlIHVwIHRo
ZSBob3Jpem9udGFsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAgICAgICAgICAgIH0pOworICAg
ICAgICAgICAgfSwgJ0lmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9s
bC1iZWhhdmlvcjogJyArIG92ZXJzY3JvbGxYICsgJyAnICsgb3ZlcnNjcm9sbFkgKyAnLicpOwor
CisgICAgICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgICAgICAgICAgICAgIHJlc2V0
VGVzdCgpOworICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSBzY3JvbGxlci5jb250ZW50V2lu
ZG93LmRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJodG1sIilbMF07CisgICAgICAgICAg
ICAgICAgdGFyZ2V0LnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclggPSBvdmVyc2Nyb2xsWDsKKyAg
ICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWSA9IG92ZXJzY3Jv
bGxZOworCisgICAgICAgICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7
CisgICAgICAgICAgICAgICAgdmFyIHkgPSBzY3JvbGxlci5jbGllbnRIZWlnaHQgLyAyOworICAg
ICAgICAgICAgICAgIHZhciBkZWx0YSA9IGdldERlbHRhcygiZG93biIpOworICAgICAgICAgICAg
ICAgIHJldHVybiBtb3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCh4LCB5LCBkZWx0YS5YLCBkZWx0YS5Z
LCBkZWx0YS5YLCBkZWx0YS5ZKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgYXNz
ZXJ0X2VxdWFscyhyb290LnNjcm9sbFRvcCA+IDAsIHByb3BhZ2F0ZVksICdDb250aW51ZSB1cCB0
aGUgdmVydGljYWwgc2Nyb2xsIGNoYWluaW5nJyk7CisgICAgICAgICAgICAgICAgfSk7CisgICAg
ICAgICAgICB9LCAnSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1i
ZWhhdmlvcjogJyArIG92ZXJzY3JvbGxYICsgJyAnICsgb3ZlcnNjcm9sbFkgKyAnLicpOworICAg
ICAgICB9KTsKKyAgICB9CisKKyAgICBzY3JvbGxlci5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwg
b3ZlcnNjcm9sbEJlaGF2aW9yVGVzdCk7Cis8L3NjcmlwdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMt
b3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci11
bnNjcm9sbGFibGUtZWxlbWVudC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjM5NWI2NDg4ZDA4
NzBiOTU2MWMwMjg2NzlkN2UxNWE0N2ZjZTZlOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xs
YWJsZS1lbGVtZW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKKworUEFTUyBVbnNjcm9s
bGFibGUgZWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhh
dmlvcjogbm9uZS4KK1BBU1MgVW5zY3JvbGxhYmxlIGVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRl
c3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLgorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9s
bGFibGUtZWxlbWVudC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5j
LW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5hNDQ4ZjJlMGVhNWNjMDc4ZjFmOWVhNGMyZDdmNzgwZWU3YjdlNTg0Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVo
YXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRtbApAQCAtMCwwICsxLDY3IEBACis8IWRvY3R5
cGUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBBc3luY092ZXJmbG93U2Nyb2xsaW5n
RW5hYmxlZD10cnVlIEFzeW5jRnJhbWVTY3JvbGxpbmdFbmFibGVkPXRydWUgXSAtLT4KKworPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvb3ZlcnNjcm9sbC1iZWhhdmlvci1zdXBw
b3J0LmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9kcmFmdHMu
Y3Nzd2cub3JnL2Nzcy1vdmVyc2Nyb2xsLWJlaGF2aW9yIj4KKzxzdHlsZT4KKyAgICAuc2Nyb2xs
aW5nIHsKKyAgICAgICAgb3ZlcmZsb3c6IHNjcm9sbDsKKyAgICB9CisgICAgLnNjcm9sbENvbnRl
bnQgeworICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAg
fQorICAgICNyb290IHsKKyAgICAgICAgd2lkdGg6IDIwMHB4OworICAgICAgICBoZWlnaHQ6IDIw
MHB4OworICAgIH0KKyAgICAjc2Nyb2xsZXIgeworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAg
ICAgIGhlaWdodDogMTAwcHg7CisgICAgICAgIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmU7Cisg
ICAgICAgIG92ZXJmbG93OiB2aXNpYmxlOworICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3Jh
ZGllbnQoMTM1ZGVnLCByZWQsIGJsdWUpOworICAgIH0KKzwvc3R5bGU+Cis8ZGl2IGlkPSJyb290
IiBjbGFzcz0ic2Nyb2xsaW5nIj4KKyAgICA8ZGl2IGlkPSJzY3JvbGxlciI+CisgICAgICAgIDxk
aXYgY2xhc3M9InNjcm9sbENvbnRlbnQiPjwvZGl2PgorICAgIDwvZGl2PgorICAgIDxkaXYgY2xh
c3M9InNjcm9sbENvbnRlbnQiPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+Citjb25zdCByb290
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jvb3QnKTsKK2NvbnN0IHNjcm9sbGVyID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Njcm9sbGVyJyk7CisKK2Z1bmN0aW9uIHJlc2V0VGVzdCgp
IHsKKyAgICByb290LnNjcm9sbExlZnQgPSAwOworICAgIHJvb3Quc2Nyb2xsVG9wID0gMDsKKyAg
ICByb290LnNjcm9sbFRvKDAsIDApOworfQorCitmdW5jdGlvbiBzdGFydFRlc3QoKSB7CisgICAg
ICAgIHByb21pc2VfdGVzdCgoKSA9PiB7CisgICAgICAgICAgICByZXNldFRlc3QoKTsKKyAgICAg
ICAgICAgIHZhciB4ID0gc2Nyb2xsZXIuY2xpZW50V2lkdGggLyAyOworICAgICAgICAgICAgdmFy
IHkgPSBzY3JvbGxlci5jbGllbnRIZWlnaHQgLyAyOworICAgICAgICAgICAgdmFyIGRlbHRhID0g
Z2V0RGVsdGFzKCJyaWdodCIpOworICAgICAgICAgICAgcmV0dXJuIG1vdXNlV2hlZWxTY3JvbGxB
bmRXYWl0KHgsIHksIGRlbHRhLlgsIGRlbHRhLlksIGRlbHRhLlgsIGRlbHRhLlkpLnRoZW4oKCkg
PT4geworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxMZWZ0ID4gMCwg
dHJ1ZSwgJ0NvbnRpbnVlIHVwIHRoZSBob3Jpem9udGFsIHNjcm9sbCBjaGFpbmluZycpOworICAg
ICAgICAgICAgfSk7CisgICAgICAgIH0sICdVbnNjcm9sbGFibGUgZWxlbWVudCBob3Jpem9udGFs
IHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4nKTsKKworICAgICAg
ICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgICAgICAgICAgcmVzZXRUZXN0KCk7CisgICAgICAg
ICAgICB2YXIgeCA9IHNjcm9sbGVyLmNsaWVudFdpZHRoIC8gMjsKKyAgICAgICAgICAgIHZhciB5
ID0gc2Nyb2xsZXIuY2xpZW50SGVpZ2h0IC8gMjsKKyAgICAgICAgICAgIHZhciBkZWx0YSA9IGdl
dERlbHRhcygiZG93biIpOworICAgICAgICAgICAgcmV0dXJuIG1vdXNlV2hlZWxTY3JvbGxBbmRX
YWl0KHgsIHksIGRlbHRhLlgsIGRlbHRhLlksIGRlbHRhLlgsIGRlbHRhLlkpLnRoZW4oKCkgPT4g
eworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxUb3AgPiAwLCB0cnVl
LCAnQ29udGludWUgdXAgdGhlIHZlcnRpY2FsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAgICAg
ICAgfSk7CisgICAgICAgIH0sICdVbnNjcm9sbGFibGUgZWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwg
dGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuJyk7Cit9CisKK2FkZEV2ZW50TGlz
dGVuZXIoImxvYWQiLCBzdGFydFRlc3QpOworPC9zY3JpcHQ+ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5j
LW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci11
bnNjcm9sbGFibGUtaWZyYW1lLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZmE1OWNjYmE3OWFl
ZmYzM2RhNzBlOTNkNDg4YTA3ZWVjOWM1NjkxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxh
YmxlLWlmcmFtZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBACisKKworUEFTUyBVbnNjcm9s
bGFibGUgaWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2
aW9yOiBub25lLgorUEFTUyBVbnNjcm9sbGFibGUgaWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0
IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxh
YmxlLWlmcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92
ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMz
ZWM1YjI2M2MyYjgzYmUxYTUyODcxNmNlODY1NjNkOTdhY2QxZDYKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlv
ci11bnNjcm9sbGFibGUtaWZyYW1lLmh0bWwKQEAgLTAsMCArMSw2NiBAQAorPCFkb2N0eXBlIGh0
bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgQXN5bmNPdmVyZmxvd1Njcm9sbGluZ0VuYWJs
ZWQ9dHJ1ZSBBc3luY0ZyYW1lU2Nyb2xsaW5nRW5hYmxlZD10cnVlIF0gLS0+CisKKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL292ZXJzY3JvbGwtYmVoYXZpb3Itc3VwcG9ydC5q
cyI+PC9zY3JpcHQ+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vZHJhZnRzLmNzc3dn
Lm9yZy9jc3Mtb3ZlcnNjcm9sbC1iZWhhdmlvciI+Cis8c3R5bGU+CisgICAgLnNjcm9sbGluZyB7
CisgICAgICAgIG92ZXJmbG93OiBzY3JvbGw7CisgICAgfQorICAgIC5zY3JvbGxDb250ZW50IHsK
KyAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgIH0KKyAg
ICAjcm9vdCB7CisgICAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgICAgaGVpZ2h0OiAyMDBweDsK
KyAgICB9CisgICAgI3Njcm9sbGVyIHsKKyAgICAgICAgd2lkdGg6IDIwMHB4OworICAgICAgICBo
ZWlnaHQ6IDIwMHB4OworICAgICAgICBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lOworICAgICAg
ICBvdmVyZmxvdzogdmlzaWJsZTsKKyAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50
KDEzNWRlZywgcmVkLCBibHVlKTsKKyAgICB9Cis8L3N0eWxlPgorPGRpdiBpZD0ncm9vdCcgY2xh
c3M9InNjcm9sbGluZyI+CisgICAgPGlmcmFtZSBpZD0nc2Nyb2xsZXInIHNyY2RvYz0iPGh0bWwg
c3R5bGU9J292ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmU7Jz48ZGl2IHN0eWxlPSd3aWR0aDogMTAw
cHg7IGhlaWdodDogMTAwcHg7Jz48L2Rpdj48L2h0bWw+CisgICAgICAgICI+PC9pZnJhbWU+Cisg
ICAgPGRpdiBjbGFzcz0ic2Nyb2xsQ29udGVudCI+PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4K
K2NvbnN0IHJvb3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncm9vdCcpOworY29uc3Qgc2Ny
b2xsZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2Nyb2xsZXInKTsKKworZnVuY3Rpb24g
cmVzZXRUZXN0KCkgeworICAgIHJvb3Quc2Nyb2xsTGVmdCA9IDA7CisgICAgcm9vdC5zY3JvbGxU
b3AgPSAwOworICAgIHJvb3Quc2Nyb2xsVG8oMCwgMCk7Cit9CisKK2Z1bmN0aW9uIHN0YXJ0VGVz
dCgpIHsKKyAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAgIHJlc2V0VGVz
dCgpOworICAgICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAg
ICAgICAgICB2YXIgeSA9IHNjcm9sbGVyLmNsaWVudEhlaWdodCAvIDI7CisgICAgICAgICAgICB2
YXIgZGVsdGEgPSBnZXREZWx0YXMoInJpZ2h0Iik7CisgICAgICAgICAgICByZXR1cm4gbW91c2VX
aGVlbFNjcm9sbEFuZFdhaXQoeCwgeSwgZGVsdGEuWCwgZGVsdGEuWSwgZGVsdGEuWCwgZGVsdGEu
WSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9s
bExlZnQgPiAwLCB0cnVlLCAnQ29udGludWUgdXAgdGhlIGhvcml6b250YWwgc2Nyb2xsIGNoYWlu
aW5nJyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSwgJ1Vuc2Nyb2xsYWJsZSBpZnJhbWUg
aG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuJyk7
CisKKyAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAgIHJlc2V0VGVzdCgp
OworICAgICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAgICAg
ICAgICB2YXIgeSA9IHNjcm9sbGVyLmNsaWVudEhlaWdodCAvIDI7CisgICAgICAgICAgICB2YXIg
ZGVsdGEgPSBnZXREZWx0YXMoImRvd24iKTsKKyAgICAgICAgICAgIHJldHVybiBtb3VzZVdoZWVs
U2Nyb2xsQW5kV2FpdCh4LCB5LCBkZWx0YS5YLCBkZWx0YS5ZLCBkZWx0YS5YLCBkZWx0YS5ZKS50
aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsVG9w
ID4gMCwgdHJ1ZSwgJ0NvbnRpbnVlIHVwIHRoZSB2ZXJ0aWNhbCBzY3JvbGwgY2hhaW5pbmcnKTsK
KyAgICAgICAgICAgIH0pOworICAgICAgICB9LCAnVW5zY3JvbGxhYmxlIGlmcmFtZSB2ZXJ0aWNh
bCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuJyk7Cit9CisKK2Fk
ZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBzdGFydFRlc3QpOworPC9zY3JpcHQ+ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcv
cmVzb3VyY2VzL292ZXJzY3JvbGwtYmVoYXZpb3Itc3VwcG9ydC5qcyBiL0xheW91dFRlc3RzL2Zh
c3Qvc2Nyb2xsaW5nL3Jlc291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXN1cHBvcnQuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uY2JkMjIyZTkwYjUyYTE5MzBiN2ZjZmU0NDIzZTk0NTgzYzA0NjAwZQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3Jlc291cmNlcy9vdmVyc2Ny
b2xsLWJlaGF2aW9yLXN1cHBvcnQuanMKQEAgLTAsMCArMSwzOSBAQAorZnVuY3Rpb24gZ2V0RGVs
dGFzKGRpcmVjdGlvbikgeworICAgIHZhciBkZWx0YVggPSAwOworICAgIHZhciBkZWx0YVkgPSAw
OworICAgIGlmIChkaXJlY3Rpb24gPT0gImRvd24iKQorICAgICAgICBkZWx0YVkgPSAtNQorICAg
IGVsc2UgaWYgKGRpcmVjdGlvbiA9PSAidXAiKQorICAgICAgICBkZWx0YVkgPSA1OworICAgIGVs
c2UgaWYgKGRpcmVjdGlvbiA9PSAicmlnaHQiKQorICAgICAgICBkZWx0YVggPSAtNTsKKyAgICBl
bHNlIGlmIChkaXJlY3Rpb24gPT0gImxlZnQiKQorICAgICAgICBkZWx0YVggPSA1OworICAgIHJl
dHVybiB7CisgICAgICAgIFg6IGRlbHRhWCwKKyAgICAgICAgWTogZGVsdGFZCisgICAgfTsKK30K
KworYXN5bmMgZnVuY3Rpb24gbW91c2VXaGVlbFNjcm9sbEFuZFdhaXQoeCwgeSwgYmVnaW5YLCBi
ZWdpblksIGRlbHRhWCwgZGVsdGFZKQoreworICAgIGlmIChiZWdpblggPT09IHVuZGVmaW5lZCkK
KyAgICAgICAgYmVnaW5YID0gMDsKKyAgICBpZiAoYmVnaW5ZID09PSB1bmRlZmluZWQpCisgICAg
ICAgIGJlZ2luWSA9IC0xOworICAgIGlmIChkZWx0YVggPT09IHVuZGVmaW5lZCkKKyAgICAgICAg
ZGVsdGFYID0gMDsKKyAgICBpZiAoZGVsdGFZID09PSB1bmRlZmluZWQpCisgICAgICAgIGRlbHRh
WSA9IC0xMDsKKworICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgIGV2
ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhiZWdpblgsIGJlZ2luWSwgImJlZ2FuIiwgIm5v
bmUiKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZGVsdGFYLCBkZWx0YVksICJjaGFuZ2VkIiwgIm5vbmUiKTsKKyAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgImVuZGVkIiwg
Im5vbmUiKTsKKyAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgICAgIHNl
dFRpbWVvdXQoKCkgPT4geworICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHJlc29s
dmUpOworICAgICAgICB9LCA1MDApOworICAgIH0pOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUK
</data>
<flag name="commit-queue"
          id="470825"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445600</attachid>
            <date>2021-12-01 11:38:34 -0800</date>
            <delta_ts>2021-12-09 16:37:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220139-20211201113833.patch</filename>
            <type>text/plain</type>
            <size>33579</size>
            <attacher name="Nikos Mouchtaris">nmouchtaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MzUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGJiNmQyZjJmYmNkN2I3
ODU1MzIxY2U1YjgwMWQ1YzJmYWNiMzhmNC4uODBhYWE0YzRhYWIwNzIyNjM2NGFhM2M1ZTE0YzA2
YTQ4ZDNiNjNmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDIxLTEyLTAxICBOaWtv
bGFvcyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxl
bWVudCBDU1Mgb3ZlcnNjcm9sbC1iZWhhdmlvciBmb3IgYXN5bmNocm9ub3VzIHNjcm9sbCBvbiBN
YWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDEz
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNwbGl0
IHVwIHBhdGNoIGJ5IENhdGhpZSBDaGVuIGFuZCBGcmVkZXJpYyBXYW5nLiBBZGQgZnVuY3Rpb24g
Zm9yIGJsb2NraW5nIHNjcm9sbCBjaGFpbmluZworICAgICAgICBhbmQgZmlsdGVyaW5nIHNjcm9s
bCBkZWx0YSBkZXBlbmRpbmcgb24gdGhlIHZhbHVlcyBvZiBvdmVyc2Nyb2xsIGJlaGF2aW9yIGZv
ciBhIHNjcm9sbGluZworICAgICAgICBub2RlLiBUaGlzIHBhdGNoIGlzIGZvciBhc3luY2hyb25v
dXMgc2Nyb2xsaW5nIG9ubHkuCisKKyAgICAgICAgVGVzdHM6IGZhc3Qvc2Nyb2xsaW5nL21hYy9h
c3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQuaHRtbAorICAgICAgICAgICAgICAgZmFz
dC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0bWwKKyAg
ICAgICAgICAgICAgIGZhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9y
LXVuc2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvc2Nyb2xsaW5n
L21hYy9hc3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUuaHRtbAor
CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxpbmdUcmVlOjpzaG91bGRCbG9ja1Njcm9sbENoYWluaW5nV2l0aE5vZGUp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZTo6aGFuZGxlV2hlZWxFdmVudFdpdGhO
b2RlKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmg6CisgICAgICAg
ICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaDoKKyAgICAgICAg
KiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdh
dGVNYWM6OmFsbG93c0hvcml6b250YWxTdHJldGNoaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OmFsbG93c1ZlcnRpY2Fs
U3RyZXRjaGluZyBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9z
aXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWNvbXBvc2l0ZUNoYW5nZVJlcXVpcmVzR2Vv
bWV0cnlVcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpy
b290T3JCb2R5U3R5bGVDaGFuZ2VkKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmNoYW5nZVJlcXVpcmVz
UmVjb21wb3NpdGVMYXllciBjb25zdCk6CisKIDIwMjEtMTEtMzAgIFNpbW9uIEZyYXNlciAgPHNp
bW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUGFzcyB0aGUgdGltZXN0YW1wIGZvciBz
Y3JvbGxpbmcgdGhyZWFkIGFuaW1hdGlvbnMgdGhyb3VnaCBhbGwgdGhlIHNlcnZpY2VTY3JvbGxB
bmltYXRpb24oKSBjYWxscwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nVHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdUcmVlLmNwcAppbmRleCAyZGU2NWMyMmY5YjdmOTQwZTFlYmNmZmJjNDVlY2Q2MDZhNDk5
Yzg0Li5jZmVjYzJjOTcxNzNiZWFjZTMwNGQyODZiNWZhOTI3ZmM5MTdiYjlhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcApAQCAtMzEsNiAr
MzEsNyBAQAogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAj
aW5jbHVkZSAiUGxhdGZvcm1XaGVlbEV2ZW50LmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nRWZmZWN0
c0NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9k
ZS5oIgogI2luY2x1ZGUgIlNjcm9sbGluZ1N0YXRlVHJlZS5oIgogI2luY2x1ZGUgIlNjcm9sbGlu
Z1RyZWVGcmFtZVNjcm9sbGluZ05vZGUuaCIKQEAgLTE5OSwxMiArMjAwLDM3IEBAIFdoZWVsRXZl
bnRIYW5kbGluZ1Jlc3VsdCBTY3JvbGxpbmdUcmVlOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBs
YXRmb3JtV2hlZWxFdmVuCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorYm9vbCBTY3JvbGxpbmdU
cmVlOjpzaG91bGRCbG9ja1Njcm9sbENoYWluaW5nV2l0aE5vZGUoY29uc3QgU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGUmIHNjcm9sbGluZ05vZGUsIFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxF
dmVudCwgYm9vbCYgaGFuZGxlZCkKK3sKKyAgICBGbG9hdFNpemUgZmlsdGVyZWREZWx0YSh3aGVl
bEV2ZW50LmRlbHRhWCgpLCB3aGVlbEV2ZW50LmRlbHRhWSgpKTsKKyNpZiBQTEFURk9STShNQUMp
CisgICAgYXV0byBiaWFzZWREZWx0YSA9IFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjp3aGVl
bERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbCh3aGVlbEV2ZW50KTsKKyNlbHNlCisgICAgYXV0
byBiaWFzZWREZWx0YSA9IHdoZWVsRXZlbnQuZGVsdGEoKTsKKyNlbmRpZgorICAgIGlmIChzY3Jv
bGxpbmdOb2RlLmhhc0hvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSB8fCBzY3JvbGxpbmdO
b2RlLmhhc1ZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkpIHsKKyAgICAgICAgaWYgKHNjcm9s
bGluZ05vZGUuaGFzSG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpICYmICFiaWFzZWREZWx0
YS5oZWlnaHQoKSAmJiBiaWFzZWREZWx0YS53aWR0aCgpKSB7CisgICAgICAgICAgICBoYW5kbGVk
ID0gZmFsc2U7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBp
ZiAoKHNjcm9sbGluZ05vZGUuaGFzSG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpICYmIHNj
cm9sbGluZ05vZGUuaGFzVmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSkgfHwgKHNjcm9sbGlu
Z05vZGUuaGFzSG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpICYmICFiaWFzZWREZWx0YS5o
ZWlnaHQoKSkgfHwgKHNjcm9sbGluZ05vZGUuaGFzVmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3Io
KSAmJiAhYmlhc2VkRGVsdGEud2lkdGgoKSkpIHsKKyAgICAgICAgICAgIGhhbmRsZWQgPSB0cnVl
OworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgZmlsdGVyZWRE
ZWx0YS5zZXRXaWR0aChzY3JvbGxpbmdOb2RlLmhhc0hvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZp
b3IoKSB8fCAoc2Nyb2xsaW5nTm9kZS5oYXNWZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpICYm
ICFiaWFzZWREZWx0YS53aWR0aCgpKSA/IDAgOiBmaWx0ZXJlZERlbHRhLndpZHRoKCkpOworICAg
ICAgICBmaWx0ZXJlZERlbHRhLnNldEhlaWdodChzY3JvbGxpbmdOb2RlLmhhc1ZlcnRpY2FsT3Zl
cnNjcm9sbEJlaGF2aW9yKCkgfHwgKHNjcm9sbGluZ05vZGUuaGFzSG9yaXpvbnRhbE92ZXJzY3Jv
bGxCZWhhdmlvcigpICYmICFiaWFzZWREZWx0YS5oZWlnaHQoKSkgPyAwIDogZmlsdGVyZWREZWx0
YS5oZWlnaHQoKSk7CisgICAgICAgIHdoZWVsRXZlbnQgPSB3aGVlbEV2ZW50LmNvcHlXaXRoRGVs
dGFBbmRWZWxvY2l0eShmaWx0ZXJlZERlbHRhLCB3aGVlbEV2ZW50LnNjcm9sbGluZ1ZlbG9jaXR5
KCkpOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIFdoZWVsRXZlbnRIYW5kbGluZ1Jl
c3VsdCBTY3JvbGxpbmdUcmVlOjpoYW5kbGVXaGVlbEV2ZW50V2l0aE5vZGUoY29uc3QgUGxhdGZv
cm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBPcHRpb25TZXQ8V2hlZWxFdmVudFByb2Nlc3NpbmdT
dGVwcz4gcHJvY2Vzc2luZ1N0ZXBzLCBTY3JvbGxpbmdUcmVlTm9kZSogbm9kZSwgRXZlbnRUYXJn
ZXRpbmcgZXZlbnRUYXJnZXRpbmcpCiB7CisgICAgUGxhdGZvcm1XaGVlbEV2ZW50IGFkanVzdGVk
V2hlZWxFdmVudCA9IFBsYXRmb3JtV2hlZWxFdmVudCh3aGVlbEV2ZW50KTsKICAgICB3aGlsZSAo
bm9kZSkgewogICAgICAgICBpZiAoaXM8U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU+KCpub2Rl
KSkgewogICAgICAgICAgICAgYXV0byYgc2Nyb2xsaW5nTm9kZSA9IGRvd25jYXN0PFNjcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlPigqbm9kZSk7Ci0gICAgICAgICAgICBhdXRvIHJlc3VsdCA9IHNj
cm9sbGluZ05vZGUuaGFuZGxlV2hlZWxFdmVudCh3aGVlbEV2ZW50LCBldmVudFRhcmdldGluZyk7
CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IHNjcm9sbGluZ05vZGUuaGFuZGxlV2hlZWxFdmVu
dChhZGp1c3RlZFdoZWVsRXZlbnQsIGV2ZW50VGFyZ2V0aW5nKTsKIAogICAgICAgICAgICAgaWYg
KHJlc3VsdC53YXNIYW5kbGVkKSB7CiAgICAgICAgICAgICAgICAgbV9sYXRjaGluZ0NvbnRyb2xs
ZXIubm9kZURpZEhhbmRsZUV2ZW50KHNjcm9sbGluZ05vZGUuc2Nyb2xsaW5nTm9kZUlEKCksIHBy
b2Nlc3NpbmdTdGVwcywgd2hlZWxFdmVudCwgbV9hbGxvd0xhdGNoaW5nKTsKQEAgLTIxNCw2ICsy
NDAsMTYgQEAgV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0IFNjcm9sbGluZ1RyZWU6OmhhbmRsZVdo
ZWVsRXZlbnRXaXRoTm9kZShjb25zdCBQbGF0Zm9ybVcKIAogICAgICAgICAgICAgaWYgKHJlc3Vs
dC5uZWVkc01haW5UaHJlYWRQcm9jZXNzaW5nKCkgfHwgZXZlbnRUYXJnZXRpbmcgIT0gRXZlbnRU
YXJnZXRpbmc6OlByb3BhZ2F0ZSkKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAg
ICAgICAgICAgCisgICAgICAgICAgICBib29sIGhhbmRsZWQgPSBmYWxzZTsKKyAgICAgICAgICAg
IGlmIChzaG91bGRCbG9ja1Njcm9sbENoYWluaW5nV2l0aE5vZGUoc2Nyb2xsaW5nTm9kZSwgYWRq
dXN0ZWRXaGVlbEV2ZW50LCBoYW5kbGVkKSkgeworICAgICAgICAgICAgICAgIGlmICghaGFuZGxl
ZCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdDo6
dW5oYW5kbGVkKCk7CisKKyAgICAgICAgICAgICAgICBtX2xhdGNoaW5nQ29udHJvbGxlci5ub2Rl
RGlkSGFuZGxlRXZlbnQoc2Nyb2xsaW5nTm9kZS5zY3JvbGxpbmdOb2RlSUQoKSwgcHJvY2Vzc2lu
Z1N0ZXBzLCB3aGVlbEV2ZW50LCBtX2FsbG93TGF0Y2hpbmcpOworICAgICAgICAgICAgICAgIG1f
Z2VzdHVyZVN0YXRlLm5vZGVEaWRIYW5kbGVFdmVudChzY3JvbGxpbmdOb2RlLnNjcm9sbGluZ05v
ZGVJRCgpLCB3aGVlbEV2ZW50KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gV2hlZWxFdmVudEhh
bmRsaW5nUmVzdWx0OjpoYW5kbGVkKCk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAg
ICAgICBpZiAoaXM8U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsUHJveHlOb2RlPigqbm9kZSkp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1Ry
ZWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuaAppbmRl
eCBjY2QyMjcxM2I5ODIyOGFlNjAwMTgzZDMwOTQ0ZThhOTJiYjI0M2M1Li4wYjkyYzdmZTdjZWM1
NGZlM2JkZWZjYWIzM2EyOGYxNTZmYTViNzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5oCkBAIC0yMzMsNiArMjMzLDggQEAgcHVibGljOgogICAg
IHZvaWQgYWRkUGVuZGluZ1Njcm9sbFVwZGF0ZShTY3JvbGxVcGRhdGUmJik7CiAgICAgVmVjdG9y
PFNjcm9sbFVwZGF0ZT4gdGFrZVBlbmRpbmdTY3JvbGxVcGRhdGVzKCk7CiAgICAgdmlydHVhbCB2
b2lkIHJlbW92ZVBlbmRpbmdTY3JvbGxBbmltYXRpb25Gb3JOb2RlKFNjcm9sbGluZ05vZGVJRCkg
eyB9CisgICAgCisgICAgYm9vbCBzaG91bGRCbG9ja1Njcm9sbENoYWluaW5nV2l0aE5vZGUoY29u
c3QgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUmLCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBib29s
Jik7CiAKIHByb3RlY3RlZDoKICAgICBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQgaGFuZGxlV2hl
ZWxFdmVudFdpdGhOb2RlKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIE9wdGlvblNldDxXaGVl
bEV2ZW50UHJvY2Vzc2luZ1N0ZXBzPiwgU2Nyb2xsaW5nVHJlZU5vZGUqLCBFdmVudFRhcmdldGlu
ZyA9IEV2ZW50VGFyZ2V0aW5nOjpQcm9wYWdhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmgKaW5kZXgg
YjlmNTQzMDcwMTZlMjA4ZDRhNmM1ZjBiM2UxMzFkOTk3NWQ4ZTY1NS4uNGE0NzUxOGZkYTI5Nzky
MjAyOWY1ODczZGVhZTgxMGM3MmIxNGYyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oCkBAIC0xNTks
NiArMTU5LDExIEBAIHByb3RlY3RlZDoKIAogICAgIGJvb2wgYWxsb3dzSG9yaXpvbnRhbFNjcm9s
bGluZygpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzLmFsbG93c0hv
cml6b250YWxTY3JvbGxpbmc7IH0KICAgICBib29sIGFsbG93c1ZlcnRpY2FsU2Nyb2xsaW5nKCkg
Y29uc3QgeyByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMuYWxsb3dzVmVydGljYWxT
Y3JvbGxpbmc7IH0KKyAgICAKKyAgICBPdmVyc2Nyb2xsQmVoYXZpb3IgaG9yaXpvbnRhbE92ZXJz
Y3JvbGxCZWhhdmlvcigpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJz
Lmhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3I7IH0KKyAgICBPdmVyc2Nyb2xsQmVoYXZpb3Ig
dmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGFibGVB
cmVhUGFyYW1ldGVycy52ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcjsgfQorICAgIGJvb2wgaGFz
SG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsYWJs
ZUFyZWFQYXJhbWV0ZXJzLmhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IgIT0gT3ZlcnNjcm9s
bEJlaGF2aW9yOjpBdXRvOyB9CisgICAgYm9vbCBoYXNWZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlv
cigpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzLnZlcnRpY2FsT3Zl
cnNjcm9sbEJlaGF2aW9yICE9IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0bzsgfQogCiAgICAgdm9p
ZCBkdW1wUHJvcGVydGllcyhXVEY6OlRleHRTdHJlYW0mLCBPcHRpb25TZXQ8U2Nyb2xsaW5nU3Rh
dGVUcmVlQXNUZXh0QmVoYXZpb3I+KSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
RGVsZWdhdGVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5tbQppbmRleCBiZjAxMzJkMmQ2NDgxNmZm
YWUxMjMxNGY3YjgxMjIwNDFhMTljMzYwLi4xM2ZiMGVjNzRlYTRlMmVhYTlmOTliYTM4MjVhYTM5
MTc2ZTcwODkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMv
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZU1hYy5tbQpAQCAtMjEyLDYgKzIxMiw5IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGVEZWxlZ2F0ZU1hYzo6c2VydmljZVNjcm9sbEFuaW1hdGlvbihNb25vdG9uaWNUaW1lCiAKIGJv
b2wgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6YWxsb3dzSG9yaXpvbnRh
bFN0cmV0Y2hpbmcoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50KSBjb25zdAog
eworICAgIGlmIChzY3JvbGxpbmdOb2RlKCkuaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigp
ID09IE92ZXJzY3JvbGxCZWhhdmlvcjo6Tm9uZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IAogICAgIHN3aXRjaCAoaG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkoKSkgewogICAgIGNhc2Ug
U2Nyb2xsRWxhc3RpY2l0eTo6QXV0b21hdGljOiB7CiAgICAgICAgIGJvb2wgc2Nyb2xsYmFyc0Fs
bG93U3RyZXRjaGluZyA9IGFsbG93c0hvcml6b250YWxTY3JvbGxpbmcoKSB8fCAhYWxsb3dzVmVy
dGljYWxTY3JvbGxpbmcoKTsKQEAgLTIzNSw2ICsyMzgsOSBAQCBib29sIFNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OmFsbG93c0hvcml6b250YWxTdHJldGNoaW5nKGNvbnN0
IFBsYQogCiBib29sIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OmFsbG93
c1ZlcnRpY2FsU3RyZXRjaGluZyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQp
IGNvbnN0CiB7CisgICAgaWYgKHNjcm9sbGluZ05vZGUoKS52ZXJ0aWNhbE92ZXJzY3JvbGxCZWhh
dmlvcigpID09IE92ZXJzY3JvbGxCZWhhdmlvcjo6Tm9uZSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIAogICAgIHN3aXRjaCAodmVydGljYWxTY3JvbGxFbGFzdGljaXR5KCkpIHsKICAgICBj
YXNlIFNjcm9sbEVsYXN0aWNpdHk6OkF1dG9tYXRpYzogewogICAgICAgICBib29sIHNjcm9sbGJh
cnNBbGxvd1N0cmV0Y2hpbmcgPSBhbGxvd3NWZXJ0aWNhbFNjcm9sbGluZygpIHx8ICFhbGxvd3NI
b3Jpem9udGFsU2Nyb2xsaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCmluZGV4IGJmMGJmZGUwYzU5NjhmMWJhM2MwMTQyNmQ5
YjNkZDc3MzExMmRhNGMuLjU1Y2FjNWQ4ZDE2OGU5NzAwZTUwYmQ3YjJjNzE4MThmOTk3NDhkYTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0
b3IuY3BwCkBAIC0xNjUyLDcgKzE2NTIsOSBAQCBzdGF0aWMgYm9vbCByZWNvbXBvc2l0ZUNoYW5n
ZVJlcXVpcmVzR2VvbWV0cnlVcGRhdGUoY29uc3QgUmVuZGVyU3R5bGUmIG9sZFN0eWxlLAogICAg
ICAgICB8fCBvbGRTdHlsZS5vZmZzZXRQb3NpdGlvbigpICE9IG5ld1N0eWxlLm9mZnNldFBvc2l0
aW9uKCkKICAgICAgICAgfHwgb2xkU3R5bGUub2Zmc2V0RGlzdGFuY2UoKSAhPSBuZXdTdHlsZS5v
ZmZzZXREaXN0YW5jZSgpCiAgICAgICAgIHx8IG9sZFN0eWxlLm9mZnNldFJvdGF0ZSgpICE9IG5l
d1N0eWxlLm9mZnNldFJvdGF0ZSgpCi0gICAgICAgIHx8ICFhcmVQb2ludGluZ1RvRXF1YWxEYXRh
KG9sZFN0eWxlLmNsaXBQYXRoKCksIG5ld1N0eWxlLmNsaXBQYXRoKCkpOworICAgICAgICB8fCAh
YXJlUG9pbnRpbmdUb0VxdWFsRGF0YShvbGRTdHlsZS5jbGlwUGF0aCgpLCBuZXdTdHlsZS5jbGlw
UGF0aCgpKQorICAgICAgICB8fCBvbGRTdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JYKCkgIT0gbmV3
U3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWCgpCisgICAgICAgIHx8IG9sZFN0eWxlLm92ZXJzY3Jv
bGxCZWhhdmlvclkoKSAhPSBuZXdTdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JZKCk7CiB9CiAKIHZv
aWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpsYXllclN0eWxlQ2hhbmdlZChTdHlsZURpZmZlcmVu
Y2UgZGlmZiwgUmVuZGVyTGF5ZXImIGxheWVyLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUp
CkBAIC0zOTQ1LDYgKzM5NDcsMTEgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJvb3RP
ckJvZHlTdHlsZUNoYW5nZWQoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnMKICAgICBib29s
IGhhZEZpeGVkQmFja2dyb3VuZCA9IG9sZFN0eWxlICYmIG9sZFN0eWxlLT5oYXNFbnRpcmVseUZp
eGVkQmFja2dyb3VuZCgpOwogICAgIGlmIChoYWRGaXhlZEJhY2tncm91bmQgIT0gcmVuZGVyZXIu
c3R5bGUoKS5oYXNFbnRpcmVseUZpeGVkQmFja2dyb3VuZCgpKQogICAgICAgICByb290TGF5ZXJD
b25maWd1cmF0aW9uQ2hhbmdlZCgpOworICAgIAorICAgIGlmIChvbGRTdHlsZSAmJiAob2xkU3R5
bGUtPm92ZXJzY3JvbGxCZWhhdmlvclgoKSAhPSByZW5kZXJlci5zdHlsZSgpLm92ZXJzY3JvbGxC
ZWhhdmlvclgoKSB8fCBvbGRTdHlsZS0+b3ZlcnNjcm9sbEJlaGF2aW9yWSgpICE9IHJlbmRlcmVy
LnN0eWxlKCkub3ZlcnNjcm9sbEJlaGF2aW9yWSgpKSkgeworICAgICAgICBpZiAoYXV0byogbGF5
ZXIgPSBtX3JlbmRlclZpZXcubGF5ZXIoKSkKKyAgICAgICAgICAgIGxheWVyLT5zZXROZWVkc0Nv
bXBvc2l0aW5nR2VvbWV0cnlVcGRhdGUoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVuZGVyTGF5ZXJD
b21wb3NpdG9yOjpyb290QmFja2dyb3VuZENvbG9yT3JUcmFuc3BhcmVuY3lDaGFuZ2VkKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCmluZGV4IDZi
MzYzOGQxYThmMGUxZTY3NGEzNWZlOWNmMmUzY2I1ZWY2YjhkMGEuLjZlZDYyNzg4MjIxODY5ZmZh
Y2FmNjQ0MGM3YTQ0NGUyOTdkOTNhZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlLmNwcApAQCAtMTE5Niw3ICsxMTk2LDkgQEAgYm9vbCBSZW5kZXJT
dHlsZTo6Y2hhbmdlUmVxdWlyZXNSZWNvbXBvc2l0ZUxheWVyKGNvbnN0IFJlbmRlclN0eWxlJiBv
dGhlciwgT3B0aW8KICAgICAgICAgICAgIHx8IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmJhY2tm
YWNlVmlzaWJpbGl0eSAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5iYWNrZmFjZVZp
c2liaWxpdHkKICAgICAgICAgICAgIHx8IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnBlcnNwZWN0
aXZlICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnBlcnNwZWN0aXZlCiAgICAgICAg
ICAgICB8fCBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5wZXJzcGVjdGl2ZU9yaWdpblggIT0gb3Ro
ZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+cGVyc3BlY3RpdmVPcmlnaW5YCi0gICAgICAgICAg
ICB8fCBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5wZXJzcGVjdGl2ZU9yaWdpblkgIT0gb3RoZXIu
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+cGVyc3BlY3RpdmVPcmlnaW5ZKQorICAgICAgICAgICAg
fHwgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+cGVyc3BlY3RpdmVPcmlnaW5ZICE9IG90aGVyLm1f
cmFyZU5vbkluaGVyaXRlZERhdGEtPnBlcnNwZWN0aXZlT3JpZ2luWQorICAgICAgICAgICAgfHwg
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+b3ZlcnNjcm9sbEJlaGF2aW9yWCAhPSBvdGhlci5tX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLT5vdmVyc2Nyb2xsQmVoYXZpb3JYCisgICAgICAgICAgICB8fCBt
X3JhcmVOb25Jbmhlcml0ZWREYXRhLT5vdmVyc2Nyb2xsQmVoYXZpb3JZICE9IG90aGVyLm1fcmFy
ZU5vbkluaGVyaXRlZERhdGEtPm92ZXJzY3JvbGxCZWhhdmlvclkpCiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5YjA2M2Q0NjEwOGJlZWNiNzlhMjJkYzhlMWE4M2Qz
OWFjNzNlMjJiLi5lNTUyMWI3NjY0Y2I1MzFjNDAzMDRkNGYzYTc4OGIzNDE5ZTZhOGI4IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjIgQEAKKzIwMjEtMTItMDEgIE5pa29sYW9zIE1vdWNodGFyaXMgIDxubW91
Y2h0YXJpc0BhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IENTUyBvdmVyc2Nyb2xsLWJl
aGF2aW9yIGZvciBhc3luY2hyb25vdXMgc2Nyb2xsIG9uIE1hYworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwMTM5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMt
b3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9s
bC1iZWhhdmlvci1pZnJhbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Nj
cm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUuaHRtbDogQWRkZWQu
CisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3It
dW5zY3JvbGxhYmxlLWVsZW1lbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxl
bWVudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3Zl
cnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3It
dW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGlu
Zy9yZXNvdXJjZXMvb3ZlcnNjcm9sbC1iZWhhdmlvci1zdXBwb3J0LmpzOiBBZGRlZC4KKyAgICAg
ICAgKGdldERlbHRhcyk6CisgICAgICAgIChhc3luYyBtb3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCk6
CisKIDIwMjEtMTEtMzAgIFJvYmVydCBKZW5uZXIgIDxKZW5uZXJAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJFQkFTRUxJTkUgWyBNb250ZXJleSBdZmFzdC9jc3MvY29udGludWF0aW9uQ3Jhc2guaHRt
bCAobGF5b3V0LXRlc3QpIGlzIGEgY29uc3RhbnQgdGV4dCBmYWlsdXJlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci1l
bGVtZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL21hYy9hc3lu
Yy1vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI3
MTUwZmY2MGI1ZGJkZDBiNGE3YWM2ZjgzZmI1NmY1N2NkMmNkODIKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlv
ci1lbGVtZW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIwIEBACisKK1BBU1MgRWxlbWVudCBo
b3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBhdXRv
LgorUEFTUyBFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhh
dmlvcjogYXV0byBhdXRvLgorUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0
aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGF1dG8uCitQQVNTIEVsZW1lbnQgdmVydGlj
YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGF1dG8uCitQ
QVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZp
b3I6IG5vbmUgYXV0by4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92
ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgYXV0by4KK1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNj
cm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBjb250YWluLgorUEFTUyBF
bGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0
byBjb250YWluLgorUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVy
c2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGNvbnRhaW4uCitQQVNTIEVsZW1lbnQgdmVydGljYWwg
c2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGNvbnRhaW4uCitQ
QVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZp
b3I6IG5vbmUgY29udGFpbi4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRo
IG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgY29udGFpbi4KK1BBU1MgRWxlbWVudCBob3Jpem9u
dGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBub25lLgorUEFT
UyBFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjog
YXV0byBub25lLgorUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVy
c2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIG5vbmUuCitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Ny
b2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIG5vbmUuCitQQVNTIEVs
ZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5v
bmUgbm9uZS4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3Jv
bGwtYmVoYXZpb3I6IG5vbmUgbm9uZS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9z
Y3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxl
bWVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MTM3YjljYjc3OWE5MTY3ZGIyMjUxZDMwNjdlNDYzZWFj
OTQ2MzcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMv
YXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50Lmh0bWwKQEAgLTAsMCArMSw4NiBAQAor
PCFkb2N0eXBlIGh0bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgQXN5bmNPdmVyZmxvd1Nj
cm9sbGluZ0VuYWJsZWQ9dHJ1ZSBBc3luY0ZyYW1lU2Nyb2xsaW5nRW5hYmxlZD10cnVlIF0gLS0+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2aW9y
LXN1cHBvcnQuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL2Ry
YWZ0cy5jc3N3Zy5vcmcvY3NzLW92ZXJzY3JvbGwtYmVoYXZpb3IiPgorPHN0eWxlPgorICAgIC5z
Y3JvbGxpbmcgeworICAgICAgICBvdmVyZmxvdzogc2Nyb2xsOworICAgIH0KKyAgICAuc2Nyb2xs
Q29udGVudCB7CisgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgaGVpZ2h0OiAzMDBweDsK
KyAgICB9CisgICAgI3Jvb3QgeworICAgICAgICB3aWR0aDogMjAwcHg7CisgICAgICAgIGhlaWdo
dDogMjAwcHg7CisgICAgfQorICAgICNzY3JvbGxlciB7CisgICAgICAgIHdpZHRoOiAxMDBweDsK
KyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICB9Cis8L3N0eWxlPgorPGRpdiBpZD0ncm9vdCcg
Y2xhc3M9InNjcm9sbGluZyI+CisgICAgPGRpdiBpZD0nc2Nyb2xsZXInIGNsYXNzPSJzY3JvbGxp
bmciPgorICAgICAgICA8ZGl2IGNsYXNzPSJzY3JvbGxDb250ZW50Ij48L2Rpdj4KKyAgICA8L2Rp
dj4KKyAgICA8ZGl2IGNsYXNzPSJzY3JvbGxDb250ZW50Ij48L2Rpdj4KKzwvZGl2PgorCis8c2Ny
aXB0PgorY29uc3Qgcm9vdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyb290Jyk7Citjb25z
dCBzY3JvbGxlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY3JvbGxlcicpOwordmFyIG92
ZXJzY3JvbGxEYXRhcyA9IFtbImF1dG8iLCAiYXV0byIsIHRydWUsIHRydWVdLAorICAgICAgICAg
ICAgICAgICAgICAgICAgWyJjb250YWluIiwgImF1dG8iLCBmYWxzZSwgdHJ1ZV0sCisgICAgICAg
ICAgICAgICAgICAgICAgICBbIm5vbmUiLCAiYXV0byIsIGZhbHNlLCB0cnVlXSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIFsiYXV0byIsICJjb250YWluIiwgdHJ1ZSwgZmFsc2VdLAorICAgICAg
ICAgICAgICAgICAgICAgICAgWyJjb250YWluIiwgImNvbnRhaW4iLCBmYWxzZSwgZmFsc2VdLAor
ICAgICAgICAgICAgICAgICAgICAgICAgWyJub25lIiwgImNvbnRhaW4iLCBmYWxzZSwgZmFsc2Vd
LAorICAgICAgICAgICAgICAgICAgICAgICAgWyJhdXRvIiwgIm5vbmUiLCB0cnVlLCBmYWxzZV0s
CisgICAgICAgICAgICAgICAgICAgICAgICBbImNvbnRhaW4iLCAibm9uZSIsIGZhbHNlLCBmYWxz
ZV0sCisgICAgICAgICAgICAgICAgICAgICAgICBbIm5vbmUiLCAibm9uZSIsIGZhbHNlLCBmYWxz
ZV1dOworCitmdW5jdGlvbiByZXNldFRlc3QoKSB7CisgICAgLy8gVHJ5IHZhcmlvdXMgbWV0aG9k
cyB0byBlbnN1cmUgdGhlIGVsZW1lbnQgcG9zaXRpb24gaXMgcmVzZXQgaW1tZWRpYXRlbHkuCisg
ICAgc2Nyb2xsZXIuc2Nyb2xsTGVmdCA9IDMwMDsKKyAgICBzY3JvbGxlci5zY3JvbGxUb3AgPSAz
MDA7CisgICAgc2Nyb2xsZXIuc2Nyb2xsVG8oMzAwLCAzMDApOworCisgICAgcm9vdC5zY3JvbGxM
ZWZ0ID0gMDsKKyAgICByb290LnNjcm9sbFRvcCA9IDA7CisgICAgcm9vdC5zY3JvbGxUbygwLCAw
KTsKK30KKworZnVuY3Rpb24gc3RhcnRUZXN0KCkgeworICAgIG92ZXJzY3JvbGxEYXRhcy5mb3JF
YWNoKChbb3ZlcnNjcm9sbFgsIG92ZXJzY3JvbGxZLCBwcm9wYWdhdGVYLCBwcm9wYWdhdGVZXSkg
PT4geworICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgICAgICAgICAgcmVzZXRUZXN0
KCk7CisgICAgICAgICAgICBzY3JvbGxlci5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JYID0gb3Zl
cnNjcm9sbFg7CisgICAgICAgICAgICBzY3JvbGxlci5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JZ
ID0gb3ZlcnNjcm9sbFk7CisgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoOwor
CisgICAgICAgICAgICB2YXIgeCA9IHNjcm9sbGVyLmNsaWVudFdpZHRoIC8gMjsKKyAgICAgICAg
ICAgIHZhciB5ID0gc2Nyb2xsZXIuY2xpZW50SGVpZ2h0IC8gMjsKKyAgICAgICAgICAgIHZhciBk
ZWx0YSA9IGdldERlbHRhcygicmlnaHQiKTsKKyAgICAgICAgICAgIHJldHVybiBtb3VzZVdoZWVs
U2Nyb2xsQW5kV2FpdCh4LCB5LCBkZWx0YS5YLCBkZWx0YS5ZLCBkZWx0YS5YLCBkZWx0YS5ZKS50
aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsTGVm
dCA+IDAsIHByb3BhZ2F0ZVgsICdDb250aW51ZSB1cCB0aGUgaG9yaXpvbnRhbCBzY3JvbGwgY2hh
aW5pbmcnKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9LCAnRWxlbWVudCBob3Jpem9udGFs
IHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogJyArIG92ZXJzY3JvbGxYICsg
JyAnICsgb3ZlcnNjcm9sbFkgKyAnLicpOworCisgICAgICAgIHByb21pc2VfdGVzdCgoKSA9PiB7
CisgICAgICAgICAgICByZXNldFRlc3QoKTsKKyAgICAgICAgICAgIHNjcm9sbGVyLnN0eWxlLm92
ZXJzY3JvbGxCZWhhdmlvclggPSBvdmVyc2Nyb2xsWDsKKyAgICAgICAgICAgIHNjcm9sbGVyLnN0
eWxlLm92ZXJzY3JvbGxCZWhhdmlvclkgPSBvdmVyc2Nyb2xsWTsKKworICAgICAgICAgICAgdmFy
IHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAgICAgICAgICB2YXIgeSA9IHNjcm9s
bGVyLmNsaWVudEhlaWdodCAvIDI7CisgICAgICAgICAgICB2YXIgZGVsdGEgPSBnZXREZWx0YXMo
ImRvd24iKTsKKyAgICAgICAgICAgIHJldHVybiBtb3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCh4LCB5
LCBkZWx0YS5YLCBkZWx0YS5ZLCBkZWx0YS5YLCBkZWx0YS5ZKS50aGVuKCgpID0+IHsKKyAgICAg
ICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsVG9wID4gMCwgcHJvcGFnYXRlWSwg
J0NvbnRpbnVlIHVwIHRoZSB2ZXJ0aWNhbCBzY3JvbGwgY2hhaW5pbmcnKTsKKyAgICAgICAgICAg
IH0pOworICAgICAgICB9LCAnRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJz
Y3JvbGwtYmVoYXZpb3I6ICcgKyBvdmVyc2Nyb2xsWCArICcgJyArIG92ZXJzY3JvbGxZICsgJy4n
KTsKKyAgICB9KTsKK30KKworYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIHN0YXJ0VGVzdCk7Cis8
L3NjcmlwdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJz
Y3JvbGwtYmVoYXZpb3ItaWZyYW1lLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MDBhMGI3ZDkw
NWI4N2MxZGI3NjI2OTRmZDAwNjM4ZjE5NzY5NTM3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1l
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIxIEBACisKKworUEFTUyBJZnJhbWUgaG9yaXpvbnRh
bCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gYXV0by4KK1BBU1Mg
SWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0
byBhdXRvLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3Jv
bGwtYmVoYXZpb3I6IGNvbnRhaW4gYXV0by4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0
ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBhdXRvLgorUEFTUyBJZnJhbWUg
aG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgYXV0
by4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhh
dmlvcjogbm9uZSBhdXRvLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRo
IG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gY29udGFpbi4KK1BBU1MgSWZyYW1lIHZlcnRpY2Fs
IHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBjb250YWluLgorUEFT
UyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6
IGNvbnRhaW4gY29udGFpbi4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGgg
b3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBjb250YWluLgorUEFTUyBJZnJhbWUgaG9yaXpv
bnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgY29udGFpbi4K
K1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlv
cjogbm9uZSBjb250YWluLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRo
IG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gbm9uZS4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNj
cm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBub25lLgorUEFTUyBJZnJh
bWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRh
aW4gbm9uZS4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9s
bC1iZWhhdmlvcjogY29udGFpbiBub25lLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwg
dGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgbm9uZS4KK1BBU1MgSWZyYW1lIHZl
cnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBub25lLgor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNj
cm9sbC1iZWhhdmlvci1pZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL21h
Yy9hc3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNmODcx
MzY0Zjk1YmQ3N2Y2ZTRjZTliZWE0MjgzNTE0MGI0MGMxZjAKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci1p
ZnJhbWUuaHRtbApAQCAtMCwwICsxLDg2IEBACis8IWRvY3R5cGUgaHRtbD4gPCEtLSB3ZWJraXQt
dGVzdC1ydW5uZXIgWyBBc3luY092ZXJmbG93U2Nyb2xsaW5nRW5hYmxlZD10cnVlIEFzeW5jRnJh
bWVTY3JvbGxpbmdFbmFibGVkPXRydWUgXSAtLT4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jl
c291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li9yZXNvdXJjZXMvb3ZlcnNjcm9sbC1iZWhhdmlvci1zdXBwb3J0LmpzIj48L3NjcmlwdD4KKzxs
aW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1vdmVyc2Ny
b2xsLWJlaGF2aW9yIj4KKzxzdHlsZT4KKyAgICAuc2Nyb2xsaW5nIHsKKyAgICAgICAgb3ZlcmZs
b3c6IHNjcm9sbDsKKyAgICB9CisgICAgLnNjcm9sbENvbnRlbnQgeworICAgICAgICB3aWR0aDog
MzAwcHg7CisgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgIGJhY2tncm91bmQ6IGxpbmVh
ci1ncmFkaWVudCgxMzVkZWcsIHJlZCwgYmx1ZSk7CisgICAgfQorICAgICNyb290IHsKKyAgICAg
ICAgd2lkdGg6IDIwMHB4OworICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAgIH0KKyAgICAjc2Ny
b2xsZXIgeworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7Cisg
ICAgICAgIG92ZXJzY3JvbGwtYmVoYXZpb3IteTogYXV0bzsKKyAgICB9Cis8L3N0eWxlPgorPGRp
diBpZD0ncm9vdCcgY2xhc3M9InNjcm9sbGluZyI+CisgICAgPGlmcmFtZSBpZD0nc2Nyb2xsZXIn
IHNyY2RvYz0iPGh0bWw+PGRpdiBzdHlsZT0nd2lkdGg6IDMwMHB4OyBoZWlnaHQ6IDMwMHB4Oyc+
PC9kaXY+PC9odG1sPgorICAgICAgICAiPjwvaWZyYW1lPgorICAgIDxkaXYgY2xhc3M9InNjcm9s
bENvbnRlbnQiPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+CisgICAgY29uc3Qgcm9vdCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdyb290Jyk7CisgICAgY29uc3Qgc2Nyb2xsZXIgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnc2Nyb2xsZXInKTsKKyAgICB2YXIgb3ZlcnNjcm9sbERhdGFz
ID0gW1siYXV0byIsICJhdXRvIiwgdHJ1ZSwgdHJ1ZV0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgWyJjb250YWluIiwgImF1dG8iLCBmYWxzZSwgdHJ1ZV0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgWyJub25lIiwgImF1dG8iLCBmYWxzZSwgdHJ1ZV0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgWyJhdXRvIiwgImNvbnRhaW4iLCB0cnVlLCBmYWxzZV0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgWyJjb250YWluIiwgImNvbnRhaW4iLCBmYWxzZSwgZmFsc2Vd
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsibm9uZSIsICJjb250YWluIiwgZmFsc2Us
IGZhbHNlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImF1dG8iLCAibm9uZSIsIHRy
dWUsIGZhbHNlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImNvbnRhaW4iLCAibm9u
ZSIsIGZhbHNlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJub25lIiwg
Im5vbmUiLCBmYWxzZSwgZmFsc2VdXTsKKyAgICBmdW5jdGlvbiByZXNldFRlc3QoKSB7CisgICAg
ICAgIC8vIFRyeSB2YXJpb3VzIG1ldGhvZHMgdG8gZW5zdXJlIHRoZSBlbGVtZW50IHBvc2l0aW9u
IGlzIHJlc2V0IGltbWVkaWF0ZWx5LgorICAgICAgICBzY3JvbGxlci5jb250ZW50V2luZG93LnNj
cm9sbFggPSAzMDA7CisgICAgICAgIHNjcm9sbGVyLmNvbnRlbnRXaW5kb3cuc2Nyb2xsWSA9IDMw
MDsKKyAgICAgICAgc2Nyb2xsZXIuY29udGVudFdpbmRvdy5zY3JvbGxUbygzMDAsIDMwMCk7Cisg
ICAgICAgIHJvb3Quc2Nyb2xsTGVmdCA9IDA7CisgICAgICAgIHJvb3Quc2Nyb2xsVG9wID0gMDsK
KyAgICAgICAgcm9vdC5zY3JvbGxUbygwLCAwKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBvdmVy
c2Nyb2xsQmVoYXZpb3JUZXN0KCkgeworICAgICAgICBvdmVyc2Nyb2xsRGF0YXMuZm9yRWFjaCgo
W292ZXJzY3JvbGxYLCBvdmVyc2Nyb2xsWSwgcHJvcGFnYXRlWCwgcHJvcGFnYXRlWV0pID0+IHsK
KyAgICAgICAgICAgIHByb21pc2VfdGVzdCgoKSA9PiB7CisgICAgICAgICAgICAgICAgcmVzZXRU
ZXN0KCk7CisgICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IHNjcm9sbGVyLmNvbnRlbnRXaW5k
b3cuZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImh0bWwiKVswXTsKKyAgICAgICAgICAg
ICAgICB0YXJnZXQuc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWCA9IG92ZXJzY3JvbGxYOworICAg
ICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JZID0gb3ZlcnNjcm9s
bFk7CisgICAgICAgICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7Cisg
ICAgICAgICAgICAgICAgdmFyIHkgPSBzY3JvbGxlci5jbGllbnRIZWlnaHQgLyAyOworICAgICAg
ICAgICAgICAgIHZhciBkZWx0YSA9IGdldERlbHRhcygicmlnaHQiKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gbW91c2VXaGVlbFNjcm9sbEFuZFdhaXQoeCwgeSwgZGVsdGEuWCwgZGVsdGEuWSwg
ZGVsdGEuWCwgZGVsdGEuWSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgICAgIGFzc2Vy
dF9lcXVhbHMocm9vdC5zY3JvbGxMZWZ0ID4gMCwgcHJvcGFnYXRlWCwgJ0NvbnRpbnVlIHVwIHRo
ZSBob3Jpem9udGFsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAgICAgICAgICAgIH0pOworICAg
ICAgICAgICAgfSwgJ0lmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9s
bC1iZWhhdmlvcjogJyArIG92ZXJzY3JvbGxYICsgJyAnICsgb3ZlcnNjcm9sbFkgKyAnLicpOwor
CisgICAgICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgICAgICAgICAgICAgIHJlc2V0
VGVzdCgpOworICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSBzY3JvbGxlci5jb250ZW50V2lu
ZG93LmRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJodG1sIilbMF07CisgICAgICAgICAg
ICAgICAgdGFyZ2V0LnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclggPSBvdmVyc2Nyb2xsWDsKKyAg
ICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWSA9IG92ZXJzY3Jv
bGxZOworCisgICAgICAgICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7
CisgICAgICAgICAgICAgICAgdmFyIHkgPSBzY3JvbGxlci5jbGllbnRIZWlnaHQgLyAyOworICAg
ICAgICAgICAgICAgIHZhciBkZWx0YSA9IGdldERlbHRhcygiZG93biIpOworICAgICAgICAgICAg
ICAgIHJldHVybiBtb3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCh4LCB5LCBkZWx0YS5YLCBkZWx0YS5Z
LCBkZWx0YS5YLCBkZWx0YS5ZKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgYXNz
ZXJ0X2VxdWFscyhyb290LnNjcm9sbFRvcCA+IDAsIHByb3BhZ2F0ZVksICdDb250aW51ZSB1cCB0
aGUgdmVydGljYWwgc2Nyb2xsIGNoYWluaW5nJyk7CisgICAgICAgICAgICAgICAgfSk7CisgICAg
ICAgICAgICB9LCAnSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1i
ZWhhdmlvcjogJyArIG92ZXJzY3JvbGxYICsgJyAnICsgb3ZlcnNjcm9sbFkgKyAnLicpOworICAg
ICAgICB9KTsKKyAgICB9CisKKyAgICBzY3JvbGxlci5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwg
b3ZlcnNjcm9sbEJlaGF2aW9yVGVzdCk7Cis8L3NjcmlwdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMt
b3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci11
bnNjcm9sbGFibGUtZWxlbWVudC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjM5NWI2NDg4ZDA4
NzBiOTU2MWMwMjg2NzlkN2UxNWE0N2ZjZTZlOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xs
YWJsZS1lbGVtZW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKKworUEFTUyBVbnNjcm9s
bGFibGUgZWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhh
dmlvcjogbm9uZS4KK1BBU1MgVW5zY3JvbGxhYmxlIGVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRl
c3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLgorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9s
bGFibGUtZWxlbWVudC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5j
LW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5hNDQ4ZjJlMGVhNWNjMDc4ZjFmOWVhNGMyZDdmNzgwZWU3YjdlNTg0Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVo
YXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRtbApAQCAtMCwwICsxLDY3IEBACis8IWRvY3R5
cGUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBBc3luY092ZXJmbG93U2Nyb2xsaW5n
RW5hYmxlZD10cnVlIEFzeW5jRnJhbWVTY3JvbGxpbmdFbmFibGVkPXRydWUgXSAtLT4KKworPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvb3ZlcnNjcm9sbC1iZWhhdmlvci1zdXBw
b3J0LmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9kcmFmdHMu
Y3Nzd2cub3JnL2Nzcy1vdmVyc2Nyb2xsLWJlaGF2aW9yIj4KKzxzdHlsZT4KKyAgICAuc2Nyb2xs
aW5nIHsKKyAgICAgICAgb3ZlcmZsb3c6IHNjcm9sbDsKKyAgICB9CisgICAgLnNjcm9sbENvbnRl
bnQgeworICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAg
fQorICAgICNyb290IHsKKyAgICAgICAgd2lkdGg6IDIwMHB4OworICAgICAgICBoZWlnaHQ6IDIw
MHB4OworICAgIH0KKyAgICAjc2Nyb2xsZXIgeworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAg
ICAgIGhlaWdodDogMTAwcHg7CisgICAgICAgIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmU7Cisg
ICAgICAgIG92ZXJmbG93OiB2aXNpYmxlOworICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3Jh
ZGllbnQoMTM1ZGVnLCByZWQsIGJsdWUpOworICAgIH0KKzwvc3R5bGU+Cis8ZGl2IGlkPSJyb290
IiBjbGFzcz0ic2Nyb2xsaW5nIj4KKyAgICA8ZGl2IGlkPSJzY3JvbGxlciI+CisgICAgICAgIDxk
aXYgY2xhc3M9InNjcm9sbENvbnRlbnQiPjwvZGl2PgorICAgIDwvZGl2PgorICAgIDxkaXYgY2xh
c3M9InNjcm9sbENvbnRlbnQiPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+Citjb25zdCByb290
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jvb3QnKTsKK2NvbnN0IHNjcm9sbGVyID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Njcm9sbGVyJyk7CisKK2Z1bmN0aW9uIHJlc2V0VGVzdCgp
IHsKKyAgICByb290LnNjcm9sbExlZnQgPSAwOworICAgIHJvb3Quc2Nyb2xsVG9wID0gMDsKKyAg
ICByb290LnNjcm9sbFRvKDAsIDApOworfQorCitmdW5jdGlvbiBzdGFydFRlc3QoKSB7CisgICAg
ICAgIHByb21pc2VfdGVzdCgoKSA9PiB7CisgICAgICAgICAgICByZXNldFRlc3QoKTsKKyAgICAg
ICAgICAgIHZhciB4ID0gc2Nyb2xsZXIuY2xpZW50V2lkdGggLyAyOworICAgICAgICAgICAgdmFy
IHkgPSBzY3JvbGxlci5jbGllbnRIZWlnaHQgLyAyOworICAgICAgICAgICAgdmFyIGRlbHRhID0g
Z2V0RGVsdGFzKCJyaWdodCIpOworICAgICAgICAgICAgcmV0dXJuIG1vdXNlV2hlZWxTY3JvbGxB
bmRXYWl0KHgsIHksIGRlbHRhLlgsIGRlbHRhLlksIGRlbHRhLlgsIGRlbHRhLlkpLnRoZW4oKCkg
PT4geworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxMZWZ0ID4gMCwg
dHJ1ZSwgJ0NvbnRpbnVlIHVwIHRoZSBob3Jpem9udGFsIHNjcm9sbCBjaGFpbmluZycpOworICAg
ICAgICAgICAgfSk7CisgICAgICAgIH0sICdVbnNjcm9sbGFibGUgZWxlbWVudCBob3Jpem9udGFs
IHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4nKTsKKworICAgICAg
ICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgICAgICAgICAgcmVzZXRUZXN0KCk7CisgICAgICAg
ICAgICB2YXIgeCA9IHNjcm9sbGVyLmNsaWVudFdpZHRoIC8gMjsKKyAgICAgICAgICAgIHZhciB5
ID0gc2Nyb2xsZXIuY2xpZW50SGVpZ2h0IC8gMjsKKyAgICAgICAgICAgIHZhciBkZWx0YSA9IGdl
dERlbHRhcygiZG93biIpOworICAgICAgICAgICAgcmV0dXJuIG1vdXNlV2hlZWxTY3JvbGxBbmRX
YWl0KHgsIHksIGRlbHRhLlgsIGRlbHRhLlksIGRlbHRhLlgsIGRlbHRhLlkpLnRoZW4oKCkgPT4g
eworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxUb3AgPiAwLCB0cnVl
LCAnQ29udGludWUgdXAgdGhlIHZlcnRpY2FsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAgICAg
ICAgfSk7CisgICAgICAgIH0sICdVbnNjcm9sbGFibGUgZWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwg
dGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuJyk7Cit9CisKK2FkZEV2ZW50TGlz
dGVuZXIoImxvYWQiLCBzdGFydFRlc3QpOworPC9zY3JpcHQ+ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5j
LW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci11
bnNjcm9sbGFibGUtaWZyYW1lLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZmE1OWNjYmE3OWFl
ZmYzM2RhNzBlOTNkNDg4YTA3ZWVjOWM1NjkxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxh
YmxlLWlmcmFtZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBACisKKworUEFTUyBVbnNjcm9s
bGFibGUgaWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2
aW9yOiBub25lLgorUEFTUyBVbnNjcm9sbGFibGUgaWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0
IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxh
YmxlLWlmcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92
ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMz
ZWM1YjI2M2MyYjgzYmUxYTUyODcxNmNlODY1NjNkOTdhY2QxZDYKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlv
ci11bnNjcm9sbGFibGUtaWZyYW1lLmh0bWwKQEAgLTAsMCArMSw2NiBAQAorPCFkb2N0eXBlIGh0
bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgQXN5bmNPdmVyZmxvd1Njcm9sbGluZ0VuYWJs
ZWQ9dHJ1ZSBBc3luY0ZyYW1lU2Nyb2xsaW5nRW5hYmxlZD10cnVlIF0gLS0+CisKKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL292ZXJzY3JvbGwtYmVoYXZpb3Itc3VwcG9ydC5q
cyI+PC9zY3JpcHQ+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vZHJhZnRzLmNzc3dn
Lm9yZy9jc3Mtb3ZlcnNjcm9sbC1iZWhhdmlvciI+Cis8c3R5bGU+CisgICAgLnNjcm9sbGluZyB7
CisgICAgICAgIG92ZXJmbG93OiBzY3JvbGw7CisgICAgfQorICAgIC5zY3JvbGxDb250ZW50IHsK
KyAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgIH0KKyAg
ICAjcm9vdCB7CisgICAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgICAgaGVpZ2h0OiAyMDBweDsK
KyAgICB9CisgICAgI3Njcm9sbGVyIHsKKyAgICAgICAgd2lkdGg6IDIwMHB4OworICAgICAgICBo
ZWlnaHQ6IDIwMHB4OworICAgICAgICBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lOworICAgICAg
ICBvdmVyZmxvdzogdmlzaWJsZTsKKyAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50
KDEzNWRlZywgcmVkLCBibHVlKTsKKyAgICB9Cis8L3N0eWxlPgorPGRpdiBpZD0ncm9vdCcgY2xh
c3M9InNjcm9sbGluZyI+CisgICAgPGlmcmFtZSBpZD0nc2Nyb2xsZXInIHNyY2RvYz0iPGh0bWwg
c3R5bGU9J292ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmU7Jz48ZGl2IHN0eWxlPSd3aWR0aDogMTAw
cHg7IGhlaWdodDogMTAwcHg7Jz48L2Rpdj48L2h0bWw+CisgICAgICAgICI+PC9pZnJhbWU+Cisg
ICAgPGRpdiBjbGFzcz0ic2Nyb2xsQ29udGVudCI+PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4K
K2NvbnN0IHJvb3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncm9vdCcpOworY29uc3Qgc2Ny
b2xsZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2Nyb2xsZXInKTsKKworZnVuY3Rpb24g
cmVzZXRUZXN0KCkgeworICAgIHJvb3Quc2Nyb2xsTGVmdCA9IDA7CisgICAgcm9vdC5zY3JvbGxU
b3AgPSAwOworICAgIHJvb3Quc2Nyb2xsVG8oMCwgMCk7Cit9CisKK2Z1bmN0aW9uIHN0YXJ0VGVz
dCgpIHsKKyAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAgIHJlc2V0VGVz
dCgpOworICAgICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAg
ICAgICAgICB2YXIgeSA9IHNjcm9sbGVyLmNsaWVudEhlaWdodCAvIDI7CisgICAgICAgICAgICB2
YXIgZGVsdGEgPSBnZXREZWx0YXMoInJpZ2h0Iik7CisgICAgICAgICAgICByZXR1cm4gbW91c2VX
aGVlbFNjcm9sbEFuZFdhaXQoeCwgeSwgZGVsdGEuWCwgZGVsdGEuWSwgZGVsdGEuWCwgZGVsdGEu
WSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9s
bExlZnQgPiAwLCB0cnVlLCAnQ29udGludWUgdXAgdGhlIGhvcml6b250YWwgc2Nyb2xsIGNoYWlu
aW5nJyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSwgJ1Vuc2Nyb2xsYWJsZSBpZnJhbWUg
aG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuJyk7
CisKKyAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAgIHJlc2V0VGVzdCgp
OworICAgICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAgICAg
ICAgICB2YXIgeSA9IHNjcm9sbGVyLmNsaWVudEhlaWdodCAvIDI7CisgICAgICAgICAgICB2YXIg
ZGVsdGEgPSBnZXREZWx0YXMoImRvd24iKTsKKyAgICAgICAgICAgIHJldHVybiBtb3VzZVdoZWVs
U2Nyb2xsQW5kV2FpdCh4LCB5LCBkZWx0YS5YLCBkZWx0YS5ZLCBkZWx0YS5YLCBkZWx0YS5ZKS50
aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsVG9w
ID4gMCwgdHJ1ZSwgJ0NvbnRpbnVlIHVwIHRoZSB2ZXJ0aWNhbCBzY3JvbGwgY2hhaW5pbmcnKTsK
KyAgICAgICAgICAgIH0pOworICAgICAgICB9LCAnVW5zY3JvbGxhYmxlIGlmcmFtZSB2ZXJ0aWNh
bCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuJyk7Cit9CisKK2Fk
ZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBzdGFydFRlc3QpOworPC9zY3JpcHQ+ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcv
cmVzb3VyY2VzL292ZXJzY3JvbGwtYmVoYXZpb3Itc3VwcG9ydC5qcyBiL0xheW91dFRlc3RzL2Zh
c3Qvc2Nyb2xsaW5nL3Jlc291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXN1cHBvcnQuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uY2JkMjIyZTkwYjUyYTE5MzBiN2ZjZmU0NDIzZTk0NTgzYzA0NjAwZQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3Jlc291cmNlcy9vdmVyc2Ny
b2xsLWJlaGF2aW9yLXN1cHBvcnQuanMKQEAgLTAsMCArMSwzOSBAQAorZnVuY3Rpb24gZ2V0RGVs
dGFzKGRpcmVjdGlvbikgeworICAgIHZhciBkZWx0YVggPSAwOworICAgIHZhciBkZWx0YVkgPSAw
OworICAgIGlmIChkaXJlY3Rpb24gPT0gImRvd24iKQorICAgICAgICBkZWx0YVkgPSAtNQorICAg
IGVsc2UgaWYgKGRpcmVjdGlvbiA9PSAidXAiKQorICAgICAgICBkZWx0YVkgPSA1OworICAgIGVs
c2UgaWYgKGRpcmVjdGlvbiA9PSAicmlnaHQiKQorICAgICAgICBkZWx0YVggPSAtNTsKKyAgICBl
bHNlIGlmIChkaXJlY3Rpb24gPT0gImxlZnQiKQorICAgICAgICBkZWx0YVggPSA1OworICAgIHJl
dHVybiB7CisgICAgICAgIFg6IGRlbHRhWCwKKyAgICAgICAgWTogZGVsdGFZCisgICAgfTsKK30K
KworYXN5bmMgZnVuY3Rpb24gbW91c2VXaGVlbFNjcm9sbEFuZFdhaXQoeCwgeSwgYmVnaW5YLCBi
ZWdpblksIGRlbHRhWCwgZGVsdGFZKQoreworICAgIGlmIChiZWdpblggPT09IHVuZGVmaW5lZCkK
KyAgICAgICAgYmVnaW5YID0gMDsKKyAgICBpZiAoYmVnaW5ZID09PSB1bmRlZmluZWQpCisgICAg
ICAgIGJlZ2luWSA9IC0xOworICAgIGlmIChkZWx0YVggPT09IHVuZGVmaW5lZCkKKyAgICAgICAg
ZGVsdGFYID0gMDsKKyAgICBpZiAoZGVsdGFZID09PSB1bmRlZmluZWQpCisgICAgICAgIGRlbHRh
WSA9IC0xMDsKKworICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgIGV2
ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhiZWdpblgsIGJlZ2luWSwgImJlZ2FuIiwgIm5v
bmUiKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZGVsdGFYLCBkZWx0YVksICJjaGFuZ2VkIiwgIm5vbmUiKTsKKyAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgImVuZGVkIiwg
Im5vbmUiKTsKKyAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgICAgIHNl
dFRpbWVvdXQoKCkgPT4geworICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHJlc29s
dmUpOworICAgICAgICB9LCA1MDApOworICAgIH0pOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446631</attachid>
            <date>2021-12-09 16:37:52 -0800</date>
            <delta_ts>2021-12-09 17:24:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220139-20211209163751.patch</filename>
            <type>text/plain</type>
            <size>33171</size>
            <attacher name="Nikos Mouchtaris">nmouchtaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MzUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGJiNmQyZjJmYmNkN2I3
ODU1MzIxY2U1YjgwMWQ1YzJmYWNiMzhmNC4uODBhYWE0YzRhYWIwNzIyNjM2NGFhM2M1ZTE0YzA2
YTQ4ZDNiNjNmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDIxLTEyLTAxICBOaWtv
bGFvcyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxl
bWVudCBDU1Mgb3ZlcnNjcm9sbC1iZWhhdmlvciBmb3IgYXN5bmNocm9ub3VzIHNjcm9sbCBvbiBN
YWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDEz
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNwbGl0
IHVwIHBhdGNoIGJ5IENhdGhpZSBDaGVuIGFuZCBGcmVkZXJpYyBXYW5nLiBBZGQgZnVuY3Rpb24g
Zm9yIGJsb2NraW5nIHNjcm9sbCBjaGFpbmluZworICAgICAgICBhbmQgZmlsdGVyaW5nIHNjcm9s
bCBkZWx0YSBkZXBlbmRpbmcgb24gdGhlIHZhbHVlcyBvZiBvdmVyc2Nyb2xsIGJlaGF2aW9yIGZv
ciBhIHNjcm9sbGluZworICAgICAgICBub2RlLiBUaGlzIHBhdGNoIGlzIGZvciBhc3luY2hyb25v
dXMgc2Nyb2xsaW5nIG9ubHkuCisKKyAgICAgICAgVGVzdHM6IGZhc3Qvc2Nyb2xsaW5nL21hYy9h
c3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQuaHRtbAorICAgICAgICAgICAgICAgZmFz
dC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0bWwKKyAg
ICAgICAgICAgICAgIGZhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9y
LXVuc2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvc2Nyb2xsaW5n
L21hYy9hc3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUuaHRtbAor
CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxpbmdUcmVlOjpzaG91bGRCbG9ja1Njcm9sbENoYWluaW5nV2l0aE5vZGUp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZTo6aGFuZGxlV2hlZWxFdmVudFdpdGhO
b2RlKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmg6CisgICAgICAg
ICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaDoKKyAgICAgICAg
KiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdh
dGVNYWM6OmFsbG93c0hvcml6b250YWxTdHJldGNoaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OmFsbG93c1ZlcnRpY2Fs
U3RyZXRjaGluZyBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9z
aXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWNvbXBvc2l0ZUNoYW5nZVJlcXVpcmVzR2Vv
bWV0cnlVcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpy
b290T3JCb2R5U3R5bGVDaGFuZ2VkKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmNoYW5nZVJlcXVpcmVz
UmVjb21wb3NpdGVMYXllciBjb25zdCk6CisKIDIwMjEtMTEtMzAgIFNpbW9uIEZyYXNlciAgPHNp
bW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUGFzcyB0aGUgdGltZXN0YW1wIGZvciBz
Y3JvbGxpbmcgdGhyZWFkIGFuaW1hdGlvbnMgdGhyb3VnaCBhbGwgdGhlIHNlcnZpY2VTY3JvbGxB
bmltYXRpb24oKSBjYWxscwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAppbmRleCBkOTRmZjEzMDZiNzll
MjhmYjY4OTkwMDY5NzcwOGFiMjhkYmNmNTJkLi44MmY3NTdhMjdiM2IwNzI0MDA2ZDcyYTUzODJl
MzRmYTRjYTk0NjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9B
c3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcApAQCAtNzg3LDggKzc4Nyw4IEBA
IHZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0U2Nyb2xsaW5nTm9kZVNjcm9sbGFi
bGVBcmVhR2VvbWV0cnkoU2Nyb2xsaW5nCiAgICAgc2Nyb2xsaW5nTm9kZS5zZXRTY3JvbGxhYmxl
QXJlYVNpemUoc2Nyb2xsYWJsZUFyZWEudmlzaWJsZVNpemUoKSk7CiAKICAgICBTY3JvbGxhYmxl
QXJlYVBhcmFtZXRlcnMgc2Nyb2xsUGFyYW1ldGVyczsKLSAgICBzY3JvbGxQYXJhbWV0ZXJzLmhv
cml6b250YWxTY3JvbGxFbGFzdGljaXR5ID0gc2Nyb2xsYWJsZUFyZWEuaG9yaXpvbnRhbFNjcm9s
bEVsYXN0aWNpdHkoKTsKLSAgICBzY3JvbGxQYXJhbWV0ZXJzLnZlcnRpY2FsU2Nyb2xsRWxhc3Rp
Y2l0eSA9IHNjcm9sbGFibGVBcmVhLnZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eSgpOworICAgIHNj
cm9sbFBhcmFtZXRlcnMuaG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkgPSBzY3JvbGxhYmxlQXJl
YS5ob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgPT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpO
b25lID8gU2Nyb2xsRWxhc3RpY2l0eTo6Tm9uZSA6IHNjcm9sbGFibGVBcmVhLmhvcml6b250YWxT
Y3JvbGxFbGFzdGljaXR5KCk7CisgICAgc2Nyb2xsUGFyYW1ldGVycy52ZXJ0aWNhbFNjcm9sbEVs
YXN0aWNpdHkgPSBzY3JvbGxhYmxlQXJlYS52ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpID09
IE92ZXJzY3JvbGxCZWhhdmlvcjo6Tm9uZSA/IFNjcm9sbEVsYXN0aWNpdHk6Ok5vbmUgOiBzY3Jv
bGxhYmxlQXJlYS52ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkoKTsKICAgICBzY3JvbGxQYXJhbWV0
ZXJzLmFsbG93c0hvcml6b250YWxTY3JvbGxpbmcgPSBzY3JvbGxhYmxlQXJlYS5hbGxvd3NIb3Jp
em9udGFsU2Nyb2xsaW5nKCk7CiAgICAgc2Nyb2xsUGFyYW1ldGVycy5hbGxvd3NWZXJ0aWNhbFNj
cm9sbGluZyA9IHNjcm9sbGFibGVBcmVhLmFsbG93c1ZlcnRpY2FsU2Nyb2xsaW5nKCk7CiAgICAg
c2Nyb2xsUGFyYW1ldGVycy5ob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yID0gc2Nyb2xsYWJs
ZUFyZWEuaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcAppbmRleCAyZGU2NWMyMmY5YjdmOTQw
ZTFlYmNmZmJjNDVlY2Q2MDZhNDk5Yzg0Li43MzBjN2NhMTYzNjk3YTIwMmE0OTUxNTExYWM2Njhk
ODY5M2VmNGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdUcmVlLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNp
bmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1XaGVlbEV2ZW50LmgiCisjaW5j
bHVkZSAiU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTY3JvbGxpbmdT
dGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZS5oIgogI2luY2x1ZGUgIlNjcm9sbGluZ1N0YXRlVHJlZS5o
IgogI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUuaCIKQEAgLTIwMSwx
MCArMjAyLDExIEBAIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdCBTY3JvbGxpbmdUcmVlOjpoYW5k
bGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVuCiAKIFdoZWVsRXZlbnRIYW5kbGlu
Z1Jlc3VsdCBTY3JvbGxpbmdUcmVlOjpoYW5kbGVXaGVlbEV2ZW50V2l0aE5vZGUoY29uc3QgUGxh
dGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBPcHRpb25TZXQ8V2hlZWxFdmVudFByb2Nlc3Np
bmdTdGVwcz4gcHJvY2Vzc2luZ1N0ZXBzLCBTY3JvbGxpbmdUcmVlTm9kZSogbm9kZSwgRXZlbnRU
YXJnZXRpbmcgZXZlbnRUYXJnZXRpbmcpCiB7CisgICAgUGxhdGZvcm1XaGVlbEV2ZW50IGFkanVz
dGVkV2hlZWxFdmVudCA9IFBsYXRmb3JtV2hlZWxFdmVudCh3aGVlbEV2ZW50KTsKICAgICB3aGls
ZSAobm9kZSkgewogICAgICAgICBpZiAoaXM8U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU+KCpu
b2RlKSkgewogICAgICAgICAgICAgYXV0byYgc2Nyb2xsaW5nTm9kZSA9IGRvd25jYXN0PFNjcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlPigqbm9kZSk7Ci0gICAgICAgICAgICBhdXRvIHJlc3VsdCA9
IHNjcm9sbGluZ05vZGUuaGFuZGxlV2hlZWxFdmVudCh3aGVlbEV2ZW50LCBldmVudFRhcmdldGlu
Zyk7CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IHNjcm9sbGluZ05vZGUuaGFuZGxlV2hlZWxF
dmVudChhZGp1c3RlZFdoZWVsRXZlbnQsIGV2ZW50VGFyZ2V0aW5nKTsKIAogICAgICAgICAgICAg
aWYgKHJlc3VsdC53YXNIYW5kbGVkKSB7CiAgICAgICAgICAgICAgICAgbV9sYXRjaGluZ0NvbnRy
b2xsZXIubm9kZURpZEhhbmRsZUV2ZW50KHNjcm9sbGluZ05vZGUuc2Nyb2xsaW5nTm9kZUlEKCks
IHByb2Nlc3NpbmdTdGVwcywgd2hlZWxFdmVudCwgbV9hbGxvd0xhdGNoaW5nKTsKQEAgLTIxNCw2
ICsyMTYsMTYgQEAgV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0IFNjcm9sbGluZ1RyZWU6OmhhbmRs
ZVdoZWVsRXZlbnRXaXRoTm9kZShjb25zdCBQbGF0Zm9ybVcKIAogICAgICAgICAgICAgaWYgKHJl
c3VsdC5uZWVkc01haW5UaHJlYWRQcm9jZXNzaW5nKCkgfHwgZXZlbnRUYXJnZXRpbmcgIT0gRXZl
bnRUYXJnZXRpbmc6OlByb3BhZ2F0ZSkKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgICAgICAgICAgCisgICAgICAgICAgICBib29sIGhhbmRsZWQgPSBmYWxzZTsKKyAgICAgICAg
ICAgIGlmIChzY3JvbGxpbmdOb2RlLnNob3VsZEJsb2NrU2Nyb2xsUHJvcG9nYXRpb24oYWRqdXN0
ZWRXaGVlbEV2ZW50LCBoYW5kbGVkKSkgeworICAgICAgICAgICAgICAgIGlmICghaGFuZGxlZCkK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdDo6dW5o
YW5kbGVkKCk7CisKKyAgICAgICAgICAgICAgICBtX2xhdGNoaW5nQ29udHJvbGxlci5ub2RlRGlk
SGFuZGxlRXZlbnQoc2Nyb2xsaW5nTm9kZS5zY3JvbGxpbmdOb2RlSUQoKSwgcHJvY2Vzc2luZ1N0
ZXBzLCB3aGVlbEV2ZW50LCBtX2FsbG93TGF0Y2hpbmcpOworICAgICAgICAgICAgICAgIG1fZ2Vz
dHVyZVN0YXRlLm5vZGVEaWRIYW5kbGVFdmVudChzY3JvbGxpbmdOb2RlLnNjcm9sbGluZ05vZGVJ
RCgpLCB3aGVlbEV2ZW50KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gV2hlZWxFdmVudEhhbmRs
aW5nUmVzdWx0OjpoYW5kbGVkKCk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAg
ICBpZiAoaXM8U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsUHJveHlOb2RlPigqbm9kZSkpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlLmNwcAppbmRleCA0ZDdjNTBmYjZjMTcxNzE5YWI4NDNhZTk2MDk0
YjBiMzMxYjVhNjFkLi45ZTI4YTQ5NDk1YTkxNmI5ZTcwMzRiNWFjMzQxNmM2ZTY2OTczOTMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwCkBAIC0zOTIsNiArMzkyLDMwIEBAIHZvaWQgU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGU6OnNldEN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KHN0
ZDo6b3B0aW9uYWw8CiAgICAgbV9jdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCA9IGluZGV4
OwogfQogCitib29sIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjpzaG91bGRCbG9ja1Njcm9s
bFByb3BvZ2F0aW9uKFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgYm9vbCYgaGFuZGxl
ZCkgY29uc3QKK3sKKyAgICBGbG9hdFNpemUgZmlsdGVyZWREZWx0YSh3aGVlbEV2ZW50LmRlbHRh
WCgpLCB3aGVlbEV2ZW50LmRlbHRhWSgpKTsKKyNpZiBQTEFURk9STShNQUMpCisgICAgYXV0byBi
aWFzZWREZWx0YSA9IFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjp3aGVlbERlbHRhQmlhc2lu
Z1Rvd2FyZHNWZXJ0aWNhbCh3aGVlbEV2ZW50KTsKKyNlbHNlCisgICAgYXV0byBiaWFzZWREZWx0
YSA9IHdoZWVsRXZlbnQuZGVsdGEoKTsKKyNlbmRpZgorICAgIGlmIChoYXNIb3Jpem9udGFsT3Zl
cnNjcm9sbEJlaGF2aW9yKCkgfHwgaGFzVmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSkgewor
ICAgICAgICBpZiAoaGFzSG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpICYmICFiaWFzZWRE
ZWx0YS5oZWlnaHQoKSAmJiBiaWFzZWREZWx0YS53aWR0aCgpKSB7CisgICAgICAgICAgICBoYW5k
bGVkID0gZmFsc2U7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAg
ICBpZiAoKGhhc0hvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSAmJiBoYXNWZXJ0aWNhbE92
ZXJzY3JvbGxCZWhhdmlvcigpKSB8fCAoaGFzSG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigp
ICYmICFiaWFzZWREZWx0YS5oZWlnaHQoKSkgfHwgKGhhc1ZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2
aW9yKCkgJiYgIWJpYXNlZERlbHRhLndpZHRoKCkpKSB7CisgICAgICAgICAgICBoYW5kbGVkID0g
dHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIGZpbHRl
cmVkRGVsdGEuc2V0V2lkdGgoaGFzSG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpIHx8ICho
YXNWZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpICYmICFiaWFzZWREZWx0YS53aWR0aCgpKSA/
IDAgOiBmaWx0ZXJlZERlbHRhLndpZHRoKCkpOworICAgICAgICBmaWx0ZXJlZERlbHRhLnNldEhl
aWdodChoYXNWZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpIHx8IChoYXNIb3Jpem9udGFsT3Zl
cnNjcm9sbEJlaGF2aW9yKCkgJiYgIWJpYXNlZERlbHRhLmhlaWdodCgpKSA/IDAgOiBmaWx0ZXJl
ZERlbHRhLmhlaWdodCgpKTsKKyAgICAgICAgd2hlZWxFdmVudCA9IHdoZWVsRXZlbnQuY29weVdp
dGhEZWx0YUFuZFZlbG9jaXR5KGZpbHRlcmVkRGVsdGEsIHdoZWVsRXZlbnQuc2Nyb2xsaW5nVmVs
b2NpdHkoKSk7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKEFTWU5DX1NDUk9MTElORykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZS5oCmluZGV4IGI5ZjU0MzA3MDE2ZTIwOGQ0YTZjNWYwYjNlMTMxZDk5NzVkOGU2NTUuLmZj
YmMxMDU4M2IzZmNmMmE0ZWY1ZTYyNmMzYzAzN2I2OGFiNmRjNDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGUuaApAQCAtMTU5LDYgKzE1OSwxMyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBib29sIGFsbG93c0hv
cml6b250YWxTY3JvbGxpbmcoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGFibGVBcmVhUGFyYW1l
dGVycy5hbGxvd3NIb3Jpem9udGFsU2Nyb2xsaW5nOyB9CiAgICAgYm9vbCBhbGxvd3NWZXJ0aWNh
bFNjcm9sbGluZygpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzLmFs
bG93c1ZlcnRpY2FsU2Nyb2xsaW5nOyB9CisgICAgCisgICAgT3ZlcnNjcm9sbEJlaGF2aW9yIGhv
cml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGFibGVB
cmVhUGFyYW1ldGVycy5ob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yOyB9CisgICAgT3ZlcnNj
cm9sbEJlaGF2aW9yIHZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29uc3QgeyByZXR1cm4g
bV9zY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMudmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3I7IH0K
KyAgICBib29sIGhhc0hvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdCB7IHJldHVy
biBtX3Njcm9sbGFibGVBcmVhUGFyYW1ldGVycy5ob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9y
ICE9IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0bzsgfQorICAgIGJvb2wgaGFzVmVydGljYWxPdmVy
c2Nyb2xsQmVoYXZpb3IoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGFibGVBcmVhUGFyYW1ldGVy
cy52ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvciAhPSBPdmVyc2Nyb2xsQmVoYXZpb3I6OkF1dG87
IH0KKyAgICBib29sIHNob3VsZEJsb2NrU2Nyb2xsUHJvcG9nYXRpb24oUGxhdGZvcm1XaGVlbEV2
ZW50JiwgYm9vbCYpIGNvbnN0OworCiAKICAgICB2b2lkIGR1bXBQcm9wZXJ0aWVzKFdURjo6VGV4
dFN0cmVhbSYsIE9wdGlvblNldDxTY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHRCZWhhdmlvcj4pIGNv
bnN0IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckNvbXBvc2l0b3IuY3BwCmluZGV4IGJmMGJmZGUwYzU5NjhmMWJhM2MwMTQyNmQ5YjNkZDc3
MzExMmRhNGMuLjhmODNjMTYxYjAyMGM0NzI5ZWU4YTAxZjIyMmZjZjUyNDczYmIwMmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3Bw
CkBAIC0xNjUyLDcgKzE2NTIsOSBAQCBzdGF0aWMgYm9vbCByZWNvbXBvc2l0ZUNoYW5nZVJlcXVp
cmVzR2VvbWV0cnlVcGRhdGUoY29uc3QgUmVuZGVyU3R5bGUmIG9sZFN0eWxlLAogICAgICAgICB8
fCBvbGRTdHlsZS5vZmZzZXRQb3NpdGlvbigpICE9IG5ld1N0eWxlLm9mZnNldFBvc2l0aW9uKCkK
ICAgICAgICAgfHwgb2xkU3R5bGUub2Zmc2V0RGlzdGFuY2UoKSAhPSBuZXdTdHlsZS5vZmZzZXRE
aXN0YW5jZSgpCiAgICAgICAgIHx8IG9sZFN0eWxlLm9mZnNldFJvdGF0ZSgpICE9IG5ld1N0eWxl
Lm9mZnNldFJvdGF0ZSgpCi0gICAgICAgIHx8ICFhcmVQb2ludGluZ1RvRXF1YWxEYXRhKG9sZFN0
eWxlLmNsaXBQYXRoKCksIG5ld1N0eWxlLmNsaXBQYXRoKCkpOworICAgICAgICB8fCAhYXJlUG9p
bnRpbmdUb0VxdWFsRGF0YShvbGRTdHlsZS5jbGlwUGF0aCgpLCBuZXdTdHlsZS5jbGlwUGF0aCgp
KQorICAgICAgICB8fCBvbGRTdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JYKCkgIT0gbmV3U3R5bGUu
b3ZlcnNjcm9sbEJlaGF2aW9yWCgpCisgICAgICAgIHx8IG9sZFN0eWxlLm92ZXJzY3JvbGxCZWhh
dmlvclkoKSAhPSBuZXdTdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JZKCk7CiB9CiAKIHZvaWQgUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjpsYXllclN0eWxlQ2hhbmdlZChTdHlsZURpZmZlcmVuY2UgZGlm
ZiwgUmVuZGVyTGF5ZXImIGxheWVyLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpCkBAIC0z
OTQ1LDYgKzM5NDcsMTEgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJvb3RPckJvZHlT
dHlsZUNoYW5nZWQoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnMKICAgICBib29sIGhhZEZp
eGVkQmFja2dyb3VuZCA9IG9sZFN0eWxlICYmIG9sZFN0eWxlLT5oYXNFbnRpcmVseUZpeGVkQmFj
a2dyb3VuZCgpOwogICAgIGlmIChoYWRGaXhlZEJhY2tncm91bmQgIT0gcmVuZGVyZXIuc3R5bGUo
KS5oYXNFbnRpcmVseUZpeGVkQmFja2dyb3VuZCgpKQogICAgICAgICByb290TGF5ZXJDb25maWd1
cmF0aW9uQ2hhbmdlZCgpOworICAgIAorICAgIGlmIChvbGRTdHlsZSAmJiAob2xkU3R5bGUtPm92
ZXJzY3JvbGxCZWhhdmlvclgoKSAhPSByZW5kZXJlci5zdHlsZSgpLm92ZXJzY3JvbGxCZWhhdmlv
clgoKSB8fCBvbGRTdHlsZS0+b3ZlcnNjcm9sbEJlaGF2aW9yWSgpICE9IHJlbmRlcmVyLnN0eWxl
KCkub3ZlcnNjcm9sbEJlaGF2aW9yWSgpKSkgeworICAgICAgICBpZiAoYXV0byogbGF5ZXIgPSBt
X3JlbmRlclZpZXcubGF5ZXIoKSkKKyAgICAgICAgICAgIGxheWVyLT5zdHlsZUNoYW5nZWQocmVu
ZGVyZXIsIG9sZFN0eWxlKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9y
Ojpyb290QmFja2dyb3VuZENvbG9yT3JUcmFuc3BhcmVuY3lDaGFuZ2VkKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCmluZGV4IDZiMzYzOGQxYThm
MGUxZTY3NGEzNWZlOWNmMmUzY2I1ZWY2YjhkMGEuLjZlZDYyNzg4MjIxODY5ZmZhY2FmNjQ0MGM3
YTQ0NGUyOTdkOTNhZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1Jl
bmRlclN0eWxlLmNwcApAQCAtMTE5Niw3ICsxMTk2LDkgQEAgYm9vbCBSZW5kZXJTdHlsZTo6Y2hh
bmdlUmVxdWlyZXNSZWNvbXBvc2l0ZUxheWVyKGNvbnN0IFJlbmRlclN0eWxlJiBvdGhlciwgT3B0
aW8KICAgICAgICAgICAgIHx8IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmJhY2tmYWNlVmlzaWJp
bGl0eSAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5iYWNrZmFjZVZpc2liaWxpdHkK
ICAgICAgICAgICAgIHx8IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnBlcnNwZWN0aXZlICE9IG90
aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnBlcnNwZWN0aXZlCiAgICAgICAgICAgICB8fCBt
X3JhcmVOb25Jbmhlcml0ZWREYXRhLT5wZXJzcGVjdGl2ZU9yaWdpblggIT0gb3RoZXIubV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+cGVyc3BlY3RpdmVPcmlnaW5YCi0gICAgICAgICAgICB8fCBtX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLT5wZXJzcGVjdGl2ZU9yaWdpblkgIT0gb3RoZXIubV9yYXJlTm9u
SW5oZXJpdGVkRGF0YS0+cGVyc3BlY3RpdmVPcmlnaW5ZKQorICAgICAgICAgICAgfHwgbV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+cGVyc3BlY3RpdmVPcmlnaW5ZICE9IG90aGVyLm1fcmFyZU5vbklu
aGVyaXRlZERhdGEtPnBlcnNwZWN0aXZlT3JpZ2luWQorICAgICAgICAgICAgfHwgbV9yYXJlTm9u
SW5oZXJpdGVkRGF0YS0+b3ZlcnNjcm9sbEJlaGF2aW9yWCAhPSBvdGhlci5tX3JhcmVOb25Jbmhl
cml0ZWREYXRhLT5vdmVyc2Nyb2xsQmVoYXZpb3JYCisgICAgICAgICAgICB8fCBtX3JhcmVOb25J
bmhlcml0ZWREYXRhLT5vdmVyc2Nyb2xsQmVoYXZpb3JZICE9IG90aGVyLm1fcmFyZU5vbkluaGVy
aXRlZERhdGEtPm92ZXJzY3JvbGxCZWhhdmlvclkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCA5YjA2M2Q0NjEwOGJlZWNiNzlhMjJkYzhlMWE4M2QzOWFjNzNlMjJi
Li5lNTUyMWI3NjY0Y2I1MzFjNDAzMDRkNGYzYTc4OGIzNDE5ZTZhOGI4IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjIgQEAKKzIwMjEtMTItMDEgIE5pa29sYW9zIE1vdWNodGFyaXMgIDxubW91Y2h0YXJpc0Bh
cHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IENTUyBvdmVyc2Nyb2xsLWJlaGF2aW9yIGZv
ciBhc3luY2hyb25vdXMgc2Nyb2xsIG9uIE1hYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwMTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9s
bC1iZWhhdmlvci1lbGVtZW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9z
Y3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlv
ci1pZnJhbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9t
YWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxh
YmxlLWVsZW1lbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGlu
Zy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1i
ZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxh
YmxlLWlmcmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9yZXNvdXJj
ZXMvb3ZlcnNjcm9sbC1iZWhhdmlvci1zdXBwb3J0LmpzOiBBZGRlZC4KKyAgICAgICAgKGdldERl
bHRhcyk6CisgICAgICAgIChhc3luYyBtb3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCk6CisKIDIwMjEt
MTEtMzAgIFJvYmVydCBKZW5uZXIgIDxKZW5uZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJFQkFT
RUxJTkUgWyBNb250ZXJleSBdZmFzdC9jc3MvY29udGludWF0aW9uQ3Jhc2guaHRtbCAobGF5b3V0
LXRlc3QpIGlzIGEgY29uc3RhbnQgdGV4dCBmYWlsdXJlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1vdmVyc2Ny
b2xsLWJlaGF2aW9yLWVsZW1lbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI3MTUwZmY2MGI1
ZGJkZDBiNGE3YWM2ZjgzZmI1NmY1N2NkMmNkODIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50
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
bWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjE4MTM3YjljYjc3OWE5MTY3ZGIyMjUxZDMwNjdlNDYzZWFjOTQ2MzcKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3Zl
cnNjcm9sbC1iZWhhdmlvci1lbGVtZW50Lmh0bWwKQEAgLTAsMCArMSw4NiBAQAorPCFkb2N0eXBl
IGh0bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgQXN5bmNPdmVyZmxvd1Njcm9sbGluZ0Vu
YWJsZWQ9dHJ1ZSBBc3luY0ZyYW1lU2Nyb2xsaW5nRW5hYmxlZD10cnVlIF0gLS0+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXN1cHBvcnQu
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
b3BhZ2F0ZVgsICdDb250aW51ZSB1cCB0aGUgaG9yaXpvbnRhbCBzY3JvbGwgY2hhaW5pbmcnKTsK
KyAgICAgICAgICAgIH0pOworICAgICAgICB9LCAnRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0
ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogJyArIG92ZXJzY3JvbGxYICsgJyAnICsgb3Zl
cnNjcm9sbFkgKyAnLicpOworCisgICAgICAgIHByb21pc2VfdGVzdCgoKSA9PiB7CisgICAgICAg
ICAgICByZXNldFRlc3QoKTsKKyAgICAgICAgICAgIHNjcm9sbGVyLnN0eWxlLm92ZXJzY3JvbGxC
ZWhhdmlvclggPSBvdmVyc2Nyb2xsWDsKKyAgICAgICAgICAgIHNjcm9sbGVyLnN0eWxlLm92ZXJz
Y3JvbGxCZWhhdmlvclkgPSBvdmVyc2Nyb2xsWTsKKworICAgICAgICAgICAgdmFyIHggPSBzY3Jv
bGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAgICAgICAgICB2YXIgeSA9IHNjcm9sbGVyLmNsaWVu
dEhlaWdodCAvIDI7CisgICAgICAgICAgICB2YXIgZGVsdGEgPSBnZXREZWx0YXMoImRvd24iKTsK
KyAgICAgICAgICAgIHJldHVybiBtb3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCh4LCB5LCBkZWx0YS5Y
LCBkZWx0YS5ZLCBkZWx0YS5YLCBkZWx0YS5ZKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAg
ICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsVG9wID4gMCwgcHJvcGFnYXRlWSwgJ0NvbnRpbnVl
IHVwIHRoZSB2ZXJ0aWNhbCBzY3JvbGwgY2hhaW5pbmcnKTsKKyAgICAgICAgICAgIH0pOworICAg
ICAgICB9LCAnRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVo
YXZpb3I6ICcgKyBvdmVyc2Nyb2xsWCArICcgJyArIG92ZXJzY3JvbGxZICsgJy4nKTsKKyAgICB9
KTsKK30KKworYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIHN0YXJ0VGVzdCk7Cis8L3NjcmlwdD4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVo
YXZpb3ItaWZyYW1lLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MDBhMGI3ZDkwNWI4N2MxZGI3
NjI2OTRmZDAwNjM4ZjE5NzY5NTM3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDIxIEBACisKKworUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwg
dGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gYXV0by4KK1BBU1MgSWZyYW1lIHZl
cnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBhdXRvLgor
UEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZp
b3I6IGNvbnRhaW4gYXV0by4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGgg
b3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBhdXRvLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRh
bCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgYXV0by4KK1BBU1Mg
SWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9u
ZSBhdXRvLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3Jv
bGwtYmVoYXZpb3I6IGF1dG8gY29udGFpbi4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0
ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBjb250YWluLgorUEFTUyBJZnJhbWUg
aG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4g
Y29udGFpbi4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9s
bC1iZWhhdmlvcjogY29udGFpbiBjb250YWluLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3Jv
bGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgY29udGFpbi4KK1BBU1MgSWZy
YW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBj
b250YWluLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3Jv
bGwtYmVoYXZpb3I6IGF1dG8gbm9uZS4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0
IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBub25lLgorUEFTUyBJZnJhbWUgaG9yaXpv
bnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gbm9uZS4K
K1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlv
cjogY29udGFpbiBub25lLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRo
IG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgbm9uZS4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNj
cm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBub25lLgorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhh
dmlvci1pZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1v
dmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNmODcxMzY0Zjk1YmQ3
N2Y2ZTRjZTliZWE0MjgzNTE0MGI0MGMxZjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUuaHRt
bApAQCAtMCwwICsxLDg2IEBACis8IWRvY3R5cGUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5u
ZXIgWyBBc3luY092ZXJmbG93U2Nyb2xsaW5nRW5hYmxlZD10cnVlIEFzeW5jRnJhbWVTY3JvbGxp
bmdFbmFibGVkPXRydWUgXSAtLT4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy90
ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
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
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9s
bC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFi
bGUtZWxlbWVudC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjM5NWI2NDg4ZDA4NzBiOTU2MWMw
Mjg2NzlkN2UxNWE0N2ZjZTZlOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
c2Nyb2xsaW5nL21hYy9hc3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVt
ZW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKKworUEFTUyBVbnNjcm9sbGFibGUgZWxl
bWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9u
ZS4KK1BBU1MgVW5zY3JvbGxhYmxlIGVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBv
dmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxl
bWVudC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3Jv
bGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNDQ4ZjJl
MGVhNWNjMDc4ZjFmOWVhNGMyZDdmNzgwZWU3YjdlNTg0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5z
Y3JvbGxhYmxlLWVsZW1lbnQuaHRtbApAQCAtMCwwICsxLDY3IEBACis8IWRvY3R5cGUgaHRtbD4g
PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBBc3luY092ZXJmbG93U2Nyb2xsaW5nRW5hYmxlZD10
cnVlIEFzeW5jRnJhbWVTY3JvbGxpbmdFbmFibGVkPXRydWUgXSAtLT4KKworPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvb3ZlcnNjcm9sbC1iZWhhdmlvci1zdXBwb3J0LmpzIj48
L3NjcmlwdD4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3Jn
L2Nzcy1vdmVyc2Nyb2xsLWJlaGF2aW9yIj4KKzxzdHlsZT4KKyAgICAuc2Nyb2xsaW5nIHsKKyAg
ICAgICAgb3ZlcmZsb3c6IHNjcm9sbDsKKyAgICB9CisgICAgLnNjcm9sbENvbnRlbnQgeworICAg
ICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgfQorICAgICNy
b290IHsKKyAgICAgICAgd2lkdGg6IDIwMHB4OworICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAg
IH0KKyAgICAjc2Nyb2xsZXIgeworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdo
dDogMTAwcHg7CisgICAgICAgIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmU7CisgICAgICAgIG92
ZXJmbG93OiB2aXNpYmxlOworICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1
ZGVnLCByZWQsIGJsdWUpOworICAgIH0KKzwvc3R5bGU+Cis8ZGl2IGlkPSJyb290IiBjbGFzcz0i
c2Nyb2xsaW5nIj4KKyAgICA8ZGl2IGlkPSJzY3JvbGxlciI+CisgICAgICAgIDxkaXYgY2xhc3M9
InNjcm9sbENvbnRlbnQiPjwvZGl2PgorICAgIDwvZGl2PgorICAgIDxkaXYgY2xhc3M9InNjcm9s
bENvbnRlbnQiPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+Citjb25zdCByb290ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3Jvb3QnKTsKK2NvbnN0IHNjcm9sbGVyID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ3Njcm9sbGVyJyk7CisKK2Z1bmN0aW9uIHJlc2V0VGVzdCgpIHsKKyAgICBy
b290LnNjcm9sbExlZnQgPSAwOworICAgIHJvb3Quc2Nyb2xsVG9wID0gMDsKKyAgICByb290LnNj
cm9sbFRvKDAsIDApOworfQorCitmdW5jdGlvbiBzdGFydFRlc3QoKSB7CisgICAgICAgIHByb21p
c2VfdGVzdCgoKSA9PiB7CisgICAgICAgICAgICByZXNldFRlc3QoKTsKKyAgICAgICAgICAgIHZh
ciB4ID0gc2Nyb2xsZXIuY2xpZW50V2lkdGggLyAyOworICAgICAgICAgICAgdmFyIHkgPSBzY3Jv
bGxlci5jbGllbnRIZWlnaHQgLyAyOworICAgICAgICAgICAgdmFyIGRlbHRhID0gZ2V0RGVsdGFz
KCJyaWdodCIpOworICAgICAgICAgICAgcmV0dXJuIG1vdXNlV2hlZWxTY3JvbGxBbmRXYWl0KHgs
IHksIGRlbHRhLlgsIGRlbHRhLlksIGRlbHRhLlgsIGRlbHRhLlkpLnRoZW4oKCkgPT4geworICAg
ICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxMZWZ0ID4gMCwgdHJ1ZSwgJ0Nv
bnRpbnVlIHVwIHRoZSBob3Jpem9udGFsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAgICAgICAg
fSk7CisgICAgICAgIH0sICdVbnNjcm9sbGFibGUgZWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0
ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4nKTsKKworICAgICAgICBwcm9taXNl
X3Rlc3QoKCkgPT4geworICAgICAgICAgICAgcmVzZXRUZXN0KCk7CisgICAgICAgICAgICB2YXIg
eCA9IHNjcm9sbGVyLmNsaWVudFdpZHRoIC8gMjsKKyAgICAgICAgICAgIHZhciB5ID0gc2Nyb2xs
ZXIuY2xpZW50SGVpZ2h0IC8gMjsKKyAgICAgICAgICAgIHZhciBkZWx0YSA9IGdldERlbHRhcygi
ZG93biIpOworICAgICAgICAgICAgcmV0dXJuIG1vdXNlV2hlZWxTY3JvbGxBbmRXYWl0KHgsIHks
IGRlbHRhLlgsIGRlbHRhLlksIGRlbHRhLlgsIGRlbHRhLlkpLnRoZW4oKCkgPT4geworICAgICAg
ICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxUb3AgPiAwLCB0cnVlLCAnQ29udGlu
dWUgdXAgdGhlIHZlcnRpY2FsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAgICAgICAgfSk7Cisg
ICAgICAgIH0sICdVbnNjcm9sbGFibGUgZWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRo
IG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuJyk7Cit9CisKK2FkZEV2ZW50TGlzdGVuZXIoImxv
YWQiLCBzdGFydFRlc3QpOworPC9zY3JpcHQ+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3Jv
bGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFi
bGUtaWZyYW1lLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZmE1OWNjYmE3OWFlZmYzM2RhNzBl
OTNkNDg4YTA3ZWVjOWM1NjkxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9z
Y3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFt
ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBACisKKworUEFTUyBVbnNjcm9sbGFibGUgaWZy
YW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25l
LgorUEFTUyBVbnNjcm9sbGFibGUgaWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3Zl
cnNjcm9sbC1iZWhhdmlvcjogbm9uZS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9z
Y3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFt
ZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwt
YmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMzZWM1YjI2M2My
YjgzYmUxYTUyODcxNmNlODY1NjNkOTdhY2QxZDYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9s
bGFibGUtaWZyYW1lLmh0bWwKQEAgLTAsMCArMSw2NiBAQAorPCFkb2N0eXBlIGh0bWw+IDwhLS0g
d2Via2l0LXRlc3QtcnVubmVyIFsgQXN5bmNPdmVyZmxvd1Njcm9sbGluZ0VuYWJsZWQ9dHJ1ZSBB
c3luY0ZyYW1lU2Nyb2xsaW5nRW5hYmxlZD10cnVlIF0gLS0+CisKKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vcmVzb3VyY2VzL292ZXJzY3JvbGwtYmVoYXZpb3Itc3VwcG9ydC5qcyI+PC9zY3Jp
cHQ+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3Mt
b3ZlcnNjcm9sbC1iZWhhdmlvciI+Cis8c3R5bGU+CisgICAgLnNjcm9sbGluZyB7CisgICAgICAg
IG92ZXJmbG93OiBzY3JvbGw7CisgICAgfQorICAgIC5zY3JvbGxDb250ZW50IHsKKyAgICAgICAg
d2lkdGg6IDMwMHB4OworICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgIH0KKyAgICAjcm9vdCB7
CisgICAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgICAgaGVpZ2h0OiAyMDBweDsKKyAgICB9Cisg
ICAgI3Njcm9sbGVyIHsKKyAgICAgICAgd2lkdGg6IDIwMHB4OworICAgICAgICBoZWlnaHQ6IDIw
MHB4OworICAgICAgICBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lOworICAgICAgICBvdmVyZmxv
dzogdmlzaWJsZTsKKyAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywg
cmVkLCBibHVlKTsKKyAgICB9Cis8L3N0eWxlPgorPGRpdiBpZD0ncm9vdCcgY2xhc3M9InNjcm9s
bGluZyI+CisgICAgPGlmcmFtZSBpZD0nc2Nyb2xsZXInIHNyY2RvYz0iPGh0bWwgc3R5bGU9J292
ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmU7Jz48ZGl2IHN0eWxlPSd3aWR0aDogMTAwcHg7IGhlaWdo
dDogMTAwcHg7Jz48L2Rpdj48L2h0bWw+CisgICAgICAgICI+PC9pZnJhbWU+CisgICAgPGRpdiBj
bGFzcz0ic2Nyb2xsQ29udGVudCI+PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4KK2NvbnN0IHJv
b3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncm9vdCcpOworY29uc3Qgc2Nyb2xsZXIgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2Nyb2xsZXInKTsKKworZnVuY3Rpb24gcmVzZXRUZXN0
KCkgeworICAgIHJvb3Quc2Nyb2xsTGVmdCA9IDA7CisgICAgcm9vdC5zY3JvbGxUb3AgPSAwOwor
ICAgIHJvb3Quc2Nyb2xsVG8oMCwgMCk7Cit9CisKK2Z1bmN0aW9uIHN0YXJ0VGVzdCgpIHsKKyAg
ICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAgIHJlc2V0VGVzdCgpOworICAg
ICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAgICAgICAgICB2
YXIgeSA9IHNjcm9sbGVyLmNsaWVudEhlaWdodCAvIDI7CisgICAgICAgICAgICB2YXIgZGVsdGEg
PSBnZXREZWx0YXMoInJpZ2h0Iik7CisgICAgICAgICAgICByZXR1cm4gbW91c2VXaGVlbFNjcm9s
bEFuZFdhaXQoeCwgeSwgZGVsdGEuWCwgZGVsdGEuWSwgZGVsdGEuWCwgZGVsdGEuWSkudGhlbigo
KSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbExlZnQgPiAw
LCB0cnVlLCAnQ29udGludWUgdXAgdGhlIGhvcml6b250YWwgc2Nyb2xsIGNoYWluaW5nJyk7Cisg
ICAgICAgICAgICB9KTsKKyAgICAgICAgfSwgJ1Vuc2Nyb2xsYWJsZSBpZnJhbWUgaG9yaXpvbnRh
bCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuJyk7CisKKyAgICAg
ICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAgIHJlc2V0VGVzdCgpOworICAgICAg
ICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAgICAgICAgICB2YXIg
eSA9IHNjcm9sbGVyLmNsaWVudEhlaWdodCAvIDI7CisgICAgICAgICAgICB2YXIgZGVsdGEgPSBn
ZXREZWx0YXMoImRvd24iKTsKKyAgICAgICAgICAgIHJldHVybiBtb3VzZVdoZWVsU2Nyb2xsQW5k
V2FpdCh4LCB5LCBkZWx0YS5YLCBkZWx0YS5ZLCBkZWx0YS5YLCBkZWx0YS5ZKS50aGVuKCgpID0+
IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsVG9wID4gMCwgdHJ1
ZSwgJ0NvbnRpbnVlIHVwIHRoZSB2ZXJ0aWNhbCBzY3JvbGwgY2hhaW5pbmcnKTsKKyAgICAgICAg
ICAgIH0pOworICAgICAgICB9LCAnVW5zY3JvbGxhYmxlIGlmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwg
dGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuJyk7Cit9CisKK2FkZEV2ZW50TGlz
dGVuZXIoImxvYWQiLCBzdGFydFRlc3QpOworPC9zY3JpcHQ+ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvcmVzb3VyY2Vz
L292ZXJzY3JvbGwtYmVoYXZpb3Itc3VwcG9ydC5qcyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xs
aW5nL3Jlc291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXN1cHBvcnQuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
Y2JkMjIyZTkwYjUyYTE5MzBiN2ZjZmU0NDIzZTk0NTgzYzA0NjAwZQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3Jlc291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2
aW9yLXN1cHBvcnQuanMKQEAgLTAsMCArMSwzOSBAQAorZnVuY3Rpb24gZ2V0RGVsdGFzKGRpcmVj
dGlvbikgeworICAgIHZhciBkZWx0YVggPSAwOworICAgIHZhciBkZWx0YVkgPSAwOworICAgIGlm
IChkaXJlY3Rpb24gPT0gImRvd24iKQorICAgICAgICBkZWx0YVkgPSAtNQorICAgIGVsc2UgaWYg
KGRpcmVjdGlvbiA9PSAidXAiKQorICAgICAgICBkZWx0YVkgPSA1OworICAgIGVsc2UgaWYgKGRp
cmVjdGlvbiA9PSAicmlnaHQiKQorICAgICAgICBkZWx0YVggPSAtNTsKKyAgICBlbHNlIGlmIChk
aXJlY3Rpb24gPT0gImxlZnQiKQorICAgICAgICBkZWx0YVggPSA1OworICAgIHJldHVybiB7Cisg
ICAgICAgIFg6IGRlbHRhWCwKKyAgICAgICAgWTogZGVsdGFZCisgICAgfTsKK30KKworYXN5bmMg
ZnVuY3Rpb24gbW91c2VXaGVlbFNjcm9sbEFuZFdhaXQoeCwgeSwgYmVnaW5YLCBiZWdpblksIGRl
bHRhWCwgZGVsdGFZKQoreworICAgIGlmIChiZWdpblggPT09IHVuZGVmaW5lZCkKKyAgICAgICAg
YmVnaW5YID0gMDsKKyAgICBpZiAoYmVnaW5ZID09PSB1bmRlZmluZWQpCisgICAgICAgIGJlZ2lu
WSA9IC0xOworICAgIGlmIChkZWx0YVggPT09IHVuZGVmaW5lZCkKKyAgICAgICAgZGVsdGFYID0g
MDsKKyAgICBpZiAoZGVsdGFZID09PSB1bmRlZmluZWQpCisgICAgICAgIGRlbHRhWSA9IC0xMDsK
KworICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgIGV2ZW50U2VuZGVy
Lm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhiZWdpblgsIGJlZ2luWSwgImJlZ2FuIiwgIm5vbmUiKTsKKyAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZGVs
dGFYLCBkZWx0YVksICJjaGFuZ2VkIiwgIm5vbmUiKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgImVuZGVkIiwgIm5vbmUiKTsK
KyAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgICAgIHNldFRpbWVvdXQo
KCkgPT4geworICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHJlc29sdmUpOworICAg
ICAgICB9LCA1MDApOworICAgIH0pOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>
<flag name="commit-queue"
          id="472093"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446637</attachid>
            <date>2021-12-09 17:10:03 -0800</date>
            <delta_ts>2021-12-10 14:28:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220139-20211209171002.patch</filename>
            <type>text/plain</type>
            <size>33174</size>
            <attacher name="Nikos Mouchtaris">nmouchtaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MzUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGJiNmQyZjJmYmNkN2I3
ODU1MzIxY2U1YjgwMWQ1YzJmYWNiMzhmNC4uODBhYWE0YzRhYWIwNzIyNjM2NGFhM2M1ZTE0YzA2
YTQ4ZDNiNjNmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDIxLTEyLTAxICBOaWtv
bGFvcyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxl
bWVudCBDU1Mgb3ZlcnNjcm9sbC1iZWhhdmlvciBmb3IgYXN5bmNocm9ub3VzIHNjcm9sbCBvbiBN
YWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDEz
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNwbGl0
IHVwIHBhdGNoIGJ5IENhdGhpZSBDaGVuIGFuZCBGcmVkZXJpYyBXYW5nLiBBZGQgZnVuY3Rpb24g
Zm9yIGJsb2NraW5nIHNjcm9sbCBjaGFpbmluZworICAgICAgICBhbmQgZmlsdGVyaW5nIHNjcm9s
bCBkZWx0YSBkZXBlbmRpbmcgb24gdGhlIHZhbHVlcyBvZiBvdmVyc2Nyb2xsIGJlaGF2aW9yIGZv
ciBhIHNjcm9sbGluZworICAgICAgICBub2RlLiBUaGlzIHBhdGNoIGlzIGZvciBhc3luY2hyb25v
dXMgc2Nyb2xsaW5nIG9ubHkuCisKKyAgICAgICAgVGVzdHM6IGZhc3Qvc2Nyb2xsaW5nL21hYy9h
c3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQuaHRtbAorICAgICAgICAgICAgICAgZmFz
dC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0bWwKKyAg
ICAgICAgICAgICAgIGZhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9y
LXVuc2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvc2Nyb2xsaW5n
L21hYy9hc3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUuaHRtbAor
CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxpbmdUcmVlOjpzaG91bGRCbG9ja1Njcm9sbENoYWluaW5nV2l0aE5vZGUp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZTo6aGFuZGxlV2hlZWxFdmVudFdpdGhO
b2RlKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmg6CisgICAgICAg
ICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaDoKKyAgICAgICAg
KiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdh
dGVNYWM6OmFsbG93c0hvcml6b250YWxTdHJldGNoaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OmFsbG93c1ZlcnRpY2Fs
U3RyZXRjaGluZyBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9z
aXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWNvbXBvc2l0ZUNoYW5nZVJlcXVpcmVzR2Vv
bWV0cnlVcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpy
b290T3JCb2R5U3R5bGVDaGFuZ2VkKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmNoYW5nZVJlcXVpcmVz
UmVjb21wb3NpdGVMYXllciBjb25zdCk6CisKIDIwMjEtMTEtMzAgIFNpbW9uIEZyYXNlciAgPHNp
bW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUGFzcyB0aGUgdGltZXN0YW1wIGZvciBz
Y3JvbGxpbmcgdGhyZWFkIGFuaW1hdGlvbnMgdGhyb3VnaCBhbGwgdGhlIHNlcnZpY2VTY3JvbGxB
bmltYXRpb24oKSBjYWxscwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAppbmRleCBkOTRmZjEzMDZiNzll
MjhmYjY4OTkwMDY5NzcwOGFiMjhkYmNmNTJkLi44MmY3NTdhMjdiM2IwNzI0MDA2ZDcyYTUzODJl
MzRmYTRjYTk0NjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9B
c3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcApAQCAtNzg3LDggKzc4Nyw4IEBA
IHZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0U2Nyb2xsaW5nTm9kZVNjcm9sbGFi
bGVBcmVhR2VvbWV0cnkoU2Nyb2xsaW5nCiAgICAgc2Nyb2xsaW5nTm9kZS5zZXRTY3JvbGxhYmxl
QXJlYVNpemUoc2Nyb2xsYWJsZUFyZWEudmlzaWJsZVNpemUoKSk7CiAKICAgICBTY3JvbGxhYmxl
QXJlYVBhcmFtZXRlcnMgc2Nyb2xsUGFyYW1ldGVyczsKLSAgICBzY3JvbGxQYXJhbWV0ZXJzLmhv
cml6b250YWxTY3JvbGxFbGFzdGljaXR5ID0gc2Nyb2xsYWJsZUFyZWEuaG9yaXpvbnRhbFNjcm9s
bEVsYXN0aWNpdHkoKTsKLSAgICBzY3JvbGxQYXJhbWV0ZXJzLnZlcnRpY2FsU2Nyb2xsRWxhc3Rp
Y2l0eSA9IHNjcm9sbGFibGVBcmVhLnZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eSgpOworICAgIHNj
cm9sbFBhcmFtZXRlcnMuaG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkgPSBzY3JvbGxhYmxlQXJl
YS5ob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgPT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpO
b25lID8gU2Nyb2xsRWxhc3RpY2l0eTo6Tm9uZSA6IHNjcm9sbGFibGVBcmVhLmhvcml6b250YWxT
Y3JvbGxFbGFzdGljaXR5KCk7CisgICAgc2Nyb2xsUGFyYW1ldGVycy52ZXJ0aWNhbFNjcm9sbEVs
YXN0aWNpdHkgPSBzY3JvbGxhYmxlQXJlYS52ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpID09
IE92ZXJzY3JvbGxCZWhhdmlvcjo6Tm9uZSA/IFNjcm9sbEVsYXN0aWNpdHk6Ok5vbmUgOiBzY3Jv
bGxhYmxlQXJlYS52ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkoKTsKICAgICBzY3JvbGxQYXJhbWV0
ZXJzLmFsbG93c0hvcml6b250YWxTY3JvbGxpbmcgPSBzY3JvbGxhYmxlQXJlYS5hbGxvd3NIb3Jp
em9udGFsU2Nyb2xsaW5nKCk7CiAgICAgc2Nyb2xsUGFyYW1ldGVycy5hbGxvd3NWZXJ0aWNhbFNj
cm9sbGluZyA9IHNjcm9sbGFibGVBcmVhLmFsbG93c1ZlcnRpY2FsU2Nyb2xsaW5nKCk7CiAgICAg
c2Nyb2xsUGFyYW1ldGVycy5ob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yID0gc2Nyb2xsYWJs
ZUFyZWEuaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcAppbmRleCAyZGU2NWMyMmY5YjdmOTQw
ZTFlYmNmZmJjNDVlY2Q2MDZhNDk5Yzg0Li43MzBjN2NhMTYzNjk3YTIwMmE0OTUxNTExYWM2Njhk
ODY5M2VmNGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdUcmVlLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNp
bmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1XaGVlbEV2ZW50LmgiCisjaW5j
bHVkZSAiU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTY3JvbGxpbmdT
dGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZS5oIgogI2luY2x1ZGUgIlNjcm9sbGluZ1N0YXRlVHJlZS5o
IgogI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUuaCIKQEAgLTIwMSwx
MCArMjAyLDExIEBAIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdCBTY3JvbGxpbmdUcmVlOjpoYW5k
bGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVuCiAKIFdoZWVsRXZlbnRIYW5kbGlu
Z1Jlc3VsdCBTY3JvbGxpbmdUcmVlOjpoYW5kbGVXaGVlbEV2ZW50V2l0aE5vZGUoY29uc3QgUGxh
dGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBPcHRpb25TZXQ8V2hlZWxFdmVudFByb2Nlc3Np
bmdTdGVwcz4gcHJvY2Vzc2luZ1N0ZXBzLCBTY3JvbGxpbmdUcmVlTm9kZSogbm9kZSwgRXZlbnRU
YXJnZXRpbmcgZXZlbnRUYXJnZXRpbmcpCiB7CisgICAgUGxhdGZvcm1XaGVlbEV2ZW50IGFkanVz
dGVkV2hlZWxFdmVudCA9IFBsYXRmb3JtV2hlZWxFdmVudCh3aGVlbEV2ZW50KTsKICAgICB3aGls
ZSAobm9kZSkgewogICAgICAgICBpZiAoaXM8U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU+KCpu
b2RlKSkgewogICAgICAgICAgICAgYXV0byYgc2Nyb2xsaW5nTm9kZSA9IGRvd25jYXN0PFNjcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlPigqbm9kZSk7Ci0gICAgICAgICAgICBhdXRvIHJlc3VsdCA9
IHNjcm9sbGluZ05vZGUuaGFuZGxlV2hlZWxFdmVudCh3aGVlbEV2ZW50LCBldmVudFRhcmdldGlu
Zyk7CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IHNjcm9sbGluZ05vZGUuaGFuZGxlV2hlZWxF
dmVudChhZGp1c3RlZFdoZWVsRXZlbnQsIGV2ZW50VGFyZ2V0aW5nKTsKIAogICAgICAgICAgICAg
aWYgKHJlc3VsdC53YXNIYW5kbGVkKSB7CiAgICAgICAgICAgICAgICAgbV9sYXRjaGluZ0NvbnRy
b2xsZXIubm9kZURpZEhhbmRsZUV2ZW50KHNjcm9sbGluZ05vZGUuc2Nyb2xsaW5nTm9kZUlEKCks
IHByb2Nlc3NpbmdTdGVwcywgd2hlZWxFdmVudCwgbV9hbGxvd0xhdGNoaW5nKTsKQEAgLTIxNCw2
ICsyMTYsMTYgQEAgV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0IFNjcm9sbGluZ1RyZWU6OmhhbmRs
ZVdoZWVsRXZlbnRXaXRoTm9kZShjb25zdCBQbGF0Zm9ybVcKIAogICAgICAgICAgICAgaWYgKHJl
c3VsdC5uZWVkc01haW5UaHJlYWRQcm9jZXNzaW5nKCkgfHwgZXZlbnRUYXJnZXRpbmcgIT0gRXZl
bnRUYXJnZXRpbmc6OlByb3BhZ2F0ZSkKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgICAgICAgICAgCisgICAgICAgICAgICBib29sIGhhbmRsZWQgPSBmYWxzZTsKKyAgICAgICAg
ICAgIGlmIChzY3JvbGxpbmdOb2RlLnNob3VsZEJsb2NrU2Nyb2xsUHJvcG9nYXRpb24oYWRqdXN0
ZWRXaGVlbEV2ZW50LCBoYW5kbGVkKSkgeworICAgICAgICAgICAgICAgIGlmICghaGFuZGxlZCkK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdDo6dW5o
YW5kbGVkKCk7CisKKyAgICAgICAgICAgICAgICBtX2xhdGNoaW5nQ29udHJvbGxlci5ub2RlRGlk
SGFuZGxlRXZlbnQoc2Nyb2xsaW5nTm9kZS5zY3JvbGxpbmdOb2RlSUQoKSwgcHJvY2Vzc2luZ1N0
ZXBzLCB3aGVlbEV2ZW50LCBtX2FsbG93TGF0Y2hpbmcpOworICAgICAgICAgICAgICAgIG1fZ2Vz
dHVyZVN0YXRlLm5vZGVEaWRIYW5kbGVFdmVudChzY3JvbGxpbmdOb2RlLnNjcm9sbGluZ05vZGVJ
RCgpLCB3aGVlbEV2ZW50KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gV2hlZWxFdmVudEhhbmRs
aW5nUmVzdWx0OjpoYW5kbGVkKCk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAg
ICBpZiAoaXM8U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsUHJveHlOb2RlPigqbm9kZSkpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlLmNwcAppbmRleCA0ZDdjNTBmYjZjMTcxNzE5YWI4NDNhZTk2MDk0
YjBiMzMxYjVhNjFkLi45ZTI4YTQ5NDk1YTkxNmI5ZTcwMzRiNWFjMzQxNmM2ZTY2OTczOTMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwCkBAIC0zOTIsNiArMzkyLDMwIEBAIHZvaWQgU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGU6OnNldEN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KHN0
ZDo6b3B0aW9uYWw8CiAgICAgbV9jdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCA9IGluZGV4
OwogfQogCitib29sIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjpzaG91bGRCbG9ja1Njcm9s
bFByb3BvZ2F0aW9uKFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgYm9vbCYgaGFuZGxl
ZCkgY29uc3QKK3sKKyAgICBGbG9hdFNpemUgZmlsdGVyZWREZWx0YSh3aGVlbEV2ZW50LmRlbHRh
WCgpLCB3aGVlbEV2ZW50LmRlbHRhWSgpKTsKKyNpZiBQTEFURk9STShNQUMpCisgICAgYXV0byBi
aWFzZWREZWx0YSA9IFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjp3aGVlbERlbHRhQmlhc2lu
Z1Rvd2FyZHNWZXJ0aWNhbCh3aGVlbEV2ZW50KTsKKyNlbHNlCisgICAgYXV0byBiaWFzZWREZWx0
YSA9IHdoZWVsRXZlbnQuZGVsdGEoKTsKKyNlbmRpZgorICAgIGlmIChoYXNIb3Jpem9udGFsT3Zl
cnNjcm9sbEJlaGF2aW9yKCkgfHwgaGFzVmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSkgewor
ICAgICAgICBpZiAoaGFzSG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpICYmICFiaWFzZWRE
ZWx0YS5oZWlnaHQoKSAmJiBiaWFzZWREZWx0YS53aWR0aCgpKSB7CisgICAgICAgICAgICBoYW5k
bGVkID0gZmFsc2U7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAg
ICBpZiAoKGhhc0hvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSAmJiBoYXNWZXJ0aWNhbE92
ZXJzY3JvbGxCZWhhdmlvcigpKSB8fCAoaGFzSG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigp
ICYmICFiaWFzZWREZWx0YS5oZWlnaHQoKSkgfHwgKGhhc1ZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2
aW9yKCkgJiYgIWJpYXNlZERlbHRhLndpZHRoKCkpKSB7CisgICAgICAgICAgICBoYW5kbGVkID0g
dHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIGZpbHRl
cmVkRGVsdGEuc2V0V2lkdGgoaGFzSG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpIHx8ICho
YXNWZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpICYmICFiaWFzZWREZWx0YS53aWR0aCgpKSA/
IDAgOiBmaWx0ZXJlZERlbHRhLndpZHRoKCkpOworICAgICAgICBmaWx0ZXJlZERlbHRhLnNldEhl
aWdodChoYXNWZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpIHx8IChoYXNIb3Jpem9udGFsT3Zl
cnNjcm9sbEJlaGF2aW9yKCkgJiYgIWJpYXNlZERlbHRhLmhlaWdodCgpKSA/IDAgOiBmaWx0ZXJl
ZERlbHRhLmhlaWdodCgpKTsKKyAgICAgICAgd2hlZWxFdmVudCA9IHdoZWVsRXZlbnQuY29weVdp
dGhEZWx0YUFuZFZlbG9jaXR5KGZpbHRlcmVkRGVsdGEsIHdoZWVsRXZlbnQuc2Nyb2xsaW5nVmVs
b2NpdHkoKSk7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKEFTWU5DX1NDUk9MTElORykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZS5oCmluZGV4IGI5ZjU0MzA3MDE2ZTIwOGQ0YTZjNWYwYjNlMTMxZDk5NzVkOGU2NTUuLmZj
YmMxMDU4M2IzZmNmMmE0ZWY1ZTYyNmMzYzAzN2I2OGFiNmRjNDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGUuaApAQCAtMTU5LDYgKzE1OSwxMyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBib29sIGFsbG93c0hv
cml6b250YWxTY3JvbGxpbmcoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGFibGVBcmVhUGFyYW1l
dGVycy5hbGxvd3NIb3Jpem9udGFsU2Nyb2xsaW5nOyB9CiAgICAgYm9vbCBhbGxvd3NWZXJ0aWNh
bFNjcm9sbGluZygpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzLmFs
bG93c1ZlcnRpY2FsU2Nyb2xsaW5nOyB9CisgICAgCisgICAgT3ZlcnNjcm9sbEJlaGF2aW9yIGhv
cml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGFibGVB
cmVhUGFyYW1ldGVycy5ob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yOyB9CisgICAgT3ZlcnNj
cm9sbEJlaGF2aW9yIHZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29uc3QgeyByZXR1cm4g
bV9zY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMudmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3I7IH0K
KyAgICBib29sIGhhc0hvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdCB7IHJldHVy
biBtX3Njcm9sbGFibGVBcmVhUGFyYW1ldGVycy5ob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9y
ICE9IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0bzsgfQorICAgIGJvb2wgaGFzVmVydGljYWxPdmVy
c2Nyb2xsQmVoYXZpb3IoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGFibGVBcmVhUGFyYW1ldGVy
cy52ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvciAhPSBPdmVyc2Nyb2xsQmVoYXZpb3I6OkF1dG87
IH0KKyAgICBib29sIHNob3VsZEJsb2NrU2Nyb2xsUHJvcG9nYXRpb24oUGxhdGZvcm1XaGVlbEV2
ZW50JiwgYm9vbCYpIGNvbnN0OworCiAKICAgICB2b2lkIGR1bXBQcm9wZXJ0aWVzKFdURjo6VGV4
dFN0cmVhbSYsIE9wdGlvblNldDxTY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHRCZWhhdmlvcj4pIGNv
bnN0IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckNvbXBvc2l0b3IuY3BwCmluZGV4IGJmMGJmZGUwYzU5NjhmMWJhM2MwMTQyNmQ5YjNkZDc3
MzExMmRhNGMuLjU1Y2FjNWQ4ZDE2OGU5NzAwZTUwYmQ3YjJjNzE4MThmOTk3NDhkYTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3Bw
CkBAIC0xNjUyLDcgKzE2NTIsOSBAQCBzdGF0aWMgYm9vbCByZWNvbXBvc2l0ZUNoYW5nZVJlcXVp
cmVzR2VvbWV0cnlVcGRhdGUoY29uc3QgUmVuZGVyU3R5bGUmIG9sZFN0eWxlLAogICAgICAgICB8
fCBvbGRTdHlsZS5vZmZzZXRQb3NpdGlvbigpICE9IG5ld1N0eWxlLm9mZnNldFBvc2l0aW9uKCkK
ICAgICAgICAgfHwgb2xkU3R5bGUub2Zmc2V0RGlzdGFuY2UoKSAhPSBuZXdTdHlsZS5vZmZzZXRE
aXN0YW5jZSgpCiAgICAgICAgIHx8IG9sZFN0eWxlLm9mZnNldFJvdGF0ZSgpICE9IG5ld1N0eWxl
Lm9mZnNldFJvdGF0ZSgpCi0gICAgICAgIHx8ICFhcmVQb2ludGluZ1RvRXF1YWxEYXRhKG9sZFN0
eWxlLmNsaXBQYXRoKCksIG5ld1N0eWxlLmNsaXBQYXRoKCkpOworICAgICAgICB8fCAhYXJlUG9p
bnRpbmdUb0VxdWFsRGF0YShvbGRTdHlsZS5jbGlwUGF0aCgpLCBuZXdTdHlsZS5jbGlwUGF0aCgp
KQorICAgICAgICB8fCBvbGRTdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JYKCkgIT0gbmV3U3R5bGUu
b3ZlcnNjcm9sbEJlaGF2aW9yWCgpCisgICAgICAgIHx8IG9sZFN0eWxlLm92ZXJzY3JvbGxCZWhh
dmlvclkoKSAhPSBuZXdTdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JZKCk7CiB9CiAKIHZvaWQgUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjpsYXllclN0eWxlQ2hhbmdlZChTdHlsZURpZmZlcmVuY2UgZGlm
ZiwgUmVuZGVyTGF5ZXImIGxheWVyLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpCkBAIC0z
OTQ1LDYgKzM5NDcsMTEgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJvb3RPckJvZHlT
dHlsZUNoYW5nZWQoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnMKICAgICBib29sIGhhZEZp
eGVkQmFja2dyb3VuZCA9IG9sZFN0eWxlICYmIG9sZFN0eWxlLT5oYXNFbnRpcmVseUZpeGVkQmFj
a2dyb3VuZCgpOwogICAgIGlmIChoYWRGaXhlZEJhY2tncm91bmQgIT0gcmVuZGVyZXIuc3R5bGUo
KS5oYXNFbnRpcmVseUZpeGVkQmFja2dyb3VuZCgpKQogICAgICAgICByb290TGF5ZXJDb25maWd1
cmF0aW9uQ2hhbmdlZCgpOworICAgIAorICAgIGlmIChvbGRTdHlsZSAmJiAob2xkU3R5bGUtPm92
ZXJzY3JvbGxCZWhhdmlvclgoKSAhPSByZW5kZXJlci5zdHlsZSgpLm92ZXJzY3JvbGxCZWhhdmlv
clgoKSB8fCBvbGRTdHlsZS0+b3ZlcnNjcm9sbEJlaGF2aW9yWSgpICE9IHJlbmRlcmVyLnN0eWxl
KCkub3ZlcnNjcm9sbEJlaGF2aW9yWSgpKSkgeworICAgICAgICBpZiAoYXV0byogbGF5ZXIgPSBt
X3JlbmRlclZpZXcubGF5ZXIoKSkKKyAgICAgICAgICAgIGxheWVyLT5zZXROZWVkc0NvbXBvc2l0
aW5nR2VvbWV0cnlVcGRhdGUoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3Np
dG9yOjpyb290QmFja2dyb3VuZENvbG9yT3JUcmFuc3BhcmVuY3lDaGFuZ2VkKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCmluZGV4IDZiMzYzOGQx
YThmMGUxZTY3NGEzNWZlOWNmMmUzY2I1ZWY2YjhkMGEuLjZlZDYyNzg4MjIxODY5ZmZhY2FmNjQ0
MGM3YTQ0NGUyOTdkOTNhZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmNwcApAQCAtMTE5Niw3ICsxMTk2LDkgQEAgYm9vbCBSZW5kZXJTdHlsZTo6
Y2hhbmdlUmVxdWlyZXNSZWNvbXBvc2l0ZUxheWVyKGNvbnN0IFJlbmRlclN0eWxlJiBvdGhlciwg
T3B0aW8KICAgICAgICAgICAgIHx8IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmJhY2tmYWNlVmlz
aWJpbGl0eSAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5iYWNrZmFjZVZpc2liaWxp
dHkKICAgICAgICAgICAgIHx8IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnBlcnNwZWN0aXZlICE9
IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnBlcnNwZWN0aXZlCiAgICAgICAgICAgICB8
fCBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5wZXJzcGVjdGl2ZU9yaWdpblggIT0gb3RoZXIubV9y
YXJlTm9uSW5oZXJpdGVkRGF0YS0+cGVyc3BlY3RpdmVPcmlnaW5YCi0gICAgICAgICAgICB8fCBt
X3JhcmVOb25Jbmhlcml0ZWREYXRhLT5wZXJzcGVjdGl2ZU9yaWdpblkgIT0gb3RoZXIubV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+cGVyc3BlY3RpdmVPcmlnaW5ZKQorICAgICAgICAgICAgfHwgbV9y
YXJlTm9uSW5oZXJpdGVkRGF0YS0+cGVyc3BlY3RpdmVPcmlnaW5ZICE9IG90aGVyLm1fcmFyZU5v
bkluaGVyaXRlZERhdGEtPnBlcnNwZWN0aXZlT3JpZ2luWQorICAgICAgICAgICAgfHwgbV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+b3ZlcnNjcm9sbEJlaGF2aW9yWCAhPSBvdGhlci5tX3JhcmVOb25J
bmhlcml0ZWREYXRhLT5vdmVyc2Nyb2xsQmVoYXZpb3JYCisgICAgICAgICAgICB8fCBtX3JhcmVO
b25Jbmhlcml0ZWREYXRhLT5vdmVyc2Nyb2xsQmVoYXZpb3JZICE9IG90aGVyLm1fcmFyZU5vbklu
aGVyaXRlZERhdGEtPm92ZXJzY3JvbGxCZWhhdmlvclkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCA5YjA2M2Q0NjEwOGJlZWNiNzlhMjJkYzhlMWE4M2QzOWFjNzNl
MjJiLi5lNTUyMWI3NjY0Y2I1MzFjNDAzMDRkNGYzYTc4OGIzNDE5ZTZhOGI4IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjIgQEAKKzIwMjEtMTItMDEgIE5pa29sYW9zIE1vdWNodGFyaXMgIDxubW91Y2h0YXJp
c0BhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IENTUyBvdmVyc2Nyb2xsLWJlaGF2aW9y
IGZvciBhc3luY2hyb25vdXMgc2Nyb2xsIG9uIE1hYworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwMTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNj
cm9sbC1iZWhhdmlvci1lbGVtZW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFz
dC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhh
dmlvci1pZnJhbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGlu
Zy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3Jv
bGxhYmxlLWVsZW1lbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9s
bGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9s
bC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3Jv
bGxhYmxlLWlmcmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9yZXNv
dXJjZXMvb3ZlcnNjcm9sbC1iZWhhdmlvci1zdXBwb3J0LmpzOiBBZGRlZC4KKyAgICAgICAgKGdl
dERlbHRhcyk6CisgICAgICAgIChhc3luYyBtb3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCk6CisKIDIw
MjEtMTEtMzAgIFJvYmVydCBKZW5uZXIgIDxKZW5uZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJF
QkFTRUxJTkUgWyBNb250ZXJleSBdZmFzdC9jc3MvY29udGludWF0aW9uQ3Jhc2guaHRtbCAobGF5
b3V0LXRlc3QpIGlzIGEgY29uc3RhbnQgdGV4dCBmYWlsdXJlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1vdmVy
c2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI3MTUwZmY2
MGI1ZGJkZDBiNGE3YWM2ZjgzZmI1NmY1N2NkMmNkODIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVt
ZW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIwIEBACisKK1BBU1MgRWxlbWVudCBob3Jpem9u
dGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBhdXRvLgorUEFT
UyBFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjog
YXV0byBhdXRvLgorUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVy
c2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGF1dG8uCitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Ny
b2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGF1dG8uCitQQVNTIEVs
ZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5v
bmUgYXV0by4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3Jv
bGwtYmVoYXZpb3I6IG5vbmUgYXV0by4KK1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0
ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBjb250YWluLgorUEFTUyBFbGVtZW50
IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBjb250
YWluLgorUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xs
LWJlaGF2aW9yOiBjb250YWluIGNvbnRhaW4uCitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xs
IHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGNvbnRhaW4uCitQQVNTIEVs
ZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5v
bmUgY29udGFpbi4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJz
Y3JvbGwtYmVoYXZpb3I6IG5vbmUgY29udGFpbi4KK1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNj
cm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBub25lLgorUEFTUyBFbGVt
ZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBu
b25lLgorUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xs
LWJlaGF2aW9yOiBjb250YWluIG5vbmUuCitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRl
c3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIG5vbmUuCitQQVNTIEVsZW1lbnQg
aG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgbm9u
ZS4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVo
YXZpb3I6IG5vbmUgbm9uZS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxp
bmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjE4MTM3YjljYjc3OWE5MTY3ZGIyMjUxZDMwNjdlNDYzZWFjOTQ2MzcK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMt
b3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50Lmh0bWwKQEAgLTAsMCArMSw4NiBAQAorPCFkb2N0
eXBlIGh0bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgQXN5bmNPdmVyZmxvd1Njcm9sbGlu
Z0VuYWJsZWQ9dHJ1ZSBBc3luY0ZyYW1lU2Nyb2xsaW5nRW5hYmxlZD10cnVlIF0gLS0+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXN1cHBv
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
cnNjcm9sbFk7CisgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoOworCisgICAg
ICAgICAgICB2YXIgeCA9IHNjcm9sbGVyLmNsaWVudFdpZHRoIC8gMjsKKyAgICAgICAgICAgIHZh
ciB5ID0gc2Nyb2xsZXIuY2xpZW50SGVpZ2h0IC8gMjsKKyAgICAgICAgICAgIHZhciBkZWx0YSA9
IGdldERlbHRhcygicmlnaHQiKTsKKyAgICAgICAgICAgIHJldHVybiBtb3VzZVdoZWVsU2Nyb2xs
QW5kV2FpdCh4LCB5LCBkZWx0YS5YLCBkZWx0YS5ZLCBkZWx0YS5YLCBkZWx0YS5ZKS50aGVuKCgp
ID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsTGVmdCA+IDAs
IHByb3BhZ2F0ZVgsICdDb250aW51ZSB1cCB0aGUgaG9yaXpvbnRhbCBzY3JvbGwgY2hhaW5pbmcn
KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9LCAnRWxlbWVudCBob3Jpem9udGFsIHNjcm9s
bCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogJyArIG92ZXJzY3JvbGxYICsgJyAnICsg
b3ZlcnNjcm9sbFkgKyAnLicpOworCisgICAgICAgIHByb21pc2VfdGVzdCgoKSA9PiB7CisgICAg
ICAgICAgICByZXNldFRlc3QoKTsKKyAgICAgICAgICAgIHNjcm9sbGVyLnN0eWxlLm92ZXJzY3Jv
bGxCZWhhdmlvclggPSBvdmVyc2Nyb2xsWDsKKyAgICAgICAgICAgIHNjcm9sbGVyLnN0eWxlLm92
ZXJzY3JvbGxCZWhhdmlvclkgPSBvdmVyc2Nyb2xsWTsKKworICAgICAgICAgICAgdmFyIHggPSBz
Y3JvbGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAgICAgICAgICB2YXIgeSA9IHNjcm9sbGVyLmNs
aWVudEhlaWdodCAvIDI7CisgICAgICAgICAgICB2YXIgZGVsdGEgPSBnZXREZWx0YXMoImRvd24i
KTsKKyAgICAgICAgICAgIHJldHVybiBtb3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCh4LCB5LCBkZWx0
YS5YLCBkZWx0YS5ZLCBkZWx0YS5YLCBkZWx0YS5ZKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAg
ICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsVG9wID4gMCwgcHJvcGFnYXRlWSwgJ0NvbnRp
bnVlIHVwIHRoZSB2ZXJ0aWNhbCBzY3JvbGwgY2hhaW5pbmcnKTsKKyAgICAgICAgICAgIH0pOwor
ICAgICAgICB9LCAnRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwt
YmVoYXZpb3I6ICcgKyBvdmVyc2Nyb2xsWCArICcgJyArIG92ZXJzY3JvbGxZICsgJy4nKTsKKyAg
ICB9KTsKK30KKworYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIHN0YXJ0VGVzdCk7Cis8L3Njcmlw
dD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwt
YmVoYXZpb3ItaWZyYW1lLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MDBhMGI3ZDkwNWI4N2Mx
ZGI3NjI2OTRmZDAwNjM4ZjE5NzY5NTM3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDIxIEBACisKKworUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3Jv
bGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gYXV0by4KK1BBU1MgSWZyYW1l
IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBhdXRv
LgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVo
YXZpb3I6IGNvbnRhaW4gYXV0by4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdp
dGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBhdXRvLgorUEFTUyBJZnJhbWUgaG9yaXpv
bnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgYXV0by4KK1BB
U1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjog
bm9uZSBhdXRvLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJz
Y3JvbGwtYmVoYXZpb3I6IGF1dG8gY29udGFpbi4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9s
bCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBjb250YWluLgorUEFTUyBJZnJh
bWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRh
aW4gY29udGFpbi4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNj
cm9sbC1iZWhhdmlvcjogY29udGFpbiBjb250YWluLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBz
Y3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgY29udGFpbi4KK1BBU1Mg
SWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9u
ZSBjb250YWluLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJz
Y3JvbGwtYmVoYXZpb3I6IGF1dG8gbm9uZS4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0
ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBub25lLgorUEFTUyBJZnJhbWUgaG9y
aXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gbm9u
ZS4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhh
dmlvcjogY29udGFpbiBub25lLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3
aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgbm9uZS4KK1BBU1MgSWZyYW1lIHZlcnRpY2Fs
IHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBub25lLgorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1i
ZWhhdmlvci1pZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL21hYy9hc3lu
Yy1vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNmODcxMzY0Zjk1
YmQ3N2Y2ZTRjZTliZWE0MjgzNTE0MGI0MGMxZjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUu
aHRtbApAQCAtMCwwICsxLDg2IEBACis8IWRvY3R5cGUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1y
dW5uZXIgWyBBc3luY092ZXJmbG93U2Nyb2xsaW5nRW5hYmxlZD10cnVlIEFzeW5jRnJhbWVTY3Jv
bGxpbmdFbmFibGVkPXRydWUgXSAtLT4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNl
cy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNv
dXJjZXMvb3ZlcnNjcm9sbC1iZWhhdmlvci1zdXBwb3J0LmpzIj48L3NjcmlwdD4KKzxsaW5rIHJl
bD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1vdmVyc2Nyb2xsLWJl
aGF2aW9yIj4KKzxzdHlsZT4KKyAgICAuc2Nyb2xsaW5nIHsKKyAgICAgICAgb3ZlcmZsb3c6IHNj
cm9sbDsKKyAgICB9CisgICAgLnNjcm9sbENvbnRlbnQgeworICAgICAgICB3aWR0aDogMzAwcHg7
CisgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFk
aWVudCgxMzVkZWcsIHJlZCwgYmx1ZSk7CisgICAgfQorICAgICNyb290IHsKKyAgICAgICAgd2lk
dGg6IDIwMHB4OworICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAgIH0KKyAgICAjc2Nyb2xsZXIg
eworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICAg
IG92ZXJzY3JvbGwtYmVoYXZpb3IteTogYXV0bzsKKyAgICB9Cis8L3N0eWxlPgorPGRpdiBpZD0n
cm9vdCcgY2xhc3M9InNjcm9sbGluZyI+CisgICAgPGlmcmFtZSBpZD0nc2Nyb2xsZXInIHNyY2Rv
Yz0iPGh0bWw+PGRpdiBzdHlsZT0nd2lkdGg6IDMwMHB4OyBoZWlnaHQ6IDMwMHB4Oyc+PC9kaXY+
PC9odG1sPgorICAgICAgICAiPjwvaWZyYW1lPgorICAgIDxkaXYgY2xhc3M9InNjcm9sbENvbnRl
bnQiPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+CisgICAgY29uc3Qgcm9vdCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdyb290Jyk7CisgICAgY29uc3Qgc2Nyb2xsZXIgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnc2Nyb2xsZXInKTsKKyAgICB2YXIgb3ZlcnNjcm9sbERhdGFzID0gW1si
YXV0byIsICJhdXRvIiwgdHJ1ZSwgdHJ1ZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
WyJjb250YWluIiwgImF1dG8iLCBmYWxzZSwgdHJ1ZV0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgWyJub25lIiwgImF1dG8iLCBmYWxzZSwgdHJ1ZV0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgWyJhdXRvIiwgImNvbnRhaW4iLCB0cnVlLCBmYWxzZV0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgWyJjb250YWluIiwgImNvbnRhaW4iLCBmYWxzZSwgZmFsc2VdLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFsibm9uZSIsICJjb250YWluIiwgZmFsc2UsIGZhbHNl
XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImF1dG8iLCAibm9uZSIsIHRydWUsIGZh
bHNlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImNvbnRhaW4iLCAibm9uZSIsIGZh
bHNlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJub25lIiwgIm5vbmUi
LCBmYWxzZSwgZmFsc2VdXTsKKyAgICBmdW5jdGlvbiByZXNldFRlc3QoKSB7CisgICAgICAgIC8v
IFRyeSB2YXJpb3VzIG1ldGhvZHMgdG8gZW5zdXJlIHRoZSBlbGVtZW50IHBvc2l0aW9uIGlzIHJl
c2V0IGltbWVkaWF0ZWx5LgorICAgICAgICBzY3JvbGxlci5jb250ZW50V2luZG93LnNjcm9sbFgg
PSAzMDA7CisgICAgICAgIHNjcm9sbGVyLmNvbnRlbnRXaW5kb3cuc2Nyb2xsWSA9IDMwMDsKKyAg
ICAgICAgc2Nyb2xsZXIuY29udGVudFdpbmRvdy5zY3JvbGxUbygzMDAsIDMwMCk7CisgICAgICAg
IHJvb3Quc2Nyb2xsTGVmdCA9IDA7CisgICAgICAgIHJvb3Quc2Nyb2xsVG9wID0gMDsKKyAgICAg
ICAgcm9vdC5zY3JvbGxUbygwLCAwKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBvdmVyc2Nyb2xs
QmVoYXZpb3JUZXN0KCkgeworICAgICAgICBvdmVyc2Nyb2xsRGF0YXMuZm9yRWFjaCgoW292ZXJz
Y3JvbGxYLCBvdmVyc2Nyb2xsWSwgcHJvcGFnYXRlWCwgcHJvcGFnYXRlWV0pID0+IHsKKyAgICAg
ICAgICAgIHByb21pc2VfdGVzdCgoKSA9PiB7CisgICAgICAgICAgICAgICAgcmVzZXRUZXN0KCk7
CisgICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IHNjcm9sbGVyLmNvbnRlbnRXaW5kb3cuZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImh0bWwiKVswXTsKKyAgICAgICAgICAgICAgICB0
YXJnZXQuc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWCA9IG92ZXJzY3JvbGxYOworICAgICAgICAg
ICAgICAgIHRhcmdldC5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JZID0gb3ZlcnNjcm9sbFk7Cisg
ICAgICAgICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAgICAg
ICAgICAgICAgdmFyIHkgPSBzY3JvbGxlci5jbGllbnRIZWlnaHQgLyAyOworICAgICAgICAgICAg
ICAgIHZhciBkZWx0YSA9IGdldERlbHRhcygicmlnaHQiKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gbW91c2VXaGVlbFNjcm9sbEFuZFdhaXQoeCwgeSwgZGVsdGEuWCwgZGVsdGEuWSwgZGVsdGEu
WCwgZGVsdGEuWSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydF9lcXVh
bHMocm9vdC5zY3JvbGxMZWZ0ID4gMCwgcHJvcGFnYXRlWCwgJ0NvbnRpbnVlIHVwIHRoZSBob3Jp
em9udGFsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAg
ICAgfSwgJ0lmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhh
dmlvcjogJyArIG92ZXJzY3JvbGxYICsgJyAnICsgb3ZlcnNjcm9sbFkgKyAnLicpOworCisgICAg
ICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgICAgICAgICAgICAgIHJlc2V0VGVzdCgp
OworICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSBzY3JvbGxlci5jb250ZW50V2luZG93LmRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJodG1sIilbMF07CisgICAgICAgICAgICAgICAg
dGFyZ2V0LnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclggPSBvdmVyc2Nyb2xsWDsKKyAgICAgICAg
ICAgICAgICB0YXJnZXQuc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWSA9IG92ZXJzY3JvbGxZOwor
CisgICAgICAgICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAg
ICAgICAgICAgICAgdmFyIHkgPSBzY3JvbGxlci5jbGllbnRIZWlnaHQgLyAyOworICAgICAgICAg
ICAgICAgIHZhciBkZWx0YSA9IGdldERlbHRhcygiZG93biIpOworICAgICAgICAgICAgICAgIHJl
dHVybiBtb3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCh4LCB5LCBkZWx0YS5YLCBkZWx0YS5ZLCBkZWx0
YS5YLCBkZWx0YS5ZKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X2Vx
dWFscyhyb290LnNjcm9sbFRvcCA+IDAsIHByb3BhZ2F0ZVksICdDb250aW51ZSB1cCB0aGUgdmVy
dGljYWwgc2Nyb2xsIGNoYWluaW5nJyk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAg
ICB9LCAnSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlv
cjogJyArIG92ZXJzY3JvbGxYICsgJyAnICsgb3ZlcnNjcm9sbFkgKyAnLicpOworICAgICAgICB9
KTsKKyAgICB9CisKKyAgICBzY3JvbGxlci5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgb3ZlcnNj
cm9sbEJlaGF2aW9yVGVzdCk7Cis8L3NjcmlwdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNj
cm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9s
bGFibGUtZWxlbWVudC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjM5NWI2NDg4ZDA4NzBiOTU2
MWMwMjg2NzlkN2UxNWE0N2ZjZTZlOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1l
bGVtZW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKKworUEFTUyBVbnNjcm9sbGFibGUg
ZWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjog
bm9uZS4KK1BBU1MgVW5zY3JvbGxhYmxlIGVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0
aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUt
ZWxlbWVudC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJz
Y3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNDQ4
ZjJlMGVhNWNjMDc4ZjFmOWVhNGMyZDdmNzgwZWU3YjdlNTg0Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3It
dW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRtbApAQCAtMCwwICsxLDY3IEBACis8IWRvY3R5cGUgaHRt
bD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBBc3luY092ZXJmbG93U2Nyb2xsaW5nRW5hYmxl
ZD10cnVlIEFzeW5jRnJhbWVTY3JvbGxpbmdFbmFibGVkPXRydWUgXSAtLT4KKworPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvb3ZlcnNjcm9sbC1iZWhhdmlvci1zdXBwb3J0Lmpz
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
J0NvbnRpbnVlIHVwIHRoZSBob3Jpem9udGFsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAgICAg
ICAgfSk7CisgICAgICAgIH0sICdVbnNjcm9sbGFibGUgZWxlbWVudCBob3Jpem9udGFsIHNjcm9s
bCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4nKTsKKworICAgICAgICBwcm9t
aXNlX3Rlc3QoKCkgPT4geworICAgICAgICAgICAgcmVzZXRUZXN0KCk7CisgICAgICAgICAgICB2
YXIgeCA9IHNjcm9sbGVyLmNsaWVudFdpZHRoIC8gMjsKKyAgICAgICAgICAgIHZhciB5ID0gc2Ny
b2xsZXIuY2xpZW50SGVpZ2h0IC8gMjsKKyAgICAgICAgICAgIHZhciBkZWx0YSA9IGdldERlbHRh
cygiZG93biIpOworICAgICAgICAgICAgcmV0dXJuIG1vdXNlV2hlZWxTY3JvbGxBbmRXYWl0KHgs
IHksIGRlbHRhLlgsIGRlbHRhLlksIGRlbHRhLlgsIGRlbHRhLlkpLnRoZW4oKCkgPT4geworICAg
ICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxUb3AgPiAwLCB0cnVlLCAnQ29u
dGludWUgdXAgdGhlIHZlcnRpY2FsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAgICAgICAgfSk7
CisgICAgICAgIH0sICdVbnNjcm9sbGFibGUgZWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3
aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuJyk7Cit9CisKK2FkZEV2ZW50TGlzdGVuZXIo
ImxvYWQiLCBzdGFydFRlc3QpOworPC9zY3JpcHQ+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJz
Y3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9s
bGFibGUtaWZyYW1lLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZmE1OWNjYmE3OWFlZmYzM2Rh
NzBlOTNkNDg4YTA3ZWVjOWM1NjkxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlm
cmFtZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBACisKKworUEFTUyBVbnNjcm9sbGFibGUg
aWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBu
b25lLgorUEFTUyBVbnNjcm9sbGFibGUgaWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGgg
b3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlm
cmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3Jv
bGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMzZWM1YjI2
M2MyYjgzYmUxYTUyODcxNmNlODY1NjNkOTdhY2QxZDYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNj
cm9sbGFibGUtaWZyYW1lLmh0bWwKQEAgLTAsMCArMSw2NiBAQAorPCFkb2N0eXBlIGh0bWw+IDwh
LS0gd2Via2l0LXRlc3QtcnVubmVyIFsgQXN5bmNPdmVyZmxvd1Njcm9sbGluZ0VuYWJsZWQ9dHJ1
ZSBBc3luY0ZyYW1lU2Nyb2xsaW5nRW5hYmxlZD10cnVlIF0gLS0+CisKKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vcmVzb3VyY2VzL292ZXJzY3JvbGwtYmVoYXZpb3Itc3VwcG9ydC5qcyI+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
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvcmVzb3Vy
Y2VzL292ZXJzY3JvbGwtYmVoYXZpb3Itc3VwcG9ydC5qcyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Ny
b2xsaW5nL3Jlc291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXN1cHBvcnQuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uY2JkMjIyZTkwYjUyYTE5MzBiN2ZjZmU0NDIzZTk0NTgzYzA0NjAwZQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3Jlc291cmNlcy9vdmVyc2Nyb2xsLWJl
aGF2aW9yLXN1cHBvcnQuanMKQEAgLTAsMCArMSwzOSBAQAorZnVuY3Rpb24gZ2V0RGVsdGFzKGRp
cmVjdGlvbikgeworICAgIHZhciBkZWx0YVggPSAwOworICAgIHZhciBkZWx0YVkgPSAwOworICAg
IGlmIChkaXJlY3Rpb24gPT0gImRvd24iKQorICAgICAgICBkZWx0YVkgPSAtNQorICAgIGVsc2Ug
aWYgKGRpcmVjdGlvbiA9PSAidXAiKQorICAgICAgICBkZWx0YVkgPSA1OworICAgIGVsc2UgaWYg
KGRpcmVjdGlvbiA9PSAicmlnaHQiKQorICAgICAgICBkZWx0YVggPSAtNTsKKyAgICBlbHNlIGlm
IChkaXJlY3Rpb24gPT0gImxlZnQiKQorICAgICAgICBkZWx0YVggPSA1OworICAgIHJldHVybiB7
CisgICAgICAgIFg6IGRlbHRhWCwKKyAgICAgICAgWTogZGVsdGFZCisgICAgfTsKK30KKworYXN5
bmMgZnVuY3Rpb24gbW91c2VXaGVlbFNjcm9sbEFuZFdhaXQoeCwgeSwgYmVnaW5YLCBiZWdpblks
IGRlbHRhWCwgZGVsdGFZKQoreworICAgIGlmIChiZWdpblggPT09IHVuZGVmaW5lZCkKKyAgICAg
ICAgYmVnaW5YID0gMDsKKyAgICBpZiAoYmVnaW5ZID09PSB1bmRlZmluZWQpCisgICAgICAgIGJl
Z2luWSA9IC0xOworICAgIGlmIChkZWx0YVggPT09IHVuZGVmaW5lZCkKKyAgICAgICAgZGVsdGFY
ID0gMDsKKyAgICBpZiAoZGVsdGFZID09PSB1bmRlZmluZWQpCisgICAgICAgIGRlbHRhWSA9IC0x
MDsKKworICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhiZWdpblgsIGJlZ2luWSwgImJlZ2FuIiwgIm5vbmUiKTsK
KyAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZGVsdGFYLCBkZWx0YVksICJjaGFuZ2VkIiwgIm5vbmUiKTsKKyAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgImVuZGVkIiwgIm5vbmUi
KTsKKyAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgICAgIHNldFRpbWVv
dXQoKCkgPT4geworICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHJlc29sdmUpOwor
ICAgICAgICB9LCA1MDApOworICAgIH0pOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446816</attachid>
            <date>2021-12-10 14:28:39 -0800</date>
            <delta_ts>2022-01-21 17:09:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220139-20211210142838.patch</filename>
            <type>text/plain</type>
            <size>33174</size>
            <attacher name="Nikos Mouchtaris">nmouchtaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MzUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGJiNmQyZjJmYmNkN2I3
ODU1MzIxY2U1YjgwMWQ1YzJmYWNiMzhmNC4uODBhYWE0YzRhYWIwNzIyNjM2NGFhM2M1ZTE0YzA2
YTQ4ZDNiNjNmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDIxLTEyLTAxICBOaWtv
bGFvcyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxl
bWVudCBDU1Mgb3ZlcnNjcm9sbC1iZWhhdmlvciBmb3IgYXN5bmNocm9ub3VzIHNjcm9sbCBvbiBN
YWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDEz
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNwbGl0
IHVwIHBhdGNoIGJ5IENhdGhpZSBDaGVuIGFuZCBGcmVkZXJpYyBXYW5nLiBBZGQgZnVuY3Rpb24g
Zm9yIGJsb2NraW5nIHNjcm9sbCBjaGFpbmluZworICAgICAgICBhbmQgZmlsdGVyaW5nIHNjcm9s
bCBkZWx0YSBkZXBlbmRpbmcgb24gdGhlIHZhbHVlcyBvZiBvdmVyc2Nyb2xsIGJlaGF2aW9yIGZv
ciBhIHNjcm9sbGluZworICAgICAgICBub2RlLiBUaGlzIHBhdGNoIGlzIGZvciBhc3luY2hyb25v
dXMgc2Nyb2xsaW5nIG9ubHkuCisKKyAgICAgICAgVGVzdHM6IGZhc3Qvc2Nyb2xsaW5nL21hYy9h
c3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQuaHRtbAorICAgICAgICAgICAgICAgZmFz
dC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0bWwKKyAg
ICAgICAgICAgICAgIGZhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9y
LXVuc2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvc2Nyb2xsaW5n
L21hYy9hc3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUuaHRtbAor
CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxpbmdUcmVlOjpzaG91bGRCbG9ja1Njcm9sbENoYWluaW5nV2l0aE5vZGUp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZTo6aGFuZGxlV2hlZWxFdmVudFdpdGhO
b2RlKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmg6CisgICAgICAg
ICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaDoKKyAgICAgICAg
KiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdh
dGVNYWM6OmFsbG93c0hvcml6b250YWxTdHJldGNoaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OmFsbG93c1ZlcnRpY2Fs
U3RyZXRjaGluZyBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9z
aXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWNvbXBvc2l0ZUNoYW5nZVJlcXVpcmVzR2Vv
bWV0cnlVcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpy
b290T3JCb2R5U3R5bGVDaGFuZ2VkKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmNoYW5nZVJlcXVpcmVz
UmVjb21wb3NpdGVMYXllciBjb25zdCk6CisKIDIwMjEtMTEtMzAgIFNpbW9uIEZyYXNlciAgPHNp
bW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUGFzcyB0aGUgdGltZXN0YW1wIGZvciBz
Y3JvbGxpbmcgdGhyZWFkIGFuaW1hdGlvbnMgdGhyb3VnaCBhbGwgdGhlIHNlcnZpY2VTY3JvbGxB
bmltYXRpb24oKSBjYWxscwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAppbmRleCBkOTRmZjEzMDZiNzll
MjhmYjY4OTkwMDY5NzcwOGFiMjhkYmNmNTJkLi44MmY3NTdhMjdiM2IwNzI0MDA2ZDcyYTUzODJl
MzRmYTRjYTk0NjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9B
c3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcApAQCAtNzg3LDggKzc4Nyw4IEBA
IHZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0U2Nyb2xsaW5nTm9kZVNjcm9sbGFi
bGVBcmVhR2VvbWV0cnkoU2Nyb2xsaW5nCiAgICAgc2Nyb2xsaW5nTm9kZS5zZXRTY3JvbGxhYmxl
QXJlYVNpemUoc2Nyb2xsYWJsZUFyZWEudmlzaWJsZVNpemUoKSk7CiAKICAgICBTY3JvbGxhYmxl
QXJlYVBhcmFtZXRlcnMgc2Nyb2xsUGFyYW1ldGVyczsKLSAgICBzY3JvbGxQYXJhbWV0ZXJzLmhv
cml6b250YWxTY3JvbGxFbGFzdGljaXR5ID0gc2Nyb2xsYWJsZUFyZWEuaG9yaXpvbnRhbFNjcm9s
bEVsYXN0aWNpdHkoKTsKLSAgICBzY3JvbGxQYXJhbWV0ZXJzLnZlcnRpY2FsU2Nyb2xsRWxhc3Rp
Y2l0eSA9IHNjcm9sbGFibGVBcmVhLnZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eSgpOworICAgIHNj
cm9sbFBhcmFtZXRlcnMuaG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkgPSBzY3JvbGxhYmxlQXJl
YS5ob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgPT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpO
b25lID8gU2Nyb2xsRWxhc3RpY2l0eTo6Tm9uZSA6IHNjcm9sbGFibGVBcmVhLmhvcml6b250YWxT
Y3JvbGxFbGFzdGljaXR5KCk7CisgICAgc2Nyb2xsUGFyYW1ldGVycy52ZXJ0aWNhbFNjcm9sbEVs
YXN0aWNpdHkgPSBzY3JvbGxhYmxlQXJlYS52ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpID09
IE92ZXJzY3JvbGxCZWhhdmlvcjo6Tm9uZSA/IFNjcm9sbEVsYXN0aWNpdHk6Ok5vbmUgOiBzY3Jv
bGxhYmxlQXJlYS52ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkoKTsKICAgICBzY3JvbGxQYXJhbWV0
ZXJzLmFsbG93c0hvcml6b250YWxTY3JvbGxpbmcgPSBzY3JvbGxhYmxlQXJlYS5hbGxvd3NIb3Jp
em9udGFsU2Nyb2xsaW5nKCk7CiAgICAgc2Nyb2xsUGFyYW1ldGVycy5hbGxvd3NWZXJ0aWNhbFNj
cm9sbGluZyA9IHNjcm9sbGFibGVBcmVhLmFsbG93c1ZlcnRpY2FsU2Nyb2xsaW5nKCk7CiAgICAg
c2Nyb2xsUGFyYW1ldGVycy5ob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yID0gc2Nyb2xsYWJs
ZUFyZWEuaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcAppbmRleCAyZGU2NWMyMmY5YjdmOTQw
ZTFlYmNmZmJjNDVlY2Q2MDZhNDk5Yzg0Li4xNWI2YjYyZWEyYTU1M2U4YzE0NWZkM2FhN2ZkZWVh
YzU3MzYyNDFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdUcmVlLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNp
bmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1XaGVlbEV2ZW50LmgiCisjaW5j
bHVkZSAiU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTY3JvbGxpbmdT
dGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZS5oIgogI2luY2x1ZGUgIlNjcm9sbGluZ1N0YXRlVHJlZS5o
IgogI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUuaCIKQEAgLTIwMSwx
MCArMjAyLDExIEBAIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdCBTY3JvbGxpbmdUcmVlOjpoYW5k
bGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVuCiAKIFdoZWVsRXZlbnRIYW5kbGlu
Z1Jlc3VsdCBTY3JvbGxpbmdUcmVlOjpoYW5kbGVXaGVlbEV2ZW50V2l0aE5vZGUoY29uc3QgUGxh
dGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBPcHRpb25TZXQ8V2hlZWxFdmVudFByb2Nlc3Np
bmdTdGVwcz4gcHJvY2Vzc2luZ1N0ZXBzLCBTY3JvbGxpbmdUcmVlTm9kZSogbm9kZSwgRXZlbnRU
YXJnZXRpbmcgZXZlbnRUYXJnZXRpbmcpCiB7CisgICAgUGxhdGZvcm1XaGVlbEV2ZW50IGFkanVz
dGVkV2hlZWxFdmVudCA9IFBsYXRmb3JtV2hlZWxFdmVudCh3aGVlbEV2ZW50KTsKICAgICB3aGls
ZSAobm9kZSkgewogICAgICAgICBpZiAoaXM8U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU+KCpu
b2RlKSkgewogICAgICAgICAgICAgYXV0byYgc2Nyb2xsaW5nTm9kZSA9IGRvd25jYXN0PFNjcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlPigqbm9kZSk7Ci0gICAgICAgICAgICBhdXRvIHJlc3VsdCA9
IHNjcm9sbGluZ05vZGUuaGFuZGxlV2hlZWxFdmVudCh3aGVlbEV2ZW50LCBldmVudFRhcmdldGlu
Zyk7CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IHNjcm9sbGluZ05vZGUuaGFuZGxlV2hlZWxF
dmVudChhZGp1c3RlZFdoZWVsRXZlbnQsIGV2ZW50VGFyZ2V0aW5nKTsKIAogICAgICAgICAgICAg
aWYgKHJlc3VsdC53YXNIYW5kbGVkKSB7CiAgICAgICAgICAgICAgICAgbV9sYXRjaGluZ0NvbnRy
b2xsZXIubm9kZURpZEhhbmRsZUV2ZW50KHNjcm9sbGluZ05vZGUuc2Nyb2xsaW5nTm9kZUlEKCks
IHByb2Nlc3NpbmdTdGVwcywgd2hlZWxFdmVudCwgbV9hbGxvd0xhdGNoaW5nKTsKQEAgLTIxNCw2
ICsyMTYsMTYgQEAgV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0IFNjcm9sbGluZ1RyZWU6OmhhbmRs
ZVdoZWVsRXZlbnRXaXRoTm9kZShjb25zdCBQbGF0Zm9ybVcKIAogICAgICAgICAgICAgaWYgKHJl
c3VsdC5uZWVkc01haW5UaHJlYWRQcm9jZXNzaW5nKCkgfHwgZXZlbnRUYXJnZXRpbmcgIT0gRXZl
bnRUYXJnZXRpbmc6OlByb3BhZ2F0ZSkKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgICAgICAgICAgCisgICAgICAgICAgICBib29sIGhhbmRsZWQgPSBmYWxzZTsKKyAgICAgICAg
ICAgIGlmIChzY3JvbGxpbmdOb2RlLnNob3VsZEJsb2NrU2Nyb2xsUHJvcGFnYXRpb24oYWRqdXN0
ZWRXaGVlbEV2ZW50LCBoYW5kbGVkKSkgeworICAgICAgICAgICAgICAgIGlmICghaGFuZGxlZCkK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdDo6dW5o
YW5kbGVkKCk7CisKKyAgICAgICAgICAgICAgICBtX2xhdGNoaW5nQ29udHJvbGxlci5ub2RlRGlk
SGFuZGxlRXZlbnQoc2Nyb2xsaW5nTm9kZS5zY3JvbGxpbmdOb2RlSUQoKSwgcHJvY2Vzc2luZ1N0
ZXBzLCB3aGVlbEV2ZW50LCBtX2FsbG93TGF0Y2hpbmcpOworICAgICAgICAgICAgICAgIG1fZ2Vz
dHVyZVN0YXRlLm5vZGVEaWRIYW5kbGVFdmVudChzY3JvbGxpbmdOb2RlLnNjcm9sbGluZ05vZGVJ
RCgpLCB3aGVlbEV2ZW50KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gV2hlZWxFdmVudEhhbmRs
aW5nUmVzdWx0OjpoYW5kbGVkKCk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAg
ICBpZiAoaXM8U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsUHJveHlOb2RlPigqbm9kZSkpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlLmNwcAppbmRleCA0ZDdjNTBmYjZjMTcxNzE5YWI4NDNhZTk2MDk0
YjBiMzMxYjVhNjFkLi4yMzMzMDU5YjExN2QxMTc5ODdiMDE4MmE1NTFmYjZjNzdiMmY3NTQ1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwCkBAIC0zOTIsNiArMzkyLDMwIEBAIHZvaWQgU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGU6OnNldEN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KHN0
ZDo6b3B0aW9uYWw8CiAgICAgbV9jdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCA9IGluZGV4
OwogfQogCitib29sIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjpzaG91bGRCbG9ja1Njcm9s
bFByb3BhZ2F0aW9uKFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgYm9vbCYgaGFuZGxl
ZCkgY29uc3QKK3sKKyAgICBGbG9hdFNpemUgZmlsdGVyZWREZWx0YSh3aGVlbEV2ZW50LmRlbHRh
WCgpLCB3aGVlbEV2ZW50LmRlbHRhWSgpKTsKKyNpZiBQTEFURk9STShNQUMpCisgICAgYXV0byBi
aWFzZWREZWx0YSA9IFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjp3aGVlbERlbHRhQmlhc2lu
Z1Rvd2FyZHNWZXJ0aWNhbCh3aGVlbEV2ZW50KTsKKyNlbHNlCisgICAgYXV0byBiaWFzZWREZWx0
YSA9IHdoZWVsRXZlbnQuZGVsdGEoKTsKKyNlbmRpZgorICAgIGlmIChoYXNIb3Jpem9udGFsT3Zl
cnNjcm9sbEJlaGF2aW9yKCkgfHwgaGFzVmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSkgewor
ICAgICAgICBpZiAoaGFzSG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpICYmICFiaWFzZWRE
ZWx0YS5oZWlnaHQoKSAmJiBiaWFzZWREZWx0YS53aWR0aCgpKSB7CisgICAgICAgICAgICBoYW5k
bGVkID0gZmFsc2U7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAg
ICBpZiAoKGhhc0hvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSAmJiBoYXNWZXJ0aWNhbE92
ZXJzY3JvbGxCZWhhdmlvcigpKSB8fCAoaGFzSG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigp
ICYmICFiaWFzZWREZWx0YS5oZWlnaHQoKSkgfHwgKGhhc1ZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2
aW9yKCkgJiYgIWJpYXNlZERlbHRhLndpZHRoKCkpKSB7CisgICAgICAgICAgICBoYW5kbGVkID0g
dHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIGZpbHRl
cmVkRGVsdGEuc2V0V2lkdGgoaGFzSG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpIHx8ICho
YXNWZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpICYmICFiaWFzZWREZWx0YS53aWR0aCgpKSA/
IDAgOiBmaWx0ZXJlZERlbHRhLndpZHRoKCkpOworICAgICAgICBmaWx0ZXJlZERlbHRhLnNldEhl
aWdodChoYXNWZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpIHx8IChoYXNIb3Jpem9udGFsT3Zl
cnNjcm9sbEJlaGF2aW9yKCkgJiYgIWJpYXNlZERlbHRhLmhlaWdodCgpKSA/IDAgOiBmaWx0ZXJl
ZERlbHRhLmhlaWdodCgpKTsKKyAgICAgICAgd2hlZWxFdmVudCA9IHdoZWVsRXZlbnQuY29weVdp
dGhEZWx0YUFuZFZlbG9jaXR5KGZpbHRlcmVkRGVsdGEsIHdoZWVsRXZlbnQuc2Nyb2xsaW5nVmVs
b2NpdHkoKSk7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKEFTWU5DX1NDUk9MTElORykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZS5oCmluZGV4IGI5ZjU0MzA3MDE2ZTIwOGQ0YTZjNWYwYjNlMTMxZDk5NzVkOGU2NTUuLjZl
NWJmNmYxOWViMzlmZGE4N2VkY2FhN2Y5ODEwZDZmYjhjOTQ0ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGUuaApAQCAtMTU5LDYgKzE1OSwxMyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBib29sIGFsbG93c0hv
cml6b250YWxTY3JvbGxpbmcoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGFibGVBcmVhUGFyYW1l
dGVycy5hbGxvd3NIb3Jpem9udGFsU2Nyb2xsaW5nOyB9CiAgICAgYm9vbCBhbGxvd3NWZXJ0aWNh
bFNjcm9sbGluZygpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzLmFs
bG93c1ZlcnRpY2FsU2Nyb2xsaW5nOyB9CisgICAgCisgICAgT3ZlcnNjcm9sbEJlaGF2aW9yIGhv
cml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGFibGVB
cmVhUGFyYW1ldGVycy5ob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yOyB9CisgICAgT3ZlcnNj
cm9sbEJlaGF2aW9yIHZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29uc3QgeyByZXR1cm4g
bV9zY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMudmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3I7IH0K
KyAgICBib29sIGhhc0hvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdCB7IHJldHVy
biBtX3Njcm9sbGFibGVBcmVhUGFyYW1ldGVycy5ob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9y
ICE9IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0bzsgfQorICAgIGJvb2wgaGFzVmVydGljYWxPdmVy
c2Nyb2xsQmVoYXZpb3IoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGFibGVBcmVhUGFyYW1ldGVy
cy52ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvciAhPSBPdmVyc2Nyb2xsQmVoYXZpb3I6OkF1dG87
IH0KKyAgICBib29sIHNob3VsZEJsb2NrU2Nyb2xsUHJvcGFnYXRpb24oUGxhdGZvcm1XaGVlbEV2
ZW50JiwgYm9vbCYpIGNvbnN0OworCiAKICAgICB2b2lkIGR1bXBQcm9wZXJ0aWVzKFdURjo6VGV4
dFN0cmVhbSYsIE9wdGlvblNldDxTY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHRCZWhhdmlvcj4pIGNv
bnN0IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckNvbXBvc2l0b3IuY3BwCmluZGV4IGJmMGJmZGUwYzU5NjhmMWJhM2MwMTQyNmQ5YjNkZDc3
MzExMmRhNGMuLjU1Y2FjNWQ4ZDE2OGU5NzAwZTUwYmQ3YjJjNzE4MThmOTk3NDhkYTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3Bw
CkBAIC0xNjUyLDcgKzE2NTIsOSBAQCBzdGF0aWMgYm9vbCByZWNvbXBvc2l0ZUNoYW5nZVJlcXVp
cmVzR2VvbWV0cnlVcGRhdGUoY29uc3QgUmVuZGVyU3R5bGUmIG9sZFN0eWxlLAogICAgICAgICB8
fCBvbGRTdHlsZS5vZmZzZXRQb3NpdGlvbigpICE9IG5ld1N0eWxlLm9mZnNldFBvc2l0aW9uKCkK
ICAgICAgICAgfHwgb2xkU3R5bGUub2Zmc2V0RGlzdGFuY2UoKSAhPSBuZXdTdHlsZS5vZmZzZXRE
aXN0YW5jZSgpCiAgICAgICAgIHx8IG9sZFN0eWxlLm9mZnNldFJvdGF0ZSgpICE9IG5ld1N0eWxl
Lm9mZnNldFJvdGF0ZSgpCi0gICAgICAgIHx8ICFhcmVQb2ludGluZ1RvRXF1YWxEYXRhKG9sZFN0
eWxlLmNsaXBQYXRoKCksIG5ld1N0eWxlLmNsaXBQYXRoKCkpOworICAgICAgICB8fCAhYXJlUG9p
bnRpbmdUb0VxdWFsRGF0YShvbGRTdHlsZS5jbGlwUGF0aCgpLCBuZXdTdHlsZS5jbGlwUGF0aCgp
KQorICAgICAgICB8fCBvbGRTdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JYKCkgIT0gbmV3U3R5bGUu
b3ZlcnNjcm9sbEJlaGF2aW9yWCgpCisgICAgICAgIHx8IG9sZFN0eWxlLm92ZXJzY3JvbGxCZWhh
dmlvclkoKSAhPSBuZXdTdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JZKCk7CiB9CiAKIHZvaWQgUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjpsYXllclN0eWxlQ2hhbmdlZChTdHlsZURpZmZlcmVuY2UgZGlm
ZiwgUmVuZGVyTGF5ZXImIGxheWVyLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpCkBAIC0z
OTQ1LDYgKzM5NDcsMTEgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJvb3RPckJvZHlT
dHlsZUNoYW5nZWQoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnMKICAgICBib29sIGhhZEZp
eGVkQmFja2dyb3VuZCA9IG9sZFN0eWxlICYmIG9sZFN0eWxlLT5oYXNFbnRpcmVseUZpeGVkQmFj
a2dyb3VuZCgpOwogICAgIGlmIChoYWRGaXhlZEJhY2tncm91bmQgIT0gcmVuZGVyZXIuc3R5bGUo
KS5oYXNFbnRpcmVseUZpeGVkQmFja2dyb3VuZCgpKQogICAgICAgICByb290TGF5ZXJDb25maWd1
cmF0aW9uQ2hhbmdlZCgpOworICAgIAorICAgIGlmIChvbGRTdHlsZSAmJiAob2xkU3R5bGUtPm92
ZXJzY3JvbGxCZWhhdmlvclgoKSAhPSByZW5kZXJlci5zdHlsZSgpLm92ZXJzY3JvbGxCZWhhdmlv
clgoKSB8fCBvbGRTdHlsZS0+b3ZlcnNjcm9sbEJlaGF2aW9yWSgpICE9IHJlbmRlcmVyLnN0eWxl
KCkub3ZlcnNjcm9sbEJlaGF2aW9yWSgpKSkgeworICAgICAgICBpZiAoYXV0byogbGF5ZXIgPSBt
X3JlbmRlclZpZXcubGF5ZXIoKSkKKyAgICAgICAgICAgIGxheWVyLT5zZXROZWVkc0NvbXBvc2l0
aW5nR2VvbWV0cnlVcGRhdGUoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3Np
dG9yOjpyb290QmFja2dyb3VuZENvbG9yT3JUcmFuc3BhcmVuY3lDaGFuZ2VkKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCmluZGV4IDZiMzYzOGQx
YThmMGUxZTY3NGEzNWZlOWNmMmUzY2I1ZWY2YjhkMGEuLjZlZDYyNzg4MjIxODY5ZmZhY2FmNjQ0
MGM3YTQ0NGUyOTdkOTNhZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmNwcApAQCAtMTE5Niw3ICsxMTk2LDkgQEAgYm9vbCBSZW5kZXJTdHlsZTo6
Y2hhbmdlUmVxdWlyZXNSZWNvbXBvc2l0ZUxheWVyKGNvbnN0IFJlbmRlclN0eWxlJiBvdGhlciwg
T3B0aW8KICAgICAgICAgICAgIHx8IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmJhY2tmYWNlVmlz
aWJpbGl0eSAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5iYWNrZmFjZVZpc2liaWxp
dHkKICAgICAgICAgICAgIHx8IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnBlcnNwZWN0aXZlICE9
IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnBlcnNwZWN0aXZlCiAgICAgICAgICAgICB8
fCBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5wZXJzcGVjdGl2ZU9yaWdpblggIT0gb3RoZXIubV9y
YXJlTm9uSW5oZXJpdGVkRGF0YS0+cGVyc3BlY3RpdmVPcmlnaW5YCi0gICAgICAgICAgICB8fCBt
X3JhcmVOb25Jbmhlcml0ZWREYXRhLT5wZXJzcGVjdGl2ZU9yaWdpblkgIT0gb3RoZXIubV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+cGVyc3BlY3RpdmVPcmlnaW5ZKQorICAgICAgICAgICAgfHwgbV9y
YXJlTm9uSW5oZXJpdGVkRGF0YS0+cGVyc3BlY3RpdmVPcmlnaW5ZICE9IG90aGVyLm1fcmFyZU5v
bkluaGVyaXRlZERhdGEtPnBlcnNwZWN0aXZlT3JpZ2luWQorICAgICAgICAgICAgfHwgbV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+b3ZlcnNjcm9sbEJlaGF2aW9yWCAhPSBvdGhlci5tX3JhcmVOb25J
bmhlcml0ZWREYXRhLT5vdmVyc2Nyb2xsQmVoYXZpb3JYCisgICAgICAgICAgICB8fCBtX3JhcmVO
b25Jbmhlcml0ZWREYXRhLT5vdmVyc2Nyb2xsQmVoYXZpb3JZICE9IG90aGVyLm1fcmFyZU5vbklu
aGVyaXRlZERhdGEtPm92ZXJzY3JvbGxCZWhhdmlvclkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCA5YjA2M2Q0NjEwOGJlZWNiNzlhMjJkYzhlMWE4M2QzOWFjNzNl
MjJiLi5lNTUyMWI3NjY0Y2I1MzFjNDAzMDRkNGYzYTc4OGIzNDE5ZTZhOGI4IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjIgQEAKKzIwMjEtMTItMDEgIE5pa29sYW9zIE1vdWNodGFyaXMgIDxubW91Y2h0YXJp
c0BhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IENTUyBvdmVyc2Nyb2xsLWJlaGF2aW9y
IGZvciBhc3luY2hyb25vdXMgc2Nyb2xsIG9uIE1hYworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwMTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNj
cm9sbC1iZWhhdmlvci1lbGVtZW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFz
dC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhh
dmlvci1pZnJhbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGlu
Zy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3Jv
bGxhYmxlLWVsZW1lbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9s
bGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9s
bC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3Jv
bGxhYmxlLWlmcmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9yZXNv
dXJjZXMvb3ZlcnNjcm9sbC1iZWhhdmlvci1zdXBwb3J0LmpzOiBBZGRlZC4KKyAgICAgICAgKGdl
dERlbHRhcyk6CisgICAgICAgIChhc3luYyBtb3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCk6CisKIDIw
MjEtMTEtMzAgIFJvYmVydCBKZW5uZXIgIDxKZW5uZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJF
QkFTRUxJTkUgWyBNb250ZXJleSBdZmFzdC9jc3MvY29udGludWF0aW9uQ3Jhc2guaHRtbCAobGF5
b3V0LXRlc3QpIGlzIGEgY29uc3RhbnQgdGV4dCBmYWlsdXJlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1vdmVy
c2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI3MTUwZmY2
MGI1ZGJkZDBiNGE3YWM2ZjgzZmI1NmY1N2NkMmNkODIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVt
ZW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIwIEBACisKK1BBU1MgRWxlbWVudCBob3Jpem9u
dGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBhdXRvLgorUEFT
UyBFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjog
YXV0byBhdXRvLgorUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVy
c2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGF1dG8uCitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Ny
b2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGF1dG8uCitQQVNTIEVs
ZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5v
bmUgYXV0by4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3Jv
bGwtYmVoYXZpb3I6IG5vbmUgYXV0by4KK1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0
ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBjb250YWluLgorUEFTUyBFbGVtZW50
IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBjb250
YWluLgorUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xs
LWJlaGF2aW9yOiBjb250YWluIGNvbnRhaW4uCitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xs
IHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGNvbnRhaW4uCitQQVNTIEVs
ZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5v
bmUgY29udGFpbi4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJz
Y3JvbGwtYmVoYXZpb3I6IG5vbmUgY29udGFpbi4KK1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNj
cm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBub25lLgorUEFTUyBFbGVt
ZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBu
b25lLgorUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xs
LWJlaGF2aW9yOiBjb250YWluIG5vbmUuCitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRl
c3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIG5vbmUuCitQQVNTIEVsZW1lbnQg
aG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgbm9u
ZS4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVo
YXZpb3I6IG5vbmUgbm9uZS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxp
bmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjE4MTM3YjljYjc3OWE5MTY3ZGIyMjUxZDMwNjdlNDYzZWFjOTQ2MzcK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMt
b3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50Lmh0bWwKQEAgLTAsMCArMSw4NiBAQAorPCFkb2N0
eXBlIGh0bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgQXN5bmNPdmVyZmxvd1Njcm9sbGlu
Z0VuYWJsZWQ9dHJ1ZSBBc3luY0ZyYW1lU2Nyb2xsaW5nRW5hYmxlZD10cnVlIF0gLS0+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXN1cHBv
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
cnNjcm9sbFk7CisgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoOworCisgICAg
ICAgICAgICB2YXIgeCA9IHNjcm9sbGVyLmNsaWVudFdpZHRoIC8gMjsKKyAgICAgICAgICAgIHZh
ciB5ID0gc2Nyb2xsZXIuY2xpZW50SGVpZ2h0IC8gMjsKKyAgICAgICAgICAgIHZhciBkZWx0YSA9
IGdldERlbHRhcygicmlnaHQiKTsKKyAgICAgICAgICAgIHJldHVybiBtb3VzZVdoZWVsU2Nyb2xs
QW5kV2FpdCh4LCB5LCBkZWx0YS5YLCBkZWx0YS5ZLCBkZWx0YS5YLCBkZWx0YS5ZKS50aGVuKCgp
ID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsTGVmdCA+IDAs
IHByb3BhZ2F0ZVgsICdDb250aW51ZSB1cCB0aGUgaG9yaXpvbnRhbCBzY3JvbGwgY2hhaW5pbmcn
KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9LCAnRWxlbWVudCBob3Jpem9udGFsIHNjcm9s
bCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogJyArIG92ZXJzY3JvbGxYICsgJyAnICsg
b3ZlcnNjcm9sbFkgKyAnLicpOworCisgICAgICAgIHByb21pc2VfdGVzdCgoKSA9PiB7CisgICAg
ICAgICAgICByZXNldFRlc3QoKTsKKyAgICAgICAgICAgIHNjcm9sbGVyLnN0eWxlLm92ZXJzY3Jv
bGxCZWhhdmlvclggPSBvdmVyc2Nyb2xsWDsKKyAgICAgICAgICAgIHNjcm9sbGVyLnN0eWxlLm92
ZXJzY3JvbGxCZWhhdmlvclkgPSBvdmVyc2Nyb2xsWTsKKworICAgICAgICAgICAgdmFyIHggPSBz
Y3JvbGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAgICAgICAgICB2YXIgeSA9IHNjcm9sbGVyLmNs
aWVudEhlaWdodCAvIDI7CisgICAgICAgICAgICB2YXIgZGVsdGEgPSBnZXREZWx0YXMoImRvd24i
KTsKKyAgICAgICAgICAgIHJldHVybiBtb3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCh4LCB5LCBkZWx0
YS5YLCBkZWx0YS5ZLCBkZWx0YS5YLCBkZWx0YS5ZKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAg
ICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsVG9wID4gMCwgcHJvcGFnYXRlWSwgJ0NvbnRp
bnVlIHVwIHRoZSB2ZXJ0aWNhbCBzY3JvbGwgY2hhaW5pbmcnKTsKKyAgICAgICAgICAgIH0pOwor
ICAgICAgICB9LCAnRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwt
YmVoYXZpb3I6ICcgKyBvdmVyc2Nyb2xsWCArICcgJyArIG92ZXJzY3JvbGxZICsgJy4nKTsKKyAg
ICB9KTsKK30KKworYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIHN0YXJ0VGVzdCk7Cis8L3Njcmlw
dD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwt
YmVoYXZpb3ItaWZyYW1lLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MDBhMGI3ZDkwNWI4N2Mx
ZGI3NjI2OTRmZDAwNjM4ZjE5NzY5NTM3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDIxIEBACisKKworUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3Jv
bGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gYXV0by4KK1BBU1MgSWZyYW1l
IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBhdXRv
LgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVo
YXZpb3I6IGNvbnRhaW4gYXV0by4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdp
dGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBhdXRvLgorUEFTUyBJZnJhbWUgaG9yaXpv
bnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgYXV0by4KK1BB
U1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjog
bm9uZSBhdXRvLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJz
Y3JvbGwtYmVoYXZpb3I6IGF1dG8gY29udGFpbi4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9s
bCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBjb250YWluLgorUEFTUyBJZnJh
bWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRh
aW4gY29udGFpbi4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNj
cm9sbC1iZWhhdmlvcjogY29udGFpbiBjb250YWluLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBz
Y3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgY29udGFpbi4KK1BBU1Mg
SWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9u
ZSBjb250YWluLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJz
Y3JvbGwtYmVoYXZpb3I6IGF1dG8gbm9uZS4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0
ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBub25lLgorUEFTUyBJZnJhbWUgaG9y
aXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gbm9u
ZS4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhh
dmlvcjogY29udGFpbiBub25lLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3
aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgbm9uZS4KK1BBU1MgSWZyYW1lIHZlcnRpY2Fs
IHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBub25lLgorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1i
ZWhhdmlvci1pZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL21hYy9hc3lu
Yy1vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNmODcxMzY0Zjk1
YmQ3N2Y2ZTRjZTliZWE0MjgzNTE0MGI0MGMxZjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUu
aHRtbApAQCAtMCwwICsxLDg2IEBACis8IWRvY3R5cGUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1y
dW5uZXIgWyBBc3luY092ZXJmbG93U2Nyb2xsaW5nRW5hYmxlZD10cnVlIEFzeW5jRnJhbWVTY3Jv
bGxpbmdFbmFibGVkPXRydWUgXSAtLT4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNl
cy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNv
dXJjZXMvb3ZlcnNjcm9sbC1iZWhhdmlvci1zdXBwb3J0LmpzIj48L3NjcmlwdD4KKzxsaW5rIHJl
bD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1vdmVyc2Nyb2xsLWJl
aGF2aW9yIj4KKzxzdHlsZT4KKyAgICAuc2Nyb2xsaW5nIHsKKyAgICAgICAgb3ZlcmZsb3c6IHNj
cm9sbDsKKyAgICB9CisgICAgLnNjcm9sbENvbnRlbnQgeworICAgICAgICB3aWR0aDogMzAwcHg7
CisgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFk
aWVudCgxMzVkZWcsIHJlZCwgYmx1ZSk7CisgICAgfQorICAgICNyb290IHsKKyAgICAgICAgd2lk
dGg6IDIwMHB4OworICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAgIH0KKyAgICAjc2Nyb2xsZXIg
eworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICAg
IG92ZXJzY3JvbGwtYmVoYXZpb3IteTogYXV0bzsKKyAgICB9Cis8L3N0eWxlPgorPGRpdiBpZD0n
cm9vdCcgY2xhc3M9InNjcm9sbGluZyI+CisgICAgPGlmcmFtZSBpZD0nc2Nyb2xsZXInIHNyY2Rv
Yz0iPGh0bWw+PGRpdiBzdHlsZT0nd2lkdGg6IDMwMHB4OyBoZWlnaHQ6IDMwMHB4Oyc+PC9kaXY+
PC9odG1sPgorICAgICAgICAiPjwvaWZyYW1lPgorICAgIDxkaXYgY2xhc3M9InNjcm9sbENvbnRl
bnQiPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+CisgICAgY29uc3Qgcm9vdCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdyb290Jyk7CisgICAgY29uc3Qgc2Nyb2xsZXIgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnc2Nyb2xsZXInKTsKKyAgICB2YXIgb3ZlcnNjcm9sbERhdGFzID0gW1si
YXV0byIsICJhdXRvIiwgdHJ1ZSwgdHJ1ZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
WyJjb250YWluIiwgImF1dG8iLCBmYWxzZSwgdHJ1ZV0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgWyJub25lIiwgImF1dG8iLCBmYWxzZSwgdHJ1ZV0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgWyJhdXRvIiwgImNvbnRhaW4iLCB0cnVlLCBmYWxzZV0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgWyJjb250YWluIiwgImNvbnRhaW4iLCBmYWxzZSwgZmFsc2VdLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFsibm9uZSIsICJjb250YWluIiwgZmFsc2UsIGZhbHNl
XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImF1dG8iLCAibm9uZSIsIHRydWUsIGZh
bHNlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImNvbnRhaW4iLCAibm9uZSIsIGZh
bHNlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJub25lIiwgIm5vbmUi
LCBmYWxzZSwgZmFsc2VdXTsKKyAgICBmdW5jdGlvbiByZXNldFRlc3QoKSB7CisgICAgICAgIC8v
IFRyeSB2YXJpb3VzIG1ldGhvZHMgdG8gZW5zdXJlIHRoZSBlbGVtZW50IHBvc2l0aW9uIGlzIHJl
c2V0IGltbWVkaWF0ZWx5LgorICAgICAgICBzY3JvbGxlci5jb250ZW50V2luZG93LnNjcm9sbFgg
PSAzMDA7CisgICAgICAgIHNjcm9sbGVyLmNvbnRlbnRXaW5kb3cuc2Nyb2xsWSA9IDMwMDsKKyAg
ICAgICAgc2Nyb2xsZXIuY29udGVudFdpbmRvdy5zY3JvbGxUbygzMDAsIDMwMCk7CisgICAgICAg
IHJvb3Quc2Nyb2xsTGVmdCA9IDA7CisgICAgICAgIHJvb3Quc2Nyb2xsVG9wID0gMDsKKyAgICAg
ICAgcm9vdC5zY3JvbGxUbygwLCAwKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBvdmVyc2Nyb2xs
QmVoYXZpb3JUZXN0KCkgeworICAgICAgICBvdmVyc2Nyb2xsRGF0YXMuZm9yRWFjaCgoW292ZXJz
Y3JvbGxYLCBvdmVyc2Nyb2xsWSwgcHJvcGFnYXRlWCwgcHJvcGFnYXRlWV0pID0+IHsKKyAgICAg
ICAgICAgIHByb21pc2VfdGVzdCgoKSA9PiB7CisgICAgICAgICAgICAgICAgcmVzZXRUZXN0KCk7
CisgICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IHNjcm9sbGVyLmNvbnRlbnRXaW5kb3cuZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImh0bWwiKVswXTsKKyAgICAgICAgICAgICAgICB0
YXJnZXQuc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWCA9IG92ZXJzY3JvbGxYOworICAgICAgICAg
ICAgICAgIHRhcmdldC5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JZID0gb3ZlcnNjcm9sbFk7Cisg
ICAgICAgICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAgICAg
ICAgICAgICAgdmFyIHkgPSBzY3JvbGxlci5jbGllbnRIZWlnaHQgLyAyOworICAgICAgICAgICAg
ICAgIHZhciBkZWx0YSA9IGdldERlbHRhcygicmlnaHQiKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gbW91c2VXaGVlbFNjcm9sbEFuZFdhaXQoeCwgeSwgZGVsdGEuWCwgZGVsdGEuWSwgZGVsdGEu
WCwgZGVsdGEuWSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydF9lcXVh
bHMocm9vdC5zY3JvbGxMZWZ0ID4gMCwgcHJvcGFnYXRlWCwgJ0NvbnRpbnVlIHVwIHRoZSBob3Jp
em9udGFsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAg
ICAgfSwgJ0lmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhh
dmlvcjogJyArIG92ZXJzY3JvbGxYICsgJyAnICsgb3ZlcnNjcm9sbFkgKyAnLicpOworCisgICAg
ICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgICAgICAgICAgICAgIHJlc2V0VGVzdCgp
OworICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSBzY3JvbGxlci5jb250ZW50V2luZG93LmRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJodG1sIilbMF07CisgICAgICAgICAgICAgICAg
dGFyZ2V0LnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclggPSBvdmVyc2Nyb2xsWDsKKyAgICAgICAg
ICAgICAgICB0YXJnZXQuc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWSA9IG92ZXJzY3JvbGxZOwor
CisgICAgICAgICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAg
ICAgICAgICAgICAgdmFyIHkgPSBzY3JvbGxlci5jbGllbnRIZWlnaHQgLyAyOworICAgICAgICAg
ICAgICAgIHZhciBkZWx0YSA9IGdldERlbHRhcygiZG93biIpOworICAgICAgICAgICAgICAgIHJl
dHVybiBtb3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCh4LCB5LCBkZWx0YS5YLCBkZWx0YS5ZLCBkZWx0
YS5YLCBkZWx0YS5ZKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X2Vx
dWFscyhyb290LnNjcm9sbFRvcCA+IDAsIHByb3BhZ2F0ZVksICdDb250aW51ZSB1cCB0aGUgdmVy
dGljYWwgc2Nyb2xsIGNoYWluaW5nJyk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAg
ICB9LCAnSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlv
cjogJyArIG92ZXJzY3JvbGxYICsgJyAnICsgb3ZlcnNjcm9sbFkgKyAnLicpOworICAgICAgICB9
KTsKKyAgICB9CisKKyAgICBzY3JvbGxlci5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgb3ZlcnNj
cm9sbEJlaGF2aW9yVGVzdCk7Cis8L3NjcmlwdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNj
cm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9s
bGFibGUtZWxlbWVudC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjM5NWI2NDg4ZDA4NzBiOTU2
MWMwMjg2NzlkN2UxNWE0N2ZjZTZlOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1l
bGVtZW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKKworUEFTUyBVbnNjcm9sbGFibGUg
ZWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjog
bm9uZS4KK1BBU1MgVW5zY3JvbGxhYmxlIGVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0
aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUt
ZWxlbWVudC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJz
Y3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNDQ4
ZjJlMGVhNWNjMDc4ZjFmOWVhNGMyZDdmNzgwZWU3YjdlNTg0Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3It
dW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRtbApAQCAtMCwwICsxLDY3IEBACis8IWRvY3R5cGUgaHRt
bD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBBc3luY092ZXJmbG93U2Nyb2xsaW5nRW5hYmxl
ZD10cnVlIEFzeW5jRnJhbWVTY3JvbGxpbmdFbmFibGVkPXRydWUgXSAtLT4KKworPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvb3ZlcnNjcm9sbC1iZWhhdmlvci1zdXBwb3J0Lmpz
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
J0NvbnRpbnVlIHVwIHRoZSBob3Jpem9udGFsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAgICAg
ICAgfSk7CisgICAgICAgIH0sICdVbnNjcm9sbGFibGUgZWxlbWVudCBob3Jpem9udGFsIHNjcm9s
bCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4nKTsKKworICAgICAgICBwcm9t
aXNlX3Rlc3QoKCkgPT4geworICAgICAgICAgICAgcmVzZXRUZXN0KCk7CisgICAgICAgICAgICB2
YXIgeCA9IHNjcm9sbGVyLmNsaWVudFdpZHRoIC8gMjsKKyAgICAgICAgICAgIHZhciB5ID0gc2Ny
b2xsZXIuY2xpZW50SGVpZ2h0IC8gMjsKKyAgICAgICAgICAgIHZhciBkZWx0YSA9IGdldERlbHRh
cygiZG93biIpOworICAgICAgICAgICAgcmV0dXJuIG1vdXNlV2hlZWxTY3JvbGxBbmRXYWl0KHgs
IHksIGRlbHRhLlgsIGRlbHRhLlksIGRlbHRhLlgsIGRlbHRhLlkpLnRoZW4oKCkgPT4geworICAg
ICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxUb3AgPiAwLCB0cnVlLCAnQ29u
dGludWUgdXAgdGhlIHZlcnRpY2FsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAgICAgICAgfSk7
CisgICAgICAgIH0sICdVbnNjcm9sbGFibGUgZWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3
aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuJyk7Cit9CisKK2FkZEV2ZW50TGlzdGVuZXIo
ImxvYWQiLCBzdGFydFRlc3QpOworPC9zY3JpcHQ+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJz
Y3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9s
bGFibGUtaWZyYW1lLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZmE1OWNjYmE3OWFlZmYzM2Rh
NzBlOTNkNDg4YTA3ZWVjOWM1NjkxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlm
cmFtZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBACisKKworUEFTUyBVbnNjcm9sbGFibGUg
aWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBu
b25lLgorUEFTUyBVbnNjcm9sbGFibGUgaWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGgg
b3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlm
cmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3Jv
bGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMzZWM1YjI2
M2MyYjgzYmUxYTUyODcxNmNlODY1NjNkOTdhY2QxZDYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNj
cm9sbGFibGUtaWZyYW1lLmh0bWwKQEAgLTAsMCArMSw2NiBAQAorPCFkb2N0eXBlIGh0bWw+IDwh
LS0gd2Via2l0LXRlc3QtcnVubmVyIFsgQXN5bmNPdmVyZmxvd1Njcm9sbGluZ0VuYWJsZWQ9dHJ1
ZSBBc3luY0ZyYW1lU2Nyb2xsaW5nRW5hYmxlZD10cnVlIF0gLS0+CisKKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vcmVzb3VyY2VzL292ZXJzY3JvbGwtYmVoYXZpb3Itc3VwcG9ydC5qcyI+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
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvcmVzb3Vy
Y2VzL292ZXJzY3JvbGwtYmVoYXZpb3Itc3VwcG9ydC5qcyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Ny
b2xsaW5nL3Jlc291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXN1cHBvcnQuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uY2JkMjIyZTkwYjUyYTE5MzBiN2ZjZmU0NDIzZTk0NTgzYzA0NjAwZQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3Jlc291cmNlcy9vdmVyc2Nyb2xsLWJl
aGF2aW9yLXN1cHBvcnQuanMKQEAgLTAsMCArMSwzOSBAQAorZnVuY3Rpb24gZ2V0RGVsdGFzKGRp
cmVjdGlvbikgeworICAgIHZhciBkZWx0YVggPSAwOworICAgIHZhciBkZWx0YVkgPSAwOworICAg
IGlmIChkaXJlY3Rpb24gPT0gImRvd24iKQorICAgICAgICBkZWx0YVkgPSAtNQorICAgIGVsc2Ug
aWYgKGRpcmVjdGlvbiA9PSAidXAiKQorICAgICAgICBkZWx0YVkgPSA1OworICAgIGVsc2UgaWYg
KGRpcmVjdGlvbiA9PSAicmlnaHQiKQorICAgICAgICBkZWx0YVggPSAtNTsKKyAgICBlbHNlIGlm
IChkaXJlY3Rpb24gPT0gImxlZnQiKQorICAgICAgICBkZWx0YVggPSA1OworICAgIHJldHVybiB7
CisgICAgICAgIFg6IGRlbHRhWCwKKyAgICAgICAgWTogZGVsdGFZCisgICAgfTsKK30KKworYXN5
bmMgZnVuY3Rpb24gbW91c2VXaGVlbFNjcm9sbEFuZFdhaXQoeCwgeSwgYmVnaW5YLCBiZWdpblks
IGRlbHRhWCwgZGVsdGFZKQoreworICAgIGlmIChiZWdpblggPT09IHVuZGVmaW5lZCkKKyAgICAg
ICAgYmVnaW5YID0gMDsKKyAgICBpZiAoYmVnaW5ZID09PSB1bmRlZmluZWQpCisgICAgICAgIGJl
Z2luWSA9IC0xOworICAgIGlmIChkZWx0YVggPT09IHVuZGVmaW5lZCkKKyAgICAgICAgZGVsdGFY
ID0gMDsKKyAgICBpZiAoZGVsdGFZID09PSB1bmRlZmluZWQpCisgICAgICAgIGRlbHRhWSA9IC0x
MDsKKworICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhiZWdpblgsIGJlZ2luWSwgImJlZ2FuIiwgIm5vbmUiKTsK
KyAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZGVsdGFYLCBkZWx0YVksICJjaGFuZ2VkIiwgIm5vbmUiKTsKKyAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgImVuZGVkIiwgIm5vbmUi
KTsKKyAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgICAgIHNldFRpbWVv
dXQoKCkgPT4geworICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHJlc29sdmUpOwor
ICAgICAgICB9LCA1MDApOworICAgIH0pOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449713</attachid>
            <date>2022-01-21 17:09:23 -0800</date>
            <delta_ts>2022-01-21 19:31:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220139-20220121170922.patch</filename>
            <type>text/plain</type>
            <size>35016</size>
            <attacher name="Nikos Mouchtaris">nmouchtaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MzUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGJiNmQyZjJmYmNkN2I3
ODU1MzIxY2U1YjgwMWQ1YzJmYWNiMzhmNC4uODBhYWE0YzRhYWIwNzIyNjM2NGFhM2M1ZTE0YzA2
YTQ4ZDNiNjNmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDIxLTEyLTAxICBOaWtv
bGFvcyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxl
bWVudCBDU1Mgb3ZlcnNjcm9sbC1iZWhhdmlvciBmb3IgYXN5bmNocm9ub3VzIHNjcm9sbCBvbiBN
YWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDEz
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNwbGl0
IHVwIHBhdGNoIGJ5IENhdGhpZSBDaGVuIGFuZCBGcmVkZXJpYyBXYW5nLiBBZGQgZnVuY3Rpb24g
Zm9yIGJsb2NraW5nIHNjcm9sbCBjaGFpbmluZworICAgICAgICBhbmQgZmlsdGVyaW5nIHNjcm9s
bCBkZWx0YSBkZXBlbmRpbmcgb24gdGhlIHZhbHVlcyBvZiBvdmVyc2Nyb2xsIGJlaGF2aW9yIGZv
ciBhIHNjcm9sbGluZworICAgICAgICBub2RlLiBUaGlzIHBhdGNoIGlzIGZvciBhc3luY2hyb25v
dXMgc2Nyb2xsaW5nIG9ubHkuCisKKyAgICAgICAgVGVzdHM6IGZhc3Qvc2Nyb2xsaW5nL21hYy9h
c3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQuaHRtbAorICAgICAgICAgICAgICAgZmFz
dC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0bWwKKyAg
ICAgICAgICAgICAgIGZhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9y
LXVuc2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvc2Nyb2xsaW5n
L21hYy9hc3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUuaHRtbAor
CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxpbmdUcmVlOjpzaG91bGRCbG9ja1Njcm9sbENoYWluaW5nV2l0aE5vZGUp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZTo6aGFuZGxlV2hlZWxFdmVudFdpdGhO
b2RlKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmg6CisgICAgICAg
ICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaDoKKyAgICAgICAg
KiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdh
dGVNYWM6OmFsbG93c0hvcml6b250YWxTdHJldGNoaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OmFsbG93c1ZlcnRpY2Fs
U3RyZXRjaGluZyBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9z
aXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWNvbXBvc2l0ZUNoYW5nZVJlcXVpcmVzR2Vv
bWV0cnlVcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpy
b290T3JCb2R5U3R5bGVDaGFuZ2VkKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmNoYW5nZVJlcXVpcmVz
UmVjb21wb3NpdGVMYXllciBjb25zdCk6CisKIDIwMjEtMTEtMzAgIFNpbW9uIEZyYXNlciAgPHNp
bW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUGFzcyB0aGUgdGltZXN0YW1wIGZvciBz
Y3JvbGxpbmcgdGhyZWFkIGFuaW1hdGlvbnMgdGhyb3VnaCBhbGwgdGhlIHNlcnZpY2VTY3JvbGxB
bmltYXRpb24oKSBjYWxscwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAppbmRleCBkOTRmZjEzMDZiNzll
MjhmYjY4OTkwMDY5NzcwOGFiMjhkYmNmNTJkLi44MmY3NTdhMjdiM2IwNzI0MDA2ZDcyYTUzODJl
MzRmYTRjYTk0NjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9B
c3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcApAQCAtNzg3LDggKzc4Nyw4IEBA
IHZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0U2Nyb2xsaW5nTm9kZVNjcm9sbGFi
bGVBcmVhR2VvbWV0cnkoU2Nyb2xsaW5nCiAgICAgc2Nyb2xsaW5nTm9kZS5zZXRTY3JvbGxhYmxl
QXJlYVNpemUoc2Nyb2xsYWJsZUFyZWEudmlzaWJsZVNpemUoKSk7CiAKICAgICBTY3JvbGxhYmxl
QXJlYVBhcmFtZXRlcnMgc2Nyb2xsUGFyYW1ldGVyczsKLSAgICBzY3JvbGxQYXJhbWV0ZXJzLmhv
cml6b250YWxTY3JvbGxFbGFzdGljaXR5ID0gc2Nyb2xsYWJsZUFyZWEuaG9yaXpvbnRhbFNjcm9s
bEVsYXN0aWNpdHkoKTsKLSAgICBzY3JvbGxQYXJhbWV0ZXJzLnZlcnRpY2FsU2Nyb2xsRWxhc3Rp
Y2l0eSA9IHNjcm9sbGFibGVBcmVhLnZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eSgpOworICAgIHNj
cm9sbFBhcmFtZXRlcnMuaG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkgPSBzY3JvbGxhYmxlQXJl
YS5ob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgPT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpO
b25lID8gU2Nyb2xsRWxhc3RpY2l0eTo6Tm9uZSA6IHNjcm9sbGFibGVBcmVhLmhvcml6b250YWxT
Y3JvbGxFbGFzdGljaXR5KCk7CisgICAgc2Nyb2xsUGFyYW1ldGVycy52ZXJ0aWNhbFNjcm9sbEVs
YXN0aWNpdHkgPSBzY3JvbGxhYmxlQXJlYS52ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpID09
IE92ZXJzY3JvbGxCZWhhdmlvcjo6Tm9uZSA/IFNjcm9sbEVsYXN0aWNpdHk6Ok5vbmUgOiBzY3Jv
bGxhYmxlQXJlYS52ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkoKTsKICAgICBzY3JvbGxQYXJhbWV0
ZXJzLmFsbG93c0hvcml6b250YWxTY3JvbGxpbmcgPSBzY3JvbGxhYmxlQXJlYS5hbGxvd3NIb3Jp
em9udGFsU2Nyb2xsaW5nKCk7CiAgICAgc2Nyb2xsUGFyYW1ldGVycy5hbGxvd3NWZXJ0aWNhbFNj
cm9sbGluZyA9IHNjcm9sbGFibGVBcmVhLmFsbG93c1ZlcnRpY2FsU2Nyb2xsaW5nKCk7CiAgICAg
c2Nyb2xsUGFyYW1ldGVycy5ob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yID0gc2Nyb2xsYWJs
ZUFyZWEuaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcAppbmRleCAyZGU2NWMyMmY5YjdmOTQw
ZTFlYmNmZmJjNDVlY2Q2MDZhNDk5Yzg0Li4xNWI2YjYyZWEyYTU1M2U4YzE0NWZkM2FhN2ZkZWVh
YzU3MzYyNDFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdUcmVlLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNp
bmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1XaGVlbEV2ZW50LmgiCisjaW5j
bHVkZSAiU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTY3JvbGxpbmdT
dGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZS5oIgogI2luY2x1ZGUgIlNjcm9sbGluZ1N0YXRlVHJlZS5o
IgogI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUuaCIKQEAgLTIwMSwx
MCArMjAyLDExIEBAIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdCBTY3JvbGxpbmdUcmVlOjpoYW5k
bGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVuCiAKIFdoZWVsRXZlbnRIYW5kbGlu
Z1Jlc3VsdCBTY3JvbGxpbmdUcmVlOjpoYW5kbGVXaGVlbEV2ZW50V2l0aE5vZGUoY29uc3QgUGxh
dGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBPcHRpb25TZXQ8V2hlZWxFdmVudFByb2Nlc3Np
bmdTdGVwcz4gcHJvY2Vzc2luZ1N0ZXBzLCBTY3JvbGxpbmdUcmVlTm9kZSogbm9kZSwgRXZlbnRU
YXJnZXRpbmcgZXZlbnRUYXJnZXRpbmcpCiB7CisgICAgUGxhdGZvcm1XaGVlbEV2ZW50IGFkanVz
dGVkV2hlZWxFdmVudCA9IFBsYXRmb3JtV2hlZWxFdmVudCh3aGVlbEV2ZW50KTsKICAgICB3aGls
ZSAobm9kZSkgewogICAgICAgICBpZiAoaXM8U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU+KCpu
b2RlKSkgewogICAgICAgICAgICAgYXV0byYgc2Nyb2xsaW5nTm9kZSA9IGRvd25jYXN0PFNjcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlPigqbm9kZSk7Ci0gICAgICAgICAgICBhdXRvIHJlc3VsdCA9
IHNjcm9sbGluZ05vZGUuaGFuZGxlV2hlZWxFdmVudCh3aGVlbEV2ZW50LCBldmVudFRhcmdldGlu
Zyk7CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IHNjcm9sbGluZ05vZGUuaGFuZGxlV2hlZWxF
dmVudChhZGp1c3RlZFdoZWVsRXZlbnQsIGV2ZW50VGFyZ2V0aW5nKTsKIAogICAgICAgICAgICAg
aWYgKHJlc3VsdC53YXNIYW5kbGVkKSB7CiAgICAgICAgICAgICAgICAgbV9sYXRjaGluZ0NvbnRy
b2xsZXIubm9kZURpZEhhbmRsZUV2ZW50KHNjcm9sbGluZ05vZGUuc2Nyb2xsaW5nTm9kZUlEKCks
IHByb2Nlc3NpbmdTdGVwcywgd2hlZWxFdmVudCwgbV9hbGxvd0xhdGNoaW5nKTsKQEAgLTIxNCw2
ICsyMTYsMTYgQEAgV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0IFNjcm9sbGluZ1RyZWU6OmhhbmRs
ZVdoZWVsRXZlbnRXaXRoTm9kZShjb25zdCBQbGF0Zm9ybVcKIAogICAgICAgICAgICAgaWYgKHJl
c3VsdC5uZWVkc01haW5UaHJlYWRQcm9jZXNzaW5nKCkgfHwgZXZlbnRUYXJnZXRpbmcgIT0gRXZl
bnRUYXJnZXRpbmc6OlByb3BhZ2F0ZSkKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgICAgICAgICAgCisgICAgICAgICAgICBib29sIGhhbmRsZWQgPSBmYWxzZTsKKyAgICAgICAg
ICAgIGlmIChzY3JvbGxpbmdOb2RlLnNob3VsZEJsb2NrU2Nyb2xsUHJvcGFnYXRpb24oYWRqdXN0
ZWRXaGVlbEV2ZW50LCBoYW5kbGVkKSkgeworICAgICAgICAgICAgICAgIGlmICghaGFuZGxlZCkK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdDo6dW5o
YW5kbGVkKCk7CisKKyAgICAgICAgICAgICAgICBtX2xhdGNoaW5nQ29udHJvbGxlci5ub2RlRGlk
SGFuZGxlRXZlbnQoc2Nyb2xsaW5nTm9kZS5zY3JvbGxpbmdOb2RlSUQoKSwgcHJvY2Vzc2luZ1N0
ZXBzLCB3aGVlbEV2ZW50LCBtX2FsbG93TGF0Y2hpbmcpOworICAgICAgICAgICAgICAgIG1fZ2Vz
dHVyZVN0YXRlLm5vZGVEaWRIYW5kbGVFdmVudChzY3JvbGxpbmdOb2RlLnNjcm9sbGluZ05vZGVJ
RCgpLCB3aGVlbEV2ZW50KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gV2hlZWxFdmVudEhhbmRs
aW5nUmVzdWx0OjpoYW5kbGVkKCk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAg
ICBpZiAoaXM8U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsUHJveHlOb2RlPigqbm9kZSkpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlLmNwcAppbmRleCA0ZDdjNTBmYjZjMTcxNzE5YWI4NDNhZTk2MDk0
YjBiMzMxYjVhNjFkLi4yOGJlMTFkMDRlZWRkYWI2Njc1MzhjM2IzMzEwMzJlMWEwMjU4YTIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwCkBAIC0xMjEsNiArMTIxLDE4IEBAIGJvb2wgU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGU6OmlzTGF0Y2hlZE5vZGUoKSBjb25zdAogICAgIHJldHVybiBz
Y3JvbGxpbmdUcmVlKCkubGF0Y2hlZE5vZGVJRCgpID09IHNjcm9sbGluZ05vZGVJRCgpOwogfQog
Citib29sIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjpzaG91bGRSdWJiZXJCYW5kKGNvbnN0
IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgRXZlbnRUYXJnZXRpbmcgZXZlbnRUYXJn
ZXRpbmcpIGNvbnN0Cit7CisgICAgYm9vbCBoYW5kbGVkID0gZmFsc2U7CisgICAgUGxhdGZvcm1X
aGVlbEV2ZW50IGFkanVzdGVkV2hlZWxFdmVudCA9IFBsYXRmb3JtV2hlZWxFdmVudCh3aGVlbEV2
ZW50KTsKKyAgICAvLyBXZSBhbHdheXMgcnViYmVyLWJhbmQgdGhlIGxhdGNoZWQgbm9kZSwgb3Ig
dGhlIHJvb3Qgbm9kZS4KKyAgICAvLyBUaGUgc3RhdGVsZXNzIHdoZWVsIGV2ZW50IGRvZXNuJ3Qg
dHJpZ2dlciBydWJiZXItYmFuZC4KKyAgICBpZiAoaXNMYXRjaGVkTm9kZSgpIHx8IGV2ZW50VGFy
Z2V0aW5nID09IEV2ZW50VGFyZ2V0aW5nOjpOb2RlT25seSB8fCAoaXNSb290Tm9kZSgpICYmICF3
aGVlbEV2ZW50LmlzTm9uR2VzdHVyZUV2ZW50KCkpIHx8IChzaG91bGRCbG9ja1Njcm9sbFByb3Bh
Z2F0aW9uKGFkanVzdGVkV2hlZWxFdmVudCwgaGFuZGxlZCkgJiYgb3ZlcnNjcm9sbEJlaGF2aW9y
QWxsb3dSdWJiZXJCYW5kKCkpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gZmFs
c2U7CisgICAgCit9CisKIGJvb2wgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OmNhbkhhbmRs
ZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBFdmVudFRh
cmdldGluZyBldmVudFRhcmdldGluZykgY29uc3QKIHsKICAgICBpZiAoIWNhbkhhdmVTY3JvbGxi
YXJzKCkpCkBAIC0xMzAsOSArMTQyLDcgQEAgYm9vbCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZTo6Y2FuSGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHcKICAgICBp
ZiAod2hlZWxFdmVudC5waGFzZSgpID09IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlOjpNYXlCZWdp
bikKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICAvLyBXZSBhbHdheXMgcnViYmVyLWJhbmQg
dGhlIGxhdGNoZWQgbm9kZSwgb3IgdGhlIHJvb3Qgbm9kZS4KLSAgICAvLyBUaGUgc3RhdGVsZXNz
IHdoZWVsIGV2ZW50IGRvZXNuJ3QgdHJpZ2dlciBydWJiZXItYmFuZC4KLSAgICBpZiAoaXNMYXRj
aGVkTm9kZSgpIHx8IGV2ZW50VGFyZ2V0aW5nID09IEV2ZW50VGFyZ2V0aW5nOjpOb2RlT25seSB8
fCAoaXNSb290Tm9kZSgpICYmICF3aGVlbEV2ZW50LmlzTm9uR2VzdHVyZUV2ZW50KCkpKQorICAg
IGlmIChzaG91bGRSdWJiZXJCYW5kKHdoZWVsRXZlbnQsIGV2ZW50VGFyZ2V0aW5nKSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKICAgICByZXR1cm4gZXZlbnRDYW5TY3JvbGxDb250ZW50cyh3aGVl
bEV2ZW50KTsKQEAgLTM5Miw2ICs0MDIsMzAgQEAgdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZTo6c2V0Q3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgoc3RkOjpvcHRpb25hbDwKICAg
ICBtX2N1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4ID0gaW5kZXg7CiB9CiAKK2Jvb2wgU2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OnNob3VsZEJsb2NrU2Nyb2xsUHJvcGFnYXRpb24oUGxh
dGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBib29sJiBoYW5kbGVkKSBjb25zdAoreworICAg
IEZsb2F0U2l6ZSBmaWx0ZXJlZERlbHRhKHdoZWVsRXZlbnQuZGVsdGFYKCksIHdoZWVsRXZlbnQu
ZGVsdGFZKCkpOworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBhdXRvIGJpYXNlZERlbHRhID0gU2Ny
b2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OndoZWVsRGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRpY2Fs
KHdoZWVsRXZlbnQpOworI2Vsc2UKKyAgICBhdXRvIGJpYXNlZERlbHRhID0gd2hlZWxFdmVudC5k
ZWx0YSgpOworI2VuZGlmCisgICAgaWYgKGhhc0hvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3Io
KSB8fCBoYXNWZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpKSB7CisgICAgICAgIGlmIChoYXNI
b3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgJiYgIWJpYXNlZERlbHRhLmhlaWdodCgpICYm
IGJpYXNlZERlbHRhLndpZHRoKCkpIHsKKyAgICAgICAgICAgIGhhbmRsZWQgPSBmYWxzZTsKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIGlmICgoaGFzSG9yaXpv
bnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpICYmIGhhc1ZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9y
KCkpIHx8IChoYXNIb3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgJiYgIWJpYXNlZERlbHRh
LmhlaWdodCgpKSB8fCAoaGFzVmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSAmJiAhYmlhc2Vk
RGVsdGEud2lkdGgoKSkpIHsKKyAgICAgICAgICAgIGhhbmRsZWQgPSB0cnVlOworICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgZmlsdGVyZWREZWx0YS5zZXRXaWR0
aChoYXNIb3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgfHwgKGhhc1ZlcnRpY2FsT3ZlcnNj
cm9sbEJlaGF2aW9yKCkgJiYgIWJpYXNlZERlbHRhLndpZHRoKCkpID8gMCA6IGZpbHRlcmVkRGVs
dGEud2lkdGgoKSk7CisgICAgICAgIGZpbHRlcmVkRGVsdGEuc2V0SGVpZ2h0KGhhc1ZlcnRpY2Fs
T3ZlcnNjcm9sbEJlaGF2aW9yKCkgfHwgKGhhc0hvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3Io
KSAmJiAhYmlhc2VkRGVsdGEuaGVpZ2h0KCkpID8gMCA6IGZpbHRlcmVkRGVsdGEuaGVpZ2h0KCkp
OworICAgICAgICB3aGVlbEV2ZW50ID0gd2hlZWxFdmVudC5jb3B5V2l0aERlbHRhQW5kVmVsb2Np
dHkoZmlsdGVyZWREZWx0YSwgd2hlZWxFdmVudC5zY3JvbGxpbmdWZWxvY2l0eSgpKTsKKyAgICB9
CisgICAgcmV0dXJuIGZhbHNlOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRp
ZiAvLyBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmgKaW5kZXggYjlm
NTQzMDcwMTZlMjA4ZDRhNmM1ZjBiM2UxMzFkOTk3NWQ4ZTY1NS4uOTU5ZGNkNjRkZmI1ZTNkYWE1
OTY0YjdkYTdjMjUyZDYzMDMwZGIyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oCkBAIC0xNTksNyAr
MTU5LDE0IEBAIHByb3RlY3RlZDoKIAogICAgIGJvb2wgYWxsb3dzSG9yaXpvbnRhbFNjcm9sbGlu
ZygpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzLmFsbG93c0hvcml6
b250YWxTY3JvbGxpbmc7IH0KICAgICBib29sIGFsbG93c1ZlcnRpY2FsU2Nyb2xsaW5nKCkgY29u
c3QgeyByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMuYWxsb3dzVmVydGljYWxTY3Jv
bGxpbmc7IH0KLQorICAgIAorICAgIE92ZXJzY3JvbGxCZWhhdmlvciBob3Jpem9udGFsT3ZlcnNj
cm9sbEJlaGF2aW9yKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMu
aG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcjsgfQorICAgIE92ZXJzY3JvbGxCZWhhdmlvciB2
ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsYWJsZUFy
ZWFQYXJhbWV0ZXJzLnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yOyB9CisgICAgYm9vbCBoYXNI
b3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxhYmxl
QXJlYVBhcmFtZXRlcnMuaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvciAhPSBPdmVyc2Nyb2xs
QmVoYXZpb3I6OkF1dG87IH0KKyAgICBib29sIGhhc1ZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9y
KCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMudmVydGljYWxPdmVy
c2Nyb2xsQmVoYXZpb3IgIT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpBdXRvOyB9CisgICAgYm9vbCBz
aG91bGRCbG9ja1Njcm9sbFByb3BhZ2F0aW9uKFBsYXRmb3JtV2hlZWxFdmVudCYsIGJvb2wmKSBj
b25zdDsKKyAgICBib29sIG92ZXJzY3JvbGxCZWhhdmlvckFsbG93UnViYmVyQmFuZCgpIGNvbnN0
IHsgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzLmhvcml6b250YWxPdmVyc2Nyb2xs
QmVoYXZpb3IgIT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpOb25lIHx8ICBtX3Njcm9sbGFibGVBcmVh
UGFyYW1ldGVycy52ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvciAhPSBPdmVyc2Nyb2xsQmVoYXZp
b3I6Ok5vbmU7IH0KKyAgICBib29sIHNob3VsZFJ1YmJlckJhbmQoY29uc3QgUGxhdGZvcm1XaGVl
bEV2ZW50JiwgRXZlbnRUYXJnZXRpbmcpIGNvbnN0OwogICAgIHZvaWQgZHVtcFByb3BlcnRpZXMo
V1RGOjpUZXh0U3RyZWFtJiwgT3B0aW9uU2V0PFNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dEJlaGF2
aW9yPikgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCmluZGV4IGJmMGJmZGUwYzU5Njhm
MWJhM2MwMTQyNmQ5YjNkZDc3MzExMmRhNGMuLjU1Y2FjNWQ4ZDE2OGU5NzAwZTUwYmQ3YjJjNzE4
MThmOTk3NDhkYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckNvbXBvc2l0b3IuY3BwCkBAIC0xNjUyLDcgKzE2NTIsOSBAQCBzdGF0aWMgYm9vbCByZWNv
bXBvc2l0ZUNoYW5nZVJlcXVpcmVzR2VvbWV0cnlVcGRhdGUoY29uc3QgUmVuZGVyU3R5bGUmIG9s
ZFN0eWxlLAogICAgICAgICB8fCBvbGRTdHlsZS5vZmZzZXRQb3NpdGlvbigpICE9IG5ld1N0eWxl
Lm9mZnNldFBvc2l0aW9uKCkKICAgICAgICAgfHwgb2xkU3R5bGUub2Zmc2V0RGlzdGFuY2UoKSAh
PSBuZXdTdHlsZS5vZmZzZXREaXN0YW5jZSgpCiAgICAgICAgIHx8IG9sZFN0eWxlLm9mZnNldFJv
dGF0ZSgpICE9IG5ld1N0eWxlLm9mZnNldFJvdGF0ZSgpCi0gICAgICAgIHx8ICFhcmVQb2ludGlu
Z1RvRXF1YWxEYXRhKG9sZFN0eWxlLmNsaXBQYXRoKCksIG5ld1N0eWxlLmNsaXBQYXRoKCkpOwor
ICAgICAgICB8fCAhYXJlUG9pbnRpbmdUb0VxdWFsRGF0YShvbGRTdHlsZS5jbGlwUGF0aCgpLCBu
ZXdTdHlsZS5jbGlwUGF0aCgpKQorICAgICAgICB8fCBvbGRTdHlsZS5vdmVyc2Nyb2xsQmVoYXZp
b3JYKCkgIT0gbmV3U3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWCgpCisgICAgICAgIHx8IG9sZFN0
eWxlLm92ZXJzY3JvbGxCZWhhdmlvclkoKSAhPSBuZXdTdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JZ
KCk7CiB9CiAKIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpsYXllclN0eWxlQ2hhbmdlZChT
dHlsZURpZmZlcmVuY2UgZGlmZiwgUmVuZGVyTGF5ZXImIGxheWVyLCBjb25zdCBSZW5kZXJTdHls
ZSogb2xkU3R5bGUpCkBAIC0zOTQ1LDYgKzM5NDcsMTEgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBv
c2l0b3I6OnJvb3RPckJvZHlTdHlsZUNoYW5nZWQoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNv
bnMKICAgICBib29sIGhhZEZpeGVkQmFja2dyb3VuZCA9IG9sZFN0eWxlICYmIG9sZFN0eWxlLT5o
YXNFbnRpcmVseUZpeGVkQmFja2dyb3VuZCgpOwogICAgIGlmIChoYWRGaXhlZEJhY2tncm91bmQg
IT0gcmVuZGVyZXIuc3R5bGUoKS5oYXNFbnRpcmVseUZpeGVkQmFja2dyb3VuZCgpKQogICAgICAg
ICByb290TGF5ZXJDb25maWd1cmF0aW9uQ2hhbmdlZCgpOworICAgIAorICAgIGlmIChvbGRTdHls
ZSAmJiAob2xkU3R5bGUtPm92ZXJzY3JvbGxCZWhhdmlvclgoKSAhPSByZW5kZXJlci5zdHlsZSgp
Lm92ZXJzY3JvbGxCZWhhdmlvclgoKSB8fCBvbGRTdHlsZS0+b3ZlcnNjcm9sbEJlaGF2aW9yWSgp
ICE9IHJlbmRlcmVyLnN0eWxlKCkub3ZlcnNjcm9sbEJlaGF2aW9yWSgpKSkgeworICAgICAgICBp
ZiAoYXV0byogbGF5ZXIgPSBtX3JlbmRlclZpZXcubGF5ZXIoKSkKKyAgICAgICAgICAgIGxheWVy
LT5zZXROZWVkc0NvbXBvc2l0aW5nR2VvbWV0cnlVcGRhdGUoKTsKKyAgICB9CiB9CiAKIHZvaWQg
UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyb290QmFja2dyb3VuZENvbG9yT3JUcmFuc3BhcmVuY3lD
aGFuZ2VkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5k
ZXJTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
Y3BwCmluZGV4IDZiMzYzOGQxYThmMGUxZTY3NGEzNWZlOWNmMmUzY2I1ZWY2YjhkMGEuLjZlZDYy
Nzg4MjIxODY5ZmZhY2FmNjQ0MGM3YTQ0NGUyOTdkOTNhZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcApAQCAtMTE5Niw3ICsxMTk2LDkgQEAg
Ym9vbCBSZW5kZXJTdHlsZTo6Y2hhbmdlUmVxdWlyZXNSZWNvbXBvc2l0ZUxheWVyKGNvbnN0IFJl
bmRlclN0eWxlJiBvdGhlciwgT3B0aW8KICAgICAgICAgICAgIHx8IG1fcmFyZU5vbkluaGVyaXRl
ZERhdGEtPmJhY2tmYWNlVmlzaWJpbGl0eSAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRh
LT5iYWNrZmFjZVZpc2liaWxpdHkKICAgICAgICAgICAgIHx8IG1fcmFyZU5vbkluaGVyaXRlZERh
dGEtPnBlcnNwZWN0aXZlICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnBlcnNwZWN0
aXZlCiAgICAgICAgICAgICB8fCBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5wZXJzcGVjdGl2ZU9y
aWdpblggIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+cGVyc3BlY3RpdmVPcmlnaW5Y
Ci0gICAgICAgICAgICB8fCBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5wZXJzcGVjdGl2ZU9yaWdp
blkgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+cGVyc3BlY3RpdmVPcmlnaW5ZKQor
ICAgICAgICAgICAgfHwgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+cGVyc3BlY3RpdmVPcmlnaW5Z
ICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnBlcnNwZWN0aXZlT3JpZ2luWQorICAg
ICAgICAgICAgfHwgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+b3ZlcnNjcm9sbEJlaGF2aW9yWCAh
PSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5vdmVyc2Nyb2xsQmVoYXZpb3JYCisgICAg
ICAgICAgICB8fCBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5vdmVyc2Nyb2xsQmVoYXZpb3JZICE9
IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm92ZXJzY3JvbGxCZWhhdmlvclkpCiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5YjA2M2Q0NjEwOGJlZWNiNzlh
MjJkYzhlMWE4M2QzOWFjNzNlMjJiLi5lNTUyMWI3NjY0Y2I1MzFjNDAzMDRkNGYzYTc4OGIzNDE5
ZTZhOGI4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMjEtMTItMDEgIE5pa29sYW9zIE1vdWNo
dGFyaXMgIDxubW91Y2h0YXJpc0BhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IENTUyBv
dmVyc2Nyb2xsLWJlaGF2aW9yIGZvciBhc3luY2hyb25vdXMgc2Nyb2xsIG9uIE1hYworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwMTM5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L3Njcm9sbGlu
Zy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50LWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZp
b3ItZWxlbWVudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9tYWMvYXN5
bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3Jv
bGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNj
cm9sbGFibGUtZWxlbWVudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9t
YWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3Jv
bGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L3Njcm9sbGluZy9yZXNvdXJjZXMvb3ZlcnNjcm9sbC1iZWhhdmlvci1zdXBwb3J0LmpzOiBB
ZGRlZC4KKyAgICAgICAgKGdldERlbHRhcyk6CisgICAgICAgIChhc3luYyBtb3VzZVdoZWVsU2Ny
b2xsQW5kV2FpdCk6CisKIDIwMjEtMTEtMzAgIFJvYmVydCBKZW5uZXIgIDxKZW5uZXJAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJFQkFTRUxJTkUgWyBNb250ZXJleSBdZmFzdC9jc3MvY29udGludWF0
aW9uQ3Jhc2guaHRtbCAobGF5b3V0LXRlc3QpIGlzIGEgY29uc3RhbnQgdGV4dCBmYWlsdXJlCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9s
bC1iZWhhdmlvci1lbGVtZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xs
aW5nL21hYy9hc3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjI3MTUwZmY2MGI1ZGJkZDBiNGE3YWM2ZjgzZmI1NmY1N2NkMmNkODIKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNj
cm9sbC1iZWhhdmlvci1lbGVtZW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIwIEBACisKK1BB
U1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlv
cjogYXV0byBhdXRvLgorUEFTUyBFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3Zl
cnNjcm9sbC1iZWhhdmlvcjogYXV0byBhdXRvLgorUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Ny
b2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGF1dG8uCitQQVNTIEVs
ZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250
YWluIGF1dG8uCitQQVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJz
Y3JvbGwtYmVoYXZpb3I6IG5vbmUgYXV0by4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwg
dGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgYXV0by4KK1BBU1MgRWxlbWVudCBo
b3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBjb250
YWluLgorUEFTUyBFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1i
ZWhhdmlvcjogYXV0byBjb250YWluLgorUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRl
c3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGNvbnRhaW4uCitQQVNTIEVsZW1l
bnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWlu
IGNvbnRhaW4uCitQQVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJz
Y3JvbGwtYmVoYXZpb3I6IG5vbmUgY29udGFpbi4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3Jv
bGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgY29udGFpbi4KK1BBU1MgRWxl
bWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0
byBub25lLgorUEFTUyBFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9s
bC1iZWhhdmlvcjogYXV0byBub25lLgorUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRl
c3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIG5vbmUuCitQQVNTIEVsZW1lbnQg
dmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIG5v
bmUuCitQQVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwt
YmVoYXZpb3I6IG5vbmUgbm9uZS4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3
aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgbm9uZS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVu
dC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwt
YmVoYXZpb3ItZWxlbWVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MTM3YjljYjc3OWE5MTY3ZGIyMjUx
ZDMwNjdlNDYzZWFjOTQ2MzcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Nj
cm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50Lmh0bWwKQEAgLTAs
MCArMSw4NiBAQAorPCFkb2N0eXBlIGh0bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgQXN5
bmNPdmVyZmxvd1Njcm9sbGluZ0VuYWJsZWQ9dHJ1ZSBBc3luY0ZyYW1lU2Nyb2xsaW5nRW5hYmxl
ZD10cnVlIF0gLS0+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5l
c3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9vdmVyc2Ny
b2xsLWJlaGF2aW9yLXN1cHBvcnQuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJoZWxwIiBocmVm
PSJodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLW92ZXJzY3JvbGwtYmVoYXZpb3IiPgorPHN0
eWxlPgorICAgIC5zY3JvbGxpbmcgeworICAgICAgICBvdmVyZmxvdzogc2Nyb2xsOworICAgIH0K
KyAgICAuc2Nyb2xsQ29udGVudCB7CisgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgaGVp
Z2h0OiAzMDBweDsKKyAgICB9CisgICAgI3Jvb3QgeworICAgICAgICB3aWR0aDogMjAwcHg7Cisg
ICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgfQorICAgICNzY3JvbGxlciB7CisgICAgICAgIHdp
ZHRoOiAxMDBweDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICB9Cis8L3N0eWxlPgorPGRp
diBpZD0ncm9vdCcgY2xhc3M9InNjcm9sbGluZyI+CisgICAgPGRpdiBpZD0nc2Nyb2xsZXInIGNs
YXNzPSJzY3JvbGxpbmciPgorICAgICAgICA8ZGl2IGNsYXNzPSJzY3JvbGxDb250ZW50Ij48L2Rp
dj4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJzY3JvbGxDb250ZW50Ij48L2Rpdj4KKzwv
ZGl2PgorCis8c2NyaXB0PgorY29uc3Qgcm9vdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdy
b290Jyk7Citjb25zdCBzY3JvbGxlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY3JvbGxl
cicpOwordmFyIG92ZXJzY3JvbGxEYXRhcyA9IFtbImF1dG8iLCAiYXV0byIsIHRydWUsIHRydWVd
LAorICAgICAgICAgICAgICAgICAgICAgICAgWyJjb250YWluIiwgImF1dG8iLCBmYWxzZSwgdHJ1
ZV0sCisgICAgICAgICAgICAgICAgICAgICAgICBbIm5vbmUiLCAiYXV0byIsIGZhbHNlLCB0cnVl
XSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFsiYXV0byIsICJjb250YWluIiwgdHJ1ZSwgZmFs
c2VdLAorICAgICAgICAgICAgICAgICAgICAgICAgWyJjb250YWluIiwgImNvbnRhaW4iLCBmYWxz
ZSwgZmFsc2VdLAorICAgICAgICAgICAgICAgICAgICAgICAgWyJub25lIiwgImNvbnRhaW4iLCBm
YWxzZSwgZmFsc2VdLAorICAgICAgICAgICAgICAgICAgICAgICAgWyJhdXRvIiwgIm5vbmUiLCB0
cnVlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAgICBbImNvbnRhaW4iLCAibm9uZSIs
IGZhbHNlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAgICBbIm5vbmUiLCAibm9uZSIs
IGZhbHNlLCBmYWxzZV1dOworCitmdW5jdGlvbiByZXNldFRlc3QoKSB7CisgICAgLy8gVHJ5IHZh
cmlvdXMgbWV0aG9kcyB0byBlbnN1cmUgdGhlIGVsZW1lbnQgcG9zaXRpb24gaXMgcmVzZXQgaW1t
ZWRpYXRlbHkuCisgICAgc2Nyb2xsZXIuc2Nyb2xsTGVmdCA9IDMwMDsKKyAgICBzY3JvbGxlci5z
Y3JvbGxUb3AgPSAzMDA7CisgICAgc2Nyb2xsZXIuc2Nyb2xsVG8oMzAwLCAzMDApOworCisgICAg
cm9vdC5zY3JvbGxMZWZ0ID0gMDsKKyAgICByb290LnNjcm9sbFRvcCA9IDA7CisgICAgcm9vdC5z
Y3JvbGxUbygwLCAwKTsKK30KKworZnVuY3Rpb24gc3RhcnRUZXN0KCkgeworICAgIG92ZXJzY3Jv
bGxEYXRhcy5mb3JFYWNoKChbb3ZlcnNjcm9sbFgsIG92ZXJzY3JvbGxZLCBwcm9wYWdhdGVYLCBw
cm9wYWdhdGVZXSkgPT4geworICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgICAgICAg
ICAgcmVzZXRUZXN0KCk7CisgICAgICAgICAgICBzY3JvbGxlci5zdHlsZS5vdmVyc2Nyb2xsQmVo
YXZpb3JYID0gb3ZlcnNjcm9sbFg7CisgICAgICAgICAgICBzY3JvbGxlci5zdHlsZS5vdmVyc2Ny
b2xsQmVoYXZpb3JZID0gb3ZlcnNjcm9sbFk7CisgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmNs
aWVudFdpZHRoOworCisgICAgICAgICAgICB2YXIgeCA9IHNjcm9sbGVyLmNsaWVudFdpZHRoIC8g
MjsKKyAgICAgICAgICAgIHZhciB5ID0gc2Nyb2xsZXIuY2xpZW50SGVpZ2h0IC8gMjsKKyAgICAg
ICAgICAgIHZhciBkZWx0YSA9IGdldERlbHRhcygicmlnaHQiKTsKKyAgICAgICAgICAgIHJldHVy
biBtb3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCh4LCB5LCBkZWx0YS5YLCBkZWx0YS5ZLCBkZWx0YS5Y
LCBkZWx0YS5ZKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJv
b3Quc2Nyb2xsTGVmdCA+IDAsIHByb3BhZ2F0ZVgsICdDb250aW51ZSB1cCB0aGUgaG9yaXpvbnRh
bCBzY3JvbGwgY2hhaW5pbmcnKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9LCAnRWxlbWVu
dCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogJyArIG92
ZXJzY3JvbGxYICsgJyAnICsgb3ZlcnNjcm9sbFkgKyAnLicpOworCisgICAgICAgIHByb21pc2Vf
dGVzdCgoKSA9PiB7CisgICAgICAgICAgICByZXNldFRlc3QoKTsKKyAgICAgICAgICAgIHNjcm9s
bGVyLnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclggPSBvdmVyc2Nyb2xsWDsKKyAgICAgICAgICAg
IHNjcm9sbGVyLnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclkgPSBvdmVyc2Nyb2xsWTsKKworICAg
ICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAgICAgICAgICB2
YXIgeSA9IHNjcm9sbGVyLmNsaWVudEhlaWdodCAvIDI7CisgICAgICAgICAgICB2YXIgZGVsdGEg
PSBnZXREZWx0YXMoImRvd24iKTsKKyAgICAgICAgICAgIHJldHVybiBtb3VzZVdoZWVsU2Nyb2xs
QW5kV2FpdCh4LCB5LCBkZWx0YS5YLCBkZWx0YS5ZLCBkZWx0YS5YLCBkZWx0YS5ZKS50aGVuKCgp
ID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsVG9wID4gMCwg
cHJvcGFnYXRlWSwgJ0NvbnRpbnVlIHVwIHRoZSB2ZXJ0aWNhbCBzY3JvbGwgY2hhaW5pbmcnKTsK
KyAgICAgICAgICAgIH0pOworICAgICAgICB9LCAnRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVz
dCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6ICcgKyBvdmVyc2Nyb2xsWCArICcgJyArIG92ZXJz
Y3JvbGxZICsgJy4nKTsKKyAgICB9KTsKK30KKworYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIHN0
YXJ0VGVzdCk7Cis8L3NjcmlwdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhh
dmlvci1pZnJhbWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFj
L2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li45MDBhMGI3ZDkwNWI4N2MxZGI3NjI2OTRmZDAwNjM4ZjE5NzY5NTM3Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVo
YXZpb3ItaWZyYW1lLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIxIEBACisKKworUEFTUyBJZnJh
bWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8g
YXV0by4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1i
ZWhhdmlvcjogYXV0byBhdXRvLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3
aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gYXV0by4KK1BBU1MgSWZyYW1lIHZlcnRp
Y2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBhdXRvLgor
UEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZp
b3I6IG5vbmUgYXV0by4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3Zl
cnNjcm9sbC1iZWhhdmlvcjogbm9uZSBhdXRvLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3Jv
bGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gY29udGFpbi4KK1BBU1MgSWZy
YW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBj
b250YWluLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3Jv
bGwtYmVoYXZpb3I6IGNvbnRhaW4gY29udGFpbi4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9s
bCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBjb250YWluLgorUEFTUyBJ
ZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5v
bmUgY29udGFpbi4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNj
cm9sbC1iZWhhdmlvcjogbm9uZSBjb250YWluLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3Jv
bGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gbm9uZS4KK1BBU1MgSWZyYW1l
IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBub25l
LgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVo
YXZpb3I6IGNvbnRhaW4gbm9uZS4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdp
dGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBub25lLgorUEFTUyBJZnJhbWUgaG9yaXpv
bnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgbm9uZS4KK1BB
U1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjog
bm9uZSBub25lLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMv
YXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
c2Nyb2xsaW5nL21hYy9hc3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjNmODcxMzY0Zjk1YmQ3N2Y2ZTRjZTliZWE0MjgzNTE0MGI0MGMxZjAKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9s
bC1iZWhhdmlvci1pZnJhbWUuaHRtbApAQCAtMCwwICsxLDg2IEBACis8IWRvY3R5cGUgaHRtbD4g
PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBBc3luY092ZXJmbG93U2Nyb2xsaW5nRW5hYmxlZD10
cnVlIEFzeW5jRnJhbWVTY3JvbGxpbmdFbmFibGVkPXRydWUgXSAtLT4KKworPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvb3ZlcnNjcm9sbC1iZWhhdmlvci1zdXBwb3J0LmpzIj48
L3NjcmlwdD4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3Jn
L2Nzcy1vdmVyc2Nyb2xsLWJlaGF2aW9yIj4KKzxzdHlsZT4KKyAgICAuc2Nyb2xsaW5nIHsKKyAg
ICAgICAgb3ZlcmZsb3c6IHNjcm9sbDsKKyAgICB9CisgICAgLnNjcm9sbENvbnRlbnQgeworICAg
ICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgIGJhY2tn
cm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJlZCwgYmx1ZSk7CisgICAgfQorICAgICNy
b290IHsKKyAgICAgICAgd2lkdGg6IDIwMHB4OworICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAg
IH0KKyAgICAjc2Nyb2xsZXIgeworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdo
dDogMTAwcHg7CisgICAgICAgIG92ZXJzY3JvbGwtYmVoYXZpb3IteTogYXV0bzsKKyAgICB9Cis8
L3N0eWxlPgorPGRpdiBpZD0ncm9vdCcgY2xhc3M9InNjcm9sbGluZyI+CisgICAgPGlmcmFtZSBp
ZD0nc2Nyb2xsZXInIHNyY2RvYz0iPGh0bWw+PGRpdiBzdHlsZT0nd2lkdGg6IDMwMHB4OyBoZWln
aHQ6IDMwMHB4Oyc+PC9kaXY+PC9odG1sPgorICAgICAgICAiPjwvaWZyYW1lPgorICAgIDxkaXYg
Y2xhc3M9InNjcm9sbENvbnRlbnQiPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+CisgICAgY29u
c3Qgcm9vdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyb290Jyk7CisgICAgY29uc3Qgc2Ny
b2xsZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2Nyb2xsZXInKTsKKyAgICB2YXIgb3Zl
cnNjcm9sbERhdGFzID0gW1siYXV0byIsICJhdXRvIiwgdHJ1ZSwgdHJ1ZV0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgWyJjb250YWluIiwgImF1dG8iLCBmYWxzZSwgdHJ1ZV0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgWyJub25lIiwgImF1dG8iLCBmYWxzZSwgdHJ1ZV0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJhdXRvIiwgImNvbnRhaW4iLCB0cnVlLCBmYWxz
ZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJjb250YWluIiwgImNvbnRhaW4iLCBm
YWxzZSwgZmFsc2VdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsibm9uZSIsICJjb250
YWluIiwgZmFsc2UsIGZhbHNlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImF1dG8i
LCAibm9uZSIsIHRydWUsIGZhbHNlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImNv
bnRhaW4iLCAibm9uZSIsIGZhbHNlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgWyJub25lIiwgIm5vbmUiLCBmYWxzZSwgZmFsc2VdXTsKKyAgICBmdW5jdGlvbiByZXNldFRl
c3QoKSB7CisgICAgICAgIC8vIFRyeSB2YXJpb3VzIG1ldGhvZHMgdG8gZW5zdXJlIHRoZSBlbGVt
ZW50IHBvc2l0aW9uIGlzIHJlc2V0IGltbWVkaWF0ZWx5LgorICAgICAgICBzY3JvbGxlci5jb250
ZW50V2luZG93LnNjcm9sbFggPSAzMDA7CisgICAgICAgIHNjcm9sbGVyLmNvbnRlbnRXaW5kb3cu
c2Nyb2xsWSA9IDMwMDsKKyAgICAgICAgc2Nyb2xsZXIuY29udGVudFdpbmRvdy5zY3JvbGxUbygz
MDAsIDMwMCk7CisgICAgICAgIHJvb3Quc2Nyb2xsTGVmdCA9IDA7CisgICAgICAgIHJvb3Quc2Ny
b2xsVG9wID0gMDsKKyAgICAgICAgcm9vdC5zY3JvbGxUbygwLCAwKTsKKyAgICB9CisKKyAgICBm
dW5jdGlvbiBvdmVyc2Nyb2xsQmVoYXZpb3JUZXN0KCkgeworICAgICAgICBvdmVyc2Nyb2xsRGF0
YXMuZm9yRWFjaCgoW292ZXJzY3JvbGxYLCBvdmVyc2Nyb2xsWSwgcHJvcGFnYXRlWCwgcHJvcGFn
YXRlWV0pID0+IHsKKyAgICAgICAgICAgIHByb21pc2VfdGVzdCgoKSA9PiB7CisgICAgICAgICAg
ICAgICAgcmVzZXRUZXN0KCk7CisgICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IHNjcm9sbGVy
LmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImh0bWwiKVswXTsK
KyAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWCA9IG92ZXJz
Y3JvbGxYOworICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JZ
ID0gb3ZlcnNjcm9sbFk7CisgICAgICAgICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRX
aWR0aCAvIDI7CisgICAgICAgICAgICAgICAgdmFyIHkgPSBzY3JvbGxlci5jbGllbnRIZWlnaHQg
LyAyOworICAgICAgICAgICAgICAgIHZhciBkZWx0YSA9IGdldERlbHRhcygicmlnaHQiKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gbW91c2VXaGVlbFNjcm9sbEFuZFdhaXQoeCwgeSwgZGVsdGEu
WCwgZGVsdGEuWSwgZGVsdGEuWCwgZGVsdGEuWSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAg
ICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxMZWZ0ID4gMCwgcHJvcGFnYXRlWCwgJ0Nv
bnRpbnVlIHVwIHRoZSBob3Jpem9udGFsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAgICAgICAg
ICAgIH0pOworICAgICAgICAgICAgfSwgJ0lmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdp
dGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogJyArIG92ZXJzY3JvbGxYICsgJyAnICsgb3ZlcnNjcm9s
bFkgKyAnLicpOworCisgICAgICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgICAgICAg
ICAgICAgIHJlc2V0VGVzdCgpOworICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSBzY3JvbGxl
ci5jb250ZW50V2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJodG1sIilbMF07
CisgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclggPSBvdmVy
c2Nyb2xsWDsKKyAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9y
WSA9IG92ZXJzY3JvbGxZOworCisgICAgICAgICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGll
bnRXaWR0aCAvIDI7CisgICAgICAgICAgICAgICAgdmFyIHkgPSBzY3JvbGxlci5jbGllbnRIZWln
aHQgLyAyOworICAgICAgICAgICAgICAgIHZhciBkZWx0YSA9IGdldERlbHRhcygiZG93biIpOwor
ICAgICAgICAgICAgICAgIHJldHVybiBtb3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCh4LCB5LCBkZWx0
YS5YLCBkZWx0YS5ZLCBkZWx0YS5YLCBkZWx0YS5ZKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAg
ICAgICAgICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbFRvcCA+IDAsIHByb3BhZ2F0ZVksICdD
b250aW51ZSB1cCB0aGUgdmVydGljYWwgc2Nyb2xsIGNoYWluaW5nJyk7CisgICAgICAgICAgICAg
ICAgfSk7CisgICAgICAgICAgICB9LCAnSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGgg
b3ZlcnNjcm9sbC1iZWhhdmlvcjogJyArIG92ZXJzY3JvbGxYICsgJyAnICsgb3ZlcnNjcm9sbFkg
KyAnLicpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBzY3JvbGxlci5hZGRFdmVudExpc3Rl
bmVyKCJsb2FkIiwgb3ZlcnNjcm9sbEJlaGF2aW9yVGVzdCk7Cis8L3NjcmlwdD4KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGlu
Zy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9s
bC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZjM5NWI2NDg4ZDA4NzBiOTU2MWMwMjg2NzlkN2UxNWE0N2ZjZTZlOQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1vdmVyc2Nyb2xsLWJlaGF2
aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKKwor
UEFTUyBVbnNjcm9sbGFibGUgZWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3Zl
cnNjcm9sbC1iZWhhdmlvcjogbm9uZS4KK1BBU1MgVW5zY3JvbGxhYmxlIGVsZW1lbnQgdmVydGlj
YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLgorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhh
dmlvci11bnNjcm9sbGFibGUtZWxlbWVudC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxp
bmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5hNDQ4ZjJlMGVhNWNjMDc4ZjFmOWVhNGMyZDdmNzgwZWU3YjdlNTg0Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92
ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRtbApAQCAtMCwwICsxLDY3
IEBACis8IWRvY3R5cGUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBBc3luY092ZXJm
bG93U2Nyb2xsaW5nRW5hYmxlZD10cnVlIEFzeW5jRnJhbWVTY3JvbGxpbmdFbmFibGVkPXRydWUg
XSAtLT4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVw
b3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvb3ZlcnNjcm9sbC1i
ZWhhdmlvci1zdXBwb3J0LmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0
cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1vdmVyc2Nyb2xsLWJlaGF2aW9yIj4KKzxzdHlsZT4K
KyAgICAuc2Nyb2xsaW5nIHsKKyAgICAgICAgb3ZlcmZsb3c6IHNjcm9sbDsKKyAgICB9CisgICAg
LnNjcm9sbENvbnRlbnQgeworICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgIGhlaWdodDog
MzAwcHg7CisgICAgfQorICAgICNyb290IHsKKyAgICAgICAgd2lkdGg6IDIwMHB4OworICAgICAg
ICBoZWlnaHQ6IDIwMHB4OworICAgIH0KKyAgICAjc2Nyb2xsZXIgeworICAgICAgICB3aWR0aDog
MTAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICAgIG92ZXJzY3JvbGwtYmVoYXZp
b3I6IG5vbmU7CisgICAgICAgIG92ZXJmbG93OiB2aXNpYmxlOworICAgICAgICBiYWNrZ3JvdW5k
OiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZWQsIGJsdWUpOworICAgIH0KKzwvc3R5bGU+Cis8
ZGl2IGlkPSJyb290IiBjbGFzcz0ic2Nyb2xsaW5nIj4KKyAgICA8ZGl2IGlkPSJzY3JvbGxlciI+
CisgICAgICAgIDxkaXYgY2xhc3M9InNjcm9sbENvbnRlbnQiPjwvZGl2PgorICAgIDwvZGl2Pgor
ICAgIDxkaXYgY2xhc3M9InNjcm9sbENvbnRlbnQiPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+
Citjb25zdCByb290ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jvb3QnKTsKK2NvbnN0IHNj
cm9sbGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Njcm9sbGVyJyk7CisKK2Z1bmN0aW9u
IHJlc2V0VGVzdCgpIHsKKyAgICByb290LnNjcm9sbExlZnQgPSAwOworICAgIHJvb3Quc2Nyb2xs
VG9wID0gMDsKKyAgICByb290LnNjcm9sbFRvKDAsIDApOworfQorCitmdW5jdGlvbiBzdGFydFRl
c3QoKSB7CisgICAgICAgIHByb21pc2VfdGVzdCgoKSA9PiB7CisgICAgICAgICAgICByZXNldFRl
c3QoKTsKKyAgICAgICAgICAgIHZhciB4ID0gc2Nyb2xsZXIuY2xpZW50V2lkdGggLyAyOworICAg
ICAgICAgICAgdmFyIHkgPSBzY3JvbGxlci5jbGllbnRIZWlnaHQgLyAyOworICAgICAgICAgICAg
dmFyIGRlbHRhID0gZ2V0RGVsdGFzKCJyaWdodCIpOworICAgICAgICAgICAgcmV0dXJuIG1vdXNl
V2hlZWxTY3JvbGxBbmRXYWl0KHgsIHksIGRlbHRhLlgsIGRlbHRhLlksIGRlbHRhLlgsIGRlbHRh
LlkpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3Jv
bGxMZWZ0ID4gMCwgdHJ1ZSwgJ0NvbnRpbnVlIHVwIHRoZSBob3Jpem9udGFsIHNjcm9sbCBjaGFp
bmluZycpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0sICdVbnNjcm9sbGFibGUgZWxlbWVu
dCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4n
KTsKKworICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgICAgICAgICAgcmVzZXRUZXN0
KCk7CisgICAgICAgICAgICB2YXIgeCA9IHNjcm9sbGVyLmNsaWVudFdpZHRoIC8gMjsKKyAgICAg
ICAgICAgIHZhciB5ID0gc2Nyb2xsZXIuY2xpZW50SGVpZ2h0IC8gMjsKKyAgICAgICAgICAgIHZh
ciBkZWx0YSA9IGdldERlbHRhcygiZG93biIpOworICAgICAgICAgICAgcmV0dXJuIG1vdXNlV2hl
ZWxTY3JvbGxBbmRXYWl0KHgsIHksIGRlbHRhLlgsIGRlbHRhLlksIGRlbHRhLlgsIGRlbHRhLlkp
LnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxU
b3AgPiAwLCB0cnVlLCAnQ29udGludWUgdXAgdGhlIHZlcnRpY2FsIHNjcm9sbCBjaGFpbmluZycp
OworICAgICAgICAgICAgfSk7CisgICAgICAgIH0sICdVbnNjcm9sbGFibGUgZWxlbWVudCB2ZXJ0
aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuJyk7Cit9CisK
K2FkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBzdGFydFRlc3QpOworPC9zY3JpcHQ+ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxp
bmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9s
bC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
ZmE1OWNjYmE3OWFlZmYzM2RhNzBlOTNkNDg4YTA3ZWVjOWM1NjkxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZp
b3ItdW5zY3JvbGxhYmxlLWlmcmFtZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBACisKKwor
UEFTUyBVbnNjcm9sbGFibGUgaWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVy
c2Nyb2xsLWJlaGF2aW9yOiBub25lLgorUEFTUyBVbnNjcm9sbGFibGUgaWZyYW1lIHZlcnRpY2Fs
IHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4KKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZp
b3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcv
bWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjMzZWM1YjI2M2MyYjgzYmUxYTUyODcxNmNlODY1NjNkOTdhY2QxZDYKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNj
cm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLmh0bWwKQEAgLTAsMCArMSw2NiBAQAor
PCFkb2N0eXBlIGh0bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgQXN5bmNPdmVyZmxvd1Nj
cm9sbGluZ0VuYWJsZWQ9dHJ1ZSBBc3luY0ZyYW1lU2Nyb2xsaW5nRW5hYmxlZD10cnVlIF0gLS0+
CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL292ZXJzY3JvbGwtYmVoYXZp
b3Itc3VwcG9ydC5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8v
ZHJhZnRzLmNzc3dnLm9yZy9jc3Mtb3ZlcnNjcm9sbC1iZWhhdmlvciI+Cis8c3R5bGU+CisgICAg
LnNjcm9sbGluZyB7CisgICAgICAgIG92ZXJmbG93OiBzY3JvbGw7CisgICAgfQorICAgIC5zY3Jv
bGxDb250ZW50IHsKKyAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICBoZWlnaHQ6IDMwMHB4
OworICAgIH0KKyAgICAjcm9vdCB7CisgICAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgICAgaGVp
Z2h0OiAyMDBweDsKKyAgICB9CisgICAgI3Njcm9sbGVyIHsKKyAgICAgICAgd2lkdGg6IDIwMHB4
OworICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAgICAgICBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBu
b25lOworICAgICAgICBvdmVyZmxvdzogdmlzaWJsZTsKKyAgICAgICAgYmFja2dyb3VuZDogbGlu
ZWFyLWdyYWRpZW50KDEzNWRlZywgcmVkLCBibHVlKTsKKyAgICB9Cis8L3N0eWxlPgorPGRpdiBp
ZD0ncm9vdCcgY2xhc3M9InNjcm9sbGluZyI+CisgICAgPGlmcmFtZSBpZD0nc2Nyb2xsZXInIHNy
Y2RvYz0iPGh0bWwgc3R5bGU9J292ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmU7Jz48ZGl2IHN0eWxl
PSd3aWR0aDogMTAwcHg7IGhlaWdodDogMTAwcHg7Jz48L2Rpdj48L2h0bWw+CisgICAgICAgICI+
PC9pZnJhbWU+CisgICAgPGRpdiBjbGFzcz0ic2Nyb2xsQ29udGVudCI+PC9kaXY+Cis8L2Rpdj4K
KworPHNjcmlwdD4KK2NvbnN0IHJvb3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncm9vdCcp
OworY29uc3Qgc2Nyb2xsZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2Nyb2xsZXInKTsK
KworZnVuY3Rpb24gcmVzZXRUZXN0KCkgeworICAgIHJvb3Quc2Nyb2xsTGVmdCA9IDA7CisgICAg
cm9vdC5zY3JvbGxUb3AgPSAwOworICAgIHJvb3Quc2Nyb2xsVG8oMCwgMCk7Cit9CisKK2Z1bmN0
aW9uIHN0YXJ0VGVzdCgpIHsKKyAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAg
ICAgIHJlc2V0VGVzdCgpOworICAgICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0
aCAvIDI7CisgICAgICAgICAgICB2YXIgeSA9IHNjcm9sbGVyLmNsaWVudEhlaWdodCAvIDI7Cisg
ICAgICAgICAgICB2YXIgZGVsdGEgPSBnZXREZWx0YXMoInJpZ2h0Iik7CisgICAgICAgICAgICBy
ZXR1cm4gbW91c2VXaGVlbFNjcm9sbEFuZFdhaXQoeCwgeSwgZGVsdGEuWCwgZGVsdGEuWSwgZGVs
dGEuWCwgZGVsdGEuWSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFs
cyhyb290LnNjcm9sbExlZnQgPiAwLCB0cnVlLCAnQ29udGludWUgdXAgdGhlIGhvcml6b250YWwg
c2Nyb2xsIGNoYWluaW5nJyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSwgJ1Vuc2Nyb2xs
YWJsZSBpZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZp
b3I6IG5vbmUuJyk7CisKKyAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAg
IHJlc2V0VGVzdCgpOworICAgICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAv
IDI7CisgICAgICAgICAgICB2YXIgeSA9IHNjcm9sbGVyLmNsaWVudEhlaWdodCAvIDI7CisgICAg
ICAgICAgICB2YXIgZGVsdGEgPSBnZXREZWx0YXMoImRvd24iKTsKKyAgICAgICAgICAgIHJldHVy
biBtb3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCh4LCB5LCBkZWx0YS5YLCBkZWx0YS5ZLCBkZWx0YS5Y
LCBkZWx0YS5ZKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJv
b3Quc2Nyb2xsVG9wID4gMCwgdHJ1ZSwgJ0NvbnRpbnVlIHVwIHRoZSB2ZXJ0aWNhbCBzY3JvbGwg
Y2hhaW5pbmcnKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9LCAnVW5zY3JvbGxhYmxlIGlm
cmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUu
Jyk7Cit9CisKK2FkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBzdGFydFRlc3QpOworPC9zY3JpcHQ+
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9zY3JvbGxpbmcvcmVzb3VyY2VzL292ZXJzY3JvbGwtYmVoYXZpb3Itc3VwcG9ydC5qcyBiL0xh
eW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3Jlc291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXN1
cHBvcnQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uY2JkMjIyZTkwYjUyYTE5MzBiN2ZjZmU0NDIzZTk0NTgzYzA0
NjAwZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3Jlc291
cmNlcy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXN1cHBvcnQuanMKQEAgLTAsMCArMSwzOSBAQAorZnVu
Y3Rpb24gZ2V0RGVsdGFzKGRpcmVjdGlvbikgeworICAgIHZhciBkZWx0YVggPSAwOworICAgIHZh
ciBkZWx0YVkgPSAwOworICAgIGlmIChkaXJlY3Rpb24gPT0gImRvd24iKQorICAgICAgICBkZWx0
YVkgPSAtNQorICAgIGVsc2UgaWYgKGRpcmVjdGlvbiA9PSAidXAiKQorICAgICAgICBkZWx0YVkg
PSA1OworICAgIGVsc2UgaWYgKGRpcmVjdGlvbiA9PSAicmlnaHQiKQorICAgICAgICBkZWx0YVgg
PSAtNTsKKyAgICBlbHNlIGlmIChkaXJlY3Rpb24gPT0gImxlZnQiKQorICAgICAgICBkZWx0YVgg
PSA1OworICAgIHJldHVybiB7CisgICAgICAgIFg6IGRlbHRhWCwKKyAgICAgICAgWTogZGVsdGFZ
CisgICAgfTsKK30KKworYXN5bmMgZnVuY3Rpb24gbW91c2VXaGVlbFNjcm9sbEFuZFdhaXQoeCwg
eSwgYmVnaW5YLCBiZWdpblksIGRlbHRhWCwgZGVsdGFZKQoreworICAgIGlmIChiZWdpblggPT09
IHVuZGVmaW5lZCkKKyAgICAgICAgYmVnaW5YID0gMDsKKyAgICBpZiAoYmVnaW5ZID09PSB1bmRl
ZmluZWQpCisgICAgICAgIGJlZ2luWSA9IC0xOworICAgIGlmIChkZWx0YVggPT09IHVuZGVmaW5l
ZCkKKyAgICAgICAgZGVsdGFYID0gMDsKKyAgICBpZiAoZGVsdGFZID09PSB1bmRlZmluZWQpCisg
ICAgICAgIGRlbHRhWSA9IC0xMDsKKworICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50
cygpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhiZWdpblgsIGJlZ2luWSwg
ImJlZ2FuIiwgIm5vbmUiKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZGVsdGFYLCBkZWx0YVksICJjaGFuZ2VkIiwgIm5vbmUiKTsKKyAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwg
MCwgImVuZGVkIiwgIm5vbmUiKTsKKyAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7
CisgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlv
bkZyYW1lKHJlc29sdmUpOworICAgICAgICB9LCA1MDApOworICAgIH0pOworfQpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUK
</data>
<flag name="commit-queue"
          id="475894"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449718</attachid>
            <date>2022-01-21 19:21:04 -0800</date>
            <delta_ts>2022-01-24 15:58:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220139-20220121192104.patch</filename>
            <type>text/plain</type>
            <size>35564</size>
            <attacher name="Nikos Mouchtaris">nmouchtaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MzUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGJiNmQyZjJmYmNkN2I3
ODU1MzIxY2U1YjgwMWQ1YzJmYWNiMzhmNC4uODBhYWE0YzRhYWIwNzIyNjM2NGFhM2M1ZTE0YzA2
YTQ4ZDNiNjNmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDIxLTEyLTAxICBOaWtv
bGFvcyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxl
bWVudCBDU1Mgb3ZlcnNjcm9sbC1iZWhhdmlvciBmb3IgYXN5bmNocm9ub3VzIHNjcm9sbCBvbiBN
YWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDEz
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNwbGl0
IHVwIHBhdGNoIGJ5IENhdGhpZSBDaGVuIGFuZCBGcmVkZXJpYyBXYW5nLiBBZGQgZnVuY3Rpb24g
Zm9yIGJsb2NraW5nIHNjcm9sbCBjaGFpbmluZworICAgICAgICBhbmQgZmlsdGVyaW5nIHNjcm9s
bCBkZWx0YSBkZXBlbmRpbmcgb24gdGhlIHZhbHVlcyBvZiBvdmVyc2Nyb2xsIGJlaGF2aW9yIGZv
ciBhIHNjcm9sbGluZworICAgICAgICBub2RlLiBUaGlzIHBhdGNoIGlzIGZvciBhc3luY2hyb25v
dXMgc2Nyb2xsaW5nIG9ubHkuCisKKyAgICAgICAgVGVzdHM6IGZhc3Qvc2Nyb2xsaW5nL21hYy9h
c3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQuaHRtbAorICAgICAgICAgICAgICAgZmFz
dC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0bWwKKyAg
ICAgICAgICAgICAgIGZhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9y
LXVuc2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvc2Nyb2xsaW5n
L21hYy9hc3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUuaHRtbAor
CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxpbmdUcmVlOjpzaG91bGRCbG9ja1Njcm9sbENoYWluaW5nV2l0aE5vZGUp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZTo6aGFuZGxlV2hlZWxFdmVudFdpdGhO
b2RlKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmg6CisgICAgICAg
ICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaDoKKyAgICAgICAg
KiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdh
dGVNYWM6OmFsbG93c0hvcml6b250YWxTdHJldGNoaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OmFsbG93c1ZlcnRpY2Fs
U3RyZXRjaGluZyBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9z
aXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWNvbXBvc2l0ZUNoYW5nZVJlcXVpcmVzR2Vv
bWV0cnlVcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpy
b290T3JCb2R5U3R5bGVDaGFuZ2VkKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmNoYW5nZVJlcXVpcmVz
UmVjb21wb3NpdGVMYXllciBjb25zdCk6CisKIDIwMjEtMTEtMzAgIFNpbW9uIEZyYXNlciAgPHNp
bW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUGFzcyB0aGUgdGltZXN0YW1wIGZvciBz
Y3JvbGxpbmcgdGhyZWFkIGFuaW1hdGlvbnMgdGhyb3VnaCBhbGwgdGhlIHNlcnZpY2VTY3JvbGxB
bmltYXRpb24oKSBjYWxscwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAppbmRleCBkOTRmZjEzMDZiNzll
MjhmYjY4OTkwMDY5NzcwOGFiMjhkYmNmNTJkLi44MmY3NTdhMjdiM2IwNzI0MDA2ZDcyYTUzODJl
MzRmYTRjYTk0NjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9B
c3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcApAQCAtNzg3LDggKzc4Nyw4IEBA
IHZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0U2Nyb2xsaW5nTm9kZVNjcm9sbGFi
bGVBcmVhR2VvbWV0cnkoU2Nyb2xsaW5nCiAgICAgc2Nyb2xsaW5nTm9kZS5zZXRTY3JvbGxhYmxl
QXJlYVNpemUoc2Nyb2xsYWJsZUFyZWEudmlzaWJsZVNpemUoKSk7CiAKICAgICBTY3JvbGxhYmxl
QXJlYVBhcmFtZXRlcnMgc2Nyb2xsUGFyYW1ldGVyczsKLSAgICBzY3JvbGxQYXJhbWV0ZXJzLmhv
cml6b250YWxTY3JvbGxFbGFzdGljaXR5ID0gc2Nyb2xsYWJsZUFyZWEuaG9yaXpvbnRhbFNjcm9s
bEVsYXN0aWNpdHkoKTsKLSAgICBzY3JvbGxQYXJhbWV0ZXJzLnZlcnRpY2FsU2Nyb2xsRWxhc3Rp
Y2l0eSA9IHNjcm9sbGFibGVBcmVhLnZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eSgpOworICAgIHNj
cm9sbFBhcmFtZXRlcnMuaG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkgPSBzY3JvbGxhYmxlQXJl
YS5ob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgPT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpO
b25lID8gU2Nyb2xsRWxhc3RpY2l0eTo6Tm9uZSA6IHNjcm9sbGFibGVBcmVhLmhvcml6b250YWxT
Y3JvbGxFbGFzdGljaXR5KCk7CisgICAgc2Nyb2xsUGFyYW1ldGVycy52ZXJ0aWNhbFNjcm9sbEVs
YXN0aWNpdHkgPSBzY3JvbGxhYmxlQXJlYS52ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpID09
IE92ZXJzY3JvbGxCZWhhdmlvcjo6Tm9uZSA/IFNjcm9sbEVsYXN0aWNpdHk6Ok5vbmUgOiBzY3Jv
bGxhYmxlQXJlYS52ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkoKTsKICAgICBzY3JvbGxQYXJhbWV0
ZXJzLmFsbG93c0hvcml6b250YWxTY3JvbGxpbmcgPSBzY3JvbGxhYmxlQXJlYS5hbGxvd3NIb3Jp
em9udGFsU2Nyb2xsaW5nKCk7CiAgICAgc2Nyb2xsUGFyYW1ldGVycy5hbGxvd3NWZXJ0aWNhbFNj
cm9sbGluZyA9IHNjcm9sbGFibGVBcmVhLmFsbG93c1ZlcnRpY2FsU2Nyb2xsaW5nKCk7CiAgICAg
c2Nyb2xsUGFyYW1ldGVycy5ob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yID0gc2Nyb2xsYWJs
ZUFyZWEuaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcAppbmRleCAyZGU2NWMyMmY5YjdmOTQw
ZTFlYmNmZmJjNDVlY2Q2MDZhNDk5Yzg0Li40ZjQ2YjY3OTVkNGYyNzQxMTMyNGVmYTc0MzMyZWMy
ZmY1NGZiYWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdUcmVlLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNp
bmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1XaGVlbEV2ZW50LmgiCisjaW5j
bHVkZSAiU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTY3JvbGxpbmdT
dGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZS5oIgogI2luY2x1ZGUgIlNjcm9sbGluZ1N0YXRlVHJlZS5o
IgogI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUuaCIKQEAgLTIwMSwx
MCArMjAyLDExIEBAIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdCBTY3JvbGxpbmdUcmVlOjpoYW5k
bGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVuCiAKIFdoZWVsRXZlbnRIYW5kbGlu
Z1Jlc3VsdCBTY3JvbGxpbmdUcmVlOjpoYW5kbGVXaGVlbEV2ZW50V2l0aE5vZGUoY29uc3QgUGxh
dGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBPcHRpb25TZXQ8V2hlZWxFdmVudFByb2Nlc3Np
bmdTdGVwcz4gcHJvY2Vzc2luZ1N0ZXBzLCBTY3JvbGxpbmdUcmVlTm9kZSogbm9kZSwgRXZlbnRU
YXJnZXRpbmcgZXZlbnRUYXJnZXRpbmcpCiB7CisgICAgYXV0byBhZGp1c3RlZFdoZWVsRXZlbnQg
PSB3aGVlbEV2ZW50OwogICAgIHdoaWxlIChub2RlKSB7CiAgICAgICAgIGlmIChpczxTY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZT4oKm5vZGUpKSB7CiAgICAgICAgICAgICBhdXRvJiBzY3JvbGxp
bmdOb2RlID0gZG93bmNhc3Q8U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU+KCpub2RlKTsKLSAg
ICAgICAgICAgIGF1dG8gcmVzdWx0ID0gc2Nyb2xsaW5nTm9kZS5oYW5kbGVXaGVlbEV2ZW50KHdo
ZWVsRXZlbnQsIGV2ZW50VGFyZ2V0aW5nKTsKKyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gc2Ny
b2xsaW5nTm9kZS5oYW5kbGVXaGVlbEV2ZW50KGFkanVzdGVkV2hlZWxFdmVudCwgZXZlbnRUYXJn
ZXRpbmcpOwogCiAgICAgICAgICAgICBpZiAocmVzdWx0Lndhc0hhbmRsZWQpIHsKICAgICAgICAg
ICAgICAgICBtX2xhdGNoaW5nQ29udHJvbGxlci5ub2RlRGlkSGFuZGxlRXZlbnQoc2Nyb2xsaW5n
Tm9kZS5zY3JvbGxpbmdOb2RlSUQoKSwgcHJvY2Vzc2luZ1N0ZXBzLCB3aGVlbEV2ZW50LCBtX2Fs
bG93TGF0Y2hpbmcpOwpAQCAtMjE0LDYgKzIxNiwxNiBAQCBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1
bHQgU2Nyb2xsaW5nVHJlZTo6aGFuZGxlV2hlZWxFdmVudFdpdGhOb2RlKGNvbnN0IFBsYXRmb3Jt
VwogCiAgICAgICAgICAgICBpZiAocmVzdWx0Lm5lZWRzTWFpblRocmVhZFByb2Nlc3NpbmcoKSB8
fCBldmVudFRhcmdldGluZyAhPSBFdmVudFRhcmdldGluZzo6UHJvcGFnYXRlKQogICAgICAgICAg
ICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGJvb2wgc2hv
dWxkQmxvY2ssIGhhbmRsZWQgID0gZmFsc2U7CisgICAgICAgICAgICBzdGQ6OnRpZShzaG91bGRC
bG9jaywgaGFuZGxlZCkgPSBzY3JvbGxpbmdOb2RlLnNob3VsZEJsb2NrU2Nyb2xsUHJvcGFnYXRp
b24oYWRqdXN0ZWRXaGVlbEV2ZW50KTsKKyAgICAgICAgICAgIGlmIChzaG91bGRCbG9jaykgewor
ICAgICAgICAgICAgICAgIGlmICghaGFuZGxlZCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdDo6dW5oYW5kbGVkKCk7CisgICAgICAgICAgICAgICAg
bV9sYXRjaGluZ0NvbnRyb2xsZXIubm9kZURpZEhhbmRsZUV2ZW50KHNjcm9sbGluZ05vZGUuc2Ny
b2xsaW5nTm9kZUlEKCksIHByb2Nlc3NpbmdTdGVwcywgd2hlZWxFdmVudCwgbV9hbGxvd0xhdGNo
aW5nKTsKKyAgICAgICAgICAgICAgICBtX2dlc3R1cmVTdGF0ZS5ub2RlRGlkSGFuZGxlRXZlbnQo
c2Nyb2xsaW5nTm9kZS5zY3JvbGxpbmdOb2RlSUQoKSwgd2hlZWxFdmVudCk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdDo6aGFuZGxlZCgpOworICAgICAg
ICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgaWYgKGlzPFNjcm9sbGluZ1RyZWVPdmVyZmxv
d1Njcm9sbFByb3h5Tm9kZT4oKm5vZGUpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAKaW5kZXgg
NGQ3YzUwZmI2YzE3MTcxOWFiODQzYWU5NjA5NGIwYjMzMWI1YTYxZC4uZWE1ZTc1NjU1NWJiYWYz
ODczNTQ3YTBhNTg4N2RkYzNmOGY4NDAxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcApAQCAt
MjksNiArMjksNyBAQAogI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCiAKICNpbmNsdWRlICJM
b2dnaW5nLmgiCisjaW1wb3J0ICJTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5oIgogI2lmIEVO
QUJMRShTQ1JPTExJTkdfVEhSRUFEKQogI2luY2x1ZGUgIlNjcm9sbGluZ1N0YXRlRnJhbWVTY3Jv
bGxpbmdOb2RlLmgiCiAjZW5kaWYKQEAgLTEyMSw2ICsxMjIsMTggQEAgYm9vbCBTY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZTo6aXNMYXRjaGVkTm9kZSgpIGNvbnN0CiAgICAgcmV0dXJuIHNjcm9s
bGluZ1RyZWUoKS5sYXRjaGVkTm9kZUlEKCkgPT0gc2Nyb2xsaW5nTm9kZUlEKCk7CiB9CiAKK2Jv
b2wgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OnNob3VsZFJ1YmJlckJhbmQoY29uc3QgUGxh
dGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBFdmVudFRhcmdldGluZyBldmVudFRhcmdldGlu
ZykgY29uc3QKK3sKKyAgICBhdXRvIGFkanVzdGVkV2hlZWxFdmVudCA9IHdoZWVsRXZlbnQ7Cisg
ICAgYm9vbCBzaG91bGRCbG9jayA9IHNob3VsZEJsb2NrU2Nyb2xsUHJvcGFnYXRpb24oYWRqdXN0
ZWRXaGVlbEV2ZW50KS5maXJzdDsKKyAgICAvLyBXZSBhbHdheXMgcnViYmVyLWJhbmQgdGhlIGxh
dGNoZWQgbm9kZSwgb3IgdGhlIHJvb3Qgbm9kZS4KKyAgICAvLyBUaGUgc3RhdGVsZXNzIHdoZWVs
IGV2ZW50IGRvZXNuJ3QgdHJpZ2dlciBydWJiZXItYmFuZC4KKyAgICAvLyBBbHNvIHJ1YmJlcmJh
bmQgd2hlbiB3ZSBzaG91bGQgYmxvY2sgc2Nyb2xsIHByb3BvZ2F0aW9uCisgICAgLy8gYXQgdGhp
cyBub2RlLCB3aGljaCBoYXMgb3ZlcnNjcm9sbCBiZWhhdmlvciB0aGF0IGlzIG5vdCBub25lLgor
ICAgIHJldHVybiAoaXNMYXRjaGVkTm9kZSgpIHx8IGV2ZW50VGFyZ2V0aW5nID09IEV2ZW50VGFy
Z2V0aW5nOjpOb2RlT25seSB8fCAoaXNSb290Tm9kZSgpICYmICF3aGVlbEV2ZW50LmlzTm9uR2Vz
dHVyZUV2ZW50KCkpIHx8IChzaG91bGRCbG9jayAmJiBvdmVyc2Nyb2xsQmVoYXZpb3JBbGxvd1J1
YmJlckJhbmQoKSkpOworICAgIAorfQorCiBib29sIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
OjpjYW5IYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVu
dCwgRXZlbnRUYXJnZXRpbmcgZXZlbnRUYXJnZXRpbmcpIGNvbnN0CiB7CiAgICAgaWYgKCFjYW5I
YXZlU2Nyb2xsYmFycygpKQpAQCAtMTMwLDkgKzE0Myw3IEBAIGJvb2wgU2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGU6OmNhbkhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50
JiB3CiAgICAgaWYgKHdoZWVsRXZlbnQucGhhc2UoKSA9PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFz
ZTo6TWF5QmVnaW4pCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgLy8gV2UgYWx3YXlzIHJ1
YmJlci1iYW5kIHRoZSBsYXRjaGVkIG5vZGUsIG9yIHRoZSByb290IG5vZGUuCi0gICAgLy8gVGhl
IHN0YXRlbGVzcyB3aGVlbCBldmVudCBkb2Vzbid0IHRyaWdnZXIgcnViYmVyLWJhbmQuCi0gICAg
aWYgKGlzTGF0Y2hlZE5vZGUoKSB8fCBldmVudFRhcmdldGluZyA9PSBFdmVudFRhcmdldGluZzo6
Tm9kZU9ubHkgfHwgKGlzUm9vdE5vZGUoKSAmJiAhd2hlZWxFdmVudC5pc05vbkdlc3R1cmVFdmVu
dCgpKSkKKyAgICBpZiAoc2hvdWxkUnViYmVyQmFuZCh3aGVlbEV2ZW50LCBldmVudFRhcmdldGlu
ZykpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgcmV0dXJuIGV2ZW50Q2FuU2Nyb2xsQ29u
dGVudHMod2hlZWxFdmVudCk7CkBAIC0zOTIsNiArNDAzLDMxIEBAIHZvaWQgU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGU6OnNldEN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KHN0ZDo6b3B0
aW9uYWw8CiAgICAgbV9jdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCA9IGluZGV4OwogfQog
CisvLyBSZXR1cm5zIGlmIGl0IHNob3VsZCBibG9jayBzY3JvbGwgcHJvcG9nYXRpb24sIGFuZCBp
ZiB0aGUgd2hlZWwgZXZlbnQgaXMgaGFuZGxlZAorc3RkOjpwYWlyPGJvb2wsIGJvb2w+IFNjcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlOjpzaG91bGRCbG9ja1Njcm9sbFByb3BhZ2F0aW9uKFBsYXRm
b3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCkgY29uc3QKK3sKKyAgICBGbG9hdFNpemUgZmlsdGVy
ZWREZWx0YSh3aGVlbEV2ZW50LmRlbHRhWCgpLCB3aGVlbEV2ZW50LmRlbHRhWSgpKTsKKyNpZiBQ
TEFURk9STShNQUMpCisgICAgYXV0byBiaWFzZWREZWx0YSA9IFNjcm9sbGluZ0VmZmVjdHNDb250
cm9sbGVyOjp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbCh3aGVlbEV2ZW50KTsKKyNl
bHNlCisgICAgYXV0byBiaWFzZWREZWx0YSA9IHdoZWVsRXZlbnQuZGVsdGEoKTsKKyNlbmRpZgor
ICAgIGlmIChoYXNIb3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgfHwgaGFzVmVydGljYWxP
dmVyc2Nyb2xsQmVoYXZpb3IoKSkgeworICAgICAgICAvLyBCbG9jayBzY3JvbGwgcHJvcG9nYXRp
b24sIHVuaGFuZGxlZCB3aGVlbCBldmVudAorICAgICAgICBpZiAoaGFzSG9yaXpvbnRhbE92ZXJz
Y3JvbGxCZWhhdmlvcigpICYmICFiaWFzZWREZWx0YS5oZWlnaHQoKSAmJiBiaWFzZWREZWx0YS53
aWR0aCgpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyPGJvb2wsIGJvb2w+KHRy
dWUsIGZhbHNlKTsKKyAgICAgICAgCisgICAgICAgIC8vIEJsb2NrIHNjcm9sbCBwcm9wb2dhdGlv
biwgaGFuZGxlZCB3aGVlbCBldmVudAorICAgICAgICBpZiAoKGhhc0hvcml6b250YWxPdmVyc2Ny
b2xsQmVoYXZpb3IoKSAmJiBoYXNWZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpKSB8fCAoaGFz
SG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpICYmICFiaWFzZWREZWx0YS5oZWlnaHQoKSkg
fHwgKGhhc1ZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgJiYgIWJpYXNlZERlbHRhLndpZHRo
KCkpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyPGJvb2wsIGJvb2w+KHRydWUs
IHRydWUpOworICAgICAgICAKKyAgICAgICAgZmlsdGVyZWREZWx0YS5zZXRXaWR0aChoYXNIb3Jp
em9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgfHwgKGhhc1ZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2
aW9yKCkgJiYgIWJpYXNlZERlbHRhLndpZHRoKCkpID8gMCA6IGZpbHRlcmVkRGVsdGEud2lkdGgo
KSk7CisgICAgICAgIGZpbHRlcmVkRGVsdGEuc2V0SGVpZ2h0KGhhc1ZlcnRpY2FsT3ZlcnNjcm9s
bEJlaGF2aW9yKCkgfHwgKGhhc0hvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSAmJiAhYmlh
c2VkRGVsdGEuaGVpZ2h0KCkpID8gMCA6IGZpbHRlcmVkRGVsdGEuaGVpZ2h0KCkpOworICAgICAg
ICB3aGVlbEV2ZW50ID0gd2hlZWxFdmVudC5jb3B5V2l0aERlbHRhQW5kVmVsb2NpdHkoZmlsdGVy
ZWREZWx0YSwgd2hlZWxFdmVudC5zY3JvbGxpbmdWZWxvY2l0eSgpKTsKKyAgICB9CisgICAgcmV0
dXJuIHN0ZDo6bWFrZV9wYWlyPGJvb2wsIGJvb2w+KGZhbHNlLCBmYWxzZSk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGUuaAppbmRleCBiOWY1NDMwNzAxNmUyMDhkNGE2YzVmMGIzZTEzMWQ5OTc1
ZDhlNjU1Li44YjlmNzZhMWM0NDEwZjY3OWUxNmI1Y2NkNTgxMzcxNzQzZDFkOWZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlLmgKQEAgLTE1OSw3ICsxNTksMTQgQEAgcHJvdGVjdGVkOgogCiAgICAgYm9v
bCBhbGxvd3NIb3Jpem9udGFsU2Nyb2xsaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxhYmxl
QXJlYVBhcmFtZXRlcnMuYWxsb3dzSG9yaXpvbnRhbFNjcm9sbGluZzsgfQogICAgIGJvb2wgYWxs
b3dzVmVydGljYWxTY3JvbGxpbmcoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGFibGVBcmVhUGFy
YW1ldGVycy5hbGxvd3NWZXJ0aWNhbFNjcm9sbGluZzsgfQotCisgICAgCisgICAgT3ZlcnNjcm9s
bEJlaGF2aW9yIGhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdCB7IHJldHVybiBt
X3Njcm9sbGFibGVBcmVhUGFyYW1ldGVycy5ob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yOyB9
CisgICAgT3ZlcnNjcm9sbEJlaGF2aW9yIHZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29u
c3QgeyByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMudmVydGljYWxPdmVyc2Nyb2xs
QmVoYXZpb3I7IH0KKyAgICBib29sIGhhc0hvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBj
b25zdCB7IHJldHVybiBtX3Njcm9sbGFibGVBcmVhUGFyYW1ldGVycy5ob3Jpem9udGFsT3ZlcnNj
cm9sbEJlaGF2aW9yICE9IE92ZXJzY3JvbGxCZWhhdmlvcjo6QXV0bzsgfQorICAgIGJvb2wgaGFz
VmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGFibGVB
cmVhUGFyYW1ldGVycy52ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvciAhPSBPdmVyc2Nyb2xsQmVo
YXZpb3I6OkF1dG87IH0KKyAgICBzdGQ6OnBhaXI8Ym9vbCxib29sPiBzaG91bGRCbG9ja1Njcm9s
bFByb3BhZ2F0aW9uKFBsYXRmb3JtV2hlZWxFdmVudCYpIGNvbnN0OworICAgIGJvb2wgb3ZlcnNj
cm9sbEJlaGF2aW9yQWxsb3dSdWJiZXJCYW5kKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxhYmxl
QXJlYVBhcmFtZXRlcnMuaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvciAhPSBPdmVyc2Nyb2xs
QmVoYXZpb3I6Ok5vbmUgfHwgIG1fc2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzLnZlcnRpY2FsT3Zl
cnNjcm9sbEJlaGF2aW9yICE9IE92ZXJzY3JvbGxCZWhhdmlvcjo6Tm9uZTsgfQorICAgIGJvb2wg
c2hvdWxkUnViYmVyQmFuZChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBFdmVudFRhcmdldGlu
ZykgY29uc3Q7CiAgICAgdm9pZCBkdW1wUHJvcGVydGllcyhXVEY6OlRleHRTdHJlYW0mLCBPcHRp
b25TZXQ8U2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0QmVoYXZpb3I+KSBjb25zdCBvdmVycmlkZTsK
IAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
Q29tcG9zaXRvci5jcHAKaW5kZXggYmYwYmZkZTBjNTk2OGYxYmEzYzAxNDI2ZDliM2RkNzczMTEy
ZGE0Yy4uNTVjYWM1ZDhkMTY4ZTk3MDBlNTBiZDdiMmM3MTgxOGY5OTc0OGRhMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAg
LTE2NTIsNyArMTY1Miw5IEBAIHN0YXRpYyBib29sIHJlY29tcG9zaXRlQ2hhbmdlUmVxdWlyZXNH
ZW9tZXRyeVVwZGF0ZShjb25zdCBSZW5kZXJTdHlsZSYgb2xkU3R5bGUsCiAgICAgICAgIHx8IG9s
ZFN0eWxlLm9mZnNldFBvc2l0aW9uKCkgIT0gbmV3U3R5bGUub2Zmc2V0UG9zaXRpb24oKQogICAg
ICAgICB8fCBvbGRTdHlsZS5vZmZzZXREaXN0YW5jZSgpICE9IG5ld1N0eWxlLm9mZnNldERpc3Rh
bmNlKCkKICAgICAgICAgfHwgb2xkU3R5bGUub2Zmc2V0Um90YXRlKCkgIT0gbmV3U3R5bGUub2Zm
c2V0Um90YXRlKCkKLSAgICAgICAgfHwgIWFyZVBvaW50aW5nVG9FcXVhbERhdGEob2xkU3R5bGUu
Y2xpcFBhdGgoKSwgbmV3U3R5bGUuY2xpcFBhdGgoKSk7CisgICAgICAgIHx8ICFhcmVQb2ludGlu
Z1RvRXF1YWxEYXRhKG9sZFN0eWxlLmNsaXBQYXRoKCksIG5ld1N0eWxlLmNsaXBQYXRoKCkpCisg
ICAgICAgIHx8IG9sZFN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclgoKSAhPSBuZXdTdHlsZS5vdmVy
c2Nyb2xsQmVoYXZpb3JYKCkKKyAgICAgICAgfHwgb2xkU3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9y
WSgpICE9IG5ld1N0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclkoKTsKIH0KIAogdm9pZCBSZW5kZXJM
YXllckNvbXBvc2l0b3I6OmxheWVyU3R5bGVDaGFuZ2VkKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBS
ZW5kZXJMYXllciYgbGF5ZXIsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkKQEAgLTM5NDUs
NiArMzk0NywxMSBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cm9vdE9yQm9keVN0eWxl
Q2hhbmdlZChSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29ucwogICAgIGJvb2wgaGFkRml4ZWRC
YWNrZ3JvdW5kID0gb2xkU3R5bGUgJiYgb2xkU3R5bGUtPmhhc0VudGlyZWx5Rml4ZWRCYWNrZ3Jv
dW5kKCk7CiAgICAgaWYgKGhhZEZpeGVkQmFja2dyb3VuZCAhPSByZW5kZXJlci5zdHlsZSgpLmhh
c0VudGlyZWx5Rml4ZWRCYWNrZ3JvdW5kKCkpCiAgICAgICAgIHJvb3RMYXllckNvbmZpZ3VyYXRp
b25DaGFuZ2VkKCk7CisgICAgCisgICAgaWYgKG9sZFN0eWxlICYmIChvbGRTdHlsZS0+b3ZlcnNj
cm9sbEJlaGF2aW9yWCgpICE9IHJlbmRlcmVyLnN0eWxlKCkub3ZlcnNjcm9sbEJlaGF2aW9yWCgp
IHx8IG9sZFN0eWxlLT5vdmVyc2Nyb2xsQmVoYXZpb3JZKCkgIT0gcmVuZGVyZXIuc3R5bGUoKS5v
dmVyc2Nyb2xsQmVoYXZpb3JZKCkpKSB7CisgICAgICAgIGlmIChhdXRvKiBsYXllciA9IG1fcmVu
ZGVyVmlldy5sYXllcigpKQorICAgICAgICAgICAgbGF5ZXItPnNldE5lZWRzQ29tcG9zaXRpbmdH
ZW9tZXRyeVVwZGF0ZSgpOworICAgIH0KIH0KIAogdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6
OnJvb3RCYWNrZ3JvdW5kQ29sb3JPclRyYW5zcGFyZW5jeUNoYW5nZWQoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKaW5kZXggNmIzNjM4ZDFhOGYw
ZTFlNjc0YTM1ZmU5Y2YyZTNjYjVlZjZiOGQwYS4uNmVkNjI3ODgyMjE4NjlmZmFjYWY2NDQwYzdh
NDQ0ZTI5N2Q5M2FmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGUuY3BwCkBAIC0xMTk2LDcgKzExOTYsOSBAQCBib29sIFJlbmRlclN0eWxlOjpjaGFu
Z2VSZXF1aXJlc1JlY29tcG9zaXRlTGF5ZXIoY29uc3QgUmVuZGVyU3R5bGUmIG90aGVyLCBPcHRp
bwogICAgICAgICAgICAgfHwgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+YmFja2ZhY2VWaXNpYmls
aXR5ICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmJhY2tmYWNlVmlzaWJpbGl0eQog
ICAgICAgICAgICAgfHwgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+cGVyc3BlY3RpdmUgIT0gb3Ro
ZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+cGVyc3BlY3RpdmUKICAgICAgICAgICAgIHx8IG1f
cmFyZU5vbkluaGVyaXRlZERhdGEtPnBlcnNwZWN0aXZlT3JpZ2luWCAhPSBvdGhlci5tX3JhcmVO
b25Jbmhlcml0ZWREYXRhLT5wZXJzcGVjdGl2ZU9yaWdpblgKLSAgICAgICAgICAgIHx8IG1fcmFy
ZU5vbkluaGVyaXRlZERhdGEtPnBlcnNwZWN0aXZlT3JpZ2luWSAhPSBvdGhlci5tX3JhcmVOb25J
bmhlcml0ZWREYXRhLT5wZXJzcGVjdGl2ZU9yaWdpblkpCisgICAgICAgICAgICB8fCBtX3JhcmVO
b25Jbmhlcml0ZWREYXRhLT5wZXJzcGVjdGl2ZU9yaWdpblkgIT0gb3RoZXIubV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+cGVyc3BlY3RpdmVPcmlnaW5ZCisgICAgICAgICAgICB8fCBtX3JhcmVOb25J
bmhlcml0ZWREYXRhLT5vdmVyc2Nyb2xsQmVoYXZpb3JYICE9IG90aGVyLm1fcmFyZU5vbkluaGVy
aXRlZERhdGEtPm92ZXJzY3JvbGxCZWhhdmlvclgKKyAgICAgICAgICAgIHx8IG1fcmFyZU5vbklu
aGVyaXRlZERhdGEtPm92ZXJzY3JvbGxCZWhhdmlvclkgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+b3ZlcnNjcm9sbEJlaGF2aW9yWSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IDliMDYzZDQ2MTA4YmVlY2I3OWEyMmRjOGUxYTgzZDM5YWM3M2UyMmIu
LmU1NTIxYjc2NjRjYjUzMWM0MDMwNGQ0ZjNhNzg4YjM0MTllNmE4YjggMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyMiBAQAorMjAyMS0xMi0wMSAgTmlrb2xhb3MgTW91Y2h0YXJpcyAgPG5tb3VjaHRhcmlzQGFw
cGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgQ1NTIG92ZXJzY3JvbGwtYmVoYXZpb3IgZm9y
IGFzeW5jaHJvbm91cyBzY3JvbGwgb24gTWFjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjAxMzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1vdmVyc2Nyb2xs
LWJlaGF2aW9yLWVsZW1lbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Nj
cm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50Lmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9y
LWlmcmFtZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL21h
Yy9hc3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFi
bGUtZWxlbWVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5n
L21hYy9hc3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1vdmVyc2Nyb2xsLWJl
aGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFi
bGUtaWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL3Jlc291cmNl
cy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXN1cHBvcnQuanM6IEFkZGVkLgorICAgICAgICAoZ2V0RGVs
dGFzKToKKyAgICAgICAgKGFzeW5jIG1vdXNlV2hlZWxTY3JvbGxBbmRXYWl0KToKKwogMjAyMS0x
MS0zMCAgUm9iZXJ0IEplbm5lciAgPEplbm5lckBhcHBsZS5jb20+CiAKICAgICAgICAgUkVCQVNF
TElORSBbIE1vbnRlcmV5IF1mYXN0L2Nzcy9jb250aW51YXRpb25DcmFzaC5odG1sIChsYXlvdXQt
dGVzdCkgaXMgYSBjb25zdGFudCB0ZXh0IGZhaWx1cmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3Jv
bGwtYmVoYXZpb3ItZWxlbWVudC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjcxNTBmZjYwYjVk
YmRkMGI0YTdhYzZmODNmYjU2ZjU3Y2QyY2Q4MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjAgQEAKKworUEFTUyBFbGVtZW50IGhvcml6b250YWwg
c2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIGF1dG8uCitQQVNTIEVs
ZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRv
IGF1dG8uCitQQVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3Jv
bGwtYmVoYXZpb3I6IGNvbnRhaW4gYXV0by4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwg
dGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gYXV0by4KK1BBU1MgRWxlbWVu
dCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBh
dXRvLgorUEFTUyBFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1i
ZWhhdmlvcjogbm9uZSBhdXRvLgorUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qg
d2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIGNvbnRhaW4uCitQQVNTIEVsZW1lbnQgdmVy
dGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIGNvbnRhaW4u
CitQQVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVo
YXZpb3I6IGNvbnRhaW4gY29udGFpbi4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVz
dCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gY29udGFpbi4KK1BBU1MgRWxlbWVu
dCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBj
b250YWluLgorUEFTUyBFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9s
bC1iZWhhdmlvcjogbm9uZSBjb250YWluLgorUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xs
IHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIG5vbmUuCitQQVNTIEVsZW1lbnQg
dmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIG5vbmUu
CitQQVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVo
YXZpb3I6IGNvbnRhaW4gbm9uZS4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3
aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gbm9uZS4KK1BBU1MgRWxlbWVudCBob3Jp
em9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBub25lLgor
UEFTUyBFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlv
cjogbm9uZSBub25lLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9t
YWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50Lmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMTgxMzdiOWNiNzc5YTkxNjdkYjIyNTFkMzA2N2U0NjNlYWM5NDYzNwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1vdmVy
c2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQuaHRtbApAQCAtMCwwICsxLDg2IEBACis8IWRvY3R5cGUg
aHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBBc3luY092ZXJmbG93U2Nyb2xsaW5nRW5h
YmxlZD10cnVlIEFzeW5jRnJhbWVTY3JvbGxpbmdFbmFibGVkPXRydWUgXSAtLT4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL292ZXJzY3JvbGwtYmVoYXZpb3Itc3VwcG9ydC5q
cyI+PC9zY3JpcHQ+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vZHJhZnRzLmNzc3dn
Lm9yZy9jc3Mtb3ZlcnNjcm9sbC1iZWhhdmlvciI+Cis8c3R5bGU+CisgICAgLnNjcm9sbGluZyB7
CisgICAgICAgIG92ZXJmbG93OiBzY3JvbGw7CisgICAgfQorICAgIC5zY3JvbGxDb250ZW50IHsK
KyAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgIH0KKyAg
ICAjcm9vdCB7CisgICAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgICAgaGVpZ2h0OiAyMDBweDsK
KyAgICB9CisgICAgI3Njcm9sbGVyIHsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBo
ZWlnaHQ6IDEwMHB4OworICAgIH0KKzwvc3R5bGU+Cis8ZGl2IGlkPSdyb290JyBjbGFzcz0ic2Ny
b2xsaW5nIj4KKyAgICA8ZGl2IGlkPSdzY3JvbGxlcicgY2xhc3M9InNjcm9sbGluZyI+CisgICAg
ICAgIDxkaXYgY2xhc3M9InNjcm9sbENvbnRlbnQiPjwvZGl2PgorICAgIDwvZGl2PgorICAgIDxk
aXYgY2xhc3M9InNjcm9sbENvbnRlbnQiPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+Citjb25z
dCByb290ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jvb3QnKTsKK2NvbnN0IHNjcm9sbGVy
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Njcm9sbGVyJyk7Cit2YXIgb3ZlcnNjcm9sbERh
dGFzID0gW1siYXV0byIsICJhdXRvIiwgdHJ1ZSwgdHJ1ZV0sCisgICAgICAgICAgICAgICAgICAg
ICAgICBbImNvbnRhaW4iLCAiYXV0byIsIGZhbHNlLCB0cnVlXSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIFsibm9uZSIsICJhdXRvIiwgZmFsc2UsIHRydWVdLAorICAgICAgICAgICAgICAgICAg
ICAgICAgWyJhdXRvIiwgImNvbnRhaW4iLCB0cnVlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAg
ICAgICAgICBbImNvbnRhaW4iLCAiY29udGFpbiIsIGZhbHNlLCBmYWxzZV0sCisgICAgICAgICAg
ICAgICAgICAgICAgICBbIm5vbmUiLCAiY29udGFpbiIsIGZhbHNlLCBmYWxzZV0sCisgICAgICAg
ICAgICAgICAgICAgICAgICBbImF1dG8iLCAibm9uZSIsIHRydWUsIGZhbHNlXSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIFsiY29udGFpbiIsICJub25lIiwgZmFsc2UsIGZhbHNlXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIFsibm9uZSIsICJub25lIiwgZmFsc2UsIGZhbHNlXV07CisKK2Z1
bmN0aW9uIHJlc2V0VGVzdCgpIHsKKyAgICAvLyBUcnkgdmFyaW91cyBtZXRob2RzIHRvIGVuc3Vy
ZSB0aGUgZWxlbWVudCBwb3NpdGlvbiBpcyByZXNldCBpbW1lZGlhdGVseS4KKyAgICBzY3JvbGxl
ci5zY3JvbGxMZWZ0ID0gMzAwOworICAgIHNjcm9sbGVyLnNjcm9sbFRvcCA9IDMwMDsKKyAgICBz
Y3JvbGxlci5zY3JvbGxUbygzMDAsIDMwMCk7CisKKyAgICByb290LnNjcm9sbExlZnQgPSAwOwor
ICAgIHJvb3Quc2Nyb2xsVG9wID0gMDsKKyAgICByb290LnNjcm9sbFRvKDAsIDApOworfQorCitm
dW5jdGlvbiBzdGFydFRlc3QoKSB7CisgICAgb3ZlcnNjcm9sbERhdGFzLmZvckVhY2goKFtvdmVy
c2Nyb2xsWCwgb3ZlcnNjcm9sbFksIHByb3BhZ2F0ZVgsIHByb3BhZ2F0ZVldKSA9PiB7CisgICAg
ICAgIHByb21pc2VfdGVzdCgoKSA9PiB7CisgICAgICAgICAgICByZXNldFRlc3QoKTsKKyAgICAg
ICAgICAgIHNjcm9sbGVyLnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclggPSBvdmVyc2Nyb2xsWDsK
KyAgICAgICAgICAgIHNjcm9sbGVyLnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclkgPSBvdmVyc2Ny
b2xsWTsKKyAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGg7CisKKyAgICAgICAg
ICAgIHZhciB4ID0gc2Nyb2xsZXIuY2xpZW50V2lkdGggLyAyOworICAgICAgICAgICAgdmFyIHkg
PSBzY3JvbGxlci5jbGllbnRIZWlnaHQgLyAyOworICAgICAgICAgICAgdmFyIGRlbHRhID0gZ2V0
RGVsdGFzKCJyaWdodCIpOworICAgICAgICAgICAgcmV0dXJuIG1vdXNlV2hlZWxTY3JvbGxBbmRX
YWl0KHgsIHksIGRlbHRhLlgsIGRlbHRhLlksIGRlbHRhLlgsIGRlbHRhLlkpLnRoZW4oKCkgPT4g
eworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxMZWZ0ID4gMCwgcHJv
cGFnYXRlWCwgJ0NvbnRpbnVlIHVwIHRoZSBob3Jpem9udGFsIHNjcm9sbCBjaGFpbmluZycpOwor
ICAgICAgICAgICAgfSk7CisgICAgICAgIH0sICdFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRl
c3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiAnICsgb3ZlcnNjcm9sbFggKyAnICcgKyBvdmVy
c2Nyb2xsWSArICcuJyk7CisKKyAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAg
ICAgIHJlc2V0VGVzdCgpOworICAgICAgICAgICAgc2Nyb2xsZXIuc3R5bGUub3ZlcnNjcm9sbEJl
aGF2aW9yWCA9IG92ZXJzY3JvbGxYOworICAgICAgICAgICAgc2Nyb2xsZXIuc3R5bGUub3ZlcnNj
cm9sbEJlaGF2aW9yWSA9IG92ZXJzY3JvbGxZOworCisgICAgICAgICAgICB2YXIgeCA9IHNjcm9s
bGVyLmNsaWVudFdpZHRoIC8gMjsKKyAgICAgICAgICAgIHZhciB5ID0gc2Nyb2xsZXIuY2xpZW50
SGVpZ2h0IC8gMjsKKyAgICAgICAgICAgIHZhciBkZWx0YSA9IGdldERlbHRhcygiZG93biIpOwor
ICAgICAgICAgICAgcmV0dXJuIG1vdXNlV2hlZWxTY3JvbGxBbmRXYWl0KHgsIHksIGRlbHRhLlgs
IGRlbHRhLlksIGRlbHRhLlgsIGRlbHRhLlkpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAg
IGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxUb3AgPiAwLCBwcm9wYWdhdGVZLCAnQ29udGludWUg
dXAgdGhlIHZlcnRpY2FsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAgICAgICAgfSk7CisgICAg
ICAgIH0sICdFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhh
dmlvcjogJyArIG92ZXJzY3JvbGxYICsgJyAnICsgb3ZlcnNjcm9sbFkgKyAnLicpOworICAgIH0p
OworfQorCithZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgc3RhcnRUZXN0KTsKKzwvc2NyaXB0Pgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
c2Nyb2xsaW5nL21hYy9hc3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhh
dmlvci1pZnJhbWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkwMGEwYjdkOTA1Yjg3YzFkYjc2
MjY5NGZkMDA2MzhmMTk3Njk1MzcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMjEgQEAKKworCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0
ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBhdXRvLgorUEFTUyBJZnJhbWUgdmVy
dGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIGF1dG8uCitQ
QVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlv
cjogY29udGFpbiBhdXRvLgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBv
dmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGF1dG8uCitQQVNTIElmcmFtZSBob3Jpem9udGFs
IHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBhdXRvLgorUEFTUyBJ
ZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25l
IGF1dG8uCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9s
bC1iZWhhdmlvcjogYXV0byBjb250YWluLgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRl
c3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIGNvbnRhaW4uCitQQVNTIElmcmFtZSBo
b3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBj
b250YWluLgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xs
LWJlaGF2aW9yOiBjb250YWluIGNvbnRhaW4uCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9s
bCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBjb250YWluLgorUEFTUyBJZnJh
bWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIGNv
bnRhaW4uCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9s
bC1iZWhhdmlvcjogYXV0byBub25lLgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qg
d2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIG5vbmUuCitQQVNTIElmcmFtZSBob3Jpem9u
dGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBub25lLgor
UEFTUyBJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9y
OiBjb250YWluIG5vbmUuCitQQVNTIElmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGgg
b3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBub25lLgorUEFTUyBJZnJhbWUgdmVydGljYWwgc2Ny
b2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIG5vbmUuCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1vdmVyc2Nyb2xsLWJlaGF2
aW9yLWlmcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92
ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2Y4NzEzNjRmOTViZDc3
ZjZlNGNlOWJlYTQyODM1MTQwYjQwYzFmMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS5odG1s
CkBAIC0wLDAgKzEsODYgQEAKKzwhZG9jdHlwZSBodG1sPiA8IS0tIHdlYmtpdC10ZXN0LXJ1bm5l
ciBbIEFzeW5jT3ZlcmZsb3dTY3JvbGxpbmdFbmFibGVkPXRydWUgQXN5bmNGcmFtZVNjcm9sbGlu
Z0VuYWJsZWQ9dHJ1ZSBdIC0tPgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMv
dGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
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
ICBzY3JvbGxlci5jb250ZW50V2luZG93LnNjcm9sbFRvKDMwMCwgMzAwKTsKKyAgICAgICAgcm9v
dC5zY3JvbGxMZWZ0ID0gMDsKKyAgICAgICAgcm9vdC5zY3JvbGxUb3AgPSAwOworICAgICAgICBy
b290LnNjcm9sbFRvKDAsIDApOworICAgIH0KKworICAgIGZ1bmN0aW9uIG92ZXJzY3JvbGxCZWhh
dmlvclRlc3QoKSB7CisgICAgICAgIG92ZXJzY3JvbGxEYXRhcy5mb3JFYWNoKChbb3ZlcnNjcm9s
bFgsIG92ZXJzY3JvbGxZLCBwcm9wYWdhdGVYLCBwcm9wYWdhdGVZXSkgPT4geworICAgICAgICAg
ICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAgICAgICByZXNldFRlc3QoKTsKKyAg
ICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gc2Nyb2xsZXIuY29udGVudFdpbmRvdy5kb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaHRtbCIpWzBdOworICAgICAgICAgICAgICAgIHRhcmdl
dC5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JYID0gb3ZlcnNjcm9sbFg7CisgICAgICAgICAgICAg
ICAgdGFyZ2V0LnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclkgPSBvdmVyc2Nyb2xsWTsKKyAgICAg
ICAgICAgICAgICB2YXIgeCA9IHNjcm9sbGVyLmNsaWVudFdpZHRoIC8gMjsKKyAgICAgICAgICAg
ICAgICB2YXIgeSA9IHNjcm9sbGVyLmNsaWVudEhlaWdodCAvIDI7CisgICAgICAgICAgICAgICAg
dmFyIGRlbHRhID0gZ2V0RGVsdGFzKCJyaWdodCIpOworICAgICAgICAgICAgICAgIHJldHVybiBt
b3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCh4LCB5LCBkZWx0YS5YLCBkZWx0YS5ZLCBkZWx0YS5YLCBk
ZWx0YS5ZKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhy
b290LnNjcm9sbExlZnQgPiAwLCBwcm9wYWdhdGVYLCAnQ29udGludWUgdXAgdGhlIGhvcml6b250
YWwgc2Nyb2xsIGNoYWluaW5nJyk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9
LCAnSWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9y
OiAnICsgb3ZlcnNjcm9sbFggKyAnICcgKyBvdmVyc2Nyb2xsWSArICcuJyk7CisKKyAgICAgICAg
ICAgIHByb21pc2VfdGVzdCgoKSA9PiB7CisgICAgICAgICAgICAgICAgcmVzZXRUZXN0KCk7Cisg
ICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IHNjcm9sbGVyLmNvbnRlbnRXaW5kb3cuZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImh0bWwiKVswXTsKKyAgICAgICAgICAgICAgICB0YXJn
ZXQuc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWCA9IG92ZXJzY3JvbGxYOworICAgICAgICAgICAg
ICAgIHRhcmdldC5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JZID0gb3ZlcnNjcm9sbFk7CisKKyAg
ICAgICAgICAgICAgICB2YXIgeCA9IHNjcm9sbGVyLmNsaWVudFdpZHRoIC8gMjsKKyAgICAgICAg
ICAgICAgICB2YXIgeSA9IHNjcm9sbGVyLmNsaWVudEhlaWdodCAvIDI7CisgICAgICAgICAgICAg
ICAgdmFyIGRlbHRhID0gZ2V0RGVsdGFzKCJkb3duIik7CisgICAgICAgICAgICAgICAgcmV0dXJu
IG1vdXNlV2hlZWxTY3JvbGxBbmRXYWl0KHgsIHksIGRlbHRhLlgsIGRlbHRhLlksIGRlbHRhLlgs
IGRlbHRhLlkpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxz
KHJvb3Quc2Nyb2xsVG9wID4gMCwgcHJvcGFnYXRlWSwgJ0NvbnRpbnVlIHVwIHRoZSB2ZXJ0aWNh
bCBzY3JvbGwgY2hhaW5pbmcnKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0s
ICdJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiAn
ICsgb3ZlcnNjcm9sbFggKyAnICcgKyBvdmVyc2Nyb2xsWSArICcuJyk7CisgICAgICAgIH0pOwor
ICAgIH0KKworICAgIHNjcm9sbGVyLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBvdmVyc2Nyb2xs
QmVoYXZpb3JUZXN0KTsKKzwvc2NyaXB0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1vdmVyc2Nyb2xs
LWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2Zhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJs
ZS1lbGVtZW50LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMzk1YjY0ODhkMDg3MGI5NTYxYzAy
ODY3OWQ3ZTE1YTQ3ZmNlNmU5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9z
Y3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1l
bnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorCitQQVNTIFVuc2Nyb2xsYWJsZSBlbGVt
ZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25l
LgorUEFTUyBVbnNjcm9sbGFibGUgZWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92
ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
c2Nyb2xsaW5nL21hYy9hc3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVt
ZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9s
bC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE0NDhmMmUw
ZWE1Y2MwNzhmMWY5ZWE0YzJkN2Y3ODBlZTdiN2U1ODQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNj
cm9sbGFibGUtZWxlbWVudC5odG1sCkBAIC0wLDAgKzEsNjcgQEAKKzwhZG9jdHlwZSBodG1sPiA8
IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIEFzeW5jT3ZlcmZsb3dTY3JvbGxpbmdFbmFibGVkPXRy
dWUgQXN5bmNGcmFtZVNjcm9sbGluZ0VuYWJsZWQ9dHJ1ZSBdIC0tPgorCis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXN1cHBvcnQuanMiPjwv
c2NyaXB0PgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcv
Y3NzLW92ZXJzY3JvbGwtYmVoYXZpb3IiPgorPHN0eWxlPgorICAgIC5zY3JvbGxpbmcgeworICAg
ICAgICBvdmVyZmxvdzogc2Nyb2xsOworICAgIH0KKyAgICAuc2Nyb2xsQ29udGVudCB7CisgICAg
ICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICB9CisgICAgI3Jv
b3QgeworICAgICAgICB3aWR0aDogMjAwcHg7CisgICAgICAgIGhlaWdodDogMjAwcHg7CisgICAg
fQorICAgICNzY3JvbGxlciB7CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgaGVpZ2h0
OiAxMDBweDsKKyAgICAgICAgb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZTsKKyAgICAgICAgb3Zl
cmZsb3c6IHZpc2libGU7CisgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVk
ZWcsIHJlZCwgYmx1ZSk7CisgICAgfQorPC9zdHlsZT4KKzxkaXYgaWQ9InJvb3QiIGNsYXNzPSJz
Y3JvbGxpbmciPgorICAgIDxkaXYgaWQ9InNjcm9sbGVyIj4KKyAgICAgICAgPGRpdiBjbGFzcz0i
c2Nyb2xsQ29udGVudCI+PC9kaXY+CisgICAgPC9kaXY+CisgICAgPGRpdiBjbGFzcz0ic2Nyb2xs
Q29udGVudCI+PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4KK2NvbnN0IHJvb3QgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgncm9vdCcpOworY29uc3Qgc2Nyb2xsZXIgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnc2Nyb2xsZXInKTsKKworZnVuY3Rpb24gcmVzZXRUZXN0KCkgeworICAgIHJv
b3Quc2Nyb2xsTGVmdCA9IDA7CisgICAgcm9vdC5zY3JvbGxUb3AgPSAwOworICAgIHJvb3Quc2Ny
b2xsVG8oMCwgMCk7Cit9CisKK2Z1bmN0aW9uIHN0YXJ0VGVzdCgpIHsKKyAgICAgICAgcHJvbWlz
ZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAgIHJlc2V0VGVzdCgpOworICAgICAgICAgICAgdmFy
IHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAgICAgICAgICB2YXIgeSA9IHNjcm9s
bGVyLmNsaWVudEhlaWdodCAvIDI7CisgICAgICAgICAgICB2YXIgZGVsdGEgPSBnZXREZWx0YXMo
InJpZ2h0Iik7CisgICAgICAgICAgICByZXR1cm4gbW91c2VXaGVlbFNjcm9sbEFuZFdhaXQoeCwg
eSwgZGVsdGEuWCwgZGVsdGEuWSwgZGVsdGEuWCwgZGVsdGEuWSkudGhlbigoKSA9PiB7CisgICAg
ICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbExlZnQgPiAwLCB0cnVlLCAnQ29u
dGludWUgdXAgdGhlIGhvcml6b250YWwgc2Nyb2xsIGNoYWluaW5nJyk7CisgICAgICAgICAgICB9
KTsKKyAgICAgICAgfSwgJ1Vuc2Nyb2xsYWJsZSBlbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRl
c3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLicpOworCisgICAgICAgIHByb21pc2Vf
dGVzdCgoKSA9PiB7CisgICAgICAgICAgICByZXNldFRlc3QoKTsKKyAgICAgICAgICAgIHZhciB4
ID0gc2Nyb2xsZXIuY2xpZW50V2lkdGggLyAyOworICAgICAgICAgICAgdmFyIHkgPSBzY3JvbGxl
ci5jbGllbnRIZWlnaHQgLyAyOworICAgICAgICAgICAgdmFyIGRlbHRhID0gZ2V0RGVsdGFzKCJk
b3duIik7CisgICAgICAgICAgICByZXR1cm4gbW91c2VXaGVlbFNjcm9sbEFuZFdhaXQoeCwgeSwg
ZGVsdGEuWCwgZGVsdGEuWSwgZGVsdGEuWCwgZGVsdGEuWSkudGhlbigoKSA9PiB7CisgICAgICAg
ICAgICAgICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbFRvcCA+IDAsIHRydWUsICdDb250aW51
ZSB1cCB0aGUgdmVydGljYWwgc2Nyb2xsIGNoYWluaW5nJyk7CisgICAgICAgICAgICB9KTsKKyAg
ICAgICAgfSwgJ1Vuc2Nyb2xsYWJsZSBlbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGgg
b3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4nKTsKK30KKworYWRkRXZlbnRMaXN0ZW5lcigibG9h
ZCIsIHN0YXJ0VGVzdCk7Cis8L3NjcmlwdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9s
bC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2Zhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJs
ZS1pZnJhbWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdmYTU5Y2NiYTc5YWVmZjMzZGE3MGU5
M2Q0ODhhMDdlZWM5YzU2OTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Nj
cm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1l
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKKworCitQQVNTIFVuc2Nyb2xsYWJsZSBpZnJh
bWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUu
CitQQVNTIFVuc2Nyb2xsYWJsZSBpZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVy
c2Nyb2xsLWJlaGF2aW9yOiBub25lLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Nj
cm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1l
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1i
ZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzNlYzViMjYzYzJi
ODNiZTFhNTI4NzE2Y2U4NjU2M2Q5N2FjZDFkNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xs
YWJsZS1pZnJhbWUuaHRtbApAQCAtMCwwICsxLDY2IEBACis8IWRvY3R5cGUgaHRtbD4gPCEtLSB3
ZWJraXQtdGVzdC1ydW5uZXIgWyBBc3luY092ZXJmbG93U2Nyb2xsaW5nRW5hYmxlZD10cnVlIEFz
eW5jRnJhbWVTY3JvbGxpbmdFbmFibGVkPXRydWUgXSAtLT4KKworPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi9yZXNvdXJjZXMvb3ZlcnNjcm9sbC1iZWhhdmlvci1zdXBwb3J0LmpzIj48L3Njcmlw
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
IHRydWUsICdDb250aW51ZSB1cCB0aGUgaG9yaXpvbnRhbCBzY3JvbGwgY2hhaW5pbmcnKTsKKyAg
ICAgICAgICAgIH0pOworICAgICAgICB9LCAnVW5zY3JvbGxhYmxlIGlmcmFtZSBob3Jpem9udGFs
IHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4nKTsKKworICAgICAg
ICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgICAgICAgICAgcmVzZXRUZXN0KCk7CisgICAgICAg
ICAgICB2YXIgeCA9IHNjcm9sbGVyLmNsaWVudFdpZHRoIC8gMjsKKyAgICAgICAgICAgIHZhciB5
ID0gc2Nyb2xsZXIuY2xpZW50SGVpZ2h0IC8gMjsKKyAgICAgICAgICAgIHZhciBkZWx0YSA9IGdl
dERlbHRhcygiZG93biIpOworICAgICAgICAgICAgcmV0dXJuIG1vdXNlV2hlZWxTY3JvbGxBbmRX
YWl0KHgsIHksIGRlbHRhLlgsIGRlbHRhLlksIGRlbHRhLlgsIGRlbHRhLlkpLnRoZW4oKCkgPT4g
eworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxUb3AgPiAwLCB0cnVl
LCAnQ29udGludWUgdXAgdGhlIHZlcnRpY2FsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAgICAg
ICAgfSk7CisgICAgICAgIH0sICdVbnNjcm9sbGFibGUgaWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0
ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4nKTsKK30KKworYWRkRXZlbnRMaXN0
ZW5lcigibG9hZCIsIHN0YXJ0VGVzdCk7Cis8L3NjcmlwdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9yZXNvdXJjZXMv
b3ZlcnNjcm9sbC1iZWhhdmlvci1zdXBwb3J0LmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxp
bmcvcmVzb3VyY2VzL292ZXJzY3JvbGwtYmVoYXZpb3Itc3VwcG9ydC5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5j
YmQyMjJlOTBiNTJhMTkzMGI3ZmNmZTQ0MjNlOTQ1ODNjMDQ2MDBlCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvcmVzb3VyY2VzL292ZXJzY3JvbGwtYmVoYXZp
b3Itc3VwcG9ydC5qcwpAQCAtMCwwICsxLDM5IEBACitmdW5jdGlvbiBnZXREZWx0YXMoZGlyZWN0
aW9uKSB7CisgICAgdmFyIGRlbHRhWCA9IDA7CisgICAgdmFyIGRlbHRhWSA9IDA7CisgICAgaWYg
KGRpcmVjdGlvbiA9PSAiZG93biIpCisgICAgICAgIGRlbHRhWSA9IC01CisgICAgZWxzZSBpZiAo
ZGlyZWN0aW9uID09ICJ1cCIpCisgICAgICAgIGRlbHRhWSA9IDU7CisgICAgZWxzZSBpZiAoZGly
ZWN0aW9uID09ICJyaWdodCIpCisgICAgICAgIGRlbHRhWCA9IC01OworICAgIGVsc2UgaWYgKGRp
cmVjdGlvbiA9PSAibGVmdCIpCisgICAgICAgIGRlbHRhWCA9IDU7CisgICAgcmV0dXJuIHsKKyAg
ICAgICAgWDogZGVsdGFYLAorICAgICAgICBZOiBkZWx0YVkKKyAgICB9OworfQorCithc3luYyBm
dW5jdGlvbiBtb3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCh4LCB5LCBiZWdpblgsIGJlZ2luWSwgZGVs
dGFYLCBkZWx0YVkpCit7CisgICAgaWYgKGJlZ2luWCA9PT0gdW5kZWZpbmVkKQorICAgICAgICBi
ZWdpblggPSAwOworICAgIGlmIChiZWdpblkgPT09IHVuZGVmaW5lZCkKKyAgICAgICAgYmVnaW5Z
ID0gLTE7CisgICAgaWYgKGRlbHRhWCA9PT0gdW5kZWZpbmVkKQorICAgICAgICBkZWx0YVggPSAw
OworICAgIGlmIChkZWx0YVkgPT09IHVuZGVmaW5lZCkKKyAgICAgICAgZGVsdGFZID0gLTEwOwor
CisgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgZXZlbnRTZW5kZXIu
bW91c2VNb3ZlVG8oeCwgeSk7CisgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGJlZ2luWCwgYmVnaW5ZLCAiYmVnYW4iLCAibm9uZSIpOworICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkZWx0
YVgsIGRlbHRhWSwgImNoYW5nZWQiLCAibm9uZSIpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAiZW5kZWQiLCAibm9uZSIpOwor
ICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICAgICAgc2V0VGltZW91dCgo
KSA9PiB7CisgICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUocmVzb2x2ZSk7CisgICAg
ICAgIH0sIDUwMCk7CisgICAgfSk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449877</attachid>
            <date>2022-01-24 15:58:57 -0800</date>
            <delta_ts>2022-01-25 13:11:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220139-20220124155856.patch</filename>
            <type>text/plain</type>
            <size>36324</size>
            <attacher name="Nikos Mouchtaris">nmouchtaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MzUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGJiNmQyZjJmYmNkN2I3
ODU1MzIxY2U1YjgwMWQ1YzJmYWNiMzhmNC4uODBhYWE0YzRhYWIwNzIyNjM2NGFhM2M1ZTE0YzA2
YTQ4ZDNiNjNmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDIxLTEyLTAxICBOaWtv
bGFvcyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxl
bWVudCBDU1Mgb3ZlcnNjcm9sbC1iZWhhdmlvciBmb3IgYXN5bmNocm9ub3VzIHNjcm9sbCBvbiBN
YWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDEz
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNwbGl0
IHVwIHBhdGNoIGJ5IENhdGhpZSBDaGVuIGFuZCBGcmVkZXJpYyBXYW5nLiBBZGQgZnVuY3Rpb24g
Zm9yIGJsb2NraW5nIHNjcm9sbCBjaGFpbmluZworICAgICAgICBhbmQgZmlsdGVyaW5nIHNjcm9s
bCBkZWx0YSBkZXBlbmRpbmcgb24gdGhlIHZhbHVlcyBvZiBvdmVyc2Nyb2xsIGJlaGF2aW9yIGZv
ciBhIHNjcm9sbGluZworICAgICAgICBub2RlLiBUaGlzIHBhdGNoIGlzIGZvciBhc3luY2hyb25v
dXMgc2Nyb2xsaW5nIG9ubHkuCisKKyAgICAgICAgVGVzdHM6IGZhc3Qvc2Nyb2xsaW5nL21hYy9h
c3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQuaHRtbAorICAgICAgICAgICAgICAgZmFz
dC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0bWwKKyAg
ICAgICAgICAgICAgIGZhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9y
LXVuc2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvc2Nyb2xsaW5n
L21hYy9hc3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUuaHRtbAor
CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxpbmdUcmVlOjpzaG91bGRCbG9ja1Njcm9sbENoYWluaW5nV2l0aE5vZGUp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZTo6aGFuZGxlV2hlZWxFdmVudFdpdGhO
b2RlKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmg6CisgICAgICAg
ICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaDoKKyAgICAgICAg
KiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdh
dGVNYWM6OmFsbG93c0hvcml6b250YWxTdHJldGNoaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OmFsbG93c1ZlcnRpY2Fs
U3RyZXRjaGluZyBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9z
aXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWNvbXBvc2l0ZUNoYW5nZVJlcXVpcmVzR2Vv
bWV0cnlVcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpy
b290T3JCb2R5U3R5bGVDaGFuZ2VkKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmNoYW5nZVJlcXVpcmVz
UmVjb21wb3NpdGVMYXllciBjb25zdCk6CisKIDIwMjEtMTEtMzAgIFNpbW9uIEZyYXNlciAgPHNp
bW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUGFzcyB0aGUgdGltZXN0YW1wIGZvciBz
Y3JvbGxpbmcgdGhyZWFkIGFuaW1hdGlvbnMgdGhyb3VnaCBhbGwgdGhlIHNlcnZpY2VTY3JvbGxB
bmltYXRpb24oKSBjYWxscwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAppbmRleCBkOTRmZjEzMDZiNzll
MjhmYjY4OTkwMDY5NzcwOGFiMjhkYmNmNTJkLi44MmY3NTdhMjdiM2IwNzI0MDA2ZDcyYTUzODJl
MzRmYTRjYTk0NjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9B
c3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcApAQCAtNzg3LDggKzc4Nyw4IEBA
IHZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0U2Nyb2xsaW5nTm9kZVNjcm9sbGFi
bGVBcmVhR2VvbWV0cnkoU2Nyb2xsaW5nCiAgICAgc2Nyb2xsaW5nTm9kZS5zZXRTY3JvbGxhYmxl
QXJlYVNpemUoc2Nyb2xsYWJsZUFyZWEudmlzaWJsZVNpemUoKSk7CiAKICAgICBTY3JvbGxhYmxl
QXJlYVBhcmFtZXRlcnMgc2Nyb2xsUGFyYW1ldGVyczsKLSAgICBzY3JvbGxQYXJhbWV0ZXJzLmhv
cml6b250YWxTY3JvbGxFbGFzdGljaXR5ID0gc2Nyb2xsYWJsZUFyZWEuaG9yaXpvbnRhbFNjcm9s
bEVsYXN0aWNpdHkoKTsKLSAgICBzY3JvbGxQYXJhbWV0ZXJzLnZlcnRpY2FsU2Nyb2xsRWxhc3Rp
Y2l0eSA9IHNjcm9sbGFibGVBcmVhLnZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eSgpOworICAgIHNj
cm9sbFBhcmFtZXRlcnMuaG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkgPSBzY3JvbGxhYmxlQXJl
YS5ob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgPT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpO
b25lID8gU2Nyb2xsRWxhc3RpY2l0eTo6Tm9uZSA6IHNjcm9sbGFibGVBcmVhLmhvcml6b250YWxT
Y3JvbGxFbGFzdGljaXR5KCk7CisgICAgc2Nyb2xsUGFyYW1ldGVycy52ZXJ0aWNhbFNjcm9sbEVs
YXN0aWNpdHkgPSBzY3JvbGxhYmxlQXJlYS52ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpID09
IE92ZXJzY3JvbGxCZWhhdmlvcjo6Tm9uZSA/IFNjcm9sbEVsYXN0aWNpdHk6Ok5vbmUgOiBzY3Jv
bGxhYmxlQXJlYS52ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkoKTsKICAgICBzY3JvbGxQYXJhbWV0
ZXJzLmFsbG93c0hvcml6b250YWxTY3JvbGxpbmcgPSBzY3JvbGxhYmxlQXJlYS5hbGxvd3NIb3Jp
em9udGFsU2Nyb2xsaW5nKCk7CiAgICAgc2Nyb2xsUGFyYW1ldGVycy5hbGxvd3NWZXJ0aWNhbFNj
cm9sbGluZyA9IHNjcm9sbGFibGVBcmVhLmFsbG93c1ZlcnRpY2FsU2Nyb2xsaW5nKCk7CiAgICAg
c2Nyb2xsUGFyYW1ldGVycy5ob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yID0gc2Nyb2xsYWJs
ZUFyZWEuaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcAppbmRleCAyZGU2NWMyMmY5YjdmOTQw
ZTFlYmNmZmJjNDVlY2Q2MDZhNDk5Yzg0Li40MGI5N2NmYzcxMWNjZDY5YTZjYjk0Nzc4YmYzMjVh
NTM3MTYzODc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdUcmVlLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNp
bmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1XaGVlbEV2ZW50LmgiCisjaW5j
bHVkZSAiU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTY3JvbGxpbmdT
dGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZS5oIgogI2luY2x1ZGUgIlNjcm9sbGluZ1N0YXRlVHJlZS5o
IgogI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUuaCIKQEAgLTIwMSwx
MCArMjAyLDExIEBAIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdCBTY3JvbGxpbmdUcmVlOjpoYW5k
bGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVuCiAKIFdoZWVsRXZlbnRIYW5kbGlu
Z1Jlc3VsdCBTY3JvbGxpbmdUcmVlOjpoYW5kbGVXaGVlbEV2ZW50V2l0aE5vZGUoY29uc3QgUGxh
dGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBPcHRpb25TZXQ8V2hlZWxFdmVudFByb2Nlc3Np
bmdTdGVwcz4gcHJvY2Vzc2luZ1N0ZXBzLCBTY3JvbGxpbmdUcmVlTm9kZSogbm9kZSwgRXZlbnRU
YXJnZXRpbmcgZXZlbnRUYXJnZXRpbmcpCiB7CisgICAgYXV0byBhZGp1c3RlZFdoZWVsRXZlbnQg
PSB3aGVlbEV2ZW50OwogICAgIHdoaWxlIChub2RlKSB7CiAgICAgICAgIGlmIChpczxTY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZT4oKm5vZGUpKSB7CiAgICAgICAgICAgICBhdXRvJiBzY3JvbGxp
bmdOb2RlID0gZG93bmNhc3Q8U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU+KCpub2RlKTsKLSAg
ICAgICAgICAgIGF1dG8gcmVzdWx0ID0gc2Nyb2xsaW5nTm9kZS5oYW5kbGVXaGVlbEV2ZW50KHdo
ZWVsRXZlbnQsIGV2ZW50VGFyZ2V0aW5nKTsKKyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gc2Ny
b2xsaW5nTm9kZS5oYW5kbGVXaGVlbEV2ZW50KGFkanVzdGVkV2hlZWxFdmVudCwgZXZlbnRUYXJn
ZXRpbmcpOwogCiAgICAgICAgICAgICBpZiAocmVzdWx0Lndhc0hhbmRsZWQpIHsKICAgICAgICAg
ICAgICAgICBtX2xhdGNoaW5nQ29udHJvbGxlci5ub2RlRGlkSGFuZGxlRXZlbnQoc2Nyb2xsaW5n
Tm9kZS5zY3JvbGxpbmdOb2RlSUQoKSwgcHJvY2Vzc2luZ1N0ZXBzLCB3aGVlbEV2ZW50LCBtX2Fs
bG93TGF0Y2hpbmcpOwpAQCAtMjE0LDYgKzIxNiwxNSBAQCBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1
bHQgU2Nyb2xsaW5nVHJlZTo6aGFuZGxlV2hlZWxFdmVudFdpdGhOb2RlKGNvbnN0IFBsYXRmb3Jt
VwogCiAgICAgICAgICAgICBpZiAocmVzdWx0Lm5lZWRzTWFpblRocmVhZFByb2Nlc3NpbmcoKSB8
fCBldmVudFRhcmdldGluZyAhPSBFdmVudFRhcmdldGluZzo6UHJvcGFnYXRlKQogICAgICAgICAg
ICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGF1dG8gcmV0
ID0gc2Nyb2xsaW5nTm9kZS5zaG91bGRCbG9ja1Njcm9sbFByb3BhZ2F0aW9uRmlsdGVyKGFkanVz
dGVkV2hlZWxFdmVudCk7CisgICAgICAgICAgICBpZiAocmV0LnNob3VsZEJsb2NrU2Nyb2xsUHJv
cG9nYXRpb24pIHsKKyAgICAgICAgICAgICAgICBpZiAoIXJldC5pc0hhbmRsZWQpCisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQ6OnVuaGFuZGxlZCgp
OworICAgICAgICAgICAgICAgIG1fbGF0Y2hpbmdDb250cm9sbGVyLm5vZGVEaWRIYW5kbGVFdmVu
dChzY3JvbGxpbmdOb2RlLnNjcm9sbGluZ05vZGVJRCgpLCBwcm9jZXNzaW5nU3RlcHMsIHdoZWVs
RXZlbnQsIG1fYWxsb3dMYXRjaGluZyk7CisgICAgICAgICAgICAgICAgbV9nZXN0dXJlU3RhdGUu
bm9kZURpZEhhbmRsZUV2ZW50KHNjcm9sbGluZ05vZGUuc2Nyb2xsaW5nTm9kZUlEKCksIHdoZWVs
RXZlbnQpOworICAgICAgICAgICAgICAgIHJldHVybiBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQ6
OmhhbmRsZWQoKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIGlmIChpczxT
Y3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxQcm94eU5vZGU+KCpub2RlKSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGUuY3BwCmluZGV4IDRkN2M1MGZiNmMxNzE3MTlhYjg0M2FlOTYwOTRiMGIzMzFiNWE2
MWQuLjk2YWM5MmNhM2U1YmY3OWE3ODUzNzgzOWQzYzc1Y2YzNDdmZjA3M2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpZiBFTkFCTEUoU0NST0xMSU5HX1RI
UkVBRCkKICNpbmNsdWRlICJTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZS5oIgogI2Vu
ZGlmCisjaW1wb3J0ICJTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNj
cm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5oIgogI2luY2x1ZGUgIlNjcm9sbGluZ1N0YXRlVHJl
ZS5oIgogI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWUuaCIKQEAgLTEyMSw2ICsxMjIsMTYgQEAgYm9v
bCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6aXNMYXRjaGVkTm9kZSgpIGNvbnN0CiAgICAg
cmV0dXJuIHNjcm9sbGluZ1RyZWUoKS5sYXRjaGVkTm9kZUlEKCkgPT0gc2Nyb2xsaW5nTm9kZUlE
KCk7CiB9CiAKK2Jvb2wgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OnNob3VsZFJ1YmJlckJh
bmQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBFdmVudFRhcmdldGluZyBl
dmVudFRhcmdldGluZykgY29uc3QKK3sKKyAgICBhdXRvIHNob3VsZEJsb2NrID0gc2hvdWxkQmxv
Y2tTY3JvbGxQcm9wYWdhdGlvbih3aGVlbEV2ZW50LmRlbHRhKCkpOworICAgIC8vIFdlIGFsd2F5
cyBydWJiZXItYmFuZCB0aGUgbGF0Y2hlZCBub2RlLCBvciB0aGUgcm9vdCBub2RlLgorICAgIC8v
IFRoZSBzdGF0ZWxlc3Mgd2hlZWwgZXZlbnQgZG9lc24ndCB0cmlnZ2VyIHJ1YmJlci1iYW5kLgor
ICAgIC8vIEFsc28gcnViYmVyYmFuZCB3aGVuIHdlIHNob3VsZCBibG9jayBzY3JvbGwgcHJvcG9n
YXRpb24KKyAgICAvLyBhdCB0aGlzIG5vZGUsIHdoaWNoIGhhcyBvdmVyc2Nyb2xsIGJlaGF2aW9y
IHRoYXQgaXMgbm90IG5vbmUuCisgICAgcmV0dXJuIChpc0xhdGNoZWROb2RlKCkgfHwgZXZlbnRU
YXJnZXRpbmcgPT0gRXZlbnRUYXJnZXRpbmc6Ok5vZGVPbmx5IHx8IChpc1Jvb3ROb2RlKCkgJiYg
IXdoZWVsRXZlbnQuaXNOb25HZXN0dXJlRXZlbnQoKSkgfHwgKHNob3VsZEJsb2NrLnNob3VsZEJs
b2NrU2Nyb2xsUHJvcG9nYXRpb24gJiYgc2hvdWxkQmxvY2suaXNIYW5kbGVkICYmIG92ZXJzY3Jv
bGxCZWhhdmlvckFsbG93UnViYmVyQmFuZCgpKSk7Cit9CisKIGJvb2wgU2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGU6OmNhbkhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50
JiB3aGVlbEV2ZW50LCBFdmVudFRhcmdldGluZyBldmVudFRhcmdldGluZykgY29uc3QKIHsKICAg
ICBpZiAoIWNhbkhhdmVTY3JvbGxiYXJzKCkpCkBAIC0xMzAsOSArMTQxLDcgQEAgYm9vbCBTY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6Y2FuSGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9y
bVdoZWVsRXZlbnQmIHcKICAgICBpZiAod2hlZWxFdmVudC5waGFzZSgpID09IFBsYXRmb3JtV2hl
ZWxFdmVudFBoYXNlOjpNYXlCZWdpbikKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICAvLyBX
ZSBhbHdheXMgcnViYmVyLWJhbmQgdGhlIGxhdGNoZWQgbm9kZSwgb3IgdGhlIHJvb3Qgbm9kZS4K
LSAgICAvLyBUaGUgc3RhdGVsZXNzIHdoZWVsIGV2ZW50IGRvZXNuJ3QgdHJpZ2dlciBydWJiZXIt
YmFuZC4KLSAgICBpZiAoaXNMYXRjaGVkTm9kZSgpIHx8IGV2ZW50VGFyZ2V0aW5nID09IEV2ZW50
VGFyZ2V0aW5nOjpOb2RlT25seSB8fCAoaXNSb290Tm9kZSgpICYmICF3aGVlbEV2ZW50LmlzTm9u
R2VzdHVyZUV2ZW50KCkpKQorICAgIGlmIChzaG91bGRSdWJiZXJCYW5kKHdoZWVsRXZlbnQsIGV2
ZW50VGFyZ2V0aW5nKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICByZXR1cm4gZXZlbnRD
YW5TY3JvbGxDb250ZW50cyh3aGVlbEV2ZW50KTsKQEAgLTM5Miw2ICs0MDEsNDUgQEAgdm9pZCBT
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6c2V0Q3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5k
ZXgoc3RkOjpvcHRpb25hbDwKICAgICBtX2N1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4ID0g
aW5kZXg7CiB9CiAKK0Jsb2NrU2Nyb2xsUHJvcG9nYXRpb24gU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGU6OnNob3VsZEJsb2NrU2Nyb2xsUHJvcGFnYXRpb25GaWx0ZXIoUGxhdGZvcm1XaGVlbEV2
ZW50JiB3aGVlbEV2ZW50KSBjb25zdAoreworICAgIEZsb2F0U2l6ZSBmaWx0ZXJlZERlbHRhKHdo
ZWVsRXZlbnQuZGVsdGFYKCksIHdoZWVsRXZlbnQuZGVsdGFZKCkpOworI2lmIFBMQVRGT1JNKE1B
QykKKyAgICBhdXRvIGJpYXNlZERlbHRhID0gU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6Ondo
ZWVsRGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRpY2FsKHdoZWVsRXZlbnQpOworI2Vsc2UKKyAgICBh
dXRvIGJpYXNlZERlbHRhID0gd2hlZWxFdmVudC5kZWx0YSgpOworI2VuZGlmCisgICAgQmxvY2tT
Y3JvbGxQcm9wb2dhdGlvbiByZXQgPSBzaG91bGRCbG9ja1Njcm9sbFByb3BhZ2F0aW9uKGJpYXNl
ZERlbHRhKTsKKyAgICBpZiAoaGFzSG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpIHx8IGhh
c1ZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkpIHsKKyAgICAgICAgaWYgKHJldC5zaG91bGRC
bG9ja1Njcm9sbFByb3BvZ2F0aW9uKQorICAgICAgICAgICAgcmV0dXJuIHJldDsKKyAgICAgICAg
CisgICAgICAgIGZpbHRlcmVkRGVsdGEuc2V0V2lkdGgoaGFzSG9yaXpvbnRhbE92ZXJzY3JvbGxC
ZWhhdmlvcigpIHx8IChoYXNWZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpICYmICFiaWFzZWRE
ZWx0YS53aWR0aCgpKSA/IDAgOiBmaWx0ZXJlZERlbHRhLndpZHRoKCkpOworICAgICAgICBmaWx0
ZXJlZERlbHRhLnNldEhlaWdodChoYXNWZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpIHx8ICho
YXNIb3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgJiYgIWJpYXNlZERlbHRhLmhlaWdodCgp
KSA/IDAgOiBmaWx0ZXJlZERlbHRhLmhlaWdodCgpKTsKKyAgICAgICAgd2hlZWxFdmVudCA9IHdo
ZWVsRXZlbnQuY29weVdpdGhEZWx0YUFuZFZlbG9jaXR5KGZpbHRlcmVkRGVsdGEsIHdoZWVsRXZl
bnQuc2Nyb2xsaW5nVmVsb2NpdHkoKSk7CisgICAgfQorICAgIHJldHVybiByZXQ7Cit9CisKK0Js
b2NrU2Nyb2xsUHJvcG9nYXRpb24gU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OnNob3VsZEJs
b2NrU2Nyb2xsUHJvcGFnYXRpb24oY29uc3QgRmxvYXRTaXplJiBkZWx0YSkgY29uc3QKK3sKKyAg
ICBCbG9ja1Njcm9sbFByb3BvZ2F0aW9uIHJldCA9IHsgZmFsc2UsIGZhbHNlIH07CisgICAgaWYg
KGhhc0hvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSB8fCBoYXNWZXJ0aWNhbE92ZXJzY3Jv
bGxCZWhhdmlvcigpKSB7CisgICAgICAgIGlmIChoYXNIb3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2
aW9yKCkgJiYgIWRlbHRhLmhlaWdodCgpICYmIGRlbHRhLndpZHRoKCkpIHsKKyAgICAgICAgICAg
IHJldC5zaG91bGRCbG9ja1Njcm9sbFByb3BvZ2F0aW9uID0gdHJ1ZTsKKyAgICAgICAgICAgIHJl
dC5pc0hhbmRsZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybiByZXQ7CisgICAgICAgIH0K
KyAgICAgICAgCisgICAgICAgIGlmICgoaGFzSG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigp
ICYmIGhhc1ZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkpIHx8IChoYXNIb3Jpem9udGFsT3Zl
cnNjcm9sbEJlaGF2aW9yKCkgJiYgIWRlbHRhLmhlaWdodCgpKSB8fCAoaGFzVmVydGljYWxPdmVy
c2Nyb2xsQmVoYXZpb3IoKSAmJiAhZGVsdGEud2lkdGgoKSkpIHsKKyAgICAgICAgICAgIHJldC5z
aG91bGRCbG9ja1Njcm9sbFByb3BvZ2F0aW9uID0gdHJ1ZTsKKyAgICAgICAgICAgIHJldC5pc0hh
bmRsZWQgPSB0cnVlOworICAgICAgICAgICAgcmV0dXJuIHJldDsKKyAgICAgICAgfQorICAgIH0K
KyAgICByZXR1cm4gcmV0OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAv
LyBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmgKaW5kZXggYjlmNTQz
MDcwMTZlMjA4ZDRhNmM1ZjBiM2UxMzFkOTk3NWQ4ZTY1NS4uZGM2Y2M5NDc4NGViNmQ5ZDAwYzk5
MTc1NzkzOTU0OTU4YTcwOWY1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oCkBAIC0zOCw2ICszOCwx
MCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTY3JvbGxpbmdUcmVlOwogY2xhc3MgU2Ny
b2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOwogc3RydWN0IFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3Vs
dDsKK3N0cnVjdCBCbG9ja1Njcm9sbFByb3BvZ2F0aW9uIHsKKyAgICBib29sIHNob3VsZEJsb2Nr
U2Nyb2xsUHJvcG9nYXRpb247CisgICAgYm9vbCBpc0hhbmRsZWQ7Cit9OwogCiBjbGFzcyBXRUJD
T1JFX0VYUE9SVCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZSA6IHB1YmxpYyBTY3JvbGxpbmdU
cmVlTm9kZSB7CiAgICAgZnJpZW5kIGNsYXNzIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVs
ZWdhdGU7CkBAIC0xNTksNyArMTYzLDE0IEBAIHByb3RlY3RlZDoKIAogICAgIGJvb2wgYWxsb3dz
SG9yaXpvbnRhbFNjcm9sbGluZygpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWFQYXJh
bWV0ZXJzLmFsbG93c0hvcml6b250YWxTY3JvbGxpbmc7IH0KICAgICBib29sIGFsbG93c1ZlcnRp
Y2FsU2Nyb2xsaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMu
YWxsb3dzVmVydGljYWxTY3JvbGxpbmc7IH0KLQorICAgIE92ZXJzY3JvbGxCZWhhdmlvciBob3Jp
em9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxhYmxlQXJl
YVBhcmFtZXRlcnMuaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcjsgfQorICAgIE92ZXJzY3Jv
bGxCZWhhdmlvciB2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpIGNvbnN0IHsgcmV0dXJuIG1f
c2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzLnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yOyB9Cisg
ICAgYm9vbCBoYXNIb3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29uc3QgeyByZXR1cm4g
bV9zY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMuaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvciAh
PSBPdmVyc2Nyb2xsQmVoYXZpb3I6OkF1dG87IH0KKyAgICBib29sIGhhc1ZlcnRpY2FsT3ZlcnNj
cm9sbEJlaGF2aW9yKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMu
dmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IgIT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpBdXRvOyB9
CisgICAgQmxvY2tTY3JvbGxQcm9wb2dhdGlvbiBzaG91bGRCbG9ja1Njcm9sbFByb3BhZ2F0aW9u
RmlsdGVyKFBsYXRmb3JtV2hlZWxFdmVudCYpIGNvbnN0OworICAgIEJsb2NrU2Nyb2xsUHJvcG9n
YXRpb24gc2hvdWxkQmxvY2tTY3JvbGxQcm9wYWdhdGlvbihjb25zdCBGbG9hdFNpemUmKSBjb25z
dDsKKyAgICBib29sIG92ZXJzY3JvbGxCZWhhdmlvckFsbG93UnViYmVyQmFuZCgpIGNvbnN0IHsg
cmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzLmhvcml6b250YWxPdmVyc2Nyb2xsQmVo
YXZpb3IgIT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpOb25lIHx8ICBtX3Njcm9sbGFibGVBcmVhUGFy
YW1ldGVycy52ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvciAhPSBPdmVyc2Nyb2xsQmVoYXZpb3I6
Ok5vbmU7IH0KKyAgICBib29sIHNob3VsZFJ1YmJlckJhbmQoY29uc3QgUGxhdGZvcm1XaGVlbEV2
ZW50JiwgRXZlbnRUYXJnZXRpbmcpIGNvbnN0OwogICAgIHZvaWQgZHVtcFByb3BlcnRpZXMoV1RG
OjpUZXh0U3RyZWFtJiwgT3B0aW9uU2V0PFNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dEJlaGF2aW9y
PikgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCmluZGV4IGJmMGJmZGUwYzU5NjhmMWJh
M2MwMTQyNmQ5YjNkZDc3MzExMmRhNGMuLjU1Y2FjNWQ4ZDE2OGU5NzAwZTUwYmQ3YjJjNzE4MThm
OTk3NDhkYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckNvbXBvc2l0b3IuY3BwCkBAIC0xNjUyLDcgKzE2NTIsOSBAQCBzdGF0aWMgYm9vbCByZWNvbXBv
c2l0ZUNoYW5nZVJlcXVpcmVzR2VvbWV0cnlVcGRhdGUoY29uc3QgUmVuZGVyU3R5bGUmIG9sZFN0
eWxlLAogICAgICAgICB8fCBvbGRTdHlsZS5vZmZzZXRQb3NpdGlvbigpICE9IG5ld1N0eWxlLm9m
ZnNldFBvc2l0aW9uKCkKICAgICAgICAgfHwgb2xkU3R5bGUub2Zmc2V0RGlzdGFuY2UoKSAhPSBu
ZXdTdHlsZS5vZmZzZXREaXN0YW5jZSgpCiAgICAgICAgIHx8IG9sZFN0eWxlLm9mZnNldFJvdGF0
ZSgpICE9IG5ld1N0eWxlLm9mZnNldFJvdGF0ZSgpCi0gICAgICAgIHx8ICFhcmVQb2ludGluZ1Rv
RXF1YWxEYXRhKG9sZFN0eWxlLmNsaXBQYXRoKCksIG5ld1N0eWxlLmNsaXBQYXRoKCkpOworICAg
ICAgICB8fCAhYXJlUG9pbnRpbmdUb0VxdWFsRGF0YShvbGRTdHlsZS5jbGlwUGF0aCgpLCBuZXdT
dHlsZS5jbGlwUGF0aCgpKQorICAgICAgICB8fCBvbGRTdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JY
KCkgIT0gbmV3U3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWCgpCisgICAgICAgIHx8IG9sZFN0eWxl
Lm92ZXJzY3JvbGxCZWhhdmlvclkoKSAhPSBuZXdTdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JZKCk7
CiB9CiAKIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpsYXllclN0eWxlQ2hhbmdlZChTdHls
ZURpZmZlcmVuY2UgZGlmZiwgUmVuZGVyTGF5ZXImIGxheWVyLCBjb25zdCBSZW5kZXJTdHlsZSog
b2xkU3R5bGUpCkBAIC0zOTQ1LDYgKzM5NDcsMTEgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0
b3I6OnJvb3RPckJvZHlTdHlsZUNoYW5nZWQoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnMK
ICAgICBib29sIGhhZEZpeGVkQmFja2dyb3VuZCA9IG9sZFN0eWxlICYmIG9sZFN0eWxlLT5oYXNF
bnRpcmVseUZpeGVkQmFja2dyb3VuZCgpOwogICAgIGlmIChoYWRGaXhlZEJhY2tncm91bmQgIT0g
cmVuZGVyZXIuc3R5bGUoKS5oYXNFbnRpcmVseUZpeGVkQmFja2dyb3VuZCgpKQogICAgICAgICBy
b290TGF5ZXJDb25maWd1cmF0aW9uQ2hhbmdlZCgpOworICAgIAorICAgIGlmIChvbGRTdHlsZSAm
JiAob2xkU3R5bGUtPm92ZXJzY3JvbGxCZWhhdmlvclgoKSAhPSByZW5kZXJlci5zdHlsZSgpLm92
ZXJzY3JvbGxCZWhhdmlvclgoKSB8fCBvbGRTdHlsZS0+b3ZlcnNjcm9sbEJlaGF2aW9yWSgpICE9
IHJlbmRlcmVyLnN0eWxlKCkub3ZlcnNjcm9sbEJlaGF2aW9yWSgpKSkgeworICAgICAgICBpZiAo
YXV0byogbGF5ZXIgPSBtX3JlbmRlclZpZXcubGF5ZXIoKSkKKyAgICAgICAgICAgIGxheWVyLT5z
ZXROZWVkc0NvbXBvc2l0aW5nR2VvbWV0cnlVcGRhdGUoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjpyb290QmFja2dyb3VuZENvbG9yT3JUcmFuc3BhcmVuY3lDaGFu
Z2VkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3Bw
CmluZGV4IDZiMzYzOGQxYThmMGUxZTY3NGEzNWZlOWNmMmUzY2I1ZWY2YjhkMGEuLjZlZDYyNzg4
MjIxODY5ZmZhY2FmNjQ0MGM3YTQ0NGUyOTdkOTNhZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcApAQCAtMTE5Niw3ICsxMTk2LDkgQEAgYm9v
bCBSZW5kZXJTdHlsZTo6Y2hhbmdlUmVxdWlyZXNSZWNvbXBvc2l0ZUxheWVyKGNvbnN0IFJlbmRl
clN0eWxlJiBvdGhlciwgT3B0aW8KICAgICAgICAgICAgIHx8IG1fcmFyZU5vbkluaGVyaXRlZERh
dGEtPmJhY2tmYWNlVmlzaWJpbGl0eSAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5i
YWNrZmFjZVZpc2liaWxpdHkKICAgICAgICAgICAgIHx8IG1fcmFyZU5vbkluaGVyaXRlZERhdGEt
PnBlcnNwZWN0aXZlICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnBlcnNwZWN0aXZl
CiAgICAgICAgICAgICB8fCBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5wZXJzcGVjdGl2ZU9yaWdp
blggIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+cGVyc3BlY3RpdmVPcmlnaW5YCi0g
ICAgICAgICAgICB8fCBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5wZXJzcGVjdGl2ZU9yaWdpblkg
IT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+cGVyc3BlY3RpdmVPcmlnaW5ZKQorICAg
ICAgICAgICAgfHwgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+cGVyc3BlY3RpdmVPcmlnaW5ZICE9
IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnBlcnNwZWN0aXZlT3JpZ2luWQorICAgICAg
ICAgICAgfHwgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+b3ZlcnNjcm9sbEJlaGF2aW9yWCAhPSBv
dGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5vdmVyc2Nyb2xsQmVoYXZpb3JYCisgICAgICAg
ICAgICB8fCBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5vdmVyc2Nyb2xsQmVoYXZpb3JZICE9IG90
aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm92ZXJzY3JvbGxCZWhhdmlvclkpCiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5YjA2M2Q0NjEwOGJlZWNiNzlhMjJk
YzhlMWE4M2QzOWFjNzNlMjJiLi5lNTUyMWI3NjY0Y2I1MzFjNDAzMDRkNGYzYTc4OGIzNDE5ZTZh
OGI4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMjEtMTItMDEgIE5pa29sYW9zIE1vdWNodGFy
aXMgIDxubW91Y2h0YXJpc0BhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IENTUyBvdmVy
c2Nyb2xsLWJlaGF2aW9yIGZvciBhc3luY2hyb25vdXMgc2Nyb2xsIG9uIE1hYworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwMTM5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9t
YWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50LWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3It
ZWxlbWVudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMt
b3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUuaHRt
bDogQWRkZWQuCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwt
YmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9s
bGFibGUtZWxlbWVudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9tYWMv
YXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwt
YmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L3Njcm9sbGluZy9yZXNvdXJjZXMvb3ZlcnNjcm9sbC1iZWhhdmlvci1zdXBwb3J0LmpzOiBBZGRl
ZC4KKyAgICAgICAgKGdldERlbHRhcyk6CisgICAgICAgIChhc3luYyBtb3VzZVdoZWVsU2Nyb2xs
QW5kV2FpdCk6CisKIDIwMjEtMTEtMzAgIFJvYmVydCBKZW5uZXIgIDxKZW5uZXJAYXBwbGUuY29t
PgogCiAgICAgICAgIFJFQkFTRUxJTkUgWyBNb250ZXJleSBdZmFzdC9jc3MvY29udGludWF0aW9u
Q3Jhc2guaHRtbCAobGF5b3V0LXRlc3QpIGlzIGEgY29uc3RhbnQgdGV4dCBmYWlsdXJlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1i
ZWhhdmlvci1lbGVtZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5n
L21hYy9hc3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjI3MTUwZmY2MGI1ZGJkZDBiNGE3YWM2ZjgzZmI1NmY1N2NkMmNkODIKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9s
bC1iZWhhdmlvci1lbGVtZW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIwIEBACisKK1BBU1Mg
RWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjog
YXV0byBhdXRvLgorUEFTUyBFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNj
cm9sbC1iZWhhdmlvcjogYXV0byBhdXRvLgorUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xs
IHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGF1dG8uCitQQVNTIEVsZW1l
bnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWlu
IGF1dG8uCitQQVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3Jv
bGwtYmVoYXZpb3I6IG5vbmUgYXV0by4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVz
dCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgYXV0by4KK1BBU1MgRWxlbWVudCBob3Jp
em9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBjb250YWlu
LgorUEFTUyBFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhh
dmlvcjogYXV0byBjb250YWluLgorUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qg
d2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGNvbnRhaW4uCitQQVNTIEVsZW1lbnQg
dmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGNv
bnRhaW4uCitQQVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3Jv
bGwtYmVoYXZpb3I6IG5vbmUgY29udGFpbi4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwg
dGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgY29udGFpbi4KK1BBU1MgRWxlbWVu
dCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBu
b25lLgorUEFTUyBFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1i
ZWhhdmlvcjogYXV0byBub25lLgorUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qg
d2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIG5vbmUuCitQQVNTIEVsZW1lbnQgdmVy
dGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIG5vbmUu
CitQQVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVo
YXZpb3I6IG5vbmUgbm9uZS4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRo
IG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgbm9uZS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVo
YXZpb3ItZWxlbWVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MTM3YjljYjc3OWE5MTY3ZGIyMjUxZDMw
NjdlNDYzZWFjOTQ2MzcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9s
bGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50Lmh0bWwKQEAgLTAsMCAr
MSw4NiBAQAorPCFkb2N0eXBlIGh0bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgQXN5bmNP
dmVyZmxvd1Njcm9sbGluZ0VuYWJsZWQ9dHJ1ZSBBc3luY0ZyYW1lU2Nyb2xsaW5nRW5hYmxlZD10
cnVlIF0gLS0+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3Ny
ZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9vdmVyc2Nyb2xs
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
YS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlv
ci1pZnJhbWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2Fz
eW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45
MDBhMGI3ZDkwNWI4N2MxZGI3NjI2OTRmZDAwNjM4ZjE5NzY5NTM3Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZp
b3ItaWZyYW1lLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIxIEBACisKKworUEFTUyBJZnJhbWUg
aG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gYXV0
by4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhh
dmlvcjogYXV0byBhdXRvLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRo
IG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gYXV0by4KK1BBU1MgSWZyYW1lIHZlcnRpY2Fs
IHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBhdXRvLgorUEFT
UyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6
IG5vbmUgYXV0by4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNj
cm9sbC1iZWhhdmlvcjogbm9uZSBhdXRvLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwg
dGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gY29udGFpbi4KK1BBU1MgSWZyYW1l
IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBjb250
YWluLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwt
YmVoYXZpb3I6IGNvbnRhaW4gY29udGFpbi4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0
ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBjb250YWluLgorUEFTUyBJZnJh
bWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUg
Y29udGFpbi4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9s
bC1iZWhhdmlvcjogbm9uZSBjb250YWluLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwg
dGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gbm9uZS4KK1BBU1MgSWZyYW1lIHZl
cnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBub25lLgor
UEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZp
b3I6IGNvbnRhaW4gbm9uZS4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGgg
b3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBub25lLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRh
bCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgbm9uZS4KK1BBU1Mg
SWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9u
ZSBub25lLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5
bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Ny
b2xsaW5nL21hYy9hc3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjNmODcxMzY0Zjk1YmQ3N2Y2ZTRjZTliZWE0MjgzNTE0MGI0MGMxZjAKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1i
ZWhhdmlvci1pZnJhbWUuaHRtbApAQCAtMCwwICsxLDg2IEBACis8IWRvY3R5cGUgaHRtbD4gPCEt
LSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBBc3luY092ZXJmbG93U2Nyb2xsaW5nRW5hYmxlZD10cnVl
IEFzeW5jRnJhbWVTY3JvbGxpbmdFbmFibGVkPXRydWUgXSAtLT4KKworPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi9yZXNvdXJjZXMvb3ZlcnNjcm9sbC1iZWhhdmlvci1zdXBwb3J0LmpzIj48L3Nj
cmlwdD4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nz
cy1vdmVyc2Nyb2xsLWJlaGF2aW9yIj4KKzxzdHlsZT4KKyAgICAuc2Nyb2xsaW5nIHsKKyAgICAg
ICAgb3ZlcmZsb3c6IHNjcm9sbDsKKyAgICB9CisgICAgLnNjcm9sbENvbnRlbnQgeworICAgICAg
ICB3aWR0aDogMzAwcHg7CisgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgIGJhY2tncm91
bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJlZCwgYmx1ZSk7CisgICAgfQorICAgICNyb290
IHsKKyAgICAgICAgd2lkdGg6IDIwMHB4OworICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAgIH0K
KyAgICAjc2Nyb2xsZXIgeworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDog
MTAwcHg7CisgICAgICAgIG92ZXJzY3JvbGwtYmVoYXZpb3IteTogYXV0bzsKKyAgICB9Cis8L3N0
eWxlPgorPGRpdiBpZD0ncm9vdCcgY2xhc3M9InNjcm9sbGluZyI+CisgICAgPGlmcmFtZSBpZD0n
c2Nyb2xsZXInIHNyY2RvYz0iPGh0bWw+PGRpdiBzdHlsZT0nd2lkdGg6IDMwMHB4OyBoZWlnaHQ6
IDMwMHB4Oyc+PC9kaXY+PC9odG1sPgorICAgICAgICAiPjwvaWZyYW1lPgorICAgIDxkaXYgY2xh
c3M9InNjcm9sbENvbnRlbnQiPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+CisgICAgY29uc3Qg
cm9vdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyb290Jyk7CisgICAgY29uc3Qgc2Nyb2xs
ZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2Nyb2xsZXInKTsKKyAgICB2YXIgb3ZlcnNj
cm9sbERhdGFzID0gW1siYXV0byIsICJhdXRvIiwgdHJ1ZSwgdHJ1ZV0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgWyJjb250YWluIiwgImF1dG8iLCBmYWxzZSwgdHJ1ZV0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgWyJub25lIiwgImF1dG8iLCBmYWxzZSwgdHJ1ZV0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgWyJhdXRvIiwgImNvbnRhaW4iLCB0cnVlLCBmYWxzZV0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJjb250YWluIiwgImNvbnRhaW4iLCBmYWxz
ZSwgZmFsc2VdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsibm9uZSIsICJjb250YWlu
IiwgZmFsc2UsIGZhbHNlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImF1dG8iLCAi
bm9uZSIsIHRydWUsIGZhbHNlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImNvbnRh
aW4iLCAibm9uZSIsIGZhbHNlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
WyJub25lIiwgIm5vbmUiLCBmYWxzZSwgZmFsc2VdXTsKKyAgICBmdW5jdGlvbiByZXNldFRlc3Qo
KSB7CisgICAgICAgIC8vIFRyeSB2YXJpb3VzIG1ldGhvZHMgdG8gZW5zdXJlIHRoZSBlbGVtZW50
IHBvc2l0aW9uIGlzIHJlc2V0IGltbWVkaWF0ZWx5LgorICAgICAgICBzY3JvbGxlci5jb250ZW50
V2luZG93LnNjcm9sbFggPSAzMDA7CisgICAgICAgIHNjcm9sbGVyLmNvbnRlbnRXaW5kb3cuc2Ny
b2xsWSA9IDMwMDsKKyAgICAgICAgc2Nyb2xsZXIuY29udGVudFdpbmRvdy5zY3JvbGxUbygzMDAs
IDMwMCk7CisgICAgICAgIHJvb3Quc2Nyb2xsTGVmdCA9IDA7CisgICAgICAgIHJvb3Quc2Nyb2xs
VG9wID0gMDsKKyAgICAgICAgcm9vdC5zY3JvbGxUbygwLCAwKTsKKyAgICB9CisKKyAgICBmdW5j
dGlvbiBvdmVyc2Nyb2xsQmVoYXZpb3JUZXN0KCkgeworICAgICAgICBvdmVyc2Nyb2xsRGF0YXMu
Zm9yRWFjaCgoW292ZXJzY3JvbGxYLCBvdmVyc2Nyb2xsWSwgcHJvcGFnYXRlWCwgcHJvcGFnYXRl
WV0pID0+IHsKKyAgICAgICAgICAgIHByb21pc2VfdGVzdCgoKSA9PiB7CisgICAgICAgICAgICAg
ICAgcmVzZXRUZXN0KCk7CisgICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IHNjcm9sbGVyLmNv
bnRlbnRXaW5kb3cuZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImh0bWwiKVswXTsKKyAg
ICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWCA9IG92ZXJzY3Jv
bGxYOworICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JZID0g
b3ZlcnNjcm9sbFk7CisgICAgICAgICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0
aCAvIDI7CisgICAgICAgICAgICAgICAgdmFyIHkgPSBzY3JvbGxlci5jbGllbnRIZWlnaHQgLyAy
OworICAgICAgICAgICAgICAgIHZhciBkZWx0YSA9IGdldERlbHRhcygicmlnaHQiKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gbW91c2VXaGVlbFNjcm9sbEFuZFdhaXQoeCwgeSwgZGVsdGEuWCwg
ZGVsdGEuWSwgZGVsdGEuWCwgZGVsdGEuWSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAg
ICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxMZWZ0ID4gMCwgcHJvcGFnYXRlWCwgJ0NvbnRp
bnVlIHVwIHRoZSBob3Jpem9udGFsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAgICAgICAgICAg
IH0pOworICAgICAgICAgICAgfSwgJ0lmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGgg
b3ZlcnNjcm9sbC1iZWhhdmlvcjogJyArIG92ZXJzY3JvbGxYICsgJyAnICsgb3ZlcnNjcm9sbFkg
KyAnLicpOworCisgICAgICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgICAgICAgICAg
ICAgIHJlc2V0VGVzdCgpOworICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSBzY3JvbGxlci5j
b250ZW50V2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJodG1sIilbMF07Cisg
ICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclggPSBvdmVyc2Ny
b2xsWDsKKyAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWSA9
IG92ZXJzY3JvbGxZOworCisgICAgICAgICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRX
aWR0aCAvIDI7CisgICAgICAgICAgICAgICAgdmFyIHkgPSBzY3JvbGxlci5jbGllbnRIZWlnaHQg
LyAyOworICAgICAgICAgICAgICAgIHZhciBkZWx0YSA9IGdldERlbHRhcygiZG93biIpOworICAg
ICAgICAgICAgICAgIHJldHVybiBtb3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCh4LCB5LCBkZWx0YS5Y
LCBkZWx0YS5ZLCBkZWx0YS5YLCBkZWx0YS5ZKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAg
ICAgICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbFRvcCA+IDAsIHByb3BhZ2F0ZVksICdDb250
aW51ZSB1cCB0aGUgdmVydGljYWwgc2Nyb2xsIGNoYWluaW5nJyk7CisgICAgICAgICAgICAgICAg
fSk7CisgICAgICAgICAgICB9LCAnSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3Zl
cnNjcm9sbC1iZWhhdmlvcjogJyArIG92ZXJzY3JvbGxYICsgJyAnICsgb3ZlcnNjcm9sbFkgKyAn
LicpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBzY3JvbGxlci5hZGRFdmVudExpc3RlbmVy
KCJsb2FkIiwgb3ZlcnNjcm9sbEJlaGF2aW9yVGVzdCk7Cis8L3NjcmlwdD4KXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9t
YWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1i
ZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjM5
NWI2NDg4ZDA4NzBiOTU2MWMwMjg2NzlkN2UxNWE0N2ZjZTZlOQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9y
LXVuc2Nyb2xsYWJsZS1lbGVtZW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKKworUEFT
UyBVbnNjcm9sbGFibGUgZWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNj
cm9sbC1iZWhhdmlvcjogbm9uZS4KK1BBU1MgVW5zY3JvbGxhYmxlIGVsZW1lbnQgdmVydGljYWwg
c2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLgorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlv
ci11bnNjcm9sbGFibGUtZWxlbWVudC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcv
bWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5hNDQ4ZjJlMGVhNWNjMDc4ZjFmOWVhNGMyZDdmNzgwZWU3YjdlNTg0Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJz
Y3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRtbApAQCAtMCwwICsxLDY3IEBA
Cis8IWRvY3R5cGUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBBc3luY092ZXJmbG93
U2Nyb2xsaW5nRW5hYmxlZD10cnVlIEFzeW5jRnJhbWVTY3JvbGxpbmdFbmFibGVkPXRydWUgXSAt
LT4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvb3ZlcnNjcm9sbC1iZWhh
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
bWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1i
ZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZmE1
OWNjYmE3OWFlZmYzM2RhNzBlOTNkNDg4YTA3ZWVjOWM1NjkxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3It
dW5zY3JvbGxhYmxlLWlmcmFtZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBACisKKworUEFT
UyBVbnNjcm9sbGFibGUgaWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Ny
b2xsLWJlaGF2aW9yOiBub25lLgorUEFTUyBVbnNjcm9sbGFibGUgaWZyYW1lIHZlcnRpY2FsIHNj
cm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4KKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3It
dW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFj
L2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjMzZWM1YjI2M2MyYjgzYmUxYTUyODcxNmNlODY1NjNkOTdhY2QxZDYKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9s
bC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLmh0bWwKQEAgLTAsMCArMSw2NiBAQAorPCFk
b2N0eXBlIGh0bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgQXN5bmNPdmVyZmxvd1Njcm9s
bGluZ0VuYWJsZWQ9dHJ1ZSBBc3luY0ZyYW1lU2Nyb2xsaW5nRW5hYmxlZD10cnVlIF0gLS0+CisK
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL292ZXJzY3JvbGwtYmVoYXZpb3It
c3VwcG9ydC5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vZHJh
ZnRzLmNzc3dnLm9yZy9jc3Mtb3ZlcnNjcm9sbC1iZWhhdmlvciI+Cis8c3R5bGU+CisgICAgLnNj
cm9sbGluZyB7CisgICAgICAgIG92ZXJmbG93OiBzY3JvbGw7CisgICAgfQorICAgIC5zY3JvbGxD
b250ZW50IHsKKyAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICBoZWlnaHQ6IDMwMHB4Owor
ICAgIH0KKyAgICAjcm9vdCB7CisgICAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgICAgaGVpZ2h0
OiAyMDBweDsKKyAgICB9CisgICAgI3Njcm9sbGVyIHsKKyAgICAgICAgd2lkdGg6IDIwMHB4Owor
ICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAgICAgICBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25l
OworICAgICAgICBvdmVyZmxvdzogdmlzaWJsZTsKKyAgICAgICAgYmFja2dyb3VuZDogbGluZWFy
LWdyYWRpZW50KDEzNWRlZywgcmVkLCBibHVlKTsKKyAgICB9Cis8L3N0eWxlPgorPGRpdiBpZD0n
cm9vdCcgY2xhc3M9InNjcm9sbGluZyI+CisgICAgPGlmcmFtZSBpZD0nc2Nyb2xsZXInIHNyY2Rv
Yz0iPGh0bWwgc3R5bGU9J292ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmU7Jz48ZGl2IHN0eWxlPSd3
aWR0aDogMTAwcHg7IGhlaWdodDogMTAwcHg7Jz48L2Rpdj48L2h0bWw+CisgICAgICAgICI+PC9p
ZnJhbWU+CisgICAgPGRpdiBjbGFzcz0ic2Nyb2xsQ29udGVudCI+PC9kaXY+Cis8L2Rpdj4KKwor
PHNjcmlwdD4KK2NvbnN0IHJvb3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncm9vdCcpOwor
Y29uc3Qgc2Nyb2xsZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2Nyb2xsZXInKTsKKwor
ZnVuY3Rpb24gcmVzZXRUZXN0KCkgeworICAgIHJvb3Quc2Nyb2xsTGVmdCA9IDA7CisgICAgcm9v
dC5zY3JvbGxUb3AgPSAwOworICAgIHJvb3Quc2Nyb2xsVG8oMCwgMCk7Cit9CisKK2Z1bmN0aW9u
IHN0YXJ0VGVzdCgpIHsKKyAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAg
IHJlc2V0VGVzdCgpOworICAgICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAv
IDI7CisgICAgICAgICAgICB2YXIgeSA9IHNjcm9sbGVyLmNsaWVudEhlaWdodCAvIDI7CisgICAg
ICAgICAgICB2YXIgZGVsdGEgPSBnZXREZWx0YXMoInJpZ2h0Iik7CisgICAgICAgICAgICByZXR1
cm4gbW91c2VXaGVlbFNjcm9sbEFuZFdhaXQoeCwgeSwgZGVsdGEuWCwgZGVsdGEuWSwgZGVsdGEu
WCwgZGVsdGEuWSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhy
b290LnNjcm9sbExlZnQgPiAwLCB0cnVlLCAnQ29udGludWUgdXAgdGhlIGhvcml6b250YWwgc2Ny
b2xsIGNoYWluaW5nJyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSwgJ1Vuc2Nyb2xsYWJs
ZSBpZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6
IG5vbmUuJyk7CisKKyAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAgIHJl
c2V0VGVzdCgpOworICAgICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7
CisgICAgICAgICAgICB2YXIgeSA9IHNjcm9sbGVyLmNsaWVudEhlaWdodCAvIDI7CisgICAgICAg
ICAgICB2YXIgZGVsdGEgPSBnZXREZWx0YXMoImRvd24iKTsKKyAgICAgICAgICAgIHJldHVybiBt
b3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCh4LCB5LCBkZWx0YS5YLCBkZWx0YS5ZLCBkZWx0YS5YLCBk
ZWx0YS5ZKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJvb3Qu
c2Nyb2xsVG9wID4gMCwgdHJ1ZSwgJ0NvbnRpbnVlIHVwIHRoZSB2ZXJ0aWNhbCBzY3JvbGwgY2hh
aW5pbmcnKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9LCAnVW5zY3JvbGxhYmxlIGlmcmFt
ZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuJyk7
Cit9CisKK2FkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBzdGFydFRlc3QpOworPC9zY3JpcHQ+Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9z
Y3JvbGxpbmcvcmVzb3VyY2VzL292ZXJzY3JvbGwtYmVoYXZpb3Itc3VwcG9ydC5qcyBiL0xheW91
dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3Jlc291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXN1cHBv
cnQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uY2JkMjIyZTkwYjUyYTE5MzBiN2ZjZmU0NDIzZTk0NTgzYzA0NjAw
ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3Jlc291cmNl
cy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXN1cHBvcnQuanMKQEAgLTAsMCArMSwzOSBAQAorZnVuY3Rp
b24gZ2V0RGVsdGFzKGRpcmVjdGlvbikgeworICAgIHZhciBkZWx0YVggPSAwOworICAgIHZhciBk
ZWx0YVkgPSAwOworICAgIGlmIChkaXJlY3Rpb24gPT0gImRvd24iKQorICAgICAgICBkZWx0YVkg
PSAtNQorICAgIGVsc2UgaWYgKGRpcmVjdGlvbiA9PSAidXAiKQorICAgICAgICBkZWx0YVkgPSA1
OworICAgIGVsc2UgaWYgKGRpcmVjdGlvbiA9PSAicmlnaHQiKQorICAgICAgICBkZWx0YVggPSAt
NTsKKyAgICBlbHNlIGlmIChkaXJlY3Rpb24gPT0gImxlZnQiKQorICAgICAgICBkZWx0YVggPSA1
OworICAgIHJldHVybiB7CisgICAgICAgIFg6IGRlbHRhWCwKKyAgICAgICAgWTogZGVsdGFZCisg
ICAgfTsKK30KKworYXN5bmMgZnVuY3Rpb24gbW91c2VXaGVlbFNjcm9sbEFuZFdhaXQoeCwgeSwg
YmVnaW5YLCBiZWdpblksIGRlbHRhWCwgZGVsdGFZKQoreworICAgIGlmIChiZWdpblggPT09IHVu
ZGVmaW5lZCkKKyAgICAgICAgYmVnaW5YID0gMDsKKyAgICBpZiAoYmVnaW5ZID09PSB1bmRlZmlu
ZWQpCisgICAgICAgIGJlZ2luWSA9IC0xOworICAgIGlmIChkZWx0YVggPT09IHVuZGVmaW5lZCkK
KyAgICAgICAgZGVsdGFYID0gMDsKKyAgICBpZiAoZGVsdGFZID09PSB1bmRlZmluZWQpCisgICAg
ICAgIGRlbHRhWSA9IC0xMDsKKworICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygp
OworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhiZWdpblgsIGJlZ2luWSwgImJl
Z2FuIiwgIm5vbmUiKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZGVsdGFYLCBkZWx0YVksICJjaGFuZ2VkIiwgIm5vbmUiKTsKKyAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwg
ImVuZGVkIiwgIm5vbmUiKTsKKyAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7Cisg
ICAgICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZy
YW1lKHJlc29sdmUpOworICAgICAgICB9LCA1MDApOworICAgIH0pOworfQpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449960</attachid>
            <date>2022-01-25 13:11:31 -0800</date>
            <delta_ts>2022-01-27 17:43:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220139-20220125131130.patch</filename>
            <type>text/plain</type>
            <size>36411</size>
            <attacher name="Nikos Mouchtaris">nmouchtaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MzUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGJiNmQyZjJmYmNkN2I3
ODU1MzIxY2U1YjgwMWQ1YzJmYWNiMzhmNC4uODBhYWE0YzRhYWIwNzIyNjM2NGFhM2M1ZTE0YzA2
YTQ4ZDNiNjNmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDIxLTEyLTAxICBOaWtv
bGFvcyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxl
bWVudCBDU1Mgb3ZlcnNjcm9sbC1iZWhhdmlvciBmb3IgYXN5bmNocm9ub3VzIHNjcm9sbCBvbiBN
YWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDEz
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNwbGl0
IHVwIHBhdGNoIGJ5IENhdGhpZSBDaGVuIGFuZCBGcmVkZXJpYyBXYW5nLiBBZGQgZnVuY3Rpb24g
Zm9yIGJsb2NraW5nIHNjcm9sbCBjaGFpbmluZworICAgICAgICBhbmQgZmlsdGVyaW5nIHNjcm9s
bCBkZWx0YSBkZXBlbmRpbmcgb24gdGhlIHZhbHVlcyBvZiBvdmVyc2Nyb2xsIGJlaGF2aW9yIGZv
ciBhIHNjcm9sbGluZworICAgICAgICBub2RlLiBUaGlzIHBhdGNoIGlzIGZvciBhc3luY2hyb25v
dXMgc2Nyb2xsaW5nIG9ubHkuCisKKyAgICAgICAgVGVzdHM6IGZhc3Qvc2Nyb2xsaW5nL21hYy9h
c3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQuaHRtbAorICAgICAgICAgICAgICAgZmFz
dC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0bWwKKyAg
ICAgICAgICAgICAgIGZhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9y
LXVuc2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvc2Nyb2xsaW5n
L21hYy9hc3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUuaHRtbAor
CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxpbmdUcmVlOjpzaG91bGRCbG9ja1Njcm9sbENoYWluaW5nV2l0aE5vZGUp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZTo6aGFuZGxlV2hlZWxFdmVudFdpdGhO
b2RlKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmg6CisgICAgICAg
ICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaDoKKyAgICAgICAg
KiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdh
dGVNYWM6OmFsbG93c0hvcml6b250YWxTdHJldGNoaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OmFsbG93c1ZlcnRpY2Fs
U3RyZXRjaGluZyBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9z
aXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWNvbXBvc2l0ZUNoYW5nZVJlcXVpcmVzR2Vv
bWV0cnlVcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpy
b290T3JCb2R5U3R5bGVDaGFuZ2VkKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmNoYW5nZVJlcXVpcmVz
UmVjb21wb3NpdGVMYXllciBjb25zdCk6CisKIDIwMjEtMTEtMzAgIFNpbW9uIEZyYXNlciAgPHNp
bW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUGFzcyB0aGUgdGltZXN0YW1wIGZvciBz
Y3JvbGxpbmcgdGhyZWFkIGFuaW1hdGlvbnMgdGhyb3VnaCBhbGwgdGhlIHNlcnZpY2VTY3JvbGxB
bmltYXRpb24oKSBjYWxscwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAppbmRleCBkOTRmZjEzMDZiNzll
MjhmYjY4OTkwMDY5NzcwOGFiMjhkYmNmNTJkLi44MmY3NTdhMjdiM2IwNzI0MDA2ZDcyYTUzODJl
MzRmYTRjYTk0NjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9B
c3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcApAQCAtNzg3LDggKzc4Nyw4IEBA
IHZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0U2Nyb2xsaW5nTm9kZVNjcm9sbGFi
bGVBcmVhR2VvbWV0cnkoU2Nyb2xsaW5nCiAgICAgc2Nyb2xsaW5nTm9kZS5zZXRTY3JvbGxhYmxl
QXJlYVNpemUoc2Nyb2xsYWJsZUFyZWEudmlzaWJsZVNpemUoKSk7CiAKICAgICBTY3JvbGxhYmxl
QXJlYVBhcmFtZXRlcnMgc2Nyb2xsUGFyYW1ldGVyczsKLSAgICBzY3JvbGxQYXJhbWV0ZXJzLmhv
cml6b250YWxTY3JvbGxFbGFzdGljaXR5ID0gc2Nyb2xsYWJsZUFyZWEuaG9yaXpvbnRhbFNjcm9s
bEVsYXN0aWNpdHkoKTsKLSAgICBzY3JvbGxQYXJhbWV0ZXJzLnZlcnRpY2FsU2Nyb2xsRWxhc3Rp
Y2l0eSA9IHNjcm9sbGFibGVBcmVhLnZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eSgpOworICAgIHNj
cm9sbFBhcmFtZXRlcnMuaG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkgPSBzY3JvbGxhYmxlQXJl
YS5ob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgPT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpO
b25lID8gU2Nyb2xsRWxhc3RpY2l0eTo6Tm9uZSA6IHNjcm9sbGFibGVBcmVhLmhvcml6b250YWxT
Y3JvbGxFbGFzdGljaXR5KCk7CisgICAgc2Nyb2xsUGFyYW1ldGVycy52ZXJ0aWNhbFNjcm9sbEVs
YXN0aWNpdHkgPSBzY3JvbGxhYmxlQXJlYS52ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpID09
IE92ZXJzY3JvbGxCZWhhdmlvcjo6Tm9uZSA/IFNjcm9sbEVsYXN0aWNpdHk6Ok5vbmUgOiBzY3Jv
bGxhYmxlQXJlYS52ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkoKTsKICAgICBzY3JvbGxQYXJhbWV0
ZXJzLmFsbG93c0hvcml6b250YWxTY3JvbGxpbmcgPSBzY3JvbGxhYmxlQXJlYS5hbGxvd3NIb3Jp
em9udGFsU2Nyb2xsaW5nKCk7CiAgICAgc2Nyb2xsUGFyYW1ldGVycy5hbGxvd3NWZXJ0aWNhbFNj
cm9sbGluZyA9IHNjcm9sbGFibGVBcmVhLmFsbG93c1ZlcnRpY2FsU2Nyb2xsaW5nKCk7CiAgICAg
c2Nyb2xsUGFyYW1ldGVycy5ob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yID0gc2Nyb2xsYWJs
ZUFyZWEuaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcAppbmRleCAyZGU2NWMyMmY5YjdmOTQw
ZTFlYmNmZmJjNDVlY2Q2MDZhNDk5Yzg0Li40N2Y1OTI1OWIxYWNlMjFhNmRlZjRiOGVlNDZiNjlj
ZGIyNGQzZThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdUcmVlLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNp
bmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1XaGVlbEV2ZW50LmgiCisjaW5j
bHVkZSAiU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTY3JvbGxpbmdT
dGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZS5oIgogI2luY2x1ZGUgIlNjcm9sbGluZ1N0YXRlVHJlZS5o
IgogI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUuaCIKQEAgLTIwMSwx
MCArMjAyLDExIEBAIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdCBTY3JvbGxpbmdUcmVlOjpoYW5k
bGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVuCiAKIFdoZWVsRXZlbnRIYW5kbGlu
Z1Jlc3VsdCBTY3JvbGxpbmdUcmVlOjpoYW5kbGVXaGVlbEV2ZW50V2l0aE5vZGUoY29uc3QgUGxh
dGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBPcHRpb25TZXQ8V2hlZWxFdmVudFByb2Nlc3Np
bmdTdGVwcz4gcHJvY2Vzc2luZ1N0ZXBzLCBTY3JvbGxpbmdUcmVlTm9kZSogbm9kZSwgRXZlbnRU
YXJnZXRpbmcgZXZlbnRUYXJnZXRpbmcpCiB7CisgICAgYXV0byBhZGp1c3RlZFdoZWVsRXZlbnQg
PSB3aGVlbEV2ZW50OwogICAgIHdoaWxlIChub2RlKSB7CiAgICAgICAgIGlmIChpczxTY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZT4oKm5vZGUpKSB7CiAgICAgICAgICAgICBhdXRvJiBzY3JvbGxp
bmdOb2RlID0gZG93bmNhc3Q8U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU+KCpub2RlKTsKLSAg
ICAgICAgICAgIGF1dG8gcmVzdWx0ID0gc2Nyb2xsaW5nTm9kZS5oYW5kbGVXaGVlbEV2ZW50KHdo
ZWVsRXZlbnQsIGV2ZW50VGFyZ2V0aW5nKTsKKyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gc2Ny
b2xsaW5nTm9kZS5oYW5kbGVXaGVlbEV2ZW50KGFkanVzdGVkV2hlZWxFdmVudCwgZXZlbnRUYXJn
ZXRpbmcpOwogCiAgICAgICAgICAgICBpZiAocmVzdWx0Lndhc0hhbmRsZWQpIHsKICAgICAgICAg
ICAgICAgICBtX2xhdGNoaW5nQ29udHJvbGxlci5ub2RlRGlkSGFuZGxlRXZlbnQoc2Nyb2xsaW5n
Tm9kZS5zY3JvbGxpbmdOb2RlSUQoKSwgcHJvY2Vzc2luZ1N0ZXBzLCB3aGVlbEV2ZW50LCBtX2Fs
bG93TGF0Y2hpbmcpOwpAQCAtMjE0LDYgKzIxNiwxNCBAQCBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1
bHQgU2Nyb2xsaW5nVHJlZTo6aGFuZGxlV2hlZWxFdmVudFdpdGhOb2RlKGNvbnN0IFBsYXRmb3Jt
VwogCiAgICAgICAgICAgICBpZiAocmVzdWx0Lm5lZWRzTWFpblRocmVhZFByb2Nlc3NpbmcoKSB8
fCBldmVudFRhcmdldGluZyAhPSBFdmVudFRhcmdldGluZzo6UHJvcGFnYXRlKQogICAgICAgICAg
ICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChhdXRv
IHByb3BhZ2F0aW9uID0gc2Nyb2xsaW5nTm9kZS5zaG91bGRCbG9ja1Njcm9sbFByb3BhZ2F0aW9u
RmlsdGVyKGFkanVzdGVkV2hlZWxFdmVudCk7IHByb3BhZ2F0aW9uLnNob3VsZEJsb2NrU2Nyb2xs
UHJvcGFnYXRpb24pIHsKKyAgICAgICAgICAgICAgICBpZiAoIXByb3BhZ2F0aW9uLmlzSGFuZGxl
ZCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdDo6
dW5oYW5kbGVkKCk7CisgICAgICAgICAgICAgICAgbV9sYXRjaGluZ0NvbnRyb2xsZXIubm9kZURp
ZEhhbmRsZUV2ZW50KHNjcm9sbGluZ05vZGUuc2Nyb2xsaW5nTm9kZUlEKCksIHByb2Nlc3NpbmdT
dGVwcywgd2hlZWxFdmVudCwgbV9hbGxvd0xhdGNoaW5nKTsKKyAgICAgICAgICAgICAgICBtX2dl
c3R1cmVTdGF0ZS5ub2RlRGlkSGFuZGxlRXZlbnQoc2Nyb2xsaW5nTm9kZS5zY3JvbGxpbmdOb2Rl
SUQoKSwgd2hlZWxFdmVudCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIFdoZWVsRXZlbnRIYW5k
bGluZ1Jlc3VsdDo6aGFuZGxlZCgpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAg
ICAgaWYgKGlzPFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbFByb3h5Tm9kZT4oKm5vZGUpKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAKaW5kZXggNGQ3YzUwZmI2YzE3MTcxOWFiODQzYWU5NjA5
NGIwYjMzMWI1YTYxZC4uMGE4ZjQwYzE4YWY0ZTRiY2RiN2U0MDY4MjMyYmM3ZWVlNmNhZGVlNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2lmIEVOQUJMRShT
Q1JPTExJTkdfVEhSRUFEKQogI2luY2x1ZGUgIlNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdO
b2RlLmgiCiAjZW5kaWYKKyNpbmNsdWRlICJTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5oIgog
I2luY2x1ZGUgIlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5oIgogI2luY2x1ZGUgIlNjcm9s
bGluZ1N0YXRlVHJlZS5oIgogI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWUuaCIKQEAgLTEyMSw2ICsx
MjIsMTYgQEAgYm9vbCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6aXNMYXRjaGVkTm9kZSgp
IGNvbnN0CiAgICAgcmV0dXJuIHNjcm9sbGluZ1RyZWUoKS5sYXRjaGVkTm9kZUlEKCkgPT0gc2Ny
b2xsaW5nTm9kZUlEKCk7CiB9CiAKK2Jvb2wgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OnNo
b3VsZFJ1YmJlckJhbmQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBFdmVu
dFRhcmdldGluZyBldmVudFRhcmdldGluZykgY29uc3QKK3sKKyAgICBhdXRvIHNob3VsZEJsb2Nr
ID0gc2hvdWxkQmxvY2tTY3JvbGxQcm9wYWdhdGlvbih3aGVlbEV2ZW50LmRlbHRhKCkpOworICAg
IC8vIFdlIGFsd2F5cyBydWJiZXItYmFuZCB0aGUgbGF0Y2hlZCBub2RlLCBvciB0aGUgcm9vdCBu
b2RlLgorICAgIC8vIFRoZSBzdGF0ZWxlc3Mgd2hlZWwgZXZlbnQgZG9lc24ndCB0cmlnZ2VyIHJ1
YmJlci1iYW5kLgorICAgIC8vIEFsc28gcnViYmVyYmFuZCB3aGVuIHdlIHNob3VsZCBibG9jayBz
Y3JvbGwgcHJvcGFnYXRpb24KKyAgICAvLyBhdCB0aGlzIG5vZGUsIHdoaWNoIGhhcyBvdmVyc2Ny
b2xsIGJlaGF2aW9yIHRoYXQgaXMgbm90IG5vbmUuCisgICAgcmV0dXJuIChpc0xhdGNoZWROb2Rl
KCkgfHwgZXZlbnRUYXJnZXRpbmcgPT0gRXZlbnRUYXJnZXRpbmc6Ok5vZGVPbmx5IHx8IChpc1Jv
b3ROb2RlKCkgJiYgIXdoZWVsRXZlbnQuaXNOb25HZXN0dXJlRXZlbnQoKSkgfHwgKHNob3VsZEJs
b2NrLnNob3VsZEJsb2NrU2Nyb2xsUHJvcGFnYXRpb24gJiYgc2hvdWxkQmxvY2suaXNIYW5kbGVk
ICYmIG92ZXJzY3JvbGxCZWhhdmlvckFsbG93UnViYmVyQmFuZCgpKSk7Cit9CisKIGJvb2wgU2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OmNhbkhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZv
cm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBFdmVudFRhcmdldGluZyBldmVudFRhcmdldGluZykg
Y29uc3QKIHsKICAgICBpZiAoIWNhbkhhdmVTY3JvbGxiYXJzKCkpCkBAIC0xMzAsOSArMTQxLDcg
QEAgYm9vbCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6Y2FuSGFuZGxlV2hlZWxFdmVudChj
b25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHcKICAgICBpZiAod2hlZWxFdmVudC5waGFzZSgpID09
IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlOjpNYXlCZWdpbikKICAgICAgICAgcmV0dXJuIHRydWU7
CiAKLSAgICAvLyBXZSBhbHdheXMgcnViYmVyLWJhbmQgdGhlIGxhdGNoZWQgbm9kZSwgb3IgdGhl
IHJvb3Qgbm9kZS4KLSAgICAvLyBUaGUgc3RhdGVsZXNzIHdoZWVsIGV2ZW50IGRvZXNuJ3QgdHJp
Z2dlciBydWJiZXItYmFuZC4KLSAgICBpZiAoaXNMYXRjaGVkTm9kZSgpIHx8IGV2ZW50VGFyZ2V0
aW5nID09IEV2ZW50VGFyZ2V0aW5nOjpOb2RlT25seSB8fCAoaXNSb290Tm9kZSgpICYmICF3aGVl
bEV2ZW50LmlzTm9uR2VzdHVyZUV2ZW50KCkpKQorICAgIGlmIChzaG91bGRSdWJiZXJCYW5kKHdo
ZWVsRXZlbnQsIGV2ZW50VGFyZ2V0aW5nKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBy
ZXR1cm4gZXZlbnRDYW5TY3JvbGxDb250ZW50cyh3aGVlbEV2ZW50KTsKQEAgLTM5Miw2ICs0MDEs
NDUgQEAgdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6c2V0Q3VycmVudFZlcnRpY2Fs
U25hcFBvaW50SW5kZXgoc3RkOjpvcHRpb25hbDwKICAgICBtX2N1cnJlbnRWZXJ0aWNhbFNuYXBQ
b2ludEluZGV4ID0gaW5kZXg7CiB9CiAKK0Jsb2NrU2Nyb2xsUHJvcGFnYXRpb24gU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGU6OnNob3VsZEJsb2NrU2Nyb2xsUHJvcGFnYXRpb25GaWx0ZXIoUGxh
dGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50KSBjb25zdAoreworICAgIEZsb2F0U2l6ZSBmaWx0
ZXJlZERlbHRhKHdoZWVsRXZlbnQuZGVsdGFYKCksIHdoZWVsRXZlbnQuZGVsdGFZKCkpOworI2lm
IFBMQVRGT1JNKE1BQykKKyAgICBhdXRvIGJpYXNlZERlbHRhID0gU2Nyb2xsaW5nRWZmZWN0c0Nv
bnRyb2xsZXI6OndoZWVsRGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRpY2FsKHdoZWVsRXZlbnQpOwor
I2Vsc2UKKyAgICBhdXRvIGJpYXNlZERlbHRhID0gd2hlZWxFdmVudC5kZWx0YSgpOworI2VuZGlm
CisgICAgYXV0byBwcm9wYWdhdGlvbiA9IHNob3VsZEJsb2NrU2Nyb2xsUHJvcGFnYXRpb24oYmlh
c2VkRGVsdGEpOworICAgIGlmIChoYXNIb3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgfHwg
aGFzVmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSkgeworICAgICAgICBpZiAocHJvcGFnYXRp
b24uc2hvdWxkQmxvY2tTY3JvbGxQcm9wYWdhdGlvbikKKyAgICAgICAgICAgIHJldHVybiBwcm9w
YWdhdGlvbjsKKyAgICAgICAgCisgICAgICAgIGZpbHRlcmVkRGVsdGEuc2V0V2lkdGgoaGFzSG9y
aXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpIHx8IChoYXNWZXJ0aWNhbE92ZXJzY3JvbGxCZWhh
dmlvcigpICYmICFiaWFzZWREZWx0YS53aWR0aCgpKSA/IDAgOiBmaWx0ZXJlZERlbHRhLndpZHRo
KCkpOworICAgICAgICBmaWx0ZXJlZERlbHRhLnNldEhlaWdodChoYXNWZXJ0aWNhbE92ZXJzY3Jv
bGxCZWhhdmlvcigpIHx8IChoYXNIb3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgJiYgIWJp
YXNlZERlbHRhLmhlaWdodCgpKSA/IDAgOiBmaWx0ZXJlZERlbHRhLmhlaWdodCgpKTsKKyAgICAg
ICAgd2hlZWxFdmVudCA9IHdoZWVsRXZlbnQuY29weVdpdGhEZWx0YUFuZFZlbG9jaXR5KGZpbHRl
cmVkRGVsdGEsIHdoZWVsRXZlbnQuc2Nyb2xsaW5nVmVsb2NpdHkoKSk7CisgICAgfQorICAgIHJl
dHVybiBwcm9wYWdhdGlvbjsKK30KKworQmxvY2tTY3JvbGxQcm9wYWdhdGlvbiBTY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZTo6c2hvdWxkQmxvY2tTY3JvbGxQcm9wYWdhdGlvbihjb25zdCBGbG9h
dFNpemUmIGRlbHRhKSBjb25zdAoreworICAgIEJsb2NrU2Nyb2xsUHJvcGFnYXRpb24gcHJvcGFn
YXRpb247CisgICAgaWYgKGhhc0hvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSB8fCBoYXNW
ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpKSB7CisgICAgICAgIGlmIChoYXNIb3Jpem9udGFs
T3ZlcnNjcm9sbEJlaGF2aW9yKCkgJiYgIWRlbHRhLmhlaWdodCgpICYmIGRlbHRhLndpZHRoKCkp
IHsKKyAgICAgICAgICAgIHByb3BhZ2F0aW9uLnNob3VsZEJsb2NrU2Nyb2xsUHJvcGFnYXRpb24g
PSB0cnVlOworICAgICAgICAgICAgcHJvcGFnYXRpb24uaXNIYW5kbGVkID0gZmFsc2U7CisgICAg
ICAgICAgICByZXR1cm4gcHJvcGFnYXRpb247CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IGlmICgoaGFzSG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpICYmIGhhc1ZlcnRpY2FsT3Zl
cnNjcm9sbEJlaGF2aW9yKCkpIHx8IChoYXNIb3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkg
JiYgIWRlbHRhLmhlaWdodCgpKSB8fCAoaGFzVmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSAm
JiAhZGVsdGEud2lkdGgoKSkpIHsKKyAgICAgICAgICAgIHByb3BhZ2F0aW9uLnNob3VsZEJsb2Nr
U2Nyb2xsUHJvcGFnYXRpb24gPSB0cnVlOworICAgICAgICAgICAgcHJvcGFnYXRpb24uaXNIYW5k
bGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiBwcm9wYWdhdGlvbjsKKyAgICAgICAgfQor
ICAgIH0KKyAgICByZXR1cm4gcHJvcGFnYXRpb247Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogI2VuZGlmIC8vIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUu
aAppbmRleCBiOWY1NDMwNzAxNmUyMDhkNGE2YzVmMGIzZTEzMWQ5OTc1ZDhlNjU1Li5mNDFmOTdk
OWQ5ZWM2ODRlYzg4ZWI4MWQyYWYxMDQ5Mjc0OGY4MmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmgK
QEAgLTM5LDYgKzM5LDExIEBAIGNsYXNzIFNjcm9sbGluZ1RyZWU7CiBjbGFzcyBTY3JvbGxpbmdT
dGF0ZVNjcm9sbGluZ05vZGU7CiBzdHJ1Y3QgV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0OwogCitz
dHJ1Y3QgQmxvY2tTY3JvbGxQcm9wYWdhdGlvbiB7CisgICAgYm9vbCBzaG91bGRCbG9ja1Njcm9s
bFByb3BhZ2F0aW9uID0gZmFsc2U7CisgICAgYm9vbCBpc0hhbmRsZWQgPSBmYWxzZTsKK307CisK
IGNsYXNzIFdFQkNPUkVfRVhQT1JUIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlIDogcHVibGlj
IFNjcm9sbGluZ1RyZWVOb2RlIHsKICAgICBmcmllbmQgY2xhc3MgU2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGVEZWxlZ2F0ZTsKICNpZiBQTEFURk9STShNQUMpCkBAIC0xNTksNyArMTY0LDE0IEBA
IHByb3RlY3RlZDoKIAogICAgIGJvb2wgYWxsb3dzSG9yaXpvbnRhbFNjcm9sbGluZygpIGNvbnN0
IHsgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzLmFsbG93c0hvcml6b250YWxTY3Jv
bGxpbmc7IH0KICAgICBib29sIGFsbG93c1ZlcnRpY2FsU2Nyb2xsaW5nKCkgY29uc3QgeyByZXR1
cm4gbV9zY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMuYWxsb3dzVmVydGljYWxTY3JvbGxpbmc7IH0K
LQorICAgIE92ZXJzY3JvbGxCZWhhdmlvciBob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkg
Y29uc3QgeyByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMuaG9yaXpvbnRhbE92ZXJz
Y3JvbGxCZWhhdmlvcjsgfQorICAgIE92ZXJzY3JvbGxCZWhhdmlvciB2ZXJ0aWNhbE92ZXJzY3Jv
bGxCZWhhdmlvcigpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzLnZl
cnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yOyB9CisgICAgYm9vbCBoYXNIb3Jpem9udGFsT3ZlcnNj
cm9sbEJlaGF2aW9yKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMu
aG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvciAhPSBPdmVyc2Nyb2xsQmVoYXZpb3I6OkF1dG87
IH0KKyAgICBib29sIGhhc1ZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29uc3QgeyByZXR1
cm4gbV9zY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMudmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3Ig
IT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpBdXRvOyB9CisgICAgQmxvY2tTY3JvbGxQcm9wYWdhdGlv
biBzaG91bGRCbG9ja1Njcm9sbFByb3BhZ2F0aW9uRmlsdGVyKFBsYXRmb3JtV2hlZWxFdmVudCYp
IGNvbnN0OworICAgIEJsb2NrU2Nyb2xsUHJvcGFnYXRpb24gc2hvdWxkQmxvY2tTY3JvbGxQcm9w
YWdhdGlvbihjb25zdCBGbG9hdFNpemUmKSBjb25zdDsKKyAgICBib29sIG92ZXJzY3JvbGxCZWhh
dmlvckFsbG93UnViYmVyQmFuZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWFQYXJh
bWV0ZXJzLmhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IgIT0gT3ZlcnNjcm9sbEJlaGF2aW9y
OjpOb25lIHx8ICBtX3Njcm9sbGFibGVBcmVhUGFyYW1ldGVycy52ZXJ0aWNhbE92ZXJzY3JvbGxC
ZWhhdmlvciAhPSBPdmVyc2Nyb2xsQmVoYXZpb3I6Ok5vbmU7IH0KKyAgICBib29sIHNob3VsZFJ1
YmJlckJhbmQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgRXZlbnRUYXJnZXRpbmcpIGNvbnN0
OwogICAgIHZvaWQgZHVtcFByb3BlcnRpZXMoV1RGOjpUZXh0U3RyZWFtJiwgT3B0aW9uU2V0PFNj
cm9sbGluZ1N0YXRlVHJlZUFzVGV4dEJlaGF2aW9yPikgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZh
dGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21w
b3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0
b3IuY3BwCmluZGV4IGJmMGJmZGUwYzU5NjhmMWJhM2MwMTQyNmQ5YjNkZDc3MzExMmRhNGMuLjU1
Y2FjNWQ4ZDE2OGU5NzAwZTUwYmQ3YjJjNzE4MThmOTk3NDhkYTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCkBAIC0xNjUyLDcg
KzE2NTIsOSBAQCBzdGF0aWMgYm9vbCByZWNvbXBvc2l0ZUNoYW5nZVJlcXVpcmVzR2VvbWV0cnlV
cGRhdGUoY29uc3QgUmVuZGVyU3R5bGUmIG9sZFN0eWxlLAogICAgICAgICB8fCBvbGRTdHlsZS5v
ZmZzZXRQb3NpdGlvbigpICE9IG5ld1N0eWxlLm9mZnNldFBvc2l0aW9uKCkKICAgICAgICAgfHwg
b2xkU3R5bGUub2Zmc2V0RGlzdGFuY2UoKSAhPSBuZXdTdHlsZS5vZmZzZXREaXN0YW5jZSgpCiAg
ICAgICAgIHx8IG9sZFN0eWxlLm9mZnNldFJvdGF0ZSgpICE9IG5ld1N0eWxlLm9mZnNldFJvdGF0
ZSgpCi0gICAgICAgIHx8ICFhcmVQb2ludGluZ1RvRXF1YWxEYXRhKG9sZFN0eWxlLmNsaXBQYXRo
KCksIG5ld1N0eWxlLmNsaXBQYXRoKCkpOworICAgICAgICB8fCAhYXJlUG9pbnRpbmdUb0VxdWFs
RGF0YShvbGRTdHlsZS5jbGlwUGF0aCgpLCBuZXdTdHlsZS5jbGlwUGF0aCgpKQorICAgICAgICB8
fCBvbGRTdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JYKCkgIT0gbmV3U3R5bGUub3ZlcnNjcm9sbEJl
aGF2aW9yWCgpCisgICAgICAgIHx8IG9sZFN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclkoKSAhPSBu
ZXdTdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JZKCk7CiB9CiAKIHZvaWQgUmVuZGVyTGF5ZXJDb21w
b3NpdG9yOjpsYXllclN0eWxlQ2hhbmdlZChTdHlsZURpZmZlcmVuY2UgZGlmZiwgUmVuZGVyTGF5
ZXImIGxheWVyLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpCkBAIC0zOTQ1LDYgKzM5NDcs
MTEgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJvb3RPckJvZHlTdHlsZUNoYW5nZWQo
UmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnMKICAgICBib29sIGhhZEZpeGVkQmFja2dyb3Vu
ZCA9IG9sZFN0eWxlICYmIG9sZFN0eWxlLT5oYXNFbnRpcmVseUZpeGVkQmFja2dyb3VuZCgpOwog
ICAgIGlmIChoYWRGaXhlZEJhY2tncm91bmQgIT0gcmVuZGVyZXIuc3R5bGUoKS5oYXNFbnRpcmVs
eUZpeGVkQmFja2dyb3VuZCgpKQogICAgICAgICByb290TGF5ZXJDb25maWd1cmF0aW9uQ2hhbmdl
ZCgpOworICAgIAorICAgIGlmIChvbGRTdHlsZSAmJiAob2xkU3R5bGUtPm92ZXJzY3JvbGxCZWhh
dmlvclgoKSAhPSByZW5kZXJlci5zdHlsZSgpLm92ZXJzY3JvbGxCZWhhdmlvclgoKSB8fCBvbGRT
dHlsZS0+b3ZlcnNjcm9sbEJlaGF2aW9yWSgpICE9IHJlbmRlcmVyLnN0eWxlKCkub3ZlcnNjcm9s
bEJlaGF2aW9yWSgpKSkgeworICAgICAgICBpZiAoYXV0byogbGF5ZXIgPSBtX3JlbmRlclZpZXcu
bGF5ZXIoKSkKKyAgICAgICAgICAgIGxheWVyLT5zZXROZWVkc0NvbXBvc2l0aW5nR2VvbWV0cnlV
cGRhdGUoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyb290QmFj
a2dyb3VuZENvbG9yT3JUcmFuc3BhcmVuY3lDaGFuZ2VkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCmluZGV4IDZiMzYzOGQxYThmMGUxZTY3NGEz
NWZlOWNmMmUzY2I1ZWY2YjhkMGEuLjZlZDYyNzg4MjIxODY5ZmZhY2FmNjQ0MGM3YTQ0NGUyOTdk
OTNhZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
LmNwcApAQCAtMTE5Niw3ICsxMTk2LDkgQEAgYm9vbCBSZW5kZXJTdHlsZTo6Y2hhbmdlUmVxdWly
ZXNSZWNvbXBvc2l0ZUxheWVyKGNvbnN0IFJlbmRlclN0eWxlJiBvdGhlciwgT3B0aW8KICAgICAg
ICAgICAgIHx8IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmJhY2tmYWNlVmlzaWJpbGl0eSAhPSBv
dGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5iYWNrZmFjZVZpc2liaWxpdHkKICAgICAgICAg
ICAgIHx8IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnBlcnNwZWN0aXZlICE9IG90aGVyLm1fcmFy
ZU5vbkluaGVyaXRlZERhdGEtPnBlcnNwZWN0aXZlCiAgICAgICAgICAgICB8fCBtX3JhcmVOb25J
bmhlcml0ZWREYXRhLT5wZXJzcGVjdGl2ZU9yaWdpblggIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+cGVyc3BlY3RpdmVPcmlnaW5YCi0gICAgICAgICAgICB8fCBtX3JhcmVOb25Jbmhl
cml0ZWREYXRhLT5wZXJzcGVjdGl2ZU9yaWdpblkgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVk
RGF0YS0+cGVyc3BlY3RpdmVPcmlnaW5ZKQorICAgICAgICAgICAgfHwgbV9yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+cGVyc3BlY3RpdmVPcmlnaW5ZICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERh
dGEtPnBlcnNwZWN0aXZlT3JpZ2luWQorICAgICAgICAgICAgfHwgbV9yYXJlTm9uSW5oZXJpdGVk
RGF0YS0+b3ZlcnNjcm9sbEJlaGF2aW9yWCAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRh
LT5vdmVyc2Nyb2xsQmVoYXZpb3JYCisgICAgICAgICAgICB8fCBtX3JhcmVOb25Jbmhlcml0ZWRE
YXRhLT5vdmVyc2Nyb2xsQmVoYXZpb3JZICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEt
Pm92ZXJzY3JvbGxCZWhhdmlvclkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA5YjA2M2Q0NjEwOGJlZWNiNzlhMjJkYzhlMWE4M2QzOWFjNzNlMjJiLi5lNTUyMWI3
NjY0Y2I1MzFjNDAzMDRkNGYzYTc4OGIzNDE5ZTZhOGI4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAK
KzIwMjEtMTItMDEgIE5pa29sYW9zIE1vdWNodGFyaXMgIDxubW91Y2h0YXJpc0BhcHBsZS5jb20+
CisKKyAgICAgICAgSW1wbGVtZW50IENTUyBvdmVyc2Nyb2xsLWJlaGF2aW9yIGZvciBhc3luY2hy
b25vdXMgc2Nyb2xsIG9uIE1hYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjIwMTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlv
ci1lbGVtZW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcv
bWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMt
b3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9z
Y3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1l
bnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9tYWMvYXN5
bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci11
bnNjcm9sbGFibGUtaWZyYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9z
Y3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFt
ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9yZXNvdXJjZXMvb3ZlcnNj
cm9sbC1iZWhhdmlvci1zdXBwb3J0LmpzOiBBZGRlZC4KKyAgICAgICAgKGdldERlbHRhcyk6Cisg
ICAgICAgIChhc3luYyBtb3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCk6CisKIDIwMjEtMTEtMzAgIFJv
YmVydCBKZW5uZXIgIDxKZW5uZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJFQkFTRUxJTkUgWyBN
b250ZXJleSBdZmFzdC9jc3MvY29udGludWF0aW9uQ3Jhc2guaHRtbCAobGF5b3V0LXRlc3QpIGlz
IGEgY29uc3RhbnQgdGV4dCBmYWlsdXJlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Nj
cm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1vdmVyc2Nyb2xsLWJlaGF2
aW9yLWVsZW1lbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI3MTUwZmY2MGI1ZGJkZDBiNGE3
YWM2ZjgzZmI1NmY1N2NkMmNkODIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50LWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDIwIEBACisKK1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0
ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBhdXRvLgorUEFTUyBFbGVtZW50IHZl
cnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBhdXRvLgor
UEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2
aW9yOiBjb250YWluIGF1dG8uCitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0
aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGF1dG8uCitQQVNTIEVsZW1lbnQgaG9yaXpv
bnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgYXV0by4KK1BB
U1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6
IG5vbmUgYXV0by4KK1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3Zl
cnNjcm9sbC1iZWhhdmlvcjogYXV0byBjb250YWluLgorUEFTUyBFbGVtZW50IHZlcnRpY2FsIHNj
cm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBjb250YWluLgorUEFTUyBF
bGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBj
b250YWluIGNvbnRhaW4uCitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBv
dmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGNvbnRhaW4uCitQQVNTIEVsZW1lbnQgaG9yaXpv
bnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgY29udGFpbi4K
K1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZp
b3I6IG5vbmUgY29udGFpbi4KK1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdp
dGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBub25lLgorUEFTUyBFbGVtZW50IHZlcnRpY2Fs
IHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBub25lLgorUEFTUyBF
bGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBj
b250YWluIG5vbmUuCitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVy
c2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIG5vbmUuCitQQVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBz
Y3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgbm9uZS4KK1BBU1MgRWxl
bWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUg
bm9uZS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5j
LW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3Jv
bGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjE4MTM3YjljYjc3OWE5MTY3ZGIyMjUxZDMwNjdlNDYzZWFjOTQ2MzcKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1i
ZWhhdmlvci1lbGVtZW50Lmh0bWwKQEAgLTAsMCArMSw4NiBAQAorPCFkb2N0eXBlIGh0bWw+IDwh
LS0gd2Via2l0LXRlc3QtcnVubmVyIFsgQXN5bmNPdmVyZmxvd1Njcm9sbGluZ0VuYWJsZWQ9dHJ1
ZSBBc3luY0ZyYW1lU2Nyb2xsaW5nRW5hYmxlZD10cnVlIF0gLS0+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXN1cHBvcnQuanMiPjwvc2Ny
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
ICdDb250aW51ZSB1cCB0aGUgaG9yaXpvbnRhbCBzY3JvbGwgY2hhaW5pbmcnKTsKKyAgICAgICAg
ICAgIH0pOworICAgICAgICB9LCAnRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGgg
b3ZlcnNjcm9sbC1iZWhhdmlvcjogJyArIG92ZXJzY3JvbGxYICsgJyAnICsgb3ZlcnNjcm9sbFkg
KyAnLicpOworCisgICAgICAgIHByb21pc2VfdGVzdCgoKSA9PiB7CisgICAgICAgICAgICByZXNl
dFRlc3QoKTsKKyAgICAgICAgICAgIHNjcm9sbGVyLnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclgg
PSBvdmVyc2Nyb2xsWDsKKyAgICAgICAgICAgIHNjcm9sbGVyLnN0eWxlLm92ZXJzY3JvbGxCZWhh
dmlvclkgPSBvdmVyc2Nyb2xsWTsKKworICAgICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGll
bnRXaWR0aCAvIDI7CisgICAgICAgICAgICB2YXIgeSA9IHNjcm9sbGVyLmNsaWVudEhlaWdodCAv
IDI7CisgICAgICAgICAgICB2YXIgZGVsdGEgPSBnZXREZWx0YXMoImRvd24iKTsKKyAgICAgICAg
ICAgIHJldHVybiBtb3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCh4LCB5LCBkZWx0YS5YLCBkZWx0YS5Z
LCBkZWx0YS5YLCBkZWx0YS5ZKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRf
ZXF1YWxzKHJvb3Quc2Nyb2xsVG9wID4gMCwgcHJvcGFnYXRlWSwgJ0NvbnRpbnVlIHVwIHRoZSB2
ZXJ0aWNhbCBzY3JvbGwgY2hhaW5pbmcnKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9LCAn
RWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6ICcg
KyBvdmVyc2Nyb2xsWCArICcgJyArIG92ZXJzY3JvbGxZICsgJy4nKTsKKyAgICB9KTsKK30KKwor
YWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIHN0YXJ0VGVzdCk7Cis8L3NjcmlwdD4KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGlu
Zy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZy
YW1lLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MDBhMGI3ZDkwNWI4N2MxZGI3NjI2OTRmZDAw
NjM4ZjE5NzY5NTM3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxp
bmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDIxIEBACisKKworUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRo
IG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gYXV0by4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNj
cm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBhdXRvLgorUEFTUyBJZnJh
bWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRh
aW4gYXV0by4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9s
bC1iZWhhdmlvcjogY29udGFpbiBhdXRvLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwg
dGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgYXV0by4KK1BBU1MgSWZyYW1lIHZl
cnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBhdXRvLgor
UEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZp
b3I6IGF1dG8gY29udGFpbi4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGgg
b3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBjb250YWluLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRh
bCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gY29udGFpbi4K
K1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlv
cjogY29udGFpbiBjb250YWluLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3
aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgY29udGFpbi4KK1BBU1MgSWZyYW1lIHZlcnRp
Y2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBjb250YWluLgor
UEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZp
b3I6IGF1dG8gbm9uZS4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3Zl
cnNjcm9sbC1iZWhhdmlvcjogYXV0byBub25lLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3Jv
bGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gbm9uZS4KK1BBU1MgSWZy
YW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFp
biBub25lLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3Jv
bGwtYmVoYXZpb3I6IG5vbmUgbm9uZS4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0
IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBub25lLgorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJh
bWUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1vdmVyc2Nyb2xs
LWJlaGF2aW9yLWlmcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNmODcxMzY0Zjk1YmQ3N2Y2ZTRjZTli
ZWE0MjgzNTE0MGI0MGMxZjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Nj
cm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUuaHRtbApAQCAtMCww
ICsxLDg2IEBACis8IWRvY3R5cGUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBBc3lu
Y092ZXJmbG93U2Nyb2xsaW5nRW5hYmxlZD10cnVlIEFzeW5jRnJhbWVTY3JvbGxpbmdFbmFibGVk
PXRydWUgXSAtLT4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVz
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvb3ZlcnNj
cm9sbC1iZWhhdmlvci1zdXBwb3J0LmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0iaGVscCIgaHJl
Zj0iaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1vdmVyc2Nyb2xsLWJlaGF2aW9yIj4KKzxz
dHlsZT4KKyAgICAuc2Nyb2xsaW5nIHsKKyAgICAgICAgb3ZlcmZsb3c6IHNjcm9sbDsKKyAgICB9
CisgICAgLnNjcm9sbENvbnRlbnQgeworICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgIGhl
aWdodDogMzAwcHg7CisgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcs
IHJlZCwgYmx1ZSk7CisgICAgfQorICAgICNyb290IHsKKyAgICAgICAgd2lkdGg6IDIwMHB4Owor
ICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAgIH0KKyAgICAjc2Nyb2xsZXIgeworICAgICAgICB3
aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICAgIG92ZXJzY3JvbGwt
YmVoYXZpb3IteTogYXV0bzsKKyAgICB9Cis8L3N0eWxlPgorPGRpdiBpZD0ncm9vdCcgY2xhc3M9
InNjcm9sbGluZyI+CisgICAgPGlmcmFtZSBpZD0nc2Nyb2xsZXInIHNyY2RvYz0iPGh0bWw+PGRp
diBzdHlsZT0nd2lkdGg6IDMwMHB4OyBoZWlnaHQ6IDMwMHB4Oyc+PC9kaXY+PC9odG1sPgorICAg
ICAgICAiPjwvaWZyYW1lPgorICAgIDxkaXYgY2xhc3M9InNjcm9sbENvbnRlbnQiPjwvZGl2Pgor
PC9kaXY+CisKKzxzY3JpcHQ+CisgICAgY29uc3Qgcm9vdCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdyb290Jyk7CisgICAgY29uc3Qgc2Nyb2xsZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnc2Nyb2xsZXInKTsKKyAgICB2YXIgb3ZlcnNjcm9sbERhdGFzID0gW1siYXV0byIsICJhdXRv
IiwgdHJ1ZSwgdHJ1ZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJjb250YWluIiwg
ImF1dG8iLCBmYWxzZSwgdHJ1ZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJub25l
IiwgImF1dG8iLCBmYWxzZSwgdHJ1ZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJh
dXRvIiwgImNvbnRhaW4iLCB0cnVlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgWyJjb250YWluIiwgImNvbnRhaW4iLCBmYWxzZSwgZmFsc2VdLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFsibm9uZSIsICJjb250YWluIiwgZmFsc2UsIGZhbHNlXSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBbImF1dG8iLCAibm9uZSIsIHRydWUsIGZhbHNlXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBbImNvbnRhaW4iLCAibm9uZSIsIGZhbHNlLCBmYWxzZV0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJub25lIiwgIm5vbmUiLCBmYWxzZSwgZmFs
c2VdXTsKKyAgICBmdW5jdGlvbiByZXNldFRlc3QoKSB7CisgICAgICAgIC8vIFRyeSB2YXJpb3Vz
IG1ldGhvZHMgdG8gZW5zdXJlIHRoZSBlbGVtZW50IHBvc2l0aW9uIGlzIHJlc2V0IGltbWVkaWF0
ZWx5LgorICAgICAgICBzY3JvbGxlci5jb250ZW50V2luZG93LnNjcm9sbFggPSAzMDA7CisgICAg
ICAgIHNjcm9sbGVyLmNvbnRlbnRXaW5kb3cuc2Nyb2xsWSA9IDMwMDsKKyAgICAgICAgc2Nyb2xs
ZXIuY29udGVudFdpbmRvdy5zY3JvbGxUbygzMDAsIDMwMCk7CisgICAgICAgIHJvb3Quc2Nyb2xs
TGVmdCA9IDA7CisgICAgICAgIHJvb3Quc2Nyb2xsVG9wID0gMDsKKyAgICAgICAgcm9vdC5zY3Jv
bGxUbygwLCAwKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBvdmVyc2Nyb2xsQmVoYXZpb3JUZXN0
KCkgeworICAgICAgICBvdmVyc2Nyb2xsRGF0YXMuZm9yRWFjaCgoW292ZXJzY3JvbGxYLCBvdmVy
c2Nyb2xsWSwgcHJvcGFnYXRlWCwgcHJvcGFnYXRlWV0pID0+IHsKKyAgICAgICAgICAgIHByb21p
c2VfdGVzdCgoKSA9PiB7CisgICAgICAgICAgICAgICAgcmVzZXRUZXN0KCk7CisgICAgICAgICAg
ICAgICAgdmFyIHRhcmdldCA9IHNjcm9sbGVyLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoImh0bWwiKVswXTsKKyAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUu
b3ZlcnNjcm9sbEJlaGF2aW9yWCA9IG92ZXJzY3JvbGxYOworICAgICAgICAgICAgICAgIHRhcmdl
dC5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JZID0gb3ZlcnNjcm9sbFk7CisgICAgICAgICAgICAg
ICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAgICAgICAgICAgICAgdmFy
IHkgPSBzY3JvbGxlci5jbGllbnRIZWlnaHQgLyAyOworICAgICAgICAgICAgICAgIHZhciBkZWx0
YSA9IGdldERlbHRhcygicmlnaHQiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbW91c2VXaGVl
bFNjcm9sbEFuZFdhaXQoeCwgeSwgZGVsdGEuWCwgZGVsdGEuWSwgZGVsdGEuWCwgZGVsdGEuWSku
dGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3Jv
bGxMZWZ0ID4gMCwgcHJvcGFnYXRlWCwgJ0NvbnRpbnVlIHVwIHRoZSBob3Jpem9udGFsIHNjcm9s
bCBjaGFpbmluZycpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSwgJ0lmcmFt
ZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogJyArIG92
ZXJzY3JvbGxYICsgJyAnICsgb3ZlcnNjcm9sbFkgKyAnLicpOworCisgICAgICAgICAgICBwcm9t
aXNlX3Rlc3QoKCkgPT4geworICAgICAgICAgICAgICAgIHJlc2V0VGVzdCgpOworICAgICAgICAg
ICAgICAgIHZhciB0YXJnZXQgPSBzY3JvbGxlci5jb250ZW50V2luZG93LmRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJodG1sIilbMF07CisgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxl
Lm92ZXJzY3JvbGxCZWhhdmlvclggPSBvdmVyc2Nyb2xsWDsKKyAgICAgICAgICAgICAgICB0YXJn
ZXQuc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWSA9IG92ZXJzY3JvbGxZOworCisgICAgICAgICAg
ICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAgICAgICAgICAgICAg
dmFyIHkgPSBzY3JvbGxlci5jbGllbnRIZWlnaHQgLyAyOworICAgICAgICAgICAgICAgIHZhciBk
ZWx0YSA9IGdldERlbHRhcygiZG93biIpOworICAgICAgICAgICAgICAgIHJldHVybiBtb3VzZVdo
ZWVsU2Nyb2xsQW5kV2FpdCh4LCB5LCBkZWx0YS5YLCBkZWx0YS5ZLCBkZWx0YS5YLCBkZWx0YS5Z
KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyb290LnNj
cm9sbFRvcCA+IDAsIHByb3BhZ2F0ZVksICdDb250aW51ZSB1cCB0aGUgdmVydGljYWwgc2Nyb2xs
IGNoYWluaW5nJyk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9LCAnSWZyYW1l
IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogJyArIG92ZXJz
Y3JvbGxYICsgJyAnICsgb3ZlcnNjcm9sbFkgKyAnLicpOworICAgICAgICB9KTsKKyAgICB9CisK
KyAgICBzY3JvbGxlci5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgb3ZlcnNjcm9sbEJlaGF2aW9y
VGVzdCk7Cis8L3NjcmlwdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlv
ci11bnNjcm9sbGFibGUtZWxlbWVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3Nj
cm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVu
dC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjM5NWI2NDg4ZDA4NzBiOTU2MWMwMjg2NzlkN2Ux
NWE0N2ZjZTZlOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5n
L21hYy9hc3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50LWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDQgQEAKKworUEFTUyBVbnNjcm9sbGFibGUgZWxlbWVudCBob3Jp
em9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4KK1BBU1Mg
VW5zY3JvbGxhYmxlIGVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xs
LWJlaGF2aW9yOiBub25lLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGlu
Zy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZp
b3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNDQ4ZjJlMGVhNWNjMDc4
ZjFmOWVhNGMyZDdmNzgwZWU3YjdlNTg0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxl
LWVsZW1lbnQuaHRtbApAQCAtMCwwICsxLDY3IEBACis8IWRvY3R5cGUgaHRtbD4gPCEtLSB3ZWJr
aXQtdGVzdC1ydW5uZXIgWyBBc3luY092ZXJmbG93U2Nyb2xsaW5nRW5hYmxlZD10cnVlIEFzeW5j
RnJhbWVTY3JvbGxpbmdFbmFibGVkPXRydWUgXSAtLT4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvb3ZlcnNjcm9sbC1iZWhhdmlvci1zdXBwb3J0LmpzIj48L3NjcmlwdD4K
KzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1vdmVy
c2Nyb2xsLWJlaGF2aW9yIj4KKzxzdHlsZT4KKyAgICAuc2Nyb2xsaW5nIHsKKyAgICAgICAgb3Zl
cmZsb3c6IHNjcm9sbDsKKyAgICB9CisgICAgLnNjcm9sbENvbnRlbnQgeworICAgICAgICB3aWR0
aDogMzAwcHg7CisgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgfQorICAgICNyb290IHsKKyAg
ICAgICAgd2lkdGg6IDIwMHB4OworICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAgIH0KKyAgICAj
c2Nyb2xsZXIgeworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7
CisgICAgICAgIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmU7CisgICAgICAgIG92ZXJmbG93OiB2
aXNpYmxlOworICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZWQs
IGJsdWUpOworICAgIH0KKzwvc3R5bGU+Cis8ZGl2IGlkPSJyb290IiBjbGFzcz0ic2Nyb2xsaW5n
Ij4KKyAgICA8ZGl2IGlkPSJzY3JvbGxlciI+CisgICAgICAgIDxkaXYgY2xhc3M9InNjcm9sbENv
bnRlbnQiPjwvZGl2PgorICAgIDwvZGl2PgorICAgIDxkaXYgY2xhc3M9InNjcm9sbENvbnRlbnQi
PjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+Citjb25zdCByb290ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ3Jvb3QnKTsKK2NvbnN0IHNjcm9sbGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3Njcm9sbGVyJyk7CisKK2Z1bmN0aW9uIHJlc2V0VGVzdCgpIHsKKyAgICByb290LnNjcm9s
bExlZnQgPSAwOworICAgIHJvb3Quc2Nyb2xsVG9wID0gMDsKKyAgICByb290LnNjcm9sbFRvKDAs
IDApOworfQorCitmdW5jdGlvbiBzdGFydFRlc3QoKSB7CisgICAgICAgIHByb21pc2VfdGVzdCgo
KSA9PiB7CisgICAgICAgICAgICByZXNldFRlc3QoKTsKKyAgICAgICAgICAgIHZhciB4ID0gc2Ny
b2xsZXIuY2xpZW50V2lkdGggLyAyOworICAgICAgICAgICAgdmFyIHkgPSBzY3JvbGxlci5jbGll
bnRIZWlnaHQgLyAyOworICAgICAgICAgICAgdmFyIGRlbHRhID0gZ2V0RGVsdGFzKCJyaWdodCIp
OworICAgICAgICAgICAgcmV0dXJuIG1vdXNlV2hlZWxTY3JvbGxBbmRXYWl0KHgsIHksIGRlbHRh
LlgsIGRlbHRhLlksIGRlbHRhLlgsIGRlbHRhLlkpLnRoZW4oKCkgPT4geworICAgICAgICAgICAg
ICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxMZWZ0ID4gMCwgdHJ1ZSwgJ0NvbnRpbnVlIHVw
IHRoZSBob3Jpem9udGFsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAgICAgICAgfSk7CisgICAg
ICAgIH0sICdVbnNjcm9sbGFibGUgZWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGgg
b3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4nKTsKKworICAgICAgICBwcm9taXNlX3Rlc3QoKCkg
PT4geworICAgICAgICAgICAgcmVzZXRUZXN0KCk7CisgICAgICAgICAgICB2YXIgeCA9IHNjcm9s
bGVyLmNsaWVudFdpZHRoIC8gMjsKKyAgICAgICAgICAgIHZhciB5ID0gc2Nyb2xsZXIuY2xpZW50
SGVpZ2h0IC8gMjsKKyAgICAgICAgICAgIHZhciBkZWx0YSA9IGdldERlbHRhcygiZG93biIpOwor
ICAgICAgICAgICAgcmV0dXJuIG1vdXNlV2hlZWxTY3JvbGxBbmRXYWl0KHgsIHksIGRlbHRhLlgs
IGRlbHRhLlksIGRlbHRhLlgsIGRlbHRhLlkpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAg
IGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxUb3AgPiAwLCB0cnVlLCAnQ29udGludWUgdXAgdGhl
IHZlcnRpY2FsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0s
ICdVbnNjcm9sbGFibGUgZWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3Jv
bGwtYmVoYXZpb3I6IG5vbmUuJyk7Cit9CisKK2FkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBzdGFy
dFRlc3QpOworPC9zY3JpcHQ+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZp
b3ItdW5zY3JvbGxhYmxlLWlmcmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3Nj
cm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1l
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZmE1OWNjYmE3OWFlZmYzM2RhNzBlOTNkNDg4YTA3
ZWVjOWM1NjkxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcv
bWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSw1IEBACisKKworUEFTUyBVbnNjcm9sbGFibGUgaWZyYW1lIGhvcml6
b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLgorUEFTUyBV
bnNjcm9sbGFibGUgaWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1i
ZWhhdmlvcjogbm9uZS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcv
bWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3It
dW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMzZWM1YjI2M2MyYjgzYmUxYTUy
ODcxNmNlODY1NjNkOTdhY2QxZDYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZy
YW1lLmh0bWwKQEAgLTAsMCArMSw2NiBAQAorPCFkb2N0eXBlIGh0bWw+IDwhLS0gd2Via2l0LXRl
c3QtcnVubmVyIFsgQXN5bmNPdmVyZmxvd1Njcm9sbGluZ0VuYWJsZWQ9dHJ1ZSBBc3luY0ZyYW1l
U2Nyb2xsaW5nRW5hYmxlZD10cnVlIF0gLS0+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNv
dXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jl
c291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL292ZXJzY3JvbGwtYmVoYXZpb3Itc3VwcG9ydC5qcyI+PC9zY3JpcHQ+Cis8bGlu
ayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3Mtb3ZlcnNjcm9s
bC1iZWhhdmlvciI+Cis8c3R5bGU+CisgICAgLnNjcm9sbGluZyB7CisgICAgICAgIG92ZXJmbG93
OiBzY3JvbGw7CisgICAgfQorICAgIC5zY3JvbGxDb250ZW50IHsKKyAgICAgICAgd2lkdGg6IDMw
MHB4OworICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgIH0KKyAgICAjcm9vdCB7CisgICAgICAg
IHdpZHRoOiAyMDBweDsKKyAgICAgICAgaGVpZ2h0OiAyMDBweDsKKyAgICB9CisgICAgI3Njcm9s
bGVyIHsKKyAgICAgICAgd2lkdGg6IDIwMHB4OworICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAg
ICAgICBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lOworICAgICAgICBvdmVyZmxvdzogdmlzaWJs
ZTsKKyAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmVkLCBibHVl
KTsKKyAgICB9Cis8L3N0eWxlPgorPGRpdiBpZD0ncm9vdCcgY2xhc3M9InNjcm9sbGluZyI+Cisg
ICAgPGlmcmFtZSBpZD0nc2Nyb2xsZXInIHNyY2RvYz0iPGh0bWwgc3R5bGU9J292ZXJzY3JvbGwt
YmVoYXZpb3I6IG5vbmU7Jz48ZGl2IHN0eWxlPSd3aWR0aDogMTAwcHg7IGhlaWdodDogMTAwcHg7
Jz48L2Rpdj48L2h0bWw+CisgICAgICAgICI+PC9pZnJhbWU+CisgICAgPGRpdiBjbGFzcz0ic2Ny
b2xsQ29udGVudCI+PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4KK2NvbnN0IHJvb3QgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgncm9vdCcpOworY29uc3Qgc2Nyb2xsZXIgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnc2Nyb2xsZXInKTsKKworZnVuY3Rpb24gcmVzZXRUZXN0KCkgeworICAg
IHJvb3Quc2Nyb2xsTGVmdCA9IDA7CisgICAgcm9vdC5zY3JvbGxUb3AgPSAwOworICAgIHJvb3Qu
c2Nyb2xsVG8oMCwgMCk7Cit9CisKK2Z1bmN0aW9uIHN0YXJ0VGVzdCgpIHsKKyAgICAgICAgcHJv
bWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAgIHJlc2V0VGVzdCgpOworICAgICAgICAgICAg
dmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAgICAgICAgICB2YXIgeSA9IHNj
cm9sbGVyLmNsaWVudEhlaWdodCAvIDI7CisgICAgICAgICAgICB2YXIgZGVsdGEgPSBnZXREZWx0
YXMoInJpZ2h0Iik7CisgICAgICAgICAgICByZXR1cm4gbW91c2VXaGVlbFNjcm9sbEFuZFdhaXQo
eCwgeSwgZGVsdGEuWCwgZGVsdGEuWSwgZGVsdGEuWCwgZGVsdGEuWSkudGhlbigoKSA9PiB7Cisg
ICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbExlZnQgPiAwLCB0cnVlLCAn
Q29udGludWUgdXAgdGhlIGhvcml6b250YWwgc2Nyb2xsIGNoYWluaW5nJyk7CisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgfSwgJ1Vuc2Nyb2xsYWJsZSBpZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwg
dGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuJyk7CisKKyAgICAgICAgcHJvbWlz
ZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAgIHJlc2V0VGVzdCgpOworICAgICAgICAgICAgdmFy
IHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAgICAgICAgICB2YXIgeSA9IHNjcm9s
bGVyLmNsaWVudEhlaWdodCAvIDI7CisgICAgICAgICAgICB2YXIgZGVsdGEgPSBnZXREZWx0YXMo
ImRvd24iKTsKKyAgICAgICAgICAgIHJldHVybiBtb3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCh4LCB5
LCBkZWx0YS5YLCBkZWx0YS5ZLCBkZWx0YS5YLCBkZWx0YS5ZKS50aGVuKCgpID0+IHsKKyAgICAg
ICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsVG9wID4gMCwgdHJ1ZSwgJ0NvbnRp
bnVlIHVwIHRoZSB2ZXJ0aWNhbCBzY3JvbGwgY2hhaW5pbmcnKTsKKyAgICAgICAgICAgIH0pOwor
ICAgICAgICB9LCAnVW5zY3JvbGxhYmxlIGlmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRo
IG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuJyk7Cit9CisKK2FkZEV2ZW50TGlzdGVuZXIoImxv
YWQiLCBzdGFydFRlc3QpOworPC9zY3JpcHQ+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
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
MDApOworICAgIH0pOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450197</attachid>
            <date>2022-01-27 17:43:40 -0800</date>
            <delta_ts>2022-01-28 16:54:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220139-20220127174339.patch</filename>
            <type>text/plain</type>
            <size>35349</size>
            <attacher name="Nikos Mouchtaris">nmouchtaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MzUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGJiNmQyZjJmYmNkN2I3
ODU1MzIxY2U1YjgwMWQ1YzJmYWNiMzhmNC4uODBhYWE0YzRhYWIwNzIyNjM2NGFhM2M1ZTE0YzA2
YTQ4ZDNiNjNmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDIxLTEyLTAxICBOaWtv
bGFvcyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxl
bWVudCBDU1Mgb3ZlcnNjcm9sbC1iZWhhdmlvciBmb3IgYXN5bmNocm9ub3VzIHNjcm9sbCBvbiBN
YWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDEz
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNwbGl0
IHVwIHBhdGNoIGJ5IENhdGhpZSBDaGVuIGFuZCBGcmVkZXJpYyBXYW5nLiBBZGQgZnVuY3Rpb24g
Zm9yIGJsb2NraW5nIHNjcm9sbCBjaGFpbmluZworICAgICAgICBhbmQgZmlsdGVyaW5nIHNjcm9s
bCBkZWx0YSBkZXBlbmRpbmcgb24gdGhlIHZhbHVlcyBvZiBvdmVyc2Nyb2xsIGJlaGF2aW9yIGZv
ciBhIHNjcm9sbGluZworICAgICAgICBub2RlLiBUaGlzIHBhdGNoIGlzIGZvciBhc3luY2hyb25v
dXMgc2Nyb2xsaW5nIG9ubHkuCisKKyAgICAgICAgVGVzdHM6IGZhc3Qvc2Nyb2xsaW5nL21hYy9h
c3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQuaHRtbAorICAgICAgICAgICAgICAgZmFz
dC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0bWwKKyAg
ICAgICAgICAgICAgIGZhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9y
LXVuc2Nyb2xsYWJsZS1lbGVtZW50Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvc2Nyb2xsaW5n
L21hYy9hc3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUuaHRtbAor
CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxpbmdUcmVlOjpzaG91bGRCbG9ja1Njcm9sbENoYWluaW5nV2l0aE5vZGUp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZTo6aGFuZGxlV2hlZWxFdmVudFdpdGhO
b2RlKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmg6CisgICAgICAg
ICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaDoKKyAgICAgICAg
KiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdh
dGVNYWM6OmFsbG93c0hvcml6b250YWxTdHJldGNoaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OmFsbG93c1ZlcnRpY2Fs
U3RyZXRjaGluZyBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9z
aXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWNvbXBvc2l0ZUNoYW5nZVJlcXVpcmVzR2Vv
bWV0cnlVcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpy
b290T3JCb2R5U3R5bGVDaGFuZ2VkKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmNoYW5nZVJlcXVpcmVz
UmVjb21wb3NpdGVMYXllciBjb25zdCk6CisKIDIwMjEtMTEtMzAgIFNpbW9uIEZyYXNlciAgPHNp
bW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUGFzcyB0aGUgdGltZXN0YW1wIGZvciBz
Y3JvbGxpbmcgdGhyZWFkIGFuaW1hdGlvbnMgdGhyb3VnaCBhbGwgdGhlIHNlcnZpY2VTY3JvbGxB
bmltYXRpb24oKSBjYWxscwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAppbmRleCBkOTRmZjEzMDZiNzll
MjhmYjY4OTkwMDY5NzcwOGFiMjhkYmNmNTJkLi44MmY3NTdhMjdiM2IwNzI0MDA2ZDcyYTUzODJl
MzRmYTRjYTk0NjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9B
c3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcApAQCAtNzg3LDggKzc4Nyw4IEBA
IHZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0U2Nyb2xsaW5nTm9kZVNjcm9sbGFi
bGVBcmVhR2VvbWV0cnkoU2Nyb2xsaW5nCiAgICAgc2Nyb2xsaW5nTm9kZS5zZXRTY3JvbGxhYmxl
QXJlYVNpemUoc2Nyb2xsYWJsZUFyZWEudmlzaWJsZVNpemUoKSk7CiAKICAgICBTY3JvbGxhYmxl
QXJlYVBhcmFtZXRlcnMgc2Nyb2xsUGFyYW1ldGVyczsKLSAgICBzY3JvbGxQYXJhbWV0ZXJzLmhv
cml6b250YWxTY3JvbGxFbGFzdGljaXR5ID0gc2Nyb2xsYWJsZUFyZWEuaG9yaXpvbnRhbFNjcm9s
bEVsYXN0aWNpdHkoKTsKLSAgICBzY3JvbGxQYXJhbWV0ZXJzLnZlcnRpY2FsU2Nyb2xsRWxhc3Rp
Y2l0eSA9IHNjcm9sbGFibGVBcmVhLnZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eSgpOworICAgIHNj
cm9sbFBhcmFtZXRlcnMuaG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkgPSBzY3JvbGxhYmxlQXJl
YS5ob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgPT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpO
b25lID8gU2Nyb2xsRWxhc3RpY2l0eTo6Tm9uZSA6IHNjcm9sbGFibGVBcmVhLmhvcml6b250YWxT
Y3JvbGxFbGFzdGljaXR5KCk7CisgICAgc2Nyb2xsUGFyYW1ldGVycy52ZXJ0aWNhbFNjcm9sbEVs
YXN0aWNpdHkgPSBzY3JvbGxhYmxlQXJlYS52ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpID09
IE92ZXJzY3JvbGxCZWhhdmlvcjo6Tm9uZSA/IFNjcm9sbEVsYXN0aWNpdHk6Ok5vbmUgOiBzY3Jv
bGxhYmxlQXJlYS52ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkoKTsKICAgICBzY3JvbGxQYXJhbWV0
ZXJzLmFsbG93c0hvcml6b250YWxTY3JvbGxpbmcgPSBzY3JvbGxhYmxlQXJlYS5hbGxvd3NIb3Jp
em9udGFsU2Nyb2xsaW5nKCk7CiAgICAgc2Nyb2xsUGFyYW1ldGVycy5hbGxvd3NWZXJ0aWNhbFNj
cm9sbGluZyA9IHNjcm9sbGFibGVBcmVhLmFsbG93c1ZlcnRpY2FsU2Nyb2xsaW5nKCk7CiAgICAg
c2Nyb2xsUGFyYW1ldGVycy5ob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yID0gc2Nyb2xsYWJs
ZUFyZWEuaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcAppbmRleCAyZGU2NWMyMmY5YjdmOTQw
ZTFlYmNmZmJjNDVlY2Q2MDZhNDk5Yzg0Li5mNDViNjAyMDA5MjhjNDBiM2NjM2U1NTE2NzBjZTFm
MGIwZmY2OThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdUcmVlLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNp
bmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1XaGVlbEV2ZW50LmgiCisjaW5j
bHVkZSAiU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTY3JvbGxpbmdT
dGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZS5oIgogI2luY2x1ZGUgIlNjcm9sbGluZ1N0YXRlVHJlZS5o
IgogI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUuaCIKQEAgLTIwMSwx
MCArMjAyLDExIEBAIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdCBTY3JvbGxpbmdUcmVlOjpoYW5k
bGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVuCiAKIFdoZWVsRXZlbnRIYW5kbGlu
Z1Jlc3VsdCBTY3JvbGxpbmdUcmVlOjpoYW5kbGVXaGVlbEV2ZW50V2l0aE5vZGUoY29uc3QgUGxh
dGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBPcHRpb25TZXQ8V2hlZWxFdmVudFByb2Nlc3Np
bmdTdGVwcz4gcHJvY2Vzc2luZ1N0ZXBzLCBTY3JvbGxpbmdUcmVlTm9kZSogbm9kZSwgRXZlbnRU
YXJnZXRpbmcgZXZlbnRUYXJnZXRpbmcpCiB7CisgICAgYXV0byBhZGp1c3RlZFdoZWVsRXZlbnQg
PSB3aGVlbEV2ZW50OwogICAgIHdoaWxlIChub2RlKSB7CiAgICAgICAgIGlmIChpczxTY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZT4oKm5vZGUpKSB7CiAgICAgICAgICAgICBhdXRvJiBzY3JvbGxp
bmdOb2RlID0gZG93bmNhc3Q8U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU+KCpub2RlKTsKLSAg
ICAgICAgICAgIGF1dG8gcmVzdWx0ID0gc2Nyb2xsaW5nTm9kZS5oYW5kbGVXaGVlbEV2ZW50KHdo
ZWVsRXZlbnQsIGV2ZW50VGFyZ2V0aW5nKTsKKyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gc2Ny
b2xsaW5nTm9kZS5oYW5kbGVXaGVlbEV2ZW50KGFkanVzdGVkV2hlZWxFdmVudCwgZXZlbnRUYXJn
ZXRpbmcpOwogCiAgICAgICAgICAgICBpZiAocmVzdWx0Lndhc0hhbmRsZWQpIHsKICAgICAgICAg
ICAgICAgICBtX2xhdGNoaW5nQ29udHJvbGxlci5ub2RlRGlkSGFuZGxlRXZlbnQoc2Nyb2xsaW5n
Tm9kZS5zY3JvbGxpbmdOb2RlSUQoKSwgcHJvY2Vzc2luZ1N0ZXBzLCB3aGVlbEV2ZW50LCBtX2Fs
bG93TGF0Y2hpbmcpOwpAQCAtMjE0LDYgKzIxNiwxMyBAQCBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1
bHQgU2Nyb2xsaW5nVHJlZTo6aGFuZGxlV2hlZWxFdmVudFdpdGhOb2RlKGNvbnN0IFBsYXRmb3Jt
VwogCiAgICAgICAgICAgICBpZiAocmVzdWx0Lm5lZWRzTWFpblRocmVhZFByb2Nlc3NpbmcoKSB8
fCBldmVudFRhcmdldGluZyAhPSBFdmVudFRhcmdldGluZzo6UHJvcGFnYXRlKQogICAgICAgICAg
ICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChzY3Jv
bGxpbmdOb2RlLnNob3VsZEJsb2NrU2Nyb2xsUHJvcGFnYXRpb24oYWRqdXN0ZWRXaGVlbEV2ZW50
LmRlbHRhKCkpKSB7CisgICAgICAgICAgICAgICAgbV9sYXRjaGluZ0NvbnRyb2xsZXIubm9kZURp
ZEhhbmRsZUV2ZW50KHNjcm9sbGluZ05vZGUuc2Nyb2xsaW5nTm9kZUlEKCksIHByb2Nlc3NpbmdT
dGVwcywgd2hlZWxFdmVudCwgbV9hbGxvd0xhdGNoaW5nKTsKKyAgICAgICAgICAgICAgICBtX2dl
c3R1cmVTdGF0ZS5ub2RlRGlkSGFuZGxlRXZlbnQoc2Nyb2xsaW5nTm9kZS5zY3JvbGxpbmdOb2Rl
SUQoKSwgd2hlZWxFdmVudCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIFdoZWVsRXZlbnRIYW5k
bGluZ1Jlc3VsdDo6aGFuZGxlZCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYWRqdXN0
ZWRXaGVlbEV2ZW50ID0gc2Nyb2xsaW5nTm9kZS5ldmVudEZvclByb3BvZ2F0aW9uKGFkanVzdGVk
V2hlZWxFdmVudCk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoaXM8U2Nyb2xsaW5nVHJlZU92
ZXJmbG93U2Nyb2xsUHJveHlOb2RlPigqbm9kZSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcApp
bmRleCA0ZDdjNTBmYjZjMTcxNzE5YWI4NDNhZTk2MDk0YjBiMzMxYjVhNjFkLi41ZDI0ZDE1MzM5
NTM0YWVkZTQ5NDEwNTFlYmM0YjhkOWMwYjc2MWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3Bw
CkBAIC0zMiw2ICszMiw3IEBACiAjaWYgRU5BQkxFKFNDUk9MTElOR19USFJFQUQpCiAjaW5jbHVk
ZSAiU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUuaCIKICNlbmRpZgorI2luY2x1ZGUg
IlNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5nU3RhdGVT
Y3JvbGxpbmdOb2RlLmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5nU3RhdGVUcmVlLmgiCiAjaW5jbHVk
ZSAiU2Nyb2xsaW5nVHJlZS5oIgpAQCAtMTIxLDYgKzEyMiwxNSBAQCBib29sIFNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlOjppc0xhdGNoZWROb2RlKCkgY29uc3QKICAgICByZXR1cm4gc2Nyb2xs
aW5nVHJlZSgpLmxhdGNoZWROb2RlSUQoKSA9PSBzY3JvbGxpbmdOb2RlSUQoKTsKIH0KIAorYm9v
bCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6c2hvdWxkUnViYmVyQmFuZChjb25zdCBQbGF0
Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIEV2ZW50VGFyZ2V0aW5nIGV2ZW50VGFyZ2V0aW5n
KSBjb25zdAoreworICAgIC8vIFdlIGFsd2F5cyBydWJiZXItYmFuZCB0aGUgbGF0Y2hlZCBub2Rl
LCBvciB0aGUgcm9vdCBub2RlLgorICAgIC8vIFRoZSBzdGF0ZWxlc3Mgd2hlZWwgZXZlbnQgZG9l
c24ndCB0cmlnZ2VyIHJ1YmJlci1iYW5kLgorICAgIC8vIEFsc28gcnViYmVyYmFuZCB3aGVuIHdl
IHNob3VsZCBibG9jayBzY3JvbGwgcHJvcGFnYXRpb24KKyAgICAvLyBhdCB0aGlzIG5vZGUsIHdo
aWNoIGhhcyBvdmVyc2Nyb2xsIGJlaGF2aW9yIHRoYXQgaXMgbm90IG5vbmUuCisgICAgcmV0dXJu
IChpc0xhdGNoZWROb2RlKCkgfHwgZXZlbnRUYXJnZXRpbmcgPT0gRXZlbnRUYXJnZXRpbmc6Ok5v
ZGVPbmx5IHx8IChpc1Jvb3ROb2RlKCkgJiYgIXdoZWVsRXZlbnQuaXNOb25HZXN0dXJlRXZlbnQo
KSkgfHwgKHNob3VsZEJsb2NrU2Nyb2xsUHJvcGFnYXRpb24od2hlZWxFdmVudC5kZWx0YSgpKSAm
JiBvdmVyc2Nyb2xsQmVoYXZpb3JBbGxvd1J1YmJlckJhbmQoKSkpOworfQorCiBib29sIFNjcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlOjpjYW5IYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3Jt
V2hlZWxFdmVudCYgd2hlZWxFdmVudCwgRXZlbnRUYXJnZXRpbmcgZXZlbnRUYXJnZXRpbmcpIGNv
bnN0CiB7CiAgICAgaWYgKCFjYW5IYXZlU2Nyb2xsYmFycygpKQpAQCAtMTMwLDkgKzE0MCw3IEBA
IGJvb2wgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OmNhbkhhbmRsZVdoZWVsRXZlbnQoY29u
c3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3CiAgICAgaWYgKHdoZWVsRXZlbnQucGhhc2UoKSA9PSBQ
bGF0Zm9ybVdoZWVsRXZlbnRQaGFzZTo6TWF5QmVnaW4pCiAgICAgICAgIHJldHVybiB0cnVlOwog
Ci0gICAgLy8gV2UgYWx3YXlzIHJ1YmJlci1iYW5kIHRoZSBsYXRjaGVkIG5vZGUsIG9yIHRoZSBy
b290IG5vZGUuCi0gICAgLy8gVGhlIHN0YXRlbGVzcyB3aGVlbCBldmVudCBkb2Vzbid0IHRyaWdn
ZXIgcnViYmVyLWJhbmQuCi0gICAgaWYgKGlzTGF0Y2hlZE5vZGUoKSB8fCBldmVudFRhcmdldGlu
ZyA9PSBFdmVudFRhcmdldGluZzo6Tm9kZU9ubHkgfHwgKGlzUm9vdE5vZGUoKSAmJiAhd2hlZWxF
dmVudC5pc05vbkdlc3R1cmVFdmVudCgpKSkKKyAgICBpZiAoc2hvdWxkUnViYmVyQmFuZCh3aGVl
bEV2ZW50LCBldmVudFRhcmdldGluZykpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgcmV0
dXJuIGV2ZW50Q2FuU2Nyb2xsQ29udGVudHMod2hlZWxFdmVudCk7CkBAIC0zOTIsNiArNDAwLDI3
IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OnNldEN1cnJlbnRWZXJ0aWNhbFNu
YXBQb2ludEluZGV4KHN0ZDo6b3B0aW9uYWw8CiAgICAgbV9jdXJyZW50VmVydGljYWxTbmFwUG9p
bnRJbmRleCA9IGluZGV4OwogfQogCitQbGF0Zm9ybVdoZWVsRXZlbnQgU2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGU6OmV2ZW50Rm9yUHJvcG9nYXRpb24oY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50
JiB3aGVlbEV2ZW50KSBjb25zdAoreworICAgIGF1dG8gZmlsdGVyZWREZWx0YSA9IHdoZWVsRXZl
bnQuZGVsdGEoKTsKKyNpZiBQTEFURk9STShNQUMpCisgICAgYXV0byBiaWFzZWREZWx0YSA9IFNj
cm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNh
bCh3aGVlbEV2ZW50KTsKKyNlbHNlCisgICAgYXV0byBiaWFzZWREZWx0YSA9IHdoZWVsRXZlbnQu
ZGVsdGEoKTsKKyNlbmRpZgorICAgIGlmIChob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yUHJl
dmVudHNQcm9wYWdhdGlvbigpIHx8IHZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yUHJldmVudHNQ
cm9wYWdhdGlvbigpKSB7CisgICAgICAgIGZpbHRlcmVkRGVsdGEuc2V0V2lkdGgoaG9yaXpvbnRh
bE92ZXJzY3JvbGxCZWhhdmlvclByZXZlbnRzUHJvcGFnYXRpb24oKSB8fCAodmVydGljYWxPdmVy
c2Nyb2xsQmVoYXZpb3JQcmV2ZW50c1Byb3BhZ2F0aW9uKCkgJiYgIWJpYXNlZERlbHRhLndpZHRo
KCkpID8gMCA6IGZpbHRlcmVkRGVsdGEud2lkdGgoKSk7CisgICAgICAgIGZpbHRlcmVkRGVsdGEu
c2V0SGVpZ2h0KHZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yUHJldmVudHNQcm9wYWdhdGlvbigp
IHx8IChob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yUHJldmVudHNQcm9wYWdhdGlvbigpICYm
ICFiaWFzZWREZWx0YS5oZWlnaHQoKSkgPyAwIDogZmlsdGVyZWREZWx0YS5oZWlnaHQoKSk7Cisg
ICAgICAgIHJldHVybiB3aGVlbEV2ZW50LmNvcHlXaXRoRGVsdGFBbmRWZWxvY2l0eShmaWx0ZXJl
ZERlbHRhLCB3aGVlbEV2ZW50LnNjcm9sbGluZ1ZlbG9jaXR5KCkpOworICAgIH0KKyAgICByZXR1
cm4gd2hlZWxFdmVudDsKK30KKworYm9vbCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6c2hv
dWxkQmxvY2tTY3JvbGxQcm9wYWdhdGlvbihjb25zdCBGbG9hdFNpemUmIGRlbHRhKSBjb25zdAor
eworICAgIHJldHVybiAoKGhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3JQcmV2ZW50c1Byb3Bh
Z2F0aW9uKCkgfHwgdmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3JQcmV2ZW50c1Byb3BhZ2F0aW9u
KCkpICYmICgoaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvclByZXZlbnRzUHJvcGFnYXRpb24o
KSAmJiB2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvclByZXZlbnRzUHJvcGFnYXRpb24oKSkgfHwg
KGhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3JQcmV2ZW50c1Byb3BhZ2F0aW9uKCkgJiYgIWRl
bHRhLmhlaWdodCgpKSB8fCAodmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3JQcmV2ZW50c1Byb3Bh
Z2F0aW9uKCkgJiYgIWRlbHRhLndpZHRoKCkpKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogI2VuZGlmIC8vIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUu
aAppbmRleCBiOWY1NDMwNzAxNmUyMDhkNGE2YzVmMGIzZTEzMWQ5OTc1ZDhlNjU1Li5iNTJlYzU3
ODVmZTEzOTA3OTMzNGVhNmRmNWI3YWMwZTU3YjgwODYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmgK
QEAgLTE1OSw3ICsxNTksMTQgQEAgcHJvdGVjdGVkOgogCiAgICAgYm9vbCBhbGxvd3NIb3Jpem9u
dGFsU2Nyb2xsaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMu
YWxsb3dzSG9yaXpvbnRhbFNjcm9sbGluZzsgfQogICAgIGJvb2wgYWxsb3dzVmVydGljYWxTY3Jv
bGxpbmcoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGFibGVBcmVhUGFyYW1ldGVycy5hbGxvd3NW
ZXJ0aWNhbFNjcm9sbGluZzsgfQotCisgICAgT3ZlcnNjcm9sbEJlaGF2aW9yIGhvcml6b250YWxP
dmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGFibGVBcmVhUGFyYW1l
dGVycy5ob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yOyB9CisgICAgT3ZlcnNjcm9sbEJlaGF2
aW9yIHZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxh
YmxlQXJlYVBhcmFtZXRlcnMudmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3I7IH0KKyAgICBib29s
IGhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3JQcmV2ZW50c1Byb3BhZ2F0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMuaG9yaXpvbnRhbE92ZXJzY3JvbGxC
ZWhhdmlvciAhPSBPdmVyc2Nyb2xsQmVoYXZpb3I6OkF1dG87IH0KKyAgICBib29sIHZlcnRpY2Fs
T3ZlcnNjcm9sbEJlaGF2aW9yUHJldmVudHNQcm9wYWdhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
c2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzLnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yICE9IE92
ZXJzY3JvbGxCZWhhdmlvcjo6QXV0bzsgfQorICAgIFBsYXRmb3JtV2hlZWxFdmVudCBldmVudEZv
clByb3BvZ2F0aW9uKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpIGNvbnN0OworICAgIGJvb2wg
c2hvdWxkQmxvY2tTY3JvbGxQcm9wYWdhdGlvbihjb25zdCBGbG9hdFNpemUmKSBjb25zdDsKKyAg
ICBib29sIG92ZXJzY3JvbGxCZWhhdmlvckFsbG93UnViYmVyQmFuZCgpIGNvbnN0IHsgcmV0dXJu
IG1fc2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzLmhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3Ig
IT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpOb25lIHx8ICBtX3Njcm9sbGFibGVBcmVhUGFyYW1ldGVy
cy52ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvciAhPSBPdmVyc2Nyb2xsQmVoYXZpb3I6Ok5vbmU7
IH0KKyAgICBib29sIHNob3VsZFJ1YmJlckJhbmQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jiwg
RXZlbnRUYXJnZXRpbmcpIGNvbnN0OwogICAgIHZvaWQgZHVtcFByb3BlcnRpZXMoV1RGOjpUZXh0
U3RyZWFtJiwgT3B0aW9uU2V0PFNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dEJlaGF2aW9yPikgY29u
c3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCmluZGV4IGJmMGJmZGUwYzU5NjhmMWJhM2MwMTQy
NmQ5YjNkZDc3MzExMmRhNGMuLjU1Y2FjNWQ4ZDE2OGU5NzAwZTUwYmQ3YjJjNzE4MThmOTk3NDhk
YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBv
c2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBv
c2l0b3IuY3BwCkBAIC0xNjUyLDcgKzE2NTIsOSBAQCBzdGF0aWMgYm9vbCByZWNvbXBvc2l0ZUNo
YW5nZVJlcXVpcmVzR2VvbWV0cnlVcGRhdGUoY29uc3QgUmVuZGVyU3R5bGUmIG9sZFN0eWxlLAog
ICAgICAgICB8fCBvbGRTdHlsZS5vZmZzZXRQb3NpdGlvbigpICE9IG5ld1N0eWxlLm9mZnNldFBv
c2l0aW9uKCkKICAgICAgICAgfHwgb2xkU3R5bGUub2Zmc2V0RGlzdGFuY2UoKSAhPSBuZXdTdHls
ZS5vZmZzZXREaXN0YW5jZSgpCiAgICAgICAgIHx8IG9sZFN0eWxlLm9mZnNldFJvdGF0ZSgpICE9
IG5ld1N0eWxlLm9mZnNldFJvdGF0ZSgpCi0gICAgICAgIHx8ICFhcmVQb2ludGluZ1RvRXF1YWxE
YXRhKG9sZFN0eWxlLmNsaXBQYXRoKCksIG5ld1N0eWxlLmNsaXBQYXRoKCkpOworICAgICAgICB8
fCAhYXJlUG9pbnRpbmdUb0VxdWFsRGF0YShvbGRTdHlsZS5jbGlwUGF0aCgpLCBuZXdTdHlsZS5j
bGlwUGF0aCgpKQorICAgICAgICB8fCBvbGRTdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JYKCkgIT0g
bmV3U3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWCgpCisgICAgICAgIHx8IG9sZFN0eWxlLm92ZXJz
Y3JvbGxCZWhhdmlvclkoKSAhPSBuZXdTdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JZKCk7CiB9CiAK
IHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpsYXllclN0eWxlQ2hhbmdlZChTdHlsZURpZmZl
cmVuY2UgZGlmZiwgUmVuZGVyTGF5ZXImIGxheWVyLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5
bGUpCkBAIC0zOTQ1LDYgKzM5NDcsMTEgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJv
b3RPckJvZHlTdHlsZUNoYW5nZWQoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnMKICAgICBi
b29sIGhhZEZpeGVkQmFja2dyb3VuZCA9IG9sZFN0eWxlICYmIG9sZFN0eWxlLT5oYXNFbnRpcmVs
eUZpeGVkQmFja2dyb3VuZCgpOwogICAgIGlmIChoYWRGaXhlZEJhY2tncm91bmQgIT0gcmVuZGVy
ZXIuc3R5bGUoKS5oYXNFbnRpcmVseUZpeGVkQmFja2dyb3VuZCgpKQogICAgICAgICByb290TGF5
ZXJDb25maWd1cmF0aW9uQ2hhbmdlZCgpOworICAgIAorICAgIGlmIChvbGRTdHlsZSAmJiAob2xk
U3R5bGUtPm92ZXJzY3JvbGxCZWhhdmlvclgoKSAhPSByZW5kZXJlci5zdHlsZSgpLm92ZXJzY3Jv
bGxCZWhhdmlvclgoKSB8fCBvbGRTdHlsZS0+b3ZlcnNjcm9sbEJlaGF2aW9yWSgpICE9IHJlbmRl
cmVyLnN0eWxlKCkub3ZlcnNjcm9sbEJlaGF2aW9yWSgpKSkgeworICAgICAgICBpZiAoYXV0byog
bGF5ZXIgPSBtX3JlbmRlclZpZXcubGF5ZXIoKSkKKyAgICAgICAgICAgIGxheWVyLT5zZXROZWVk
c0NvbXBvc2l0aW5nR2VvbWV0cnlVcGRhdGUoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVuZGVyTGF5
ZXJDb21wb3NpdG9yOjpyb290QmFja2dyb3VuZENvbG9yT3JUcmFuc3BhcmVuY3lDaGFuZ2VkKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCmluZGV4
IDZiMzYzOGQxYThmMGUxZTY3NGEzNWZlOWNmMmUzY2I1ZWY2YjhkMGEuLjZlZDYyNzg4MjIxODY5
ZmZhY2FmNjQ0MGM3YTQ0NGUyOTdkOTNhZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcApAQCAtMTE5Niw3ICsxMTk2LDkgQEAgYm9vbCBSZW5k
ZXJTdHlsZTo6Y2hhbmdlUmVxdWlyZXNSZWNvbXBvc2l0ZUxheWVyKGNvbnN0IFJlbmRlclN0eWxl
JiBvdGhlciwgT3B0aW8KICAgICAgICAgICAgIHx8IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmJh
Y2tmYWNlVmlzaWJpbGl0eSAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5iYWNrZmFj
ZVZpc2liaWxpdHkKICAgICAgICAgICAgIHx8IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnBlcnNw
ZWN0aXZlICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnBlcnNwZWN0aXZlCiAgICAg
ICAgICAgICB8fCBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5wZXJzcGVjdGl2ZU9yaWdpblggIT0g
b3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+cGVyc3BlY3RpdmVPcmlnaW5YCi0gICAgICAg
ICAgICB8fCBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5wZXJzcGVjdGl2ZU9yaWdpblkgIT0gb3Ro
ZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+cGVyc3BlY3RpdmVPcmlnaW5ZKQorICAgICAgICAg
ICAgfHwgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+cGVyc3BlY3RpdmVPcmlnaW5ZICE9IG90aGVy
Lm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnBlcnNwZWN0aXZlT3JpZ2luWQorICAgICAgICAgICAg
fHwgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+b3ZlcnNjcm9sbEJlaGF2aW9yWCAhPSBvdGhlci5t
X3JhcmVOb25Jbmhlcml0ZWREYXRhLT5vdmVyc2Nyb2xsQmVoYXZpb3JYCisgICAgICAgICAgICB8
fCBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5vdmVyc2Nyb2xsQmVoYXZpb3JZICE9IG90aGVyLm1f
cmFyZU5vbkluaGVyaXRlZERhdGEtPm92ZXJzY3JvbGxCZWhhdmlvclkpCiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5YjA2M2Q0NjEwOGJlZWNiNzlhMjJkYzhlMWE4
M2QzOWFjNzNlMjJiLi5lNTUyMWI3NjY0Y2I1MzFjNDAzMDRkNGYzYTc4OGIzNDE5ZTZhOGI4IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMjEtMTItMDEgIE5pa29sYW9zIE1vdWNodGFyaXMgIDxu
bW91Y2h0YXJpc0BhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IENTUyBvdmVyc2Nyb2xs
LWJlaGF2aW9yIGZvciBhc3luY2hyb25vdXMgc2Nyb2xsIG9uIE1hYworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwMTM5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9tYWMvYXN5
bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVu
dC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNj
cm9sbC1iZWhhdmlvci1pZnJhbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJhbWUuaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZp
b3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUt
ZWxlbWVudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMt
b3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZp
b3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9s
bGluZy9yZXNvdXJjZXMvb3ZlcnNjcm9sbC1iZWhhdmlvci1zdXBwb3J0LmpzOiBBZGRlZC4KKyAg
ICAgICAgKGdldERlbHRhcyk6CisgICAgICAgIChhc3luYyBtb3VzZVdoZWVsU2Nyb2xsQW5kV2Fp
dCk6CisKIDIwMjEtMTEtMzAgIFJvYmVydCBKZW5uZXIgIDxKZW5uZXJAYXBwbGUuY29tPgogCiAg
ICAgICAgIFJFQkFTRUxJTkUgWyBNb250ZXJleSBdZmFzdC9jc3MvY29udGludWF0aW9uQ3Jhc2gu
aHRtbCAobGF5b3V0LXRlc3QpIGlzIGEgY29uc3RhbnQgdGV4dCBmYWlsdXJlCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlv
ci1lbGVtZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL21hYy9h
c3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjI3MTUwZmY2MGI1ZGJkZDBiNGE3YWM2ZjgzZmI1NmY1N2NkMmNkODIKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhh
dmlvci1lbGVtZW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIwIEBACisKK1BBU1MgRWxlbWVu
dCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBh
dXRvLgorUEFTUyBFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1i
ZWhhdmlvcjogYXV0byBhdXRvLgorUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qg
d2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGF1dG8uCitQQVNTIEVsZW1lbnQgdmVy
dGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGF1dG8u
CitQQVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVo
YXZpb3I6IG5vbmUgYXV0by4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRo
IG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgYXV0by4KK1BBU1MgRWxlbWVudCBob3Jpem9udGFs
IHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBjb250YWluLgorUEFT
UyBFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjog
YXV0byBjb250YWluLgorUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBv
dmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGNvbnRhaW4uCitQQVNTIEVsZW1lbnQgdmVydGlj
YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGNvbnRhaW4u
CitQQVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVo
YXZpb3I6IG5vbmUgY29udGFpbi4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3
aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgY29udGFpbi4KK1BBU1MgRWxlbWVudCBob3Jp
em9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBub25lLgor
UEFTUyBFbGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlv
cjogYXV0byBub25lLgorUEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBv
dmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIG5vbmUuCitQQVNTIEVsZW1lbnQgdmVydGljYWwg
c2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIG5vbmUuCitQQVNT
IEVsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6
IG5vbmUgbm9uZS4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJz
Y3JvbGwtYmVoYXZpb3I6IG5vbmUgbm9uZS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3It
ZWxlbWVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MTM3YjljYjc3OWE5MTY3ZGIyMjUxZDMwNjdlNDYz
ZWFjOTQ2MzcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9t
YWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50Lmh0bWwKQEAgLTAsMCArMSw4NiBA
QAorPCFkb2N0eXBlIGh0bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgQXN5bmNPdmVyZmxv
d1Njcm9sbGluZ0VuYWJsZWQ9dHJ1ZSBBc3luY0ZyYW1lU2Nyb2xsaW5nRW5hYmxlZD10cnVlIF0g
LS0+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2
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
dXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci1pZnJh
bWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92
ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MDBhMGI3
ZDkwNWI4N2MxZGI3NjI2OTRmZDAwNjM4ZjE5NzY5NTM3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZy
YW1lLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIxIEBACisKKworUEFTUyBJZnJhbWUgaG9yaXpv
bnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gYXV0by4KK1BB
U1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjog
YXV0byBhdXRvLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJz
Y3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gYXV0by4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9s
bCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBhdXRvLgorUEFTUyBJZnJh
bWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUg
YXV0by4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1i
ZWhhdmlvcjogbm9uZSBhdXRvLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3
aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gY29udGFpbi4KK1BBU1MgSWZyYW1lIHZlcnRp
Y2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBjb250YWluLgor
UEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZp
b3I6IGNvbnRhaW4gY29udGFpbi4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdp
dGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBjb250YWluLgorUEFTUyBJZnJhbWUgaG9y
aXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgY29udGFp
bi4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhh
dmlvcjogbm9uZSBjb250YWluLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3
aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gbm9uZS4KK1BBU1MgSWZyYW1lIHZlcnRpY2Fs
IHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogYXV0byBub25lLgorUEFTUyBJ
ZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNv
bnRhaW4gbm9uZS4KK1BBU1MgSWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNj
cm9sbC1iZWhhdmlvcjogY29udGFpbiBub25lLgorUEFTUyBJZnJhbWUgaG9yaXpvbnRhbCBzY3Jv
bGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgbm9uZS4KK1BBU1MgSWZyYW1l
IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZSBub25l
LgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3Zl
cnNjcm9sbC1iZWhhdmlvci1pZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5n
L21hYy9hc3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNm
ODcxMzY0Zjk1YmQ3N2Y2ZTRjZTliZWE0MjgzNTE0MGI0MGMxZjAKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlv
ci1pZnJhbWUuaHRtbApAQCAtMCwwICsxLDg2IEBACis8IWRvY3R5cGUgaHRtbD4gPCEtLSB3ZWJr
aXQtdGVzdC1ydW5uZXIgWyBBc3luY092ZXJmbG93U2Nyb2xsaW5nRW5hYmxlZD10cnVlIEFzeW5j
RnJhbWVTY3JvbGxpbmdFbmFibGVkPXRydWUgXSAtLT4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvb3ZlcnNjcm9sbC1iZWhhdmlvci1zdXBwb3J0LmpzIj48L3NjcmlwdD4K
KzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1vdmVy
c2Nyb2xsLWJlaGF2aW9yIj4KKzxzdHlsZT4KKyAgICAuc2Nyb2xsaW5nIHsKKyAgICAgICAgb3Zl
cmZsb3c6IHNjcm9sbDsKKyAgICB9CisgICAgLnNjcm9sbENvbnRlbnQgeworICAgICAgICB3aWR0
aDogMzAwcHg7CisgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgIGJhY2tncm91bmQ6IGxp
bmVhci1ncmFkaWVudCgxMzVkZWcsIHJlZCwgYmx1ZSk7CisgICAgfQorICAgICNyb290IHsKKyAg
ICAgICAgd2lkdGg6IDIwMHB4OworICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAgIH0KKyAgICAj
c2Nyb2xsZXIgeworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7
CisgICAgICAgIG92ZXJzY3JvbGwtYmVoYXZpb3IteTogYXV0bzsKKyAgICB9Cis8L3N0eWxlPgor
PGRpdiBpZD0ncm9vdCcgY2xhc3M9InNjcm9sbGluZyI+CisgICAgPGlmcmFtZSBpZD0nc2Nyb2xs
ZXInIHNyY2RvYz0iPGh0bWw+PGRpdiBzdHlsZT0nd2lkdGg6IDMwMHB4OyBoZWlnaHQ6IDMwMHB4
Oyc+PC9kaXY+PC9odG1sPgorICAgICAgICAiPjwvaWZyYW1lPgorICAgIDxkaXYgY2xhc3M9InNj
cm9sbENvbnRlbnQiPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+CisgICAgY29uc3Qgcm9vdCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyb290Jyk7CisgICAgY29uc3Qgc2Nyb2xsZXIgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2Nyb2xsZXInKTsKKyAgICB2YXIgb3ZlcnNjcm9sbERh
dGFzID0gW1siYXV0byIsICJhdXRvIiwgdHJ1ZSwgdHJ1ZV0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgWyJjb250YWluIiwgImF1dG8iLCBmYWxzZSwgdHJ1ZV0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgWyJub25lIiwgImF1dG8iLCBmYWxzZSwgdHJ1ZV0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgWyJhdXRvIiwgImNvbnRhaW4iLCB0cnVlLCBmYWxzZV0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgWyJjb250YWluIiwgImNvbnRhaW4iLCBmYWxzZSwgZmFs
c2VdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsibm9uZSIsICJjb250YWluIiwgZmFs
c2UsIGZhbHNlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImF1dG8iLCAibm9uZSIs
IHRydWUsIGZhbHNlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImNvbnRhaW4iLCAi
bm9uZSIsIGZhbHNlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJub25l
IiwgIm5vbmUiLCBmYWxzZSwgZmFsc2VdXTsKKyAgICBmdW5jdGlvbiByZXNldFRlc3QoKSB7Cisg
ICAgICAgIC8vIFRyeSB2YXJpb3VzIG1ldGhvZHMgdG8gZW5zdXJlIHRoZSBlbGVtZW50IHBvc2l0
aW9uIGlzIHJlc2V0IGltbWVkaWF0ZWx5LgorICAgICAgICBzY3JvbGxlci5jb250ZW50V2luZG93
LnNjcm9sbFggPSAzMDA7CisgICAgICAgIHNjcm9sbGVyLmNvbnRlbnRXaW5kb3cuc2Nyb2xsWSA9
IDMwMDsKKyAgICAgICAgc2Nyb2xsZXIuY29udGVudFdpbmRvdy5zY3JvbGxUbygzMDAsIDMwMCk7
CisgICAgICAgIHJvb3Quc2Nyb2xsTGVmdCA9IDA7CisgICAgICAgIHJvb3Quc2Nyb2xsVG9wID0g
MDsKKyAgICAgICAgcm9vdC5zY3JvbGxUbygwLCAwKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBv
dmVyc2Nyb2xsQmVoYXZpb3JUZXN0KCkgeworICAgICAgICBvdmVyc2Nyb2xsRGF0YXMuZm9yRWFj
aCgoW292ZXJzY3JvbGxYLCBvdmVyc2Nyb2xsWSwgcHJvcGFnYXRlWCwgcHJvcGFnYXRlWV0pID0+
IHsKKyAgICAgICAgICAgIHByb21pc2VfdGVzdCgoKSA9PiB7CisgICAgICAgICAgICAgICAgcmVz
ZXRUZXN0KCk7CisgICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IHNjcm9sbGVyLmNvbnRlbnRX
aW5kb3cuZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImh0bWwiKVswXTsKKyAgICAgICAg
ICAgICAgICB0YXJnZXQuc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWCA9IG92ZXJzY3JvbGxYOwor
ICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JZID0gb3ZlcnNj
cm9sbFk7CisgICAgICAgICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7
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
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5
bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlv
ci11bnNjcm9sbGFibGUtZWxlbWVudC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjM5NWI2NDg4
ZDA4NzBiOTU2MWMwMjg2NzlkN2UxNWE0N2ZjZTZlOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Ny
b2xsYWJsZS1lbGVtZW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKKworUEFTUyBVbnNj
cm9sbGFibGUgZWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1i
ZWhhdmlvcjogbm9uZS4KK1BBU1MgVW5zY3JvbGxhYmxlIGVsZW1lbnQgdmVydGljYWwgc2Nyb2xs
IHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLgorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNj
cm9sbGFibGUtZWxlbWVudC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2Fz
eW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5hNDQ4ZjJlMGVhNWNjMDc4ZjFmOWVhNGMyZDdmNzgwZWU3YjdlNTg0Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwt
YmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVsZW1lbnQuaHRtbApAQCAtMCwwICsxLDY3IEBACis8IWRv
Y3R5cGUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBBc3luY092ZXJmbG93U2Nyb2xs
aW5nRW5hYmxlZD10cnVlIEFzeW5jRnJhbWVTY3JvbGxpbmdFbmFibGVkPXRydWUgXSAtLT4KKwor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvb3ZlcnNjcm9sbC1iZWhhdmlvci1z
dXBwb3J0LmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9kcmFm
dHMuY3Nzd2cub3JnL2Nzcy1vdmVyc2Nyb2xsLWJlaGF2aW9yIj4KKzxzdHlsZT4KKyAgICAuc2Ny
b2xsaW5nIHsKKyAgICAgICAgb3ZlcmZsb3c6IHNjcm9sbDsKKyAgICB9CisgICAgLnNjcm9sbENv
bnRlbnQgeworICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgIGhlaWdodDogMzAwcHg7Cisg
ICAgfQorICAgICNyb290IHsKKyAgICAgICAgd2lkdGg6IDIwMHB4OworICAgICAgICBoZWlnaHQ6
IDIwMHB4OworICAgIH0KKyAgICAjc2Nyb2xsZXIgeworICAgICAgICB3aWR0aDogMTAwcHg7Cisg
ICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICAgIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmU7
CisgICAgICAgIG92ZXJmbG93OiB2aXNpYmxlOworICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXIt
Z3JhZGllbnQoMTM1ZGVnLCByZWQsIGJsdWUpOworICAgIH0KKzwvc3R5bGU+Cis8ZGl2IGlkPSJy
b290IiBjbGFzcz0ic2Nyb2xsaW5nIj4KKyAgICA8ZGl2IGlkPSJzY3JvbGxlciI+CisgICAgICAg
IDxkaXYgY2xhc3M9InNjcm9sbENvbnRlbnQiPjwvZGl2PgorICAgIDwvZGl2PgorICAgIDxkaXYg
Y2xhc3M9InNjcm9sbENvbnRlbnQiPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+Citjb25zdCBy
b290ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jvb3QnKTsKK2NvbnN0IHNjcm9sbGVyID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Njcm9sbGVyJyk7CisKK2Z1bmN0aW9uIHJlc2V0VGVz
dCgpIHsKKyAgICByb290LnNjcm9sbExlZnQgPSAwOworICAgIHJvb3Quc2Nyb2xsVG9wID0gMDsK
KyAgICByb290LnNjcm9sbFRvKDAsIDApOworfQorCitmdW5jdGlvbiBzdGFydFRlc3QoKSB7Cisg
ICAgICAgIHByb21pc2VfdGVzdCgoKSA9PiB7CisgICAgICAgICAgICByZXNldFRlc3QoKTsKKyAg
ICAgICAgICAgIHZhciB4ID0gc2Nyb2xsZXIuY2xpZW50V2lkdGggLyAyOworICAgICAgICAgICAg
dmFyIHkgPSBzY3JvbGxlci5jbGllbnRIZWlnaHQgLyAyOworICAgICAgICAgICAgdmFyIGRlbHRh
ID0gZ2V0RGVsdGFzKCJyaWdodCIpOworICAgICAgICAgICAgcmV0dXJuIG1vdXNlV2hlZWxTY3Jv
bGxBbmRXYWl0KHgsIHksIGRlbHRhLlgsIGRlbHRhLlksIGRlbHRhLlgsIGRlbHRhLlkpLnRoZW4o
KCkgPT4geworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxMZWZ0ID4g
MCwgdHJ1ZSwgJ0NvbnRpbnVlIHVwIHRoZSBob3Jpem9udGFsIHNjcm9sbCBjaGFpbmluZycpOwor
ICAgICAgICAgICAgfSk7CisgICAgICAgIH0sICdVbnNjcm9sbGFibGUgZWxlbWVudCBob3Jpem9u
dGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4nKTsKKworICAg
ICAgICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgICAgICAgICAgcmVzZXRUZXN0KCk7CisgICAg
ICAgICAgICB2YXIgeCA9IHNjcm9sbGVyLmNsaWVudFdpZHRoIC8gMjsKKyAgICAgICAgICAgIHZh
ciB5ID0gc2Nyb2xsZXIuY2xpZW50SGVpZ2h0IC8gMjsKKyAgICAgICAgICAgIHZhciBkZWx0YSA9
IGdldERlbHRhcygiZG93biIpOworICAgICAgICAgICAgcmV0dXJuIG1vdXNlV2hlZWxTY3JvbGxB
bmRXYWl0KHgsIHksIGRlbHRhLlgsIGRlbHRhLlksIGRlbHRhLlgsIGRlbHRhLlkpLnRoZW4oKCkg
PT4geworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5zY3JvbGxUb3AgPiAwLCB0
cnVlLCAnQ29udGludWUgdXAgdGhlIHZlcnRpY2FsIHNjcm9sbCBjaGFpbmluZycpOworICAgICAg
ICAgICAgfSk7CisgICAgICAgIH0sICdVbnNjcm9sbGFibGUgZWxlbWVudCB2ZXJ0aWNhbCBzY3Jv
bGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuJyk7Cit9CisKK2FkZEV2ZW50
TGlzdGVuZXIoImxvYWQiLCBzdGFydFRlc3QpOworPC9zY3JpcHQ+ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2Fz
eW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlv
ci11bnNjcm9sbGFibGUtaWZyYW1lLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZmE1OWNjYmE3
OWFlZmYzM2RhNzBlOTNkNDg4YTA3ZWVjOWM1NjkxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3Jv
bGxhYmxlLWlmcmFtZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBACisKKworUEFTUyBVbnNj
cm9sbGFibGUgaWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJl
aGF2aW9yOiBub25lLgorUEFTUyBVbnNjcm9sbGFibGUgaWZyYW1lIHZlcnRpY2FsIHNjcm9sbCB0
ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3Jv
bGxhYmxlLWlmcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5j
LW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjMzZWM1YjI2M2MyYjgzYmUxYTUyODcxNmNlODY1NjNkOTdhY2QxZDYKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhh
dmlvci11bnNjcm9sbGFibGUtaWZyYW1lLmh0bWwKQEAgLTAsMCArMSw2NiBAQAorPCFkb2N0eXBl
IGh0bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgQXN5bmNPdmVyZmxvd1Njcm9sbGluZ0Vu
YWJsZWQ9dHJ1ZSBBc3luY0ZyYW1lU2Nyb2xsaW5nRW5hYmxlZD10cnVlIF0gLS0+CisKKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL292ZXJzY3JvbGwtYmVoYXZpb3Itc3VwcG9y
dC5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vZHJhZnRzLmNz
c3dnLm9yZy9jc3Mtb3ZlcnNjcm9sbC1iZWhhdmlvciI+Cis8c3R5bGU+CisgICAgLnNjcm9sbGlu
ZyB7CisgICAgICAgIG92ZXJmbG93OiBzY3JvbGw7CisgICAgfQorICAgIC5zY3JvbGxDb250ZW50
IHsKKyAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgIH0K
KyAgICAjcm9vdCB7CisgICAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgICAgaGVpZ2h0OiAyMDBw
eDsKKyAgICB9CisgICAgI3Njcm9sbGVyIHsKKyAgICAgICAgd2lkdGg6IDIwMHB4OworICAgICAg
ICBoZWlnaHQ6IDIwMHB4OworICAgICAgICBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lOworICAg
ICAgICBvdmVyZmxvdzogdmlzaWJsZTsKKyAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRp
ZW50KDEzNWRlZywgcmVkLCBibHVlKTsKKyAgICB9Cis8L3N0eWxlPgorPGRpdiBpZD0ncm9vdCcg
Y2xhc3M9InNjcm9sbGluZyI+CisgICAgPGlmcmFtZSBpZD0nc2Nyb2xsZXInIHNyY2RvYz0iPGh0
bWwgc3R5bGU9J292ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmU7Jz48ZGl2IHN0eWxlPSd3aWR0aDog
MTAwcHg7IGhlaWdodDogMTAwcHg7Jz48L2Rpdj48L2h0bWw+CisgICAgICAgICI+PC9pZnJhbWU+
CisgICAgPGRpdiBjbGFzcz0ic2Nyb2xsQ29udGVudCI+PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlw
dD4KK2NvbnN0IHJvb3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncm9vdCcpOworY29uc3Qg
c2Nyb2xsZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2Nyb2xsZXInKTsKKworZnVuY3Rp
b24gcmVzZXRUZXN0KCkgeworICAgIHJvb3Quc2Nyb2xsTGVmdCA9IDA7CisgICAgcm9vdC5zY3Jv
bGxUb3AgPSAwOworICAgIHJvb3Quc2Nyb2xsVG8oMCwgMCk7Cit9CisKK2Z1bmN0aW9uIHN0YXJ0
VGVzdCgpIHsKKyAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAgIHJlc2V0
VGVzdCgpOworICAgICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7Cisg
ICAgICAgICAgICB2YXIgeSA9IHNjcm9sbGVyLmNsaWVudEhlaWdodCAvIDI7CisgICAgICAgICAg
ICB2YXIgZGVsdGEgPSBnZXREZWx0YXMoInJpZ2h0Iik7CisgICAgICAgICAgICByZXR1cm4gbW91
c2VXaGVlbFNjcm9sbEFuZFdhaXQoeCwgeSwgZGVsdGEuWCwgZGVsdGEuWSwgZGVsdGEuWCwgZGVs
dGEuWSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyb290LnNj
cm9sbExlZnQgPiAwLCB0cnVlLCAnQ29udGludWUgdXAgdGhlIGhvcml6b250YWwgc2Nyb2xsIGNo
YWluaW5nJyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSwgJ1Vuc2Nyb2xsYWJsZSBpZnJh
bWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUu
Jyk7CisKKyAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAgIHJlc2V0VGVz
dCgpOworICAgICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAg
ICAgICAgICB2YXIgeSA9IHNjcm9sbGVyLmNsaWVudEhlaWdodCAvIDI7CisgICAgICAgICAgICB2
YXIgZGVsdGEgPSBnZXREZWx0YXMoImRvd24iKTsKKyAgICAgICAgICAgIHJldHVybiBtb3VzZVdo
ZWVsU2Nyb2xsQW5kV2FpdCh4LCB5LCBkZWx0YS5YLCBkZWx0YS5ZLCBkZWx0YS5YLCBkZWx0YS5Z
KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xs
VG9wID4gMCwgdHJ1ZSwgJ0NvbnRpbnVlIHVwIHRoZSB2ZXJ0aWNhbCBzY3JvbGwgY2hhaW5pbmcn
KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9LCAnVW5zY3JvbGxhYmxlIGlmcmFtZSB2ZXJ0
aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuJyk7Cit9CisK
K2FkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBzdGFydFRlc3QpOworPC9zY3JpcHQ+ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxp
bmcvcmVzb3VyY2VzL292ZXJzY3JvbGwtYmVoYXZpb3Itc3VwcG9ydC5qcyBiL0xheW91dFRlc3Rz
L2Zhc3Qvc2Nyb2xsaW5nL3Jlc291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXN1cHBvcnQuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uY2JkMjIyZTkwYjUyYTE5MzBiN2ZjZmU0NDIzZTk0NTgzYzA0NjAwZQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3Jlc291cmNlcy9vdmVy
c2Nyb2xsLWJlaGF2aW9yLXN1cHBvcnQuanMKQEAgLTAsMCArMSwzOSBAQAorZnVuY3Rpb24gZ2V0
RGVsdGFzKGRpcmVjdGlvbikgeworICAgIHZhciBkZWx0YVggPSAwOworICAgIHZhciBkZWx0YVkg
PSAwOworICAgIGlmIChkaXJlY3Rpb24gPT0gImRvd24iKQorICAgICAgICBkZWx0YVkgPSAtNQor
ICAgIGVsc2UgaWYgKGRpcmVjdGlvbiA9PSAidXAiKQorICAgICAgICBkZWx0YVkgPSA1OworICAg
IGVsc2UgaWYgKGRpcmVjdGlvbiA9PSAicmlnaHQiKQorICAgICAgICBkZWx0YVggPSAtNTsKKyAg
ICBlbHNlIGlmIChkaXJlY3Rpb24gPT0gImxlZnQiKQorICAgICAgICBkZWx0YVggPSA1OworICAg
IHJldHVybiB7CisgICAgICAgIFg6IGRlbHRhWCwKKyAgICAgICAgWTogZGVsdGFZCisgICAgfTsK
K30KKworYXN5bmMgZnVuY3Rpb24gbW91c2VXaGVlbFNjcm9sbEFuZFdhaXQoeCwgeSwgYmVnaW5Y
LCBiZWdpblksIGRlbHRhWCwgZGVsdGFZKQoreworICAgIGlmIChiZWdpblggPT09IHVuZGVmaW5l
ZCkKKyAgICAgICAgYmVnaW5YID0gMDsKKyAgICBpZiAoYmVnaW5ZID09PSB1bmRlZmluZWQpCisg
ICAgICAgIGJlZ2luWSA9IC0xOworICAgIGlmIChkZWx0YVggPT09IHVuZGVmaW5lZCkKKyAgICAg
ICAgZGVsdGFYID0gMDsKKyAgICBpZiAoZGVsdGFZID09PSB1bmRlZmluZWQpCisgICAgICAgIGRl
bHRhWSA9IC0xMDsKKworICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAg
IGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhiZWdpblgsIGJlZ2luWSwgImJlZ2FuIiwg
Im5vbmUiKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZGVsdGFYLCBkZWx0YVksICJjaGFuZ2VkIiwgIm5vbmUiKTsKKyAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgImVuZGVk
IiwgIm5vbmUiKTsKKyAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgICAg
IHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHJl
c29sdmUpOworICAgICAgICB9LCA1MDApOworICAgIH0pOworfQpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450289</attachid>
            <date>2022-01-28 16:55:10 -0800</date>
            <delta_ts>2022-01-28 21:36:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220139-20220128165509.patch</filename>
            <type>text/plain</type>
            <size>35510</size>
            <attacher name="Nikos Mouchtaris">nmouchtaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MzUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGJiNmQyZjJmYmNkN2I3
ODU1MzIxY2U1YjgwMWQ1YzJmYWNiMzhmNC4uNTA3OGNjZDk3ODgzM2E5ODE3OGMyYThlYjZmYzlk
OTE2NzcxNGNjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDIxLTEyLTAxICBOaWtv
bGFvcyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxl
bWVudCBDU1Mgb3ZlcnNjcm9sbC1iZWhhdmlvciBmb3IgYXN5bmNocm9ub3VzIHNjcm9sbCBvbiBN
YWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDEz
OQorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICBTcGxpdCB1
cCBwYXRjaCBieSBDYXRoaWUgQ2hlbiBhbmQgRnJlZGVyaWMgV2FuZy4gQWRkIGZ1bmN0aW9uIGZv
ciBibG9ja2luZyBzY3JvbGwgY2hhaW5pbmcKKyAgICAgICAgYW5kIGZpbHRlcmluZyBzY3JvbGwg
ZGVsdGEgZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZXMgb2Ygb3ZlcnNjcm9sbCBiZWhhdmlvciBmb3Ig
YSBzY3JvbGxpbmcKKyAgICAgICAgbm9kZS4gVGhpcyBwYXRjaCBpcyBmb3IgYXN5bmNocm9ub3Vz
IHNjcm9sbGluZyBvbmx5LgorCisgICAgICAgIFRlc3RzOiBmYXN0L3Njcm9sbGluZy9tYWMvYXN5
bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qv
c2Nyb2xsaW5nL21hYy9hc3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS5odG1sCisgICAg
ICAgICAgICAgICBmYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci11
bnNjcm9sbGFibGUtZWxlbWVudC5odG1sCisgICAgICAgICAgICAgICBmYXN0L3Njcm9sbGluZy9t
YWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLmh0bWwKKwor
ICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsaW5nVHJlZTo6c2hvdWxkQmxvY2tTY3JvbGxDaGFpbmluZ1dpdGhOb2RlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWU6OmhhbmRsZVdoZWVsRXZlbnRXaXRoTm9k
ZSk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5oOgorICAgICAgICAq
IHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmg6CisgICAgICAgICog
cGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMu
bW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRl
TWFjOjphbGxvd3NIb3Jpem9udGFsU3RyZXRjaGluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjphbGxvd3NWZXJ0aWNhbFN0
cmV0Y2hpbmcgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0
b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVjb21wb3NpdGVDaGFuZ2VSZXF1aXJlc0dlb21l
dHJ5VXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6cm9v
dE9yQm9keVN0eWxlQ2hhbmdlZCk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJlc1Jl
Y29tcG9zaXRlTGF5ZXIgY29uc3QpOgorCiAyMDIxLTExLTMwICBTaW1vbiBGcmFzZXIgIDxzaW1v
bi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFBhc3MgdGhlIHRpbWVzdGFtcCBmb3Igc2Ny
b2xsaW5nIHRocmVhZCBhbmltYXRpb25zIHRocm91Z2ggYWxsIHRoZSBzZXJ2aWNlU2Nyb2xsQW5p
bWF0aW9uKCkgY2FsbHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAKaW5kZXggZDk0ZmYxMzA2Yjc5ZTI4
ZmI2ODk5MDA2OTc3MDhhYjI4ZGJjZjUyZC4uODJmNzU3YTI3YjNiMDcyNDAwNmQ3MmE1MzgyZTM0
ZmE0Y2E5NDY4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5
bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAKQEAgLTc4Nyw4ICs3ODcsOCBAQCB2
b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldFNjcm9sbGluZ05vZGVTY3JvbGxhYmxl
QXJlYUdlb21ldHJ5KFNjcm9sbGluZwogICAgIHNjcm9sbGluZ05vZGUuc2V0U2Nyb2xsYWJsZUFy
ZWFTaXplKHNjcm9sbGFibGVBcmVhLnZpc2libGVTaXplKCkpOwogCiAgICAgU2Nyb2xsYWJsZUFy
ZWFQYXJhbWV0ZXJzIHNjcm9sbFBhcmFtZXRlcnM7Ci0gICAgc2Nyb2xsUGFyYW1ldGVycy5ob3Jp
em9udGFsU2Nyb2xsRWxhc3RpY2l0eSA9IHNjcm9sbGFibGVBcmVhLmhvcml6b250YWxTY3JvbGxF
bGFzdGljaXR5KCk7Ci0gICAgc2Nyb2xsUGFyYW1ldGVycy52ZXJ0aWNhbFNjcm9sbEVsYXN0aWNp
dHkgPSBzY3JvbGxhYmxlQXJlYS52ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkoKTsKKyAgICBzY3Jv
bGxQYXJhbWV0ZXJzLmhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5ID0gc2Nyb2xsYWJsZUFyZWEu
aG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcigpID09IE92ZXJzY3JvbGxCZWhhdmlvcjo6Tm9u
ZSA/IFNjcm9sbEVsYXN0aWNpdHk6Ok5vbmUgOiBzY3JvbGxhYmxlQXJlYS5ob3Jpem9udGFsU2Ny
b2xsRWxhc3RpY2l0eSgpOworICAgIHNjcm9sbFBhcmFtZXRlcnMudmVydGljYWxTY3JvbGxFbGFz
dGljaXR5ID0gc2Nyb2xsYWJsZUFyZWEudmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IoKSA9PSBP
dmVyc2Nyb2xsQmVoYXZpb3I6Ok5vbmUgPyBTY3JvbGxFbGFzdGljaXR5OjpOb25lIDogc2Nyb2xs
YWJsZUFyZWEudmVydGljYWxTY3JvbGxFbGFzdGljaXR5KCk7CiAgICAgc2Nyb2xsUGFyYW1ldGVy
cy5hbGxvd3NIb3Jpem9udGFsU2Nyb2xsaW5nID0gc2Nyb2xsYWJsZUFyZWEuYWxsb3dzSG9yaXpv
bnRhbFNjcm9sbGluZygpOwogICAgIHNjcm9sbFBhcmFtZXRlcnMuYWxsb3dzVmVydGljYWxTY3Jv
bGxpbmcgPSBzY3JvbGxhYmxlQXJlYS5hbGxvd3NWZXJ0aWNhbFNjcm9sbGluZygpOwogICAgIHNj
cm9sbFBhcmFtZXRlcnMuaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvciA9IHNjcm9sbGFibGVB
cmVhLmhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5jcHAKaW5kZXggMmRlNjVjMjJmOWI3Zjk0MGUx
ZWJjZmZiYzQ1ZWNkNjA2YTQ5OWM4NC4uNTNlNWUwZjY3N2NmOWJlZjBhNTlkNmU2OWY3NjkwYWQx
NjcwZmVlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nVHJlZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
VHJlZS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5j
bHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtV2hlZWxFdmVudC5oIgorI2luY2x1
ZGUgIlNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5nU3Rh
dGVGcmFtZVNjcm9sbGluZ05vZGUuaCIKICNpbmNsdWRlICJTY3JvbGxpbmdTdGF0ZVRyZWUuaCIK
ICNpbmNsdWRlICJTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlLmgiCkBAIC0yMDEsMTkg
KzIwMiwyNyBAQCBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQgU2Nyb2xsaW5nVHJlZTo6aGFuZGxl
V2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbgogCiBXaGVlbEV2ZW50SGFuZGxpbmdS
ZXN1bHQgU2Nyb2xsaW5nVHJlZTo6aGFuZGxlV2hlZWxFdmVudFdpdGhOb2RlKGNvbnN0IFBsYXRm
b3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgT3B0aW9uU2V0PFdoZWVsRXZlbnRQcm9jZXNzaW5n
U3RlcHM+IHByb2Nlc3NpbmdTdGVwcywgU2Nyb2xsaW5nVHJlZU5vZGUqIG5vZGUsIEV2ZW50VGFy
Z2V0aW5nIGV2ZW50VGFyZ2V0aW5nKQogeworICAgIGF1dG8gYWRqdXN0ZWRXaGVlbEV2ZW50ID0g
d2hlZWxFdmVudDsKICAgICB3aGlsZSAobm9kZSkgewogICAgICAgICBpZiAoaXM8U2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGU+KCpub2RlKSkgewogICAgICAgICAgICAgYXV0byYgc2Nyb2xsaW5n
Tm9kZSA9IGRvd25jYXN0PFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlPigqbm9kZSk7Ci0gICAg
ICAgICAgICBhdXRvIHJlc3VsdCA9IHNjcm9sbGluZ05vZGUuaGFuZGxlV2hlZWxFdmVudCh3aGVl
bEV2ZW50LCBldmVudFRhcmdldGluZyk7CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IHNjcm9s
bGluZ05vZGUuaGFuZGxlV2hlZWxFdmVudChhZGp1c3RlZFdoZWVsRXZlbnQsIGV2ZW50VGFyZ2V0
aW5nKTsKIAogICAgICAgICAgICAgaWYgKHJlc3VsdC53YXNIYW5kbGVkKSB7Ci0gICAgICAgICAg
ICAgICAgbV9sYXRjaGluZ0NvbnRyb2xsZXIubm9kZURpZEhhbmRsZUV2ZW50KHNjcm9sbGluZ05v
ZGUuc2Nyb2xsaW5nTm9kZUlEKCksIHByb2Nlc3NpbmdTdGVwcywgd2hlZWxFdmVudCwgbV9hbGxv
d0xhdGNoaW5nKTsKLSAgICAgICAgICAgICAgICBtX2dlc3R1cmVTdGF0ZS5ub2RlRGlkSGFuZGxl
RXZlbnQoc2Nyb2xsaW5nTm9kZS5zY3JvbGxpbmdOb2RlSUQoKSwgd2hlZWxFdmVudCk7CisgICAg
ICAgICAgICAgICAgbV9sYXRjaGluZ0NvbnRyb2xsZXIubm9kZURpZEhhbmRsZUV2ZW50KHNjcm9s
bGluZ05vZGUuc2Nyb2xsaW5nTm9kZUlEKCksIHByb2Nlc3NpbmdTdGVwcywgYWRqdXN0ZWRXaGVl
bEV2ZW50LCBtX2FsbG93TGF0Y2hpbmcpOworICAgICAgICAgICAgICAgIG1fZ2VzdHVyZVN0YXRl
Lm5vZGVEaWRIYW5kbGVFdmVudChzY3JvbGxpbmdOb2RlLnNjcm9sbGluZ05vZGVJRCgpLCBhZGp1
c3RlZFdoZWVsRXZlbnQpOwogICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgIGlmIChyZXN1bHQubmVlZHNNYWluVGhyZWFkUHJvY2Vzc2lu
ZygpIHx8IGV2ZW50VGFyZ2V0aW5nICE9IEV2ZW50VGFyZ2V0aW5nOjpQcm9wYWdhdGUpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYg
KHNjcm9sbGluZ05vZGUuc2hvdWxkQmxvY2tTY3JvbGxQcm9wYWdhdGlvbihhZGp1c3RlZFdoZWVs
RXZlbnQuZGVsdGEoKSkpIHsKKyAgICAgICAgICAgICAgICBtX2xhdGNoaW5nQ29udHJvbGxlci5u
b2RlRGlkSGFuZGxlRXZlbnQoc2Nyb2xsaW5nTm9kZS5zY3JvbGxpbmdOb2RlSUQoKSwgcHJvY2Vz
c2luZ1N0ZXBzLCBhZGp1c3RlZFdoZWVsRXZlbnQsIG1fYWxsb3dMYXRjaGluZyk7CisgICAgICAg
ICAgICAgICAgbV9nZXN0dXJlU3RhdGUubm9kZURpZEhhbmRsZUV2ZW50KHNjcm9sbGluZ05vZGUu
c2Nyb2xsaW5nTm9kZUlEKCksIGFkanVzdGVkV2hlZWxFdmVudCk7CisgICAgICAgICAgICAgICAg
cmV0dXJuIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdDo6aGFuZGxlZCgpOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgYWRqdXN0ZWRXaGVlbEV2ZW50ID0gc2Nyb2xsaW5nTm9kZS5ldmVudEZv
clByb3BhZ2F0aW9uKGFkanVzdGVkV2hlZWxFdmVudCk7CiAgICAgICAgIH0KIAogICAgICAgICBp
ZiAoaXM8U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsUHJveHlOb2RlPigqbm9kZSkpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlLmNwcAppbmRleCA0ZDdjNTBmYjZjMTcxNzE5YWI4NDNhZTk2MDk0YjBi
MzMxYjVhNjFkLi5mMzM4NmZjYzU1YWJmYWMxYWU4YTA2N2YzNDE4ZjRiM2RlM2NiOTQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGUuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaWYgRU5BQkxFKFNDUk9M
TElOR19USFJFQUQpCiAjaW5jbHVkZSAiU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUu
aCIKICNlbmRpZgorI2luY2x1ZGUgIlNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmgiCiAjaW5j
bHVkZSAiU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5n
U3RhdGVUcmVlLmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZS5oIgpAQCAtMTIxLDYgKzEyMiwx
NSBAQCBib29sIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjppc0xhdGNoZWROb2RlKCkgY29u
c3QKICAgICByZXR1cm4gc2Nyb2xsaW5nVHJlZSgpLmxhdGNoZWROb2RlSUQoKSA9PSBzY3JvbGxp
bmdOb2RlSUQoKTsKIH0KIAorYm9vbCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6c2hvdWxk
UnViYmVyQmFuZChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIEV2ZW50VGFy
Z2V0aW5nIGV2ZW50VGFyZ2V0aW5nKSBjb25zdAoreworICAgIC8vIFdlIGFsd2F5cyBydWJiZXIt
YmFuZCB0aGUgbGF0Y2hlZCBub2RlLCBvciB0aGUgcm9vdCBub2RlLgorICAgIC8vIFRoZSBzdGF0
ZWxlc3Mgd2hlZWwgZXZlbnQgZG9lc24ndCB0cmlnZ2VyIHJ1YmJlci1iYW5kLgorICAgIC8vIEFs
c28gcnViYmVyYmFuZCB3aGVuIHdlIHNob3VsZCBibG9jayBzY3JvbGwgcHJvcGFnYXRpb24KKyAg
ICAvLyBhdCB0aGlzIG5vZGUsIHdoaWNoIGhhcyBvdmVyc2Nyb2xsIGJlaGF2aW9yIHRoYXQgaXMg
bm90IG5vbmUuCisgICAgcmV0dXJuIChpc0xhdGNoZWROb2RlKCkgfHwgZXZlbnRUYXJnZXRpbmcg
PT0gRXZlbnRUYXJnZXRpbmc6Ok5vZGVPbmx5IHx8IChpc1Jvb3ROb2RlKCkgJiYgIXdoZWVsRXZl
bnQuaXNOb25HZXN0dXJlRXZlbnQoKSkgfHwgKHNob3VsZEJsb2NrU2Nyb2xsUHJvcGFnYXRpb24o
d2hlZWxFdmVudC5kZWx0YSgpKSAmJiBvdmVyc2Nyb2xsQmVoYXZpb3JBbGxvd1J1YmJlckJhbmQo
KSkpOworfQorCiBib29sIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjpjYW5IYW5kbGVXaGVl
bEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgRXZlbnRUYXJnZXRp
bmcgZXZlbnRUYXJnZXRpbmcpIGNvbnN0CiB7CiAgICAgaWYgKCFjYW5IYXZlU2Nyb2xsYmFycygp
KQpAQCAtMTMwLDkgKzE0MCw3IEBAIGJvb2wgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OmNh
bkhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3CiAgICAgaWYgKHdo
ZWVsRXZlbnQucGhhc2UoKSA9PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZTo6TWF5QmVnaW4pCiAg
ICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgLy8gV2UgYWx3YXlzIHJ1YmJlci1iYW5kIHRoZSBs
YXRjaGVkIG5vZGUsIG9yIHRoZSByb290IG5vZGUuCi0gICAgLy8gVGhlIHN0YXRlbGVzcyB3aGVl
bCBldmVudCBkb2Vzbid0IHRyaWdnZXIgcnViYmVyLWJhbmQuCi0gICAgaWYgKGlzTGF0Y2hlZE5v
ZGUoKSB8fCBldmVudFRhcmdldGluZyA9PSBFdmVudFRhcmdldGluZzo6Tm9kZU9ubHkgfHwgKGlz
Um9vdE5vZGUoKSAmJiAhd2hlZWxFdmVudC5pc05vbkdlc3R1cmVFdmVudCgpKSkKKyAgICBpZiAo
c2hvdWxkUnViYmVyQmFuZCh3aGVlbEV2ZW50LCBldmVudFRhcmdldGluZykpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogCiAgICAgcmV0dXJuIGV2ZW50Q2FuU2Nyb2xsQ29udGVudHMod2hlZWxFdmVu
dCk7CkBAIC0zOTIsNiArNDAwLDI5IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6
OnNldEN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KHN0ZDo6b3B0aW9uYWw8CiAgICAgbV9j
dXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCA9IGluZGV4OwogfQogCitQbGF0Zm9ybVdoZWVs
RXZlbnQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OmV2ZW50Rm9yUHJvcGFnYXRpb24oY29u
c3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50KSBjb25zdAoreworICAgIGF1dG8gZmls
dGVyZWREZWx0YSA9IHdoZWVsRXZlbnQuZGVsdGEoKTsKKyNpZiBQTEFURk9STShNQUMpCisgICAg
YXV0byBiaWFzZWREZWx0YSA9IFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjp3aGVlbERlbHRh
Qmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbCh3aGVlbEV2ZW50KTsKKyNlbHNlCisgICAgYXV0byBiaWFz
ZWREZWx0YSA9IHdoZWVsRXZlbnQuZGVsdGEoKTsKKyNlbmRpZgorICAgIGlmIChob3Jpem9udGFs
T3ZlcnNjcm9sbEJlaGF2aW9yUHJldmVudHNQcm9wYWdhdGlvbigpIHx8IHZlcnRpY2FsT3ZlcnNj
cm9sbEJlaGF2aW9yUHJldmVudHNQcm9wYWdhdGlvbigpKSB7CisgICAgICAgIGlmKGhvcml6b250
YWxPdmVyc2Nyb2xsQmVoYXZpb3JQcmV2ZW50c1Byb3BhZ2F0aW9uKCkgfHwgKHZlcnRpY2FsT3Zl
cnNjcm9sbEJlaGF2aW9yUHJldmVudHNQcm9wYWdhdGlvbigpICYmICFiaWFzZWREZWx0YS53aWR0
aCgpKSkKKyAgICAgICAgICAgZmlsdGVyZWREZWx0YS5zZXRXaWR0aCgwKTsKKyAgICAgICAgaWYo
dmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3JQcmV2ZW50c1Byb3BhZ2F0aW9uKCkgfHwgKGhvcml6
b250YWxPdmVyc2Nyb2xsQmVoYXZpb3JQcmV2ZW50c1Byb3BhZ2F0aW9uKCkgJiYgIWJpYXNlZERl
bHRhLmhlaWdodCgpKSkKKyAgICAgICAgICAgZmlsdGVyZWREZWx0YS5zZXRIZWlnaHQoMCk7Cisg
ICAgICAgIHJldHVybiB3aGVlbEV2ZW50LmNvcHlXaXRoRGVsdGFBbmRWZWxvY2l0eShmaWx0ZXJl
ZERlbHRhLCB3aGVlbEV2ZW50LnNjcm9sbGluZ1ZlbG9jaXR5KCkpOworICAgIH0KKyAgICByZXR1
cm4gd2hlZWxFdmVudDsKK30KKworYm9vbCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6c2hv
dWxkQmxvY2tTY3JvbGxQcm9wYWdhdGlvbihjb25zdCBGbG9hdFNpemUmIGRlbHRhKSBjb25zdAor
eworICAgIHJldHVybiAoKGhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3JQcmV2ZW50c1Byb3Bh
Z2F0aW9uKCkgfHwgdmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3JQcmV2ZW50c1Byb3BhZ2F0aW9u
KCkpICYmICgoaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvclByZXZlbnRzUHJvcGFnYXRpb24o
KSAmJiB2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvclByZXZlbnRzUHJvcGFnYXRpb24oKSkgfHwg
KGhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3JQcmV2ZW50c1Byb3BhZ2F0aW9uKCkgJiYgIWRl
bHRhLmhlaWdodCgpKSB8fCAodmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3JQcmV2ZW50c1Byb3Bh
Z2F0aW9uKCkgJiYgIWRlbHRhLndpZHRoKCkpKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogI2VuZGlmIC8vIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUu
aAppbmRleCBiOWY1NDMwNzAxNmUyMDhkNGE2YzVmMGIzZTEzMWQ5OTc1ZDhlNjU1Li44MGE1ZTFk
ZTNiY2M5ZTAxNWEwYTIwNzRlNDJkNTE2YjI0NzgwNjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmgK
QEAgLTE1OSw3ICsxNTksMTQgQEAgcHJvdGVjdGVkOgogCiAgICAgYm9vbCBhbGxvd3NIb3Jpem9u
dGFsU2Nyb2xsaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMu
YWxsb3dzSG9yaXpvbnRhbFNjcm9sbGluZzsgfQogICAgIGJvb2wgYWxsb3dzVmVydGljYWxTY3Jv
bGxpbmcoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGFibGVBcmVhUGFyYW1ldGVycy5hbGxvd3NW
ZXJ0aWNhbFNjcm9sbGluZzsgfQotCisgICAgT3ZlcnNjcm9sbEJlaGF2aW9yIGhvcml6b250YWxP
dmVyc2Nyb2xsQmVoYXZpb3IoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGFibGVBcmVhUGFyYW1l
dGVycy5ob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yOyB9CisgICAgT3ZlcnNjcm9sbEJlaGF2
aW9yIHZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxh
YmxlQXJlYVBhcmFtZXRlcnMudmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3I7IH0KKyAgICBib29s
IGhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3JQcmV2ZW50c1Byb3BhZ2F0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMuaG9yaXpvbnRhbE92ZXJzY3JvbGxC
ZWhhdmlvciAhPSBPdmVyc2Nyb2xsQmVoYXZpb3I6OkF1dG87IH0KKyAgICBib29sIHZlcnRpY2Fs
T3ZlcnNjcm9sbEJlaGF2aW9yUHJldmVudHNQcm9wYWdhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
c2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzLnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yICE9IE92
ZXJzY3JvbGxCZWhhdmlvcjo6QXV0bzsgfQorICAgIFBsYXRmb3JtV2hlZWxFdmVudCBldmVudEZv
clByb3BhZ2F0aW9uKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpIGNvbnN0OworICAgIGJvb2wg
c2hvdWxkQmxvY2tTY3JvbGxQcm9wYWdhdGlvbihjb25zdCBGbG9hdFNpemUmKSBjb25zdDsKKyAg
ICBib29sIG92ZXJzY3JvbGxCZWhhdmlvckFsbG93UnViYmVyQmFuZCgpIGNvbnN0IHsgcmV0dXJu
IG1fc2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzLmhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3Ig
IT0gT3ZlcnNjcm9sbEJlaGF2aW9yOjpOb25lIHx8ICBtX3Njcm9sbGFibGVBcmVhUGFyYW1ldGVy
cy52ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvciAhPSBPdmVyc2Nyb2xsQmVoYXZpb3I6Ok5vbmU7
IH0KKyAgICBib29sIHNob3VsZFJ1YmJlckJhbmQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jiwg
RXZlbnRUYXJnZXRpbmcpIGNvbnN0OwogICAgIHZvaWQgZHVtcFByb3BlcnRpZXMoV1RGOjpUZXh0
U3RyZWFtJiwgT3B0aW9uU2V0PFNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dEJlaGF2aW9yPikgY29u
c3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCmluZGV4IGJmMGJmZGUwYzU5NjhmMWJhM2MwMTQy
NmQ5YjNkZDc3MzExMmRhNGMuLjU1Y2FjNWQ4ZDE2OGU5NzAwZTUwYmQ3YjJjNzE4MThmOTk3NDhk
YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBv
c2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBv
c2l0b3IuY3BwCkBAIC0xNjUyLDcgKzE2NTIsOSBAQCBzdGF0aWMgYm9vbCByZWNvbXBvc2l0ZUNo
YW5nZVJlcXVpcmVzR2VvbWV0cnlVcGRhdGUoY29uc3QgUmVuZGVyU3R5bGUmIG9sZFN0eWxlLAog
ICAgICAgICB8fCBvbGRTdHlsZS5vZmZzZXRQb3NpdGlvbigpICE9IG5ld1N0eWxlLm9mZnNldFBv
c2l0aW9uKCkKICAgICAgICAgfHwgb2xkU3R5bGUub2Zmc2V0RGlzdGFuY2UoKSAhPSBuZXdTdHls
ZS5vZmZzZXREaXN0YW5jZSgpCiAgICAgICAgIHx8IG9sZFN0eWxlLm9mZnNldFJvdGF0ZSgpICE9
IG5ld1N0eWxlLm9mZnNldFJvdGF0ZSgpCi0gICAgICAgIHx8ICFhcmVQb2ludGluZ1RvRXF1YWxE
YXRhKG9sZFN0eWxlLmNsaXBQYXRoKCksIG5ld1N0eWxlLmNsaXBQYXRoKCkpOworICAgICAgICB8
fCAhYXJlUG9pbnRpbmdUb0VxdWFsRGF0YShvbGRTdHlsZS5jbGlwUGF0aCgpLCBuZXdTdHlsZS5j
bGlwUGF0aCgpKQorICAgICAgICB8fCBvbGRTdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JYKCkgIT0g
bmV3U3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWCgpCisgICAgICAgIHx8IG9sZFN0eWxlLm92ZXJz
Y3JvbGxCZWhhdmlvclkoKSAhPSBuZXdTdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JZKCk7CiB9CiAK
IHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpsYXllclN0eWxlQ2hhbmdlZChTdHlsZURpZmZl
cmVuY2UgZGlmZiwgUmVuZGVyTGF5ZXImIGxheWVyLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5
bGUpCkBAIC0zOTQ1LDYgKzM5NDcsMTEgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJv
b3RPckJvZHlTdHlsZUNoYW5nZWQoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnMKICAgICBi
b29sIGhhZEZpeGVkQmFja2dyb3VuZCA9IG9sZFN0eWxlICYmIG9sZFN0eWxlLT5oYXNFbnRpcmVs
eUZpeGVkQmFja2dyb3VuZCgpOwogICAgIGlmIChoYWRGaXhlZEJhY2tncm91bmQgIT0gcmVuZGVy
ZXIuc3R5bGUoKS5oYXNFbnRpcmVseUZpeGVkQmFja2dyb3VuZCgpKQogICAgICAgICByb290TGF5
ZXJDb25maWd1cmF0aW9uQ2hhbmdlZCgpOworICAgIAorICAgIGlmIChvbGRTdHlsZSAmJiAob2xk
U3R5bGUtPm92ZXJzY3JvbGxCZWhhdmlvclgoKSAhPSByZW5kZXJlci5zdHlsZSgpLm92ZXJzY3Jv
bGxCZWhhdmlvclgoKSB8fCBvbGRTdHlsZS0+b3ZlcnNjcm9sbEJlaGF2aW9yWSgpICE9IHJlbmRl
cmVyLnN0eWxlKCkub3ZlcnNjcm9sbEJlaGF2aW9yWSgpKSkgeworICAgICAgICBpZiAoYXV0byog
bGF5ZXIgPSBtX3JlbmRlclZpZXcubGF5ZXIoKSkKKyAgICAgICAgICAgIGxheWVyLT5zZXROZWVk
c0NvbXBvc2l0aW5nR2VvbWV0cnlVcGRhdGUoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVuZGVyTGF5
ZXJDb21wb3NpdG9yOjpyb290QmFja2dyb3VuZENvbG9yT3JUcmFuc3BhcmVuY3lDaGFuZ2VkKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCmluZGV4
IDZiMzYzOGQxYThmMGUxZTY3NGEzNWZlOWNmMmUzY2I1ZWY2YjhkMGEuLjZlZDYyNzg4MjIxODY5
ZmZhY2FmNjQ0MGM3YTQ0NGUyOTdkOTNhZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcApAQCAtMTE5Niw3ICsxMTk2LDkgQEAgYm9vbCBSZW5k
ZXJTdHlsZTo6Y2hhbmdlUmVxdWlyZXNSZWNvbXBvc2l0ZUxheWVyKGNvbnN0IFJlbmRlclN0eWxl
JiBvdGhlciwgT3B0aW8KICAgICAgICAgICAgIHx8IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmJh
Y2tmYWNlVmlzaWJpbGl0eSAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5iYWNrZmFj
ZVZpc2liaWxpdHkKICAgICAgICAgICAgIHx8IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnBlcnNw
ZWN0aXZlICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnBlcnNwZWN0aXZlCiAgICAg
ICAgICAgICB8fCBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5wZXJzcGVjdGl2ZU9yaWdpblggIT0g
b3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+cGVyc3BlY3RpdmVPcmlnaW5YCi0gICAgICAg
ICAgICB8fCBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5wZXJzcGVjdGl2ZU9yaWdpblkgIT0gb3Ro
ZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+cGVyc3BlY3RpdmVPcmlnaW5ZKQorICAgICAgICAg
ICAgfHwgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+cGVyc3BlY3RpdmVPcmlnaW5ZICE9IG90aGVy
Lm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnBlcnNwZWN0aXZlT3JpZ2luWQorICAgICAgICAgICAg
fHwgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+b3ZlcnNjcm9sbEJlaGF2aW9yWCAhPSBvdGhlci5t
X3JhcmVOb25Jbmhlcml0ZWREYXRhLT5vdmVyc2Nyb2xsQmVoYXZpb3JYCisgICAgICAgICAgICB8
fCBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5vdmVyc2Nyb2xsQmVoYXZpb3JZICE9IG90aGVyLm1f
cmFyZU5vbkluaGVyaXRlZERhdGEtPm92ZXJzY3JvbGxCZWhhdmlvclkpCiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5YjA2M2Q0NjEwOGJlZWNiNzlhMjJkYzhlMWE4
M2QzOWFjNzNlMjJiLi40M2FhOTk0NWE2NjNlN2FkNTg1ZGQ0MmQ5NWVkNGZlM2VkOTFmZmQyIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMjEtMTItMDEgIE5pa29sYW9zIE1vdWNodGFyaXMgIDxu
bW91Y2h0YXJpc0BhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IENTUyBvdmVyc2Nyb2xs
LWJlaGF2aW9yIGZvciBhc3luY2hyb25vdXMgc2Nyb2xsIG9uIE1hYworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwMTM5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5j
LW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGZhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3Jv
bGwtYmVoYXZpb3ItaWZyYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9z
Y3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9y
LXVuc2Nyb2xsYWJsZS1lbGVtZW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFz
dC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWVs
ZW1lbnQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92
ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxlLWlmcmFtZS1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9y
LXVuc2Nyb2xsYWJsZS1pZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9zY3JvbGxp
bmcvcmVzb3VyY2VzL292ZXJzY3JvbGwtYmVoYXZpb3Itc3VwcG9ydC5qczogQWRkZWQuCisgICAg
ICAgIChnZXREZWx0YXMpOgorICAgICAgICAoYXN5bmMgbW91c2VXaGVlbFNjcm9sbEFuZFdhaXQp
OgorCiAyMDIxLTExLTMwICBSb2JlcnQgSmVubmVyICA8SmVubmVyQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSRUJBU0VMSU5FIFsgTW9udGVyZXkgXWZhc3QvY3NzL2NvbnRpbnVhdGlvbkNyYXNoLmh0
bWwgKGxheW91dC10ZXN0KSBpcyBhIGNvbnN0YW50IHRleHQgZmFpbHVyZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3It
ZWxlbWVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5
bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci1lbGVtZW50LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4y
NzE1MGZmNjBiNWRiZGQwYjRhN2FjNmY4M2ZiNTZmNTdjZDJjZDgyCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZp
b3ItZWxlbWVudC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMCBAQAorCitQQVNTIEVsZW1lbnQg
aG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gYXV0
by4KK1BBU1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVo
YXZpb3I6IGF1dG8gYXV0by4KK1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdp
dGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBhdXRvLgorUEFTUyBFbGVtZW50IHZlcnRp
Y2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBhdXRvLgor
UEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2
aW9yOiBub25lIGF1dG8uCitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBv
dmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIGF1dG8uCitQQVNTIEVsZW1lbnQgaG9yaXpvbnRhbCBz
Y3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gY29udGFpbi4KK1BBU1Mg
RWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1
dG8gY29udGFpbi4KK1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3Zl
cnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBjb250YWluLgorUEFTUyBFbGVtZW50IHZlcnRpY2Fs
IHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBjb250YWluLgor
UEFTUyBFbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2
aW9yOiBub25lIGNvbnRhaW4uCitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0
aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIGNvbnRhaW4uCitQQVNTIEVsZW1lbnQgaG9yaXpv
bnRhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gbm9uZS4KK1BB
U1MgRWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6
IGF1dG8gbm9uZS4KK1BBU1MgRWxlbWVudCBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3Zl
cnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBub25lLgorUEFTUyBFbGVtZW50IHZlcnRpY2FsIHNj
cm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbiBub25lLgorUEFTUyBF
bGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBu
b25lIG5vbmUuCitQQVNTIEVsZW1lbnQgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Ny
b2xsLWJlaGF2aW9yOiBub25lIG5vbmUuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
c2Nyb2xsaW5nL21hYy9hc3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9yLWVsZW1lbnQuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9yLWVs
ZW1lbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NDZhMThlZWY1OGY1YTY4OGNiMWM3NTI4YzI4YTI1NzA0
MDZmMTNkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFj
L2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItZWxlbWVudC5odG1sCkBAIC0wLDAgKzEsODYgQEAK
KzwhZG9jdHlwZSBodG1sPiA8IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIEFzeW5jT3ZlcmZsb3dT
Y3JvbGxpbmdFbmFibGVkPXRydWUgQXN5bmNGcmFtZVNjcm9sbGluZ0VuYWJsZWQ9dHJ1ZSBdIC0t
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0Lmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvb3ZlcnNjcm9sbC1iZWhhdmlv
ci1zdXBwb3J0LmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9k
cmFmdHMuY3Nzd2cub3JnL2Nzcy1vdmVyc2Nyb2xsLWJlaGF2aW9yIj4KKzxzdHlsZT4KKyAgICAu
c2Nyb2xsaW5nIHsKKyAgICAgICAgb3ZlcmZsb3c6IHNjcm9sbDsKKyAgICB9CisgICAgLnNjcm9s
bENvbnRlbnQgeworICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgIGhlaWdodDogMzAwcHg7
CisgICAgfQorICAgICNyb290IHsKKyAgICAgICAgd2lkdGg6IDIwMHB4OworICAgICAgICBoZWln
aHQ6IDIwMHB4OworICAgIH0KKyAgICAjc2Nyb2xsZXIgeworICAgICAgICB3aWR0aDogMTAwcHg7
CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgfQorPC9zdHlsZT4KKzxkaXYgaWQ9J3Jvb3Qn
IGNsYXNzPSJzY3JvbGxpbmciPgorICAgIDxkaXYgaWQ9J3Njcm9sbGVyJyBjbGFzcz0ic2Nyb2xs
aW5nIj4KKyAgICAgICAgPGRpdiBjbGFzcz0ic2Nyb2xsQ29udGVudCI+PC9kaXY+CisgICAgPC9k
aXY+CisgICAgPGRpdiBjbGFzcz0ic2Nyb2xsQ29udGVudCI+PC9kaXY+Cis8L2Rpdj4KKworPHNj
cmlwdD4KK2NvbnN0IHJvb3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncm9vdCcpOworY29u
c3Qgc2Nyb2xsZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2Nyb2xsZXInKTsKK3ZhciBv
dmVyc2Nyb2xsRGF0YXMgPSBbWyJhdXRvIiwgImF1dG8iLCB0cnVlLCB0cnVlXSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIFsiY29udGFpbiIsICJhdXRvIiwgZmFsc2UsIHRydWVdLAorICAgICAg
ICAgICAgICAgICAgICAgICAgWyJub25lIiwgImF1dG8iLCBmYWxzZSwgdHJ1ZV0sCisgICAgICAg
ICAgICAgICAgICAgICAgICBbImF1dG8iLCAiY29udGFpbiIsIHRydWUsIGZhbHNlXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIFsiY29udGFpbiIsICJjb250YWluIiwgZmFsc2UsIGZhbHNlXSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIFsibm9uZSIsICJjb250YWluIiwgZmFsc2UsIGZhbHNl
XSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFsiYXV0byIsICJub25lIiwgdHJ1ZSwgZmFsc2Vd
LAorICAgICAgICAgICAgICAgICAgICAgICAgWyJjb250YWluIiwgIm5vbmUiLCBmYWxzZSwgZmFs
c2VdLAorICAgICAgICAgICAgICAgICAgICAgICAgWyJub25lIiwgIm5vbmUiLCBmYWxzZSwgZmFs
c2VdXTsKKworZnVuY3Rpb24gcmVzZXRUZXN0KCkgeworICAgIC8vIFRyeSB2YXJpb3VzIG1ldGhv
ZHMgdG8gZW5zdXJlIHRoZSBlbGVtZW50IHBvc2l0aW9uIGlzIHJlc2V0IGltbWVkaWF0ZWx5Lgor
ICAgIHNjcm9sbGVyLnNjcm9sbExlZnQgPSAzMDA7CisgICAgc2Nyb2xsZXIuc2Nyb2xsVG9wID0g
MzAwOworICAgIHNjcm9sbGVyLnNjcm9sbFRvKDMwMCwgMzAwKTsKKworICAgIHJvb3Quc2Nyb2xs
TGVmdCA9IDA7CisgICAgcm9vdC5zY3JvbGxUb3AgPSAwOworICAgIHJvb3Quc2Nyb2xsVG8oMCwg
MCk7Cit9CisKK2Z1bmN0aW9uIHN0YXJ0VGVzdCgpIHsKKyAgICBvdmVyc2Nyb2xsRGF0YXMuZm9y
RWFjaCgoW292ZXJzY3JvbGxYLCBvdmVyc2Nyb2xsWSwgcHJvcGFnYXRlWCwgcHJvcGFnYXRlWV0p
ID0+IHsKKyAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAgIHJlc2V0VGVz
dCgpOworICAgICAgICAgICAgc2Nyb2xsZXIuc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWCA9IG92
ZXJzY3JvbGxYOworICAgICAgICAgICAgc2Nyb2xsZXIuc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9y
WSA9IG92ZXJzY3JvbGxZOworICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aDsK
KworICAgICAgICAgICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAgICAg
ICAgICB2YXIgeSA9IHNjcm9sbGVyLmNsaWVudEhlaWdodCAvIDI7CisgICAgICAgICAgICB2YXIg
ZGVsdGEgPSBnZXREZWx0YXMoInJpZ2h0Iik7CisgICAgICAgICAgICByZXR1cm4gbW91c2VXaGVl
bFNjcm9sbEFuZFdhaXQoeCwgeSwgZGVsdGEuWCwgZGVsdGEuWSwgZGVsdGEuWCwgZGVsdGEuWSku
dGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbExl
ZnQgPiAwLCBwcm9wYWdhdGVYLCAnUHJvcGFnYXRlIGhvcml6b250YWwgc2Nyb2xsJyk7CisgICAg
ICAgICAgICB9KTsKKyAgICAgICAgfSwgJ0VsZW1lbnQgaG9yaXpvbnRhbCBzY3JvbGwgdGVzdCB3
aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6ICcgKyBvdmVyc2Nyb2xsWCArICcgJyArIG92ZXJzY3Jv
bGxZICsgJy4nKTsKKworICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgICAgICAgICAg
cmVzZXRUZXN0KCk7CisgICAgICAgICAgICBzY3JvbGxlci5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZp
b3JYID0gb3ZlcnNjcm9sbFg7CisgICAgICAgICAgICBzY3JvbGxlci5zdHlsZS5vdmVyc2Nyb2xs
QmVoYXZpb3JZID0gb3ZlcnNjcm9sbFk7CisKKyAgICAgICAgICAgIHZhciB4ID0gc2Nyb2xsZXIu
Y2xpZW50V2lkdGggLyAyOworICAgICAgICAgICAgdmFyIHkgPSBzY3JvbGxlci5jbGllbnRIZWln
aHQgLyAyOworICAgICAgICAgICAgdmFyIGRlbHRhID0gZ2V0RGVsdGFzKCJkb3duIik7CisgICAg
ICAgICAgICByZXR1cm4gbW91c2VXaGVlbFNjcm9sbEFuZFdhaXQoeCwgeSwgZGVsdGEuWCwgZGVs
dGEuWSwgZGVsdGEuWCwgZGVsdGEuWSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgYXNz
ZXJ0X2VxdWFscyhyb290LnNjcm9sbFRvcCA+IDAsIHByb3BhZ2F0ZVksICdQcm9wYWdhdGUgdmVy
dGljYWwgc2Nyb2xsJyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSwgJ0VsZW1lbnQgdmVy
dGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiAnICsgb3ZlcnNjcm9s
bFggKyAnICcgKyBvdmVyc2Nyb2xsWSArICcuJyk7CisgICAgfSk7Cit9CisKK2FkZEV2ZW50TGlz
dGVuZXIoImxvYWQiLCBzdGFydFRlc3QpOworPC9zY3JpcHQ+ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5j
LW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zh
c3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOTAwYTBiN2Q5MDViODdjMWRiNzYyNjk0ZmQwMDYzOGYxOTc2OTUz
NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL21hYy9hc3lu
Yy1vdmVyc2Nyb2xsLWJlaGF2aW9yLWlmcmFtZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMSBA
QAorCisKK1BBU1MgSWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xs
LWJlaGF2aW9yOiBhdXRvIGF1dG8uCitQQVNTIElmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3
aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG8gYXV0by4KK1BBU1MgSWZyYW1lIGhvcml6b250
YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGF1dG8uCitQ
QVNTIElmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6
IGNvbnRhaW4gYXV0by4KK1BBU1MgSWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBv
dmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lIGF1dG8uCitQQVNTIElmcmFtZSB2ZXJ0aWNhbCBzY3Jv
bGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgYXV0by4KK1BBU1MgSWZyYW1l
IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIGNv
bnRhaW4uCitQQVNTIElmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwt
YmVoYXZpb3I6IGF1dG8gY29udGFpbi4KK1BBU1MgSWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRl
c3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIGNvbnRhaW4uCitQQVNTIElmcmFt
ZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4g
Y29udGFpbi4KK1BBU1MgSWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Ny
b2xsLWJlaGF2aW9yOiBub25lIGNvbnRhaW4uCitQQVNTIElmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwg
dGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUgY29udGFpbi4KK1BBU1MgSWZyYW1l
IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvIG5v
bmUuCitQQVNTIElmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVo
YXZpb3I6IGF1dG8gbm9uZS4KK1BBU1MgSWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0
aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluIG5vbmUuCitQQVNTIElmcmFtZSB2ZXJ0aWNh
bCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4gbm9uZS4KK1BB
U1MgSWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9y
OiBub25lIG5vbmUuCitQQVNTIElmcmFtZSB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3aXRoIG92ZXJz
Y3JvbGwtYmVoYXZpb3I6IG5vbmUgbm9uZS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci1p
ZnJhbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45OTQyY2I1ZGUwY2MxNmM1MGM4Yjg5NWVkOWU0ODVjN2Iz
Y2IwMTVjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvbWFj
L2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItaWZyYW1lLmh0bWwKQEAgLTAsMCArMSw4NSBAQAor
PCFkb2N0eXBlIGh0bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgQXN5bmNPdmVyZmxvd1Nj
cm9sbGluZ0VuYWJsZWQ9dHJ1ZSBBc3luY0ZyYW1lU2Nyb2xsaW5nRW5hYmxlZD10cnVlIF0gLS0+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2aW9y
LXN1cHBvcnQuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL2Ry
YWZ0cy5jc3N3Zy5vcmcvY3NzLW92ZXJzY3JvbGwtYmVoYXZpb3IiPgorPHN0eWxlPgorICAgIC5z
Y3JvbGxpbmcgeworICAgICAgICBvdmVyZmxvdzogc2Nyb2xsOworICAgIH0KKyAgICAuc2Nyb2xs
Q29udGVudCB7CisgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgaGVpZ2h0OiAzMDBweDsK
KyAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmVkLCBibHVlKTsK
KyAgICB9CisgICAgI3Jvb3QgeworICAgICAgICB3aWR0aDogMjAwcHg7CisgICAgICAgIGhlaWdo
dDogMjAwcHg7CisgICAgfQorICAgICNzY3JvbGxlciB7CisgICAgICAgIHdpZHRoOiAxMDBweDsK
KyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgICAgb3ZlcnNjcm9sbC1iZWhhdmlvci15OiBh
dXRvOworICAgIH0KKzwvc3R5bGU+Cis8ZGl2IGlkPSdyb290JyBjbGFzcz0ic2Nyb2xsaW5nIj4K
KyAgICA8aWZyYW1lIGlkPSdzY3JvbGxlcicgc3JjZG9jPSI8aHRtbD48ZGl2IHN0eWxlPSd3aWR0
aDogMzAwcHg7IGhlaWdodDogMzAwcHg7Jz48L2Rpdj48L2h0bWw+CisgICAgICAgICI+PC9pZnJh
bWU+CisgICAgPGRpdiBjbGFzcz0ic2Nyb2xsQ29udGVudCI+PC9kaXY+Cis8L2Rpdj4KKworPHNj
cmlwdD4KKyAgICBjb25zdCByb290ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jvb3QnKTsK
KyAgICBjb25zdCBzY3JvbGxlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY3JvbGxlcicp
OworICAgIHZhciBvdmVyc2Nyb2xsRGF0YXMgPSBbWyJhdXRvIiwgImF1dG8iLCB0cnVlLCB0cnVl
XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImNvbnRhaW4iLCAiYXV0byIsIGZhbHNl
LCB0cnVlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIm5vbmUiLCAiYXV0byIsIGZh
bHNlLCB0cnVlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImF1dG8iLCAiY29udGFp
biIsIHRydWUsIGZhbHNlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImNvbnRhaW4i
LCAiY29udGFpbiIsIGZhbHNlLCBmYWxzZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
WyJub25lIiwgImNvbnRhaW4iLCBmYWxzZSwgZmFsc2VdLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFsiYXV0byIsICJub25lIiwgdHJ1ZSwgZmFsc2VdLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFsiY29udGFpbiIsICJub25lIiwgZmFsc2UsIGZhbHNlXSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBbIm5vbmUiLCAibm9uZSIsIGZhbHNlLCBmYWxzZV1dOworICAgIGZ1
bmN0aW9uIHJlc2V0VGVzdCgpIHsKKyAgICAgICAgLy8gVHJ5IHZhcmlvdXMgbWV0aG9kcyB0byBl
bnN1cmUgdGhlIGVsZW1lbnQgcG9zaXRpb24gaXMgcmVzZXQgaW1tZWRpYXRlbHkuCisgICAgICAg
IHNjcm9sbGVyLmNvbnRlbnRXaW5kb3cuc2Nyb2xsWCA9IDMwMDsKKyAgICAgICAgc2Nyb2xsZXIu
Y29udGVudFdpbmRvdy5zY3JvbGxZID0gMzAwOworICAgICAgICBzY3JvbGxlci5jb250ZW50V2lu
ZG93LnNjcm9sbFRvKDMwMCwgMzAwKTsKKyAgICAgICAgcm9vdC5zY3JvbGxMZWZ0ID0gMDsKKyAg
ICAgICAgcm9vdC5zY3JvbGxUb3AgPSAwOworICAgICAgICByb290LnNjcm9sbFRvKDAsIDApOwor
ICAgIH0KKworICAgIGZ1bmN0aW9uIG92ZXJzY3JvbGxCZWhhdmlvclRlc3QoKSB7CisgICAgICAg
IG92ZXJzY3JvbGxEYXRhcy5mb3JFYWNoKChbb3ZlcnNjcm9sbFgsIG92ZXJzY3JvbGxZLCBwcm9w
YWdhdGVYLCBwcm9wYWdhdGVZXSkgPT4geworICAgICAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+
IHsKKyAgICAgICAgICAgICAgICByZXNldFRlc3QoKTsKKyAgICAgICAgICAgICAgICB2YXIgdGFy
Z2V0ID0gc2Nyb2xsZXIuY29udGVudFdpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgiaHRtbCIpWzBdOworICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5vdmVyc2Nyb2xsQmVo
YXZpb3JYID0gb3ZlcnNjcm9sbFg7CisgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLm92ZXJz
Y3JvbGxCZWhhdmlvclkgPSBvdmVyc2Nyb2xsWTsKKyAgICAgICAgICAgICAgICB2YXIgeCA9IHNj
cm9sbGVyLmNsaWVudFdpZHRoIC8gMjsKKyAgICAgICAgICAgICAgICB2YXIgeSA9IHNjcm9sbGVy
LmNsaWVudEhlaWdodCAvIDI7CisgICAgICAgICAgICAgICAgdmFyIGRlbHRhID0gZ2V0RGVsdGFz
KCJyaWdodCIpOworICAgICAgICAgICAgICAgIHJldHVybiBtb3VzZVdoZWVsU2Nyb2xsQW5kV2Fp
dCh4LCB5LCBkZWx0YS5YLCBkZWx0YS5ZLCBkZWx0YS5YLCBkZWx0YS5ZKS50aGVuKCgpID0+IHsK
KyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbExlZnQgPiAwLCBw
cm9wYWdhdGVYLCAnUHJvcGFnYXRlIGhvcml6b250YWwgc2Nyb2xsJyk7CisgICAgICAgICAgICAg
ICAgfSk7CisgICAgICAgICAgICB9LCAnSWZyYW1lIGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0
aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiAnICsgb3ZlcnNjcm9sbFggKyAnICcgKyBvdmVyc2Nyb2xs
WSArICcuJyk7CisKKyAgICAgICAgICAgIHByb21pc2VfdGVzdCgoKSA9PiB7CisgICAgICAgICAg
ICAgICAgcmVzZXRUZXN0KCk7CisgICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IHNjcm9sbGVy
LmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImh0bWwiKVswXTsK
KyAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWCA9IG92ZXJz
Y3JvbGxYOworICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JZ
ID0gb3ZlcnNjcm9sbFk7CisKKyAgICAgICAgICAgICAgICB2YXIgeCA9IHNjcm9sbGVyLmNsaWVu
dFdpZHRoIC8gMjsKKyAgICAgICAgICAgICAgICB2YXIgeSA9IHNjcm9sbGVyLmNsaWVudEhlaWdo
dCAvIDI7CisgICAgICAgICAgICAgICAgdmFyIGRlbHRhID0gZ2V0RGVsdGFzKCJkb3duIik7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIG1vdXNlV2hlZWxTY3JvbGxBbmRXYWl0KHgsIHksIGRlbHRh
LlgsIGRlbHRhLlksIGRlbHRhLlgsIGRlbHRhLlkpLnRoZW4oKCkgPT4geworICAgICAgICAgICAg
ICAgICAgICBhc3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsVG9wID4gMCwgcHJvcGFnYXRlWSwgJ1By
b3BhZ2F0ZSB2ZXJ0aWNhbCBzY3JvbGwnKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAg
ICAgIH0sICdJZnJhbWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2
aW9yOiAnICsgb3ZlcnNjcm9sbFggKyAnICcgKyBvdmVyc2Nyb2xsWSArICcuJyk7CisgICAgICAg
IH0pOworICAgIH0KKworICAgIHNjcm9sbGVyLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBvdmVy
c2Nyb2xsQmVoYXZpb3JUZXN0KTsKKzwvc2NyaXB0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1vdmVy
c2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1lbGVtZW50LWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Ny
b2xsYWJsZS1lbGVtZW50LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMzk1YjY0ODhkMDg3MGI5
NTYxYzAyODY3OWQ3ZTE1YTQ3ZmNlNmU5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9zY3JvbGxpbmcvbWFjL2FzeW5jLW92ZXJzY3JvbGwtYmVoYXZpb3ItdW5zY3JvbGxhYmxl
LWVsZW1lbnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorCitQQVNTIFVuc2Nyb2xsYWJs
ZSBlbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9y
OiBub25lLgorUEFTUyBVbnNjcm9sbGFibGUgZWxlbWVudCB2ZXJ0aWNhbCBzY3JvbGwgdGVzdCB3
aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3Qvc2Nyb2xsaW5nL21hYy9hc3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJs
ZS1lbGVtZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3Zl
cnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtZWxlbWVudC5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI1
MGQ0MGYxNzRlOTMwNjc0ODcwNzA2OGM3ZGNlZWQ4MmRlMWQ0YTgKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlv
ci11bnNjcm9sbGFibGUtZWxlbWVudC5odG1sCkBAIC0wLDAgKzEsNjcgQEAKKzwhZG9jdHlwZSBo
dG1sPiA8IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIEFzeW5jT3ZlcmZsb3dTY3JvbGxpbmdFbmFi
bGVkPXRydWUgQXN5bmNGcmFtZVNjcm9sbGluZ0VuYWJsZWQ9dHJ1ZSBdIC0tPgorCis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXN1cHBvcnQu
anMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL2RyYWZ0cy5jc3N3
Zy5vcmcvY3NzLW92ZXJzY3JvbGwtYmVoYXZpb3IiPgorPHN0eWxlPgorICAgIC5zY3JvbGxpbmcg
eworICAgICAgICBvdmVyZmxvdzogc2Nyb2xsOworICAgIH0KKyAgICAuc2Nyb2xsQ29udGVudCB7
CisgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICB9Cisg
ICAgI3Jvb3QgeworICAgICAgICB3aWR0aDogMjAwcHg7CisgICAgICAgIGhlaWdodDogMjAwcHg7
CisgICAgfQorICAgICNzY3JvbGxlciB7CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAg
aGVpZ2h0OiAxMDBweDsKKyAgICAgICAgb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZTsKKyAgICAg
ICAgb3ZlcmZsb3c6IHZpc2libGU7CisgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVu
dCgxMzVkZWcsIHJlZCwgYmx1ZSk7CisgICAgfQorPC9zdHlsZT4KKzxkaXYgaWQ9InJvb3QiIGNs
YXNzPSJzY3JvbGxpbmciPgorICAgIDxkaXYgaWQ9InNjcm9sbGVyIj4KKyAgICAgICAgPGRpdiBj
bGFzcz0ic2Nyb2xsQ29udGVudCI+PC9kaXY+CisgICAgPC9kaXY+CisgICAgPGRpdiBjbGFzcz0i
c2Nyb2xsQ29udGVudCI+PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4KK2NvbnN0IHJvb3QgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgncm9vdCcpOworY29uc3Qgc2Nyb2xsZXIgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnc2Nyb2xsZXInKTsKKworZnVuY3Rpb24gcmVzZXRUZXN0KCkgewor
ICAgIHJvb3Quc2Nyb2xsTGVmdCA9IDA7CisgICAgcm9vdC5zY3JvbGxUb3AgPSAwOworICAgIHJv
b3Quc2Nyb2xsVG8oMCwgMCk7Cit9CisKK2Z1bmN0aW9uIHN0YXJ0VGVzdCgpIHsKKyAgICAgICAg
cHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgICAgICAgICAgIHJlc2V0VGVzdCgpOworICAgICAgICAg
ICAgdmFyIHggPSBzY3JvbGxlci5jbGllbnRXaWR0aCAvIDI7CisgICAgICAgICAgICB2YXIgeSA9
IHNjcm9sbGVyLmNsaWVudEhlaWdodCAvIDI7CisgICAgICAgICAgICB2YXIgZGVsdGEgPSBnZXRE
ZWx0YXMoInJpZ2h0Iik7CisgICAgICAgICAgICByZXR1cm4gbW91c2VXaGVlbFNjcm9sbEFuZFdh
aXQoeCwgeSwgZGVsdGEuWCwgZGVsdGEuWSwgZGVsdGEuWCwgZGVsdGEuWSkudGhlbigoKSA9PiB7
CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbExlZnQgPiAwLCB0cnVl
LCAnUHJvcGFnYXRlIGhvcml6b250YWwgc2Nyb2xsJyk7CisgICAgICAgICAgICB9KTsKKyAgICAg
ICAgfSwgJ1Vuc2Nyb2xsYWJsZSBlbGVtZW50IGhvcml6b250YWwgc2Nyb2xsIHRlc3Qgd2l0aCBv
dmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLicpOworCisgICAgICAgIHByb21pc2VfdGVzdCgoKSA9
PiB7CisgICAgICAgICAgICByZXNldFRlc3QoKTsKKyAgICAgICAgICAgIHZhciB4ID0gc2Nyb2xs
ZXIuY2xpZW50V2lkdGggLyAyOworICAgICAgICAgICAgdmFyIHkgPSBzY3JvbGxlci5jbGllbnRI
ZWlnaHQgLyAyOworICAgICAgICAgICAgdmFyIGRlbHRhID0gZ2V0RGVsdGFzKCJkb3duIik7Cisg
ICAgICAgICAgICByZXR1cm4gbW91c2VXaGVlbFNjcm9sbEFuZFdhaXQoeCwgeSwgZGVsdGEuWCwg
ZGVsdGEuWSwgZGVsdGEuWCwgZGVsdGEuWSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAg
YXNzZXJ0X2VxdWFscyhyb290LnNjcm9sbFRvcCA+IDAsIHRydWUsICdQcm9wYWdhdGUgdmVydGlj
YWwgc2Nyb2xsJyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSwgJ1Vuc2Nyb2xsYWJsZSBl
bGVtZW50IHZlcnRpY2FsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9u
ZS4nKTsKK30KKworYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIHN0YXJ0VGVzdCk7Cis8L3Njcmlw
dD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUt
aWZyYW1lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL21hYy9hc3lu
Yy1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjdmYTU5Y2NiYTc5YWVmZjMzZGE3MGU5M2Q0ODhhMDdlZWM5YzU2OTEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNj
cm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDUgQEAKKworCitQQVNTIFVuc2Nyb2xsYWJsZSBpZnJhbWUgaG9yaXpvbnRhbCBzY3JvbGwgdGVz
dCB3aXRoIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmUuCitQQVNTIFVuc2Nyb2xsYWJsZSBpZnJh
bWUgdmVydGljYWwgc2Nyb2xsIHRlc3Qgd2l0aCBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lLgor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNj
cm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L3Njcm9sbGluZy9tYWMvYXN5bmMtb3ZlcnNjcm9sbC1iZWhhdmlvci11bnNjcm9sbGFibGUtaWZy
YW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMWQ0Y2RjODAyNDc5YWMxOWJhZTEwMWJmMWU3NDgyMGJiZmNl
ZWU4OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL21hYy9h
c3luYy1vdmVyc2Nyb2xsLWJlaGF2aW9yLXVuc2Nyb2xsYWJsZS1pZnJhbWUuaHRtbApAQCAtMCww
ICsxLDY2IEBACis8IWRvY3R5cGUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBBc3lu
Y092ZXJmbG93U2Nyb2xsaW5nRW5hYmxlZD10cnVlIEFzeW5jRnJhbWVTY3JvbGxpbmdFbmFibGVk
PXRydWUgXSAtLT4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVz
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvb3ZlcnNj
cm9sbC1iZWhhdmlvci1zdXBwb3J0LmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0iaGVscCIgaHJl
Zj0iaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1vdmVyc2Nyb2xsLWJlaGF2aW9yIj4KKzxz
dHlsZT4KKyAgICAuc2Nyb2xsaW5nIHsKKyAgICAgICAgb3ZlcmZsb3c6IHNjcm9sbDsKKyAgICB9
CisgICAgLnNjcm9sbENvbnRlbnQgeworICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgIGhl
aWdodDogMzAwcHg7CisgICAgfQorICAgICNyb290IHsKKyAgICAgICAgd2lkdGg6IDIwMHB4Owor
ICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAgIH0KKyAgICAjc2Nyb2xsZXIgeworICAgICAgICB3
aWR0aDogMjAwcHg7CisgICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgICAgIG92ZXJzY3JvbGwt
YmVoYXZpb3I6IG5vbmU7CisgICAgICAgIG92ZXJmbG93OiB2aXNpYmxlOworICAgICAgICBiYWNr
Z3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZWQsIGJsdWUpOworICAgIH0KKzwvc3R5
bGU+Cis8ZGl2IGlkPSdyb290JyBjbGFzcz0ic2Nyb2xsaW5nIj4KKyAgICA8aWZyYW1lIGlkPSdz
Y3JvbGxlcicgc3JjZG9jPSI8aHRtbCBzdHlsZT0nb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZTsn
PjxkaXYgc3R5bGU9J3dpZHRoOiAxMDBweDsgaGVpZ2h0OiAxMDBweDsnPjwvZGl2PjwvaHRtbD4K
KyAgICAgICAgIj48L2lmcmFtZT4KKyAgICA8ZGl2IGNsYXNzPSJzY3JvbGxDb250ZW50Ij48L2Rp
dj4KKzwvZGl2PgorCis8c2NyaXB0PgorY29uc3Qgcm9vdCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdyb290Jyk7Citjb25zdCBzY3JvbGxlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdz
Y3JvbGxlcicpOworCitmdW5jdGlvbiByZXNldFRlc3QoKSB7CisgICAgcm9vdC5zY3JvbGxMZWZ0
ID0gMDsKKyAgICByb290LnNjcm9sbFRvcCA9IDA7CisgICAgcm9vdC5zY3JvbGxUbygwLCAwKTsK
K30KKworZnVuY3Rpb24gc3RhcnRUZXN0KCkgeworICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4g
eworICAgICAgICAgICAgcmVzZXRUZXN0KCk7CisgICAgICAgICAgICB2YXIgeCA9IHNjcm9sbGVy
LmNsaWVudFdpZHRoIC8gMjsKKyAgICAgICAgICAgIHZhciB5ID0gc2Nyb2xsZXIuY2xpZW50SGVp
Z2h0IC8gMjsKKyAgICAgICAgICAgIHZhciBkZWx0YSA9IGdldERlbHRhcygicmlnaHQiKTsKKyAg
ICAgICAgICAgIHJldHVybiBtb3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCh4LCB5LCBkZWx0YS5YLCBk
ZWx0YS5ZLCBkZWx0YS5YLCBkZWx0YS5ZKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBh
c3NlcnRfZXF1YWxzKHJvb3Quc2Nyb2xsTGVmdCA+IDAsIHRydWUsICdQcm9wYWdhdGUgaG9yaXpv
bnRhbCBzY3JvbGwnKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9LCAnVW5zY3JvbGxhYmxl
IGlmcmFtZSBob3Jpem9udGFsIHNjcm9sbCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjog
bm9uZS4nKTsKKworICAgICAgICBwcm9taXNlX3Rlc3QoKCkgPT4geworICAgICAgICAgICAgcmVz
ZXRUZXN0KCk7CisgICAgICAgICAgICB2YXIgeCA9IHNjcm9sbGVyLmNsaWVudFdpZHRoIC8gMjsK
KyAgICAgICAgICAgIHZhciB5ID0gc2Nyb2xsZXIuY2xpZW50SGVpZ2h0IC8gMjsKKyAgICAgICAg
ICAgIHZhciBkZWx0YSA9IGdldERlbHRhcygiZG93biIpOworICAgICAgICAgICAgcmV0dXJuIG1v
dXNlV2hlZWxTY3JvbGxBbmRXYWl0KHgsIHksIGRlbHRhLlgsIGRlbHRhLlksIGRlbHRhLlgsIGRl
bHRhLlkpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocm9vdC5z
Y3JvbGxUb3AgPiAwLCB0cnVlLCAnUHJvcGFnYXRlIHZlcnRpY2FsIHNjcm9sbCcpOworICAgICAg
ICAgICAgfSk7CisgICAgICAgIH0sICdVbnNjcm9sbGFibGUgaWZyYW1lIHZlcnRpY2FsIHNjcm9s
bCB0ZXN0IHdpdGggb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZS4nKTsKK30KKworYWRkRXZlbnRM
aXN0ZW5lcigibG9hZCIsIHN0YXJ0VGVzdCk7Cis8L3NjcmlwdD4KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9yZXNvdXJj
ZXMvb3ZlcnNjcm9sbC1iZWhhdmlvci1zdXBwb3J0LmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3Jv
bGxpbmcvcmVzb3VyY2VzL292ZXJzY3JvbGwtYmVoYXZpb3Itc3VwcG9ydC5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5jYmQyMjJlOTBiNTJhMTkzMGI3ZmNmZTQ0MjNlOTQ1ODNjMDQ2MDBlCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvcmVzb3VyY2VzL292ZXJzY3JvbGwtYmVo
YXZpb3Itc3VwcG9ydC5qcwpAQCAtMCwwICsxLDM5IEBACitmdW5jdGlvbiBnZXREZWx0YXMoZGly
ZWN0aW9uKSB7CisgICAgdmFyIGRlbHRhWCA9IDA7CisgICAgdmFyIGRlbHRhWSA9IDA7CisgICAg
aWYgKGRpcmVjdGlvbiA9PSAiZG93biIpCisgICAgICAgIGRlbHRhWSA9IC01CisgICAgZWxzZSBp
ZiAoZGlyZWN0aW9uID09ICJ1cCIpCisgICAgICAgIGRlbHRhWSA9IDU7CisgICAgZWxzZSBpZiAo
ZGlyZWN0aW9uID09ICJyaWdodCIpCisgICAgICAgIGRlbHRhWCA9IC01OworICAgIGVsc2UgaWYg
KGRpcmVjdGlvbiA9PSAibGVmdCIpCisgICAgICAgIGRlbHRhWCA9IDU7CisgICAgcmV0dXJuIHsK
KyAgICAgICAgWDogZGVsdGFYLAorICAgICAgICBZOiBkZWx0YVkKKyAgICB9OworfQorCithc3lu
YyBmdW5jdGlvbiBtb3VzZVdoZWVsU2Nyb2xsQW5kV2FpdCh4LCB5LCBiZWdpblgsIGJlZ2luWSwg
ZGVsdGFYLCBkZWx0YVkpCit7CisgICAgaWYgKGJlZ2luWCA9PT0gdW5kZWZpbmVkKQorICAgICAg
ICBiZWdpblggPSAwOworICAgIGlmIChiZWdpblkgPT09IHVuZGVmaW5lZCkKKyAgICAgICAgYmVn
aW5ZID0gLTE7CisgICAgaWYgKGRlbHRhWCA9PT0gdW5kZWZpbmVkKQorICAgICAgICBkZWx0YVgg
PSAwOworICAgIGlmIChkZWx0YVkgPT09IHVuZGVmaW5lZCkKKyAgICAgICAgZGVsdGFZID0gLTEw
OworCisgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGJlZ2luWCwgYmVnaW5ZLCAiYmVnYW4iLCAibm9uZSIpOwor
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
ZWx0YVgsIGRlbHRhWSwgImNoYW5nZWQiLCAibm9uZSIpOworICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAiZW5kZWQiLCAibm9uZSIp
OworICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICAgICAgc2V0VGltZW91
dCgoKSA9PiB7CisgICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUocmVzb2x2ZSk7Cisg
ICAgICAgIH0sIDUwMCk7CisgICAgfSk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>
<flag name="commit-queue"
          id="476690"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>