<?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>74601</bug_id>
          
          <creation_ts>2011-12-15 04:32:32 -0800</creation_ts>
          <short_desc>[Qt][WK2] Pinch zoom should affect the page size</short_desc>
          <delta_ts>2012-01-09 04:35:59 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Qt</keywords>
          <priority>P3</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>75542</dependson>
          <blocked>74403</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Andras Becsi">abecsi</reporter>
          <assigned_to name="Andras Becsi">abecsi</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>hausmann</cc>
    
    <cc>kenneth</cc>
    
    <cc>vestbo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>521826</commentid>
    <comment_count>0</comment_count>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2011-12-15 04:32:32 -0800</bug_when>
    <thetext>Currently we are using the scale property of the QQuickWebPage for pinch zoom which does not change the page width and height but applies a scale transform internally.
However for layout and anchoring to work correctly in QML we need pinching to affect the page size.
This can be done by applying the scale to the page size and the transformation matrix of the drawing area, and not touching the scale property of the page itself.
This has a consequence that the page item&apos;s coordinate system is no longer reliable, so we need to receive the input events in viewport coordinates and translate them to &quot;web-coordinates&quot; when we create NativeWebEvents.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522783</commentid>
    <comment_count>1</comment_count>
      <attachid>119622</attachid>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2011-12-16 09:35:43 -0800</bug_when>
    <thetext>Created attachment 119622
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522786</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-16 09:39:06 -0800</bug_when>
    <thetext>Attachment 119622 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1

Source/WebKit2/ChangeLog:1:  ChangeLog entry has no bug number  [changelog/bugnumber] [5]
Source/WebKit2/UIProcess/qt/QtWebPageEventHandler.cpp:333:  Missing space before ( in foreach(  [whitespace/parens] [5]
Source/WebKit2/Shared/qt/WebEventFactoryQt.cpp:109:  Missing space after ,  [whitespace/comma] [3]
Total errors found: 3 in 21 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523858</commentid>
    <comment_count>3</comment_count>
      <attachid>119622</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2011-12-19 05:47:23 -0800</bug_when>
    <thetext>Comment on attachment 119622
proposed patch

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

The style queue has some comments, and so do I :)

In general I think this is the right thing to do. I&apos;m even starting to think that is may also be a good thing if the _view_ becomes the entity to receive all events from the QQuickCanvas and therefore also has the focus. It&apos;s a nice way to encapsulate the fact that we may be using a child item as flickable, with a page somewhere deeper. So if somebody wants to &quot;remotely&quot; control the view with synthetic events, then it&apos;s very convenient if the view can be the receiving object.

I&apos;m going to say r- because of the style issues and because I have the strong feeling that the coordinate translations for the events can be made more efficient and easier.

&gt; Source/WebKit2/UIProcess/qt/QtWebPageEventHandler.cpp:337
&gt; +    QList&lt;QPointF&gt; webPagePoints;
&gt; +
&gt; +    foreach(QTouchEvent::TouchPoint point, event-&gt;touchPoints())
&gt; +        webPagePoints.append(m_viewport-&gt;mapToWebCoordinates(point.pos()));
&gt; +
&gt; +
&gt; +    m_webPageProxy-&gt;handleTouchEvent(NativeWebTouchEvent(event, webPagePoints));

I&apos;m not a fan of the pattern of passing an extra parameter to the event constructor with the translated points. What this means in practice is

   1) We extract each point from the native Qt event...
   2) ...and call mapToWebCoordinates.
   3) Each invocation will call transformToItem() which creates the same temporary QTransform every time.
   4) The transformed point is appended to a separately allocated temporary array (which btw could be a vector with reservations).
   5) The WK2 even is created from separate coordinates.

I wonder if it would be faster and easier (in terms of readability) to alternatively pass the
transform as a parameter to the event constructor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523924</commentid>
    <comment_count>4</comment_count>
      <attachid>119868</attachid>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2011-12-19 08:39:51 -0800</bug_when>
    <thetext>Created attachment 119868
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523942</commentid>
    <comment_count>5</comment_count>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2011-12-19 09:36:10 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 119622 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=119622&amp;action=review
&gt; 
&gt; The style queue has some comments, and so do I :)

Fixed the style issues.

&gt; I&apos;m going to say r- because of the style issues and because I have the strong feeling that the coordinate translations for the events can be made more efficient and easier.
&gt; 
&gt; I wonder if it would be faster and easier (in terms of readability) to alternatively pass the
&gt; transform as a parameter to the event constructor.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524486</commentid>
    <comment_count>6</comment_count>
      <attachid>119868</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2011-12-20 01:49:24 -0800</bug_when>
    <thetext>Comment on attachment 119868
proposed patch

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

Nice progress! I think we need another iteration, but this is much better already :)

&gt; Source/WebKit2/Shared/NativeWebTouchEvent.h:49
&gt; -    const QTouchEvent m_nativeEvent;
&gt; +    const QTouchEvent* m_nativeEvent;

I don&apos;t think that this is going to work. If the web page has touch event listeners, then touch events received in the ui process will be also sent to the web process. Once the event has been processed there, doneWithTouchEvent will be called on the uiclient, with the a copy of the original NativeWebTouchEvent saved earlier and nativeEvent() will be called in QtWebPageEventHandler::doneWithTouchEvent(). Note that the call on the uiclient is asynchronous with respect to the qt touch event handler.

As you can see, this mechanism relies on the ability to safely create _copies_ of NativeWebTouchEvent instances, which breaks after this change, because the point that is then stored becomes dangling as soon as we return from the original Qt touch event handler function.

&gt; Source/WebKit2/Shared/qt/WebEventFactoryQt.cpp:188
&gt; -    Vector&lt;WebPlatformTouchPoint&gt; m_touchPoints;
&gt; +    Vector&lt;WebPlatformTouchPoint, 6&gt; m_touchPoints;

I appreciate this part :)

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebpage.cpp:36
&gt; +static inline bool isValid(QSizeF size)
&gt; +{
&gt; +    return !size.isNull() &amp;&amp; size.isValid();
&gt; +}

This function makes the code hard to read by subtly changing the &quot;meaning&quot; of validity for QSizeF.

You can write

   if (size.isValid())

and with your function in the same file you can write

   if (isValid(size))

and it is _totally_ unclear what the difference between the two is.

AFAICS what you&apos;re after is !isEmpty():

   if (!size.isEmpty())

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebpage.cpp:248
&gt; +    if (!isValid(scaledSize))
&gt; +        return;

Is there any particular reason to keep the item at its old size in case the new size is empty?

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebpage.cpp:251
&gt; +    update();

Hmm, are you sure that a call to QQuickItem::update() is needed here?

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebpage.cpp:271
&gt; +    ASSERT(0 &lt; scale);

Please use ASSERT(scale &gt; 0) - we usually put the constant on the right hand side and the variable on the left.

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebpage.cpp:284
&gt; +    qreal unScale = 1 / d-&gt;renderingScale;

I think we would rather write

    qreal unScale = 1. / d-&gt;renderingScale;

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebpage.cpp:295
&gt; +    return toItemTransform;

I wonder if it would be easier to write

return QTransform(scale, 0, 0, 0, scale, 0, x(), y(), 1);

After all this function is called a lot.

What do you think?

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp:478
&gt;      useTraditionalDesktopBehaviour = enable;
&gt; +    pageView-&gt;setUsesTraditionalDesktopBehaviour(enable);

Hmm, would it perhaps make sense to remove the boolean from QQuickWebViewPrivate altogether? I&apos;m not a fan of duplicating state variables :)

&gt; Source/WebKit2/UIProcess/qt/QtWebPageEventHandler.cpp:176
&gt; -        &amp;&amp; (ev-&gt;pos() - m_lastClick).manhattanLength() &lt; qApp-&gt;styleHints()-&gt;startDragDistance()) {
&gt; +        &amp;&amp; (webPagePoint.toPoint() - m_lastClick).manhattanLength() &lt; qApp-&gt;styleHints()-&gt;startDragDistance()) {

I think you could save yourself the toPoint() rounding by simply changing the type of m_lastClick to a QPointF.

&gt; Source/WebKit2/UIProcess/qt/QtWebPageEventHandler.cpp:403
&gt; -    ev-&gt;ignore();
&gt; +    event-&gt;ignore();

Nice catch :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524505</commentid>
    <comment_count>7</comment_count>
      <attachid>119868</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-12-20 02:19:39 -0800</bug_when>
    <thetext>Comment on attachment 119868
proposed patch

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

&gt; Source/WebKit2/ChangeLog:14
&gt; +        Thus the page item&apos;s coordiante system is no longer a direct representation

coordiante? coordinate!

&gt; Source/WebKit2/Shared/NativeWebMouseEvent.h:52
&gt; +    explicit NativeWebMouseEvent(QMouseEvent*, const QTransform&amp; toWebCoordinates, int eventClickCount);

toWebCoordinates is a bad name.

&gt; Source/WebKit2/Shared/qt/WebEventFactoryQt.cpp:110
&gt; +WebMouseEvent WebEventFactory::createWebMouseEvent(QMouseEvent* event, const QTransform&amp; toWebCoordinates, int eventClickCount)

I believe it is called the css coordinate system. Also what about the name fromItemTransform ?

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebpage.cpp:62
&gt; +    if (d-&gt;useTraditionalDesktopBehaviour &amp;&amp; newGeometry.size() != oldGeometry.size())

I would do a 

if (d-&gt; ...Behavior)
   return;

if (newGeom...

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebpage.cpp:243
&gt; +void QQuickWebPage::updateSize()

Souldn&apos;t this go into the private?

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebpage.cpp:254
&gt; +void QQuickWebPage::setContentSize(const QSizeF&amp; size)

And this?

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebpage.cpp:282
&gt; +QTransform QQuickWebPage::transformFromItem() const

QQuick uses

QTransform    itemTransform ( QQuickItem *, bool * ) const

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebpage.cpp:284
&gt; +    qreal unScale = 1 / d-&gt;renderingScale;

reverseScale?

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebpage.cpp:290
&gt; +QTransform QQuickWebPage::transformToItem() const

Can&apos;t you just have a itemTransform? and uses .inverted?

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebpage_p_p.h:55
&gt; +    bool useTraditionalDesktopBehaviour : 1;

Does that really pack anything?

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp:262
&gt; +    const QRectF visibleRectInWebCoordinates = q-&gt;mapRectToWebCoordinates(q-&gt;boundingRect()).intersected(pageView-&gt;boundingRect());

CSSCoordinates?

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp:775
&gt; +QPointF QQuickWebView::mapToWebCoordinates(const QPointF&amp; pointInViewCoordinates) const

As this is the view, I think mapToWebContent is more clear. There is no web coordinates and the content can be scaled as well, ie a mainframe can have a css scale.

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebview_p.h:92
&gt; +    QPointF mapToWebCoordinates(const QPointF&amp; pointInViewCoordinates) const;
&gt; +    QRectF mapRectToWebCoordinates(const QRectF&amp; rectInViewCoordiantes) const;
&gt; +    QPointF mapFromWebCoordinates(const QPointF&amp; pointInWebCoordinates) const;
&gt; +    QRectF mapRectFromWebCoordinates(const QRectF&amp; rectInWebCoordiantes) const;

You have some serious wrong spelling there. I think the arguments are unneeded. You are in the View class and with proper method names, this is all clear.

&gt; Source/WebKit2/UIProcess/qt/QtViewportInteractionEngine.cpp:180
&gt; +    m_content-&gt;setRenderingScale(itemScale);

setContentScale?

&gt; Source/WebKit2/UIProcess/qt/QtViewportInteractionEngine.cpp:497
&gt; +void QtViewportInteractionEngine::panGestureEnded(const QPointF&amp; touchPointInViewportCoordinates, qint64 eventTimestampMillis)

I think viewportTouchPoint is clear enough. I think this could be cleaned up everywhere

&gt; Source/WebKit2/UIProcess/qt/QtViewportInteractionEngine.h:139
&gt; +    QQuickWebPage* const m_content;

I think we should soon rename this to m_pageItem or so... and m_viewItem... this is too confusing when reading the code

&gt; Source/WebKit2/UIProcess/qt/QtWebPageEventHandler.cpp:164
&gt; +    m_webPageProxy-&gt;handleMouseEvent(NativeWebMouseEvent(ev, toWebCoordinates, /*eventClickCount*/ 0));

Wouldn&apos;t something like the following be more understandable

m_webPageProxy-&gt;handleMouseEvent(NativeWebMouseEvent(ev, itemTransform, /*eventClickCount*/ 0));

It is ok to understand that an event might already have have a transform from its owner.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524586</commentid>
    <comment_count>8</comment_count>
      <attachid>120023</attachid>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2011-12-20 06:44:13 -0800</bug_when>
    <thetext>Created attachment 120023
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524591</commentid>
    <comment_count>9</comment_count>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2011-12-20 06:53:48 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 119868 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=119868&amp;action=review
&gt; 
&gt; Nice progress! I think we need another iteration, but this is much better already :)
&gt; 
&gt; &gt; Source/WebKit2/Shared/NativeWebTouchEvent.h:49
&gt; &gt; -    const QTouchEvent m_nativeEvent;
&gt; &gt; +    const QTouchEvent* m_nativeEvent;
&gt; 
&gt; I don&apos;t think that this is going to work.
Fixed.

&gt; &gt; Source/WebKit2/UIProcess/API/qt/qquickwebpage.cpp:36
&gt; &gt; +static inline bool isValid(QSizeF size)
&gt; &gt; +{
&gt; &gt; +    return !size.isNull() &amp;&amp; size.isValid();
&gt; &gt; +}
&gt; 
&gt; AFAICS what you&apos;re after is !isEmpty():
Fixed.

&gt; &gt; Source/WebKit2/UIProcess/API/qt/qquickwebpage.cpp:248
&gt; &gt; +    if (!isValid(scaledSize))
&gt; &gt; +        return;
&gt; 
&gt; Is there any particular reason to keep the item at its old size in case the new size is empty?

This is a redundant check, removed.

&gt; &gt; Source/WebKit2/UIProcess/API/qt/qquickwebpage.cpp:251
&gt; &gt; +    update();
&gt; 
&gt; Hmm, are you sure that a call to QQuickItem::update() is needed here?

Not needed, removed.
 
&gt; &gt; Source/WebKit2/UIProcess/API/qt/qquickwebpage.cpp:271
&gt; &gt; +    ASSERT(0 &lt; scale);
&gt; 
&gt; Please use ASSERT(scale &gt; 0) - we usually put the constant on the right hand side and the variable on the left.

Done.

&gt; 
&gt; I wonder if it would be easier to write
&gt; 
&gt; return QTransform(scale, 0, 0, 0, scale, 0, x(), y(), 1);
&gt; 
&gt; After all this function is called a lot.
&gt; 
&gt; What do you think?
Right. Done.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp:478
&gt; &gt;      useTraditionalDesktopBehaviour = enable;
&gt; &gt; +    pageView-&gt;setUsesTraditionalDesktopBehaviour(enable);
&gt; 
&gt; Hmm, would it perhaps make sense to remove the boolean from QQuickWebViewPrivate altogether? I&apos;m not a fan of duplicating state variables :)
Removed.

&gt; 
&gt; I think you could save yourself the toPoint() rounding by simply changing the type of m_lastClick to a QPointF.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524593</commentid>
    <comment_count>10</comment_count>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2011-12-20 07:06:12 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 119868 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=119868&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/ChangeLog:14
&gt; &gt; +        Thus the page item&apos;s coordiante system is no longer a direct representation
&gt; 
&gt; coordiante? coordinate!
D&apos;oh, coordiantes were all over the place :)
Thanks.

&gt; 
&gt; &gt; Source/WebKit2/Shared/NativeWebMouseEvent.h:52
&gt; &gt; +    explicit NativeWebMouseEvent(QMouseEvent*, const QTransform&amp; toWebCoordinates, int eventClickCount);
&gt; 
&gt; toWebCoordinates is a bad name.
Renamed to fromItemTransform.
 
&gt; I would do a 
&gt; 
&gt; if (d-&gt; ...Behavior)
&gt;    return;
&gt; 
&gt; if (newGeom...
Done.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/qt/qquickwebpage.cpp:243
&gt; &gt; +void QQuickWebPage::updateSize()
&gt; 
&gt; Souldn&apos;t this go into the private?
Done.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/qt/qquickwebpage.cpp:254
&gt; &gt; +void QQuickWebPage::setContentSize(const QSizeF&amp; size)
&gt; 
&gt; And this?
This is also used in the view, so it might be better here.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/qt/qquickwebpage.cpp:282
&gt; &gt; +QTransform QQuickWebPage::transformFromItem() const
&gt; 
&gt; QQuick uses
&gt; 
&gt; QTransform    itemTransform ( QQuickItem *, bool * ) const
I left this transformFromItem, I think itemTransform would make it confusing, since the target is not an item, To/From Item makes it clear.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/qt/qquickwebpage.cpp:290
&gt; &gt; +QTransform QQuickWebPage::transformToItem() const
&gt; 
&gt; Can&apos;t you just have a itemTransform? and uses .inverted?
Since inverted() does a matrix inversion, I was afraid it could be slower than creating it, but looks like QTransform has fast paths for simple cases.

&gt; &gt; Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp:262
&gt; &gt; +    const QRectF visibleRectInWebCoordinates = q-&gt;mapRectToWebCoordinates(q-&gt;boundingRect()).intersected(pageView-&gt;boundingRect());
&gt; 
&gt; CSSCoordinates?
Renamed.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp:775
&gt; &gt; +QPointF QQuickWebView::mapToWebCoordinates(const QPointF&amp; pointInViewCoordinates) const
&gt; 
&gt; As this is the view, I think mapToWebContent is more clear. There is no web coordinates and the content can be scaled as well, ie a mainframe can have a css scale.
&gt; ...
&gt; You have some serious wrong spelling there.
Renamed and fixed typos.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/qt/QtViewportInteractionEngine.cpp:180
&gt; &gt; +    m_content-&gt;setRenderingScale(itemScale);
&gt; 
&gt; setContentScale?
Renamed.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/qt/QtViewportInteractionEngine.cpp:497
&gt; &gt; +void QtViewportInteractionEngine::panGestureEnded(const QPointF&amp; touchPointInViewportCoordinates, qint64 eventTimestampMillis)
&gt; 
&gt; I think viewportTouchPoint is clear enough. I think this could be cleaned up everywhere
Renamed.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/qt/QtViewportInteractionEngine.h:139
&gt; &gt; +    QQuickWebPage* const m_content;
&gt; 
&gt; I think we should soon rename this to m_pageItem or so... and m_viewItem... this is too confusing when reading the code
Right, I plan to do this in a follow-up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525217</commentid>
    <comment_count>11</comment_count>
      <attachid>120023</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-12-21 04:02:17 -0800</bug_when>
    <thetext>Comment on attachment 120023
proposed patch

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

Maybe simon has comments

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp:1002
&gt; +    if (ev-&gt;type() == QEvent::InputMethod)
&gt; +        return false; // This is necessary to avoid an endless loop in connection with QQuickItem::event().

What about looking into this? :) *hint*

&gt; Source/WebKit2/UIProcess/qt/QtWebPageEventHandler.cpp:162
&gt; +    lastPos = webPagePoint;

webContentPoint?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529475</commentid>
    <comment_count>12</comment_count>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2012-01-04 05:26:21 -0800</bug_when>
    <thetext>Committed r104028: &lt;http://trac.webkit.org/changeset/104028&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529477</commentid>
    <comment_count>13</comment_count>
      <attachid>120023</attachid>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2012-01-04 05:28:46 -0800</bug_when>
    <thetext>Comment on attachment 120023
proposed patch

Clearing flags.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529502</commentid>
    <comment_count>14</comment_count>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2012-01-04 06:39:44 -0800</bug_when>
    <thetext>Reopen and investigate the impact on desktop behaviour which is used by WTR.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>532094</commentid>
    <comment_count>15</comment_count>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2012-01-09 04:35:59 -0800</bug_when>
    <thetext>Committed r104450: &lt;http://trac.webkit.org/changeset/104450&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119622</attachid>
            <date>2011-12-16 09:35:43 -0800</date>
            <delta_ts>2011-12-19 08:39:51 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>0001-Qt-WK2-Pinch-zoom-should-affect-the-page-size.patch</filename>
            <type>text/plain</type>
            <size>61197</size>
            <attacher name="Andras Becsi">abecsi</attacher>
            
              <data encoding="base64">RnJvbSA2MjlkOGRmMTc5MjI1YjkwNTk0ZGQ2YTQ3YmQ5MGMwZjM1YjQwNDdiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyYXMgQmVjc2kgPGFuZHJhcy5iZWNzaUBub2tpYS5jb20+
CkRhdGU6IEZyaSwgMTYgRGVjIDIwMTEgMTg6MzA6MjMgKzAxMDAKU3ViamVjdDogW1BBVENIXSBb
UXRdW1dLMl0gUGluY2ggem9vbSBzaG91bGQgYWZmZWN0IHRoZSBwYWdlIHNpemUKCi0tLQogU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTIwICsr
KysrKysrKysrKysKIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJNb3VzZUV2ZW50Lmgg
ICAgICAgIHwgICAgMiArLQogU291cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2ZVdlYlRvdWNoRXZl
bnQuaCAgICAgICAgfCAgICA2ICstCiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViV2hl
ZWxFdmVudC5oICAgICAgICB8ICAgIDIgKy0KIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9xdC9OYXRp
dmVXZWJNb3VzZUV2ZW50UXQuY3BwIHwgICAgNCArLQogU291cmNlL1dlYktpdDIvU2hhcmVkL3F0
L05hdGl2ZVdlYlRvdWNoRXZlbnRRdC5jcHAgfCAgICA2ICstCiBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvcXQvTmF0aXZlV2ViV2hlZWxFdmVudFF0LmNwcCB8ICAgIDQgKy0KIFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9xdC9XZWJFdmVudEZhY3RvcnlRdC5jcHAgICAgIHwgICAxMyArLQogU291cmNlL1dl
YktpdDIvU2hhcmVkL3F0L1dlYkV2ZW50RmFjdG9yeVF0LmggICAgICAgfCAgICA2ICstCiBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnBhZ2UuY3BwICB8ICAxODEgKysr
KysrKysrLS0tLS0tLS0tLS0KIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNr
d2VicGFnZV9wLmggIHwgICAzNCArKy0tCiAuLi4vV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Fx
dWlja3dlYnBhZ2VfcF9wLmggICB8ICAgIDcgKy0KIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvcXQvcXF1aWNrd2Vidmlldy5jcHAgIHwgIDE2NSArKysrKysrKysrKysrKysrLS0KIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wLmggIHwgICAyMyArKysK
IC4uLi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYnZpZXdwb3J0aW5mby5jcHAgIHwgICAg
MiArLQogLi4uL3F0L3Rlc3RzL3FxdWlja3dlYnZpZXcvdHN0X3FxdWlja3dlYnZpZXcuY3BwICAg
fCAgICAyICstCiAuLi4vVUlQcm9jZXNzL3F0L1F0UGluY2hHZXN0dXJlUmVjb2duaXplci5jcHAg
ICAgICB8ICAgIDQgKy0KIC4uLi9VSVByb2Nlc3MvcXQvUXRWaWV3cG9ydEludGVyYWN0aW9uRW5n
aW5lLmNwcCAgIHwgICA2NCArKysrLS0tLQogLi4uL1VJUHJvY2Vzcy9xdC9RdFZpZXdwb3J0SW50
ZXJhY3Rpb25FbmdpbmUuaCAgICAgfCAgIDIwICsrLQogLi4uL1dlYktpdDIvVUlQcm9jZXNzL3F0
L1F0V2ViUGFnZUV2ZW50SGFuZGxlci5jcHAgfCAgIDU4ICsrKysrLS0KIC4uLi9XZWJLaXQyL1VJ
UHJvY2Vzcy9xdC9RdFdlYlBhZ2VFdmVudEhhbmRsZXIuaCAgIHwgICAgNCArLQogMjEgZmlsZXMg
Y2hhbmdlZCwgNTAyIGluc2VydGlvbnMoKyksIDIyNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5k
ZXggNGEyYzNiYy4uNzRjNGFlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyMyBAQAorMjAxMS0x
Mi0xNiAgQW5kcmFzIEJlY3NpICA8YW5kcmFzLmJlY3NpQG5va2lhLmNvbT4KKworICAgICAgICBb
UXRdW1dLMl0gUGluY2ggem9vbSBzaG91bGQgYWZmZWN0IHRoZSBwYWdlIHNpemUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgY3VycmVudCBpbXBs
ZW1lbnRhdGlvbiB1c2VzIHRoZSBzY2FsZSBwcm9wZXJ0eSBvZiB0aGUgUVF1aWNrV2ViUGFnZQor
ICAgICAgICB0byBzY2FsZSB0aGUgcGFnZSBpbiByZXNwb25zZSB0byBwaW5jaCBnZXN0dXJlcy4K
KyAgICAgICAgSG93ZXZlciBmb3IgbGF5b3V0IGFuZCBhbmNob3JpbmcgdG8gd29yayBjb3JyZWN0
bHkgaW4gUU1MIHBpbmNoaW5nIG5lZWRzCisgICAgICAgIHRvIGNoYW5nZSB0aGUgcGFnZSBzaXpl
LgorICAgICAgICBUaGlzIHBhdGNoIGFwcGxpZXMgdGhlIHBpbmNoIHNjYWxlIHRvIHRoZSBwYWdl
IHNpemUgYW5kIHRvIHRoZSB0cmFuc2Zvcm1hdGlvbgorICAgICAgICBtYXRyaXggb2YgdGhlIGRy
YXdpbmcgYXJlYS4KKyAgICAgICAgVGh1cyB0aGUgcGFnZSBpdGVtcyBjb29yZGlhbnRlIHN5c3Rl
bSBpcyBubyBsb25nZXIgYSBkaXJlY3QgcmVwcmVzZW50YXRpb24KKyAgICAgICAgb2YgdGhlIFdl
YkNvcmU6OlBhZ2UgY29vcmRpbmF0ZSBzeXN0ZW0gYW5kIGl0IGlzIG5vIGxvbmdlciBzdWl0YWJs
ZSBhcworICAgICAgICBhIGluZXJ0aWFsIGZyYW1lIG9mIHJlZmVyZW5jZSBmb3IgaW5wdXQgZXZl
bnRzLiBUaGUgZXZlbnQgcHJvcGFnYXRpb24gaGFkCisgICAgICAgIHRvIGJlIG1vdmVkIHRvIHRo
ZSBRUXVpY2tXZWJWaWV3IGFuZCB0aGUgcG9zaXRpb25zIHRyYW5zbGF0ZWQgdG8gY29udGVudAor
ICAgICAgICBjb29yZGluYXRlcyB3aGVuIHdlIGNyZWF0ZSBOYXRpdmVXZWJFdmVudHMuCisKKyAg
ICAgICAgKiBTaGFyZWQvTmF0aXZlV2ViTW91c2VFdmVudC5oOgorICAgICAgICAqIFNoYXJlZC9O
YXRpdmVXZWJUb3VjaEV2ZW50Lmg6CisgICAgICAgIChXZWJLaXQ6Ok5hdGl2ZVdlYlRvdWNoRXZl
bnQ6Om5hdGl2ZUV2ZW50KToKKyAgICAgICAgKiBTaGFyZWQvTmF0aXZlV2ViV2hlZWxFdmVudC5o
OgorICAgICAgICAqIFNoYXJlZC9xdC9OYXRpdmVXZWJNb3VzZUV2ZW50UXQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpOYXRpdmVXZWJNb3VzZUV2ZW50OjpOYXRpdmVXZWJNb3VzZUV2ZW50KToKKyAg
ICAgICAgKiBTaGFyZWQvcXQvTmF0aXZlV2ViVG91Y2hFdmVudFF0LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmF0aXZlV2ViVG91Y2hFdmVudDo6TmF0aXZlV2ViVG91Y2hFdmVudCk6CisgICAgICAg
ICogU2hhcmVkL3F0L05hdGl2ZVdlYldoZWVsRXZlbnRRdC5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5hdGl2ZVdlYldoZWVsRXZlbnQ6Ok5hdGl2ZVdlYldoZWVsRXZlbnQpOgorICAgICAgICAqIFNo
YXJlZC9xdC9XZWJFdmVudEZhY3RvcnlRdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkV2ZW50
RmFjdG9yeTo6Y3JlYXRlV2ViTW91c2VFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYkV2ZW50
RmFjdG9yeTo6Y3JlYXRlV2ViV2hlZWxFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYkV2ZW50
RmFjdG9yeTo6Y3JlYXRlV2ViVG91Y2hFdmVudCk6CisgICAgICAgICogU2hhcmVkL3F0L1dlYkV2
ZW50RmFjdG9yeVF0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJwYWdl
LmNwcDoKKyAgICAgICAgKGlzVmFsaWQpOgorICAgICAgICAoUVF1aWNrV2ViUGFnZTo6Z2VvbWV0
cnlDaGFuZ2VkKToKKyAgICAgICAgKFFRdWlja1dlYlBhZ2VQcml2YXRlOjpRUXVpY2tXZWJQYWdl
UHJpdmF0ZSk6CisgICAgICAgIChRUXVpY2tXZWJQYWdlUHJpdmF0ZTo6aW5pdGlhbGl6ZSk6Cisg
ICAgICAgIChRUXVpY2tXZWJQYWdlUHJpdmF0ZTo6cGFpbnRUb0N1cnJlbnRHTENvbnRleHQpOgor
ICAgICAgICAoUVF1aWNrV2ViUGFnZTo6c2V0VXNlc1RyYWRpdGlvbmFsRGVza3RvcEJlaGF2aW91
cik6CisgICAgICAgIChRUXVpY2tXZWJQYWdlOjpldmVudEhhbmRsZXIpOgorICAgICAgICAoUVF1
aWNrV2ViUGFnZTo6dXBkYXRlU2l6ZSk6CisgICAgICAgIChRUXVpY2tXZWJQYWdlOjpzZXRDb250
ZW50U2l6ZSk6CisgICAgICAgIChRUXVpY2tXZWJQYWdlOjpjb250ZW50U2l6ZSk6CisgICAgICAg
IChRUXVpY2tXZWJQYWdlOjpzZXRSZW5kZXJpbmdTY2FsZSk6CisgICAgICAgIChRUXVpY2tXZWJQ
YWdlOjpyZW5kZXJpbmdTY2FsZSk6CisgICAgICAgIChRUXVpY2tXZWJQYWdlOjp0cmFuc2Zvcm1G
cm9tSXRlbSk6CisgICAgICAgIChRUXVpY2tXZWJQYWdlOjp0cmFuc2Zvcm1Ub0l0ZW0pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2VicGFnZV9wLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJwYWdlX3BfcC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvcXQvcXF1aWNrd2Vidmlldy5jcHA6CisgICAgICAgIChRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6
aW5pdGlhbGl6ZSk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6ZW5hYmxlTW91c2VF
dmVudHMpOgorICAgICAgICAoUVF1aWNrV2ViVmlld1ByaXZhdGU6OmRpc2FibGVNb3VzZUV2ZW50
cyk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6ZGlkQ2hhbmdlQ29udGVudHNTaXpl
KToKKyAgICAgICAgKFFRdWlja1dlYlZpZXdQcml2YXRlOjp1cGRhdGVWaXNpYmxlQ29udGVudFJl
Y3RBbmRTY2FsZSk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6UG9zdFRyYW5zaXRp
b25TdGF0ZTo6YXBwbHkpOgorICAgICAgICAoUVF1aWNrV2ViVmlld1ByaXZhdGU6OnNldFVzZVRy
YWRpdGlvbmFsRGVza3RvcEJlaGF2aW91cik6CisgICAgICAgIChRUXVpY2tXZWJWaWV3OjptYXBU
b1dlYkNvb3JkaW5hdGVzKToKKyAgICAgICAgKFFRdWlja1dlYlZpZXc6Om1hcFJlY3RUb1dlYkNv
b3JkaW5hdGVzKToKKyAgICAgICAgKFFRdWlja1dlYlZpZXc6Om1hcEZyb21XZWJDb29yZGluYXRl
cyk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3OjptYXBSZWN0RnJvbVdlYkNvb3JkaW5hdGVzKToK
KyAgICAgICAgKFFRdWlja1dlYlZpZXc6OmtleVByZXNzRXZlbnQpOgorICAgICAgICAoUVF1aWNr
V2ViVmlldzo6a2V5UmVsZWFzZUV2ZW50KToKKyAgICAgICAgKFFRdWlja1dlYlZpZXc6OmlucHV0
TWV0aG9kRXZlbnQpOgorICAgICAgICAoUVF1aWNrV2ViVmlldzo6Zm9jdXNJbkV2ZW50KToKKyAg
ICAgICAgKFFRdWlja1dlYlZpZXc6OmZvY3VzT3V0RXZlbnQpOgorICAgICAgICAoUVF1aWNrV2Vi
Vmlldzo6dG91Y2hFdmVudCk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3Ojptb3VzZVByZXNzRXZl
bnQpOgorICAgICAgICAoUVF1aWNrV2ViVmlldzo6bW91c2VNb3ZlRXZlbnQpOgorICAgICAgICAo
UVF1aWNrV2ViVmlldzo6bW91c2VSZWxlYXNlRXZlbnQpOgorICAgICAgICAoUVF1aWNrV2ViVmll
dzo6bW91c2VEb3VibGVDbGlja0V2ZW50KToKKyAgICAgICAgKFFRdWlja1dlYlZpZXc6OndoZWVs
RXZlbnQpOgorICAgICAgICAoUVF1aWNrV2ViVmlldzo6aG92ZXJFbnRlckV2ZW50KToKKyAgICAg
ICAgKFFRdWlja1dlYlZpZXc6OmhvdmVyTW92ZUV2ZW50KToKKyAgICAgICAgKFFRdWlja1dlYlZp
ZXc6OmhvdmVyTGVhdmVFdmVudCk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3OjpkcmFnTW92ZUV2
ZW50KToKKyAgICAgICAgKFFRdWlja1dlYlZpZXc6OmRyYWdFbnRlckV2ZW50KToKKyAgICAgICAg
KFFRdWlja1dlYlZpZXc6OmRyYWdMZWF2ZUV2ZW50KToKKyAgICAgICAgKFFRdWlja1dlYlZpZXc6
OmRyb3BFdmVudCk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3OjpldmVudCk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3AuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL3F0L3F3ZWJ2aWV3cG9ydGluZm8uY3BwOgorICAgICAgICAoUVdlYlZpZXdwb3J0SW5mbzo6
Y29udGVudHNTaXplKToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUXRQaW5jaEdlc3R1cmVSZWNv
Z25pemVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UXRQaW5jaEdlc3R1cmVSZWNvZ25pemVyOjpy
ZWNvZ25pemUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9RdFZpZXdwb3J0SW50ZXJhY3Rpb25F
bmdpbmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6
OlF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZSk6CisgICAgICAgIChXZWJLaXQ6OlF0Vmlld3Bv
cnRJbnRlcmFjdGlvbkVuZ2luZTo6c2V0SXRlbVJlY3RWaXNpYmxlKToKKyAgICAgICAgKFdlYktp
dDo6UXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjphbmltYXRlSXRlbVJlY3RWaXNpYmxlKToK
KyAgICAgICAgKFdlYktpdDo6UXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpldmVudCk6Cisg
ICAgICAgIChXZWJLaXQ6OlF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6d2hlZWxFdmVudCk6
CisgICAgICAgIChXZWJLaXQ6OlF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6cGFnZVBvc2l0
aW9uUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2lu
ZTo6Y29tcHV0ZVBvc1JhbmdlRm9ySXRlbUF0U2NhbGUpOgorICAgICAgICAoV2ViS2l0OjpRdFZp
ZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OmVuc3VyZUNvbnRlbnRXaXRoaW5WaWV3cG9ydEJvdW5k
YXJ5KToKKyAgICAgICAgKFdlYktpdDo6UXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjphcHBs
eUNvbnN0cmFpbnRzKToKKyAgICAgICAgKFdlYktpdDo6UXRWaWV3cG9ydEludGVyYWN0aW9uRW5n
aW5lOjpjdXJyZW50Q1NTU2NhbGUpOgorICAgICAgICAoV2ViS2l0OjpRdFZpZXdwb3J0SW50ZXJh
Y3Rpb25FbmdpbmU6OnBhbkdlc3R1cmVTdGFydGVkKToKKyAgICAgICAgKFdlYktpdDo6UXRWaWV3
cG9ydEludGVyYWN0aW9uRW5naW5lOjpwYW5HZXN0dXJlUmVxdWVzdFVwZGF0ZSk6CisgICAgICAg
IChXZWJLaXQ6OlF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6cGFuR2VzdHVyZUVuZGVkKToK
KyAgICAgICAgKFdlYktpdDo6UXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpwaW5jaEdlc3R1
cmVTdGFydGVkKToKKyAgICAgICAgKFdlYktpdDo6UXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5l
OjpwaW5jaEdlc3R1cmVSZXF1ZXN0VXBkYXRlKToKKyAgICAgICAgKFdlYktpdDo6UXRWaWV3cG9y
dEludGVyYWN0aW9uRW5naW5lOjpzY2FsZUNvbnRlbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9x
dC9RdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQv
UXRXZWJQYWdlRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFF0V2ViUGFnZUV2ZW50SGFuZGxl
cjo6UXRXZWJQYWdlRXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFF0V2ViUGFnZUV2ZW50SGFuZGxl
cjo6aGFuZGxlTW91c2VNb3ZlRXZlbnQpOgorICAgICAgICAoUXRXZWJQYWdlRXZlbnRIYW5kbGVy
OjpoYW5kbGVNb3VzZVByZXNzRXZlbnQpOgorICAgICAgICAoUXRXZWJQYWdlRXZlbnRIYW5kbGVy
OjpoYW5kbGVNb3VzZVJlbGVhc2VFdmVudCk6CisgICAgICAgIChRdFdlYlBhZ2VFdmVudEhhbmRs
ZXI6OmhhbmRsZVdoZWVsRXZlbnQpOgorICAgICAgICAoUXRXZWJQYWdlRXZlbnRIYW5kbGVyOjpo
YW5kbGVIb3ZlckxlYXZlRXZlbnQpOgorICAgICAgICAoUXRXZWJQYWdlRXZlbnRIYW5kbGVyOjpo
YW5kbGVIb3Zlck1vdmVFdmVudCk6CisgICAgICAgIChRdFdlYlBhZ2VFdmVudEhhbmRsZXI6Omhh
bmRsZURyYWdFbnRlckV2ZW50KToKKyAgICAgICAgKFF0V2ViUGFnZUV2ZW50SGFuZGxlcjo6aGFu
ZGxlRHJhZ01vdmVFdmVudCk6CisgICAgICAgIChRdFdlYlBhZ2VFdmVudEhhbmRsZXI6OmhhbmRs
ZURyb3BFdmVudCk6CisgICAgICAgIChRdFdlYlBhZ2VFdmVudEhhbmRsZXI6OmhhbmRsZVNpbmds
ZVRhcEV2ZW50KToKKyAgICAgICAgKFF0V2ViUGFnZUV2ZW50SGFuZGxlcjo6aGFuZGxlRG91Ymxl
VGFwRXZlbnQpOgorICAgICAgICAoUXRXZWJQYWdlRXZlbnRIYW5kbGVyOjp0b3VjaEV2ZW50KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlRXZlbnRIYW5kbGVyLmg6CisKIDIwMTEt
MTItMTYgIE1pY2hhZWwgQnJ1bmluZyAgPG1pY2hhZWwuYnJ1bmluZ0Bub2tpYS5jb20+CiAKICAg
ICAgICAgW3F0XVt3azJdIFZpZXdwb3J0IGluZm8gcGFuZWwgc2hvd3Mgd3JvbmcgY3VycmVudCBz
Y2FsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2ZVdlYk1vdXNlRXZl
bnQuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJNb3VzZUV2ZW50LmgKaW5kZXgg
YTczZjk1OC4uNDhiNjU2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2
ZVdlYk1vdXNlRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViTW91
c2VFdmVudC5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICNlbGlmIFBMQVRGT1JNKFdJTikK
ICAgICBOYXRpdmVXZWJNb3VzZUV2ZW50KEhXTkQsIFVJTlQgbWVzc2FnZSwgV1BBUkFNLCBMUEFS
QU0sIGJvb2wpOwogI2VsaWYgUExBVEZPUk0oUVQpCi0gICAgZXhwbGljaXQgTmF0aXZlV2ViTW91
c2VFdmVudChRTW91c2VFdmVudCosIGludCk7CisgICAgZXhwbGljaXQgTmF0aXZlV2ViTW91c2VF
dmVudChRTW91c2VFdmVudCosIGNvbnN0IFFQb2ludEYmIHdlYlBhZ2VQb2ludCwgaW50KTsKICNl
bGlmIFBMQVRGT1JNKEdUSykKICAgICBOYXRpdmVXZWJNb3VzZUV2ZW50KGNvbnN0IE5hdGl2ZVdl
Yk1vdXNlRXZlbnQmKTsKICAgICBOYXRpdmVXZWJNb3VzZUV2ZW50KEdka0V2ZW50KiwgaW50KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJUb3VjaEV2ZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViVG91Y2hFdmVudC5oCmluZGV4IDM2NTJk
ZDcuLjJlYTg2NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJU
b3VjaEV2ZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2ZVdlYlRvdWNoRXZl
bnQuaApAQCAtMzcsMTYgKzM3LDE2IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgTmF0aXZl
V2ViVG91Y2hFdmVudCA6IHB1YmxpYyBXZWJUb3VjaEV2ZW50IHsKIHB1YmxpYzoKICNpZiBQTEFU
Rk9STShRVCkKLSAgICBleHBsaWNpdCBOYXRpdmVXZWJUb3VjaEV2ZW50KGNvbnN0IFFUb3VjaEV2
ZW50Kik7CisgICAgZXhwbGljaXQgTmF0aXZlV2ViVG91Y2hFdmVudChjb25zdCBRVG91Y2hFdmVu
dCosIGNvbnN0IFFMaXN0PFFQb2ludEY+JiB3ZWJQYWdlUG9pbnRzKTsKICNlbmRpZgogCiAjaWYg
UExBVEZPUk0oUVQpCi0gICAgY29uc3QgUVRvdWNoRXZlbnQqIG5hdGl2ZUV2ZW50KCkgY29uc3Qg
eyByZXR1cm4gJm1fbmF0aXZlRXZlbnQ7IH0KKyAgICBjb25zdCBRVG91Y2hFdmVudCogbmF0aXZl
RXZlbnQoKSBjb25zdCB7IHJldHVybiBtX25hdGl2ZUV2ZW50OyB9CiAjZW5kaWYKIAogcHJpdmF0
ZToKICNpZiBQTEFURk9STShRVCkKLSAgICBjb25zdCBRVG91Y2hFdmVudCBtX25hdGl2ZUV2ZW50
OworICAgIGNvbnN0IFFUb3VjaEV2ZW50KiBtX25hdGl2ZUV2ZW50OwogI2VuZGlmCiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViV2hlZWxFdmVudC5oIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2ZVdlYldoZWVsRXZlbnQuaAppbmRleCAwMzNhYjgw
Li5jM2IzNmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViV2hl
ZWxFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJXaGVlbEV2ZW50
LmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogI2VsaWYgUExBVEZPUk0oV0lOKQogICAgIE5h
dGl2ZVdlYldoZWVsRXZlbnQoSFdORCwgVUlOVCBtZXNzYWdlLCBXUEFSQU0sIExQQVJBTSk7CiAj
ZWxpZiBQTEFURk9STShRVCkKLSAgICBleHBsaWNpdCBOYXRpdmVXZWJXaGVlbEV2ZW50KFFXaGVl
bEV2ZW50Kik7CisgICAgZXhwbGljaXQgTmF0aXZlV2ViV2hlZWxFdmVudChRV2hlZWxFdmVudCos
IGNvbnN0IFFQb2ludEYmIHdlYlBhZ2VQb2ludCk7CiAjZWxpZiBQTEFURk9STShHVEspCiAgICAg
TmF0aXZlV2ViV2hlZWxFdmVudChjb25zdCBOYXRpdmVXZWJXaGVlbEV2ZW50Jik7CiAgICAgTmF0
aXZlV2ViV2hlZWxFdmVudChHZGtFdmVudCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL3F0L05hdGl2ZVdlYk1vdXNlRXZlbnRRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvcXQvTmF0aXZlV2ViTW91c2VFdmVudFF0LmNwcAppbmRleCBlZTczMWRlLi44MTY5MjkyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvcXQvTmF0aXZlV2ViTW91c2VFdmVudFF0
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvcXQvTmF0aXZlV2ViTW91c2VFdmVudFF0
LmNwcApAQCAtMzAsOCArMzAsOCBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotTmF0aXZlV2Vi
TW91c2VFdmVudDo6TmF0aXZlV2ViTW91c2VFdmVudChRTW91c2VFdmVudCogZXZlbnQsIGludCBl
dmVudENsaWNrQ291bnQpCi0gICAgOiBXZWJNb3VzZUV2ZW50KFdlYkV2ZW50RmFjdG9yeTo6Y3Jl
YXRlV2ViTW91c2VFdmVudChldmVudCwgZXZlbnRDbGlja0NvdW50KSkKK05hdGl2ZVdlYk1vdXNl
RXZlbnQ6Ok5hdGl2ZVdlYk1vdXNlRXZlbnQoUU1vdXNlRXZlbnQqIGV2ZW50LCBjb25zdCBRUG9p
bnRGJiB3ZWJQYWdlUG9pbnQsIGludCBldmVudENsaWNrQ291bnQpCisgICAgOiBXZWJNb3VzZUV2
ZW50KFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViTW91c2VFdmVudChldmVudCwgd2ViUGFnZVBv
aW50LCBldmVudENsaWNrQ291bnQpKQogICAgICwgbV9uYXRpdmVFdmVudChldmVudCkKIHsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9xdC9OYXRpdmVXZWJUb3VjaEV2ZW50
UXQuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL3F0L05hdGl2ZVdlYlRvdWNoRXZlbnRRdC5j
cHAKaW5kZXggMDY2MGJiYS4uOWM2ZTU4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL3F0L05hdGl2ZVdlYlRvdWNoRXZlbnRRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL3F0L05hdGl2ZVdlYlRvdWNoRXZlbnRRdC5jcHAKQEAgLTMwLDkgKzMwLDkgQEAKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKLU5hdGl2ZVdlYlRvdWNoRXZlbnQ6Ok5hdGl2ZVdlYlRvdWNoRXZl
bnQoY29uc3QgUVRvdWNoRXZlbnQqIGV2ZW50KQotICAgIDogV2ViVG91Y2hFdmVudChXZWJFdmVu
dEZhY3Rvcnk6OmNyZWF0ZVdlYlRvdWNoRXZlbnQoZXZlbnQpKQotICAgICwgbV9uYXRpdmVFdmVu
dCgqZXZlbnQpCitOYXRpdmVXZWJUb3VjaEV2ZW50OjpOYXRpdmVXZWJUb3VjaEV2ZW50KGNvbnN0
IFFUb3VjaEV2ZW50KiBldmVudCwgY29uc3QgUUxpc3Q8UVBvaW50Rj4mIHdlYlBhZ2VQb2ludHMp
CisgICAgOiBXZWJUb3VjaEV2ZW50KFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViVG91Y2hFdmVu
dChldmVudCwgd2ViUGFnZVBvaW50cykpCisgICAgLCBtX25hdGl2ZUV2ZW50KGV2ZW50KQogewog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvcXQvTmF0aXZlV2ViV2hlZWxF
dmVudFF0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9xdC9OYXRpdmVXZWJXaGVlbEV2ZW50
UXQuY3BwCmluZGV4IDVmZjIyNGEuLjdkNmE0ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9xdC9OYXRpdmVXZWJXaGVlbEV2ZW50UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9xdC9OYXRpdmVXZWJXaGVlbEV2ZW50UXQuY3BwCkBAIC0zMCw4ICszMCw4IEBACiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCi1OYXRpdmVXZWJXaGVlbEV2ZW50OjpOYXRpdmVXZWJXaGVl
bEV2ZW50KFFXaGVlbEV2ZW50KiBldmVudCkKLSAgICA6IFdlYldoZWVsRXZlbnQoV2ViRXZlbnRG
YWN0b3J5OjpjcmVhdGVXZWJXaGVlbEV2ZW50KGV2ZW50KSkKK05hdGl2ZVdlYldoZWVsRXZlbnQ6
Ok5hdGl2ZVdlYldoZWVsRXZlbnQoUVdoZWVsRXZlbnQqIGV2ZW50LCBjb25zdCBRUG9pbnRGJiB3
ZWJQYWdlUG9pbnQpCisgICAgOiBXZWJXaGVlbEV2ZW50KFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRl
V2ViV2hlZWxFdmVudChldmVudCwgd2ViUGFnZVBvaW50KSkKICAgICAsIG1fbmF0aXZlRXZlbnQo
ZXZlbnQpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvcXQvV2ViRXZl
bnRGYWN0b3J5UXQuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL3F0L1dlYkV2ZW50RmFjdG9y
eVF0LmNwcAppbmRleCAzZGM1OTcwLi44YWRmOTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvcXQvV2ViRXZlbnRGYWN0b3J5UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9xdC9XZWJFdmVudEZhY3RvcnlRdC5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCBzdGF0aWMg
aW5saW5lIFdlYkV2ZW50OjpNb2RpZmllcnMgbW9kaWZpZXJzRm9yRXZlbnQoUXQ6OktleWJvYXJk
TW9kaWZpZXJzIG1vZGlmaQogICAgIHJldHVybiAoV2ViRXZlbnQ6Ok1vZGlmaWVycylyZXN1bHQ7
CiB9CiAKLVdlYk1vdXNlRXZlbnQgV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJNb3VzZUV2ZW50
KFFNb3VzZUV2ZW50KiBldmVudCwgaW50IGV2ZW50Q2xpY2tDb3VudCkKK1dlYk1vdXNlRXZlbnQg
V2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJNb3VzZUV2ZW50KFFNb3VzZUV2ZW50KiBldmVudCxj
b25zdCBRUG9pbnRGJiB3ZWJQYWdlUG9pbnQsIGludCBldmVudENsaWNrQ291bnQpCiB7CiAgICAg
c3RhdGljIEZsb2F0UG9pbnQgbGFzdFBvcyA9IEZsb2F0UG9pbnQoMCwgMCk7CiAKQEAgLTExOSwx
MCArMTE5LDEwIEBAIFdlYk1vdXNlRXZlbnQgV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJNb3Vz
ZUV2ZW50KFFNb3VzZUV2ZW50KiBldmVudCwgaW50IGV2ZW50CiAgICAgZG91YmxlIHRpbWVzdGFt
cCAgICAgICAgICAgICAgICA9IGN1cnJlbnRUaW1lRm9yRXZlbnQoZXZlbnQpOwogICAgIGxhc3RQ
b3Muc2V0KGV2ZW50LT5sb2NhbFBvcygpLngoKSwgZXZlbnQtPmxvY2FsUG9zKCkueSgpKTsKIAot
ICAgIHJldHVybiBXZWJNb3VzZUV2ZW50KHR5cGUsIGJ1dHRvbiwgZXZlbnQtPmxvY2FsUG9zKCku
dG9Qb2ludCgpLCBldmVudC0+c2NyZWVuUG9zKCkudG9Qb2ludCgpLCBkZWx0YVgsIGRlbHRhWSwg
MC4wZiwgY2xpY2tDb3VudCwgbW9kaWZpZXJzLCB0aW1lc3RhbXApOworICAgIHJldHVybiBXZWJN
b3VzZUV2ZW50KHR5cGUsIGJ1dHRvbiwgd2ViUGFnZVBvaW50LnRvUG9pbnQoKSwgZXZlbnQtPnNj
cmVlblBvcygpLnRvUG9pbnQoKSwgZGVsdGFYLCBkZWx0YVksIDAuMGYsIGNsaWNrQ291bnQsIG1v
ZGlmaWVycywgdGltZXN0YW1wKTsKIH0KIAotV2ViV2hlZWxFdmVudCBXZWJFdmVudEZhY3Rvcnk6
OmNyZWF0ZVdlYldoZWVsRXZlbnQoUVdoZWVsRXZlbnQqIGUpCitXZWJXaGVlbEV2ZW50IFdlYkV2
ZW50RmFjdG9yeTo6Y3JlYXRlV2ViV2hlZWxFdmVudChRV2hlZWxFdmVudCogZSwgY29uc3QgUVBv
aW50RiYgd2ViUGFnZVBvaW50KQogewogICAgIGZsb2F0IGRlbHRhWCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IDA7CiAgICAgZmxvYXQgZGVsdGFZICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gMDsKQEAgLTE1MSw3ICsxNTEsNyBAQCBXZWJXaGVlbEV2ZW50IFdlYkV2ZW50RmFjdG9y
eTo6Y3JlYXRlV2ViV2hlZWxFdmVudChRV2hlZWxFdmVudCogZSkKICAgICBkZWx0YVggKj0gKGZ1
bGxUaWNrKSA/IFFBcHBsaWNhdGlvbjo6d2hlZWxTY3JvbGxMaW5lcygpICogY0RlZmF1bHRRdFNj
cm9sbFN0ZXAgOiAxOwogICAgIGRlbHRhWSAqPSAoZnVsbFRpY2spID8gUUFwcGxpY2F0aW9uOjp3
aGVlbFNjcm9sbExpbmVzKCkgKiBjRGVmYXVsdFF0U2Nyb2xsU3RlcCA6IDE7CiAKLSAgICByZXR1
cm4gV2ViV2hlZWxFdmVudChXZWJFdmVudDo6V2hlZWwsIGUtPnBvc0YoKS50b1BvaW50KCksIGUt
Pmdsb2JhbFBvc0YoKS50b1BvaW50KCksIEZsb2F0U2l6ZShkZWx0YVgsIGRlbHRhWSksIEZsb2F0
U2l6ZSh3aGVlbFRpY2tzWCwgd2hlZWxUaWNrc1kpLCBncmFudWxhcml0eSwgbW9kaWZpZXJzLCB0
aW1lc3RhbXApOworICAgIHJldHVybiBXZWJXaGVlbEV2ZW50KFdlYkV2ZW50OjpXaGVlbCwgd2Vi
UGFnZVBvaW50LnRvUG9pbnQoKSwgZS0+Z2xvYmFsUG9zRigpLnRvUG9pbnQoKSwgRmxvYXRTaXpl
KGRlbHRhWCwgZGVsdGFZKSwgRmxvYXRTaXplKHdoZWVsVGlja3NYLCB3aGVlbFRpY2tzWSksIGdy
YW51bGFyaXR5LCBtb2RpZmllcnMsIHRpbWVzdGFtcCk7CiB9CiAKIFdlYktleWJvYXJkRXZlbnQg
V2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJLZXlib2FyZEV2ZW50KFFLZXlFdmVudCogZXZlbnQp
CkBAIC0xNzQsNyArMTc0LDcgQEAgV2ViS2V5Ym9hcmRFdmVudCBXZWJFdmVudEZhY3Rvcnk6OmNy
ZWF0ZVdlYktleWJvYXJkRXZlbnQoUUtleUV2ZW50KiBldmVudCkKIH0KIAogI2lmIEVOQUJMRShU
T1VDSF9FVkVOVFMpCi1XZWJUb3VjaEV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViVG91
Y2hFdmVudChjb25zdCBRVG91Y2hFdmVudCogZXZlbnQpCitXZWJUb3VjaEV2ZW50IFdlYkV2ZW50
RmFjdG9yeTo6Y3JlYXRlV2ViVG91Y2hFdmVudChjb25zdCBRVG91Y2hFdmVudCogZXZlbnQsIGNv
bnN0IFFMaXN0PFFQb2ludEY+JiB3ZWJQYWdlUG9pbnRzKQogewogICAgIFdlYkV2ZW50OjpUeXBl
IHR5cGUgID0gd2ViRXZlbnRUeXBlRm9yRXZlbnQoZXZlbnQpOwogICAgIFdlYlBsYXRmb3JtVG91
Y2hQb2ludDo6VG91Y2hQb2ludFN0YXRlIHN0YXRlID0gc3RhdGljX2Nhc3Q8V2ViUGxhdGZvcm1U
b3VjaFBvaW50OjpUb3VjaFBvaW50U3RhdGU+KDApOwpAQCAtMTgzLDYgKzE4Myw3IEBAIFdlYlRv
dWNoRXZlbnQgV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJUb3VjaEV2ZW50KGNvbnN0IFFUb3Vj
aEV2ZW50KiBldmVudCkKICAgICBkb3VibGUgdGltZXN0YW1wICAgICAgICAgICAgICAgID0gY3Vy
cmVudFRpbWVGb3JFdmVudChldmVudCk7CiAKICAgICBjb25zdCBRTGlzdDxRVG91Y2hFdmVudDo6
VG91Y2hQb2ludD4mIHBvaW50cyA9IGV2ZW50LT50b3VjaFBvaW50cygpOworICAgIEFTU0VSVChw
b2ludHMuc2l6ZSgpID09IHdlYlBhZ2VQb2ludHMuc2l6ZSgpKTsKICAgICAKICAgICBWZWN0b3I8
V2ViUGxhdGZvcm1Ub3VjaFBvaW50PiBtX3RvdWNoUG9pbnRzOwogICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgcG9pbnRzLmNvdW50KCk7ICsraSkgewpAQCAtMjA1LDcgKzIwNiw3IEBAIFdlYlRvdWNo
RXZlbnQgV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJUb3VjaEV2ZW50KGNvbnN0IFFUb3VjaEV2
ZW50KiBldmVudCkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgbV90
b3VjaFBvaW50cy5hcHBlbmQoV2ViUGxhdGZvcm1Ub3VjaFBvaW50KGlkLCBzdGF0ZSwgcG9pbnRz
LmF0KGkpLnNjcmVlblBvcygpLnRvUG9pbnQoKSwgcG9pbnRzLmF0KGkpLnBvcygpLnRvUG9pbnQo
KSkpOworICAgICAgICBtX3RvdWNoUG9pbnRzLmFwcGVuZChXZWJQbGF0Zm9ybVRvdWNoUG9pbnQo
aWQsIHN0YXRlLCBwb2ludHMuYXQoaSkuc2NyZWVuUG9zKCkudG9Qb2ludCgpLCB3ZWJQYWdlUG9p
bnRzLmF0KGkpLnRvUG9pbnQoKSkpOwogICAgIH0KIAogICAgIHJldHVybiBXZWJUb3VjaEV2ZW50
KHR5cGUsIG1fdG91Y2hQb2ludHMsIG1vZGlmaWVycywgdGltZXN0YW1wKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9xdC9XZWJFdmVudEZhY3RvcnlRdC5oIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL3F0L1dlYkV2ZW50RmFjdG9yeVF0LmgKaW5kZXggNGNlNjQ4ZS4uYTBjNjY4
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL3F0L1dlYkV2ZW50RmFjdG9yeVF0
LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL3F0L1dlYkV2ZW50RmFjdG9yeVF0LmgKQEAg
LTQxLDExICs0MSwxMSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViRXZlbnRGYWN0
b3J5IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgV2ViTW91c2VFdmVudCBjcmVhdGVXZWJNb3VzZUV2
ZW50KFFNb3VzZUV2ZW50KiwgaW50IGV2ZW50Q2xpY2tDb3VudCk7Ci0gICAgc3RhdGljIFdlYldo
ZWVsRXZlbnQgY3JlYXRlV2ViV2hlZWxFdmVudChRV2hlZWxFdmVudCopOworICAgIHN0YXRpYyBX
ZWJNb3VzZUV2ZW50IGNyZWF0ZVdlYk1vdXNlRXZlbnQoUU1vdXNlRXZlbnQqLCBjb25zdCBRUG9p
bnRGJiB3ZWJQYWdlUG9pbnQsIGludCBldmVudENsaWNrQ291bnQpOworICAgIHN0YXRpYyBXZWJX
aGVlbEV2ZW50IGNyZWF0ZVdlYldoZWVsRXZlbnQoUVdoZWVsRXZlbnQqLCBjb25zdCBRUG9pbnRG
JiB3ZWJQYWdlUG9pbnQpOwogICAgIHN0YXRpYyBXZWJLZXlib2FyZEV2ZW50IGNyZWF0ZVdlYktl
eWJvYXJkRXZlbnQoUUtleUV2ZW50Kik7CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICBz
dGF0aWMgV2ViVG91Y2hFdmVudCBjcmVhdGVXZWJUb3VjaEV2ZW50KGNvbnN0IFFUb3VjaEV2ZW50
Kik7CisgICAgc3RhdGljIFdlYlRvdWNoRXZlbnQgY3JlYXRlV2ViVG91Y2hFdmVudChjb25zdCBR
VG91Y2hFdmVudCosIGNvbnN0IFFMaXN0PFFQb2ludEY+JiB3ZWJQYWdlUG9pbnRzKTsKICNlbmRp
ZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVp
Y2t3ZWJwYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vi
cGFnZS5jcHAKaW5kZXggN2QzYjJkNi4uYjBjODg0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJwYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnBhZ2UuY3BwCkBAIC0yNSwxMCArMjUsMTYgQEAK
ICNpbmNsdWRlICJRdFdlYlBhZ2VFdmVudEhhbmRsZXIuaCIKICNpbmNsdWRlICJUcmFuc2Zvcm1h
dGlvbk1hdHJpeC5oIgogI2luY2x1ZGUgInFxdWlja3dlYnBhZ2VfcF9wLmgiCisjaW5jbHVkZSAi
cXF1aWNrd2Vidmlld19wLmgiCiAjaW5jbHVkZSA8UXRRdWljay9RUXVpY2tDYW52YXM+CiAjaW5j
bHVkZSA8UXRRdWljay9RU0dHZW9tZXRyeU5vZGU+CiAjaW5jbHVkZSA8UXRRdWljay9RU0dNYXRl
cmlhbD4KIAorc3RhdGljIGlubGluZSBib29sIGlzVmFsaWQoUVNpemVGIHNpemUpCit7CisgICAg
cmV0dXJuICFzaXplLmlzTnVsbCgpICYmIHNpemUuaXNWYWxpZCgpOworfQorCiBRUXVpY2tXZWJQ
YWdlOjpRUXVpY2tXZWJQYWdlKFFRdWlja0l0ZW0qIHBhcmVudCkKICAgICA6IFFRdWlja0l0ZW0o
cGFyZW50KQogICAgICwgZChuZXcgUVF1aWNrV2ViUGFnZVByaXZhdGUodGhpcykpCkBAIC01MCwx
MjcgKzU2LDI4IEBAIFF0U0dVcGRhdGVRdWV1ZSAqUVF1aWNrV2ViUGFnZTo6c2NlbmVHcmFwaFVw
ZGF0ZVF1ZXVlKCkgY29uc3QKICAgICByZXR1cm4gJmQtPnNnVXBkYXRlUXVldWU7CiB9CiAKLXZv
aWQgUVF1aWNrV2ViUGFnZTo6a2V5UHJlc3NFdmVudChRS2V5RXZlbnQqIGV2ZW50KQotewotICAg
IHRoaXMtPmV2ZW50KGV2ZW50KTsKLX0KLQotdm9pZCBRUXVpY2tXZWJQYWdlOjprZXlSZWxlYXNl
RXZlbnQoUUtleUV2ZW50KiBldmVudCkKLXsKLSAgICB0aGlzLT5ldmVudChldmVudCk7Ci19Ci0K
LXZvaWQgUVF1aWNrV2ViUGFnZTo6aW5wdXRNZXRob2RFdmVudChRSW5wdXRNZXRob2RFdmVudCog
ZXZlbnQpCi17Ci0gICAgdGhpcy0+ZXZlbnQoZXZlbnQpOwotfQotCi12b2lkIFFRdWlja1dlYlBh
Z2U6OmZvY3VzSW5FdmVudChRRm9jdXNFdmVudCogZXZlbnQpCi17Ci0gICAgdGhpcy0+ZXZlbnQo
ZXZlbnQpOwotfQotCi12b2lkIFFRdWlja1dlYlBhZ2U6OmZvY3VzT3V0RXZlbnQoUUZvY3VzRXZl
bnQqIGV2ZW50KQotewotICAgIHRoaXMtPmV2ZW50KGV2ZW50KTsKLX0KLQotdm9pZCBRUXVpY2tX
ZWJQYWdlOjptb3VzZVByZXNzRXZlbnQoUU1vdXNlRXZlbnQqIGV2ZW50KQotewotICAgIGZvcmNl
QWN0aXZlRm9jdXMoKTsKLSAgICB0aGlzLT5ldmVudChldmVudCk7Ci19Ci0KLXZvaWQgUVF1aWNr
V2ViUGFnZTo6bW91c2VNb3ZlRXZlbnQoUU1vdXNlRXZlbnQqIGV2ZW50KQotewotICAgIHRoaXMt
PmV2ZW50KGV2ZW50KTsKLX0KLQotdm9pZCBRUXVpY2tXZWJQYWdlOjptb3VzZVJlbGVhc2VFdmVu
dChRTW91c2VFdmVudCogZXZlbnQpCi17Ci0gICAgdGhpcy0+ZXZlbnQoZXZlbnQpOwotfQotCi12
b2lkIFFRdWlja1dlYlBhZ2U6Om1vdXNlRG91YmxlQ2xpY2tFdmVudChRTW91c2VFdmVudCogZXZl
bnQpCi17Ci0gICAgdGhpcy0+ZXZlbnQoZXZlbnQpOwotfQotCi12b2lkIFFRdWlja1dlYlBhZ2U6
OndoZWVsRXZlbnQoUVdoZWVsRXZlbnQqIGV2ZW50KQotewotICAgIHRoaXMtPmV2ZW50KGV2ZW50
KTsKLX0KLQotdm9pZCBRUXVpY2tXZWJQYWdlOjpob3ZlckVudGVyRXZlbnQoUUhvdmVyRXZlbnQq
IGV2ZW50KQotewotICAgIHRoaXMtPmV2ZW50KGV2ZW50KTsKLX0KLQotdm9pZCBRUXVpY2tXZWJQ
YWdlOjpob3Zlck1vdmVFdmVudChRSG92ZXJFdmVudCogZXZlbnQpCi17Ci0gICAgdGhpcy0+ZXZl
bnQoZXZlbnQpOwotfQotCi12b2lkIFFRdWlja1dlYlBhZ2U6OmhvdmVyTGVhdmVFdmVudChRSG92
ZXJFdmVudCogZXZlbnQpCi17Ci0gICAgdGhpcy0+ZXZlbnQoZXZlbnQpOwotfQotCi12b2lkIFFR
dWlja1dlYlBhZ2U6OmRyYWdNb3ZlRXZlbnQoUURyYWdNb3ZlRXZlbnQqIGV2ZW50KQotewotICAg
IHRoaXMtPmV2ZW50KGV2ZW50KTsKLX0KLQotdm9pZCBRUXVpY2tXZWJQYWdlOjpkcmFnRW50ZXJF
dmVudChRRHJhZ0VudGVyRXZlbnQqIGV2ZW50KQotewotICAgIHRoaXMtPmV2ZW50KGV2ZW50KTsK
LX0KLQotdm9pZCBRUXVpY2tXZWJQYWdlOjpkcmFnTGVhdmVFdmVudChRRHJhZ0xlYXZlRXZlbnQq
IGV2ZW50KQotewotICAgIHRoaXMtPmV2ZW50KGV2ZW50KTsKLX0KLQotdm9pZCBRUXVpY2tXZWJQ
YWdlOjpkcm9wRXZlbnQoUURyb3BFdmVudCogZXZlbnQpCi17Ci0gICAgdGhpcy0+ZXZlbnQoZXZl
bnQpOwotfQotCiB2b2lkIFFRdWlja1dlYlBhZ2U6Omdlb21ldHJ5Q2hhbmdlZChjb25zdCBRUmVj
dEYmIG5ld0dlb21ldHJ5LCBjb25zdCBRUmVjdEYmIG9sZEdlb21ldHJ5KQogewogICAgIFFRdWlj
a0l0ZW06Omdlb21ldHJ5Q2hhbmdlZChuZXdHZW9tZXRyeSwgb2xkR2VvbWV0cnkpOwotICAgIGlm
IChuZXdHZW9tZXRyeS5zaXplKCkgIT0gb2xkR2VvbWV0cnkuc2l6ZSgpKQorICAgIGlmIChkLT51
c2VUcmFkaXRpb25hbERlc2t0b3BCZWhhdmlvdXIgJiYgbmV3R2VvbWV0cnkuc2l6ZSgpICE9IG9s
ZEdlb21ldHJ5LnNpemUoKSkKICAgICAgICAgZC0+c2V0RHJhd2luZ0FyZWFTaXplKG5ld0dlb21l
dHJ5LnNpemUoKS50b1NpemUoKSk7CiB9CiAKLWJvb2wgUVF1aWNrV2ViUGFnZTo6ZXZlbnQoUUV2
ZW50KiBldikKLXsKLSAgICBpZiAoZC0+ZXZlbnRIYW5kbGVyLmRhdGEoKS0+aGFuZGxlRXZlbnQo
ZXYpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAoZXYtPnR5cGUoKSA9PSBRRXZlbnQ6
OklucHV0TWV0aG9kKQotICAgICAgICByZXR1cm4gZmFsc2U7IC8vIFRoaXMgaXMgbmVjZXNzYXJ5
IHRvIGF2b2lkIGFuIGVuZGxlc3MgbG9vcCBpbiBjb25uZWN0aW9uIHdpdGggUVF1aWNrSXRlbTo6
ZXZlbnQoKS4KLSAgICByZXR1cm4gUVF1aWNrSXRlbTo6ZXZlbnQoZXYpOwotfQotCi12b2lkIFFR
dWlja1dlYlBhZ2U6OnRvdWNoRXZlbnQoUVRvdWNoRXZlbnQqIGV2ZW50KQotewotICAgIGZvcmNl
QWN0aXZlRm9jdXMoKTsKLSAgICB0aGlzLT5ldmVudChldmVudCk7Ci19Ci0KIFFRdWlja1dlYlBh
Z2VQcml2YXRlOjpRUXVpY2tXZWJQYWdlUHJpdmF0ZShRUXVpY2tXZWJQYWdlKiBxKQogICAgIDog
cShxKQogICAgICwgd2ViUGFnZVByb3h5KDApCiAgICAgLCBzZ1VwZGF0ZVF1ZXVlKHEpCiAgICAg
LCBwYWludGluZ0lzSW5pdGlhbGl6ZWQoZmFsc2UpCiAgICAgLCBtX3BhaW50Tm9kZSgwKQorICAg
ICwgcmVuZGVyaW5nU2NhbGUoMSkKKyAgICAsIHVzZVRyYWRpdGlvbmFsRGVza3RvcEJlaGF2aW91
cihmYWxzZSkKIHsKIH0KIAotdm9pZCBRUXVpY2tXZWJQYWdlUHJpdmF0ZTo6aW5pdGlhbGl6ZShX
ZWJLaXQ6OldlYlBhZ2VQcm94eSogd2ViUGFnZVByb3h5KQordm9pZCBRUXVpY2tXZWJQYWdlUHJp
dmF0ZTo6aW5pdGlhbGl6ZShXZWJLaXQ6OldlYlBhZ2VQcm94eSogd2ViUGFnZVByb3h5LCBRUXVp
Y2tXZWJWaWV3KiB2aWV3cG9ydCkKIHsKICAgICB0aGlzLT53ZWJQYWdlUHJveHkgPSB3ZWJQYWdl
UHJveHk7Ci0gICAgZXZlbnRIYW5kbGVyLnJlc2V0KG5ldyBRdFdlYlBhZ2VFdmVudEhhbmRsZXIo
dG9BUEkod2ViUGFnZVByb3h5KSwgcSkpOworICAgIGV2ZW50SGFuZGxlci5yZXNldChuZXcgUXRX
ZWJQYWdlRXZlbnRIYW5kbGVyKHRvQVBJKHdlYlBhZ2VQcm94eSksIHZpZXdwb3J0LCBxKSk7CiB9
CiAKIHN0YXRpYyBmbG9hdCBjb21wdXRlRWZmZWN0aXZlT3BhY2l0eShjb25zdCBRUXVpY2tJdGVt
KiBpdGVtKQpAQCAtMTk5LDYgKzEwNiw3IEBAIHZvaWQgUVF1aWNrV2ViUGFnZVByaXZhdGU6OnBh
aW50VG9DdXJyZW50R0xDb250ZXh0KCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgUVRyYW5zZm9y
bSB0cmFuc2Zvcm0gPSBxLT5pdGVtVHJhbnNmb3JtKDAsIDApOworICAgIHRyYW5zZm9ybS5zY2Fs
ZShyZW5kZXJpbmdTY2FsZSwgcmVuZGVyaW5nU2NhbGUpOwogCiAgICAgZmxvYXQgb3BhY2l0eSA9
IGNvbXB1dGVFZmZlY3RpdmVPcGFjaXR5KHEpOwogICAgIFFSZWN0RiBjbGlwUmVjdCA9IHEtPnBh
cmVudEl0ZW0oKS0+bWFwUmVjdFRvU2NlbmUocS0+cGFyZW50SXRlbSgpLT5ib3VuZGluZ1JlY3Qo
KSk7CkBAIC0zMjIsNiArMjMwLDcxIEBAIFFTR05vZGUqIFFRdWlja1dlYlBhZ2U6OnVwZGF0ZVBh
aW50Tm9kZShRU0dOb2RlKiBvbGROb2RlLCBVcGRhdGVQYWludE5vZGVEYXRhKikKICAgICByZXR1
cm4gcHJveHlOb2RlOwogfQogCit2b2lkIFFRdWlja1dlYlBhZ2U6OnNldFVzZXNUcmFkaXRpb25h
bERlc2t0b3BCZWhhdmlvdXIoYm9vbCBlbmFibGUpCit7CisgICAgZC0+dXNlVHJhZGl0aW9uYWxE
ZXNrdG9wQmVoYXZpb3VyID0gZW5hYmxlOworfQorCitRdFdlYlBhZ2VFdmVudEhhbmRsZXIqIFFR
dWlja1dlYlBhZ2U6OmV2ZW50SGFuZGxlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIGQtPmV2ZW50
SGFuZGxlci5kYXRhKCk7Cit9CisKK3ZvaWQgUVF1aWNrV2ViUGFnZTo6dXBkYXRlU2l6ZSgpCit7
CisgICAgUVNpemVGIHNjYWxlZFNpemUgPSBkLT5jb250ZW50U2l6ZSAqIGQtPnJlbmRlcmluZ1Nj
YWxlOworCisgICAgaWYgKCFpc1ZhbGlkKHNjYWxlZFNpemUpKQorICAgICAgICByZXR1cm47CisK
KyAgICBzZXRTaXplKHNjYWxlZFNpemUpOworICAgIHVwZGF0ZSgpOworfQorCit2b2lkIFFRdWlj
a1dlYlBhZ2U6OnNldENvbnRlbnRTaXplKGNvbnN0IFFTaXplRiYgc2l6ZSkKK3sKKyAgICBpZiAo
IWlzVmFsaWQoc2l6ZSkgfHwgZC0+Y29udGVudFNpemUgPT0gc2l6ZSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgZC0+Y29udGVudFNpemUgPSBzaXplOworICAgIGQtPnNldERyYXdpbmdBcmVhU2l6
ZShkLT5jb250ZW50U2l6ZS50b1NpemUoKSk7CisgICAgdXBkYXRlU2l6ZSgpOworfQorCitjb25z
dCBRU2l6ZUYmIFFRdWlja1dlYlBhZ2U6OmNvbnRlbnRTaXplKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gZC0+Y29udGVudFNpemU7Cit9CisKK3ZvaWQgUVF1aWNrV2ViUGFnZTo6c2V0UmVuZGVyaW5n
U2NhbGUocXJlYWwgc2NhbGUpCit7CisgICAgQVNTRVJUKDAgPCBzY2FsZSk7CisgICAgZC0+cmVu
ZGVyaW5nU2NhbGUgPSBzY2FsZTsKKyAgICB1cGRhdGVTaXplKCk7Cit9CisKK3FyZWFsIFFRdWlj
a1dlYlBhZ2U6OnJlbmRlcmluZ1NjYWxlKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoMCA8IGQtPnJl
bmRlcmluZ1NjYWxlKTsKKyAgICByZXR1cm4gZC0+cmVuZGVyaW5nU2NhbGU7Cit9CisKK1FUcmFu
c2Zvcm0gUVF1aWNrV2ViUGFnZTo6dHJhbnNmb3JtRnJvbUl0ZW0oKSBjb25zdAoreworICAgIHFy
ZWFsIHVuU2NhbGUgPSAxIC8gZC0+cmVuZGVyaW5nU2NhbGU7CisgICAgUVRyYW5zZm9ybSBmcm9t
SXRlbVRyYW5zZm9ybSA9IFFUcmFuc2Zvcm06OmZyb21TY2FsZSh1blNjYWxlLCB1blNjYWxlKTsK
KyAgICBmcm9tSXRlbVRyYW5zZm9ybS50cmFuc2xhdGUoLXgoKSwgLXkoKSk7CisgICAgcmV0dXJu
IGZyb21JdGVtVHJhbnNmb3JtOworfQorCitRVHJhbnNmb3JtIFFRdWlja1dlYlBhZ2U6OnRyYW5z
Zm9ybVRvSXRlbSgpIGNvbnN0Cit7CisgICAgcXJlYWwgc2NhbGUgPSBkLT5yZW5kZXJpbmdTY2Fs
ZTsKKyAgICBRVHJhbnNmb3JtIHRvSXRlbVRyYW5zZm9ybSA9IFFUcmFuc2Zvcm06OmZyb21UcmFu
c2xhdGUoeCgpLCB5KCkpOworICAgIHRvSXRlbVRyYW5zZm9ybS5zY2FsZShzY2FsZSwgc2NhbGUp
OworICAgIHJldHVybiB0b0l0ZW1UcmFuc2Zvcm07Cit9CisKIHZvaWQgUVF1aWNrV2ViUGFnZVBy
aXZhdGU6OnJlc2V0UGFpbnROb2RlKCkKIHsKICAgICBtX3BhaW50Tm9kZSA9IDA7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnBhZ2VfcC5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJwYWdlX3AuaAppbmRleCBm
N2MzNTA2Li40ZDhlMzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L3F0L3FxdWlja3dlYnBhZ2VfcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvcXF1aWNrd2VicGFnZV9wLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlIDxRdFF1aWNr
L1FRdWlja0l0ZW0+CiAKIGNsYXNzIFFRdWlja1dlYlBhZ2VQcml2YXRlOworY2xhc3MgUXRXZWJQ
YWdlRXZlbnRIYW5kbGVyOwogY2xhc3MgUVdlYlByZWZlcmVuY2VzOwogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKQEAgLTM5LDM0ICs0MCwyOSBAQCBwdWJsaWM6CiAgICAgUVF1aWNrV2ViUGFnZShRUXVp
Y2tJdGVtKiBwYXJlbnQgPSAwKTsKICAgICB2aXJ0dWFsIH5RUXVpY2tXZWJQYWdlKCk7CiAKKyAg
ICB2b2lkIHNldENvbnRlbnRTaXplKGNvbnN0IFFTaXplRiYgc2l6ZSk7CisgICAgY29uc3QgUVNp
emVGJiBjb250ZW50U2l6ZSgpIGNvbnN0OworICAgIHZvaWQgc2V0UmVuZGVyaW5nU2NhbGUocXJl
YWwpOworICAgIHFyZWFsIHJlbmRlcmluZ1NjYWxlKCkgY29uc3Q7CisKKyAgICBRVHJhbnNmb3Jt
IHRyYW5zZm9ybUZyb21JdGVtKCkgY29uc3Q7CisgICAgUVRyYW5zZm9ybSB0cmFuc2Zvcm1Ub0l0
ZW0oKSBjb25zdDsKKworICAgIFF0V2ViUGFnZUV2ZW50SGFuZGxlciogZXZlbnRIYW5kbGVyKCkg
Y29uc3Q7CisKICAgICAvLyBJbnRlcm5hbC4gVG8gYmUgcmVtb3ZlZCBzb29uLgogICAgIFdlYktp
dDo6UXRTR1VwZGF0ZVF1ZXVlKiBzY2VuZUdyYXBoVXBkYXRlUXVldWUoKSBjb25zdDsKIAogcHJv
dGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCBrZXlQcmVzc0V2ZW50KFFLZXlFdmVudCopOwotICAg
IHZpcnR1YWwgdm9pZCBrZXlSZWxlYXNlRXZlbnQoUUtleUV2ZW50Kik7Ci0gICAgdmlydHVhbCB2
b2lkIGlucHV0TWV0aG9kRXZlbnQoUUlucHV0TWV0aG9kRXZlbnQqKTsKLSAgICB2aXJ0dWFsIHZv
aWQgZm9jdXNJbkV2ZW50KFFGb2N1c0V2ZW50Kik7Ci0gICAgdmlydHVhbCB2b2lkIGZvY3VzT3V0
RXZlbnQoUUZvY3VzRXZlbnQqKTsKLSAgICB2aXJ0dWFsIHZvaWQgbW91c2VQcmVzc0V2ZW50KFFN
b3VzZUV2ZW50Kik7Ci0gICAgdmlydHVhbCB2b2lkIG1vdXNlTW92ZUV2ZW50KFFNb3VzZUV2ZW50
Kik7Ci0gICAgdmlydHVhbCB2b2lkIG1vdXNlUmVsZWFzZUV2ZW50KFFNb3VzZUV2ZW50ICopOwot
ICAgIHZpcnR1YWwgdm9pZCBtb3VzZURvdWJsZUNsaWNrRXZlbnQoUU1vdXNlRXZlbnQqKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgd2hlZWxFdmVudChRV2hlZWxFdmVudCopOwotICAgIHZpcnR1YWwgdm9p
ZCBob3ZlckVudGVyRXZlbnQoUUhvdmVyRXZlbnQqKTsKLSAgICB2aXJ0dWFsIHZvaWQgaG92ZXJN
b3ZlRXZlbnQoUUhvdmVyRXZlbnQqKTsKLSAgICB2aXJ0dWFsIHZvaWQgaG92ZXJMZWF2ZUV2ZW50
KFFIb3ZlckV2ZW50Kik7Ci0gICAgdmlydHVhbCB2b2lkIGRyYWdNb3ZlRXZlbnQoUURyYWdNb3Zl
RXZlbnQqKTsKLSAgICB2aXJ0dWFsIHZvaWQgZHJhZ0VudGVyRXZlbnQoUURyYWdFbnRlckV2ZW50
Kik7Ci0gICAgdmlydHVhbCB2b2lkIGRyYWdMZWF2ZUV2ZW50KFFEcmFnTGVhdmVFdmVudCopOwot
ICAgIHZpcnR1YWwgdm9pZCBkcm9wRXZlbnQoUURyb3BFdmVudCopOwotICAgIHZpcnR1YWwgdm9p
ZCB0b3VjaEV2ZW50KFFUb3VjaEV2ZW50Kik7Ci0gICAgdmlydHVhbCBib29sIGV2ZW50KFFFdmVu
dCopOwogICAgIHZpcnR1YWwgdm9pZCBnZW9tZXRyeUNoYW5nZWQoY29uc3QgUVJlY3RGJiwgY29u
c3QgUVJlY3RGJik7CiAgICAgdmlydHVhbCBRU0dOb2RlKiB1cGRhdGVQYWludE5vZGUoUVNHTm9k
ZSosIFVwZGF0ZVBhaW50Tm9kZURhdGEqKTsKIAorICAgIHZvaWQgc2V0VXNlc1RyYWRpdGlvbmFs
RGVza3RvcEJlaGF2aW91cihib29sIGVuYWJsZSk7CisgICAgdm9pZCB1cGRhdGVTaXplKCk7CisK
IHByaXZhdGU6CiAgICAgUVF1aWNrV2ViUGFnZVByaXZhdGUqIGQ7CisKICAgICBmcmllbmQgY2xh
c3MgUVF1aWNrV2ViVmlldzsKICAgICBmcmllbmQgY2xhc3MgUVF1aWNrV2ViVmlld1ByaXZhdGU7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3
ZWJwYWdlX3BfcC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJw
YWdlX3BfcC5oCmluZGV4IDcyMjRmMzkuLjAyODYwMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2VicGFnZV9wX3AuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnBhZ2VfcF9wLmgKQEAgLTIzLDYgKzIzLDcg
QEAKIAogI2luY2x1ZGUgIlF0U0dVcGRhdGVRdWV1ZS5oIgogI2luY2x1ZGUgInFxdWlja3dlYnBh
Z2VfcC5oIgorI2luY2x1ZGUgPFFUcmFuc2Zvcm0+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogY2xh
c3MgV2ViUGFnZVByb3h5OwpAQCAtMzYsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgUVF1aWNrV2Vi
UGFnZVByaXZhdGUoUVF1aWNrV2ViUGFnZSogcSk7CiAgICAgflFRdWlja1dlYlBhZ2VQcml2YXRl
KCk7CiAKLSAgICB2b2lkIGluaXRpYWxpemUoV2ViS2l0OjpXZWJQYWdlUHJveHkqKTsKKyAgICB2
b2lkIGluaXRpYWxpemUoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBRUXVpY2tXZWJWaWV3KiB2aWV3
cG9ydCk7CiAgICAgdm9pZCBzZXREcmF3aW5nQXJlYVNpemUoY29uc3QgUVNpemUmKTsKIAogICAg
IHZvaWQgcGFpbnRUb0N1cnJlbnRHTENvbnRleHQoKTsKQEAgLTQ4LDYgKzQ5LDEwIEBAIHB1Ymxp
YzoKICAgICBXZWJLaXQ6OlF0U0dVcGRhdGVRdWV1ZSBzZ1VwZGF0ZVF1ZXVlOwogICAgIGJvb2wg
cGFpbnRpbmdJc0luaXRpYWxpemVkOwogICAgIFFTR05vZGUqIG1fcGFpbnROb2RlOworCisgICAg
UVNpemVGIGNvbnRlbnRTaXplOworICAgIHFyZWFsIHJlbmRlcmluZ1NjYWxlOworICAgIGJvb2wg
dXNlVHJhZGl0aW9uYWxEZXNrdG9wQmVoYXZpb3VyIDogMTsKIH07CiAKICNlbmRpZiAvLyBxcXVp
Y2t3ZWJwYWdlX3BfcF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L3F0L3FxdWlja3dlYnZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
cXVpY2t3ZWJ2aWV3LmNwcAppbmRleCBhMTU2YWUxLi4xNGZhNWRjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHAKQEAgLTczLDExICs3
MywxMiBAQCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6flFRdWlja1dlYlZpZXdQcml2YXRlKCkKIC8v
IE5vdGU6IHdlIGRlbGF5IHRoaXMgaW5pdGlhbGl6YXRpb24gdG8gbWFrZSBzdXJlIHRoYXQgUVF1
aWNrV2ViVmlldyBoYXMgaXRzIGQtcHRyIGluLXBsYWNlLgogdm9pZCBRUXVpY2tXZWJWaWV3UHJp
dmF0ZTo6aW5pdGlhbGl6ZShXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYg
cGFnZUdyb3VwUmVmKQogeworICAgIFFfUShRUXVpY2tXZWJWaWV3KTsKICAgICBjb250ZXh0ID0g
Y29udGV4dFJlZiA/IFF0V2ViQ29udGV4dDo6Y3JlYXRlKHRvSW1wbChjb250ZXh0UmVmKSkgOiBR
dFdlYkNvbnRleHQ6OmRlZmF1bHRDb250ZXh0KCk7CiAgICAgd2ViUGFnZVByb3h5ID0gY29udGV4
dC0+Y3JlYXRlV2ViUGFnZSgmcGFnZUNsaWVudCwgdG9JbXBsKHBhZ2VHcm91cFJlZikpOwogCiAg
ICAgUVF1aWNrV2ViUGFnZVByaXZhdGUqIGNvbnN0IHBhZ2VWaWV3UHJpdmF0ZSA9IHBhZ2VWaWV3
LmRhdGEoKS0+ZDsKLSAgICBwYWdlVmlld1ByaXZhdGUtPmluaXRpYWxpemUod2ViUGFnZVByb3h5
LmdldCgpKTsKKyAgICBwYWdlVmlld1ByaXZhdGUtPmluaXRpYWxpemUod2ViUGFnZVByb3h5Lmdl
dCgpLCBxKTsKIAogICAgIHBhZ2VMb2FkQ2xpZW50LnJlc2V0KG5ldyBRdFdlYlBhZ2VMb2FkQ2xp
ZW50KHRvQVBJKHdlYlBhZ2VQcm94eS5nZXQoKSksIHFfcHRyKSk7CiAgICAgcGFnZVBvbGljeUNs
aWVudC5yZXNldChuZXcgUXRXZWJQYWdlUG9saWN5Q2xpZW50KHRvQVBJKHdlYlBhZ2VQcm94eS5n
ZXQoKSksIHFfcHRyKSk7CkBAIC0xMDAsOCArMTAxLDYgQEAgdm9pZCBRUXVpY2tXZWJWaWV3UHJp
dmF0ZTo6ZW5hYmxlTW91c2VFdmVudHMoKQogICAgIFFfUShRUXVpY2tXZWJWaWV3KTsKICAgICBx
LT5zZXRBY2NlcHRlZE1vdXNlQnV0dG9ucyhRdDo6TW91c2VCdXR0b25NYXNrKTsKICAgICBxLT5z
ZXRBY2NlcHRIb3ZlckV2ZW50cyh0cnVlKTsKLSAgICBwYWdlVmlldy0+c2V0QWNjZXB0ZWRNb3Vz
ZUJ1dHRvbnMoUXQ6Ok1vdXNlQnV0dG9uTWFzayk7Ci0gICAgcGFnZVZpZXctPnNldEFjY2VwdEhv
dmVyRXZlbnRzKHRydWUpOwogfQogCiB2b2lkIFFRdWlja1dlYlZpZXdQcml2YXRlOjpkaXNhYmxl
TW91c2VFdmVudHMoKQpAQCAtMTA5LDggKzEwOCw2IEBAIHZvaWQgUVF1aWNrV2ViVmlld1ByaXZh
dGU6OmRpc2FibGVNb3VzZUV2ZW50cygpCiAgICAgUV9RKFFRdWlja1dlYlZpZXcpOwogICAgIHEt
PnNldEFjY2VwdGVkTW91c2VCdXR0b25zKFF0OjpOb0J1dHRvbik7CiAgICAgcS0+c2V0QWNjZXB0
SG92ZXJFdmVudHMoZmFsc2UpOwotICAgIHBhZ2VWaWV3LT5zZXRBY2NlcHRlZE1vdXNlQnV0dG9u
cyhRdDo6Tm9CdXR0b24pOwotICAgIHBhZ2VWaWV3LT5zZXRBY2NlcHRIb3ZlckV2ZW50cyhmYWxz
ZSk7CiB9CiAKIHZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6OmluaXRpYWxpemVEZXNrdG9wKFFR
dWlja1dlYlZpZXcqIHZpZXdwb3J0KQpAQCAtMTg3LDkgKzE4NCw3IEBAIHZvaWQgUVF1aWNrV2Vi
Vmlld1ByaXZhdGU6OmRpZENoYW5nZUNvbnRlbnRzU2l6ZShjb25zdCBRU2l6ZSYgbmV3U2l6ZSkK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHBhZ2VWaWV3LT5zZXRXaWR0aChuZXdTaXpl
LndpZHRoKCkpOwotICAgIHBhZ2VWaWV3LT5zZXRIZWlnaHQobmV3U2l6ZS5oZWlnaHQoKSk7Ci0K
KyAgICBwYWdlVmlldy0+c2V0Q29udGVudFNpemUobmV3U2l6ZSk7CiAgICAgcS0+bV9leHBlcmlt
ZW50YWwtPnZpZXdwb3J0SW5mbygpLT5kaWRVcGRhdGVDb250ZW50c1NpemUoKTsKIH0KIApAQCAt
MjY1LDEwICsyNjAsMTAgQEAgdm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6dXBkYXRlVmlzaWJs
ZUNvbnRlbnRSZWN0QW5kU2NhbGUoKQogICAgICAgICByZXR1cm47CiAKICAgICBRX1EoUVF1aWNr
V2ViVmlldyk7Ci0gICAgY29uc3QgUVJlY3RGIHZpc2libGVSZWN0SW5QYWdlVmlld0Nvb3JkaW5h
dGVzID0gcS0+bWFwUmVjdFRvSXRlbShwYWdlVmlldy5kYXRhKCksIHEtPmJvdW5kaW5nUmVjdCgp
KS5pbnRlcnNlY3RlZChwYWdlVmlldy0+Ym91bmRpbmdSZWN0KCkpOwotICAgIGZsb2F0IHNjYWxl
ID0gcGFnZVZpZXctPnNjYWxlKCk7CisgICAgY29uc3QgUVJlY3RGIHZpc2libGVSZWN0SW5XZWJD
b29yZGluYXRlcyA9IHEtPm1hcFJlY3RUb1dlYkNvb3JkaW5hdGVzKHEtPmJvdW5kaW5nUmVjdCgp
KS5pbnRlcnNlY3RlZChwYWdlVmlldy0+Ym91bmRpbmdSZWN0KCkpOworICAgIGZsb2F0IHNjYWxl
ID0gcGFnZVZpZXctPnJlbmRlcmluZ1NjYWxlKCk7CiAKLSAgICBRUmVjdCBhbGlnbmVkVmlzaWJs
ZUNvbnRlbnRSZWN0ID0gdmlzaWJsZVJlY3RJblBhZ2VWaWV3Q29vcmRpbmF0ZXMudG9BbGlnbmVk
UmVjdCgpOworICAgIFFSZWN0IGFsaWduZWRWaXNpYmxlQ29udGVudFJlY3QgPSB2aXNpYmxlUmVj
dEluV2ViQ29vcmRpbmF0ZXMudG9BbGlnbmVkUmVjdCgpOwogICAgIGRyYXdpbmdBcmVhLT5zZXRW
aXNpYmxlQ29udGVudHNSZWN0QW5kU2NhbGUoYWxpZ25lZFZpc2libGVDb250ZW50UmVjdCwgc2Nh
bGUpOwogCiAgICAgLy8gRklYTUU6IE9uY2Ugd2Ugc3VwcG9ydCBzdXNwZW5kIGFuZCByZXN1bWUs
IHRoaXMgc2hvdWxkIGJlIGRlbGF5ZWQgdW50aWwgdGhlIHBhZ2UgaXMgYWN0aXZlIGlmIHRoZSBw
YWdlIGlzIHN1c3BlbmRlZC4KQEAgLTMyMyw4ICszMTgsNyBAQCB2b2lkIFFRdWlja1dlYlZpZXdQ
cml2YXRlOjpQb3N0VHJhbnNpdGlvblN0YXRlOjphcHBseSgpCiAgICAgcC0+aW50ZXJhY3Rpb25F
bmdpbmUtPnBhZ2VQb3NpdGlvblJlcXVlc3QocG9zaXRpb24pOwogCiAgICAgaWYgKGNvbnRlbnRz
U2l6ZS5pc1ZhbGlkKCkpIHsKLSAgICAgICAgcC0+cGFnZVZpZXctPnNldFdpZHRoKGNvbnRlbnRz
U2l6ZS53aWR0aCgpKTsKLSAgICAgICAgcC0+cGFnZVZpZXctPnNldEhlaWdodChjb250ZW50c1Np
emUuaGVpZ2h0KCkpOworICAgICAgICBwLT5wYWdlVmlldy0+c2V0Q29udGVudFNpemUoY29udGVu
dHNTaXplKTsKICAgICAgICAgcC0+cV9wdHItPmV4cGVyaW1lbnRhbCgpLT52aWV3cG9ydEluZm8o
KS0+ZGlkVXBkYXRlQ29udGVudHNTaXplKCk7CiAgICAgfQogCkBAIC00ODIsNiArNDc2LDcgQEAg
dm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6c2V0VXNlVHJhZGl0aW9uYWxEZXNrdG9wQmVoYXZp
b3VyKGJvb2wgZW5hYmxlKQogICAgIHdlYlBhZ2VQcm94eS0+c2V0VXNlRml4ZWRMYXlvdXQoIWVu
YWJsZSk7CiAKICAgICB1c2VUcmFkaXRpb25hbERlc2t0b3BCZWhhdmlvdXIgPSBlbmFibGU7Cisg
ICAgcGFnZVZpZXctPnNldFVzZXNUcmFkaXRpb25hbERlc2t0b3BCZWhhdmlvdXIoZW5hYmxlKTsK
ICAgICBpZiAodXNlVHJhZGl0aW9uYWxEZXNrdG9wQmVoYXZpb3VyKQogICAgICAgICBpbml0aWFs
aXplRGVza3RvcChxKTsKICAgICBlbHNlCkBAIC03NzMsNiArNzY4LDMwIEBAIGJvb2wgUVF1aWNr
V2ViVmlldzo6Y2FuUmVsb2FkKCkgY29uc3QKICAgICByZXR1cm4gZC0+d2ViUGFnZVByb3h5LT5i
YWNrRm9yd2FyZExpc3QoKS0+Y3VycmVudEl0ZW0oKTsKIH0KIAorUVBvaW50RiBRUXVpY2tXZWJW
aWV3OjptYXBUb1dlYkNvb3JkaW5hdGVzKGNvbnN0IFFQb2ludEYmIHBvaW50SW5WaWV3Q29vcmRp
bmF0ZXMpIGNvbnN0Cit7CisgICAgUV9EKGNvbnN0IFFRdWlja1dlYlZpZXcpOworICAgIHJldHVy
biBkLT5wYWdlVmlldy0+dHJhbnNmb3JtRnJvbUl0ZW0oKS5tYXAocG9pbnRJblZpZXdDb29yZGlu
YXRlcyk7Cit9CisKK1FSZWN0RiBRUXVpY2tXZWJWaWV3OjptYXBSZWN0VG9XZWJDb29yZGluYXRl
cyhjb25zdCBRUmVjdEYmIHJlY3RJblZpZXdDb29yZGlhbnRlcykgY29uc3QKK3sKKyAgICBRX0Qo
Y29uc3QgUVF1aWNrV2ViVmlldyk7CisgICAgcmV0dXJuIGQtPnBhZ2VWaWV3LT50cmFuc2Zvcm1G
cm9tSXRlbSgpLm1hcFJlY3QocmVjdEluVmlld0Nvb3JkaWFudGVzKTsKK30KKworUVBvaW50RiBR
UXVpY2tXZWJWaWV3OjptYXBGcm9tV2ViQ29vcmRpbmF0ZXMoY29uc3QgUVBvaW50RiYgcG9pbnRJ
bldlYkNvb3JkaW5hdGVzKSBjb25zdAoreworICAgIFFfRChjb25zdCBRUXVpY2tXZWJWaWV3KTsK
KyAgICByZXR1cm4gZC0+cGFnZVZpZXctPnRyYW5zZm9ybVRvSXRlbSgpLm1hcChwb2ludEluV2Vi
Q29vcmRpbmF0ZXMpOworfQorCitRUmVjdEYgUVF1aWNrV2ViVmlldzo6bWFwUmVjdEZyb21XZWJD
b29yZGluYXRlcyhjb25zdCBRUmVjdEYmIHJlY3RJbldlYkNvb3JkaWFudGVzKSBjb25zdAorewor
ICAgIFFfRChjb25zdCBRUXVpY2tXZWJWaWV3KTsKKyAgICByZXR1cm4gZC0+cGFnZVZpZXctPnRy
YW5zZm9ybVRvSXRlbSgpLm1hcFJlY3QocmVjdEluV2ViQ29vcmRpYW50ZXMpOworfQorCiBRU3Ry
aW5nIFFRdWlja1dlYlZpZXc6OnRpdGxlKCkgY29uc3QKIHsKICAgICBRX0QoY29uc3QgUVF1aWNr
V2ViVmlldyk7CkBAIC04MDgsMTYgKzgyNywxMzAgQEAgdm9pZCBRUXVpY2tXZWJWaWV3OjpnZW9t
ZXRyeUNoYW5nZWQoY29uc3QgUVJlY3RGJiBuZXdHZW9tZXRyeSwgY29uc3QgUVJlY3RGJiBvbGQK
ICAgICB9CiB9CiAKK3ZvaWQgUVF1aWNrV2ViVmlldzo6a2V5UHJlc3NFdmVudChRS2V5RXZlbnQq
IGV2ZW50KQoreworICAgIHRoaXMtPmV2ZW50KGV2ZW50KTsKK30KKwordm9pZCBRUXVpY2tXZWJW
aWV3OjprZXlSZWxlYXNlRXZlbnQoUUtleUV2ZW50KiBldmVudCkKK3sKKyAgICB0aGlzLT5ldmVu
dChldmVudCk7Cit9CisKK3ZvaWQgUVF1aWNrV2ViVmlldzo6aW5wdXRNZXRob2RFdmVudChRSW5w
dXRNZXRob2RFdmVudCogZXZlbnQpCit7CisgICAgdGhpcy0+ZXZlbnQoZXZlbnQpOworfQorCiB2
b2lkIFFRdWlja1dlYlZpZXc6OmZvY3VzSW5FdmVudChRRm9jdXNFdmVudCogZXZlbnQpCiB7Ci0g
ICAgUV9EKFFRdWlja1dlYlZpZXcpOwotICAgIGQtPnBhZ2VWaWV3LT5ldmVudChldmVudCk7Cisg
ICAgdGhpcy0+ZXZlbnQoZXZlbnQpOwogfQogCiB2b2lkIFFRdWlja1dlYlZpZXc6OmZvY3VzT3V0
RXZlbnQoUUZvY3VzRXZlbnQqIGV2ZW50KQogeworICAgIHRoaXMtPmV2ZW50KGV2ZW50KTsKK30K
Kwordm9pZCBRUXVpY2tXZWJWaWV3Ojp0b3VjaEV2ZW50KFFUb3VjaEV2ZW50KiBldmVudCkKK3sK
KyAgICBmb3JjZUFjdGl2ZUZvY3VzKCk7CisgICAgdGhpcy0+ZXZlbnQoZXZlbnQpOworfQorCit2
b2lkIFFRdWlja1dlYlZpZXc6Om1vdXNlUHJlc3NFdmVudChRTW91c2VFdmVudCogZXZlbnQpCit7
CisgICAgZm9yY2VBY3RpdmVGb2N1cygpOworICAgIHRoaXMtPmV2ZW50KGV2ZW50KTsKK30KKwor
dm9pZCBRUXVpY2tXZWJWaWV3Ojptb3VzZU1vdmVFdmVudChRTW91c2VFdmVudCogZXZlbnQpCit7
CisgICAgdGhpcy0+ZXZlbnQoZXZlbnQpOworfQorCit2b2lkIFFRdWlja1dlYlZpZXc6Om1vdXNl
UmVsZWFzZUV2ZW50KFFNb3VzZUV2ZW50KiBldmVudCkKK3sKKyAgICB0aGlzLT5ldmVudChldmVu
dCk7Cit9CisKK3ZvaWQgUVF1aWNrV2ViVmlldzo6bW91c2VEb3VibGVDbGlja0V2ZW50KFFNb3Vz
ZUV2ZW50KiBldmVudCkKK3sKKyAgICB0aGlzLT5ldmVudChldmVudCk7Cit9CisKK3ZvaWQgUVF1
aWNrV2ViVmlldzo6d2hlZWxFdmVudChRV2hlZWxFdmVudCogZXZlbnQpCit7CisgICAgdGhpcy0+
ZXZlbnQoZXZlbnQpOworfQorCit2b2lkIFFRdWlja1dlYlZpZXc6OmhvdmVyRW50ZXJFdmVudChR
SG92ZXJFdmVudCogZXZlbnQpCit7CisgICAgdGhpcy0+ZXZlbnQoZXZlbnQpOworfQorCit2b2lk
IFFRdWlja1dlYlZpZXc6OmhvdmVyTW92ZUV2ZW50KFFIb3ZlckV2ZW50KiBldmVudCkKK3sKKyAg
ICB0aGlzLT5ldmVudChldmVudCk7Cit9CisKK3ZvaWQgUVF1aWNrV2ViVmlldzo6aG92ZXJMZWF2
ZUV2ZW50KFFIb3ZlckV2ZW50KiBldmVudCkKK3sKKyAgICB0aGlzLT5ldmVudChldmVudCk7Cit9
CisKK3ZvaWQgUVF1aWNrV2ViVmlldzo6ZHJhZ01vdmVFdmVudChRRHJhZ01vdmVFdmVudCogZXZl
bnQpCit7CisgICAgdGhpcy0+ZXZlbnQoZXZlbnQpOworfQorCit2b2lkIFFRdWlja1dlYlZpZXc6
OmRyYWdFbnRlckV2ZW50KFFEcmFnRW50ZXJFdmVudCogZXZlbnQpCit7CisgICAgdGhpcy0+ZXZl
bnQoZXZlbnQpOworfQorCit2b2lkIFFRdWlja1dlYlZpZXc6OmRyYWdMZWF2ZUV2ZW50KFFEcmFn
TGVhdmVFdmVudCogZXZlbnQpCit7CisgICAgdGhpcy0+ZXZlbnQoZXZlbnQpOworfQorCit2b2lk
IFFRdWlja1dlYlZpZXc6OmRyb3BFdmVudChRRHJvcEV2ZW50KiBldmVudCkKK3sKKyAgICB0aGlz
LT5ldmVudChldmVudCk7Cit9CisKK2Jvb2wgUVF1aWNrV2ViVmlldzo6ZXZlbnQoUUV2ZW50KiBl
dikKK3sKICAgICBRX0QoUVF1aWNrV2ViVmlldyk7Ci0gICAgZC0+cGFnZVZpZXctPmV2ZW50KGV2
ZW50KTsKKworICAgIHN3aXRjaCAoZXYtPnR5cGUoKSkgeworICAgIGNhc2UgUUV2ZW50OjpNb3Vz
ZU1vdmU6CisgICAgY2FzZSBRRXZlbnQ6Ok1vdXNlQnV0dG9uUHJlc3M6CisgICAgY2FzZSBRRXZl
bnQ6Ok1vdXNlQnV0dG9uUmVsZWFzZToKKyAgICBjYXNlIFFFdmVudDo6TW91c2VCdXR0b25EYmxD
bGljazoKKyAgICBjYXNlIFFFdmVudDo6V2hlZWw6CisgICAgY2FzZSBRRXZlbnQ6OkhvdmVyTGVh
dmU6CisgICAgY2FzZSBRRXZlbnQ6OkhvdmVyRW50ZXI6CisgICAgY2FzZSBRRXZlbnQ6OkhvdmVy
TW92ZToKKyAgICBjYXNlIFFFdmVudDo6RHJhZ0VudGVyOgorICAgIGNhc2UgUUV2ZW50OjpEcmFn
TGVhdmU6CisgICAgY2FzZSBRRXZlbnQ6OkRyYWdNb3ZlOgorICAgIGNhc2UgUUV2ZW50OjpEcm9w
OgorICAgIGNhc2UgUUV2ZW50OjpLZXlQcmVzczoKKyAgICBjYXNlIFFFdmVudDo6S2V5UmVsZWFz
ZToKKyAgICBjYXNlIFFFdmVudDo6Rm9jdXNJbjoKKyAgICBjYXNlIFFFdmVudDo6Rm9jdXNPdXQ6
CisgICAgY2FzZSBRRXZlbnQ6OlRvdWNoQmVnaW46CisgICAgY2FzZSBRRXZlbnQ6OlRvdWNoRW5k
OgorICAgIGNhc2UgUUV2ZW50OjpUb3VjaFVwZGF0ZToKKyAgICAgICAgaWYgKGQtPnBhZ2VWaWV3
LT5ldmVudEhhbmRsZXIoKS0+aGFuZGxlRXZlbnQoZXYpKQorICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQorCisgICAgaWYgKGV2LT50eXBlKCkgPT0gUUV2ZW50OjpJbnB1dE1ldGhvZCkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBUaGlzIGlzIG5lY2Vzc2FyeSB0byBhdm9pZCBhbiBl
bmRsZXNzIGxvb3AgaW4gY29ubmVjdGlvbiB3aXRoIFFRdWlja0l0ZW06OmV2ZW50KCkuCisKKyAg
ICByZXR1cm4gUVF1aWNrSXRlbTo6ZXZlbnQoZXYpOwogfQogCiBXS1BhZ2VSZWYgUVF1aWNrV2Vi
Vmlldzo6cGFnZVJlZigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9xdC9xcXVpY2t3ZWJ2aWV3X3AuaAppbmRleCA0ZjlhMjBlLi45NGU3YTkxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wLmgKQEAgLTg3
LDYgKzg3LDExIEBAIHB1YmxpYzoKICAgICBib29sIGxvYWRpbmcoKSBjb25zdDsKICAgICBib29s
IGNhblJlbG9hZCgpIGNvbnN0OwogCisgICAgUVBvaW50RiBtYXBUb1dlYkNvb3JkaW5hdGVzKGNv
bnN0IFFQb2ludEYmIHBvaW50SW5WaWV3Q29vcmRpbmF0ZXMpIGNvbnN0OworICAgIFFSZWN0RiBt
YXBSZWN0VG9XZWJDb29yZGluYXRlcyhjb25zdCBRUmVjdEYmIHJlY3RJblZpZXdDb29yZGlhbnRl
cykgY29uc3Q7CisgICAgUVBvaW50RiBtYXBGcm9tV2ViQ29vcmRpbmF0ZXMoY29uc3QgUVBvaW50
RiYgcG9pbnRJbldlYkNvb3JkaW5hdGVzKSBjb25zdDsKKyAgICBRUmVjdEYgbWFwUmVjdEZyb21X
ZWJDb29yZGluYXRlcyhjb25zdCBRUmVjdEYmIHJlY3RJbldlYkNvb3JkaWFudGVzKSBjb25zdDsK
KwogICAgIFFRdWlja1dlYlBhZ2UqIHBhZ2UoKTsKIAogICAgIFFRdWlja1dlYlZpZXdFeHBlcmlt
ZW50YWwqIGV4cGVyaW1lbnRhbCgpIGNvbnN0OwpAQCAtMTE3LDggKzEyMiwyNiBAQCBRX1NJR05B
TFM6CiAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgZ2VvbWV0cnlDaGFuZ2VkKGNvbnN0
IFFSZWN0RiYsIGNvbnN0IFFSZWN0RiYpOworCisgICAgdmlydHVhbCB2b2lkIGtleVByZXNzRXZl
bnQoUUtleUV2ZW50Kik7CisgICAgdmlydHVhbCB2b2lkIGtleVJlbGVhc2VFdmVudChRS2V5RXZl
bnQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgaW5wdXRNZXRob2RFdmVudChRSW5wdXRNZXRob2RFdmVu
dCopOwogICAgIHZpcnR1YWwgdm9pZCBmb2N1c0luRXZlbnQoUUZvY3VzRXZlbnQqKTsKICAgICB2
aXJ0dWFsIHZvaWQgZm9jdXNPdXRFdmVudChRRm9jdXNFdmVudCopOworICAgIHZpcnR1YWwgdm9p
ZCB0b3VjaEV2ZW50KFFUb3VjaEV2ZW50Kik7CisgICAgdmlydHVhbCB2b2lkIG1vdXNlUHJlc3NF
dmVudChRTW91c2VFdmVudCopOworICAgIHZpcnR1YWwgdm9pZCBtb3VzZU1vdmVFdmVudChRTW91
c2VFdmVudCopOworICAgIHZpcnR1YWwgdm9pZCBtb3VzZVJlbGVhc2VFdmVudChRTW91c2VFdmVu
dCAqKTsKKyAgICB2aXJ0dWFsIHZvaWQgbW91c2VEb3VibGVDbGlja0V2ZW50KFFNb3VzZUV2ZW50
Kik7CisgICAgdmlydHVhbCB2b2lkIHdoZWVsRXZlbnQoUVdoZWVsRXZlbnQqKTsKKyAgICB2aXJ0
dWFsIHZvaWQgaG92ZXJFbnRlckV2ZW50KFFIb3ZlckV2ZW50Kik7CisgICAgdmlydHVhbCB2b2lk
IGhvdmVyTW92ZUV2ZW50KFFIb3ZlckV2ZW50Kik7CisgICAgdmlydHVhbCB2b2lkIGhvdmVyTGVh
dmVFdmVudChRSG92ZXJFdmVudCopOworICAgIHZpcnR1YWwgdm9pZCBkcmFnTW92ZUV2ZW50KFFE
cmFnTW92ZUV2ZW50Kik7CisgICAgdmlydHVhbCB2b2lkIGRyYWdFbnRlckV2ZW50KFFEcmFnRW50
ZXJFdmVudCopOworICAgIHZpcnR1YWwgdm9pZCBkcmFnTGVhdmVFdmVudChRRHJhZ0xlYXZlRXZl
bnQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJvcEV2ZW50KFFEcm9wRXZlbnQqKTsKKyAgICB2aXJ0
dWFsIGJvb2wgZXZlbnQoUUV2ZW50Kik7CiAKIHByaXZhdGU6CiAgICAgUV9ERUNMQVJFX1BSSVZB
VEUoUVF1aWNrV2ViVmlldykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvcXQvcXdlYnZpZXdwb3J0aW5mby5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L3F0L3F3ZWJ2aWV3cG9ydGluZm8uY3BwCmluZGV4IDhiNmZiNDEuLjczNTE5NmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYnZpZXdwb3J0aW5mby5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2Vidmlld3BvcnRpbmZvLmNw
cApAQCAtMzgsNyArMzgsNyBAQCBRV2ViVmlld3BvcnRJbmZvOjp+UVdlYlZpZXdwb3J0SW5mbygp
CiAKIFFTaXplIFFXZWJWaWV3cG9ydEluZm86OmNvbnRlbnRzU2l6ZSgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIFFTaXplKG1fd2ViVmlld1ByaXZhdGUtPnBhZ2VWaWV3LT53aWR0aCgpLCBtX3dlYlZp
ZXdQcml2YXRlLT5wYWdlVmlldy0+aGVpZ2h0KCkpOworICAgIHJldHVybiBRU2l6ZShtX3dlYlZp
ZXdQcml2YXRlLT5wYWdlVmlldy0+Y29udGVudFNpemUoKS50b1NpemUoKSk7CiB9CiAKIFFWYXJp
YW50IFFXZWJWaWV3cG9ydEluZm86OmN1cnJlbnRTY2FsZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FxdWlja3dlYnZpZXcvdHN0X3Fx
dWlja3dlYnZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9x
cXVpY2t3ZWJ2aWV3L3RzdF9xcXVpY2t3ZWJ2aWV3LmNwcAppbmRleCBhYThjZGJhLi5hNjkzY2U2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FxdWlj
a3dlYnZpZXcvdHN0X3FxdWlja3dlYnZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvcXQvdGVzdHMvcXF1aWNrd2Vidmlldy90c3RfcXF1aWNrd2Vidmlldy5jcHAKQEAg
LTI4Myw3ICsyODMsNyBAQCB2b2lkIHRzdF9RUXVpY2tXZWJWaWV3OjpzY3JvbGxSZXF1ZXN0KCkK
ICAgICAvLyBDT01QQVJFIHdpdGggdGhlIHBvc2l0aW9uIHJlcXVlc3RlZCBpbiB0aGUgaHRtbAog
ICAgIC8vIFVzZSBxUm91bmQgYXMgdGhhdCBpcyBhbHNvIHVzZWQgd2hlbiBjYWxjdWxhdGluZyB0
aGUgcG9zaXRpb24KICAgICAvLyBpbiBXZWJLaXQuCi0gICAgaW50IHkgPSAtcVJvdW5kKDUwICog
d2ViVmlldygpLT5wYWdlKCktPnNjYWxlKCkpOworICAgIGludCB5ID0gLXFSb3VuZCg1MCAqIHdl
YlZpZXcoKS0+cGFnZSgpLT5yZW5kZXJpbmdTY2FsZSgpKTsKICAgICBRVkVSSUZZKHdlYlZpZXco
KS0+cGFnZSgpLT5wb3MoKS55KCkgPT0geSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9xdC9RdFBpbmNoR2VzdHVyZVJlY29nbml6ZXIuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL3F0L1F0UGluY2hHZXN0dXJlUmVjb2duaXplci5jcHAKaW5kZXggOTE2
Nzc5Mi4uNzY5OWFkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0
UGluY2hHZXN0dXJlUmVjb2duaXplci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L3F0L1F0UGluY2hHZXN0dXJlUmVjb2duaXplci5jcHAKQEAgLTExMiw4ICsxMTIsOCBAQCBib29s
IFF0UGluY2hHZXN0dXJlUmVjb2duaXplcjo6cmVjb2duaXplKGNvbnN0IFFUb3VjaEV2ZW50KiBl
dmVudCkKICAgICAgICAgICAgIGNvbnN0IHFyZWFsIGN1cnJlbnRTcGFuRGlzdGFuY2UgPSBRTGlu
ZUYocG9pbnQxLnNjcmVlblBvcygpLCBwb2ludDIuc2NyZWVuUG9zKCkpLmxlbmd0aCgpOwogICAg
ICAgICAgICAgY29uc3QgcXJlYWwgaW5pdGlhbFNwYW5EaXN0YW5jZSA9IFFMaW5lRihtX3BvaW50
MS5pbml0aWFsU2NyZWVuUG9zaXRpb24sIG1fcG9pbnQyLmluaXRpYWxTY3JlZW5Qb3NpdGlvbiku
bGVuZ3RoKCk7CiAgICAgICAgICAgICBjb25zdCBxcmVhbCB0b3RhbFNjYWxlRmFjdG9yID0gY3Vy
cmVudFNwYW5EaXN0YW5jZSAvIGluaXRpYWxTcGFuRGlzdGFuY2U7Ci0gICAgICAgICAgICBjb25z
dCBRUG9pbnRGIHRvdWNoQ2VudGVySW5QYWdlVmlld0Nvb3JkaW5hdGVzID0gY29tcHV0ZVBpbmNo
Q2VudGVyKHBvaW50MSwgcG9pbnQyKTsKLSAgICAgICAgICAgIGludGVyYWN0aW9uRW5naW5lKCkt
PnBpbmNoR2VzdHVyZVJlcXVlc3RVcGRhdGUodG91Y2hDZW50ZXJJblBhZ2VWaWV3Q29vcmRpbmF0
ZXMsIHRvdGFsU2NhbGVGYWN0b3IpOworICAgICAgICAgICAgY29uc3QgUVBvaW50RiB0b3VjaENl
bnRlckluVmlld0Nvb3JkaW5hdGVzID0gY29tcHV0ZVBpbmNoQ2VudGVyKHBvaW50MSwgcG9pbnQy
KTsKKyAgICAgICAgICAgIGludGVyYWN0aW9uRW5naW5lKCktPnBpbmNoR2VzdHVyZVJlcXVlc3RV
cGRhdGUodG91Y2hDZW50ZXJJblZpZXdDb29yZGluYXRlcywgdG90YWxTY2FsZUZhY3Rvcik7CiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRWaWV3cG9ydEludGVyYWN0
aW9uRW5naW5lLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFZpZXdwb3J0SW50
ZXJhY3Rpb25FbmdpbmUuY3BwCmluZGV4IDc4ODM0OWEuLmJkNjEyMzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFZpZXdwb3J0SW50ZXJhY3Rpb25F
bmdpbmUuY3BwCkBAIC0yMywxMCArMjMsMTMgQEAKICNpbmNsdWRlICJRdFZpZXdwb3J0SW50ZXJh
Y3Rpb25FbmdpbmUuaCIKIAogI2luY2x1ZGUgIlBhc3NPd25QdHIuaCIKKyNpbmNsdWRlICJxcXVp
Y2t3ZWJwYWdlX3AuaCIKKyNpbmNsdWRlICJxcXVpY2t3ZWJ2aWV3X3AuaCIKICNpbmNsdWRlIDxR
UG9pbnRGPgogI2luY2x1ZGUgPFFTY3JvbGxFdmVudD4KICNpbmNsdWRlIDxRU2Nyb2xsUHJlcGFy
ZUV2ZW50PgogI2luY2x1ZGUgPFFTY3JvbGxlclByb3BlcnRpZXM+CisjaW5jbHVkZSA8UVRyYW5z
Zm9ybT4KICNpbmNsdWRlIDxRV2hlZWxFdmVudD4KICNpbmNsdWRlIDxRdFF1aWNrL3FxdWlja2l0
ZW0uaD4KIApAQCAtMTExLDcgKzExNCw3IEBAIGlubGluZSBRUmVjdEYgUXRWaWV3cG9ydEludGVy
YWN0aW9uRW5naW5lOjppdGVtUmVjdEZyb21DU1MoY29uc3QgUVJlY3RGJiBjc3NSZWN0CiAgICAg
cmV0dXJuIGl0ZW1SZWN0OwogfQogCi1RdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OlF0Vmll
d3BvcnRJbnRlcmFjdGlvbkVuZ2luZShjb25zdCBRUXVpY2tJdGVtKiB2aWV3cG9ydCwgUVF1aWNr
SXRlbSogY29udGVudCkKK1F0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6UXRWaWV3cG9ydElu
dGVyYWN0aW9uRW5naW5lKGNvbnN0IFFRdWlja1dlYlZpZXcqIHZpZXdwb3J0LCBRUXVpY2tXZWJQ
YWdlKiBjb250ZW50KQogICAgIDogbV92aWV3cG9ydCh2aWV3cG9ydCkKICAgICAsIG1fY29udGVu
dChjb250ZW50KQogICAgICwgbV9zdXNwZW5kQ291bnQoMCkKQEAgLTE3NCw3ICsxNzcsNyBAQCB2
b2lkIFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6c2V0SXRlbVJlY3RWaXNpYmxlKGNvbnN0
IFFSZWN0RiYgaXRlbVJlY3QpCiAKICAgICBxcmVhbCBpdGVtU2NhbGUgPSBtX3ZpZXdwb3J0LT53
aWR0aCgpIC8gaXRlbVJlY3Qud2lkdGgoKTsKIAotICAgIG1fY29udGVudC0+c2V0U2NhbGUoaXRl
bVNjYWxlKTsKKyAgICBtX2NvbnRlbnQtPnNldFJlbmRlcmluZ1NjYWxlKGl0ZW1TY2FsZSk7CiAK
ICAgICAvLyBXZSBuZWVkIHRvIGFuaW1hdGUgdGhlIGNvbnRlbnQgYnV0IHRoZSBwb3NpdGlvbiBy
ZXByZXNlbnRzIHRoZSB2aWV3cG9ydCBoZW5jZSB3ZSBuZWVkIHRvIGludmVydCB0aGUgcG9zaXRp
b24gaGVyZS4KICAgICAvLyBUbyBhbmltYXRlIHRoZSBwb3NpdGlvbiB0b2dldGhlciB3aXRoIHRo
ZSBzY2FsZSB3ZSBtdWx0aXBseSB0aGUgcG9zaXRpb24gd2l0aCB0aGUgY3VycmVudCBzY2FsZTsK
QEAgLTE4Myw3ICsxODYsNyBAQCB2b2lkIFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6c2V0
SXRlbVJlY3RWaXNpYmxlKGNvbnN0IFFSZWN0RiYgaXRlbVJlY3QpCiAKIGJvb2wgUXRWaWV3cG9y
dEludGVyYWN0aW9uRW5naW5lOjphbmltYXRlSXRlbVJlY3RWaXNpYmxlKGNvbnN0IFFSZWN0RiYg
aXRlbVJlY3QpCiB7Ci0gICAgUVJlY3RGIGN1cnJlbnRJdGVtUmVjdFZpc2libGUgPSBtX2NvbnRl
bnQtPm1hcFJlY3RGcm9tSXRlbShtX3ZpZXdwb3J0LCBtX3ZpZXdwb3J0LT5ib3VuZGluZ1JlY3Qo
KSk7CisgICAgUVJlY3RGIGN1cnJlbnRJdGVtUmVjdFZpc2libGUgPSBtX3ZpZXdwb3J0LT5tYXBS
ZWN0VG9XZWJDb29yZGluYXRlcyhtX3ZpZXdwb3J0LT5ib3VuZGluZ1JlY3QoKSk7CiAgICAgaWYg
KGl0ZW1SZWN0ID09IGN1cnJlbnRJdGVtUmVjdFZpc2libGUpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIApAQCAtMjM4LDcgKzI0MSw3IEBAIGJvb2wgUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5l
OjpldmVudChRRXZlbnQqIGV2ZW50KQogICAgICAgICBRU2Nyb2xsUHJlcGFyZUV2ZW50KiBwcmVw
YXJlRXZlbnQgPSBzdGF0aWNfY2FzdDxRU2Nyb2xsUHJlcGFyZUV2ZW50Kj4oZXZlbnQpOwogICAg
ICAgICBjb25zdCBRUmVjdEYgdmlld3BvcnRSZWN0ID0gbV92aWV3cG9ydC0+Ym91bmRpbmdSZWN0
KCk7CiAgICAgICAgIGNvbnN0IFFSZWN0RiBjb250ZW50UmVjdCA9IG1fdmlld3BvcnQtPm1hcFJl
Y3RGcm9tSXRlbShtX2NvbnRlbnQsIG1fY29udGVudC0+Ym91bmRpbmdSZWN0KCkpOwotICAgICAg
ICBjb25zdCBRUmVjdEYgcG9zUmFuZ2UgPSBjb21wdXRlUG9zUmFuZ2VGb3JJdGVtQXRTY2FsZSht
X2NvbnRlbnQtPnNjYWxlKCkpOworICAgICAgICBjb25zdCBRUmVjdEYgcG9zUmFuZ2UgPSBjb21w
dXRlUG9zUmFuZ2VGb3JJdGVtQXRTY2FsZShtX2NvbnRlbnQtPnJlbmRlcmluZ1NjYWxlKCkpOwog
ICAgICAgICBwcmVwYXJlRXZlbnQtPnNldENvbnRlbnRQb3NSYW5nZShwb3NSYW5nZSk7CiAgICAg
ICAgIHByZXBhcmVFdmVudC0+c2V0Vmlld3BvcnRTaXplKHZpZXdwb3J0UmVjdC5zaXplKCkpOwog
CkBAIC0yNTEsMTEgKzI1NCwxMSBAQCBib29sIFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6
ZXZlbnQoUUV2ZW50KiBldmVudCkKICAgICAgICAgUVNjcm9sbEV2ZW50KiBzY3JvbGxFdmVudCA9
IHN0YXRpY19jYXN0PFFTY3JvbGxFdmVudCo+KGV2ZW50KTsKICAgICAgICAgUVBvaW50RiBuZXdQ
b3MgPSAtc2Nyb2xsRXZlbnQtPmNvbnRlbnRQb3MoKSAtIHNjcm9sbEV2ZW50LT5vdmVyc2hvb3RE
aXN0YW5jZSgpOwogICAgICAgICBpZiAobV9jb250ZW50LT5wb3MoKSAhPSBuZXdQb3MpIHsKLSAg
ICAgICAgICAgIFFQb2ludEYgY3VycmVudFBvc0luQ29udGVudENvb3JkaW5hdGVzID0gbV9jb250
ZW50LT5tYXBUb0l0ZW0obV9jb250ZW50LT5wYXJlbnRJdGVtKCksIG1fY29udGVudC0+cG9zKCkp
OwotICAgICAgICAgICAgUVBvaW50RiBuZXdQb3NJbkNvbnRlbnRDb29yZGluYXRlcyA9IG1fY29u
dGVudC0+bWFwVG9JdGVtKG1fY29udGVudC0+cGFyZW50SXRlbSgpLCBuZXdQb3MpOworICAgICAg
ICAgICAgUVBvaW50RiBjdXJyZW50UG9zSW5XZWJDb29yZGluYXRlcyA9IG1fdmlld3BvcnQtPm1h
cFRvV2ViQ29vcmRpbmF0ZXMobV9jb250ZW50LT5wb3MoKSk7CisgICAgICAgICAgICBRUG9pbnRG
IG5ld1Bvc0luV2ViQ29vcmRpbmF0ZXMgPSBtX3ZpZXdwb3J0LT5tYXBUb1dlYkNvb3JkaW5hdGVz
KG5ld1Bvcyk7CiAKICAgICAgICAgICAgIC8vIFRoaXMgbXVzdCBiZSBlbWl0dGVkIGJlZm9yZSB2
aWV3cG9ydFVwZGF0ZVJlcXVlc3RlZCBzbyB0aGF0IHRoZSB3ZWIgcHJvY2VzcyBrbm93cyB3aGVy
ZSB0byBsb29rIGZvciB0aWxlcy4KLSAgICAgICAgICAgIGVtaXQgdmlld3BvcnRUcmFqZWN0b3J5
VmVjdG9yQ2hhbmdlZChjdXJyZW50UG9zSW5Db250ZW50Q29vcmRpbmF0ZXMtIG5ld1Bvc0luQ29u
dGVudENvb3JkaW5hdGVzKTsKKyAgICAgICAgICAgIGVtaXQgdmlld3BvcnRUcmFqZWN0b3J5VmVj
dG9yQ2hhbmdlZChjdXJyZW50UG9zSW5XZWJDb29yZGluYXRlcyAtIG5ld1Bvc0luV2ViQ29vcmRp
bmF0ZXMpOwogICAgICAgICAgICAgbV9jb250ZW50LT5zZXRQb3MobmV3UG9zKTsKICAgICAgICAg
fQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTI5Nyw3ICszMDAsNyBAQCB2b2lkIFF0Vmlld3Bv
cnRJbnRlcmFjdGlvbkVuZ2luZTo6d2hlZWxFdmVudChRV2hlZWxFdmVudCogZXYpCiAgICAgZWxz
ZQogICAgICAgICBuZXdQb3MucnkoKSArPSBkZWx0YTsKIAotICAgIFFSZWN0RiBlbmRQb3NSYW5n
ZSA9IGNvbXB1dGVQb3NSYW5nZUZvckl0ZW1BdFNjYWxlKG1fY29udGVudC0+c2NhbGUoKSk7Cisg
ICAgUVJlY3RGIGVuZFBvc1JhbmdlID0gY29tcHV0ZVBvc1JhbmdlRm9ySXRlbUF0U2NhbGUobV9j
b250ZW50LT5yZW5kZXJpbmdTY2FsZSgpKTsKICAgICBtX2NvbnRlbnQtPnNldFBvcygtYm91bmRQ
b3NpdGlvbihlbmRQb3NSYW5nZS50b3BMZWZ0KCksIG5ld1BvcywgZW5kUG9zUmFuZ2UuYm90dG9t
UmlnaHQoKSkpOwogfQogCkBAIC0zMDcsNyArMzEwLDcgQEAgdm9pZCBRdFZpZXdwb3J0SW50ZXJh
Y3Rpb25FbmdpbmU6OnBhZ2VQb3NpdGlvblJlcXVlc3QoY29uc3QgUVBvaW50JiBwYWdlUG9zaXRp
b24KICAgICBpZiAobV9zdXNwZW5kQ291bnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIHFyZWFs
IGVuZEl0ZW1TY2FsZSA9IG1fY29udGVudC0+c2NhbGUoKTsgLy8gU3RheSBhdCBzYW1lIHNjYWxl
LgorICAgIHFyZWFsIGVuZEl0ZW1TY2FsZSA9IG1fY29udGVudC0+cmVuZGVyaW5nU2NhbGUoKTsg
Ly8gU3RheSBhdCBzYW1lIHNjYWxlLgogCiAgICAgUVJlY3RGIGVuZFBvc1JhbmdlID0gY29tcHV0
ZVBvc1JhbmdlRm9ySXRlbUF0U2NhbGUoZW5kSXRlbVNjYWxlKTsKICAgICBRUG9pbnRGIGVuZFBv
c2l0aW9uID0gYm91bmRQb3NpdGlvbihlbmRQb3NSYW5nZS50b3BMZWZ0KCksIHBhZ2VQb3NpdGlv
biAqIGVuZEl0ZW1TY2FsZSwgZW5kUG9zUmFuZ2UuYm90dG9tUmlnaHQoKSk7CkBAIC0zMTksNyAr
MzIyLDcgQEAgdm9pZCBRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OnBhZ2VQb3NpdGlvblJl
cXVlc3QoY29uc3QgUVBvaW50JiBwYWdlUG9zaXRpb24KIAogUVJlY3RGIFF0Vmlld3BvcnRJbnRl
cmFjdGlvbkVuZ2luZTo6Y29tcHV0ZVBvc1JhbmdlRm9ySXRlbUF0U2NhbGUocXJlYWwgaXRlbVNj
YWxlKSBjb25zdAogewotICAgIGNvbnN0IFFTaXplRiBjb250ZW50SXRlbVNpemUgPSBtX2NvbnRl
bnQtPmJvdW5kaW5nUmVjdCgpLnNpemUoKSAqIGl0ZW1TY2FsZTsKKyAgICBjb25zdCBRU2l6ZUYg
Y29udGVudEl0ZW1TaXplID0gbV9jb250ZW50LT5jb250ZW50U2l6ZSgpICogaXRlbVNjYWxlOwog
ICAgIGNvbnN0IFFTaXplRiB2aWV3cG9ydEl0ZW1TaXplID0gbV92aWV3cG9ydC0+Ym91bmRpbmdS
ZWN0KCkuc2l6ZSgpOwogCiAgICAgY29uc3QgcXJlYWwgaG9yaXpvbnRhbFJhbmdlID0gY29udGVu
dEl0ZW1TaXplLndpZHRoKCkgLSB2aWV3cG9ydEl0ZW1TaXplLndpZHRoKCk7CkBAIC00MDYsNyAr
NDA5LDcgQEAgYm9vbCBRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OmVuc3VyZUNvbnRlbnRX
aXRoaW5WaWV3cG9ydEJvdW5kYXJ5KGJvb2wgaW1tZWQKICAgICBjb25zdCBRUmVjdEYgdmlld3Bv
cnRSZWN0ID0gbV92aWV3cG9ydC0+Ym91bmRpbmdSZWN0KCk7CiAgICAgUVBvaW50RiB2aWV3cG9y
dEhvdHNwb3QgPSB2aWV3cG9ydFJlY3QuY2VudGVyKCk7CiAKLSAgICBRUG9pbnRGIGVuZFBvc2l0
aW9uID0gbV9jb250ZW50LT5tYXBGcm9tSXRlbShtX3ZpZXdwb3J0LCB2aWV3cG9ydEhvdHNwb3Qp
ICogZW5kSXRlbVNjYWxlIC0gdmlld3BvcnRIb3RzcG90OworICAgIFFQb2ludEYgZW5kUG9zaXRp
b24gPSBtX3ZpZXdwb3J0LT5tYXBUb1dlYkNvb3JkaW5hdGVzKHZpZXdwb3J0SG90c3BvdCkgKiBl
bmRJdGVtU2NhbGUgLSB2aWV3cG9ydEhvdHNwb3Q7CiAKICAgICBRUmVjdEYgZW5kUG9zUmFuZ2Ug
PSBjb21wdXRlUG9zUmFuZ2VGb3JJdGVtQXRTY2FsZShlbmRJdGVtU2NhbGUpOwogICAgIGVuZFBv
c2l0aW9uID0gYm91bmRQb3NpdGlvbihlbmRQb3NSYW5nZS50b3BMZWZ0KCksIGVuZFBvc2l0aW9u
LCBlbmRQb3NSYW5nZS5ib3R0b21SaWdodCgpKTsKQEAgLTQ0MSw3ICs0NDQsNyBAQCB2b2lkIFF0
Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6YXBwbHlDb25zdHJhaW50cyhjb25zdCBDb25zdHJh
aW50cyYgY29uc3RyYWludAogCiAgICAgaWYgKCFtX2hhZFVzZXJJbnRlcmFjdGlvbikgewogICAg
ICAgICBxcmVhbCBpbml0aWFsU2NhbGUgPSBpbm5lckJvdW5kZWRDU1NTY2FsZShtX2NvbnN0cmFp
bnRzLmluaXRpYWxTY2FsZSk7Ci0gICAgICAgIG1fY29udGVudC0+c2V0U2NhbGUoaXRlbVNjYWxl
RnJvbUNTUyhpbml0aWFsU2NhbGUpKTsKKyAgICAgICAgbV9jb250ZW50LT5zZXRSZW5kZXJpbmdT
Y2FsZShpdGVtU2NhbGVGcm9tQ1NTKGluaXRpYWxTY2FsZSkpOwogICAgIH0KIAogICAgIC8vIElm
IHRoZSB3ZWIgYXBwIGNoYW5nZXMgc3VjY2Vzc2l2ZWx5IGNoYW5nZXMgdGhlIHZpZXdwb3J0IG9u
IHB1cnBvc2UKQEAgLTQ1MSw3ICs0NTQsNyBAQCB2b2lkIFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVu
Z2luZTo6YXBwbHlDb25zdHJhaW50cyhjb25zdCBDb25zdHJhaW50cyYgY29uc3RyYWludAogCiBx
cmVhbCBRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OmN1cnJlbnRDU1NTY2FsZSgpCiB7Ci0g
ICAgcmV0dXJuIGNzc1NjYWxlRnJvbUl0ZW0obV9jb250ZW50LT5zY2FsZSgpKTsKKyAgICByZXR1
cm4gY3NzU2NhbGVGcm9tSXRlbShtX2NvbnRlbnQtPnJlbmRlcmluZ1NjYWxlKCkpOwogfQogCiBi
b29sIFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6c2Nyb2xsQW5pbWF0aW9uQWN0aXZlKCkg
Y29uc3QKQEAgLTQ3MywxNSArNDc2LDE1IEBAIGJvb2wgUXRWaWV3cG9ydEludGVyYWN0aW9uRW5n
aW5lOjpwYW5HZXN0dXJlQWN0aXZlKCkgY29uc3QKICAgICByZXR1cm4gc2Nyb2xsZXItPnN0YXRl
KCkgPT0gUVNjcm9sbGVyOjpQcmVzc2VkIHx8IHNjcm9sbGVyLT5zdGF0ZSgpID09IFFTY3JvbGxl
cjo6RHJhZ2dpbmc7CiB9CiAKLXZvaWQgUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpwYW5H
ZXN0dXJlU3RhcnRlZChjb25zdCBRUG9pbnRGJiB0b3VjaFBvaW50LCBxaW50NjQgZXZlbnRUaW1l
c3RhbXBNaWxsaXMpCit2b2lkIFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6cGFuR2VzdHVy
ZVN0YXJ0ZWQoY29uc3QgUVBvaW50RiYgdG91Y2hQb2ludEluVmlld3BvcnRDb29yZGluYXRlcywg
cWludDY0IGV2ZW50VGltZXN0YW1wTWlsbGlzKQogewogICAgIG1faGFkVXNlckludGVyYWN0aW9u
ID0gdHJ1ZTsKLSAgICBzY3JvbGxlcigpLT5oYW5kbGVJbnB1dChRU2Nyb2xsZXI6OklucHV0UHJl
c3MsIG1fdmlld3BvcnQtPm1hcEZyb21JdGVtKG1fY29udGVudCwgdG91Y2hQb2ludCksIGV2ZW50
VGltZXN0YW1wTWlsbGlzKTsKKyAgICBzY3JvbGxlcigpLT5oYW5kbGVJbnB1dChRU2Nyb2xsZXI6
OklucHV0UHJlc3MsIHRvdWNoUG9pbnRJblZpZXdwb3J0Q29vcmRpbmF0ZXMsIGV2ZW50VGltZXN0
YW1wTWlsbGlzKTsKIH0KIAotdm9pZCBRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OnBhbkdl
c3R1cmVSZXF1ZXN0VXBkYXRlKGNvbnN0IFFQb2ludEYmIHRvdWNoUG9pbnQsIHFpbnQ2NCBldmVu
dFRpbWVzdGFtcE1pbGxpcykKK3ZvaWQgUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpwYW5H
ZXN0dXJlUmVxdWVzdFVwZGF0ZShjb25zdCBRUG9pbnRGJiB0b3VjaFBvaW50SW5WaWV3cG9ydENv
b3JkaW5hdGVzLCBxaW50NjQgZXZlbnRUaW1lc3RhbXBNaWxsaXMpCiB7Ci0gICAgc2Nyb2xsZXIo
KS0+aGFuZGxlSW5wdXQoUVNjcm9sbGVyOjpJbnB1dE1vdmUsIG1fdmlld3BvcnQtPm1hcEZyb21J
dGVtKG1fY29udGVudCwgdG91Y2hQb2ludCksIGV2ZW50VGltZXN0YW1wTWlsbGlzKTsKKyAgICBz
Y3JvbGxlcigpLT5oYW5kbGVJbnB1dChRU2Nyb2xsZXI6OklucHV0TW92ZSwgdG91Y2hQb2ludElu
Vmlld3BvcnRDb29yZGluYXRlcywgZXZlbnRUaW1lc3RhbXBNaWxsaXMpOwogfQogCiB2b2lkIFF0
Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6cGFuR2VzdHVyZUNhbmNlbGxlZCgpCkBAIC00OTEs
OSArNDk0LDkgQEAgdm9pZCBRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OnBhbkdlc3R1cmVD
YW5jZWxsZWQoKQogICAgIHNjcm9sbGVyKCktPnN0b3AoKTsKIH0KIAotdm9pZCBRdFZpZXdwb3J0
SW50ZXJhY3Rpb25FbmdpbmU6OnBhbkdlc3R1cmVFbmRlZChjb25zdCBRUG9pbnRGJiB0b3VjaFBv
aW50LCBxaW50NjQgZXZlbnRUaW1lc3RhbXBNaWxsaXMpCit2b2lkIFF0Vmlld3BvcnRJbnRlcmFj
dGlvbkVuZ2luZTo6cGFuR2VzdHVyZUVuZGVkKGNvbnN0IFFQb2ludEYmIHRvdWNoUG9pbnRJblZp
ZXdwb3J0Q29vcmRpbmF0ZXMsIHFpbnQ2NCBldmVudFRpbWVzdGFtcE1pbGxpcykKIHsKLSAgICBz
Y3JvbGxlcigpLT5oYW5kbGVJbnB1dChRU2Nyb2xsZXI6OklucHV0UmVsZWFzZSwgbV92aWV3cG9y
dC0+bWFwRnJvbUl0ZW0obV9jb250ZW50LCB0b3VjaFBvaW50KSwgZXZlbnRUaW1lc3RhbXBNaWxs
aXMpOworICAgIHNjcm9sbGVyKCktPmhhbmRsZUlucHV0KFFTY3JvbGxlcjo6SW5wdXRSZWxlYXNl
LCB0b3VjaFBvaW50SW5WaWV3cG9ydENvb3JkaW5hdGVzLCBldmVudFRpbWVzdGFtcE1pbGxpcyk7
CiB9CiAKIGJvb2wgUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpzY2FsZUFuaW1hdGlvbkFj
dGl2ZSgpIGNvbnN0CkBAIC01MTIsNyArNTE1LDcgQEAgYm9vbCBRdFZpZXdwb3J0SW50ZXJhY3Rp
b25FbmdpbmU6OnBpbmNoR2VzdHVyZUFjdGl2ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcGluY2hT
dGFydFNjYWxlID4gMDsKIH0KIAotdm9pZCBRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OnBp
bmNoR2VzdHVyZVN0YXJ0ZWQoY29uc3QgUVBvaW50RiYgcGluY2hDZW50ZXJJbkNvbnRlbnRDb29y
ZGluYXRlcykKK3ZvaWQgUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpwaW5jaEdlc3R1cmVT
dGFydGVkKGNvbnN0IFFQb2ludEYmIHBpbmNoQ2VudGVySW5WaWV3cG9ydENvb3JkaW5hdGVzKQog
ewogICAgIEFTU0VSVCghbV9zdXNwZW5kQ291bnQpOwogCkBAIC01MjMsMTQgKzUyNiwxNCBAQCB2
b2lkIFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6cGluY2hHZXN0dXJlU3RhcnRlZChjb25z
dCBRUG9pbnRGJiBwaW5jaENlbnRlcgogCiAgICAgbV9zY2FsZVVwZGF0ZURlZmVycmVyID0gYWRv
cHRQdHIobmV3IFZpZXdwb3J0VXBkYXRlRGVmZXJyZXIodGhpcykpOwogCi0gICAgbV9sYXN0UGlu
Y2hDZW50ZXJJblZpZXdwb3J0Q29vcmRpbmF0ZXMgPSBtX3ZpZXdwb3J0LT5tYXBGcm9tSXRlbSht
X2NvbnRlbnQsIHBpbmNoQ2VudGVySW5Db250ZW50Q29vcmRpbmF0ZXMpOwotICAgIG1fcGluY2hT
dGFydFNjYWxlID0gbV9jb250ZW50LT5zY2FsZSgpOworICAgIG1fbGFzdFBpbmNoQ2VudGVySW5W
aWV3cG9ydENvb3JkaW5hdGVzID0gcGluY2hDZW50ZXJJblZpZXdwb3J0Q29vcmRpbmF0ZXM7Cisg
ICAgbV9waW5jaFN0YXJ0U2NhbGUgPSBtX2NvbnRlbnQtPnJlbmRlcmluZ1NjYWxlKCk7CiAKICAg
ICAvLyBSZXNldCB0aGUgdGlsaW5nIGxvb2stYWhlYWQgdmVjdG9yIHNvIHRoYXQgdGlsZXMgYWxs
IGFyb3VuZCB0aGUgdmlld3BvcnQgd2lsbCBiZSByZXF1ZXN0ZWQgb24gcGluY2gtZW5kLgogICAg
IGVtaXQgdmlld3BvcnRUcmFqZWN0b3J5VmVjdG9yQ2hhbmdlZChRUG9pbnRGKCkpOwogfQogCi12
b2lkIFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6cGluY2hHZXN0dXJlUmVxdWVzdFVwZGF0
ZShjb25zdCBRUG9pbnRGJiBwaW5jaENlbnRlckluQ29udGVudENvb3JkaW5hdGVzLCBxcmVhbCB0
b3RhbFNjYWxlRmFjdG9yKQordm9pZCBRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OnBpbmNo
R2VzdHVyZVJlcXVlc3RVcGRhdGUoY29uc3QgUVBvaW50RiYgcGluY2hDZW50ZXJJblZpZXdwb3J0
Q29vcmRpbmF0ZXMsIHFyZWFsIHRvdGFsU2NhbGVGYWN0b3IpCiB7CiAgICAgQVNTRVJUKG1fc3Vz
cGVuZENvdW50KTsKIApAQCAtNTQ0LDEyICs1NDcsMTEgQEAgdm9pZCBRdFZpZXdwb3J0SW50ZXJh
Y3Rpb25FbmdpbmU6OnBpbmNoR2VzdHVyZVJlcXVlc3RVcGRhdGUoY29uc3QgUVBvaW50RiYgcGlu
Y2gKICAgICAvLyBBbGxvdyB6b29taW5nIG91dCBiZXlvbmQgbWltaW11bSBzY2FsZSBvbiBwYWdl
cyB0aGF0IGRvIG5vdCBleHBsaWNpdGx5IGRpc2FsbG93IGl0LgogICAgIGNvbnN0IHFyZWFsIHRh
cmdldENTU1NjYWxlID0gb3V0ZXJCb3VuZGVkQ1NTU2NhbGUoY3NzU2NhbGUpOwogCi0gICAgUVBv
aW50RiBwaW5jaENlbnRlckluVmlld3BvcnRDb29yZGluYXRlcyA9IG1fdmlld3BvcnQtPm1hcEZy
b21JdGVtKG1fY29udGVudCwgcGluY2hDZW50ZXJJbkNvbnRlbnRDb29yZGluYXRlcyk7Ci0KLSAg
ICBzY2FsZUNvbnRlbnQocGluY2hDZW50ZXJJbkNvbnRlbnRDb29yZGluYXRlcywgdGFyZ2V0Q1NT
U2NhbGUpOworICAgIHNjYWxlQ29udGVudChtX3ZpZXdwb3J0LT5tYXBUb1dlYkNvb3JkaW5hdGVz
KHBpbmNoQ2VudGVySW5WaWV3cG9ydENvb3JkaW5hdGVzKSwgdGFyZ2V0Q1NTU2NhbGUpOwogCiAg
ICAgY29uc3QgUVBvaW50RiBwb3NpdGlvbkRpZmYgPSBwaW5jaENlbnRlckluVmlld3BvcnRDb29y
ZGluYXRlcyAtIG1fbGFzdFBpbmNoQ2VudGVySW5WaWV3cG9ydENvb3JkaW5hdGVzOwogICAgIG1f
bGFzdFBpbmNoQ2VudGVySW5WaWV3cG9ydENvb3JkaW5hdGVzID0gcGluY2hDZW50ZXJJblZpZXdw
b3J0Q29vcmRpbmF0ZXM7CisKICAgICBtX2NvbnRlbnQtPnNldFBvcyhtX2NvbnRlbnQtPnBvcygp
ICsgcG9zaXRpb25EaWZmKTsKIH0KIApAQCAtNTc2LDEyICs1NzgsMTIgQEAgdm9pZCBRdFZpZXdw
b3J0SW50ZXJhY3Rpb25FbmdpbmU6Oml0ZW1TaXplQ2hhbmdlZCgpCiAgICAgZW5zdXJlQ29udGVu
dFdpdGhpblZpZXdwb3J0Qm91bmRhcnkoKTsKIH0KIAotdm9pZCBRdFZpZXdwb3J0SW50ZXJhY3Rp
b25FbmdpbmU6OnNjYWxlQ29udGVudChjb25zdCBRUG9pbnRGJiBjZW50ZXJJbkNvbnRlbnRDb29y
ZGluYXRlcywgcXJlYWwgY3NzU2NhbGUpCit2b2lkIFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2lu
ZTo6c2NhbGVDb250ZW50KGNvbnN0IFFQb2ludEYmIGNlbnRlckluV2ViQ29vcmRpbmF0ZXMsIHFy
ZWFsIGNzc1NjYWxlKQogewotICAgIFFQb2ludEYgb2xkUGluY2hDZW50ZXJPblBhcmVudCA9IG1f
Y29udGVudC0+bWFwVG9JdGVtKG1fY29udGVudC0+cGFyZW50SXRlbSgpLCBjZW50ZXJJbkNvbnRl
bnRDb29yZGluYXRlcyk7Ci0gICAgbV9jb250ZW50LT5zZXRTY2FsZShpdGVtU2NhbGVGcm9tQ1NT
KGNzc1NjYWxlKSk7Ci0gICAgUVBvaW50RiBuZXdQaW5jaENlbnRlck9uUGFyZW50ID0gbV9jb250
ZW50LT5tYXBUb0l0ZW0obV9jb250ZW50LT5wYXJlbnRJdGVtKCksIGNlbnRlckluQ29udGVudENv
b3JkaW5hdGVzKTsKLSAgICBtX2NvbnRlbnQtPnNldFBvcyhtX2NvbnRlbnQtPnBvcygpIC0gKG5l
d1BpbmNoQ2VudGVyT25QYXJlbnQgLSBvbGRQaW5jaENlbnRlck9uUGFyZW50KSk7CisgICAgUVBv
aW50RiBvbGRQaW5jaENlbnRlck9uVmlld3BvcnQgPSBtX3ZpZXdwb3J0LT5tYXBGcm9tV2ViQ29v
cmRpbmF0ZXMoY2VudGVySW5XZWJDb29yZGluYXRlcyk7CisgICAgbV9jb250ZW50LT5zZXRSZW5k
ZXJpbmdTY2FsZShpdGVtU2NhbGVGcm9tQ1NTKGNzc1NjYWxlKSk7CisgICAgUVBvaW50RiBuZXdQ
aW5jaENlbnRlck9uVmlld3BvcnQgPSBtX3ZpZXdwb3J0LT5tYXBGcm9tV2ViQ29vcmRpbmF0ZXMo
Y2VudGVySW5XZWJDb29yZGluYXRlcyk7CisgICAgbV9jb250ZW50LT5zZXRQb3MobV9jb250ZW50
LT5wb3MoKSAtIChuZXdQaW5jaENlbnRlck9uVmlld3BvcnQgLSBvbGRQaW5jaENlbnRlck9uVmll
d3BvcnQpKTsKIH0KIAogI2luY2x1ZGUgIm1vY19RdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUu
Y3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0Vmlld3BvcnRJ
bnRlcmFjdGlvbkVuZ2luZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0Vmlld3Bv
cnRJbnRlcmFjdGlvbkVuZ2luZS5oCmluZGV4IDY4Mzc3YTQuLjYwYWEzNmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRWaWV3cG9ydEludGVyYWN0aW9u
RW5naW5lLmgKQEAgLTMzLDYgKzMzLDggQEAKIFFUX0JFR0lOX05BTUVTUEFDRQogY2xhc3MgUVBv
aW50RjsKIGNsYXNzIFFRdWlja0l0ZW07CitjbGFzcyBRUXVpY2tXZWJQYWdlOworY2xhc3MgUVF1
aWNrV2ViVmlldzsKIGNsYXNzIFFXaGVlbEV2ZW50OwogUVRfRU5EX05BTUVTUEFDRQogCkBAIC00
NCw3ICs0Niw3IEBAIGNsYXNzIFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZSA6IHB1YmxpYyBR
T2JqZWN0IHsKICAgICBRX09CSkVDVAogCiBwdWJsaWM6Ci0gICAgUXRWaWV3cG9ydEludGVyYWN0
aW9uRW5naW5lKGNvbnN0IFFRdWlja0l0ZW0qLCBRUXVpY2tJdGVtKik7CisgICAgUXRWaWV3cG9y
dEludGVyYWN0aW9uRW5naW5lKGNvbnN0IFFRdWlja1dlYlZpZXcqLCBRUXVpY2tXZWJQYWdlKik7
CiAgICAgflF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZSgpOwogCiAgICAgc3RydWN0IENvbnN0
cmFpbnRzIHsKQEAgLTgwLDE3ICs4MiwxNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbnRlcnJ1cHRT
Y3JvbGxBbmltYXRpb24oKTsKIAogICAgIGJvb2wgcGFuR2VzdHVyZUFjdGl2ZSgpIGNvbnN0Owot
ICAgIHZvaWQgcGFuR2VzdHVyZVN0YXJ0ZWQoY29uc3QgUVBvaW50RiYgdG91Y2hQb2ludCwgcWlu
dDY0IGV2ZW50VGltZXN0YW1wTWlsbGlzKTsKLSAgICB2b2lkIHBhbkdlc3R1cmVSZXF1ZXN0VXBk
YXRlKGNvbnN0IFFQb2ludEYmIHRvdWNoUG9pbnQsIHFpbnQ2NCBldmVudFRpbWVzdGFtcE1pbGxp
cyk7CisgICAgdm9pZCBwYW5HZXN0dXJlU3RhcnRlZChjb25zdCBRUG9pbnRGJiB0b3VjaFBvaW50
SW5WaWV3cG9ydENvb3JkaW5hdGVzLCBxaW50NjQgZXZlbnRUaW1lc3RhbXBNaWxsaXMpOworICAg
IHZvaWQgcGFuR2VzdHVyZVJlcXVlc3RVcGRhdGUoY29uc3QgUVBvaW50RiYgdG91Y2hQb2ludElu
Vmlld3BvcnRDb29yZGluYXRlcywgcWludDY0IGV2ZW50VGltZXN0YW1wTWlsbGlzKTsKICAgICB2
b2lkIHBhbkdlc3R1cmVDYW5jZWxsZWQoKTsKLSAgICB2b2lkIHBhbkdlc3R1cmVFbmRlZChjb25z
dCBRUG9pbnRGJiB0b3VjaFBvaW50LCBxaW50NjQgZXZlbnRUaW1lc3RhbXBNaWxsaXMpOworICAg
IHZvaWQgcGFuR2VzdHVyZUVuZGVkKGNvbnN0IFFQb2ludEYmIHRvdWNoUG9pbnRJblZpZXdwb3J0
Q29vcmRpbmF0ZXMsIHFpbnQ2NCBldmVudFRpbWVzdGFtcE1pbGxpcyk7CiAKICAgICBib29sIHNj
YWxlQW5pbWF0aW9uQWN0aXZlKCkgY29uc3Q7CiAgICAgdm9pZCBpbnRlcnJ1cHRTY2FsZUFuaW1h
dGlvbigpOwogCiAgICAgYm9vbCBwaW5jaEdlc3R1cmVBY3RpdmUoKSBjb25zdDsKLSAgICB2b2lk
IHBpbmNoR2VzdHVyZVN0YXJ0ZWQoY29uc3QgUVBvaW50RiYgcGluY2hDZW50ZXJJbkNvbnRlbnRD
b29yZGluYXRlcyk7Ci0gICAgdm9pZCBwaW5jaEdlc3R1cmVSZXF1ZXN0VXBkYXRlKGNvbnN0IFFQ
b2ludEYmIHBpbmNoQ2VudGVySW5Db250ZW50Q29vcmRpbmF0ZXMsIHFyZWFsIHRvdGFsU2NhbGVG
YWN0b3IpOworICAgIHZvaWQgcGluY2hHZXN0dXJlU3RhcnRlZChjb25zdCBRUG9pbnRGJiBwaW5j
aENlbnRlckluVmlld3BvcnRDb29yZGluYXRlcyk7CisgICAgdm9pZCBwaW5jaEdlc3R1cmVSZXF1
ZXN0VXBkYXRlKGNvbnN0IFFQb2ludEYmIHBpbmNoQ2VudGVySW5WaWV3cG9ydENvb3JkaW5hdGVz
LCBxcmVhbCB0b3RhbFNjYWxlRmFjdG9yKTsKICAgICB2b2lkIHBpbmNoR2VzdHVyZUVuZGVkKCk7
CiAKICAgICB2b2lkIHpvb21Ub0FyZWFHZXN0dXJlRW5kZWQoY29uc3QgUVBvaW50RiYgdG91Y2hQ
b2ludCwgY29uc3QgUVJlY3RGJiB0YXJnZXRBcmVhKTsKQEAgLTEyNywxNCArMTI5LDE0IEBAIHBy
aXZhdGU6CiAgICAgUVJlY3RGIGNvbXB1dGVQb3NSYW5nZUZvckl0ZW1BdFNjYWxlKHFyZWFsIGl0
ZW1TY2FsZSkgY29uc3Q7CiAgICAgYm9vbCBlbnN1cmVDb250ZW50V2l0aGluVmlld3BvcnRCb3Vu
ZGFyeShib29sIGltbWVkaWF0ZSA9IGZhbHNlKTsKIAotICAgIHZvaWQgc2NhbGVDb250ZW50KGNv
bnN0IFFQb2ludEYmIGNlbnRlckluQ29udGVudENvb3JkaW5hdGVzLCBxcmVhbCBzY2FsZSk7Cisg
ICAgdm9pZCBzY2FsZUNvbnRlbnQoY29uc3QgUVBvaW50RiYgY2VudGVySW5XZWJDb29yZGluYXRl
cywgcXJlYWwgY3NzU2NhbGUpOwogCiAgICAgLy8gQXMgbG9uZyBhcyB0aGUgb2JqZWN0IGV4aXN0
cyB0aGlzIGZ1bmN0aW9uIHdpbGwgYWx3YXlzIHJldHVybiB0aGUgc2FtZSBRU2Nyb2xsZXIgaW5z
dGFuY2UuCiAgICAgUVNjcm9sbGVyKiBzY3JvbGxlcigpIHsgcmV0dXJuIFFTY3JvbGxlcjo6c2Ny
b2xsZXIodGhpcyk7IH0KIAogCi0gICAgY29uc3QgUVF1aWNrSXRlbSogY29uc3QgbV92aWV3cG9y
dDsKLSAgICBRUXVpY2tJdGVtKiBjb25zdCBtX2NvbnRlbnQ7CisgICAgY29uc3QgUVF1aWNrV2Vi
VmlldyogY29uc3QgbV92aWV3cG9ydDsKKyAgICBRUXVpY2tXZWJQYWdlKiBjb25zdCBtX2NvbnRl
bnQ7CiAKICAgICBDb25zdHJhaW50cyBtX2NvbnN0cmFpbnRzOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VFdmVudEhhbmRsZXIuY3BwCmluZGV4IDdi
OTc0OGIuLjRmYzNiZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9R
dFdlYlBhZ2VFdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9x
dC9RdFdlYlBhZ2VFdmVudEhhbmRsZXIuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAi
TmF0aXZlV2ViV2hlZWxFdmVudC5oIgogI2luY2x1ZGUgIlF0Vmlld3BvcnRJbnRlcmFjdGlvbkVu
Z2luZS5oIgogI2luY2x1ZGUgInFxdWlja3dlYnBhZ2VfcC5oIgorI2luY2x1ZGUgInFxdWlja3dl
YnZpZXdfcC5oIgogI2luY2x1ZGUgPFFEcmFnPgogI2luY2x1ZGUgPFFHcmFwaGljc1NjZW5lTW91
c2VFdmVudD4KICNpbmNsdWRlIDxRR3VpQXBwbGljYXRpb24+CkBAIC04MCwxMiArODEsMTMgQEAg
c3RhdGljIGlubGluZSBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uIGRyb3BBY3Rpb25Ub0RyYWdPcGVy
YXRpb24oUXQ6OkRyb3BBY3Rpb25zIGEKICAgICByZXR1cm4gKERyYWdPcGVyYXRpb24pcmVzdWx0
OwogfQogCi1RdFdlYlBhZ2VFdmVudEhhbmRsZXI6OlF0V2ViUGFnZUV2ZW50SGFuZGxlcihXS1Bh
Z2VSZWYgcGFnZVJlZiwgUVF1aWNrV2ViUGFnZSogcW1sV2ViUGFnZSkKK1F0V2ViUGFnZUV2ZW50
SGFuZGxlcjo6UXRXZWJQYWdlRXZlbnRIYW5kbGVyKFdLUGFnZVJlZiBwYWdlUmVmLCBRUXVpY2tX
ZWJWaWV3KiBxbWxWaWV3LCBRUXVpY2tXZWJQYWdlKiBxbWxXZWJQYWdlKQogICAgIDogbV93ZWJQ
YWdlUHJveHkodG9JbXBsKHBhZ2VSZWYpKQogICAgICwgbV9wYW5HZXN0dXJlUmVjb2duaXplcih0
aGlzKQogICAgICwgbV9waW5jaEdlc3R1cmVSZWNvZ25pemVyKHRoaXMpCiAgICAgLCBtX3RhcEdl
c3R1cmVSZWNvZ25pemVyKHRoaXMpCiAgICAgLCBtX3dlYlBhZ2UocW1sV2ViUGFnZSkKKyAgICAs
IG1fdmlld3BvcnQocW1sVmlldykKICAgICAsIG1fcHJldmlvdXNDbGlja0J1dHRvbihRdDo6Tm9C
dXR0b24pCiAgICAgLCBtX2NsaWNrQ291bnQoMCkKIHsKQEAgLTE0OSw0MiArMTUxLDQ4IEBAIGJv
b2wgUXRXZWJQYWdlRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZU1vdmVFdmVudChRTW91c2VFdmVu
dCogZXYpCiAgICAgLy8gTk9URTogbGFzdFBvcyBmcm9tIHRoZSBldmVudCBhbHdheXMgY29tZXMg
ZW1wdHksIHNvIHdlIHdvcmsKICAgICAvLyBhcm91bmQgdGhhdCBoZXJlLgogICAgIHN0YXRpYyBR
UG9pbnRGIGxhc3RQb3MgPSBRUG9pbnRGKCk7Ci0gICAgaWYgKGxhc3RQb3MgPT0gZXYtPnBvcygp
KQorICAgIFFQb2ludEYgd2ViUGFnZVBvaW50ID0gbV92aWV3cG9ydC0+bWFwVG9XZWJDb29yZGlu
YXRlcyhldi0+bG9jYWxQb3MoKSk7CisgICAgaWYgKGxhc3RQb3MgPT0gd2ViUGFnZVBvaW50KQog
ICAgICAgICByZXR1cm4gZXYtPmlzQWNjZXB0ZWQoKTsKLSAgICBsYXN0UG9zID0gZXYtPnBvcygp
OworICAgIGxhc3RQb3MgPSB3ZWJQYWdlUG9pbnQ7CiAKLSAgICBtX3dlYlBhZ2VQcm94eS0+aGFu
ZGxlTW91c2VFdmVudChOYXRpdmVXZWJNb3VzZUV2ZW50KGV2LCAvKmV2ZW50Q2xpY2tDb3VudCov
IDApKTsKKyAgICBtX3dlYlBhZ2VQcm94eS0+aGFuZGxlTW91c2VFdmVudChOYXRpdmVXZWJNb3Vz
ZUV2ZW50KGV2LCB3ZWJQYWdlUG9pbnQsIC8qZXZlbnRDbGlja0NvdW50Ki8gMCkpOwogCiAgICAg
cmV0dXJuIGV2LT5pc0FjY2VwdGVkKCk7CiB9CiAKIGJvb2wgUXRXZWJQYWdlRXZlbnRIYW5kbGVy
OjpoYW5kbGVNb3VzZVByZXNzRXZlbnQoUU1vdXNlRXZlbnQqIGV2KQogeworICAgIFFQb2ludEYg
d2ViUGFnZVBvaW50ID0gbV92aWV3cG9ydC0+bWFwVG9XZWJDb29yZGluYXRlcyhldi0+bG9jYWxQ
b3MoKSk7CisKICAgICBpZiAobV9jbGlja1RpbWVyLmlzQWN0aXZlKCkKICAgICAgICAgJiYgbV9w
cmV2aW91c0NsaWNrQnV0dG9uID09IGV2LT5idXR0b24oKQotICAgICAgICAmJiAoZXYtPnBvcygp
IC0gbV9sYXN0Q2xpY2spLm1hbmhhdHRhbkxlbmd0aCgpIDwgcUFwcC0+c3R5bGVIaW50cygpLT5z
dGFydERyYWdEaXN0YW5jZSgpKSB7CisgICAgICAgICYmICh3ZWJQYWdlUG9pbnQudG9Qb2ludCgp
IC0gbV9sYXN0Q2xpY2spLm1hbmhhdHRhbkxlbmd0aCgpIDwgcUFwcC0+c3R5bGVIaW50cygpLT5z
dGFydERyYWdEaXN0YW5jZSgpKSB7CiAgICAgICAgIG1fY2xpY2tDb3VudCsrOwogICAgIH0gZWxz
ZSB7CiAgICAgICAgIG1fY2xpY2tDb3VudCA9IDE7CiAgICAgICAgIG1fcHJldmlvdXNDbGlja0J1
dHRvbiA9IGV2LT5idXR0b24oKTsKICAgICB9CiAKLSAgICBtX3dlYlBhZ2VQcm94eS0+aGFuZGxl
TW91c2VFdmVudChOYXRpdmVXZWJNb3VzZUV2ZW50KGV2LCBtX2NsaWNrQ291bnQpKTsKKyAgICBt
X3dlYlBhZ2VQcm94eS0+aGFuZGxlTW91c2VFdmVudChOYXRpdmVXZWJNb3VzZUV2ZW50KGV2LCB3
ZWJQYWdlUG9pbnQsIG1fY2xpY2tDb3VudCkpOwogCi0gICAgbV9sYXN0Q2xpY2sgPSBldi0+cG9z
KCk7CisgICAgbV9sYXN0Q2xpY2sgPSB3ZWJQYWdlUG9pbnQudG9Qb2ludCgpOwogICAgIG1fY2xp
Y2tUaW1lci5zdGFydChxQXBwLT5zdHlsZUhpbnRzKCktPm1vdXNlRG91YmxlQ2xpY2tJbnRlcnZh
bCgpLCB0aGlzKTsKKwogICAgIHJldHVybiBldi0+aXNBY2NlcHRlZCgpOwogfQogCiBib29sIFF0
V2ViUGFnZUV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VSZWxlYXNlRXZlbnQoUU1vdXNlRXZlbnQq
IGV2KQogewotICAgIG1fd2ViUGFnZVByb3h5LT5oYW5kbGVNb3VzZUV2ZW50KE5hdGl2ZVdlYk1v
dXNlRXZlbnQoZXYsIC8qZXZlbnRDbGlja0NvdW50Ki8gMCkpOworICAgIFFQb2ludEYgd2ViUGFn
ZVBvaW50ID0gbV92aWV3cG9ydC0+bWFwVG9XZWJDb29yZGluYXRlcyhldi0+bG9jYWxQb3MoKSk7
CisgICAgbV93ZWJQYWdlUHJveHktPmhhbmRsZU1vdXNlRXZlbnQoTmF0aXZlV2ViTW91c2VFdmVu
dChldiwgd2ViUGFnZVBvaW50LCAvKmV2ZW50Q2xpY2tDb3VudCovIDApKTsKICAgICByZXR1cm4g
ZXYtPmlzQWNjZXB0ZWQoKTsKIH0KIAogYm9vbCBRdFdlYlBhZ2VFdmVudEhhbmRsZXI6OmhhbmRs
ZVdoZWVsRXZlbnQoUVdoZWVsRXZlbnQqIGV2KQogewotICAgIG1fd2ViUGFnZVByb3h5LT5oYW5k
bGVXaGVlbEV2ZW50KE5hdGl2ZVdlYldoZWVsRXZlbnQoZXYpKTsKKyAgICBRUG9pbnRGIHdlYlBh
Z2VQb2ludCA9IG1fdmlld3BvcnQtPm1hcFRvV2ViQ29vcmRpbmF0ZXMoZXYtPnBvc0YoKSk7Cisg
ICAgbV93ZWJQYWdlUHJveHktPmhhbmRsZVdoZWVsRXZlbnQoTmF0aXZlV2ViV2hlZWxFdmVudChl
diwgd2ViUGFnZVBvaW50KSk7CiAgICAgLy8gRklYTUU6IEhhbmRsZSB3aGV0aGVyIHRoZSBwYWdl
IHVzZWQgdGhlIHdoZWVsIGV2ZW50IG9yIG5vdC4KICAgICBpZiAobV9pbnRlcmFjdGlvbkVuZ2lu
ZSkKICAgICAgICAgbV9pbnRlcmFjdGlvbkVuZ2luZS0+d2hlZWxFdmVudChldik7CkBAIC0xOTUs
MTQgKzIwMywxNiBAQCBib29sIFF0V2ViUGFnZUV2ZW50SGFuZGxlcjo6aGFuZGxlSG92ZXJMZWF2
ZUV2ZW50KFFIb3ZlckV2ZW50KiBldikKIHsKICAgICAvLyBUbyBnZXQgdGhlIGNvcnJlY3QgYmVo
YXZpb3Igb2YgbW91c2VvdXQsIHdlIG5lZWQgdG8gdHVybiB0aGUgTGVhdmUgZXZlbnQgb2Ygb3Vy
IHdlYnZpZXcgaW50byBhIG1vdXNlIG1vdmUKICAgICAvLyB0byBhIHZlcnkgZmFyIHJlZ2lvbi4K
LSAgICBRSG92ZXJFdmVudCBmYWtlRXZlbnQoUUV2ZW50OjpIb3Zlck1vdmUsIFFQb2ludChJTlRf
TUlOLCBJTlRfTUlOKSwgZXYtPm9sZFBvcygpKTsKKyAgICBRUG9pbnRGIG9sZFBhZ2VQb3NpdGlv
biA9IG1fdmlld3BvcnQtPm1hcFRvV2ViQ29vcmRpbmF0ZXMoZXYtPm9sZFBvc0YoKSk7CisgICAg
UUhvdmVyRXZlbnQgZmFrZUV2ZW50KFFFdmVudDo6SG92ZXJNb3ZlLCBRUG9pbnQoSU5UX01JTiwg
SU5UX01JTiksIG9sZFBhZ2VQb3NpdGlvbik7CiAgICAgZmFrZUV2ZW50LnNldFRpbWVzdGFtcChl
di0+dGltZXN0YW1wKCkpOwogICAgIHJldHVybiBoYW5kbGVIb3Zlck1vdmVFdmVudCgmZmFrZUV2
ZW50KTsKIH0KIAogYm9vbCBRdFdlYlBhZ2VFdmVudEhhbmRsZXI6OmhhbmRsZUhvdmVyTW92ZUV2
ZW50KFFIb3ZlckV2ZW50KiBldikKIHsKLSAgICBRTW91c2VFdmVudCBtZShRRXZlbnQ6Ok1vdXNl
TW92ZSwgZXYtPnBvcygpLCBRdDo6Tm9CdXR0b24sIFF0OjpOb0J1dHRvbiwgUXQ6Ok5vTW9kaWZp
ZXIpOworICAgIFFQb2ludEYgd2ViUGFnZVBvaW50ID0gbV92aWV3cG9ydC0+bWFwVG9XZWJDb29y
ZGluYXRlcyhldi0+cG9zRigpKTsKKyAgICBRTW91c2VFdmVudCBtZShRRXZlbnQ6Ok1vdXNlTW92
ZSwgd2ViUGFnZVBvaW50LCBRdDo6Tm9CdXR0b24sIFF0OjpOb0J1dHRvbiwgUXQ6Ok5vTW9kaWZp
ZXIpOwogICAgIG1lLnNldEFjY2VwdGVkKGV2LT5pc0FjY2VwdGVkKCkpOwogICAgIG1lLnNldFRp
bWVzdGFtcChldi0+dGltZXN0YW1wKCkpOwogCkBAIC0yMTIsOCArMjIyLDkgQEAgYm9vbCBRdFdl
YlBhZ2VFdmVudEhhbmRsZXI6OmhhbmRsZUhvdmVyTW92ZUV2ZW50KFFIb3ZlckV2ZW50KiBldikK
IGJvb2wgUXRXZWJQYWdlRXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnRW50ZXJFdmVudChRRHJhZ0Vu
dGVyRXZlbnQqIGV2KQogewogICAgIG1fd2ViUGFnZVByb3h5LT5yZXNldERyYWdPcGVyYXRpb24o
KTsKKyAgICBRUG9pbnRGIHdlYlBhZ2VQb2ludCA9IG1fdmlld3BvcnQtPm1hcFRvV2ViQ29vcmRp
bmF0ZXMoZXYtPnBvcygpKTsKICAgICAvLyBGSVhNRTogU2hvdWxkIG5vdCB1c2UgUUN1cnNvcjo6
cG9zKCkKLSAgICBEcmFnRGF0YSBkcmFnRGF0YShldi0+bWltZURhdGEoKSwgZXYtPnBvcygpLCBR
Q3Vyc29yOjpwb3MoKSwgZHJvcEFjdGlvblRvRHJhZ09wZXJhdGlvbihldi0+cG9zc2libGVBY3Rp
b25zKCkpKTsKKyAgICBEcmFnRGF0YSBkcmFnRGF0YShldi0+bWltZURhdGEoKSwgd2ViUGFnZVBv
aW50LnRvUG9pbnQoKSwgUUN1cnNvcjo6cG9zKCksIGRyb3BBY3Rpb25Ub0RyYWdPcGVyYXRpb24o
ZXYtPnBvc3NpYmxlQWN0aW9ucygpKSk7CiAgICAgbV93ZWJQYWdlUHJveHktPmRyYWdFbnRlcmVk
KCZkcmFnRGF0YSk7CiAgICAgZXYtPmFjY2VwdFByb3Bvc2VkQWN0aW9uKCk7CiAgICAgcmV0dXJu
IHRydWU7CkBAIC0yMzYsOCArMjQ3LDkgQEAgYm9vbCBRdFdlYlBhZ2VFdmVudEhhbmRsZXI6Omhh
bmRsZURyYWdNb3ZlRXZlbnQoUURyYWdNb3ZlRXZlbnQqIGV2KQogewogICAgIGJvb2wgYWNjZXB0
ZWQgPSBldi0+aXNBY2NlcHRlZCgpOwogCisgICAgUVBvaW50RiB3ZWJQYWdlUG9pbnQgPSBtX3Zp
ZXdwb3J0LT5tYXBUb1dlYkNvb3JkaW5hdGVzKGV2LT5wb3MoKSk7CiAgICAgLy8gRklYTUU6IFNo
b3VsZCBub3QgdXNlIFFDdXJzb3I6OnBvcygpCi0gICAgRHJhZ0RhdGEgZHJhZ0RhdGEoZXYtPm1p
bWVEYXRhKCksIGV2LT5wb3MoKSwgUUN1cnNvcjo6cG9zKCksIGRyb3BBY3Rpb25Ub0RyYWdPcGVy
YXRpb24oZXYtPnBvc3NpYmxlQWN0aW9ucygpKSk7CisgICAgRHJhZ0RhdGEgZHJhZ0RhdGEoZXYt
Pm1pbWVEYXRhKCksIHdlYlBhZ2VQb2ludC50b1BvaW50KCksIFFDdXJzb3I6OnBvcygpLCBkcm9w
QWN0aW9uVG9EcmFnT3BlcmF0aW9uKGV2LT5wb3NzaWJsZUFjdGlvbnMoKSkpOwogICAgIG1fd2Vi
UGFnZVByb3h5LT5kcmFnVXBkYXRlZCgmZHJhZ0RhdGEpOwogICAgIGV2LT5zZXREcm9wQWN0aW9u
KGRyYWdPcGVyYXRpb25Ub0Ryb3BBY3Rpb24obV93ZWJQYWdlUHJveHktPmRyYWdTZXNzaW9uKCku
b3BlcmF0aW9uKSk7CiAgICAgaWYgKG1fd2ViUGFnZVByb3h5LT5kcmFnU2Vzc2lvbigpLm9wZXJh
dGlvbiAhPSBEcmFnT3BlcmF0aW9uTm9uZSkKQEAgLTI1MCw5ICsyNjIsOSBAQCBib29sIFF0V2Vi
UGFnZUV2ZW50SGFuZGxlcjo6aGFuZGxlRHJhZ01vdmVFdmVudChRRHJhZ01vdmVFdmVudCogZXYp
CiBib29sIFF0V2ViUGFnZUV2ZW50SGFuZGxlcjo6aGFuZGxlRHJvcEV2ZW50KFFEcm9wRXZlbnQq
IGV2KQogewogICAgIGJvb2wgYWNjZXB0ZWQgPSBldi0+aXNBY2NlcHRlZCgpOwotCisgICAgUVBv
aW50RiB3ZWJQYWdlUG9pbnQgPSBtX3ZpZXdwb3J0LT5tYXBUb1dlYkNvb3JkaW5hdGVzKGV2LT5w
b3MoKSk7CiAgICAgLy8gRklYTUU6IFNob3VsZCBub3QgdXNlIFFDdXJzb3I6OnBvcygpCi0gICAg
RHJhZ0RhdGEgZHJhZ0RhdGEoZXYtPm1pbWVEYXRhKCksIGV2LT5wb3MoKSwgUUN1cnNvcjo6cG9z
KCksIGRyb3BBY3Rpb25Ub0RyYWdPcGVyYXRpb24oZXYtPnBvc3NpYmxlQWN0aW9ucygpKSk7Cisg
ICAgRHJhZ0RhdGEgZHJhZ0RhdGEoZXYtPm1pbWVEYXRhKCksIHdlYlBhZ2VQb2ludC50b1BvaW50
KCksIFFDdXJzb3I6OnBvcygpLCBkcm9wQWN0aW9uVG9EcmFnT3BlcmF0aW9uKGV2LT5wb3NzaWJs
ZUFjdGlvbnMoKSkpOwogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBoYW5kbGU7CiAgICAg
bV93ZWJQYWdlUHJveHktPnBlcmZvcm1EcmFnKCZkcmFnRGF0YSwgU3RyaW5nKCksIGhhbmRsZSk7
CiAgICAgZXYtPnNldERyb3BBY3Rpb24oZHJhZ09wZXJhdGlvblRvRHJvcEFjdGlvbihtX3dlYlBh
Z2VQcm94eS0+ZHJhZ1Nlc3Npb24oKS5vcGVyYXRpb24pKTsKQEAgLTI2NCwxMyArMjc2LDE1IEBA
IGJvb2wgUXRXZWJQYWdlRXZlbnRIYW5kbGVyOjpoYW5kbGVEcm9wRXZlbnQoUURyb3BFdmVudCog
ZXYpCiAKIHZvaWQgUXRXZWJQYWdlRXZlbnRIYW5kbGVyOjpoYW5kbGVTaW5nbGVUYXBFdmVudChj
b25zdCBRVG91Y2hFdmVudDo6VG91Y2hQb2ludCYgcG9pbnQpCiB7Ci0gICAgV2ViR2VzdHVyZUV2
ZW50IGdlc3R1cmUoV2ViRXZlbnQ6Okdlc3R1cmVTaW5nbGVUYXAsIHBvaW50LnBvcygpLnRvUG9p
bnQoKSwgcG9pbnQuc2NyZWVuUG9zKCkudG9Qb2ludCgpLCBXZWJFdmVudDo6TW9kaWZpZXJzKDAp
LCAwKTsKKyAgICBRUG9pbnRGIHdlYlBhZ2VQb2ludCA9IG1fdmlld3BvcnQtPm1hcFRvV2ViQ29v
cmRpbmF0ZXMocG9pbnQucG9zKCkpOworICAgIFdlYkdlc3R1cmVFdmVudCBnZXN0dXJlKFdlYkV2
ZW50OjpHZXN0dXJlU2luZ2xlVGFwLCB3ZWJQYWdlUG9pbnQudG9Qb2ludCgpLCBwb2ludC5zY3Jl
ZW5Qb3MoKS50b1BvaW50KCksIFdlYkV2ZW50OjpNb2RpZmllcnMoMCksIDApOwogICAgIG1fd2Vi
UGFnZVByb3h5LT5oYW5kbGVHZXN0dXJlRXZlbnQoZ2VzdHVyZSk7CiB9CiAKIHZvaWQgUXRXZWJQ
YWdlRXZlbnRIYW5kbGVyOjpoYW5kbGVEb3VibGVUYXBFdmVudChjb25zdCBRVG91Y2hFdmVudDo6
VG91Y2hQb2ludCYgcG9pbnQpCiB7Ci0gICAgbV93ZWJQYWdlUHJveHktPmZpbmRab29tYWJsZUFy
ZWFGb3JQb2ludChwb2ludC5wb3MoKS50b1BvaW50KCkpOworICAgIFFQb2ludEYgd2ViUGFnZVBv
aW50ID0gbV92aWV3cG9ydC0+bWFwVG9XZWJDb29yZGluYXRlcyhwb2ludC5wb3MoKSk7CisgICAg
bV93ZWJQYWdlUHJveHktPmZpbmRab29tYWJsZUFyZWFGb3JQb2ludCh3ZWJQYWdlUG9pbnQudG9Q
b2ludCgpKTsKIH0KIAogdm9pZCBRdFdlYlBhZ2VFdmVudEhhbmRsZXI6OnRpbWVyRXZlbnQoUVRp
bWVyRXZlbnQqIGV2KQpAQCAtMzE0LDExICszMjgsMTcgQEAgdm9pZCBRdFdlYlBhZ2VFdmVudEhh
bmRsZXI6OnNldFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUoUXRWaWV3cG9ydEludGVyYWN0aW9u
RW4KIHZvaWQgUXRXZWJQYWdlRXZlbnRIYW5kbGVyOjp0b3VjaEV2ZW50KFFUb3VjaEV2ZW50KiBl
dmVudCkKIHsKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgIG1fd2ViUGFnZVByb3h5LT5o
YW5kbGVUb3VjaEV2ZW50KE5hdGl2ZVdlYlRvdWNoRXZlbnQoZXZlbnQpKTsKKyAgICBRTGlzdDxR
UG9pbnRGPiB3ZWJQYWdlUG9pbnRzOworCisgICAgZm9yZWFjaChRVG91Y2hFdmVudDo6VG91Y2hQ
b2ludCBwb2ludCwgZXZlbnQtPnRvdWNoUG9pbnRzKCkpCisgICAgICAgIHdlYlBhZ2VQb2ludHMu
YXBwZW5kKG1fdmlld3BvcnQtPm1hcFRvV2ViQ29vcmRpbmF0ZXMocG9pbnQucG9zKCkpKTsKKwor
CisgICAgbV93ZWJQYWdlUHJveHktPmhhbmRsZVRvdWNoRXZlbnQoTmF0aXZlV2ViVG91Y2hFdmVu
dChldmVudCwgd2ViUGFnZVBvaW50cykpOwogICAgIGV2ZW50LT5hY2NlcHQoKTsKICNlbHNlCiAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgZXYtPmlnbm9yZSgpOworICAgIGV2ZW50LT5p
Z25vcmUoKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvcXQvUXRXZWJQYWdlRXZlbnRIYW5kbGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
cXQvUXRXZWJQYWdlRXZlbnRIYW5kbGVyLmgKaW5kZXggMWUxNTkwZi4uNGI0OWM1NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZUV2ZW50SGFuZGxlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VFdmVudEhhbmRsZXIu
aApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgPFdLUGFnZS5oPgogCiBjbGFzcyBRUXVpY2tX
ZWJQYWdlOworY2xhc3MgUVF1aWNrV2ViVmlldzsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsK
IApAQCAtMzksNyArNDAsNyBAQCBjbGFzcyBRdFdlYlBhZ2VFdmVudEhhbmRsZXIgOiBwdWJsaWMg
UU9iamVjdCB7CiAgICAgUV9PQkpFQ1QKIAogcHVibGljOgotICAgIFF0V2ViUGFnZUV2ZW50SGFu
ZGxlcihXS1BhZ2VSZWYsIFFRdWlja1dlYlBhZ2UqKTsKKyAgICBRdFdlYlBhZ2VFdmVudEhhbmRs
ZXIoV0tQYWdlUmVmLCBRUXVpY2tXZWJWaWV3KiwgUVF1aWNrV2ViUGFnZSopOwogICAgIH5RdFdl
YlBhZ2VFdmVudEhhbmRsZXIoKTsKIAogICAgIGJvb2wgaGFuZGxlRXZlbnQoUUV2ZW50Kik7CkBA
IC02NSw2ICs2Niw3IEBAIHByb3RlY3RlZDoKICAgICBRdFBpbmNoR2VzdHVyZVJlY29nbml6ZXIg
bV9waW5jaEdlc3R1cmVSZWNvZ25pemVyOwogICAgIFF0VGFwR2VzdHVyZVJlY29nbml6ZXIgbV90
YXBHZXN0dXJlUmVjb2duaXplcjsKICAgICBRUXVpY2tXZWJQYWdlKiBtX3dlYlBhZ2U7CisgICAg
UVF1aWNrV2ViVmlldyogbV92aWV3cG9ydDsKIAogcHJpdmF0ZToKICAgICBib29sIGhhbmRsZUtl
eVByZXNzRXZlbnQoUUtleUV2ZW50Kik7Ci0tIAoxLjcuOAoK
</data>
<flag name="review"
          id="119702"
          type_id="1"
          status="-"
          setter="hausmann"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119868</attachid>
            <date>2011-12-19 08:39:51 -0800</date>
            <delta_ts>2011-12-20 06:44:13 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>0001-Qt-WK2-Pinch-zoom-should-affect-the-page-size.patch</filename>
            <type>text/plain</type>
            <size>59094</size>
            <attacher name="Andras Becsi">abecsi</attacher>
            
              <data encoding="base64">RnJvbSA1NGMwYzMwMDgwZTUxNTViYWJlYjkwYzA5ODEzZDM4OTRkZWQ1MTJiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyYXMgQmVjc2kgPGFuZHJhcy5iZWNzaUBub2tpYS5jb20+
CkRhdGU6IE1vbiwgMTkgRGVjIDIwMTEgMTE6MzE6MTggKzAxMDAKU3ViamVjdDogW1BBVENIXSBb
UXRdW1dLMl0gUGluY2ggem9vbSBzaG91bGQgYWZmZWN0IHRoZSBwYWdlIHNpemUKCi0tLQogU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTIxICsr
KysrKysrKysrKysKIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJNb3VzZUV2ZW50Lmgg
ICAgICAgIHwgICAgMiArLQogU291cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2ZVdlYlRvdWNoRXZl
bnQuaCAgICAgICAgfCAgICA2ICstCiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViV2hl
ZWxFdmVudC5oICAgICAgICB8ICAgIDIgKy0KIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9xdC9OYXRp
dmVXZWJNb3VzZUV2ZW50UXQuY3BwIHwgICAgNCArLQogU291cmNlL1dlYktpdDIvU2hhcmVkL3F0
L05hdGl2ZVdlYlRvdWNoRXZlbnRRdC5jcHAgfCAgICA2ICstCiBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvcXQvTmF0aXZlV2ViV2hlZWxFdmVudFF0LmNwcCB8ICAgIDQgKy0KIFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9xdC9XZWJFdmVudEZhY3RvcnlRdC5jcHAgICAgIHwgICAyMCArKy0KIFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9xdC9XZWJFdmVudEZhY3RvcnlRdC5oICAgICAgIHwgICAgNiArLQogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJwYWdlLmNwcCAgfCAgMTc3ICsr
KysrKysrLS0tLS0tLS0tLS0KIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNr
d2VicGFnZV9wLmggIHwgICAzMyArKy0tCiAuLi4vV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Fx
dWlja3dlYnBhZ2VfcF9wLmggICB8ICAgIDUgKwogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcCAgfCAgMTYyICsrKysrKysrKysrKysrKystLQogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3AuaCAgfCAgIDIzICsrKwog
Li4uL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2Vidmlld3BvcnRpbmZvLmNwcCAgfCAgICAy
ICstCiAuLi4vcXQvdGVzdHMvcXF1aWNrd2Vidmlldy90c3RfcXF1aWNrd2Vidmlldy5jcHAgICB8
ICAgIDIgKy0KIC4uLi9VSVByb2Nlc3MvcXQvUXRQaW5jaEdlc3R1cmVSZWNvZ25pemVyLmNwcCAg
ICAgIHwgICAgNCArLQogLi4uL1VJUHJvY2Vzcy9xdC9RdFZpZXdwb3J0SW50ZXJhY3Rpb25Fbmdp
bmUuY3BwICAgfCAgIDY0ICsrKystLS0tCiAuLi4vVUlQcm9jZXNzL3F0L1F0Vmlld3BvcnRJbnRl
cmFjdGlvbkVuZ2luZS5oICAgICB8ICAgMjAgKystCiAuLi4vV2ViS2l0Mi9VSVByb2Nlc3MvcXQv
UXRXZWJQYWdlRXZlbnRIYW5kbGVyLmNwcCB8ICAgNTQgKysrKy0tCiAyMCBmaWxlcyBjaGFuZ2Vk
LCA0OTQgaW5zZXJ0aW9ucygrKSwgMjIzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAxN2Mx
NmM3Li5hYzBlODNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTI0IEBACisyMDExLTEyLTE2ICBB
bmRyYXMgQmVjc2kgIDxhbmRyYXMuYmVjc2lAbm9raWEuY29tPgorCisgICAgICAgIFtRdF1bV0sy
XSBQaW5jaCB6b29tIHNob3VsZCBhZmZlY3QgdGhlIHBhZ2Ugc2l6ZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ2MDEKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgY3VycmVudCBpbXBsZW1lbnRhdGlv
biB1c2VzIHRoZSBzY2FsZSBwcm9wZXJ0eSBvZiB0aGUgUVF1aWNrV2ViUGFnZQorICAgICAgICB0
byBzY2FsZSB0aGUgcGFnZSBpbiByZXNwb25zZSB0byBwaW5jaCBnZXN0dXJlcy4KKyAgICAgICAg
SG93ZXZlciBmb3IgbGF5b3V0IGFuZCBhbmNob3JpbmcgdG8gd29yayBjb3JyZWN0bHkgaW4gUU1M
LCBwaW5jaGluZyBuZWVkcworICAgICAgICB0byBjaGFuZ2UgdGhlIHBhZ2Ugc2l6ZS4KKyAgICAg
ICAgVGhpcyBwYXRjaCBhcHBsaWVzIHRoZSBwaW5jaCBzY2FsZSB0byB0aGUgcGFnZSBzaXplIGFu
ZCB0byB0aGUgdHJhbnNmb3JtYXRpb24KKyAgICAgICAgbWF0cml4IG9mIHRoZSBkcmF3aW5nIGFy
ZWEuCisgICAgICAgIFRodXMgdGhlIHBhZ2UgaXRlbSdzIGNvb3JkaWFudGUgc3lzdGVtIGlzIG5v
IGxvbmdlciBhIGRpcmVjdCByZXByZXNlbnRhdGlvbgorICAgICAgICBvZiB0aGUgV2ViQ29yZTo6
UGFnZSBjb29yZGluYXRlIHN5c3RlbSBhbmQgaXQgaXMgbm8gbG9uZ2VyIHN1aXRhYmxlIGFzCisg
ICAgICAgIGFuIGluZXJ0aWFsIGZyYW1lIG9mIHJlZmVyZW5jZSBmb3IgaW5wdXQgZXZlbnRzLiBU
aGUgZXZlbnQgcHJvcGFnYXRpb24gaGFkCisgICAgICAgIHRvIGJlIG1vdmVkIHRvIHRoZSBRUXVp
Y2tXZWJWaWV3IGFuZCB0aGUgcG9zaXRpb25zIHRyYW5zbGF0ZWQgdG8gY29udGVudAorICAgICAg
ICBjb29yZGluYXRlcyB3aGVuIE5hdGl2ZVdlYkV2ZW50cyBhcmUgY3JlYXRlZC4KKworICAgICAg
ICAqIFNoYXJlZC9OYXRpdmVXZWJNb3VzZUV2ZW50Lmg6CisgICAgICAgICogU2hhcmVkL05hdGl2
ZVdlYlRvdWNoRXZlbnQuaDoKKyAgICAgICAgKFdlYktpdDo6TmF0aXZlV2ViVG91Y2hFdmVudDo6
bmF0aXZlRXZlbnQpOgorICAgICAgICAqIFNoYXJlZC9OYXRpdmVXZWJXaGVlbEV2ZW50Lmg6Cisg
ICAgICAgICogU2hhcmVkL3F0L05hdGl2ZVdlYk1vdXNlRXZlbnRRdC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5hdGl2ZVdlYk1vdXNlRXZlbnQ6Ok5hdGl2ZVdlYk1vdXNlRXZlbnQpOgorICAgICAg
ICAqIFNoYXJlZC9xdC9OYXRpdmVXZWJUb3VjaEV2ZW50UXQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOYXRpdmVXZWJUb3VjaEV2ZW50OjpOYXRpdmVXZWJUb3VjaEV2ZW50KToKKyAgICAgICAgKiBT
aGFyZWQvcXQvTmF0aXZlV2ViV2hlZWxFdmVudFF0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmF0
aXZlV2ViV2hlZWxFdmVudDo6TmF0aXZlV2ViV2hlZWxFdmVudCk6CisgICAgICAgICogU2hhcmVk
L3F0L1dlYkV2ZW50RmFjdG9yeVF0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRXZlbnRGYWN0
b3J5OjpjcmVhdGVXZWJNb3VzZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViRXZlbnRGYWN0
b3J5OjpjcmVhdGVXZWJXaGVlbEV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViRXZlbnRGYWN0
b3J5OjpjcmVhdGVXZWJUb3VjaEV2ZW50KToKKyAgICAgICAgKiBTaGFyZWQvcXQvV2ViRXZlbnRG
YWN0b3J5UXQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnBhZ2UuY3Bw
OgorICAgICAgICAoaXNWYWxpZCk6CisgICAgICAgIChRUXVpY2tXZWJQYWdlOjpnZW9tZXRyeUNo
YW5nZWQpOgorICAgICAgICAoUVF1aWNrV2ViUGFnZVByaXZhdGU6OlFRdWlja1dlYlBhZ2VQcml2
YXRlKToKKyAgICAgICAgKFFRdWlja1dlYlBhZ2VQcml2YXRlOjppbml0aWFsaXplKToKKyAgICAg
ICAgKFFRdWlja1dlYlBhZ2VQcml2YXRlOjpwYWludFRvQ3VycmVudEdMQ29udGV4dCk6CisgICAg
ICAgIChRUXVpY2tXZWJQYWdlOjpzZXRVc2VzVHJhZGl0aW9uYWxEZXNrdG9wQmVoYXZpb3VyKToK
KyAgICAgICAgKFFRdWlja1dlYlBhZ2U6OmV2ZW50SGFuZGxlcik6CisgICAgICAgIChRUXVpY2tX
ZWJQYWdlOjp1cGRhdGVTaXplKToKKyAgICAgICAgKFFRdWlja1dlYlBhZ2U6OnNldENvbnRlbnRT
aXplKToKKyAgICAgICAgKFFRdWlja1dlYlBhZ2U6OmNvbnRlbnRTaXplKToKKyAgICAgICAgKFFR
dWlja1dlYlBhZ2U6OnNldFJlbmRlcmluZ1NjYWxlKToKKyAgICAgICAgKFFRdWlja1dlYlBhZ2U6
OnJlbmRlcmluZ1NjYWxlKToKKyAgICAgICAgKFFRdWlja1dlYlBhZ2U6OnRyYW5zZm9ybUZyb21J
dGVtKToKKyAgICAgICAgKFFRdWlja1dlYlBhZ2U6OnRyYW5zZm9ybVRvSXRlbSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJwYWdlX3AuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL3F0L3FxdWlja3dlYnBhZ2VfcF9wLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9x
dC9xcXVpY2t3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFRdWlja1dlYlZpZXdQcml2YXRlOjppbml0
aWFsaXplKToKKyAgICAgICAgKFFRdWlja1dlYlZpZXdQcml2YXRlOjplbmFibGVNb3VzZUV2ZW50
cyk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6ZGlzYWJsZU1vdXNlRXZlbnRzKToK
KyAgICAgICAgKFFRdWlja1dlYlZpZXdQcml2YXRlOjpkaWRDaGFuZ2VDb250ZW50c1NpemUpOgor
ICAgICAgICAoUVF1aWNrV2ViVmlld1ByaXZhdGU6OnVwZGF0ZVZpc2libGVDb250ZW50UmVjdEFu
ZFNjYWxlKToKKyAgICAgICAgKFFRdWlja1dlYlZpZXdQcml2YXRlOjpQb3N0VHJhbnNpdGlvblN0
YXRlOjphcHBseSk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6c2V0VXNlVHJhZGl0
aW9uYWxEZXNrdG9wQmVoYXZpb3VyKToKKyAgICAgICAgKFFRdWlja1dlYlZpZXc6Om1hcFRvV2Vi
Q29vcmRpbmF0ZXMpOgorICAgICAgICAoUVF1aWNrV2ViVmlldzo6bWFwUmVjdFRvV2ViQ29vcmRp
bmF0ZXMpOgorICAgICAgICAoUVF1aWNrV2ViVmlldzo6bWFwRnJvbVdlYkNvb3JkaW5hdGVzKToK
KyAgICAgICAgKFFRdWlja1dlYlZpZXc6Om1hcFJlY3RGcm9tV2ViQ29vcmRpbmF0ZXMpOgorICAg
ICAgICAoUVF1aWNrV2ViVmlldzo6a2V5UHJlc3NFdmVudCk6CisgICAgICAgIChRUXVpY2tXZWJW
aWV3OjprZXlSZWxlYXNlRXZlbnQpOgorICAgICAgICAoUVF1aWNrV2ViVmlldzo6aW5wdXRNZXRo
b2RFdmVudCk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3Ojpmb2N1c0luRXZlbnQpOgorICAgICAg
ICAoUVF1aWNrV2ViVmlldzo6Zm9jdXNPdXRFdmVudCk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3
Ojp0b3VjaEV2ZW50KToKKyAgICAgICAgKFFRdWlja1dlYlZpZXc6Om1vdXNlUHJlc3NFdmVudCk6
CisgICAgICAgIChRUXVpY2tXZWJWaWV3Ojptb3VzZU1vdmVFdmVudCk6CisgICAgICAgIChRUXVp
Y2tXZWJWaWV3Ojptb3VzZVJlbGVhc2VFdmVudCk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3Ojpt
b3VzZURvdWJsZUNsaWNrRXZlbnQpOgorICAgICAgICAoUVF1aWNrV2ViVmlldzo6d2hlZWxFdmVu
dCk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3Ojpob3ZlckVudGVyRXZlbnQpOgorICAgICAgICAo
UVF1aWNrV2ViVmlldzo6aG92ZXJNb3ZlRXZlbnQpOgorICAgICAgICAoUVF1aWNrV2ViVmlldzo6
aG92ZXJMZWF2ZUV2ZW50KToKKyAgICAgICAgKFFRdWlja1dlYlZpZXc6OmRyYWdNb3ZlRXZlbnQp
OgorICAgICAgICAoUVF1aWNrV2ViVmlldzo6ZHJhZ0VudGVyRXZlbnQpOgorICAgICAgICAoUVF1
aWNrV2ViVmlldzo6ZHJhZ0xlYXZlRXZlbnQpOgorICAgICAgICAoUVF1aWNrV2ViVmlldzo6ZHJv
cEV2ZW50KToKKyAgICAgICAgKFFRdWlja1dlYlZpZXc6OmV2ZW50KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
cXQvcXdlYnZpZXdwb3J0aW5mby5jcHA6CisgICAgICAgIChRV2ViVmlld3BvcnRJbmZvOjpjb250
ZW50c1NpemUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9RdFBpbmNoR2VzdHVyZVJlY29nbml6
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpRdFBpbmNoR2VzdHVyZVJlY29nbml6ZXI6OnJlY29n
bml6ZSk6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1F0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2lu
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6UXRW
aWV3cG9ydEludGVyYWN0aW9uRW5naW5lKToKKyAgICAgICAgKFdlYktpdDo6UXRWaWV3cG9ydElu
dGVyYWN0aW9uRW5naW5lOjpzZXRJdGVtUmVjdFZpc2libGUpOgorICAgICAgICAoV2ViS2l0OjpR
dFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OmFuaW1hdGVJdGVtUmVjdFZpc2libGUpOgorICAg
ICAgICAoV2ViS2l0OjpRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OmV2ZW50KToKKyAgICAg
ICAgKFdlYktpdDo6UXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjp3aGVlbEV2ZW50KToKKyAg
ICAgICAgKFdlYktpdDo6UXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpwYWdlUG9zaXRpb25S
ZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6UXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpj
b21wdXRlUG9zUmFuZ2VGb3JJdGVtQXRTY2FsZSk6CisgICAgICAgIChXZWJLaXQ6OlF0Vmlld3Bv
cnRJbnRlcmFjdGlvbkVuZ2luZTo6ZW5zdXJlQ29udGVudFdpdGhpblZpZXdwb3J0Qm91bmRhcnkp
OgorICAgICAgICAoV2ViS2l0OjpRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OmFwcGx5Q29u
c3RyYWludHMpOgorICAgICAgICAoV2ViS2l0OjpRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6
OmN1cnJlbnRDU1NTY2FsZSk6CisgICAgICAgIChXZWJLaXQ6OlF0Vmlld3BvcnRJbnRlcmFjdGlv
bkVuZ2luZTo6cGFuR2VzdHVyZVN0YXJ0ZWQpOgorICAgICAgICAoV2ViS2l0OjpRdFZpZXdwb3J0
SW50ZXJhY3Rpb25FbmdpbmU6OnBhbkdlc3R1cmVSZXF1ZXN0VXBkYXRlKToKKyAgICAgICAgKFdl
YktpdDo6UXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpwYW5HZXN0dXJlRW5kZWQpOgorICAg
ICAgICAoV2ViS2l0OjpRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OnBpbmNoR2VzdHVyZVN0
YXJ0ZWQpOgorICAgICAgICAoV2ViS2l0OjpRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OnBp
bmNoR2VzdHVyZVJlcXVlc3RVcGRhdGUpOgorICAgICAgICAoV2ViS2l0OjpRdFZpZXdwb3J0SW50
ZXJhY3Rpb25FbmdpbmU6OnNjYWxlQ29udGVudCk6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1F0
Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9RdFdl
YlBhZ2VFdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoUXRXZWJQYWdlRXZlbnRIYW5kbGVyOjpR
dFdlYlBhZ2VFdmVudEhhbmRsZXIpOgorICAgICAgICAoUXRXZWJQYWdlRXZlbnRIYW5kbGVyOjpo
YW5kbGVNb3VzZU1vdmVFdmVudCk6CisgICAgICAgIChRdFdlYlBhZ2VFdmVudEhhbmRsZXI6Omhh
bmRsZU1vdXNlUHJlc3NFdmVudCk6CisgICAgICAgIChRdFdlYlBhZ2VFdmVudEhhbmRsZXI6Omhh
bmRsZU1vdXNlUmVsZWFzZUV2ZW50KToKKyAgICAgICAgKFF0V2ViUGFnZUV2ZW50SGFuZGxlcjo6
aGFuZGxlV2hlZWxFdmVudCk6CisgICAgICAgIChRdFdlYlBhZ2VFdmVudEhhbmRsZXI6OmhhbmRs
ZUhvdmVyTGVhdmVFdmVudCk6CisgICAgICAgIChRdFdlYlBhZ2VFdmVudEhhbmRsZXI6OmhhbmRs
ZUhvdmVyTW92ZUV2ZW50KToKKyAgICAgICAgKFF0V2ViUGFnZUV2ZW50SGFuZGxlcjo6aGFuZGxl
RHJhZ0VudGVyRXZlbnQpOgorICAgICAgICAoUXRXZWJQYWdlRXZlbnRIYW5kbGVyOjpoYW5kbGVE
cmFnTW92ZUV2ZW50KToKKyAgICAgICAgKFF0V2ViUGFnZUV2ZW50SGFuZGxlcjo6aGFuZGxlRHJv
cEV2ZW50KToKKyAgICAgICAgKFF0V2ViUGFnZUV2ZW50SGFuZGxlcjo6aGFuZGxlU2luZ2xlVGFw
RXZlbnQpOgorICAgICAgICAoUXRXZWJQYWdlRXZlbnRIYW5kbGVyOjpoYW5kbGVEb3VibGVUYXBF
dmVudCk6CisgICAgICAgIChRdFdlYlBhZ2VFdmVudEhhbmRsZXI6OnRvdWNoRXZlbnQpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VFdmVudEhhbmRsZXIuaDoKKwogMjAxMS0xMi0x
OSAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBFbmFi
bGUgPHRyYWNrPiBmb3IgTWFjIGJ1aWxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvTmF0aXZlV2ViTW91c2VFdmVudC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2ZVdl
Yk1vdXNlRXZlbnQuaAppbmRleCBhNzNmOTU4Li5hMThmMDE2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViTW91c2VFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9OYXRpdmVXZWJNb3VzZUV2ZW50LmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgog
I2VsaWYgUExBVEZPUk0oV0lOKQogICAgIE5hdGl2ZVdlYk1vdXNlRXZlbnQoSFdORCwgVUlOVCBt
ZXNzYWdlLCBXUEFSQU0sIExQQVJBTSwgYm9vbCk7CiAjZWxpZiBQTEFURk9STShRVCkKLSAgICBl
eHBsaWNpdCBOYXRpdmVXZWJNb3VzZUV2ZW50KFFNb3VzZUV2ZW50KiwgaW50KTsKKyAgICBleHBs
aWNpdCBOYXRpdmVXZWJNb3VzZUV2ZW50KFFNb3VzZUV2ZW50KiwgY29uc3QgUVRyYW5zZm9ybSYg
dG9XZWJDb29yZGluYXRlcywgaW50IGV2ZW50Q2xpY2tDb3VudCk7CiAjZWxpZiBQTEFURk9STShH
VEspCiAgICAgTmF0aXZlV2ViTW91c2VFdmVudChjb25zdCBOYXRpdmVXZWJNb3VzZUV2ZW50Jik7
CiAgICAgTmF0aXZlV2ViTW91c2VFdmVudChHZGtFdmVudCosIGludCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViVG91Y2hFdmVudC5oIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL05hdGl2ZVdlYlRvdWNoRXZlbnQuaAppbmRleCAzNjUyZGQ3Li43YmMzZjAwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViVG91Y2hFdmVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJUb3VjaEV2ZW50LmgKQEAgLTM3LDE2
ICszNywxNiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIE5hdGl2ZVdlYlRvdWNoRXZlbnQg
OiBwdWJsaWMgV2ViVG91Y2hFdmVudCB7CiBwdWJsaWM6CiAjaWYgUExBVEZPUk0oUVQpCi0gICAg
ZXhwbGljaXQgTmF0aXZlV2ViVG91Y2hFdmVudChjb25zdCBRVG91Y2hFdmVudCopOworICAgIGV4
cGxpY2l0IE5hdGl2ZVdlYlRvdWNoRXZlbnQoY29uc3QgUVRvdWNoRXZlbnQqLCBjb25zdCBRVHJh
bnNmb3JtJiB0b1dlYkNvb3JkaW5hdGVzKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oUVQpCi0g
ICAgY29uc3QgUVRvdWNoRXZlbnQqIG5hdGl2ZUV2ZW50KCkgY29uc3QgeyByZXR1cm4gJm1fbmF0
aXZlRXZlbnQ7IH0KKyAgICBjb25zdCBRVG91Y2hFdmVudCogbmF0aXZlRXZlbnQoKSBjb25zdCB7
IHJldHVybiBtX25hdGl2ZUV2ZW50OyB9CiAjZW5kaWYKIAogcHJpdmF0ZToKICNpZiBQTEFURk9S
TShRVCkKLSAgICBjb25zdCBRVG91Y2hFdmVudCBtX25hdGl2ZUV2ZW50OworICAgIGNvbnN0IFFU
b3VjaEV2ZW50KiBtX25hdGl2ZUV2ZW50OwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViV2hlZWxFdmVudC5oIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL05hdGl2ZVdlYldoZWVsRXZlbnQuaAppbmRleCAwMzNhYjgwLi4wMjY3OWVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViV2hlZWxFdmVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJXaGVlbEV2ZW50LmgKQEAgLTQ5LDcgKzQ5
LDcgQEAgcHVibGljOgogI2VsaWYgUExBVEZPUk0oV0lOKQogICAgIE5hdGl2ZVdlYldoZWVsRXZl
bnQoSFdORCwgVUlOVCBtZXNzYWdlLCBXUEFSQU0sIExQQVJBTSk7CiAjZWxpZiBQTEFURk9STShR
VCkKLSAgICBleHBsaWNpdCBOYXRpdmVXZWJXaGVlbEV2ZW50KFFXaGVlbEV2ZW50Kik7CisgICAg
ZXhwbGljaXQgTmF0aXZlV2ViV2hlZWxFdmVudChRV2hlZWxFdmVudCosIGNvbnN0IFFUcmFuc2Zv
cm0mIHRvV2ViQ29vcmRpbmF0ZXMpOwogI2VsaWYgUExBVEZPUk0oR1RLKQogICAgIE5hdGl2ZVdl
YldoZWVsRXZlbnQoY29uc3QgTmF0aXZlV2ViV2hlZWxFdmVudCYpOwogICAgIE5hdGl2ZVdlYldo
ZWVsRXZlbnQoR2RrRXZlbnQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9x
dC9OYXRpdmVXZWJNb3VzZUV2ZW50UXQuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL3F0L05h
dGl2ZVdlYk1vdXNlRXZlbnRRdC5jcHAKaW5kZXggZWU3MzFkZS4uY2YxMDhhZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL3F0L05hdGl2ZVdlYk1vdXNlRXZlbnRRdC5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL3F0L05hdGl2ZVdlYk1vdXNlRXZlbnRRdC5jcHAKQEAg
LTMwLDggKzMwLDggQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLU5hdGl2ZVdlYk1vdXNlRXZl
bnQ6Ok5hdGl2ZVdlYk1vdXNlRXZlbnQoUU1vdXNlRXZlbnQqIGV2ZW50LCBpbnQgZXZlbnRDbGlj
a0NvdW50KQotICAgIDogV2ViTW91c2VFdmVudChXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYk1v
dXNlRXZlbnQoZXZlbnQsIGV2ZW50Q2xpY2tDb3VudCkpCitOYXRpdmVXZWJNb3VzZUV2ZW50OjpO
YXRpdmVXZWJNb3VzZUV2ZW50KFFNb3VzZUV2ZW50KiBldmVudCwgY29uc3QgUVRyYW5zZm9ybSYg
dG9XZWJDb29yZGluYXRlcywgaW50IGV2ZW50Q2xpY2tDb3VudCkKKyAgICA6IFdlYk1vdXNlRXZl
bnQoV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJNb3VzZUV2ZW50KGV2ZW50LCB0b1dlYkNvb3Jk
aW5hdGVzLCBldmVudENsaWNrQ291bnQpKQogICAgICwgbV9uYXRpdmVFdmVudChldmVudCkKIHsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9xdC9OYXRpdmVXZWJUb3VjaEV2
ZW50UXQuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL3F0L05hdGl2ZVdlYlRvdWNoRXZlbnRR
dC5jcHAKaW5kZXggMDY2MGJiYS4uNzc3YTI1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL3F0L05hdGl2ZVdlYlRvdWNoRXZlbnRRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL3F0L05hdGl2ZVdlYlRvdWNoRXZlbnRRdC5jcHAKQEAgLTMwLDkgKzMwLDkgQEAKIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKLU5hdGl2ZVdlYlRvdWNoRXZlbnQ6Ok5hdGl2ZVdlYlRvdWNo
RXZlbnQoY29uc3QgUVRvdWNoRXZlbnQqIGV2ZW50KQotICAgIDogV2ViVG91Y2hFdmVudChXZWJF
dmVudEZhY3Rvcnk6OmNyZWF0ZVdlYlRvdWNoRXZlbnQoZXZlbnQpKQotICAgICwgbV9uYXRpdmVF
dmVudCgqZXZlbnQpCitOYXRpdmVXZWJUb3VjaEV2ZW50OjpOYXRpdmVXZWJUb3VjaEV2ZW50KGNv
bnN0IFFUb3VjaEV2ZW50KiBldmVudCwgY29uc3QgUVRyYW5zZm9ybSYgdG9XZWJDb29yZGluYXRl
cykKKyAgICA6IFdlYlRvdWNoRXZlbnQoV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJUb3VjaEV2
ZW50KGV2ZW50LCB0b1dlYkNvb3JkaW5hdGVzKSkKKyAgICAsIG1fbmF0aXZlRXZlbnQoZXZlbnQp
CiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9xdC9OYXRpdmVXZWJX
aGVlbEV2ZW50UXQuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL3F0L05hdGl2ZVdlYldoZWVs
RXZlbnRRdC5jcHAKaW5kZXggNWZmMjI0YS4uNmVhN2Y3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL3F0L05hdGl2ZVdlYldoZWVsRXZlbnRRdC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL3F0L05hdGl2ZVdlYldoZWVsRXZlbnRRdC5jcHAKQEAgLTMwLDggKzMwLDgg
QEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLU5hdGl2ZVdlYldoZWVsRXZlbnQ6Ok5hdGl2ZVdl
YldoZWVsRXZlbnQoUVdoZWVsRXZlbnQqIGV2ZW50KQotICAgIDogV2ViV2hlZWxFdmVudChXZWJF
dmVudEZhY3Rvcnk6OmNyZWF0ZVdlYldoZWVsRXZlbnQoZXZlbnQpKQorTmF0aXZlV2ViV2hlZWxF
dmVudDo6TmF0aXZlV2ViV2hlZWxFdmVudChRV2hlZWxFdmVudCogZXZlbnQsIGNvbnN0IFFUcmFu
c2Zvcm0mIHRvV2ViQ29vcmRpbmF0ZXMpCisgICAgOiBXZWJXaGVlbEV2ZW50KFdlYkV2ZW50RmFj
dG9yeTo6Y3JlYXRlV2ViV2hlZWxFdmVudChldmVudCwgdG9XZWJDb29yZGluYXRlcykpCiAgICAg
LCBtX25hdGl2ZUV2ZW50KGV2ZW50KQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL3F0L1dlYkV2ZW50RmFjdG9yeVF0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9x
dC9XZWJFdmVudEZhY3RvcnlRdC5jcHAKaW5kZXggM2RjNTk3MC4uZGU2NDc3MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL3F0L1dlYkV2ZW50RmFjdG9yeVF0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvcXQvV2ViRXZlbnRGYWN0b3J5UXQuY3BwCkBAIC0yOSw2ICsy
OSw3IEBACiAjaW5jbHVkZSA8cWdyYXBoaWNzc2NlbmVldmVudC5oPgogI2luY2x1ZGUgPFFBcHBs
aWNhdGlvbj4KICNpbmNsdWRlIDxRS2V5RXZlbnQ+CisjaW5jbHVkZSA8UVRyYW5zZm9ybT4KICNp
bmNsdWRlIDxXZWJDb3JlL0ludFBvaW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFBvaW50
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUtleWJvYXJkRXZlbnQuaD4KQEAgLTEwNiw3
ICsxMDcsNyBAQCBzdGF0aWMgaW5saW5lIFdlYkV2ZW50OjpNb2RpZmllcnMgbW9kaWZpZXJzRm9y
RXZlbnQoUXQ6OktleWJvYXJkTW9kaWZpZXJzIG1vZGlmaQogICAgIHJldHVybiAoV2ViRXZlbnQ6
Ok1vZGlmaWVycylyZXN1bHQ7CiB9CiAKLVdlYk1vdXNlRXZlbnQgV2ViRXZlbnRGYWN0b3J5Ojpj
cmVhdGVXZWJNb3VzZUV2ZW50KFFNb3VzZUV2ZW50KiBldmVudCwgaW50IGV2ZW50Q2xpY2tDb3Vu
dCkKK1dlYk1vdXNlRXZlbnQgV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJNb3VzZUV2ZW50KFFN
b3VzZUV2ZW50KiBldmVudCwgY29uc3QgUVRyYW5zZm9ybSYgdG9XZWJDb29yZGluYXRlcywgaW50
IGV2ZW50Q2xpY2tDb3VudCkKIHsKICAgICBzdGF0aWMgRmxvYXRQb2ludCBsYXN0UG9zID0gRmxv
YXRQb2ludCgwLCAwKTsKIApAQCAtMTE5LDEwICsxMjAsMTAgQEAgV2ViTW91c2VFdmVudCBXZWJF
dmVudEZhY3Rvcnk6OmNyZWF0ZVdlYk1vdXNlRXZlbnQoUU1vdXNlRXZlbnQqIGV2ZW50LCBpbnQg
ZXZlbnQKICAgICBkb3VibGUgdGltZXN0YW1wICAgICAgICAgICAgICAgID0gY3VycmVudFRpbWVG
b3JFdmVudChldmVudCk7CiAgICAgbGFzdFBvcy5zZXQoZXZlbnQtPmxvY2FsUG9zKCkueCgpLCBl
dmVudC0+bG9jYWxQb3MoKS55KCkpOwogCi0gICAgcmV0dXJuIFdlYk1vdXNlRXZlbnQodHlwZSwg
YnV0dG9uLCBldmVudC0+bG9jYWxQb3MoKS50b1BvaW50KCksIGV2ZW50LT5zY3JlZW5Qb3MoKS50
b1BvaW50KCksIGRlbHRhWCwgZGVsdGFZLCAwLjBmLCBjbGlja0NvdW50LCBtb2RpZmllcnMsIHRp
bWVzdGFtcCk7CisgICAgcmV0dXJuIFdlYk1vdXNlRXZlbnQodHlwZSwgYnV0dG9uLCB0b1dlYkNv
b3JkaW5hdGVzLm1hcChldmVudC0+bG9jYWxQb3MoKSkudG9Qb2ludCgpLCBldmVudC0+c2NyZWVu
UG9zKCkudG9Qb2ludCgpLCBkZWx0YVgsIGRlbHRhWSwgMC4wZiwgY2xpY2tDb3VudCwgbW9kaWZp
ZXJzLCB0aW1lc3RhbXApOwogfQogCi1XZWJXaGVlbEV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6Y3Jl
YXRlV2ViV2hlZWxFdmVudChRV2hlZWxFdmVudCogZSkKK1dlYldoZWVsRXZlbnQgV2ViRXZlbnRG
YWN0b3J5OjpjcmVhdGVXZWJXaGVlbEV2ZW50KFFXaGVlbEV2ZW50KiBlLCBjb25zdCBRVHJhbnNm
b3JtICZ0b1dlYkNvb3JkaW5hdGVzKQogewogICAgIGZsb2F0IGRlbHRhWCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IDA7CiAgICAgZmxvYXQgZGVsdGFZICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gMDsKQEAgLTE1MSw3ICsxNTIsNyBAQCBXZWJXaGVlbEV2ZW50IFdlYkV2ZW50RmFj
dG9yeTo6Y3JlYXRlV2ViV2hlZWxFdmVudChRV2hlZWxFdmVudCogZSkKICAgICBkZWx0YVggKj0g
KGZ1bGxUaWNrKSA/IFFBcHBsaWNhdGlvbjo6d2hlZWxTY3JvbGxMaW5lcygpICogY0RlZmF1bHRR
dFNjcm9sbFN0ZXAgOiAxOwogICAgIGRlbHRhWSAqPSAoZnVsbFRpY2spID8gUUFwcGxpY2F0aW9u
Ojp3aGVlbFNjcm9sbExpbmVzKCkgKiBjRGVmYXVsdFF0U2Nyb2xsU3RlcCA6IDE7CiAKLSAgICBy
ZXR1cm4gV2ViV2hlZWxFdmVudChXZWJFdmVudDo6V2hlZWwsIGUtPnBvc0YoKS50b1BvaW50KCks
IGUtPmdsb2JhbFBvc0YoKS50b1BvaW50KCksIEZsb2F0U2l6ZShkZWx0YVgsIGRlbHRhWSksIEZs
b2F0U2l6ZSh3aGVlbFRpY2tzWCwgd2hlZWxUaWNrc1kpLCBncmFudWxhcml0eSwgbW9kaWZpZXJz
LCB0aW1lc3RhbXApOworICAgIHJldHVybiBXZWJXaGVlbEV2ZW50KFdlYkV2ZW50OjpXaGVlbCwg
dG9XZWJDb29yZGluYXRlcy5tYXAoZS0+cG9zRigpKS50b1BvaW50KCksIGUtPmdsb2JhbFBvc0Yo
KS50b1BvaW50KCksIEZsb2F0U2l6ZShkZWx0YVgsIGRlbHRhWSksIEZsb2F0U2l6ZSh3aGVlbFRp
Y2tzWCwgd2hlZWxUaWNrc1kpLCBncmFudWxhcml0eSwgbW9kaWZpZXJzLCB0aW1lc3RhbXApOwog
fQogCiBXZWJLZXlib2FyZEV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViS2V5Ym9hcmRF
dmVudChRS2V5RXZlbnQqIGV2ZW50KQpAQCAtMTc0LDcgKzE3NSw3IEBAIFdlYktleWJvYXJkRXZl
bnQgV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJLZXlib2FyZEV2ZW50KFFLZXlFdmVudCogZXZl
bnQpCiB9CiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotV2ViVG91Y2hFdmVudCBXZWJFdmVu
dEZhY3Rvcnk6OmNyZWF0ZVdlYlRvdWNoRXZlbnQoY29uc3QgUVRvdWNoRXZlbnQqIGV2ZW50KQor
V2ViVG91Y2hFdmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYlRvdWNoRXZlbnQoY29uc3Qg
UVRvdWNoRXZlbnQqIGV2ZW50LCBjb25zdCBRVHJhbnNmb3JtJiB0b1dlYkNvb3JkaW5hdGVzKQog
ewogICAgIFdlYkV2ZW50OjpUeXBlIHR5cGUgID0gd2ViRXZlbnRUeXBlRm9yRXZlbnQoZXZlbnQp
OwogICAgIFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hQb2ludFN0YXRlIHN0YXRlID0gc3Rh
dGljX2Nhc3Q8V2ViUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFBvaW50U3RhdGU+KDApOwpAQCAt
MTg0LDEwICsxODUsMTEgQEAgV2ViVG91Y2hFdmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdl
YlRvdWNoRXZlbnQoY29uc3QgUVRvdWNoRXZlbnQqIGV2ZW50KQogCiAgICAgY29uc3QgUUxpc3Q8
UVRvdWNoRXZlbnQ6OlRvdWNoUG9pbnQ+JiBwb2ludHMgPSBldmVudC0+dG91Y2hQb2ludHMoKTsK
ICAgICAKLSAgICBWZWN0b3I8V2ViUGxhdGZvcm1Ub3VjaFBvaW50PiBtX3RvdWNoUG9pbnRzOwor
ICAgIFZlY3RvcjxXZWJQbGF0Zm9ybVRvdWNoUG9pbnQsIDY+IG1fdG91Y2hQb2ludHM7CiAgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBwb2ludHMuY291bnQoKTsgKytpKSB7Ci0gICAgICAgIGlkID0g
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHBvaW50cy5hdChpKS5pZCgpKTsKLSAgICAgICAgc3dpdGNo
IChwb2ludHMuYXQoaSkuc3RhdGUoKSkgeworICAgICAgICBjb25zdCBRVG91Y2hFdmVudDo6VG91
Y2hQb2ludCYgdG91Y2hQb2ludCA9IHBvaW50cy5hdChpKTsKKyAgICAgICAgaWQgPSBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4odG91Y2hQb2ludC5pZCgpKTsKKyAgICAgICAgc3dpdGNoICh0b3VjaFBv
aW50LnN0YXRlKCkpIHsKICAgICAgICAgY2FzZSBRdDo6VG91Y2hQb2ludFJlbGVhc2VkOiAKICAg
ICAgICAgICAgIHN0YXRlID0gV2ViUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFJlbGVhc2VkOyAK
ICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjA1LDcgKzIwNyw3IEBAIFdlYlRvdWNoRXZlbnQgV2Vi
RXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJUb3VjaEV2ZW50KGNvbnN0IFFUb3VjaEV2ZW50KiBldmVu
dCkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgbV90b3VjaFBvaW50
cy5hcHBlbmQoV2ViUGxhdGZvcm1Ub3VjaFBvaW50KGlkLCBzdGF0ZSwgcG9pbnRzLmF0KGkpLnNj
cmVlblBvcygpLnRvUG9pbnQoKSwgcG9pbnRzLmF0KGkpLnBvcygpLnRvUG9pbnQoKSkpOworICAg
ICAgICBtX3RvdWNoUG9pbnRzLmFwcGVuZChXZWJQbGF0Zm9ybVRvdWNoUG9pbnQoaWQsIHN0YXRl
LCB0b3VjaFBvaW50LnNjcmVlblBvcygpLnRvUG9pbnQoKSwgdG9XZWJDb29yZGluYXRlcy5tYXAo
dG91Y2hQb2ludC5wb3MoKSkudG9Qb2ludCgpKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIFdlYlRv
dWNoRXZlbnQodHlwZSwgbV90b3VjaFBvaW50cywgbW9kaWZpZXJzLCB0aW1lc3RhbXApOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL3F0L1dlYkV2ZW50RmFjdG9yeVF0LmggYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvcXQvV2ViRXZlbnRGYWN0b3J5UXQuaAppbmRleCA0Y2U2NDhl
Li4yNzJhMjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvcXQvV2ViRXZlbnRG
YWN0b3J5UXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvcXQvV2ViRXZlbnRGYWN0b3J5
UXQuaApAQCAtNDEsMTEgKzQxLDExIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJF
dmVudEZhY3RvcnkgewogcHVibGljOgotICAgIHN0YXRpYyBXZWJNb3VzZUV2ZW50IGNyZWF0ZVdl
Yk1vdXNlRXZlbnQoUU1vdXNlRXZlbnQqLCBpbnQgZXZlbnRDbGlja0NvdW50KTsKLSAgICBzdGF0
aWMgV2ViV2hlZWxFdmVudCBjcmVhdGVXZWJXaGVlbEV2ZW50KFFXaGVlbEV2ZW50Kik7CisgICAg
c3RhdGljIFdlYk1vdXNlRXZlbnQgY3JlYXRlV2ViTW91c2VFdmVudChRTW91c2VFdmVudCosIGNv
bnN0IFFUcmFuc2Zvcm0mIHRvV2ViQ29vcmRpbmF0ZXMsIGludCBldmVudENsaWNrQ291bnQpOwor
ICAgIHN0YXRpYyBXZWJXaGVlbEV2ZW50IGNyZWF0ZVdlYldoZWVsRXZlbnQoUVdoZWVsRXZlbnQq
LCBjb25zdCBRVHJhbnNmb3JtJiB0b1dlYkNvb3JkaW5hdGVzKTsKICAgICBzdGF0aWMgV2ViS2V5
Ym9hcmRFdmVudCBjcmVhdGVXZWJLZXlib2FyZEV2ZW50KFFLZXlFdmVudCopOwogI2lmIEVOQUJM
RShUT1VDSF9FVkVOVFMpCi0gICAgc3RhdGljIFdlYlRvdWNoRXZlbnQgY3JlYXRlV2ViVG91Y2hF
dmVudChjb25zdCBRVG91Y2hFdmVudCopOworICAgIHN0YXRpYyBXZWJUb3VjaEV2ZW50IGNyZWF0
ZVdlYlRvdWNoRXZlbnQoY29uc3QgUVRvdWNoRXZlbnQqLCBjb25zdCBRVHJhbnNmb3JtJiB0b1dl
YkNvb3JkaW5hdGVzKTsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJwYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvcXQvcXF1aWNrd2VicGFnZS5jcHAKaW5kZXggN2QzYjJkNi4uYjVhMDRiMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJwYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnBhZ2UuY3Bw
CkBAIC0yNSwxMCArMjUsMTYgQEAKICNpbmNsdWRlICJRdFdlYlBhZ2VFdmVudEhhbmRsZXIuaCIK
ICNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgogI2luY2x1ZGUgInFxdWlja3dlYnBh
Z2VfcF9wLmgiCisjaW5jbHVkZSAicXF1aWNrd2Vidmlld19wLmgiCiAjaW5jbHVkZSA8UXRRdWlj
ay9RUXVpY2tDYW52YXM+CiAjaW5jbHVkZSA8UXRRdWljay9RU0dHZW9tZXRyeU5vZGU+CiAjaW5j
bHVkZSA8UXRRdWljay9RU0dNYXRlcmlhbD4KIAorc3RhdGljIGlubGluZSBib29sIGlzVmFsaWQo
UVNpemVGIHNpemUpCit7CisgICAgcmV0dXJuICFzaXplLmlzTnVsbCgpICYmIHNpemUuaXNWYWxp
ZCgpOworfQorCiBRUXVpY2tXZWJQYWdlOjpRUXVpY2tXZWJQYWdlKFFRdWlja0l0ZW0qIHBhcmVu
dCkKICAgICA6IFFRdWlja0l0ZW0ocGFyZW50KQogICAgICwgZChuZXcgUVF1aWNrV2ViUGFnZVBy
aXZhdGUodGhpcykpCkBAIC01MCwxMjAgKzU2LDIxIEBAIFF0U0dVcGRhdGVRdWV1ZSAqUVF1aWNr
V2ViUGFnZTo6c2NlbmVHcmFwaFVwZGF0ZVF1ZXVlKCkgY29uc3QKICAgICByZXR1cm4gJmQtPnNn
VXBkYXRlUXVldWU7CiB9CiAKLXZvaWQgUVF1aWNrV2ViUGFnZTo6a2V5UHJlc3NFdmVudChRS2V5
RXZlbnQqIGV2ZW50KQotewotICAgIHRoaXMtPmV2ZW50KGV2ZW50KTsKLX0KLQotdm9pZCBRUXVp
Y2tXZWJQYWdlOjprZXlSZWxlYXNlRXZlbnQoUUtleUV2ZW50KiBldmVudCkKLXsKLSAgICB0aGlz
LT5ldmVudChldmVudCk7Ci19Ci0KLXZvaWQgUVF1aWNrV2ViUGFnZTo6aW5wdXRNZXRob2RFdmVu
dChRSW5wdXRNZXRob2RFdmVudCogZXZlbnQpCi17Ci0gICAgdGhpcy0+ZXZlbnQoZXZlbnQpOwot
fQotCi12b2lkIFFRdWlja1dlYlBhZ2U6OmZvY3VzSW5FdmVudChRRm9jdXNFdmVudCogZXZlbnQp
Ci17Ci0gICAgdGhpcy0+ZXZlbnQoZXZlbnQpOwotfQotCi12b2lkIFFRdWlja1dlYlBhZ2U6OmZv
Y3VzT3V0RXZlbnQoUUZvY3VzRXZlbnQqIGV2ZW50KQotewotICAgIHRoaXMtPmV2ZW50KGV2ZW50
KTsKLX0KLQotdm9pZCBRUXVpY2tXZWJQYWdlOjptb3VzZVByZXNzRXZlbnQoUU1vdXNlRXZlbnQq
IGV2ZW50KQotewotICAgIGZvcmNlQWN0aXZlRm9jdXMoKTsKLSAgICB0aGlzLT5ldmVudChldmVu
dCk7Ci19Ci0KLXZvaWQgUVF1aWNrV2ViUGFnZTo6bW91c2VNb3ZlRXZlbnQoUU1vdXNlRXZlbnQq
IGV2ZW50KQotewotICAgIHRoaXMtPmV2ZW50KGV2ZW50KTsKLX0KLQotdm9pZCBRUXVpY2tXZWJQ
YWdlOjptb3VzZVJlbGVhc2VFdmVudChRTW91c2VFdmVudCogZXZlbnQpCi17Ci0gICAgdGhpcy0+
ZXZlbnQoZXZlbnQpOwotfQotCi12b2lkIFFRdWlja1dlYlBhZ2U6Om1vdXNlRG91YmxlQ2xpY2tF
dmVudChRTW91c2VFdmVudCogZXZlbnQpCi17Ci0gICAgdGhpcy0+ZXZlbnQoZXZlbnQpOwotfQot
Ci12b2lkIFFRdWlja1dlYlBhZ2U6OndoZWVsRXZlbnQoUVdoZWVsRXZlbnQqIGV2ZW50KQotewot
ICAgIHRoaXMtPmV2ZW50KGV2ZW50KTsKLX0KLQotdm9pZCBRUXVpY2tXZWJQYWdlOjpob3ZlckVu
dGVyRXZlbnQoUUhvdmVyRXZlbnQqIGV2ZW50KQotewotICAgIHRoaXMtPmV2ZW50KGV2ZW50KTsK
LX0KLQotdm9pZCBRUXVpY2tXZWJQYWdlOjpob3Zlck1vdmVFdmVudChRSG92ZXJFdmVudCogZXZl
bnQpCi17Ci0gICAgdGhpcy0+ZXZlbnQoZXZlbnQpOwotfQotCi12b2lkIFFRdWlja1dlYlBhZ2U6
OmhvdmVyTGVhdmVFdmVudChRSG92ZXJFdmVudCogZXZlbnQpCi17Ci0gICAgdGhpcy0+ZXZlbnQo
ZXZlbnQpOwotfQotCi12b2lkIFFRdWlja1dlYlBhZ2U6OmRyYWdNb3ZlRXZlbnQoUURyYWdNb3Zl
RXZlbnQqIGV2ZW50KQotewotICAgIHRoaXMtPmV2ZW50KGV2ZW50KTsKLX0KLQotdm9pZCBRUXVp
Y2tXZWJQYWdlOjpkcmFnRW50ZXJFdmVudChRRHJhZ0VudGVyRXZlbnQqIGV2ZW50KQotewotICAg
IHRoaXMtPmV2ZW50KGV2ZW50KTsKLX0KLQotdm9pZCBRUXVpY2tXZWJQYWdlOjpkcmFnTGVhdmVF
dmVudChRRHJhZ0xlYXZlRXZlbnQqIGV2ZW50KQotewotICAgIHRoaXMtPmV2ZW50KGV2ZW50KTsK
LX0KLQotdm9pZCBRUXVpY2tXZWJQYWdlOjpkcm9wRXZlbnQoUURyb3BFdmVudCogZXZlbnQpCi17
Ci0gICAgdGhpcy0+ZXZlbnQoZXZlbnQpOwotfQotCiB2b2lkIFFRdWlja1dlYlBhZ2U6Omdlb21l
dHJ5Q2hhbmdlZChjb25zdCBRUmVjdEYmIG5ld0dlb21ldHJ5LCBjb25zdCBRUmVjdEYmIG9sZEdl
b21ldHJ5KQogewogICAgIFFRdWlja0l0ZW06Omdlb21ldHJ5Q2hhbmdlZChuZXdHZW9tZXRyeSwg
b2xkR2VvbWV0cnkpOwotICAgIGlmIChuZXdHZW9tZXRyeS5zaXplKCkgIT0gb2xkR2VvbWV0cnku
c2l6ZSgpKQorICAgIGlmIChkLT51c2VUcmFkaXRpb25hbERlc2t0b3BCZWhhdmlvdXIgJiYgbmV3
R2VvbWV0cnkuc2l6ZSgpICE9IG9sZEdlb21ldHJ5LnNpemUoKSkKICAgICAgICAgZC0+c2V0RHJh
d2luZ0FyZWFTaXplKG5ld0dlb21ldHJ5LnNpemUoKS50b1NpemUoKSk7CiB9CiAKLWJvb2wgUVF1
aWNrV2ViUGFnZTo6ZXZlbnQoUUV2ZW50KiBldikKLXsKLSAgICBpZiAoZC0+ZXZlbnRIYW5kbGVy
LmRhdGEoKS0+aGFuZGxlRXZlbnQoZXYpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAo
ZXYtPnR5cGUoKSA9PSBRRXZlbnQ6OklucHV0TWV0aG9kKQotICAgICAgICByZXR1cm4gZmFsc2U7
IC8vIFRoaXMgaXMgbmVjZXNzYXJ5IHRvIGF2b2lkIGFuIGVuZGxlc3MgbG9vcCBpbiBjb25uZWN0
aW9uIHdpdGggUVF1aWNrSXRlbTo6ZXZlbnQoKS4KLSAgICByZXR1cm4gUVF1aWNrSXRlbTo6ZXZl
bnQoZXYpOwotfQotCi12b2lkIFFRdWlja1dlYlBhZ2U6OnRvdWNoRXZlbnQoUVRvdWNoRXZlbnQq
IGV2ZW50KQotewotICAgIGZvcmNlQWN0aXZlRm9jdXMoKTsKLSAgICB0aGlzLT5ldmVudChldmVu
dCk7Ci19Ci0KIFFRdWlja1dlYlBhZ2VQcml2YXRlOjpRUXVpY2tXZWJQYWdlUHJpdmF0ZShRUXVp
Y2tXZWJQYWdlKiBxKQogICAgIDogcShxKQogICAgICwgd2ViUGFnZVByb3h5KDApCiAgICAgLCBz
Z1VwZGF0ZVF1ZXVlKHEpCiAgICAgLCBwYWludGluZ0lzSW5pdGlhbGl6ZWQoZmFsc2UpCiAgICAg
LCBtX3BhaW50Tm9kZSgwKQorICAgICwgcmVuZGVyaW5nU2NhbGUoMSkKKyAgICAsIHVzZVRyYWRp
dGlvbmFsRGVza3RvcEJlaGF2aW91cihmYWxzZSkKIHsKIH0KIApAQCAtMTk5LDYgKzEwNiw3IEBA
IHZvaWQgUVF1aWNrV2ViUGFnZVByaXZhdGU6OnBhaW50VG9DdXJyZW50R0xDb250ZXh0KCkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgUVRyYW5zZm9ybSB0cmFuc2Zvcm0gPSBxLT5pdGVtVHJhbnNm
b3JtKDAsIDApOworICAgIHRyYW5zZm9ybS5zY2FsZShyZW5kZXJpbmdTY2FsZSwgcmVuZGVyaW5n
U2NhbGUpOwogCiAgICAgZmxvYXQgb3BhY2l0eSA9IGNvbXB1dGVFZmZlY3RpdmVPcGFjaXR5KHEp
OwogICAgIFFSZWN0RiBjbGlwUmVjdCA9IHEtPnBhcmVudEl0ZW0oKS0+bWFwUmVjdFRvU2NlbmUo
cS0+cGFyZW50SXRlbSgpLT5ib3VuZGluZ1JlY3QoKSk7CkBAIC0zMjIsNiArMjMwLDcxIEBAIFFT
R05vZGUqIFFRdWlja1dlYlBhZ2U6OnVwZGF0ZVBhaW50Tm9kZShRU0dOb2RlKiBvbGROb2RlLCBV
cGRhdGVQYWludE5vZGVEYXRhKikKICAgICByZXR1cm4gcHJveHlOb2RlOwogfQogCit2b2lkIFFR
dWlja1dlYlBhZ2U6OnNldFVzZXNUcmFkaXRpb25hbERlc2t0b3BCZWhhdmlvdXIoYm9vbCBlbmFi
bGUpCit7CisgICAgZC0+dXNlVHJhZGl0aW9uYWxEZXNrdG9wQmVoYXZpb3VyID0gZW5hYmxlOwor
fQorCitRdFdlYlBhZ2VFdmVudEhhbmRsZXIqIFFRdWlja1dlYlBhZ2U6OmV2ZW50SGFuZGxlcigp
IGNvbnN0Cit7CisgICAgcmV0dXJuIGQtPmV2ZW50SGFuZGxlci5kYXRhKCk7Cit9CisKK3ZvaWQg
UVF1aWNrV2ViUGFnZTo6dXBkYXRlU2l6ZSgpCit7CisgICAgUVNpemVGIHNjYWxlZFNpemUgPSBk
LT5jb250ZW50U2l6ZSAqIGQtPnJlbmRlcmluZ1NjYWxlOworCisgICAgaWYgKCFpc1ZhbGlkKHNj
YWxlZFNpemUpKQorICAgICAgICByZXR1cm47CisKKyAgICBzZXRTaXplKHNjYWxlZFNpemUpOwor
ICAgIHVwZGF0ZSgpOworfQorCit2b2lkIFFRdWlja1dlYlBhZ2U6OnNldENvbnRlbnRTaXplKGNv
bnN0IFFTaXplRiYgc2l6ZSkKK3sKKyAgICBpZiAoIWlzVmFsaWQoc2l6ZSkgfHwgZC0+Y29udGVu
dFNpemUgPT0gc2l6ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZC0+Y29udGVudFNpemUgPSBz
aXplOworICAgIHVwZGF0ZVNpemUoKTsKKyAgICBkLT5zZXREcmF3aW5nQXJlYVNpemUoZC0+Y29u
dGVudFNpemUudG9TaXplKCkpOworfQorCitjb25zdCBRU2l6ZUYmIFFRdWlja1dlYlBhZ2U6OmNv
bnRlbnRTaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZC0+Y29udGVudFNpemU7Cit9CisKK3Zv
aWQgUVF1aWNrV2ViUGFnZTo6c2V0UmVuZGVyaW5nU2NhbGUocXJlYWwgc2NhbGUpCit7CisgICAg
QVNTRVJUKDAgPCBzY2FsZSk7CisgICAgZC0+cmVuZGVyaW5nU2NhbGUgPSBzY2FsZTsKKyAgICB1
cGRhdGVTaXplKCk7Cit9CisKK3FyZWFsIFFRdWlja1dlYlBhZ2U6OnJlbmRlcmluZ1NjYWxlKCkg
Y29uc3QKK3sKKyAgICBBU1NFUlQoMCA8IGQtPnJlbmRlcmluZ1NjYWxlKTsKKyAgICByZXR1cm4g
ZC0+cmVuZGVyaW5nU2NhbGU7Cit9CisKK1FUcmFuc2Zvcm0gUVF1aWNrV2ViUGFnZTo6dHJhbnNm
b3JtRnJvbUl0ZW0oKSBjb25zdAoreworICAgIHFyZWFsIHVuU2NhbGUgPSAxIC8gZC0+cmVuZGVy
aW5nU2NhbGU7CisgICAgUVRyYW5zZm9ybSBmcm9tSXRlbVRyYW5zZm9ybSA9IFFUcmFuc2Zvcm06
OmZyb21TY2FsZSh1blNjYWxlLCB1blNjYWxlKTsKKyAgICBmcm9tSXRlbVRyYW5zZm9ybS50cmFu
c2xhdGUoLXgoKSwgLXkoKSk7CisgICAgcmV0dXJuIGZyb21JdGVtVHJhbnNmb3JtOworfQorCitR
VHJhbnNmb3JtIFFRdWlja1dlYlBhZ2U6OnRyYW5zZm9ybVRvSXRlbSgpIGNvbnN0Cit7CisgICAg
cXJlYWwgc2NhbGUgPSBkLT5yZW5kZXJpbmdTY2FsZTsKKyAgICBRVHJhbnNmb3JtIHRvSXRlbVRy
YW5zZm9ybSA9IFFUcmFuc2Zvcm06OmZyb21UcmFuc2xhdGUoeCgpLCB5KCkpOworICAgIHRvSXRl
bVRyYW5zZm9ybS5zY2FsZShzY2FsZSwgc2NhbGUpOworICAgIHJldHVybiB0b0l0ZW1UcmFuc2Zv
cm07Cit9CisKIHZvaWQgUVF1aWNrV2ViUGFnZVByaXZhdGU6OnJlc2V0UGFpbnROb2RlKCkKIHsK
ICAgICBtX3BhaW50Tm9kZSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3F0L3FxdWlja3dlYnBhZ2VfcC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9xdC9xcXVpY2t3ZWJwYWdlX3AuaAppbmRleCBmN2MzNTA2Li45ZTMwM2NlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnBhZ2VfcC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2VicGFnZV9wLmgKQEAgLTI3
LDYgKzI3LDcgQEAKICNpbmNsdWRlIDxRdFF1aWNrL1FRdWlja0l0ZW0+CiAKIGNsYXNzIFFRdWlj
a1dlYlBhZ2VQcml2YXRlOworY2xhc3MgUXRXZWJQYWdlRXZlbnRIYW5kbGVyOwogY2xhc3MgUVdl
YlByZWZlcmVuY2VzOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTM5LDMyICs0MCwyNiBAQCBw
dWJsaWM6CiAgICAgUVF1aWNrV2ViUGFnZShRUXVpY2tJdGVtKiBwYXJlbnQgPSAwKTsKICAgICB2
aXJ0dWFsIH5RUXVpY2tXZWJQYWdlKCk7CiAKKyAgICB2b2lkIHNldENvbnRlbnRTaXplKGNvbnN0
IFFTaXplRiYgc2l6ZSk7CisgICAgY29uc3QgUVNpemVGJiBjb250ZW50U2l6ZSgpIGNvbnN0Owor
ICAgIHZvaWQgc2V0UmVuZGVyaW5nU2NhbGUocXJlYWwpOworICAgIHFyZWFsIHJlbmRlcmluZ1Nj
YWxlKCkgY29uc3Q7CisKKyAgICBRVHJhbnNmb3JtIHRyYW5zZm9ybUZyb21JdGVtKCkgY29uc3Q7
CisgICAgUVRyYW5zZm9ybSB0cmFuc2Zvcm1Ub0l0ZW0oKSBjb25zdDsKKworICAgIFF0V2ViUGFn
ZUV2ZW50SGFuZGxlciogZXZlbnRIYW5kbGVyKCkgY29uc3Q7CisKICAgICAvLyBJbnRlcm5hbC4g
VG8gYmUgcmVtb3ZlZCBzb29uLgogICAgIFdlYktpdDo6UXRTR1VwZGF0ZVF1ZXVlKiBzY2VuZUdy
YXBoVXBkYXRlUXVldWUoKSBjb25zdDsKIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCBr
ZXlQcmVzc0V2ZW50KFFLZXlFdmVudCopOwotICAgIHZpcnR1YWwgdm9pZCBrZXlSZWxlYXNlRXZl
bnQoUUtleUV2ZW50Kik7Ci0gICAgdmlydHVhbCB2b2lkIGlucHV0TWV0aG9kRXZlbnQoUUlucHV0
TWV0aG9kRXZlbnQqKTsKLSAgICB2aXJ0dWFsIHZvaWQgZm9jdXNJbkV2ZW50KFFGb2N1c0V2ZW50
Kik7Ci0gICAgdmlydHVhbCB2b2lkIGZvY3VzT3V0RXZlbnQoUUZvY3VzRXZlbnQqKTsKLSAgICB2
aXJ0dWFsIHZvaWQgbW91c2VQcmVzc0V2ZW50KFFNb3VzZUV2ZW50Kik7Ci0gICAgdmlydHVhbCB2
b2lkIG1vdXNlTW92ZUV2ZW50KFFNb3VzZUV2ZW50Kik7Ci0gICAgdmlydHVhbCB2b2lkIG1vdXNl
UmVsZWFzZUV2ZW50KFFNb3VzZUV2ZW50ICopOwotICAgIHZpcnR1YWwgdm9pZCBtb3VzZURvdWJs
ZUNsaWNrRXZlbnQoUU1vdXNlRXZlbnQqKTsKLSAgICB2aXJ0dWFsIHZvaWQgd2hlZWxFdmVudChR
V2hlZWxFdmVudCopOwotICAgIHZpcnR1YWwgdm9pZCBob3ZlckVudGVyRXZlbnQoUUhvdmVyRXZl
bnQqKTsKLSAgICB2aXJ0dWFsIHZvaWQgaG92ZXJNb3ZlRXZlbnQoUUhvdmVyRXZlbnQqKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgaG92ZXJMZWF2ZUV2ZW50KFFIb3ZlckV2ZW50Kik7Ci0gICAgdmlydHVh
bCB2b2lkIGRyYWdNb3ZlRXZlbnQoUURyYWdNb3ZlRXZlbnQqKTsKLSAgICB2aXJ0dWFsIHZvaWQg
ZHJhZ0VudGVyRXZlbnQoUURyYWdFbnRlckV2ZW50Kik7Ci0gICAgdmlydHVhbCB2b2lkIGRyYWdM
ZWF2ZUV2ZW50KFFEcmFnTGVhdmVFdmVudCopOwotICAgIHZpcnR1YWwgdm9pZCBkcm9wRXZlbnQo
UURyb3BFdmVudCopOwotICAgIHZpcnR1YWwgdm9pZCB0b3VjaEV2ZW50KFFUb3VjaEV2ZW50Kik7
Ci0gICAgdmlydHVhbCBib29sIGV2ZW50KFFFdmVudCopOwogICAgIHZpcnR1YWwgdm9pZCBnZW9t
ZXRyeUNoYW5nZWQoY29uc3QgUVJlY3RGJiwgY29uc3QgUVJlY3RGJik7CiAgICAgdmlydHVhbCBR
U0dOb2RlKiB1cGRhdGVQYWludE5vZGUoUVNHTm9kZSosIFVwZGF0ZVBhaW50Tm9kZURhdGEqKTsK
IAorICAgIHZvaWQgc2V0VXNlc1RyYWRpdGlvbmFsRGVza3RvcEJlaGF2aW91cihib29sIGVuYWJs
ZSk7CisgICAgdm9pZCB1cGRhdGVTaXplKCk7CisKIHByaXZhdGU6CiAgICAgUVF1aWNrV2ViUGFn
ZVByaXZhdGUqIGQ7CiAgICAgZnJpZW5kIGNsYXNzIFFRdWlja1dlYlZpZXc7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnBhZ2VfcF9wLmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnBhZ2VfcF9wLmgKaW5kZXgg
NzIyNGYzOS4uZjg0OWU0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9xdC9xcXVpY2t3ZWJwYWdlX3BfcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvcXQvcXF1aWNrd2VicGFnZV9wX3AuaApAQCAtMjMsNiArMjMsNyBAQAogCiAjaW5jbHVkZSAi
UXRTR1VwZGF0ZVF1ZXVlLmgiCiAjaW5jbHVkZSAicXF1aWNrd2VicGFnZV9wLmgiCisjaW5jbHVk
ZSA8UVRyYW5zZm9ybT4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlUHJveHk7
CkBAIC00OCw2ICs0OSwxMCBAQCBwdWJsaWM6CiAgICAgV2ViS2l0OjpRdFNHVXBkYXRlUXVldWUg
c2dVcGRhdGVRdWV1ZTsKICAgICBib29sIHBhaW50aW5nSXNJbml0aWFsaXplZDsKICAgICBRU0dO
b2RlKiBtX3BhaW50Tm9kZTsKKworICAgIFFTaXplRiBjb250ZW50U2l6ZTsKKyAgICBxcmVhbCBy
ZW5kZXJpbmdTY2FsZTsKKyAgICBib29sIHVzZVRyYWRpdGlvbmFsRGVza3RvcEJlaGF2aW91ciA6
IDE7CiB9OwogCiAjZW5kaWYgLy8gcXF1aWNrd2VicGFnZV9wX3BfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHAKaW5kZXggYWE3NDRjMi4u
MTMzYmIyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVp
Y2t3ZWJ2aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlj
a3dlYnZpZXcuY3BwCkBAIC0xMDAsOCArMTAwLDYgQEAgdm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0
ZTo6ZW5hYmxlTW91c2VFdmVudHMoKQogICAgIFFfUShRUXVpY2tXZWJWaWV3KTsKICAgICBxLT5z
ZXRBY2NlcHRlZE1vdXNlQnV0dG9ucyhRdDo6TW91c2VCdXR0b25NYXNrKTsKICAgICBxLT5zZXRB
Y2NlcHRIb3ZlckV2ZW50cyh0cnVlKTsKLSAgICBwYWdlVmlldy0+c2V0QWNjZXB0ZWRNb3VzZUJ1
dHRvbnMoUXQ6Ok1vdXNlQnV0dG9uTWFzayk7Ci0gICAgcGFnZVZpZXctPnNldEFjY2VwdEhvdmVy
RXZlbnRzKHRydWUpOwogfQogCiB2b2lkIFFRdWlja1dlYlZpZXdQcml2YXRlOjpkaXNhYmxlTW91
c2VFdmVudHMoKQpAQCAtMTA5LDggKzEwNyw2IEBAIHZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6
OmRpc2FibGVNb3VzZUV2ZW50cygpCiAgICAgUV9RKFFRdWlja1dlYlZpZXcpOwogICAgIHEtPnNl
dEFjY2VwdGVkTW91c2VCdXR0b25zKFF0OjpOb0J1dHRvbik7CiAgICAgcS0+c2V0QWNjZXB0SG92
ZXJFdmVudHMoZmFsc2UpOwotICAgIHBhZ2VWaWV3LT5zZXRBY2NlcHRlZE1vdXNlQnV0dG9ucyhR
dDo6Tm9CdXR0b24pOwotICAgIHBhZ2VWaWV3LT5zZXRBY2NlcHRIb3ZlckV2ZW50cyhmYWxzZSk7
CiB9CiAKIHZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6OmluaXRpYWxpemVEZXNrdG9wKFFRdWlj
a1dlYlZpZXcqIHZpZXdwb3J0KQpAQCAtMTg3LDkgKzE4Myw3IEBAIHZvaWQgUVF1aWNrV2ViVmll
d1ByaXZhdGU6OmRpZENoYW5nZUNvbnRlbnRzU2l6ZShjb25zdCBRU2l6ZSYgbmV3U2l6ZSkKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHBhZ2VWaWV3LT5zZXRXaWR0aChuZXdTaXplLndp
ZHRoKCkpOwotICAgIHBhZ2VWaWV3LT5zZXRIZWlnaHQobmV3U2l6ZS5oZWlnaHQoKSk7Ci0KKyAg
ICBwYWdlVmlldy0+c2V0Q29udGVudFNpemUobmV3U2l6ZSk7CiAgICAgcS0+bV9leHBlcmltZW50
YWwtPnZpZXdwb3J0SW5mbygpLT5kaWRVcGRhdGVDb250ZW50c1NpemUoKTsKIH0KIApAQCAtMjY1
LDEwICsyNTksMTAgQEAgdm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6dXBkYXRlVmlzaWJsZUNv
bnRlbnRSZWN0QW5kU2NhbGUoKQogICAgICAgICByZXR1cm47CiAKICAgICBRX1EoUVF1aWNrV2Vi
Vmlldyk7Ci0gICAgY29uc3QgUVJlY3RGIHZpc2libGVSZWN0SW5QYWdlVmlld0Nvb3JkaW5hdGVz
ID0gcS0+bWFwUmVjdFRvSXRlbShwYWdlVmlldy5kYXRhKCksIHEtPmJvdW5kaW5nUmVjdCgpKS5p
bnRlcnNlY3RlZChwYWdlVmlldy0+Ym91bmRpbmdSZWN0KCkpOwotICAgIGZsb2F0IHNjYWxlID0g
cGFnZVZpZXctPnNjYWxlKCk7CisgICAgY29uc3QgUVJlY3RGIHZpc2libGVSZWN0SW5XZWJDb29y
ZGluYXRlcyA9IHEtPm1hcFJlY3RUb1dlYkNvb3JkaW5hdGVzKHEtPmJvdW5kaW5nUmVjdCgpKS5p
bnRlcnNlY3RlZChwYWdlVmlldy0+Ym91bmRpbmdSZWN0KCkpOworICAgIGZsb2F0IHNjYWxlID0g
cGFnZVZpZXctPnJlbmRlcmluZ1NjYWxlKCk7CiAKLSAgICBRUmVjdCBhbGlnbmVkVmlzaWJsZUNv
bnRlbnRSZWN0ID0gdmlzaWJsZVJlY3RJblBhZ2VWaWV3Q29vcmRpbmF0ZXMudG9BbGlnbmVkUmVj
dCgpOworICAgIFFSZWN0IGFsaWduZWRWaXNpYmxlQ29udGVudFJlY3QgPSB2aXNpYmxlUmVjdElu
V2ViQ29vcmRpbmF0ZXMudG9BbGlnbmVkUmVjdCgpOwogICAgIGRyYXdpbmdBcmVhLT5zZXRWaXNp
YmxlQ29udGVudHNSZWN0QW5kU2NhbGUoYWxpZ25lZFZpc2libGVDb250ZW50UmVjdCwgc2NhbGUp
OwogCiAgICAgLy8gRklYTUU6IE9uY2Ugd2Ugc3VwcG9ydCBzdXNwZW5kIGFuZCByZXN1bWUsIHRo
aXMgc2hvdWxkIGJlIGRlbGF5ZWQgdW50aWwgdGhlIHBhZ2UgaXMgYWN0aXZlIGlmIHRoZSBwYWdl
IGlzIHN1c3BlbmRlZC4KQEAgLTMyMyw4ICszMTcsNyBAQCB2b2lkIFFRdWlja1dlYlZpZXdQcml2
YXRlOjpQb3N0VHJhbnNpdGlvblN0YXRlOjphcHBseSgpCiAgICAgcC0+aW50ZXJhY3Rpb25Fbmdp
bmUtPnBhZ2VQb3NpdGlvblJlcXVlc3QocG9zaXRpb24pOwogCiAgICAgaWYgKGNvbnRlbnRzU2l6
ZS5pc1ZhbGlkKCkpIHsKLSAgICAgICAgcC0+cGFnZVZpZXctPnNldFdpZHRoKGNvbnRlbnRzU2l6
ZS53aWR0aCgpKTsKLSAgICAgICAgcC0+cGFnZVZpZXctPnNldEhlaWdodChjb250ZW50c1NpemUu
aGVpZ2h0KCkpOworICAgICAgICBwLT5wYWdlVmlldy0+c2V0Q29udGVudFNpemUoY29udGVudHNT
aXplKTsKICAgICAgICAgcC0+cV9wdHItPmV4cGVyaW1lbnRhbCgpLT52aWV3cG9ydEluZm8oKS0+
ZGlkVXBkYXRlQ29udGVudHNTaXplKCk7CiAgICAgfQogCkBAIC00ODIsNiArNDc1LDcgQEAgdm9p
ZCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6c2V0VXNlVHJhZGl0aW9uYWxEZXNrdG9wQmVoYXZpb3Vy
KGJvb2wgZW5hYmxlKQogICAgIHdlYlBhZ2VQcm94eS0+c2V0VXNlRml4ZWRMYXlvdXQoIWVuYWJs
ZSk7CiAKICAgICB1c2VUcmFkaXRpb25hbERlc2t0b3BCZWhhdmlvdXIgPSBlbmFibGU7CisgICAg
cGFnZVZpZXctPnNldFVzZXNUcmFkaXRpb25hbERlc2t0b3BCZWhhdmlvdXIoZW5hYmxlKTsKICAg
ICBpZiAodXNlVHJhZGl0aW9uYWxEZXNrdG9wQmVoYXZpb3VyKQogICAgICAgICBpbml0aWFsaXpl
RGVza3RvcChxKTsKICAgICBlbHNlCkBAIC03NzgsNiArNzcyLDMwIEBAIGJvb2wgUVF1aWNrV2Vi
Vmlldzo6Y2FuUmVsb2FkKCkgY29uc3QKICAgICByZXR1cm4gZC0+d2ViUGFnZVByb3h5LT5iYWNr
Rm9yd2FyZExpc3QoKS0+Y3VycmVudEl0ZW0oKTsKIH0KIAorUVBvaW50RiBRUXVpY2tXZWJWaWV3
OjptYXBUb1dlYkNvb3JkaW5hdGVzKGNvbnN0IFFQb2ludEYmIHBvaW50SW5WaWV3Q29vcmRpbmF0
ZXMpIGNvbnN0Cit7CisgICAgUV9EKGNvbnN0IFFRdWlja1dlYlZpZXcpOworICAgIHJldHVybiBk
LT5wYWdlVmlldy0+dHJhbnNmb3JtRnJvbUl0ZW0oKS5tYXAocG9pbnRJblZpZXdDb29yZGluYXRl
cyk7Cit9CisKK1FSZWN0RiBRUXVpY2tXZWJWaWV3OjptYXBSZWN0VG9XZWJDb29yZGluYXRlcyhj
b25zdCBRUmVjdEYmIHJlY3RJblZpZXdDb29yZGlhbnRlcykgY29uc3QKK3sKKyAgICBRX0QoY29u
c3QgUVF1aWNrV2ViVmlldyk7CisgICAgcmV0dXJuIGQtPnBhZ2VWaWV3LT50cmFuc2Zvcm1Gcm9t
SXRlbSgpLm1hcFJlY3QocmVjdEluVmlld0Nvb3JkaWFudGVzKTsKK30KKworUVBvaW50RiBRUXVp
Y2tXZWJWaWV3OjptYXBGcm9tV2ViQ29vcmRpbmF0ZXMoY29uc3QgUVBvaW50RiYgcG9pbnRJbldl
YkNvb3JkaW5hdGVzKSBjb25zdAoreworICAgIFFfRChjb25zdCBRUXVpY2tXZWJWaWV3KTsKKyAg
ICByZXR1cm4gZC0+cGFnZVZpZXctPnRyYW5zZm9ybVRvSXRlbSgpLm1hcChwb2ludEluV2ViQ29v
cmRpbmF0ZXMpOworfQorCitRUmVjdEYgUVF1aWNrV2ViVmlldzo6bWFwUmVjdEZyb21XZWJDb29y
ZGluYXRlcyhjb25zdCBRUmVjdEYmIHJlY3RJbldlYkNvb3JkaWFudGVzKSBjb25zdAoreworICAg
IFFfRChjb25zdCBRUXVpY2tXZWJWaWV3KTsKKyAgICByZXR1cm4gZC0+cGFnZVZpZXctPnRyYW5z
Zm9ybVRvSXRlbSgpLm1hcFJlY3QocmVjdEluV2ViQ29vcmRpYW50ZXMpOworfQorCiBRU3RyaW5n
IFFRdWlja1dlYlZpZXc6OnRpdGxlKCkgY29uc3QKIHsKICAgICBRX0QoY29uc3QgUVF1aWNrV2Vi
Vmlldyk7CkBAIC04MTMsMTYgKzgzMSwxMzAgQEAgdm9pZCBRUXVpY2tXZWJWaWV3OjpnZW9tZXRy
eUNoYW5nZWQoY29uc3QgUVJlY3RGJiBuZXdHZW9tZXRyeSwgY29uc3QgUVJlY3RGJiBvbGQKICAg
ICB9CiB9CiAKK3ZvaWQgUVF1aWNrV2ViVmlldzo6a2V5UHJlc3NFdmVudChRS2V5RXZlbnQqIGV2
ZW50KQoreworICAgIHRoaXMtPmV2ZW50KGV2ZW50KTsKK30KKwordm9pZCBRUXVpY2tXZWJWaWV3
OjprZXlSZWxlYXNlRXZlbnQoUUtleUV2ZW50KiBldmVudCkKK3sKKyAgICB0aGlzLT5ldmVudChl
dmVudCk7Cit9CisKK3ZvaWQgUVF1aWNrV2ViVmlldzo6aW5wdXRNZXRob2RFdmVudChRSW5wdXRN
ZXRob2RFdmVudCogZXZlbnQpCit7CisgICAgdGhpcy0+ZXZlbnQoZXZlbnQpOworfQorCiB2b2lk
IFFRdWlja1dlYlZpZXc6OmZvY3VzSW5FdmVudChRRm9jdXNFdmVudCogZXZlbnQpCiB7Ci0gICAg
UV9EKFFRdWlja1dlYlZpZXcpOwotICAgIGQtPnBhZ2VWaWV3LT5ldmVudChldmVudCk7CisgICAg
dGhpcy0+ZXZlbnQoZXZlbnQpOwogfQogCiB2b2lkIFFRdWlja1dlYlZpZXc6OmZvY3VzT3V0RXZl
bnQoUUZvY3VzRXZlbnQqIGV2ZW50KQogeworICAgIHRoaXMtPmV2ZW50KGV2ZW50KTsKK30KKwor
dm9pZCBRUXVpY2tXZWJWaWV3Ojp0b3VjaEV2ZW50KFFUb3VjaEV2ZW50KiBldmVudCkKK3sKKyAg
ICBmb3JjZUFjdGl2ZUZvY3VzKCk7CisgICAgdGhpcy0+ZXZlbnQoZXZlbnQpOworfQorCit2b2lk
IFFRdWlja1dlYlZpZXc6Om1vdXNlUHJlc3NFdmVudChRTW91c2VFdmVudCogZXZlbnQpCit7Cisg
ICAgZm9yY2VBY3RpdmVGb2N1cygpOworICAgIHRoaXMtPmV2ZW50KGV2ZW50KTsKK30KKwordm9p
ZCBRUXVpY2tXZWJWaWV3Ojptb3VzZU1vdmVFdmVudChRTW91c2VFdmVudCogZXZlbnQpCit7Cisg
ICAgdGhpcy0+ZXZlbnQoZXZlbnQpOworfQorCit2b2lkIFFRdWlja1dlYlZpZXc6Om1vdXNlUmVs
ZWFzZUV2ZW50KFFNb3VzZUV2ZW50KiBldmVudCkKK3sKKyAgICB0aGlzLT5ldmVudChldmVudCk7
Cit9CisKK3ZvaWQgUVF1aWNrV2ViVmlldzo6bW91c2VEb3VibGVDbGlja0V2ZW50KFFNb3VzZUV2
ZW50KiBldmVudCkKK3sKKyAgICB0aGlzLT5ldmVudChldmVudCk7Cit9CisKK3ZvaWQgUVF1aWNr
V2ViVmlldzo6d2hlZWxFdmVudChRV2hlZWxFdmVudCogZXZlbnQpCit7CisgICAgdGhpcy0+ZXZl
bnQoZXZlbnQpOworfQorCit2b2lkIFFRdWlja1dlYlZpZXc6OmhvdmVyRW50ZXJFdmVudChRSG92
ZXJFdmVudCogZXZlbnQpCit7CisgICAgdGhpcy0+ZXZlbnQoZXZlbnQpOworfQorCit2b2lkIFFR
dWlja1dlYlZpZXc6OmhvdmVyTW92ZUV2ZW50KFFIb3ZlckV2ZW50KiBldmVudCkKK3sKKyAgICB0
aGlzLT5ldmVudChldmVudCk7Cit9CisKK3ZvaWQgUVF1aWNrV2ViVmlldzo6aG92ZXJMZWF2ZUV2
ZW50KFFIb3ZlckV2ZW50KiBldmVudCkKK3sKKyAgICB0aGlzLT5ldmVudChldmVudCk7Cit9CisK
K3ZvaWQgUVF1aWNrV2ViVmlldzo6ZHJhZ01vdmVFdmVudChRRHJhZ01vdmVFdmVudCogZXZlbnQp
Cit7CisgICAgdGhpcy0+ZXZlbnQoZXZlbnQpOworfQorCit2b2lkIFFRdWlja1dlYlZpZXc6OmRy
YWdFbnRlckV2ZW50KFFEcmFnRW50ZXJFdmVudCogZXZlbnQpCit7CisgICAgdGhpcy0+ZXZlbnQo
ZXZlbnQpOworfQorCit2b2lkIFFRdWlja1dlYlZpZXc6OmRyYWdMZWF2ZUV2ZW50KFFEcmFnTGVh
dmVFdmVudCogZXZlbnQpCit7CisgICAgdGhpcy0+ZXZlbnQoZXZlbnQpOworfQorCit2b2lkIFFR
dWlja1dlYlZpZXc6OmRyb3BFdmVudChRRHJvcEV2ZW50KiBldmVudCkKK3sKKyAgICB0aGlzLT5l
dmVudChldmVudCk7Cit9CisKK2Jvb2wgUVF1aWNrV2ViVmlldzo6ZXZlbnQoUUV2ZW50KiBldikK
K3sKICAgICBRX0QoUVF1aWNrV2ViVmlldyk7Ci0gICAgZC0+cGFnZVZpZXctPmV2ZW50KGV2ZW50
KTsKKworICAgIHN3aXRjaCAoZXYtPnR5cGUoKSkgeworICAgIGNhc2UgUUV2ZW50OjpNb3VzZU1v
dmU6CisgICAgY2FzZSBRRXZlbnQ6Ok1vdXNlQnV0dG9uUHJlc3M6CisgICAgY2FzZSBRRXZlbnQ6
Ok1vdXNlQnV0dG9uUmVsZWFzZToKKyAgICBjYXNlIFFFdmVudDo6TW91c2VCdXR0b25EYmxDbGlj
azoKKyAgICBjYXNlIFFFdmVudDo6V2hlZWw6CisgICAgY2FzZSBRRXZlbnQ6OkhvdmVyTGVhdmU6
CisgICAgY2FzZSBRRXZlbnQ6OkhvdmVyRW50ZXI6CisgICAgY2FzZSBRRXZlbnQ6OkhvdmVyTW92
ZToKKyAgICBjYXNlIFFFdmVudDo6RHJhZ0VudGVyOgorICAgIGNhc2UgUUV2ZW50OjpEcmFnTGVh
dmU6CisgICAgY2FzZSBRRXZlbnQ6OkRyYWdNb3ZlOgorICAgIGNhc2UgUUV2ZW50OjpEcm9wOgor
ICAgIGNhc2UgUUV2ZW50OjpLZXlQcmVzczoKKyAgICBjYXNlIFFFdmVudDo6S2V5UmVsZWFzZToK
KyAgICBjYXNlIFFFdmVudDo6Rm9jdXNJbjoKKyAgICBjYXNlIFFFdmVudDo6Rm9jdXNPdXQ6Cisg
ICAgY2FzZSBRRXZlbnQ6OlRvdWNoQmVnaW46CisgICAgY2FzZSBRRXZlbnQ6OlRvdWNoRW5kOgor
ICAgIGNhc2UgUUV2ZW50OjpUb3VjaFVwZGF0ZToKKyAgICAgICAgaWYgKGQtPnBhZ2VWaWV3LT5l
dmVudEhhbmRsZXIoKS0+aGFuZGxlRXZlbnQoZXYpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQorCisgICAgaWYgKGV2LT50eXBlKCkgPT0gUUV2ZW50OjpJbnB1dE1ldGhvZCkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOyAvLyBUaGlzIGlzIG5lY2Vzc2FyeSB0byBhdm9pZCBhbiBlbmRs
ZXNzIGxvb3AgaW4gY29ubmVjdGlvbiB3aXRoIFFRdWlja0l0ZW06OmV2ZW50KCkuCisKKyAgICBy
ZXR1cm4gUVF1aWNrSXRlbTo6ZXZlbnQoZXYpOwogfQogCiBXS1BhZ2VSZWYgUVF1aWNrV2ViVmll
dzo6cGFnZVJlZigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL3F0L3FxdWlja3dlYnZpZXdfcC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC9xcXVpY2t3ZWJ2aWV3X3AuaAppbmRleCBlNDQ4NDM3Li42ZDQ5Zjk0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wLmgKQEAgLTg2LDYg
Kzg2LDExIEBAIHB1YmxpYzoKICAgICBib29sIGxvYWRpbmcoKSBjb25zdDsKICAgICBib29sIGNh
blJlbG9hZCgpIGNvbnN0OwogCisgICAgUVBvaW50RiBtYXBUb1dlYkNvb3JkaW5hdGVzKGNvbnN0
IFFQb2ludEYmIHBvaW50SW5WaWV3Q29vcmRpbmF0ZXMpIGNvbnN0OworICAgIFFSZWN0RiBtYXBS
ZWN0VG9XZWJDb29yZGluYXRlcyhjb25zdCBRUmVjdEYmIHJlY3RJblZpZXdDb29yZGlhbnRlcykg
Y29uc3Q7CisgICAgUVBvaW50RiBtYXBGcm9tV2ViQ29vcmRpbmF0ZXMoY29uc3QgUVBvaW50RiYg
cG9pbnRJbldlYkNvb3JkaW5hdGVzKSBjb25zdDsKKyAgICBRUmVjdEYgbWFwUmVjdEZyb21XZWJD
b29yZGluYXRlcyhjb25zdCBRUmVjdEYmIHJlY3RJbldlYkNvb3JkaWFudGVzKSBjb25zdDsKKwog
ICAgIFFRdWlja1dlYlBhZ2UqIHBhZ2UoKTsKIAogICAgIFFRdWlja1dlYlZpZXdFeHBlcmltZW50
YWwqIGV4cGVyaW1lbnRhbCgpIGNvbnN0OwpAQCAtMTE2LDggKzEyMSwyNiBAQCBRX1NJR05BTFM6
CiAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgZ2VvbWV0cnlDaGFuZ2VkKGNvbnN0IFFS
ZWN0RiYsIGNvbnN0IFFSZWN0RiYpOworCisgICAgdmlydHVhbCB2b2lkIGtleVByZXNzRXZlbnQo
UUtleUV2ZW50Kik7CisgICAgdmlydHVhbCB2b2lkIGtleVJlbGVhc2VFdmVudChRS2V5RXZlbnQq
KTsKKyAgICB2aXJ0dWFsIHZvaWQgaW5wdXRNZXRob2RFdmVudChRSW5wdXRNZXRob2RFdmVudCop
OwogICAgIHZpcnR1YWwgdm9pZCBmb2N1c0luRXZlbnQoUUZvY3VzRXZlbnQqKTsKICAgICB2aXJ0
dWFsIHZvaWQgZm9jdXNPdXRFdmVudChRRm9jdXNFdmVudCopOworICAgIHZpcnR1YWwgdm9pZCB0
b3VjaEV2ZW50KFFUb3VjaEV2ZW50Kik7CisgICAgdmlydHVhbCB2b2lkIG1vdXNlUHJlc3NFdmVu
dChRTW91c2VFdmVudCopOworICAgIHZpcnR1YWwgdm9pZCBtb3VzZU1vdmVFdmVudChRTW91c2VF
dmVudCopOworICAgIHZpcnR1YWwgdm9pZCBtb3VzZVJlbGVhc2VFdmVudChRTW91c2VFdmVudCAq
KTsKKyAgICB2aXJ0dWFsIHZvaWQgbW91c2VEb3VibGVDbGlja0V2ZW50KFFNb3VzZUV2ZW50Kik7
CisgICAgdmlydHVhbCB2b2lkIHdoZWVsRXZlbnQoUVdoZWVsRXZlbnQqKTsKKyAgICB2aXJ0dWFs
IHZvaWQgaG92ZXJFbnRlckV2ZW50KFFIb3ZlckV2ZW50Kik7CisgICAgdmlydHVhbCB2b2lkIGhv
dmVyTW92ZUV2ZW50KFFIb3ZlckV2ZW50Kik7CisgICAgdmlydHVhbCB2b2lkIGhvdmVyTGVhdmVF
dmVudChRSG92ZXJFdmVudCopOworICAgIHZpcnR1YWwgdm9pZCBkcmFnTW92ZUV2ZW50KFFEcmFn
TW92ZUV2ZW50Kik7CisgICAgdmlydHVhbCB2b2lkIGRyYWdFbnRlckV2ZW50KFFEcmFnRW50ZXJF
dmVudCopOworICAgIHZpcnR1YWwgdm9pZCBkcmFnTGVhdmVFdmVudChRRHJhZ0xlYXZlRXZlbnQq
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJvcEV2ZW50KFFEcm9wRXZlbnQqKTsKKyAgICB2aXJ0dWFs
IGJvb2wgZXZlbnQoUUV2ZW50Kik7CiAKIHByaXZhdGU6CiAgICAgUV9ERUNMQVJFX1BSSVZBVEUo
UVF1aWNrV2ViVmlldykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvcXdlYnZpZXdwb3J0aW5mby5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3F3ZWJ2aWV3cG9ydGluZm8uY3BwCmluZGV4IDhiNmZiNDEuLjczNTE5NmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYnZpZXdwb3J0aW5mby5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2Vidmlld3BvcnRpbmZvLmNwcApA
QCAtMzgsNyArMzgsNyBAQCBRV2ViVmlld3BvcnRJbmZvOjp+UVdlYlZpZXdwb3J0SW5mbygpCiAK
IFFTaXplIFFXZWJWaWV3cG9ydEluZm86OmNvbnRlbnRzU2l6ZSgpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIFFTaXplKG1fd2ViVmlld1ByaXZhdGUtPnBhZ2VWaWV3LT53aWR0aCgpLCBtX3dlYlZpZXdQ
cml2YXRlLT5wYWdlVmlldy0+aGVpZ2h0KCkpOworICAgIHJldHVybiBRU2l6ZShtX3dlYlZpZXdQ
cml2YXRlLT5wYWdlVmlldy0+Y29udGVudFNpemUoKS50b1NpemUoKSk7CiB9CiAKIFFWYXJpYW50
IFFXZWJWaWV3cG9ydEluZm86OmN1cnJlbnRTY2FsZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FxdWlja3dlYnZpZXcvdHN0X3FxdWlj
a3dlYnZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xcXVp
Y2t3ZWJ2aWV3L3RzdF9xcXVpY2t3ZWJ2aWV3LmNwcAppbmRleCA1NDhhZGQwLi4zNTU0ZDJiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FxdWlja3dl
YnZpZXcvdHN0X3FxdWlja3dlYnZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvdGVzdHMvcXF1aWNrd2Vidmlldy90c3RfcXF1aWNrd2Vidmlldy5jcHAKQEAgLTI4
Myw3ICsyODMsNyBAQCB2b2lkIHRzdF9RUXVpY2tXZWJWaWV3OjpzY3JvbGxSZXF1ZXN0KCkKICAg
ICAvLyBDT01QQVJFIHdpdGggdGhlIHBvc2l0aW9uIHJlcXVlc3RlZCBpbiB0aGUgaHRtbAogICAg
IC8vIFVzZSBxUm91bmQgYXMgdGhhdCBpcyBhbHNvIHVzZWQgd2hlbiBjYWxjdWxhdGluZyB0aGUg
cG9zaXRpb24KICAgICAvLyBpbiBXZWJLaXQuCi0gICAgaW50IHkgPSAtcVJvdW5kKDUwICogd2Vi
VmlldygpLT5wYWdlKCktPnNjYWxlKCkpOworICAgIGludCB5ID0gLXFSb3VuZCg1MCAqIHdlYlZp
ZXcoKS0+cGFnZSgpLT5yZW5kZXJpbmdTY2FsZSgpKTsKICAgICBRVkVSSUZZKHdlYlZpZXcoKS0+
cGFnZSgpLT5wb3MoKS55KCkgPT0geSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9xdC9RdFBpbmNoR2VzdHVyZVJlY29nbml6ZXIuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL3F0L1F0UGluY2hHZXN0dXJlUmVjb2duaXplci5jcHAKaW5kZXggOTE2Nzc5
Mi4uNzY5OWFkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0UGlu
Y2hHZXN0dXJlUmVjb2duaXplci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0
L1F0UGluY2hHZXN0dXJlUmVjb2duaXplci5jcHAKQEAgLTExMiw4ICsxMTIsOCBAQCBib29sIFF0
UGluY2hHZXN0dXJlUmVjb2duaXplcjo6cmVjb2duaXplKGNvbnN0IFFUb3VjaEV2ZW50KiBldmVu
dCkKICAgICAgICAgICAgIGNvbnN0IHFyZWFsIGN1cnJlbnRTcGFuRGlzdGFuY2UgPSBRTGluZUYo
cG9pbnQxLnNjcmVlblBvcygpLCBwb2ludDIuc2NyZWVuUG9zKCkpLmxlbmd0aCgpOwogICAgICAg
ICAgICAgY29uc3QgcXJlYWwgaW5pdGlhbFNwYW5EaXN0YW5jZSA9IFFMaW5lRihtX3BvaW50MS5p
bml0aWFsU2NyZWVuUG9zaXRpb24sIG1fcG9pbnQyLmluaXRpYWxTY3JlZW5Qb3NpdGlvbikubGVu
Z3RoKCk7CiAgICAgICAgICAgICBjb25zdCBxcmVhbCB0b3RhbFNjYWxlRmFjdG9yID0gY3VycmVu
dFNwYW5EaXN0YW5jZSAvIGluaXRpYWxTcGFuRGlzdGFuY2U7Ci0gICAgICAgICAgICBjb25zdCBR
UG9pbnRGIHRvdWNoQ2VudGVySW5QYWdlVmlld0Nvb3JkaW5hdGVzID0gY29tcHV0ZVBpbmNoQ2Vu
dGVyKHBvaW50MSwgcG9pbnQyKTsKLSAgICAgICAgICAgIGludGVyYWN0aW9uRW5naW5lKCktPnBp
bmNoR2VzdHVyZVJlcXVlc3RVcGRhdGUodG91Y2hDZW50ZXJJblBhZ2VWaWV3Q29vcmRpbmF0ZXMs
IHRvdGFsU2NhbGVGYWN0b3IpOworICAgICAgICAgICAgY29uc3QgUVBvaW50RiB0b3VjaENlbnRl
ckluVmlld0Nvb3JkaW5hdGVzID0gY29tcHV0ZVBpbmNoQ2VudGVyKHBvaW50MSwgcG9pbnQyKTsK
KyAgICAgICAgICAgIGludGVyYWN0aW9uRW5naW5lKCktPnBpbmNoR2VzdHVyZVJlcXVlc3RVcGRh
dGUodG91Y2hDZW50ZXJJblZpZXdDb29yZGluYXRlcywgdG90YWxTY2FsZUZhY3Rvcik7CiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRWaWV3cG9ydEludGVyYWN0aW9u
RW5naW5lLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFZpZXdwb3J0SW50ZXJh
Y3Rpb25FbmdpbmUuY3BwCmluZGV4IDc4ODM0OWEuLmJkNjEyMzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFZpZXdwb3J0SW50ZXJhY3Rpb25Fbmdp
bmUuY3BwCkBAIC0yMywxMCArMjMsMTMgQEAKICNpbmNsdWRlICJRdFZpZXdwb3J0SW50ZXJhY3Rp
b25FbmdpbmUuaCIKIAogI2luY2x1ZGUgIlBhc3NPd25QdHIuaCIKKyNpbmNsdWRlICJxcXVpY2t3
ZWJwYWdlX3AuaCIKKyNpbmNsdWRlICJxcXVpY2t3ZWJ2aWV3X3AuaCIKICNpbmNsdWRlIDxRUG9p
bnRGPgogI2luY2x1ZGUgPFFTY3JvbGxFdmVudD4KICNpbmNsdWRlIDxRU2Nyb2xsUHJlcGFyZUV2
ZW50PgogI2luY2x1ZGUgPFFTY3JvbGxlclByb3BlcnRpZXM+CisjaW5jbHVkZSA8UVRyYW5zZm9y
bT4KICNpbmNsdWRlIDxRV2hlZWxFdmVudD4KICNpbmNsdWRlIDxRdFF1aWNrL3FxdWlja2l0ZW0u
aD4KIApAQCAtMTExLDcgKzExNCw3IEBAIGlubGluZSBRUmVjdEYgUXRWaWV3cG9ydEludGVyYWN0
aW9uRW5naW5lOjppdGVtUmVjdEZyb21DU1MoY29uc3QgUVJlY3RGJiBjc3NSZWN0CiAgICAgcmV0
dXJuIGl0ZW1SZWN0OwogfQogCi1RdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OlF0Vmlld3Bv
cnRJbnRlcmFjdGlvbkVuZ2luZShjb25zdCBRUXVpY2tJdGVtKiB2aWV3cG9ydCwgUVF1aWNrSXRl
bSogY29udGVudCkKK1F0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6UXRWaWV3cG9ydEludGVy
YWN0aW9uRW5naW5lKGNvbnN0IFFRdWlja1dlYlZpZXcqIHZpZXdwb3J0LCBRUXVpY2tXZWJQYWdl
KiBjb250ZW50KQogICAgIDogbV92aWV3cG9ydCh2aWV3cG9ydCkKICAgICAsIG1fY29udGVudChj
b250ZW50KQogICAgICwgbV9zdXNwZW5kQ291bnQoMCkKQEAgLTE3NCw3ICsxNzcsNyBAQCB2b2lk
IFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6c2V0SXRlbVJlY3RWaXNpYmxlKGNvbnN0IFFS
ZWN0RiYgaXRlbVJlY3QpCiAKICAgICBxcmVhbCBpdGVtU2NhbGUgPSBtX3ZpZXdwb3J0LT53aWR0
aCgpIC8gaXRlbVJlY3Qud2lkdGgoKTsKIAotICAgIG1fY29udGVudC0+c2V0U2NhbGUoaXRlbVNj
YWxlKTsKKyAgICBtX2NvbnRlbnQtPnNldFJlbmRlcmluZ1NjYWxlKGl0ZW1TY2FsZSk7CiAKICAg
ICAvLyBXZSBuZWVkIHRvIGFuaW1hdGUgdGhlIGNvbnRlbnQgYnV0IHRoZSBwb3NpdGlvbiByZXBy
ZXNlbnRzIHRoZSB2aWV3cG9ydCBoZW5jZSB3ZSBuZWVkIHRvIGludmVydCB0aGUgcG9zaXRpb24g
aGVyZS4KICAgICAvLyBUbyBhbmltYXRlIHRoZSBwb3NpdGlvbiB0b2dldGhlciB3aXRoIHRoZSBz
Y2FsZSB3ZSBtdWx0aXBseSB0aGUgcG9zaXRpb24gd2l0aCB0aGUgY3VycmVudCBzY2FsZTsKQEAg
LTE4Myw3ICsxODYsNyBAQCB2b2lkIFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6c2V0SXRl
bVJlY3RWaXNpYmxlKGNvbnN0IFFSZWN0RiYgaXRlbVJlY3QpCiAKIGJvb2wgUXRWaWV3cG9ydElu
dGVyYWN0aW9uRW5naW5lOjphbmltYXRlSXRlbVJlY3RWaXNpYmxlKGNvbnN0IFFSZWN0RiYgaXRl
bVJlY3QpCiB7Ci0gICAgUVJlY3RGIGN1cnJlbnRJdGVtUmVjdFZpc2libGUgPSBtX2NvbnRlbnQt
Pm1hcFJlY3RGcm9tSXRlbShtX3ZpZXdwb3J0LCBtX3ZpZXdwb3J0LT5ib3VuZGluZ1JlY3QoKSk7
CisgICAgUVJlY3RGIGN1cnJlbnRJdGVtUmVjdFZpc2libGUgPSBtX3ZpZXdwb3J0LT5tYXBSZWN0
VG9XZWJDb29yZGluYXRlcyhtX3ZpZXdwb3J0LT5ib3VuZGluZ1JlY3QoKSk7CiAgICAgaWYgKGl0
ZW1SZWN0ID09IGN1cnJlbnRJdGVtUmVjdFZpc2libGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IApAQCAtMjM4LDcgKzI0MSw3IEBAIGJvb2wgUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpl
dmVudChRRXZlbnQqIGV2ZW50KQogICAgICAgICBRU2Nyb2xsUHJlcGFyZUV2ZW50KiBwcmVwYXJl
RXZlbnQgPSBzdGF0aWNfY2FzdDxRU2Nyb2xsUHJlcGFyZUV2ZW50Kj4oZXZlbnQpOwogICAgICAg
ICBjb25zdCBRUmVjdEYgdmlld3BvcnRSZWN0ID0gbV92aWV3cG9ydC0+Ym91bmRpbmdSZWN0KCk7
CiAgICAgICAgIGNvbnN0IFFSZWN0RiBjb250ZW50UmVjdCA9IG1fdmlld3BvcnQtPm1hcFJlY3RG
cm9tSXRlbShtX2NvbnRlbnQsIG1fY29udGVudC0+Ym91bmRpbmdSZWN0KCkpOwotICAgICAgICBj
b25zdCBRUmVjdEYgcG9zUmFuZ2UgPSBjb21wdXRlUG9zUmFuZ2VGb3JJdGVtQXRTY2FsZShtX2Nv
bnRlbnQtPnNjYWxlKCkpOworICAgICAgICBjb25zdCBRUmVjdEYgcG9zUmFuZ2UgPSBjb21wdXRl
UG9zUmFuZ2VGb3JJdGVtQXRTY2FsZShtX2NvbnRlbnQtPnJlbmRlcmluZ1NjYWxlKCkpOwogICAg
ICAgICBwcmVwYXJlRXZlbnQtPnNldENvbnRlbnRQb3NSYW5nZShwb3NSYW5nZSk7CiAgICAgICAg
IHByZXBhcmVFdmVudC0+c2V0Vmlld3BvcnRTaXplKHZpZXdwb3J0UmVjdC5zaXplKCkpOwogCkBA
IC0yNTEsMTEgKzI1NCwxMSBAQCBib29sIFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6ZXZl
bnQoUUV2ZW50KiBldmVudCkKICAgICAgICAgUVNjcm9sbEV2ZW50KiBzY3JvbGxFdmVudCA9IHN0
YXRpY19jYXN0PFFTY3JvbGxFdmVudCo+KGV2ZW50KTsKICAgICAgICAgUVBvaW50RiBuZXdQb3Mg
PSAtc2Nyb2xsRXZlbnQtPmNvbnRlbnRQb3MoKSAtIHNjcm9sbEV2ZW50LT5vdmVyc2hvb3REaXN0
YW5jZSgpOwogICAgICAgICBpZiAobV9jb250ZW50LT5wb3MoKSAhPSBuZXdQb3MpIHsKLSAgICAg
ICAgICAgIFFQb2ludEYgY3VycmVudFBvc0luQ29udGVudENvb3JkaW5hdGVzID0gbV9jb250ZW50
LT5tYXBUb0l0ZW0obV9jb250ZW50LT5wYXJlbnRJdGVtKCksIG1fY29udGVudC0+cG9zKCkpOwot
ICAgICAgICAgICAgUVBvaW50RiBuZXdQb3NJbkNvbnRlbnRDb29yZGluYXRlcyA9IG1fY29udGVu
dC0+bWFwVG9JdGVtKG1fY29udGVudC0+cGFyZW50SXRlbSgpLCBuZXdQb3MpOworICAgICAgICAg
ICAgUVBvaW50RiBjdXJyZW50UG9zSW5XZWJDb29yZGluYXRlcyA9IG1fdmlld3BvcnQtPm1hcFRv
V2ViQ29vcmRpbmF0ZXMobV9jb250ZW50LT5wb3MoKSk7CisgICAgICAgICAgICBRUG9pbnRGIG5l
d1Bvc0luV2ViQ29vcmRpbmF0ZXMgPSBtX3ZpZXdwb3J0LT5tYXBUb1dlYkNvb3JkaW5hdGVzKG5l
d1Bvcyk7CiAKICAgICAgICAgICAgIC8vIFRoaXMgbXVzdCBiZSBlbWl0dGVkIGJlZm9yZSB2aWV3
cG9ydFVwZGF0ZVJlcXVlc3RlZCBzbyB0aGF0IHRoZSB3ZWIgcHJvY2VzcyBrbm93cyB3aGVyZSB0
byBsb29rIGZvciB0aWxlcy4KLSAgICAgICAgICAgIGVtaXQgdmlld3BvcnRUcmFqZWN0b3J5VmVj
dG9yQ2hhbmdlZChjdXJyZW50UG9zSW5Db250ZW50Q29vcmRpbmF0ZXMtIG5ld1Bvc0luQ29udGVu
dENvb3JkaW5hdGVzKTsKKyAgICAgICAgICAgIGVtaXQgdmlld3BvcnRUcmFqZWN0b3J5VmVjdG9y
Q2hhbmdlZChjdXJyZW50UG9zSW5XZWJDb29yZGluYXRlcyAtIG5ld1Bvc0luV2ViQ29vcmRpbmF0
ZXMpOwogICAgICAgICAgICAgbV9jb250ZW50LT5zZXRQb3MobmV3UG9zKTsKICAgICAgICAgfQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTI5Nyw3ICszMDAsNyBAQCB2b2lkIFF0Vmlld3BvcnRJ
bnRlcmFjdGlvbkVuZ2luZTo6d2hlZWxFdmVudChRV2hlZWxFdmVudCogZXYpCiAgICAgZWxzZQog
ICAgICAgICBuZXdQb3MucnkoKSArPSBkZWx0YTsKIAotICAgIFFSZWN0RiBlbmRQb3NSYW5nZSA9
IGNvbXB1dGVQb3NSYW5nZUZvckl0ZW1BdFNjYWxlKG1fY29udGVudC0+c2NhbGUoKSk7CisgICAg
UVJlY3RGIGVuZFBvc1JhbmdlID0gY29tcHV0ZVBvc1JhbmdlRm9ySXRlbUF0U2NhbGUobV9jb250
ZW50LT5yZW5kZXJpbmdTY2FsZSgpKTsKICAgICBtX2NvbnRlbnQtPnNldFBvcygtYm91bmRQb3Np
dGlvbihlbmRQb3NSYW5nZS50b3BMZWZ0KCksIG5ld1BvcywgZW5kUG9zUmFuZ2UuYm90dG9tUmln
aHQoKSkpOwogfQogCkBAIC0zMDcsNyArMzEwLDcgQEAgdm9pZCBRdFZpZXdwb3J0SW50ZXJhY3Rp
b25FbmdpbmU6OnBhZ2VQb3NpdGlvblJlcXVlc3QoY29uc3QgUVBvaW50JiBwYWdlUG9zaXRpb24K
ICAgICBpZiAobV9zdXNwZW5kQ291bnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIHFyZWFsIGVu
ZEl0ZW1TY2FsZSA9IG1fY29udGVudC0+c2NhbGUoKTsgLy8gU3RheSBhdCBzYW1lIHNjYWxlLgor
ICAgIHFyZWFsIGVuZEl0ZW1TY2FsZSA9IG1fY29udGVudC0+cmVuZGVyaW5nU2NhbGUoKTsgLy8g
U3RheSBhdCBzYW1lIHNjYWxlLgogCiAgICAgUVJlY3RGIGVuZFBvc1JhbmdlID0gY29tcHV0ZVBv
c1JhbmdlRm9ySXRlbUF0U2NhbGUoZW5kSXRlbVNjYWxlKTsKICAgICBRUG9pbnRGIGVuZFBvc2l0
aW9uID0gYm91bmRQb3NpdGlvbihlbmRQb3NSYW5nZS50b3BMZWZ0KCksIHBhZ2VQb3NpdGlvbiAq
IGVuZEl0ZW1TY2FsZSwgZW5kUG9zUmFuZ2UuYm90dG9tUmlnaHQoKSk7CkBAIC0zMTksNyArMzIy
LDcgQEAgdm9pZCBRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OnBhZ2VQb3NpdGlvblJlcXVl
c3QoY29uc3QgUVBvaW50JiBwYWdlUG9zaXRpb24KIAogUVJlY3RGIFF0Vmlld3BvcnRJbnRlcmFj
dGlvbkVuZ2luZTo6Y29tcHV0ZVBvc1JhbmdlRm9ySXRlbUF0U2NhbGUocXJlYWwgaXRlbVNjYWxl
KSBjb25zdAogewotICAgIGNvbnN0IFFTaXplRiBjb250ZW50SXRlbVNpemUgPSBtX2NvbnRlbnQt
PmJvdW5kaW5nUmVjdCgpLnNpemUoKSAqIGl0ZW1TY2FsZTsKKyAgICBjb25zdCBRU2l6ZUYgY29u
dGVudEl0ZW1TaXplID0gbV9jb250ZW50LT5jb250ZW50U2l6ZSgpICogaXRlbVNjYWxlOwogICAg
IGNvbnN0IFFTaXplRiB2aWV3cG9ydEl0ZW1TaXplID0gbV92aWV3cG9ydC0+Ym91bmRpbmdSZWN0
KCkuc2l6ZSgpOwogCiAgICAgY29uc3QgcXJlYWwgaG9yaXpvbnRhbFJhbmdlID0gY29udGVudEl0
ZW1TaXplLndpZHRoKCkgLSB2aWV3cG9ydEl0ZW1TaXplLndpZHRoKCk7CkBAIC00MDYsNyArNDA5
LDcgQEAgYm9vbCBRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OmVuc3VyZUNvbnRlbnRXaXRo
aW5WaWV3cG9ydEJvdW5kYXJ5KGJvb2wgaW1tZWQKICAgICBjb25zdCBRUmVjdEYgdmlld3BvcnRS
ZWN0ID0gbV92aWV3cG9ydC0+Ym91bmRpbmdSZWN0KCk7CiAgICAgUVBvaW50RiB2aWV3cG9ydEhv
dHNwb3QgPSB2aWV3cG9ydFJlY3QuY2VudGVyKCk7CiAKLSAgICBRUG9pbnRGIGVuZFBvc2l0aW9u
ID0gbV9jb250ZW50LT5tYXBGcm9tSXRlbShtX3ZpZXdwb3J0LCB2aWV3cG9ydEhvdHNwb3QpICog
ZW5kSXRlbVNjYWxlIC0gdmlld3BvcnRIb3RzcG90OworICAgIFFQb2ludEYgZW5kUG9zaXRpb24g
PSBtX3ZpZXdwb3J0LT5tYXBUb1dlYkNvb3JkaW5hdGVzKHZpZXdwb3J0SG90c3BvdCkgKiBlbmRJ
dGVtU2NhbGUgLSB2aWV3cG9ydEhvdHNwb3Q7CiAKICAgICBRUmVjdEYgZW5kUG9zUmFuZ2UgPSBj
b21wdXRlUG9zUmFuZ2VGb3JJdGVtQXRTY2FsZShlbmRJdGVtU2NhbGUpOwogICAgIGVuZFBvc2l0
aW9uID0gYm91bmRQb3NpdGlvbihlbmRQb3NSYW5nZS50b3BMZWZ0KCksIGVuZFBvc2l0aW9uLCBl
bmRQb3NSYW5nZS5ib3R0b21SaWdodCgpKTsKQEAgLTQ0MSw3ICs0NDQsNyBAQCB2b2lkIFF0Vmll
d3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6YXBwbHlDb25zdHJhaW50cyhjb25zdCBDb25zdHJhaW50
cyYgY29uc3RyYWludAogCiAgICAgaWYgKCFtX2hhZFVzZXJJbnRlcmFjdGlvbikgewogICAgICAg
ICBxcmVhbCBpbml0aWFsU2NhbGUgPSBpbm5lckJvdW5kZWRDU1NTY2FsZShtX2NvbnN0cmFpbnRz
LmluaXRpYWxTY2FsZSk7Ci0gICAgICAgIG1fY29udGVudC0+c2V0U2NhbGUoaXRlbVNjYWxlRnJv
bUNTUyhpbml0aWFsU2NhbGUpKTsKKyAgICAgICAgbV9jb250ZW50LT5zZXRSZW5kZXJpbmdTY2Fs
ZShpdGVtU2NhbGVGcm9tQ1NTKGluaXRpYWxTY2FsZSkpOwogICAgIH0KIAogICAgIC8vIElmIHRo
ZSB3ZWIgYXBwIGNoYW5nZXMgc3VjY2Vzc2l2ZWx5IGNoYW5nZXMgdGhlIHZpZXdwb3J0IG9uIHB1
cnBvc2UKQEAgLTQ1MSw3ICs0NTQsNyBAQCB2b2lkIFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2lu
ZTo6YXBwbHlDb25zdHJhaW50cyhjb25zdCBDb25zdHJhaW50cyYgY29uc3RyYWludAogCiBxcmVh
bCBRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OmN1cnJlbnRDU1NTY2FsZSgpCiB7Ci0gICAg
cmV0dXJuIGNzc1NjYWxlRnJvbUl0ZW0obV9jb250ZW50LT5zY2FsZSgpKTsKKyAgICByZXR1cm4g
Y3NzU2NhbGVGcm9tSXRlbShtX2NvbnRlbnQtPnJlbmRlcmluZ1NjYWxlKCkpOwogfQogCiBib29s
IFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6c2Nyb2xsQW5pbWF0aW9uQWN0aXZlKCkgY29u
c3QKQEAgLTQ3MywxNSArNDc2LDE1IEBAIGJvb2wgUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5l
OjpwYW5HZXN0dXJlQWN0aXZlKCkgY29uc3QKICAgICByZXR1cm4gc2Nyb2xsZXItPnN0YXRlKCkg
PT0gUVNjcm9sbGVyOjpQcmVzc2VkIHx8IHNjcm9sbGVyLT5zdGF0ZSgpID09IFFTY3JvbGxlcjo6
RHJhZ2dpbmc7CiB9CiAKLXZvaWQgUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpwYW5HZXN0
dXJlU3RhcnRlZChjb25zdCBRUG9pbnRGJiB0b3VjaFBvaW50LCBxaW50NjQgZXZlbnRUaW1lc3Rh
bXBNaWxsaXMpCit2b2lkIFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6cGFuR2VzdHVyZVN0
YXJ0ZWQoY29uc3QgUVBvaW50RiYgdG91Y2hQb2ludEluVmlld3BvcnRDb29yZGluYXRlcywgcWlu
dDY0IGV2ZW50VGltZXN0YW1wTWlsbGlzKQogewogICAgIG1faGFkVXNlckludGVyYWN0aW9uID0g
dHJ1ZTsKLSAgICBzY3JvbGxlcigpLT5oYW5kbGVJbnB1dChRU2Nyb2xsZXI6OklucHV0UHJlc3Ms
IG1fdmlld3BvcnQtPm1hcEZyb21JdGVtKG1fY29udGVudCwgdG91Y2hQb2ludCksIGV2ZW50VGlt
ZXN0YW1wTWlsbGlzKTsKKyAgICBzY3JvbGxlcigpLT5oYW5kbGVJbnB1dChRU2Nyb2xsZXI6Oklu
cHV0UHJlc3MsIHRvdWNoUG9pbnRJblZpZXdwb3J0Q29vcmRpbmF0ZXMsIGV2ZW50VGltZXN0YW1w
TWlsbGlzKTsKIH0KIAotdm9pZCBRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OnBhbkdlc3R1
cmVSZXF1ZXN0VXBkYXRlKGNvbnN0IFFQb2ludEYmIHRvdWNoUG9pbnQsIHFpbnQ2NCBldmVudFRp
bWVzdGFtcE1pbGxpcykKK3ZvaWQgUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpwYW5HZXN0
dXJlUmVxdWVzdFVwZGF0ZShjb25zdCBRUG9pbnRGJiB0b3VjaFBvaW50SW5WaWV3cG9ydENvb3Jk
aW5hdGVzLCBxaW50NjQgZXZlbnRUaW1lc3RhbXBNaWxsaXMpCiB7Ci0gICAgc2Nyb2xsZXIoKS0+
aGFuZGxlSW5wdXQoUVNjcm9sbGVyOjpJbnB1dE1vdmUsIG1fdmlld3BvcnQtPm1hcEZyb21JdGVt
KG1fY29udGVudCwgdG91Y2hQb2ludCksIGV2ZW50VGltZXN0YW1wTWlsbGlzKTsKKyAgICBzY3Jv
bGxlcigpLT5oYW5kbGVJbnB1dChRU2Nyb2xsZXI6OklucHV0TW92ZSwgdG91Y2hQb2ludEluVmll
d3BvcnRDb29yZGluYXRlcywgZXZlbnRUaW1lc3RhbXBNaWxsaXMpOwogfQogCiB2b2lkIFF0Vmll
d3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6cGFuR2VzdHVyZUNhbmNlbGxlZCgpCkBAIC00OTEsOSAr
NDk0LDkgQEAgdm9pZCBRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OnBhbkdlc3R1cmVDYW5j
ZWxsZWQoKQogICAgIHNjcm9sbGVyKCktPnN0b3AoKTsKIH0KIAotdm9pZCBRdFZpZXdwb3J0SW50
ZXJhY3Rpb25FbmdpbmU6OnBhbkdlc3R1cmVFbmRlZChjb25zdCBRUG9pbnRGJiB0b3VjaFBvaW50
LCBxaW50NjQgZXZlbnRUaW1lc3RhbXBNaWxsaXMpCit2b2lkIFF0Vmlld3BvcnRJbnRlcmFjdGlv
bkVuZ2luZTo6cGFuR2VzdHVyZUVuZGVkKGNvbnN0IFFQb2ludEYmIHRvdWNoUG9pbnRJblZpZXdw
b3J0Q29vcmRpbmF0ZXMsIHFpbnQ2NCBldmVudFRpbWVzdGFtcE1pbGxpcykKIHsKLSAgICBzY3Jv
bGxlcigpLT5oYW5kbGVJbnB1dChRU2Nyb2xsZXI6OklucHV0UmVsZWFzZSwgbV92aWV3cG9ydC0+
bWFwRnJvbUl0ZW0obV9jb250ZW50LCB0b3VjaFBvaW50KSwgZXZlbnRUaW1lc3RhbXBNaWxsaXMp
OworICAgIHNjcm9sbGVyKCktPmhhbmRsZUlucHV0KFFTY3JvbGxlcjo6SW5wdXRSZWxlYXNlLCB0
b3VjaFBvaW50SW5WaWV3cG9ydENvb3JkaW5hdGVzLCBldmVudFRpbWVzdGFtcE1pbGxpcyk7CiB9
CiAKIGJvb2wgUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpzY2FsZUFuaW1hdGlvbkFjdGl2
ZSgpIGNvbnN0CkBAIC01MTIsNyArNTE1LDcgQEAgYm9vbCBRdFZpZXdwb3J0SW50ZXJhY3Rpb25F
bmdpbmU6OnBpbmNoR2VzdHVyZUFjdGl2ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcGluY2hTdGFy
dFNjYWxlID4gMDsKIH0KIAotdm9pZCBRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OnBpbmNo
R2VzdHVyZVN0YXJ0ZWQoY29uc3QgUVBvaW50RiYgcGluY2hDZW50ZXJJbkNvbnRlbnRDb29yZGlu
YXRlcykKK3ZvaWQgUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpwaW5jaEdlc3R1cmVTdGFy
dGVkKGNvbnN0IFFQb2ludEYmIHBpbmNoQ2VudGVySW5WaWV3cG9ydENvb3JkaW5hdGVzKQogewog
ICAgIEFTU0VSVCghbV9zdXNwZW5kQ291bnQpOwogCkBAIC01MjMsMTQgKzUyNiwxNCBAQCB2b2lk
IFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6cGluY2hHZXN0dXJlU3RhcnRlZChjb25zdCBR
UG9pbnRGJiBwaW5jaENlbnRlcgogCiAgICAgbV9zY2FsZVVwZGF0ZURlZmVycmVyID0gYWRvcHRQ
dHIobmV3IFZpZXdwb3J0VXBkYXRlRGVmZXJyZXIodGhpcykpOwogCi0gICAgbV9sYXN0UGluY2hD
ZW50ZXJJblZpZXdwb3J0Q29vcmRpbmF0ZXMgPSBtX3ZpZXdwb3J0LT5tYXBGcm9tSXRlbShtX2Nv
bnRlbnQsIHBpbmNoQ2VudGVySW5Db250ZW50Q29vcmRpbmF0ZXMpOwotICAgIG1fcGluY2hTdGFy
dFNjYWxlID0gbV9jb250ZW50LT5zY2FsZSgpOworICAgIG1fbGFzdFBpbmNoQ2VudGVySW5WaWV3
cG9ydENvb3JkaW5hdGVzID0gcGluY2hDZW50ZXJJblZpZXdwb3J0Q29vcmRpbmF0ZXM7CisgICAg
bV9waW5jaFN0YXJ0U2NhbGUgPSBtX2NvbnRlbnQtPnJlbmRlcmluZ1NjYWxlKCk7CiAKICAgICAv
LyBSZXNldCB0aGUgdGlsaW5nIGxvb2stYWhlYWQgdmVjdG9yIHNvIHRoYXQgdGlsZXMgYWxsIGFy
b3VuZCB0aGUgdmlld3BvcnQgd2lsbCBiZSByZXF1ZXN0ZWQgb24gcGluY2gtZW5kLgogICAgIGVt
aXQgdmlld3BvcnRUcmFqZWN0b3J5VmVjdG9yQ2hhbmdlZChRUG9pbnRGKCkpOwogfQogCi12b2lk
IFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6cGluY2hHZXN0dXJlUmVxdWVzdFVwZGF0ZShj
b25zdCBRUG9pbnRGJiBwaW5jaENlbnRlckluQ29udGVudENvb3JkaW5hdGVzLCBxcmVhbCB0b3Rh
bFNjYWxlRmFjdG9yKQordm9pZCBRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OnBpbmNoR2Vz
dHVyZVJlcXVlc3RVcGRhdGUoY29uc3QgUVBvaW50RiYgcGluY2hDZW50ZXJJblZpZXdwb3J0Q29v
cmRpbmF0ZXMsIHFyZWFsIHRvdGFsU2NhbGVGYWN0b3IpCiB7CiAgICAgQVNTRVJUKG1fc3VzcGVu
ZENvdW50KTsKIApAQCAtNTQ0LDEyICs1NDcsMTEgQEAgdm9pZCBRdFZpZXdwb3J0SW50ZXJhY3Rp
b25FbmdpbmU6OnBpbmNoR2VzdHVyZVJlcXVlc3RVcGRhdGUoY29uc3QgUVBvaW50RiYgcGluY2gK
ICAgICAvLyBBbGxvdyB6b29taW5nIG91dCBiZXlvbmQgbWltaW11bSBzY2FsZSBvbiBwYWdlcyB0
aGF0IGRvIG5vdCBleHBsaWNpdGx5IGRpc2FsbG93IGl0LgogICAgIGNvbnN0IHFyZWFsIHRhcmdl
dENTU1NjYWxlID0gb3V0ZXJCb3VuZGVkQ1NTU2NhbGUoY3NzU2NhbGUpOwogCi0gICAgUVBvaW50
RiBwaW5jaENlbnRlckluVmlld3BvcnRDb29yZGluYXRlcyA9IG1fdmlld3BvcnQtPm1hcEZyb21J
dGVtKG1fY29udGVudCwgcGluY2hDZW50ZXJJbkNvbnRlbnRDb29yZGluYXRlcyk7Ci0KLSAgICBz
Y2FsZUNvbnRlbnQocGluY2hDZW50ZXJJbkNvbnRlbnRDb29yZGluYXRlcywgdGFyZ2V0Q1NTU2Nh
bGUpOworICAgIHNjYWxlQ29udGVudChtX3ZpZXdwb3J0LT5tYXBUb1dlYkNvb3JkaW5hdGVzKHBp
bmNoQ2VudGVySW5WaWV3cG9ydENvb3JkaW5hdGVzKSwgdGFyZ2V0Q1NTU2NhbGUpOwogCiAgICAg
Y29uc3QgUVBvaW50RiBwb3NpdGlvbkRpZmYgPSBwaW5jaENlbnRlckluVmlld3BvcnRDb29yZGlu
YXRlcyAtIG1fbGFzdFBpbmNoQ2VudGVySW5WaWV3cG9ydENvb3JkaW5hdGVzOwogICAgIG1fbGFz
dFBpbmNoQ2VudGVySW5WaWV3cG9ydENvb3JkaW5hdGVzID0gcGluY2hDZW50ZXJJblZpZXdwb3J0
Q29vcmRpbmF0ZXM7CisKICAgICBtX2NvbnRlbnQtPnNldFBvcyhtX2NvbnRlbnQtPnBvcygpICsg
cG9zaXRpb25EaWZmKTsKIH0KIApAQCAtNTc2LDEyICs1NzgsMTIgQEAgdm9pZCBRdFZpZXdwb3J0
SW50ZXJhY3Rpb25FbmdpbmU6Oml0ZW1TaXplQ2hhbmdlZCgpCiAgICAgZW5zdXJlQ29udGVudFdp
dGhpblZpZXdwb3J0Qm91bmRhcnkoKTsKIH0KIAotdm9pZCBRdFZpZXdwb3J0SW50ZXJhY3Rpb25F
bmdpbmU6OnNjYWxlQ29udGVudChjb25zdCBRUG9pbnRGJiBjZW50ZXJJbkNvbnRlbnRDb29yZGlu
YXRlcywgcXJlYWwgY3NzU2NhbGUpCit2b2lkIFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6
c2NhbGVDb250ZW50KGNvbnN0IFFQb2ludEYmIGNlbnRlckluV2ViQ29vcmRpbmF0ZXMsIHFyZWFs
IGNzc1NjYWxlKQogewotICAgIFFQb2ludEYgb2xkUGluY2hDZW50ZXJPblBhcmVudCA9IG1fY29u
dGVudC0+bWFwVG9JdGVtKG1fY29udGVudC0+cGFyZW50SXRlbSgpLCBjZW50ZXJJbkNvbnRlbnRD
b29yZGluYXRlcyk7Ci0gICAgbV9jb250ZW50LT5zZXRTY2FsZShpdGVtU2NhbGVGcm9tQ1NTKGNz
c1NjYWxlKSk7Ci0gICAgUVBvaW50RiBuZXdQaW5jaENlbnRlck9uUGFyZW50ID0gbV9jb250ZW50
LT5tYXBUb0l0ZW0obV9jb250ZW50LT5wYXJlbnRJdGVtKCksIGNlbnRlckluQ29udGVudENvb3Jk
aW5hdGVzKTsKLSAgICBtX2NvbnRlbnQtPnNldFBvcyhtX2NvbnRlbnQtPnBvcygpIC0gKG5ld1Bp
bmNoQ2VudGVyT25QYXJlbnQgLSBvbGRQaW5jaENlbnRlck9uUGFyZW50KSk7CisgICAgUVBvaW50
RiBvbGRQaW5jaENlbnRlck9uVmlld3BvcnQgPSBtX3ZpZXdwb3J0LT5tYXBGcm9tV2ViQ29vcmRp
bmF0ZXMoY2VudGVySW5XZWJDb29yZGluYXRlcyk7CisgICAgbV9jb250ZW50LT5zZXRSZW5kZXJp
bmdTY2FsZShpdGVtU2NhbGVGcm9tQ1NTKGNzc1NjYWxlKSk7CisgICAgUVBvaW50RiBuZXdQaW5j
aENlbnRlck9uVmlld3BvcnQgPSBtX3ZpZXdwb3J0LT5tYXBGcm9tV2ViQ29vcmRpbmF0ZXMoY2Vu
dGVySW5XZWJDb29yZGluYXRlcyk7CisgICAgbV9jb250ZW50LT5zZXRQb3MobV9jb250ZW50LT5w
b3MoKSAtIChuZXdQaW5jaENlbnRlck9uVmlld3BvcnQgLSBvbGRQaW5jaENlbnRlck9uVmlld3Bv
cnQpKTsKIH0KIAogI2luY2x1ZGUgIm1vY19RdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUuY3Bw
IgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0Vmlld3BvcnRJbnRl
cmFjdGlvbkVuZ2luZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0Vmlld3BvcnRJ
bnRlcmFjdGlvbkVuZ2luZS5oCmluZGV4IDY4Mzc3YTQuLjYwYWEzNmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRWaWV3cG9ydEludGVyYWN0aW9uRW5n
aW5lLmgKQEAgLTMzLDYgKzMzLDggQEAKIFFUX0JFR0lOX05BTUVTUEFDRQogY2xhc3MgUVBvaW50
RjsKIGNsYXNzIFFRdWlja0l0ZW07CitjbGFzcyBRUXVpY2tXZWJQYWdlOworY2xhc3MgUVF1aWNr
V2ViVmlldzsKIGNsYXNzIFFXaGVlbEV2ZW50OwogUVRfRU5EX05BTUVTUEFDRQogCkBAIC00NCw3
ICs0Niw3IEBAIGNsYXNzIFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZSA6IHB1YmxpYyBRT2Jq
ZWN0IHsKICAgICBRX09CSkVDVAogCiBwdWJsaWM6Ci0gICAgUXRWaWV3cG9ydEludGVyYWN0aW9u
RW5naW5lKGNvbnN0IFFRdWlja0l0ZW0qLCBRUXVpY2tJdGVtKik7CisgICAgUXRWaWV3cG9ydElu
dGVyYWN0aW9uRW5naW5lKGNvbnN0IFFRdWlja1dlYlZpZXcqLCBRUXVpY2tXZWJQYWdlKik7CiAg
ICAgflF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZSgpOwogCiAgICAgc3RydWN0IENvbnN0cmFp
bnRzIHsKQEAgLTgwLDE3ICs4MiwxNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbnRlcnJ1cHRTY3Jv
bGxBbmltYXRpb24oKTsKIAogICAgIGJvb2wgcGFuR2VzdHVyZUFjdGl2ZSgpIGNvbnN0OwotICAg
IHZvaWQgcGFuR2VzdHVyZVN0YXJ0ZWQoY29uc3QgUVBvaW50RiYgdG91Y2hQb2ludCwgcWludDY0
IGV2ZW50VGltZXN0YW1wTWlsbGlzKTsKLSAgICB2b2lkIHBhbkdlc3R1cmVSZXF1ZXN0VXBkYXRl
KGNvbnN0IFFQb2ludEYmIHRvdWNoUG9pbnQsIHFpbnQ2NCBldmVudFRpbWVzdGFtcE1pbGxpcyk7
CisgICAgdm9pZCBwYW5HZXN0dXJlU3RhcnRlZChjb25zdCBRUG9pbnRGJiB0b3VjaFBvaW50SW5W
aWV3cG9ydENvb3JkaW5hdGVzLCBxaW50NjQgZXZlbnRUaW1lc3RhbXBNaWxsaXMpOworICAgIHZv
aWQgcGFuR2VzdHVyZVJlcXVlc3RVcGRhdGUoY29uc3QgUVBvaW50RiYgdG91Y2hQb2ludEluVmll
d3BvcnRDb29yZGluYXRlcywgcWludDY0IGV2ZW50VGltZXN0YW1wTWlsbGlzKTsKICAgICB2b2lk
IHBhbkdlc3R1cmVDYW5jZWxsZWQoKTsKLSAgICB2b2lkIHBhbkdlc3R1cmVFbmRlZChjb25zdCBR
UG9pbnRGJiB0b3VjaFBvaW50LCBxaW50NjQgZXZlbnRUaW1lc3RhbXBNaWxsaXMpOworICAgIHZv
aWQgcGFuR2VzdHVyZUVuZGVkKGNvbnN0IFFQb2ludEYmIHRvdWNoUG9pbnRJblZpZXdwb3J0Q29v
cmRpbmF0ZXMsIHFpbnQ2NCBldmVudFRpbWVzdGFtcE1pbGxpcyk7CiAKICAgICBib29sIHNjYWxl
QW5pbWF0aW9uQWN0aXZlKCkgY29uc3Q7CiAgICAgdm9pZCBpbnRlcnJ1cHRTY2FsZUFuaW1hdGlv
bigpOwogCiAgICAgYm9vbCBwaW5jaEdlc3R1cmVBY3RpdmUoKSBjb25zdDsKLSAgICB2b2lkIHBp
bmNoR2VzdHVyZVN0YXJ0ZWQoY29uc3QgUVBvaW50RiYgcGluY2hDZW50ZXJJbkNvbnRlbnRDb29y
ZGluYXRlcyk7Ci0gICAgdm9pZCBwaW5jaEdlc3R1cmVSZXF1ZXN0VXBkYXRlKGNvbnN0IFFQb2lu
dEYmIHBpbmNoQ2VudGVySW5Db250ZW50Q29vcmRpbmF0ZXMsIHFyZWFsIHRvdGFsU2NhbGVGYWN0
b3IpOworICAgIHZvaWQgcGluY2hHZXN0dXJlU3RhcnRlZChjb25zdCBRUG9pbnRGJiBwaW5jaENl
bnRlckluVmlld3BvcnRDb29yZGluYXRlcyk7CisgICAgdm9pZCBwaW5jaEdlc3R1cmVSZXF1ZXN0
VXBkYXRlKGNvbnN0IFFQb2ludEYmIHBpbmNoQ2VudGVySW5WaWV3cG9ydENvb3JkaW5hdGVzLCBx
cmVhbCB0b3RhbFNjYWxlRmFjdG9yKTsKICAgICB2b2lkIHBpbmNoR2VzdHVyZUVuZGVkKCk7CiAK
ICAgICB2b2lkIHpvb21Ub0FyZWFHZXN0dXJlRW5kZWQoY29uc3QgUVBvaW50RiYgdG91Y2hQb2lu
dCwgY29uc3QgUVJlY3RGJiB0YXJnZXRBcmVhKTsKQEAgLTEyNywxNCArMTI5LDE0IEBAIHByaXZh
dGU6CiAgICAgUVJlY3RGIGNvbXB1dGVQb3NSYW5nZUZvckl0ZW1BdFNjYWxlKHFyZWFsIGl0ZW1T
Y2FsZSkgY29uc3Q7CiAgICAgYm9vbCBlbnN1cmVDb250ZW50V2l0aGluVmlld3BvcnRCb3VuZGFy
eShib29sIGltbWVkaWF0ZSA9IGZhbHNlKTsKIAotICAgIHZvaWQgc2NhbGVDb250ZW50KGNvbnN0
IFFQb2ludEYmIGNlbnRlckluQ29udGVudENvb3JkaW5hdGVzLCBxcmVhbCBzY2FsZSk7CisgICAg
dm9pZCBzY2FsZUNvbnRlbnQoY29uc3QgUVBvaW50RiYgY2VudGVySW5XZWJDb29yZGluYXRlcywg
cXJlYWwgY3NzU2NhbGUpOwogCiAgICAgLy8gQXMgbG9uZyBhcyB0aGUgb2JqZWN0IGV4aXN0cyB0
aGlzIGZ1bmN0aW9uIHdpbGwgYWx3YXlzIHJldHVybiB0aGUgc2FtZSBRU2Nyb2xsZXIgaW5zdGFu
Y2UuCiAgICAgUVNjcm9sbGVyKiBzY3JvbGxlcigpIHsgcmV0dXJuIFFTY3JvbGxlcjo6c2Nyb2xs
ZXIodGhpcyk7IH0KIAogCi0gICAgY29uc3QgUVF1aWNrSXRlbSogY29uc3QgbV92aWV3cG9ydDsK
LSAgICBRUXVpY2tJdGVtKiBjb25zdCBtX2NvbnRlbnQ7CisgICAgY29uc3QgUVF1aWNrV2ViVmll
dyogY29uc3QgbV92aWV3cG9ydDsKKyAgICBRUXVpY2tXZWJQYWdlKiBjb25zdCBtX2NvbnRlbnQ7
CiAKICAgICBDb25zdHJhaW50cyBtX2NvbnN0cmFpbnRzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VFdmVudEhhbmRsZXIuY3BwCmluZGV4IGEwMzA1
ZDEuLjg3YTJjMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdl
YlBhZ2VFdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9R
dFdlYlBhZ2VFdmVudEhhbmRsZXIuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSA8UVN0
eWxlSGludHM+CiAjaW5jbHVkZSA8UVRleHRGb3JtYXQ+CiAjaW5jbHVkZSA8UVRvdWNoRXZlbnQ+
CisjaW5jbHVkZSA8UVRyYW5zZm9ybT4KICNpbmNsdWRlIDxXZWJDb3JlL0RyYWdEYXRhLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9FZGl0b3IuaD4KIApAQCAtMTM5LDcgKzE0MCw3IEBAIGJvb2wgUXRX
ZWJQYWdlRXZlbnRIYW5kbGVyOjpoYW5kbGVFdmVudChRRXZlbnQqIGV2KQogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICBjYXNlIFFFdmVudDo6SW5wdXRNZXRob2Q6CiAgICAgICAgIGlucHV0TWV0
aG9kRXZlbnQoc3RhdGljX2Nhc3Q8UUlucHV0TWV0aG9kRXZlbnQqPihldikpOwotICAgICAgICBy
ZXR1cm4gZmFsc2U7IC8vIExvb2sgYXQgY29tbWVudCBpbiBxcXVpY2t3ZWJwYWdlLmNwcAorICAg
ICAgICByZXR1cm4gZmFsc2U7IC8vIFRoaXMgaXMgbmVjZXNzYXJ5IHRvIGF2b2lkIGFuIGVuZGxl
c3MgbG9vcCBpbiBjb25uZWN0aW9uIHdpdGggUVF1aWNrSXRlbTo6ZXZlbnQoKS4KICAgICB9CiAK
ICAgICAvLyBGSVhNRTogTW92ZSBhbGwgY29tbW9uIGV2ZW50IGhhbmRsaW5nIGhlcmUuCkBAIC0x
NTQsNDIgKzE1NSw1MCBAQCBib29sIFF0V2ViUGFnZUV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VN
b3ZlRXZlbnQoUU1vdXNlRXZlbnQqIGV2KQogICAgIC8vIE5PVEU6IGxhc3RQb3MgZnJvbSB0aGUg
ZXZlbnQgYWx3YXlzIGNvbWVzIGVtcHR5LCBzbyB3ZSB3b3JrCiAgICAgLy8gYXJvdW5kIHRoYXQg
aGVyZS4KICAgICBzdGF0aWMgUVBvaW50RiBsYXN0UG9zID0gUVBvaW50RigpOwotICAgIGlmIChs
YXN0UG9zID09IGV2LT5wb3MoKSkKKyAgICBRVHJhbnNmb3JtIHRvV2ViQ29vcmRpbmF0ZXMgPSBt
X3dlYlBhZ2UtPnRyYW5zZm9ybUZyb21JdGVtKCk7CisgICAgUVBvaW50RiB3ZWJQYWdlUG9pbnQg
PSB0b1dlYkNvb3JkaW5hdGVzLm1hcChldi0+bG9jYWxQb3MoKSk7CisgICAgaWYgKGxhc3RQb3Mg
PT0gd2ViUGFnZVBvaW50KQogICAgICAgICByZXR1cm4gZXYtPmlzQWNjZXB0ZWQoKTsKLSAgICBs
YXN0UG9zID0gZXYtPnBvcygpOworICAgIGxhc3RQb3MgPSB3ZWJQYWdlUG9pbnQ7CiAKLSAgICBt
X3dlYlBhZ2VQcm94eS0+aGFuZGxlTW91c2VFdmVudChOYXRpdmVXZWJNb3VzZUV2ZW50KGV2LCAv
KmV2ZW50Q2xpY2tDb3VudCovIDApKTsKKyAgICBtX3dlYlBhZ2VQcm94eS0+aGFuZGxlTW91c2VF
dmVudChOYXRpdmVXZWJNb3VzZUV2ZW50KGV2LCB0b1dlYkNvb3JkaW5hdGVzLCAvKmV2ZW50Q2xp
Y2tDb3VudCovIDApKTsKIAogICAgIHJldHVybiBldi0+aXNBY2NlcHRlZCgpOwogfQogCiBib29s
IFF0V2ViUGFnZUV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50KFFNb3VzZUV2ZW50
KiBldikKIHsKKyAgICBRVHJhbnNmb3JtIHRvV2ViQ29vcmRpbmF0ZXMgPSBtX3dlYlBhZ2UtPnRy
YW5zZm9ybUZyb21JdGVtKCk7CisgICAgUVBvaW50RiB3ZWJQYWdlUG9pbnQgPSB0b1dlYkNvb3Jk
aW5hdGVzLm1hcChldi0+bG9jYWxQb3MoKSk7CisKICAgICBpZiAobV9jbGlja1RpbWVyLmlzQWN0
aXZlKCkKICAgICAgICAgJiYgbV9wcmV2aW91c0NsaWNrQnV0dG9uID09IGV2LT5idXR0b24oKQot
ICAgICAgICAmJiAoZXYtPnBvcygpIC0gbV9sYXN0Q2xpY2spLm1hbmhhdHRhbkxlbmd0aCgpIDwg
cUFwcC0+c3R5bGVIaW50cygpLT5zdGFydERyYWdEaXN0YW5jZSgpKSB7CisgICAgICAgICYmICh3
ZWJQYWdlUG9pbnQudG9Qb2ludCgpIC0gbV9sYXN0Q2xpY2spLm1hbmhhdHRhbkxlbmd0aCgpIDwg
cUFwcC0+c3R5bGVIaW50cygpLT5zdGFydERyYWdEaXN0YW5jZSgpKSB7CiAgICAgICAgIG1fY2xp
Y2tDb3VudCsrOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1fY2xpY2tDb3VudCA9IDE7CiAgICAg
ICAgIG1fcHJldmlvdXNDbGlja0J1dHRvbiA9IGV2LT5idXR0b24oKTsKICAgICB9CiAKLSAgICBt
X3dlYlBhZ2VQcm94eS0+aGFuZGxlTW91c2VFdmVudChOYXRpdmVXZWJNb3VzZUV2ZW50KGV2LCBt
X2NsaWNrQ291bnQpKTsKKyAgICBtX3dlYlBhZ2VQcm94eS0+aGFuZGxlTW91c2VFdmVudChOYXRp
dmVXZWJNb3VzZUV2ZW50KGV2LCB0b1dlYkNvb3JkaW5hdGVzLCBtX2NsaWNrQ291bnQpKTsKIAot
ICAgIG1fbGFzdENsaWNrID0gZXYtPnBvcygpOworICAgIG1fbGFzdENsaWNrID0gd2ViUGFnZVBv
aW50LnRvUG9pbnQoKTsKICAgICBtX2NsaWNrVGltZXIuc3RhcnQocUFwcC0+c3R5bGVIaW50cygp
LT5tb3VzZURvdWJsZUNsaWNrSW50ZXJ2YWwoKSwgdGhpcyk7CisKICAgICByZXR1cm4gZXYtPmlz
QWNjZXB0ZWQoKTsKIH0KIAogYm9vbCBRdFdlYlBhZ2VFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNl
UmVsZWFzZUV2ZW50KFFNb3VzZUV2ZW50KiBldikKIHsKLSAgICBtX3dlYlBhZ2VQcm94eS0+aGFu
ZGxlTW91c2VFdmVudChOYXRpdmVXZWJNb3VzZUV2ZW50KGV2LCAvKmV2ZW50Q2xpY2tDb3VudCov
IDApKTsKKyAgICBRVHJhbnNmb3JtIHRvV2ViQ29vcmRpbmF0ZXMgPSBtX3dlYlBhZ2UtPnRyYW5z
Zm9ybUZyb21JdGVtKCk7CisgICAgbV93ZWJQYWdlUHJveHktPmhhbmRsZU1vdXNlRXZlbnQoTmF0
aXZlV2ViTW91c2VFdmVudChldiwgdG9XZWJDb29yZGluYXRlcywgLypldmVudENsaWNrQ291bnQq
LyAwKSk7CiAgICAgcmV0dXJuIGV2LT5pc0FjY2VwdGVkKCk7CiB9CiAKIGJvb2wgUXRXZWJQYWdl
RXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50KFFXaGVlbEV2ZW50KiBldikKIHsKLSAgICBt
X3dlYlBhZ2VQcm94eS0+aGFuZGxlV2hlZWxFdmVudChOYXRpdmVXZWJXaGVlbEV2ZW50KGV2KSk7
CisgICAgUVRyYW5zZm9ybSB0b1dlYkNvb3JkaW5hdGVzID0gbV93ZWJQYWdlLT50cmFuc2Zvcm1G
cm9tSXRlbSgpOworICAgIG1fd2ViUGFnZVByb3h5LT5oYW5kbGVXaGVlbEV2ZW50KE5hdGl2ZVdl
YldoZWVsRXZlbnQoZXYsIHRvV2ViQ29vcmRpbmF0ZXMpKTsKICAgICAvLyBGSVhNRTogSGFuZGxl
IHdoZXRoZXIgdGhlIHBhZ2UgdXNlZCB0aGUgd2hlZWwgZXZlbnQgb3Igbm90LgogICAgIGlmICht
X2ludGVyYWN0aW9uRW5naW5lKQogICAgICAgICBtX2ludGVyYWN0aW9uRW5naW5lLT53aGVlbEV2
ZW50KGV2KTsKQEAgLTIwMCwxNCArMjA5LDE2IEBAIGJvb2wgUXRXZWJQYWdlRXZlbnRIYW5kbGVy
OjpoYW5kbGVIb3ZlckxlYXZlRXZlbnQoUUhvdmVyRXZlbnQqIGV2KQogewogICAgIC8vIFRvIGdl
dCB0aGUgY29ycmVjdCBiZWhhdmlvciBvZiBtb3VzZW91dCwgd2UgbmVlZCB0byB0dXJuIHRoZSBM
ZWF2ZSBldmVudCBvZiBvdXIgd2VidmlldyBpbnRvIGEgbW91c2UgbW92ZQogICAgIC8vIHRvIGEg
dmVyeSBmYXIgcmVnaW9uLgotICAgIFFIb3ZlckV2ZW50IGZha2VFdmVudChRRXZlbnQ6OkhvdmVy
TW92ZSwgUVBvaW50KElOVF9NSU4sIElOVF9NSU4pLCBldi0+b2xkUG9zKCkpOworICAgIFFUcmFu
c2Zvcm0gdG9XZWJDb29yZGluYXRlcyA9IG1fd2ViUGFnZS0+dHJhbnNmb3JtRnJvbUl0ZW0oKTsK
KyAgICBRSG92ZXJFdmVudCBmYWtlRXZlbnQoUUV2ZW50OjpIb3Zlck1vdmUsIFFQb2ludChJTlRf
TUlOLCBJTlRfTUlOKSwgdG9XZWJDb29yZGluYXRlcy5tYXAoZXYtPm9sZFBvc0YoKSkpOwogICAg
IGZha2VFdmVudC5zZXRUaW1lc3RhbXAoZXYtPnRpbWVzdGFtcCgpKTsKICAgICByZXR1cm4gaGFu
ZGxlSG92ZXJNb3ZlRXZlbnQoJmZha2VFdmVudCk7CiB9CiAKIGJvb2wgUXRXZWJQYWdlRXZlbnRI
YW5kbGVyOjpoYW5kbGVIb3Zlck1vdmVFdmVudChRSG92ZXJFdmVudCogZXYpCiB7Ci0gICAgUU1v
dXNlRXZlbnQgbWUoUUV2ZW50OjpNb3VzZU1vdmUsIGV2LT5wb3MoKSwgUXQ6Ok5vQnV0dG9uLCBR
dDo6Tm9CdXR0b24sIFF0OjpOb01vZGlmaWVyKTsKKyAgICBRVHJhbnNmb3JtIHRvV2ViQ29vcmRp
bmF0ZXMgPSBtX3dlYlBhZ2UtPnRyYW5zZm9ybUZyb21JdGVtKCk7CisgICAgUU1vdXNlRXZlbnQg
bWUoUUV2ZW50OjpNb3VzZU1vdmUsIHRvV2ViQ29vcmRpbmF0ZXMubWFwKGV2LT5wb3NGKCkpLCBR
dDo6Tm9CdXR0b24sIFF0OjpOb0J1dHRvbiwgUXQ6Ok5vTW9kaWZpZXIpOwogICAgIG1lLnNldEFj
Y2VwdGVkKGV2LT5pc0FjY2VwdGVkKCkpOwogICAgIG1lLnNldFRpbWVzdGFtcChldi0+dGltZXN0
YW1wKCkpOwogCkBAIC0yMTcsOCArMjI4LDkgQEAgYm9vbCBRdFdlYlBhZ2VFdmVudEhhbmRsZXI6
OmhhbmRsZUhvdmVyTW92ZUV2ZW50KFFIb3ZlckV2ZW50KiBldikKIGJvb2wgUXRXZWJQYWdlRXZl
bnRIYW5kbGVyOjpoYW5kbGVEcmFnRW50ZXJFdmVudChRRHJhZ0VudGVyRXZlbnQqIGV2KQogewog
ICAgIG1fd2ViUGFnZVByb3h5LT5yZXNldERyYWdPcGVyYXRpb24oKTsKKyAgICBRVHJhbnNmb3Jt
IHRvV2ViQ29vcmRpbmF0ZXMgPSBtX3dlYlBhZ2UtPnRyYW5zZm9ybUZyb21JdGVtKCk7CiAgICAg
Ly8gRklYTUU6IFNob3VsZCBub3QgdXNlIFFDdXJzb3I6OnBvcygpCi0gICAgRHJhZ0RhdGEgZHJh
Z0RhdGEoZXYtPm1pbWVEYXRhKCksIGV2LT5wb3MoKSwgUUN1cnNvcjo6cG9zKCksIGRyb3BBY3Rp
b25Ub0RyYWdPcGVyYXRpb24oZXYtPnBvc3NpYmxlQWN0aW9ucygpKSk7CisgICAgRHJhZ0RhdGEg
ZHJhZ0RhdGEoZXYtPm1pbWVEYXRhKCksIHRvV2ViQ29vcmRpbmF0ZXMubWFwKGV2LT5wb3MoKSks
IFFDdXJzb3I6OnBvcygpLCBkcm9wQWN0aW9uVG9EcmFnT3BlcmF0aW9uKGV2LT5wb3NzaWJsZUFj
dGlvbnMoKSkpOwogICAgIG1fd2ViUGFnZVByb3h5LT5kcmFnRW50ZXJlZCgmZHJhZ0RhdGEpOwog
ICAgIGV2LT5hY2NlcHRQcm9wb3NlZEFjdGlvbigpOwogICAgIHJldHVybiB0cnVlOwpAQCAtMjQx
LDggKzI1Myw5IEBAIGJvb2wgUXRXZWJQYWdlRXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnTW92ZUV2
ZW50KFFEcmFnTW92ZUV2ZW50KiBldikKIHsKICAgICBib29sIGFjY2VwdGVkID0gZXYtPmlzQWNj
ZXB0ZWQoKTsKIAorICAgIFFUcmFuc2Zvcm0gdG9XZWJDb29yZGluYXRlcyA9IG1fd2ViUGFnZS0+
dHJhbnNmb3JtRnJvbUl0ZW0oKTsKICAgICAvLyBGSVhNRTogU2hvdWxkIG5vdCB1c2UgUUN1cnNv
cjo6cG9zKCkKLSAgICBEcmFnRGF0YSBkcmFnRGF0YShldi0+bWltZURhdGEoKSwgZXYtPnBvcygp
LCBRQ3Vyc29yOjpwb3MoKSwgZHJvcEFjdGlvblRvRHJhZ09wZXJhdGlvbihldi0+cG9zc2libGVB
Y3Rpb25zKCkpKTsKKyAgICBEcmFnRGF0YSBkcmFnRGF0YShldi0+bWltZURhdGEoKSwgdG9XZWJD
b29yZGluYXRlcy5tYXAoZXYtPnBvcygpKSwgUUN1cnNvcjo6cG9zKCksIGRyb3BBY3Rpb25Ub0Ry
YWdPcGVyYXRpb24oZXYtPnBvc3NpYmxlQWN0aW9ucygpKSk7CiAgICAgbV93ZWJQYWdlUHJveHkt
PmRyYWdVcGRhdGVkKCZkcmFnRGF0YSk7CiAgICAgZXYtPnNldERyb3BBY3Rpb24oZHJhZ09wZXJh
dGlvblRvRHJvcEFjdGlvbihtX3dlYlBhZ2VQcm94eS0+ZHJhZ1Nlc3Npb24oKS5vcGVyYXRpb24p
KTsKICAgICBpZiAobV93ZWJQYWdlUHJveHktPmRyYWdTZXNzaW9uKCkub3BlcmF0aW9uICE9IERy
YWdPcGVyYXRpb25Ob25lKQpAQCAtMjU1LDkgKzI2OCw5IEBAIGJvb2wgUXRXZWJQYWdlRXZlbnRI
YW5kbGVyOjpoYW5kbGVEcmFnTW92ZUV2ZW50KFFEcmFnTW92ZUV2ZW50KiBldikKIGJvb2wgUXRX
ZWJQYWdlRXZlbnRIYW5kbGVyOjpoYW5kbGVEcm9wRXZlbnQoUURyb3BFdmVudCogZXYpCiB7CiAg
ICAgYm9vbCBhY2NlcHRlZCA9IGV2LT5pc0FjY2VwdGVkKCk7Ci0KKyAgICBRVHJhbnNmb3JtIHRv
V2ViQ29vcmRpbmF0ZXMgPSBtX3dlYlBhZ2UtPnRyYW5zZm9ybUZyb21JdGVtKCk7CiAgICAgLy8g
RklYTUU6IFNob3VsZCBub3QgdXNlIFFDdXJzb3I6OnBvcygpCi0gICAgRHJhZ0RhdGEgZHJhZ0Rh
dGEoZXYtPm1pbWVEYXRhKCksIGV2LT5wb3MoKSwgUUN1cnNvcjo6cG9zKCksIGRyb3BBY3Rpb25U
b0RyYWdPcGVyYXRpb24oZXYtPnBvc3NpYmxlQWN0aW9ucygpKSk7CisgICAgRHJhZ0RhdGEgZHJh
Z0RhdGEoZXYtPm1pbWVEYXRhKCksIHRvV2ViQ29vcmRpbmF0ZXMubWFwKGV2LT5wb3MoKSksIFFD
dXJzb3I6OnBvcygpLCBkcm9wQWN0aW9uVG9EcmFnT3BlcmF0aW9uKGV2LT5wb3NzaWJsZUFjdGlv
bnMoKSkpOwogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBoYW5kbGU7CiAgICAgbV93ZWJQ
YWdlUHJveHktPnBlcmZvcm1EcmFnKCZkcmFnRGF0YSwgU3RyaW5nKCksIGhhbmRsZSk7CiAgICAg
ZXYtPnNldERyb3BBY3Rpb24oZHJhZ09wZXJhdGlvblRvRHJvcEFjdGlvbihtX3dlYlBhZ2VQcm94
eS0+ZHJhZ1Nlc3Npb24oKS5vcGVyYXRpb24pKTsKQEAgLTI2OSwxMyArMjgyLDE1IEBAIGJvb2wg
UXRXZWJQYWdlRXZlbnRIYW5kbGVyOjpoYW5kbGVEcm9wRXZlbnQoUURyb3BFdmVudCogZXYpCiAK
IHZvaWQgUXRXZWJQYWdlRXZlbnRIYW5kbGVyOjpoYW5kbGVTaW5nbGVUYXBFdmVudChjb25zdCBR
VG91Y2hFdmVudDo6VG91Y2hQb2ludCYgcG9pbnQpCiB7Ci0gICAgV2ViR2VzdHVyZUV2ZW50IGdl
c3R1cmUoV2ViRXZlbnQ6Okdlc3R1cmVTaW5nbGVUYXAsIHBvaW50LnBvcygpLnRvUG9pbnQoKSwg
cG9pbnQuc2NyZWVuUG9zKCkudG9Qb2ludCgpLCBXZWJFdmVudDo6TW9kaWZpZXJzKDApLCAwKTsK
KyAgICBRVHJhbnNmb3JtIHRvV2ViQ29vcmRpbmF0ZXMgPSBtX3dlYlBhZ2UtPnRyYW5zZm9ybUZy
b21JdGVtKCk7CisgICAgV2ViR2VzdHVyZUV2ZW50IGdlc3R1cmUoV2ViRXZlbnQ6Okdlc3R1cmVT
aW5nbGVUYXAsIHRvV2ViQ29vcmRpbmF0ZXMubWFwKHBvaW50LnBvcygpKS50b1BvaW50KCksIHBv
aW50LnNjcmVlblBvcygpLnRvUG9pbnQoKSwgV2ViRXZlbnQ6Ok1vZGlmaWVycygwKSwgMCk7CiAg
ICAgbV93ZWJQYWdlUHJveHktPmhhbmRsZUdlc3R1cmVFdmVudChnZXN0dXJlKTsKIH0KIAogdm9p
ZCBRdFdlYlBhZ2VFdmVudEhhbmRsZXI6OmhhbmRsZURvdWJsZVRhcEV2ZW50KGNvbnN0IFFUb3Vj
aEV2ZW50OjpUb3VjaFBvaW50JiBwb2ludCkKIHsKLSAgICBtX3dlYlBhZ2VQcm94eS0+ZmluZFpv
b21hYmxlQXJlYUZvclBvaW50KHBvaW50LnBvcygpLnRvUG9pbnQoKSk7CisgICAgUVRyYW5zZm9y
bSB0b1dlYkNvb3JkaW5hdGVzID0gbV93ZWJQYWdlLT50cmFuc2Zvcm1Gcm9tSXRlbSgpOworICAg
IG1fd2ViUGFnZVByb3h5LT5maW5kWm9vbWFibGVBcmVhRm9yUG9pbnQodG9XZWJDb29yZGluYXRl
cy5tYXAocG9pbnQucG9zKCkpLnRvUG9pbnQoKSk7CiB9CiAKIHZvaWQgUXRXZWJQYWdlRXZlbnRI
YW5kbGVyOjp0aW1lckV2ZW50KFFUaW1lckV2ZW50KiBldikKQEAgLTM4MCwxMSArMzk1LDEyIEBA
IHZvaWQgUXRXZWJQYWdlRXZlbnRIYW5kbGVyOjppbnB1dE1ldGhvZEV2ZW50KFFJbnB1dE1ldGhv
ZEV2ZW50KiBldikKIHZvaWQgUXRXZWJQYWdlRXZlbnRIYW5kbGVyOjp0b3VjaEV2ZW50KFFUb3Vj
aEV2ZW50KiBldmVudCkKIHsKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgIG1fd2ViUGFn
ZVByb3h5LT5oYW5kbGVUb3VjaEV2ZW50KE5hdGl2ZVdlYlRvdWNoRXZlbnQoZXZlbnQpKTsKKyAg
ICBRVHJhbnNmb3JtIHRvV2ViQ29vcmRpbmF0ZXMgPSBtX3dlYlBhZ2UtPnRyYW5zZm9ybUZyb21J
dGVtKCk7CisgICAgbV93ZWJQYWdlUHJveHktPmhhbmRsZVRvdWNoRXZlbnQoTmF0aXZlV2ViVG91
Y2hFdmVudChldmVudCwgdG9XZWJDb29yZGluYXRlcykpOwogICAgIGV2ZW50LT5hY2NlcHQoKTsK
ICNlbHNlCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgZXYtPmlnbm9yZSgpOworICAg
IGV2ZW50LT5pZ25vcmUoKTsKICNlbmRpZgogfQogCi0tIAoxLjcuOAoK
</data>
<flag name="review"
          id="119997"
          type_id="1"
          status="-"
          setter="hausmann"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120023</attachid>
            <date>2011-12-20 06:44:13 -0800</date>
            <delta_ts>2012-01-04 05:28:46 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>0001-Qt-WK2-Pinch-zoom-should-affect-the-page-size.patch</filename>
            <type>text/plain</type>
            <size>62829</size>
            <attacher name="Andras Becsi">abecsi</attacher>
            
              <data encoding="base64">RnJvbSAzN2Q0NDc2ZTRjZGQzM2YyZGMxYjMxYjRmZjU1OTQwODBhOTllMzk2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyYXMgQmVjc2kgPGFuZHJhcy5iZWNzaUBub2tpYS5jb20+
CkRhdGU6IFR1ZSwgMjAgRGVjIDIwMTEgMTU6NDI6MDMgKzAxMDAKU3ViamVjdDogW1BBVENIXSBb
UXRdW1dLMl0gUGluY2ggem9vbSBzaG91bGQgYWZmZWN0IHRoZSBwYWdlIHNpemUKCi0tLQogU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTI4ICsr
KysrKysrKysrKysrCiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViTW91c2VFdmVudC5o
ICAgICAgICB8ICAgIDIgKy0KIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJUb3VjaEV2
ZW50LmggICAgICAgIHwgICAgMiArLQogU291cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2ZVdlYldo
ZWVsRXZlbnQuaCAgICAgICAgfCAgICAyICstCiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvcXQvTmF0
aXZlV2ViTW91c2VFdmVudFF0LmNwcCB8ICAgIDQgKy0KIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9x
dC9OYXRpdmVXZWJUb3VjaEV2ZW50UXQuY3BwIHwgICAgNCArLQogU291cmNlL1dlYktpdDIvU2hh
cmVkL3F0L05hdGl2ZVdlYldoZWVsRXZlbnRRdC5jcHAgfCAgICA0ICstCiBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvcXQvV2ViRXZlbnRGYWN0b3J5UXQuY3BwICAgICB8ICAgMjAgKystCiBTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvcXQvV2ViRXZlbnRGYWN0b3J5UXQuaCAgICAgICB8ICAgIDYgKy0KIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2VicGFnZS5jcHAgIHwgIDE2OCAr
KysrKysrLS0tLS0tLS0tLS0KIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNr
d2VicGFnZV9wLmggIHwgICAzMyArKy0tCiAuLi4vV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Fx
dWlja3dlYnBhZ2VfcF9wLmggICB8ICAgIDcgKwogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcCAgfCAgMTgyICsrKysrKysrKysrKysrKysrLS0tCiBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcC5oICB8ICAgMjMgKysr
CiAuLi4vV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcF9wLmggICB8ICAg
IDIgLQogLi4uL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2Vidmlld3BvcnRpbmZvLmNwcCAg
fCAgICAyICstCiAuLi4vcXQvdGVzdHMvcXF1aWNrd2Vidmlldy90c3RfcXF1aWNrd2Vidmlldy5j
cHAgICB8ICAgIDIgKy0KIC4uLi9VSVByb2Nlc3MvcXQvUXRQaW5jaEdlc3R1cmVSZWNvZ25pemVy
LmNwcCAgICAgIHwgICAgNCArLQogLi4uL1VJUHJvY2Vzcy9xdC9RdFZpZXdwb3J0SW50ZXJhY3Rp
b25FbmdpbmUuY3BwICAgfCAgIDY0ICsrKystLS0tCiAuLi4vVUlQcm9jZXNzL3F0L1F0Vmlld3Bv
cnRJbnRlcmFjdGlvbkVuZ2luZS5oICAgICB8ICAgMjAgKystCiAuLi4vV2ViS2l0Mi9VSVByb2Nl
c3MvcXQvUXRXZWJQYWdlRXZlbnRIYW5kbGVyLmNwcCB8ICAgNTQgKysrKy0tCiAuLi4vV2ViS2l0
Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlRXZlbnRIYW5kbGVyLmggICB8ICAgIDIgKy0KIDIyIGZp
bGVzIGNoYW5nZWQsIDUwMiBpbnNlcnRpb25zKCspLCAyMzMgZGVsZXRpb25zKC0pCgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CmluZGV4IDkxMzA3NTIuLjZiZGQwYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMzEgQEAKKzIw
MTEtMTItMjAgIEFuZHJhcyBCZWNzaSAgPGFuZHJhcy5iZWNzaUBub2tpYS5jb20+CisKKyAgICAg
ICAgW1F0XVtXSzJdIFBpbmNoIHpvb20gc2hvdWxkIGFmZmVjdCB0aGUgcGFnZSBzaXplCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDYwMQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBjdXJyZW50IGlt
cGxlbWVudGF0aW9uIHVzZXMgdGhlIHNjYWxlIHByb3BlcnR5IG9mIHRoZSBRUXVpY2tXZWJQYWdl
CisgICAgICAgIHRvIHNjYWxlIHRoZSBwYWdlIGluIHJlc3BvbnNlIHRvIHBpbmNoIGdlc3R1cmVz
LgorICAgICAgICBIb3dldmVyIGZvciBsYXlvdXQgYW5kIGFuY2hvcmluZyB0byB3b3JrIGNvcnJl
Y3RseSBpbiBRTUwsIHBpbmNoaW5nIG5lZWRzCisgICAgICAgIHRvIGNoYW5nZSB0aGUgcGFnZSBz
aXplLgorICAgICAgICBUaGlzIHBhdGNoIGFwcGxpZXMgdGhlIHBpbmNoIHNjYWxlIHRvIHRoZSBw
YWdlIHNpemUgYW5kIHRvIHRoZSB0cmFuc2Zvcm1hdGlvbgorICAgICAgICBtYXRyaXggb2YgdGhl
IGRyYXdpbmcgYXJlYS4KKyAgICAgICAgVGh1cyB0aGUgcGFnZSBpdGVtJ3MgY29vcmRpbmF0ZSBz
eXN0ZW0gaXMgbm8gbG9uZ2VyIGEgZGlyZWN0IHJlcHJlc2VudGF0aW9uCisgICAgICAgIG9mIHRo
ZSBXZWJDb3JlOjpQYWdlIGNvb3JkaW5hdGUgc3lzdGVtIGFuZCBpdCBpcyBubyBsb25nZXIgc3Vp
dGFibGUgYXMKKyAgICAgICAgYW4gaW5lcnRpYWwgZnJhbWUgb2YgcmVmZXJlbmNlIGZvciBpbnB1
dCBldmVudHMuIFRoZSBldmVudCBwcm9wYWdhdGlvbiBoYWQKKyAgICAgICAgdG8gYmUgbW92ZWQg
dG8gdGhlIFFRdWlja1dlYlZpZXcgYW5kIHRoZSBwb3NpdGlvbnMgdHJhbnNsYXRlZCB0byBjb250
ZW50CisgICAgICAgIGNvb3JkaW5hdGVzIHdoZW4gTmF0aXZlV2ViRXZlbnRzIGFyZSBjcmVhdGVk
LgorCisgICAgICAgICogU2hhcmVkL05hdGl2ZVdlYk1vdXNlRXZlbnQuaDoKKyAgICAgICAgKiBT
aGFyZWQvTmF0aXZlV2ViVG91Y2hFdmVudC5oOgorICAgICAgICAqIFNoYXJlZC9OYXRpdmVXZWJX
aGVlbEV2ZW50Lmg6CisgICAgICAgICogU2hhcmVkL3F0L05hdGl2ZVdlYk1vdXNlRXZlbnRRdC5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5hdGl2ZVdlYk1vdXNlRXZlbnQ6Ok5hdGl2ZVdlYk1vdXNl
RXZlbnQpOgorICAgICAgICAqIFNoYXJlZC9xdC9OYXRpdmVXZWJUb3VjaEV2ZW50UXQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOYXRpdmVXZWJUb3VjaEV2ZW50OjpOYXRpdmVXZWJUb3VjaEV2ZW50
KToKKyAgICAgICAgKiBTaGFyZWQvcXQvTmF0aXZlV2ViV2hlZWxFdmVudFF0LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TmF0aXZlV2ViV2hlZWxFdmVudDo6TmF0aXZlV2ViV2hlZWxFdmVudCk6Cisg
ICAgICAgICogU2hhcmVkL3F0L1dlYkV2ZW50RmFjdG9yeVF0LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJNb3VzZUV2ZW50KToKKyAgICAgICAgKFdlYktp
dDo6V2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJXaGVlbEV2ZW50KToKKyAgICAgICAgKFdlYktp
dDo6V2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJUb3VjaEV2ZW50KToKKyAgICAgICAgKiBTaGFy
ZWQvcXQvV2ViRXZlbnRGYWN0b3J5UXQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Fx
dWlja3dlYnBhZ2UuY3BwOgorICAgICAgICAoUVF1aWNrV2ViUGFnZTo6Z2VvbWV0cnlDaGFuZ2Vk
KToKKyAgICAgICAgKFFRdWlja1dlYlBhZ2VQcml2YXRlOjpRUXVpY2tXZWJQYWdlUHJpdmF0ZSk6
CisgICAgICAgIChRUXVpY2tXZWJQYWdlUHJpdmF0ZTo6cGFpbnRUb0N1cnJlbnRHTENvbnRleHQp
OgorICAgICAgICAoUVF1aWNrV2ViUGFnZTo6dXNlc1RyYWRpdGlvbmFsRGVza3RvcEJlaGF2aW91
cik6CisgICAgICAgIChRUXVpY2tXZWJQYWdlOjpzZXRVc2VzVHJhZGl0aW9uYWxEZXNrdG9wQmVo
YXZpb3VyKToKKyAgICAgICAgKFFRdWlja1dlYlBhZ2U6OmV2ZW50SGFuZGxlcik6CisgICAgICAg
IChRUXVpY2tXZWJQYWdlOjpzZXRDb250ZW50U2l6ZSk6CisgICAgICAgIChRUXVpY2tXZWJQYWdl
Ojpjb250ZW50U2l6ZSk6CisgICAgICAgIChRUXVpY2tXZWJQYWdlOjpzZXRDb250ZW50U2NhbGUp
OgorICAgICAgICAoUVF1aWNrV2ViUGFnZTo6Y29udGVudFNjYWxlKToKKyAgICAgICAgKFFRdWlj
a1dlYlBhZ2U6OnRyYW5zZm9ybUZyb21JdGVtKToKKyAgICAgICAgKFFRdWlja1dlYlBhZ2U6OnRy
YW5zZm9ybVRvSXRlbSk6CisgICAgICAgIChRUXVpY2tXZWJQYWdlUHJpdmF0ZTo6dXBkYXRlU2l6
ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJwYWdlX3AuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnBhZ2VfcF9wLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFRdWlja1dlYlZpZXdQ
cml2YXRlOjplbmFibGVNb3VzZUV2ZW50cyk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3UHJpdmF0
ZTo6ZGlzYWJsZU1vdXNlRXZlbnRzKToKKyAgICAgICAgKFFRdWlja1dlYlZpZXdQcml2YXRlOjps
b2FkRGlkQ29tbWl0KToKKyAgICAgICAgKFFRdWlja1dlYlZpZXdQcml2YXRlOjpkaWRGaW5pc2hG
aXJzdE5vbkVtcHR5TGF5b3V0KToKKyAgICAgICAgKFFRdWlja1dlYlZpZXdQcml2YXRlOjpkaWRD
aGFuZ2VDb250ZW50c1NpemUpOgorICAgICAgICAoUVF1aWNrV2ViVmlld1ByaXZhdGU6OmRpZENo
YW5nZVZpZXdwb3J0UHJvcGVydGllcyk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6
cGFnZURpZFJlcXVlc3RTY3JvbGwpOgorICAgICAgICAoUVF1aWNrV2ViVmlld1ByaXZhdGU6OnVw
ZGF0ZVZpc2libGVDb250ZW50UmVjdEFuZFNjYWxlKToKKyAgICAgICAgKFFRdWlja1dlYlZpZXdQ
cml2YXRlOjpQb3N0VHJhbnNpdGlvblN0YXRlOjphcHBseSk6CisgICAgICAgIChRUXVpY2tXZWJW
aWV3UHJpdmF0ZTo6c2V0VXNlVHJhZGl0aW9uYWxEZXNrdG9wQmVoYXZpb3VyKToKKyAgICAgICAg
KFFRdWlja1dlYlZpZXdFeHBlcmltZW50YWw6OnNldFVzZVRyYWRpdGlvbmFsRGVza3RvcEJlaGF2
aW91cik6CisgICAgICAgIChRUXVpY2tXZWJWaWV3RXhwZXJpbWVudGFsOjp1c2VUcmFkaXRpb25h
bERlc2t0b3BCZWhhdmlvdXIpOgorICAgICAgICAoUVF1aWNrV2ViVmlldzo6bWFwVG9XZWJDb250
ZW50KToKKyAgICAgICAgKFFRdWlja1dlYlZpZXc6Om1hcFJlY3RUb1dlYkNvbnRlbnQpOgorICAg
ICAgICAoUVF1aWNrV2ViVmlldzo6bWFwRnJvbVdlYkNvbnRlbnQpOgorICAgICAgICAoUVF1aWNr
V2ViVmlldzo6bWFwUmVjdEZyb21XZWJDb250ZW50KToKKyAgICAgICAgKFFRdWlja1dlYlZpZXc6
Omdlb21ldHJ5Q2hhbmdlZCk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3OjprZXlQcmVzc0V2ZW50
KToKKyAgICAgICAgKFFRdWlja1dlYlZpZXc6OmtleVJlbGVhc2VFdmVudCk6CisgICAgICAgIChR
UXVpY2tXZWJWaWV3OjppbnB1dE1ldGhvZEV2ZW50KToKKyAgICAgICAgKFFRdWlja1dlYlZpZXc6
OmZvY3VzSW5FdmVudCk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3Ojpmb2N1c091dEV2ZW50KToK
KyAgICAgICAgKFFRdWlja1dlYlZpZXc6OnRvdWNoRXZlbnQpOgorICAgICAgICAoUVF1aWNrV2Vi
Vmlldzo6bW91c2VQcmVzc0V2ZW50KToKKyAgICAgICAgKFFRdWlja1dlYlZpZXc6Om1vdXNlTW92
ZUV2ZW50KToKKyAgICAgICAgKFFRdWlja1dlYlZpZXc6Om1vdXNlUmVsZWFzZUV2ZW50KToKKyAg
ICAgICAgKFFRdWlja1dlYlZpZXc6Om1vdXNlRG91YmxlQ2xpY2tFdmVudCk6CisgICAgICAgIChR
UXVpY2tXZWJWaWV3Ojp3aGVlbEV2ZW50KToKKyAgICAgICAgKFFRdWlja1dlYlZpZXc6OmhvdmVy
RW50ZXJFdmVudCk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3Ojpob3Zlck1vdmVFdmVudCk6Cisg
ICAgICAgIChRUXVpY2tXZWJWaWV3Ojpob3ZlckxlYXZlRXZlbnQpOgorICAgICAgICAoUVF1aWNr
V2ViVmlldzo6ZHJhZ01vdmVFdmVudCk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3OjpkcmFnRW50
ZXJFdmVudCk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3OjpkcmFnTGVhdmVFdmVudCk6CisgICAg
ICAgIChRUXVpY2tXZWJWaWV3Ojpkcm9wRXZlbnQpOgorICAgICAgICAoUVF1aWNrV2ViVmlldzo6
ZXZlbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3BfcC5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvcXQvcXdlYnZpZXdwb3J0aW5mby5jcHA6CisgICAgICAgIChRV2ViVmll
d3BvcnRJbmZvOjpjb250ZW50c1NpemUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvdGVz
dHMvcXF1aWNrd2Vidmlldy90c3RfcXF1aWNrd2Vidmlldy5jcHA6CisgICAgICAgICh0c3RfUVF1
aWNrV2ViVmlldzo6c2Nyb2xsUmVxdWVzdCk6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1F0UGlu
Y2hHZXN0dXJlUmVjb2duaXplci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlF0UGluY2hHZXN0dXJl
UmVjb2duaXplcjo6cmVjb2duaXplKToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUXRWaWV3cG9y
dEludGVyYWN0aW9uRW5naW5lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UXRWaWV3cG9ydEludGVy
YWN0aW9uRW5naW5lOjpRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUpOgorICAgICAgICAoV2Vi
S2l0OjpRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OnNldEl0ZW1SZWN0VmlzaWJsZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6YW5pbWF0ZUl0ZW1S
ZWN0VmlzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6OlF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2lu
ZTo6ZXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6
OndoZWVsRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpRdFZpZXdwb3J0SW50ZXJhY3Rpb25Fbmdp
bmU6OnBhZ2VQb3NpdGlvblJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpRdFZpZXdwb3J0SW50
ZXJhY3Rpb25FbmdpbmU6OmNvbXB1dGVQb3NSYW5nZUZvckl0ZW1BdFNjYWxlKToKKyAgICAgICAg
KFdlYktpdDo6UXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjplbnN1cmVDb250ZW50V2l0aGlu
Vmlld3BvcnRCb3VuZGFyeSk6CisgICAgICAgIChXZWJLaXQ6OlF0Vmlld3BvcnRJbnRlcmFjdGlv
bkVuZ2luZTo6YXBwbHlDb25zdHJhaW50cyk6CisgICAgICAgIChXZWJLaXQ6OlF0Vmlld3BvcnRJ
bnRlcmFjdGlvbkVuZ2luZTo6Y3VycmVudENTU1NjYWxlKToKKyAgICAgICAgKFdlYktpdDo6UXRW
aWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpwYW5HZXN0dXJlU3RhcnRlZCk6CisgICAgICAgIChX
ZWJLaXQ6OlF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6cGFuR2VzdHVyZVJlcXVlc3RVcGRh
dGUpOgorICAgICAgICAoV2ViS2l0OjpRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OnBhbkdl
c3R1cmVFbmRlZCk6CisgICAgICAgIChXZWJLaXQ6OlF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2lu
ZTo6cGluY2hHZXN0dXJlU3RhcnRlZCk6CisgICAgICAgIChXZWJLaXQ6OlF0Vmlld3BvcnRJbnRl
cmFjdGlvbkVuZ2luZTo6cGluY2hHZXN0dXJlUmVxdWVzdFVwZGF0ZSk6CisgICAgICAgIChXZWJL
aXQ6OlF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6c2NhbGVDb250ZW50KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvcXQvUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lLmg6CisgICAgICAgICog
VUlQcm9jZXNzL3F0L1F0V2ViUGFnZUV2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChRdFdlYlBh
Z2VFdmVudEhhbmRsZXI6OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKFF0V2ViUGFnZUV2ZW50SGFu
ZGxlcjo6aGFuZGxlTW91c2VNb3ZlRXZlbnQpOgorICAgICAgICAoUXRXZWJQYWdlRXZlbnRIYW5k
bGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnQpOgorICAgICAgICAoUXRXZWJQYWdlRXZlbnRIYW5k
bGVyOjpoYW5kbGVNb3VzZVJlbGVhc2VFdmVudCk6CisgICAgICAgIChRdFdlYlBhZ2VFdmVudEhh
bmRsZXI6OmhhbmRsZVdoZWVsRXZlbnQpOgorICAgICAgICAoUXRXZWJQYWdlRXZlbnRIYW5kbGVy
OjpoYW5kbGVIb3ZlckxlYXZlRXZlbnQpOgorICAgICAgICAoUXRXZWJQYWdlRXZlbnRIYW5kbGVy
OjpoYW5kbGVIb3Zlck1vdmVFdmVudCk6CisgICAgICAgIChRdFdlYlBhZ2VFdmVudEhhbmRsZXI6
OmhhbmRsZURyYWdFbnRlckV2ZW50KToKKyAgICAgICAgKFF0V2ViUGFnZUV2ZW50SGFuZGxlcjo6
aGFuZGxlRHJhZ01vdmVFdmVudCk6CisgICAgICAgIChRdFdlYlBhZ2VFdmVudEhhbmRsZXI6Omhh
bmRsZURyb3BFdmVudCk6CisgICAgICAgIChRdFdlYlBhZ2VFdmVudEhhbmRsZXI6OmhhbmRsZVNp
bmdsZVRhcEV2ZW50KToKKyAgICAgICAgKFF0V2ViUGFnZUV2ZW50SGFuZGxlcjo6aGFuZGxlRG91
YmxlVGFwRXZlbnQpOgorICAgICAgICAoUXRXZWJQYWdlRXZlbnRIYW5kbGVyOjp0b3VjaEV2ZW50
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlRXZlbnRIYW5kbGVyLmg6CisKIDIw
MTEtMTItMjAgIEplc3VzIFNhbmNoZXotUGFsZW5jaWEgIDxqZXN1cy5wYWxlbmNpYUBvcGVuYm9z
c2Eub3JnPgogCiAgICAgICAgIFtRdF1bV0syXVJFR1JFU1NJT04ocjEwMzMxMCk6IEl0IGJyb2tl
IHRzdF9RUXVpY2tXZWJWaWV3Ojpsb2FkTm9uZXhpc3RlbnRGaWxlVXJsKCkgQVBJIHRlc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJNb3VzZUV2ZW50LmggYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViTW91c2VFdmVudC5oCmluZGV4IGE3M2Y5NTgu
LmI3YmJhZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJNb3Vz
ZUV2ZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2ZVdlYk1vdXNlRXZlbnQu
aApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAjZWxpZiBQTEFURk9STShXSU4pCiAgICAgTmF0
aXZlV2ViTW91c2VFdmVudChIV05ELCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSwgTFBBUkFNLCBib29s
KTsKICNlbGlmIFBMQVRGT1JNKFFUKQotICAgIGV4cGxpY2l0IE5hdGl2ZVdlYk1vdXNlRXZlbnQo
UU1vdXNlRXZlbnQqLCBpbnQpOworICAgIGV4cGxpY2l0IE5hdGl2ZVdlYk1vdXNlRXZlbnQoUU1v
dXNlRXZlbnQqLCBjb25zdCBRVHJhbnNmb3JtJiBmcm9tSXRlbVRyYW5zZm9ybSwgaW50IGV2ZW50
Q2xpY2tDb3VudCk7CiAjZWxpZiBQTEFURk9STShHVEspCiAgICAgTmF0aXZlV2ViTW91c2VFdmVu
dChjb25zdCBOYXRpdmVXZWJNb3VzZUV2ZW50Jik7CiAgICAgTmF0aXZlV2ViTW91c2VFdmVudChH
ZGtFdmVudCosIGludCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZl
V2ViVG91Y2hFdmVudC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2ZVdlYlRvdWNoRXZl
bnQuaAppbmRleCAzNjUyZGQ3Li5mMjAyMTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvTmF0aXZlV2ViVG91Y2hFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9O
YXRpdmVXZWJUb3VjaEV2ZW50LmgKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiBjbGFzcyBOYXRpdmVXZWJUb3VjaEV2ZW50IDogcHVibGljIFdlYlRvdWNoRXZlbnQgewogcHVi
bGljOgogI2lmIFBMQVRGT1JNKFFUKQotICAgIGV4cGxpY2l0IE5hdGl2ZVdlYlRvdWNoRXZlbnQo
Y29uc3QgUVRvdWNoRXZlbnQqKTsKKyAgICBleHBsaWNpdCBOYXRpdmVXZWJUb3VjaEV2ZW50KGNv
bnN0IFFUb3VjaEV2ZW50KiwgY29uc3QgUVRyYW5zZm9ybSYgZnJvbUl0ZW1UcmFuc2Zvcm0pOwog
I2VuZGlmCiAKICNpZiBQTEFURk9STShRVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9OYXRpdmVXZWJXaGVlbEV2ZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZl
V2ViV2hlZWxFdmVudC5oCmluZGV4IDAzM2FiODAuLmYwY2ZhNjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJXaGVlbEV2ZW50LmgKKysrIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL05hdGl2ZVdlYldoZWVsRXZlbnQuaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6
CiAjZWxpZiBQTEFURk9STShXSU4pCiAgICAgTmF0aXZlV2ViV2hlZWxFdmVudChIV05ELCBVSU5U
IG1lc3NhZ2UsIFdQQVJBTSwgTFBBUkFNKTsKICNlbGlmIFBMQVRGT1JNKFFUKQotICAgIGV4cGxp
Y2l0IE5hdGl2ZVdlYldoZWVsRXZlbnQoUVdoZWVsRXZlbnQqKTsKKyAgICBleHBsaWNpdCBOYXRp
dmVXZWJXaGVlbEV2ZW50KFFXaGVlbEV2ZW50KiwgY29uc3QgUVRyYW5zZm9ybSYgZnJvbUl0ZW1U
cmFuc2Zvcm0pOwogI2VsaWYgUExBVEZPUk0oR1RLKQogICAgIE5hdGl2ZVdlYldoZWVsRXZlbnQo
Y29uc3QgTmF0aXZlV2ViV2hlZWxFdmVudCYpOwogICAgIE5hdGl2ZVdlYldoZWVsRXZlbnQoR2Rr
RXZlbnQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9xdC9OYXRpdmVXZWJN
b3VzZUV2ZW50UXQuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL3F0L05hdGl2ZVdlYk1vdXNl
RXZlbnRRdC5jcHAKaW5kZXggZWU3MzFkZS4uZThmZDM5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL3F0L05hdGl2ZVdlYk1vdXNlRXZlbnRRdC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL3F0L05hdGl2ZVdlYk1vdXNlRXZlbnRRdC5jcHAKQEAgLTMwLDggKzMwLDgg
QEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLU5hdGl2ZVdlYk1vdXNlRXZlbnQ6Ok5hdGl2ZVdl
Yk1vdXNlRXZlbnQoUU1vdXNlRXZlbnQqIGV2ZW50LCBpbnQgZXZlbnRDbGlja0NvdW50KQotICAg
IDogV2ViTW91c2VFdmVudChXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYk1vdXNlRXZlbnQoZXZl
bnQsIGV2ZW50Q2xpY2tDb3VudCkpCitOYXRpdmVXZWJNb3VzZUV2ZW50OjpOYXRpdmVXZWJNb3Vz
ZUV2ZW50KFFNb3VzZUV2ZW50KiBldmVudCwgY29uc3QgUVRyYW5zZm9ybSYgZnJvbUl0ZW1UcmFu
c2Zvcm0sIGludCBldmVudENsaWNrQ291bnQpCisgICAgOiBXZWJNb3VzZUV2ZW50KFdlYkV2ZW50
RmFjdG9yeTo6Y3JlYXRlV2ViTW91c2VFdmVudChldmVudCwgZnJvbUl0ZW1UcmFuc2Zvcm0sIGV2
ZW50Q2xpY2tDb3VudCkpCiAgICAgLCBtX25hdGl2ZUV2ZW50KGV2ZW50KQogewogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL3F0L05hdGl2ZVdlYlRvdWNoRXZlbnRRdC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvcXQvTmF0aXZlV2ViVG91Y2hFdmVudFF0LmNwcAppbmRl
eCAwNjYwYmJhLi43OGMwODgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvcXQv
TmF0aXZlV2ViVG91Y2hFdmVudFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvcXQv
TmF0aXZlV2ViVG91Y2hFdmVudFF0LmNwcApAQCAtMzAsOCArMzAsOCBAQAogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAotTmF0aXZlV2ViVG91Y2hFdmVudDo6TmF0aXZlV2ViVG91Y2hFdmVudChjb25z
dCBRVG91Y2hFdmVudCogZXZlbnQpCi0gICAgOiBXZWJUb3VjaEV2ZW50KFdlYkV2ZW50RmFjdG9y
eTo6Y3JlYXRlV2ViVG91Y2hFdmVudChldmVudCkpCitOYXRpdmVXZWJUb3VjaEV2ZW50OjpOYXRp
dmVXZWJUb3VjaEV2ZW50KGNvbnN0IFFUb3VjaEV2ZW50KiBldmVudCwgY29uc3QgUVRyYW5zZm9y
bSYgZnJvbUl0ZW1UcmFuc2Zvcm0pCisgICAgOiBXZWJUb3VjaEV2ZW50KFdlYkV2ZW50RmFjdG9y
eTo6Y3JlYXRlV2ViVG91Y2hFdmVudChldmVudCwgZnJvbUl0ZW1UcmFuc2Zvcm0pKQogICAgICwg
bV9uYXRpdmVFdmVudCgqZXZlbnQpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvcXQvTmF0aXZlV2ViV2hlZWxFdmVudFF0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9xdC9OYXRpdmVXZWJXaGVlbEV2ZW50UXQuY3BwCmluZGV4IDVmZjIyNGEuLjNjMWJhOWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9xdC9OYXRpdmVXZWJXaGVlbEV2ZW50UXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9xdC9OYXRpdmVXZWJXaGVlbEV2ZW50UXQu
Y3BwCkBAIC0zMCw4ICszMCw4IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1OYXRpdmVXZWJX
aGVlbEV2ZW50OjpOYXRpdmVXZWJXaGVlbEV2ZW50KFFXaGVlbEV2ZW50KiBldmVudCkKLSAgICA6
IFdlYldoZWVsRXZlbnQoV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJXaGVlbEV2ZW50KGV2ZW50
KSkKK05hdGl2ZVdlYldoZWVsRXZlbnQ6Ok5hdGl2ZVdlYldoZWVsRXZlbnQoUVdoZWVsRXZlbnQq
IGV2ZW50LCBjb25zdCBRVHJhbnNmb3JtJiBmcm9tSXRlbVRyYW5zZm9ybSkKKyAgICA6IFdlYldo
ZWVsRXZlbnQoV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJXaGVlbEV2ZW50KGV2ZW50LCBmcm9t
SXRlbVRyYW5zZm9ybSkpCiAgICAgLCBtX25hdGl2ZUV2ZW50KGV2ZW50KQogewogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL3F0L1dlYkV2ZW50RmFjdG9yeVF0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9xdC9XZWJFdmVudEZhY3RvcnlRdC5jcHAKaW5kZXggM2RjNTk3
MC4uYjZhYzJmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL3F0L1dlYkV2ZW50
RmFjdG9yeVF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvcXQvV2ViRXZlbnRGYWN0
b3J5UXQuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSA8cWdyYXBoaWNzc2NlbmVldmVu
dC5oPgogI2luY2x1ZGUgPFFBcHBsaWNhdGlvbj4KICNpbmNsdWRlIDxRS2V5RXZlbnQ+CisjaW5j
bHVkZSA8UVRyYW5zZm9ybT4KICNpbmNsdWRlIDxXZWJDb3JlL0ludFBvaW50Lmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9GbG9hdFBvaW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUtleWJv
YXJkRXZlbnQuaD4KQEAgLTEwNiw3ICsxMDcsNyBAQCBzdGF0aWMgaW5saW5lIFdlYkV2ZW50OjpN
b2RpZmllcnMgbW9kaWZpZXJzRm9yRXZlbnQoUXQ6OktleWJvYXJkTW9kaWZpZXJzIG1vZGlmaQog
ICAgIHJldHVybiAoV2ViRXZlbnQ6Ok1vZGlmaWVycylyZXN1bHQ7CiB9CiAKLVdlYk1vdXNlRXZl
bnQgV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJNb3VzZUV2ZW50KFFNb3VzZUV2ZW50KiBldmVu
dCwgaW50IGV2ZW50Q2xpY2tDb3VudCkKK1dlYk1vdXNlRXZlbnQgV2ViRXZlbnRGYWN0b3J5Ojpj
cmVhdGVXZWJNb3VzZUV2ZW50KFFNb3VzZUV2ZW50KiBldmVudCwgY29uc3QgUVRyYW5zZm9ybSYg
ZnJvbUl0ZW1UcmFuc2Zvcm0sIGludCBldmVudENsaWNrQ291bnQpCiB7CiAgICAgc3RhdGljIEZs
b2F0UG9pbnQgbGFzdFBvcyA9IEZsb2F0UG9pbnQoMCwgMCk7CiAKQEAgLTExOSwxMCArMTIwLDEw
IEBAIFdlYk1vdXNlRXZlbnQgV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJNb3VzZUV2ZW50KFFN
b3VzZUV2ZW50KiBldmVudCwgaW50IGV2ZW50CiAgICAgZG91YmxlIHRpbWVzdGFtcCAgICAgICAg
ICAgICAgICA9IGN1cnJlbnRUaW1lRm9yRXZlbnQoZXZlbnQpOwogICAgIGxhc3RQb3Muc2V0KGV2
ZW50LT5sb2NhbFBvcygpLngoKSwgZXZlbnQtPmxvY2FsUG9zKCkueSgpKTsKIAotICAgIHJldHVy
biBXZWJNb3VzZUV2ZW50KHR5cGUsIGJ1dHRvbiwgZXZlbnQtPmxvY2FsUG9zKCkudG9Qb2ludCgp
LCBldmVudC0+c2NyZWVuUG9zKCkudG9Qb2ludCgpLCBkZWx0YVgsIGRlbHRhWSwgMC4wZiwgY2xp
Y2tDb3VudCwgbW9kaWZpZXJzLCB0aW1lc3RhbXApOworICAgIHJldHVybiBXZWJNb3VzZUV2ZW50
KHR5cGUsIGJ1dHRvbiwgZnJvbUl0ZW1UcmFuc2Zvcm0ubWFwKGV2ZW50LT5sb2NhbFBvcygpKS50
b1BvaW50KCksIGV2ZW50LT5zY3JlZW5Qb3MoKS50b1BvaW50KCksIGRlbHRhWCwgZGVsdGFZLCAw
LjBmLCBjbGlja0NvdW50LCBtb2RpZmllcnMsIHRpbWVzdGFtcCk7CiB9CiAKLVdlYldoZWVsRXZl
bnQgV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJXaGVlbEV2ZW50KFFXaGVlbEV2ZW50KiBlKQor
V2ViV2hlZWxFdmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYldoZWVsRXZlbnQoUVdoZWVs
RXZlbnQqIGUsIGNvbnN0IFFUcmFuc2Zvcm0mIGZyb21JdGVtVHJhbnNmb3JtKQogewogICAgIGZs
b2F0IGRlbHRhWCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDA7CiAgICAgZmxvYXQgZGVs
dGFZICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMDsKQEAgLTE1MSw3ICsxNTIsNyBAQCBX
ZWJXaGVlbEV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViV2hlZWxFdmVudChRV2hlZWxF
dmVudCogZSkKICAgICBkZWx0YVggKj0gKGZ1bGxUaWNrKSA/IFFBcHBsaWNhdGlvbjo6d2hlZWxT
Y3JvbGxMaW5lcygpICogY0RlZmF1bHRRdFNjcm9sbFN0ZXAgOiAxOwogICAgIGRlbHRhWSAqPSAo
ZnVsbFRpY2spID8gUUFwcGxpY2F0aW9uOjp3aGVlbFNjcm9sbExpbmVzKCkgKiBjRGVmYXVsdFF0
U2Nyb2xsU3RlcCA6IDE7CiAKLSAgICByZXR1cm4gV2ViV2hlZWxFdmVudChXZWJFdmVudDo6V2hl
ZWwsIGUtPnBvc0YoKS50b1BvaW50KCksIGUtPmdsb2JhbFBvc0YoKS50b1BvaW50KCksIEZsb2F0
U2l6ZShkZWx0YVgsIGRlbHRhWSksIEZsb2F0U2l6ZSh3aGVlbFRpY2tzWCwgd2hlZWxUaWNrc1kp
LCBncmFudWxhcml0eSwgbW9kaWZpZXJzLCB0aW1lc3RhbXApOworICAgIHJldHVybiBXZWJXaGVl
bEV2ZW50KFdlYkV2ZW50OjpXaGVlbCwgZnJvbUl0ZW1UcmFuc2Zvcm0ubWFwKGUtPnBvc0YoKSku
dG9Qb2ludCgpLCBlLT5nbG9iYWxQb3NGKCkudG9Qb2ludCgpLCBGbG9hdFNpemUoZGVsdGFYLCBk
ZWx0YVkpLCBGbG9hdFNpemUod2hlZWxUaWNrc1gsIHdoZWVsVGlja3NZKSwgZ3JhbnVsYXJpdHks
IG1vZGlmaWVycywgdGltZXN0YW1wKTsKIH0KIAogV2ViS2V5Ym9hcmRFdmVudCBXZWJFdmVudEZh
Y3Rvcnk6OmNyZWF0ZVdlYktleWJvYXJkRXZlbnQoUUtleUV2ZW50KiBldmVudCkKQEAgLTE3NCw3
ICsxNzUsNyBAQCBXZWJLZXlib2FyZEV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViS2V5
Ym9hcmRFdmVudChRS2V5RXZlbnQqIGV2ZW50KQogfQogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5U
UykKLVdlYlRvdWNoRXZlbnQgV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJUb3VjaEV2ZW50KGNv
bnN0IFFUb3VjaEV2ZW50KiBldmVudCkKK1dlYlRvdWNoRXZlbnQgV2ViRXZlbnRGYWN0b3J5Ojpj
cmVhdGVXZWJUb3VjaEV2ZW50KGNvbnN0IFFUb3VjaEV2ZW50KiBldmVudCwgY29uc3QgUVRyYW5z
Zm9ybSYgZnJvbUl0ZW1UcmFuc2Zvcm0pCiB7CiAgICAgV2ViRXZlbnQ6OlR5cGUgdHlwZSAgPSB3
ZWJFdmVudFR5cGVGb3JFdmVudChldmVudCk7CiAgICAgV2ViUGxhdGZvcm1Ub3VjaFBvaW50OjpU
b3VjaFBvaW50U3RhdGUgc3RhdGUgPSBzdGF0aWNfY2FzdDxXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6
OlRvdWNoUG9pbnRTdGF0ZT4oMCk7CkBAIC0xODQsMTAgKzE4NSwxMSBAQCBXZWJUb3VjaEV2ZW50
IFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViVG91Y2hFdmVudChjb25zdCBRVG91Y2hFdmVudCog
ZXZlbnQpCiAKICAgICBjb25zdCBRTGlzdDxRVG91Y2hFdmVudDo6VG91Y2hQb2ludD4mIHBvaW50
cyA9IGV2ZW50LT50b3VjaFBvaW50cygpOwogICAgIAotICAgIFZlY3RvcjxXZWJQbGF0Zm9ybVRv
dWNoUG9pbnQ+IG1fdG91Y2hQb2ludHM7CisgICAgVmVjdG9yPFdlYlBsYXRmb3JtVG91Y2hQb2lu
dCwgNj4gbV90b3VjaFBvaW50czsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IHBvaW50cy5jb3Vu
dCgpOyArK2kpIHsKLSAgICAgICAgaWQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocG9pbnRzLmF0
KGkpLmlkKCkpOwotICAgICAgICBzd2l0Y2ggKHBvaW50cy5hdChpKS5zdGF0ZSgpKSB7CisgICAg
ICAgIGNvbnN0IFFUb3VjaEV2ZW50OjpUb3VjaFBvaW50JiB0b3VjaFBvaW50ID0gcG9pbnRzLmF0
KGkpOworICAgICAgICBpZCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPih0b3VjaFBvaW50LmlkKCkp
OworICAgICAgICBzd2l0Y2ggKHRvdWNoUG9pbnQuc3RhdGUoKSkgewogICAgICAgICBjYXNlIFF0
OjpUb3VjaFBvaW50UmVsZWFzZWQ6IAogICAgICAgICAgICAgc3RhdGUgPSBXZWJQbGF0Zm9ybVRv
dWNoUG9pbnQ6OlRvdWNoUmVsZWFzZWQ7IAogICAgICAgICAgICAgYnJlYWs7CkBAIC0yMDUsNyAr
MjA3LDcgQEAgV2ViVG91Y2hFdmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYlRvdWNoRXZl
bnQoY29uc3QgUVRvdWNoRXZlbnQqIGV2ZW50KQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KIAotICAgICAgICBtX3RvdWNoUG9pbnRzLmFwcGVuZChXZWJQbGF0Zm9ybVRvdWNoUG9pbnQo
aWQsIHN0YXRlLCBwb2ludHMuYXQoaSkuc2NyZWVuUG9zKCkudG9Qb2ludCgpLCBwb2ludHMuYXQo
aSkucG9zKCkudG9Qb2ludCgpKSk7CisgICAgICAgIG1fdG91Y2hQb2ludHMuYXBwZW5kKFdlYlBs
YXRmb3JtVG91Y2hQb2ludChpZCwgc3RhdGUsIHRvdWNoUG9pbnQuc2NyZWVuUG9zKCkudG9Qb2lu
dCgpLCBmcm9tSXRlbVRyYW5zZm9ybS5tYXAodG91Y2hQb2ludC5wb3MoKSkudG9Qb2ludCgpKSk7
CiAgICAgfQogCiAgICAgcmV0dXJuIFdlYlRvdWNoRXZlbnQodHlwZSwgbV90b3VjaFBvaW50cywg
bW9kaWZpZXJzLCB0aW1lc3RhbXApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L3F0L1dlYkV2ZW50RmFjdG9yeVF0LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvcXQvV2ViRXZl
bnRGYWN0b3J5UXQuaAppbmRleCA0Y2U2NDhlLi5kZWVjYzI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvcXQvV2ViRXZlbnRGYWN0b3J5UXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvcXQvV2ViRXZlbnRGYWN0b3J5UXQuaApAQCAtNDEsMTEgKzQxLDExIEBAIG5hbWVz
cGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJFdmVudEZhY3RvcnkgewogcHVibGljOgotICAgIHN0
YXRpYyBXZWJNb3VzZUV2ZW50IGNyZWF0ZVdlYk1vdXNlRXZlbnQoUU1vdXNlRXZlbnQqLCBpbnQg
ZXZlbnRDbGlja0NvdW50KTsKLSAgICBzdGF0aWMgV2ViV2hlZWxFdmVudCBjcmVhdGVXZWJXaGVl
bEV2ZW50KFFXaGVlbEV2ZW50Kik7CisgICAgc3RhdGljIFdlYk1vdXNlRXZlbnQgY3JlYXRlV2Vi
TW91c2VFdmVudChRTW91c2VFdmVudCosIGNvbnN0IFFUcmFuc2Zvcm0mIGZyb21JdGVtVHJhbnNm
b3JtLCBpbnQgZXZlbnRDbGlja0NvdW50KTsKKyAgICBzdGF0aWMgV2ViV2hlZWxFdmVudCBjcmVh
dGVXZWJXaGVlbEV2ZW50KFFXaGVlbEV2ZW50KiwgY29uc3QgUVRyYW5zZm9ybSYgZnJvbUl0ZW1U
cmFuc2Zvcm0pOwogICAgIHN0YXRpYyBXZWJLZXlib2FyZEV2ZW50IGNyZWF0ZVdlYktleWJvYXJk
RXZlbnQoUUtleUV2ZW50Kik7CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICBzdGF0aWMg
V2ViVG91Y2hFdmVudCBjcmVhdGVXZWJUb3VjaEV2ZW50KGNvbnN0IFFUb3VjaEV2ZW50Kik7Cisg
ICAgc3RhdGljIFdlYlRvdWNoRXZlbnQgY3JlYXRlV2ViVG91Y2hFdmVudChjb25zdCBRVG91Y2hF
dmVudCosIGNvbnN0IFFUcmFuc2Zvcm0mIGZyb21JdGVtVHJhbnNmb3JtKTsKICNlbmRpZgogfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJw
YWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2VicGFnZS5j
cHAKaW5kZXggN2QzYjJkNi4uYjVkYjM5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJwYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL3F0L3FxdWlja3dlYnBhZ2UuY3BwCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVk
ZSAiUXRXZWJQYWdlRXZlbnRIYW5kbGVyLmgiCiAjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRy
aXguaCIKICNpbmNsdWRlICJxcXVpY2t3ZWJwYWdlX3BfcC5oIgorI2luY2x1ZGUgInFxdWlja3dl
YnZpZXdfcC5oIgogI2luY2x1ZGUgPFF0UXVpY2svUVF1aWNrQ2FudmFzPgogI2luY2x1ZGUgPFF0
UXVpY2svUVNHR2VvbWV0cnlOb2RlPgogI2luY2x1ZGUgPFF0UXVpY2svUVNHTWF0ZXJpYWw+CkBA
IC01MCwxMTIgKzUxLDE1IEBAIFF0U0dVcGRhdGVRdWV1ZSAqUVF1aWNrV2ViUGFnZTo6c2NlbmVH
cmFwaFVwZGF0ZVF1ZXVlKCkgY29uc3QKICAgICByZXR1cm4gJmQtPnNnVXBkYXRlUXVldWU7CiB9
CiAKLXZvaWQgUVF1aWNrV2ViUGFnZTo6a2V5UHJlc3NFdmVudChRS2V5RXZlbnQqIGV2ZW50KQot
ewotICAgIHRoaXMtPmV2ZW50KGV2ZW50KTsKLX0KLQotdm9pZCBRUXVpY2tXZWJQYWdlOjprZXlS
ZWxlYXNlRXZlbnQoUUtleUV2ZW50KiBldmVudCkKLXsKLSAgICB0aGlzLT5ldmVudChldmVudCk7
Ci19Ci0KLXZvaWQgUVF1aWNrV2ViUGFnZTo6aW5wdXRNZXRob2RFdmVudChRSW5wdXRNZXRob2RF
dmVudCogZXZlbnQpCi17Ci0gICAgdGhpcy0+ZXZlbnQoZXZlbnQpOwotfQotCi12b2lkIFFRdWlj
a1dlYlBhZ2U6OmZvY3VzSW5FdmVudChRRm9jdXNFdmVudCogZXZlbnQpCi17Ci0gICAgdGhpcy0+
ZXZlbnQoZXZlbnQpOwotfQotCi12b2lkIFFRdWlja1dlYlBhZ2U6OmZvY3VzT3V0RXZlbnQoUUZv
Y3VzRXZlbnQqIGV2ZW50KQotewotICAgIHRoaXMtPmV2ZW50KGV2ZW50KTsKLX0KLQotdm9pZCBR
UXVpY2tXZWJQYWdlOjptb3VzZVByZXNzRXZlbnQoUU1vdXNlRXZlbnQqIGV2ZW50KQotewotICAg
IGZvcmNlQWN0aXZlRm9jdXMoKTsKLSAgICB0aGlzLT5ldmVudChldmVudCk7Ci19Ci0KLXZvaWQg
UVF1aWNrV2ViUGFnZTo6bW91c2VNb3ZlRXZlbnQoUU1vdXNlRXZlbnQqIGV2ZW50KQotewotICAg
IHRoaXMtPmV2ZW50KGV2ZW50KTsKLX0KLQotdm9pZCBRUXVpY2tXZWJQYWdlOjptb3VzZVJlbGVh
c2VFdmVudChRTW91c2VFdmVudCogZXZlbnQpCi17Ci0gICAgdGhpcy0+ZXZlbnQoZXZlbnQpOwot
fQotCi12b2lkIFFRdWlja1dlYlBhZ2U6Om1vdXNlRG91YmxlQ2xpY2tFdmVudChRTW91c2VFdmVu
dCogZXZlbnQpCi17Ci0gICAgdGhpcy0+ZXZlbnQoZXZlbnQpOwotfQotCi12b2lkIFFRdWlja1dl
YlBhZ2U6OndoZWVsRXZlbnQoUVdoZWVsRXZlbnQqIGV2ZW50KQotewotICAgIHRoaXMtPmV2ZW50
KGV2ZW50KTsKLX0KLQotdm9pZCBRUXVpY2tXZWJQYWdlOjpob3ZlckVudGVyRXZlbnQoUUhvdmVy
RXZlbnQqIGV2ZW50KQotewotICAgIHRoaXMtPmV2ZW50KGV2ZW50KTsKLX0KLQotdm9pZCBRUXVp
Y2tXZWJQYWdlOjpob3Zlck1vdmVFdmVudChRSG92ZXJFdmVudCogZXZlbnQpCi17Ci0gICAgdGhp
cy0+ZXZlbnQoZXZlbnQpOwotfQotCi12b2lkIFFRdWlja1dlYlBhZ2U6OmhvdmVyTGVhdmVFdmVu
dChRSG92ZXJFdmVudCogZXZlbnQpCi17Ci0gICAgdGhpcy0+ZXZlbnQoZXZlbnQpOwotfQotCi12
b2lkIFFRdWlja1dlYlBhZ2U6OmRyYWdNb3ZlRXZlbnQoUURyYWdNb3ZlRXZlbnQqIGV2ZW50KQot
ewotICAgIHRoaXMtPmV2ZW50KGV2ZW50KTsKLX0KLQotdm9pZCBRUXVpY2tXZWJQYWdlOjpkcmFn
RW50ZXJFdmVudChRRHJhZ0VudGVyRXZlbnQqIGV2ZW50KQotewotICAgIHRoaXMtPmV2ZW50KGV2
ZW50KTsKLX0KLQotdm9pZCBRUXVpY2tXZWJQYWdlOjpkcmFnTGVhdmVFdmVudChRRHJhZ0xlYXZl
RXZlbnQqIGV2ZW50KQotewotICAgIHRoaXMtPmV2ZW50KGV2ZW50KTsKLX0KLQotdm9pZCBRUXVp
Y2tXZWJQYWdlOjpkcm9wRXZlbnQoUURyb3BFdmVudCogZXZlbnQpCi17Ci0gICAgdGhpcy0+ZXZl
bnQoZXZlbnQpOwotfQotCiB2b2lkIFFRdWlja1dlYlBhZ2U6Omdlb21ldHJ5Q2hhbmdlZChjb25z
dCBRUmVjdEYmIG5ld0dlb21ldHJ5LCBjb25zdCBRUmVjdEYmIG9sZEdlb21ldHJ5KQogewogICAg
IFFRdWlja0l0ZW06Omdlb21ldHJ5Q2hhbmdlZChuZXdHZW9tZXRyeSwgb2xkR2VvbWV0cnkpOwot
ICAgIGlmIChuZXdHZW9tZXRyeS5zaXplKCkgIT0gb2xkR2VvbWV0cnkuc2l6ZSgpKQotICAgICAg
ICBkLT5zZXREcmF3aW5nQXJlYVNpemUobmV3R2VvbWV0cnkuc2l6ZSgpLnRvU2l6ZSgpKTsKLX0K
IAotYm9vbCBRUXVpY2tXZWJQYWdlOjpldmVudChRRXZlbnQqIGV2KQotewotICAgIGlmIChkLT5l
dmVudEhhbmRsZXIuZGF0YSgpLT5oYW5kbGVFdmVudChldikpCi0gICAgICAgIHJldHVybiB0cnVl
OwotICAgIGlmIChldi0+dHlwZSgpID09IFFFdmVudDo6SW5wdXRNZXRob2QpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsgLy8gVGhpcyBpcyBuZWNlc3NhcnkgdG8gYXZvaWQgYW4gZW5kbGVzcyBsb29w
IGluIGNvbm5lY3Rpb24gd2l0aCBRUXVpY2tJdGVtOjpldmVudCgpLgotICAgIHJldHVybiBRUXVp
Y2tJdGVtOjpldmVudChldik7Ci19CisgICAgaWYgKCFkLT51c2VUcmFkaXRpb25hbERlc2t0b3BC
ZWhhdmlvdXIpCisgICAgICAgIHJldHVybjsKIAotdm9pZCBRUXVpY2tXZWJQYWdlOjp0b3VjaEV2
ZW50KFFUb3VjaEV2ZW50KiBldmVudCkKLXsKLSAgICBmb3JjZUFjdGl2ZUZvY3VzKCk7Ci0gICAg
dGhpcy0+ZXZlbnQoZXZlbnQpOworICAgIGlmIChuZXdHZW9tZXRyeS5zaXplKCkgIT0gb2xkR2Vv
bWV0cnkuc2l6ZSgpKQorICAgICAgICBkLT5zZXREcmF3aW5nQXJlYVNpemUobmV3R2VvbWV0cnku
c2l6ZSgpLnRvU2l6ZSgpKTsKIH0KIAogUVF1aWNrV2ViUGFnZVByaXZhdGU6OlFRdWlja1dlYlBh
Z2VQcml2YXRlKFFRdWlja1dlYlBhZ2UqIHEpCkBAIC0xNjQsNiArNjgsOCBAQCBRUXVpY2tXZWJQ
YWdlUHJpdmF0ZTo6UVF1aWNrV2ViUGFnZVByaXZhdGUoUVF1aWNrV2ViUGFnZSogcSkKICAgICAs
IHNnVXBkYXRlUXVldWUocSkKICAgICAsIHBhaW50aW5nSXNJbml0aWFsaXplZChmYWxzZSkKICAg
ICAsIG1fcGFpbnROb2RlKDApCisgICAgLCBjb250ZW50U2NhbGUoMSkKKyAgICAsIHVzZVRyYWRp
dGlvbmFsRGVza3RvcEJlaGF2aW91cihmYWxzZSkKIHsKIH0KIApAQCAtMTk5LDYgKzEwNSw3IEBA
IHZvaWQgUVF1aWNrV2ViUGFnZVByaXZhdGU6OnBhaW50VG9DdXJyZW50R0xDb250ZXh0KCkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgUVRyYW5zZm9ybSB0cmFuc2Zvcm0gPSBxLT5pdGVtVHJhbnNm
b3JtKDAsIDApOworICAgIHRyYW5zZm9ybS5zY2FsZShjb250ZW50U2NhbGUsIGNvbnRlbnRTY2Fs
ZSk7CiAKICAgICBmbG9hdCBvcGFjaXR5ID0gY29tcHV0ZUVmZmVjdGl2ZU9wYWNpdHkocSk7CiAg
ICAgUVJlY3RGIGNsaXBSZWN0ID0gcS0+cGFyZW50SXRlbSgpLT5tYXBSZWN0VG9TY2VuZShxLT5w
YXJlbnRJdGVtKCktPmJvdW5kaW5nUmVjdCgpKTsKQEAgLTMyMiw2ICsyMjksNjUgQEAgUVNHTm9k
ZSogUVF1aWNrV2ViUGFnZTo6dXBkYXRlUGFpbnROb2RlKFFTR05vZGUqIG9sZE5vZGUsIFVwZGF0
ZVBhaW50Tm9kZURhdGEqKQogICAgIHJldHVybiBwcm94eU5vZGU7CiB9CiAKK2Jvb2wgUVF1aWNr
V2ViUGFnZTo6dXNlc1RyYWRpdGlvbmFsRGVza3RvcEJlaGF2aW91cigpIGNvbnN0Cit7CisgICAg
cmV0dXJuIGQtPnVzZVRyYWRpdGlvbmFsRGVza3RvcEJlaGF2aW91cjsKK30KKwordm9pZCBRUXVp
Y2tXZWJQYWdlOjpzZXRVc2VzVHJhZGl0aW9uYWxEZXNrdG9wQmVoYXZpb3VyKGJvb2wgZW5hYmxl
KQoreworICAgIGQtPnVzZVRyYWRpdGlvbmFsRGVza3RvcEJlaGF2aW91ciA9IGVuYWJsZTsKK30K
KworUXRXZWJQYWdlRXZlbnRIYW5kbGVyKiBRUXVpY2tXZWJQYWdlOjpldmVudEhhbmRsZXIoKSBj
b25zdAoreworICAgIHJldHVybiBkLT5ldmVudEhhbmRsZXIuZGF0YSgpOworfQorCit2b2lkIFFR
dWlja1dlYlBhZ2U6OnNldENvbnRlbnRTaXplKGNvbnN0IFFTaXplRiYgc2l6ZSkKK3sKKyAgICBp
ZiAoc2l6ZS5pc0VtcHR5KCkgfHwgZC0+Y29udGVudFNpemUgPT0gc2l6ZSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgZC0+Y29udGVudFNpemUgPSBzaXplOworICAgIGQtPnVwZGF0ZVNpemUoKTsK
KyAgICBkLT5zZXREcmF3aW5nQXJlYVNpemUoZC0+Y29udGVudFNpemUudG9TaXplKCkpOworfQor
Citjb25zdCBRU2l6ZUYmIFFRdWlja1dlYlBhZ2U6OmNvbnRlbnRTaXplKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gZC0+Y29udGVudFNpemU7Cit9CisKK3ZvaWQgUVF1aWNrV2ViUGFnZTo6c2V0Q29u
dGVudFNjYWxlKHFyZWFsIHNjYWxlKQoreworICAgIEFTU0VSVChzY2FsZSA+IDApOworICAgIGQt
PmNvbnRlbnRTY2FsZSA9IHNjYWxlOworICAgIGQtPnVwZGF0ZVNpemUoKTsKK30KKworcXJlYWwg
UVF1aWNrV2ViUGFnZTo6Y29udGVudFNjYWxlKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoZC0+Y29u
dGVudFNjYWxlID4gMCk7CisgICAgcmV0dXJuIGQtPmNvbnRlbnRTY2FsZTsKK30KKworUVRyYW5z
Zm9ybSBRUXVpY2tXZWJQYWdlOjp0cmFuc2Zvcm1Gcm9tSXRlbSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIHRyYW5zZm9ybVRvSXRlbSgpLmludmVydGVkKCk7Cit9CisKK1FUcmFuc2Zvcm0gUVF1aWNr
V2ViUGFnZTo6dHJhbnNmb3JtVG9JdGVtKCkgY29uc3QKK3sKKyAgICByZXR1cm4gUVRyYW5zZm9y
bShkLT5jb250ZW50U2NhbGUsIDAsIDAsIDAsIGQtPmNvbnRlbnRTY2FsZSwgMCwgeCgpLCB5KCks
IDEpOworfQorCit2b2lkIFFRdWlja1dlYlBhZ2VQcml2YXRlOjp1cGRhdGVTaXplKCkKK3sKKyAg
ICBRU2l6ZUYgc2NhbGVkU2l6ZSA9IGNvbnRlbnRTaXplICogY29udGVudFNjYWxlOworICAgIHEt
PnNldFNpemUoc2NhbGVkU2l6ZSk7Cit9CisKIHZvaWQgUVF1aWNrV2ViUGFnZVByaXZhdGU6OnJl
c2V0UGFpbnROb2RlKCkKIHsKICAgICBtX3BhaW50Tm9kZSA9IDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnBhZ2VfcC5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJwYWdlX3AuaAppbmRleCBmN2MzNTA2Li5m
Nzk3ODEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlj
a3dlYnBhZ2VfcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNr
d2VicGFnZV9wLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlIDxRdFF1aWNrL1FRdWlja0l0
ZW0+CiAKIGNsYXNzIFFRdWlja1dlYlBhZ2VQcml2YXRlOworY2xhc3MgUXRXZWJQYWdlRXZlbnRI
YW5kbGVyOwogY2xhc3MgUVdlYlByZWZlcmVuY2VzOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAg
LTM5LDI5ICs0MCwyMyBAQCBwdWJsaWM6CiAgICAgUVF1aWNrV2ViUGFnZShRUXVpY2tJdGVtKiBw
YXJlbnQgPSAwKTsKICAgICB2aXJ0dWFsIH5RUXVpY2tXZWJQYWdlKCk7CiAKKyAgICB2b2lkIHNl
dENvbnRlbnRTaXplKGNvbnN0IFFTaXplRiYgc2l6ZSk7CisgICAgY29uc3QgUVNpemVGJiBjb250
ZW50U2l6ZSgpIGNvbnN0OworICAgIHZvaWQgc2V0Q29udGVudFNjYWxlKHFyZWFsKTsKKyAgICBx
cmVhbCBjb250ZW50U2NhbGUoKSBjb25zdDsKKworICAgIFFUcmFuc2Zvcm0gdHJhbnNmb3JtRnJv
bUl0ZW0oKSBjb25zdDsKKyAgICBRVHJhbnNmb3JtIHRyYW5zZm9ybVRvSXRlbSgpIGNvbnN0Owor
CisgICAgYm9vbCB1c2VzVHJhZGl0aW9uYWxEZXNrdG9wQmVoYXZpb3VyKCkgY29uc3Q7CisgICAg
dm9pZCBzZXRVc2VzVHJhZGl0aW9uYWxEZXNrdG9wQmVoYXZpb3VyKGJvb2wgZW5hYmxlKTsKKwor
ICAgIFF0V2ViUGFnZUV2ZW50SGFuZGxlciogZXZlbnRIYW5kbGVyKCkgY29uc3Q7CisKICAgICAv
LyBJbnRlcm5hbC4gVG8gYmUgcmVtb3ZlZCBzb29uLgogICAgIFdlYktpdDo6UXRTR1VwZGF0ZVF1
ZXVlKiBzY2VuZUdyYXBoVXBkYXRlUXVldWUoKSBjb25zdDsKIAogcHJvdGVjdGVkOgotICAgIHZp
cnR1YWwgdm9pZCBrZXlQcmVzc0V2ZW50KFFLZXlFdmVudCopOwotICAgIHZpcnR1YWwgdm9pZCBr
ZXlSZWxlYXNlRXZlbnQoUUtleUV2ZW50Kik7Ci0gICAgdmlydHVhbCB2b2lkIGlucHV0TWV0aG9k
RXZlbnQoUUlucHV0TWV0aG9kRXZlbnQqKTsKLSAgICB2aXJ0dWFsIHZvaWQgZm9jdXNJbkV2ZW50
KFFGb2N1c0V2ZW50Kik7Ci0gICAgdmlydHVhbCB2b2lkIGZvY3VzT3V0RXZlbnQoUUZvY3VzRXZl
bnQqKTsKLSAgICB2aXJ0dWFsIHZvaWQgbW91c2VQcmVzc0V2ZW50KFFNb3VzZUV2ZW50Kik7Ci0g
ICAgdmlydHVhbCB2b2lkIG1vdXNlTW92ZUV2ZW50KFFNb3VzZUV2ZW50Kik7Ci0gICAgdmlydHVh
bCB2b2lkIG1vdXNlUmVsZWFzZUV2ZW50KFFNb3VzZUV2ZW50ICopOwotICAgIHZpcnR1YWwgdm9p
ZCBtb3VzZURvdWJsZUNsaWNrRXZlbnQoUU1vdXNlRXZlbnQqKTsKLSAgICB2aXJ0dWFsIHZvaWQg
d2hlZWxFdmVudChRV2hlZWxFdmVudCopOwotICAgIHZpcnR1YWwgdm9pZCBob3ZlckVudGVyRXZl
bnQoUUhvdmVyRXZlbnQqKTsKLSAgICB2aXJ0dWFsIHZvaWQgaG92ZXJNb3ZlRXZlbnQoUUhvdmVy
RXZlbnQqKTsKLSAgICB2aXJ0dWFsIHZvaWQgaG92ZXJMZWF2ZUV2ZW50KFFIb3ZlckV2ZW50Kik7
Ci0gICAgdmlydHVhbCB2b2lkIGRyYWdNb3ZlRXZlbnQoUURyYWdNb3ZlRXZlbnQqKTsKLSAgICB2
aXJ0dWFsIHZvaWQgZHJhZ0VudGVyRXZlbnQoUURyYWdFbnRlckV2ZW50Kik7Ci0gICAgdmlydHVh
bCB2b2lkIGRyYWdMZWF2ZUV2ZW50KFFEcmFnTGVhdmVFdmVudCopOwotICAgIHZpcnR1YWwgdm9p
ZCBkcm9wRXZlbnQoUURyb3BFdmVudCopOwotICAgIHZpcnR1YWwgdm9pZCB0b3VjaEV2ZW50KFFU
b3VjaEV2ZW50Kik7Ci0gICAgdmlydHVhbCBib29sIGV2ZW50KFFFdmVudCopOwogICAgIHZpcnR1
YWwgdm9pZCBnZW9tZXRyeUNoYW5nZWQoY29uc3QgUVJlY3RGJiwgY29uc3QgUVJlY3RGJik7CiAg
ICAgdmlydHVhbCBRU0dOb2RlKiB1cGRhdGVQYWludE5vZGUoUVNHTm9kZSosIFVwZGF0ZVBhaW50
Tm9kZURhdGEqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC9xcXVpY2t3ZWJwYWdlX3BfcC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
cXVpY2t3ZWJwYWdlX3BfcC5oCmluZGV4IDcyMjRmMzkuLjNiNThlYjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2VicGFnZV9wX3AuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnBhZ2VfcF9wLmgKQEAgLTIz
LDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgIlF0U0dVcGRhdGVRdWV1ZS5oIgogI2luY2x1ZGUgInFx
dWlja3dlYnBhZ2VfcC5oIgorI2luY2x1ZGUgPFFUcmFuc2Zvcm0+CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogY2xhc3MgV2ViUGFnZVByb3h5OwpAQCAtMzksNiArNDAsOCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBpbml0aWFsaXplKFdlYktpdDo6V2ViUGFnZVByb3h5Kik7CiAgICAgdm9pZCBzZXREcmF3
aW5nQXJlYVNpemUoY29uc3QgUVNpemUmKTsKIAorICAgIHZvaWQgdXBkYXRlU2l6ZSgpOworCiAg
ICAgdm9pZCBwYWludFRvQ3VycmVudEdMQ29udGV4dCgpOwogICAgIHZvaWQgcmVzZXRQYWludE5v
ZGUoKTsKIApAQCAtNDgsNiArNTEsMTAgQEAgcHVibGljOgogICAgIFdlYktpdDo6UXRTR1VwZGF0
ZVF1ZXVlIHNnVXBkYXRlUXVldWU7CiAgICAgYm9vbCBwYWludGluZ0lzSW5pdGlhbGl6ZWQ7CiAg
ICAgUVNHTm9kZSogbV9wYWludE5vZGU7CisKKyAgICBRU2l6ZUYgY29udGVudFNpemU7CisgICAg
cXJlYWwgY29udGVudFNjYWxlOworICAgIGJvb2wgdXNlVHJhZGl0aW9uYWxEZXNrdG9wQmVoYXZp
b3VyOwogfTsKIAogI2VuZGlmIC8vIHFxdWlja3dlYnBhZ2VfcF9wX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwCmluZGV4IDRkYmY5Mzgu
LmNlYzQ3ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1
aWNrd2Vidmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVp
Y2t3ZWJ2aWV3LmNwcApAQCAtMTEyLDggKzExMiw2IEBAIHZvaWQgUVF1aWNrV2ViVmlld1ByaXZh
dGU6OmVuYWJsZU1vdXNlRXZlbnRzKCkKICAgICBRX1EoUVF1aWNrV2ViVmlldyk7CiAgICAgcS0+
c2V0QWNjZXB0ZWRNb3VzZUJ1dHRvbnMoUXQ6Ok1vdXNlQnV0dG9uTWFzayk7CiAgICAgcS0+c2V0
QWNjZXB0SG92ZXJFdmVudHModHJ1ZSk7Ci0gICAgcGFnZVZpZXctPnNldEFjY2VwdGVkTW91c2VC
dXR0b25zKFF0OjpNb3VzZUJ1dHRvbk1hc2spOwotICAgIHBhZ2VWaWV3LT5zZXRBY2NlcHRIb3Zl
ckV2ZW50cyh0cnVlKTsKIH0KIAogdm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6ZGlzYWJsZU1v
dXNlRXZlbnRzKCkKQEAgLTEyMSw4ICsxMTksNiBAQCB2b2lkIFFRdWlja1dlYlZpZXdQcml2YXRl
OjpkaXNhYmxlTW91c2VFdmVudHMoKQogICAgIFFfUShRUXVpY2tXZWJWaWV3KTsKICAgICBxLT5z
ZXRBY2NlcHRlZE1vdXNlQnV0dG9ucyhRdDo6Tm9CdXR0b24pOwogICAgIHEtPnNldEFjY2VwdEhv
dmVyRXZlbnRzKGZhbHNlKTsKLSAgICBwYWdlVmlldy0+c2V0QWNjZXB0ZWRNb3VzZUJ1dHRvbnMo
UXQ6Ok5vQnV0dG9uKTsKLSAgICBwYWdlVmlldy0+c2V0QWNjZXB0SG92ZXJFdmVudHMoZmFsc2Up
OwogfQogCiB2b2lkIFFRdWlja1dlYlZpZXdQcml2YXRlOjppbml0aWFsaXplRGVza3RvcChRUXVp
Y2tXZWJWaWV3KiB2aWV3cG9ydCkKQEAgLTE1Myw3ICsxNDksNyBAQCB2b2lkIFFRdWlja1dlYlZp
ZXdQcml2YXRlOjpsb2FkRGlkQ29tbWl0KCkKICAgICAvLyBEdWUgdG8gZW50ZXJpbmcgcHJvdmlz
aW9uYWwgbG9hZCBiZWZvcmUgY29tbWl0dGluZywgd2UKICAgICAvLyBtaWdodCBhY3R1YWxseSBi
ZSBzdXNwZW5kZWQgaGVyZS4KIAotICAgIGlmICh1c2VUcmFkaXRpb25hbERlc2t0b3BCZWhhdmlv
dXIpCisgICAgaWYgKHBhZ2VWaWV3LT51c2VzVHJhZGl0aW9uYWxEZXNrdG9wQmVoYXZpb3VyKCkp
CiAgICAgICAgIHJldHVybjsKIAogICAgIGlzVHJhbnNpdGlvbmluZ1RvTmV3UGFnZSA9IHRydWU7
CkBAIC0xNjEsNyArMTU3LDcgQEAgdm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6bG9hZERpZENv
bW1pdCgpCiAKIHZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6OmRpZEZpbmlzaEZpcnN0Tm9uRW1w
dHlMYXlvdXQoKQogewotICAgIGlmICh1c2VUcmFkaXRpb25hbERlc2t0b3BCZWhhdmlvdXIpCisg
ICAgaWYgKHBhZ2VWaWV3LT51c2VzVHJhZGl0aW9uYWxEZXNrdG9wQmVoYXZpb3VyKCkpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGlmICghcGFnZUlzU3VzcGVuZGVkKSB7CkBAIC0xOTksNyArMTk1
LDcgQEAgdm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6X3FfcmVzdW1lKCkKIHZvaWQgUVF1aWNr
V2ViVmlld1ByaXZhdGU6OmRpZENoYW5nZUNvbnRlbnRzU2l6ZShjb25zdCBRU2l6ZSYgbmV3U2l6
ZSkKIHsKICAgICBRX1EoUVF1aWNrV2ViVmlldyk7Ci0gICAgaWYgKHVzZVRyYWRpdGlvbmFsRGVz
a3RvcEJlaGF2aW91cikKKyAgICBpZiAocGFnZVZpZXctPnVzZXNUcmFkaXRpb25hbERlc2t0b3BC
ZWhhdmlvdXIoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gRklYTUU6IFdlIHByb2JhYmx5
IHdhbnQgdG8gaGFuZGxlIHN1c3BlbmQgaGVyZSBhcyB3ZWxsCkBAIC0yMDgsMTUgKzIwNCwxMyBA
QCB2b2lkIFFRdWlja1dlYlZpZXdQcml2YXRlOjpkaWRDaGFuZ2VDb250ZW50c1NpemUoY29uc3Qg
UVNpemUmIG5ld1NpemUpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBwYWdlVmlldy0+
c2V0V2lkdGgobmV3U2l6ZS53aWR0aCgpKTsKLSAgICBwYWdlVmlldy0+c2V0SGVpZ2h0KG5ld1Np
emUuaGVpZ2h0KCkpOwotCisgICAgcGFnZVZpZXctPnNldENvbnRlbnRTaXplKG5ld1NpemUpOwog
ICAgIHEtPm1fZXhwZXJpbWVudGFsLT52aWV3cG9ydEluZm8oKS0+ZGlkVXBkYXRlQ29udGVudHNT
aXplKCk7CiB9CiAKIHZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6OmRpZENoYW5nZVZpZXdwb3J0
UHJvcGVydGllcyhjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50cyYgYXJncykKIHsKLSAg
ICBpZiAodXNlVHJhZGl0aW9uYWxEZXNrdG9wQmVoYXZpb3VyKQorICAgIGlmIChwYWdlVmlldy0+
dXNlc1RyYWRpdGlvbmFsRGVza3RvcEJlaGF2aW91cigpKQogICAgICAgICByZXR1cm47CiAKICAg
ICB2aWV3cG9ydEFyZ3VtZW50cyA9IGFyZ3M7CkBAIC0yMzQsNyArMjI4LDcgQEAgdm9pZCBRUXVp
Y2tXZWJWaWV3UHJpdmF0ZTo6ZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KCkKIAogdm9pZCBRUXVp
Y2tXZWJWaWV3UHJpdmF0ZTo6cGFnZURpZFJlcXVlc3RTY3JvbGwoY29uc3QgUVBvaW50JiBwb3Mp
CiB7Ci0gICAgaWYgKHVzZVRyYWRpdGlvbmFsRGVza3RvcEJlaGF2aW91cikKKyAgICBpZiAocGFn
ZVZpZXctPnVzZXNUcmFkaXRpb25hbERlc2t0b3BCZWhhdmlvdXIoKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgaWYgKGlzVHJhbnNpdGlvbmluZ1RvTmV3UGFnZSkgewpAQCAtMjg2LDEwICsyODAs
MTAgQEAgdm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6dXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0
QW5kU2NhbGUoKQogICAgICAgICByZXR1cm47CiAKICAgICBRX1EoUVF1aWNrV2ViVmlldyk7Ci0g
ICAgY29uc3QgUVJlY3RGIHZpc2libGVSZWN0SW5QYWdlVmlld0Nvb3JkaW5hdGVzID0gcS0+bWFw
UmVjdFRvSXRlbShwYWdlVmlldy5kYXRhKCksIHEtPmJvdW5kaW5nUmVjdCgpKS5pbnRlcnNlY3Rl
ZChwYWdlVmlldy0+Ym91bmRpbmdSZWN0KCkpOwotICAgIGZsb2F0IHNjYWxlID0gcGFnZVZpZXct
PnNjYWxlKCk7CisgICAgY29uc3QgUVJlY3RGIHZpc2libGVSZWN0SW5DU1NDb29yZGluYXRlcyA9
IHEtPm1hcFJlY3RUb1dlYkNvbnRlbnQocS0+Ym91bmRpbmdSZWN0KCkpLmludGVyc2VjdGVkKHBh
Z2VWaWV3LT5ib3VuZGluZ1JlY3QoKSk7CisgICAgZmxvYXQgc2NhbGUgPSBwYWdlVmlldy0+Y29u
dGVudFNjYWxlKCk7CiAKLSAgICBRUmVjdCBhbGlnbmVkVmlzaWJsZUNvbnRlbnRSZWN0ID0gdmlz
aWJsZVJlY3RJblBhZ2VWaWV3Q29vcmRpbmF0ZXMudG9BbGlnbmVkUmVjdCgpOworICAgIFFSZWN0
IGFsaWduZWRWaXNpYmxlQ29udGVudFJlY3QgPSB2aXNpYmxlUmVjdEluQ1NTQ29vcmRpbmF0ZXMu
dG9BbGlnbmVkUmVjdCgpOwogICAgIGRyYXdpbmdBcmVhLT5zZXRWaXNpYmxlQ29udGVudHNSZWN0
QW5kU2NhbGUoYWxpZ25lZFZpc2libGVDb250ZW50UmVjdCwgc2NhbGUpOwogCiAgICAgLy8gRklY
TUU6IE9uY2Ugd2Ugc3VwcG9ydCBzdXNwZW5kIGFuZCByZXN1bWUsIHRoaXMgc2hvdWxkIGJlIGRl
bGF5ZWQgdW50aWwgdGhlIHBhZ2UgaXMgYWN0aXZlIGlmIHRoZSBwYWdlIGlzIHN1c3BlbmRlZC4K
QEAgLTM0NCw4ICszMzgsNyBAQCB2b2lkIFFRdWlja1dlYlZpZXdQcml2YXRlOjpQb3N0VHJhbnNp
dGlvblN0YXRlOjphcHBseSgpCiAgICAgcC0+aW50ZXJhY3Rpb25FbmdpbmUtPnBhZ2VQb3NpdGlv
blJlcXVlc3QocG9zaXRpb24pOwogCiAgICAgaWYgKGNvbnRlbnRzU2l6ZS5pc1ZhbGlkKCkpIHsK
LSAgICAgICAgcC0+cGFnZVZpZXctPnNldFdpZHRoKGNvbnRlbnRzU2l6ZS53aWR0aCgpKTsKLSAg
ICAgICAgcC0+cGFnZVZpZXctPnNldEhlaWdodChjb250ZW50c1NpemUuaGVpZ2h0KCkpOworICAg
ICAgICBwLT5wYWdlVmlldy0+c2V0Q29udGVudFNpemUoY29udGVudHNTaXplKTsKICAgICAgICAg
cC0+cV9wdHItPmV4cGVyaW1lbnRhbCgpLT52aWV3cG9ydEluZm8oKS0+ZGlkVXBkYXRlQ29udGVu
dHNTaXplKCk7CiAgICAgfQogCkBAIC01MDEsOSArNDk0LDggQEAgdm9pZCBRUXVpY2tXZWJWaWV3
UHJpdmF0ZTo6c2V0VXNlVHJhZGl0aW9uYWxEZXNrdG9wQmVoYXZpb3VyKGJvb2wgZW5hYmxlKQog
ICAgIC8vIERvIG5vdCBndWFyZCwgdGVzdGluZyBmb3IgdGhlIHNhbWUgdmFsdWUsIGFzIHdlIGNh
bGwgdGhpcyBmcm9tIHRoZSBjb25zdHJ1Y3Rvci4KIAogICAgIHdlYlBhZ2VQcm94eS0+c2V0VXNl
Rml4ZWRMYXlvdXQoIWVuYWJsZSk7Ci0KLSAgICB1c2VUcmFkaXRpb25hbERlc2t0b3BCZWhhdmlv
dXIgPSBlbmFibGU7Ci0gICAgaWYgKHVzZVRyYWRpdGlvbmFsRGVza3RvcEJlaGF2aW91cikKKyAg
ICBwYWdlVmlldy0+c2V0VXNlc1RyYWRpdGlvbmFsRGVza3RvcEJlaGF2aW91cihlbmFibGUpOwor
ICAgIGlmIChlbmFibGUpCiAgICAgICAgIGluaXRpYWxpemVEZXNrdG9wKHEpOwogICAgIGVsc2UK
ICAgICAgICAgaW5pdGlhbGl6ZVRvdWNoKHEpOwpAQCAtNjA3LDcgKzU5OSw3IEBAIHZvaWQgUVF1
aWNrV2ViVmlld0V4cGVyaW1lbnRhbDo6c2V0VXNlVHJhZGl0aW9uYWxEZXNrdG9wQmVoYXZpb3Vy
KGJvb2wgZW5hYmxlKQogewogICAgIFFfRChRUXVpY2tXZWJWaWV3KTsKIAotICAgIGlmIChlbmFi
bGUgPT0gZC0+dXNlVHJhZGl0aW9uYWxEZXNrdG9wQmVoYXZpb3VyKQorICAgIGlmIChlbmFibGUg
PT0gZC0+cGFnZVZpZXctPnVzZXNUcmFkaXRpb25hbERlc2t0b3BCZWhhdmlvdXIoKSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgZC0+c2V0VXNlVHJhZGl0aW9uYWxEZXNrdG9wQmVoYXZpb3VyKGVu
YWJsZSk7CkBAIC02OTUsNyArNjg3LDcgQEAgdm9pZCBRUXVpY2tXZWJWaWV3RXhwZXJpbWVudGFs
OjpzZXRJdGVtU2VsZWN0b3IoUURlY2xhcmF0aXZlQ29tcG9uZW50KiBpdGVtU2VsZWMKIGJvb2wg
UVF1aWNrV2ViVmlld0V4cGVyaW1lbnRhbDo6dXNlVHJhZGl0aW9uYWxEZXNrdG9wQmVoYXZpb3Vy
KCkgY29uc3QKIHsKICAgICBRX0QoY29uc3QgUVF1aWNrV2ViVmlldyk7Ci0gICAgcmV0dXJuIGQt
PnVzZVRyYWRpdGlvbmFsRGVza3RvcEJlaGF2aW91cjsKKyAgICByZXR1cm4gZC0+cGFnZVZpZXct
PnVzZXNUcmFkaXRpb25hbERlc2t0b3BCZWhhdmlvdXIoKTsKIH0KIAogdm9pZCBRUXVpY2tXZWJW
aWV3RXhwZXJpbWVudGFsOjpnb0ZvcndhcmRUbyhpbnQgaW5kZXgpCkBAIC04MjcsNiArODE5LDMw
IEBAIGJvb2wgUVF1aWNrV2ViVmlldzo6Y2FuUmVsb2FkKCkgY29uc3QKICAgICByZXR1cm4gZC0+
d2ViUGFnZVByb3h5LT5iYWNrRm9yd2FyZExpc3QoKS0+Y3VycmVudEl0ZW0oKTsKIH0KIAorUVBv
aW50RiBRUXVpY2tXZWJWaWV3OjptYXBUb1dlYkNvbnRlbnQoY29uc3QgUVBvaW50RiYgcG9pbnRJ
blZpZXdDb29yZGluYXRlcykgY29uc3QKK3sKKyAgICBRX0QoY29uc3QgUVF1aWNrV2ViVmlldyk7
CisgICAgcmV0dXJuIGQtPnBhZ2VWaWV3LT50cmFuc2Zvcm1Gcm9tSXRlbSgpLm1hcChwb2ludElu
Vmlld0Nvb3JkaW5hdGVzKTsKK30KKworUVJlY3RGIFFRdWlja1dlYlZpZXc6Om1hcFJlY3RUb1dl
YkNvbnRlbnQoY29uc3QgUVJlY3RGJiByZWN0SW5WaWV3Q29vcmRpbmF0ZXMpIGNvbnN0Cit7Cisg
ICAgUV9EKGNvbnN0IFFRdWlja1dlYlZpZXcpOworICAgIHJldHVybiBkLT5wYWdlVmlldy0+dHJh
bnNmb3JtRnJvbUl0ZW0oKS5tYXBSZWN0KHJlY3RJblZpZXdDb29yZGluYXRlcyk7Cit9CisKK1FQ
b2ludEYgUVF1aWNrV2ViVmlldzo6bWFwRnJvbVdlYkNvbnRlbnQoY29uc3QgUVBvaW50RiYgcG9p
bnRJbkNTU0Nvb3JkaW5hdGVzKSBjb25zdAoreworICAgIFFfRChjb25zdCBRUXVpY2tXZWJWaWV3
KTsKKyAgICByZXR1cm4gZC0+cGFnZVZpZXctPnRyYW5zZm9ybVRvSXRlbSgpLm1hcChwb2ludElu
Q1NTQ29vcmRpbmF0ZXMpOworfQorCitRUmVjdEYgUVF1aWNrV2ViVmlldzo6bWFwUmVjdEZyb21X
ZWJDb250ZW50KGNvbnN0IFFSZWN0RiYgcmVjdEluQ1NTQ29vcmRpbmF0ZXMpIGNvbnN0Cit7Cisg
ICAgUV9EKGNvbnN0IFFRdWlja1dlYlZpZXcpOworICAgIHJldHVybiBkLT5wYWdlVmlldy0+dHJh
bnNmb3JtVG9JdGVtKCkubWFwUmVjdChyZWN0SW5DU1NDb29yZGluYXRlcyk7Cit9CisKIFFTdHJp
bmcgUVF1aWNrV2ViVmlldzo6dGl0bGUoKSBjb25zdAogewogICAgIFFfRChjb25zdCBRUXVpY2tX
ZWJWaWV3KTsKQEAgLTg1NCw3ICs4NzAsNyBAQCB2b2lkIFFRdWlja1dlYlZpZXc6Omdlb21ldHJ5
Q2hhbmdlZChjb25zdCBRUmVjdEYmIG5ld0dlb21ldHJ5LCBjb25zdCBRUmVjdEYmIG9sZAogICAg
IFFfRChRUXVpY2tXZWJWaWV3KTsKICAgICBRUXVpY2tJdGVtOjpnZW9tZXRyeUNoYW5nZWQobmV3
R2VvbWV0cnksIG9sZEdlb21ldHJ5KTsKICAgICBpZiAobmV3R2VvbWV0cnkuc2l6ZSgpICE9IG9s
ZEdlb21ldHJ5LnNpemUoKSkgewotICAgICAgICBpZiAoZC0+dXNlVHJhZGl0aW9uYWxEZXNrdG9w
QmVoYXZpb3VyKSB7CisgICAgICAgIGlmIChkLT5wYWdlVmlldy0+dXNlc1RyYWRpdGlvbmFsRGVz
a3RvcEJlaGF2aW91cigpKSB7CiAgICAgICAgICAgICBkLT5wYWdlVmlldy0+c2V0V2lkdGgobmV3
R2VvbWV0cnkud2lkdGgoKSk7CiAgICAgICAgICAgICBkLT5wYWdlVmlldy0+c2V0SGVpZ2h0KG5l
d0dlb21ldHJ5LmhlaWdodCgpKTsKICAgICAgICAgfSBlbHNlCkBAIC04NjIsMTYgKzg3OCwxMzAg
QEAgdm9pZCBRUXVpY2tXZWJWaWV3OjpnZW9tZXRyeUNoYW5nZWQoY29uc3QgUVJlY3RGJiBuZXdH
ZW9tZXRyeSwgY29uc3QgUVJlY3RGJiBvbGQKICAgICB9CiB9CiAKK3ZvaWQgUVF1aWNrV2ViVmll
dzo6a2V5UHJlc3NFdmVudChRS2V5RXZlbnQqIGV2ZW50KQoreworICAgIHRoaXMtPmV2ZW50KGV2
ZW50KTsKK30KKwordm9pZCBRUXVpY2tXZWJWaWV3OjprZXlSZWxlYXNlRXZlbnQoUUtleUV2ZW50
KiBldmVudCkKK3sKKyAgICB0aGlzLT5ldmVudChldmVudCk7Cit9CisKK3ZvaWQgUVF1aWNrV2Vi
Vmlldzo6aW5wdXRNZXRob2RFdmVudChRSW5wdXRNZXRob2RFdmVudCogZXZlbnQpCit7CisgICAg
dGhpcy0+ZXZlbnQoZXZlbnQpOworfQorCiB2b2lkIFFRdWlja1dlYlZpZXc6OmZvY3VzSW5FdmVu
dChRRm9jdXNFdmVudCogZXZlbnQpCiB7Ci0gICAgUV9EKFFRdWlja1dlYlZpZXcpOwotICAgIGQt
PnBhZ2VWaWV3LT5ldmVudChldmVudCk7CisgICAgdGhpcy0+ZXZlbnQoZXZlbnQpOwogfQogCiB2
b2lkIFFRdWlja1dlYlZpZXc6OmZvY3VzT3V0RXZlbnQoUUZvY3VzRXZlbnQqIGV2ZW50KQogewor
ICAgIHRoaXMtPmV2ZW50KGV2ZW50KTsKK30KKwordm9pZCBRUXVpY2tXZWJWaWV3Ojp0b3VjaEV2
ZW50KFFUb3VjaEV2ZW50KiBldmVudCkKK3sKKyAgICBmb3JjZUFjdGl2ZUZvY3VzKCk7CisgICAg
dGhpcy0+ZXZlbnQoZXZlbnQpOworfQorCit2b2lkIFFRdWlja1dlYlZpZXc6Om1vdXNlUHJlc3NF
dmVudChRTW91c2VFdmVudCogZXZlbnQpCit7CisgICAgZm9yY2VBY3RpdmVGb2N1cygpOworICAg
IHRoaXMtPmV2ZW50KGV2ZW50KTsKK30KKwordm9pZCBRUXVpY2tXZWJWaWV3Ojptb3VzZU1vdmVF
dmVudChRTW91c2VFdmVudCogZXZlbnQpCit7CisgICAgdGhpcy0+ZXZlbnQoZXZlbnQpOworfQor
Cit2b2lkIFFRdWlja1dlYlZpZXc6Om1vdXNlUmVsZWFzZUV2ZW50KFFNb3VzZUV2ZW50KiBldmVu
dCkKK3sKKyAgICB0aGlzLT5ldmVudChldmVudCk7Cit9CisKK3ZvaWQgUVF1aWNrV2ViVmlldzo6
bW91c2VEb3VibGVDbGlja0V2ZW50KFFNb3VzZUV2ZW50KiBldmVudCkKK3sKKyAgICB0aGlzLT5l
dmVudChldmVudCk7Cit9CisKK3ZvaWQgUVF1aWNrV2ViVmlldzo6d2hlZWxFdmVudChRV2hlZWxF
dmVudCogZXZlbnQpCit7CisgICAgdGhpcy0+ZXZlbnQoZXZlbnQpOworfQorCit2b2lkIFFRdWlj
a1dlYlZpZXc6OmhvdmVyRW50ZXJFdmVudChRSG92ZXJFdmVudCogZXZlbnQpCit7CisgICAgdGhp
cy0+ZXZlbnQoZXZlbnQpOworfQorCit2b2lkIFFRdWlja1dlYlZpZXc6OmhvdmVyTW92ZUV2ZW50
KFFIb3ZlckV2ZW50KiBldmVudCkKK3sKKyAgICB0aGlzLT5ldmVudChldmVudCk7Cit9CisKK3Zv
aWQgUVF1aWNrV2ViVmlldzo6aG92ZXJMZWF2ZUV2ZW50KFFIb3ZlckV2ZW50KiBldmVudCkKK3sK
KyAgICB0aGlzLT5ldmVudChldmVudCk7Cit9CisKK3ZvaWQgUVF1aWNrV2ViVmlldzo6ZHJhZ01v
dmVFdmVudChRRHJhZ01vdmVFdmVudCogZXZlbnQpCit7CisgICAgdGhpcy0+ZXZlbnQoZXZlbnQp
OworfQorCit2b2lkIFFRdWlja1dlYlZpZXc6OmRyYWdFbnRlckV2ZW50KFFEcmFnRW50ZXJFdmVu
dCogZXZlbnQpCit7CisgICAgdGhpcy0+ZXZlbnQoZXZlbnQpOworfQorCit2b2lkIFFRdWlja1dl
YlZpZXc6OmRyYWdMZWF2ZUV2ZW50KFFEcmFnTGVhdmVFdmVudCogZXZlbnQpCit7CisgICAgdGhp
cy0+ZXZlbnQoZXZlbnQpOworfQorCit2b2lkIFFRdWlja1dlYlZpZXc6OmRyb3BFdmVudChRRHJv
cEV2ZW50KiBldmVudCkKK3sKKyAgICB0aGlzLT5ldmVudChldmVudCk7Cit9CisKK2Jvb2wgUVF1
aWNrV2ViVmlldzo6ZXZlbnQoUUV2ZW50KiBldikKK3sKICAgICBRX0QoUVF1aWNrV2ViVmlldyk7
Ci0gICAgZC0+cGFnZVZpZXctPmV2ZW50KGV2ZW50KTsKKworICAgIHN3aXRjaCAoZXYtPnR5cGUo
KSkgeworICAgIGNhc2UgUUV2ZW50OjpNb3VzZU1vdmU6CisgICAgY2FzZSBRRXZlbnQ6Ok1vdXNl
QnV0dG9uUHJlc3M6CisgICAgY2FzZSBRRXZlbnQ6Ok1vdXNlQnV0dG9uUmVsZWFzZToKKyAgICBj
YXNlIFFFdmVudDo6TW91c2VCdXR0b25EYmxDbGljazoKKyAgICBjYXNlIFFFdmVudDo6V2hlZWw6
CisgICAgY2FzZSBRRXZlbnQ6OkhvdmVyTGVhdmU6CisgICAgY2FzZSBRRXZlbnQ6OkhvdmVyRW50
ZXI6CisgICAgY2FzZSBRRXZlbnQ6OkhvdmVyTW92ZToKKyAgICBjYXNlIFFFdmVudDo6RHJhZ0Vu
dGVyOgorICAgIGNhc2UgUUV2ZW50OjpEcmFnTGVhdmU6CisgICAgY2FzZSBRRXZlbnQ6OkRyYWdN
b3ZlOgorICAgIGNhc2UgUUV2ZW50OjpEcm9wOgorICAgIGNhc2UgUUV2ZW50OjpLZXlQcmVzczoK
KyAgICBjYXNlIFFFdmVudDo6S2V5UmVsZWFzZToKKyAgICBjYXNlIFFFdmVudDo6Rm9jdXNJbjoK
KyAgICBjYXNlIFFFdmVudDo6Rm9jdXNPdXQ6CisgICAgY2FzZSBRRXZlbnQ6OlRvdWNoQmVnaW46
CisgICAgY2FzZSBRRXZlbnQ6OlRvdWNoRW5kOgorICAgIGNhc2UgUUV2ZW50OjpUb3VjaFVwZGF0
ZToKKyAgICAgICAgaWYgKGQtPnBhZ2VWaWV3LT5ldmVudEhhbmRsZXIoKS0+aGFuZGxlRXZlbnQo
ZXYpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgaWYgKGV2LT50eXBl
KCkgPT0gUUV2ZW50OjpJbnB1dE1ldGhvZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBUaGlz
IGlzIG5lY2Vzc2FyeSB0byBhdm9pZCBhbiBlbmRsZXNzIGxvb3AgaW4gY29ubmVjdGlvbiB3aXRo
IFFRdWlja0l0ZW06OmV2ZW50KCkuCisKKyAgICByZXR1cm4gUVF1aWNrSXRlbTo6ZXZlbnQoZXYp
OwogfQogCiBXS1BhZ2VSZWYgUVF1aWNrV2ViVmlldzo6cGFnZVJlZigpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcC5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3AuaAppbmRleCAz
OGYyM2JjLi5hMjMwZmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L3F0L3FxdWlja3dlYnZpZXdfcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvcXF1aWNrd2Vidmlld19wLmgKQEAgLTg4LDYgKzg4LDExIEBAIHB1YmxpYzoKICAgICBib29s
IGxvYWRpbmcoKSBjb25zdDsKICAgICBib29sIGNhblJlbG9hZCgpIGNvbnN0OwogCisgICAgUVBv
aW50RiBtYXBUb1dlYkNvbnRlbnQoY29uc3QgUVBvaW50RiYpIGNvbnN0OworICAgIFFSZWN0RiBt
YXBSZWN0VG9XZWJDb250ZW50KGNvbnN0IFFSZWN0RiYpIGNvbnN0OworICAgIFFQb2ludEYgbWFw
RnJvbVdlYkNvbnRlbnQoY29uc3QgUVBvaW50RiYpIGNvbnN0OworICAgIFFSZWN0RiBtYXBSZWN0
RnJvbVdlYkNvbnRlbnQoY29uc3QgUVJlY3RGJikgY29uc3Q7CisKICAgICBRUXVpY2tXZWJQYWdl
KiBwYWdlKCk7CiAKICAgICBRUXVpY2tXZWJWaWV3RXhwZXJpbWVudGFsKiBleHBlcmltZW50YWwo
KSBjb25zdDsKQEAgLTExOSw4ICsxMjQsMjYgQEAgUV9TSUdOQUxTOgogCiBwcm90ZWN0ZWQ6CiAg
ICAgdmlydHVhbCB2b2lkIGdlb21ldHJ5Q2hhbmdlZChjb25zdCBRUmVjdEYmLCBjb25zdCBRUmVj
dEYmKTsKKworICAgIHZpcnR1YWwgdm9pZCBrZXlQcmVzc0V2ZW50KFFLZXlFdmVudCopOworICAg
IHZpcnR1YWwgdm9pZCBrZXlSZWxlYXNlRXZlbnQoUUtleUV2ZW50Kik7CisgICAgdmlydHVhbCB2
b2lkIGlucHV0TWV0aG9kRXZlbnQoUUlucHV0TWV0aG9kRXZlbnQqKTsKICAgICB2aXJ0dWFsIHZv
aWQgZm9jdXNJbkV2ZW50KFFGb2N1c0V2ZW50Kik7CiAgICAgdmlydHVhbCB2b2lkIGZvY3VzT3V0
RXZlbnQoUUZvY3VzRXZlbnQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgdG91Y2hFdmVudChRVG91Y2hF
dmVudCopOworICAgIHZpcnR1YWwgdm9pZCBtb3VzZVByZXNzRXZlbnQoUU1vdXNlRXZlbnQqKTsK
KyAgICB2aXJ0dWFsIHZvaWQgbW91c2VNb3ZlRXZlbnQoUU1vdXNlRXZlbnQqKTsKKyAgICB2aXJ0
dWFsIHZvaWQgbW91c2VSZWxlYXNlRXZlbnQoUU1vdXNlRXZlbnQgKik7CisgICAgdmlydHVhbCB2
b2lkIG1vdXNlRG91YmxlQ2xpY2tFdmVudChRTW91c2VFdmVudCopOworICAgIHZpcnR1YWwgdm9p
ZCB3aGVlbEV2ZW50KFFXaGVlbEV2ZW50Kik7CisgICAgdmlydHVhbCB2b2lkIGhvdmVyRW50ZXJF
dmVudChRSG92ZXJFdmVudCopOworICAgIHZpcnR1YWwgdm9pZCBob3Zlck1vdmVFdmVudChRSG92
ZXJFdmVudCopOworICAgIHZpcnR1YWwgdm9pZCBob3ZlckxlYXZlRXZlbnQoUUhvdmVyRXZlbnQq
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhZ01vdmVFdmVudChRRHJhZ01vdmVFdmVudCopOworICAg
IHZpcnR1YWwgdm9pZCBkcmFnRW50ZXJFdmVudChRRHJhZ0VudGVyRXZlbnQqKTsKKyAgICB2aXJ0
dWFsIHZvaWQgZHJhZ0xlYXZlRXZlbnQoUURyYWdMZWF2ZUV2ZW50Kik7CisgICAgdmlydHVhbCB2
b2lkIGRyb3BFdmVudChRRHJvcEV2ZW50Kik7CisgICAgdmlydHVhbCBib29sIGV2ZW50KFFFdmVu
dCopOwogCiBwcml2YXRlOgogICAgIFFfREVDTEFSRV9QUklWQVRFKFFRdWlja1dlYlZpZXcpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdf
cF9wLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcF9w
LmgKaW5kZXggM2I5OTkyOC4uNGJlNzE3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3BfcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wX3AuaApAQCAtMTU5LDggKzE1OSw2IEBAIHBy
aXZhdGU6CiAKICAgICBib29sIGlzVHJhbnNpdGlvbmluZ1RvTmV3UGFnZTsKICAgICBib29sIHBh
Z2VJc1N1c3BlbmRlZDsKLQotICAgIGJvb2wgdXNlVHJhZGl0aW9uYWxEZXNrdG9wQmVoYXZpb3Vy
OwogICAgIGJvb2wgbV9uYXZpZ2F0b3JRdE9iamVjdEVuYWJsZWQ7CiAgICAgUVVybCBtX2ljb25V
Ukw7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2Vi
dmlld3BvcnRpbmZvLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYnZp
ZXdwb3J0aW5mby5jcHAKaW5kZXggOGI2ZmI0MS4uNzM1MTk2ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2Vidmlld3BvcnRpbmZvLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJ2aWV3cG9ydGluZm8uY3BwCkBAIC0zOCw3
ICszOCw3IEBAIFFXZWJWaWV3cG9ydEluZm86On5RV2ViVmlld3BvcnRJbmZvKCkKIAogUVNpemUg
UVdlYlZpZXdwb3J0SW5mbzo6Y29udGVudHNTaXplKCkgY29uc3QKIHsKLSAgICByZXR1cm4gUVNp
emUobV93ZWJWaWV3UHJpdmF0ZS0+cGFnZVZpZXctPndpZHRoKCksIG1fd2ViVmlld1ByaXZhdGUt
PnBhZ2VWaWV3LT5oZWlnaHQoKSk7CisgICAgcmV0dXJuIFFTaXplKG1fd2ViVmlld1ByaXZhdGUt
PnBhZ2VWaWV3LT5jb250ZW50U2l6ZSgpLnRvU2l6ZSgpKTsKIH0KIAogUVZhcmlhbnQgUVdlYlZp
ZXdwb3J0SW5mbzo6Y3VycmVudFNjYWxlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcXF1aWNrd2Vidmlldy90c3RfcXF1aWNrd2Vidmll
dy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FxdWlja3dlYnZp
ZXcvdHN0X3FxdWlja3dlYnZpZXcuY3BwCmluZGV4IGU2NmIzMzguLjRhZWRmZWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcXF1aWNrd2Vidmlldy90
c3RfcXF1aWNrd2Vidmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC90ZXN0cy9xcXVpY2t3ZWJ2aWV3L3RzdF9xcXVpY2t3ZWJ2aWV3LmNwcApAQCAtMjgzLDcgKzI4
Myw3IEBAIHZvaWQgdHN0X1FRdWlja1dlYlZpZXc6OnNjcm9sbFJlcXVlc3QoKQogICAgIC8vIENP
TVBBUkUgd2l0aCB0aGUgcG9zaXRpb24gcmVxdWVzdGVkIGluIHRoZSBodG1sCiAgICAgLy8gVXNl
IHFSb3VuZCBhcyB0aGF0IGlzIGFsc28gdXNlZCB3aGVuIGNhbGN1bGF0aW5nIHRoZSBwb3NpdGlv
bgogICAgIC8vIGluIFdlYktpdC4KLSAgICBpbnQgeSA9IC1xUm91bmQoNTAgKiB3ZWJWaWV3KCkt
PnBhZ2UoKS0+c2NhbGUoKSk7CisgICAgaW50IHkgPSAtcVJvdW5kKDUwICogd2ViVmlldygpLT5w
YWdlKCktPmNvbnRlbnRTY2FsZSgpKTsKICAgICBRVkVSSUZZKHdlYlZpZXcoKS0+cGFnZSgpLT5w
b3MoKS55KCkgPT0geSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9xdC9RdFBpbmNoR2VzdHVyZVJlY29nbml6ZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL3F0L1F0UGluY2hHZXN0dXJlUmVjb2duaXplci5jcHAKaW5kZXggOTE2Nzc5Mi4uNzY5OWFk
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0UGluY2hHZXN0dXJl
UmVjb2duaXplci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0UGluY2hH
ZXN0dXJlUmVjb2duaXplci5jcHAKQEAgLTExMiw4ICsxMTIsOCBAQCBib29sIFF0UGluY2hHZXN0
dXJlUmVjb2duaXplcjo6cmVjb2duaXplKGNvbnN0IFFUb3VjaEV2ZW50KiBldmVudCkKICAgICAg
ICAgICAgIGNvbnN0IHFyZWFsIGN1cnJlbnRTcGFuRGlzdGFuY2UgPSBRTGluZUYocG9pbnQxLnNj
cmVlblBvcygpLCBwb2ludDIuc2NyZWVuUG9zKCkpLmxlbmd0aCgpOwogICAgICAgICAgICAgY29u
c3QgcXJlYWwgaW5pdGlhbFNwYW5EaXN0YW5jZSA9IFFMaW5lRihtX3BvaW50MS5pbml0aWFsU2Ny
ZWVuUG9zaXRpb24sIG1fcG9pbnQyLmluaXRpYWxTY3JlZW5Qb3NpdGlvbikubGVuZ3RoKCk7CiAg
ICAgICAgICAgICBjb25zdCBxcmVhbCB0b3RhbFNjYWxlRmFjdG9yID0gY3VycmVudFNwYW5EaXN0
YW5jZSAvIGluaXRpYWxTcGFuRGlzdGFuY2U7Ci0gICAgICAgICAgICBjb25zdCBRUG9pbnRGIHRv
dWNoQ2VudGVySW5QYWdlVmlld0Nvb3JkaW5hdGVzID0gY29tcHV0ZVBpbmNoQ2VudGVyKHBvaW50
MSwgcG9pbnQyKTsKLSAgICAgICAgICAgIGludGVyYWN0aW9uRW5naW5lKCktPnBpbmNoR2VzdHVy
ZVJlcXVlc3RVcGRhdGUodG91Y2hDZW50ZXJJblBhZ2VWaWV3Q29vcmRpbmF0ZXMsIHRvdGFsU2Nh
bGVGYWN0b3IpOworICAgICAgICAgICAgY29uc3QgUVBvaW50RiB0b3VjaENlbnRlckluVmlld0Nv
b3JkaW5hdGVzID0gY29tcHV0ZVBpbmNoQ2VudGVyKHBvaW50MSwgcG9pbnQyKTsKKyAgICAgICAg
ICAgIGludGVyYWN0aW9uRW5naW5lKCktPnBpbmNoR2VzdHVyZVJlcXVlc3RVcGRhdGUodG91Y2hD
ZW50ZXJJblZpZXdDb29yZGluYXRlcywgdG90YWxTY2FsZUZhY3Rvcik7CiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFZpZXdwb3J0SW50ZXJhY3Rpb25Fbmdp
bmUuY3BwCmluZGV4IDc4ODM0OWEuLmQxMmViMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9xdC9RdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUuY3BwCkBA
IC0yMywxMCArMjMsMTMgQEAKICNpbmNsdWRlICJRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUu
aCIKIAogI2luY2x1ZGUgIlBhc3NPd25QdHIuaCIKKyNpbmNsdWRlICJxcXVpY2t3ZWJwYWdlX3Au
aCIKKyNpbmNsdWRlICJxcXVpY2t3ZWJ2aWV3X3AuaCIKICNpbmNsdWRlIDxRUG9pbnRGPgogI2lu
Y2x1ZGUgPFFTY3JvbGxFdmVudD4KICNpbmNsdWRlIDxRU2Nyb2xsUHJlcGFyZUV2ZW50PgogI2lu
Y2x1ZGUgPFFTY3JvbGxlclByb3BlcnRpZXM+CisjaW5jbHVkZSA8UVRyYW5zZm9ybT4KICNpbmNs
dWRlIDxRV2hlZWxFdmVudD4KICNpbmNsdWRlIDxRdFF1aWNrL3FxdWlja2l0ZW0uaD4KIApAQCAt
MTExLDcgKzExNCw3IEBAIGlubGluZSBRUmVjdEYgUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5l
OjppdGVtUmVjdEZyb21DU1MoY29uc3QgUVJlY3RGJiBjc3NSZWN0CiAgICAgcmV0dXJuIGl0ZW1S
ZWN0OwogfQogCi1RdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OlF0Vmlld3BvcnRJbnRlcmFj
dGlvbkVuZ2luZShjb25zdCBRUXVpY2tJdGVtKiB2aWV3cG9ydCwgUVF1aWNrSXRlbSogY29udGVu
dCkKK1F0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6UXRWaWV3cG9ydEludGVyYWN0aW9uRW5n
aW5lKGNvbnN0IFFRdWlja1dlYlZpZXcqIHZpZXdwb3J0LCBRUXVpY2tXZWJQYWdlKiBjb250ZW50
KQogICAgIDogbV92aWV3cG9ydCh2aWV3cG9ydCkKICAgICAsIG1fY29udGVudChjb250ZW50KQog
ICAgICwgbV9zdXNwZW5kQ291bnQoMCkKQEAgLTE3NCw3ICsxNzcsNyBAQCB2b2lkIFF0Vmlld3Bv
cnRJbnRlcmFjdGlvbkVuZ2luZTo6c2V0SXRlbVJlY3RWaXNpYmxlKGNvbnN0IFFSZWN0RiYgaXRl
bVJlY3QpCiAKICAgICBxcmVhbCBpdGVtU2NhbGUgPSBtX3ZpZXdwb3J0LT53aWR0aCgpIC8gaXRl
bVJlY3Qud2lkdGgoKTsKIAotICAgIG1fY29udGVudC0+c2V0U2NhbGUoaXRlbVNjYWxlKTsKKyAg
ICBtX2NvbnRlbnQtPnNldENvbnRlbnRTY2FsZShpdGVtU2NhbGUpOwogCiAgICAgLy8gV2UgbmVl
ZCB0byBhbmltYXRlIHRoZSBjb250ZW50IGJ1dCB0aGUgcG9zaXRpb24gcmVwcmVzZW50cyB0aGUg
dmlld3BvcnQgaGVuY2Ugd2UgbmVlZCB0byBpbnZlcnQgdGhlIHBvc2l0aW9uIGhlcmUuCiAgICAg
Ly8gVG8gYW5pbWF0ZSB0aGUgcG9zaXRpb24gdG9nZXRoZXIgd2l0aCB0aGUgc2NhbGUgd2UgbXVs
dGlwbHkgdGhlIHBvc2l0aW9uIHdpdGggdGhlIGN1cnJlbnQgc2NhbGU7CkBAIC0xODMsNyArMTg2
LDcgQEAgdm9pZCBRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OnNldEl0ZW1SZWN0VmlzaWJs
ZShjb25zdCBRUmVjdEYmIGl0ZW1SZWN0KQogCiBib29sIFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVu
Z2luZTo6YW5pbWF0ZUl0ZW1SZWN0VmlzaWJsZShjb25zdCBRUmVjdEYmIGl0ZW1SZWN0KQogewot
ICAgIFFSZWN0RiBjdXJyZW50SXRlbVJlY3RWaXNpYmxlID0gbV9jb250ZW50LT5tYXBSZWN0RnJv
bUl0ZW0obV92aWV3cG9ydCwgbV92aWV3cG9ydC0+Ym91bmRpbmdSZWN0KCkpOworICAgIFFSZWN0
RiBjdXJyZW50SXRlbVJlY3RWaXNpYmxlID0gbV92aWV3cG9ydC0+bWFwUmVjdFRvV2ViQ29udGVu
dChtX3ZpZXdwb3J0LT5ib3VuZGluZ1JlY3QoKSk7CiAgICAgaWYgKGl0ZW1SZWN0ID09IGN1cnJl
bnRJdGVtUmVjdFZpc2libGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMjM4LDcgKzI0
MSw3IEBAIGJvb2wgUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpldmVudChRRXZlbnQqIGV2
ZW50KQogICAgICAgICBRU2Nyb2xsUHJlcGFyZUV2ZW50KiBwcmVwYXJlRXZlbnQgPSBzdGF0aWNf
Y2FzdDxRU2Nyb2xsUHJlcGFyZUV2ZW50Kj4oZXZlbnQpOwogICAgICAgICBjb25zdCBRUmVjdEYg
dmlld3BvcnRSZWN0ID0gbV92aWV3cG9ydC0+Ym91bmRpbmdSZWN0KCk7CiAgICAgICAgIGNvbnN0
IFFSZWN0RiBjb250ZW50UmVjdCA9IG1fdmlld3BvcnQtPm1hcFJlY3RGcm9tSXRlbShtX2NvbnRl
bnQsIG1fY29udGVudC0+Ym91bmRpbmdSZWN0KCkpOwotICAgICAgICBjb25zdCBRUmVjdEYgcG9z
UmFuZ2UgPSBjb21wdXRlUG9zUmFuZ2VGb3JJdGVtQXRTY2FsZShtX2NvbnRlbnQtPnNjYWxlKCkp
OworICAgICAgICBjb25zdCBRUmVjdEYgcG9zUmFuZ2UgPSBjb21wdXRlUG9zUmFuZ2VGb3JJdGVt
QXRTY2FsZShtX2NvbnRlbnQtPmNvbnRlbnRTY2FsZSgpKTsKICAgICAgICAgcHJlcGFyZUV2ZW50
LT5zZXRDb250ZW50UG9zUmFuZ2UocG9zUmFuZ2UpOwogICAgICAgICBwcmVwYXJlRXZlbnQtPnNl
dFZpZXdwb3J0U2l6ZSh2aWV3cG9ydFJlY3Quc2l6ZSgpKTsKIApAQCAtMjUxLDExICsyNTQsMTEg
QEAgYm9vbCBRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OmV2ZW50KFFFdmVudCogZXZlbnQp
CiAgICAgICAgIFFTY3JvbGxFdmVudCogc2Nyb2xsRXZlbnQgPSBzdGF0aWNfY2FzdDxRU2Nyb2xs
RXZlbnQqPihldmVudCk7CiAgICAgICAgIFFQb2ludEYgbmV3UG9zID0gLXNjcm9sbEV2ZW50LT5j
b250ZW50UG9zKCkgLSBzY3JvbGxFdmVudC0+b3ZlcnNob290RGlzdGFuY2UoKTsKICAgICAgICAg
aWYgKG1fY29udGVudC0+cG9zKCkgIT0gbmV3UG9zKSB7Ci0gICAgICAgICAgICBRUG9pbnRGIGN1
cnJlbnRQb3NJbkNvbnRlbnRDb29yZGluYXRlcyA9IG1fY29udGVudC0+bWFwVG9JdGVtKG1fY29u
dGVudC0+cGFyZW50SXRlbSgpLCBtX2NvbnRlbnQtPnBvcygpKTsKLSAgICAgICAgICAgIFFQb2lu
dEYgbmV3UG9zSW5Db250ZW50Q29vcmRpbmF0ZXMgPSBtX2NvbnRlbnQtPm1hcFRvSXRlbShtX2Nv
bnRlbnQtPnBhcmVudEl0ZW0oKSwgbmV3UG9zKTsKKyAgICAgICAgICAgIFFQb2ludEYgY3VycmVu
dFBvc0luQ1NTQ29vcmRpbmF0ZXMgPSBtX3ZpZXdwb3J0LT5tYXBUb1dlYkNvbnRlbnQobV9jb250
ZW50LT5wb3MoKSk7CisgICAgICAgICAgICBRUG9pbnRGIG5ld1Bvc0luQ1NTQ29vcmRpbmF0ZXMg
PSBtX3ZpZXdwb3J0LT5tYXBUb1dlYkNvbnRlbnQobmV3UG9zKTsKIAogICAgICAgICAgICAgLy8g
VGhpcyBtdXN0IGJlIGVtaXR0ZWQgYmVmb3JlIHZpZXdwb3J0VXBkYXRlUmVxdWVzdGVkIHNvIHRo
YXQgdGhlIHdlYiBwcm9jZXNzIGtub3dzIHdoZXJlIHRvIGxvb2sgZm9yIHRpbGVzLgotICAgICAg
ICAgICAgZW1pdCB2aWV3cG9ydFRyYWplY3RvcnlWZWN0b3JDaGFuZ2VkKGN1cnJlbnRQb3NJbkNv
bnRlbnRDb29yZGluYXRlcy0gbmV3UG9zSW5Db250ZW50Q29vcmRpbmF0ZXMpOworICAgICAgICAg
ICAgZW1pdCB2aWV3cG9ydFRyYWplY3RvcnlWZWN0b3JDaGFuZ2VkKGN1cnJlbnRQb3NJbkNTU0Nv
b3JkaW5hdGVzIC0gbmV3UG9zSW5DU1NDb29yZGluYXRlcyk7CiAgICAgICAgICAgICBtX2NvbnRl
bnQtPnNldFBvcyhuZXdQb3MpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAt
Mjk3LDcgKzMwMCw3IEBAIHZvaWQgUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjp3aGVlbEV2
ZW50KFFXaGVlbEV2ZW50KiBldikKICAgICBlbHNlCiAgICAgICAgIG5ld1Bvcy5yeSgpICs9IGRl
bHRhOwogCi0gICAgUVJlY3RGIGVuZFBvc1JhbmdlID0gY29tcHV0ZVBvc1JhbmdlRm9ySXRlbUF0
U2NhbGUobV9jb250ZW50LT5zY2FsZSgpKTsKKyAgICBRUmVjdEYgZW5kUG9zUmFuZ2UgPSBjb21w
dXRlUG9zUmFuZ2VGb3JJdGVtQXRTY2FsZShtX2NvbnRlbnQtPmNvbnRlbnRTY2FsZSgpKTsKICAg
ICBtX2NvbnRlbnQtPnNldFBvcygtYm91bmRQb3NpdGlvbihlbmRQb3NSYW5nZS50b3BMZWZ0KCks
IG5ld1BvcywgZW5kUG9zUmFuZ2UuYm90dG9tUmlnaHQoKSkpOwogfQogCkBAIC0zMDcsNyArMzEw
LDcgQEAgdm9pZCBRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OnBhZ2VQb3NpdGlvblJlcXVl
c3QoY29uc3QgUVBvaW50JiBwYWdlUG9zaXRpb24KICAgICBpZiAobV9zdXNwZW5kQ291bnQpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIHFyZWFsIGVuZEl0ZW1TY2FsZSA9IG1fY29udGVudC0+c2Nh
bGUoKTsgLy8gU3RheSBhdCBzYW1lIHNjYWxlLgorICAgIHFyZWFsIGVuZEl0ZW1TY2FsZSA9IG1f
Y29udGVudC0+Y29udGVudFNjYWxlKCk7IC8vIFN0YXkgYXQgc2FtZSBzY2FsZS4KIAogICAgIFFS
ZWN0RiBlbmRQb3NSYW5nZSA9IGNvbXB1dGVQb3NSYW5nZUZvckl0ZW1BdFNjYWxlKGVuZEl0ZW1T
Y2FsZSk7CiAgICAgUVBvaW50RiBlbmRQb3NpdGlvbiA9IGJvdW5kUG9zaXRpb24oZW5kUG9zUmFu
Z2UudG9wTGVmdCgpLCBwYWdlUG9zaXRpb24gKiBlbmRJdGVtU2NhbGUsIGVuZFBvc1JhbmdlLmJv
dHRvbVJpZ2h0KCkpOwpAQCAtMzE5LDcgKzMyMiw3IEBAIHZvaWQgUXRWaWV3cG9ydEludGVyYWN0
aW9uRW5naW5lOjpwYWdlUG9zaXRpb25SZXF1ZXN0KGNvbnN0IFFQb2ludCYgcGFnZVBvc2l0aW9u
CiAKIFFSZWN0RiBRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OmNvbXB1dGVQb3NSYW5nZUZv
ckl0ZW1BdFNjYWxlKHFyZWFsIGl0ZW1TY2FsZSkgY29uc3QKIHsKLSAgICBjb25zdCBRU2l6ZUYg
Y29udGVudEl0ZW1TaXplID0gbV9jb250ZW50LT5ib3VuZGluZ1JlY3QoKS5zaXplKCkgKiBpdGVt
U2NhbGU7CisgICAgY29uc3QgUVNpemVGIGNvbnRlbnRJdGVtU2l6ZSA9IG1fY29udGVudC0+Y29u
dGVudFNpemUoKSAqIGl0ZW1TY2FsZTsKICAgICBjb25zdCBRU2l6ZUYgdmlld3BvcnRJdGVtU2l6
ZSA9IG1fdmlld3BvcnQtPmJvdW5kaW5nUmVjdCgpLnNpemUoKTsKIAogICAgIGNvbnN0IHFyZWFs
IGhvcml6b250YWxSYW5nZSA9IGNvbnRlbnRJdGVtU2l6ZS53aWR0aCgpIC0gdmlld3BvcnRJdGVt
U2l6ZS53aWR0aCgpOwpAQCAtNDA2LDcgKzQwOSw3IEBAIGJvb2wgUXRWaWV3cG9ydEludGVyYWN0
aW9uRW5naW5lOjplbnN1cmVDb250ZW50V2l0aGluVmlld3BvcnRCb3VuZGFyeShib29sIGltbWVk
CiAgICAgY29uc3QgUVJlY3RGIHZpZXdwb3J0UmVjdCA9IG1fdmlld3BvcnQtPmJvdW5kaW5nUmVj
dCgpOwogICAgIFFQb2ludEYgdmlld3BvcnRIb3RzcG90ID0gdmlld3BvcnRSZWN0LmNlbnRlcigp
OwogCi0gICAgUVBvaW50RiBlbmRQb3NpdGlvbiA9IG1fY29udGVudC0+bWFwRnJvbUl0ZW0obV92
aWV3cG9ydCwgdmlld3BvcnRIb3RzcG90KSAqIGVuZEl0ZW1TY2FsZSAtIHZpZXdwb3J0SG90c3Bv
dDsKKyAgICBRUG9pbnRGIGVuZFBvc2l0aW9uID0gbV92aWV3cG9ydC0+bWFwVG9XZWJDb250ZW50
KHZpZXdwb3J0SG90c3BvdCkgKiBlbmRJdGVtU2NhbGUgLSB2aWV3cG9ydEhvdHNwb3Q7CiAKICAg
ICBRUmVjdEYgZW5kUG9zUmFuZ2UgPSBjb21wdXRlUG9zUmFuZ2VGb3JJdGVtQXRTY2FsZShlbmRJ
dGVtU2NhbGUpOwogICAgIGVuZFBvc2l0aW9uID0gYm91bmRQb3NpdGlvbihlbmRQb3NSYW5nZS50
b3BMZWZ0KCksIGVuZFBvc2l0aW9uLCBlbmRQb3NSYW5nZS5ib3R0b21SaWdodCgpKTsKQEAgLTQ0
MSw3ICs0NDQsNyBAQCB2b2lkIFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6YXBwbHlDb25z
dHJhaW50cyhjb25zdCBDb25zdHJhaW50cyYgY29uc3RyYWludAogCiAgICAgaWYgKCFtX2hhZFVz
ZXJJbnRlcmFjdGlvbikgewogICAgICAgICBxcmVhbCBpbml0aWFsU2NhbGUgPSBpbm5lckJvdW5k
ZWRDU1NTY2FsZShtX2NvbnN0cmFpbnRzLmluaXRpYWxTY2FsZSk7Ci0gICAgICAgIG1fY29udGVu
dC0+c2V0U2NhbGUoaXRlbVNjYWxlRnJvbUNTUyhpbml0aWFsU2NhbGUpKTsKKyAgICAgICAgbV9j
b250ZW50LT5zZXRDb250ZW50U2NhbGUoaXRlbVNjYWxlRnJvbUNTUyhpbml0aWFsU2NhbGUpKTsK
ICAgICB9CiAKICAgICAvLyBJZiB0aGUgd2ViIGFwcCBjaGFuZ2VzIHN1Y2Nlc3NpdmVseSBjaGFu
Z2VzIHRoZSB2aWV3cG9ydCBvbiBwdXJwb3NlCkBAIC00NTEsNyArNDU0LDcgQEAgdm9pZCBRdFZp
ZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OmFwcGx5Q29uc3RyYWludHMoY29uc3QgQ29uc3RyYWlu
dHMmIGNvbnN0cmFpbnQKIAogcXJlYWwgUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpjdXJy
ZW50Q1NTU2NhbGUoKQogewotICAgIHJldHVybiBjc3NTY2FsZUZyb21JdGVtKG1fY29udGVudC0+
c2NhbGUoKSk7CisgICAgcmV0dXJuIGNzc1NjYWxlRnJvbUl0ZW0obV9jb250ZW50LT5jb250ZW50
U2NhbGUoKSk7CiB9CiAKIGJvb2wgUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpzY3JvbGxB
bmltYXRpb25BY3RpdmUoKSBjb25zdApAQCAtNDczLDE1ICs0NzYsMTUgQEAgYm9vbCBRdFZpZXdw
b3J0SW50ZXJhY3Rpb25FbmdpbmU6OnBhbkdlc3R1cmVBY3RpdmUoKSBjb25zdAogICAgIHJldHVy
biBzY3JvbGxlci0+c3RhdGUoKSA9PSBRU2Nyb2xsZXI6OlByZXNzZWQgfHwgc2Nyb2xsZXItPnN0
YXRlKCkgPT0gUVNjcm9sbGVyOjpEcmFnZ2luZzsKIH0KIAotdm9pZCBRdFZpZXdwb3J0SW50ZXJh
Y3Rpb25FbmdpbmU6OnBhbkdlc3R1cmVTdGFydGVkKGNvbnN0IFFQb2ludEYmIHRvdWNoUG9pbnQs
IHFpbnQ2NCBldmVudFRpbWVzdGFtcE1pbGxpcykKK3ZvaWQgUXRWaWV3cG9ydEludGVyYWN0aW9u
RW5naW5lOjpwYW5HZXN0dXJlU3RhcnRlZChjb25zdCBRUG9pbnRGJiAgdmlld3BvcnRUb3VjaFBv
aW50LCBxaW50NjQgZXZlbnRUaW1lc3RhbXBNaWxsaXMpCiB7CiAgICAgbV9oYWRVc2VySW50ZXJh
Y3Rpb24gPSB0cnVlOwotICAgIHNjcm9sbGVyKCktPmhhbmRsZUlucHV0KFFTY3JvbGxlcjo6SW5w
dXRQcmVzcywgbV92aWV3cG9ydC0+bWFwRnJvbUl0ZW0obV9jb250ZW50LCB0b3VjaFBvaW50KSwg
ZXZlbnRUaW1lc3RhbXBNaWxsaXMpOworICAgIHNjcm9sbGVyKCktPmhhbmRsZUlucHV0KFFTY3Jv
bGxlcjo6SW5wdXRQcmVzcywgIHZpZXdwb3J0VG91Y2hQb2ludCwgZXZlbnRUaW1lc3RhbXBNaWxs
aXMpOwogfQogCi12b2lkIFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6cGFuR2VzdHVyZVJl
cXVlc3RVcGRhdGUoY29uc3QgUVBvaW50RiYgdG91Y2hQb2ludCwgcWludDY0IGV2ZW50VGltZXN0
YW1wTWlsbGlzKQordm9pZCBRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OnBhbkdlc3R1cmVS
ZXF1ZXN0VXBkYXRlKGNvbnN0IFFQb2ludEYmICB2aWV3cG9ydFRvdWNoUG9pbnQsIHFpbnQ2NCBl
dmVudFRpbWVzdGFtcE1pbGxpcykKIHsKLSAgICBzY3JvbGxlcigpLT5oYW5kbGVJbnB1dChRU2Ny
b2xsZXI6OklucHV0TW92ZSwgbV92aWV3cG9ydC0+bWFwRnJvbUl0ZW0obV9jb250ZW50LCB0b3Vj
aFBvaW50KSwgZXZlbnRUaW1lc3RhbXBNaWxsaXMpOworICAgIHNjcm9sbGVyKCktPmhhbmRsZUlu
cHV0KFFTY3JvbGxlcjo6SW5wdXRNb3ZlLCAgdmlld3BvcnRUb3VjaFBvaW50LCBldmVudFRpbWVz
dGFtcE1pbGxpcyk7CiB9CiAKIHZvaWQgUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpwYW5H
ZXN0dXJlQ2FuY2VsbGVkKCkKQEAgLTQ5MSw5ICs0OTQsOSBAQCB2b2lkIFF0Vmlld3BvcnRJbnRl
cmFjdGlvbkVuZ2luZTo6cGFuR2VzdHVyZUNhbmNlbGxlZCgpCiAgICAgc2Nyb2xsZXIoKS0+c3Rv
cCgpOwogfQogCi12b2lkIFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6cGFuR2VzdHVyZUVu
ZGVkKGNvbnN0IFFQb2ludEYmIHRvdWNoUG9pbnQsIHFpbnQ2NCBldmVudFRpbWVzdGFtcE1pbGxp
cykKK3ZvaWQgUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpwYW5HZXN0dXJlRW5kZWQoY29u
c3QgUVBvaW50RiYgIHZpZXdwb3J0VG91Y2hQb2ludCwgcWludDY0IGV2ZW50VGltZXN0YW1wTWls
bGlzKQogewotICAgIHNjcm9sbGVyKCktPmhhbmRsZUlucHV0KFFTY3JvbGxlcjo6SW5wdXRSZWxl
YXNlLCBtX3ZpZXdwb3J0LT5tYXBGcm9tSXRlbShtX2NvbnRlbnQsIHRvdWNoUG9pbnQpLCBldmVu
dFRpbWVzdGFtcE1pbGxpcyk7CisgICAgc2Nyb2xsZXIoKS0+aGFuZGxlSW5wdXQoUVNjcm9sbGVy
OjpJbnB1dFJlbGVhc2UsICB2aWV3cG9ydFRvdWNoUG9pbnQsIGV2ZW50VGltZXN0YW1wTWlsbGlz
KTsKIH0KIAogYm9vbCBRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OnNjYWxlQW5pbWF0aW9u
QWN0aXZlKCkgY29uc3QKQEAgLTUxMiw3ICs1MTUsNyBAQCBib29sIFF0Vmlld3BvcnRJbnRlcmFj
dGlvbkVuZ2luZTo6cGluY2hHZXN0dXJlQWN0aXZlKCkgY29uc3QKICAgICByZXR1cm4gbV9waW5j
aFN0YXJ0U2NhbGUgPiAwOwogfQogCi12b2lkIFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6
cGluY2hHZXN0dXJlU3RhcnRlZChjb25zdCBRUG9pbnRGJiBwaW5jaENlbnRlckluQ29udGVudENv
b3JkaW5hdGVzKQordm9pZCBRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OnBpbmNoR2VzdHVy
ZVN0YXJ0ZWQoY29uc3QgUVBvaW50RiYgcGluY2hDZW50ZXJJblZpZXdwb3J0Q29vcmRpbmF0ZXMp
CiB7CiAgICAgQVNTRVJUKCFtX3N1c3BlbmRDb3VudCk7CiAKQEAgLTUyMywxNCArNTI2LDE0IEBA
IHZvaWQgUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpwaW5jaEdlc3R1cmVTdGFydGVkKGNv
bnN0IFFQb2ludEYmIHBpbmNoQ2VudGVyCiAKICAgICBtX3NjYWxlVXBkYXRlRGVmZXJyZXIgPSBh
ZG9wdFB0cihuZXcgVmlld3BvcnRVcGRhdGVEZWZlcnJlcih0aGlzKSk7CiAKLSAgICBtX2xhc3RQ
aW5jaENlbnRlckluVmlld3BvcnRDb29yZGluYXRlcyA9IG1fdmlld3BvcnQtPm1hcEZyb21JdGVt
KG1fY29udGVudCwgcGluY2hDZW50ZXJJbkNvbnRlbnRDb29yZGluYXRlcyk7Ci0gICAgbV9waW5j
aFN0YXJ0U2NhbGUgPSBtX2NvbnRlbnQtPnNjYWxlKCk7CisgICAgbV9sYXN0UGluY2hDZW50ZXJJ
blZpZXdwb3J0Q29vcmRpbmF0ZXMgPSBwaW5jaENlbnRlckluVmlld3BvcnRDb29yZGluYXRlczsK
KyAgICBtX3BpbmNoU3RhcnRTY2FsZSA9IG1fY29udGVudC0+Y29udGVudFNjYWxlKCk7CiAKICAg
ICAvLyBSZXNldCB0aGUgdGlsaW5nIGxvb2stYWhlYWQgdmVjdG9yIHNvIHRoYXQgdGlsZXMgYWxs
IGFyb3VuZCB0aGUgdmlld3BvcnQgd2lsbCBiZSByZXF1ZXN0ZWQgb24gcGluY2gtZW5kLgogICAg
IGVtaXQgdmlld3BvcnRUcmFqZWN0b3J5VmVjdG9yQ2hhbmdlZChRUG9pbnRGKCkpOwogfQogCi12
b2lkIFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6cGluY2hHZXN0dXJlUmVxdWVzdFVwZGF0
ZShjb25zdCBRUG9pbnRGJiBwaW5jaENlbnRlckluQ29udGVudENvb3JkaW5hdGVzLCBxcmVhbCB0
b3RhbFNjYWxlRmFjdG9yKQordm9pZCBRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OnBpbmNo
R2VzdHVyZVJlcXVlc3RVcGRhdGUoY29uc3QgUVBvaW50RiYgcGluY2hDZW50ZXJJblZpZXdwb3J0
Q29vcmRpbmF0ZXMsIHFyZWFsIHRvdGFsU2NhbGVGYWN0b3IpCiB7CiAgICAgQVNTRVJUKG1fc3Vz
cGVuZENvdW50KTsKIApAQCAtNTQ0LDEyICs1NDcsMTEgQEAgdm9pZCBRdFZpZXdwb3J0SW50ZXJh
Y3Rpb25FbmdpbmU6OnBpbmNoR2VzdHVyZVJlcXVlc3RVcGRhdGUoY29uc3QgUVBvaW50RiYgcGlu
Y2gKICAgICAvLyBBbGxvdyB6b29taW5nIG91dCBiZXlvbmQgbWltaW11bSBzY2FsZSBvbiBwYWdl
cyB0aGF0IGRvIG5vdCBleHBsaWNpdGx5IGRpc2FsbG93IGl0LgogICAgIGNvbnN0IHFyZWFsIHRh
cmdldENTU1NjYWxlID0gb3V0ZXJCb3VuZGVkQ1NTU2NhbGUoY3NzU2NhbGUpOwogCi0gICAgUVBv
aW50RiBwaW5jaENlbnRlckluVmlld3BvcnRDb29yZGluYXRlcyA9IG1fdmlld3BvcnQtPm1hcEZy
b21JdGVtKG1fY29udGVudCwgcGluY2hDZW50ZXJJbkNvbnRlbnRDb29yZGluYXRlcyk7Ci0KLSAg
ICBzY2FsZUNvbnRlbnQocGluY2hDZW50ZXJJbkNvbnRlbnRDb29yZGluYXRlcywgdGFyZ2V0Q1NT
U2NhbGUpOworICAgIHNjYWxlQ29udGVudChtX3ZpZXdwb3J0LT5tYXBUb1dlYkNvbnRlbnQocGlu
Y2hDZW50ZXJJblZpZXdwb3J0Q29vcmRpbmF0ZXMpLCB0YXJnZXRDU1NTY2FsZSk7CiAKICAgICBj
b25zdCBRUG9pbnRGIHBvc2l0aW9uRGlmZiA9IHBpbmNoQ2VudGVySW5WaWV3cG9ydENvb3JkaW5h
dGVzIC0gbV9sYXN0UGluY2hDZW50ZXJJblZpZXdwb3J0Q29vcmRpbmF0ZXM7CiAgICAgbV9sYXN0
UGluY2hDZW50ZXJJblZpZXdwb3J0Q29vcmRpbmF0ZXMgPSBwaW5jaENlbnRlckluVmlld3BvcnRD
b29yZGluYXRlczsKKwogICAgIG1fY29udGVudC0+c2V0UG9zKG1fY29udGVudC0+cG9zKCkgKyBw
b3NpdGlvbkRpZmYpOwogfQogCkBAIC01NzYsMTIgKzU3OCwxMiBAQCB2b2lkIFF0Vmlld3BvcnRJ
bnRlcmFjdGlvbkVuZ2luZTo6aXRlbVNpemVDaGFuZ2VkKCkKICAgICBlbnN1cmVDb250ZW50V2l0
aGluVmlld3BvcnRCb3VuZGFyeSgpOwogfQogCi12b2lkIFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVu
Z2luZTo6c2NhbGVDb250ZW50KGNvbnN0IFFQb2ludEYmIGNlbnRlckluQ29udGVudENvb3JkaW5h
dGVzLCBxcmVhbCBjc3NTY2FsZSkKK3ZvaWQgUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpz
Y2FsZUNvbnRlbnQoY29uc3QgUVBvaW50RiYgY2VudGVySW5DU1NDb29yZGluYXRlcywgcXJlYWwg
Y3NzU2NhbGUpCiB7Ci0gICAgUVBvaW50RiBvbGRQaW5jaENlbnRlck9uUGFyZW50ID0gbV9jb250
ZW50LT5tYXBUb0l0ZW0obV9jb250ZW50LT5wYXJlbnRJdGVtKCksIGNlbnRlckluQ29udGVudENv
b3JkaW5hdGVzKTsKLSAgICBtX2NvbnRlbnQtPnNldFNjYWxlKGl0ZW1TY2FsZUZyb21DU1MoY3Nz
U2NhbGUpKTsKLSAgICBRUG9pbnRGIG5ld1BpbmNoQ2VudGVyT25QYXJlbnQgPSBtX2NvbnRlbnQt
Pm1hcFRvSXRlbShtX2NvbnRlbnQtPnBhcmVudEl0ZW0oKSwgY2VudGVySW5Db250ZW50Q29vcmRp
bmF0ZXMpOwotICAgIG1fY29udGVudC0+c2V0UG9zKG1fY29udGVudC0+cG9zKCkgLSAobmV3UGlu
Y2hDZW50ZXJPblBhcmVudCAtIG9sZFBpbmNoQ2VudGVyT25QYXJlbnQpKTsKKyAgICBRUG9pbnRG
IG9sZFBpbmNoQ2VudGVyT25WaWV3cG9ydCA9IG1fdmlld3BvcnQtPm1hcEZyb21XZWJDb250ZW50
KGNlbnRlckluQ1NTQ29vcmRpbmF0ZXMpOworICAgIG1fY29udGVudC0+c2V0Q29udGVudFNjYWxl
KGl0ZW1TY2FsZUZyb21DU1MoY3NzU2NhbGUpKTsKKyAgICBRUG9pbnRGIG5ld1BpbmNoQ2VudGVy
T25WaWV3cG9ydCA9IG1fdmlld3BvcnQtPm1hcEZyb21XZWJDb250ZW50KGNlbnRlckluQ1NTQ29v
cmRpbmF0ZXMpOworICAgIG1fY29udGVudC0+c2V0UG9zKG1fY29udGVudC0+cG9zKCkgLSAobmV3
UGluY2hDZW50ZXJPblZpZXdwb3J0IC0gb2xkUGluY2hDZW50ZXJPblZpZXdwb3J0KSk7CiB9CiAK
ICNpbmNsdWRlICJtb2NfUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lLmNwcCIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFZpZXdwb3J0SW50ZXJhY3Rpb25Fbmdp
bmUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFZpZXdwb3J0SW50ZXJhY3Rpb25F
bmdpbmUuaAppbmRleCA2ODM3N2E0Li4xNzkwYzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvcXQvUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lLmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZS5oCkBAIC0z
Myw2ICszMyw4IEBACiBRVF9CRUdJTl9OQU1FU1BBQ0UKIGNsYXNzIFFQb2ludEY7CiBjbGFzcyBR
UXVpY2tJdGVtOworY2xhc3MgUVF1aWNrV2ViUGFnZTsKK2NsYXNzIFFRdWlja1dlYlZpZXc7CiBj
bGFzcyBRV2hlZWxFdmVudDsKIFFUX0VORF9OQU1FU1BBQ0UKIApAQCAtNDQsNyArNDYsNyBAQCBj
bGFzcyBRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUgOiBwdWJsaWMgUU9iamVjdCB7CiAgICAg
UV9PQkpFQ1QKIAogcHVibGljOgotICAgIFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZShjb25z
dCBRUXVpY2tJdGVtKiwgUVF1aWNrSXRlbSopOworICAgIFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVu
Z2luZShjb25zdCBRUXVpY2tXZWJWaWV3KiwgUVF1aWNrV2ViUGFnZSopOwogICAgIH5RdFZpZXdw
b3J0SW50ZXJhY3Rpb25FbmdpbmUoKTsKIAogICAgIHN0cnVjdCBDb25zdHJhaW50cyB7CkBAIC04
MCwxNyArODIsMTcgQEAgcHVibGljOgogICAgIHZvaWQgaW50ZXJydXB0U2Nyb2xsQW5pbWF0aW9u
KCk7CiAKICAgICBib29sIHBhbkdlc3R1cmVBY3RpdmUoKSBjb25zdDsKLSAgICB2b2lkIHBhbkdl
c3R1cmVTdGFydGVkKGNvbnN0IFFQb2ludEYmIHRvdWNoUG9pbnQsIHFpbnQ2NCBldmVudFRpbWVz
dGFtcE1pbGxpcyk7Ci0gICAgdm9pZCBwYW5HZXN0dXJlUmVxdWVzdFVwZGF0ZShjb25zdCBRUG9p
bnRGJiB0b3VjaFBvaW50LCBxaW50NjQgZXZlbnRUaW1lc3RhbXBNaWxsaXMpOworICAgIHZvaWQg
cGFuR2VzdHVyZVN0YXJ0ZWQoY29uc3QgUVBvaW50RiYgIHZpZXdwb3J0VG91Y2hQb2ludCwgcWlu
dDY0IGV2ZW50VGltZXN0YW1wTWlsbGlzKTsKKyAgICB2b2lkIHBhbkdlc3R1cmVSZXF1ZXN0VXBk
YXRlKGNvbnN0IFFQb2ludEYmICB2aWV3cG9ydFRvdWNoUG9pbnQsIHFpbnQ2NCBldmVudFRpbWVz
dGFtcE1pbGxpcyk7CiAgICAgdm9pZCBwYW5HZXN0dXJlQ2FuY2VsbGVkKCk7Ci0gICAgdm9pZCBw
YW5HZXN0dXJlRW5kZWQoY29uc3QgUVBvaW50RiYgdG91Y2hQb2ludCwgcWludDY0IGV2ZW50VGlt
ZXN0YW1wTWlsbGlzKTsKKyAgICB2b2lkIHBhbkdlc3R1cmVFbmRlZChjb25zdCBRUG9pbnRGJiAg
dmlld3BvcnRUb3VjaFBvaW50LCBxaW50NjQgZXZlbnRUaW1lc3RhbXBNaWxsaXMpOwogCiAgICAg
Ym9vbCBzY2FsZUFuaW1hdGlvbkFjdGl2ZSgpIGNvbnN0OwogICAgIHZvaWQgaW50ZXJydXB0U2Nh
bGVBbmltYXRpb24oKTsKIAogICAgIGJvb2wgcGluY2hHZXN0dXJlQWN0aXZlKCkgY29uc3Q7Ci0g
ICAgdm9pZCBwaW5jaEdlc3R1cmVTdGFydGVkKGNvbnN0IFFQb2ludEYmIHBpbmNoQ2VudGVySW5D
b250ZW50Q29vcmRpbmF0ZXMpOwotICAgIHZvaWQgcGluY2hHZXN0dXJlUmVxdWVzdFVwZGF0ZShj
b25zdCBRUG9pbnRGJiBwaW5jaENlbnRlckluQ29udGVudENvb3JkaW5hdGVzLCBxcmVhbCB0b3Rh
bFNjYWxlRmFjdG9yKTsKKyAgICB2b2lkIHBpbmNoR2VzdHVyZVN0YXJ0ZWQoY29uc3QgUVBvaW50
RiYgcGluY2hDZW50ZXJJblZpZXdwb3J0Q29vcmRpbmF0ZXMpOworICAgIHZvaWQgcGluY2hHZXN0
dXJlUmVxdWVzdFVwZGF0ZShjb25zdCBRUG9pbnRGJiBwaW5jaENlbnRlckluVmlld3BvcnRDb29y
ZGluYXRlcywgcXJlYWwgdG90YWxTY2FsZUZhY3Rvcik7CiAgICAgdm9pZCBwaW5jaEdlc3R1cmVF
bmRlZCgpOwogCiAgICAgdm9pZCB6b29tVG9BcmVhR2VzdHVyZUVuZGVkKGNvbnN0IFFQb2ludEYm
IHRvdWNoUG9pbnQsIGNvbnN0IFFSZWN0RiYgdGFyZ2V0QXJlYSk7CkBAIC0xMjcsMTQgKzEyOSwx
NCBAQCBwcml2YXRlOgogICAgIFFSZWN0RiBjb21wdXRlUG9zUmFuZ2VGb3JJdGVtQXRTY2FsZShx
cmVhbCBpdGVtU2NhbGUpIGNvbnN0OwogICAgIGJvb2wgZW5zdXJlQ29udGVudFdpdGhpblZpZXdw
b3J0Qm91bmRhcnkoYm9vbCBpbW1lZGlhdGUgPSBmYWxzZSk7CiAKLSAgICB2b2lkIHNjYWxlQ29u
dGVudChjb25zdCBRUG9pbnRGJiBjZW50ZXJJbkNvbnRlbnRDb29yZGluYXRlcywgcXJlYWwgc2Nh
bGUpOworICAgIHZvaWQgc2NhbGVDb250ZW50KGNvbnN0IFFQb2ludEYmIGNlbnRlckluQ1NTQ29v
cmRpbmF0ZXMsIHFyZWFsIGNzc1NjYWxlKTsKIAogICAgIC8vIEFzIGxvbmcgYXMgdGhlIG9iamVj
dCBleGlzdHMgdGhpcyBmdW5jdGlvbiB3aWxsIGFsd2F5cyByZXR1cm4gdGhlIHNhbWUgUVNjcm9s
bGVyIGluc3RhbmNlLgogICAgIFFTY3JvbGxlciogc2Nyb2xsZXIoKSB7IHJldHVybiBRU2Nyb2xs
ZXI6OnNjcm9sbGVyKHRoaXMpOyB9CiAKIAotICAgIGNvbnN0IFFRdWlja0l0ZW0qIGNvbnN0IG1f
dmlld3BvcnQ7Ci0gICAgUVF1aWNrSXRlbSogY29uc3QgbV9jb250ZW50OworICAgIGNvbnN0IFFR
dWlja1dlYlZpZXcqIGNvbnN0IG1fdmlld3BvcnQ7CisgICAgUVF1aWNrV2ViUGFnZSogY29uc3Qg
bV9jb250ZW50OwogCiAgICAgQ29uc3RyYWludHMgbV9jb25zdHJhaW50czsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZUV2ZW50SGFuZGxlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlRXZlbnRIYW5kbGVyLmNwcApp
bmRleCBhMDMwNWQxLi4yYWYzZTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvcXQvUXRXZWJQYWdlRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvcXQvUXRXZWJQYWdlRXZlbnRIYW5kbGVyLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2lu
Y2x1ZGUgPFFTdHlsZUhpbnRzPgogI2luY2x1ZGUgPFFUZXh0Rm9ybWF0PgogI2luY2x1ZGUgPFFU
b3VjaEV2ZW50PgorI2luY2x1ZGUgPFFUcmFuc2Zvcm0+CiAjaW5jbHVkZSA8V2ViQ29yZS9EcmFn
RGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRWRpdG9yLmg+CiAKQEAgLTEzOSw3ICsxNDAsNyBA
QCBib29sIFF0V2ViUGFnZUV2ZW50SGFuZGxlcjo6aGFuZGxlRXZlbnQoUUV2ZW50KiBldikKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgY2FzZSBRRXZlbnQ6OklucHV0TWV0aG9kOgogICAgICAg
ICBpbnB1dE1ldGhvZEV2ZW50KHN0YXRpY19jYXN0PFFJbnB1dE1ldGhvZEV2ZW50Kj4oZXYpKTsK
LSAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBMb29rIGF0IGNvbW1lbnQgaW4gcXF1aWNrd2VicGFn
ZS5jcHAKKyAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBUaGlzIGlzIG5lY2Vzc2FyeSB0byBhdm9p
ZCBhbiBlbmRsZXNzIGxvb3AgaW4gY29ubmVjdGlvbiB3aXRoIFFRdWlja0l0ZW06OmV2ZW50KCku
CiAgICAgfQogCiAgICAgLy8gRklYTUU6IE1vdmUgYWxsIGNvbW1vbiBldmVudCBoYW5kbGluZyBo
ZXJlLgpAQCAtMTU0LDQyICsxNTUsNTAgQEAgYm9vbCBRdFdlYlBhZ2VFdmVudEhhbmRsZXI6Omhh
bmRsZU1vdXNlTW92ZUV2ZW50KFFNb3VzZUV2ZW50KiBldikKICAgICAvLyBOT1RFOiBsYXN0UG9z
IGZyb20gdGhlIGV2ZW50IGFsd2F5cyBjb21lcyBlbXB0eSwgc28gd2Ugd29yawogICAgIC8vIGFy
b3VuZCB0aGF0IGhlcmUuCiAgICAgc3RhdGljIFFQb2ludEYgbGFzdFBvcyA9IFFQb2ludEYoKTsK
LSAgICBpZiAobGFzdFBvcyA9PSBldi0+cG9zKCkpCisgICAgUVRyYW5zZm9ybSBmcm9tSXRlbVRy
YW5zZm9ybSA9IG1fd2ViUGFnZS0+dHJhbnNmb3JtRnJvbUl0ZW0oKTsKKyAgICBRUG9pbnRGIHdl
YlBhZ2VQb2ludCA9IGZyb21JdGVtVHJhbnNmb3JtLm1hcChldi0+bG9jYWxQb3MoKSk7CisgICAg
aWYgKGxhc3RQb3MgPT0gd2ViUGFnZVBvaW50KQogICAgICAgICByZXR1cm4gZXYtPmlzQWNjZXB0
ZWQoKTsKLSAgICBsYXN0UG9zID0gZXYtPnBvcygpOworICAgIGxhc3RQb3MgPSB3ZWJQYWdlUG9p
bnQ7CiAKLSAgICBtX3dlYlBhZ2VQcm94eS0+aGFuZGxlTW91c2VFdmVudChOYXRpdmVXZWJNb3Vz
ZUV2ZW50KGV2LCAvKmV2ZW50Q2xpY2tDb3VudCovIDApKTsKKyAgICBtX3dlYlBhZ2VQcm94eS0+
aGFuZGxlTW91c2VFdmVudChOYXRpdmVXZWJNb3VzZUV2ZW50KGV2LCBmcm9tSXRlbVRyYW5zZm9y
bSwgLypldmVudENsaWNrQ291bnQqLyAwKSk7CiAKICAgICByZXR1cm4gZXYtPmlzQWNjZXB0ZWQo
KTsKIH0KIAogYm9vbCBRdFdlYlBhZ2VFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVu
dChRTW91c2VFdmVudCogZXYpCiB7CisgICAgUVRyYW5zZm9ybSBmcm9tSXRlbVRyYW5zZm9ybSA9
IG1fd2ViUGFnZS0+dHJhbnNmb3JtRnJvbUl0ZW0oKTsKKyAgICBRUG9pbnRGIHdlYlBhZ2VQb2lu
dCA9IGZyb21JdGVtVHJhbnNmb3JtLm1hcChldi0+bG9jYWxQb3MoKSk7CisKICAgICBpZiAobV9j
bGlja1RpbWVyLmlzQWN0aXZlKCkKICAgICAgICAgJiYgbV9wcmV2aW91c0NsaWNrQnV0dG9uID09
IGV2LT5idXR0b24oKQotICAgICAgICAmJiAoZXYtPnBvcygpIC0gbV9sYXN0Q2xpY2spLm1hbmhh
dHRhbkxlbmd0aCgpIDwgcUFwcC0+c3R5bGVIaW50cygpLT5zdGFydERyYWdEaXN0YW5jZSgpKSB7
CisgICAgICAgICYmICh3ZWJQYWdlUG9pbnQgLSBtX2xhc3RDbGljaykubWFuaGF0dGFuTGVuZ3Ro
KCkgPCBxQXBwLT5zdHlsZUhpbnRzKCktPnN0YXJ0RHJhZ0Rpc3RhbmNlKCkpIHsKICAgICAgICAg
bV9jbGlja0NvdW50Kys7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9jbGlja0NvdW50ID0gMTsK
ICAgICAgICAgbV9wcmV2aW91c0NsaWNrQnV0dG9uID0gZXYtPmJ1dHRvbigpOwogICAgIH0KIAot
ICAgIG1fd2ViUGFnZVByb3h5LT5oYW5kbGVNb3VzZUV2ZW50KE5hdGl2ZVdlYk1vdXNlRXZlbnQo
ZXYsIG1fY2xpY2tDb3VudCkpOworICAgIG1fd2ViUGFnZVByb3h5LT5oYW5kbGVNb3VzZUV2ZW50
KE5hdGl2ZVdlYk1vdXNlRXZlbnQoZXYsIGZyb21JdGVtVHJhbnNmb3JtLCBtX2NsaWNrQ291bnQp
KTsKIAotICAgIG1fbGFzdENsaWNrID0gZXYtPnBvcygpOworICAgIG1fbGFzdENsaWNrID0gd2Vi
UGFnZVBvaW50OwogICAgIG1fY2xpY2tUaW1lci5zdGFydChxQXBwLT5zdHlsZUhpbnRzKCktPm1v
dXNlRG91YmxlQ2xpY2tJbnRlcnZhbCgpLCB0aGlzKTsKKwogICAgIHJldHVybiBldi0+aXNBY2Nl
cHRlZCgpOwogfQogCiBib29sIFF0V2ViUGFnZUV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VSZWxl
YXNlRXZlbnQoUU1vdXNlRXZlbnQqIGV2KQogewotICAgIG1fd2ViUGFnZVByb3h5LT5oYW5kbGVN
b3VzZUV2ZW50KE5hdGl2ZVdlYk1vdXNlRXZlbnQoZXYsIC8qZXZlbnRDbGlja0NvdW50Ki8gMCkp
OworICAgIFFUcmFuc2Zvcm0gZnJvbUl0ZW1UcmFuc2Zvcm0gPSBtX3dlYlBhZ2UtPnRyYW5zZm9y
bUZyb21JdGVtKCk7CisgICAgbV93ZWJQYWdlUHJveHktPmhhbmRsZU1vdXNlRXZlbnQoTmF0aXZl
V2ViTW91c2VFdmVudChldiwgZnJvbUl0ZW1UcmFuc2Zvcm0sIC8qZXZlbnRDbGlja0NvdW50Ki8g
MCkpOwogICAgIHJldHVybiBldi0+aXNBY2NlcHRlZCgpOwogfQogCiBib29sIFF0V2ViUGFnZUV2
ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudChRV2hlZWxFdmVudCogZXYpCiB7Ci0gICAgbV93
ZWJQYWdlUHJveHktPmhhbmRsZVdoZWVsRXZlbnQoTmF0aXZlV2ViV2hlZWxFdmVudChldikpOwor
ICAgIFFUcmFuc2Zvcm0gZnJvbUl0ZW1UcmFuc2Zvcm0gPSBtX3dlYlBhZ2UtPnRyYW5zZm9ybUZy
b21JdGVtKCk7CisgICAgbV93ZWJQYWdlUHJveHktPmhhbmRsZVdoZWVsRXZlbnQoTmF0aXZlV2Vi
V2hlZWxFdmVudChldiwgZnJvbUl0ZW1UcmFuc2Zvcm0pKTsKICAgICAvLyBGSVhNRTogSGFuZGxl
IHdoZXRoZXIgdGhlIHBhZ2UgdXNlZCB0aGUgd2hlZWwgZXZlbnQgb3Igbm90LgogICAgIGlmICht
X2ludGVyYWN0aW9uRW5naW5lKQogICAgICAgICBtX2ludGVyYWN0aW9uRW5naW5lLT53aGVlbEV2
ZW50KGV2KTsKQEAgLTIwMCwxNCArMjA5LDE2IEBAIGJvb2wgUXRXZWJQYWdlRXZlbnRIYW5kbGVy
OjpoYW5kbGVIb3ZlckxlYXZlRXZlbnQoUUhvdmVyRXZlbnQqIGV2KQogewogICAgIC8vIFRvIGdl
dCB0aGUgY29ycmVjdCBiZWhhdmlvciBvZiBtb3VzZW91dCwgd2UgbmVlZCB0byB0dXJuIHRoZSBM
ZWF2ZSBldmVudCBvZiBvdXIgd2VidmlldyBpbnRvIGEgbW91c2UgbW92ZQogICAgIC8vIHRvIGEg
dmVyeSBmYXIgcmVnaW9uLgotICAgIFFIb3ZlckV2ZW50IGZha2VFdmVudChRRXZlbnQ6OkhvdmVy
TW92ZSwgUVBvaW50KElOVF9NSU4sIElOVF9NSU4pLCBldi0+b2xkUG9zKCkpOworICAgIFFUcmFu
c2Zvcm0gZnJvbUl0ZW1UcmFuc2Zvcm0gPSBtX3dlYlBhZ2UtPnRyYW5zZm9ybUZyb21JdGVtKCk7
CisgICAgUUhvdmVyRXZlbnQgZmFrZUV2ZW50KFFFdmVudDo6SG92ZXJNb3ZlLCBRUG9pbnQoSU5U
X01JTiwgSU5UX01JTiksIGZyb21JdGVtVHJhbnNmb3JtLm1hcChldi0+b2xkUG9zRigpKSk7CiAg
ICAgZmFrZUV2ZW50LnNldFRpbWVzdGFtcChldi0+dGltZXN0YW1wKCkpOwogICAgIHJldHVybiBo
YW5kbGVIb3Zlck1vdmVFdmVudCgmZmFrZUV2ZW50KTsKIH0KIAogYm9vbCBRdFdlYlBhZ2VFdmVu
dEhhbmRsZXI6OmhhbmRsZUhvdmVyTW92ZUV2ZW50KFFIb3ZlckV2ZW50KiBldikKIHsKLSAgICBR
TW91c2VFdmVudCBtZShRRXZlbnQ6Ok1vdXNlTW92ZSwgZXYtPnBvcygpLCBRdDo6Tm9CdXR0b24s
IFF0OjpOb0J1dHRvbiwgUXQ6Ok5vTW9kaWZpZXIpOworICAgIFFUcmFuc2Zvcm0gZnJvbUl0ZW1U
cmFuc2Zvcm0gPSBtX3dlYlBhZ2UtPnRyYW5zZm9ybUZyb21JdGVtKCk7CisgICAgUU1vdXNlRXZl
bnQgbWUoUUV2ZW50OjpNb3VzZU1vdmUsIGZyb21JdGVtVHJhbnNmb3JtLm1hcChldi0+cG9zRigp
KSwgUXQ6Ok5vQnV0dG9uLCBRdDo6Tm9CdXR0b24sIFF0OjpOb01vZGlmaWVyKTsKICAgICBtZS5z
ZXRBY2NlcHRlZChldi0+aXNBY2NlcHRlZCgpKTsKICAgICBtZS5zZXRUaW1lc3RhbXAoZXYtPnRp
bWVzdGFtcCgpKTsKIApAQCAtMjE3LDggKzIyOCw5IEBAIGJvb2wgUXRXZWJQYWdlRXZlbnRIYW5k
bGVyOjpoYW5kbGVIb3Zlck1vdmVFdmVudChRSG92ZXJFdmVudCogZXYpCiBib29sIFF0V2ViUGFn
ZUV2ZW50SGFuZGxlcjo6aGFuZGxlRHJhZ0VudGVyRXZlbnQoUURyYWdFbnRlckV2ZW50KiBldikK
IHsKICAgICBtX3dlYlBhZ2VQcm94eS0+cmVzZXREcmFnT3BlcmF0aW9uKCk7CisgICAgUVRyYW5z
Zm9ybSBmcm9tSXRlbVRyYW5zZm9ybSA9IG1fd2ViUGFnZS0+dHJhbnNmb3JtRnJvbUl0ZW0oKTsK
ICAgICAvLyBGSVhNRTogU2hvdWxkIG5vdCB1c2UgUUN1cnNvcjo6cG9zKCkKLSAgICBEcmFnRGF0
YSBkcmFnRGF0YShldi0+bWltZURhdGEoKSwgZXYtPnBvcygpLCBRQ3Vyc29yOjpwb3MoKSwgZHJv
cEFjdGlvblRvRHJhZ09wZXJhdGlvbihldi0+cG9zc2libGVBY3Rpb25zKCkpKTsKKyAgICBEcmFn
RGF0YSBkcmFnRGF0YShldi0+bWltZURhdGEoKSwgZnJvbUl0ZW1UcmFuc2Zvcm0ubWFwKGV2LT5w
b3MoKSksIFFDdXJzb3I6OnBvcygpLCBkcm9wQWN0aW9uVG9EcmFnT3BlcmF0aW9uKGV2LT5wb3Nz
aWJsZUFjdGlvbnMoKSkpOwogICAgIG1fd2ViUGFnZVByb3h5LT5kcmFnRW50ZXJlZCgmZHJhZ0Rh
dGEpOwogICAgIGV2LT5hY2NlcHRQcm9wb3NlZEFjdGlvbigpOwogICAgIHJldHVybiB0cnVlOwpA
QCAtMjQxLDggKzI1Myw5IEBAIGJvb2wgUXRXZWJQYWdlRXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFn
TW92ZUV2ZW50KFFEcmFnTW92ZUV2ZW50KiBldikKIHsKICAgICBib29sIGFjY2VwdGVkID0gZXYt
PmlzQWNjZXB0ZWQoKTsKIAorICAgIFFUcmFuc2Zvcm0gZnJvbUl0ZW1UcmFuc2Zvcm0gPSBtX3dl
YlBhZ2UtPnRyYW5zZm9ybUZyb21JdGVtKCk7CiAgICAgLy8gRklYTUU6IFNob3VsZCBub3QgdXNl
IFFDdXJzb3I6OnBvcygpCi0gICAgRHJhZ0RhdGEgZHJhZ0RhdGEoZXYtPm1pbWVEYXRhKCksIGV2
LT5wb3MoKSwgUUN1cnNvcjo6cG9zKCksIGRyb3BBY3Rpb25Ub0RyYWdPcGVyYXRpb24oZXYtPnBv
c3NpYmxlQWN0aW9ucygpKSk7CisgICAgRHJhZ0RhdGEgZHJhZ0RhdGEoZXYtPm1pbWVEYXRhKCks
IGZyb21JdGVtVHJhbnNmb3JtLm1hcChldi0+cG9zKCkpLCBRQ3Vyc29yOjpwb3MoKSwgZHJvcEFj
dGlvblRvRHJhZ09wZXJhdGlvbihldi0+cG9zc2libGVBY3Rpb25zKCkpKTsKICAgICBtX3dlYlBh
Z2VQcm94eS0+ZHJhZ1VwZGF0ZWQoJmRyYWdEYXRhKTsKICAgICBldi0+c2V0RHJvcEFjdGlvbihk
cmFnT3BlcmF0aW9uVG9Ecm9wQWN0aW9uKG1fd2ViUGFnZVByb3h5LT5kcmFnU2Vzc2lvbigpLm9w
ZXJhdGlvbikpOwogICAgIGlmIChtX3dlYlBhZ2VQcm94eS0+ZHJhZ1Nlc3Npb24oKS5vcGVyYXRp
b24gIT0gRHJhZ09wZXJhdGlvbk5vbmUpCkBAIC0yNTUsOSArMjY4LDkgQEAgYm9vbCBRdFdlYlBh
Z2VFdmVudEhhbmRsZXI6OmhhbmRsZURyYWdNb3ZlRXZlbnQoUURyYWdNb3ZlRXZlbnQqIGV2KQog
Ym9vbCBRdFdlYlBhZ2VFdmVudEhhbmRsZXI6OmhhbmRsZURyb3BFdmVudChRRHJvcEV2ZW50KiBl
dikKIHsKICAgICBib29sIGFjY2VwdGVkID0gZXYtPmlzQWNjZXB0ZWQoKTsKLQorICAgIFFUcmFu
c2Zvcm0gZnJvbUl0ZW1UcmFuc2Zvcm0gPSBtX3dlYlBhZ2UtPnRyYW5zZm9ybUZyb21JdGVtKCk7
CiAgICAgLy8gRklYTUU6IFNob3VsZCBub3QgdXNlIFFDdXJzb3I6OnBvcygpCi0gICAgRHJhZ0Rh
dGEgZHJhZ0RhdGEoZXYtPm1pbWVEYXRhKCksIGV2LT5wb3MoKSwgUUN1cnNvcjo6cG9zKCksIGRy
b3BBY3Rpb25Ub0RyYWdPcGVyYXRpb24oZXYtPnBvc3NpYmxlQWN0aW9ucygpKSk7CisgICAgRHJh
Z0RhdGEgZHJhZ0RhdGEoZXYtPm1pbWVEYXRhKCksIGZyb21JdGVtVHJhbnNmb3JtLm1hcChldi0+
cG9zKCkpLCBRQ3Vyc29yOjpwb3MoKSwgZHJvcEFjdGlvblRvRHJhZ09wZXJhdGlvbihldi0+cG9z
c2libGVBY3Rpb25zKCkpKTsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgaGFuZGxlOwog
ICAgIG1fd2ViUGFnZVByb3h5LT5wZXJmb3JtRHJhZygmZHJhZ0RhdGEsIFN0cmluZygpLCBoYW5k
bGUpOwogICAgIGV2LT5zZXREcm9wQWN0aW9uKGRyYWdPcGVyYXRpb25Ub0Ryb3BBY3Rpb24obV93
ZWJQYWdlUHJveHktPmRyYWdTZXNzaW9uKCkub3BlcmF0aW9uKSk7CkBAIC0yNjksMTMgKzI4Miwx
NSBAQCBib29sIFF0V2ViUGFnZUV2ZW50SGFuZGxlcjo6aGFuZGxlRHJvcEV2ZW50KFFEcm9wRXZl
bnQqIGV2KQogCiB2b2lkIFF0V2ViUGFnZUV2ZW50SGFuZGxlcjo6aGFuZGxlU2luZ2xlVGFwRXZl
bnQoY29uc3QgUVRvdWNoRXZlbnQ6OlRvdWNoUG9pbnQmIHBvaW50KQogewotICAgIFdlYkdlc3R1
cmVFdmVudCBnZXN0dXJlKFdlYkV2ZW50OjpHZXN0dXJlU2luZ2xlVGFwLCBwb2ludC5wb3MoKS50
b1BvaW50KCksIHBvaW50LnNjcmVlblBvcygpLnRvUG9pbnQoKSwgV2ViRXZlbnQ6Ok1vZGlmaWVy
cygwKSwgMCk7CisgICAgUVRyYW5zZm9ybSBmcm9tSXRlbVRyYW5zZm9ybSA9IG1fd2ViUGFnZS0+
dHJhbnNmb3JtRnJvbUl0ZW0oKTsKKyAgICBXZWJHZXN0dXJlRXZlbnQgZ2VzdHVyZShXZWJFdmVu
dDo6R2VzdHVyZVNpbmdsZVRhcCwgZnJvbUl0ZW1UcmFuc2Zvcm0ubWFwKHBvaW50LnBvcygpKS50
b1BvaW50KCksIHBvaW50LnNjcmVlblBvcygpLnRvUG9pbnQoKSwgV2ViRXZlbnQ6Ok1vZGlmaWVy
cygwKSwgMCk7CiAgICAgbV93ZWJQYWdlUHJveHktPmhhbmRsZUdlc3R1cmVFdmVudChnZXN0dXJl
KTsKIH0KIAogdm9pZCBRdFdlYlBhZ2VFdmVudEhhbmRsZXI6OmhhbmRsZURvdWJsZVRhcEV2ZW50
KGNvbnN0IFFUb3VjaEV2ZW50OjpUb3VjaFBvaW50JiBwb2ludCkKIHsKLSAgICBtX3dlYlBhZ2VQ
cm94eS0+ZmluZFpvb21hYmxlQXJlYUZvclBvaW50KHBvaW50LnBvcygpLnRvUG9pbnQoKSk7Cisg
ICAgUVRyYW5zZm9ybSBmcm9tSXRlbVRyYW5zZm9ybSA9IG1fd2ViUGFnZS0+dHJhbnNmb3JtRnJv
bUl0ZW0oKTsKKyAgICBtX3dlYlBhZ2VQcm94eS0+ZmluZFpvb21hYmxlQXJlYUZvclBvaW50KGZy
b21JdGVtVHJhbnNmb3JtLm1hcChwb2ludC5wb3MoKSkudG9Qb2ludCgpKTsKIH0KIAogdm9pZCBR
dFdlYlBhZ2VFdmVudEhhbmRsZXI6OnRpbWVyRXZlbnQoUVRpbWVyRXZlbnQqIGV2KQpAQCAtMzgw
LDExICszOTUsMTIgQEAgdm9pZCBRdFdlYlBhZ2VFdmVudEhhbmRsZXI6OmlucHV0TWV0aG9kRXZl
bnQoUUlucHV0TWV0aG9kRXZlbnQqIGV2KQogdm9pZCBRdFdlYlBhZ2VFdmVudEhhbmRsZXI6OnRv
dWNoRXZlbnQoUVRvdWNoRXZlbnQqIGV2ZW50KQogewogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMp
Ci0gICAgbV93ZWJQYWdlUHJveHktPmhhbmRsZVRvdWNoRXZlbnQoTmF0aXZlV2ViVG91Y2hFdmVu
dChldmVudCkpOworICAgIFFUcmFuc2Zvcm0gZnJvbUl0ZW1UcmFuc2Zvcm0gPSBtX3dlYlBhZ2Ut
PnRyYW5zZm9ybUZyb21JdGVtKCk7CisgICAgbV93ZWJQYWdlUHJveHktPmhhbmRsZVRvdWNoRXZl
bnQoTmF0aXZlV2ViVG91Y2hFdmVudChldmVudCwgZnJvbUl0ZW1UcmFuc2Zvcm0pKTsKICAgICBl
dmVudC0+YWNjZXB0KCk7CiAjZWxzZQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIGV2
LT5pZ25vcmUoKTsKKyAgICBldmVudC0+aWdub3JlKCk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZUV2ZW50SGFuZGxlci5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZUV2ZW50SGFuZGxlci5oCmluZGV4
IGRmYWI0YzguLmYyZGU2YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9x
dC9RdFdlYlBhZ2VFdmVudEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
cXQvUXRXZWJQYWdlRXZlbnRIYW5kbGVyLmgKQEAgLTg4LDcgKzg4LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHRvdWNoRXZlbnQoUVRvdWNoRXZlbnQqKTsKICAgICB2b2lkIGlucHV0TWV0aG9kRXZl
bnQoUUlucHV0TWV0aG9kRXZlbnQqKTsKIAotICAgIFFQb2ludCBtX2xhc3RDbGljazsKKyAgICBR
UG9pbnRGIG1fbGFzdENsaWNrOwogICAgIFFCYXNpY1RpbWVyIG1fY2xpY2tUaW1lcjsKICAgICBR
dDo6TW91c2VCdXR0b24gbV9wcmV2aW91c0NsaWNrQnV0dG9uOwogICAgIGludCBtX2NsaWNrQ291
bnQ7Ci0tIAoxLjcuOAoK
</data>

          </attachment>
      

    </bug>

</bugzilla>